diff --git a/README.md b/README.md index f7ab9012..ac0d83be 100644 --- a/README.md +++ b/README.md @@ -171,22 +171,25 @@ pnpm run deploy:worker **推荐配置组合:** ```bash # Cloudflare Workers + D1(推荐) -DB_FORMAT=sql -DB_DRIVER=d1 +DB_FORMAT=sql # 也可用 map / key +DB_DRIVER=d1 # 需在 wrangler.jsonc 的 d1_databases 里绑定名为 DB # EdgeOne + Blob(推荐,零配置) -DB_FORMAT=map +DB_FORMAT=map # 或 key DB_DRIVER=blob -# EdgeOne / Cloudflare KV(自动适配环境) -DB_FORMAT=map -DB_DRIVER=kv +# Cloudflare Workers + KV(必须先绑定 KV,见下方【方案 A】) +DB_FORMAT=map # 或 key +DB_DRIVER=kv # 需打开 wrangler.jsonc 的 kv_namespaces,绑定名必须恰好是 KV; + # 未绑定却显式写 kv 会直接报错(不做回退) -# Cloudflare KV(高频读写,需绑定) -DB_FORMAT=key +# EdgeOne Node 云函数 + KV(还需额外部署 Edge Function 代理) +DB_FORMAT=map # 或 key DB_DRIVER=kv +EO_KV_URLS=https://<你的部署域名> # 代理地址(也可由请求 origin 自动注入) +JWT_SECRET=<32 字符以上> # 代理鉴权,需与 Edge Function 侧一致 -# 远程访问 Cloudflare KV +# 远程访问 Cloudflare KV(HTTP API,无需 binding) DB_FORMAT=key DB_DRIVER=cfkv CF_ACCOUNT=your_account_id @@ -194,6 +197,14 @@ CF_KV_UUID=your_namespace_id CF_API_KEY=your_api_token ``` +> 不确定用哪个就保持 `DB_DRIVER=auto`(默认,自动探测)。 +> 显式指定驱动时**不做回退**:该驱动不可用会直接拒绝请求并给出可操作原因(含 +> 「自动探测会选哪个驱动」,照抄即可),`/api/public/env_check` 与 +> `/api/public/init_status` 也会显示同样的原因和一行修复建议, +> 避免「以为在用 KV、实际写进了别的后端」。 +> 非法「驱动 × 格式」组合(如 `DB_FORMAT=sql` + `DB_DRIVER=kv`)同样只报错, +> 不会自动改驱动或格式。 + **向后兼容:** - `DB_DRIVER=json` 自动转换为 `DB_FORMAT=map` + 自动检测驱动 diff --git a/cloud-functions/[[default]].js b/cloud-functions/[[default]].js index 166b695c..f4351e20 100644 --- a/cloud-functions/[[default]].js +++ b/cloud-functions/[[default]].js @@ -1,37 +1,53 @@ -var VM=Object.create;var Jw=Object.defineProperty;var YM=Object.getOwnPropertyDescriptor;var WM=Object.getOwnPropertyNames;var XM=Object.getPrototypeOf,ZM=Object.prototype.hasOwnProperty;var wt=(r=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(r,{get:(e,t)=>(typeof require<"u"?require:e)[t]}):r)(function(r){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+r+'" is not supported')});var V=(r,e,t)=>()=>{if(t)throw t[0];try{return r&&(e=r(r=0)),e}catch(i){throw t=[i],i}};var oe=(r,e)=>()=>{try{return e||r((e={exports:{}}).exports,e),e.exports}catch(t){throw e=0,t}},qn=(r,e)=>{for(var t in e)Jw(r,t,{get:e[t],enumerable:!0})},eL=(r,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of WM(e))!ZM.call(r,n)&&n!==t&&Jw(r,n,{get:()=>e[n],enumerable:!(i=YM(e,n))||i.enumerable});return r};var Dr=(r,e,t)=>(t=r!=null?VM(XM(r)):{},eL(e||!r||!r.__esModule?Jw(t,"default",{value:r,enumerable:!0}):t,r));var uu,$w=V(()=>{uu=class extends Error{res;status;constructor(r=500,e){super(e?.message,{cause:e?.cause}),this.res=e?.res,this.status=r}getResponse(){return this.res?new Response(this.res.body,{status:this.status,headers:this.res.headers}):new Response(this.message,{status:this.status})}}});var av,cv=V(()=>{av=Symbol()});var lv=V(()=>{});var dv,uv=V(()=>{lv();dv=(r,e)=>new Response(r,{headers:{"Content-Type":e.replace(/^[^;]+/,i=>i.toLowerCase())}}).formData()});async function tL(r,e){if(!C0(r)&&r.bodyCache.formData)return fv(await r.bodyCache.formData,e);let t=C0(r)?r.headers:r.raw.headers,i=await r.arrayBuffer(),n=dv(i,t.get("Content-Type")||"");C0(r)||(r.bodyCache.formData=n);let s=await n;return s?fv(s,e):{}}function fv(r,e){let t=Object.create(null);return r.forEach((i,n)=>{e.all||n.endsWith("[]")?rL(t,n,i):t[n]=i}),e.dot&&Object.entries(t).forEach(([i,n])=>{i.includes(".")&&(iL(t,i,n),delete t[i])}),t}var C0,Av,rL,iL,hv=V(()=>{uv();C0=r=>"headers"in r,Av=async(r,e=Object.create(null))=>{let{all:t=!1,dot:i=!1}=e,o=(C0(r)?r.headers:r.raw.headers).get("Content-Type")?.split(";")[0].trim().toLowerCase();return o==="multipart/form-data"||o==="application/x-www-form-urlencoded"?tL(r,{all:t,dot:i}):{}};rL=(r,e,t)=>{r[e]!==void 0?Array.isArray(r[e])?r[e].push(t):r[e]=[r[e],t]:e.endsWith("[]")?r[e]=[t]:r[e]=t},iL=(r,e,t)=>{if(/(?:^|\.)__proto__\./.test(e))return;let i=r,n=e.split(".");n.forEach((s,o)=>{o===n.length-1?i[s]=t:((!i[s]||typeof i[s]!="object"||Array.isArray(i[s])||i[s]instanceof File)&&(i[s]=Object.create(null)),i=i[s])})}});var Yw,gv,nL,sL,E0,pv,mv,oL,Ww,yv,So,B0,Al,Vw,Iv,wv,xv,aL,ja=V(()=>{Yw=r=>{let e=r.split("/");return e[0]===""&&e.shift(),e},gv=r=>{let{groups:e,path:t}=nL(r),i=Yw(t);return sL(i,e)},nL=r=>{let e=[];return r=r.replace(/\{[^}]+\}/g,(t,i)=>{let n=`@${i}`;return e.push([n,t]),n}),{groups:e,path:r}},sL=(r,e)=>{for(let t=e.length-1;t>=0;t--){let[i]=e[t];for(let n=r.length-1;n>=0;n--)if(r[n].includes(i)){r[n]=r[n].replace(i,e[t][1]);break}}return r},E0={},pv=(r,e)=>{if(r==="*")return"*";let t=r.match(/^\:([^\{\}]+)(?:\{(.+)\})?$/);if(t){let i=`${r}#${e}`;return E0[i]||(t[2]?E0[i]=e&&e[0]!==":"&&e[0]!=="*"?[i,t[1],new RegExp(`^${t[2]}(?=/${e})`)]:[r,t[1],new RegExp(`^${t[2]}$`)]:E0[i]=[r,t[1],!0]),E0[i]}return null},mv=(r,e)=>{try{return e(r)}catch{return r.replace(/(?:%[0-9A-Fa-f]{2})+/g,t=>{try{return e(t)}catch{return t}})}},oL=r=>mv(r,decodeURI),Ww=r=>{let e=r.url,t=e.indexOf("/",e.indexOf(":")+4),i=t;for(;i{let e=Ww(r);return e.length>1&&e.at(-1)==="/"?e.slice(0,-1):e},So=(r,e,...t)=>(t.length&&(e=So(e,...t)),`${r?.[0]==="/"?"":"/"}${r}${e==="/"?"":`${r?.at(-1)==="/"?"":"/"}${e?.[0]==="/"?e.slice(1):e}`}`),B0=r=>{if(r.charCodeAt(r.length-1)!==63||!r.includes(":"))return null;let e=r.split("/"),t=[],i="";return e.forEach(n=>{if(n!==""&&!/\:/.test(n))i+="/"+n;else if(/\:/.test(n))if(/\?/.test(n)){t.length===0&&i===""?t.push("/"):t.push(i);let s=n.replace("?","");i+="/"+s,t.push(i)}else i+="/"+n}),t.filter((n,s,o)=>o.indexOf(n)===s)},Al=r=>r.indexOf("%")!==-1?mv(r,aL):r,Vw=r=>(r.indexOf("+")!==-1&&(r=r.replace(/\+/g," ")),Al(r)),Iv=(r,e,t)=>{let i;if(!t&&e&&e.indexOf("%")===-1&&e.indexOf("+")===-1){let o=r.indexOf("?",8);if(o===-1)return;for(r.startsWith(e,o+1)||(o=r.indexOf(`&${e}`,o+1));o!==-1;){let a=r.charCodeAt(o+e.length+1);if(a===61){let c=o+e.length+2,l=r.indexOf("&",c);return Vw(r.slice(c,l===-1?void 0:l))}else if(a==38||isNaN(a))return"";o=r.indexOf(`&${e}`,o+1)}if(i=/[%+]/.test(r),!i)return}let n=Object.create(null);i??=/[%+]/.test(r);let s=r.indexOf("?",8);for(;s!==-1;){let o=r.indexOf("&",s+1),a=r.indexOf("=",s);a>o&&o!==-1&&(a=-1);let c=r.slice(s+1,a===-1?o===-1?void 0:o:a);if(i&&(c=Vw(c)),s=o,c==="")continue;let l;a===-1?l="":(l=r.slice(a+1,o===-1?void 0:o),i&&(l=Vw(l))),t?(n[c]&&Array.isArray(n[c])||(n[c]=[]),n[c].push(l)):n[c]??=l}return e?n[e]:n},wv=Iv,xv=(r,e)=>Iv(r,e,!0),aL=decodeURIComponent});var Cv,Ev=V(()=>{$w();cv();hv();ja();Cv=class{raw;#t;#e;routeIndex=0;path;bodyCache={};constructor(r,e="/",t=[[]]){this.raw=r,this.path=e,this.#e=t}param(r){return r?this.#r(r):this.#s()}#r(r){let e=this.#e[0][this.routeIndex][1][r],t=this.#i(e);return t&&Al(t)}#s(){let r={},e=Object.keys(this.#e[0][this.routeIndex][1]);for(let t of e){let i=this.#i(this.#e[0][this.routeIndex][1][t]);i!==void 0&&(r[t]=Al(i))}return r}#i(r){return this.#e[1]?this.#e[1][r]:r}query(r){return wv(this.url,r)}queries(r){return xv(this.url,r)}header(r){if(r)return this.raw.headers.get(r)??void 0;let e=Object.create(null);return this.raw.headers.forEach((t,i)=>{e[i]=t}),e}async parseBody(r){return Av(this,r)}#n=r=>{let{bodyCache:e,raw:t}=this,i=e[r];if(i)return i;for(let n in e)return e[n].then(s=>(n==="json"&&(s=JSON.stringify(s)),new Response(s)[r]()));return e[r]=t[r]()};json(){return this.#n("text").then(r=>JSON.parse(r))}text(){return this.#n("text")}arrayBuffer(){return this.#n("arrayBuffer")}bytes(){return this.#n("arrayBuffer").then(r=>new Uint8Array(r))}blob(){return this.#n("blob")}formData(){return this.#n("formData")}addValidatedData(r,e){(this.#t??={})[r]=e}valid(r){return this.#t?.[r]}get url(){return this.raw.url}get method(){return this.raw.method}get[av](){return this.#e}get matchedRoutes(){return this.#e[0].map(([[,r]])=>r)}get routePath(){return this.#e[0].map(([[,r]])=>r)[this.routeIndex].path}}});var Bv,cL,Xw,bv=V(()=>{Bv={Stringify:1,BeforeStream:2,Stream:3},cL=(r,e)=>{let t=new String(r);return t.isEscaped=!0,t.callbacks=e,t},Xw=async(r,e,t,i,n)=>{typeof r=="object"&&!(r instanceof String)&&(r instanceof Promise||(r=r.toString()),r instanceof Promise&&(r=await r));let s=r.callbacks;if(!s?.length)return Promise.resolve(r);n?n[0]+=r:n=[r];let o=Promise.all(s.map(a=>a({phase:e,buffer:n,context:i}))).then(a=>Promise.all(a.filter(Boolean).map(c=>Xw(c,e,!1,i,n))).then(()=>n[0]));return t?cL(await o,s):o}});var lL,Zw,fu,ex,b0=V(()=>{Ev();bv();lL="text/plain; charset=UTF-8",Zw=(r,e)=>({"Content-Type":r,...e}),fu=(r,e)=>new Response(r,e),ex=class{#t;#e;env={};#r;finalized=!1;error;#s;#i;#n;#d;#c;#l;#a;#u;#f;constructor(r,e){this.#t=r,e&&(this.#i=e.executionCtx,this.env=e.env,this.#l=e.notFoundHandler,this.#f=e.path,this.#u=e.matchResult)}get req(){return this.#e??=new Cv(this.#t,this.#f,this.#u),this.#e}get event(){if(this.#i&&"respondWith"in this.#i)return this.#i;throw Error("This context has no FetchEvent")}get executionCtx(){if(this.#i)return this.#i;throw Error("This context has no ExecutionContext")}get res(){return this.#n||=fu(null,{headers:this.#a??=new Headers})}set res(r){if(this.#n&&r){r=fu(r.body,r);for(let[e,t]of this.#n.headers.entries())if(e!=="content-type")if(e==="set-cookie"){let i=this.#n.headers.getSetCookie();r.headers.delete("set-cookie");for(let n of i)r.headers.append("set-cookie",n)}else r.headers.set(e,t)}this.#n=r,this.finalized=!0}render=(...r)=>(this.#c??=e=>this.html(e),this.#c(...r));setLayout=r=>this.#d=r;getLayout=()=>this.#d;setRenderer=r=>{this.#c=r};header=(r,e,t)=>{this.finalized&&(this.#n=fu(this.#n.body,this.#n));let i=this.#n?this.#n.headers:this.#a??=new Headers;e===void 0?i.delete(r):t?.append?i.append(r,e):i.set(r,e)};status=r=>{this.#s=r};set=(r,e)=>{this.#r??=new Map,this.#r.set(r,e)};get=r=>this.#r?this.#r.get(r):void 0;get var(){return this.#r?Object.fromEntries(this.#r):{}}#o(r,e,t){let i=this.#n?new Headers(this.#n.headers):this.#a;if(typeof e=="object"&&e.headers){i??=new Headers;for(let[s,o]of new Headers(e.headers))s==="set-cookie"?i.append(s,o):i.set(s,o)}if(t){if(!i){let s=0;for(let o in t)if(++s>1||typeof t[o]!="string"){i=new Headers;break}}if(i)for(let s in t){let o=t[s];if(typeof o=="string")i.set(s,o);else{i.delete(s);for(let a of o)i.append(s,a)}}}let n=typeof e=="number"?e:e?.status??this.#s;return fu(r,{status:n,headers:i??t})}newResponse=(...r)=>this.#o(...r);body=(r,e,t)=>this.#o(r,e,t);text=(r,e,t)=>!this.#a&&!this.#s&&!e&&!t&&!this.finalized?new Response(r):this.#o(r,e,Zw(lL,t));json=(r,e,t)=>this.#o(JSON.stringify(r),e,Zw("application/json",t));html=(r,e,t)=>{let i=n=>this.#o(n,e,Zw("text/html; charset=UTF-8",t));return typeof r=="object"?Xw(r,Bv.Stringify,!1,{}).then(i):i(r)};redirect=(r,e)=>{let t=String(r);return this.header("Location",/[^\x00-\xFF]/.test(t)?encodeURI(t):t),this.newResponse(null,e??302)};notFound=()=>(this.#l??=()=>fu(),this.#l(this))}});function Va(r){return Array.from(new Uint8Array(r)).map(e=>e.toString(16).padStart(2,"0")).join("")}function $i(r){return typeof r=="string"?new TextEncoder().encode(r):r}function ox(r){let e=new Uint8Array(r.length/2);for(let t=0;t>>0,!0),o.setUint32(s.length-4,Math.floor(i/4294967296),!0);let a=new Int32Array(64);for(let g=0;g<64;g++)a[g]=Math.abs(Math.sin(g+1))*4294967296|0;let c=[7,12,17,22,7,12,17,22,7,12,17,22,7,12,17,22,5,9,14,20,5,9,14,20,5,9,14,20,5,9,14,20,4,11,16,23,4,11,16,23,4,11,16,23,4,11,16,23,6,10,15,21,6,10,15,21,6,10,15,21,6,10,15,21],l=1732584193,d=4023233417,u=2562383102,f=271733878;for(let g=0;gp.getInt32(_*4,!0)),[y,w,C,b]=[l,d,u,f];for(let x=0;x<64;x++){let _,R;x<16?(_=w&C|~w&b,R=x):x<32?(_=b&w|~b&C,R=(5*x+1)%16):x<48?(_=w^C^b,R=(3*x+5)%16):(_=C^(w|~b),R=7*x%16);let U=b;b=C,C=w;let T=y+_+a[x]+I[R]|0;w=w+(T<>>32-c[x])|0,y=U}l=l+y|0,d=d+w|0,u=u+C|0,f=f+b|0}let h=new DataView(new ArrayBuffer(16));return h.setInt32(0,l,!0),h.setInt32(4,d,!0),h.setInt32(8,u,!0),h.setInt32(12,f,!0),Va(h.buffer)}function $t(r){return hL(r)}async function Qo(r){let e=await crypto.subtle.digest("SHA-1",$i(r));return Va(e)}async function Mv(r){let e=await crypto.subtle.digest("SHA-256",$i(r));return Va(e)}async function ax(r,e){let t=await crypto.subtle.importKey("raw",$i(e),{name:"HMAC",hash:"SHA-256"},!1,["sign"]),i=await crypto.subtle.sign("HMAC",t,$i(r));return Va(i)}async function hu(r,e){let t=await crypto.subtle.importKey("raw",$i(e),{name:"HMAC",hash:"SHA-1"},!1,["sign"]),i=await crypto.subtle.sign("HMAC",t,$i(r)),n=new Uint8Array(i),s="";for(let o of n)s+=String.fromCharCode(o);return btoa(s)}async function Lv(r,e="salt",t=cx){let i=$i(r),n=$i(e),s=await crypto.subtle.importKey("raw",i,"PBKDF2",!1,["deriveKey"]);return crypto.subtle.deriveKey({name:"PBKDF2",salt:n,iterations:t,hash:"SHA-256"},s,{name:"AES-GCM",length:256},!1,["encrypt","decrypt"])}async function Hv(r,e){let t=crypto.getRandomValues(new Uint8Array(16)),i=crypto.getRandomValues(new Uint8Array(12)),n=await Lv(e,t,cx),s=await crypto.subtle.encrypt({name:"AES-GCM",iv:i},n,$i(r));return`${Va(t.buffer)}:${Va(i.buffer)}:${Va(s)}`}async function Kv(r,e){let t=r.split(":"),i="salt",n="",s="",o=1;if(t.length===3)i=ox(t[0]),n=t[1],s=t[2],o=cx;else if(t.length===2)n=t[0],s=t[1],o=1,Ov||(Ov=!0,console.warn("[Crypto] Decrypting legacy weak-KDF format. It will be re-encrypted with the strong PBKDF2 format on the next config save."));else throw new Error("Invalid encrypted data format");let a=ox(n),c=ox(s),l=await Lv(e,i,o),d=await crypto.subtle.decrypt({name:"AES-GCM",iv:a},l,c);return new TextDecoder().decode(d)}async function lx(r,e,t){let i=$i(e),n=t?$i(t):i,s=await crypto.subtle.importKey("raw",i,{name:"AES-CBC"},!1,["encrypt"]),o=$i(r),c=typeof process<"u"&&process?.release?.name==="node"?o:gL(o),l=await crypto.subtle.encrypt({name:"AES-CBC",iv:n},s,c),d=new Uint8Array(l),u="";for(let f of d)u+=String.fromCharCode(f);return btoa(u)}function gL(r,e=16){let t=e-r.length%e,i=new Uint8Array(r.length+t);return i.set(r),i.fill(t,r.length),i}var cx,Ov,ni=V(()=>{"use strict";cx=1e5,Ov=!1});function gl(r,e){if(typeof r!="string")return null;let t=r.trim();if(!t)return null;let i;try{i=new URL(t)}catch{return null}if(i.protocol!=="http:"&&i.protocol!=="https:"||!i.hostname)return null;let n=e?.EO_KV_URLS;return!(typeof n=="string"&&n.trim()===t)&&!(i.hostname==="localhost"||i.hostname==="127.0.0.1"||i.hostname==="[::1]")&&i.protocol!=="https:"?(console.warn(`[DB] Rejecting non-HTTPS proxy origin derived from request: ${i.protocol}//${i.hostname} (would leak X-Internal-Call in clear text)`),null):`${i.protocol}//${i.host}`.replace(/\/$/,"")}var F0=V(()=>{"use strict"});var mx=oe((oce,ck)=>{"use strict";var px=Object.defineProperty,pL=Object.getOwnPropertyDescriptor,mL=Object.getOwnPropertyNames,yL=Object.prototype.hasOwnProperty,IL=(r,e)=>{for(var t in e)px(r,t,{get:e[t],enumerable:!0})},wL=(r,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of mL(e))!yL.call(r,n)&&n!==t&&px(r,n,{get:()=>e[n],enumerable:!(i=pL(e,n))||i.enumerable});return r},xL=r=>wL(px({},"__esModule",{value:!0}),r),Xv={};IL(Xv,{InvalidKeyError:()=>P0,InvalidStoreNameError:()=>wu,MissingProjectIdError:()=>Zv,PagesBlobError:()=>On,PreconditionFailedError:()=>Ax,QuotaExceededError:()=>CL,RateLimitedError:()=>EL,Store:()=>ek,getStore:()=>HL,listStores:()=>KL});ck.exports=xL(Xv);var On=class extends Error{code;constructor(r,e){super(`PagesBlob: ${e}`),this.name="PagesBlobError",this.code=r}},P0=class extends On{constructor(r){super("INVALID_KEY",r)}},wu=class extends On{constructor(r){super("INVALID_STORE_NAME",r)}},dx=class extends On{constructor(r){super("MISSING_ENVIRONMENT",`Environment not configured for Pages Blob. Missing: ${r.join(", ")}. Supply these properties when creating a store, or ensure the function is running in a Pages environment.`)}},CL=class extends On{constructor(){super("QUOTA_EXCEEDED","storage quota exceeded")}},EL=class extends On{constructor(){super("RATE_LIMITED","request rate limited, please retry later")}},Zv=class extends On{constructor(){super("MISSING_PROJECT_ID","projectId is required when using API token mode. Please supply { name, projectId, token } to getStore() / listStores().")}},_o=class extends On{constructor(r){super("CREDENTIAL_ERROR",r)}},Hr=class extends On{constructor(r,e){super("COS_ERROR",`COS returned ${r}: ${e}`)}},Ax=class extends On{constructor(){super("PRECONDITION_FAILED","conditional write failed (key already exists)")}};function Ya(r){if(r==="")throw new P0("Blob key must not be empty.");if(r.startsWith("/")||r.startsWith("%2F"))throw new P0("Blob key must not start with forward slash (/).");if(new TextEncoder().encode(r).length>600)throw new P0("Blob key must be a sequence of Unicode characters whose UTF-8 encoding is at most 600 bytes long.")}function BL(r){if(r==="")throw new wu("Store name must not be empty.");if(r.includes("/")||r.includes(":"))throw new wu("Store name must not contain forward slashes (/) or colons (:).");if(!/^[a-zA-Z0-9_-]+$/.test(r))throw new wu("Store name must only contain letters, digits, underscores, and hyphens.");if(new TextEncoder().encode(r).length>64)throw new wu("Store name must be a sequence of Unicode characters whose UTF-8 encoding is at most 64 bytes long.")}var ek=class{cosClient;storeName;defaultConsistency;constructor(r,e,t="eventual"){this.cosClient=r,this.storeName=e,this.defaultConsistency=t}resolveConsistency(r){return r??this.defaultConsistency}async set(r,e,t){Ya(r);let i=await this.cosClient.putObject(this.storeName,r,e,{onlyIfNew:t?.onlyIfNew,cacheControl:t?.cacheControl});if(t?.onlyIfNew&&i.statusCode===412)throw new Ax}async setJSON(r,e,t){Ya(r);let i=JSON.stringify(e),n=await this.cosClient.putObject(this.storeName,r,i,{onlyIfNew:t?.onlyIfNew,contentType:"application/json",cacheControl:t?.cacheControl});if(t?.onlyIfNew&&n.statusCode===412)throw new Ax}async createUploadUrl(r,e){Ya(r);let{url:t,expiresAt:i}=await this.cosClient.createPresignedPutUrl(this.storeName,r,{expireSeconds:e?.expireSeconds,contentType:e?.contentType});return{url:t,key:r,expiresAt:i}}async get(r,e){Ya(r);let t=this.resolveConsistency(e?.consistency),i=await this.cosClient.getObject(this.storeName,r,t);if(i===null)return null;let{body:n}=i,s=e?.type??"text",o=new TextDecoder("utf-8");switch(s){case"text":return o.decode(n);case"json":return JSON.parse(o.decode(n));case"arrayBuffer":return n.buffer.slice(n.byteOffset,n.byteOffset+n.byteLength);case"blob":return new Blob([n]);case"stream":return new ReadableStream({start(a){a.enqueue(n),a.close()}});default:return o.decode(n)}}async getMetadata(r,e){Ya(r);let t=this.resolveConsistency(e?.consistency);return this.cosClient.headObject(this.storeName,r,t)}async getWithHeaders(r,e){Ya(r);let t=this.resolveConsistency(e?.consistency),i=await this.cosClient.getObject(this.storeName,r,t);return i?{body:new TextDecoder("utf-8").decode(i.body),headers:i.headers||{}}:null}async delete(r){Ya(r),await this.cosClient.deleteObject(this.storeName,r)}async list(r){let e=r?.paginate!==!1,t=r?.limit,i=[],n=[],s=this.resolveConsistency(r?.consistency),o=r?.cursor||"",a=!0,c;for(;a;){let l=t!==void 0?t-i.length:1e3,d=Math.min(l,1e3);if(d<=0)break;let u=await this.cosClient.listObjects(this.storeName,{prefix:r?.prefix,delimiter:r?.directories?"/":void 0,marker:o||void 0,maxKeys:d,consistency:s});for(let f of u.contents)i.push({key:f.key,etag:f.etag});n.push(...u.commonPrefixes),t!==void 0&&i.length>=t?(i.length=t,(u.isTruncated||u.contents.length===d)&&(c=u.nextMarker),a=!1):u.isTruncated?!e&&t===void 0?(c=u.nextMarker,a=!1):o=u.nextMarker:a=!1}return{blobs:i,directories:n,...c?{cursor:c}:{}}}},bL=new TextEncoder;function hx(r){let e=bL.encode(r),t=new ArrayBuffer(e.byteLength),i=new Uint8Array(t);return i.set(e),i}function tk(r){let e=r instanceof Uint8Array?r:new Uint8Array(r),t="";for(let i=0;i"%"+e.charCodeAt(0).toString(16).toUpperCase())}function U0(r){try{return decodeURIComponent(r)}catch{return r}}function rk(r){return r.split("/").map(e=>U0(e)).join("/")}function ik(r){return r.split("/").map(e=>T0(U0(e))).join("/")}var kL=new Set(["cache-control","content-disposition","content-encoding","content-length","content-md5","content-type","expect","expires","if-match","if-modified-since","if-none-match","if-unmodified-since","origin","range","transfer-encoding"]);function SL(r){return r==="host"||r==="x-cos-security-token"?!1:!!(kL.has(r)||r.startsWith("x-cos-"))}function zv(r){if(!r)return[];let e=[];for(let[t,i]of Object.entries(r))i!=null&&e.push([t.toLowerCase(),String(i)]);return e.sort(([t],[i])=>ti?1:0),e}function Jv(r){return r.map(([e,t])=>`${T0(e)}=${T0(t)}`).join("&")}function jv(r){return r.map(([e])=>T0(e)).join(";")}async function nk(r){let e=r.method.toLowerCase(),t=r.pathname.startsWith("/")?r.pathname:`/${r.pathname}`,i=Math.floor(Date.now()/1e3),n=i+(r.expireSeconds??3600),s=`${i};${n}`,o=zv(r.headers).filter(([w])=>SL(w)),a=jv(o),c=Jv(o),l=zv(r.query),d=jv(l),u=Jv(l),f=`${e} +var UL=Object.create;var sx=Object.defineProperty;var RL=Object.getOwnPropertyDescriptor;var NL=Object.getOwnPropertyNames;var qL=Object.getPrototypeOf,OL=Object.prototype.hasOwnProperty;var wt=(r=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(r,{get:(e,t)=>(typeof require<"u"?require:e)[t]}):r)(function(r){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+r+'" is not supported')});var j=(r,e,t)=>()=>{if(t)throw t[0];try{return r&&(e=r(r=0)),e}catch(i){throw t=[i],i}};var oe=(r,e)=>()=>{try{return e||r((e={exports:{}}).exports,e),e.exports}catch(t){throw e=0,t}},xn=(r,e)=>{for(var t in e)sx(r,t,{get:e[t],enumerable:!0})},ML=(r,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of NL(e))!OL.call(r,n)&&n!==t&&sx(r,n,{get:()=>e[n],enumerable:!(i=RL(e,n))||i.enumerable});return r};var Qr=(r,e,t)=>(t=r!=null?UL(qL(r)):{},ML(e||!r||!r.__esModule?sx(t,"default",{value:r,enumerable:!0}):t,r));var ox,Bv=j(()=>{ox=(r,e,t)=>(i,n)=>{let s=-1;return o(0);async function o(a){if(a<=s)throw new Error("next() called multiple times");s=a;let c,l=!1,d;if(r[a]?(d=r[a][0][0],i.req.routeIndex=a):d=a===r.length&&n||void 0,d)try{c=await d(i,()=>o(a+1))}catch(u){if(u instanceof Error&&e)i.error=u,c=await e(u,i),l=!0;else throw u}else i.finalized===!1&&t&&(c=await t(i));return c&&(i.finalized===!1||l)&&(i.res=c),i}}});var xu,ax=j(()=>{xu=class extends Error{res;status;constructor(r=500,e){super(e?.message,{cause:e?.cause}),this.res=e?.res,this.status=r}getResponse(){return this.res?new Response(this.res.body,{status:this.status,headers:this.res.headers}):new Response(this.message,{status:this.status})}}});var bv,vv=j(()=>{bv=Symbol()});var kv=j(()=>{});var Sv,Dv=j(()=>{kv();Sv=(r,e)=>new Response(r,{headers:{"Content-Type":e.replace(/^[^;]+/,i=>i.toLowerCase())}}).formData()});async function LL(r,e){if(!P0(r)&&r.bodyCache.formData)return Qv(await r.bodyCache.formData,e);let t=P0(r)?r.headers:r.raw.headers,i=await r.arrayBuffer(),n=Sv(i,t.get("Content-Type")||"");P0(r)||(r.bodyCache.formData=n);let s=await n;return s?Qv(s,e):{}}function Qv(r,e){let t=Object.create(null);return r.forEach((i,n)=>{e.all||n.endsWith("[]")?HL(t,n,i):t[n]=i}),e.dot&&Object.entries(t).forEach(([i,n])=>{i.includes(".")&&(KL(t,i,n),delete t[i])}),t}var P0,_v,HL,KL,Fv=j(()=>{Dv();P0=r=>"headers"in r,_v=async(r,e=Object.create(null))=>{let{all:t=!1,dot:i=!1}=e,o=(P0(r)?r.headers:r.raw.headers).get("Content-Type")?.split(";")[0].trim().toLowerCase();return o==="multipart/form-data"||o==="application/x-www-form-urlencoded"?LL(r,{all:t,dot:i}):{}};HL=(r,e,t)=>{r[e]!==void 0?Array.isArray(r[e])?r[e].push(t):r[e]=[r[e],t]:e.endsWith("[]")?r[e]=[t]:r[e]=t},KL=(r,e,t)=>{if(/(?:^|\.)__proto__\./.test(e))return;let i=r,n=e.split(".");n.forEach((s,o)=>{o===n.length-1?i[s]=t:((!i[s]||typeof i[s]!="object"||Array.isArray(i[s])||i[s]instanceof File)&&(i[s]=Object.create(null)),i=i[s])})}});var lx,Pv,GL,zL,T0,Tv,Uv,JL,dx,Rv,Do,U0,yl,cx,Nv,qv,Ov,jL,$a=j(()=>{lx=r=>{let e=r.split("/");return e[0]===""&&e.shift(),e},Pv=r=>{let{groups:e,path:t}=GL(r),i=lx(t);return zL(i,e)},GL=r=>{let e=[];return r=r.replace(/\{[^}]+\}/g,(t,i)=>{let n=`@${i}`;return e.push([n,t]),n}),{groups:e,path:r}},zL=(r,e)=>{for(let t=e.length-1;t>=0;t--){let[i]=e[t];for(let n=r.length-1;n>=0;n--)if(r[n].includes(i)){r[n]=r[n].replace(i,e[t][1]);break}}return r},T0={},Tv=(r,e)=>{if(r==="*")return"*";let t=r.match(/^\:([^\{\}]+)(?:\{(.+)\})?$/);if(t){let i=`${r}#${e}`;return T0[i]||(t[2]?T0[i]=e&&e[0]!==":"&&e[0]!=="*"?[i,t[1],new RegExp(`^${t[2]}(?=/${e})`)]:[r,t[1],new RegExp(`^${t[2]}$`)]:T0[i]=[r,t[1],!0]),T0[i]}return null},Uv=(r,e)=>{try{return e(r)}catch{return r.replace(/(?:%[0-9A-Fa-f]{2})+/g,t=>{try{return e(t)}catch{return t}})}},JL=r=>Uv(r,decodeURI),dx=r=>{let e=r.url,t=e.indexOf("/",e.indexOf(":")+4),i=t;for(;i{let e=dx(r);return e.length>1&&e.at(-1)==="/"?e.slice(0,-1):e},Do=(r,e,...t)=>(t.length&&(e=Do(e,...t)),`${r?.[0]==="/"?"":"/"}${r}${e==="/"?"":`${r?.at(-1)==="/"?"":"/"}${e?.[0]==="/"?e.slice(1):e}`}`),U0=r=>{if(r.charCodeAt(r.length-1)!==63||!r.includes(":"))return null;let e=r.split("/"),t=[],i="";return e.forEach(n=>{if(n!==""&&!/\:/.test(n))i+="/"+n;else if(/\:/.test(n))if(/\?/.test(n)){t.length===0&&i===""?t.push("/"):t.push(i);let s=n.replace("?","");i+="/"+s,t.push(i)}else i+="/"+n}),t.filter((n,s,o)=>o.indexOf(n)===s)},yl=r=>r.indexOf("%")!==-1?Uv(r,jL):r,cx=r=>(r.indexOf("+")!==-1&&(r=r.replace(/\+/g," ")),yl(r)),Nv=(r,e,t)=>{let i;if(!t&&e&&e.indexOf("%")===-1&&e.indexOf("+")===-1){let o=r.indexOf("?",8);if(o===-1)return;for(r.startsWith(e,o+1)||(o=r.indexOf(`&${e}`,o+1));o!==-1;){let a=r.charCodeAt(o+e.length+1);if(a===61){let c=o+e.length+2,l=r.indexOf("&",c);return cx(r.slice(c,l===-1?void 0:l))}else if(a==38||isNaN(a))return"";o=r.indexOf(`&${e}`,o+1)}if(i=/[%+]/.test(r),!i)return}let n=Object.create(null);i??=/[%+]/.test(r);let s=r.indexOf("?",8);for(;s!==-1;){let o=r.indexOf("&",s+1),a=r.indexOf("=",s);a>o&&o!==-1&&(a=-1);let c=r.slice(s+1,a===-1?o===-1?void 0:o:a);if(i&&(c=cx(c)),s=o,c==="")continue;let l;a===-1?l="":(l=r.slice(a+1,o===-1?void 0:o),i&&(l=cx(l))),t?(n[c]&&Array.isArray(n[c])||(n[c]=[]),n[c].push(l)):n[c]??=l}return e?n[e]:n},qv=Nv,Ov=(r,e)=>Nv(r,e,!0),jL=decodeURIComponent});var Mv,Lv=j(()=>{ax();vv();Fv();$a();Mv=class{raw;#t;#e;routeIndex=0;path;bodyCache={};constructor(r,e="/",t=[[]]){this.raw=r,this.path=e,this.#e=t}param(r){return r?this.#r(r):this.#s()}#r(r){let e=this.#e[0][this.routeIndex][1][r],t=this.#i(e);return t&&yl(t)}#s(){let r={},e=Object.keys(this.#e[0][this.routeIndex][1]);for(let t of e){let i=this.#i(this.#e[0][this.routeIndex][1][t]);i!==void 0&&(r[t]=yl(i))}return r}#i(r){return this.#e[1]?this.#e[1][r]:r}query(r){return qv(this.url,r)}queries(r){return Ov(this.url,r)}header(r){if(r)return this.raw.headers.get(r)??void 0;let e=Object.create(null);return this.raw.headers.forEach((t,i)=>{e[i]=t}),e}async parseBody(r){return _v(this,r)}#n=r=>{let{bodyCache:e,raw:t}=this,i=e[r];if(i)return i;for(let n in e)return e[n].then(s=>(n==="json"&&(s=JSON.stringify(s)),new Response(s)[r]()));return e[r]=t[r]()};json(){return this.#n("text").then(r=>JSON.parse(r))}text(){return this.#n("text")}arrayBuffer(){return this.#n("arrayBuffer")}bytes(){return this.#n("arrayBuffer").then(r=>new Uint8Array(r))}blob(){return this.#n("blob")}formData(){return this.#n("formData")}addValidatedData(r,e){(this.#t??={})[r]=e}valid(r){return this.#t?.[r]}get url(){return this.raw.url}get method(){return this.raw.method}get[bv](){return this.#e}get matchedRoutes(){return this.#e[0].map(([[,r]])=>r)}get routePath(){return this.#e[0].map(([[,r]])=>r)[this.routeIndex].path}}});var Hv,$L,ux,Kv=j(()=>{Hv={Stringify:1,BeforeStream:2,Stream:3},$L=(r,e)=>{let t=new String(r);return t.isEscaped=!0,t.callbacks=e,t},ux=async(r,e,t,i,n)=>{typeof r=="object"&&!(r instanceof String)&&(r instanceof Promise||(r=r.toString()),r instanceof Promise&&(r=await r));let s=r.callbacks;if(!s?.length)return Promise.resolve(r);n?n[0]+=r:n=[r];let o=Promise.all(s.map(a=>a({phase:e,buffer:n,context:i}))).then(a=>Promise.all(a.filter(Boolean).map(c=>ux(c,e,!1,i,n))).then(()=>n[0]));return t?$L(await o,s):o}});var VL,fx,Cu,Ax,R0=j(()=>{Lv();Kv();VL="text/plain; charset=UTF-8",fx=(r,e)=>({"Content-Type":r,...e}),Cu=(r,e)=>new Response(r,e),Ax=class{#t;#e;env={};#r;finalized=!1;error;#s;#i;#n;#d;#c;#l;#a;#u;#f;constructor(r,e){this.#t=r,e&&(this.#i=e.executionCtx,this.env=e.env,this.#l=e.notFoundHandler,this.#f=e.path,this.#u=e.matchResult)}get req(){return this.#e??=new Mv(this.#t,this.#f,this.#u),this.#e}get event(){if(this.#i&&"respondWith"in this.#i)return this.#i;throw Error("This context has no FetchEvent")}get executionCtx(){if(this.#i)return this.#i;throw Error("This context has no ExecutionContext")}get res(){return this.#n||=Cu(null,{headers:this.#a??=new Headers})}set res(r){if(this.#n&&r){r=Cu(r.body,r);for(let[e,t]of this.#n.headers.entries())if(e!=="content-type")if(e==="set-cookie"){let i=this.#n.headers.getSetCookie();r.headers.delete("set-cookie");for(let n of i)r.headers.append("set-cookie",n)}else r.headers.set(e,t)}this.#n=r,this.finalized=!0}render=(...r)=>(this.#c??=e=>this.html(e),this.#c(...r));setLayout=r=>this.#d=r;getLayout=()=>this.#d;setRenderer=r=>{this.#c=r};header=(r,e,t)=>{this.finalized&&(this.#n=Cu(this.#n.body,this.#n));let i=this.#n?this.#n.headers:this.#a??=new Headers;e===void 0?i.delete(r):t?.append?i.append(r,e):i.set(r,e)};status=r=>{this.#s=r};set=(r,e)=>{this.#r??=new Map,this.#r.set(r,e)};get=r=>this.#r?this.#r.get(r):void 0;get var(){return this.#r?Object.fromEntries(this.#r):{}}#o(r,e,t){let i=this.#n?new Headers(this.#n.headers):this.#a;if(typeof e=="object"&&e.headers){i??=new Headers;for(let[s,o]of new Headers(e.headers))s==="set-cookie"?i.append(s,o):i.set(s,o)}if(t){if(!i){let s=0;for(let o in t)if(++s>1||typeof t[o]!="string"){i=new Headers;break}}if(i)for(let s in t){let o=t[s];if(typeof o=="string")i.set(s,o);else{i.delete(s);for(let a of o)i.append(s,a)}}}let n=typeof e=="number"?e:e?.status??this.#s;return Cu(r,{status:n,headers:i??t})}newResponse=(...r)=>this.#o(...r);body=(r,e,t)=>this.#o(r,e,t);text=(r,e,t)=>!this.#a&&!this.#s&&!e&&!t&&!this.finalized?new Response(r):this.#o(r,e,fx(VL,t));json=(r,e,t)=>this.#o(JSON.stringify(r),e,fx("application/json",t));html=(r,e,t)=>{let i=n=>this.#o(n,e,fx("text/html; charset=UTF-8",t));return typeof r=="object"?ux(r,Hv.Stringify,!1,{}).then(i):i(r)};redirect=(r,e)=>{let t=String(r);return this.header("Location",/[^\x00-\xFF]/.test(t)?encodeURI(t):t),this.newResponse(null,e??302)};notFound=()=>(this.#l??=()=>Cu(),this.#l(this))}});var ir,Gv,zv,N0,q0,Va=j(()=>{ir="ALL",Gv="all",zv=["get","post","put","delete","options","patch","query"],N0="Can not add a route since the matcher is already built.",q0=class extends Error{}});var Jv,jv=j(()=>{Jv="__COMPOSED_HANDLER"});var YL,$v,Vv,Wv=j(()=>{Bv();R0();Va();jv();$a();YL=r=>r.text("404 Not Found",404),$v=(r,e)=>{if("getResponse"in r){let t=r.getResponse();return e.newResponse(t.body,t)}return console.error(r),e.text("Internal Server Error",500)},Vv=class Yv{get;post;put;delete;options;patch;query;all;on;use;router;getPath;_basePath="/";#t="/";routes=[];constructor(e={}){[...zv,Gv].forEach(s=>{this[s]=(o,...a)=>(typeof o=="string"?this.#t=o:this.#s(s,this.#t,o),a.forEach(c=>{this.#s(s,this.#t,c)}),this)}),this.on=(s,o,...a)=>{for(let c of[o].flat()){this.#t=c;for(let l of[s].flat())a.map(d=>{this.#s(l.toUpperCase(),this.#t,d)})}return this},this.use=(s,...o)=>(typeof s=="string"?this.#t=s:(this.#t="*",o.unshift(s)),o.forEach(a=>{this.#s(ir,this.#t,a)}),this);let{strict:i,...n}=e;Object.assign(this,n),this.getPath=i??!0?e.getPath??dx:Rv}#e(){let e=new Yv({router:this.router,getPath:this.getPath});return e.errorHandler=this.errorHandler,e.#r=this.#r,e.routes=this.routes,e}#r=YL;errorHandler=$v;route(e,t){let i=this.basePath(e);return t.routes.map(n=>{let s;t.errorHandler===$v?s=n.handler:(s=async(o,a)=>(await ox([],t.errorHandler)(o,()=>n.handler(o,a))).res,s[Jv]=n.handler),i.#s(n.method,n.path,s,n.basePath)}),this}basePath(e){let t=this.#e();return t._basePath=Do(this._basePath,e),t}onError=e=>(this.errorHandler=e,this);notFound=e=>(this.#r=e,this);mount(e,t,i){let n,s;i&&(typeof i=="function"?s=i:(s=i.optionHandler,i.replaceRequest===!1?n=c=>c:n=i.replaceRequest));let o=s?c=>{let l=s(c);return Array.isArray(l)?l:[l]}:c=>{let l;try{l=c.executionCtx}catch{}return[c.env,l]};n||=(()=>{let c=Do(this._basePath,e),l=c==="/"?0:c.length;return d=>{let u=new URL(d.url);return u.pathname=this.getPath(d).slice(l)||"/",new Request(u,d)}})();let a=async(c,l)=>{let d=await t(n(c.req.raw),...o(c));if(d)return d;await l()};return this.#s(ir,Do(e,"*"),a),this}#s(e,t,i,n){e=e.toUpperCase(),t=Do(this._basePath,t);let s={basePath:n!==void 0?Do(this._basePath,n):this._basePath,path:t,method:e,handler:i};this.router.add(e,t,[i,s]),this.routes.push(s)}#i(e,t){if(e instanceof Error)return this.errorHandler(e,t);throw e}#n(e,t,i,n){if(n==="HEAD")return(async()=>new Response(null,await this.#n(e,t,i,"GET")))();let s=this.getPath(e,{env:i}),o=this.router.match(n,s),a=new Ax(e,{path:s,matchResult:o,env:i,executionCtx:t,notFoundHandler:this.#r});if(o[0].length===1){let l;try{l=o[0][0][0][0](a,async()=>{a.res=await this.#r(a)})}catch(d){return this.#i(d,a)}return l instanceof Promise?l.then(d=>d||(a.finalized?a.res:this.#r(a))).catch(d=>this.#i(d,a)):l??this.#r(a)}let c=ox(o[0],this.errorHandler,this.#r);return(async()=>{try{let l=await c(a);if(!l.finalized)throw new Error("Context is not finalized. Did you forget to return a Response object or `await next()`?");return l.res}catch(l){return this.#i(l,a)}})()}fetch=(e,...t)=>this.#n(e,t[1],t[0],e.method);request=(e,t,i,n)=>e instanceof Request?this.fetch(t?new Request(e,t):e,i,n):(e=e.toString(),this.fetch(new Request(/^https?:\/\//.test(e)?e:`http://localhost${Do("/",e)}`,t),i,n));fire=()=>{addEventListener("fetch",e=>{e.respondWith(this.#n(e.request,e,void 0,e.request.method))})}}});function hx(r,e){let t=this.buildAllMatchers(),i=((n,s)=>{let o=t[n]||t[ir],a=o[2][s];if(a)return a;let c=s.match(o[0]);if(!c)return[[],O0];let l=c.indexOf("",1);return[o[1][l],c]});return this.match=i,i(r,e)}var O0,gx=j(()=>{Va();O0=[]});function WL(r,e){return r.length===1?e.length===1?r{M0="[^/]+",Il=".*",Ya="(?:|/.*)",Qo=Symbol(),Xv=new Set(".\\+*[^]$()");Zv=class px{#t;#e;#r=Object.create(null);insert(e,t,i,n,s){let o=this;for(let a=0,c=e.length;a1||g.length>1)&&g!==Il&&g!==Ya)throw Qo}u=o.#r[h]=new px}f!==""&&(u.#e??=n.varIndex++,i.push([f,u.#e]))}else if(u=o.#r[l],!u){for(let f in o.#r)if(f.length>1&&f!==Il&&f!==Ya)throw Qo;u=o.#r[l]=new px}o=u}if(o.#t!==void 0)throw Qo;o.#t=s?-1:t}buildRegExpStr(){let t=Object.keys(this.#r).sort(WL).map(i=>{let n=this.#r[i],s=n.buildRegExpStr();return s===""?"":(typeof n.#e=="number"?`(${i})@${n.#e}`:Xv.has(i)?`\\${i}`:i)+s}).filter(Boolean);return typeof this.#t=="number"&&this.#t!==-1&&t.unshift(`#${this.#t}`),t.length===0?"":t.length===1?t[0]:"(?:"+t.join("|")+")"}}});var yx,ek=j(()=>{mx();yx=class{#t={varIndex:0};#e=new Zv;#r=0;paths=Object.create(null);insert(r,e){if(e){this.#e.insert(r.split(""),0,[],this.#t,!0);return}let t=[],i=[],n=r;for(let o=0;;){let a=!1;if(n=n.replace(/\{[^}]+\}/g,c=>{let l=`@\\${o}`;return i[o]=[l,c],o++,a=!0,l}),!a)break}let s=n.match(/(?::[^\/]+)|(?:\/\*$)|./g)||[];for(let o=i.length-1;o>=0;o--){let[a]=i[o];for(let c=s.length-1;c>=0;c--)if(s[c].indexOf(a)!==-1){s[c]=s[c].replace(a,i[o][1]);break}}this.#e.insert(s,this.#r,t,this.#t,!1),this.paths[r]=[this.#r++,t]}buildRegExp(){let r=this.#e.buildRegExpStr();if(r==="")return[/^$/,[],[]];let e=0,t=[],i=[];return r=r.replace(/#(\d+)|@(\d+)|\.\*\$/g,(n,s,o)=>s!==void 0?(t[++e]=Number(s),"$()"):(o!==void 0&&(i[Number(o)]=++e),"")),[new RegExp(`^${r}`),t,i]}}});function rk(r){return tk[r]??=new RegExp(r==="*"?"":`^${r.replace(/\/\*$|([.\\+*[^\]$()])/g,(e,t)=>t?`\\${t}`:"(?:|/.*)")}$`)}function XL(){tk=Object.create(null)}function L0(r,e){if(r){for(let t of Object.keys(r).sort((i,n)=>n.length-i.length))if(rk(t).test(e))return[...r[t]]}}var tk,H0,Ix=j(()=>{Va();$a();gx();mx();ek();tk=Object.create(null);H0=class{name="RegExpRouter";#t;#e;#r;constructor(){this.#t={[ir]:Object.create(null)},this.#e={[ir]:Object.create(null)},this.#r={[ir]:new yx}}#s(r,e){try{this.#r[r].insert(e,!/\*|\/:/.test(e))}catch(t){throw t===Qo?new q0(e):t}}add(r,e,t){let i=this.#t,n=this.#e;if(!i||!n)throw new Error(N0);i[r]||(this.#r[r]=new yx,[i,n].forEach(a=>{a[r]=Object.create(null),Object.keys(a[ir]).forEach(c=>{a[r][c]=[...a[ir][c]],this.#s(r,c)})})),e==="/*"&&(e="*");let s=(e.match(/\/:/g)||[]).length;if(/\*$/.test(e)){let a=rk(e);Object.keys(i).forEach(c=>{(r===ir||r===c)&&!i[c][e]&&(this.#s(c,e),i[c][e]=L0(i[c],e)||L0(i[ir],e)||[])}),Object.keys(i).forEach(c=>{(r===ir||r===c)&&Object.keys(i[c]).forEach(l=>{a.test(l)&&i[c][l].push([t,s])})}),Object.keys(n).forEach(c=>{(r===ir||r===c)&&Object.keys(n[c]).forEach(l=>a.test(l)&&n[c][l].push([t,s]))});return}let o=U0(e)||[e];for(let a=0,c=o.length;a{(r===ir||r===d)&&(n[d][l]||(this.#s(d,l),n[d][l]=[...L0(i[d],l)||L0(i[ir],l)||[]]),n[d][l].push([t,s-c+a+1]))})}}match=hx;buildAllMatchers(){let r=Object.create(null);return Object.keys(this.#e).concat(Object.keys(this.#t)).forEach(e=>{r[e]||=this.#i(e)}),this.#t=this.#e=this.#r=void 0,XL(),r}#i(r){let e=this.#t[r],t=this.#e[r],i=this.#r[r],n=Object.create(null),s=[];[e,t].forEach(d=>{for(let u in d){let f=d[u],h=i.paths[u];if(!h){n[u]=[f.map(([p])=>[p,Object.create(null)]),O0];continue}let g=h[1];s[h[0]]=f.map(([p,I])=>{let y=Object.create(null);for(I-=1;I>=0;I--){let[w,C]=g[I];y[w]=C}return[p,y]})}});let[o,a,c]=i.buildRegExp();for(let d=0,u=s.length;d{Va();gx();Ix()});var nk=j(()=>{Ix();ik()});var wx,sk=j(()=>{Va();wx=class{name="SmartRouter";#t=[];#e=[];constructor(r){this.#t=r.routers}add(r,e,t){if(!this.#e)throw new Error(N0);this.#e.push([r,e,t])}match(r,e){if(!this.#e)throw new Error("Fatal error");let t=this.#t,i=this.#e,n=t.length,s=0,o;for(;s{sk()});var Eu,ZL,ak,lk=j(()=>{Va();$a();Eu=Object.create(null),ZL=r=>{for(let e in r)return!0;return!1},ak=class ck{#t;#e;#r;#s=0;#i=Eu;constructor(e,t,i){if(this.#e=i||Object.create(null),this.#t=[],e&&t){let n=Object.create(null);n[e]={handler:t,possibleKeys:[],score:0},this.#t=[n]}this.#r=[]}insert(e,t,i){this.#s=++this.#s;let n=this,s=Pv(t),o=[];for(let a=0,c=s.length;al.indexOf(a)===c),score:this.#s}}),n}#n(e,t,i,n,s){for(let o=0,a=t.#t.length;o1&&i.sort((d,u)=>d.score-u.score),[i.map(({handler:d,params:u})=>[d,u])]}}});var xx,dk=j(()=>{$a();lk();xx=class{name="TrieRouter";#t;constructor(){this.#t=new ak}add(r,e,t){let i=U0(e);if(i){for(let n=0,s=i.length;n{dk()});var Xe,Cx=j(()=>{Wv();nk();ok();uk();Xe=class extends Vv{constructor(r={}){super(r),this.router=r.router??new wx({routers:[new H0,new xx]})}}});var wr=j(()=>{Cx();R0()});function Wa(r){return Array.from(new Uint8Array(r)).map(e=>e.toString(16).padStart(2,"0")).join("")}function Vi(r){return typeof r=="string"?new TextEncoder().encode(r):r}function Ex(r){let e=new Uint8Array(r.length/2);for(let t=0;t>>0,!0),o.setUint32(s.length-4,Math.floor(i/4294967296),!0);let a=new Int32Array(64);for(let g=0;g<64;g++)a[g]=Math.abs(Math.sin(g+1))*4294967296|0;let c=[7,12,17,22,7,12,17,22,7,12,17,22,7,12,17,22,5,9,14,20,5,9,14,20,5,9,14,20,5,9,14,20,4,11,16,23,4,11,16,23,4,11,16,23,4,11,16,23,6,10,15,21,6,10,15,21,6,10,15,21,6,10,15,21],l=1732584193,d=4023233417,u=2562383102,f=271733878;for(let g=0;gp.getInt32(_*4,!0)),[y,w,C,b]=[l,d,u,f];for(let x=0;x<64;x++){let _,R;x<16?(_=w&C|~w&b,R=x):x<32?(_=b&w|~b&C,R=(5*x+1)%16):x<48?(_=w^C^b,R=(3*x+5)%16):(_=C^(w|~b),R=7*x%16);let U=b;b=C,C=w;let T=y+_+a[x]+I[R]|0;w=w+(T<>>32-c[x])|0,y=U}l=l+y|0,d=d+w|0,u=u+C|0,f=f+b|0}let h=new DataView(new ArrayBuffer(16));return h.setInt32(0,l,!0),h.setInt32(4,d,!0),h.setInt32(8,u,!0),h.setInt32(12,f,!0),Wa(h.buffer)}function $t(r){return eH(r)}async function _o(r){let e=await crypto.subtle.digest("SHA-1",Vi(r));return Wa(e)}async function hk(r){let e=await crypto.subtle.digest("SHA-256",Vi(r));return Wa(e)}async function Bx(r,e){let t=await crypto.subtle.importKey("raw",Vi(e),{name:"HMAC",hash:"SHA-256"},!1,["sign"]),i=await crypto.subtle.sign("HMAC",t,Vi(r));return Wa(i)}async function Bu(r,e){let t=await crypto.subtle.importKey("raw",Vi(e),{name:"HMAC",hash:"SHA-1"},!1,["sign"]),i=await crypto.subtle.sign("HMAC",t,Vi(r)),n=new Uint8Array(i),s="";for(let o of n)s+=String.fromCharCode(o);return btoa(s)}async function gk(r,e="salt",t=bx){let i=Vi(r),n=Vi(e),s=await crypto.subtle.importKey("raw",i,"PBKDF2",!1,["deriveKey"]);return crypto.subtle.deriveKey({name:"PBKDF2",salt:n,iterations:t,hash:"SHA-256"},s,{name:"AES-GCM",length:256},!1,["encrypt","decrypt"])}async function pk(r,e){let t=crypto.getRandomValues(new Uint8Array(16)),i=crypto.getRandomValues(new Uint8Array(12)),n=await gk(e,t,bx),s=await crypto.subtle.encrypt({name:"AES-GCM",iv:i},n,Vi(r));return`${Wa(t.buffer)}:${Wa(i.buffer)}:${Wa(s)}`}async function mk(r,e){let t=r.split(":"),i="salt",n="",s="",o=1;if(t.length===3)i=Ex(t[0]),n=t[1],s=t[2],o=bx;else if(t.length===2)n=t[0],s=t[1],o=1,Ak||(Ak=!0,console.warn("[Crypto] Decrypting legacy weak-KDF format. It will be re-encrypted with the strong PBKDF2 format on the next config save."));else throw new Error("Invalid encrypted data format");let a=Ex(n),c=Ex(s),l=await gk(e,i,o),d=await crypto.subtle.decrypt({name:"AES-GCM",iv:a},l,c);return new TextDecoder().decode(d)}async function vx(r,e,t){let i=Vi(e),n=t?Vi(t):i,s=await crypto.subtle.importKey("raw",i,{name:"AES-CBC"},!1,["encrypt"]),o=Vi(r),c=typeof process<"u"&&process?.release?.name==="node"?o:tH(o),l=await crypto.subtle.encrypt({name:"AES-CBC",iv:n},s,c),d=new Uint8Array(l),u="";for(let f of d)u+=String.fromCharCode(f);return btoa(u)}function tH(r,e=16){let t=e-r.length%e,i=new Uint8Array(r.length+t);return i.set(r),i.fill(t,r.length),i}var bx,Ak,si=j(()=>{"use strict";bx=1e5,Ak=!1});function wl(r,e){if(typeof r!="string")return null;let t=r.trim();if(!t)return null;let i;try{i=new URL(t)}catch{return null}if(i.protocol!=="http:"&&i.protocol!=="https:"||!i.hostname)return null;let n=e?.EO_KV_URLS;return!(typeof n=="string"&&n.trim()===t)&&!(i.hostname==="localhost"||i.hostname==="127.0.0.1"||i.hostname==="[::1]")&&i.protocol!=="https:"?(console.warn(`[DB] Rejecting non-HTTPS proxy origin derived from request: ${i.protocol}//${i.hostname} (would leak X-Internal-Call in clear text)`),null):`${i.protocol}//${i.host}`.replace(/\/$/,"")}var K0=j(()=>{"use strict"});var Tx=oe((Xce,Rk)=>{"use strict";var Px=Object.defineProperty,rH=Object.getOwnPropertyDescriptor,iH=Object.getOwnPropertyNames,nH=Object.prototype.hasOwnProperty,sH=(r,e)=>{for(var t in e)Px(r,t,{get:e[t],enumerable:!0})},oH=(r,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of iH(e))!nH.call(r,n)&&n!==t&&Px(r,n,{get:()=>e[n],enumerable:!(i=rH(e,n))||i.enumerable});return r},aH=r=>oH(Px({},"__esModule",{value:!0}),r),vk={};sH(vk,{InvalidKeyError:()=>G0,InvalidStoreNameError:()=>Qu,MissingProjectIdError:()=>kk,PagesBlobError:()=>Hn,PreconditionFailedError:()=>Qx,QuotaExceededError:()=>cH,RateLimitedError:()=>lH,Store:()=>Sk,getStore:()=>SH,listStores:()=>DH});Rk.exports=aH(vk);var Hn=class extends Error{code;constructor(r,e){super(`PagesBlob: ${e}`),this.name="PagesBlobError",this.code=r}},G0=class extends Hn{constructor(r){super("INVALID_KEY",r)}},Qu=class extends Hn{constructor(r){super("INVALID_STORE_NAME",r)}},kx=class extends Hn{constructor(r){super("MISSING_ENVIRONMENT",`Environment not configured for Pages Blob. Missing: ${r.join(", ")}. Supply these properties when creating a store, or ensure the function is running in a Pages environment.`)}},cH=class extends Hn{constructor(){super("QUOTA_EXCEEDED","storage quota exceeded")}},lH=class extends Hn{constructor(){super("RATE_LIMITED","request rate limited, please retry later")}},kk=class extends Hn{constructor(){super("MISSING_PROJECT_ID","projectId is required when using API token mode. Please supply { name, projectId, token } to getStore() / listStores().")}},Fo=class extends Hn{constructor(r){super("CREDENTIAL_ERROR",r)}},Kr=class extends Hn{constructor(r,e){super("COS_ERROR",`COS returned ${r}: ${e}`)}},Qx=class extends Hn{constructor(){super("PRECONDITION_FAILED","conditional write failed (key already exists)")}};function Xa(r){if(r==="")throw new G0("Blob key must not be empty.");if(r.startsWith("/")||r.startsWith("%2F"))throw new G0("Blob key must not start with forward slash (/).");if(new TextEncoder().encode(r).length>600)throw new G0("Blob key must be a sequence of Unicode characters whose UTF-8 encoding is at most 600 bytes long.")}function dH(r){if(r==="")throw new Qu("Store name must not be empty.");if(r.includes("/")||r.includes(":"))throw new Qu("Store name must not contain forward slashes (/) or colons (:).");if(!/^[a-zA-Z0-9_-]+$/.test(r))throw new Qu("Store name must only contain letters, digits, underscores, and hyphens.");if(new TextEncoder().encode(r).length>64)throw new Qu("Store name must be a sequence of Unicode characters whose UTF-8 encoding is at most 64 bytes long.")}var Sk=class{cosClient;storeName;defaultConsistency;constructor(r,e,t="eventual"){this.cosClient=r,this.storeName=e,this.defaultConsistency=t}resolveConsistency(r){return r??this.defaultConsistency}async set(r,e,t){Xa(r);let i=await this.cosClient.putObject(this.storeName,r,e,{onlyIfNew:t?.onlyIfNew,cacheControl:t?.cacheControl});if(t?.onlyIfNew&&i.statusCode===412)throw new Qx}async setJSON(r,e,t){Xa(r);let i=JSON.stringify(e),n=await this.cosClient.putObject(this.storeName,r,i,{onlyIfNew:t?.onlyIfNew,contentType:"application/json",cacheControl:t?.cacheControl});if(t?.onlyIfNew&&n.statusCode===412)throw new Qx}async createUploadUrl(r,e){Xa(r);let{url:t,expiresAt:i}=await this.cosClient.createPresignedPutUrl(this.storeName,r,{expireSeconds:e?.expireSeconds,contentType:e?.contentType});return{url:t,key:r,expiresAt:i}}async get(r,e){Xa(r);let t=this.resolveConsistency(e?.consistency),i=await this.cosClient.getObject(this.storeName,r,t);if(i===null)return null;let{body:n}=i,s=e?.type??"text",o=new TextDecoder("utf-8");switch(s){case"text":return o.decode(n);case"json":return JSON.parse(o.decode(n));case"arrayBuffer":return n.buffer.slice(n.byteOffset,n.byteOffset+n.byteLength);case"blob":return new Blob([n]);case"stream":return new ReadableStream({start(a){a.enqueue(n),a.close()}});default:return o.decode(n)}}async getMetadata(r,e){Xa(r);let t=this.resolveConsistency(e?.consistency);return this.cosClient.headObject(this.storeName,r,t)}async getWithHeaders(r,e){Xa(r);let t=this.resolveConsistency(e?.consistency),i=await this.cosClient.getObject(this.storeName,r,t);return i?{body:new TextDecoder("utf-8").decode(i.body),headers:i.headers||{}}:null}async delete(r){Xa(r),await this.cosClient.deleteObject(this.storeName,r)}async list(r){let e=r?.paginate!==!1,t=r?.limit,i=[],n=[],s=this.resolveConsistency(r?.consistency),o=r?.cursor||"",a=!0,c;for(;a;){let l=t!==void 0?t-i.length:1e3,d=Math.min(l,1e3);if(d<=0)break;let u=await this.cosClient.listObjects(this.storeName,{prefix:r?.prefix,delimiter:r?.directories?"/":void 0,marker:o||void 0,maxKeys:d,consistency:s});for(let f of u.contents)i.push({key:f.key,etag:f.etag});n.push(...u.commonPrefixes),t!==void 0&&i.length>=t?(i.length=t,(u.isTruncated||u.contents.length===d)&&(c=u.nextMarker),a=!1):u.isTruncated?!e&&t===void 0?(c=u.nextMarker,a=!1):o=u.nextMarker:a=!1}return{blobs:i,directories:n,...c?{cursor:c}:{}}}},uH=new TextEncoder;function _x(r){let e=uH.encode(r),t=new ArrayBuffer(e.byteLength),i=new Uint8Array(t);return i.set(e),i}function Dk(r){let e=r instanceof Uint8Array?r:new Uint8Array(r),t="";for(let i=0;i"%"+e.charCodeAt(0).toString(16).toUpperCase())}function J0(r){try{return decodeURIComponent(r)}catch{return r}}function Qk(r){return r.split("/").map(e=>J0(e)).join("/")}function _k(r){return r.split("/").map(e=>z0(J0(e))).join("/")}var AH=new Set(["cache-control","content-disposition","content-encoding","content-length","content-md5","content-type","expect","expires","if-match","if-modified-since","if-none-match","if-unmodified-since","origin","range","transfer-encoding"]);function hH(r){return r==="host"||r==="x-cos-security-token"?!1:!!(AH.has(r)||r.startsWith("x-cos-"))}function Ik(r){if(!r)return[];let e=[];for(let[t,i]of Object.entries(r))i!=null&&e.push([t.toLowerCase(),String(i)]);return e.sort(([t],[i])=>ti?1:0),e}function wk(r){return r.map(([e,t])=>`${z0(e)}=${z0(t)}`).join("&")}function xk(r){return r.map(([e])=>z0(e)).join(";")}async function Fk(r){let e=r.method.toLowerCase(),t=r.pathname.startsWith("/")?r.pathname:`/${r.pathname}`,i=Math.floor(Date.now()/1e3),n=i+(r.expireSeconds??3600),s=`${i};${n}`,o=Ik(r.headers).filter(([w])=>hH(w)),a=xk(o),c=wk(o),l=Ik(r.query),d=xk(l),u=wk(l),f=`${e} ${t} ${u} ${c} `,h=`sha1 ${s} -${await vL(f)} -`,g=await Gv(r.secretKey,s),p=await Gv(g,h),I=["q-sign-algorithm=sha1",`q-ak=${r.secretId}`,`q-sign-time=${s}`,`q-key-time=${s}`,`q-header-list=${a}`,`q-url-param-list=${d}`,`q-signature=${p}`].join("&"),y={};for(let[w,C]of o)y[w]=C;return{authorization:I,signedHeaders:y}}async function DL(r){let e=new URL(r.domain),t=U0(r.key),i=`/${rk(t)}`,n=`/${ik(t)}`;e.pathname=n;let{authorization:s}=await nk({method:r.method,pathname:i,query:r.query,headers:r.headers,secretId:r.credential.secretId,secretKey:r.credential.secretKey,expireSeconds:r.expireSeconds});if(r.query)for(let[o,a]of Object.entries(r.query))a!=null&&e.searchParams.set(o,String(a));for(let o of s.split("&")){let a=o.indexOf("=");if(a===-1)continue;let c=o.slice(0,a),l=o.slice(a+1);e.searchParams.set(c,l)}return r.credential.sessionToken&&e.searchParams.set("x-cos-security-token",r.credential.sessionToken),e.toString()}async function gu(r){let e=new URL(r.domain),t=r.key?U0(r.key):"",i=t?`/${rk(t)}`:"/",n=t?`/${ik(t)}`:"/";if(e.pathname=n,r.query)for(let[u,f]of Object.entries(r.query))f!=null&&e.searchParams.set(u,String(f));let{authorization:s}=await nk({method:r.method,pathname:i,query:r.query,headers:r.headers,secretId:r.credential.secretId,secretKey:r.credential.secretKey}),o=new Headers;if(r.headers)for(let[u,f]of Object.entries(r.headers))f!=null&&o.set(u,String(f));o.set("Authorization",s),r.credential.sessionToken&&o.set("x-cos-security-token",r.credential.sessionToken);let a=e.toString(),c={method:r.method,headers:o,body:r.body??void 0,signal:r.signal},l=2,d;for(let u=0;u<=l;u++)try{return await fetch(a,c)}catch(f){if(d=f,f instanceof DOMException&&f.name==="AbortError")throw f;usetTimeout(h,1e3*(u+1)))}throw d}var QL="blob.edgeone.site",_L="blob-nocache.edgeone.site",sk=class In{credentialManager;bucket="";region="";keyPrefix="";cachedDomain="";uncachedDomain="";initialized=!1;static buildErrorDetail(e,t,i,n,s){let o=i?`${t}/${i}`:t,a=s?` [request-id: ${s}]`:"";return`${e} ${o} - ${FL(n)}${a}`}constructor(e){this.credentialManager=e}computeSubdomain(e){let t=[];if(e.appId&&t.push(e.appId),e.zoneId&&t.push(e.zoneId),e.projectId&&t.push(e.projectId),t.length>=2)return t.join("-");if(e.resourcePrefix){let i=e.resourcePrefix.replace(/\/?\*$/,"").split("/").filter(Boolean);if(i.length>=2)return i.slice(0,Math.min(i.length,3)).join("-")}return""}async ensureInitialized(){if(this.initialized)return;let e=await this.credentialManager.getCredential();!this.keyPrefix&&e.resourcePrefix&&(this.keyPrefix=e.resourcePrefix.replace(/\/?\*$/,""));let t=e.edgeRegion==="CN",i=e.cosMainland,n=e.cosOverseas,s=t?i||n:n||i;!this.bucket&&s&&(this.bucket=s.bucket,this.region=s.region);let o=this.computeSubdomain(e);if(!o)throw new Hr(0,"unable to derive tenant subdomain from credential; missing appId/zoneId/projectId or resourcePrefix");this.cachedDomain=`https://${o}.${QL}`,this.uncachedDomain=`https://${o}.${_L}`,this.initialized=!0}async resolveDomain(e){return await this.ensureInitialized(),e==="strong"?this.uncachedDomain:this.cachedDomain}async resolveCredential(){let e=await this.credentialManager.getCredential();return{secretId:e.tmpSecretId,secretKey:e.tmpSecretKey,sessionToken:e.sessionToken}}buildCosKey(e,t){return`${this.keyPrefix}/${e}/${t}`}async getDomains(){return await this.ensureInitialized(),{cached:this.cachedDomain,uncached:this.uncachedDomain}}async putObject(e,t,i,n){let s=await this.resolveDomain("strong"),o=await this.resolveCredential(),a=this.buildCosKey(e,t),c=n?.cacheControl===null?void 0:n?.cacheControl??"max-age=0, stale-while-revalidate=60",l={};n?.onlyIfNew&&(l["If-None-Match"]="*"),c&&(l["Cache-Control"]=c),n?.contentType&&(l["Content-Type"]=n.contentType);try{let d=await gu({domain:s,method:"PUT",key:a,headers:l,body:i,credential:o});if(d.status===412)return await d.arrayBuffer().catch(()=>{}),{etag:"",statusCode:412};if(!d.ok){let f=await pu(d);throw new Hr(d.status,In.buildErrorDetail("PUT",s,a,f||`status ${d.status}`,mu(d)))}let u=d.headers.get("etag")||"";return await d.arrayBuffer().catch(()=>{}),{etag:u,statusCode:d.status}}catch(d){throw d instanceof Hr?d:new Hr(0,In.buildErrorDetail("PUT",s,a,yu(d)))}}async createPresignedPutUrl(e,t,i){let n=await this.resolveDomain("strong"),s=await this.resolveCredential(),o=this.buildCosKey(e,t),a={};i?.contentType&&(a["Content-Type"]=i.contentType);let c=i?.expireSeconds??3600,l=await DL({domain:n,method:"PUT",key:o,headers:a,credential:s,expireSeconds:c}),d=Math.floor(Date.now()/1e3)+c;return{url:l,expiresAt:d}}async getObject(e,t,i){let n=await this.resolveDomain(i),s=await this.resolveCredential(),o=this.buildCosKey(e,t);try{let a=await gu({domain:n,method:"GET",key:o,credential:s});if(a.status===404)return await a.arrayBuffer().catch(()=>{}),null;if(!a.ok){let d=await pu(a);throw new Hr(a.status,In.buildErrorDetail("GET",n,o,d||`status ${a.status}`,mu(a)))}let c=new Uint8Array(await a.arrayBuffer()),l=$v(a.headers);return{body:c,contentType:l["content-type"],headers:l}}catch(a){throw a instanceof Hr?a:new Hr(0,In.buildErrorDetail("GET",n,o,yu(a)))}}async headObject(e,t,i){let n=await this.resolveDomain(i),s=await this.resolveCredential(),o=this.buildCosKey(e,t);try{let a=await gu({domain:n,method:"HEAD",key:o,credential:s});if(a.status===404)return null;if(!a.ok){let l=await pu(a);throw new Hr(a.status,In.buildErrorDetail("HEAD",n,o,l||`status ${a.status}`,mu(a)))}let c=$v(a.headers);return{cacheControl:c["cache-control"],contentType:c["content-type"],etag:c.etag,headers:c}}catch(a){throw a instanceof Hr?a:new Hr(0,In.buildErrorDetail("HEAD",n,o,yu(a)))}}async deleteObject(e,t){let i=await this.resolveDomain("strong"),n=await this.resolveCredential(),s=this.buildCosKey(e,t);try{let o=await gu({domain:i,method:"DELETE",key:s,credential:n});if(o.status===204||o.status===404||o.ok){await o.arrayBuffer().catch(()=>{});return}let a=await pu(o);throw new Hr(o.status,In.buildErrorDetail("DELETE",i,s,a||`status ${o.status}`,mu(o)))}catch(o){throw o instanceof Hr?o:new Hr(0,In.buildErrorDetail("DELETE",i,s,yu(o)))}}async listObjects(e,t){await this.ensureInitialized();let i=`${this.keyPrefix}/${e}/`,n=t?.prefix?i+t.prefix:i,s=await this.getBucketRaw({prefix:n,delimiter:t?.delimiter,marker:t?.marker,maxKeys:t?.maxKeys,consistency:t?.consistency}),o=s.contents.map(c=>{let l=c.key,d=l.startsWith(i)?l.slice(i.length):l;return d?{key:d,etag:c.etag}:null}).filter(c=>c!==null),a=s.commonPrefixes.map(c=>c.startsWith(i)?c.slice(i.length):c).filter(c=>!!c);return{contents:o,commonPrefixes:a,isTruncated:s.isTruncated,nextMarker:s.nextMarker}}async listStores(e){let t=[],i="",n=!0;for(;n;){await this.ensureInitialized();let s=`${this.keyPrefix}/`,o=await this.getBucketRaw({prefix:s,delimiter:"/",maxKeys:1e3,marker:i||void 0,consistency:e});for(let a of o.commonPrefixes){let c=a.startsWith(s)?a.slice(s.length,-1):a.slice(0,-1);c&&t.push(c)}if(n=o.isTruncated,i=o.nextMarker,!n||!i)break}return t}async getBucketRaw(e){let t=await this.resolveDomain(e.consistency),i=await this.resolveCredential(),n={prefix:e.prefix};e.delimiter&&(n.delimiter=e.delimiter),e.marker&&(n.marker=e.marker),e.maxKeys&&(n["max-keys"]=e.maxKeys);try{let s=await gu({domain:t,method:"GET",query:n,credential:i});if(!s.ok){let a=await pu(s);throw new Hr(s.status,In.buildErrorDetail("LIST",t,e.prefix,a||`status ${s.status}`,mu(s)))}let o=await s.text();return PL(o)}catch(s){throw s instanceof Hr?s:new Hr(0,In.buildErrorDetail("LIST",t,e.prefix,yu(s)))}}};function FL(r){return r.replace(/[a-zA-Z0-9\-]+\.cos\.[a-zA-Z0-9\-.]+\.myqcloud\.com/gi,"[cos-origin]").replace(/[a-zA-Z0-9\-]+\.cos\.[a-zA-Z0-9\-.]+\.tencentcos\.cn/gi,"[cos-origin]")}async function pu(r){try{return await r.text()}catch{return""}}function mu(r){return r.headers.get("x-cos-request-id")||r.headers.get("x-eo-log-id")||void 0}function yu(r){let e=r,t=e.message||String(r),i=e.cause;if(i){let n=i.message||i.code||"";return n?`${t} (${n})`:t}return t}function $v(r){let e={};return r.forEach((t,i)=>{e[i.toLowerCase()]=t}),e}function PL(r){let e=[],t=/([\s\S]*?)<\/Contents>/g,i;for(;(i=t.exec(r))!==null;){let c=i[1],l=Iu(c,"Key"),d=Iu(c,"ETag");l!==null&&e.push({key:ux(l),etag:d||""})}let n=[],s=/([\s\S]*?)<\/CommonPrefixes>/g;for(;(i=s.exec(r))!==null;){let c=i[1],l=Iu(c,"Prefix");l!==null&&n.push(ux(l))}let o=Iu(r,"IsTruncated")==="true",a=Iu(r,"NextMarker")||"";return{contents:e,commonPrefixes:n,isTruncated:o,nextMarker:ux(a)}}function Iu(r,e){let t=new RegExp(`<${e}>([\\s\\S]*?)<\\/${e}>`).exec(r);return t?t[1]:null}function ux(r){return r.replace(/</g,"<").replace(/>/g,">").replace(/"/g,'"').replace(/'/g,"'").replace(/&/g,"&")}var TL="X-RateLimit-Reset";async function gx(r,e,t=2){e.signal?.throwIfAborted?.();try{let i=await fetch(r,e);if(t>0&&(i.status===429||i.status>=500)){let n=Vv(i.headers.get(TL));return await Yv(n,e.signal),gx(r,e,t-1)}return i}catch(i){if(t===0||i instanceof DOMException&&i.name==="AbortError")throw i;let n=Vv();return await Yv(n,e.signal),gx(r,e,t-1)}}function Vv(r){return r?Math.max(Number(r)*1e3-Date.now(),500):1500}function Yv(r,e){return new Promise((t,i)=>{if(e?.aborted)return i(e.reason);let n=setTimeout(()=>{e?.removeEventListener("abort",s),t()},r),s=()=>{clearTimeout(n),i(e.reason)};e?.addEventListener("abort",s,{once:!0})})}var UL="prod";function RL(){let r=typeof process<"u"?process.env.PAGES_BLOB_STS_ENV:void 0;return r==="test"||r==="prod"?r:UL}var NL=300,qL="https://blob-sts.edgeone.site/",ok=class{authToken;projectId;cached=null;constructor(r,e){this.authToken=r,this.projectId=e}async getCredential(){if(this.cached&&!this.isExpired(this.cached))return this.cached;let r=await this.fetchCredential();return this.cached=r,r}clearCache(){this.cached=null}isExpired(r){let e=Math.floor(Date.now()/1e3);return r.expiredTime-ee.abort(),1e4),i;try{i=await gx(qL,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.authToken}`,"X-Env":RL()},body:JSON.stringify(this.projectId?{ProjectId:this.projectId}:{}),signal:e.signal})}catch(o){if(r<3){await fx(500*r);continue}throw new _o(`failed to obtain STS credential: ${o.message||"timeout"}`)}finally{clearTimeout(t)}if(i.status===413)throw new _o("storage quota exceeded");if(i.status===429)throw new _o("rate limited, please retry later");if(!i.ok){if(i.status>=500&&r<3){await fx(500*r);continue}let o=await i.text().catch(()=>"unknown error");throw new _o(`failed to obtain STS credential: ${i.status} ${o}`)}let n=await i.json(),s=n.data&&typeof n.data=="object"?n.data:n;if(s.tmpSecretId&&s.tmpSecretKey&&s.sessionToken&&s.expiredTime){let o=s.cosMainland,a=s.cosOverseas,c=i.headers.get("X-Edge-Region")||void 0;return{tmpSecretId:s.tmpSecretId,tmpSecretKey:s.tmpSecretKey,sessionToken:s.sessionToken,expiredTime:s.expiredTime,appId:s.appId||void 0,zoneId:s.zoneId||void 0,projectId:s.projectId||void 0,resourcePrefix:s.resourcePrefix||void 0,cosMainland:o||void 0,cosOverseas:a||void 0,edgeRegion:c}}if(s.code!==void 0&&s.code!==0){let o=s.msg||s.message||"unknown error";throw new _o(`credential exchange failed (code=${s.code}): ${o}`)}if(n.code!==void 0&&n.code!==0){let o=n.msg||n.message||"unknown error";throw new _o(`credential exchange failed (code=${n.code}): ${o}`)}if(r<3){await fx(500*r);continue}throw new _o("invalid STS credential response")}throw new _o("invalid STS credential response")}};function fx(r){return new Promise(e=>setTimeout(e,r))}var OL="{{PAGES_BLOB_DEPLOY_CREDENTIAL}}";function ML(){let r={},e=LL();if(e)r.deployCredential=e;else{let i=Wv("PAGES_BLOB_DEPLOY_CREDENTIAL");i&&(r.deployCredential=i)}let t=Wv("PAGES_PROJECT_ID");return t&&(r.projectId=t),r}function LL(){let r=OL;if(!(r.startsWith("{{")&&r.endsWith("}}")))return r||void 0}function Wv(r){if(typeof process<"u"&&process.env)return process.env[r]}function HL(r){let e=typeof r=="string"?r:r.name;BL(e);let t=ak(typeof r=="string"?void 0:r),i=new ok(t.authToken,t.projectId),n=new sk(i);return new ek(n,e,t.consistency??"eventual")}async function KL(r){let e=ak(r?{name:"__list__",projectId:r.projectId,token:r.token,consistency:r.consistency}:void 0),t=new ok(e.authToken,e.projectId);return{stores:(await new sk(t).listStores(e.consistency)).map(i=>({name:i}))}}function ak(r){let e=ML(),t=r?.token||e.deployCredential,i=r?.projectId||e.projectId;if(r?.token||e.projectId){if(!i)throw new Zv;if(!t)throw new dx(["token"]);return{authToken:t,projectId:i,consistency:r?.consistency}}if(r?.projectId&&!t)throw new dx(["token"]);if(!e.deployCredential)throw new dx(["deployCredential"]);return{authToken:e.deployCredential,consistency:r?.consistency}}});var Ak={};qn(Ak,{checkProxyConfig:()=>Xa,kvDriver:()=>N0});function lk(r){if(!r||typeof r!="object")return!1;try{return typeof r.get!="function"?!1:typeof r.put=="function"||typeof r.set=="function"}catch{return!1}}function Wa(r){let e=globalThis;return lk(r?.KV)?r.KV:lk(e?.KV)?e.KV:null}function uk(r){try{let e=r?.JWT_SECRET;return typeof e=="string"&&e.length>=16?e:null}catch{return null}}function Xa(r){try{if(Wa(r)!==null||uk(r))return null}catch{}return`KV proxy mode requires the JWT_SECRET environment variable with at least 16 characters. +${await fH(f)} +`,g=await yk(r.secretKey,s),p=await yk(g,h),I=["q-sign-algorithm=sha1",`q-ak=${r.secretId}`,`q-sign-time=${s}`,`q-key-time=${s}`,`q-header-list=${a}`,`q-url-param-list=${d}`,`q-signature=${p}`].join("&"),y={};for(let[w,C]of o)y[w]=C;return{authorization:I,signedHeaders:y}}async function gH(r){let e=new URL(r.domain),t=J0(r.key),i=`/${Qk(t)}`,n=`/${_k(t)}`;e.pathname=n;let{authorization:s}=await Fk({method:r.method,pathname:i,query:r.query,headers:r.headers,secretId:r.credential.secretId,secretKey:r.credential.secretKey,expireSeconds:r.expireSeconds});if(r.query)for(let[o,a]of Object.entries(r.query))a!=null&&e.searchParams.set(o,String(a));for(let o of s.split("&")){let a=o.indexOf("=");if(a===-1)continue;let c=o.slice(0,a),l=o.slice(a+1);e.searchParams.set(c,l)}return r.credential.sessionToken&&e.searchParams.set("x-cos-security-token",r.credential.sessionToken),e.toString()}async function bu(r){let e=new URL(r.domain),t=r.key?J0(r.key):"",i=t?`/${Qk(t)}`:"/",n=t?`/${_k(t)}`:"/";if(e.pathname=n,r.query)for(let[u,f]of Object.entries(r.query))f!=null&&e.searchParams.set(u,String(f));let{authorization:s}=await Fk({method:r.method,pathname:i,query:r.query,headers:r.headers,secretId:r.credential.secretId,secretKey:r.credential.secretKey}),o=new Headers;if(r.headers)for(let[u,f]of Object.entries(r.headers))f!=null&&o.set(u,String(f));o.set("Authorization",s),r.credential.sessionToken&&o.set("x-cos-security-token",r.credential.sessionToken);let a=e.toString(),c={method:r.method,headers:o,body:r.body??void 0,signal:r.signal},l=2,d;for(let u=0;u<=l;u++)try{return await fetch(a,c)}catch(f){if(d=f,f instanceof DOMException&&f.name==="AbortError")throw f;usetTimeout(h,1e3*(u+1)))}throw d}var pH="blob.edgeone.site",mH="blob-nocache.edgeone.site",Pk=class Cn{credentialManager;bucket="";region="";keyPrefix="";cachedDomain="";uncachedDomain="";initialized=!1;static buildErrorDetail(e,t,i,n,s){let o=i?`${t}/${i}`:t,a=s?` [request-id: ${s}]`:"";return`${e} ${o} - ${yH(n)}${a}`}constructor(e){this.credentialManager=e}computeSubdomain(e){let t=[];if(e.appId&&t.push(e.appId),e.zoneId&&t.push(e.zoneId),e.projectId&&t.push(e.projectId),t.length>=2)return t.join("-");if(e.resourcePrefix){let i=e.resourcePrefix.replace(/\/?\*$/,"").split("/").filter(Boolean);if(i.length>=2)return i.slice(0,Math.min(i.length,3)).join("-")}return""}async ensureInitialized(){if(this.initialized)return;let e=await this.credentialManager.getCredential();!this.keyPrefix&&e.resourcePrefix&&(this.keyPrefix=e.resourcePrefix.replace(/\/?\*$/,""));let t=e.edgeRegion==="CN",i=e.cosMainland,n=e.cosOverseas,s=t?i||n:n||i;!this.bucket&&s&&(this.bucket=s.bucket,this.region=s.region);let o=this.computeSubdomain(e);if(!o)throw new Kr(0,"unable to derive tenant subdomain from credential; missing appId/zoneId/projectId or resourcePrefix");this.cachedDomain=`https://${o}.${pH}`,this.uncachedDomain=`https://${o}.${mH}`,this.initialized=!0}async resolveDomain(e){return await this.ensureInitialized(),e==="strong"?this.uncachedDomain:this.cachedDomain}async resolveCredential(){let e=await this.credentialManager.getCredential();return{secretId:e.tmpSecretId,secretKey:e.tmpSecretKey,sessionToken:e.sessionToken}}buildCosKey(e,t){return`${this.keyPrefix}/${e}/${t}`}async getDomains(){return await this.ensureInitialized(),{cached:this.cachedDomain,uncached:this.uncachedDomain}}async putObject(e,t,i,n){let s=await this.resolveDomain("strong"),o=await this.resolveCredential(),a=this.buildCosKey(e,t),c=n?.cacheControl===null?void 0:n?.cacheControl??"max-age=0, stale-while-revalidate=60",l={};n?.onlyIfNew&&(l["If-None-Match"]="*"),c&&(l["Cache-Control"]=c),n?.contentType&&(l["Content-Type"]=n.contentType);try{let d=await bu({domain:s,method:"PUT",key:a,headers:l,body:i,credential:o});if(d.status===412)return await d.arrayBuffer().catch(()=>{}),{etag:"",statusCode:412};if(!d.ok){let f=await vu(d);throw new Kr(d.status,Cn.buildErrorDetail("PUT",s,a,f||`status ${d.status}`,ku(d)))}let u=d.headers.get("etag")||"";return await d.arrayBuffer().catch(()=>{}),{etag:u,statusCode:d.status}}catch(d){throw d instanceof Kr?d:new Kr(0,Cn.buildErrorDetail("PUT",s,a,Su(d)))}}async createPresignedPutUrl(e,t,i){let n=await this.resolveDomain("strong"),s=await this.resolveCredential(),o=this.buildCosKey(e,t),a={};i?.contentType&&(a["Content-Type"]=i.contentType);let c=i?.expireSeconds??3600,l=await gH({domain:n,method:"PUT",key:o,headers:a,credential:s,expireSeconds:c}),d=Math.floor(Date.now()/1e3)+c;return{url:l,expiresAt:d}}async getObject(e,t,i){let n=await this.resolveDomain(i),s=await this.resolveCredential(),o=this.buildCosKey(e,t);try{let a=await bu({domain:n,method:"GET",key:o,credential:s});if(a.status===404)return await a.arrayBuffer().catch(()=>{}),null;if(!a.ok){let d=await vu(a);throw new Kr(a.status,Cn.buildErrorDetail("GET",n,o,d||`status ${a.status}`,ku(a)))}let c=new Uint8Array(await a.arrayBuffer()),l=Ck(a.headers);return{body:c,contentType:l["content-type"],headers:l}}catch(a){throw a instanceof Kr?a:new Kr(0,Cn.buildErrorDetail("GET",n,o,Su(a)))}}async headObject(e,t,i){let n=await this.resolveDomain(i),s=await this.resolveCredential(),o=this.buildCosKey(e,t);try{let a=await bu({domain:n,method:"HEAD",key:o,credential:s});if(a.status===404)return null;if(!a.ok){let l=await vu(a);throw new Kr(a.status,Cn.buildErrorDetail("HEAD",n,o,l||`status ${a.status}`,ku(a)))}let c=Ck(a.headers);return{cacheControl:c["cache-control"],contentType:c["content-type"],etag:c.etag,headers:c}}catch(a){throw a instanceof Kr?a:new Kr(0,Cn.buildErrorDetail("HEAD",n,o,Su(a)))}}async deleteObject(e,t){let i=await this.resolveDomain("strong"),n=await this.resolveCredential(),s=this.buildCosKey(e,t);try{let o=await bu({domain:i,method:"DELETE",key:s,credential:n});if(o.status===204||o.status===404||o.ok){await o.arrayBuffer().catch(()=>{});return}let a=await vu(o);throw new Kr(o.status,Cn.buildErrorDetail("DELETE",i,s,a||`status ${o.status}`,ku(o)))}catch(o){throw o instanceof Kr?o:new Kr(0,Cn.buildErrorDetail("DELETE",i,s,Su(o)))}}async listObjects(e,t){await this.ensureInitialized();let i=`${this.keyPrefix}/${e}/`,n=t?.prefix?i+t.prefix:i,s=await this.getBucketRaw({prefix:n,delimiter:t?.delimiter,marker:t?.marker,maxKeys:t?.maxKeys,consistency:t?.consistency}),o=s.contents.map(c=>{let l=c.key,d=l.startsWith(i)?l.slice(i.length):l;return d?{key:d,etag:c.etag}:null}).filter(c=>c!==null),a=s.commonPrefixes.map(c=>c.startsWith(i)?c.slice(i.length):c).filter(c=>!!c);return{contents:o,commonPrefixes:a,isTruncated:s.isTruncated,nextMarker:s.nextMarker}}async listStores(e){let t=[],i="",n=!0;for(;n;){await this.ensureInitialized();let s=`${this.keyPrefix}/`,o=await this.getBucketRaw({prefix:s,delimiter:"/",maxKeys:1e3,marker:i||void 0,consistency:e});for(let a of o.commonPrefixes){let c=a.startsWith(s)?a.slice(s.length,-1):a.slice(0,-1);c&&t.push(c)}if(n=o.isTruncated,i=o.nextMarker,!n||!i)break}return t}async getBucketRaw(e){let t=await this.resolveDomain(e.consistency),i=await this.resolveCredential(),n={prefix:e.prefix};e.delimiter&&(n.delimiter=e.delimiter),e.marker&&(n.marker=e.marker),e.maxKeys&&(n["max-keys"]=e.maxKeys);try{let s=await bu({domain:t,method:"GET",query:n,credential:i});if(!s.ok){let a=await vu(s);throw new Kr(s.status,Cn.buildErrorDetail("LIST",t,e.prefix,a||`status ${s.status}`,ku(s)))}let o=await s.text();return IH(o)}catch(s){throw s instanceof Kr?s:new Kr(0,Cn.buildErrorDetail("LIST",t,e.prefix,Su(s)))}}};function yH(r){return r.replace(/[a-zA-Z0-9\-]+\.cos\.[a-zA-Z0-9\-.]+\.myqcloud\.com/gi,"[cos-origin]").replace(/[a-zA-Z0-9\-]+\.cos\.[a-zA-Z0-9\-.]+\.tencentcos\.cn/gi,"[cos-origin]")}async function vu(r){try{return await r.text()}catch{return""}}function ku(r){return r.headers.get("x-cos-request-id")||r.headers.get("x-eo-log-id")||void 0}function Su(r){let e=r,t=e.message||String(r),i=e.cause;if(i){let n=i.message||i.code||"";return n?`${t} (${n})`:t}return t}function Ck(r){let e={};return r.forEach((t,i)=>{e[i.toLowerCase()]=t}),e}function IH(r){let e=[],t=/([\s\S]*?)<\/Contents>/g,i;for(;(i=t.exec(r))!==null;){let c=i[1],l=Du(c,"Key"),d=Du(c,"ETag");l!==null&&e.push({key:Sx(l),etag:d||""})}let n=[],s=/([\s\S]*?)<\/CommonPrefixes>/g;for(;(i=s.exec(r))!==null;){let c=i[1],l=Du(c,"Prefix");l!==null&&n.push(Sx(l))}let o=Du(r,"IsTruncated")==="true",a=Du(r,"NextMarker")||"";return{contents:e,commonPrefixes:n,isTruncated:o,nextMarker:Sx(a)}}function Du(r,e){let t=new RegExp(`<${e}>([\\s\\S]*?)<\\/${e}>`).exec(r);return t?t[1]:null}function Sx(r){return r.replace(/</g,"<").replace(/>/g,">").replace(/"/g,'"').replace(/'/g,"'").replace(/&/g,"&")}var wH="X-RateLimit-Reset";async function Fx(r,e,t=2){e.signal?.throwIfAborted?.();try{let i=await fetch(r,e);if(t>0&&(i.status===429||i.status>=500)){let n=Ek(i.headers.get(wH));return await Bk(n,e.signal),Fx(r,e,t-1)}return i}catch(i){if(t===0||i instanceof DOMException&&i.name==="AbortError")throw i;let n=Ek();return await Bk(n,e.signal),Fx(r,e,t-1)}}function Ek(r){return r?Math.max(Number(r)*1e3-Date.now(),500):1500}function Bk(r,e){return new Promise((t,i)=>{if(e?.aborted)return i(e.reason);let n=setTimeout(()=>{e?.removeEventListener("abort",s),t()},r),s=()=>{clearTimeout(n),i(e.reason)};e?.addEventListener("abort",s,{once:!0})})}var xH="prod";function CH(){let r=typeof process<"u"?process.env.PAGES_BLOB_STS_ENV:void 0;return r==="test"||r==="prod"?r:xH}var EH=300,BH="https://blob-sts.edgeone.site/",Tk=class{authToken;projectId;cached=null;constructor(r,e){this.authToken=r,this.projectId=e}async getCredential(){if(this.cached&&!this.isExpired(this.cached))return this.cached;let r=await this.fetchCredential();return this.cached=r,r}clearCache(){this.cached=null}isExpired(r){let e=Math.floor(Date.now()/1e3);return r.expiredTime-ee.abort(),1e4),i;try{i=await Fx(BH,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.authToken}`,"X-Env":CH()},body:JSON.stringify(this.projectId?{ProjectId:this.projectId}:{}),signal:e.signal})}catch(o){if(r<3){await Dx(500*r);continue}throw new Fo(`failed to obtain STS credential: ${o.message||"timeout"}`)}finally{clearTimeout(t)}if(i.status===413)throw new Fo("storage quota exceeded");if(i.status===429)throw new Fo("rate limited, please retry later");if(!i.ok){if(i.status>=500&&r<3){await Dx(500*r);continue}let o=await i.text().catch(()=>"unknown error");throw new Fo(`failed to obtain STS credential: ${i.status} ${o}`)}let n=await i.json(),s=n.data&&typeof n.data=="object"?n.data:n;if(s.tmpSecretId&&s.tmpSecretKey&&s.sessionToken&&s.expiredTime){let o=s.cosMainland,a=s.cosOverseas,c=i.headers.get("X-Edge-Region")||void 0;return{tmpSecretId:s.tmpSecretId,tmpSecretKey:s.tmpSecretKey,sessionToken:s.sessionToken,expiredTime:s.expiredTime,appId:s.appId||void 0,zoneId:s.zoneId||void 0,projectId:s.projectId||void 0,resourcePrefix:s.resourcePrefix||void 0,cosMainland:o||void 0,cosOverseas:a||void 0,edgeRegion:c}}if(s.code!==void 0&&s.code!==0){let o=s.msg||s.message||"unknown error";throw new Fo(`credential exchange failed (code=${s.code}): ${o}`)}if(n.code!==void 0&&n.code!==0){let o=n.msg||n.message||"unknown error";throw new Fo(`credential exchange failed (code=${n.code}): ${o}`)}if(r<3){await Dx(500*r);continue}throw new Fo("invalid STS credential response")}throw new Fo("invalid STS credential response")}};function Dx(r){return new Promise(e=>setTimeout(e,r))}var bH="{{PAGES_BLOB_DEPLOY_CREDENTIAL}}";function vH(){let r={},e=kH();if(e)r.deployCredential=e;else{let i=bk("PAGES_BLOB_DEPLOY_CREDENTIAL");i&&(r.deployCredential=i)}let t=bk("PAGES_PROJECT_ID");return t&&(r.projectId=t),r}function kH(){let r=bH;if(!(r.startsWith("{{")&&r.endsWith("}}")))return r||void 0}function bk(r){if(typeof process<"u"&&process.env)return process.env[r]}function SH(r){let e=typeof r=="string"?r:r.name;dH(e);let t=Uk(typeof r=="string"?void 0:r),i=new Tk(t.authToken,t.projectId),n=new Pk(i);return new Sk(n,e,t.consistency??"eventual")}async function DH(r){let e=Uk(r?{name:"__list__",projectId:r.projectId,token:r.token,consistency:r.consistency}:void 0),t=new Tk(e.authToken,e.projectId);return{stores:(await new Pk(t).listStores(e.consistency)).map(i=>({name:i}))}}function Uk(r){let e=vH(),t=r?.token||e.deployCredential,i=r?.projectId||e.projectId;if(r?.token||e.projectId){if(!i)throw new kk;if(!t)throw new kx(["token"]);return{authToken:t,projectId:i,consistency:r?.consistency}}if(r?.projectId&&!t)throw new kx(["token"]);if(!e.deployCredential)throw new kx(["deployCredential"]);return{authToken:e.deployCredential,consistency:r?.consistency}}});var Lk={};xn(Lk,{checkProxyConfig:()=>ec,kvDriver:()=>$0});function Nk(r){if(!r||typeof r!="object")return!1;try{return typeof r.get!="function"?!1:typeof r.put=="function"||typeof r.set=="function"}catch{return!1}}function Za(r){let e=globalThis;return Nk(r?.KV)?r.KV:Nk(e?.KV)?e.KV:null}function Ok(r){try{let e=r?.JWT_SECRET;return typeof e=="string"&&e.length>=16?e:null}catch{return null}}function ec(r){try{if(Za(r)!==null||Ok(r))return null}catch{}return`KV proxy mode requires the JWT_SECRET environment variable with at least 16 characters. Reason: EdgeOne Node Functions cannot access KV directly and must go through an Edge Function proxy, whose authentication depends on this secret. Add it under Environment Variables in the EdgeOne project settings, for example: JWT_SECRET= -Generate one with: openssl rand -hex 32`}function xu(r){let e={"Content-Type":"application/json"},t=uk(r);t&&(e["X-Internal-Call"]=t);let i=r?._currentUserToken;return i&&(e.Authorization=`Bearer ${i}`),e}function fk(r){if(!r)return"";let e=r.EO_KV_URLS;if(e){let i=gl(e,r);if(i)return i}let t=r.__requestOrigin;if(t){let i=gl(t,r);if(i)return i}return""}async function dk(r){let e=Xa(r);if(e)return{ok:!1,status:0,error:e.split(` -`)[0]};let t=fk(r);if(!t)return{ok:!1,status:0,error:"cannot determine deployment origin. Set EO_KV_URLS to the deployment origin."};try{let i=`${t}/kv-list?prefix=__health__`,n=await fetch(i,{method:"GET",headers:xu(r)});return{ok:n.ok,status:n.status}}catch(i){return{ok:!1,status:0,error:i?.message||String(i)}}}function R0(r){let e=Xa(r);if(e)throw new Error("KV proxy misconfigured: "+e.split(` -`)[0]);let t=fk(r);if(!t)throw new Error("KV proxy base URL unavailable: cannot determine deployment origin. Set EO_KV_URLS to the deployment origin.");return t}var N0,yx=V(()=>{"use strict";F0();N0={name:"kv",async isAvailable(r){if(Wa(r)!==null)return!0;let e=await dk(r);return!e.ok&&e.status!==401?(e.error&&console.error("[DB] KV proxy unavailable: "+e.error),!1):!0},async init(r){},async get(r,e){let t=Wa(e);if(t){let s=a=>a instanceof TypeError||/not a function|invalid|unexpected|argument/i.test(String(a?.message||"")),o;try{o=await t.get(r,"text")}catch(a){if(!s(a))throw a;o=void 0}if(o==null)try{o=await t.get(r,{type:"text"})}catch(a){if(!s(a))throw a;o=null}return o==null?null:typeof o=="string"?o:JSON.stringify(o)}let n=`${R0(e)}/kv-get?key=${encodeURIComponent(r)}`;try{let s=await fetch(n,{method:"GET",headers:xu(e)});if(!s.ok){if(s.status===404)return null;throw new Error(`KV proxy get failed: ${s.status}`)}let o=await s.json();return o?.value===void 0||o?.value===null?null:typeof o.value=="string"?o.value:String(o.value)}catch(s){throw console.error(`[KV] get(${r}) failed:`,s),s}},async put(r,e,t){let i=Wa(t);if(i){await i.put(r,e);return}let s=`${R0(t)}/kv-put`;try{let o=await fetch(s,{method:"POST",headers:xu(t),body:JSON.stringify({key:r,value:e})});if(!o.ok)throw new Error(`KV proxy put failed: ${o.status}`)}catch(o){throw console.error(`[KV] put(${r}) failed:`,o),o}},async delete(r,e){let t=Wa(e);if(t){await t.delete(r);return}let n=`${R0(e)}/kv-delete?key=${encodeURIComponent(r)}`;try{let s=await fetch(n,{method:"DELETE",headers:xu(e)});if(!s.ok&&s.status!==404)throw new Error(`KV proxy delete failed: ${s.status}`)}catch(s){throw console.error(`[KV] delete(${r}) failed:`,s),s}},async list(r,e){let t=Wa(e);if(t){let s=[],o="",a=!1,c=0;for(;!a&&c<1e3;){c+=1;let l=await t.list({prefix:r,cursor:o,limit:256}),d=Array.isArray(l?.keys)?l.keys:[];for(let u of d)u?.key&&s.push(u.key);d.length>0&&(o=d[d.length-1].key||""),a=!!l?.complete||d.length===0}return s}let n=`${R0(e)}/kv-list?prefix=${encodeURIComponent(r)}`;try{let s=await fetch(n,{method:"GET",headers:xu(e)});if(!s.ok)throw new Error(`KV proxy list failed: ${s.status}`);return(await s.json()).keys||[]}catch(s){throw console.error(`[KV] list(${r}) failed:`,s),s}},async health(r){let e=Wa(r);if(e)try{return await e.get("__health_check__"),{driver:"kv",mode:"binding",available:!0,platform:"Cloudflare KV / EdgeOne KV"}}catch(i){return{driver:"kv",mode:"binding",available:!1,error:i?.message||String(i)}}let t=await dk(r);return t.ok?{driver:"kv",mode:"proxy",available:!0,platform:"EdgeOne KV (via Edge Function proxy)"}:{driver:"kv",mode:"proxy",available:!1,error:t.error||`HTTP ${t.status}`}}}});function hk(r){if(!r||typeof r!="object")return!1;try{return typeof r.get!="function"?!1:typeof r.put=="function"||typeof r.set=="function"}catch{return!1}}function pl(r){let e=globalThis,t=r?.ESA_BLOB;if(hk(t))return t;let i=e?.ESA_BLOB;return hk(i)?i:null}async function ml(r="default"){try{let{getStore:e}=await Promise.resolve().then(()=>Dr(mx(),1));return e(r)}catch{return null}}var Ix,gk=V(()=>{"use strict";Ix={name:"blob",async isAvailable(r){return pl(r)!==null?!0:await ml()!==null},async init(r){},async get(r,e){let t=pl(e);if(t)try{let n=await t.get(r);return n?await n.text():null}catch(n){return console.warn(`[Blob] ESA get key="${r}" failed:`,n),null}let i=await ml();if(!i)throw new Error("Blob not available");try{let n=await i.get(r);return n==null?null:typeof n=="string"?n:JSON.stringify(n)}catch(n){return console.warn(`[Blob] EdgeOne get key="${r}" failed:`,n),null}},async put(r,e,t){let i=pl(t);if(i){await i.put(r,e);return}let n=await ml();if(!n)throw new Error("Blob not available");await n.set(r,e)},async delete(r,e){let t=pl(e);if(t){await t.delete(r);return}let i=await ml();if(!i)throw new Error("Blob not available");await i.delete(r)},async list(r,e){let t=pl(e);if(t){let s=[],o;do{let a=await t.list({prefix:r,cursor:o});s.push(...(a?.keys||[]).map(c=>c.name)),o=a?.cursor}while(o);return s}let i=await ml();if(!i)throw new Error("Blob not available");return((await i.list({prefix:r,paginate:!0}))?.blobs||[]).map(s=>s.key)},async health(r){let e=pl(r),t=await ml();if(e)try{return await e.head("__health_check__"),{driver:"blob",platform:"ESA Blob (binding)",available:!0}}catch(i){return{driver:"blob",platform:"ESA Blob (binding)",available:!1,error:i?.message||String(i)}}if(t)try{return await t.get("__health_check__"),{driver:"blob",platform:"EdgeOne Blob (SDK)",available:!0}}catch(i){return{driver:"blob",platform:"EdgeOne Blob (SDK)",available:!1,error:i?.message||String(i)}}return{driver:"blob",available:!1,error:"No Blob storage available"}}}});function yl(r){let e=r||(typeof process<"u"?process.env:{})||{},t=e.CF_ACCOUNT||e.CLOUDFLARE_ACCOUNT_ID,i=e.CF_KV_UUID||e.CLOUDFLARE_KV_NAMESPACE_ID,n=e.CF_API_KEY||e.CLOUDFLARE_API_TOKEN;return!t||!i||!n?null:{accountId:t,namespaceId:i,apiToken:n}}function q0(r,e){return`https://api.cloudflare.com/client/v4/accounts/${r.accountId}/storage/kv/namespaces/${r.namespaceId}${e}`}var wx,pk=V(()=>{"use strict";wx={name:"cfkv",async isAvailable(r){return yl(r)!==null},async init(r){},async get(r,e){let t=yl(e);if(!t)throw new Error("Cloudflare KV API not configured");let i=q0(t,`/values/${encodeURIComponent(r)}`),n=await fetch(i,{headers:{Authorization:`Bearer ${t.apiToken}`}});if(n.status===404)return null;if(!n.ok)throw new Error(`Cloudflare KV API error: ${n.status}`);return await n.text()},async put(r,e,t){let i=yl(t);if(!i)throw new Error("Cloudflare KV API not configured");let n=q0(i,`/values/${encodeURIComponent(r)}`),s=await fetch(n,{method:"PUT",headers:{Authorization:`Bearer ${i.apiToken}`},body:e});if(!s.ok)throw new Error(`Cloudflare KV API error: ${s.status}`)},async delete(r,e){let t=yl(e);if(!t)throw new Error("Cloudflare KV API not configured");let i=q0(t,`/values/${encodeURIComponent(r)}`),n=await fetch(i,{method:"DELETE",headers:{Authorization:`Bearer ${t.apiToken}`}});if(!n.ok&&n.status!==404)throw new Error(`Cloudflare KV API error: ${n.status}`)},async list(r,e){let t=yl(e);if(!t)throw new Error("Cloudflare KV API not configured");let i=[],n;do{let s=new URLSearchParams({prefix:r,limit:"1000"});n&&s.set("cursor",n);let o=q0(t,`/keys?${s}`),a=await fetch(o,{headers:{Authorization:`Bearer ${t.apiToken}`}});if(!a.ok)throw new Error(`Cloudflare KV API error: ${a.status}`);let c=await a.json();i.push(...(c.result||[]).map(l=>l.name)),n=c.result_info?.cursor}while(n);return i},async health(r){let e=yl(r);if(!e)return{configured:!1,connected:!1,platform:"Cloudflare KV API (REST)",mode:"cfkv",error:"Missing CF_ACCOUNT, CF_KV_UUID, or CF_API_KEY"};try{return await this.get("__health_check__",r),{configured:!0,connected:!0,platform:"Cloudflare KV API (REST)",mode:"cfkv",accountId:e.accountId,namespaceId:e.namespaceId}}catch(t){return{configured:!0,connected:!1,platform:"Cloudflare KV API (REST)",mode:"cfkv",error:t?.message||String(t)}}}}});function xx(r){return"x_"}function Cx(r,e){return xx(e)+zL[r]}function JL(r,e){if(e==null){if(r.pk||r.nullable)return null;switch(r.type){case"string":return"";case"number":return 0;case"bool":return 0;case"json":return"null";case"date":return"";default:return""}}switch(r.type){case"string":return String(e);case"number":return typeof e=="number"?e:Number(e);case"bool":return e?1:0;case"json":return typeof e=="string"?e:JSON.stringify(e);case"date":return e instanceof Date?e.toISOString():typeof e=="number"?new Date(e).toISOString():String(e);default:return e}}function jL(r,e){if(e==null)return r.type==="json",null;switch(r.type){case"string":{let t=String(e);return t===""?null:t}case"number":return Number(e);case"bool":return e===1||e==="1"||e===!0||e==="true";case"json":{if(typeof e!="string")return e;try{return JSON.parse(e)}catch{return e}}case"date":return e;default:return e}}function M0(r,e){let t=O0[r],i={};for(let n of t.columns){let s=n.key??n.name,o=jL(n,e[n.name]);o!=null&&(i[s]=o)}return i}function L0(r,e){let t=O0[r],i=[],n=[];for(let s of t.columns){let o=s.key??s.name;i.push(s.name),n.push(JL(s,e?.[o]))}return{columns:i,values:n}}function $L(r,e){switch(r.type){case"number":return e==="mysql"?"BIGINT":"INTEGER";case"bool":return e==="mysql"?"TINYINT(1)":"INTEGER";case"string":case"json":case"date":return"TEXT";default:return"TEXT"}}function Fo(r){return"`"+r+"`"}function VL(r,e,t){let i=[];for(let n of r.columns){let s=`${Fo(n.name)} ${$L(n,e)}`;n.pk?s+=" PRIMARY KEY":n.nullable||(s+=" NOT NULL"),n.unique&&(s+=" UNIQUE"),i.push(s)}return`CREATE TABLE IF NOT EXISTS ${Fo(t)} (${i.join(", ")})`}function YL(r){let e=r==="mysql"?"VARCHAR(255)":"TEXT";return`CREATE TABLE IF NOT EXISTS ${Fo("schema_info")} (${Fo("k")} ${e} PRIMARY KEY, ${Fo("v")} TEXT)`}function Il(r,e){let t=[YL(r)];for(let i of GL)t.push(VL(O0[i],r,Cx(i,e)));return t}var Po,GL,Za,O0,zL,Cce,Ece,mk,yk,Cu=V(()=>{"use strict";Po=["settings","storages","users","shares","metas","plugins"],GL=[...Po,"sshkeys"],Za={settings:"key",storages:"id",users:"id",shares:"id",metas:"id",plugins:"id",sshkeys:"id"},O0={settings:{name:"settings",columns:[{name:"key",type:"string",pk:!0},{name:"value",type:"string",nullable:!0},{name:"help",type:"string",nullable:!0},{name:"type",type:"string",nullable:!0},{name:"options",type:"string",nullable:!0},{name:"group",type:"number",nullable:!0},{name:"flag",type:"number",nullable:!0},{name:"index",type:"number",nullable:!0}]},storages:{name:"storages",columns:[{name:"id",type:"number",pk:!0},{name:"mount_path",type:"string",unique:!0},{name:"order",type:"number",nullable:!0},{name:"driver",type:"string",nullable:!0},{name:"cache_expiration",type:"number",nullable:!0},{name:"custom_cache_policies",type:"string",nullable:!0},{name:"status",type:"string",nullable:!0},{name:"addition",type:"string",nullable:!0},{name:"remark",type:"string",nullable:!0},{name:"modified",type:"date",nullable:!0},{name:"disabled",type:"bool",nullable:!0},{name:"disable_index",type:"bool",nullable:!0},{name:"enable_sign",type:"bool",nullable:!0},{name:"seed_policy",type:"string",nullable:!0},{name:"order_by",type:"string",nullable:!0},{name:"order_direction",type:"string",nullable:!0},{name:"extract_folder",type:"string",nullable:!0},{name:"web_proxy",type:"bool",nullable:!0},{name:"webdav_policy",type:"string",nullable:!0},{name:"proxy_range",type:"bool",nullable:!0},{name:"down_proxy_url",type:"string",nullable:!0},{name:"disable_proxy_sign",type:"bool",nullable:!0}]},users:{name:"users",columns:[{name:"id",type:"number",pk:!0},{name:"username",type:"string",unique:!0},{name:"password",type:"string",nullable:!0},{name:"base_path",type:"string",nullable:!0},{name:"role",type:"number",nullable:!0},{name:"disabled",type:"bool",nullable:!0},{name:"permission",type:"number",nullable:!0},{name:"salt",type:"string",nullable:!0},{name:"otp_secret",type:"string",nullable:!0},{name:"sso_id",type:"string",nullable:!0},{name:"authn",type:"string",nullable:!0},{name:"allow_ldap",type:"bool",nullable:!0},{name:"pwd_update_at",type:"date",nullable:!0}]},shares:{name:"shares",columns:[{name:"id",type:"string",pk:!0},{name:"files_raw",key:"files",type:"json",nullable:!0},{name:"expires",type:"date",nullable:!0},{name:"pwd",type:"string",nullable:!0},{name:"accessed",type:"number",nullable:!0},{name:"max_accessed",type:"number",nullable:!0},{name:"creator_id",type:"number",nullable:!0},{name:"disabled",type:"bool",nullable:!0},{name:"remark",type:"string",nullable:!0},{name:"readme",type:"string",nullable:!0},{name:"header",type:"string",nullable:!0},{name:"order_by",type:"string",nullable:!0},{name:"order_direction",type:"string",nullable:!0},{name:"extract_folder",type:"string",nullable:!0}]},metas:{name:"metas",columns:[{name:"id",type:"number",pk:!0},{name:"path",type:"string",unique:!0},{name:"read_users",type:"json",nullable:!0},{name:"read_users_sub",type:"bool",nullable:!0},{name:"write_users",type:"json",nullable:!0},{name:"write_users_sub",type:"bool",nullable:!0},{name:"password",type:"string",nullable:!0},{name:"p_sub",type:"bool",nullable:!0},{name:"write",type:"bool",nullable:!0},{name:"w_sub",type:"bool",nullable:!0},{name:"hide",type:"string",nullable:!0},{name:"h_sub",type:"bool",nullable:!0},{name:"readme",type:"string",nullable:!0},{name:"r_sub",type:"bool",nullable:!0},{name:"header",type:"string",nullable:!0},{name:"header_sub",type:"bool",nullable:!0}]},sshkeys:{name:"sshkeys",columns:[{name:"id",type:"number",pk:!0},{name:"user_id",type:"number",nullable:!0},{name:"title",type:"string",nullable:!0},{name:"fingerprint",type:"string",nullable:!0},{name:"key_str",type:"string",nullable:!0},{name:"added_time",type:"date",nullable:!0},{name:"last_used_time",type:"date",nullable:!0}]},plugins:{name:"plugins",columns:[{name:"id",type:"string",pk:!0},{name:"name",type:"string",nullable:!0},{name:"version",type:"string",nullable:!0},{name:"description",type:"string",nullable:!0},{name:"author",type:"string",nullable:!0},{name:"homepage",type:"string",nullable:!0},{name:"repository",type:"string",nullable:!0},{name:"icon",type:"string",nullable:!0},{name:"type",type:"string",nullable:!0},{name:"enabled",type:"bool",nullable:!0},{name:"high_privilege",type:"bool",nullable:!0},{name:"permissions",type:"json",nullable:!0},{name:"entry_url",type:"string",nullable:!0},{name:"script_content",type:"string",nullable:!0},{name:"style_content",type:"string",nullable:!0},{name:"config_schema",type:"json",nullable:!0},{name:"config_values",type:"json",nullable:!0},{name:"target_hooks",type:"json",nullable:!0},{name:"is_builtin",type:"bool",nullable:!0},{name:"tags",type:"json",nullable:!0},{name:"created_at",type:"date",nullable:!0},{name:"updated_at",type:"date",nullable:!0}]}},zL={settings:"setting_items",storages:"storages",users:"users",shares:"sharing_dbs",metas:"metas",plugins:"plugins",sshkeys:"ssh_public_keys"};Cce=Il("sqlite"),Ece=Il("mysql"),mk=[`CREATE TABLE IF NOT EXISTS ${Fo("kv")} (${Fo("key")} TEXT PRIMARY KEY, ${Fo("value")} TEXT NOT NULL)`],yk=["CREATE TABLE IF NOT EXISTS `kv` (`key` VARCHAR(512) PRIMARY KEY, `value` LONGTEXT NOT NULL)"]});function Ik(r){if(!r||typeof r!="object")return!1;try{return typeof r.prepare=="function"}catch{return!1}}function Mn(r){let e=typeof globalThis<"u"?globalThis:{};for(let t of["DB","OPENLIST_DB"]){let i=r?.[t];if(Ik(i))return i;let n=e?.[t];if(Ik(n))return n}return null}async function To(r,e){if(!wk.get(r)){for(let t of[...mk,...Il("sqlite",e)])await r.prepare(t).run();wk.set(r,!0)}}var wk,Ex,xk=V(()=>{"use strict";Cu();wk=new WeakMap;Ex={name:"d1",async isAvailable(r){return Mn(r)!=null},async init(r){let e=Mn(r);e&&await To(e)},async get(r,e){let t=Mn(e);if(!t)throw new Error("D1 binding not found");return await To(t,e),(await t.prepare("SELECT value FROM kv WHERE key = ?").bind(r).first())?.value||null},async put(r,e,t){let i=Mn(t);if(!i)throw new Error("D1 binding not found");await To(i,t),await i.prepare("INSERT OR REPLACE INTO kv (key, value) VALUES (?, ?)").bind(r,e).run()},async delete(r,e){let t=Mn(e);if(!t)throw new Error("D1 binding not found");await To(t,e),await t.prepare("DELETE FROM kv WHERE key = ?").bind(r).run()},async list(r,e){let t=Mn(e);if(!t)throw new Error("D1 binding not found");return await To(t,e),((await t.prepare("SELECT key FROM kv WHERE key LIKE ? ORDER BY key").bind(`${r}%`).all()).results||[]).map(n=>n.key)},async query(r,e,t){let i=Mn(t);if(!i)throw new Error("D1 binding not found");return await To(i,t),(await i.prepare(r).bind(...e).all()).results||[]},async execute(r,e,t){let i=Mn(t);if(!i)throw new Error("D1 binding not found");await To(i,t),await i.prepare(r).bind(...e).run()},async batch(r,e){let t=Mn(e);if(!t)throw new Error("D1 binding not found");await To(t,e);let i=100,n=r.map(s=>t.prepare(s.sql).bind(...s.params));for(let s=0;s{"use strict";bx={name:"do",async isAvailable(r){return Bx(r)!=null},async init(r){let e=ks(r);e&&typeof e.init=="function"&&await e.init()},async get(r,e){let t=ks(e);if(!t)throw new Error("DO binding not found");return await t.kvGet(r)},async put(r,e,t){let i=ks(t);if(!i)throw new Error("DO binding not found");await i.kvPut(r,e)},async delete(r,e){let t=ks(e);if(!t)throw new Error("DO binding not found");await t.kvDelete(r)},async list(r,e){let t=ks(e);if(!t)throw new Error("DO binding not found");return await t.kvList(r)},async query(r,e,t){let i=ks(t);if(!i)throw new Error("DO binding not found");return await i.sqlQuery(r,e)},async execute(r,e,t){let i=ks(t);if(!i)throw new Error("DO binding not found");await i.sqlExecute(r,e)},async batch(r,e){let t=ks(e);if(!t)throw new Error("DO binding not found");await t.sqlBatch(r)},async health(r){if(!Bx(r))return{configured:!1,connected:!1,platform:"Cloudflare Durable Objects",mode:"do",error:"DO binding not found (expected env.DO)"};try{return await ks(r).health(),{configured:!0,connected:!0,platform:"Cloudflare Durable Objects (SQLite)",mode:"do",doId:Ek(r)}}catch(t){return{configured:!0,connected:!1,platform:"Cloudflare Durable Objects",mode:"do",error:t?.message||String(t)}}}}});function bk(){return typeof process<"u"&&process.release?.name==="node"}function vx(r){let e=r||(typeof process<"u"?process.env:{})||{},t=e?.MYSQL_URLS;if(t)return t;let i=e?.MYSQL_HOST;return i?{host:i,port:Number(e?.MYSQL_PORT||3306),user:e?.MYSQL_USER||"",password:e?.MYSQL_PASS||"",database:e?.MYSQL_NAME||""}:null}async function Ss(r){let e=vx(r);if(!e)return null;let t=JSON.stringify(e);if(H0&&vk===t)return H0;let i="mysql2/promise",{createPool:n}=await import(i);return H0=n(e),vk=t,H0}async function Uo(r,e){let t=xx(e);if(kk!==t){for(let i of[...yk,...Il("mysql",e)])await r.query(i);kk=t}}var H0,vk,kk,kx,Sk=V(()=>{"use strict";Cu();H0=null,vk=null;kk=null;kx={name:"mysql",async isAvailable(r){return bk()?vx(r)!=null:!1},async init(r){let e=await Ss(r);e&&await Uo(e)},async get(r,e){let t=await Ss(e);if(!t)throw new Error("MySQL pool not available");await Uo(t,e);let[i]=await t.query("SELECT `value` FROM `kv` WHERE `key` = ?",[r]);return i?.[0]?.value||null},async put(r,e,t){let i=await Ss(t);if(!i)throw new Error("MySQL pool not available");await Uo(i,t),await i.query("INSERT INTO `kv` (`key`, `value`) VALUES (?, ?) ON DUPLICATE KEY UPDATE `value` = VALUES(`value`)",[r,e])},async delete(r,e){let t=await Ss(e);if(!t)throw new Error("MySQL pool not available");await Uo(t,e),await t.query("DELETE FROM `kv` WHERE `key` = ?",[r])},async list(r,e){let t=await Ss(e);if(!t)throw new Error("MySQL pool not available");await Uo(t,e);let[i]=await t.query("SELECT `key` FROM `kv` WHERE `key` LIKE ? ORDER BY `key`",[`${r}%`]);return(i||[]).map(n=>n.key)},async query(r,e,t){let i=await Ss(t);if(!i)throw new Error("MySQL pool not available");await Uo(i,t);let[n]=await i.query(r,e);return n||[]},async execute(r,e,t){let i=await Ss(t);if(!i)throw new Error("MySQL pool not available");await Uo(i,t),await i.query(r,e)},async batch(r,e){let t=await Ss(e);if(!t)throw new Error("MySQL pool not available");await Uo(t,e);let i=await t.getConnection();try{await i.beginTransaction();for(let n of r)await i.query(n.sql,n.params);await i.commit()}catch(n){try{await i.rollback()}catch{}throw n}finally{i.release()}},async health(r){if(!bk())return{configured:!1,connected:!1,platform:"MySQL (mysql2)",mode:"mysql",error:"MySQL backend requires Node.js runtime"};if(!vx(r))return{configured:!1,connected:!1,platform:"MySQL (mysql2)",mode:"mysql",error:"MySQL config not found (expected MYSQL_URLS or MYSQL_HOST)"};try{return await(await Ss(r)).query("SELECT 1"),{configured:!0,connected:!0,platform:"MySQL (mysql2)",mode:"mysql"}}catch(t){return{configured:!0,connected:!1,platform:"MySQL (mysql2)",mode:"mysql",error:t?.message||String(t)}}}}});var Eu,Sx,Dk=V(()=>{"use strict";Eu=new Map,Sx={name:"memory",async isAvailable(){return!0},async init(){},async get(r){return Eu.get(r)??null},async put(r,e){Eu.set(r,e)},async delete(r){Eu.delete(r)},async list(r){return[...Eu.keys()].filter(e=>e.startsWith(r))},async health(){return{configured:!0,connected:!0,platform:"Memory",mode:"memory",hasData:Eu.size>0,error:null}}}});var Qk,_k,Fk=V(()=>{"use strict";Qk="openlist_config",_k={name:"map",async load(r,e){let t=await r.get(Qk,e);if(!t)return null;try{return JSON.parse(t)}catch(i){return console.error("[mapFormat] Failed to parse JSON:",i),null}},async save(r,e,t){let i=JSON.stringify(r);return await e.put(Qk,i,t),!0}}});function WL(r){return r>="a"&&r<="z"||r>="A"&&r<="Z"||r>="0"&&r<="9"||r==="_"}function Pk(r){let e=String(r??"");if(e==="")return"0";if(/^[A-Za-z0-9_]+$/.test(e))return e;let t="";for(let i of e)if(WL(i))t+=i;else for(let n of new TextEncoder().encode(i))t+="x"+n.toString(16).padStart(2,"0");return t}function Dx(r){return`${Pk(r)}_`}function Tk(r,e){return`${Dx(r)}${Pk(e)}`}var Uk=V(()=>{"use strict"});function K0(r){return Dx(r)}function Bu(r,e){return Tk(r,e)}var Rk,Nk,qk=V(()=>{"use strict";Cu();Uk();Rk="openlist_config";Nk={name:"key",async load(r,e){if(!await r.get(Rk,e))return null;let i={};for(let n of Po){let s=K0(n),o=await r.list(s,e),a=[];for(let c of o){let l=await r.get(c,e);if(l)try{a.push(JSON.parse(l))}catch(d){console.warn(`[keyFormat] Failed to parse ${c}:`,d)}}i[n]=a}return i},async save(r,e,t){for(let i of Po){let n=K0(i),s=await e.list(n,t);for(let o of s)await e.delete(o,t)}for(let i of Po){let n=Za[i],s=r?.[i]||[];for(let o of s){let a=String(o?.[n]??"");if(!a)continue;let c=Bu(i,a),l=JSON.stringify(o);await e.put(c,l,t)}}return await e.put(Rk,String(Date.now()),t),!0},async getTable(r,e,t){let i=K0(r),n=await e.list(i,t),s=[];for(let o of n){let a=await e.get(o,t);if(a)try{s.push(JSON.parse(a))}catch(c){console.warn(`[keyFormat] Failed to parse ${o}:`,c)}}return s},async saveTable(r,e,t,i){let n=Za[r],s=K0(r),o=await t.list(s,i);for(let a of o)await t.delete(a,i);for(let a of e){let c=String(a?.[n]??"");if(!c)continue;let l=Bu(r,c),d=JSON.stringify(a);await t.put(l,d,i)}},async getRecord(r,e,t,i){let n=Bu(r,e),s=await t.get(n,i);if(!s)return null;try{return JSON.parse(s)}catch(o){return console.warn(`[keyFormat] Failed to parse ${n}:`,o),null}},async saveRecord(r,e,t,i,n){let s=Bu(r,e),o=JSON.stringify(t);await i.put(s,o,n)},async deleteRecord(r,e,t,i){let n=Bu(r,e);await t.delete(n,i)}}});function Ds(r){return"`"+r+"`"}function Qx(r,e,t,i){let n=e.map(o=>Ds(o)).join(", "),s=e.map(()=>"?").join(", ");if(i.name==="mysql"){let o=e.slice(1).map(c=>`${Ds(c)} = VALUES(${Ds(c)})`).join(", ");return{sql:o?`INSERT INTO ${r} (${n}) VALUES (${s}) ON DUPLICATE KEY UPDATE ${o}`:`INSERT INTO ${r} (${n}) VALUES (${s})`,params:t}}return{sql:`INSERT OR REPLACE INTO ${r} (${n}) VALUES (${s})`,params:t}}function Ln(r,e){return Ds(Cx(r,e))}var Ok,Mk,Lk=V(()=>{"use strict";Cu();Ok="openlist_config";Mk={name:"sql",async load(r,e){if(!r.query)throw new Error(`Driver ${r.name} does not support SQL queries`);let t=await r.query("SELECT v FROM schema_info WHERE k = ?",[Ok],e);if(!t||t.length===0)return null;let i={};for(let n of Po){let s=await r.query(`SELECT * FROM ${Ln(n,e)}`,[],e);i[n]=s.map(o=>M0(n,o))}return i},async save(r,e,t){if(!e.batch)throw new Error(`Driver ${e.name} does not support batch operations`);let i=[];for(let n of Po){let s=Za[n],o=r?.[n]||[],a=[];for(let l of o){let{columns:d,values:u}=L0(n,l),f=Qx(Ln(n,t),d,u,e);i.push({sql:f.sql,params:f.params});let h=l?.[s];h!=null&&a.push(String(h))}let c=a.length>0?`DELETE FROM ${Ln(n,t)} WHERE ${Ds(s)} NOT IN (${a.map(()=>"?").join(", ")})`:`DELETE FROM ${Ln(n,t)}`;i.push({sql:c,params:a})}return i.push(Qx(Ds("schema_info"),["k","v"],[Ok,String(Date.now())],e)),await e.batch(i,t),!0},async getTable(r,e,t){if(!e.query)throw new Error(`Driver ${e.name} does not support SQL queries`);let i=r;return(await e.query(`SELECT * FROM ${Ln(i,t)}`,[],t)).map(s=>M0(i,s))},async saveTable(r,e,t,i){if(!t.batch)throw new Error(`Driver ${t.name} does not support batch operations`);let n=r,s=[{sql:`DELETE FROM ${Ln(n,i)}`,params:[]}];for(let o of e){let{columns:a,values:c}=L0(n,o),l=a.map(()=>"?").join(", "),d=`INSERT INTO ${Ln(n,i)} (${a.map(u=>Ds(u)).join(", ")}) VALUES (${l})`;s.push({sql:d,params:c})}await t.batch(s,i)},async getRecord(r,e,t,i){if(!t.query)throw new Error(`Driver ${t.name} does not support SQL queries`);let n=r,s=Za[n],o=await t.query(`SELECT * FROM ${Ln(n,i)} WHERE ${Ds(s)} = ?`,[e],i);return o.length>0?M0(n,o[0]):null},async saveRecord(r,e,t,i,n){if(!i.execute)throw new Error(`Driver ${i.name} does not support SQL execution`);let s=r,{columns:o,values:a}=L0(s,t),{sql:c}=Qx(Ln(s,n),o,a,i);await i.execute(c,a,n)},async deleteRecord(r,e,t,i){if(!t.execute)throw new Error(`Driver ${t.name} does not support SQL execution`);let n=r,s=Za[n];await t.execute(`DELETE FROM ${Ln(n,i)} WHERE ${Ds(s)} = ?`,[e],i)}}});var $k={};qn($k,{NO_STORAGE_MESSAGE:()=>Qs,getStorageBackend:()=>Px,getStoreBackend:()=>J0,getStoreConfigError:()=>Ux,getStoreStatus:()=>Hn,isPersistentStorageAvailable:()=>Tx,isServerlessRuntime:()=>_s,readDriver:()=>G0,readFormat:()=>z0});function zk(r,e,t){let i=t||(typeof process<"u"?process.env:{})||{};return String(i[r]||"").trim().toLowerCase()||e}function G0(r){let e=r||(typeof process<"u"?process.env:{})||{},t=zk("DB_DRIVER","auto",r);return t==="json"?(console.warn("[DEPRECATED] DB_DRIVER=json is deprecated. Use DB_FORMAT=map instead."),"auto"):t}function z0(r){let e=r||(typeof process<"u"?process.env:{})||{};return String(e.DB_DRIVER||"").trim().toLowerCase()==="json"?"map":String(e.DB_DRIVER||"").trim().toLowerCase()==="kv"&&!e.DB_FORMAT?"key":zk("DB_FORMAT","map",r)}function _s(r){let e=globalThis;try{if(r?.__requestOrigin||r?.__requestContext||r?.__makersContext||r?.EDGEONE_BLOB||e?.EDGEONE_BLOB||typeof e?.EdgeOne<"u"||typeof e.WebSocketPair=="function"||typeof e.caches<"u"&&e.caches?.default||r?.ESA_BLOB||e?.ESA_BLOB||typeof e?.ESA<"u"||r?.TENCENTCLOUD_SCF_FUNCTIONNAME||typeof process<"u"&&process.env?.TENCENTCLOUD_SCF_FUNCTIONNAME)return!0}catch{}return!1}async function XL(r){let e=[];ZL(r)&&e.push(kx),e.push(Ex,N0,wx,Ix,bx);for(let t of e)if(await t.isAvailable(r))return console.log(`[DB] Auto-detected driver: ${t.name}`),t;if(_s(r))throw new Error(Qs);return console.warn("[DB] No storage binding detected, falling back to memory (data will not persist)."),Sx}function ZL(r){let e=r||{},t=typeof process<"u"?process.env||{}:{};return!!(e.MYSQL_URLS||t.MYSQL_URLS||e.MYSQL_HOST||t.MYSQL_HOST)}async function eH(r,e){if(r==="auto")return await XL(e);let t=Hk[r];if(!t)throw new Error(`Unknown DB_DRIVER "${r}". Valid values: auto, ${Object.keys(Hk).join(", ")}`);let i=!1;try{i=await t.isAvailable(e)}catch{i=!1}if(t===Sx&&_s(e))throw new Error(Qs);if(!i)throw new Error(`DB_DRIVER is set to "${r}", but that driver is not available in this runtime. No fallback is performed for an explicitly configured driver. -Check the binding/credentials for "${r}", or set DB_DRIVER=auto to let the platform pick an available backend. -Environment: ${_s(e)?"serverless/worker":"local/container"}`);return console.log(`[DB] Using explicitly configured driver: ${t.name}`),t}function tH(r){switch(r){case"map":return _k;case"key":return Nk;case"sql":return Mk;default:throw new Error(`Unknown format: ${r}`)}}function iH(r){if(r&&(typeof r=="object"||typeof r=="function")){let e=Gk.get(r);return e===void 0&&(e=++rH,Gk.set(r,e)),String(e)}return"none"}async function Px(r){let e=G0(r),t=z0(r),i=_s(r)?"sl":"local",n=`${e}:${t}:${i}:${iH(r)}`;if(_x&&Fx&&Kk===n)return{driver:_x,format:Fx};let s=await eH(e,r),o=tH(t);if(s.init)try{await s.init(r)}catch(a){console.warn(`[DB] Driver init failed (${s.name}):`,a)}return _x=s,Fx=o,Kk=n,console.log(`[DB] Using driver=${s.name}, format=${o.name}`),{driver:s,format:o}}async function J0(r){let{driver:e,format:t}=await Px(r);return{name:e.name,load:i=>t.load(e,i),save:(i,n)=>t.save(i,e,n),isConfigured:i=>e.isAvailable(i),init:i=>e.init(i),health:i=>e.health(i)}}async function Hn(r){let e=null,t=null,i=null;try{let s=await Px(r);e=s.driver,t=s.format}catch(s){let o=String(s?.message||s);return{driver:"none",format:"none",available:!1,configError:o.includes("No storage backend is available")?Qs:o}}let n=null;try{n=await e.health(r)}catch(s){n={connected:!1,error:s?.message||String(s)}}if(e.name==="kv"){try{i=Xa(r)}catch{i=null}i&&console.error(`[DB] KV proxy configuration error: -`+i)}return{driver:e.name,format:t.name,...n||{},...i?{configError:i,available:!1}:{}}}async function Tx(r){let e=await Jk(r);return jk(e)}async function Jk(r){try{return await Hn(r)}catch(e){return{driver:"none",format:"none",available:!1,configError:String(e?.message||e)}}}function jk(r){let e=String(r?.driver??"none"),t=e!=="none"&&e!=="",i=e==="memory",n=!!r?.configError,s=r?.available!==!1;return t&&!i&&!n&&s}async function Ux(r){if(!r||typeof r!="object")return null;let e=String(r?.DB_DRIVER||"").trim().toLowerCase()==="kv";if(e){let a=Xa(r);if(a)return console.error(`[DB] KV proxy configuration error: -`+a),a}let t=await Jk(r);if(jk(t))return null;if(!e&&String(t?.driver??"")==="kv"){let a=Xa(r);if(a)return console.error(`[DB] KV proxy configuration error: -`+a),a;if(t?.mode==="proxy"&&t?.error?.includes("401")){let c=`KV proxy rejected the internal call (HTTP 401). The JWT_SECRET used by this deployment does not match the one configured on the Edge Functions serving the proxy. Make sure both use the same JWT_SECRET. -Alternatively set EO_KV_URLS to the correct deployment origin.`;return console.error(`[DB] KV proxy authentication failed: -`+c),c}}let i=t?.configError?String(t.configError):null;if(i)return console.error(`[DB] Storage configuration error: -`+i),i;if(String(t?.driver??"none")==="memory")return console.error(`[DB] Storage configuration error: -`+Qs),Qs;let n=t?.error?String(t.error):null;if(n)return console.error(`[DB] Storage unhealthy: -`+n),n;let s=String(t?.driver??"none"),o=s==="none"||s===""?Qs:`Storage driver "${s}" is not available in this runtime. Check its configuration and bindings, or set DB_DRIVER=auto.`;return console.error(`[DB] Storage unavailable: -`+o),o}var Qs,Hk,_x,Fx,Kk,Gk,rH,ec=V(()=>{"use strict";gk();pk();yx();xk();Bk();Sk();Dk();Fk();qk();Lk();Qs=`No storage backend is available. Data cannot be persisted in this runtime (serverless environments cannot use in-memory storage). +Generate one with: openssl rand -hex 32`}function _u(r){let e={"Content-Type":"application/json"},t=Ok(r);t&&(e["X-Internal-Call"]=t);let i=r?._currentUserToken;return i&&(e.Authorization=`Bearer ${i}`),e}function Mk(r){if(!r)return"";let e=r.EO_KV_URLS;if(e){let i=wl(e,r);if(i)return i}let t=r.__requestOrigin;if(t){let i=wl(t,r);if(i)return i}return""}async function qk(r){let e=ec(r);if(e)return{ok:!1,status:0,error:e.split(` +`)[0]};let t=Mk(r);if(!t)return{ok:!1,status:0,error:"cannot determine deployment origin. Set EO_KV_URLS to the deployment origin."};try{let i=`${t}/kv-list?prefix=__health__`,n=await fetch(i,{method:"GET",headers:_u(r)});return{ok:n.ok,status:n.status}}catch(i){return{ok:!1,status:0,error:i?.message||String(i)}}}function j0(r){let e=ec(r);if(e)throw new Error("KV proxy misconfigured: "+e.split(` +`)[0]);let t=Mk(r);if(!t)throw new Error("KV proxy base URL unavailable: cannot determine deployment origin. Set EO_KV_URLS to the deployment origin.");return t}var $0,Ux=j(()=>{"use strict";K0();$0={name:"kv",async isAvailable(r){if(Za(r)!==null)return!0;let e=await qk(r);return!e.ok&&e.status!==401?(e.error&&console.error("[DB] KV proxy unavailable: "+e.error),!1):!0},async init(r){},async get(r,e){let t=Za(e);if(t){let s=a=>a instanceof TypeError||/not a function|invalid|unexpected|argument/i.test(String(a?.message||"")),o;try{o=await t.get(r,"text")}catch(a){if(!s(a))throw a;o=void 0}if(o==null)try{o=await t.get(r,{type:"text"})}catch(a){if(!s(a))throw a;o=null}return o==null?null:typeof o=="string"?o:JSON.stringify(o)}let n=`${j0(e)}/kv-get?key=${encodeURIComponent(r)}`;try{let s=await fetch(n,{method:"GET",headers:_u(e)});if(!s.ok){if(s.status===404)return null;throw new Error(`KV proxy get failed: ${s.status}`)}let o=await s.json();return o?.value===void 0||o?.value===null?null:typeof o.value=="string"?o.value:String(o.value)}catch(s){throw console.error(`[KV] get(${r}) failed:`,s),s}},async put(r,e,t){let i=Za(t);if(i){await i.put(r,e);return}let s=`${j0(t)}/kv-put`;try{let o=await fetch(s,{method:"POST",headers:_u(t),body:JSON.stringify({key:r,value:e})});if(!o.ok)throw new Error(`KV proxy put failed: ${o.status}`)}catch(o){throw console.error(`[KV] put(${r}) failed:`,o),o}},async delete(r,e){let t=Za(e);if(t){await t.delete(r);return}let n=`${j0(e)}/kv-delete?key=${encodeURIComponent(r)}`;try{let s=await fetch(n,{method:"DELETE",headers:_u(e)});if(!s.ok&&s.status!==404)throw new Error(`KV proxy delete failed: ${s.status}`)}catch(s){throw console.error(`[KV] delete(${r}) failed:`,s),s}},async list(r,e){let t=Za(e);if(t){let s=[],o="",a=!1,c=0;for(;!a&&c<1e3;){c+=1;let l=await t.list({prefix:r,cursor:o,limit:256}),d=Array.isArray(l?.keys)?l.keys:[];for(let u of d)u?.key&&s.push(u.key);d.length>0&&(o=d[d.length-1].key||""),a=!!l?.complete||d.length===0}return s}let n=`${j0(e)}/kv-list?prefix=${encodeURIComponent(r)}`;try{let s=await fetch(n,{method:"GET",headers:_u(e)});if(!s.ok)throw new Error(`KV proxy list failed: ${s.status}`);return(await s.json()).keys||[]}catch(s){throw console.error(`[KV] list(${r}) failed:`,s),s}},async health(r){let e=Za(r);if(e)try{return await e.get("__health_check__"),{driver:"kv",mode:"binding",available:!0,platform:"Cloudflare KV / EdgeOne KV"}}catch(i){return{driver:"kv",mode:"binding",available:!1,error:i?.message||String(i)}}let t=await qk(r);return t.ok?{driver:"kv",mode:"proxy",available:!0,platform:"EdgeOne KV (via Edge Function proxy)"}:{driver:"kv",mode:"proxy",available:!1,error:t.error||`HTTP ${t.status}`}}}});function Hk(r){if(!r||typeof r!="object")return!1;try{return typeof r.get!="function"?!1:typeof r.put=="function"||typeof r.set=="function"}catch{return!1}}function xl(r){let e=globalThis,t=r?.ESA_BLOB;if(Hk(t))return t;let i=e?.ESA_BLOB;return Hk(i)?i:null}async function Cl(r="default"){try{let{getStore:e}=await Promise.resolve().then(()=>Qr(Tx(),1));return e(r)}catch{return null}}var Rx,Kk=j(()=>{"use strict";Rx={name:"blob",async isAvailable(r){return xl(r)!==null?!0:await Cl()!==null},async init(r){},async get(r,e){let t=xl(e);if(t)try{let n=await t.get(r);return n?await n.text():null}catch(n){return console.warn(`[Blob] ESA get key="${r}" failed:`,n),null}let i=await Cl();if(!i)throw new Error("Blob not available");try{let n=await i.get(r);return n==null?null:typeof n=="string"?n:JSON.stringify(n)}catch(n){return console.warn(`[Blob] EdgeOne get key="${r}" failed:`,n),null}},async put(r,e,t){let i=xl(t);if(i){await i.put(r,e);return}let n=await Cl();if(!n)throw new Error("Blob not available");await n.set(r,e)},async delete(r,e){let t=xl(e);if(t){await t.delete(r);return}let i=await Cl();if(!i)throw new Error("Blob not available");await i.delete(r)},async list(r,e){let t=xl(e);if(t){let s=[],o;do{let a=await t.list({prefix:r,cursor:o});s.push(...(a?.keys||[]).map(c=>c.name)),o=a?.cursor}while(o);return s}let i=await Cl();if(!i)throw new Error("Blob not available");return((await i.list({prefix:r,paginate:!0}))?.blobs||[]).map(s=>s.key)},async health(r){let e=xl(r),t=await Cl();if(e)try{return await e.head("__health_check__"),{driver:"blob",platform:"ESA Blob (binding)",available:!0}}catch(i){return{driver:"blob",platform:"ESA Blob (binding)",available:!1,error:i?.message||String(i)}}if(t)try{return await t.get("__health_check__"),{driver:"blob",platform:"EdgeOne Blob (SDK)",available:!0}}catch(i){return{driver:"blob",platform:"EdgeOne Blob (SDK)",available:!1,error:i?.message||String(i)}}return{driver:"blob",available:!1,error:"No Blob storage available"}}}});function El(r){let e=r||(typeof process<"u"?process.env:{})||{},t=e.CF_ACCOUNT||e.CLOUDFLARE_ACCOUNT_ID,i=e.CF_KV_UUID||e.CLOUDFLARE_KV_NAMESPACE_ID,n=e.CF_API_KEY||e.CLOUDFLARE_API_TOKEN;return!t||!i||!n?null:{accountId:t,namespaceId:i,apiToken:n}}function V0(r,e){return`https://api.cloudflare.com/client/v4/accounts/${r.accountId}/storage/kv/namespaces/${r.namespaceId}${e}`}var Nx,Gk=j(()=>{"use strict";Nx={name:"cfkv",async isAvailable(r){return El(r)!==null},async init(r){},async get(r,e){let t=El(e);if(!t)throw new Error("Cloudflare KV API not configured");let i=V0(t,`/values/${encodeURIComponent(r)}`),n=await fetch(i,{headers:{Authorization:`Bearer ${t.apiToken}`}});if(n.status===404)return null;if(!n.ok)throw new Error(`Cloudflare KV API error: ${n.status}`);return await n.text()},async put(r,e,t){let i=El(t);if(!i)throw new Error("Cloudflare KV API not configured");let n=V0(i,`/values/${encodeURIComponent(r)}`),s=await fetch(n,{method:"PUT",headers:{Authorization:`Bearer ${i.apiToken}`},body:e});if(!s.ok)throw new Error(`Cloudflare KV API error: ${s.status}`)},async delete(r,e){let t=El(e);if(!t)throw new Error("Cloudflare KV API not configured");let i=V0(t,`/values/${encodeURIComponent(r)}`),n=await fetch(i,{method:"DELETE",headers:{Authorization:`Bearer ${t.apiToken}`}});if(!n.ok&&n.status!==404)throw new Error(`Cloudflare KV API error: ${n.status}`)},async list(r,e){let t=El(e);if(!t)throw new Error("Cloudflare KV API not configured");let i=[],n;do{let s=new URLSearchParams({prefix:r,limit:"1000"});n&&s.set("cursor",n);let o=V0(t,`/keys?${s}`),a=await fetch(o,{headers:{Authorization:`Bearer ${t.apiToken}`}});if(!a.ok)throw new Error(`Cloudflare KV API error: ${a.status}`);let c=await a.json();i.push(...(c.result||[]).map(l=>l.name)),n=c.result_info?.cursor}while(n);return i},async health(r){let e=El(r);if(!e)return{configured:!1,connected:!1,platform:"Cloudflare KV API (REST)",mode:"cfkv",error:"Missing CF_ACCOUNT, CF_KV_UUID, or CF_API_KEY"};try{return await this.get("__health_check__",r),{configured:!0,connected:!0,platform:"Cloudflare KV API (REST)",mode:"cfkv",accountId:e.accountId,namespaceId:e.namespaceId}}catch(t){return{configured:!0,connected:!1,platform:"Cloudflare KV API (REST)",mode:"cfkv",error:t?.message||String(t)}}}}});function qx(r){return"x_"}function Ox(r,e){return qx(e)+_H[r]}function FH(r,e){if(e==null){if(r.pk||r.nullable)return null;switch(r.type){case"string":return"";case"number":return 0;case"bool":return 0;case"json":return"null";case"date":return"";default:return""}}switch(r.type){case"string":return String(e);case"number":return typeof e=="number"?e:Number(e);case"bool":return e?1:0;case"json":return typeof e=="string"?e:JSON.stringify(e);case"date":return e instanceof Date?e.toISOString():typeof e=="number"?new Date(e).toISOString():String(e);default:return e}}function PH(r,e){if(e==null)return r.type==="json",null;switch(r.type){case"string":{let t=String(e);return t===""?null:t}case"number":return Number(e);case"bool":return e===1||e==="1"||e===!0||e==="true";case"json":{if(typeof e!="string")return e;try{return JSON.parse(e)}catch{return e}}case"date":return e;default:return e}}function W0(r,e){let t=Y0[r],i={};for(let n of t.columns){let s=n.key??n.name,o=PH(n,e[n.name]);o!=null&&(i[s]=o)}return i}function X0(r,e){let t=Y0[r],i=[],n=[];for(let s of t.columns){let o=s.key??s.name;i.push(s.name),n.push(FH(s,e?.[o]))}return{columns:i,values:n}}function TH(r,e){switch(r.type){case"number":return e==="mysql"?"BIGINT":"INTEGER";case"bool":return e==="mysql"?"TINYINT(1)":"INTEGER";case"string":case"json":case"date":return"TEXT";default:return"TEXT"}}function Po(r){return"`"+r+"`"}function UH(r,e,t){let i=[];for(let n of r.columns){let s=`${Po(n.name)} ${TH(n,e)}`;n.pk?s+=" PRIMARY KEY":n.nullable||(s+=" NOT NULL"),n.unique&&(s+=" UNIQUE"),i.push(s)}return`CREATE TABLE IF NOT EXISTS ${Po(t)} (${i.join(", ")})`}function RH(r){let e=r==="mysql"?"VARCHAR(255)":"TEXT";return`CREATE TABLE IF NOT EXISTS ${Po("schema_info")} (${Po("k")} ${e} PRIMARY KEY, ${Po("v")} TEXT)`}function Bl(r,e){let t=[RH(r)];for(let i of QH)t.push(UH(Y0[i],r,Ox(i,e)));return t}var To,QH,tc,Y0,_H,hle,gle,zk,Jk,Fu=j(()=>{"use strict";To=["settings","storages","users","shares","metas","plugins"],QH=[...To,"sshkeys"],tc={settings:"key",storages:"id",users:"id",shares:"id",metas:"id",plugins:"id",sshkeys:"id"},Y0={settings:{name:"settings",columns:[{name:"key",type:"string",pk:!0},{name:"value",type:"string",nullable:!0},{name:"help",type:"string",nullable:!0},{name:"type",type:"string",nullable:!0},{name:"options",type:"string",nullable:!0},{name:"group",type:"number",nullable:!0},{name:"flag",type:"number",nullable:!0},{name:"index",type:"number",nullable:!0}]},storages:{name:"storages",columns:[{name:"id",type:"number",pk:!0},{name:"mount_path",type:"string",unique:!0},{name:"order",type:"number",nullable:!0},{name:"driver",type:"string",nullable:!0},{name:"cache_expiration",type:"number",nullable:!0},{name:"custom_cache_policies",type:"string",nullable:!0},{name:"status",type:"string",nullable:!0},{name:"addition",type:"string",nullable:!0},{name:"remark",type:"string",nullable:!0},{name:"modified",type:"date",nullable:!0},{name:"disabled",type:"bool",nullable:!0},{name:"disable_index",type:"bool",nullable:!0},{name:"enable_sign",type:"bool",nullable:!0},{name:"seed_policy",type:"string",nullable:!0},{name:"order_by",type:"string",nullable:!0},{name:"order_direction",type:"string",nullable:!0},{name:"extract_folder",type:"string",nullable:!0},{name:"web_proxy",type:"bool",nullable:!0},{name:"webdav_policy",type:"string",nullable:!0},{name:"proxy_range",type:"bool",nullable:!0},{name:"down_proxy_url",type:"string",nullable:!0},{name:"disable_proxy_sign",type:"bool",nullable:!0}]},users:{name:"users",columns:[{name:"id",type:"number",pk:!0},{name:"username",type:"string",unique:!0},{name:"password",type:"string",nullable:!0},{name:"base_path",type:"string",nullable:!0},{name:"role",type:"number",nullable:!0},{name:"disabled",type:"bool",nullable:!0},{name:"permission",type:"number",nullable:!0},{name:"salt",type:"string",nullable:!0},{name:"otp_secret",type:"string",nullable:!0},{name:"sso_id",type:"string",nullable:!0},{name:"authn",type:"string",nullable:!0},{name:"allow_ldap",type:"bool",nullable:!0},{name:"pwd_update_at",type:"date",nullable:!0}]},shares:{name:"shares",columns:[{name:"id",type:"string",pk:!0},{name:"files_raw",key:"files",type:"json",nullable:!0},{name:"expires",type:"date",nullable:!0},{name:"pwd",type:"string",nullable:!0},{name:"accessed",type:"number",nullable:!0},{name:"max_accessed",type:"number",nullable:!0},{name:"creator_id",type:"number",nullable:!0},{name:"disabled",type:"bool",nullable:!0},{name:"remark",type:"string",nullable:!0},{name:"readme",type:"string",nullable:!0},{name:"header",type:"string",nullable:!0},{name:"order_by",type:"string",nullable:!0},{name:"order_direction",type:"string",nullable:!0},{name:"extract_folder",type:"string",nullable:!0}]},metas:{name:"metas",columns:[{name:"id",type:"number",pk:!0},{name:"path",type:"string",unique:!0},{name:"read_users",type:"json",nullable:!0},{name:"read_users_sub",type:"bool",nullable:!0},{name:"write_users",type:"json",nullable:!0},{name:"write_users_sub",type:"bool",nullable:!0},{name:"password",type:"string",nullable:!0},{name:"p_sub",type:"bool",nullable:!0},{name:"write",type:"bool",nullable:!0},{name:"w_sub",type:"bool",nullable:!0},{name:"hide",type:"string",nullable:!0},{name:"h_sub",type:"bool",nullable:!0},{name:"readme",type:"string",nullable:!0},{name:"r_sub",type:"bool",nullable:!0},{name:"header",type:"string",nullable:!0},{name:"header_sub",type:"bool",nullable:!0}]},sshkeys:{name:"sshkeys",columns:[{name:"id",type:"number",pk:!0},{name:"user_id",type:"number",nullable:!0},{name:"title",type:"string",nullable:!0},{name:"fingerprint",type:"string",nullable:!0},{name:"key_str",type:"string",nullable:!0},{name:"added_time",type:"date",nullable:!0},{name:"last_used_time",type:"date",nullable:!0}]},plugins:{name:"plugins",columns:[{name:"id",type:"string",pk:!0},{name:"name",type:"string",nullable:!0},{name:"version",type:"string",nullable:!0},{name:"description",type:"string",nullable:!0},{name:"author",type:"string",nullable:!0},{name:"homepage",type:"string",nullable:!0},{name:"repository",type:"string",nullable:!0},{name:"icon",type:"string",nullable:!0},{name:"type",type:"string",nullable:!0},{name:"enabled",type:"bool",nullable:!0},{name:"high_privilege",type:"bool",nullable:!0},{name:"permissions",type:"json",nullable:!0},{name:"entry_url",type:"string",nullable:!0},{name:"script_content",type:"string",nullable:!0},{name:"style_content",type:"string",nullable:!0},{name:"config_schema",type:"json",nullable:!0},{name:"config_values",type:"json",nullable:!0},{name:"target_hooks",type:"json",nullable:!0},{name:"is_builtin",type:"bool",nullable:!0},{name:"tags",type:"json",nullable:!0},{name:"created_at",type:"date",nullable:!0},{name:"updated_at",type:"date",nullable:!0}]}},_H={settings:"setting_items",storages:"storages",users:"users",shares:"sharing_dbs",metas:"metas",plugins:"plugins",sshkeys:"ssh_public_keys"};hle=Bl("sqlite"),gle=Bl("mysql"),zk=[`CREATE TABLE IF NOT EXISTS ${Po("kv")} (${Po("key")} TEXT PRIMARY KEY, ${Po("value")} TEXT NOT NULL)`],Jk=["CREATE TABLE IF NOT EXISTS `kv` (`key` VARCHAR(512) PRIMARY KEY, `value` LONGTEXT NOT NULL)"]});function jk(r){if(!r||typeof r!="object")return!1;try{return typeof r.prepare=="function"}catch{return!1}}function Kn(r){let e=typeof globalThis<"u"?globalThis:{};for(let t of["DB","OPENLIST_DB"]){let i=r?.[t];if(jk(i))return i;let n=e?.[t];if(jk(n))return n}return null}async function Uo(r,e){if(!$k.get(r)){for(let t of[...zk,...Bl("sqlite",e)])await r.prepare(t).run();$k.set(r,!0)}}var $k,Mx,Vk=j(()=>{"use strict";Fu();$k=new WeakMap;Mx={name:"d1",async isAvailable(r){return Kn(r)!=null},async init(r){let e=Kn(r);e&&await Uo(e)},async get(r,e){let t=Kn(e);if(!t)throw new Error("D1 binding not found");return await Uo(t,e),(await t.prepare("SELECT value FROM kv WHERE key = ?").bind(r).first())?.value||null},async put(r,e,t){let i=Kn(t);if(!i)throw new Error("D1 binding not found");await Uo(i,t),await i.prepare("INSERT OR REPLACE INTO kv (key, value) VALUES (?, ?)").bind(r,e).run()},async delete(r,e){let t=Kn(e);if(!t)throw new Error("D1 binding not found");await Uo(t,e),await t.prepare("DELETE FROM kv WHERE key = ?").bind(r).run()},async list(r,e){let t=Kn(e);if(!t)throw new Error("D1 binding not found");return await Uo(t,e),((await t.prepare("SELECT key FROM kv WHERE key LIKE ? ORDER BY key").bind(`${r}%`).all()).results||[]).map(n=>n.key)},async query(r,e,t){let i=Kn(t);if(!i)throw new Error("D1 binding not found");return await Uo(i,t),(await i.prepare(r).bind(...e).all()).results||[]},async execute(r,e,t){let i=Kn(t);if(!i)throw new Error("D1 binding not found");await Uo(i,t),await i.prepare(r).bind(...e).run()},async batch(r,e){let t=Kn(e);if(!t)throw new Error("D1 binding not found");await Uo(t,e);let i=100,n=r.map(s=>t.prepare(s.sql).bind(...s.params));for(let s=0;s{"use strict";Hx={name:"do",async isAvailable(r){return Lx(r)!=null},async init(r){let e=Ds(r);e&&typeof e.init=="function"&&await e.init()},async get(r,e){let t=Ds(e);if(!t)throw new Error("DO binding not found");return await t.kvGet(r)},async put(r,e,t){let i=Ds(t);if(!i)throw new Error("DO binding not found");await i.kvPut(r,e)},async delete(r,e){let t=Ds(e);if(!t)throw new Error("DO binding not found");await t.kvDelete(r)},async list(r,e){let t=Ds(e);if(!t)throw new Error("DO binding not found");return await t.kvList(r)},async query(r,e,t){let i=Ds(t);if(!i)throw new Error("DO binding not found");return await i.sqlQuery(r,e)},async execute(r,e,t){let i=Ds(t);if(!i)throw new Error("DO binding not found");await i.sqlExecute(r,e)},async batch(r,e){let t=Ds(e);if(!t)throw new Error("DO binding not found");await t.sqlBatch(r)},async health(r){if(!Lx(r))return{configured:!1,connected:!1,platform:"Cloudflare Durable Objects",mode:"do",error:"DO binding not found (expected env.DO)"};try{return await Ds(r).health(),{configured:!0,connected:!0,platform:"Cloudflare Durable Objects (SQLite)",mode:"do",doId:Wk(r)}}catch(t){return{configured:!0,connected:!1,platform:"Cloudflare Durable Objects",mode:"do",error:t?.message||String(t)}}}}});function Zk(){return typeof process<"u"&&process.release?.name==="node"}function Kx(r){let e=r||(typeof process<"u"?process.env:{})||{},t=e?.MYSQL_URLS;if(t)return t;let i=e?.MYSQL_HOST;return i?{host:i,port:Number(e?.MYSQL_PORT||3306),user:e?.MYSQL_USER||"",password:e?.MYSQL_PASS||"",database:e?.MYSQL_NAME||""}:null}async function Qs(r){let e=Kx(r);if(!e)return null;let t=JSON.stringify(e);if(Z0&&eS===t)return Z0;let i="mysql2/promise",{createPool:n}=await import(i);return Z0=n(e),eS=t,Z0}async function Ro(r,e){let t=qx(e);if(tS!==t){for(let i of[...Jk,...Bl("mysql",e)])await r.query(i);tS=t}}var Z0,eS,tS,Gx,rS=j(()=>{"use strict";Fu();Z0=null,eS=null;tS=null;Gx={name:"mysql",async isAvailable(r){return Zk()?Kx(r)!=null:!1},async init(r){let e=await Qs(r);e&&await Ro(e)},async get(r,e){let t=await Qs(e);if(!t)throw new Error("MySQL pool not available");await Ro(t,e);let[i]=await t.query("SELECT `value` FROM `kv` WHERE `key` = ?",[r]);return i?.[0]?.value||null},async put(r,e,t){let i=await Qs(t);if(!i)throw new Error("MySQL pool not available");await Ro(i,t),await i.query("INSERT INTO `kv` (`key`, `value`) VALUES (?, ?) ON DUPLICATE KEY UPDATE `value` = VALUES(`value`)",[r,e])},async delete(r,e){let t=await Qs(e);if(!t)throw new Error("MySQL pool not available");await Ro(t,e),await t.query("DELETE FROM `kv` WHERE `key` = ?",[r])},async list(r,e){let t=await Qs(e);if(!t)throw new Error("MySQL pool not available");await Ro(t,e);let[i]=await t.query("SELECT `key` FROM `kv` WHERE `key` LIKE ? ORDER BY `key`",[`${r}%`]);return(i||[]).map(n=>n.key)},async query(r,e,t){let i=await Qs(t);if(!i)throw new Error("MySQL pool not available");await Ro(i,t);let[n]=await i.query(r,e);return n||[]},async execute(r,e,t){let i=await Qs(t);if(!i)throw new Error("MySQL pool not available");await Ro(i,t),await i.query(r,e)},async batch(r,e){let t=await Qs(e);if(!t)throw new Error("MySQL pool not available");await Ro(t,e);let i=await t.getConnection();try{await i.beginTransaction();for(let n of r)await i.query(n.sql,n.params);await i.commit()}catch(n){try{await i.rollback()}catch{}throw n}finally{i.release()}},async health(r){if(!Zk())return{configured:!1,connected:!1,platform:"MySQL (mysql2)",mode:"mysql",error:"MySQL backend requires Node.js runtime"};if(!Kx(r))return{configured:!1,connected:!1,platform:"MySQL (mysql2)",mode:"mysql",error:"MySQL config not found (expected MYSQL_URLS or MYSQL_HOST)"};try{return await(await Qs(r)).query("SELECT 1"),{configured:!0,connected:!0,platform:"MySQL (mysql2)",mode:"mysql"}}catch(t){return{configured:!0,connected:!1,platform:"MySQL (mysql2)",mode:"mysql",error:t?.message||String(t)}}}}});var Pu,eh,iS=j(()=>{"use strict";Pu=new Map,eh={name:"memory",async isAvailable(){return!0},async init(){},async get(r){return Pu.get(r)??null},async put(r,e){Pu.set(r,e)},async delete(r){Pu.delete(r)},async list(r){return[...Pu.keys()].filter(e=>e.startsWith(r))},async health(){return{configured:!0,connected:!0,platform:"Memory",mode:"memory",hasData:Pu.size>0,error:null}}}});var nS,sS,oS=j(()=>{"use strict";nS="openlist_config",sS={name:"map",async load(r,e){let t=await r.get(nS,e);if(!t)return null;try{return JSON.parse(t)}catch(i){return console.error("[mapFormat] Failed to parse JSON:",i),null}},async save(r,e,t){let i=JSON.stringify(r);return await e.put(nS,i,t),!0}}});function NH(r){return r>="a"&&r<="z"||r>="A"&&r<="Z"||r>="0"&&r<="9"||r==="_"}function aS(r){let e=String(r??"");if(e==="")return"0";if(/^[A-Za-z0-9_]+$/.test(e))return e;let t="";for(let i of e)if(NH(i))t+=i;else for(let n of new TextEncoder().encode(i))t+="x"+n.toString(16).padStart(2,"0");return t}function zx(r){return`${aS(r)}_`}function cS(r,e){return`${zx(r)}${aS(e)}`}var lS=j(()=>{"use strict"});function th(r){return zx(r)}function Tu(r,e){return cS(r,e)}var dS,uS,fS=j(()=>{"use strict";Fu();lS();dS="openlist_config";uS={name:"key",async load(r,e){if(!await r.get(dS,e))return null;let i={};for(let n of To){let s=th(n),o=await r.list(s,e),a=[];for(let c of o){let l=await r.get(c,e);if(l)try{a.push(JSON.parse(l))}catch(d){console.warn(`[keyFormat] Failed to parse ${c}:`,d)}}i[n]=a}return i},async save(r,e,t){for(let i of To){let n=th(i),s=await e.list(n,t);for(let o of s)await e.delete(o,t)}for(let i of To){let n=tc[i],s=r?.[i]||[];for(let o of s){let a=String(o?.[n]??"");if(!a)continue;let c=Tu(i,a),l=JSON.stringify(o);await e.put(c,l,t)}}return await e.put(dS,String(Date.now()),t),!0},async getTable(r,e,t){let i=th(r),n=await e.list(i,t),s=[];for(let o of n){let a=await e.get(o,t);if(a)try{s.push(JSON.parse(a))}catch(c){console.warn(`[keyFormat] Failed to parse ${o}:`,c)}}return s},async saveTable(r,e,t,i){let n=tc[r],s=th(r),o=await t.list(s,i);for(let a of o)await t.delete(a,i);for(let a of e){let c=String(a?.[n]??"");if(!c)continue;let l=Tu(r,c),d=JSON.stringify(a);await t.put(l,d,i)}},async getRecord(r,e,t,i){let n=Tu(r,e),s=await t.get(n,i);if(!s)return null;try{return JSON.parse(s)}catch(o){return console.warn(`[keyFormat] Failed to parse ${n}:`,o),null}},async saveRecord(r,e,t,i,n){let s=Tu(r,e),o=JSON.stringify(t);await i.put(s,o,n)},async deleteRecord(r,e,t,i){let n=Tu(r,e);await t.delete(n,i)}}});function _s(r){return"`"+r+"`"}function Jx(r,e,t,i){let n=e.map(o=>_s(o)).join(", "),s=e.map(()=>"?").join(", ");if(i.name==="mysql"){let o=e.slice(1).map(c=>`${_s(c)} = VALUES(${_s(c)})`).join(", ");return{sql:o?`INSERT INTO ${r} (${n}) VALUES (${s}) ON DUPLICATE KEY UPDATE ${o}`:`INSERT INTO ${r} (${n}) VALUES (${s})`,params:t}}return{sql:`INSERT OR REPLACE INTO ${r} (${n}) VALUES (${s})`,params:t}}function Gn(r,e){return _s(Ox(r,e))}var AS,hS,gS=j(()=>{"use strict";Fu();AS="openlist_config";hS={name:"sql",async load(r,e){if(!r.query)throw new Error(`Driver ${r.name} does not support SQL queries`);let t=await r.query("SELECT v FROM schema_info WHERE k = ?",[AS],e);if(!t||t.length===0)return null;let i={};for(let n of To){let s=await r.query(`SELECT * FROM ${Gn(n,e)}`,[],e);i[n]=s.map(o=>W0(n,o))}return i},async save(r,e,t){if(!e.batch)throw new Error(`Driver ${e.name} does not support batch operations`);let i=[];for(let n of To){let s=tc[n],o=r?.[n]||[],a=[];for(let l of o){let{columns:d,values:u}=X0(n,l),f=Jx(Gn(n,t),d,u,e);i.push({sql:f.sql,params:f.params});let h=l?.[s];h!=null&&a.push(String(h))}let c=a.length>0?`DELETE FROM ${Gn(n,t)} WHERE ${_s(s)} NOT IN (${a.map(()=>"?").join(", ")})`:`DELETE FROM ${Gn(n,t)}`;i.push({sql:c,params:a})}return i.push(Jx(_s("schema_info"),["k","v"],[AS,String(Date.now())],e)),await e.batch(i,t),!0},async getTable(r,e,t){if(!e.query)throw new Error(`Driver ${e.name} does not support SQL queries`);let i=r;return(await e.query(`SELECT * FROM ${Gn(i,t)}`,[],t)).map(s=>W0(i,s))},async saveTable(r,e,t,i){if(!t.batch)throw new Error(`Driver ${t.name} does not support batch operations`);let n=r,s=[{sql:`DELETE FROM ${Gn(n,i)}`,params:[]}];for(let o of e){let{columns:a,values:c}=X0(n,o),l=a.map(()=>"?").join(", "),d=`INSERT INTO ${Gn(n,i)} (${a.map(u=>_s(u)).join(", ")}) VALUES (${l})`;s.push({sql:d,params:c})}await t.batch(s,i)},async getRecord(r,e,t,i){if(!t.query)throw new Error(`Driver ${t.name} does not support SQL queries`);let n=r,s=tc[n],o=await t.query(`SELECT * FROM ${Gn(n,i)} WHERE ${_s(s)} = ?`,[e],i);return o.length>0?W0(n,o[0]):null},async saveRecord(r,e,t,i,n){if(!i.execute)throw new Error(`Driver ${i.name} does not support SQL execution`);let s=r,{columns:o,values:a}=X0(s,t),{sql:c}=Jx(Gn(s,n),o,a,i);await i.execute(c,a,n)},async deleteRecord(r,e,t,i){if(!t.execute)throw new Error(`Driver ${t.name} does not support SQL execution`);let n=r,s=tc[n];await t.execute(`DELETE FROM ${Gn(n,i)} WHERE ${_s(s)} = ?`,[e],i)}}});var bS={};xn(bS,{NO_STORAGE_MESSAGE:()=>Fs,getStorageBackend:()=>Wx,getStoreBackend:()=>nh,getStoreConfigErrorDetail:()=>rc,getStoreStatus:()=>Jn,isPersistentStorageAvailable:()=>Xx,isServerlessRuntime:()=>zn,readDriver:()=>rh,readFormat:()=>ih});function IS(r,e,t){let i=t||(typeof process<"u"?process.env:{})||{};return String(i[r]||"").trim().toLowerCase()||e}function rh(r){let e=r||(typeof process<"u"?process.env:{})||{},t=IS("DB_DRIVER","auto",r);return t==="json"?(console.warn("[DEPRECATED] DB_DRIVER=json is deprecated. Use DB_FORMAT=map instead."),"auto"):t}function ih(r){let e=r||(typeof process<"u"?process.env:{})||{};return String(e.DB_DRIVER||"").trim().toLowerCase()==="json"?"map":String(e.DB_DRIVER||"").trim().toLowerCase()==="kv"&&!e.DB_FORMAT?"key":IS("DB_FORMAT","map",r)}function zn(r){let e=globalThis;try{if(r?.__requestOrigin||r?.__requestContext||r?.__makersContext||r?.EDGEONE_BLOB||e?.EDGEONE_BLOB||typeof e?.EdgeOne<"u"||typeof e.WebSocketPair=="function"||typeof e.caches<"u"&&e.caches?.default||r?.ESA_BLOB||e?.ESA_BLOB||typeof e?.ESA<"u"||r?.TENCENTCLOUD_SCF_FUNCTIONNAME||typeof process<"u"&&process.env?.TENCENTCLOUD_SCF_FUNCTIONNAME)return!0}catch{}return!1}async function wS(r){let e=[];qH(r)&&e.push(Gx),e.push(Mx,$0,Nx,Rx,Hx);for(let t of e)if(await t.isAvailable(r))return console.log(`[DB] Auto-detected driver: ${t.name}`),t;if(zn(r))throw Uu("NO_STORAGE",Fs);return console.warn("[DB] No storage binding detected, falling back to memory (data will not persist)."),eh}function qH(r){let e=r||{},t=typeof process<"u"?process.env||{}:{};return!!(e.MYSQL_URLS||t.MYSQL_URLS||e.MYSQL_HOST||t.MYSQL_HOST)}function Uu(r,e,t){let i=new Error(e);return i.storeCode=r,t&&(i.storeHint=t),i}function OH(r){let e=r?.storeHint;return typeof e=="string"&&e.trim()?e.trim():null}function xS(r){return r?.storeCode||"DRIVER_ERROR"}async function HH(r,e){let t=`${e}:${zn(r)?"sl":"local"}:${CS(r)}`;if(jx?.key===t)return jx.driver;let i=null;try{let n=await wS(r);n&&n!==eh&&n.name!==e&&(i=n)}catch{}return jx={key:t,driver:i},i}function KH(r){return r?`Auto-detection would pick: DB_DRIVER=${r.name} (or simply set DB_DRIVER=auto). +`:""}function GH(r,e){let t=r,i=!!(t.get&&t.put&&t.delete&&t.list),n=!!(r.query&&r.execute&&r.batch);if(e.name==="sql"?n:i)return;let o=[i?"map | key":null,n?"sql":null].filter(Boolean).join(" | ");throw Uu("INVALID_COMBINATION",`Invalid storage combination: DB_FORMAT="${e.name}" cannot be used with DB_DRIVER="${r.name}". +Driver "${r.name}" supports: ${o||"no format"}. +`+(e.name==="sql"?`The "sql" format needs a relational driver (SQL query support): d1 | do | mysql. +`:`The "${e.name}" format needs a key-value driver (get/put/delete/list): kv | cfkv | blob | d1 | do | mysql. +`)+`Fix DB_FORMAT or DB_DRIVER. See ${MH}`)}async function zH(r,e){if(r==="auto")return await wS(e);let t=pS[r];if(!t)throw Uu("UNKNOWN_DRIVER",`Unknown DB_DRIVER "${r}". Valid values: auto, ${Object.keys(pS).join(", ")}`);let i=!1;try{i=await t.isAvailable(e)}catch{i=!1}if(t===eh&&zn(e))throw Uu("NO_STORAGE",Fs);if(!i){let n=await HH(e,r);throw Uu("DRIVER_UNAVAILABLE",`DB_DRIVER is set to "${r}", but that driver is not available in this runtime. +No fallback is performed for an explicitly configured driver. +`+KH(n)+`Check the binding/credentials for "${r}", or set DB_DRIVER=auto to let the platform pick an available backend. +`+(LH[r]||"")+`Environment: ${zn(e)?"serverless/worker":"local/container"}`,n?`Set DB_DRIVER=${n.name} (or DB_DRIVER=auto) in your deployment variables.`:`Set DB_DRIVER=auto in your deployment variables, or provide the binding/credentials required by "${r}".`)}return console.log(`[DB] Using explicitly configured driver: ${t.name}`),t}function JH(r){switch(r){case"map":return sS;case"key":return uS;case"sql":return hS;default:throw new Error(`Unknown format: ${r}`)}}function CS(r){if(r&&(typeof r=="object"||typeof r=="function")){let e=yS.get(r);return e===void 0&&(e=++jH,yS.set(r,e)),String(e)}return"none"}async function Wx(r){let e=rh(r),t=ih(r),i=zn(r)?"sl":"local",n=`${e}:${t}:${i}:${CS(r)}`;if($x&&Vx&&mS===n)return{driver:$x,format:Vx};let s=await zH(e,r),o=JH(t);if(GH(s,o),s.init)try{await s.init(r)}catch(a){console.warn(`[DB] Driver init failed (${s.name}):`,a)}return $x=s,Vx=o,mS=n,console.log(`[DB] Using driver=${s.name}, format=${o.name}`),{driver:s,format:o}}async function nh(r){let{driver:e,format:t}=await Wx(r);return{name:e.name,load:i=>t.load(e,i),save:(i,n)=>t.save(i,e,n),isConfigured:i=>e.isAvailable(i),init:i=>e.init(i),health:i=>e.health(i)}}async function Jn(r){let e=null,t=null,i=null,n=null;try{let o=await Wx(r);e=o.driver,t=o.format}catch(o){let a=String(o?.message||o),c=a.includes("No storage backend is available");return{driver:"none",format:"none",available:!1,configError:c?Fs:a,configErrorCode:xS(o),configSuggestion:OH(o)||(c?"Bind a storage backend (D1 / KV / Blob) or set DB_DRIVER=auto.":null)}}let s=null;try{s=await e.health(r)}catch(o){s={connected:!1,error:o?.message||String(o)}}if(e.name==="kv"){try{i=ec(r)}catch{i=null}i&&(n="PROXY_CONFIG",console.error(`[DB] KV proxy configuration error: +`+i))}return{driver:e.name,format:t.name,...s||{},...i?{configError:i,configErrorCode:n,available:!1}:{}}}async function Xx(r){let e=await ES(r);return BS(e)}async function ES(r){try{return await Jn(r)}catch(e){return{driver:"none",format:"none",available:!1,configError:String(e?.message||e),configErrorCode:xS(e)}}}function BS(r){let e=String(r?.driver??"none"),t=e!=="none"&&e!=="",i=e==="memory",n=!!r?.configError,s=r?.available!==!1;return t&&!i&&!n&&s}async function rc(r,e={}){let t=(l,d)=>{if(e.silent)return;let u=l+d;Yx!==u&&(Yx=u,console.error(l+d))};if(!r||typeof r!="object")return{code:null,message:null,suggestion:null};let i=String(r?.DB_DRIVER||"").trim().toLowerCase()==="kv";if(i){let l=ec(r);if(l)return t(`[DB] KV proxy configuration error: +`,l),{code:"PROXY_CONFIG",message:l,suggestion:"Set EO_KV_URLS to the correct deployment origin, or use DB_DRIVER=auto."}}let n=await ES(r);if(BS(n))return Yx=null,{code:null,message:null,suggestion:null};if(!i&&String(n?.driver??"")==="kv"){let l=ec(r);if(l)return t(`[DB] KV proxy configuration error: +`,l),{code:"PROXY_CONFIG",message:l,suggestion:"Set EO_KV_URLS to the correct deployment origin, or use DB_DRIVER=auto."};if(n?.mode==="proxy"&&n?.error?.includes("401")){let d=`KV proxy rejected the internal call (HTTP 401). The JWT_SECRET used by this deployment does not match the one configured on the Edge Functions serving the proxy. Make sure both use the same JWT_SECRET. +Alternatively set EO_KV_URLS to the correct deployment origin.`;return t(`[DB] KV proxy authentication failed: +`,d),{code:"PROXY_CONFIG",message:d,suggestion:"Use the same JWT_SECRET (>=16 chars) on the Edge Function and this deployment."}}}let s=n?.configError?String(n.configError):null;if(s)return t(`[DB] Storage configuration error: +`,s),{code:n?.configErrorCode||"DRIVER_ERROR",message:s,suggestion:n?.configSuggestion||null};if(String(n?.driver??"none")==="memory")return t(`[DB] Storage configuration error: +`,Fs),{code:"NO_STORAGE",message:Fs,suggestion:"Bind a storage backend (D1 / KV / Blob) or set DB_DRIVER=auto."};let o=n?.error?String(n.error):null;if(o)return t(`[DB] Storage unhealthy: +`,o),{code:"HEALTH_ERROR",message:o,suggestion:"Check the credentials/bindings of the configured driver, or set DB_DRIVER=auto."};let a=String(n?.driver??"none"),c=a==="none"||a===""?Fs:`Storage driver "${a}" is not available in this runtime. Check its configuration and bindings, or set DB_DRIVER=auto.`;return t(`[DB] Storage unavailable: +`,c),{code:a==="none"||a===""?"NO_STORAGE":"DRIVER_ERROR",message:c,suggestion:a==="none"||a===""?"Bind a storage backend (D1 / KV / Blob) or set DB_DRIVER=auto.":`Set DB_DRIVER=auto, or provide the binding/credentials required by "${a}".`}}var Fs,pS,MH,LH,jx,$x,Vx,mS,yS,jH,Yx,ic=j(()=>{"use strict";Kk();Gk();Ux();Vk();Xk();rS();iS();oS();fS();gS();Fs=`No storage backend is available. Data cannot be persisted in this runtime (serverless environments cannot use in-memory storage). Configure one of the following: 1. EdgeOne Blob (recommended, zero config if the project provides it) 2. EdgeOne KV: bind a KV namespace to Edge Functions, then set DB_DRIVER=kv (DB_FORMAT=map or key) and JWT_SECRET 3. Cloudflare KV / D1: bind the namespace and set DB_DRIVER accordingly Environment variables to set in the project settings: DB_DRIVER=blob | kv | cfkv | d1 | do | mysql - DB_FORMAT=map | key | sql`,Hk={blob:Ix,cfkv:wx,kv:N0,d1:Ex,do:bx,mysql:kx};_x=null,Fx=null,Kk=null,Gk=new WeakMap,rH=0});async function nH(){if(j0)return j0;if(Vk>=3)return null;Vk++;try{let{getStore:r}=await Promise.resolve().then(()=>Dr(mx(),1));j0=r({name:"openlist_db",consistency:"strong"})}catch{return null}return j0}function Wk(){Yk||(Yk=!0,!(typeof process>"u"||typeof process.on!="function")&&process.on("uncaughtException",r=>{(r?.message?.includes("RESP")||r?.message?.includes("Unknown type")||r?.stack?.includes("processResponses"))&&console.error("[KV/RESP] Caught uncaught exception from storage binding, continuing:",r.message)}))}function Zk(r){r&&(Rx=r)}function Xk(r){if(!r||typeof r!="object")return!1;try{return typeof r.get!="function"?!1:typeof r.put=="function"||typeof r.set=="function"}catch{return!1}}function sH(r,e){let t=async()=>(await Promise.resolve().then(()=>(yx(),Ak))).kvDriver;return{async get(i){return(await t()).get(i,e)},async put(i,n){return(await t()).put(i,n,e)},async delete(i){return(await t()).delete(i,e)},async list(i={}){return{keys:(await(await t()).list(i?.prefix||"",e)).map(s=>({name:s,key:s}))}}}}async function Nx(r){r&&(Rx=r);let e=r||Rx||(typeof process<"u"?process.env:{}),t=typeof globalThis<"u"?globalThis:{};if(e&&typeof e=="object"){let o=bu.get(e);if(o)return o}let i=Xk(e?.KV)?e.KV:Xk(t?.KV)?t.KV:null;if(String(e?.DB_DRIVER||"").trim().toLowerCase()==="kv"&&!i){let o;try{o=e?.EO_KV_URLS||e?.__requestOrigin}catch{o=void 0}let a=gl(o,e);if(a){let c={binding:sH(a,e),platform:"EdgeOne KV (via Edge Function proxy)",mode:"proxy"};return e&&typeof e=="object"&&bu.set(e,c),c}console.warn("[DB] getKvBinding: KV proxy requested but no origin available (set EO_KV_URLS or ensure request origin is injected)")}try{let o=await nH();if(o){Wk();let a={binding:o,platform:"EdgeOne Blob (@edgeone/pages-blob, strong consistency)",mode:"blob"};return e&&typeof e=="object"&&bu.set(e,a),a}}catch(o){console.error(`[DB] getKvBinding: EdgeOne Blob init failed: ${o?.message||o}`,`stack=${o?.stack?.substring(0,300)||""}`)}if(i){let o=!!(e&&(e.EDGEONE||e.EO_REGION))||!!(t.EDGEONE||typeof t.EdgeOne<"u");o&&Wk();let c={binding:i,platform:o?"EdgeOne KV (KV)":"Cloudflare / EdgeOne KV (KV)",mode:"binding"};return e&&typeof e=="object"&&bu.set(e,c),c}{let o=e.CF_ACCOUNT||(typeof process<"u"?process.env.CF_ACCOUNT:""),a=e.CF_KV_UUID||(typeof process<"u"?process.env.CF_KV_UUID:""),c=e.CF_API_KEY||(typeof process<"u"?process.env.CF_API_KEY:"");if(o&&a&&c){let l={binding:{type:"cf_rest",accountId:o,namespaceId:a,token:c},platform:"Cloudflare KV (REST API)",mode:"api"};return e&&typeof e=="object"&&bu.set(e,l),l}}let s=String(e?.DB_DRIVER||"").trim().toLowerCase();return console.warn(s&&s!=="auto"?`[DB] getKvBinding: no KV-style binding found; DB_DRIVER="${s}" is served by getStorageBackend() instead. This is expected.`:"[DB] getKvBinding: no KV/Blob binding found in auto detection."),{binding:null,platform:"none",mode:"none"}}async function oH(r,e="openlist_config"){let{binding:t,mode:i}=r;if(i==="none"||!t)return null;try{if(i==="blob"){let n=await t.get(e,{type:"json"});if(n)return n;let s=await t.get(e);if(s)return typeof s=="string"?JSON.parse(s):s}else if(i==="binding"||i==="proxy"){let n=null;try{n=await t.get(e,"text")}catch{n=await t.get(e)}if(n==null&&(n=await t.get(e)),n)return typeof n=="string"?JSON.parse(n):n}else if(t.type==="cf_rest"){let n=`https://api.cloudflare.com/client/v4/accounts/${t.accountId}/storage/kv/namespaces/${t.namespaceId}/values/${e}`,s=await fetch(n,{headers:{Authorization:`Bearer ${t.token}`}});if(s.ok){let o=await s.text();return JSON.parse(o)}}}catch(n){console.error("[KV/Blob Store] Error reading key:",e,n)}return null}async function wl(r){let e=await Nx(r),t=e.mode!=="none",i=!1,n=null;if(t)try{let s=await oH(e,"openlist_config");return i=!0,{configured:!0,connected:!0,platform:e.platform,mode:e.mode,hasData:!!s,error:null}}catch(s){n=s.message||String(s)}return{configured:t,connected:i,platform:e.platform,mode:e.mode,hasData:!1,error:n}}async function eS(r){let{getStorageBackend:e}=await Promise.resolve().then(()=>(ec(),$k)),{driver:t}=await e(r);return t}async function tc(r,e){try{let i=await(await eS(r)).get(e,r);if(i==null)return null;let n=typeof i?.text=="function"?await i.text():i;return String(n).trim()||null}catch(t){return console.warn(`[Secret] read "${e}" failed:`,t),null}}async function $0(r,e,t){try{return await(await eS(r)).put(e,t,r),!0}catch(i){return console.warn(`[Secret] cannot persist "${e}": ${i?.message||i}`),!1}}function tS(){let r=new Uint8Array(32);return crypto.getRandomValues(r),Array.from(r,e=>e.toString(16).padStart(2,"0")).join("")}var j0,Vk,Yk,Rx,bu,qx=V(()=>{"use strict";F0();F0();j0=null,Vk=0;Yk=!1;Rx=null,bu=new WeakMap});var Kr={};qn(Kr,{ENCRYPTION_SECRET_KV_KEY:()=>Cl,__resetDbCacheForTest:()=>hH,__setStoreBackendLoaderForTest:()=>gH,defaultDb:()=>nc,ensureEncryptionSecret:()=>Kx,getDb:()=>ne,getDbLoadError:()=>dH,getKvBinding:()=>Nx,getKvStatus:()=>wl,getMetas:()=>EH,getPlugins:()=>BH,getSettings:()=>Kn,getStorages:()=>CH,getStoreStatus:()=>Hn,getUsers:()=>xH,isDbShell:()=>oS,isDbTrusted:()=>th,isDbWriteBlocked:()=>uH,isEncryptionReady:()=>ih,readPersistedSecret:()=>tc,resolvePath:()=>tt,saveDb:()=>fe,setEnvCtx:()=>Lx,writePersistedSecret:()=>$0});function th(){return Ro}function dH(){return ic}function uH(){return Mx}function oS(r){if(!r||typeof r!="object")return!0;let e=Array.isArray(r.storages)?r.storages.length:0,t=Array.isArray(r.shares)?r.shares.length:0,i=Array.isArray(r.metas)?r.metas.length:0,n=Array.isArray(r.plugins)?r.plugins.length:0;if(e+t+i+n>0||(Array.isArray(r.users)?r.users:[]).some(d=>String(d?.password||"").trim()!==""))return!1;let a=Array.isArray(r.settings)?r.settings:[],c=Array.isArray(nc.settings)?nc.settings:[],l=new Map(c.map(d=>[String(d.key),d.value]));return a.every(d=>l.has(String(d.key))&&l.get(String(d.key))===d.value)}function Lx(r){r&&(si=r,Zk(r))}function Hx(r){let e=r?.JWT_SECRET||(typeof process<"u"?process.env?.JWT_SECRET:"");return typeof e=="string"&&e.length>=16?e:null}async function lS(r){let e=r||si||(typeof process<"u"?process.env:{}),t=Hx(e);if(t)return(!rc||No!==t)&&(No=t,rc=!0),t;if(No&&!rc)return No;try{let i=await tc(e,Cl);if(i&&i.length>=16)return No=i,rc=!1,i}catch{}return iS||(iS=!0,console.error("[DB] No encryption key available: set JWT_SECRET. Sensitive fields would otherwise be written in plaintext.")),null}async function ih(r){let e=r||si||(typeof process<"u"?process.env:{});if(Hx(e))return!0;try{let t=await tc(e,Cl);return!!(t&&t.length>=16)}catch{return!1}}function yH(r){return new Promise(e=>setTimeout(e,r))}async function Kx(r){if(vu)return vu;vu=(async()=>{let e=r||si||(typeof process<"u"?process.env:{}),t=Hx(e);if(t)return t;let i=await tc(e,Cl);if(i&&i.length>=16)return No=i,rc=!1,i;let n=tS();if(!await $0(e,Cl,n))return console.error("[DB] Failed to persist an encryption key. Sensitive fields will be stored in plaintext until JWT_SECRET is configured via environment variable."),null;No=n,rc=!1;let o=pH;for(let a=0;a=16&&c!==n)return console.warn("[DB] A different encryption key already exists; adopting it to keep encrypt/decrypt symmetric."),No=c,rc=!1,c;await yH(o),o=Math.min(o*2,mH)}return console.warn(`[DB] Encryption key written but not yet readable after ${nS} retries. Cross-instance reads may lag briefly due to eventual consistency; retry shortly.`),n})();try{return await vu}finally{vu=null}}async function Z0(r,e){return!r||r.startsWith(qo)?r:qo+await Hv(r,e)}async function eh(r,e){if(!r||!r.startsWith(qo))return r;try{return await Kv(r.slice(qo.length),e)}catch(t){return console.warn("[DB] Failed to decrypt a sealed secret (wrong JWT_SECRET?):",t),r}}async function IH(r,e){if(!e||!r)return r;let t=JSON.parse(JSON.stringify(r));for(let i of t.storages||[]){if(!i||!i.addition)continue;let n=typeof i.addition=="string"?i.addition:JSON.stringify(i.addition);n&&n!=="{}"&&(i.addition=await Z0(n,e))}for(let i of t.settings||[])i&&cS.has(i.key)&&i.value&&(i.value=await Z0(String(i.value),e));for(let i of t.users||[])i&&i.otp_secret&&(i.otp_secret=await Z0(String(i.otp_secret),e)),i&&i.password&&(i.password=await Z0(String(i.password),e));return t}async function wH(r,e){if(!e||!r)return;let t=[];for(let i of r.storages||[])if(i&&typeof i.addition=="string"&&i.addition.startsWith(qo)){let n=i,s=n.addition;t.push(eh(s,e).then(o=>{n.addition=o}))}for(let i of r.settings||[])if(i&&cS.has(i.key)&&typeof i.value=="string"&&i.value.startsWith(qo)){let n=i,s=n.value;t.push(eh(s,e).then(o=>{n.value=o}))}for(let i of r.users||[])if(i){if(typeof i.otp_secret=="string"&&i.otp_secret.startsWith(qo)){let n=i,s=n.otp_secret;t.push(eh(s,e).then(o=>{n.otp_secret=o}))}if(typeof i.password=="string"&&i.password.startsWith(qo)){let n=i,s=n.password;t.push(eh(s,e).then(o=>{n.password=o}))}}t.length>0&&await Promise.all(t)}async function tt(r,e){let t=await ne(e),i=r;try{i=decodeURIComponent(String(i||""))}catch{}let n="",s=0;for(;i!==n&&s<3;){n=i;try{let f=decodeURIComponent(i);if(f===i)break;i=f,s++}catch{break}}i=i.replace(/\\/g,"/").replace(/%5c/gi,"/").replace(/%2f/gi,"/").replace(/\.{3,}/g,"..").replace(/\/+/g,"/");let o=["\0","\r",` -`," "];for(let f of o)if(i.includes(f))throw new Error(`invalid path: illegal character detected (0x${f.charCodeAt(0).toString(16)})`);if(/^[A-Za-z]:/.test(i))throw new Error("invalid path: absolute Windows path not allowed");if(i.startsWith("//")||i.startsWith("\\\\"))throw new Error("invalid path: UNC path not allowed");let a=[];for(let f of i.split("/"))if(!(f===""||f===".")){if(f===".."){a.pop();continue}a.push(f)}let c="/"+a.join("/");c===""&&(c="/");let l=(t.storages||[]).filter(f=>!f.disabled&&typeof f.driver=="string"&&f.driver.trim()!==""&&f.driver!=="undefined"&&f.driver!=="null"&&typeof f.mount_path=="string"&&f.mount_path.trim()!=="");if(l.length===0)throw new Error("failed get storage: storage not found; please add a storage first");let d=[...l].sort((f,h)=>{let g="/"+(f.mount_path||"").split("/").filter(Boolean).join("/");return("/"+(h.mount_path||"").split("/").filter(Boolean).join("/")).length-g.length});for(let f of d){let h="/"+(f.mount_path||"").split("/").filter(Boolean).join("/"),g=h==="/";if(g||c===h||c.startsWith(h+"/")){let I=c;g||(I=c.slice(h.length)),I.startsWith("/")||(I="/"+I);let y={};try{y=typeof f.addition=="string"?JSON.parse(f.addition||"{}"):f.addition||{}}catch{y={}}let C=y.root_folder_path!==void 0?y.root_folder_path:"/",x=([C,I].map(R=>R.replace(/\\/g,"/")).filter(R=>!!R&&R!=="/").join("/")||"/").replace(/\/{2,}/g,"/"),_=String(C||"/").replace(/\\/g,"/").replace(/\/+$/,"")||"/";if(_!=="/"&&x!==_&&!x.startsWith(_+"/"))throw new Error("path traversal blocked: escapes storage root");if(x.split("/").includes(".."))throw new Error("path traversal blocked: illegal '..' segment");return{storage:f,relative:I,physical:x,rootFolder:C,cleanPath:c,isVirtual:!1}}}let u=!1;for(let f of l){let h="/"+(f.mount_path||"").split("/").filter(Boolean).join("/");if(h!=="/"&&h.startsWith(c==="/"?"/":c+"/")){u=!0;break}}if(u)return{storage:null,relative:c,physical:null,rootFolder:null,cleanPath:c,isVirtual:!0};throw new Error("failed get storage: storage not found")}async function Kn(){let r=await ne(),e={};return r.settings&&r.settings.forEach(t=>{e[t.key]=t.value}),e}async function xH(){return(await ne()).users||[]}async function CH(){return(await ne()).storages||[]}async function EH(){return(await ne()).metas||[]}async function BH(){return(await ne()).plugins||[]}var sS,aH,cH,lH,nc,ht,si,Ro,Mx,ic,fH,Ox,V0,Y0,W0,X0,AH,Su,ku,rh,hH,gH,xl,aS,rS,ne,qo,cS,iS,Cl,No,rc,vu,nS,pH,mH,fe,Ve=V(()=>{"use strict";ni();qx();ec();qx();ec();sS="txt,htm,html,xml,java,properties,sql,js,json,c,cpp,python,py,php,go,rst,css,typescript,ts,log,conf,yaml,yml,cmd,bash,sh,vue,ini,md,bat,gitignore,h,hpp,tsx,vtt,srt,ass,rs,lrc,strm",aH="m3u8,url",cH="authorization,referer",lH="txt,htm,html,xml,java,properties,sql,js,json,c,cpp,python,py,php,go,rst,css,typescript,ts,log,conf,yaml,yml,cmd,bash,sh,vue,ini",nc={settings:[{key:"version",value:"v4.2.3",type:"string",help:"Application Version",group:1,flag:1},{key:"site_title",value:"OpenList",type:"string",help:"Site Title",group:1,flag:0},{key:"announcement",value:"",type:"text",help:"Site Announcement",group:1,flag:0},{key:"pagination_type",value:"pagination",type:"select",options:"all,pagination,load_more,auto_load_more",help:"Pagination Type",group:1,flag:0},{key:"default_page_size",value:"20",type:"number",help:"Default Page Size",group:1,flag:0},{key:"allow_indexed",value:"false",type:"bool",help:"Allow Search Engine Indexing",group:1,flag:0},{key:"allow_mounted",value:"true",type:"bool",help:"Allow Mounted Storages",group:1,flag:0},{key:"robots_txt",value:`User-agent: * -Disallow: /`,type:"text",help:"Robots Txt Content",group:1,flag:0},{key:"logo",value:"https://res.oplist.org/logo/logo.svg",type:"string",help:"Site Logo URL",group:2,flag:0},{key:"favicon",value:"https://res.oplist.org/logo/logo.svg",type:"string",help:"Favicon URL",group:2,flag:0},{key:"main_color",value:"#1890ff",type:"string",help:"Main Theme Color",group:2,flag:0},{key:"home_icon",value:"openlist",type:"string",help:"Home Icon Name",group:2,flag:0},{key:"home_container",value:"max_980px",type:"select",options:"max_980px,hope_container",help:"Home Container Width",group:2,flag:0},{key:"settings_layout",value:"responsive",type:"select",options:"list,responsive",help:"Settings Layout Mode",group:2,flag:0},{key:"text_types",value:sS,type:"text",help:"Text File Extensions",group:3,flag:0},{key:"audio_types",value:"mp3,ogg,aac,wav,wma,flac,m4a,opus",type:"text",help:"Audio File Extensions",group:3,flag:0},{key:"video_types",value:"mp4,mkv,webm,avi,mov,flv,m3u8,ts",type:"text",help:"Video File Extensions",group:3,flag:0},{key:"image_types",value:"jpg,png,jpeg,gif,bmp,svg,ico,webp,avif,tiff",type:"text",help:"Image File Extensions",group:3,flag:0},{key:"proxy_types",value:aH,type:"text",help:"Proxy File Extensions",group:3,flag:0},{key:"proxy_ignore_headers",value:cH,type:"text",help:"Proxy Ignore Headers",group:3,flag:0},{key:"external_previews",value:"{}",type:"text",help:"External Previews JSON Config",group:3,flag:0},{key:"iframe_previews",value:"{}",type:"text",help:"Iframe Previews JSON Config",group:3,flag:0},{key:"audio_cover",value:"https://file.nn.ci/alist/cover.png",type:"string",help:"Audio Default Cover Image URL",group:3,flag:0},{key:"audio_autoplay",value:"false",type:"bool",help:"Autoplay Audio",group:3,flag:0},{key:"video_autoplay",value:"false",type:"bool",help:"Autoplay Video",group:3,flag:0},{key:"preview_archives_by_default",value:"false",type:"bool",help:"Preview Archives By Default",group:3,flag:0},{key:"readme_autorender",value:"true",type:"bool",help:"Readme Autorender",group:3,flag:0},{key:"filter_readme_scripts",value:"true",type:"bool",help:"Filter Readme Scripts",group:3,flag:0},{key:"force_preview",value:"",type:"text",help:"Force Preview Config",group:3,flag:0},{key:"specify_preview",value:"",type:"text",help:"Specify Preview Layout Config",group:3,flag:0},{key:"markdown_autorender",value:"true",type:"bool",help:"Autorender Markdown",group:3,flag:0},{key:"code_editor_theme",value:"vs-dark",type:"select",options:"vs,vs-dark,hc-black",help:"Monaco Theme",group:3,flag:0},{key:"office_preview",value:"true",type:"bool",help:"Enable Office Document Preview",group:3,flag:0},{key:"pdf_preview",value:"true",type:"bool",help:"Enable PDF Preview",group:3,flag:0},{key:"hide_files",value:"",type:"text",help:"Files Regex to Hide",group:4,flag:0},{key:"package_download",value:"true",type:"bool",help:"Package Download Enabled",group:4,flag:0},{key:"customize_head",value:"",type:"text",help:"Custom Head HTML/CSS",group:4,flag:0},{key:"customize_body",value:"",type:"text",help:"Custom Body Script",group:4,flag:0},{key:"link_expiration",value:"0",type:"number",help:"Link Expiration in Seconds",group:4,flag:0},{key:"sign_all",value:"false",type:"bool",help:"Sign All Download Links",group:4,flag:0},{key:"seed_site_url",value:"",type:"string",help:"Public site URL used by transfer seed sources",group:4,flag:1},{key:"seed_default_matrix",value:'{"md5":{"whole":true,"pieces":false},"sha1":{"whole":true,"pieces":false},"sha256":{"whole":true,"pieces":false}}',type:"text",help:"Default transfer seed hash matrix",group:4,flag:1},{key:"seed_format_policies",value:'{"oss":"off","torrent":"off","cas":"off"}',type:"text",help:"Automatic transfer seed format policies",group:4,flag:1},{key:"seed_auto_generate_policy",value:"off",type:"select",options:"off,on",help:"Global automatic transfer seed policy",group:4,flag:1},{key:"seed_single_direct_preview",value:"false",type:"bool",help:"Open single-file transfer seeds directly in preview",group:4,flag:0},{key:"seed_cas_direct_access",value:"false",type:"bool",help:"When opening a single-file CAS seed, immediately rapid-upload it into the same folder and preview the restored file",group:4,flag:0},{key:"seed_default_trackers",value:"",type:"text",help:"Default tracker list offered when generating torrent seeds (one tracker per line)",group:4,flag:1},{key:"privacy_regs",value:"",type:"text",help:"Privacy Regex Rules",group:4,flag:0},{key:"ocr_api",value:"",type:"string",help:"OCR API Endpoint",group:4,flag:0},{key:"filename_char_mapping",value:"{}",type:"text",help:"Filename Char Mapping JSON",group:4,flag:0},{key:"forward_direct_link_params",value:"",type:"string",help:"Forward Direct Link Params",group:4,flag:0},{key:"ignore_direct_link_params",value:"",type:"string",help:"Ignore Direct Link Params",group:4,flag:0},{key:"webauthn_login_enabled",value:"false",type:"bool",help:"Webauthn Login Enabled",group:4,flag:0},{key:"allow_previewing_sharing_files",value:"true",type:"bool",help:"Allow Previewing Sharing Files",group:4,flag:0},{key:"allow_previewing_sharing_archives",value:"true",type:"bool",help:"Allow Previewing Sharing Archives",group:4,flag:0},{key:"force_proxy_sharing_files",value:"false",type:"bool",help:"Force Proxy Sharing Files",group:4,flag:0},{key:"share_summary_content",value:"",type:"text",help:"Share Summary Content",group:4,flag:0},{key:"handle_hook_after_writing",value:"",type:"string",help:"Handle Hook After Writing",group:4,flag:0},{key:"handle_hook_rate_limit",value:"0",type:"number",help:"Handle Hook Rate Limit",group:4,flag:0},{key:"ignore_system_files",value:"true",type:"bool",help:"Ignore System Files (.DS_Store, desktop.ini, etc.)",group:4,flag:0},{key:"auto_update_index",value:"false",type:"bool",help:"Auto Update Search Index",group:4,flag:0},{key:"sso_login_enabled",value:"false",type:"bool",help:"Enable SSO Login",group:7,flag:0},{key:"sso_login_platform",value:"",type:"select",options:"Github,Microsoft,Google,Dingtalk,Casdoor,OIDC",help:"SSO Platform",group:7,flag:0},{key:"sso_client_id",value:"",type:"string",help:"SSO Client ID",group:7,flag:0},{key:"sso_client_secret",value:"",type:"string",help:"SSO Client Secret",group:7,flag:0},{key:"sso_login_url",value:"",type:"string",help:"SSO Authorization Endpoint",group:7,flag:0},{key:"sso_token_url",value:"",type:"string",help:"SSO Token Endpoint (optional, defaults per platform)",group:7,flag:0},{key:"sso_userinfo_url",value:"",type:"string",help:"SSO UserInfo Endpoint (optional, defaults per platform)",group:7,flag:0},{key:"sso_scopes",value:"",type:"string",help:"SSO OAuth2 Scopes (optional, space separated)",group:7,flag:0},{key:"sso_oidc_discovery_url",value:"",type:"string",help:"OIDC Discovery URL (for OIDC platform)",group:7,flag:0},{key:"sso_login_callback_url",value:"",type:"string",help:"SSO Redirect/Callback URL (optional, defaults to /api/auth/sso_callback)",group:7,flag:0},{key:"sso_compatibility_mode",value:"false",type:"bool",help:"SSO Compatibility Mode (postMessage token handoff)",group:7,flag:0},{key:"sso_auto_register",value:"false",type:"bool",help:"Auto Register New SSO Users",group:7,flag:0},{key:"sso_default_dir",value:"/",type:"string",help:"SSO Default Directory for New Users",group:7,flag:0},{key:"sso_default_permission",value:"0",type:"number",help:"SSO Default Permission for New Users",group:7,flag:0},{key:"ldap_host",value:"",type:"string",help:"LDAP Server Host",group:8,flag:0},{key:"ldap_port",value:"389",type:"number",help:"LDAP Server Port",group:8,flag:0},{key:"traffic_limit",value:"0",type:"number",help:"Traffic Limit in MB",group:10,flag:0},{key:"ip_limit",value:"0",type:"number",help:"IP Rate Limit Per Minute",group:10,flag:0},{key:"115_temp_dir",value:"",type:"string",help:"115 Temp Directory",group:14,flag:0},{key:"115_open_temp_dir",value:"",type:"string",help:"115 Open Temp Directory",group:14,flag:0},{key:"123_temp_dir",value:"",type:"string",help:"123 Pan Temp Directory",group:14,flag:0},{key:"123_open_temp_dir",value:"",type:"string",help:"123 Open Temp Directory",group:14,flag:0},{key:"123_open_callback_url",value:"",type:"string",help:"123 Open Callback URL",group:14,flag:0},{key:"pikpak_temp_dir",value:"",type:"string",help:"PikPak Temp Directory",group:14,flag:0},{key:"thunder_temp_dir",value:"",type:"string",help:"Thunder Temp Directory",group:14,flag:0},{key:"thunder_browser_temp_dir",value:"",type:"string",help:"Thunder Browser Temp Directory",group:14,flag:0},{key:"thunderx_temp_dir",value:"",type:"string",help:"ThunderX Temp Directory",group:14,flag:0},{key:"token",value:"",type:"string",help:"115 / PikPak / Thunder Token",group:14,flag:0},{key:"package_download_disabled",value:"false",type:"bool",help:"Disable Package Download",group:14,flag:0}],storages:[],users:[{id:1,username:"admin",password:"",role:2,permission:0,base_path:"/",disabled:!1,sso_id:"",allow_ldap:!1,pwd_update_at:new Date().toISOString()},{id:2,username:"guest",password:"",role:1,permission:0,base_path:"/",disabled:!1,sso_id:"",allow_ldap:!1,pwd_update_at:new Date().toISOString()}],metas:[],shares:[],plugins:[]},ht=null,si=null,Ro=!1,Mx=!1,ic=null;fH={logo:{from:["","/logo.png","https://res.oplist.org/logo/logo.png"],to:"https://res.oplist.org/logo/logo.svg"},favicon:{from:["","/favicon.png"],to:"https://res.oplist.org/logo/logo.svg"},home_container:{from:["hope_container"],to:"max_980px"},text_types:{from:[lH],to:sS}},Ox=r=>{if(!r)return;r.settings||(r.settings=[]);let e=!1,t=[],i=new Set;for(let n of nc.settings){i.add(n.key);let s=r.settings.filter(o=>o.key===n.key);if(s.length===0)t.push(JSON.parse(JSON.stringify(n))),e=!0;else{let o=s.find(c=>c.value&&c.value.trim()!=="")||s[0];(o.group!==n.group||o.help!==n.help||o.type!==n.type||o.options!==n.options||o.flag!==n.flag)&&(o.group=n.group,o.help=n.help,o.type=n.type,o.options=n.options,o.flag=n.flag,e=!0),s.length>1&&(e=!0);let a=fH[n.key];a&&a.from.includes(o.value)&&(o.value=a.to,e=!0),t.push(o)}}for(let n of r.settings)n.key&&!i.has(n.key)&&(i.add(n.key),t.push(n));r.settings=t},V0=r=>{r&&(!r.storages||!Array.isArray(r.storages)?r.storages=[]:r.storages=r.storages.filter(e=>e&&typeof e=="object"&&typeof e.driver=="string"&&e.driver.trim()!==""&&e.driver!=="undefined"&&e.driver!=="null"&&typeof e.mount_path=="string"&&e.mount_path.trim()!==""))},Y0=r=>{r&&(r.shares||(r.shares=[]))},W0=r=>{r&&(r.plugins||(r.plugins=[]))},X0=r=>{r&&(!r.metas||!Array.isArray(r.metas))&&(r.metas=[])},AH=1e3,Su=new WeakMap,ku=new WeakMap,rh=r=>J0(r),hH=()=>{si&&typeof si=="object"&&(Su.delete(si),ku.delete(si)),xl&&(Su.delete(xl),ku.delete(xl)),xl=null,si=null,ht=null,rh=r=>J0(r)},gH=r=>{rh=r},xl=null,aS=()=>{let r=si;return!r||typeof r!="object"?null:(xl=r,xl)},rS=async r=>{r&&(si=r);let e=r||si,t=await rh(e);try{let i=await t.load(e);if(i)return await wH(i,await lS(e)),ht=i,Ox(ht),V0(ht),Y0(ht),W0(ht),X0(ht),Ro=!0,ic=null,ht;if(Ro&&ht)return console.warn(`[DB] Backend ${t.name} returned empty while a trusted snapshot exists; keeping the in-memory snapshot to avoid overwriting real config.`),Ox(ht),V0(ht),Y0(ht),W0(ht),X0(ht),ht;Ro=!1,ic=null}catch(i){console.error(`[DB] Error reading config from ${t.name}:`,i?.message||i),ic=String(i?.message||i),Ro=!1}return ht&&Ro?(Ox(ht),V0(ht),Y0(ht),W0(ht),X0(ht),ht):(ht=JSON.parse(JSON.stringify(nc)),V0(ht),Y0(ht),W0(ht),X0(ht),ht)},ne=async r=>{r&&(si=r);let e=r||aS();if(!e)return rS(r);let t=ku.get(e);if(t)return t;let i=Su.get(e);if(i&&Date.now()-i.ts(Su.set(e,{ts:Date.now(),db:s}),s)).finally(()=>{ku.delete(e)});return ku.set(e,n),n},qo="enc:v1:",cS=new Set(["token","sso_client_secret","sso_client_id","ldap_bind_password","ldap_bind_dn","ocr_api","handle_hook_after_writing"]),iS=!1,Cl="openlist_encryption_secret";No=null,rc=!1;vu=null,nS=6,pH=100,mH=1e3;fe=async(r,e,t)=>{e&&(si=e);let i=e||si;if(oS(r)&&!t?.force){Mx=!0;let c=ic?`last load failed: ${ic}`:Ro?"payload is an empty/shell database":"database was never successfully loaded from the persistence backend";return console.error(`[DB] saveDb BLOCKED: refusing to persist an empty/shell database (${c}). This guard prevents an empty payload from wiping real config. Pass saveDb(db, env, { force: true }) to override intentionally.`),!1}ht=r,Mx=!1;let s=e||aS();s&&Su.set(s,{ts:Date.now(),db:r});let o=await rh(i);if(!(o.isConfigured?await o.isConfigured(i):!0))return console.warn("[DB] WARNING: No persistence backend configured! Storage configuration changes will exist only in memory!"),!1;try{console.log(`[DB] saveDb: sealing and persisting to ${o.name}, storages=${r.storages?.length||0}`);let c=await IH(r,await lS(i));console.log(`[DB] saveDb: sealed data size=${JSON.stringify(c).length} bytes`),await o.save(c,i)}catch(c){throw console.error(`[DB] saveDb FAILED: backend=${o.name}, error=${c?.message||c}`,`stack=${c?.stack?.substring(0,500)||""}`),new Error(`[DB] Failed to persist config (${o.name}); the change was NOT saved: ${c?.message||c}`)}return console.log(`[DB] Successfully persisted ${r.storages?.length||0} storages to ${o.name}`),Ro=!0,ic=null,!0}});function X(r,e){if(e)return 1;let t=(r.split(".").pop()||"").toLowerCase();return["mp4","mkv","avi","mov","flv","wmv","ts","m2ts","m4v","rmvb","webm","3gp","asf","vob","ogv","rm","f4v"].includes(t)?2:["mp3","flac","aac","wav","ogg","m4a","opus","wma","ape","alac","aiff","mid","midi"].includes(t)?3:["txt","md","markdown","json","js","ts","jsx","tsx","css","scss","html","htm","xml","yaml","yml","ini","conf","env","log","sql","py","java","c","cpp","h","hpp","go","rs","sh","bat","cmd","ps1","php","rb","swift","kt","cs","vue","svelte","json5","toml"].includes(t)?4:["jpg","jpeg","png","gif","bmp","webp","svg","ico","tiff","tif","heic","heif","avif","vvc","avc","psd","ai"].includes(t)?5:0}var Be=V(()=>{"use strict"});function de(r,e,t){let i=t!=="desc",n=String(e||"name").toLowerCase(),s=[...r];return s.sort((o,a)=>{if(o.is_dir!==a.is_dir)return o.is_dir?-1:1;let c;return n.includes("size")?c=(o.size||0)-(a.size||0):n.includes("time")||n.includes("modified")||n.includes("created")?c=new Date(o.modified).getTime()-new Date(a.modified).getTime():c=String(o.name).localeCompare(String(a.name)),i?c:-c}),s}var He=V(()=>{"use strict"});var Gn,Gx=V(()=>{"use strict";Gn={global:{oauth:"https://login.microsoftonline.com",api:"https://graph.microsoft.com"},cn:{oauth:"https://login.partner.microsoftonline.cn",api:"https://microsoftgraph.chinacloudapi.cn"},us:{oauth:"https://login.microsoftonline.us",api:"https://graph.microsoft.us"},de:{oauth:"https://login.microsoftonline.de",api:"https://graph.microsoft.de"}}});function zx(r,e){let t="";return r.thumbnails&&r.thumbnails.length>0&&(t=r.thumbnails[0].medium?.url||""),{id:r.id,name:r.name,size:r.size,modified:r.lastModifiedDateTime||r.fileSystemInfo?.lastModifiedDateTime||"",isFolder:!!r.folder||!r.file,thumbnail:t,parentID:e,url:r["@microsoft.graph.downloadUrl"]||""}}var dS=V(()=>{"use strict"});async function Jx(r){if(r.use_online_api&&r.api_url_address){let s=new URLSearchParams({refresh_ui:r.refresh_token,server_use:"true",driver_txt:"onedrive_pr"}).toString(),a=await(await fetch(`${r.api_url_address}?${s}`)).json();if(!a.refresh_token||!a.access_token)throw a.text?new Error(`failed to refresh token: ${a.text}`):new Error("empty token returned from official API");r.accessToken=a.access_token,r.refresh_token=a.refresh_token,r.onTokenUpdate?.(r.refresh_token);return}if(!r.client_id||!r.client_secret)throw new Error("empty ClientID or ClientSecret");let t=`${(Gn[r.region]||Gn.global).oauth}/common/oauth2/v2.0/token`,n=await(await fetch(t,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({grant_type:"refresh_token",client_id:r.client_id,client_secret:r.client_secret,redirect_uri:r.redirect_uri,refresh_token:r.refresh_token}).toString()})).json();if(!n.refresh_token)throw new Error("Empty token");r.refresh_token=n.refresh_token,r.accessToken=n.access_token,r.onTokenUpdate?.(r.refresh_token)}async function Ti(r,e,t,i,n){let s=i!==void 0&&(i instanceof Uint8Array||i instanceof ArrayBuffer||typeof Buffer<"u"&&Buffer.isBuffer(i)),o={method:t.toUpperCase(),headers:{Authorization:`Bearer ${r.accessToken}`,...i!==void 0?{"Content-Type":s?"application/octet-stream":"application/json"}:{}},...i!==void 0?{body:s?i:JSON.stringify(i)}:{}},a=await fetch(e,o);if(!a.ok){let c;try{c=(await a.json()).error}catch{c=null}let l=c?.code;if((l==="InvalidAuthenticationToken"||l==="ExpiredAuthenticationToken"||a.status===401)&&!n)return await Jx(r),Ti(r,e,t,i,!0);throw new Error(c?.message||`Request failed: ${a.status}`)}if(a.status!==204)return a.json()}function uS(r,e,t){let i=e.replace(/\\/g,"/");if(!i||i==="/")return t?`${r}/drive/root/${t}`:`${r}/drive/root`;let n=i.startsWith("/")?i.slice(1):i;if(n.endsWith("/")&&(n=n.slice(0,-1)),!n||n==="")return t?`${r}/drive/root/${t}`:`${r}/drive/root`;let s=n.split("/").map(encodeURIComponent).join("/");return t?`${r}/drive/root:/${s}:/${t}`:`${r}/drive/root:/${s}:`}async function fS(r,e){let t=Gn[r.region]||Gn.global,i=r.is_sharepoint?`${t.api}/v1.0/sites/${r.site_id}`:`${t.api}/v1.0/me`,s=uS(i,e,"children?$top=1000&$expand=thumbnails($select=medium)&$select=id,name,size,fileSystemInfo,@microsoft.graph.downloadUrl,file,folder,parentReference"),o=[];for(;s;){let a=await Ti(r,s,"GET");a.value&&o.push(...a.value),s=a["@odata.nextLink"]}return o}async function AS(r,e){let t=Gn[r.region]||Gn.global,i=r.is_sharepoint?`${t.api}/v1.0/sites/${r.site_id}`:`${t.api}/v1.0/me`,n=uS(i,e);return Ti(r,n,"GET")}var hS=V(()=>{"use strict";Gx()});var nh,gS=V(()=>{"use strict";He();Gx();dS();hS();nh=class{root_folder_path="/";region="global";is_sharepoint=!1;use_online_api=!0;api_url_address="https://api.oplist.org/onedrive/renewapi";client_id="";client_secret="";redirect_uri="https://api.oplist.org/onedrive/callback";refresh_token="";site_id="";chunk_size=5;custom_host="";disable_disk_usage=!1;enable_direct_upload=!1;order_by="filename";order_direction="asc";accessToken="";onTokenUpdate;constructor(e,t){e&&(e.root_folder_path!==void 0&&(this.root_folder_path=String(e.root_folder_path)),e.region!==void 0&&(this.region=String(e.region)),e.is_sharepoint!==void 0&&(this.is_sharepoint=!!e.is_sharepoint),e.use_online_api!==void 0&&(this.use_online_api=!!e.use_online_api),e.api_url_address!==void 0&&(this.api_url_address=String(e.api_url_address)),e.client_id!==void 0&&(this.client_id=String(e.client_id)),e.client_secret!==void 0&&(this.client_secret=String(e.client_secret)),e.redirect_uri!==void 0&&(this.redirect_uri=String(e.redirect_uri)),e.refresh_token!==void 0&&(this.refresh_token=String(e.refresh_token)),e.site_id!==void 0&&(this.site_id=String(e.site_id)),e.chunk_size!==void 0&&(this.chunk_size=Number(e.chunk_size)||5),e.custom_host!==void 0&&(this.custom_host=String(e.custom_host)),e.disable_disk_usage!==void 0&&(this.disable_disk_usage=!!e.disable_disk_usage),e.enable_direct_upload!==void 0&&(this.enable_direct_upload=!!e.enable_direct_upload),e.order_by!==void 0&&(this.order_by=String(e.order_by)),e.order_direction!==void 0&&(this.order_direction=String(e.order_direction))),this.onTokenUpdate=t}async init(){typeof this.is_sharepoint=="string"&&(this.is_sharepoint=this.is_sharepoint.toLowerCase()==="true"),typeof this.use_online_api=="string"&&(this.use_online_api=this.use_online_api.toLowerCase()==="true"),typeof this.chunk_size=="string"&&(this.chunk_size=parseInt(this.chunk_size)||5),typeof this.disable_disk_usage=="string"&&(this.disable_disk_usage=this.disable_disk_usage.toLowerCase()==="true"),typeof this.enable_direct_upload=="string"&&(this.enable_direct_upload=this.enable_direct_upload.toLowerCase()==="true"),this.chunk_size<1&&(this.chunk_size=5),this.refresh_token&&await Jx(this)}getMetaUrl(e,t,i){let n=Gn[this.region]||Gn.global;if(e)return n.oauth;let s=this.is_sharepoint?`${n.api}/v1.0/sites/${this.site_id}`:`${n.api}/v1.0/me`,o=t.replace(/\\/g,"/");if(!o||o==="/")return i?`${s}/drive/root/${i}`:`${s}/drive/root`;let a=o.startsWith("/")?o.slice(1):o;if(a.endsWith("/")&&(a=a.slice(0,-1)),!a||a==="")return i?`${s}/drive/root/${i}`:`${s}/drive/root`;let c=a.split("/").map(l=>{try{return encodeURIComponent(decodeURIComponent(l))}catch{return encodeURIComponent(l)}}).join("/");return i?`${s}/drive/root:/${c}:/${i}`:`${s}/drive/root:/${c}:`}async list(e,t){let n=(await fS(this,t)).map(s=>{let o=zx(s,""),a=s["@microsoft.graph.downloadUrl"]||o.url||"";if(this.custom_host&&a)try{let c=new URL(a);c.host=this.custom_host,a=c.toString()}catch{}return{name:o.name,size:o.size,is_dir:o.isFolder,modified:o.modified,sign:"",type:o.isFolder?1:0,thumb:o.thumbnail||"",raw_url:a}});return de(n,this.order_by,this.order_direction)}async get(e,t){let i=await AS(this,t),n=zx(i,""),s=i["@microsoft.graph.downloadUrl"]||n.url||"";if(this.custom_host&&s)try{let o=new URL(s);o.host=this.custom_host,s=o.toString()}catch{}return{name:n.name,size:n.size,is_dir:n.isFolder,modified:n.modified,sign:"",type:n.isFolder?1:0,thumb:n.thumbnail||"",raw_url:s}}async mkdir(e,t){let i=t.split("/").slice(0,-1).join("/")||"/",n=t.split("/").filter(Boolean).pop()||"",s=this.getMetaUrl(!1,i,"children");await Ti(this,s,"POST",{name:n,folder:{},"@microsoft.graph.conflictBehavior":"rename"})}async rename(e,t,i){let n={name:i},s=this.getMetaUrl(!1,t);await Ti(this,s,"PATCH",n)}async remove(e,t,i){for(let n of i){let s=t==="/"?`/${n}`:`${t}/${n}`,o=this.getMetaUrl(!1,s);await Ti(this,o,"DELETE")}}async move(e,t,i,n,s){let o=this.getMetaUrl(!1,s),a=await Ti(this,o,"GET"),c=a.id,l=a.parentReference?.driveId;for(let d of i){let u=n==="/"?`/${d}`:`${n}/${d}`,f={parentReference:{id:c,...l?{driveId:l}:{}},name:d},h=this.getMetaUrl(!1,u);await Ti(this,h,"PATCH",f)}}async copy(e,t,i,n,s){let o=this.getMetaUrl(!1,s),a=await Ti(this,o,"GET"),c=a.id,l=a.parentReference?.driveId;for(let d of i){let u=n==="/"?`/${d}`:`${n}/${d}`,f={parentReference:{id:c,...l?{driveId:l}:{}},name:d},h=this.getMetaUrl(!1,u,"copy");await Ti(this,h,"POST",f)}}async put(e,t,i){if(i.length<=4*1024*1024){let n=this.getMetaUrl(!1,t,"content");await Ti(this,n,"PUT",i)}else{let n=this.getMetaUrl(!1,t,"createUploadSession"),a=(await Ti(this,n,"POST",{item:{"@microsoft.graph.conflictBehavior":"rename"}})).uploadUrl,c=this.chunk_size*1024*1024,l=0,d=i.length;for(;l0&&(t=r.thumbnails[0].medium?.url||""),{id:r.id,name:r.name,size:r.size,modified:r.lastModifiedDateTime||r.fileSystemInfo?.lastModifiedDateTime||"",isFolder:!!r.folder||!r.file,thumbnail:t,parentID:e,url:r["@microsoft.graph.downloadUrl"]||""}}var pS=V(()=>{"use strict"});var sc,mS=V(()=>{"use strict";sc={global:{oauth:"https://login.microsoftonline.com",api:"https://graph.microsoft.com"},cn:{oauth:"https://login.chinacloudapi.cn",api:"https://microsoftgraph.chinacloudapi.cn"},us:{oauth:"https://login.microsoftonline.us",api:"https://graph.microsoft.us"},de:{oauth:"https://login.microsoftonline.de",api:"https://graph.microsoft.de"}}});function Ui(r,e,t,i){let n=sc[r.region]||sc.global;if(e)return n.oauth;let s=t?t.replace(/\\/g,"/"):"";if(!s||s==="/")return i?`${n.api}/v1.0/users/${r.email}/drive/root/${i}`:`${n.api}/v1.0/users/${r.email}/drive/root`;let o=s.startsWith("/")?s.slice(1):s;if(o.endsWith("/")&&(o=o.slice(0,-1)),!o||o==="")return i?`${n.api}/v1.0/users/${r.email}/drive/root/${i}`:`${n.api}/v1.0/users/${r.email}/drive/root`;let a=o.split("/").map(c=>{try{return encodeURIComponent(decodeURIComponent(c))}catch{return encodeURIComponent(c)}}).join("/");return i?`${n.api}/v1.0/users/${r.email}/drive/root:/${a}:/${i}`:`${n.api}/v1.0/users/${r.email}/drive/root:/${a}:`}async function $x(r){let e=null;for(let t=0;t<3;t++)try{await bH(r);return}catch(i){e=i}throw e||new Error("Failed to get access token")}async function bH(r){if(!r.client_id||!r.client_secret)throw new Error("empty client_id or client_secret");if(!r.tenant_id)throw new Error("empty tenant_id");let e=sc[r.region]||sc.global,t=`${e.oauth}/${r.tenant_id}/oauth2/token`,i=new URLSearchParams({grant_type:"client_credentials",client_id:r.client_id,client_secret:r.client_secret,resource:`${e.api}/`,scope:`${e.api}/.default`}).toString(),s=await(await fetch(t,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:i})).json();if(s.error)throw new Error(s.error_description||s.error);if(!s.access_token)throw new Error("empty token returned from Microsoft identity platform");r.accessToken=s.access_token,r.onTokenUpdate?.(r.accessToken)}async function oi(r,e,t,i,n){let s=i!==void 0&&(typeof i=="string"||i instanceof Uint8Array||i instanceof ArrayBuffer||typeof Buffer<"u"&&Buffer.isBuffer(i)),o={method:t.toUpperCase(),headers:{Authorization:`Bearer ${r.accessToken}`,...i!==void 0&&!s?{"Content-Type":"application/json"}:{}},...i!==void 0?{body:s?i:JSON.stringify(i)}:{}},a=await fetch(e,o);if(!a.ok){let c;try{c=(await a.json()).error}catch{c=null}let l=c?.code;if((l==="InvalidAuthenticationToken"||l==="ExpiredAuthenticationToken"||a.status===401)&&!n)return await $x(r),oi(r,e,t,i,!0);throw new Error(c?.message||`Request failed: ${a.status}`)}if(a.status!==204)return a.json()}async function yS(r,e){let i=Ui(r,!1,e,"children?$top=1000&$expand=thumbnails($select=medium)&$select=id,name,size,fileSystemInfo,lastModifiedDateTime,@microsoft.graph.downloadUrl,file,folder,parentReference"),n=[];for(;i;){let s=await oi(r,i,"GET");s.value&&n.push(...s.value),i=s["@odata.nextLink"]}return n}async function IS(r,e){let t=Ui(r,!1,e);return oi(r,t,"GET")}async function wS(r){let t=`${(sc[r.region]||sc.global).api}/v1.0/users/${r.email}/drive`;return oi(r,t,"GET",void 0,!0)}async function xS(r,e){let t=Ui(r,!1,e,"createUploadSession"),s=(await oi(r,t,"POST",{item:{"@microsoft.graph.conflictBehavior":"rename"}})).uploadUrl;if(!s)throw new Error("failed to get upload URL from response");return{UploadURL:s,ChunkSize:(r.chunk_size||5)*1024*1024,Method:"PUT"}}var CS=V(()=>{"use strict";mS()});var sh,ES=V(()=>{"use strict";He();pS();CS();sh=class{root_folder_path="/";region="global";client_id="";client_secret="";tenant_id="";email="";chunk_size=5;custom_host="";disable_disk_usage=!1;enable_direct_upload=!1;order_by="filename";order_direction="asc";accessToken="";onTokenUpdate;constructor(e,t){e&&(e.root_folder_path!==void 0&&(this.root_folder_path=String(e.root_folder_path)),e.region!==void 0&&(this.region=String(e.region)),e.client_id!==void 0&&(this.client_id=String(e.client_id)),e.client_secret!==void 0&&(this.client_secret=String(e.client_secret)),e.tenant_id!==void 0&&(this.tenant_id=String(e.tenant_id)),e.email!==void 0&&(this.email=String(e.email)),e.chunk_size!==void 0&&(this.chunk_size=Number(e.chunk_size)||5),e.custom_host!==void 0&&(this.custom_host=String(e.custom_host)),e.disable_disk_usage!==void 0&&(this.disable_disk_usage=!!e.disable_disk_usage),e.enable_direct_upload!==void 0&&(this.enable_direct_upload=!!e.enable_direct_upload),e.order_by!==void 0&&(this.order_by=String(e.order_by)),e.order_direction!==void 0&&(this.order_direction=String(e.order_direction))),this.onTokenUpdate=t}async init(){typeof this.chunk_size=="string"&&(this.chunk_size=parseInt(this.chunk_size)||5),typeof this.disable_disk_usage=="string"&&(this.disable_disk_usage=this.disable_disk_usage.toLowerCase()==="true"),typeof this.enable_direct_upload=="string"&&(this.enable_direct_upload=this.enable_direct_upload.toLowerCase()==="true"),this.chunk_size<1&&(this.chunk_size=5),this.client_id&&this.client_secret&&this.tenant_id&&await $x(this)}async list(e,t){let n=(await yS(this,t)).map(s=>{let o=jx(s,""),a=s["@microsoft.graph.downloadUrl"]||o.url||"";if(this.custom_host&&a)try{let c=new URL(a);c.host=this.custom_host,a=c.toString()}catch{}return{name:o.name,size:o.size,is_dir:o.isFolder,modified:o.modified,sign:"",type:o.isFolder?1:0,thumb:o.thumbnail||"",raw_url:a}});return de(n,this.order_by,this.order_direction)}async get(e,t){let i=await IS(this,t),n=jx(i,""),s=i["@microsoft.graph.downloadUrl"]||n.url||"";if(this.custom_host&&s)try{let o=new URL(s);o.host=this.custom_host,s=o.toString()}catch{}return{name:n.name,size:n.size,is_dir:n.isFolder,modified:n.modified,sign:"",type:n.isFolder?1:0,thumb:n.thumbnail||"",raw_url:s}}async mkdir(e,t){let i=t.split("/").slice(0,-1).join("/")||"/",n=t.split("/").filter(Boolean).pop()||"",s=Ui(this,!1,i,"children");await oi(this,s,"POST",{name:n,folder:{},"@microsoft.graph.conflictBehavior":"rename"})}async rename(e,t,i){let n={name:i},s=Ui(this,!1,t);await oi(this,s,"PATCH",n)}async remove(e,t,i){for(let n of i){let s=t==="/"?`/${n}`:`${t}/${n}`,o=Ui(this,!1,s);await oi(this,o,"DELETE")}}async move(e,t,i,n,s){let o=Ui(this,!1,s),a=await oi(this,o,"GET"),c=a.id,l=a.parentReference?.driveId;for(let d of i){let u=n==="/"?`/${d}`:`${n}/${d}`,f={parentReference:{id:c,...l?{driveId:l}:{}},name:d},h=Ui(this,!1,u);await oi(this,h,"PATCH",f)}}async copy(e,t,i,n,s){let o=Ui(this,!1,s),a=await oi(this,o,"GET"),c=a.id,l=a.parentReference?.driveId;for(let d of i){let u=n==="/"?`/${d}`:`${n}/${d}`,f={parentReference:{id:c,...l?{driveId:l}:{}},name:d},h=Ui(this,!1,u,"copy");await oi(this,h,"POST",f)}}async put(e,t,i){if(i.length<=4*1024*1024){let n=Ui(this,!1,t,"content");await oi(this,n,"PUT",i)}else{let n=Ui(this,!1,t,"createUploadSession"),a=(await oi(this,n,"POST",{item:{"@microsoft.graph.conflictBehavior":"rename"}})).uploadUrl,c=this.chunk_size*1024*1024,l=0,d=i.length;for(;l255||g>255||p>255||I>255||h===0||h===127||h===10||h===172&&g>=16&&g<=31||h===192&&g===168||h===169&&g===254||h===100&&g>=64&&g<=127||h===100&&g===100||h===224&&g===0&&p===0||h>=240)return!1}if(/^\d{8,}$/.test(i)||/^0x[0-9a-fA-F]{6,}$/i.test(i))return!1;let c=[/(^|\.)\d{1,3}-\d{1,3}-\d{1,3}-\d{1,3}(\.|$)/,/(^|\.)0x[0-9a-f]{6,8}(\.|$)/i,/(^|\.)\d{8,}(\.|$)/,/(^|\.)127\.0\.0\.1\.nip\.io$/,/(^|\.)localtest\.me$/,/(^|\.)vcap\.me$/,/(^|\.)xip\.io$/];for(let l of c)if(l.test(i))return!1;return!0}catch{return!1}}function Gr(r,e="Request",t){if(!vH(r,t))throw new Error(`${e} blocked: URL points to a restricted or private network destination (SSRF protection)`)}function kH(r){let e=new Set;if(r==null)return e;let t=r;if(typeof r=="string")try{t=JSON.parse(r)}catch{return e}if(typeof t!="object"||Array.isArray(t))return e;let i=/(url|host|address|endpoint|server|domain|site|base|gateway|api)/i,n=s=>{if(!(s==null||typeof s!="object"))for(let[o,a]of Object.entries(s))if(typeof a=="string"){if(i.test(o)){let c=BS(a);c&&e.add(c)}}else a!=null&&typeof a=="object"&&n(a)};return n(t),e}function BS(r){let e=r.trim();if(!e)return;let t=/^[a-z][a-z0-9+.-]*:\/\//i.test(e)?[e]:[`http://${e}`];for(let i of t)try{let n=new URL(i);if(n.protocol!=="http:"&&n.protocol!=="https:")continue;let s=n.hostname.toLowerCase().trim();if(s)return s}catch{}}function SH(r){let e=new Set;if(!r)return e;for(let t of r.split(/[,;\s]+/)){let i=BS(t);i&&e.add(i)}return e}function oh(r,e){let t=kH(r),i=e?.SSRF_ALLOWED_HOSTS??(typeof process<"u"?process.env?.SSRF_ALLOWED_HOSTS:void 0);if(typeof i=="string"&&i.trim())for(let n of SH(i))t.add(n);return t}var oc=V(()=>{"use strict"});var DH,ah,bS=V(()=>{"use strict";oc();DH="https://openapi.aliyundrive.com/adrive/v1.0",ah=class{addition;accessToken="";refreshTokenVal="";driveId="";tokenExpiresAt=0;constructor(e){this.addition=e,this.refreshTokenVal=e.refresh_token||"",this.driveId=e.drive_id||""}async init(){if(!this.refreshTokenVal||!this.refreshTokenVal.trim()){console.warn("[AliyundriveOpen] refresh_token is empty, skipping init.");return}try{await this.refreshAccessToken(),this.driveId||await this.resolveDriveId()}catch(e){console.warn("[AliyundriveOpen] init warning:",e.message)}}async resolveDriveId(e=!1){if(!e&&this.addition.drive_id&&this.addition.drive_id.trim()){this.driveId=this.addition.drive_id.trim();return}try{let t=await this.openApiRequest("/user/getDriveInfo",{}),i=e?"resource":this.addition.drive_type||"resource",n="";i==="resource"&&t.resource_drive_id?n=t.resource_drive_id:i==="backup"&&t.backup_drive_id?n=t.backup_drive_id:i==="default"&&t.default_drive_id&&(n=t.default_drive_id),n||(n=t.resource_drive_id||t.default_drive_id||t.backup_drive_id||""),this.driveId=n,console.log(`[AliyundriveOpen] Resolved drive_id: ${this.driveId} (driveType: ${i})`)}catch(t){console.warn("[AliyundriveOpen] resolveDriveId failed:",t.message)}}async refreshAccessToken(){if(!this.refreshTokenVal||!this.refreshTokenVal.trim())return;let e=this.refreshTokenVal.trim(),t=[];if(this.addition.api_url_address&&this.addition.api_url_address.trim()){let o=this.addition.api_url_address.trim();try{Gr(o,"AliyundriveOpen api_url_address"),t.push(o)}catch(a){console.warn(`[AliyundriveOpen] Skipping unsafe api_url_address: ${a.message}`)}}t.push("https://api.oplist.org/alicloud/renewapi","https://api.oplist.org/ali_open/token","https://api.oplist.org/aliyundrive/token","https://api.alist.nn.ci/alist/ali_open/token","https://api.alist.nn.ci/aliyundrive/token","https://api-sam.oplist.org/aliyundrive/token");let i=this.addition.alipan_type==="alipanTV"?"alicloud_tv":"alicloud_qr";for(let o of t)try{let a=new URLSearchParams({refresh_ui:e,refresh_token:e,server_use:"true",driver_txt:i}),c=await fetch(`${o}?${a.toString()}`,{method:"GET",headers:{"Content-Type":"application/json"}});if(!c.ok)throw new Error(`[Status ${c.status}]`);let l=await c.json(),d=l.refresh_token||l.data?.refresh_token||"",u=l.access_token||l.data?.access_token||"";if(!u)throw new Error(`Empty access_token from online API: ${JSON.stringify(l)}`);this.accessToken=u,d&&(this.refreshTokenVal=d),this.tokenExpiresAt=Date.now()+(l.expires_in||7200)*1e3-6e4;return}catch(a){console.warn(`[AliyundriveOpen] Online API '${o}' failed: ${a.message}`)}let n=(this.addition.client_id||"").trim()||"25ab4837190e48718a28f80073574a4d",s=(this.addition.client_secret||"").trim();try{let o={grant_type:"refresh_token",refresh_token:e,client_id:n};s&&(o.client_secret=s);let a=await fetch("https://openapi.aliyundrive.com/oauth/access_token",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(o)});if(!a.ok){let l=await a.text().catch(()=>"");throw new Error(`[Status ${a.status}] ${l}`)}let c=await a.json();if(!c.access_token)throw new Error(`Invalid response: ${JSON.stringify(c)}`);this.accessToken=c.access_token,c.refresh_token&&(this.refreshTokenVal=c.refresh_token),this.tokenExpiresAt=Date.now()+(c.expires_in||7200)*1e3-6e4;return}catch(o){console.warn(`[AliyundriveOpen] Direct OAuth failed: ${o.message}`)}throw new Error("[AliyundriveOpen] All token refresh strategies failed. Please check: 1) refresh_token is valid and not expired, 2) api_url_address is accessible, 3) If using direct OAuth, client_id and client_secret are correct.")}async ensureToken(){(!this.accessToken||Date.now()>=this.tokenExpiresAt)&&await this.refreshAccessToken()}getRootFolderId(){return this.addition.root_folder_id?.trim()||"root"}async openApiRequest(e,t,i=!0){await this.ensureToken();let n=e.startsWith("http")?e:`${DH}${e}`;try{Gr(n,"AliyundriveOpen openApiRequest")}catch(o){throw new Error(`[AliyundriveOpen] blocked unsafe URL: ${o.message}`)}let s=await fetch(n,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.accessToken}`},body:JSON.stringify(t)});if(s.status===401&&i)return await this.refreshAccessToken(),this.openApiRequest(e,t,!1);if(!s.ok){let o=await s.text().catch(()=>"");throw new Error(`[AliyundriveOpen] API error [${s.status}] ${e}: ${o}`)}return s.json()}async listFiles(e){this.driveId||await this.resolveDriveId();let t=[],i,n=this.addition.order_by||"updated_at",s=this.addition.order_direction||"DESC";do{let o={drive_id:this.driveId,parent_file_id:e,limit:100,order_by:n,order_direction:s};i&&(o.marker=i);let a;try{a=await this.openApiRequest("/openFile/list",o)}catch(c){if(c.message?.includes("UserNotAllowedAccessDrive"))console.warn(`[AliyundriveOpen] UserNotAllowedAccessDrive for drive ${this.driveId}, auto re-resolving drive_id...`),await this.resolveDriveId(!0),o.drive_id=this.driveId,a=await this.openApiRequest("/openFile/list",o);else throw c}t.push(...a.items||[]),i=a.next_marker||void 0}while(i);return t}async getFile(e){return this.driveId||await this.resolveDriveId(),this.openApiRequest("/openFile/get",{drive_id:this.driveId,file_id:e})}async getDownloadUrl(e){let t=await this.openApiRequest("/openFile/getDownloadUrl",{drive_id:this.driveId,file_id:e,expire_sec:14400});return t.url||t.download_url||""}async mkdir(e,t){await this.openApiRequest("/openFile/create",{drive_id:this.driveId,parent_file_id:e,name:t,type:"folder",check_name_mode:"refuse"})}async rename(e,t){await this.openApiRequest("/openFile/update",{drive_id:this.driveId,file_id:e,name:t,check_name_mode:"refuse"})}async remove(e){let t=this.addition.remove_way||"trash";await this.openApiRequest(t==="trash"?"/openFile/recyclebin":"/openFile/delete",{drive_id:this.driveId,file_id:e})}async move(e,t){await this.openApiRequest("/openFile/move",{drive_id:this.driveId,file_id:e,to_parent_file_id:t,check_name_mode:"refuse"})}async copy(e,t){await this.openApiRequest("/openFile/copy",{drive_id:this.driveId,file_id:e,to_parent_file_id:t,auto_rename:!0})}async putFile(e,t,i){let n=i.length,s=await this.openApiRequest("/openFile/create",{drive_id:this.driveId,parent_file_id:e,name:t,type:"file",size:n,check_name_mode:"auto_rename",part_info_list:[{part_number:1}]}),o=s.part_info_list?.[0]?.upload_url;if(!o)return;let a=await fetch(o,{method:"PUT",body:i});if(!a.ok)throw new Error(`[AliyundriveOpen] Upload failed: ${a.status}`);await this.openApiRequest("/openFile/complete",{drive_id:this.driveId,file_id:s.file_id,upload_id:s.upload_id})}}});function vS(r){let e=r.type==="folder";return{name:r.name,size:r.size||0,is_dir:e,modified:r.updated_at||r.created_at||new Date().toISOString(),sign:"",type:X(r.name,e),thumb:r.thumbnail||"",raw_url:r.download_url||""}}var ch,kS=V(()=>{"use strict";Be();He();bS();ch=class{client;addition;pathFileIdCache=new Map;constructor(e){this.addition=e,this.client=new ah(e)}async init(){await this.client.init()}async list(e,t){let i=await this.resolveFileId(t),s=(await this.client.listFiles(i)).map(vS);return de(s,this.addition.order_by,this.addition.order_direction)}async get(e,t){let i=await this.resolveFileId(t),n=await this.client.getFile(i).catch(()=>null),s=await this.client.getDownloadUrl(i).catch(()=>"");if(n){let c=vS(n);return c.raw_url=s||c.raw_url,c}try{await this.client.listFiles(i);let c=t.split("/").filter(Boolean);return{name:c[c.length-1]||"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""}}catch{}let o=t.split("/").filter(Boolean);return{name:o[o.length-1]||"root",size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:0,raw_url:s}}async mkdir(e,t){let i=t.split("/").filter(Boolean),n=i.pop()||"\u65B0\u6587\u4EF6\u5939",s="/"+i.join("/"),o=await this.resolveFileId(s);await this.client.mkdir(o,n)}async rename(e,t,i){let n=await this.resolveFileId(t);await this.client.rename(n,i)}async remove(e,t,i){let n=await this.resolveFileId(t);await this.client.remove(n)}async move(e,t,i,n,s){let o=await this.resolveFileId(n),a=await this.resolveFileId(t);await this.client.move(o,a)}async copy(e,t,i,n,s){let o=await this.resolveFileId(n),a=await this.resolveFileId(t);await this.client.copy(o,a)}async put(e,t,i){let n=t.split("/").filter(Boolean),s=n.pop()||"upload",o="/"+n.join("/"),a=await this.resolveFileId(o);await this.client.putFile(a,s,i)}async resolveFileId(e){let t=e.split("/").filter(Boolean).join("/");if(!t)return this.client.getRootFolderId();if(this.pathFileIdCache.has(t))return this.pathFileIdCache.get(t);let i=t.split("/"),n=this.client.getRootFolderId();for(let s=0;s{try{return decodeURIComponent(o)}catch{return o}})(),c=i.slice(0,s+1).join("/");if(this.pathFileIdCache.has(c)){n=this.pathFileIdCache.get(c);continue}let d=(await this.client.listFiles(n)).find(u=>u.name===o||u.name===a||u.file_id===o);if(!d)throw new Error(`[AliyundriveOpen] Path '${o}' not found`);n=d.file_id,this.pathFileIdCache.set(c,n)}return n}}});var Du,SS,DS,Vx=V(()=>{"use strict";Du="application/vnd.google-apps.folder",SS="application/vnd.google-apps.shortcut",DS="files(id,name,mimeType,size,modifiedTime,createdTime,thumbnailLink,shortcutDetails,md5Checksum,sha1Checksum,sha256Checksum),nextPageToken"});var Oo,QS,QH,lh,_S=V(()=>{"use strict";Vx();Oo="https://www.googleapis.com/drive/v3",QS="https://www.googleapis.com/upload/drive/v3",QH="https://oauth2.googleapis.com/token",lh=class{addition;accessToken="";refreshTokenVal="";tokenExpiresAt=0;constructor(e){this.addition=e,this.refreshTokenVal=e.refresh_token||""}getRootFolderId(){return this.addition.root_folder_id?.trim()||"root"}async init(){if(!this.refreshTokenVal||!this.refreshTokenVal.trim()){console.warn("[GoogleDrive] refresh_token is empty, skipping init.");return}try{await this.refreshAccessToken()}catch(e){console.warn("[GoogleDrive] init token refresh warning:",e.message)}}async refreshAccessToken(){let e=this.refreshTokenVal.trim();if(!e)return;let t=this.addition.use_online_api!==!1,i=[];t&&(this.addition.api_url_address?.trim()&&i.push(this.addition.api_url_address.trim()),i.push("https://api.oplist.org/google/token","https://api.oplist.org/google/renewapi","https://api.oplist.org/googledrive/token","https://api-sam.oplist.org/google/token","https://api-sam.oplist.org/googledrive/token","https://api.alist.nn.ci/google/token","https://api.alist.nn.ci/googledrive/token"));for(let o of i)try{let a=new URLSearchParams({refresh_ui:e,server_use:"true",driver_txt:"googleui_go"}),c=await fetch(`${o}?${a.toString()}`,{method:"GET"});if(!c.ok)throw new Error(`[Status ${c.status}]`);let l=await c.json(),d=l.access_token||l.data?.access_token||"",u=l.refresh_token||l.data?.refresh_token||"";if(!d){let f=l.text||l.error||"empty access_token";throw new Error(f)}this.accessToken=d,u&&(this.refreshTokenVal=u),this.tokenExpiresAt=Date.now()+(l.expires_in||3600)*1e3-6e4;return}catch(a){console.warn(`[GoogleDrive] Online API '${o}' failed: ${a.message}`)}let n=(this.addition.client_id||"").trim()||"202264815644-2n82p2e49c7o6026u87j9e22v1n25c27.apps.googleusercontent.com",s=(this.addition.client_secret||"").trim()||"GOCSPX-4bH5Kx3s_89_j6j2x-2x3-8x";if(n&&s)try{let o=await fetch(QH,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({client_id:n,client_secret:s,refresh_token:e,grant_type:"refresh_token"}).toString()});if(!o.ok){let c=await o.text().catch(()=>"");throw new Error(`[Status ${o.status}] ${c}`)}let a=await o.json();if(!a.access_token)throw new Error(`Invalid OAuth response: ${JSON.stringify(a)}`);this.accessToken=a.access_token,a.refresh_token&&(this.refreshTokenVal=a.refresh_token),this.tokenExpiresAt=Date.now()+(a.expires_in||3600)*1e3-6e4;return}catch(o){console.warn(`[GoogleDrive] Direct OAuth failed: ${o.message}`)}throw new Error("[GoogleDrive] All token refresh strategies failed. Please check: 1) refresh_token is valid, 2) api_url_address is accessible, 3) If using direct OAuth: client_id and client_secret are correct.")}async ensureToken(){(!this.accessToken||Date.now()>=this.tokenExpiresAt)&&await this.refreshAccessToken()}async request(e,t={},i=!0){await this.ensureToken();let n=await fetch(e,{...t,headers:{Authorization:`Bearer ${this.accessToken}`,...t.headers||{}}});if(n.status===401&&i)return console.warn("[GoogleDrive] 401 Unauthorized, refreshing token..."),await this.refreshAccessToken(),this.request(e,t,!1);if(!n.ok){let s=await n.text().catch(()=>"");throw new Error(`[GoogleDrive] API error [${n.status}]: ${s}`)}return n.status===204?null:n.json()}async listFiles(e){let t=[],i,n=this.addition.order_by||"folder,name,modifiedTime desc";do{let s=new URLSearchParams({q:`'${e}' in parents and trashed = false`,fields:DS,orderBy:n,pageSize:"1000",includeItemsFromAllDrives:"true",supportsAllDrives:"true"});i&&s.set("pageToken",i);let o=`${Oo}/files?${s.toString()}`,a=await this.request(o),c=a.files||[];for(let l of c)l.mimeType===SS&&l.shortcutDetails?.targetId&&(l.id=l.shortcutDetails.targetId,l.mimeType=l.shortcutDetails.targetMimeType||l.mimeType);t.push(...c),i=a.nextPageToken}while(i);return t}async getFile(e){let t=new URLSearchParams({fields:"id,name,mimeType,size,modifiedTime,md5Checksum",includeItemsFromAllDrives:"true",supportsAllDrives:"true"});return this.request(`${Oo}/files/${e}?${t.toString()}`)}getDownloadUrl(e){return`${Oo}/files/${e}?includeItemsFromAllDrives=true&supportsAllDrives=true&alt=media&acknowledgeAbuse=true`}getDownloadHeaders(){return{Authorization:`Bearer ${this.accessToken}`}}async mkdir(e,t){await this.request(`${Oo}/files?supportsAllDrives=true`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:t,parents:[e],mimeType:Du})})}async rename(e,t){await this.request(`${Oo}/files/${e}?supportsAllDrives=true`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:t})})}async remove(e){await this.request(`${Oo}/files/${e}?supportsAllDrives=true`,{method:"DELETE"})}async move(e,t,i){let n=new URLSearchParams({addParents:i,removeParents:t,supportsAllDrives:"true"});await this.request(`${Oo}/files/${e}?${n.toString()}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:"{}"})}async copy(e,t,i){await this.request(`${Oo}/files/${e}/copy?supportsAllDrives=true`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:i,parents:[t]})})}async putFile(e,t,i,n="application/octet-stream"){let s=(this.addition.chunk_size||5)*1024*1024;if(i.length<=s){let o=new URLSearchParams({uploadType:"multipart",supportsAllDrives:"true"}),a=`----GoogleDriveBoundary${Date.now()}`,c=JSON.stringify({name:t,parents:[e]}),l=`--${a}\r + DB_FORMAT=map | key | sql`,pS={blob:Rx,cfkv:Nx,kv:$0,d1:Mx,do:Hx,mysql:Gx};MH="https://doc.oplist.org/ecosystem/official_worker/guide",LH={kv:`The "kv" driver requires one of the following: + - Cloudflare Workers: a KV namespace binding named exactly "KV" (wrangler.jsonc: "kv_namespaces": [{ "binding": "KV" }]); + - EdgeOne Node Functions: KV is NOT injected into Node functions, so the Edge Function KV proxy must be reachable (known request origin / EO_KV_URLS) and JWT_SECRET (>=16 chars, identical on the Edge Function side) must be set. +If neither applies, use DB_DRIVER=auto, DB_DRIVER=blob (EdgeOne) or DB_DRIVER=d1 (Cloudflare). +`,d1:`The "d1" driver requires a Cloudflare D1 binding named "DB" (wrangler.jsonc: "d1_databases": [{ "binding": "DB", ... }]). +EdgeOne has no D1 \u2014 use DB_DRIVER=blob there instead. +`,cfkv:`The "cfkv" driver requires Cloudflare API credentials: CF_ACCOUNT (or CLOUDFLARE_ACCOUNT_ID), CF_KV_UUID (or CLOUDFLARE_KV_NAMESPACE_ID) and CF_API_KEY (or CLOUDFLARE_API_TOKEN) with KV read/write permission. +`,do:`The "do" driver requires a Durable Objects namespace binding named "DO" (wrangler.jsonc: "durable_objects": { "bindings": [{ "name": "DO", "class_name": "..." }] } plus a matching migration). +`,mysql:`The "mysql" driver requires a Node runtime plus connection info (MYSQL_URLS, or MYSQL_HOST/MYSQL_PORT/MYSQL_USER/MYSQL_PASS/MYSQL_NAME). Cloudflare Workers cannot open raw TCP connections to MySQL. +`,blob:`The "blob" driver requires either the EdgeOne Blob SDK (only present inside the EdgeOne Makers runtime) or an ESA_BLOB binding on Alibaba ESA. +`},jx=null;$x=null,Vx=null,mS=null,yS=new WeakMap,jH=0;Yx=null});async function $H(){if(sh)return sh;if(vS>=3)return null;vS++;try{let{getStore:r}=await Promise.resolve().then(()=>Qr(Tx(),1));sh=r({name:"openlist_db",consistency:"strong"})}catch{return null}return sh}function SS(){kS||(kS=!0,!(typeof process>"u"||typeof process.on!="function")&&process.on("uncaughtException",r=>{(r?.message?.includes("RESP")||r?.message?.includes("Unknown type")||r?.stack?.includes("processResponses"))&&console.error("[KV/RESP] Caught uncaught exception from storage binding, continuing:",r.message)}))}function QS(r){r&&(Zx=r)}function DS(r){if(!r||typeof r!="object")return!1;try{return typeof r.get!="function"?!1:typeof r.put=="function"||typeof r.set=="function"}catch{return!1}}function VH(r,e){let t=async()=>(await Promise.resolve().then(()=>(Ux(),Lk))).kvDriver;return{async get(i){return(await t()).get(i,e)},async put(i,n){return(await t()).put(i,n,e)},async delete(i){return(await t()).delete(i,e)},async list(i={}){return{keys:(await(await t()).list(i?.prefix||"",e)).map(s=>({name:s,key:s}))}}}}async function eC(r){r&&(Zx=r);let e=r||Zx||(typeof process<"u"?process.env:{}),t=typeof globalThis<"u"?globalThis:{};if(e&&typeof e=="object"){let a=Ru.get(e);if(a)return a}let i=DS(e?.KV)?e.KV:DS(t?.KV)?t.KV:null;if(String(e?.DB_DRIVER||"").trim().toLowerCase()==="kv"&&!i){let a;try{a=e?.EO_KV_URLS||e?.__requestOrigin}catch{a=void 0}let c=wl(a,e);if(c){let l={binding:VH(c,e),platform:"EdgeOne KV (via Edge Function proxy)",mode:"proxy"};return e&&typeof e=="object"&&Ru.set(e,l),l}console.warn("[DB] getKvBinding: KV proxy requested but no origin available (set EO_KV_URLS or ensure request origin is injected)")}try{let a=await $H();if(a){SS();let c={binding:a,platform:"EdgeOne Blob (@edgeone/pages-blob, strong consistency)",mode:"blob"};return e&&typeof e=="object"&&Ru.set(e,c),c}}catch(a){console.error(`[DB] getKvBinding: EdgeOne Blob init failed: ${a?.message||a}`,`stack=${a?.stack?.substring(0,300)||""}`)}if(i){let a=!!(e&&(e.EDGEONE||e.EO_REGION))||!!(t.EDGEONE||typeof t.EdgeOne<"u");a&&SS();let l={binding:i,platform:a?"EdgeOne KV (KV)":"Cloudflare / EdgeOne KV (KV)",mode:"binding"};return e&&typeof e=="object"&&Ru.set(e,l),l}{let a=e.CF_ACCOUNT||(typeof process<"u"?process.env.CF_ACCOUNT:""),c=e.CF_KV_UUID||(typeof process<"u"?process.env.CF_KV_UUID:""),l=e.CF_API_KEY||(typeof process<"u"?process.env.CF_API_KEY:"");if(a&&c&&l){let d={binding:{type:"cf_rest",accountId:a,namespaceId:c,token:l},platform:"Cloudflare KV (REST API)",mode:"api"};return e&&typeof e=="object"&&Ru.set(e,d),d}}let s=String(e?.DB_DRIVER||"").trim().toLowerCase();return(!s||s==="auto"||s==="kv"||s==="cfkv"||s==="blob")&&console.warn(s&&s!=="auto"?`[DB] getKvBinding: no KV-style binding found; DB_DRIVER="${s}" is served by getStorageBackend() instead. This is expected.`:"[DB] getKvBinding: no KV/Blob binding found in auto detection."),{binding:null,platform:"none",mode:"none"}}async function YH(r,e="openlist_config"){let{binding:t,mode:i}=r;if(i==="none"||!t)return null;try{if(i==="blob"){let n=await t.get(e,{type:"json"});if(n)return n;let s=await t.get(e);if(s)return typeof s=="string"?JSON.parse(s):s}else if(i==="binding"||i==="proxy"){let n=null;try{n=await t.get(e,"text")}catch{n=await t.get(e)}if(n==null&&(n=await t.get(e)),n)return typeof n=="string"?JSON.parse(n):n}else if(t.type==="cf_rest"){let n=`https://api.cloudflare.com/client/v4/accounts/${t.accountId}/storage/kv/namespaces/${t.namespaceId}/values/${e}`,s=await fetch(n,{headers:{Authorization:`Bearer ${t.token}`}});if(s.ok){let o=await s.text();return JSON.parse(o)}}}catch(n){console.error("[KV/Blob Store] Error reading key:",e,n)}return null}async function bl(r){let e=await eC(r),t=e.mode!=="none",i=!1,n=null;if(t)try{let s=await YH(e,"openlist_config");return i=!0,{configured:!0,connected:!0,platform:e.platform,mode:e.mode,hasData:!!s,error:null}}catch(s){n=s.message||String(s)}return{configured:t,connected:i,platform:e.platform,mode:e.mode,hasData:!1,error:n}}async function _S(r){let{getStorageBackend:e}=await Promise.resolve().then(()=>(ic(),bS)),{driver:t}=await e(r);return t}async function nc(r,e){try{let i=await(await _S(r)).get(e,r);if(i==null)return null;let n=typeof i?.text=="function"?await i.text():i;return String(n).trim()||null}catch(t){return console.warn(`[Secret] read "${e}" failed:`,t),null}}async function oh(r,e,t){try{return await(await _S(r)).put(e,t,r),!0}catch(i){return console.warn(`[Secret] cannot persist "${e}": ${i?.message||i}`),!1}}function FS(){let r=new Uint8Array(32);return crypto.getRandomValues(r),Array.from(r,e=>e.toString(16).padStart(2,"0")).join("")}var sh,vS,kS,Zx,Ru,tC=j(()=>{"use strict";K0();K0();sh=null,vS=0;kS=!1;Zx=null,Ru=new WeakMap});var Gr={};xn(Gr,{ENCRYPTION_SECRET_KV_KEY:()=>kl,__resetDbCacheForTest:()=>iK,__setStoreBackendLoaderForTest:()=>nK,defaultDb:()=>ac,ensureEncryptionSecret:()=>aC,getDb:()=>ne,getDbLoadError:()=>Ah,getKvBinding:()=>eC,getKvStatus:()=>bl,getMetas:()=>fK,getPlugins:()=>AK,getSettings:()=>jn,getStorages:()=>uK,getStoreStatus:()=>Jn,getUsers:()=>dK,isDbShell:()=>NS,isDbTrusted:()=>nC,isDbWriteBlocked:()=>eK,isEncryptionReady:()=>gh,readPersistedSecret:()=>nc,resolvePath:()=>tt,saveDb:()=>fe,setEnvCtx:()=>sC,writePersistedSecret:()=>oh});function nC(){return No}function Ah(){return oc}function eK(){return iC}function NS(r){if(!r||typeof r!="object")return!0;let e=Array.isArray(r.storages)?r.storages.length:0,t=Array.isArray(r.shares)?r.shares.length:0,i=Array.isArray(r.metas)?r.metas.length:0,n=Array.isArray(r.plugins)?r.plugins.length:0;if(e+t+i+n>0||(Array.isArray(r.users)?r.users:[]).some(d=>String(d?.password||"").trim()!==""))return!1;let a=Array.isArray(r.settings)?r.settings:[],c=Array.isArray(ac.settings)?ac.settings:[],l=new Map(c.map(d=>[String(d.key),d.value]));return a.every(d=>l.has(String(d.key))&&l.get(String(d.key))===d.value)}function sC(r){r&&(oi=r,QS(r))}function oC(r){let e=r?.JWT_SECRET||(typeof process<"u"?process.env?.JWT_SECRET:"");return typeof e=="string"&&e.length>=16?e:null}async function MS(r){let e=r||oi||(typeof process<"u"?process.env:{}),t=oC(e);if(t)return(!sc||qo!==t)&&(qo=t,sc=!0),t;if(qo&&!sc)return qo;try{let i=await nc(e,kl);if(i&&i.length>=16)return qo=i,sc=!1,i}catch{}return TS||(TS=!0,console.error("[DB] No encryption key available: set JWT_SECRET. Sensitive fields would otherwise be written in plaintext.")),null}async function gh(r){let e=r||oi||(typeof process<"u"?process.env:{});if(oC(e))return!0;try{let t=await nc(e,kl);return!!(t&&t.length>=16)}catch{return!1}}function aK(r){return new Promise(e=>setTimeout(e,r))}async function aC(r){if(Nu)return Nu;Nu=(async()=>{let e=r||oi||(typeof process<"u"?process.env:{}),t=oC(e);if(t)return t;let i=await nc(e,kl);if(i&&i.length>=16)return qo=i,sc=!1,i;let n=FS();if(!await oh(e,kl,n))return console.error("[DB] Failed to persist an encryption key. Sensitive fields will be stored in plaintext until JWT_SECRET is configured via environment variable."),null;qo=n,sc=!1;let o=sK;for(let a=0;a=16&&c!==n)return console.warn("[DB] A different encryption key already exists; adopting it to keep encrypt/decrypt symmetric."),qo=c,sc=!1,c;await aK(o),o=Math.min(o*2,oK)}return console.warn(`[DB] Encryption key written but not yet readable after ${US} retries. Cross-instance reads may lag briefly due to eventual consistency; retry shortly.`),n})();try{return await Nu}finally{Nu=null}}async function uh(r,e){return!r||r.startsWith(Oo)?r:Oo+await pk(r,e)}async function fh(r,e){if(!r||!r.startsWith(Oo))return r;try{return await mk(r.slice(Oo.length),e)}catch(t){return console.warn("[DB] Failed to decrypt a sealed secret (wrong JWT_SECRET?):",t),r}}async function cK(r,e){if(!e||!r)return r;let t=JSON.parse(JSON.stringify(r));for(let i of t.storages||[]){if(!i||!i.addition)continue;let n=typeof i.addition=="string"?i.addition:JSON.stringify(i.addition);n&&n!=="{}"&&(i.addition=await uh(n,e))}for(let i of t.settings||[])i&&OS.has(i.key)&&i.value&&(i.value=await uh(String(i.value),e));for(let i of t.users||[])i&&i.otp_secret&&(i.otp_secret=await uh(String(i.otp_secret),e)),i&&i.password&&(i.password=await uh(String(i.password),e));return t}async function lK(r,e){if(!e||!r)return;let t=[];for(let i of r.storages||[])if(i&&typeof i.addition=="string"&&i.addition.startsWith(Oo)){let n=i,s=n.addition;t.push(fh(s,e).then(o=>{n.addition=o}))}for(let i of r.settings||[])if(i&&OS.has(i.key)&&typeof i.value=="string"&&i.value.startsWith(Oo)){let n=i,s=n.value;t.push(fh(s,e).then(o=>{n.value=o}))}for(let i of r.users||[])if(i){if(typeof i.otp_secret=="string"&&i.otp_secret.startsWith(Oo)){let n=i,s=n.otp_secret;t.push(fh(s,e).then(o=>{n.otp_secret=o}))}if(typeof i.password=="string"&&i.password.startsWith(Oo)){let n=i,s=n.password;t.push(fh(s,e).then(o=>{n.password=o}))}}t.length>0&&await Promise.all(t)}async function tt(r,e){let t=await ne(e),i=r;try{i=decodeURIComponent(String(i||""))}catch{}let n="",s=0;for(;i!==n&&s<3;){n=i;try{let f=decodeURIComponent(i);if(f===i)break;i=f,s++}catch{break}}i=i.replace(/\\/g,"/").replace(/%5c/gi,"/").replace(/%2f/gi,"/").replace(/\.{3,}/g,"..").replace(/\/+/g,"/");let o=["\0","\r",` +`," "];for(let f of o)if(i.includes(f))throw new Error(`invalid path: illegal character detected (0x${f.charCodeAt(0).toString(16)})`);if(/^[A-Za-z]:/.test(i))throw new Error("invalid path: absolute Windows path not allowed");if(i.startsWith("//")||i.startsWith("\\\\"))throw new Error("invalid path: UNC path not allowed");let a=[];for(let f of i.split("/"))if(!(f===""||f===".")){if(f===".."){a.pop();continue}a.push(f)}let c="/"+a.join("/");c===""&&(c="/");let l=(t.storages||[]).filter(f=>!f.disabled&&typeof f.driver=="string"&&f.driver.trim()!==""&&f.driver!=="undefined"&&f.driver!=="null"&&typeof f.mount_path=="string"&&f.mount_path.trim()!=="");if(l.length===0)throw new Error("failed get storage: storage not found; please add a storage first");let d=[...l].sort((f,h)=>{let g="/"+(f.mount_path||"").split("/").filter(Boolean).join("/");return("/"+(h.mount_path||"").split("/").filter(Boolean).join("/")).length-g.length});for(let f of d){let h="/"+(f.mount_path||"").split("/").filter(Boolean).join("/"),g=h==="/";if(g||c===h||c.startsWith(h+"/")){let I=c;g||(I=c.slice(h.length)),I.startsWith("/")||(I="/"+I);let y={};try{y=typeof f.addition=="string"?JSON.parse(f.addition||"{}"):f.addition||{}}catch{y={}}let C=y.root_folder_path!==void 0?y.root_folder_path:"/",x=([C,I].map(R=>R.replace(/\\/g,"/")).filter(R=>!!R&&R!=="/").join("/")||"/").replace(/\/{2,}/g,"/"),_=String(C||"/").replace(/\\/g,"/").replace(/\/+$/,"")||"/";if(_!=="/"&&x!==_&&!x.startsWith(_+"/"))throw new Error("path traversal blocked: escapes storage root");if(x.split("/").includes(".."))throw new Error("path traversal blocked: illegal '..' segment");return{storage:f,relative:I,physical:x,rootFolder:C,cleanPath:c,isVirtual:!1}}}let u=!1;for(let f of l){let h="/"+(f.mount_path||"").split("/").filter(Boolean).join("/");if(h!=="/"&&h.startsWith(c==="/"?"/":c+"/")){u=!0;break}}if(u)return{storage:null,relative:c,physical:null,rootFolder:null,cleanPath:c,isVirtual:!0};throw new Error("failed get storage: storage not found")}async function jn(){let r=await ne(),e={};return r.settings&&r.settings.forEach(t=>{e[t.key]=t.value}),e}async function dK(){return(await ne()).users||[]}async function uK(){return(await ne()).storages||[]}async function fK(){return(await ne()).metas||[]}async function AK(){return(await ne()).plugins||[]}var RS,WH,XH,ZH,ac,ht,oi,No,iC,oc,tK,rC,ah,ch,lh,dh,rK,Ou,qu,hh,iK,nK,vl,qS,PS,ne,Oo,OS,TS,kl,qo,sc,Nu,US,sK,oK,fe,Ve=j(()=>{"use strict";si();tC();ic();tC();ic();RS="txt,htm,html,xml,java,properties,sql,js,json,c,cpp,python,py,php,go,rst,css,typescript,ts,log,conf,yaml,yml,cmd,bash,sh,vue,ini,md,bat,gitignore,h,hpp,tsx,vtt,srt,ass,rs,lrc,strm",WH="m3u8,url",XH="authorization,referer",ZH="txt,htm,html,xml,java,properties,sql,js,json,c,cpp,python,py,php,go,rst,css,typescript,ts,log,conf,yaml,yml,cmd,bash,sh,vue,ini",ac={settings:[{key:"version",value:"v4.2.3",type:"string",help:"Application Version",group:1,flag:1},{key:"site_title",value:"OpenList",type:"string",help:"Site Title",group:1,flag:0},{key:"announcement",value:"",type:"text",help:"Site Announcement",group:1,flag:0},{key:"pagination_type",value:"pagination",type:"select",options:"all,pagination,load_more,auto_load_more",help:"Pagination Type",group:1,flag:0},{key:"default_page_size",value:"20",type:"number",help:"Default Page Size",group:1,flag:0},{key:"allow_indexed",value:"false",type:"bool",help:"Allow Search Engine Indexing",group:1,flag:0},{key:"allow_mounted",value:"true",type:"bool",help:"Allow Mounted Storages",group:1,flag:0},{key:"robots_txt",value:`User-agent: * +Disallow: /`,type:"text",help:"Robots Txt Content",group:1,flag:0},{key:"logo",value:"https://res.oplist.org/logo/logo.svg",type:"string",help:"Site Logo URL",group:2,flag:0},{key:"favicon",value:"https://res.oplist.org/logo/logo.svg",type:"string",help:"Favicon URL",group:2,flag:0},{key:"main_color",value:"#1890ff",type:"string",help:"Main Theme Color",group:2,flag:0},{key:"home_icon",value:"openlist",type:"string",help:"Home Icon Name",group:2,flag:0},{key:"home_container",value:"max_980px",type:"select",options:"max_980px,hope_container",help:"Home Container Width",group:2,flag:0},{key:"settings_layout",value:"responsive",type:"select",options:"list,responsive",help:"Settings Layout Mode",group:2,flag:0},{key:"text_types",value:RS,type:"text",help:"Text File Extensions",group:3,flag:0},{key:"audio_types",value:"mp3,ogg,aac,wav,wma,flac,m4a,opus",type:"text",help:"Audio File Extensions",group:3,flag:0},{key:"video_types",value:"mp4,mkv,webm,avi,mov,flv,m3u8,ts",type:"text",help:"Video File Extensions",group:3,flag:0},{key:"image_types",value:"jpg,png,jpeg,gif,bmp,svg,ico,webp,avif,tiff",type:"text",help:"Image File Extensions",group:3,flag:0},{key:"proxy_types",value:WH,type:"text",help:"Proxy File Extensions",group:3,flag:0},{key:"proxy_ignore_headers",value:XH,type:"text",help:"Proxy Ignore Headers",group:3,flag:0},{key:"external_previews",value:"{}",type:"text",help:"External Previews JSON Config",group:3,flag:0},{key:"iframe_previews",value:"{}",type:"text",help:"Iframe Previews JSON Config",group:3,flag:0},{key:"audio_cover",value:"https://file.nn.ci/alist/cover.png",type:"string",help:"Audio Default Cover Image URL",group:3,flag:0},{key:"audio_autoplay",value:"false",type:"bool",help:"Autoplay Audio",group:3,flag:0},{key:"video_autoplay",value:"false",type:"bool",help:"Autoplay Video",group:3,flag:0},{key:"preview_archives_by_default",value:"false",type:"bool",help:"Preview Archives By Default",group:3,flag:0},{key:"readme_autorender",value:"true",type:"bool",help:"Readme Autorender",group:3,flag:0},{key:"filter_readme_scripts",value:"true",type:"bool",help:"Filter Readme Scripts",group:3,flag:0},{key:"force_preview",value:"",type:"text",help:"Force Preview Config",group:3,flag:0},{key:"specify_preview",value:"",type:"text",help:"Specify Preview Layout Config",group:3,flag:0},{key:"markdown_autorender",value:"true",type:"bool",help:"Autorender Markdown",group:3,flag:0},{key:"code_editor_theme",value:"vs-dark",type:"select",options:"vs,vs-dark,hc-black",help:"Monaco Theme",group:3,flag:0},{key:"office_preview",value:"true",type:"bool",help:"Enable Office Document Preview",group:3,flag:0},{key:"pdf_preview",value:"true",type:"bool",help:"Enable PDF Preview",group:3,flag:0},{key:"hide_files",value:"",type:"text",help:"Files Regex to Hide",group:4,flag:0},{key:"package_download",value:"true",type:"bool",help:"Package Download Enabled",group:4,flag:0},{key:"customize_head",value:"",type:"text",help:"Custom Head HTML/CSS",group:4,flag:0},{key:"customize_body",value:"",type:"text",help:"Custom Body Script",group:4,flag:0},{key:"link_expiration",value:"0",type:"number",help:"Link Expiration in Seconds",group:4,flag:0},{key:"sign_all",value:"false",type:"bool",help:"Sign All Download Links",group:4,flag:0},{key:"seed_site_url",value:"",type:"string",help:"Public site URL used by transfer seed sources",group:4,flag:1},{key:"seed_default_matrix",value:'{"md5":{"whole":true,"pieces":false},"sha1":{"whole":true,"pieces":false},"sha256":{"whole":true,"pieces":false}}',type:"text",help:"Default transfer seed hash matrix",group:4,flag:1},{key:"seed_format_policies",value:'{"oss":"off","torrent":"off","cas":"off"}',type:"text",help:"Automatic transfer seed format policies",group:4,flag:1},{key:"seed_auto_generate_policy",value:"off",type:"select",options:"off,on",help:"Global automatic transfer seed policy",group:4,flag:1},{key:"seed_single_direct_preview",value:"false",type:"bool",help:"Open single-file transfer seeds directly in preview",group:4,flag:0},{key:"seed_cas_direct_access",value:"false",type:"bool",help:"When opening a single-file CAS seed, immediately rapid-upload it into the same folder and preview the restored file",group:4,flag:0},{key:"seed_default_trackers",value:"",type:"text",help:"Default tracker list offered when generating torrent seeds (one tracker per line)",group:4,flag:1},{key:"privacy_regs",value:"",type:"text",help:"Privacy Regex Rules",group:4,flag:0},{key:"ocr_api",value:"",type:"string",help:"OCR API Endpoint",group:4,flag:0},{key:"filename_char_mapping",value:"{}",type:"text",help:"Filename Char Mapping JSON",group:4,flag:0},{key:"forward_direct_link_params",value:"",type:"string",help:"Forward Direct Link Params",group:4,flag:0},{key:"ignore_direct_link_params",value:"",type:"string",help:"Ignore Direct Link Params",group:4,flag:0},{key:"webauthn_login_enabled",value:"false",type:"bool",help:"Webauthn Login Enabled",group:4,flag:0},{key:"allow_previewing_sharing_files",value:"true",type:"bool",help:"Allow Previewing Sharing Files",group:4,flag:0},{key:"allow_previewing_sharing_archives",value:"true",type:"bool",help:"Allow Previewing Sharing Archives",group:4,flag:0},{key:"force_proxy_sharing_files",value:"false",type:"bool",help:"Force Proxy Sharing Files",group:4,flag:0},{key:"share_summary_content",value:"",type:"text",help:"Share Summary Content",group:4,flag:0},{key:"handle_hook_after_writing",value:"",type:"string",help:"Handle Hook After Writing",group:4,flag:0},{key:"handle_hook_rate_limit",value:"0",type:"number",help:"Handle Hook Rate Limit",group:4,flag:0},{key:"ignore_system_files",value:"true",type:"bool",help:"Ignore System Files (.DS_Store, desktop.ini, etc.)",group:4,flag:0},{key:"auto_update_index",value:"false",type:"bool",help:"Auto Update Search Index",group:4,flag:0},{key:"sso_login_enabled",value:"false",type:"bool",help:"Enable SSO Login",group:7,flag:0},{key:"sso_login_platform",value:"",type:"select",options:"Github,Microsoft,Google,Dingtalk,Casdoor,OIDC",help:"SSO Platform",group:7,flag:0},{key:"sso_client_id",value:"",type:"string",help:"SSO Client ID",group:7,flag:0},{key:"sso_client_secret",value:"",type:"string",help:"SSO Client Secret",group:7,flag:0},{key:"sso_login_url",value:"",type:"string",help:"SSO Authorization Endpoint",group:7,flag:0},{key:"sso_token_url",value:"",type:"string",help:"SSO Token Endpoint (optional, defaults per platform)",group:7,flag:0},{key:"sso_userinfo_url",value:"",type:"string",help:"SSO UserInfo Endpoint (optional, defaults per platform)",group:7,flag:0},{key:"sso_scopes",value:"",type:"string",help:"SSO OAuth2 Scopes (optional, space separated)",group:7,flag:0},{key:"sso_oidc_discovery_url",value:"",type:"string",help:"OIDC Discovery URL (for OIDC platform)",group:7,flag:0},{key:"sso_login_callback_url",value:"",type:"string",help:"SSO Redirect/Callback URL (optional, defaults to /api/auth/sso_callback)",group:7,flag:0},{key:"sso_compatibility_mode",value:"false",type:"bool",help:"SSO Compatibility Mode (postMessage token handoff)",group:7,flag:0},{key:"sso_auto_register",value:"false",type:"bool",help:"Auto Register New SSO Users",group:7,flag:0},{key:"sso_default_dir",value:"/",type:"string",help:"SSO Default Directory for New Users",group:7,flag:0},{key:"sso_default_permission",value:"0",type:"number",help:"SSO Default Permission for New Users",group:7,flag:0},{key:"ldap_host",value:"",type:"string",help:"LDAP Server Host",group:8,flag:0},{key:"ldap_port",value:"389",type:"number",help:"LDAP Server Port",group:8,flag:0},{key:"traffic_limit",value:"0",type:"number",help:"Traffic Limit in MB",group:10,flag:0},{key:"ip_limit",value:"0",type:"number",help:"IP Rate Limit Per Minute",group:10,flag:0},{key:"115_temp_dir",value:"",type:"string",help:"115 Temp Directory",group:14,flag:0},{key:"115_open_temp_dir",value:"",type:"string",help:"115 Open Temp Directory",group:14,flag:0},{key:"123_temp_dir",value:"",type:"string",help:"123 Pan Temp Directory",group:14,flag:0},{key:"123_open_temp_dir",value:"",type:"string",help:"123 Open Temp Directory",group:14,flag:0},{key:"123_open_callback_url",value:"",type:"string",help:"123 Open Callback URL",group:14,flag:0},{key:"pikpak_temp_dir",value:"",type:"string",help:"PikPak Temp Directory",group:14,flag:0},{key:"thunder_temp_dir",value:"",type:"string",help:"Thunder Temp Directory",group:14,flag:0},{key:"thunder_browser_temp_dir",value:"",type:"string",help:"Thunder Browser Temp Directory",group:14,flag:0},{key:"thunderx_temp_dir",value:"",type:"string",help:"ThunderX Temp Directory",group:14,flag:0},{key:"token",value:"",type:"string",help:"115 / PikPak / Thunder Token",group:14,flag:0},{key:"package_download_disabled",value:"false",type:"bool",help:"Disable Package Download",group:14,flag:0}],storages:[],users:[{id:1,username:"admin",password:"",role:2,permission:0,base_path:"/",disabled:!1,sso_id:"",allow_ldap:!1,pwd_update_at:new Date().toISOString()},{id:2,username:"guest",password:"",role:1,permission:0,base_path:"/",disabled:!1,sso_id:"",allow_ldap:!1,pwd_update_at:new Date().toISOString()}],metas:[],shares:[],plugins:[]},ht=null,oi=null,No=!1,iC=!1,oc=null;tK={logo:{from:["","/logo.png","https://res.oplist.org/logo/logo.png"],to:"https://res.oplist.org/logo/logo.svg"},favicon:{from:["","/favicon.png"],to:"https://res.oplist.org/logo/logo.svg"},home_container:{from:["hope_container"],to:"max_980px"},text_types:{from:[ZH],to:RS}},rC=r=>{if(!r)return;r.settings||(r.settings=[]);let e=!1,t=[],i=new Set;for(let n of ac.settings){i.add(n.key);let s=r.settings.filter(o=>o.key===n.key);if(s.length===0)t.push(JSON.parse(JSON.stringify(n))),e=!0;else{let o=s.find(c=>c.value&&c.value.trim()!=="")||s[0];(o.group!==n.group||o.help!==n.help||o.type!==n.type||o.options!==n.options||o.flag!==n.flag)&&(o.group=n.group,o.help=n.help,o.type=n.type,o.options=n.options,o.flag=n.flag,e=!0),s.length>1&&(e=!0);let a=tK[n.key];a&&a.from.includes(o.value)&&(o.value=a.to,e=!0),t.push(o)}}for(let n of r.settings)n.key&&!i.has(n.key)&&(i.add(n.key),t.push(n));r.settings=t},ah=r=>{r&&(!r.storages||!Array.isArray(r.storages)?r.storages=[]:r.storages=r.storages.filter(e=>e&&typeof e=="object"&&typeof e.driver=="string"&&e.driver.trim()!==""&&e.driver!=="undefined"&&e.driver!=="null"&&typeof e.mount_path=="string"&&e.mount_path.trim()!==""))},ch=r=>{r&&(r.shares||(r.shares=[]))},lh=r=>{r&&(r.plugins||(r.plugins=[]))},dh=r=>{r&&(!r.metas||!Array.isArray(r.metas))&&(r.metas=[])},rK=1e3,Ou=new WeakMap,qu=new WeakMap,hh=r=>nh(r),iK=()=>{oi&&typeof oi=="object"&&(Ou.delete(oi),qu.delete(oi)),vl&&(Ou.delete(vl),qu.delete(vl)),vl=null,oi=null,ht=null,hh=r=>nh(r)},nK=r=>{hh=r},vl=null,qS=()=>{let r=oi;return!r||typeof r!="object"?null:(vl=r,vl)},PS=async r=>{r&&(oi=r);let e=r||oi,t=null;try{t=await hh(e);let i=await t.load(e);if(i)return await lK(i,await MS(e)),ht=i,rC(ht),ah(ht),ch(ht),lh(ht),dh(ht),No=!0,oc=null,ht;if(No&&ht)return console.warn(`[DB] Backend ${t?.name??"storage"} returned empty while a trusted snapshot exists; keeping the in-memory snapshot to avoid overwriting real config.`),rC(ht),ah(ht),ch(ht),lh(ht),dh(ht),ht;No=!1,oc=null}catch(i){console.error(`[DB] Error reading config from ${t?.name??"storage"}:`,i?.message||i),oc=String(i?.message||i),No=!1}return ht&&No?(rC(ht),ah(ht),ch(ht),lh(ht),dh(ht),ht):(ht=JSON.parse(JSON.stringify(ac)),ah(ht),ch(ht),lh(ht),dh(ht),ht)},ne=async r=>{r&&(oi=r);let e=r||qS();if(!e)return PS(r);let t=qu.get(e);if(t)return t;let i=Ou.get(e);if(i&&Date.now()-i.ts(Ou.set(e,{ts:Date.now(),db:s}),s)).finally(()=>{qu.delete(e)});return qu.set(e,n),n},Oo="enc:v1:",OS=new Set(["token","sso_client_secret","sso_client_id","ldap_bind_password","ldap_bind_dn","ocr_api","handle_hook_after_writing"]),TS=!1,kl="openlist_encryption_secret";qo=null,sc=!1;Nu=null,US=6,sK=100,oK=1e3;fe=async(r,e,t)=>{e&&(oi=e);let i=e||oi;if(NS(r)&&!t?.force){iC=!0;let c=oc?`last load failed: ${oc}`:No?"payload is an empty/shell database":"database was never successfully loaded from the persistence backend";return console.error(`[DB] saveDb BLOCKED: refusing to persist an empty/shell database (${c}). This guard prevents an empty payload from wiping real config. Pass saveDb(db, env, { force: true }) to override intentionally.`),!1}ht=r,iC=!1;let s=e||qS();s&&Ou.set(s,{ts:Date.now(),db:r});let o=await hh(i);if(!(o.isConfigured?await o.isConfigured(i):!0))return console.warn("[DB] WARNING: No persistence backend configured! Storage configuration changes will exist only in memory!"),!1;try{console.log(`[DB] saveDb: sealing and persisting to ${o.name}, storages=${r.storages?.length||0}`);let c=await cK(r,await MS(i));console.log(`[DB] saveDb: sealed data size=${JSON.stringify(c).length} bytes`),await o.save(c,i)}catch(c){throw console.error(`[DB] saveDb FAILED: backend=${o.name}, error=${c?.message||c}`,`stack=${c?.stack?.substring(0,500)||""}`),new Error(`[DB] Failed to persist config (${o.name}); the change was NOT saved: ${c?.message||c}`)}return console.log(`[DB] Successfully persisted ${r.storages?.length||0} storages to ${o.name}`),No=!0,oc=null,!0}});function X(r,e){if(e)return 1;let t=(r.split(".").pop()||"").toLowerCase();return["mp4","mkv","avi","mov","flv","wmv","ts","m2ts","m4v","rmvb","webm","3gp","asf","vob","ogv","rm","f4v"].includes(t)?2:["mp3","flac","aac","wav","ogg","m4a","opus","wma","ape","alac","aiff","mid","midi"].includes(t)?3:["txt","md","markdown","json","js","ts","jsx","tsx","css","scss","html","htm","xml","yaml","yml","ini","conf","env","log","sql","py","java","c","cpp","h","hpp","go","rs","sh","bat","cmd","ps1","php","rb","swift","kt","cs","vue","svelte","json5","toml"].includes(t)?4:["jpg","jpeg","png","gif","bmp","webp","svg","ico","tiff","tif","heic","heif","avif","vvc","avc","psd","ai"].includes(t)?5:0}var Be=j(()=>{"use strict"});function de(r,e,t){let i=t!=="desc",n=String(e||"name").toLowerCase(),s=[...r];return s.sort((o,a)=>{if(o.is_dir!==a.is_dir)return o.is_dir?-1:1;let c;return n.includes("size")?c=(o.size||0)-(a.size||0):n.includes("time")||n.includes("modified")||n.includes("created")?c=new Date(o.modified).getTime()-new Date(a.modified).getTime():c=String(o.name).localeCompare(String(a.name)),i?c:-c}),s}var He=j(()=>{"use strict"});var $n,cC=j(()=>{"use strict";$n={global:{oauth:"https://login.microsoftonline.com",api:"https://graph.microsoft.com"},cn:{oauth:"https://login.partner.microsoftonline.cn",api:"https://microsoftgraph.chinacloudapi.cn"},us:{oauth:"https://login.microsoftonline.us",api:"https://graph.microsoft.us"},de:{oauth:"https://login.microsoftonline.de",api:"https://graph.microsoft.de"}}});function lC(r,e){let t="";return r.thumbnails&&r.thumbnails.length>0&&(t=r.thumbnails[0].medium?.url||""),{id:r.id,name:r.name,size:r.size,modified:r.lastModifiedDateTime||r.fileSystemInfo?.lastModifiedDateTime||"",isFolder:!!r.folder||!r.file,thumbnail:t,parentID:e,url:r["@microsoft.graph.downloadUrl"]||""}}var LS=j(()=>{"use strict"});async function dC(r){if(r.use_online_api&&r.api_url_address){let s=new URLSearchParams({refresh_ui:r.refresh_token,server_use:"true",driver_txt:"onedrive_pr"}).toString(),a=await(await fetch(`${r.api_url_address}?${s}`)).json();if(!a.refresh_token||!a.access_token)throw a.text?new Error(`failed to refresh token: ${a.text}`):new Error("empty token returned from official API");r.accessToken=a.access_token,r.refresh_token=a.refresh_token,r.onTokenUpdate?.(r.refresh_token);return}if(!r.client_id||!r.client_secret)throw new Error("empty ClientID or ClientSecret");let t=`${($n[r.region]||$n.global).oauth}/common/oauth2/v2.0/token`,n=await(await fetch(t,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({grant_type:"refresh_token",client_id:r.client_id,client_secret:r.client_secret,redirect_uri:r.redirect_uri,refresh_token:r.refresh_token}).toString()})).json();if(!n.refresh_token)throw new Error("Empty token");r.refresh_token=n.refresh_token,r.accessToken=n.access_token,r.onTokenUpdate?.(r.refresh_token)}async function Ui(r,e,t,i,n){let s=i!==void 0&&(i instanceof Uint8Array||i instanceof ArrayBuffer||typeof Buffer<"u"&&Buffer.isBuffer(i)),o={method:t.toUpperCase(),headers:{Authorization:`Bearer ${r.accessToken}`,...i!==void 0?{"Content-Type":s?"application/octet-stream":"application/json"}:{}},...i!==void 0?{body:s?i:JSON.stringify(i)}:{}},a=await fetch(e,o);if(!a.ok){let c;try{c=(await a.json()).error}catch{c=null}let l=c?.code;if((l==="InvalidAuthenticationToken"||l==="ExpiredAuthenticationToken"||a.status===401)&&!n)return await dC(r),Ui(r,e,t,i,!0);throw new Error(c?.message||`Request failed: ${a.status}`)}if(a.status!==204)return a.json()}function HS(r,e,t){let i=e.replace(/\\/g,"/");if(!i||i==="/")return t?`${r}/drive/root/${t}`:`${r}/drive/root`;let n=i.startsWith("/")?i.slice(1):i;if(n.endsWith("/")&&(n=n.slice(0,-1)),!n||n==="")return t?`${r}/drive/root/${t}`:`${r}/drive/root`;let s=n.split("/").map(encodeURIComponent).join("/");return t?`${r}/drive/root:/${s}:/${t}`:`${r}/drive/root:/${s}:`}async function KS(r,e){let t=$n[r.region]||$n.global,i=r.is_sharepoint?`${t.api}/v1.0/sites/${r.site_id}`:`${t.api}/v1.0/me`,s=HS(i,e,"children?$top=1000&$expand=thumbnails($select=medium)&$select=id,name,size,fileSystemInfo,@microsoft.graph.downloadUrl,file,folder,parentReference"),o=[];for(;s;){let a=await Ui(r,s,"GET");a.value&&o.push(...a.value),s=a["@odata.nextLink"]}return o}async function GS(r,e){let t=$n[r.region]||$n.global,i=r.is_sharepoint?`${t.api}/v1.0/sites/${r.site_id}`:`${t.api}/v1.0/me`,n=HS(i,e);return Ui(r,n,"GET")}var zS=j(()=>{"use strict";cC()});var ph,JS=j(()=>{"use strict";He();cC();LS();zS();ph=class{root_folder_path="/";region="global";is_sharepoint=!1;use_online_api=!0;api_url_address="https://api.oplist.org/onedrive/renewapi";client_id="";client_secret="";redirect_uri="https://api.oplist.org/onedrive/callback";refresh_token="";site_id="";chunk_size=5;custom_host="";disable_disk_usage=!1;enable_direct_upload=!1;order_by="filename";order_direction="asc";accessToken="";onTokenUpdate;constructor(e,t){e&&(e.root_folder_path!==void 0&&(this.root_folder_path=String(e.root_folder_path)),e.region!==void 0&&(this.region=String(e.region)),e.is_sharepoint!==void 0&&(this.is_sharepoint=!!e.is_sharepoint),e.use_online_api!==void 0&&(this.use_online_api=!!e.use_online_api),e.api_url_address!==void 0&&(this.api_url_address=String(e.api_url_address)),e.client_id!==void 0&&(this.client_id=String(e.client_id)),e.client_secret!==void 0&&(this.client_secret=String(e.client_secret)),e.redirect_uri!==void 0&&(this.redirect_uri=String(e.redirect_uri)),e.refresh_token!==void 0&&(this.refresh_token=String(e.refresh_token)),e.site_id!==void 0&&(this.site_id=String(e.site_id)),e.chunk_size!==void 0&&(this.chunk_size=Number(e.chunk_size)||5),e.custom_host!==void 0&&(this.custom_host=String(e.custom_host)),e.disable_disk_usage!==void 0&&(this.disable_disk_usage=!!e.disable_disk_usage),e.enable_direct_upload!==void 0&&(this.enable_direct_upload=!!e.enable_direct_upload),e.order_by!==void 0&&(this.order_by=String(e.order_by)),e.order_direction!==void 0&&(this.order_direction=String(e.order_direction))),this.onTokenUpdate=t}async init(){typeof this.is_sharepoint=="string"&&(this.is_sharepoint=this.is_sharepoint.toLowerCase()==="true"),typeof this.use_online_api=="string"&&(this.use_online_api=this.use_online_api.toLowerCase()==="true"),typeof this.chunk_size=="string"&&(this.chunk_size=parseInt(this.chunk_size)||5),typeof this.disable_disk_usage=="string"&&(this.disable_disk_usage=this.disable_disk_usage.toLowerCase()==="true"),typeof this.enable_direct_upload=="string"&&(this.enable_direct_upload=this.enable_direct_upload.toLowerCase()==="true"),this.chunk_size<1&&(this.chunk_size=5),this.refresh_token&&await dC(this)}getMetaUrl(e,t,i){let n=$n[this.region]||$n.global;if(e)return n.oauth;let s=this.is_sharepoint?`${n.api}/v1.0/sites/${this.site_id}`:`${n.api}/v1.0/me`,o=t.replace(/\\/g,"/");if(!o||o==="/")return i?`${s}/drive/root/${i}`:`${s}/drive/root`;let a=o.startsWith("/")?o.slice(1):o;if(a.endsWith("/")&&(a=a.slice(0,-1)),!a||a==="")return i?`${s}/drive/root/${i}`:`${s}/drive/root`;let c=a.split("/").map(l=>{try{return encodeURIComponent(decodeURIComponent(l))}catch{return encodeURIComponent(l)}}).join("/");return i?`${s}/drive/root:/${c}:/${i}`:`${s}/drive/root:/${c}:`}async list(e,t){let n=(await KS(this,t)).map(s=>{let o=lC(s,""),a=s["@microsoft.graph.downloadUrl"]||o.url||"";if(this.custom_host&&a)try{let c=new URL(a);c.host=this.custom_host,a=c.toString()}catch{}return{name:o.name,size:o.size,is_dir:o.isFolder,modified:o.modified,sign:"",type:o.isFolder?1:0,thumb:o.thumbnail||"",raw_url:a}});return de(n,this.order_by,this.order_direction)}async get(e,t){let i=await GS(this,t),n=lC(i,""),s=i["@microsoft.graph.downloadUrl"]||n.url||"";if(this.custom_host&&s)try{let o=new URL(s);o.host=this.custom_host,s=o.toString()}catch{}return{name:n.name,size:n.size,is_dir:n.isFolder,modified:n.modified,sign:"",type:n.isFolder?1:0,thumb:n.thumbnail||"",raw_url:s}}async mkdir(e,t){let i=t.split("/").slice(0,-1).join("/")||"/",n=t.split("/").filter(Boolean).pop()||"",s=this.getMetaUrl(!1,i,"children");await Ui(this,s,"POST",{name:n,folder:{},"@microsoft.graph.conflictBehavior":"rename"})}async rename(e,t,i){let n={name:i},s=this.getMetaUrl(!1,t);await Ui(this,s,"PATCH",n)}async remove(e,t,i){for(let n of i){let s=t==="/"?`/${n}`:`${t}/${n}`,o=this.getMetaUrl(!1,s);await Ui(this,o,"DELETE")}}async move(e,t,i,n,s){let o=this.getMetaUrl(!1,s),a=await Ui(this,o,"GET"),c=a.id,l=a.parentReference?.driveId;for(let d of i){let u=n==="/"?`/${d}`:`${n}/${d}`,f={parentReference:{id:c,...l?{driveId:l}:{}},name:d},h=this.getMetaUrl(!1,u);await Ui(this,h,"PATCH",f)}}async copy(e,t,i,n,s){let o=this.getMetaUrl(!1,s),a=await Ui(this,o,"GET"),c=a.id,l=a.parentReference?.driveId;for(let d of i){let u=n==="/"?`/${d}`:`${n}/${d}`,f={parentReference:{id:c,...l?{driveId:l}:{}},name:d},h=this.getMetaUrl(!1,u,"copy");await Ui(this,h,"POST",f)}}async put(e,t,i){if(i.length<=4*1024*1024){let n=this.getMetaUrl(!1,t,"content");await Ui(this,n,"PUT",i)}else{let n=this.getMetaUrl(!1,t,"createUploadSession"),a=(await Ui(this,n,"POST",{item:{"@microsoft.graph.conflictBehavior":"rename"}})).uploadUrl,c=this.chunk_size*1024*1024,l=0,d=i.length;for(;l0&&(t=r.thumbnails[0].medium?.url||""),{id:r.id,name:r.name,size:r.size,modified:r.lastModifiedDateTime||r.fileSystemInfo?.lastModifiedDateTime||"",isFolder:!!r.folder||!r.file,thumbnail:t,parentID:e,url:r["@microsoft.graph.downloadUrl"]||""}}var jS=j(()=>{"use strict"});var cc,$S=j(()=>{"use strict";cc={global:{oauth:"https://login.microsoftonline.com",api:"https://graph.microsoft.com"},cn:{oauth:"https://login.chinacloudapi.cn",api:"https://microsoftgraph.chinacloudapi.cn"},us:{oauth:"https://login.microsoftonline.us",api:"https://graph.microsoft.us"},de:{oauth:"https://login.microsoftonline.de",api:"https://graph.microsoft.de"}}});function Ri(r,e,t,i){let n=cc[r.region]||cc.global;if(e)return n.oauth;let s=t?t.replace(/\\/g,"/"):"";if(!s||s==="/")return i?`${n.api}/v1.0/users/${r.email}/drive/root/${i}`:`${n.api}/v1.0/users/${r.email}/drive/root`;let o=s.startsWith("/")?s.slice(1):s;if(o.endsWith("/")&&(o=o.slice(0,-1)),!o||o==="")return i?`${n.api}/v1.0/users/${r.email}/drive/root/${i}`:`${n.api}/v1.0/users/${r.email}/drive/root`;let a=o.split("/").map(c=>{try{return encodeURIComponent(decodeURIComponent(c))}catch{return encodeURIComponent(c)}}).join("/");return i?`${n.api}/v1.0/users/${r.email}/drive/root:/${a}:/${i}`:`${n.api}/v1.0/users/${r.email}/drive/root:/${a}:`}async function fC(r){let e=null;for(let t=0;t<3;t++)try{await hK(r);return}catch(i){e=i}throw e||new Error("Failed to get access token")}async function hK(r){if(!r.client_id||!r.client_secret)throw new Error("empty client_id or client_secret");if(!r.tenant_id)throw new Error("empty tenant_id");let e=cc[r.region]||cc.global,t=`${e.oauth}/${r.tenant_id}/oauth2/token`,i=new URLSearchParams({grant_type:"client_credentials",client_id:r.client_id,client_secret:r.client_secret,resource:`${e.api}/`,scope:`${e.api}/.default`}).toString(),s=await(await fetch(t,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:i})).json();if(s.error)throw new Error(s.error_description||s.error);if(!s.access_token)throw new Error("empty token returned from Microsoft identity platform");r.accessToken=s.access_token,r.onTokenUpdate?.(r.accessToken)}async function ai(r,e,t,i,n){let s=i!==void 0&&(typeof i=="string"||i instanceof Uint8Array||i instanceof ArrayBuffer||typeof Buffer<"u"&&Buffer.isBuffer(i)),o={method:t.toUpperCase(),headers:{Authorization:`Bearer ${r.accessToken}`,...i!==void 0&&!s?{"Content-Type":"application/json"}:{}},...i!==void 0?{body:s?i:JSON.stringify(i)}:{}},a=await fetch(e,o);if(!a.ok){let c;try{c=(await a.json()).error}catch{c=null}let l=c?.code;if((l==="InvalidAuthenticationToken"||l==="ExpiredAuthenticationToken"||a.status===401)&&!n)return await fC(r),ai(r,e,t,i,!0);throw new Error(c?.message||`Request failed: ${a.status}`)}if(a.status!==204)return a.json()}async function VS(r,e){let i=Ri(r,!1,e,"children?$top=1000&$expand=thumbnails($select=medium)&$select=id,name,size,fileSystemInfo,lastModifiedDateTime,@microsoft.graph.downloadUrl,file,folder,parentReference"),n=[];for(;i;){let s=await ai(r,i,"GET");s.value&&n.push(...s.value),i=s["@odata.nextLink"]}return n}async function YS(r,e){let t=Ri(r,!1,e);return ai(r,t,"GET")}async function WS(r){let t=`${(cc[r.region]||cc.global).api}/v1.0/users/${r.email}/drive`;return ai(r,t,"GET",void 0,!0)}async function XS(r,e){let t=Ri(r,!1,e,"createUploadSession"),s=(await ai(r,t,"POST",{item:{"@microsoft.graph.conflictBehavior":"rename"}})).uploadUrl;if(!s)throw new Error("failed to get upload URL from response");return{UploadURL:s,ChunkSize:(r.chunk_size||5)*1024*1024,Method:"PUT"}}var ZS=j(()=>{"use strict";$S()});var mh,eD=j(()=>{"use strict";He();jS();ZS();mh=class{root_folder_path="/";region="global";client_id="";client_secret="";tenant_id="";email="";chunk_size=5;custom_host="";disable_disk_usage=!1;enable_direct_upload=!1;order_by="filename";order_direction="asc";accessToken="";onTokenUpdate;constructor(e,t){e&&(e.root_folder_path!==void 0&&(this.root_folder_path=String(e.root_folder_path)),e.region!==void 0&&(this.region=String(e.region)),e.client_id!==void 0&&(this.client_id=String(e.client_id)),e.client_secret!==void 0&&(this.client_secret=String(e.client_secret)),e.tenant_id!==void 0&&(this.tenant_id=String(e.tenant_id)),e.email!==void 0&&(this.email=String(e.email)),e.chunk_size!==void 0&&(this.chunk_size=Number(e.chunk_size)||5),e.custom_host!==void 0&&(this.custom_host=String(e.custom_host)),e.disable_disk_usage!==void 0&&(this.disable_disk_usage=!!e.disable_disk_usage),e.enable_direct_upload!==void 0&&(this.enable_direct_upload=!!e.enable_direct_upload),e.order_by!==void 0&&(this.order_by=String(e.order_by)),e.order_direction!==void 0&&(this.order_direction=String(e.order_direction))),this.onTokenUpdate=t}async init(){typeof this.chunk_size=="string"&&(this.chunk_size=parseInt(this.chunk_size)||5),typeof this.disable_disk_usage=="string"&&(this.disable_disk_usage=this.disable_disk_usage.toLowerCase()==="true"),typeof this.enable_direct_upload=="string"&&(this.enable_direct_upload=this.enable_direct_upload.toLowerCase()==="true"),this.chunk_size<1&&(this.chunk_size=5),this.client_id&&this.client_secret&&this.tenant_id&&await fC(this)}async list(e,t){let n=(await VS(this,t)).map(s=>{let o=uC(s,""),a=s["@microsoft.graph.downloadUrl"]||o.url||"";if(this.custom_host&&a)try{let c=new URL(a);c.host=this.custom_host,a=c.toString()}catch{}return{name:o.name,size:o.size,is_dir:o.isFolder,modified:o.modified,sign:"",type:o.isFolder?1:0,thumb:o.thumbnail||"",raw_url:a}});return de(n,this.order_by,this.order_direction)}async get(e,t){let i=await YS(this,t),n=uC(i,""),s=i["@microsoft.graph.downloadUrl"]||n.url||"";if(this.custom_host&&s)try{let o=new URL(s);o.host=this.custom_host,s=o.toString()}catch{}return{name:n.name,size:n.size,is_dir:n.isFolder,modified:n.modified,sign:"",type:n.isFolder?1:0,thumb:n.thumbnail||"",raw_url:s}}async mkdir(e,t){let i=t.split("/").slice(0,-1).join("/")||"/",n=t.split("/").filter(Boolean).pop()||"",s=Ri(this,!1,i,"children");await ai(this,s,"POST",{name:n,folder:{},"@microsoft.graph.conflictBehavior":"rename"})}async rename(e,t,i){let n={name:i},s=Ri(this,!1,t);await ai(this,s,"PATCH",n)}async remove(e,t,i){for(let n of i){let s=t==="/"?`/${n}`:`${t}/${n}`,o=Ri(this,!1,s);await ai(this,o,"DELETE")}}async move(e,t,i,n,s){let o=Ri(this,!1,s),a=await ai(this,o,"GET"),c=a.id,l=a.parentReference?.driveId;for(let d of i){let u=n==="/"?`/${d}`:`${n}/${d}`,f={parentReference:{id:c,...l?{driveId:l}:{}},name:d},h=Ri(this,!1,u);await ai(this,h,"PATCH",f)}}async copy(e,t,i,n,s){let o=Ri(this,!1,s),a=await ai(this,o,"GET"),c=a.id,l=a.parentReference?.driveId;for(let d of i){let u=n==="/"?`/${d}`:`${n}/${d}`,f={parentReference:{id:c,...l?{driveId:l}:{}},name:d},h=Ri(this,!1,u,"copy");await ai(this,h,"POST",f)}}async put(e,t,i){if(i.length<=4*1024*1024){let n=Ri(this,!1,t,"content");await ai(this,n,"PUT",i)}else{let n=Ri(this,!1,t,"createUploadSession"),a=(await ai(this,n,"POST",{item:{"@microsoft.graph.conflictBehavior":"rename"}})).uploadUrl,c=this.chunk_size*1024*1024,l=0,d=i.length;for(;l255||g>255||p>255||I>255||h===0||h===127||h===10||h===172&&g>=16&&g<=31||h===192&&g===168||h===169&&g===254||h===100&&g>=64&&g<=127||h===100&&g===100||h===224&&g===0&&p===0||h>=240)return!1}if(/^\d{8,}$/.test(i)||/^0x[0-9a-fA-F]{6,}$/i.test(i))return!1;let c=[/(^|\.)\d{1,3}-\d{1,3}-\d{1,3}-\d{1,3}(\.|$)/,/(^|\.)0x[0-9a-f]{6,8}(\.|$)/i,/(^|\.)\d{8,}(\.|$)/,/(^|\.)127\.0\.0\.1\.nip\.io$/,/(^|\.)localtest\.me$/,/(^|\.)vcap\.me$/,/(^|\.)xip\.io$/];for(let l of c)if(l.test(i))return!1;return!0}catch{return!1}}function zr(r,e="Request",t){if(!gK(r,t))throw new Error(`${e} blocked: URL points to a restricted or private network destination (SSRF protection)`)}function pK(r){let e=new Set;if(r==null)return e;let t=r;if(typeof r=="string")try{t=JSON.parse(r)}catch{return e}if(typeof t!="object"||Array.isArray(t))return e;let i=/(url|host|address|endpoint|server|domain|site|base|gateway|api)/i,n=s=>{if(!(s==null||typeof s!="object"))for(let[o,a]of Object.entries(s))if(typeof a=="string"){if(i.test(o)){let c=tD(a);c&&e.add(c)}}else a!=null&&typeof a=="object"&&n(a)};return n(t),e}function tD(r){let e=r.trim();if(!e)return;let t=/^[a-z][a-z0-9+.-]*:\/\//i.test(e)?[e]:[`http://${e}`];for(let i of t)try{let n=new URL(i);if(n.protocol!=="http:"&&n.protocol!=="https:")continue;let s=n.hostname.toLowerCase().trim();if(s)return s}catch{}}function mK(r){let e=new Set;if(!r)return e;for(let t of r.split(/[,;\s]+/)){let i=tD(t);i&&e.add(i)}return e}function yh(r,e){let t=pK(r),i=e?.SSRF_ALLOWED_HOSTS??(typeof process<"u"?process.env?.SSRF_ALLOWED_HOSTS:void 0);if(typeof i=="string"&&i.trim())for(let n of mK(i))t.add(n);return t}var lc=j(()=>{"use strict"});var yK,Ih,rD=j(()=>{"use strict";lc();yK="https://openapi.aliyundrive.com/adrive/v1.0",Ih=class{addition;accessToken="";refreshTokenVal="";driveId="";tokenExpiresAt=0;constructor(e){this.addition=e,this.refreshTokenVal=e.refresh_token||"",this.driveId=e.drive_id||""}async init(){if(!this.refreshTokenVal||!this.refreshTokenVal.trim()){console.warn("[AliyundriveOpen] refresh_token is empty, skipping init.");return}try{await this.refreshAccessToken(),this.driveId||await this.resolveDriveId()}catch(e){console.warn("[AliyundriveOpen] init warning:",e.message)}}async resolveDriveId(e=!1){if(!e&&this.addition.drive_id&&this.addition.drive_id.trim()){this.driveId=this.addition.drive_id.trim();return}try{let t=await this.openApiRequest("/user/getDriveInfo",{}),i=e?"resource":this.addition.drive_type||"resource",n="";i==="resource"&&t.resource_drive_id?n=t.resource_drive_id:i==="backup"&&t.backup_drive_id?n=t.backup_drive_id:i==="default"&&t.default_drive_id&&(n=t.default_drive_id),n||(n=t.resource_drive_id||t.default_drive_id||t.backup_drive_id||""),this.driveId=n,console.log(`[AliyundriveOpen] Resolved drive_id: ${this.driveId} (driveType: ${i})`)}catch(t){console.warn("[AliyundriveOpen] resolveDriveId failed:",t.message)}}async refreshAccessToken(){if(!this.refreshTokenVal||!this.refreshTokenVal.trim())return;let e=this.refreshTokenVal.trim(),t=[];if(this.addition.api_url_address&&this.addition.api_url_address.trim()){let o=this.addition.api_url_address.trim();try{zr(o,"AliyundriveOpen api_url_address"),t.push(o)}catch(a){console.warn(`[AliyundriveOpen] Skipping unsafe api_url_address: ${a.message}`)}}t.push("https://api.oplist.org/alicloud/renewapi","https://api.oplist.org/ali_open/token","https://api.oplist.org/aliyundrive/token","https://api.alist.nn.ci/alist/ali_open/token","https://api.alist.nn.ci/aliyundrive/token","https://api-sam.oplist.org/aliyundrive/token");let i=this.addition.alipan_type==="alipanTV"?"alicloud_tv":"alicloud_qr";for(let o of t)try{let a=new URLSearchParams({refresh_ui:e,refresh_token:e,server_use:"true",driver_txt:i}),c=await fetch(`${o}?${a.toString()}`,{method:"GET",headers:{"Content-Type":"application/json"}});if(!c.ok)throw new Error(`[Status ${c.status}]`);let l=await c.json(),d=l.refresh_token||l.data?.refresh_token||"",u=l.access_token||l.data?.access_token||"";if(!u)throw new Error(`Empty access_token from online API: ${JSON.stringify(l)}`);this.accessToken=u,d&&(this.refreshTokenVal=d),this.tokenExpiresAt=Date.now()+(l.expires_in||7200)*1e3-6e4;return}catch(a){console.warn(`[AliyundriveOpen] Online API '${o}' failed: ${a.message}`)}let n=(this.addition.client_id||"").trim()||"25ab4837190e48718a28f80073574a4d",s=(this.addition.client_secret||"").trim();try{let o={grant_type:"refresh_token",refresh_token:e,client_id:n};s&&(o.client_secret=s);let a=await fetch("https://openapi.aliyundrive.com/oauth/access_token",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(o)});if(!a.ok){let l=await a.text().catch(()=>"");throw new Error(`[Status ${a.status}] ${l}`)}let c=await a.json();if(!c.access_token)throw new Error(`Invalid response: ${JSON.stringify(c)}`);this.accessToken=c.access_token,c.refresh_token&&(this.refreshTokenVal=c.refresh_token),this.tokenExpiresAt=Date.now()+(c.expires_in||7200)*1e3-6e4;return}catch(o){console.warn(`[AliyundriveOpen] Direct OAuth failed: ${o.message}`)}throw new Error("[AliyundriveOpen] All token refresh strategies failed. Please check: 1) refresh_token is valid and not expired, 2) api_url_address is accessible, 3) If using direct OAuth, client_id and client_secret are correct.")}async ensureToken(){(!this.accessToken||Date.now()>=this.tokenExpiresAt)&&await this.refreshAccessToken()}getRootFolderId(){return this.addition.root_folder_id?.trim()||"root"}async openApiRequest(e,t,i=!0){await this.ensureToken();let n=e.startsWith("http")?e:`${yK}${e}`;try{zr(n,"AliyundriveOpen openApiRequest")}catch(o){throw new Error(`[AliyundriveOpen] blocked unsafe URL: ${o.message}`)}let s=await fetch(n,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.accessToken}`},body:JSON.stringify(t)});if(s.status===401&&i)return await this.refreshAccessToken(),this.openApiRequest(e,t,!1);if(!s.ok){let o=await s.text().catch(()=>"");throw new Error(`[AliyundriveOpen] API error [${s.status}] ${e}: ${o}`)}return s.json()}async listFiles(e){this.driveId||await this.resolveDriveId();let t=[],i,n=this.addition.order_by||"updated_at",s=this.addition.order_direction||"DESC";do{let o={drive_id:this.driveId,parent_file_id:e,limit:100,order_by:n,order_direction:s};i&&(o.marker=i);let a;try{a=await this.openApiRequest("/openFile/list",o)}catch(c){if(c.message?.includes("UserNotAllowedAccessDrive"))console.warn(`[AliyundriveOpen] UserNotAllowedAccessDrive for drive ${this.driveId}, auto re-resolving drive_id...`),await this.resolveDriveId(!0),o.drive_id=this.driveId,a=await this.openApiRequest("/openFile/list",o);else throw c}t.push(...a.items||[]),i=a.next_marker||void 0}while(i);return t}async getFile(e){return this.driveId||await this.resolveDriveId(),this.openApiRequest("/openFile/get",{drive_id:this.driveId,file_id:e})}async getDownloadUrl(e){let t=await this.openApiRequest("/openFile/getDownloadUrl",{drive_id:this.driveId,file_id:e,expire_sec:14400});return t.url||t.download_url||""}async mkdir(e,t){await this.openApiRequest("/openFile/create",{drive_id:this.driveId,parent_file_id:e,name:t,type:"folder",check_name_mode:"refuse"})}async rename(e,t){await this.openApiRequest("/openFile/update",{drive_id:this.driveId,file_id:e,name:t,check_name_mode:"refuse"})}async remove(e){let t=this.addition.remove_way||"trash";await this.openApiRequest(t==="trash"?"/openFile/recyclebin":"/openFile/delete",{drive_id:this.driveId,file_id:e})}async move(e,t){await this.openApiRequest("/openFile/move",{drive_id:this.driveId,file_id:e,to_parent_file_id:t,check_name_mode:"refuse"})}async copy(e,t){await this.openApiRequest("/openFile/copy",{drive_id:this.driveId,file_id:e,to_parent_file_id:t,auto_rename:!0})}async putFile(e,t,i){let n=i.length,s=await this.openApiRequest("/openFile/create",{drive_id:this.driveId,parent_file_id:e,name:t,type:"file",size:n,check_name_mode:"auto_rename",part_info_list:[{part_number:1}]}),o=s.part_info_list?.[0]?.upload_url;if(!o)return;let a=await fetch(o,{method:"PUT",body:i});if(!a.ok)throw new Error(`[AliyundriveOpen] Upload failed: ${a.status}`);await this.openApiRequest("/openFile/complete",{drive_id:this.driveId,file_id:s.file_id,upload_id:s.upload_id})}}});function iD(r){let e=r.type==="folder";return{name:r.name,size:r.size||0,is_dir:e,modified:r.updated_at||r.created_at||new Date().toISOString(),sign:"",type:X(r.name,e),thumb:r.thumbnail||"",raw_url:r.download_url||""}}var wh,nD=j(()=>{"use strict";Be();He();rD();wh=class{client;addition;pathFileIdCache=new Map;constructor(e){this.addition=e,this.client=new Ih(e)}async init(){await this.client.init()}async list(e,t){let i=await this.resolveFileId(t),s=(await this.client.listFiles(i)).map(iD);return de(s,this.addition.order_by,this.addition.order_direction)}async get(e,t){let i=await this.resolveFileId(t),n=await this.client.getFile(i).catch(()=>null),s=await this.client.getDownloadUrl(i).catch(()=>"");if(n){let c=iD(n);return c.raw_url=s||c.raw_url,c}try{await this.client.listFiles(i);let c=t.split("/").filter(Boolean);return{name:c[c.length-1]||"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""}}catch{}let o=t.split("/").filter(Boolean);return{name:o[o.length-1]||"root",size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:0,raw_url:s}}async mkdir(e,t){let i=t.split("/").filter(Boolean),n=i.pop()||"\u65B0\u6587\u4EF6\u5939",s="/"+i.join("/"),o=await this.resolveFileId(s);await this.client.mkdir(o,n)}async rename(e,t,i){let n=await this.resolveFileId(t);await this.client.rename(n,i)}async remove(e,t,i){let n=await this.resolveFileId(t);await this.client.remove(n)}async move(e,t,i,n,s){let o=await this.resolveFileId(n),a=await this.resolveFileId(t);await this.client.move(o,a)}async copy(e,t,i,n,s){let o=await this.resolveFileId(n),a=await this.resolveFileId(t);await this.client.copy(o,a)}async put(e,t,i){let n=t.split("/").filter(Boolean),s=n.pop()||"upload",o="/"+n.join("/"),a=await this.resolveFileId(o);await this.client.putFile(a,s,i)}async resolveFileId(e){let t=e.split("/").filter(Boolean).join("/");if(!t)return this.client.getRootFolderId();if(this.pathFileIdCache.has(t))return this.pathFileIdCache.get(t);let i=t.split("/"),n=this.client.getRootFolderId();for(let s=0;s{try{return decodeURIComponent(o)}catch{return o}})(),c=i.slice(0,s+1).join("/");if(this.pathFileIdCache.has(c)){n=this.pathFileIdCache.get(c);continue}let d=(await this.client.listFiles(n)).find(u=>u.name===o||u.name===a||u.file_id===o);if(!d)throw new Error(`[AliyundriveOpen] Path '${o}' not found`);n=d.file_id,this.pathFileIdCache.set(c,n)}return n}}});var Mu,sD,oD,AC=j(()=>{"use strict";Mu="application/vnd.google-apps.folder",sD="application/vnd.google-apps.shortcut",oD="files(id,name,mimeType,size,modifiedTime,createdTime,thumbnailLink,shortcutDetails,md5Checksum,sha1Checksum,sha256Checksum),nextPageToken"});var Mo,aD,IK,xh,cD=j(()=>{"use strict";AC();Mo="https://www.googleapis.com/drive/v3",aD="https://www.googleapis.com/upload/drive/v3",IK="https://oauth2.googleapis.com/token",xh=class{addition;accessToken="";refreshTokenVal="";tokenExpiresAt=0;constructor(e){this.addition=e,this.refreshTokenVal=e.refresh_token||""}getRootFolderId(){return this.addition.root_folder_id?.trim()||"root"}async init(){if(!this.refreshTokenVal||!this.refreshTokenVal.trim()){console.warn("[GoogleDrive] refresh_token is empty, skipping init.");return}try{await this.refreshAccessToken()}catch(e){console.warn("[GoogleDrive] init token refresh warning:",e.message)}}async refreshAccessToken(){let e=this.refreshTokenVal.trim();if(!e)return;let t=this.addition.use_online_api!==!1,i=[];t&&(this.addition.api_url_address?.trim()&&i.push(this.addition.api_url_address.trim()),i.push("https://api.oplist.org/google/token","https://api.oplist.org/google/renewapi","https://api.oplist.org/googledrive/token","https://api-sam.oplist.org/google/token","https://api-sam.oplist.org/googledrive/token","https://api.alist.nn.ci/google/token","https://api.alist.nn.ci/googledrive/token"));for(let o of i)try{let a=new URLSearchParams({refresh_ui:e,server_use:"true",driver_txt:"googleui_go"}),c=await fetch(`${o}?${a.toString()}`,{method:"GET"});if(!c.ok)throw new Error(`[Status ${c.status}]`);let l=await c.json(),d=l.access_token||l.data?.access_token||"",u=l.refresh_token||l.data?.refresh_token||"";if(!d){let f=l.text||l.error||"empty access_token";throw new Error(f)}this.accessToken=d,u&&(this.refreshTokenVal=u),this.tokenExpiresAt=Date.now()+(l.expires_in||3600)*1e3-6e4;return}catch(a){console.warn(`[GoogleDrive] Online API '${o}' failed: ${a.message}`)}let n=(this.addition.client_id||"").trim()||"202264815644-2n82p2e49c7o6026u87j9e22v1n25c27.apps.googleusercontent.com",s=(this.addition.client_secret||"").trim()||"GOCSPX-4bH5Kx3s_89_j6j2x-2x3-8x";if(n&&s)try{let o=await fetch(IK,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({client_id:n,client_secret:s,refresh_token:e,grant_type:"refresh_token"}).toString()});if(!o.ok){let c=await o.text().catch(()=>"");throw new Error(`[Status ${o.status}] ${c}`)}let a=await o.json();if(!a.access_token)throw new Error(`Invalid OAuth response: ${JSON.stringify(a)}`);this.accessToken=a.access_token,a.refresh_token&&(this.refreshTokenVal=a.refresh_token),this.tokenExpiresAt=Date.now()+(a.expires_in||3600)*1e3-6e4;return}catch(o){console.warn(`[GoogleDrive] Direct OAuth failed: ${o.message}`)}throw new Error("[GoogleDrive] All token refresh strategies failed. Please check: 1) refresh_token is valid, 2) api_url_address is accessible, 3) If using direct OAuth: client_id and client_secret are correct.")}async ensureToken(){(!this.accessToken||Date.now()>=this.tokenExpiresAt)&&await this.refreshAccessToken()}async request(e,t={},i=!0){await this.ensureToken();let n=await fetch(e,{...t,headers:{Authorization:`Bearer ${this.accessToken}`,...t.headers||{}}});if(n.status===401&&i)return console.warn("[GoogleDrive] 401 Unauthorized, refreshing token..."),await this.refreshAccessToken(),this.request(e,t,!1);if(!n.ok){let s=await n.text().catch(()=>"");throw new Error(`[GoogleDrive] API error [${n.status}]: ${s}`)}return n.status===204?null:n.json()}async listFiles(e){let t=[],i,n=this.addition.order_by||"folder,name,modifiedTime desc";do{let s=new URLSearchParams({q:`'${e}' in parents and trashed = false`,fields:oD,orderBy:n,pageSize:"1000",includeItemsFromAllDrives:"true",supportsAllDrives:"true"});i&&s.set("pageToken",i);let o=`${Mo}/files?${s.toString()}`,a=await this.request(o),c=a.files||[];for(let l of c)l.mimeType===sD&&l.shortcutDetails?.targetId&&(l.id=l.shortcutDetails.targetId,l.mimeType=l.shortcutDetails.targetMimeType||l.mimeType);t.push(...c),i=a.nextPageToken}while(i);return t}async getFile(e){let t=new URLSearchParams({fields:"id,name,mimeType,size,modifiedTime,md5Checksum",includeItemsFromAllDrives:"true",supportsAllDrives:"true"});return this.request(`${Mo}/files/${e}?${t.toString()}`)}getDownloadUrl(e){return`${Mo}/files/${e}?includeItemsFromAllDrives=true&supportsAllDrives=true&alt=media&acknowledgeAbuse=true`}getDownloadHeaders(){return{Authorization:`Bearer ${this.accessToken}`}}async mkdir(e,t){await this.request(`${Mo}/files?supportsAllDrives=true`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:t,parents:[e],mimeType:Mu})})}async rename(e,t){await this.request(`${Mo}/files/${e}?supportsAllDrives=true`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:t})})}async remove(e){await this.request(`${Mo}/files/${e}?supportsAllDrives=true`,{method:"DELETE"})}async move(e,t,i){let n=new URLSearchParams({addParents:i,removeParents:t,supportsAllDrives:"true"});await this.request(`${Mo}/files/${e}?${n.toString()}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:"{}"})}async copy(e,t,i){await this.request(`${Mo}/files/${e}/copy?supportsAllDrives=true`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:i,parents:[t]})})}async putFile(e,t,i,n="application/octet-stream"){let s=(this.addition.chunk_size||5)*1024*1024;if(i.length<=s){let o=new URLSearchParams({uploadType:"multipart",supportsAllDrives:"true"}),a=`----GoogleDriveBoundary${Date.now()}`,c=JSON.stringify({name:t,parents:[e]}),l=`--${a}\r Content-Type: application/json\r \r ${c}\r @@ -39,17 +55,17 @@ ${c}\r Content-Type: ${n}\r \r `,d=Buffer.from(l),u=Buffer.from(`\r ---${a}--`),f=Buffer.concat([d,i,u]);await this.request(`${QS}/files?${o.toString()}`,{method:"POST",headers:{"Content-Type":`multipart/related; boundary=${a}`},body:f})}else{let o=new URLSearchParams({uploadType:"resumable",supportsAllDrives:"true"});await this.ensureToken();let a=await fetch(`${QS}/files?${o.toString()}`,{method:"POST",headers:{Authorization:`Bearer ${this.accessToken}`,"Content-Type":"application/json","X-Upload-Content-Type":n,"X-Upload-Content-Length":String(i.length)},body:JSON.stringify({name:t,parents:[e]})});if(!a.ok)throw new Error(`[GoogleDrive] Resumable upload init failed: ${a.status}`);let c=a.headers.get("location");if(!c)throw new Error("[GoogleDrive] No upload URL returned");let l=0;for(;l{try{return decodeURIComponent(o)}catch{return o}})(),c=i.slice(0,s+1).join("/");if(this.pathCache.has(c)){n=this.pathCache.get(c);continue}let d=(await this.listFiles(n)).find(u=>u.name===o||u.name===a||u.id===o);if(!d)throw new Error(`[GoogleDrive] Path '${o}' not found`);n=d.id,this.pathCache.set(c,n)}return n}async resolveParentAndName(e){let t=e.split("/").filter(Boolean),i=t.pop()||"unnamed",n="/"+t.join("/");return{parentId:await this.resolveFileId(n),name:i}}}});function FS(r){return{name:r.name,size:r.size?parseInt(r.size,10):0,is_dir:r.mimeType===Du,modified:r.modifiedTime||r.createdTime||new Date().toISOString(),sign:"",type:r.mimeType===Du?1:0,thumb:r.thumbnailLink||"",raw_url:""}}var dh,PS=V(()=>{"use strict";He();Vx();_S();dh=class{client;addition;constructor(e){this.addition=e,this.client=new lh(e)}async init(){await this.client.init()}async list(e,t){let i=await this.client.resolveFileId(t),s=(await this.client.listFiles(i)).map(FS);return de(s,this.addition.order_by,this.addition.order_direction)}async get(e,t){let i=await this.client.resolveFileId(t),n=await this.client.getFile(i).catch(()=>null);if(n){let a=FS(n);return a.raw_url=this.client.getDownloadUrl(i),a.raw_url_headers=this.client.getDownloadHeaders(),a}let s=t.split("/").filter(Boolean),o=s[s.length-1]||"root";try{return await this.client.listFiles(i),{name:o,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""}}catch{}return{name:o,size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:0,raw_url:""}}async mkdir(e,t){let{parentId:i,name:n}=await this.client.resolveParentAndName(t);await this.client.mkdir(i,n)}async rename(e,t,i){let n=await this.client.resolveFileId(t);await this.client.rename(n,i)}async remove(e,t,i){let n=await this.client.resolveFileId(t);await this.client.remove(n)}async move(e,t,i,n,s){let o=await this.client.resolveFileId(n),a=n.split("/").filter(Boolean);a.pop();let c=await this.client.resolveFileId("/"+a.join("/")),l=await this.client.resolveFileId(t);await this.client.move(o,c,l)}async copy(e,t,i,n,s){let o=await this.client.resolveFileId(n),a=n.split("/").filter(Boolean).pop()||"copy",c=await this.client.resolveFileId(t);await this.client.copy(o,c,a)}async put(e,t,i){let{parentId:n,name:s}=await this.client.resolveParentAndName(t);await this.client.putFile(n,s,i)}}});function PH(r="Quark"){return r==="UC"?FH:_H}function TS(r,e,t){let i=r.split(";").map(o=>o.trim()).filter(Boolean),n=i.findIndex(o=>{let a=o.indexOf("=");return a!==-1&&o.substring(0,a).trim()===e}),s=`${e}=${t}`;return n!==-1?i[n]=s:i.push(s),i.join("; ")}function US(r,e){let t=r.split(/,(?=[^;]+=[^;]+)/);for(let i of t){let s=i.split(";")[0].trim(),o=s.indexOf("=");if(o!==-1&&s.substring(0,o).trim()===e)return s.substring(o+1).trim()}return null}function TH(r){return r.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,'"').replace(/'/g,"'").replace(/'/g,"'")}function UH(r){let e=r.split(".").pop()?.toLowerCase()||"",t=["mp4","mkv","avi","mov","flv","wmv","ts","m2ts","m4v","rmvb","webm"],i=["mp3","flac","aac","wav","ogg","m4a","opus"],n=["jpg","jpeg","png","gif","bmp","webp","heic","tiff"],s=["pdf","doc","docx","xls","xlsx","ppt","pptx","txt","md"];return t.includes(e)?"video":i.includes(e)?"audio":n.includes(e)?"image":s.includes(e)?"doc":"others"}var _H,FH,uh,RS=V(()=>{"use strict";_H={ua:"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) quark-cloud-drive/2.5.20 Chrome/100.0.4896.160 Electron/18.3.5.4-b478491100 Safari/537.36 Channel/pckk_other_ch",referer:"https://pan.quark.cn",api:"https://drive-m.quark.cn/1/clouddrive",pr:"ucpro"},FH={ua:"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) uc-cloud-drive/2.5.20 Chrome/100.0.4896.160 Electron/18.3.5.4-b478491100 Safari/537.36 Channel/pckk_other_ch",referer:"https://drive.uc.cn",api:"https://pc-api.uc.cn/1/clouddrive",pr:"UCBrowser"};uh=class{addition;conf;cookie;onCookieUpdate;constructor(e,t){this.addition=e,this.conf=PH(e.variant||"Quark"),this.cookie=e.cookie||"",this.onCookieUpdate=t}getRootFolderId(){return(this.addition.root_folder_id||"").trim()||"0"}getVariant(){return this.addition.variant||"Quark"}getConf(){return this.conf}getCookie(){return this.cookie}async request(e,t,i,n){let s=new URL(this.conf.api+e);if(s.searchParams.set("pr",this.conf.pr),s.searchParams.set("fr","pc"),i)for(let[u,f]of Object.entries(i))s.searchParams.set(u,f);let o={Cookie:this.cookie,Accept:"application/json, text/plain, */*",Referer:this.conf.referer,"Content-Type":"application/json","User-Agent":this.conf.ua},a={method:t,headers:o};n!==void 0&&t!=="GET"&&(a.body=JSON.stringify(n));let c=await fetch(s.toString(),a),l=c.headers.get("set-cookie");if(l){let u=US(l,"__puus");if(u&&(this.cookie=TS(this.cookie,"__puus",u),this.onCookieUpdate?.(this.cookie)),this.addition.variant==="Quark"){let f=US(l,"__pus");f&&(this.cookie=TS(this.cookie,"__pus",f),this.onCookieUpdate?.(this.cookie))}}let d=await c.json();if(!c.ok||d.status!==void 0&&d.status>=400||d.code!==void 0&&d.code!==0){let u=d.message||d.msg||`HTTP ${c.status}`;throw new Error(`[Quark/UC] API error [${c.status}] ${e}: ${u}`)}return d}async getFiles(e){let t=[],i=1,n=100,s={pdir_fid:e,_size:String(n),_fetch_total:"1",fetch_all_file:"1",fetch_risk_file_name:"1"};if(this.addition.order_by&&this.addition.order_by!=="none"){let o=this.addition.order_direction||"asc";s._sort=`file_type:asc,${this.addition.order_by}:${o}`}for(;;){s._page=String(i);let o=await this.request("/file/sort","GET",s),a=o?.data?.list||[];if(a.length===0)break;for(let l of a)l.file_name=TH(l.file_name),this.addition.only_list_video_file?(!l.file||l.category===1)&&t.push(l):t.push(l);let c=o.metadata?.total??0;if(c>0&&i*n>=c||a.length{"use strict";Be();RS();fh=class{client;pathFileIdCache=new Map;constructor(e){this.client=new uh(e)}async init(){await this.client.init()}async list(e,t){let i=await this.resolveFileId(t);return(await this.client.getFiles(i)).map(NS)}async get(e,t){let i=t.split("/").filter(Boolean),n=await this.resolveFileId(t),s=i[i.length-1]||"root",o=(()=>{try{return decodeURIComponent(s)}catch{return s}})(),a="/"+i.slice(0,i.length-1).join("/"),c=await this.resolveFileId(a),d=(await this.client.getFiles(c)).find(h=>h.fid===n||h.file_name===s||h.file_name===o),u="",f;try{let h=await this.client.getDownloadUrl(n,o);u=h.url,f=h.headers}catch(h){console.warn(`[Quark/UC] getDownloadUrl warning for ${s}:`,h.message)}if(d){let h=NS(d);return h.raw_url=u,h.raw_url_headers=f,h}try{return await this.client.getFiles(n),{name:o||"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""}}catch{}return{name:o||"root",size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:0,raw_url:u,raw_url_headers:f}}async mkdir(e,t){let i=t.split("/").filter(Boolean),n=i.pop()||"\u65B0\u6587\u4EF6\u5939",s="/"+i.join("/"),o=await this.resolveFileId(s);await this.client.mkdir(o,n)}async rename(e,t,i){let n=await this.resolveFileId(t);await this.client.rename(n,i)}async remove(e,t,i){let n=await this.resolveFileId(t);await this.client.remove([n])}async move(e,t,i,n,s){let o=await this.resolveFileId(n),a=await this.resolveFileId(t);await this.client.move([o],a)}async copy(e,t,i,n,s){let o=await this.resolveFileId(n),a=await this.resolveFileId(t);await this.client.copy([o],a)}async put(e,t,i){throw new Error("[Quark/UC] Direct put not supported in stateless environment")}async resolveFileId(e){let t=e.split("/").filter(Boolean).join("/");if(!t)return this.client.getRootFolderId();if(this.pathFileIdCache.has(t))return this.pathFileIdCache.get(t);let i=t.split("/"),n=this.client.getRootFolderId();for(let s=0;s{try{return decodeURIComponent(o)}catch{return o}})(),l=(await this.client.getFiles(n)).find(u=>u.file_name===o||u.file_name===a||u.fid===o);if(!l)throw new Error(`[Quark/UC] Path '${o}' not found in folder '${n}'`);n=l.fid;let d="/"+i.slice(0,s+1).join("/");this.pathFileIdCache.set(d,n)}return n}}});var OS,RH,MS,Ah,LS=V(()=>{"use strict";OS="https://proapi.115.com/open",RH="https://passportapi.115.com",MS="Mozilla/5.0 115disk/42.0.0.2",Ah=class{accessToken;refreshToken;addition;rootId;constructor(e){this.addition=e,this.accessToken=e.access_token||"",this.refreshToken=e.refresh_token||"",this.rootId=e.root_folder_id||"0"}getRootFolderId(){return this.rootId}async init(){if(!this.accessToken)throw new Error("[115] access_token is required");await this.getUserInfo()}async request(e,t={},i=OS){let n=`${i}${e}`,o=await(await fetch(n,{method:"POST",headers:{"User-Agent":MS,Accept:"application/json","Content-Type":"application/json",Authorization:`Bearer ${this.accessToken}`},body:JSON.stringify(t)})).json().catch(()=>({}));if(o?.state===!1||o?.errno){if(o.errno===990001||o.errcode===990001||o.errno===10008)return await this.refreshAccessToken(),this.request(e,t,i);throw new Error(`[115] ${o.error||o.errmsg||"API error"} (${o.errno||o.errcode||""})`)}return o}async getUserInfo(){return this.request("/user/info",{},RH)}async refreshAccessToken(){let e=`${OS}/oauth2/token`,i=await(await fetch(e,{method:"POST",headers:{"Content-Type":"application/json","User-Agent":MS},body:JSON.stringify({grant_type:"refresh_token",refresh_token:this.refreshToken})})).json().catch(()=>({}));if(i?.access_token)this.accessToken=i.access_token,this.addition.access_token=i.access_token,i.refresh_token&&(this.refreshToken=i.refresh_token,this.addition.refresh_token=i.refresh_token);else throw new Error(`[115] refresh token failed: ${JSON.stringify(i)}`)}async getFiles(e){let t=await this.request("/open/ufile/files",{cid:e,limit:1e3,offset:0,order:this.addition.order_by||"user_utime",asc:this.addition.order_direction==="asc"?1:0,show_dir:1,fc_mix:1});return t?.data&&Array.isArray(t.data)?t.data:t?.files&&Array.isArray(t.files)?t.files.map(i=>({Fid:i.fid??i.id,Fn:i.n??i.file_name??i.name,Fc:String(i.fc??i.category??(i.pid!==void 0&&!i.pid?"0":"1")),FS:Number(i.s??i.size??0),Sha1:i.sha1,Pc:i.pc??i.pick_code,Thumbnail:i.thumb??i.thumbnail,Upt:i.tu??i.upt??i.updated_at,Pid:i.pid??i.cid})):[]}async resolvePathId(e,t){let i=e.split("/").filter(Boolean).join("/");if(!i)return this.rootId;if(t.has(i))return t.get(i);let n=i.split("/"),s=this.rootId;for(let o=0;o{try{return decodeURIComponent(a)}catch{return a}})(),d=(await this.getFiles(s)).find(f=>f.Fn===a||f.Fn===c||f.Fid===a);if(!d)throw new Error(`[115] Path '${a}' not found in '${s}'`);s=d.Fid;let u="/"+n.slice(0,o+1).join("/");t.set(u,s)}return s}async mkdir(e,t){await this.request("/open/ufile/add",{pid:e,cname:t})}async rename(e,t){await this.request("/open/ufile/edit",{fid:e,fname:t})}async move(e,t){await this.request("/open/ufile/move",{pid:e,fid:t,no_dupli:"1"})}async copy(e,t){await this.request("/open/ufile/copy",{pid:e,fid:t,no_dupli:"1"})}async remove(e){await this.request("/open/ufile/delete",{fid:e,ignore_warn:1})}async getDownloadUrl(e){let t=await this.request("/open/ufile/downurl",{pickcode:e}),i=t?.url||t?.data?.url||"";if(!i)throw new Error("[115] empty download url");return i}}});function HS(r){let e=r.Fc==="0",t=r.Upt?new Date(r.Upt*1e3).toISOString():new Date().toISOString();return{name:r.Fn,size:r.FS||0,is_dir:e,modified:t,sign:"",type:X(r.Fn,e),thumb:r.Thumbnail||"",raw_url:""}}var hh,KS=V(()=>{"use strict";Be();LS();hh=class{client;pathCache=new Map;constructor(e){this.client=new Ah(e)}async init(){await this.client.init()}async list(e,t){let i=await this.client.resolvePathId(t,this.pathCache);return(await this.client.getFiles(i)).map(HS)}async get(e,t){let i=t.split("/").filter(Boolean),n=i[i.length-1]||"root",s=(()=>{try{return decodeURIComponent(n)}catch{return n}})(),o="/"+i.slice(0,-1).join("/"),a=await this.client.resolvePathId(o,this.pathCache),l=(await this.client.getFiles(a)).find(d=>d.Fn===n||d.Fn===s||d.Fid===n);if(l){let d=HS(l);if(!d.is_dir&&l.Pc)try{let u=await this.client.getDownloadUrl(l.Pc);d.raw_url=u}catch(u){d.raw_url_error=u.message}return d}try{let d=await this.client.resolvePathId(t,this.pathCache);return await this.client.getFiles(d),{name:s||"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""}}catch{return{name:s||"root",size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:0,raw_url:""}}}async mkdir(e,t){let i=t.split("/").filter(Boolean),n=i.pop()||"new_folder",s="/"+i.join("/"),o=await this.client.resolvePathId(s,this.pathCache);await this.client.mkdir(o,n)}async rename(e,t,i){let n=await this.client.resolvePathId(t,this.pathCache);await this.client.rename(n,i)}async remove(e,t,i){let n=await this.client.resolvePathId(t,this.pathCache);await this.client.remove([n])}async move(e,t,i,n,s){let o=await this.client.resolvePathId(n,this.pathCache),a=await this.client.resolvePathId(t,this.pathCache);await this.client.move(a,[o])}async copy(e,t,i,n,s){let o=await this.client.resolvePathId(n,this.pathCache),a=await this.client.resolvePathId(t,this.pathCache);await this.client.copy(a,[o])}async put(e,t,i){throw new Error("[115] Direct put not supported in stateless environment")}}});var gh,GS=V(()=>{"use strict";gh=class{address;addition;accessToken="";constructor(e){this.addition=e,this.address=(e.address||"").replace(/\/+$/,""),this.accessToken=e.access_token||""}async init(){if(!this.address)throw new Error("[Cloudreve] address is required");this.addition.username&&this.addition.password?await this.login():this.addition.refresh_token&&await this.refreshToken()}async login(){let t=await(await fetch(`${this.address}/api/v4/session`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({username:this.addition.username,password:this.addition.password})})).json().catch(()=>({}));if(t?.token)this.accessToken=t.token,t.refresh_token&&(this.addition.refresh_token=t.refresh_token);else throw new Error("[Cloudreve] login failed")}async refreshToken(){let t=await(await fetch(`${this.address}/api/v4/session/renew`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.addition.refresh_token}`}})).json().catch(()=>({}));t?.token&&(this.accessToken=t.token)}async request(e,t,i,n=!1){let s={Authorization:`Bearer ${this.accessToken}`,"Content-Type":"application/json"};this.addition.custom_ua&&(s["User-Agent"]=this.addition.custom_ua);let o={method:e,headers:s};i&&(o.body=JSON.stringify(i));let a=await fetch(`${this.address}/api/v4${t}`,o);if(a.status===401&&!n)return this.addition.refresh_token?await this.refreshToken():this.addition.username&&await this.login(),this.request(e,t,i,!0);if(e==="DELETE"&&a.ok)return{};let c=await a.json().catch(()=>({}));if(a.status>=400)throw new Error(`[Cloudreve] ${c?.msg||c?.message||`HTTP ${a.status}`}`);return c}async listFiles(e){let t=[],i="",n=e==="/"?"/":e;do{let s={page_size:"100",uri:n,order_by:this.addition.order_by||"name",order_direction:this.addition.order_direction||"asc",page:"0"};i&&(s.next_page_token=i);let o=new URLSearchParams(s).toString(),a=await this.request("GET",`/file?${o}`);a?.files&&t.push(...a.files),i=a?.pagination?.next_token||""}while(i);return t}async getDownloadUrl(e){let i=(await this.request("POST","/file/url",{uris:[e],download:!0}))?.urls?.[0]?.url||"";if(!i)throw new Error("[Cloudreve] empty download url");return i}async mkdir(e,t){let i=`${e.replace(/\/+$/,"")}/${t}`;await this.request("POST","/file/create",{type:"folder",uri:i,error_on_conflict:!0})}async rename(e,t){let i=e.lastIndexOf("/"),s=`${i>=0?e.slice(0,i+1):"/"}${t}`;await this.request("POST","/file/rename",{uris:[e],new_uri:s})}async move(e,t,i){await this.request("POST","/file/move",{uris:e,dst:t,copy:i})}async remove(e){await this.request("DELETE","/file",{uris:e,unlink:!1,skip_soft_delete:!0})}}});function zS(r){let e=r.type===1;return{name:r.name,size:r.size||0,is_dir:e,modified:r.updated_at||new Date().toISOString(),sign:"",type:X(r.name,e),raw_url:""}}function Fs(r){return!r||r==="/"?"/":r.startsWith("/")?r:"/"+r}var ph,JS=V(()=>{"use strict";Be();GS();ph=class{client;constructor(e){this.client=new gh(e)}async init(){await this.client.init()}async list(e,t){return(await this.client.listFiles(Fs(t))).map(zS)}async get(e,t){let i=Fs(t),n=i.split("/").filter(Boolean),s=n[n.length-1]||"root",o="/"+n.slice(0,-1).join("/");try{let c=(await this.client.listFiles(o==="//"?"/":o)).find(l=>l.name===s||l.path===i);if(c){let l=zS(c);if(!l.is_dir)try{l.raw_url=await this.client.getDownloadUrl(i)}catch(d){l.raw_url_error=d.message}return l}}catch{}try{let a=await this.client.listFiles(i);return{name:s,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""}}catch{return{name:s,size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:0,raw_url:""}}}async mkdir(e,t){let n=Fs(t).split("/").filter(Boolean),s=n.pop()||"new_folder",o="/"+n.join("/");await this.client.mkdir(o==="//"?"/":o,s)}async rename(e,t,i){await this.client.rename(Fs(t),i)}async remove(e,t,i){await this.client.remove([Fs(t)])}async move(e,t,i,n,s){await this.client.move([Fs(n)],Fs(t),!1)}async copy(e,t,i,n,s){await this.client.move([Fs(n)],Fs(t),!0)}async put(e,t,i){throw new Error("[Cloudreve] Direct put not supported in stateless environment")}}});var NH,mh,jS=V(()=>{"use strict";NH="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",mh=class{addition;address;cookie;persistCookie;constructor(e,t){this.addition=e,this.address=(e.address||"").replace(/\/+$/,""),this.cookie=e.cookie||"",this.persistCookie=t}async init(){if(!this.address)throw new Error("[Cloudreve] address is required");this.cookie||await this.login()}getCookie(){return this.cookie}getUA(){return this.addition.custom_ua||NH}async login(){if(!this.addition.username||!this.addition.password)throw new Error("[Cloudreve] username/password or cookie is required");let e=await fetch(`${this.address}/api/v3/user/session`,{method:"POST",headers:{"Content-Type":"application/json","User-Agent":this.getUA()},body:JSON.stringify({username:this.addition.username,Password:this.addition.password,captchaCode:""})}),t=await e.json().catch(()=>({}));if(t.code!==0)throw new Error(`[Cloudreve] login failed: ${t.msg}`);let i=this.extractSessionCookie(e);if(!i)throw new Error("[Cloudreve] login failed: no session cookie");this.cookie=i,this.persistCookie&&await this.persistCookie(this.cookie)}extractSessionCookie(e){let t=typeof e.headers.getSetCookie=="function"?e.headers.getSetCookie():[];if(Array.isArray(t)){for(let s of t)if(s&&s.includes("cloudreve-session="))return s.split(";")[0].split("=")[1]}let i=e.headers.get("set-cookie")||"",n=/cloudreve-session=([^;]+)/.exec(i);return n?n[1]:""}async request(e,t,i,n=!1){let s={Cookie:`cloudreve-session=${this.cookie}`,Accept:"application/json, text/plain, */*","User-Agent":this.getUA()},o={method:e,headers:s};i!==void 0&&(s["Content-Type"]="application/json",o.body=JSON.stringify(i));let a=await fetch(`${this.address}/api/v3${t}`,o),c=await a.json().catch(()=>({}));if(c.code===401&&t!=="/user/session"&&!n&&this.addition.username&&this.addition.password)return await this.login(),this.request(e,t,i,!0);if(c.code!==0)throw new Error(`[Cloudreve] ${c.msg||`HTTP ${a.status}`}`);let l=this.extractSessionCookie(a);return l&&(this.cookie=l),c.data}async listFiles(e){return(await this.request("GET",`/directory${e}`))?.objects||[]}async getDownloadUrl(e){let t=await this.request("PUT",`/file/download/${e}`);if(!t)throw new Error("[Cloudreve] empty download url");return t.startsWith("/api")?this.address+t:t}downloadHeaders(){return{Referer:this.address,"User-Agent":this.getUA()}}async mkdir(e){await this.request("PUT","/directory",{path:e})}async move(e,t,i){await this.request("PATCH","/object",{action:"move",src_dir:e,dst:t,src:i})}async rename(e,t){await this.request("PATCH","/object/rename",{action:"rename",new_name:t,src:e})}async copy(e,t,i){await this.request("POST","/object/copy",{src_dir:e,dst:t,src:i})}async remove(e){await this.request("DELETE","/object",e)}}});function $S(r){let e=r.type==="dir";return{name:r.name,size:r.size||0,is_dir:e,modified:r.date||r.create_date||new Date().toISOString(),sign:r.id,type:X(r.name,e),raw_url:""}}function El(r){return!r||r==="/"?"/":r.startsWith("/")?r:"/"+r}var yh,VS=V(()=>{"use strict";Be();jS();yh=class{client;constructor(e,t){this.client=new mh(e,t)}async init(){await this.client.init()}async list(e,t){return(await this.client.listFiles(El(t))).map($S)}async get(e,t){let n=El(t).split("/").filter(Boolean),s=n[n.length-1]||"root",o="/"+n.slice(0,-1).join("/");try{let c=(await this.client.listFiles(o==="//"?"/":o)).find(l=>l.name===s);if(c){let l=$S(c);if(!l.is_dir)try{l.raw_url=await this.client.getDownloadUrl(c.id),l.raw_url_headers=this.client.downloadHeaders()}catch(d){l.raw_url_error=d.message}return l}}catch{}return{name:s,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""}}async mkdir(e,t){await this.client.mkdir(El(t))}async rename(e,t,i){let n=await this.resolveEntry(t);await this.client.rename(n.src,i)}async remove(e,t,i){let n=await this.resolveEntry(t);await this.client.remove(n.src)}async move(e,t,i,n,s){let o=await this.resolveEntry(n),c="/"+n.split("/").filter(Boolean).slice(0,-1).join("/");await this.client.move(c,El(t),o.src)}async copy(e,t,i,n,s){let o=await this.resolveEntry(n),c="/"+n.split("/").filter(Boolean).slice(0,-1).join("/");await this.client.copy(c,El(t),o.src)}async put(){throw new Error("[Cloudreve] Direct put not supported in stateless environment")}async resolveEntry(e){let i=El(e).split("/").filter(Boolean),n=i[i.length-1],s="/"+i.slice(0,-1).join("/"),a=(await this.client.listFiles(s==="//"?"/":s)).find(d=>d.name===n);if(!a)throw new Error(`[Cloudreve] '${n}' not found`);let c=a.type==="dir";return{src:c?{dirs:[a.id],items:[]}:{dirs:[],items:[a.id]},isDir:c}}}});var Ih,YS=V(()=>{"use strict";Ih=class{url;addition;token="";constructor(e){this.addition=e,this.url=(e.url||"").replace(/\/+$/,""),this.token=e.token||""}async init(){if(!this.url)throw new Error("[OpenList] url is required");this.addition.username&&this.addition.password&&await this.login()}async login(){let t=await(await fetch(`${this.url}/api/auth/login`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({username:this.addition.username,password:this.addition.password})})).json().catch(()=>({}));if(t?.data?.token)this.token=t.data.token;else throw new Error("[OpenList] login failed")}async request(e,t="POST",i){let n={"Content-Type":"application/json"};this.token&&(n.Authorization=this.token),this.addition.meta_password&&(n["Meta-Password"]=this.addition.meta_password);let s={method:t,headers:n};return i&&(s.body=JSON.stringify(i)),await(await fetch(`${this.url}${e}`,s)).json()}async list(e){let t=await this.request("/api/fs/list","POST",{path:e,page:1,per_page:0});if(t.code!==200)throw new Error(`[OpenList] ${t.message}`);return t.data?.content||[]}async get(e){let t=await this.request("/api/fs/get","POST",{path:e});if(t.code!==200)throw new Error(`[OpenList] ${t.message}`);return t.data}async mkdir(e){let t=await this.request("/api/fs/mkdir","POST",{path:e});if(t.code!==200)throw new Error(`[OpenList] ${t.message}`)}async rename(e,t){let i=await this.request("/api/fs/rename","POST",{path:e,name:t});if(i.code!==200)throw new Error(`[OpenList] ${i.message}`)}async move(e,t,i){let n=await this.request("/api/fs/move","POST",{src_dir:e,dst_dir:t,names:i});if(n.code!==200)throw new Error(`[OpenList] ${n.message}`)}async copy(e,t,i){let n=await this.request("/api/fs/copy","POST",{src_dir:e,dst_dir:t,names:i});if(n.code!==200)throw new Error(`[OpenList] ${n.message}`)}async remove(e,t){let i=await this.request("/api/fs/remove","POST",{dir:e,names:t});if(i.code!==200)throw new Error(`[OpenList] ${i.message}`)}}});var wh,WS=V(()=>{"use strict";Be();YS();wh=class{client;constructor(e){this.client=new Ih(e)}async init(){await this.client.init()}async list(e,t){return(await this.client.list(t)).map(n=>({name:n.name,size:n.size||0,is_dir:!!n.is_dir,modified:n.modified||new Date().toISOString(),sign:n.sign||"",type:X(n.name,!!n.is_dir),thumb:n.thumb||"",raw_url:n.raw_url||""}))}async get(e,t){try{let i=await this.client.get(t);return{name:i.name,size:i.size||0,is_dir:!!i.is_dir,modified:i.modified||new Date().toISOString(),sign:i.sign||"",type:X(i.name,!!i.is_dir),raw_url:i.raw_url||""}}catch{try{await this.client.list(t);let i=t.split("/").filter(Boolean);return{name:i[i.length-1]||"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""}}catch{let i=t.split("/").filter(Boolean);return{name:i[i.length-1]||"root",size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:0,raw_url:""}}}}async mkdir(e,t){await this.client.mkdir(t)}async rename(e,t,i){await this.client.rename(t,i)}async remove(e,t,i){let n=t.split("/").filter(Boolean),s="/"+n.slice(0,-1).join("/");await this.client.remove(s,i.length?i:[n[n.length-1]])}async move(e,t,i,n,s){await this.client.move(e,t,i)}async copy(e,t,i,n,s){await this.client.copy(e,t,i)}async put(e,t,i){throw new Error("[OpenList] Direct put not supported in stateless environment")}}});var xh,XS=V(()=>{"use strict";xh=class{url;sid;pwd;constructor(e){this.url=(e.url||"").replace(/\/+$/,""),this.sid=e.sid||"",this.pwd=e.pwd||""}init(){if(!this.url)throw new Error("[OpenListShare] url is required");if(!this.sid)throw new Error("[OpenListShare] sid is required")}async request(e,t="POST",i){return await(await fetch(`${this.url}${e}`,{method:t,headers:{"Content-Type":"application/json"},body:i?JSON.stringify(i):void 0})).json()}sharePath(e){return"/@s/"+this.sid+(e==="/"?"":e)}async list(e){let t=await this.request("/api/fs/list","POST",{path:this.sharePath(e),password:this.pwd,refresh:!1,page:1,per_page:0});if(t.code!==200)throw new Error(`[OpenListShare] ${t.message}`);return t.data?.content||[]}downloadUrl(e){let t="/"+this.sid+e;return`${this.url}/sd${t}?pwd=${encodeURIComponent(this.pwd)}`}}});function ZS(r){return{name:r.name,size:r.size||0,is_dir:r.is_dir,modified:r.modified||new Date().toISOString(),sign:r.sign||"",type:X(r.name,r.is_dir),thumb:r.thumb||"",raw_url:""}}function eD(r){return!r||r==="/"?"/":r.startsWith("/")?r:"/"+r}var Ch,tD=V(()=>{"use strict";Be();XS();Ch=class{client;constructor(e){this.client=new xh(e)}async init(){this.client.init()}async list(e,t){return(await this.client.list(eD(t))).map(ZS)}async get(e,t){let i=eD(t),n=i.split("/").filter(Boolean),s=n[n.length-1]||"root",o="/"+n.slice(0,-1).join("/");try{let c=(await this.client.list(o==="//"?"/":o)).find(l=>l.name===s);if(c){let l=ZS(c);return l.is_dir||(l.raw_url=this.client.downloadUrl(i)),l}}catch{}return{name:s,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""}}async mkdir(){throw new Error("[OpenListShare] read-only share, mkdir not supported")}async rename(){throw new Error("[OpenListShare] read-only share, rename not supported")}async remove(){throw new Error("[OpenListShare] read-only share, remove not supported")}async move(){throw new Error("[OpenListShare] read-only share, move not supported")}async copy(){throw new Error("[OpenListShare] read-only share, copy not supported")}async put(){throw new Error("[OpenListShare] read-only share, upload not supported")}}});var Eh,rD=V(()=>{"use strict";Eh=class{url;token;constructor(e){this.url=(e.url||"").replace(/\/+$/,""),this.token=e.access_token||""}async init(){if(!this.url)throw new Error("[TelDrive] url is required");if(!this.token)throw new Error("[TelDrive] access_token is required")}async request(e,t="GET",i){let n={Authorization:`Bearer ${this.token}`,"Content-Type":"application/json"},s={method:t,headers:n};i&&(s.body=JSON.stringify(i));let o=await fetch(`${this.url}${e}`,s);if(t==="DELETE"&&o.ok)return{};let a=await o.json().catch(()=>({}));if(o.status>=400)throw new Error(`[TelDrive] ${a?.message||`HTTP ${o.status}`}`);return a}async listFiles(e){let t=await this.request(`/api/files?path=${encodeURIComponent(e)}`);return Array.isArray(t)?t:t?.files||[]}async mkdir(e){await this.request("/api/files/mkdir","POST",{path:e})}async move(e,t){await this.request("/api/files/move","POST",{ids:e,destination:t})}async remove(e){await this.request(`/api/files/${e}`,"DELETE")}downloadUrl(e){return`${this.url}/api/files/${e}`}downloadHeaders(){return{Authorization:`Bearer ${this.token}`}}}});function iD(r){let e=r.type==="folder";return{name:r.name,size:r.size||0,is_dir:e,modified:r.updatedAt||r.createdAt||new Date().toISOString(),sign:"",type:X(r.name,e),raw_url:""}}var Bh,nD=V(()=>{"use strict";Be();rD();Bh=class{client;pathCache=new Map;constructor(e){this.client=new Eh(e)}async init(){await this.client.init()}async list(e,t){return(await this.client.listFiles(t)).map(iD)}async get(e,t){let i=t.split("/").filter(Boolean),n=i[i.length-1]||"root",s="/"+i.slice(0,-1).join("/");try{let a=(await this.client.listFiles(s==="//"?"/":s)).find(c=>c.name===n);if(a){let c=iD(a);return c.is_dir||(c.raw_url=this.client.downloadUrl(a.id),c.raw_url_headers=this.client.downloadHeaders()),c}}catch{}try{return await this.client.listFiles(t),{name:n,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""}}catch{return{name:n,size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:0,raw_url:""}}}async mkdir(e,t){await this.client.mkdir(t)}async rename(e,t,i){throw new Error("[TelDrive] rename not supported")}async remove(e,t,i){let n=await this.resolveFileId(t);await this.client.remove(n)}async move(e,t,i,n,s){let o=await this.resolveFileId(n),a=await this.resolveFileId(t);await this.client.move([o],a)}async copy(e,t,i,n,s){throw new Error("[TelDrive] copy not supported")}async put(e,t,i){throw new Error("[TelDrive] Direct put not supported in stateless environment")}async resolveFileId(e){let t=e.split("/").filter(Boolean).join("/");if(!t)return"/";if(this.pathCache.has(t))return this.pathCache.get(t);let i=t.split("/"),n="",s="/";for(let o=0;ol.name===i[o]);if(!c)throw new Error(`[TelDrive] Path '${i[o]}' not found`);s=c.id,n=n?`${n}/${i[o]}`:`/${i[o]}`,this.pathCache.set(n,s)}return s}}});var qH,Qu,bh,sD=V(()=>{"use strict";qH="https://www.mediafire.com/api/1.5",Qu="https://www.mediafire.com",bh=class{cookie;sessionToken;chunkSize;orderBy;orderDirection;constructor(e){this.cookie=e.cookie||"",this.sessionToken=e.session_token||"",this.chunkSize=e.chunk_size||200,this.orderBy=e.order_by||"name",this.orderDirection=e.order_direction||"asc"}async init(){if(!this.cookie)throw new Error("[MediaFire] cookie is required");this.sessionToken||await this.getSessionToken()}async postForm(e,t){let i=new URLSearchParams({session_token:this.sessionToken,response_format:"json",...t});return await(await fetch(`${qH}${e}`,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Cookie:this.cookie,"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64)",Origin:Qu,Referer:`${Qu}/`},body:i.toString()})).json().catch(()=>({}))}async getSessionToken(){let i=(await(await fetch(`${Qu}/application/get_session_token.php`,{method:"POST",headers:{Cookie:this.cookie,Origin:Qu,Referer:`${Qu}/`,"Content-Length":"0"}})).json().catch(()=>({})))?.response?.session_token;if(!i)throw new Error("[MediaFire] failed to get session token from cookie");this.sessionToken=i,this.addition_session_token=i}addition_session_token="";checkResult(e){if(e&&e!=="Success")throw new Error(`[MediaFire] API error: ${e}`)}async list(e){let t=[],i=1,n=!0;for(;n;){let s=await this.postForm("/folder/get_content.php",{folder_key:e,content_type:"folders",chunk:String(i),chunk_size:String(this.chunkSize),details:"yes",order_direction:this.orderDirection,order_by:this.orderBy,filter:""}),o=await this.postForm("/folder/get_content.php",{folder_key:e,content_type:"files",chunk:String(i),chunk_size:String(this.chunkSize),details:"yes",order_direction:this.orderDirection,order_by:this.orderBy,filter:""}),a=s.response?.folder_content?.folders||[],c=o.response?.folder_content?.files||[];for(let l of a)t.push({id:l.folderkey,name:l.name,size:0,isDir:!0,created:l.created});for(let l of c)t.push({id:l.quickkey,name:l.filename,size:parseInt(l.size,10)||0,isDir:!1,created:l.created});n=s.response?.folder_content?.more_chunks==="yes"||o.response?.folder_content?.more_chunks==="yes",i++}return t}async getDownloadUrl(e){let t=await this.postForm("/file/get_links.php",{quick_key:e,link_type:"direct_download"});this.checkResult(t.response?.result);let i=t.response?.links?.[0]?.direct_download||t.response?.links?.[0]?.normal_download;if(!i)throw new Error("[MediaFire] no download link found");return i}async mkdir(e,t){let i=await this.postForm("/folder/create.php",{parent_key:e,foldername:t});return this.checkResult(i.response?.result),i.response?.folder_key||""}async rename(e,t,i){if(i){let n=await this.postForm("/folder/update.php",{folder_key:e,foldername:t});this.checkResult(n.response?.result)}else{let n=await this.postForm("/file/update.php",{quick_key:e,filename:t});this.checkResult(n.response?.result)}}async move(e,t,i){if(i){let n=await this.postForm("/folder/move.php",{folder_key_src:e,folder_key_dst:t});this.checkResult(n.response?.result)}else{let n=await this.postForm("/file/move.php",{quick_key:e,folder_key:t});this.checkResult(n.response?.result)}}async copy(e,t,i){if(i){let n=await this.postForm("/folder/copy.php",{folder_key_src:e,folder_key_dst:t});this.checkResult(n.response?.result)}else{let n=await this.postForm("/file/copy.php",{quick_key:e,folder_key:t});this.checkResult(n.response?.result)}}async remove(e,t){if(t){let i=await this.postForm("/folder/delete.php",{folder_key:e});this.checkResult(i.response?.result)}else{let i=await this.postForm("/file/delete.php",{quick_key:e});this.checkResult(i.response?.result)}}}});var vh,oD=V(()=>{"use strict";Be();sD();vh=class{client;pathCache=new Map;constructor(e){this.client=new bh(e)}async init(){await this.client.init()}async list(e,t){let i=await this.resolveFolderId(t);return(await this.client.list(i)).map(s=>({name:s.name,size:s.size,is_dir:s.isDir,modified:s.created?new Date(s.created).toISOString():new Date().toISOString(),sign:"",type:X(s.name,s.isDir),raw_url:""}))}async get(e,t){let i=t.split("/").filter(Boolean),n=i[i.length-1]||"root",s="/"+i.slice(0,-1).join("/");try{let o=await this.resolveFolderId(s),c=(await this.client.list(o)).find(l=>l.name===n);if(c){let l={name:c.name,size:c.size,is_dir:c.isDir,modified:c.created?new Date(c.created).toISOString():new Date().toISOString(),sign:"",type:X(c.name,c.isDir),raw_url:""};if(!c.isDir)try{l.raw_url=await this.client.getDownloadUrl(c.id)}catch(d){l.raw_url_error=d.message}return l}}catch{}try{return await this.resolveFolderId(t),{name:n,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""}}catch{return{name:n,size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:0,raw_url:""}}}async mkdir(e,t){let i=t.split("/").filter(Boolean),n=i.pop()||"new_folder",s="/"+i.join("/"),o=await this.resolveFolderId(s);await this.client.mkdir(o,n)}async rename(e,t,i){let{id:n,isDir:s}=await this.resolveEntry(t);await this.client.rename(n,i,s)}async remove(e,t,i){let{id:n,isDir:s}=await this.resolveEntry(t);await this.client.remove(n,s)}async move(e,t,i,n,s){let{id:o,isDir:a}=await this.resolveEntry(n),c=await this.resolveFolderId(t);await this.client.move(o,c,a)}async copy(e,t,i,n,s){let{id:o,isDir:a}=await this.resolveEntry(n),c=await this.resolveFolderId(t);await this.client.copy(o,c,a)}async put(e,t,i){throw new Error("[MediaFire] Direct put not supported in stateless environment")}async resolveFolderId(e){let t=e.split("/").filter(Boolean).join("/");if(!t)return"";if(this.pathCache.has(t))return this.pathCache.get(t);let i=t.split("/"),n="";for(let s=0;sl.isDir&&l.name===i[s]);if(!a)throw new Error(`[MediaFire] Folder '${i[s]}' not found`);n=a.id;let c="/"+i.slice(0,s+1).join("/");this.pathCache.set(c,n)}return n}async resolveEntry(e){let t=e.split("/").filter(Boolean),i=t[t.length-1],n="/"+t.slice(0,-1).join("/"),s=await this.resolveFolderId(n),a=(await this.client.list(s)).find(c=>c.name===i);if(!a)throw new Error(`[MediaFire] '${i}' not found`);return{id:a.id,isDir:a.isDir}}}});function Mo(...r){return"/"+r.filter(Boolean).map(t=>t.replace(/^\/+|\/+$/g,"")).filter(Boolean).join("/")}var OH,kh,aD=V(()=>{"use strict";OH="https://api.github.com",kh=class{addition;mounts;constructor(e){this.addition=e,this.mounts=this.parseMounts(e.repo_structure||"")}parseMounts(e){let t=[];for(let i of e.split(";")){let n=i.trim();if(!n)continue;let s=n.indexOf(":");s>0&&n.slice(0,s).includes("/");let o="/",a=n;s>0&&!n.slice(s+1).startsWith("/")&&!n.slice(0,s).includes(".")&&(o="/"+n.slice(0,s).replace(/^\/+|\/+$/g,""),a=n.slice(s+1)),t.push({point:o==="/"?"/":o,repo:a})}return t}async init(){if(this.mounts.length===0)throw new Error("[GitHub Releases] repo_structure is required (format: [path:]org/repo)")}async get(e){let t={Accept:"application/vnd.github+json","User-Agent":"OpenList-TSWorker"};this.addition.token&&(t.Authorization=`Bearer ${this.addition.token}`);let i=await fetch(`${OH}${e}`,{headers:t});if(i.status===404)return null;if(i.status>=400)throw new Error(`[GitHub Releases] HTTP ${i.status}`);return await i.json().catch(()=>null)}proxy(e){let t=this.addition.gh_proxy||"";return!t||e.startsWith("http")?e:t+e}mountForPath(e){let t=e.startsWith("/")?e:"/"+e,i=null;for(let n of this.mounts){let s=n.point==="/"?"/":n.point;(t===s||t.startsWith(s+"/"))&&(!i||s.length>(i.point==="/"?0:i.point.length))&&(i=n)}return i}async latestRelease(e){return this.get(`/repos/${e}/releases/latest`)}async allReleases(e){return await this.get(`/repos/${e}/releases`)||[]}async repoFiles(e){return await this.get(`/repos/${e}/contents`)||[]}async list(e){let t=this.mountForPath(e);if(!t)return[];let i=this.relPath(t,e),n=[];if(i===""&&e==="/"){for(let c of this.mounts)n.push({path:c.point,name:c.point==="/"?c.repo:c.point.split("/").filter(Boolean).pop()||c.repo,size:0,isDir:!0,modified:new Date().toISOString(),url:""});return n}let s=this.addition.show_all_version;if(i===""){let c=await this.latestRelease(t.repo);if(c){for(let l of c.assets)n.push({path:Mo(t.point,l.name),name:l.name,size:l.size,isDir:!1,modified:l.updated_at||l.created_at||new Date().toISOString(),url:this.proxy(l.browser_download_url)});this.addition.show_source_code&&(n.push({path:Mo(t.point,"Source code (zip)"),name:"Source code (zip)",size:1,isDir:!1,modified:c.created_at,url:this.proxy(c.zipball_url)}),n.push({path:Mo(t.point,"Source code (tar.gz)"),name:"Source code (tar.gz)",size:1,isDir:!1,modified:c.created_at,url:this.proxy(c.tarball_url)}))}if(s){let l=await this.allReleases(t.repo);for(let d of l)n.push({path:Mo(t.point,d.tag_name),name:d.tag_name,size:0,isDir:!0,modified:d.published_at||d.created_at,url:d.html_url})}if(this.addition.show_readme!==!1){let l=await this.repoFiles(t.repo);for(let d of l)(d.name.toLowerCase().endsWith(".md")||d.name.toUpperCase().startsWith("LICENSE"))&&n.push({path:Mo(t.point,d.name),name:d.name,size:d.size,isDir:!1,modified:"1970-01-01T00:00:00Z",url:this.proxy(d.download_url)})}return n}let a=(await this.allReleases(t.repo)).find(c=>c.tag_name===i.split("/")[0]);if(a){for(let c of a.assets)n.push({path:Mo(t.point,a.tag_name,c.name),name:c.name,size:c.size,isDir:!1,modified:c.updated_at||c.created_at||new Date().toISOString(),url:this.proxy(c.browser_download_url)});this.addition.show_source_code&&(n.push({path:Mo(t.point,"Source code (zip)"),name:"Source code (zip)",size:1,isDir:!1,modified:a.created_at,url:this.proxy(a.zipball_url)}),n.push({path:Mo(t.point,"Source code (tar.gz)"),name:"Source code (tar.gz)",size:1,isDir:!1,modified:a.created_at,url:this.proxy(a.tarball_url)}))}return n}async getDownloadUrl(e){let t=this.mountForPath(e);if(!t)return"";let n=this.relPath(t,e).split("/").pop()||"",s=await this.latestRelease(t.repo);if(s){let l=s.assets.find(d=>d.name===n);if(l)return this.proxy(l.browser_download_url)}let o=await this.allReleases(t.repo);for(let l of o){let d=l.assets.find(u=>u.name===n);if(d)return this.proxy(d.browser_download_url)}let c=(await this.repoFiles(t.repo)).find(l=>l.name===n);return c?this.proxy(c.download_url):""}relPath(e,t){let i=e.point==="/"?"/":e.point,n=t.startsWith("/")?t:"/"+t;return i==="/"?n.replace(/^\/+/,""):n.slice(i.length).replace(/^\/+/,"")}}});var Sh,cD=V(()=>{"use strict";Be();aD();Sh=class{client;constructor(e){this.client=new kh(e)}async init(){await this.client.init()}async list(e,t){return(await this.client.list(t)).map(n=>({name:n.name,size:n.size,is_dir:n.isDir,modified:n.modified||new Date().toISOString(),sign:"",type:X(n.name,n.isDir),raw_url:n.url||""}))}async get(e,t){let i=t.split("/").filter(Boolean),n=i[i.length-1]||"root",s=await this.client.list(t);if(s.length>0||t==="/")return!s.find(c=>c.isDir&&c.name===n)&&s.some(c=>!c.isDir),{name:n,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""};let o=await this.client.getDownloadUrl(t);return o?{name:n,size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:X(n,!1),raw_url:o}:{name:n,size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:X(n,!1),raw_url:""}}async mkdir(){throw new Error("[GitHub Releases] read-only storage")}async rename(){throw new Error("[GitHub Releases] read-only storage")}async remove(){throw new Error("[GitHub Releases] read-only storage")}async move(){throw new Error("[GitHub Releases] read-only storage")}async copy(){throw new Error("[GitHub Releases] read-only storage")}async put(){throw new Error("[GitHub Releases] read-only storage")}}});var MH,LH,Dh,lD=V(()=>{"use strict";MH="https://api.cnb.cool",LH="https://cnb.cool",Dh=class{repo;token;useTagName;constructor(e){this.repo=e.repo||"",this.token=e.token||"",this.useTagName=!!e.use_tag_name}async init(){if(!this.repo)throw new Error("[CNB Releases] repo is required");if(!this.token)throw new Error("[CNB Releases] token is required")}async request(e,t,i,n=!1){let s={Accept:"application/json",Authorization:`Bearer ${this.token}`},o={method:e,headers:s};i!==void 0&&(n?(o.body=new URLSearchParams(i).toString(),s["Content-Type"]="application/x-www-form-urlencoded"):(o.body=JSON.stringify(i),s["Content-Type"]="application/json"));let a=await fetch(`${MH}${t}`,o);if(a.status!==200&&a.status!==201&&a.status!==204)throw new Error(`[CNB Releases] ${a.status} ${await a.text().catch(()=>"")}`);return a.status===204?{}:await a.json().catch(()=>({}))}async listReleases(){return this.request("GET",`/${this.repo}/-/releases`)}async getRelease(e){return this.request("GET",`/${this.repo}/-/releases/${e}`)}releaseName(e){return this.useTagName?e.tag_name:e.name}createRelease(e,t){return this.request("POST",`/${this.repo}/-/releases`,{name:e,tag_name:e,target_commitish:t||"main"})}renameRelease(e,t){return this.request("PATCH",`/${this.repo}/-/releases/${e}`,{name:t},!0)}deleteRelease(e){return this.request("DELETE",`/${this.repo}/-/releases/${e}`)}deleteAsset(e,t){return this.request("DELETE",`/${this.repo}/-/releases/${e}/assets/${t}`)}assetDownloadUrl(e){return`${LH}${e.path}`}}});var Qh,dD=V(()=>{"use strict";Be();lD();Qh=class{client;addition;constructor(e){this.addition=e,this.client=new Dh(e)}async init(){await this.client.init()}async list(e,t){let i=t.split("/").filter(Boolean).join("/");if(!i)return(await this.client.listReleases()).map(a=>({name:this.client.releaseName(a),size:a.assets.reduce((c,l)=>c+l.size,0),is_dir:!0,modified:a.updated_at||a.created_at||new Date().toISOString(),sign:a.id,type:1,raw_url:""}));let n=i.split("/")[0];return(await this.client.getRelease(n)).assets.map(o=>({name:o.name,size:o.size,is_dir:!1,modified:o.updated_at||o.created_at||new Date().toISOString(),sign:o.id,type:X(o.name,!1),raw_url:this.client.assetDownloadUrl(o)}))}async get(e,t){let i=t.split("/").filter(Boolean),n=i[i.length-1]||"root",s=i.join("/");if(i.length===1)try{let o=await this.client.getRelease(i[0]);return{name:this.client.releaseName(o),size:o.assets.reduce((a,c)=>a+c.size,0),is_dir:!0,modified:o.updated_at||o.created_at||new Date().toISOString(),sign:o.id,type:1,raw_url:""}}catch{}if(i.length===2){let a=(await this.client.getRelease(i[0])).assets.find(c=>c.name===i[1]);if(a)return{name:a.name,size:a.size,is_dir:!1,modified:a.updated_at||a.created_at||new Date().toISOString(),sign:a.id,type:X(a.name,!1),raw_url:this.client.assetDownloadUrl(a)}}return{name:n,size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:X(n,!1),raw_url:""}}async mkdir(e,t){let i=t.split("/").filter(Boolean);if(i.length===1){await this.client.createRelease(i[0],this.addition.default_branch||"main");return}throw new Error("[CNB Releases] only supports creating releases at root")}async rename(e,t,i){let n=t.split("/").filter(Boolean);if(n.length===1&&!this.addition.use_tag_name){await this.client.renameRelease(n[0],i);return}throw new Error("[CNB Releases] only release name can be renamed")}async remove(e,t,i){let n=t.split("/").filter(Boolean);if(n.length===1){await this.client.deleteRelease(n[0]);return}if(n.length===2){await this.client.deleteAsset(n[0],n[1]);return}throw new Error("[CNB Releases] invalid path")}async move(){throw new Error("[CNB Releases] move not supported")}async copy(){throw new Error("[CNB Releases] copy not supported")}async put(){throw new Error("[CNB Releases] asset upload not supported in stateless environment")}}});var _h,uD=V(()=>{"use strict";_h=class{address;addition;authorization="";constructor(e){this.addition=e,this.address=(e.address||"").replace(/\/+$/,"")}async init(){if(!this.address)throw new Error("[KodBox] address is required");await this.getToken()}async getToken(){let e=new URLSearchParams({name:this.addition.username||"",password:this.addition.password||""}),i=await(await fetch(`${this.address}/?user/index/loginSubmit`,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:e.toString()})).json().catch(()=>({code:!1}));if(i.code===!1)throw new Error(`[KodBox] login failed: ${JSON.stringify(i.data||i)}`);this.authorization=String(i.info||"")}async request(e,t){let i=new URLSearchParams({accessToken:this.authorization,...t}),s=await(await fetch(`${this.address}${e}`,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:i.toString(),redirect:"follow"})).json().catch(()=>({code:!1}));if(s.code==="10001")return await this.getToken(),this.request(e,t);if(s.code===!1)throw new Error(`[KodBox] ${s.data||"request failed"}`);return s}async list(e){let i=(await this.request("/?explorer/list/path",{path:e})).data;return i?[...i.folderList||[],...i.fileList||[]]:[]}downloadUrl(e){return`${this.address}/?explorer/index/fileOut&path=${encodeURIComponent(e)}&download=1&accessToken=${encodeURIComponent(this.authorization)}`}async mkdir(e){await this.request("/?explorer/index/mkdir",{path:e})}async rename(e,t){await this.request("/?explorer/index/pathRename",{path:e,newName:t})}async move(e,t,i){await this.request("/?explorer/index/pathCuteTo",{dataArr:JSON.stringify([{path:e,name:t}]),path:i})}async copy(e,t,i){await this.request("/?explorer/index/pathCopyTo",{dataArr:JSON.stringify([{path:e,name:t}]),path:i})}async remove(e,t){await this.request("/?explorer/index/pathDelete",{dataArr:JSON.stringify([{path:e,name:t}]),shiftDelete:"1"})}async put(e,t,i){let n=new FormData;n.append("accessToken",this.authorization),n.append("path",e),n.append("file",new Blob([i]),t);let o=await(await fetch(`${this.address}/?explorer/upload/fileUpload`,{method:"POST",body:n})).json().catch(()=>({code:!1}));if(o.code===!1)throw new Error(`[KodBox] ${o.data||"upload failed"}`)}}});var Fh,fD=V(()=>{"use strict";Be();uD();Fh=class{client;addition;constructor(e){this.addition=e,this.client=new _h(e)}async init(){await this.client.init()}fullPath(e){let t=(this.addition.root_path||"").replace(/^\/+|\/+$/g,""),i=e.replace(/^\/+/,"");return t?"/"+(i?`${t}/${i}`:t):"/"+i}async list(e,t){return(await this.client.list(this.fullPath(t))).map(n=>({name:n.name,size:n.size||0,is_dir:n.type==="folder",modified:n.modifyTime?new Date(n.modifyTime*1e3).toISOString():new Date().toISOString(),sign:"",type:X(n.name,n.type==="folder"),raw_url:""}))}async get(e,t){let i=this.fullPath(t),n=i.split("/").filter(Boolean),s=n[n.length-1]||"root",o="/"+n.slice(0,-1).join("/");try{let c=(await this.client.list(o==="//"?"/":o)).find(l=>l.name===s);if(c){let l={name:c.name,size:c.size||0,is_dir:c.type==="folder",modified:c.modifyTime?new Date(c.modifyTime*1e3).toISOString():new Date().toISOString(),sign:"",type:X(c.name,c.type==="folder"),raw_url:""};return l.is_dir||(l.raw_url=this.client.downloadUrl(c.path||i)),l}}catch{}try{return await this.client.list(i),{name:s,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""}}catch{return{name:s,size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:0,raw_url:""}}}async mkdir(e,t){await this.client.mkdir(this.fullPath(t))}async rename(e,t,i){await this.client.rename(this.fullPath(t),i)}async remove(e,t,i){let s=this.fullPath(t).split("/").filter(Boolean),o=s[s.length-1],a=i.length?i:[o];for(let c of a){let l=s.length>1?`/${s.slice(0,-1).join("/")}/${c}`:`/${c}`;await this.client.remove(l,c)}}async move(e,t,i,n,s){let a=this.fullPath(n).split("/").filter(Boolean),c=a[a.length-1],l=this.fullPath(t),d=i.length?i:[c];for(let u of d){let f=a.length>1?`/${a.slice(0,-1).join("/")}/${u}`:`/${u}`;await this.client.move(f,u,l)}}async copy(e,t,i,n,s){let a=this.fullPath(n).split("/").filter(Boolean),c=a[a.length-1],l=this.fullPath(t),d=i.length?i:[c];for(let u of d){let f=a.length>1?`/${a.slice(0,-1).join("/")}/${u}`:`/${u}`;await this.client.copy(f,u,l)}}async put(e,t,i){let s=this.fullPath(t).split("/").filter(Boolean),o=s[s.length-1]||"file",a="/"+s.slice(0,-1).join("/");await this.client.put(a==="//"?"/":a,o,i)}}});var Ph,AD=V(()=>{"use strict";Ph=class{endpoint;gateway;mode;constructor(e){this.endpoint=(e.endpoint||"").replace(/\/+$/,""),this.gateway=(e.gateway||"").replace(/\/+$/,""),this.mode=e.mode||"ipfs"}async init(){if(!this.endpoint)throw new Error("[IPFS] endpoint is required");if(!this.gateway)throw new Error("[IPFS] gateway is required")}async post(e,t){let i=new URLSearchParams;for(let s of t)i.append("arg",s);let n=await fetch(`${this.endpoint}/api/v0/${e}?${i.toString()}`,{method:"POST"});if(n.status>=400)throw new Error(`[IPFS] ${n.status} ${await n.text().catch(()=>"")}`);return await n.json().catch(()=>({}))}async ls(e){return this.post("ls",[`/ipfs/${e}`])}async filesStat(e){return this.post("files/stat",[e])}async filesMkdir(e){await this.post("files/mkdir",[e,"parents=true"])}async filesMv(e,t){await this.post("files/mv",[e,t])}async filesCp(e,t){await this.post("files/cp",[e,t])}async filesRm(e){await this.post("files/rm",[e,"recursive=true"])}async add(e,t){let i=new FormData;i.append("file",new Blob([e]),t);let s=await(await fetch(`${this.endpoint}/api/v0/add`,{method:"POST",body:i})).json().catch(()=>({Hash:""}));if(!s.Hash)throw new Error("[IPFS] add failed");return s.Hash}downloadUrl(e,t){return`${this.gateway}/ipfs/${e}?filename=${encodeURIComponent(t)}`}async resolveIpfsPath(e,t){if(t)return`/ipfs/${t}`;let i=e.replace(/^\/+|\/+$/g,"");switch(this.mode){case"ipfs":return`/ipfs/${i}`;case"ipns":return`/ipns/${i}`;case"mfs":return`/ipfs/${(await this.filesStat(i?`/${i}`:"/")).Hash}`;default:throw new Error("[IPFS] invalid mode")}}}});var Th,hD=V(()=>{"use strict";Be();AD();Th=class{client;addition;constructor(e){this.addition=e,this.client=new Ph(e)}async init(){await this.client.init()}isMfs(){return this.addition.mode==="mfs"}fullPath(e){let t=(this.addition.root_path||"").replace(/^\/+|\/+$/g,""),i=e.replace(/^\/+/,"");return t?"/"+(i?`${t}/${i}`:t):"/"+i}async list(e,t){let i=this.fullPath(t),s=(await this.client.resolveIpfsPath(i)).replace(/^\/ipfs\//,"");return((await this.client.ls(s)).Objects?.[0]?.Links||[]).map(c=>({name:c.Name,size:c.Size||0,is_dir:c.Type===1,modified:new Date().toISOString(),sign:c.Hash,type:X(c.Name,c.Type===1),raw_url:""}))}async get(e,t){let i=this.fullPath(t),n=i.split("/").filter(Boolean),s=n[n.length-1]||"root";if(this.isMfs())try{let a=await this.client.filesStat(i),c=a.Type==="directory",l={name:s,size:a.Size||0,is_dir:c,modified:new Date().toISOString(),sign:a.Hash,type:X(s,c),raw_url:""};return c||(l.raw_url=this.client.downloadUrl(a.Hash,s)),l}catch{}let o="/"+n.slice(0,-1).join("/");try{let c=(await this.list(e,o)).find(l=>l.name===s);if(c)return c.is_dir||(c.raw_url=this.client.downloadUrl(c.sign,s)),c}catch{}try{return await this.client.resolveIpfsPath(i),{name:s,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""}}catch{return{name:s,size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:0,raw_url:""}}}async mkdir(e,t){if(!this.isMfs())throw new Error("[IPFS] only write in mfs mode");await this.client.filesMkdir(this.fullPath(t))}async rename(e,t,i){if(!this.isMfs())throw new Error("[IPFS] only write in mfs mode");let n=this.fullPath(t),o="/"+n.split("/").filter(Boolean).slice(0,-1).join("/")+"/"+i;await this.client.filesMv(n,o)}async remove(e,t,i){if(!this.isMfs())throw new Error("[IPFS] only write in mfs mode");await this.client.filesRm(this.fullPath(t))}async move(e,t,i,n,s){if(!this.isMfs())throw new Error("[IPFS] only write in mfs mode");let o=this.fullPath(n),a=this.fullPath(t);await this.client.filesMv(o,a)}async copy(e,t,i,n,s){if(!this.isMfs())throw new Error("[IPFS] only write in mfs mode");let o=this.fullPath(n),c=`/ipfs/${(await this.client.filesStat(o)).Hash}`,l=this.fullPath(t);await this.client.filesCp(c,l)}async put(e,t,i){if(!this.isMfs())throw new Error("[IPFS] only write in mfs mode");let n=this.fullPath(t),s=n.split("/").filter(Boolean),o=s[s.length-1]||"file",a=await this.client.add(i,o);await this.client.filesCp(`/ipfs/${a}`,n)}}});var HH,Uh,gD=V(()=>{"use strict";HH="https://siot-share.lenovo.com.cn",Uh=class{host;shareId;sharePwd;stoken="";expireAt=0;constructor(e){this.host=(e.host||HH).replace(/\/+$/,""),this.shareId=(e.share_id||"").split("/").pop()||"",this.sharePwd=e.share_pwd||""}async init(){if(!this.shareId)throw new Error("[Lenovo NAS Share] share_id is required");await this.getStoken()}async request(e){let i=await(await fetch(e,{method:"GET",headers:{origin:"https://siot-share.lenovo.com.cn",referer:"https://siot-share.lenovo.com.cn/","user-agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) openlist-client",platform:"web","app-version":"3"}})).json().catch(()=>({result:!1}));if(!i.result)throw new Error(`[Lenovo NAS Share] ${i.error?.msg||"request failed"}`);return i.data}async getStoken(){let e=new URLSearchParams({code:this.shareId,password:this.sharePwd}),t=await this.request(`${this.host}/oneproxy/api/share/v1/access?${e.toString()}`);this.stoken=t.stoken||"",this.expireAt=Date.now()+(t.expires_in||3600)*1e3-6e4}async checkStoken(){Date.now()>=this.expireAt&&await this.getStoken()}async list(e){await this.checkStoken();let t=e.startsWith("/")?e:"/"+e,i=new URLSearchParams({code:this.shareId,num:"5000",stoken:this.stoken,path:t});return(await this.request(`${this.host}/oneproxy/api/share/v1/files?${i.toString()}`)).list||[]}async getDownloadUrl(e){await this.checkStoken();let t=new URLSearchParams({code:this.shareId,stoken:this.stoken,path:e.startsWith("/")?e:"/"+e}),n=(await this.request(`${this.host}/oneproxy/api/share/v1/file/link?${t.toString()}`)).param?.dtoken||"";return`${this.host}/oneproxy/api/share/v1/file/download?code=${encodeURIComponent(this.shareId)}&dtoken=${encodeURIComponent(n)}`}downloadHeaders(){return{Referer:"https://siot-share.lenovo.com.cn"}}}});var Rh,pD=V(()=>{"use strict";Be();gD();Rh=class{client;constructor(e){this.client=new Uh(e)}async init(){await this.client.init()}async list(e,t){return(await this.client.list(t)).map(n=>{let s=n.type==="dir";return{name:n.name,size:n.size||0,is_dir:s,modified:n.chtime?new Date(n.chtime*1e3).toISOString():new Date().toISOString(),sign:"",type:X(n.name,s),raw_url:""}})}async get(e,t){let i=t.split("/").filter(Boolean),n=i[i.length-1]||"root",s="/"+i.slice(0,-1).join("/");try{let a=(await this.client.list(s==="//"?"/":s)).find(c=>c.name===n||c.path===t);if(a){let c=a.type==="dir",l={name:a.name,size:a.size||0,is_dir:c,modified:a.chtime?new Date(a.chtime*1e3).toISOString():new Date().toISOString(),sign:"",type:X(a.name,c),raw_url:""};return c||(l.raw_url=await this.client.getDownloadUrl(a.path),l.raw_url_headers=this.client.downloadHeaders()),l}}catch{}try{return await this.client.list(t),{name:n,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""}}catch{return{name:n,size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:0,raw_url:""}}}async mkdir(){throw new Error("[Lenovo NAS Share] read-only storage")}async rename(){throw new Error("[Lenovo NAS Share] read-only storage")}async remove(){throw new Error("[Lenovo NAS Share] read-only storage")}async move(){throw new Error("[Lenovo NAS Share] read-only storage")}async copy(){throw new Error("[Lenovo NAS Share] read-only storage")}async put(){throw new Error("[Lenovo NAS Share] read-only storage")}}});var Nh,mD=V(()=>{"use strict";Nh=class{endpoint;token;constructor(e){this.endpoint=(e.endpoint||"").replace(/\/+$/,""),this.token=e.access_token||""}async init(){if(!this.endpoint)throw new Error("[Misskey] endpoint is required");if(!this.token)throw new Error("[Misskey] access_token is required")}async post(e,t){let i=await fetch(`${this.endpoint}/api/drive${e}`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.token}`},body:JSON.stringify(t||{})});if(i.status>=400)throw new Error(`[Misskey] ${i.status} ${await i.text().catch(()=>"")}`);return await i.json().catch(()=>({}))}async getFiles(e){return this.post("/files",e?{folderId:e}:{})}async getFolders(e){return this.post("/folders",e?{folderId:e}:{})}async showFile(e){return this.post("/files/show",{fileId:e})}async createFolder(e,t){return this.post("/folders/create",{name:e,...t?{parentId:t}:{}})}async updateFolder(e,t){return this.post("/folders/update",{folderId:e,...t})}async updateFile(e,t){return this.post("/files/update",{fileId:e,...t})}async deleteFolder(e){await this.post("/folders/delete",{folderId:e})}async deleteFile(e){await this.post("/files/delete",{fileId:e})}async uploadFromUrl(e,t){return this.post("/files/upload-from-url",{url:e,...t?{folderId:t}:{}})}}});var qh,yD=V(()=>{"use strict";Be();mD();qh=class{client;pathCache=new Map;constructor(e){this.client=new Nh(e)}async init(){await this.client.init()}async list(e,t){let i=await this.resolveFolderId(t),[n,s]=await Promise.all([this.client.getFiles(i),this.client.getFolders(i)]),o=n.map(c=>({name:c.name,size:c.size||0,is_dir:!1,modified:c.createdAt||new Date().toISOString(),sign:c.id,type:X(c.name,!1),raw_url:c.url||"",thumb:c.thumbnailUrl||""}));return[...s.map(c=>({name:c.name,size:0,is_dir:!0,modified:c.createdAt||new Date().toISOString(),sign:c.id,type:1,raw_url:""})),...o]}async get(e,t){let i=t.split("/").filter(Boolean),n=i[i.length-1]||"root",s="/"+i.slice(0,-1).join("/");try{let o=await this.resolveFolderId(s),[a,c]=await Promise.all([this.client.getFiles(o),this.client.getFolders(o)]),l=a.find(u=>u.name===n);if(l)return{name:l.name,size:l.size||0,is_dir:!1,modified:l.createdAt||new Date().toISOString(),sign:l.id,type:X(l.name,!1),raw_url:l.url||"",thumb:l.thumbnailUrl||""};let d=c.find(u=>u.name===n);if(d)return{name:d.name,size:0,is_dir:!0,modified:d.createdAt||new Date().toISOString(),sign:d.id,type:1,raw_url:""}}catch{}try{return await this.resolveFolderId(t),{name:n,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""}}catch{return{name:n,size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:0,raw_url:""}}}async mkdir(e,t){let i=t.split("/").filter(Boolean),n=i.pop()||"new_folder",s="/"+i.join("/"),o=await this.resolveFolderId(s);await this.client.createFolder(n,o),this.pathCache.clear()}async rename(e,t,i){let{id:n,isDir:s}=await this.resolveEntry(t);s?await this.client.updateFolder(n,{name:i}):await this.client.updateFile(n,{name:i}),this.pathCache.clear()}async remove(e,t,i){let{id:n,isDir:s}=await this.resolveEntry(t);s?await this.client.deleteFolder(n):await this.client.deleteFile(n),this.pathCache.clear()}async move(e,t,i,n,s){let{id:o,isDir:a}=await this.resolveEntry(n),c=await this.resolveFolderId(t);a?await this.client.updateFolder(o,{parentId:c}):await this.client.updateFile(o,{folderId:c}),this.pathCache.clear()}async copy(e,t,i,n,s){let{id:o,isDir:a}=await this.resolveEntry(n),c=await this.resolveFolderId(t);if(a)throw new Error("[Misskey] folder copy not supported");let l=await this.client.showFile(o);await this.client.uploadFromUrl(l.url,c),this.pathCache.clear()}async put(e,t,i){throw new Error("[Misskey] Direct put not supported in stateless environment")}async resolveFolderId(e){let t=e.split("/").filter(Boolean).join("/");if(!t)return;if(this.pathCache.has(t))return this.pathCache.get(t);let i=t.split("/"),n;for(let s=0;sl.name===i[s]);if(!a)throw new Error(`[Misskey] Folder '${i[s]}' not found`);n=a.id;let c="/"+i.slice(0,s+1).join("/");this.pathCache.set(c,n)}return n}async resolveEntry(e){let t=e.split("/").filter(Boolean),i=t[t.length-1],n="/"+t.slice(0,-1).join("/"),s=await this.resolveFolderId(n),[o,a]=await Promise.all([this.client.getFiles(s),this.client.getFolders(s)]),c=o.find(d=>d.name===i);if(c)return{id:c.id,isDir:!1};let l=a.find(d=>d.name===i);if(l)return{id:l.id,isDir:!0};throw new Error(`[Misskey] '${i}' not found`)}}});var Yx,ID,KH,GH,zH,JH,Oh,wD=V(()=>{"use strict";Yx="https://www.doubao.com",ID="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",KH=1,GH=6,zH=7,JH={1:"directory",2:"file",3:"link",4:"image",5:"pages",6:"video",7:"audio",8:"meeting_minutes"},Oh=class{cookie;downloadApi;constructor(e){this.cookie=e.cookie||"",this.downloadApi=e.download_api||"get_file_url"}async init(){if(!this.cookie)throw new Error("[Doubao] cookie is required")}async request(e,t={}){let n=await(await fetch(`${Yx}${e}`,{method:"POST",headers:{"Content-Type":"application/json",Cookie:this.cookie,"User-Agent":ID,Origin:Yx,Referer:`${Yx}/`},body:JSON.stringify(t)})).json().catch(()=>({code:-1}));if(n.code!==0){let s=n.message||n.msg||n.error?.message||`code ${n.code}`;throw new Error(`[Doubao] ${s}`)}return n}async getFiles(e){let t=[],i="";do{let n={node_id:e};i?(n.cursor=i,n.size=50):n.need_full_path=!1;let o=(await this.request("/samantha/aispace/node_info",n)).data;o?.children&&t.push(...o.children),i=o?.next_cursor&&o.next_cursor!=="-1"?o.next_cursor:""}while(i);return t}async getDownloadUrl(e){if(this.downloadApi==="get_download_info"){let a=(await this.request("/samantha/aispace/get_download_info",{requests:[{node_id:e.id}]})).data.download_infos?.[0]?.main_url||"";if(!a)throw new Error("[Doubao] empty download url");return a}if(e.node_type===GH||e.node_type===zH){let o=(await this.request("/samantha/media/get_play_info",{key:e.key,node_id:e.id})).data,a=o.original_media_info?.main_url||o.media_info?.[0]?.main_url||"";if(!a)throw new Error("[Doubao] empty download url");return a}let n=(await this.request("/alice/message/get_file_url",{uris:[e.key],type:JH[e.node_type]||"file"})).data.file_urls?.[0]?.main_url||"";if(!n)throw new Error("[Doubao] empty download url");return n}downloadHeaders(){return{"User-Agent":ID}}async mkdir(e,t){await this.request("/samantha/aispace/upload_node",{node_list:[{local_id:crypto.randomUUID(),name:t,parent_id:e,node_type:KH}]})}async rename(e,t){await this.request("/samantha/aispace/rename_node",{node_id:e,node_name:t})}async move(e,t,i){await this.request("/samantha/aispace/move_node",{node_list:[{id:e}],current_parent_id:t,target_parent_id:i})}async remove(e){await this.request("/samantha/aispace/delete_node",{node_list:[{id:e}]})}}});var xD,Mh,CD=V(()=>{"use strict";Be();wD();xD="0",Mh=class{client;pathCache=new Map;constructor(e){this.client=new Oh(e)}async init(){await this.client.init()}fileToItem(e){let t=e.node_type===1;return{name:e.name,size:e.size||0,is_dir:t,modified:e.update_time?new Date(e.update_time*1e3).toISOString():new Date().toISOString(),sign:"",type:X(e.name,t),raw_url:""}}async list(e,t){let i=await this.resolveDirId(t);return(await this.client.getFiles(i)).map(s=>this.fileToItem(s))}async get(e,t){let i=t.split("/").filter(Boolean),n=i[i.length-1]||"root",s="/"+i.slice(0,-1).join("/");try{let o=await this.resolveDirId(s),c=(await this.client.getFiles(o)).find(l=>l.name===n);if(c){let l=this.fileToItem(c);if(!l.is_dir)try{l.raw_url=await this.client.getDownloadUrl(c),l.raw_url_headers=this.client.downloadHeaders()}catch(d){l.raw_url_error=d.message}return l}}catch{}try{return await this.resolveDirId(t),{name:n,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""}}catch{return{name:n,size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:0,raw_url:""}}}async mkdir(e,t){let i=t.split("/").filter(Boolean),n=i.pop()||"new_folder",s="/"+i.join("/"),o=await this.resolveDirId(s);await this.client.mkdir(o,n),this.pathCache.clear()}async rename(e,t,i){let n=await this.resolveDirId(t);await this.client.rename(n,i),this.pathCache.clear()}async remove(e,t,i){let n=await this.resolveDirId(t);await this.client.remove(n),this.pathCache.clear()}async move(e,t,i,n,s){let o=await this.resolveEntry(n),a=await this.resolveDirId(t);await this.client.move(o.id,o.parentId,a),this.pathCache.clear()}async copy(){throw new Error("[Doubao] copy not supported")}async put(){throw new Error("[Doubao] upload not supported in stateless environment")}async resolveDirId(e){let t=e.split("/").filter(Boolean).join("/");if(!t)return xD;if(this.pathCache.has(t))return this.pathCache.get(t);let i=t.split("/"),n=xD;for(let s=0;sl.node_type===1&&l.name===i[s]);if(!a)throw new Error(`[Doubao] Directory '${i[s]}' not found`);n=a.id;let c="/"+i.slice(0,s+1).join("/");this.pathCache.set(c,n)}return n}async resolveEntry(e){let t=e.split("/").filter(Boolean),i=t[t.length-1],n="/"+t.slice(0,-1).join("/"),s=await this.resolveDirId(n),a=(await this.client.getFiles(s)).find(c=>c.name===i);if(!a)throw new Error(`[Doubao] '${i}' not found`);return{id:a.id,parentId:a.parent_id||s,isDir:a.node_type===1}}}});async function VH(r){let e=await crypto.subtle.digest("SHA-256",new TextEncoder().encode(r));return Array.from(new Uint8Array(e)).map(t=>t.toString(16).padStart(2,"0")).join("")}var jH,$H,Lh,ED=V(()=>{"use strict";jH="https://open-api-drive.quark.cn",$H="go-resty/3.0.0-beta.1 (https://resty.dev)";Lh=class{addition;accessToken;refreshToken;appId;signKey;constructor(e){this.addition=e,this.accessToken=e.access_token||"",this.refreshToken=e.refresh_token||"",this.appId=e.app_id||"",this.signKey=e.sign_key||""}async init(){if(!this.refreshToken)throw new Error("[QuarkOpen] refresh_token is required")}async generateSign(e,t){let i=String(Date.now()),n=`${e}&${t}&${i}&${this.signKey}`,s=await VH(n),o=typeof crypto.randomUUID=="function"?crypto.randomUUID():`${Math.random().toString(36).slice(2)}${Date.now().toString(36)}`;return{tm:i,token:s,reqId:o}}async request(e,t,i){let{tm:n,token:s,reqId:o}=await this.generateSign(t,e),a=new URLSearchParams({req_id:o,access_token:this.accessToken}),c={Accept:"application/json, text/plain, */*","User-Agent":$H,"x-pan-tm":n,"x-pan-token":s,"x-pan-client-id":this.appId},l={method:t,headers:c};i!==void 0&&(l.body=JSON.stringify(i),c["Content-Type"]="application/json");let u=await(await fetch(`${jH}${e}?${a.toString()}`,l)).json().catch(()=>({status:-1,errno:-1}));if(u.status===-1&&(u.errno===11001||u.errno===14001&&(u.error_info||"").includes("access_token")))return await this.refreshAccessToken(),this.request(e,t,i);if(u.status>=400||u.errno!==0)throw new Error(`[QuarkOpen] ${u.error_info||`errno ${u.errno}`}`);return u}async refreshAccessToken(){let e=this.addition.api_url_address||"https://api.oplist.org/quarkyun/renewapi",t=new URLSearchParams({refresh_ui:this.refreshToken,server_use:"true",driver_txt:"quarkyun_oa"}),n=await(await fetch(`${e}?${t.toString()}`)).json().catch(()=>({}));if(!n.refresh_token||!n.access_token)throw new Error(`[QuarkOpen] refresh token failed: ${n.text||"empty token"}`);this.refreshToken=n.refresh_token,this.accessToken=n.access_token,n.app_id&&(this.appId=n.app_id),n.sign_key&&(this.signKey=n.sign_key),this.addition.refresh_token=n.refresh_token,this.addition.access_token=n.access_token}async getFiles(e){let t=[],i;do{let n={parent_fid:e,size:100,sort:this.addition.order_by&&this.addition.order_by!=="none"?`${this.addition.order_by}:${this.addition.order_direction||"asc"}`:"file_name:asc"};i?.token&&(n.query_cursor=i);let o=(await this.request("/open/v1/file/list","POST",n)).data;if(o?.file_list&&t.push(...o.file_list),o?.last_page)break;i=o?.next_query_cursor}while(i?.token);return t}async getDownloadUrl(e){let i=(await this.request("/open/v1/file/get_download_url","POST",{fid:e})).data;if(!i.download_url)throw new Error("[QuarkOpen] empty download url");return i.download_url}downloadCookie(){return`x_pan_client_id=${this.appId}; x_pan_access_token=${this.accessToken}`}async mkdir(e,t){await this.request("/open/v1/dir","POST",{dir_path:t,pdir_fid:e})}async rename(e,t){await this.request("/open/v1/file/rename","POST",{fid:e,file_name:t,conflict_mode:"REUSE"})}async move(e,t){await this.request("/open/v1/file/move","POST",{action_type:1,fid_list:[e],to_pdir_fid:t})}async remove(e){await this.request("/open/v1/file/delete","POST",{action_type:1,fid_list:[e]})}}});var BD,Hh,bD=V(()=>{"use strict";Be();ED();BD="0",Hh=class{client;pathCache=new Map;constructor(e){this.client=new Lh(e)}async init(){await this.client.init()}fileToItem(e){let t=e.file_type==="0";return{name:e.filename,size:e.size||0,is_dir:t,modified:e.updated_at?new Date(e.updated_at).toISOString():new Date().toISOString(),sign:"",type:X(e.filename,t),thumb:e.thumbnail_url||"",raw_url:""}}async list(e,t){let i=await this.resolveDirId(t);return(await this.client.getFiles(i)).map(s=>this.fileToItem(s))}async get(e,t){let i=t.split("/").filter(Boolean),n=i[i.length-1]||"root",s="/"+i.slice(0,-1).join("/");try{let o=await this.resolveDirId(s),c=(await this.client.getFiles(o)).find(l=>l.filename===n);if(c){let l=this.fileToItem(c);if(!l.is_dir)try{l.raw_url=await this.client.getDownloadUrl(c.fid),l.raw_url_headers={Cookie:this.client.downloadCookie()}}catch(d){l.raw_url_error=d.message}return l}}catch{}try{return await this.resolveDirId(t),{name:n,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""}}catch{return{name:n,size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:0,raw_url:""}}}async mkdir(e,t){let i=t.split("/").filter(Boolean),n=i.pop()||"new_folder",s="/"+i.join("/"),o=await this.resolveDirId(s);await this.client.mkdir(o,n),this.pathCache.clear()}async rename(e,t,i){let n=await this.resolveDirId(t);await this.client.rename(n,i),this.pathCache.clear()}async remove(e,t,i){let n=await this.resolveDirId(t);await this.client.remove(n),this.pathCache.clear()}async move(e,t,i,n,s){let o=await this.resolveDirId(n),a=await this.resolveDirId(t);await this.client.move(o,a),this.pathCache.clear()}async copy(){throw new Error("[QuarkOpen] copy not supported")}async put(){throw new Error("[QuarkOpen] upload not supported in stateless environment")}async resolveDirId(e){let t=e.split("/").filter(Boolean).join("/");if(!t)return BD;if(this.pathCache.has(t))return this.pathCache.get(t);let i=t.split("/"),n=BD;for(let s=0;sl.file_type==="0"&&l.filename===i[s]);if(!a)throw new Error(`[QuarkOpen] Directory '${i[s]}' not found`);n=a.fid;let c="/"+i.slice(0,s+1).join("/");this.pathCache.set(c,n)}return n}}});var YH,WH,XH,ZH,eK,tK,rK,iK,nK,sK,Kh,vD=V(()=>{"use strict";ni();YH="Mozilla/5.0 (Linux; U; Android 13; zh-cn; M2004J7AC Build/UKQ1.231108.001) AppleWebKit/533.1 (KHTML, like Gecko) Mobile Safari/533.1",WH="Xiaomi",XH="tv",ZH="M2004J7AC",eK="M2004J7AC",tK="M2004J7AC",rK="M2004J7AC",iK="Adreno (TM) 550",nK="{}",sK={quark:{api:"https://open-api-drive.quark.cn",clientID:"d3194e61504e493eb6222857bccfed94",signKey:"kw2dvtd7p4t3pjl2d9ed9yc8yej8kw2d",appVer:"1.8.2.2",channel:"GENERAL",codeApi:"http://api.extscreen.com/quarkdrive"},uc:{api:"https://open-api-drive.uc.cn",clientID:"5acf882d27b74502b7040b0c65519aa7",signKey:"l3srvtd7p42l0d0x1u8d7yc8ye9kki4d",appVer:"1.7.2.2",channel:"UCTVOFFICIALWEB",codeApi:"http://api.extscreen.com/ucdrive"}},Kh=class{conf;addition;accessToken="";deviceId;constructor(e){this.addition=e,this.conf=sK[e.variant||"quark"],this.deviceId=e.device_id||$t(String(Date.now())),this.addition.device_id=this.deviceId}async init(){if(!this.addition.refresh_token)throw new Error("[QuarkTV] refresh_token is required");await this.refreshToken()}async generateSign(e,t){let i=String(Date.now()),n=$t(this.deviceId+i),s=await Mv(`${e}&${t}&${i}&${this.conf.signKey}`);return{tm:i,token:s,reqId:n}}deviceQuery(){return{app_ver:this.conf.appVer,device_id:this.deviceId,device_brand:WH,platform:XH,device_name:ZH,device_model:eK,build_device:tK,build_product:rK,device_gpu:iK,activity_rect:nK,channel:this.conf.channel}}async request(e,t,i={}){let{tm:n,token:s,reqId:o}=await this.generateSign(t,e),a=new URLSearchParams({req_id:o,access_token:this.accessToken,...this.deviceQuery(),...i}),l=await(await fetch(`${this.conf.api}${e}?${a.toString()}`,{method:t,headers:{Accept:"application/json, text/plain, */*","User-Agent":YH,"x-pan-tm":n,"x-pan-token":s,"x-pan-client-id":this.conf.clientID}})).json().catch(()=>({status:-1,errno:-1})),d=(l.error_info||"").toLowerCase();if(l.status===-1&&(l.errno===10001||l.errno===11001)||d.includes("access token")||d.includes("access_token")||d.includes("token\u65E0\u6548")||d.includes("token \u65E0\u6548"))return await this.refreshToken(),this.request(e,t,i);if(l.status>=400||l.errno!==0)throw new Error(`[QuarkTV] ${l.error_info||`errno ${l.errno}`}`);return l}async refreshToken(){let e="/token",{reqId:t}=await this.generateSign("POST",e),i={req_id:t,...this.deviceQuery()};this.accessToken?i.refresh_token=this.addition.refresh_token:i.refresh_token=this.addition.refresh_token;let s=await(await fetch(`${this.conf.codeApi}${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(i)})).json().catch(()=>({}));if(s?.code!==200)throw new Error(`[QuarkTV] ${s?.message||"token refresh failed"}`);let o=s.data||{};if(!o.access_token)throw new Error("[QuarkTV] refresh token empty");this.accessToken=o.access_token,o.refresh_token&&(this.addition.refresh_token=o.refresh_token)}async getFiles(e){let t=[],i=0,n=100,s=this.addition.order_direction==="asc"?"0":"1",o=this.addition.order_by==="file_name"?"1":"3";for(;;){let c=(await this.request("/file","GET",{method:"list",parent_fid:e,order_by:o,desc:s,category:"",source:"",ex_source:"",list_all:"0",page_size:String(n),page_index:String(i)})).data;c?.files&&t.push(...c.files);let l=c?.total_count||0;if(i*n>=l)break;i++}return t}async getDownloadUrl(e){if(this.addition.link_method==="streaming"){let o=(await this.request("/file","GET",{method:"streaming",group_by:"source",fid:e,resolution:"low,normal,high,super,2k,4k",support:"dolby_vision"})).data?.video_info?.find(a=>a.url)?.url||"";if(!o)throw new Error("[QuarkTV] no streaming link found");return o}let i=(await this.request("/file","GET",{method:"download",group_by:"source",fid:e,resolution:"low,normal,high,super,2k,4k",support:"dolby_vision"})).data;if(!i?.download_url)throw new Error("[QuarkTV] empty download url");return i.download_url}}});var kD,Gh,SD=V(()=>{"use strict";Be();vD();kD="0",Gh=class{client;pathCache=new Map;constructor(e){this.client=new Kh(e)}async init(){await this.client.init()}fileToItem(e){let t=e.isdir===1;return{name:e.filename,size:e.size||0,is_dir:t,modified:e.updated_at?new Date(e.updated_at).toISOString():new Date().toISOString(),sign:"",type:X(e.filename,t),thumb:e.thumbnail_url||"",raw_url:""}}async list(e,t){let i=await this.resolveDirId(t);return(await this.client.getFiles(i)).map(s=>this.fileToItem(s))}async get(e,t){let i=t.split("/").filter(Boolean),n=i[i.length-1]||"root",s="/"+i.slice(0,-1).join("/");try{let o=await this.resolveDirId(s),c=(await this.client.getFiles(o)).find(l=>l.filename===n);if(c){let l=this.fileToItem(c);if(!l.is_dir)try{l.raw_url=await this.client.getDownloadUrl(c.fid)}catch(d){l.raw_url_error=d.message}return l}}catch{}try{return await this.resolveDirId(t),{name:n,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""}}catch{return{name:n,size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:0,raw_url:""}}}async mkdir(){throw new Error("[QuarkTV] read-only storage")}async rename(){throw new Error("[QuarkTV] read-only storage")}async remove(){throw new Error("[QuarkTV] read-only storage")}async move(){throw new Error("[QuarkTV] read-only storage")}async copy(){throw new Error("[QuarkTV] read-only storage")}async put(){throw new Error("[QuarkTV] read-only storage")}async resolveDirId(e){let t=e.split("/").filter(Boolean).join("/");if(!t)return kD;if(this.pathCache.has(t))return this.pathCache.get(t);let i=t.split("/"),n=kD;for(let s=0;sl.isdir===1&&l.filename===i[s]);if(!a)throw new Error(`[QuarkTV] Directory '${i[s]}' not found`);n=a.fid;let c="/"+i.slice(0,s+1).join("/");this.pathCache.set(c,n)}return n}}});var ac,zh,DD=V(()=>{"use strict";ac="https://open-api.123pan.com",zh=class{addition;accessToken="";constructor(e){this.addition=e,this.accessToken=e.access_token||""}async init(){this.accessToken||await this.getAccessToken()}async getAccessToken(){if(this.addition.use_online_api!==!1&&this.addition.refresh_token&&this.addition.api_url_address){let e=new URLSearchParams({refresh_ui:this.addition.refresh_token,server_use:"true",driver_txt:"123cloud_oa"}),i=await(await fetch(`${this.addition.api_url_address}?${e.toString()}`)).json().catch(()=>({}));if(i.access_token&&i.refresh_token){this.accessToken=i.access_token,this.addition.access_token=i.access_token,this.addition.refresh_token=i.refresh_token;return}let n=i.error_description||i.text||i.message||i.error;if(n)throw new Error(`[123Open] ${n}`)}if(this.addition.client_id&&this.addition.client_secret){let t=await(await fetch(`${ac}/api/v1/access_token`,{method:"POST",headers:{platform:"open_platform","Content-Type":"application/json"},body:JSON.stringify({clientID:this.addition.client_id,clientSecret:this.addition.client_secret})})).json().catch(()=>({code:-1}));if(t.code!==0)throw new Error(`[123Open] ${t.message}`);if(!t.data?.access_token)throw new Error("[123Open] empty access token");this.accessToken=t.data.access_token,this.addition.access_token=this.accessToken;return}throw new Error("[123Open] no valid authentication method (access_token / refresh_token / client_id+client_secret)")}async request(e,t,i){let n={Authorization:`Bearer ${this.accessToken}`,platform:"open_platform","Content-Type":"application/json"},s={method:t,headers:n};i!==void 0&&(s.body=JSON.stringify(i));let a=await(await fetch(e,s)).json().catch(()=>({code:-1}));return a.code===401?(await this.getAccessToken(),this.request(e,t,i)):a}async getFiles(e){let t=[],i=0;do{let n=new URLSearchParams({parentFileId:e,limit:"100",lastFileId:String(i),trashed:"false",searchMode:"",searchData:""}),s=await this.request(`${ac}/api/v2/file/list?${n.toString()}`,"GET");if(s.code!==0)throw new Error(`[123Open] ${s.message}`);let o=s.data,a=(o.file_list||[]).filter(c=>(c.trashed??0)===0);t.push(...a),i=o.last_file_id??-1}while(i!==-1);return t}async getDownloadUrl(e){let t=new URLSearchParams({fileId:String(e)}),i=await this.request(`${ac}/api/v1/file/download_info?${t.toString()}`,"GET");if(i.code!==0)throw new Error(`[123Open] ${i.message}`);let n=i.data?.download_url||"";if(!n)throw new Error("[123Open] empty download url");return n}async mkdir(e,t){let i=await this.request(`${ac}/upload/v1/file/mkdir`,"POST",{parentID:e,name:t});if(i.code!==0)throw new Error(`[123Open] ${i.message}`)}async move(e,t){let i=await this.request(`${ac}/api/v1/file/move`,"POST",{fileIDs:[e],toParentFileID:t});if(i.code!==0)throw new Error(`[123Open] ${i.message}`)}async rename(e,t){let i=await this.request(`${ac}/api/v1/file/name`,"PUT",{fileId:e,fileName:t});if(i.code!==0)throw new Error(`[123Open] ${i.message}`)}async remove(e){let t=await this.request(`${ac}/api/v1/file/trash`,"POST",{fileIDs:[e]});if(t.code!==0)throw new Error(`[123Open] ${t.message}`)}}});function oK(r){if(!r)return new Date().toISOString();let e=new Date(r.replace(" ","T")+"+08:00");return isNaN(e.getTime())?new Date().toISOString():e.toISOString()}var QD,Jh,_D=V(()=>{"use strict";Be();DD();QD="0";Jh=class{client;pathCache=new Map;constructor(e){this.client=new zh(e)}async init(){await this.client.init()}fileToItem(e){let t=e.type===1;return{name:e.filename,size:e.size||0,is_dir:t,modified:oK(e.update_at),sign:"",type:X(e.filename,t),raw_url:""}}async list(e,t){let i=await this.resolveDirId(t);return(await this.client.getFiles(i)).map(s=>this.fileToItem(s))}async get(e,t){let i=t.split("/").filter(Boolean),n=i[i.length-1]||"root",s="/"+i.slice(0,-1).join("/");try{let o=await this.resolveDirId(s),c=(await this.client.getFiles(o)).find(l=>l.filename===n);if(c){let l=this.fileToItem(c);if(!l.is_dir)try{l.raw_url=await this.client.getDownloadUrl(c.fileId)}catch(d){l.raw_url_error=d.message}return l}}catch{}try{return await this.resolveDirId(t),{name:n,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""}}catch{return{name:n,size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:0,raw_url:""}}}async mkdir(e,t){let i=t.split("/").filter(Boolean),n=i.pop()||"new_folder",s="/"+i.join("/"),o=await this.resolveDirId(s);await this.client.mkdir(o,n),this.pathCache.clear()}async rename(e,t,i){let n=await this.resolveEntry(t);await this.client.rename(n.id,i),this.pathCache.clear()}async remove(e,t,i){let n=await this.resolveEntry(t);await this.client.remove(n.id),this.pathCache.clear()}async move(e,t,i,n,s){let o=await this.resolveEntry(n),a=await this.resolveDirId(t);await this.client.move(o.id,a),this.pathCache.clear()}async copy(){throw new Error("[123Open] copy not supported")}async put(){throw new Error("[123Open] upload not supported in stateless environment")}async resolveDirId(e){let t=e.split("/").filter(Boolean).join("/");if(!t)return QD;if(this.pathCache.has(t))return this.pathCache.get(t);let i=t.split("/"),n=QD;for(let s=0;sl.type===1&&l.filename===i[s]);if(!a)throw new Error(`[123Open] Directory '${i[s]}' not found`);n=String(a.fileId);let c="/"+i.slice(0,s+1).join("/");this.pathCache.set(c,n)}return n}async resolveEntry(e){let t=e.split("/").filter(Boolean),i=t[t.length-1],n="/"+t.slice(0,-1).join("/"),s=await this.resolveDirId(n),a=(await this.client.getFiles(s)).find(c=>c.filename===i);if(!a)throw new Error(`[123Open] '${i}' not found`);return{id:a.fileId,isDir:a.type===1}}}});var jh,FD=V(()=>{"use strict";jh=class{addition;baseUrl;constructor(e){this.addition=e,this.baseUrl=e.region==="international"?"https://us.teambition.com":"https://www.teambition.com"}async init(){if(!this.addition.cookie)throw new Error("[Teambition] cookie is required");if(!this.addition.project_id)throw new Error("[Teambition] project_id is required");let e=await fetch(`${this.baseUrl}/api/v2/roles`,{headers:{Cookie:this.addition.cookie}});if(e.status>=400)throw new Error(`[Teambition] init failed: HTTP ${e.status}`)}async request(e,t,i,n){let s=n?"?"+new URLSearchParams(n).toString():"",o={Cookie:this.addition.cookie},a={method:t,headers:o};i!==void 0&&(a.body=JSON.stringify(i),o["Content-Type"]="application/json");let c=await fetch(`${this.baseUrl}${e}${s}`,a);if(c.status===204||c.status===201)return{};let l=await c.json().catch(()=>({}));if(l.name||l.message)throw new Error(`[Teambition] ${l.message||l.name}`);return l}async getFiles(e){let t=`${this.addition.order_by||"fileName"}${this.addition.order_direction||"Asc"}`,i={_parentId:e,_projectId:this.addition.project_id,order:t,count:"50"},n=[],s=1;for(;;){let a=await this.request("/api/collections","GET",void 0,{...i,page:String(s)});if(!Array.isArray(a)||a.length===0||(n.push(...a.filter(c=>c.title)),s++,a.length<50))break}let o=[];for(s=1;;){let a=await this.request("/api/works","GET",void 0,{...i,page:String(s)});if(!Array.isArray(a)||a.length===0||(o.push(...a),s++,a.length<50))break}return{folders:n,works:o}}async resolveDownloadUrl(e){let t=await fetch(e,{headers:{Cookie:this.addition.cookie},redirect:"manual"});if(t.status===302){let i=t.headers.get("location");if(i)return i}return e}async mkdir(e,t){await this.request("/api/collections","POST",{objectType:"collection",_projectId:this.addition.project_id,_creatorId:"",created:"",updated:"",title:t,color:"blue",description:"",workCount:0,collectionType:"",recentWorks:[],_parentId:e,subCount:null})}async move(e,t,i){let n=i?"/api/collections/":"/api/works/";await this.request(`${n}${e}/move`,"PUT",{_parentId:t})}async rename(e,t,i){i?await this.request(`/api/collections/${e}`,"PUT",{title:t}):await this.request(`/api/works/${e}`,"PUT",{fileName:t})}async copy(e,t,i){let n=i?"/api/collections/":"/api/works/";await this.request(`${n}${e}/fork`,"PUT",{_parentId:t})}async remove(e,t){let i=t?"/api/collections/":"/api/works/";await this.request(`${i}${e}/archive`,"POST")}}});var $h,PD=V(()=>{"use strict";Be();FD();$h=class{client;pathCache=new Map;constructor(e){this.client=new jh(e)}async init(){await this.client.init()}async list(e,t){let i=await this.pathToId(t),{folders:n,works:s}=await this.client.getFiles(i),o=n.map(c=>({name:c.title,size:0,is_dir:!0,modified:c.updated||new Date().toISOString(),sign:c._id,type:1,raw_url:""})),a=s.map(c=>({name:c.fileName,size:c.fileSize||0,is_dir:!1,modified:c.updated||new Date().toISOString(),sign:c._id,type:X(c.fileName,!1),thumb:c.thumbnail||c.thumbnailUrl||"",raw_url:c.downloadUrl||""}));return[...o,...a]}async get(e,t){let i=t.split("/").filter(Boolean),n=i[i.length-1]||"root",s="/"+i.slice(0,-1).join("/");try{let o=await this.pathToId(s),{folders:a,works:c}=await this.client.getFiles(o),l=a.find(u=>u.title===n);if(l)return{name:l.title,size:0,is_dir:!0,modified:l.updated||new Date().toISOString(),sign:l._id,type:1,raw_url:""};let d=c.find(u=>u.fileName===n);if(d){let u=d.downloadUrl||"";if(u)try{u=await this.client.resolveDownloadUrl(u)}catch{}return{name:d.fileName,size:d.fileSize||0,is_dir:!1,modified:d.updated||new Date().toISOString(),sign:d._id,type:X(d.fileName,!1),thumb:d.thumbnail||d.thumbnailUrl||"",raw_url:u}}}catch{}try{return await this.client.getFiles(await this.pathToId(t)),{name:n,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""}}catch{return{name:n,size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:0,raw_url:""}}}async mkdir(e,t){let i=t.split("/").filter(Boolean),n=i.pop()||"new_folder",s="/"+i.join("/");await this.client.mkdir(await this.pathToId(s),n),this.pathCache.clear()}async rename(e,t,i){let n=await this.resolveEntry(t);await this.client.rename(n.id,i,n.isDir),this.pathCache.clear()}async remove(e,t,i){let n=await this.resolveEntry(t);await this.client.remove(n.id,n.isDir),this.pathCache.clear()}async move(e,t,i,n,s){let o=await this.resolveEntry(n);await this.client.move(o.id,await this.pathToId(t),o.isDir),this.pathCache.clear()}async copy(e,t,i,n,s){let o=await this.resolveEntry(n);await this.client.copy(o.id,await this.pathToId(t),o.isDir),this.pathCache.clear()}async put(){throw new Error("[Teambition] upload not supported in stateless environment")}async resolveEntry(e){let t=e.split("/").filter(Boolean),i=t[t.length-1],n="/"+t.slice(0,-1).join("/"),s=await this.pathToId(n),{folders:o,works:a}=await this.client.getFiles(s),c=o.find(d=>d.title===i);if(c)return{id:c._id,isDir:!0};let l=a.find(d=>d.fileName===i);if(l)return{id:l._id,isDir:!1};throw new Error(`[Teambition] '${i}' not found`)}async pathToId(e){let t=e.split("/").filter(Boolean).join("/");if(!t)return"";if(this.pathCache.has(t))return this.pathCache.get(t);let i=t.split("/"),n="";for(let s=0;sl.title===i[s]);if(!a)throw new Error(`[Teambition] Directory '${i[s]}' not found`);n=a._id;let c="/"+i.slice(0,s+1).join("/");this.pathCache.set(c,n)}return n}}});var TD,Wx,aK,UD,RD,Vh,ND=V(()=>{"use strict";ni();TD="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) quark-cloud-drive/2.5.20 Chrome/100.0.4896.160 Electron/18.3.5.4-b478491100 Safari/537.36 Channel/pckk_other_ch",Wx="https://chaoxing.com/",aK="https://groupweb.chaoxing.com",UD="https://noteyd.chaoxing.com",RD="u2oh6Vu^HWe4_AES",Vh=class{addition;cookie;persistCookie;constructor(e,t){this.addition=e,this.cookie=e.cookie||"",this.persistCookie=t}async init(){if(!this.addition.bbsid)throw new Error("[ChaoXing] bbsid is required");this.cookie||(this.cookie=await this.login(),this.persistCookie&&await this.persistCookie(this.cookie))}getCookie(){return this.cookie}downloadHeaders(){return{Cookie:this.cookie,Referer:Wx,"User-Agent":TD}}async login(){let e=await lx(this.addition.user_name,RD),t=await lx(this.addition.password,RD),i=new FormData;i.append("uname",e),i.append("password",t),i.append("t","true");let n=await fetch("https://passport2.chaoxing.com/fanyalogin",{method:"POST",body:i}),s=[],o=typeof n.headers.getSetCookie=="function"?n.headers.getSetCookie():[];if(Array.isArray(o)&&o.length>0)for(let a of o)a&&s.push(a.split(";")[0]);else{let a=n.headers.get("set-cookie");a&&s.push(a.split(";")[0])}if(s.length===0)throw new Error("[ChaoXing] login failed: no cookie returned");return s.join("; ")}async request(e,t,i,n){let s=i?"?"+new URLSearchParams(i).toString():"",o={Cookie:this.cookie,Accept:"application/json, text/plain, */*",Referer:Wx,...n},a=await fetch(`${aK}${e}${s}`,{method:t,headers:o});if(a.status>=400)throw new Error(`[ChaoXing] request failed: HTTP ${a.status}`);return await a.json()}async requestDownload(e,t){let i={Cookie:this.cookie,Accept:"application/json, text/plain, */*",Referer:Wx,"User-Agent":TD},n=await fetch(`${UD}${e}`,{method:t,headers:i});if(n.status>=400)throw new Error(`[ChaoXing] download request failed: HTTP ${n.status}`);return await n.json()}async getFiles(e){let t=[],i=await this.request("/pc/resource/getResourceList","GET",{bbsid:this.addition.bbsid,folderId:e,recType:"1"});if(i.result!==1)throw new Error(`[ChaoXing] list failed: result=${i.result}`);i.list&&i.list.length>0&&t.push(...i.list);let n=await this.request("/pc/resource/getResourceList","GET",{bbsid:this.addition.bbsid,folderId:e,recType:"2"});for(let s of n.list||[])s.content.fileId||(s.content.fileId=s.content.objectId||""),t.push(s);return t}async link(e){let t=await this.requestDownload("/screen/note_note/files/status/"+e,"POST");if(!t.download)throw new Error(`[ChaoXing] link failed: ${t.msg||"no download url"}`);return t}async mkdir(e,t){let i=await this.request("/pc/resource/addResourceFolder","GET",{bbsid:this.addition.bbsid,name:t,pid:e});if(i.result!==1)throw new Error(`[ChaoXing] mkdir failed: ${i.msg}`)}async move(e,t,i){let n=i?{bbsid:this.addition.bbsid,folderIds:e,targetId:t}:{bbsid:this.addition.bbsid,recIds:e,targetId:t},s=await this.request("/pc/resource/moveResource","GET",n);if(!s.status)throw new Error(`[ChaoXing] move failed: ${s.msg}`)}async renameFolder(e,t){let i=await this.request("/pc/resource/updateResourceFolderName","GET",{bbsid:this.addition.bbsid,folderId:e,name:t});if(i.result!==1)throw new Error(`[ChaoXing] rename failed: ${i.msg}`)}async remove(e,t){let i=t?"/pc/resource/deleteResourceFolder":"/pc/resource/deleteResourceFile",n=t?{bbsid:this.addition.bbsid,folderIds:e}:{bbsid:this.addition.bbsid,recIds:e},s=await this.request(i,"GET",n);if(s.result!==1)throw new Error(`[ChaoXing] remove failed: ${s.msg}`)}async upload(e,t,i){let s=await(await fetch(`${UD}/pc/files/getUploadConfig`,{method:"GET"})).json();if(s.result!==1||!s.msg?.token)throw new Error("[ChaoXing] get upload config failed");let o=new FormData,a=i.buffer.slice(i.byteOffset,i.byteOffset+i.byteLength);o.append("file",new Blob([a]),t),o.append("_token",s.msg.token),o.append("puid",String(s.msg.puid||""));let l=await(await fetch("https://pan-yz.chaoxing.com/upload",{method:"POST",body:o})).json();if(l.msg!=="success"||!l.objectId)throw new Error(`[ChaoXing] upload failed: ${l.msg}`);let d={cataid:"100000019",key:l.objectId,param:l.data||{}},u=JSON.stringify(d),f=await this.request("/pc/resource/addResource","GET",{bbsid:this.addition.bbsid,pid:e,type:"yunpan",params:encodeURIComponent("["+u+"]")});if(f.result!==1)throw new Error(`[ChaoXing] add resource failed: ${f.msg}`)}}});function qD(r){let e=r.content;if(e.folderName)return{name:e.folderName,size:0,is_dir:!0,modified:r.inserttime?new Date(r.inserttime).toISOString():new Date().toISOString(),sign:String(r.id),type:1};let t=e.fileId||e.objectId||"";return{name:e.name||"",size:Number(e.size)||0,is_dir:!1,modified:e.uploadDate?new Date(e.uploadDate).toISOString():new Date().toISOString(),sign:`${r.id}$${t}`,type:X(e.name||"",!1),raw_url:""}}var Yh,OD=V(()=>{"use strict";Be();ND();Yh=class{client;pathCache=new Map;constructor(e,t){this.client=new Vh(e,t)}async init(){await this.client.init()}async list(e,t){let i=await this.pathToId(t);return(await this.client.getFiles(i)).map(s=>qD(s))}async get(e,t){let i=t.split("/").filter(Boolean),n=i[i.length-1]||"root",s="/"+i.slice(0,-1).join("/");try{let o=await this.pathToId(s),c=(await this.client.getFiles(o)).find(l=>(l.content.folderName||l.content.name)===n);if(c){let l=qD(c);if(!l.is_dir){let d=l.sign.split("$")[1]||"";if(d)try{let u=await this.client.link(d);l.raw_url=u.download,l.raw_url_headers=this.client.downloadHeaders()}catch{l.raw_url_error="[ChaoXing] failed to resolve download url"}}return l}}catch{}try{let o=await this.pathToId(t);return{name:n,size:0,is_dir:!0,modified:new Date().toISOString(),sign:o,type:1,raw_url:""}}catch{return{name:n,size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:0,raw_url:""}}}async mkdir(e,t){let i=t.split("/").filter(Boolean),n=i.pop()||"new_folder",s="/"+i.join("/");await this.client.mkdir(await this.pathToId(s),n),this.pathCache.clear()}async rename(e,t,i){let n=await this.resolveEntry(t);if(!n.isDir)throw new Error("[ChaoXing] \u6B64\u7F51\u76D8\u4E0D\u652F\u6301\u4FEE\u6539\u6587\u4EF6\u540D");await this.client.renameFolder(n.id,i),this.pathCache.clear()}async remove(e,t,i){let n=await this.resolveEntry(t);await this.client.remove(n.id,n.isDir),this.pathCache.clear()}async move(e,t,i,n,s){let o=await this.resolveEntry(n);await this.client.move(o.id,await this.pathToId(t),o.isDir),this.pathCache.clear()}async copy(){throw new Error("[ChaoXing] copy not supported")}async put(e,t,i){let n=t.split("/").filter(Boolean),s=n.pop()||"file",o="/"+n.join("/"),a=await this.pathToId(o);await this.client.upload(a,s,new Uint8Array(i)),this.pathCache.clear()}async resolveEntry(e){let t=e.split("/").filter(Boolean),i=t[t.length-1],n="/"+t.slice(0,-1).join("/"),s=await this.pathToId(n),a=(await this.client.getFiles(s)).find(c=>(c.content.folderName||c.content.name)===i);if(!a)throw new Error(`[ChaoXing] '${i}' not found`);return{id:String(a.id),isDir:!!a.content.folderName}}async pathToId(e){let t=e.split("/").filter(Boolean).join("/");if(!t)return"-1";if(this.pathCache.has(t))return this.pathCache.get(t);let i=t.split("/"),n="-1";for(let s=0;sl.content.folderName===i[s]);if(!a)throw new Error(`[ChaoXing] Directory '${i[s]}' not found`);n=String(a.id);let c="/"+i.slice(0,s+1).join("/");this.pathCache.set(c,n)}return n}}});var Xx,Zx,eC,cK,Wh,MD=V(()=>{"use strict";Xx="all",Zx="albums",eC="share_albums",cK="root",Wh=class{addition;accessToken="";constructor(e){this.addition=e}async init(){await this.refreshToken()}async refreshToken(){let e=new URLSearchParams({client_id:this.addition.client_id,client_secret:this.addition.client_secret,refresh_token:this.addition.refresh_token,grant_type:"refresh_token"}),i=await(await fetch("https://www.googleapis.com/oauth2/v4/token",{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:e.toString()})).json();if(!i.access_token)throw new Error("[GooglePhoto] refresh token failed");this.accessToken=i.access_token}async request(e,t,i,n){let s=i?"?"+new URLSearchParams(i).toString():"",o={Authorization:"Bearer "+this.accessToken,"Accept-Encoding":"gzip"},a={method:t,headers:o};n!==void 0&&(o["Content-Type"]="application/json",a.body=JSON.stringify(n));let c=await fetch(`${e}${s}`,a);if(c.status===401&&(await this.refreshToken(),o.Authorization="Bearer "+this.accessToken,c=await fetch(`${e}${s}`,a)),c.status>=400){let l=await c.json().catch(()=>({}));throw new Error(`[GooglePhoto] request failed: ${l.error?.message||`HTTP ${c.status}`}`)}return c}async getFiles(e){switch(e){case Xx:return this.getAllMedias();case Zx:return this.getAlbums();case eC:return this.getShareAlbums();case cK:return this.getFakeRoot();default:return this.getMedias(e)}}getFakeRoot(){return[{id:Xx,title:Xx},{id:Zx,title:Zx},{id:eC,title:eC}]}getAlbums(){return this.fetchItems("https://photoslibrary.googleapis.com/v1/albums",{fields:"albums(id,title,coverPhotoBaseUrl),nextPageToken",pageSize:"50",pageToken:"first"},"GET")}getShareAlbums(){return this.fetchItems("https://photoslibrary.googleapis.com/v1/sharedAlbums",{fields:"sharedAlbums(id,title,coverPhotoBaseUrl),nextPageToken",pageSize:"50",pageToken:"first"},"GET")}getMedias(e){return this.fetchItems("https://photoslibrary.googleapis.com/v1/mediaItems:search",{fields:"mediaItems(id,baseUrl,mimeType,mediaMetadata,filename),nextPageToken",pageSize:"100",albumId:e,pageToken:"first"},"POST")}getAllMedias(){return this.fetchItems("https://photoslibrary.googleapis.com/v1/mediaItems",{fields:"mediaItems(id,baseUrl,mimeType,mediaMetadata,filename),nextPageToken",pageSize:"100",pageToken:"first"},"GET")}async getMedia(e){return await(await this.request(`https://photoslibrary.googleapis.com/v1/mediaItems/${e}`,"GET",{fields:"mediaMetadata,baseUrl,mimeType"})).json()}async fetchItems(e,t,i){let n=[],s=t.pageToken;for(;s!=="";){let o={...t};o.pageToken==="first"&&(o.pageToken="");let c=await(await this.request(e,i,o)).json();s=c.nextPageToken||"",c.mediaItems&&n.push(...c.mediaItems),c.albums&&n.push(...c.albums),c.sharedAlbums&&n.push(...c.sharedAlbums)}return n}async link(e){let t=await this.getMedia(e),i=t.mimeType||"";return i.includes("image/")?(t.baseUrl||"")+"=d":i.includes("video/")?(t.baseUrl||"")+"=dv":t.baseUrl||""}}});function LD(r){return r.filename?{name:r.filename,size:0,is_dir:!1,modified:r.mediaMetadata?.creationTime||new Date().toISOString(),sign:r.id,type:X(r.filename,!1),thumb:r.baseUrl?r.baseUrl+"=w100-h100-c":"",raw_url:""}:{name:r.title||r.id,size:0,is_dir:!0,modified:new Date().toISOString(),sign:r.id,type:1}}var Xh,HD=V(()=>{"use strict";Be();MD();Xh=class{client;pathCache=new Map;constructor(e){this.client=new Wh(e)}async init(){await this.client.init()}async list(e,t){let i=await this.pathToId(t);return(await this.client.getFiles(i)).map(s=>LD(s))}async get(e,t){let i=t.split("/").filter(Boolean),n=i[i.length-1]||"root",s="/"+i.slice(0,-1).join("/");try{let o=await this.pathToId(s),c=(await this.client.getFiles(o)).find(l=>(l.filename||l.title)===n);if(c){let l=LD(c);if(!l.is_dir)try{l.raw_url=await this.client.link(c.id)}catch{l.raw_url_error="[GooglePhoto] failed to resolve download url"}return l}}catch{}return{name:n,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""}}async mkdir(){throw new Error("[GooglePhoto] mkdir not supported")}async rename(){throw new Error("[GooglePhoto] rename not supported")}async remove(){throw new Error("[GooglePhoto] remove not supported")}async move(){throw new Error("[GooglePhoto] move not supported")}async copy(){throw new Error("[GooglePhoto] copy not supported")}async put(){throw new Error("[GooglePhoto] upload not supported")}async pathToId(e){let t=e.split("/").filter(Boolean).join("/");if(!t)return"root";if(this.pathCache.has(t))return this.pathCache.get(t);let i=t.split("/"),n=i[0];for(let s=1;s(l.filename||l.title)===i[s]);if(!a)throw new Error(`[GooglePhoto] Directory '${i[s]}' not found`);n=a.id;let c="/"+i.slice(0,s+1).join("/");this.pathCache.set(c,n)}return this.pathCache.set(t,n),n}}});var Zh,KD=V(()=>{"use strict";Zh=class{addition;accessToken="";tokenType="Bearer";persist;constructor(e,t){this.addition=e,this.persist=t}async init(){if(!this.addition.client_id||!this.addition.client_secret)throw new Error("[FebBox] client_id and client_secret are required");await this.refreshToken()}async refreshToken(){let e=new URLSearchParams;this.addition.refresh_token?(e.set("grant_type","refresh_token"),e.set("refresh_token",this.addition.refresh_token)):e.set("grant_type","client_credentials"),e.set("client_id",this.addition.client_id),e.set("client_secret",this.addition.client_secret);let i=await(await fetch("https://api.febbox.com/oauth/token",{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:e.toString()})).json();if(i.code!==1||!i.data?.access_token)throw new Error(`[FebBox] token fetch failed: ${i.msg}`);this.accessToken=i.data.access_token,this.tokenType=i.data.token_type||"Bearer",i.data.refresh_token&&(this.addition.refresh_token=i.data.refresh_token,this.persist&&await this.persist(i.data.refresh_token))}async request(e){let t=new FormData;for(let[s,o]of Object.entries(e))t.append(s,o);let n=await(await fetch("https://api.febbox.com/oauth",{method:"POST",headers:{Authorization:`${this.tokenType} ${this.accessToken}`},body:t})).json().catch(()=>({}));if(n.code===-10001&&n.server_name)return await this.refreshToken(),this.request(e);if(n.code!==0&&n.code!==1)throw new Error(`[FebBox] ${n.msg||n.code}`);return n}async getFilesList(e){let t=this.addition.page_size||100,i=[],n=1;for(;;){let o=(await this.request({module:"file_list",parent_id:e,page:String(n),pagelimit:String(t),order:this.addition.sort_rule||"name_asc"})).data?.file_list||[];if(i.push(...o),o.length{"use strict";Be();KD();eg=class{client;userIp;pathCache=new Map;constructor(e,t){this.client=new Zh(e,t),this.userIp=e.user_ip||""}async init(){await this.client.init()}async list(e,t){let i=await this.pathToId(t);return(await this.client.getFilesList(i)).map(s=>GD(s))}async get(e,t){let i=t.split("/").filter(Boolean),n=i[i.length-1]||"root",s="/"+i.slice(0,-1).join("/");try{let o=await this.pathToId(s),c=(await this.client.getFilesList(o)).find(l=>l.file_name===n);if(c){let l=GD(c);if(!l.is_dir)try{l.raw_url=await this.client.getDownloadLink(l.sign,this.userIp)}catch{l.raw_url_error="[FebBox] failed to resolve download url"}return l}}catch{}return{name:n,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""}}async mkdir(e,t){let i=t.split("/").filter(Boolean),n=i.pop()||"new_folder",s="/"+i.join("/");await this.client.makeDir(await this.pathToId(s),n),this.pathCache.clear()}async rename(e,t,i){let n=await this.resolveEntry(t);await this.client.rename(n.id,i),this.pathCache.clear()}async remove(e,t,i){let n=await this.resolveEntry(t);await this.client.remove(n.id),this.pathCache.clear()}async move(e,t,i,n,s){let o=await this.resolveEntry(n);await this.client.move(o.id,await this.pathToId(t)),this.pathCache.clear()}async copy(e,t,i,n,s){let o=await this.resolveEntry(n);await this.client.copy(o.id,await this.pathToId(t)),this.pathCache.clear()}async put(){throw new Error("[FebBox] upload not supported")}async resolveEntry(e){let t=e.split("/").filter(Boolean),i=t[t.length-1],n="/"+t.slice(0,-1).join("/"),s=await this.pathToId(n),a=(await this.client.getFilesList(s)).find(c=>c.file_name===i);if(!a)throw new Error(`[FebBox] '${i}' not found`);return{id:String(a.fid),isDir:a.is_dir===1}}async pathToId(e){let t=e.split("/").filter(Boolean).join("/");if(!t)return"0";if(this.pathCache.has(t))return this.pathCache.get(t);let i=t.split("/"),n="0";for(let s=0;sl.file_name===i[s]&&l.is_dir===1);if(!a)throw new Error(`[FebBox] Directory '${i[s]}' not found`);n=String(a.fid);let c="/"+i.slice(0,s+1).join("/");this.pathCache.set(c,n)}return n}}});var lK,dK,uK,fK,AK,tg,JD=V(()=>{"use strict";lK="https://rest-api.degoo.com/login",dK="https://rest-api.degoo.com/access-token/v2",uK="https://production-appsync.degoo.com/graphql",fK="da2-vs6twz5vnjdavpqndtbzg3prra",AK="CgAQAg",tg=class{addition;accessToken="";refreshToken="";rootId="0";persist;constructor(e,t){this.addition=e,this.accessToken=e.access_token||"",this.refreshToken=e.refresh_token||"",this.persist=t}async init(){await this.ensureValidToken(),await this.getDevices()}getRootId(){return this.rootId}async saveTokens(){this.persist&&await this.persist({accessToken:this.accessToken,refreshToken:this.refreshToken})}isTokenExpired(){if(!this.accessToken)return!0;try{let e=this.accessToken.split(".");if(e.length!==3)return!0;let t=JSON.parse(atob(e[1].replace(/-/g,"+").replace(/_/g,"/"))),i=Number(t.exp)*1e3;return Date.now()+300*1e3>i}catch{return!0}}async ensureValidToken(){if(this.isTokenExpired()){if(this.refreshToken)try{await this.refreshAccessToken();return}catch{}this.addition.username&&this.addition.password&&await this.login()}}async refreshAccessToken(){let t=await(await fetch(dK,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({RefreshToken:this.refreshToken})})).json();if(!t.AccessToken)throw new Error("[Degoo] refresh token failed");this.accessToken=t.AccessToken,await this.saveTokens()}async login(){let t=await(await fetch(lK,{method:"POST",headers:{"Content-Type":"application/json",Origin:"https://app.degoo.com"},body:JSON.stringify({GenerateToken:!0,Username:this.addition.username,Password:this.addition.password})})).json();if(t.RefreshToken)this.refreshToken=t.RefreshToken,await this.refreshAccessToken();else if(t.Token)this.accessToken=t.Token,this.refreshToken="";else throw new Error("[Degoo] login failed: no valid token");await this.saveTokens()}async apiCall(e,t,i){await this.ensureValidToken(),i.Token!==void 0&&(i.Token=this.accessToken);let s=await(await fetch(uK,{method:"POST",headers:{"Content-Type":"application/json","x-api-key":fK,Authorization:`Bearer ${this.accessToken}`},body:JSON.stringify({operationName:e,query:t,variables:i})})).json();if(s.errors&&s.errors.length>0){let o=s.errors[0];if(o.errorType==="Unauthorized")return await this.login(),i.Token=this.accessToken,this.apiCall(e,t,i);throw new Error(`[Degoo] GraphQL error: ${o.message}`)}return s.data}async getDevices(){let t=await this.apiCall("GetFileChildren5","query GetFileChildren5($Token: String! $ParentID: String $AllParentIDs: [String] $Limit: Int! $Order: Int! $NextToken: String ) { getFileChildren5(Token: $Token ParentID: $ParentID AllParentIDs: $AllParentIDs Limit: $Limit Order: $Order NextToken: $NextToken) { Items { ParentID } NextToken } }",{Token:this.accessToken,ParentID:"0",Limit:10,Order:3});if(this.rootId==="0"){let i=t?.getFileChildren5?.Items;i&&i.length>0&&(this.rootId=i[0].ParentID)}}async getFileChildren5(e){let t="query GetFileChildren5($Token: String! $ParentID: String $AllParentIDs: [String] $Limit: Int! $Order: Int! $NextToken: String ) { getFileChildren5(Token: $Token ParentID: $ParentID AllParentIDs: $AllParentIDs Limit: $Limit Order: $Order NextToken: $NextToken) { Items { ID ParentID Name Category Size CreationTime LastModificationTime LastUploadTime FilePath IsInRecycleBin DeviceID MetadataID } NextToken } }",i=[],n="";for(;;){let s={Token:this.accessToken,ParentID:e,Limit:1e3,Order:3};n&&(s.NextToken=n);let o=await this.apiCall("GetFileChildren5",t,s),a=o?.getFileChildren5?.Items||[];if(i.push(...a),n=o?.getFileChildren5?.NextToken||"",!n)break}return i}async getOverlay4(e){return(await this.apiCall("GetOverlay4","query GetOverlay4($Token: String!, $ID: IDType!) { getOverlay4(Token: $Token, ID: $ID) { ID ParentID Name Category Size CreationTime LastModificationTime LastUploadTime URL FilePath IsInRecycleBin DeviceID MetadataID } }",{Token:this.accessToken,ID:{FileID:e}}))?.getOverlay4}async mkdir(e,t){await this.apiCall("SetUploadFile3","mutation SetUploadFile3($Token: String!, $FileInfos: [FileInfoUpload3]!) { setUploadFile3(Token: $Token, FileInfos: $FileInfos) }",{Token:this.accessToken,FileInfos:[{Checksum:AK,Name:t,CreationTime:Date.now(),ParentID:e,Size:0}]})}async move(e,t){await this.apiCall("SetMoveFile","mutation SetMoveFile($Token: String!, $Copy: Boolean, $NewParentID: String!, $FileIDs: [String]!) { setMoveFile(Token: $Token, Copy: $Copy, NewParentID: $NewParentID, FileIDs: $FileIDs) }",{Token:this.accessToken,Copy:!1,NewParentID:t,FileIDs:[e]})}async rename(e,t){await this.apiCall("SetRenameFile","mutation SetRenameFile($Token: String!, $FileRenames: [FileRenameInfo]!) { setRenameFile(Token: $Token, FileRenames: $FileRenames) }",{Token:this.accessToken,FileRenames:[{ID:e,NewName:t}]})}async remove(e){await this.apiCall("SetDeleteFile5","mutation SetDeleteFile5($Token: String!, $IsInRecycleBin: Boolean!, $IDs: [IDType]!) { setDeleteFile5(Token: $Token, IsInRecycleBin: $IsInRecycleBin, IDs: $IDs) }",{Token:this.accessToken,IsInRecycleBin:!1,IDs:[{FileID:e}]})}}});function tC(r){return r===1||r===2||r===10}function jD(r){let e=tC(r.Category),t=Number(r.Size)||0,i=Number(r.LastModificationTime);return{name:r.Name,size:e?0:t,is_dir:e,modified:i?new Date(i).toISOString():new Date().toISOString(),sign:r.ID,type:X(r.Name,e),raw_url:""}}var rg,$D=V(()=>{"use strict";Be();JD();rg=class{client;pathCache=new Map;constructor(e,t){this.client=new tg(e,t)}async init(){await this.client.init()}async list(e,t){let i=await this.pathToId(t);return(await this.client.getFileChildren5(i)).map(s=>jD(s))}async get(e,t){let i=t.split("/").filter(Boolean),n=i[i.length-1]||"root",s="/"+i.slice(0,-1).join("/");try{let o=await this.pathToId(s),c=(await this.client.getFileChildren5(o)).find(l=>l.Name===n);if(c){let l=jD(c);if(!l.is_dir)try{let d=await this.client.getOverlay4(c.ID);l.raw_url=d.URL||""}catch{l.raw_url_error="[Degoo] failed to resolve download url"}return l}}catch{}return{name:n,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""}}async mkdir(e,t){let i=t.split("/").filter(Boolean),n=i.pop()||"new_folder",s="/"+i.join("/");await this.client.mkdir(await this.pathToId(s),n),this.pathCache.clear()}async rename(e,t,i){let n=await this.resolveEntry(t);await this.client.rename(n.id,i),this.pathCache.clear()}async remove(e,t,i){let n=await this.resolveEntry(t);await this.client.remove(n.id),this.pathCache.clear()}async move(e,t,i,n,s){let o=await this.resolveEntry(n);await this.client.move(o.id,await this.pathToId(t)),this.pathCache.clear()}async copy(){throw new Error("[Degoo] copy not supported")}async put(){throw new Error("[Degoo] upload not supported in stateless environment")}async resolveEntry(e){let t=e.split("/").filter(Boolean),i=t[t.length-1],n="/"+t.slice(0,-1).join("/"),s=await this.pathToId(n),a=(await this.client.getFileChildren5(s)).find(c=>c.Name===i);if(!a)throw new Error(`[Degoo] '${i}' not found`);return{id:a.ID,isDir:tC(a.Category)}}async pathToId(e){let t=e.split("/").filter(Boolean).join("/");if(!t)return this.client.getRootId();if(this.pathCache.has(t))return this.pathCache.get(t);let i=t.split("/"),n=this.client.getRootId();for(let s=0;sl.Name===i[s]&&tC(l.Category));if(!a)throw new Error(`[Degoo] Directory '${i[s]}' not found`);n=a.ID;let c="/"+i.slice(0,s+1).join("/");this.pathCache.set(c,n)}return n}}});function Bl(r){return new TextEncoder().encode(r)}function ZD(r,e=16){let t=e-r.length%e,i=new Uint8Array(r.length+t);return i.set(r),i.fill(t,r.length),i}function yK(r){let e="";for(let t of r)e+=String.fromCharCode(t);return btoa(e)}function e3(r){return Array.from(r).map(e=>e.toString(16).padStart(2,"0")).join("")}async function WD(r,e,t){if(XD){let{createCipheriv:o}=await import("node:crypto"),a=o("aes-128-cbc",Buffer.from(e),Buffer.from(t));return new Uint8Array(Buffer.concat([a.update(Buffer.from(r)),a.final()]))}let i=await crypto.subtle.importKey("raw",e,{name:"AES-CBC"},!1,["encrypt"]),n=ZD(r),s=await crypto.subtle.encrypt({name:"AES-CBC",iv:t},i,n);return new Uint8Array(s)}async function IK(r,e){if(XD){let{createCipheriv:o}=await import("node:crypto"),a=o("aes-128-ecb",Buffer.from(e),null);return new Uint8Array(Buffer.concat([a.update(Buffer.from(r)),a.final()]))}let t=await crypto.subtle.importKey("raw",e,{name:"AES-CBC"},!1,["encrypt"]),i=ZD(r),n=new Uint8Array(i.length),s=new Uint8Array(16);for(let o=0;o0n;)e&1n&&(i=i*r%t),r=r*r%t,e>>=1n;return i}function EK(r){let e=new Uint8Array(128);e.set(r,112);let t=wK(e),i=BigInt("0x"+pK),n=CK(t,mK,i);return xK(n,128)}function BK(){let r=new Uint8Array(16),e=new Uint8Array(16);for(let t=0;t<16;t++){let i=Math.floor(Math.random()*YD.length),n=YD.charCodeAt(i);r[t]=n,e[15-t]=n}return{key:r,reversed:e}}async function t3(r){let e=Bl(JSON.stringify(r)),{key:t,reversed:i}=BK(),n=await WD(e,Bl(hK),Bl(VD)),s=await WD(n,i,Bl(VD));return{params:yK(s),encSecKey:e3(EK(t))}}async function r3(r){let e=Bl(JSON.stringify(r)),t=await IK(e,Bl(gK));return{eparams:e3(t).toUpperCase()}}var hK,gK,VD,YD,pK,mK,XD,i3=V(()=>{"use strict";hK="0CoJUm6Qyw8W8jud",gK="rFgB&h#%2?^eDg:Q",VD="0102030405060708",YD="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789",pK="e0b509f6259df8642dbc35662901477df22677ec152b5ff68ace615bb7b725152b3ab17a876aea8a5aa76d2e417629ec4ee341f56135fccf695280104e0312ecbda92557c93870114af6c9d05c4f7f0c3685b7a46bee255932575cce10b424d813cfe4875d3e82047b97ddef52741d546b8e289dc6935b3ece0462db0a22b8e7",mK=65537n,XD=typeof process<"u"&&process?.release?.name==="node"});var ig,n3=V(()=>{"use strict";i3();ig=class{addition;csrfToken="";musicU="";constructor(e){this.addition=e}init(){if(this.csrfToken=this.getCookie("__csrf"),this.musicU=this.getCookie("MUSIC_U"),!this.csrfToken||!this.musicU)throw new Error("[NeteaseMusic] cookie must contain __csrf and MUSIC_U")}getCookie(e){let i=new RegExp(e+"=([^(;|$)]+)").exec(this.addition.cookie);return i?i[1]:""}async request(e,t,i){let n={Cookie:this.addition.cookie};e.includes("music.163.com")&&(n.Referer="https://music.163.com");let s;if(i.crypto==="weapi"?(s=await t3(i.data),e=e.replace(/\/\w*api\//,"/weapi/")):(s=await r3({url:e.replace(/\/\w*api\//,"/api/"),method:t,params:i.data}),n["User-Agent"]="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.90 Safari/537.36",e="https://music.163.com/api/linux/forward"),i.cookies){let a=i.cookies.map(c=>`${c.name}=${c.value}`).join("; ");n.Cookie=n.Cookie+"; "+a}return(await fetch(e,{method:t,headers:{...n,"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams(s).toString()})).json()}async getSongObjs(e){return(await this.request("https://music.163.com/weapi/v1/cloud/get","POST",{crypto:"weapi",data:{limit:String(e),offset:"0"},cookies:[{name:"os",value:"pc"}]})).data||[]}async getSongLink(e){let t=await this.request("https://music.163.com/api/song/enhance/player/url","POST",{crypto:"linuxapi",data:{ids:"["+e+"]",br:"999000"},cookies:[{name:"os",value:"pc"}]});if(!t.data||t.data.length<1)throw new Error("[NeteaseMusic] song url not found");return t.data[0].url||""}async removeSong(e){await this.request("http://music.163.com/weapi/cloud/del","POST",{crypto:"weapi",data:{songIds:"["+e+"]"}})}}});function s3(r){return{name:r.fileName,size:r.fileSize,is_dir:!1,modified:r.addTime?new Date(r.addTime).toISOString():new Date().toISOString(),sign:String(r.songId),type:X(r.fileName,!1),thumb:r.simpleSong?.al?.picUrl||"",raw_url:""}}var ng,o3=V(()=>{"use strict";Be();n3();ng=class{client;songLimit;constructor(e){this.client=new ig(e),this.songLimit=e.song_limit||200}async init(){this.client.init()}async list(){return(await this.client.getSongObjs(this.songLimit)).map(t=>s3(t))}async get(e,t){let i=t.split("/").filter(Boolean),n=i[i.length-1]||"";if(!n)return{name:"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""};let o=(await this.client.getSongObjs(this.songLimit)).find(a=>a.fileName===n);if(o){let a=s3(o);try{a.raw_url=await this.client.getSongLink(a.sign)}catch{a.raw_url_error="[NeteaseMusic] failed to resolve song url"}return a}return{name:n,size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:0,raw_url:""}}async mkdir(){throw new Error("[NeteaseMusic] mkdir not supported")}async rename(){throw new Error("[NeteaseMusic] rename not supported")}async remove(e,t,i){let n=t.split("/").filter(Boolean),s=n[n.length-1],a=(await this.client.getSongObjs(this.songLimit)).find(c=>c.fileName===s);if(!a)throw new Error(`[NeteaseMusic] '${s}' not found`);await this.client.removeSong(String(a.songId))}async move(){throw new Error("[NeteaseMusic] move not supported")}async copy(){throw new Error("[NeteaseMusic] copy not supported")}async put(){throw new Error("[NeteaseMusic] upload not supported in stateless environment")}}});function Lo(r){return new TextEncoder().encode(r)}function f3(r){return Array.from(r).map(e=>e.toString(16).padStart(2,"0")).join("")}async function l3(r){let e=typeof r=="string"?Lo(r):r,t=await crypto.subtle.digest("SHA-256",e);return f3(new Uint8Array(t))}async function sg(r,e){let t=await crypto.subtle.importKey("raw",e,{name:"HMAC",hash:"SHA-256"},!1,["sign"]),i=await crypto.subtle.sign("HMAC",t,r);return new Uint8Array(i)}function d3(r){return encodeURIComponent(r).replace(/%20/g,"%20").replace(/[!'()*]/g,e=>"%"+e.charCodeAt(0).toString(16).toUpperCase())}async function u3(r){let e=r.now??new Date,t=e.toISOString().slice(0,10),i=e.toISOString(),n=(BigInt(Math.floor(e.getTime()))*1000000n+BigInt(Math.floor(Math.random()*1e6))).toString(36),s=r.bodyRaw.length>0,o={host:r.apiHost,"x-hl-nonce":n,"x-hl-timestamp":i},a=[];s&&(o["content-type"]="application/json; charset=utf-8",a.push("content-type"));let c=[...a].sort(),l=c.map(R=>`${R}:${o[R]} -`).join(""),d=c.join(";"),u="";r.query&&Object.keys(r.query).length>0&&(u=Object.keys(r.query).sort().map(U=>`${d3(U)}=${d3(r.query[U]??"")}`).join("&"));let f=await l3(r.bodyRaw),h=[r.method,r.apiPath,u,l,d,f].join(` -`),g=`${t}/${r.accessToken}/${c3}`,p=[a3,i,g,await l3(h)].join(` -`),I=Lo(bK+r.secretKey),y=await sg(Lo(t),I),w=await sg(Lo(r.accessToken),y),C=await sg(Lo(c3),w),b=f3(await sg(Lo(p),C)),x=`${a3} Credential=${r.secretId}/${g}, SignedHeaders=${d}, Signature=${b}`;o.authorization=x;let _=`https://${r.apiHost}${r.apiPath}${u?"?"+u:""}`;return{headers:o,url:_}}function vK(r,e){let t=String(r||"").replace(/\/+$/,""),i=String(e||"").replace(/^\/+/,"");return t?i?t+"/"+i:t:"/"+i}var a3,bK,c3,og,A3=V(()=>{"use strict";a3="HL6-HMAC-SHA256",bK="HL6",c3="hl6_request";og=class{addition;accessToken="";host;persistRefreshToken;constructor(e,t){this.addition=e,this.host=e.host||"openapi.2dland.cn",this.persistRefreshToken=t}async init(){if(!this.addition.client_id||!this.addition.client_secret)throw new Error("[HalalCloud] client_id and client_secret are required");if(!this.addition.refresh_token)throw new Error("[HalalCloud] refresh_token \u4E3A\u7A7A\uFF1A\u8BF7\u4ECE HalalCloud \u5B98\u65B9\u83B7\u53D6 refresh_token");await this.refreshToken()}async refreshToken(){let e={refresh_token:this.addition.refresh_token,grant_type:"refresh_token",client_id:this.addition.client_id},t=Lo(JSON.stringify(e)),i=await u3({apiHost:this.host,secretId:this.addition.client_id,secretKey:this.addition.client_secret,accessToken:this.accessToken,method:"POST",apiPath:"/v6/oauth/refresh_token",bodyRaw:t}),s=await(await fetch(i.url,{method:"POST",headers:i.headers,body:t})).json().catch(()=>({}));if(!s.access_token)throw new Error("[HalalCloud] refresh token failed");this.accessToken=s.access_token,s.refresh_token&&(this.addition.refresh_token=s.refresh_token,this.persistRefreshToken&&await this.persistRefreshToken(s.refresh_token))}async request(e,t,i=!1){let n=t!==void 0?Lo(JSON.stringify(t)):new Uint8Array(0),s=await u3({apiHost:this.host,secretId:this.addition.client_id,secretKey:this.addition.client_secret,accessToken:this.accessToken,method:"POST",apiPath:e,bodyRaw:n}),o=await fetch(s.url,{method:"POST",headers:s.headers,body:n.length>0?n:void 0});if(o.status===401&&!i)return await this.refreshToken(),this.request(e,t,!0);let a=await o.text(),c;try{c=JSON.parse(a)}catch{c={}}if(o.status>=300)throw new Error(`[HalalCloud] API error: ${c.message||c.msg||`HTTP ${o.status}`}`);return c}async listFiles(e){let t=[],i="";for(;;){let n={parent:{path:e},list_info:{limit:100,token:i}},s=await this.request("/v6/userfile/list",n),o=s.files||[];if(t.push(...o),i=s.list_info?.token||"",!i||o.length===0)break}return t}async getFile(e){let t=await this.request("/v6/userfile/get",{path:e});return t.identity?t:null}async createDir(e,t){let i=vK(e,t);await this.request("/v6/userfile/create",{parent:e,path:i,name:t,dir:!0})}async rename(e,t){await this.request("/v6/userfile/rename",{path:e,name:t})}async move(e,t,i){let n={source:[{path:e,identity:i}],dest:{path:t}};await this.request("/v6/userfile/move",n)}async copy(e,t,i){let n={source:[{path:e,identity:i}],dest:{path:t}};await this.request("/v6/userfile/copy",n)}async remove(e,t,i){let n={source:[{path:e,identity:t,dir:i}]};await this.request("/v6/userfile/delete",n)}async getDownloadUrl(e,t){let i=await this.request("/v6/userfile/get_direct_download_address",{path:e,identity:t});if(!i.download_address)throw new Error("[HalalCloud] \u83B7\u53D6\u4E0B\u8F7D\u5730\u5740\u5931\u8D25");return i.download_address}}});function rC(r){return typeof r=="number"?r:typeof r=="string"&&r.trim()!==""?Number(r):0}function h3(r){let e=r.dir===!0,t=rC(r.update_ts),i=rC(r.create_ts),n=t||i;return{name:r.name||"",size:e?0:rC(r.size),is_dir:e,modified:n?new Date(n*1e3).toISOString():new Date().toISOString(),sign:r.identity||r.path||"",type:X(r.name||"",e),raw_url:""}}function g3(r){return!r||r==="/"?"/":r.startsWith("/")?r:"/"+r}function p3(r,e){let t=String(r||"").replace(/\/+$/,""),i=String(e||"").replace(/^\/+/,"");return t?i?t+"/"+i:t:"/"+i}var ag,m3=V(()=>{"use strict";Be();A3();ag=class{client;rootPath;constructor(e,t){this.client=new og(e,t),this.rootPath=g3(e.root_folder_id||"/")}async init(){await this.client.init()}fullPath(e){let t=g3(e);return this.rootPath==="/"?t:t==="/"?this.rootPath:this.rootPath+t}async list(e,t){return(await this.client.listFiles(this.fullPath(t))).map(h3)}async get(e,t){let i=this.fullPath(t),n=i.split("/").filter(Boolean),s=n[n.length-1]||"root",o="/"+n.slice(0,-1).join("/");try{let c=(await this.client.listFiles(o==="//"?"/":o)).find(l=>l.name===s);if(c){let l=h3(c);if(!l.is_dir)try{l.raw_url=await this.client.getDownloadUrl(c.path||i,c.identity||"")}catch{l.raw_url_error="[HalalCloud] failed to resolve download url"}return l}}catch{}return{name:s,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""}}async mkdir(e,t){let n=this.fullPath(t).split("/").filter(Boolean),s=n.pop()||"new_folder",o="/"+n.join("/");await this.client.createDir(o==="//"?"/":o,s)}async rename(e,t,i){let n=this.fullPath(t);await this.client.rename(n,i)}async remove(e,t,i){let n=this.fullPath(t),s=await this.resolveEntry(n);await this.client.remove(s.path,s.identity,s.isDir)}async move(e,t,i,n,s){let o=this.fullPath(n),a=this.fullPath(t),c=await this.resolveEntry(o),l=o.split("/").filter(Boolean).pop()||"";await this.client.move(c.path,p3(a,l),c.identity)}async copy(e,t,i,n,s){let o=this.fullPath(n),a=this.fullPath(t),c=await this.resolveEntry(o),l=o.split("/").filter(Boolean).pop()||"";await this.client.copy(c.path,p3(a,l),c.identity)}async put(){throw new Error("[HalalCloud] upload not supported in stateless environment")}async resolveEntry(e){let t=e.split("/").filter(Boolean),i=t[t.length-1],n="/"+t.slice(0,-1).join("/"),o=(await this.client.listFiles(n==="//"?"/":n)).find(a=>a.name===i);if(!o)throw new Error(`[HalalCloud] '${i}' not found`);return{path:o.path||e,identity:o.identity||"",isDir:o.dir===!0}}}});function DK(r){let e=(r||"").trim();if(!e)return"";if(/^Bearer\s+/i.test(e))return e.replace(/^Bearer\s+/i,"").trim();if(/^eyJ[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+$/.test(e))return e;let t={};for(let n of e.split(";")){let s=n.indexOf("=");if(s<0)continue;let o=n.slice(0,s).trim(),a=n.slice(s+1).trim();o&&(t[o]=a)}let i=n=>{let s=t[n]||"";return/^Bearer\s+/i.test(s)?s.replace(/^Bearer\s+/i,"").trim():s};return i("sso-token")||i("token")||i("authorization")||""}function y3(r){let e=4294967295;for(let t=0;t>>8;return(e^4294967295)>>>0}function KK(r){let e=Math.round(1e7*Math.random()).toString(),t=new Date,n=Math.round((t.getTime()+8*36e5)/1e3).toString(),s=t.getUTCFullYear(),o=String(t.getUTCMonth()+1).padStart(2,"0"),a=String(t.getUTCDate()).padStart(2,"0"),c=String(t.getUTCHours()+8).padStart(2,"0"),l=String(t.getUTCMinutes()).padStart(2,"0"),u=`${s}${o}${a}${c}${l}`.split("").map(p=>HK[parseInt(p)]).join(""),f=(y3(u)>>>0).toString(),h=[n,e,r,"web","3",f].join("|"),g=(y3(h)>>>0).toString();return`${f}=${n}-${e}-${g}`}function GK(r){let e=r.indexOf("?"),t=e>=0?r.substring(0,e):r,i=e>=0?r.substring(e+1):"",n=new URL(r),s=KK(n.pathname);return`${t}?${i}${i?"&":""}${s}`}var wn,kK,SK,QK,_K,FK,PK,TK,UK,RK,NK,qK,OK,MK,LK,HK,cg,I3=V(()=>{"use strict";wn="https://yun.123pan.com/b/api",kK="https://login.123pan.com/api",SK=kK+"/user/sign_in";QK=wn+"/user/info",_K=wn+"/file/list/new",FK=wn+"/file/download_info",PK=wn+"/file/upload_request",TK=wn+"/file/mod_pid",UK=wn+"/file/rename",RK=wn+"/file/trash",NK=wn+"/file/upload_request",qK=wn+"/file/s3_upload_object/auth",OK=wn+"/file/s3_repare_upload_parts_batch",MK=wn+"/file/upload_complete/v2",LK=(()=>{let r=new Array(256);for(let e=0;e<256;e++){let t=e;for(let i=0;i<8;i++)t=t&1?3988292384^t>>>1:t>>>1;r[e]=t}return r})();HK=["a","d","e","f","g","h","l","m","y","i","j","n","o","p","k","q","r","s","t","u","b","c","v","w","s","z"];cg=class{addition;accessToken="";onTokenUpdate;constructor(e,t){this.addition=e,this.onTokenUpdate=t}getRootId(){return(this.addition.root_id||"0").trim()||"0"}async login(){if(this.addition.access_token){this.accessToken=this.addition.access_token;try{await this.userInfo(!0);return}catch{this.accessToken=""}}if(this.addition.cookie){let e=DK(this.addition.cookie);if(e){this.accessToken=e;try{await this.userInfo(!0),this.addition.access_token=e,this.onTokenUpdate?.(e);return}catch{this.accessToken=""}}}if(!this.addition.username||!this.addition.password)throw new Error("123 \u7F51\u76D8\u767B\u5F55\u51ED\u8BC1\u7F3A\u5931\uFF1A\u8BF7\u586B\u5199 123 \u7F51\u76D8\u624B\u673A\u53F7 + \u5BC6\u7801\uFF1B\u82E5\u90E8\u7F72\u73AF\u5883\uFF08\u5982 Cloudflare Workers \u6570\u636E\u4E2D\u5FC3 IP\uFF09\u5BC6\u7801\u767B\u5F55\u4F1A\u88AB\u98CE\u63A7\uFF0C\u53EF\u5728\u300CCookie\u300D\u5B57\u6BB5\u7C98\u8D34\u6D4F\u89C8\u5668\u767B\u5F55\u540E\u7684 Cookie\uFF08\u542B sso-token\uFF09\uFF0C\u6216\u586B\u5199\u6709\u6548\u7684\u8BBF\u95EE\u4EE4\u724C access_token\uFF08\u5728\u672C\u673A\u6D4F\u89C8\u5668\u767B\u5F55 https://www.123pan.com/ \u540E\u4ECE\u5F00\u53D1\u8005\u5DE5\u5177\u83B7\u53D6\uFF09\u3002");await this.signIn()}async signIn(){let t=/@/.test(this.addition.username)?{mail:this.addition.username,password:this.addition.password,type:2}:{passport:this.addition.username,password:this.addition.password,remember:!0},n=await(await fetch(SK,{method:"POST",headers:{"Content-Type":"application/json",origin:"https://yun.123pan.com",referer:"https://yun.123pan.com/","user-agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) openlist-client",platform:"web","app-version":"3"},body:JSON.stringify(t)})).json();if(n.code!==200)throw new Error(`123 \u7F51\u76D8\u767B\u5F55\u5931\u8D25\uFF08${n.message||`code ${n.code}`}\uFF09\u3002\u5F53\u524D\u90E8\u7F72\u73AF\u5883\u7684\u51FA\u53E3 IP \u88AB 123 \u5224\u5B9A\u4E3A\u5883\u5916/\u964C\u751F\u8BBE\u5907\uFF08\u5982 Cloudflare Workers \u6570\u636E\u4E2D\u5FC3 IP\uFF09\uFF0C\u8D26\u53F7\u5BC6\u7801\u767B\u5F55\u4F1A\u88AB\u98CE\u63A7\u62E6\u622A\u3002\u53EF\u9760\u65B9\u6848\uFF1A\u2460 \u5728\u672C\u673A\u6D4F\u89C8\u5668\u767B\u5F55 https://www.123pan.com/\uFF08\u767B\u5F55\u4E00\u6B21\u6216\u4FEE\u6539\u5BC6\u7801\u53EF\u89E3\u9664\u8D26\u53F7\u98CE\u9669\uFF09\uFF0C\u6253\u5F00\u5F00\u53D1\u8005\u5DE5\u5177 \u2192 Application/Network \u2192 \u590D\u5236\u8BF7\u6C42\u5934\u4E2D\u7684 Bearer \u4EE4\u724C\uFF0C\u586B\u5165\u5B58\u50A8\u8BBE\u7F6E\u7684 access_token \u5B57\u6BB5\uFF08\u4EE4\u724C\u6709\u6548\u671F\u5185 API \u8BF7\u6C42\u4E0D\u53D7 IP \u98CE\u63A7\u5F71\u54CD\uFF09\uFF1B\u2461 \u6216\u5C06\u8BE5\u7F51\u76D8\u90E8\u7F72\u5230\u5883\u5185\u670D\u52A1\u5668\uFF08Node \u5BB9\u5668\u6A21\u5F0F\uFF09\u540E\u4F7F\u7528\u8D26\u53F7\u5BC6\u7801\u3002`);if(this.accessToken=n.data?.token||"",!this.accessToken)throw new Error("login returned empty token");this.addition.access_token=this.accessToken,this.onTokenUpdate?.(this.accessToken)}async request(e,t,i,n,s=!1){let o=async()=>{let l=GK(e),d={origin:"https://yun.123pan.com",referer:"https://yun.123pan.com/",authorization:this.accessToken?`Bearer ${this.accessToken}`:"","user-agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) openlist-client",platform:this.addition.platform||"web","app-version":"3",Accept:"application/json"},u={method:t,headers:d};return i!==void 0&&t!=="GET"&&(d["Content-Type"]="application/json",u.body=JSON.stringify(i)),(await fetch(l,u)).json()},a=await o(),c=a?.code;if(c!==0&&c!==200){if(c===401&&!s){await this.login(),a=await o();let l=a?.code;if(l!==0&&l!==200)throw new Error(a?.message||`api error: code ${l}`);return a}throw new Error(a?.message||`api error: code ${c}`)}return a}async userInfo(e=!1){return(await this.request(QK,"GET",void 0,void 0,e)).data}async getFiles(e,t){let i=[],n=1,s="0",o=t?.maxPages??45;for(;;){if(t?.budget){if(t.budget.used>=t.budget.limit){console.warn(`[123Pan] \u5DF2\u8FBE Cloudflare subrequest \u9884\u7B97\u4E0A\u9650(${t.budget.limit} \u6B21)\uFF0C\u7ED3\u679C\u5DF2\u622A\u65AD\uFF08\u76EE\u5F55\u6587\u4EF6\u8FC7\u591A\u6216\u8DEF\u5F84\u8FC7\u6DF1\uFF09`);break}t.budget.used++}if(n>o){console.warn(`[123Pan] \u5206\u9875\u8D85\u8FC7 ${o} \u9875\uFF0C\u7ED3\u679C\u53EF\u80FD\u4E0D\u5B8C\u6574\uFF08\u76EE\u5F55\u6587\u4EF6\u8FC7\u591A\uFF09`);break}let a=new URLSearchParams({driveId:"0",limit:"100",next:s,orderBy:this.addition.order_by||"file_id",orderDirection:this.addition.order_direction||"desc",parentFileId:e,trashed:"false",SearchData:"",Page:String(n),OnlyLookAbnormalFile:"0",event:"homeListFile",operateType:"4",inDirectSpace:"false"}),c=`${_K}?${a.toString()}`,l=await this.request(c,"GET"),d=l.data?.InfoList||[];if(i.push(...d),t?.findName){let f=d.find(h=>h.FileName===t.findName&&(t.findIsDir===void 0||h.Type===1===t.findIsDir));if(f)return[f]}let u=String(l.data?.Next??"-1");if(!l.data||d.length===0||u==="-1")break;s=u,n++}return i}async getDownloadLink(e){let t={driveId:0,etag:e.Etag,fileId:e.FileId,fileName:e.FileName,s3keyFlag:e.S3KeyFlag,size:e.Size,type:e.Type},n=(await this.request(FK,"POST",t)).data?.DownloadUrl||"";if(!n)throw new Error("no download url");try{let a=new URL(n).searchParams.get("params");if(a){let c=atob(a);n=new URL(c).toString()}}catch{}let s=await fetch(n,{method:"GET",redirect:"manual",headers:{Referer:"https://yun.123pan.com/"}});return s.status===302?s.headers.get("location")||n:s.status<300&&(await s.json().catch(()=>({}))).data?.redirect_url||n}async mkdir(e,t){let i=await this.request(PK,"POST",{driveId:0,etag:"",fileName:t,parentFileId:parseInt(e,10)||0,size:0,type:1});return i.data?.FileId!=null?String(i.data.FileId):""}async rename(e,t){await this.request(UK,"POST",{driveId:0,fileId:parseInt(e,10),fileName:t})}async move(e,t){await this.request(TK,"POST",{fileIdList:e.map(i=>({FileId:parseInt(i,10)})),parentFileId:parseInt(t,10)})}async remove(e,t){await this.request(RK,"POST",{driveId:0,operation:!0,fileTrashInfoList:[t]})}async getPartUploadUrl(e,t,i){let s=(i===1?await this.getS3Auth(e,t,t+1):await this.getS3PreSignedUrls(e,t,t+1)).presignedUrls[String(t)];if(!s)throw new Error(`[123Pan] \u672A\u8FD4\u56DE\u7B2C ${t} \u5206\u7247\u7684\u4E0A\u4F20 URL`);return s}async completeUpload(e,t,i){await this.completeS3(e,t,i)}async createUpload(e,t,i,n){let s={driveId:0,duplicate:2,etag:n,fileName:e,parentFileId:t,size:i,type:0};return(await this.request(NK,"POST",s)).data}async getS3Auth(e,t,i){let n={StorageNode:e.StorageNode,bucket:e.Bucket,key:e.Key,partNumberEnd:i,partNumberStart:t,uploadId:e.UploadId};return(await this.request(qK,"POST",n)).data}async getS3PreSignedUrls(e,t,i){let n={bucket:e.Bucket,key:e.Key,partNumberEnd:i,partNumberStart:t,uploadId:e.UploadId,StorageNode:e.StorageNode};return(await this.request(OK,"POST",n)).data}async completeS3(e,t,i){await this.request(MK,"POST",{StorageNode:e.StorageNode,bucket:e.Bucket,fileId:e.FileId,fileSize:t,isMultipart:i,key:e.Key,uploadId:e.UploadId})}async uploadFile(e,t,i){let n="";try{n=(await import("node:crypto")).createHash("md5").update(i).digest("hex")}catch{n=""}let s=await this.createUpload(t,e,i.length,n);if(s.Reuse||s.Key==="")return;let o=16*1024*1024,a=1;i.length>o&&(a=Math.ceil(i.length/o));let c=i.length%o;c===0&&(c=o);let l;a===1?l=(await this.getS3Auth(s,1,2)).presignedUrls:l=(await this.getS3PreSignedUrls(s,1,a+1)).presignedUrls;for(let d=1;d<=a;d++){let u=(d-1)*o,f=d===a?c:o,h=l[String(d)];if(!h)throw new Error(`[123Pan] \u7F3A\u5C11\u7B2C ${d} \u5206\u7247\u7684\u4E0A\u4F20 URL`);let g=i.subarray(u,u+f),p=await fetch(h,{method:"PUT",body:g});if(p.status!==200){let I=await p.text().catch(()=>"");throw new Error(`[123Pan] \u4E0A\u4F20\u7B2C ${d}/${a} \u5206\u7247\u5931\u8D25\uFF1AHTTP ${p.status} ${I}`)}}await this.completeS3(s,i.length,a>1)}}});function zK(r){return Buffer.from(JSON.stringify(r),"utf8").toString("base64")}function w3(r){let e=JSON.parse(Buffer.from(r,"base64").toString("utf8"));if(!e||!e.bucket||!e.key||!e.uploadId)throw new Error("[123Pan] invalid upload session");return e}function x3(r){return{AccessKeyId:"",SecretAccessKey:"",SessionToken:"",Bucket:r.bucket,Key:r.key,UploadId:r.uploadId,FileId:r.fileId,StorageNode:r.storageNode,EndPoint:"",Reuse:!1}}function C3(r){let e=r.Type===1;return{name:r.FileName,size:r.Size||0,is_dir:e,modified:r.UpdateAt?new Date(r.UpdateAt).toISOString():new Date().toISOString(),sign:String(r.FileId),type:X(r.FileName,e),thumb:"",raw_url:""}}var lg,E3=V(()=>{"use strict";Be();He();I3();lg=class{client;addition;pathIdCache=new Map;budget={used:0,limit:45};constructor(e,t){this.addition=e,this.client=new cg(e,t)}async init(){await this.client.login()}async resolveFolderId(e){let t=this.client.getRootId(),i="/"+String(e||"").split("/").filter(Boolean).join("/");if(i==="/"||i===`/${t}`)return t;let n=i.split("/").filter(Boolean),s=0,o=t,a="";for(let c=0;c{try{return decodeURIComponent(l)}catch{return l}})(),f=(await this.client.getFiles(o,{findName:d,findIsDir:!0,budget:this.budget})).find(h=>h.Type===1&&(h.FileName===l||h.FileName===d||String(h.FileId)===l||String(h.FileId)===d));if(!f)throw new Error(`folder not found: ${l}`);o=String(f.FileId),a="/"+n.slice(0,c+1).join("/"),this.pathIdCache.set(a,o)}return o}async ensureFolderId(e){let t=this.client.getRootId(),i="/"+String(e||"").split("/").filter(Boolean).join("/");if(i==="/"||i===`/${t}`)return t;let n=i.split("/").filter(Boolean),s=t,o="";for(let a=0;a{try{return decodeURIComponent(c)}catch{return c}})();o="/"+n.slice(0,a+1).join("/");let d=this.pathIdCache.get(o);if(d===void 0){let u=await this.client.getFiles(s,{findName:l,findIsDir:!0,budget:this.budget}),f=u.find(h=>h.Type===1&&(h.FileName===c||h.FileName===l));if(f)d=String(f.FileId);else{try{let h=await this.client.mkdir(s,l);h&&(d=h)}catch{}if(d===void 0){if(u=await this.client.getFiles(s,{findName:l,findIsDir:!0,budget:this.budget}),f=u.find(h=>h.Type===1&&h.FileName===l),!f)throw new Error(`[123Pan] \u81EA\u52A8\u521B\u5EFA\u76EE\u5F55\u5931\u8D25: ${c}`);d=String(f.FileId)}}this.pathIdCache.set(o,d)}s=d}return s}async resolveFile(e){let t=String(e||"").split("/").filter(Boolean);if(t.length===0)throw new Error("invalid path");let i=t[t.length-1],n=(()=>{try{return decodeURIComponent(i)}catch{return i}})(),s="/"+t.slice(0,t.length-1).join("/"),o=await this.resolveFolderId(s),c=(await this.client.getFiles(o,{findName:n,budget:this.budget})).find(l=>String(l.FileId)===i||String(l.FileId)===n||l.FileName===i||l.FileName===n);if(!c)throw new Error(`file not found: ${i}`);return{file:c,parentId:o,name:i}}async list(e,t){this.budget.used=0;let i=await this.resolveFolderId(t),s=(await this.client.getFiles(i,{budget:this.budget})).map(C3);return de(s,this.addition.order_by||"file_name",this.addition.order_direction)}async get(e,t){this.budget.used=0;let i=String(t||"").split("/").filter(Boolean);if(i.length===0||i[i.length-1]===this.client.getRootId()){let o=this.client.getRootId();return{name:o,size:0,is_dir:!0,modified:new Date().toISOString(),sign:o,type:1,raw_url:""}}let{file:n}=await this.resolveFile(t),s=C3(n);if(n.Type!==1)try{s.raw_url=await this.client.getDownloadLink(n),s.raw_url||(s.raw_url_error="123 \u7F51\u76D8\u672A\u8FD4\u56DE\u4E0B\u8F7D\u94FE\u63A5\uFF08DownloadUrl \u4E3A\u7A7A\uFF09\u3002\u5E38\u89C1\u539F\u56E0\uFF1Aaccess_token/cookie \u5931\u6548\uFF0C\u6216\u8BE5\u6587\u4EF6\u5DF2\u5220\u9664/\u88AB\u9650\u5236\u4E0B\u8F7D\u3002\u8BF7\u5230\u7BA1\u7406\u540E\u53F0\u66F4\u65B0 access_token \u540E\u91CD\u8BD5\u3002")}catch(o){s.raw_url_error=`123 \u7F51\u76D8\u83B7\u53D6\u4E0B\u8F7D\u94FE\u63A5\u5931\u8D25\uFF1A${o?.message||String(o)}\u3002`+(String(o?.message||"").includes("\u767B\u5F55\u5931\u8D25")?"\u5F53\u524D\u90E8\u7F72\u51FA\u53E3 IP \u53EF\u80FD\u88AB 123 \u98CE\u63A7\uFF0C\u8BF7\u914D\u7F6E\u6709\u6548\u7684 access_token\uFF08\u6D4F\u89C8\u5668\u767B\u5F55 123 \u7F51\u76D8\u540E\u590D\u5236 Bearer \u4EE4\u724C\uFF09\u3002":"\u8BF7\u68C0\u67E5 access_token/cookie \u662F\u5426\u6709\u6548\uFF0C\u6216\u5728 123 \u7F51\u76D8\u7F51\u9875\u7AEF\u786E\u8BA4\u8BE5\u6587\u4EF6\u53EF\u4E0B\u8F7D\u3002"),console.warn(`[123Pan] getDownloadLink warning for ${n.FileName}:`,o.message)}else s.raw_url_error="\u8BE5\u6761\u76EE\u662F\u6587\u4EF6\u5939\uFF0C\u4E0D\u53EF\u4F5C\u4E3A\u6587\u4EF6\u4E0B\u8F7D\u3002";return s}async mkdir(e,t){this.budget.used=0;let i=String(t||"").split("/").filter(Boolean),n=i.pop()||"\u65B0\u6587\u4EF6\u5939",s="/"+i.join("/"),o=await this.resolveFolderId(s);await this.client.mkdir(o,n)}async rename(e,t,i){this.budget.used=0;let{file:n}=await this.resolveFile(t);await this.client.rename(String(n.FileId),i)}async remove(e,t,i){this.budget.used=0;let{file:n}=await this.resolveFile(t);await this.client.remove(String(n.FileId),n)}async move(e,t,i,n,s){this.budget.used=0;let{file:o}=await this.resolveFile(n),a=String(t).split("/").filter(Boolean),c=await this.resolveFolderId("/"+a.join("/"));await this.client.move([String(o.FileId)],c)}async copy(){throw new Error("[123Pan] Copy is not supported by 123 Cloud Drive API")}async put(e,t,i){this.budget.used=0;let n=String(t||"").split("/").filter(Boolean);if(n.length===0)throw new Error("invalid upload path");let s=n[n.length-1],o=(()=>{try{return decodeURIComponent(s)}catch{return s}})(),a="/"+n.slice(0,n.length-1).join("/"),c=await this.ensureFolderId(a);await this.client.uploadFile(c,o,i)}async createUploadSession(e,t,i,n,s){this.budget.used=0;let o=await this.ensureFolderId(t||"/"),a=await this.client.createUpload(i,o,n,s||""),c=16*1024*1024;if(a.Reuse||a.Key==="")return{reuse:!0,partCount:0,chunkSize:c,session:""};let l=Math.max(1,Math.ceil(n/c)),d=zK({bucket:a.Bucket,key:a.Key,uploadId:a.UploadId,fileId:a.FileId,storageNode:a.StorageNode,size:n,partCount:l,chunkSize:c});return{reuse:!1,partCount:l,chunkSize:c,session:d}}async uploadPart(e,t,i){this.budget.used=0;let n=w3(e),s=await this.client.getPartUploadUrl(x3(n),t,n.partCount),o=await fetch(s,{method:"PUT",body:i});if(o.status!==200){let a=await o.text().catch(()=>"");throw new Error(`[123Pan] \u4E0A\u4F20\u7B2C ${t}/${n.partCount} \u5206\u7247\u5931\u8D25\uFF1AHTTP ${o.status} ${a}`)}}async completeUploadSession(e){this.budget.used=0;let t=w3(e);await this.client.completeUpload(x3(t),t.size,t.partCount>1)}}});function YK(r){return new Promise(e=>setTimeout(e,r))}function oC(r){if(!r)return r;try{let e=new URL(r);return e.searchParams.delete("access_token"),e.toString()}catch{return r}}function Sl(r){let e={...r||{}},t=(i,n)=>i==null||i===""?n:typeof i=="boolean"?i:String(i).toLowerCase()==="true";return e.use_online_api=t(e.use_online_api,!0),e.api_url_address=e.api_url_address||"https://api.oplist.org/baiduyun/renewapi",e.download_api=e.download_api||"official",e.custom_crack_ua=e.custom_crack_ua||"netdisk",e.order_by=e.order_by||"name",e.order_direction=e.order_direction||"asc",e.upload_thread=e.upload_thread||"3",e.upload_api=e.upload_api||vl,e.use_dynamic_upload_api=t(e.use_dynamic_upload_api,!0),e.custom_upload_part_size=e.custom_upload_part_size||0,e.low_bandwith_upload_mode=t(e.low_bandwith_upload_mode,!1),e.only_list_video_file=t(e.only_list_video_file,!1),e}function b3(r,e,t){r.local_mtime=String(t),r.local_ctime=String(e)}var JK,B3,bl,iC,nC,sC,jK,vl,$K,_u,aC,v3,VK,dg,kl,cC=V(()=>{"use strict";JK="https://openapi.baidu.com/oauth/2.0/token",B3="https://pan.baidu.com/rest/2.0",bl=4*1024*1024,iC=16*1024*1024,nC=32*1024*1024,sC=2048,jK=1*1024*1024,vl="https://d.pcs.baidu.com",$K=60*1e3,_u=3,aC=1e3,v3=5e3,VK=new Set([111,-6,20016]);dg=class r{addition;accessToken="";onTokenUpdate;constructor(e,t){this.addition=Sl(e),this.onTokenUpdate=t,this.addition.access_token&&(this.accessToken=this.addition.access_token)}static apiUA="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Safari/537.36 Chrome/142.0.0.0 OpenList/425.6.30";async refreshToken(){let e=this.addition;if(e.use_online_api&&e.api_url_address){let s=new URL(e.api_url_address);s.searchParams.set("refresh_ui",e.refresh_token),s.searchParams.set("server_use","true"),s.searchParams.set("driver_txt","baiduyun_go");let o=await fetch(s.toString(),{headers:{"User-Agent":r.apiUA}}),a,c=await o.text();try{a=JSON.parse(c)}catch{throw new Error(`\u5728\u7EBF API \u5237\u65B0\u5931\u8D25 (HTTP ${o.status})\uFF1A${c.slice(0,300)||"\u975E JSON \u54CD\u5E94"}\u3002\u8BF7\u786E\u8BA4 refresh_token \u662F\u901A\u8FC7 https://api.oplist.org/ \u83B7\u53D6\u7684\u6709\u6548\u4EE4\u724C\u3002`)}if(!a.refresh_token||!a.access_token)throw new Error(a.text||(o.status!==200?`\u5728\u7EBF API \u8FD4\u56DE HTTP ${o.status}`:"empty token returned from official API, a wrong refresh token may have been used"));this.accessToken=a.access_token,e.refresh_token=a.refresh_token,e.access_token=a.access_token,this.onTokenUpdate?.({access_token:a.access_token,refresh_token:a.refresh_token});return}if(!e.client_id||!e.client_secret)throw new Error("empty ClientID or ClientSecret");let t=new URL(JK);t.searchParams.set("grant_type","refresh_token"),t.searchParams.set("refresh_token",e.refresh_token),t.searchParams.set("client_id",e.client_id),t.searchParams.set("client_secret",e.client_secret);let n=await(await fetch(t.toString())).json();if(n.error)throw new Error(`${n.error}: ${n.error_description||""}`);if(!n.refresh_token)throw new Error("empty refresh token returned from OAuth");this.accessToken=n.access_token||"",e.refresh_token=n.refresh_token,e.access_token=n.access_token||"",this.onTokenUpdate?.({access_token:n.access_token||"",refresh_token:n.refresh_token})}async login(){this.accessToken||await this.refreshToken()}async ensureToken(){this.accessToken||await this.refreshToken()}async request(e,t,i,n){await this.ensureToken();let s=async()=>{let a=new URL(e);a.searchParams.set("access_token",this.accessToken);for(let[g,p]of Object.entries(i||{}))a.searchParams.set(g,p);let c={"User-Agent":r.apiUA,Accept:"application/json"},l={method:t,headers:c};if(n&&t==="POST"){let g=new URLSearchParams;for(let[p,I]of Object.entries(n))g.set(p,I);c["Content-Type"]="application/x-www-form-urlencoded",l.body=g.toString()}let d=await fetch(a.toString(),l),u=await d.text(),f;try{f=JSON.parse(u)}catch{throw new Error(`req: [${e}] invalid JSON response, status ${d.status}`)}let h=typeof f.errno=="number"?f.errno:0;if(h!==0){if(VK.has(h)&&await this.refreshToken(),h===31023&&this.addition.download_api==="crack_video")return f;let g=`req: [${e}] ,errno: ${h}, refer to https://pan.baidu.com/union/doc/`;throw h===31023?new Error(`${g} \u767E\u5EA6\u7F51\u76D8\u98CE\u63A7 (Trigger security policy: Please try again later) \u2014 \u89E6\u53D1\u539F\u56E0\u901A\u5E38\u662F\uFF1A\u2460 \u5F53\u524D\u90E8\u7F72\u73AF\u5883\u7684\u51FA\u53E3 IP\uFF08\u5982 Cloudflare Workers \u6570\u636E\u4E2D\u5FC3 IP\uFF09\u88AB\u767E\u5EA6\u5B89\u5168\u7B56\u7565\u62E6\u622A\uFF1B\u2461 refresh_token \u65E0\u6548\u6216\u4ECE\u975E\u5B98\u65B9\u6E20\u9053\u83B7\u53D6\uFF0C\u5BFC\u81F4\u8D26\u53F7\u88AB\u98CE\u63A7\u3002\u8BF7\u786E\u8BA4\uFF1Arefresh_token \u5FC5\u987B\u901A\u8FC7 https://api.oplist.org/ \u83B7\u53D6\uFF08\u672C\u9A71\u52A8\u9ED8\u8BA4\u5DF2\u5F00\u542F"\u4F7F\u7528\u5728\u7EBF API"\uFF09\uFF1B\u98CE\u63A7\u4E3A\u4E34\u65F6\u6027\uFF0C\u7B49\u5F85\u6570\u5206\u949F\u81F3\u6570\u5C0F\u65F6\u540E\u81EA\u52A8\u89E3\u9664\uFF1B\u957F\u671F\u4F7F\u7528\u8BF7\u5C06\u540E\u7AEF\u90E8\u7F72\u5230\u5883\u5185\u670D\u52A1\u5668\uFF08\u6216\u914D\u7F6E HTTPS_PROXY \u5883\u5185\u4EE3\u7406\uFF09\u3002`):new Error(g)}return f},o;for(let a=0;a<_u;a++)try{return await s()}catch(c){o=c,a<_u-1&&await YK(aC*Math.pow(2,a))}throw o}get(e,t){return this.request(B3+e,"GET",t)}postForm(e,t,i){return this.request(B3+e,"POST",t,i)}async uinfo(){let e=await this.get("/xpan/nas",{method:"uinfo"});return typeof e.vip_type=="number"?e.vip_type:0}async getFiles(e){let n={method:"list",dir:e,web:"web"};this.addition.order_by&&(n.order=this.addition.order_by,this.addition.order_direction==="desc"&&(n.desc="1"));let s=[];for(let o=0;;o+=1e3){n.start=String(o),n.limit=String(1e3);let c=(await this.get("/xpan/file",n)).list||[];if(c.length===0)break;if(this.addition.only_list_video_file)for(let l of c)(l.isdir===1||l.category===1)&&s.push(l);else s.push(...c);if(c.length<1e3)break}return s}async getOfficialLink(e){let i=(await this.get("/xpan/multimedia",{method:"filemetas",fsids:`[${e}]`,dlink:"1"})).list?.[0]?.dlink;if(!i)throw new Error("no dlink returned from filemetas");let n=`${i}&access_token=${this.accessToken}`,o=(await fetch(n,{method:"HEAD",redirect:"manual",headers:{"User-Agent":"pan.baidu.com"}})).headers.get("location")||n;return{url:oC(o),headers:{"User-Agent":"pan.baidu.com"}}}async getCrackLink(e){let i=(await this.request("https://pan.baidu.com/api/filemetas","GET",{target:`["${e}"]`,dlink:"1",web:"5",origin:"dlna"})).info?.[0]?.dlink;if(!i)throw new Error("no dlink returned from crack filemetas");return{url:oC(i),headers:{"User-Agent":this.addition.custom_crack_ua||"netdisk"}}}async getCrackVideoLink(e,t){let n=(await this.request("https://pan.baidu.com/api/mediainfo","GET",{type:"VideoURL",path:e,fs_id:String(t),devuid:"0%1",clienttype:"1",channel:"android_15_25010PN30C_bd-netdisk_1523a",nom3u8:"1",dlink:"1",media:"1",origin:"dlna"}))?.info?.dlink;if(!n)throw new Error("no dlink returned from mediainfo");return{url:oC(n),headers:{"User-Agent":this.addition.custom_crack_ua||"netdisk"}}}async manage(e,t){return this.postForm("/xpan/file",{method:"filemanager",opera:e},{async:"0",filelist:JSON.stringify(t),ondup:"fail"})}async create(e,t,i,n,s,o,a){let c={path:e,size:String(t),isdir:String(i),rtype:"3"};return o!==0&&a!==0&&b3(c,a,o),n&&(c.uploadid=n),s&&(c.block_list=s),this.postForm("/xpan/file",{method:"create"},c)}async precreate(e,t,i,n,s,o,a){let c={path:e,size:String(t),isdir:"0",autoinit:"1",rtype:"3",block_list:i};n!==""&&s!==""&&(c["content-md5"]=n,c["slice-md5"]=s),b3(c,o,a);let l=await this.postForm("/xpan/file",{method:"precreate"},c);return l.return_type===2&&l.info&&(l.info.ctime=o,l.info.mtime=a),l}async uploadSlice(e,t,i,n,s){let o=new URL(e+"/rest/2.0/pcs/superfile2");for(let[d,u]of Object.entries(t))o.searchParams.set(d,u);let a=new FormData;a.append("file",new Blob([n]),i);let c=new AbortController,l=setTimeout(()=>c.abort(),s>0?s:$K);try{let u=await(await fetch(o.toString(),{method:"POST",body:a,signal:c.signal})).text(),f=u.toLowerCase();if(f.includes("uploadid")&&(f.includes("invalid")||f.includes("expired")||f.includes("not found")))throw new kl;let h;try{h=JSON.parse(u)}catch{h={}}let g=h?.error_code??0,p=h?.errno??0;if(g!==0||p!==0)throw new Error(`error uploading to baidu, response=${u}`)}finally{clearTimeout(l)}}getUploadUrl(e,t){let i=this.addition;return!i.use_dynamic_upload_api||!t,i.upload_api||vl}async requestForUploadUrl(e,t){let i=await this.request("https://d.pcs.baidu.com/rest/2.0/pcs/file","GET",{method:"locateupload",appid:"250528",path:e,uploadid:t,upload_version:"2.0"}),n="";if(i.servers&&i.servers.length>0?n=i.servers[0].server:i.bak_servers&&i.bak_servers.length>0&&(n=i.bak_servers[0].server),!n)throw new Error("upload URL is empty");return n}getSliceSize(e,t){let i=this.addition,n=i.custom_upload_part_size||0;if(t===0)return n!==0&&console.warn("[baidu_netdisk] CustomUploadPartSize is not supported for non-vip user, use DefaultSliceSize"),e>sC*bl&&console.warn(`[baidu_netdisk] File size(${e}) is too large, may cause upload failure`),bl;if(n!==0)return niC?(console.warn(`[baidu_netdisk] CustomUploadPartSize(${n}) is greater than VipSliceSize, use VipSliceSize`),iC):t===2&&n>nC?(console.warn(`[baidu_netdisk] CustomUploadPartSize(${n}) is greater than SVipSliceSize, use SVipSliceSize`),nC):n;let s=bl;if(t===1&&(s=iC),t===2&&(s=nC),i.low_bandwith_upload_mode){let o=bl;for(;o<=s;){if(e<=sC*o)return o;o+=jK}}return e>sC*s&&console.warn(`[baidu_netdisk] File size(${e}) is too large, may cause upload failure`),s}async quota(){let e=await this.request("https://pan.baidu.com/api/quota","GET");return{total:e.total||0,used:e.used||0}}},kl=class extends Error{constructor(){super("uploadid expired"),this.name="ErrUploadIDExpired"}}});function XK(r){return new Promise(e=>setTimeout(e,r))}function k3(r){let e=r.server_filename||Fu(r.path),t=r.server_ctime||r.ctime||0,i=r.server_mtime||r.mtime||0,n=r.isdir===1;return{name:e,size:r.size||0,is_dir:n,created:t?new Date(t*1e3).toISOString():void 0,modified:i?new Date(i*1e3).toISOString():new Date().toISOString(),sign:String(r.fs_id),type:X(e,n),thumb:r.thumbs?.url3||"",raw_url:""}}function Fu(r){let e=String(r||"").split("/");return e[e.length-1]||""}function S3(r){let e=r.lastIndexOf("/");return e<=0?"/":r.slice(0,e)}var WK,ug,D3=V(()=>{"use strict";Be();He();ni();cC();cC();WK=new Error("empty files are not allowed by baidu netdisk");ug=class{client;addition;uploadThread=3;vipType=0;pathCache=new Map;constructor(e,t){this.addition=Sl(e),this.client=new dg(this.addition,t)}async init(){let e=this.addition,t=parseInt(e.upload_thread||"3",10);if(t<1&&(t=1),t>32&&(t=32),this.uploadThread=t,!this.client.accessToken)throw new Error("\u767E\u5EA6\u7F51\u76D8\u7F3A\u5C11\u8BBF\u95EE\u4EE4\u724C access_token\uFF08\u5FC5\u586B\uFF09\uFF1A\u8BF7\u901A\u8FC7 https://api.oplist.org/ \u83B7\u53D6\u540E\u586B\u5199\u3002");this.vipType=await this.client.uinfo()}baiduPath(e){let t="/"+String(e||"").replace(/\/+/g,"/");return t==="/"?"/":t.replace(/\/$/,"")}async list(e,t){let i=await this.client.getFiles(this.baiduPath(t)),n=i.map(k3);for(let s of i)this.pathCache.set(s.path,{fsId:s.fs_id,parent:S3(s.path)});return de(n,this.addition.order_by||"name",this.addition.order_direction)}async get(e,t){let i=this.baiduPath(t);if(i==="/")return{name:"/",size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""};let n=S3(i),s=Fu(i),o=(()=>{try{return decodeURIComponent(s)}catch{return s}})(),c=(await this.client.getFiles(n)).find(d=>d.server_filename===s||d.server_filename===o||d.path===i||String(d.fs_id)===s);if(!c)throw new Error(`file not found: ${s}`);this.pathCache.set(c.path,{fsId:c.fs_id,parent:n});let l=k3(c);if(c.isdir!==1)try{let d=await this.getDownloadLink(c);l.raw_url=d.url,l.raw_url_headers=d.headers}catch(d){console.warn(`[baidu_netdisk] getDownloadLink warning for ${c.server_filename}:`,d.message)}return l}async getDownloadLink(e){let t=this.addition.download_api||"official";return t==="crack"?this.client.getCrackLink(e.path):t==="crack_video"?this.client.getCrackVideoLink(e.path,e.fs_id):this.client.getOfficialLink(e.fs_id)}async mkdir(e,t){await this.client.create(this.baiduPath(t),0,1,"","",0,0)}async rename(e,t,i){await this.client.manage("rename",[{path:this.baiduPath(t),newname:i}])}async remove(e,t,i){await this.client.manage("delete",[this.baiduPath(t)])}async move(e,t,i,n,s){let o=i[0]||Fu(n),a=this.baiduPath(t);await this.client.manage("move",[{path:this.baiduPath(n),dest:a,newname:o}])}async copy(e,t,i,n,s){let o=i[0]||Fu(n),a=this.baiduPath(t);await this.client.manage("copy",[{path:this.baiduPath(n),dest:a,newname:o}])}async put(e,t,i){if(i.length<1)throw WK;let n=i.length,s=this.baiduPath(t),o=Fu(s),a=Math.floor(Date.now()/1e3),c=a,l=a,d=$t(i),u=JSON.stringify([d]);try{await this.client.create(s,n,0,"",u,c,l);return}catch{}let f=this.client.getSliceSize(n,this.vipType),h=Math.max(1,Math.ceil(n/f)),g=n%f||f,p=[];for(let w=0;w{for(;;){let T=_++;if(T>=b.length)return;let D=b[T];if(D<0)continue;let B=D*f,Q=D+1===h?g:f,v=i.subarray(B,B+Q),E={method:"upload",access_token:this.client.accessToken,type:"tmpfile",path:s,uploadid:y.uploadid,partseq:String(D)},P=!1;for(let N=0;N<_u;N++)try{await this.client.uploadSlice(C,E,o,v,(this.addition.upload_timeout||60)*1e3),b[T]=-1,P=!0;break}catch(J){if(J instanceof kl)throw J;N<_u-1&&await XK(Math.min(aC*Math.pow(2,N),v3))}if(!P)throw x=!0,new Error(`upload slice ${D} failed`)}};try{if(await Promise.all(Array.from({length:R},()=>U())),x)throw new Error("upload slice failed")}catch(T){if(T instanceof kl){let D=await this.client.precreate(s,n,I,"","",l,c);if(D.return_type===2&&D.info)return;y=D;continue}throw T}await this.client.create(s,n,0,y.uploadid,I,c,l);return}throw new Error("upload failed after retries")}}}});function rG(){let r=Math.floor(Date.now()/1e3),e=Math.floor(9e6*Math.random()+1e6);return`3${r}${e}`}function Q3(r){return"["+r.map(e=>`{"fsid":${e}}`).join(",")+"]"}var hg,Vi,fg,ZK,eG,lC,Pu,tG,Ag,_3=V(()=>{"use strict";ni();hg="https://photo.baidu.com/youai",Vi=hg+"/album/v1",fg=hg+"/file/v1",ZK=hg+"/file/v2",eG=hg+"/user/v1",lC="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",Pu=4*1024*1024,tG=256*1024;Ag=class{cookie;uk="";bdstoken="";showType;constructor(e){this.cookie=e.cookie||"",this.showType=e.show_type||"root"}async init(){if(!this.cookie)throw new Error("[BaiduPhoto] cookie is required");let e=await this.uInfo();this.uk=e.youa_id||"",this.bdstoken=await this.getBDStoken()}async request(e,t,i={}){let n=new URL(t);if(i.query)for(let[c,l]of Object.entries(i.query))l!==void 0&&n.searchParams.set(c,l);let s={Cookie:this.cookie,"User-Agent":lC,Referer:"https://photo.baidu.com/"},o;return i.form&&(s["Content-Type"]="application/x-www-form-urlencoded",o=new URLSearchParams(i.form).toString()),await fetch(n.toString(),{method:e,headers:s,body:o,redirect:i.redirect??"follow"})}async requestJson(e,t,i={}){let s=await(await this.request(e,t,i)).json().catch(()=>({})),o=s.errno;if(o!==void 0&&o!==0)throw new Error(`[BaiduPhoto] errno: ${o}, refer to https://photo.baidu.com/union/doc`);return s}async uInfo(){return this.requestJson(eG+"/getuinfo","GET")}async getBDStoken(){return(await this.requestJson("GET","https://pan.baidu.com/api/gettemplatevariable",{query:{fields:'["bdstoken","token","uk"]'}}))?.result?.bdstoken||""}async getAllFile(){let e=[],t="";for(;;){let i=await this.requestJson("GET",fg+"/list",{query:{need_thumbnail:"1",need_filter_hidden:"0",cursor:t}});if(e.push(...i.list||[]),i.has_more!==1)break;t=i.cursor||""}return e}async getAllAlbum(){let e=[],t="";for(;;){let i=await this.requestJson("GET",Vi+"/list",{query:{need_amount:"1",limit:"100",cursor:t}});if(e.push(...i.list||[]),i.has_more!==1)break;t=i.cursor||""}return e}async getAllAlbumFile(e,t){let i=[],n="";for(;;){let s=await this.requestJson("GET",Vi+"/listfile",{query:{album_id:e,need_amount:"1",limit:"1000",passwd:"",cursor:n}});if(i.push(...s.list||[]),s.has_more!==1)break;n=s.cursor||""}return i}async getAlbumDetail(e){return this.requestJson("GET",Vi+"/detail",{query:{album_id:e}})}async linkFile(e){let t=await this.requestJson("GET",ZK+"/download",{query:{fsid:String(e)}});if(!t.dlink)throw new Error("[BaiduPhoto] \u83B7\u53D6\u4E0B\u8F7D\u5730\u5740\u5931\u8D25");return t.dlink}async linkAlbumFile(e,t,i,n){let o=(await this.request("HEAD",Vi+"/download",{query:{fsid:String(e),album_id:t,tid:String(i),uk:String(n)},redirect:"manual"})).headers.get("location");if(!o)throw new Error("[BaiduPhoto] \u76F8\u518C\u6587\u4EF6\u672A\u8FD4\u56DE 302 \u8DF3\u8F6C");return o}downloadHeaders(){return{Referer:"https://photo.baidu.com/","User-Agent":lC}}async createAlbum(e){let t=await this.requestJson("POST",Vi+"/create",{query:{title:e,tid:rG(),source:"0"}});if(!t.album_id)throw new Error("[BaiduPhoto] \u521B\u5EFA\u76F8\u518C\u5931\u8D25");return this.getAlbumDetail(t.album_id)}async joinAlbum(e){let t=await this.requestJson("GET",Vi+"/querypcode",{query:{pcode:e,web:"1"}});if(!t.pdata?.invite_code)throw new Error("[BaiduPhoto] \u9080\u8BF7\u7801\u65E0\u6548");let i=await this.requestJson("GET",Vi+"/join",{query:{invite_code:t.pdata.invite_code}});if(!i.album_id)throw new Error("[BaiduPhoto] \u52A0\u5165\u76F8\u518C\u5931\u8D25");return this.getAlbumDetail(i.album_id)}async setAlbumName(e,t,i){await this.requestJson("POST",Vi+"/settitle",{form:{title:i,album_id:e,tid:String(t)}})}async deleteAlbum(e,t,i){await this.requestJson("POST",Vi+"/delete",{form:{album_id:e,tid:String(t),delete_origin_image:i?"1":"0"}})}async deleteFile(e){await this.requestJson("GET",fg+"/delete",{query:{fsid_list:`[${e}]`}})}async deleteAlbumFile(e,t,i,n,s){await this.requestJson("POST",Vi+"/delfile",{form:{album_id:t,tid:String(i),list:`[{"fsid":${e},"uk":${n}}]`,del_origin:s?"1":"0"}})}async addAlbumFile(e,t,i){await this.requestJson("GET",Vi+"/addfile",{query:{album_id:e,tid:String(t),list:Q3([i])}})}async copyAlbumFile(e,t,i,n){let s=await this.requestJson("POST",Vi+"/copyfile",{form:{album_id:t,tid:String(i),uk:String(n),list:Q3([e])}});if(!s.list||s.list.length===0)throw new Error("[BaiduPhoto] \u590D\u5236\u76F8\u518C\u6587\u4EF6\u5931\u8D25");return s.list[0].fsid}async upload(e,t,i){if(i.length===0)throw new Error("[BaiduPhoto] file size cannot be zero");let n=$t(i),s=$t(i.subarray(0,Math.min(tG,i.length))),o=[];for(let u=0;u0?r.thumburl[0]:"",raw_url:""}}function T3(r){return{name:Ho(r.path),size:r.size,is_dir:!1,modified:uC(r.mtime),sign:`albumfile:${r.fsid}|${r.album_id}|${r.tid}|${r.uk}`,type:X(Ho(r.path),!1),thumb:r.thumburl&&r.thumburl.length>0?r.thumburl[0]:"",raw_url:""}}function dC(r){if(r.startsWith("albumfile:")){let[e,t,i,n]=r.slice(10).split("|");return{kind:"albumfile",fsid:Number(e),albumId:t,tid:Number(i),uk:Number(n)}}if(r.startsWith("album:")){let[e,t]=r.slice(6).split("|");return{kind:"album",fsid:0,albumId:e,tid:Number(t),uk:0}}return{kind:"file",fsid:Number(r.slice(5)),albumId:"",tid:0,uk:0}}var gg,U3=V(()=>{"use strict";Be();_3();gg=class{client;showType;albumCache=new Map;constructor(e){this.client=new Ag(e),this.showType=e.show_type||"root"}async init(){await this.client.init()}async list(e,t){let i=t.split("/").filter(Boolean).join("/");if(!i){let o=[];if(this.showType!=="root_only_file"){let a=await this.client.getAllAlbum();for(let c of a)this.albumCache.set(c.title,c),o.push(F3(c))}if(this.showType!=="root_only_album"){let a=await this.client.getAllFile();o.push(...a.map(P3))}return o}let n=await this.findAlbum(i);if(!n)throw new Error(`[BaiduPhoto] \u76F8\u518C '${i}' \u672A\u627E\u5230`);return(await this.client.getAllAlbumFile(n.album_id,n.tid)).map(T3)}async get(e,t){let i=t.split("/").filter(Boolean),n=i[i.length-1]||"root",s=i.slice(0,-1).join("/");if(s){let o=await this.findAlbum(s);if(o){let c=(await this.client.getAllAlbumFile(o.album_id,o.tid)).find(l=>Ho(l.path)===n);if(c){let l=T3(c);try{l.raw_url=await this.client.linkAlbumFile(c.fsid,c.album_id,c.tid,c.uk),l.raw_url_headers=this.client.downloadHeaders()}catch{l.raw_url_error="[BaiduPhoto] failed to resolve download url"}return l}}}else{if(this.showType!=="root_only_file"){let a=(await this.client.getAllAlbum()).find(c=>c.title===n);if(a)return F3(a)}if(this.showType!=="root_only_album"){let a=(await this.client.getAllFile()).find(c=>Ho(c.path)===n);if(a){let c=P3(a);try{c.raw_url=await this.client.linkFile(a.fsid),c.raw_url_headers=this.client.downloadHeaders()}catch{c.raw_url_error="[BaiduPhoto] failed to resolve download url"}return c}}}return{name:n,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""}}async mkdir(e,t){if(t.split("/").filter(Boolean).join("/"))throw new Error("[BaiduPhoto] \u76F8\u518C\u4E0D\u652F\u6301\u521B\u5EFA\u5B50\u76EE\u5F55");let s=await this.client.createAlbum("new_album");this.albumCache.clear()}async rename(e,t,i){let n=await this.resolveEntry(t);if(n.kind!=="album")throw new Error("[BaiduPhoto] \u4EC5\u652F\u6301\u91CD\u547D\u540D\u76F8\u518C");await this.client.setAlbumName(n.albumId,n.tid,i),this.albumCache.clear()}async remove(e,t,i){let n=await this.resolveEntry(t);n.kind==="album"?await this.client.deleteAlbum(n.albumId,n.tid,!1):n.kind==="file"?await this.client.deleteFile(n.fsid):await this.client.deleteAlbumFile(n.fsid,n.albumId,n.tid,n.uk,!1),this.albumCache.clear()}async move(e,t,i,n,s){let o=await this.resolveEntry(n),a=t.split("/").filter(Boolean).join("/");if(o.kind==="albumfile"){if(!a)await this.client.copyAlbumFile(o.fsid,o.albumId,o.tid,o.uk);else{let c=await this.findAlbum(a);if(!c)throw new Error(`[BaiduPhoto] \u76F8\u518C '${a}' \u672A\u627E\u5230`);let l=await this.client.copyAlbumFile(o.fsid,o.albumId,o.tid,o.uk);await this.client.addAlbumFile(c.album_id,c.tid,l)}await this.client.deleteAlbumFile(o.fsid,o.albumId,o.tid,o.uk,!1);return}throw new Error("[BaiduPhoto] \u4EC5\u76F8\u518C\u6587\u4EF6\u652F\u6301\u79FB\u52A8")}async copy(e,t,i,n,s){let o=await this.resolveEntry(n),a=t.split("/").filter(Boolean).join("/");if(o.kind==="file"&&a){let c=await this.findAlbum(a);if(!c)throw new Error(`[BaiduPhoto] \u76F8\u518C '${a}' \u672A\u627E\u5230`);await this.client.addAlbumFile(c.album_id,c.tid,o.fsid);return}if(o.kind==="albumfile"){let c=await this.client.copyAlbumFile(o.fsid,o.albumId,o.tid,o.uk);if(a){let l=await this.findAlbum(a);if(!l)throw new Error(`[BaiduPhoto] \u76F8\u518C '${a}' \u672A\u627E\u5230`);await this.client.addAlbumFile(l.album_id,l.tid,c)}return}throw new Error("[BaiduPhoto] \u4E0D\u652F\u6301\u8BE5\u590D\u5236\u64CD\u4F5C")}async put(e,t,i){let n=t.split("/").filter(Boolean),s=n.pop()||"file",o=n.join("/"),a=null;if(o&&(a=await this.findAlbum(o),!a))throw new Error(`[BaiduPhoto] \u76F8\u518C '${o}' \u672A\u627E\u5230`);await this.client.upload(a,s,new Uint8Array(i)),this.albumCache.clear()}async resolveEntry(e){let t=e.split("/").filter(Boolean),i=t[t.length-1],n=t.slice(0,-1).join("/");if(n){let s=await this.findAlbum(n);if(s){let a=(await this.client.getAllAlbumFile(s.album_id,s.tid)).find(c=>Ho(c.path)===i);if(a)return dC(`albumfile:${a.fsid}|${a.album_id}|${a.tid}|${a.uk}`)}}else{if(this.showType!=="root_only_file"){let o=(await this.client.getAllAlbum()).find(a=>a.title===i);if(o)return dC(`album:${o.album_id}|${o.tid}`)}if(this.showType!=="root_only_album"){let o=(await this.client.getAllFile()).find(a=>Ho(a.path)===i);if(o)return dC(`file:${o.fsid}`)}}throw new Error(`[BaiduPhoto] '${i}' not found`)}async findAlbum(e){if(this.albumCache.has(e))return this.albumCache.get(e);let t=await this.client.getAllAlbum();for(let i of t)this.albumCache.set(i.title,i);return this.albumCache.get(e)||null}}});function gG(r){return r===99||String(r).startsWith("401")}var xn,iG,nG,sG,oG,aG,R3,cG,lG,dG,uG,fG,AG,hG,Tu,pg,N3=V(()=>{"use strict";xn="https://proapi.115.com",iG="https://passportapi.115.com",nG=xn+"/open/upload/get_token",sG=xn+"/open/upload/init",oG=xn+"/open/folder/add",aG=xn+"/open/ufile/files",R3=xn+"/open/folder/get_info",cG=xn+"/open/ufile/copy",lG=xn+"/open/ufile/move",dG=xn+"/open/ufile/downurl",uG=xn+"/open/ufile/update",fG=xn+"/open/ufile/delete",AG=xn+"/open/user/info",hG=iG+"/open/refreshToken";Tu=430004,pg=class r{addition;accessToken="";refreshTokenValue="";onTokenUpdate;rateLimitMs=0;lastRequestAt=0;constructor(e,t){this.addition=e,this.accessToken=e.access_token||"",this.refreshTokenValue=e.refresh_token||"",this.onTokenUpdate=t;let i=e.limit_rate||0;i>0&&(this.rateLimitMs=1e3/i)}async waitRateLimit(){if(this.rateLimitMs<=0)return;let e=Date.now(),t=this.lastRequestAt+this.rateLimitMs-e;t>0&&await new Promise(i=>setTimeout(i,t)),this.lastRequestAt=Date.now()}async fetchWithRetry(e,t){let i;for(let n=0;n<3;n++)try{let s=new AbortController,o=setTimeout(()=>s.abort(),2e4);try{return await fetch(e,{...t,signal:s.signal})}finally{clearTimeout(o)}}catch(s){i=s,n<2&&await new Promise(o=>setTimeout(o,500*(n+1)))}throw i}static describeNetError(e){let t=e,i=t?.cause?.code||t?.cause?.cause?.code,n=t?.cause?.message||t?.cause?.cause?.message;return i?`${t?.message||"fetch failed"}\uFF08${i}\uFF09`:n?`${t?.message||"fetch failed"}\uFF08${n}\uFF09`:t?.message||String(e)}async refreshToken(){if(!this.refreshTokenValue)throw new Error("115 \u7F51\u76D8\u7F3A\u5C11 refresh_token\uFF08\u5FC5\u586B\uFF09");let e=new URLSearchParams;e.set("refresh_token",this.refreshTokenValue);let i=await(await this.fetchWithRetry(hG,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:e.toString()})).json();if(i.code!==0||!i.data?.access_token||!i.data?.refresh_token)throw new Error(`115 \u7F51\u76D8 token \u5237\u65B0\u5931\u8D25\uFF08code ${i.code} ${i.message}\uFF09\uFF1A\u8BF7\u786E\u8BA4 refresh_token \u6709\u6548\u3002`);this.accessToken=i.data.access_token,this.refreshTokenValue=i.data.refresh_token,this.addition.access_token=this.accessToken,this.addition.refresh_token=this.refreshTokenValue,this.onTokenUpdate?.({access_token:this.accessToken,refresh_token:this.refreshTokenValue})}async request(e,t,i,n,s,o=!1){await this.waitRateLimit();let a=async()=>{let d=new URL(e);for(let[I,y]of Object.entries(i||{}))y!==""&&d.searchParams.set(I,y);let u={Accept:"application/json","User-Agent":s||"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Safari/537.36 Chrome/142.0.0.0 OpenList/425.6.30"};this.accessToken&&(u.Authorization=`Bearer ${this.accessToken}`);let f={method:t,headers:u};if(n&&t==="POST"){let I=new URLSearchParams;for(let[y,w]of Object.entries(n))w!==""&&I.set(y,w);u["Content-Type"]="application/x-www-form-urlencoded",f.body=I.toString()}let h=await this.fetchWithRetry(d.toString(),f),g=await h.text(),p;try{p=JSON.parse(g)}catch{p={state:!1,code:h.status,message:g.slice(0,200)}}return{body:p,rawText:g}},c;try{({body:c}=await a())}catch(d){throw new Error(r.describeNetError(d))}let l=c?.state;if(l===!1||l===void 0){let d=Number(c?.code??0);if(gG(d)&&!o){await this.refreshToken(),c=(await a()).body;let f=c?.state;if(f!==!1&&f!==void 0)return c;throw new Error(`115 \u7F51\u76D8 API \u9519\u8BEF\uFF08code ${c?.code} ${c?.message}\uFF09`)}if(d===Tu){let u=new Error("115 object not found");throw u.code=Tu,u}throw new Error(`115 \u7F51\u76D8 API \u9519\u8BEF\uFF08code ${d} ${c?.message||""}\uFF09`)}return c}async userInfo(){return(await this.request(AG,"GET"))?.data}async getFiles(e){let t=await this.request(aG,"GET",{cid:e.cid,limit:String(e.limit),offset:String(e.offset),asc:e.asc?"1":"0",o:e.o||"",show_dir:e.showDir?"1":"0",cur:"1"});return{files:t.data||[],count:t.count||0}}async getFolderInfo(e){return(await this.request(R3,"GET",{file_id:e}))?.data}async getFolderInfoByPath(e){return(await this.request(R3,"POST",void 0,{path:e}))?.data}async mkdir(e,t){return(await this.request(oG,"POST",void 0,{pid:e,file_name:t}))?.data}async move(e,t){await this.request(lG,"POST",void 0,{file_ids:e,to_cid:t})}async updateFile(e,t){await this.request(uG,"POST",void 0,{file_id:e,file_name:t})}async copy(e,t){await this.request(cG,"POST",void 0,{pid:e,file_id:t,no_dupli:"1"})}async delFile(e,t){await this.request(fG,"POST",void 0,{file_ids:e,parent_id:t})}async downUrl(e,t){return(await this.request(dG,"POST",void 0,{pick_code:e},t))?.data}async uploadGetToken(){return(await this.request(nG,"GET"))?.data}async uploadInit(e){return(await this.request(sG,"POST",void 0,{file_name:e.fileName,file_size:String(e.fileSize),target:`U_1_${e.target}`,fileid:e.fileId,preid:e.preId,sign_key:e.signKey||"",sign_val:e.signVal||""}))?.data}}});function q3(r){let e=r.fc==="0";return{name:r.fn,size:r.fs||0,is_dir:e,created:r.uppt?new Date(r.uppt*1e3).toISOString():void 0,modified:r.upt?new Date(r.upt*1e3).toISOString():new Date().toISOString(),sign:r.fid,type:X(r.fn,e),thumb:r.thumbnail||r.fco||"",raw_url:""}}function mG(r){let e={...r||{}};return e.order_by=e.order_by||"file_name",e.order_direction=e.order_direction||"asc",e.page_size=e.page_size||200,(e.root_folder_id||e.root_folder_id==="0")&&!e.root_id&&(e.root_id=String(e.root_folder_id)),e}var mg,pG,yg,O3=V(()=>{"use strict";Be();He();ni();N3();mg="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Safari/537.36 Chrome/142.0.0.0 OpenList/425.6.30",pG=45;yg=class r{client;addition;pageSize=200;parentPath="/";fidCache=new Map;budget={used:0,limit:pG};linkCache=new Map;static LINK_TTL_MS=1800*1e3;constructor(e,t){this.addition=mG(e),this.client=new pg(this.addition,t)}async init(){let t=this.addition.page_size||200;t<=0&&(t=200),t>1150&&(t=1150),this.pageSize=t;try{await this.client.userInfo()}catch(n){if(n?.code===Tu)throw n;let s=String(n?.message||n);throw s.includes("fetch")||s.includes("ECONN")||s.includes("abort")?new Error(`115 \u7F51\u76D8\u7F51\u7EDC\u8FDE\u63A5\u5931\u8D25\uFF08${s}\uFF09\uFF1Aproapi.115.com \u53EF\u80FD\u65E0\u6CD5\u4ECE\u5F53\u524D\u90E8\u7F72\u73AF\u5883\u8BBF\u95EE\uFF08\u6570\u636E\u4E2D\u5FC3 IP \u53EF\u80FD\u88AB 115 \u62E6\u622A\uFF09\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5\u6216\u66F4\u6362\u90E8\u7F72\u73AF\u5883\u3002`):new Error(`115 \u7F51\u76D8 token \u9A8C\u8BC1\u5931\u8D25\uFF1A${s}\u3002\u8BF7\u786E\u8BA4 access_token / refresh_token \u6709\u6548\u3002`)}let i=this.getRootId();if(i!=="0")try{let n=await this.client.getFolderInfo(i);if(n.file_id!=="0"){this.parentPath=`/${n.file_name}`;let s=[...n.paths||[]].reverse();for(let o of s)this.parentPath=`/${o.file_name}${this.parentPath}`}}catch(n){console.warn("[115open] init root path resolve failed:",n.message)}}getRootId(){return(this.addition.root_id||"0").trim()||"0"}reserve(){return this.budget.used>=this.budget.limit?(console.warn(`[115open] \u5DF2\u8FBE Cloudflare subrequest \u9884\u7B97\u4E0A\u9650(${this.budget.limit})\uFF0C\u7ED3\u679C\u5DF2\u622A\u65AD`),!1):(this.budget.used++,!0)}async list(e,t){this.budget.used=0;let i=await this.resolveFolderId(t),n=[],s=0;for(;this.reserve();){let{files:o,count:a}=await this.client.getFiles({cid:i,limit:this.pageSize,offset:s,asc:this.addition.order_direction==="asc",o:this.addition.order_by||"file_name",showDir:!0});for(let c of o)n.push(q3(c)),this.fidCache.set(c.fid,c.fid);if(n.length>=a||o.length===0)break;s+=o.length}return de(n,this.addition.order_by||"file_name",this.addition.order_direction)}async resolveFolderId(e){let t=this.getRootId(),i="/"+String(e||"").split("/").filter(Boolean).join("/");if(i==="/"||i===`/${t}`)return t;let n=this.fidCache.get(i);if(n)return n;let s=`/${t==="0"?"":t}${i==="/"?"":i}`;try{if(!this.reserve())throw new Error("subrequest budget exceeded");let l=await this.client.getFolderInfoByPath(s);if(l.file_id)return this.fidCache.set(i,l.file_id),l.file_id}catch(l){if(l?.code!==Tu&&l?.code!==990002)throw l}let o=i.split("/").filter(Boolean),a=t,c="";for(let l of o){let d=(()=>{try{return decodeURIComponent(l)}catch{return l}})();c=`${c}/${l}`;let u=this.fidCache.get(c);if(u){a=u;continue}if(!this.reserve())throw new Error("subrequest budget exceeded");let{files:f}=await this.client.getFiles({cid:a,limit:1e3,offset:0,asc:!0,o:"file_name",showDir:!0}),h=f.find(g=>g.fc==="0"&&(g.fn===l||g.fn===d||g.fid===l));if(!h)throw new Error(`folder not found: ${l}`);a=h.fid,this.fidCache.set(c,a)}return a}async resolveFile(e){let t="/"+String(e||"").split("/").filter(Boolean).join("/"),i=t.split("/").filter(Boolean),n=i.pop()||"";if(!n)throw new Error(`file not found: ${t}`);let s=(()=>{try{return decodeURIComponent(n)}catch{return n}})(),o="/"+i.join("/"),a=await this.resolveFolderId(o),c=0;for(;;){if(!this.reserve())throw new Error("subrequest budget exceeded");let{files:l,count:d}=await this.client.getFiles({cid:a,limit:Math.max(this.pageSize,1e3),offset:c,asc:!0,o:"file_name",showDir:!0}),u=l.find(f=>f.fn===n||f.fn===s||f.fid===n||f.fid===s);if(u)return u;if(l.length===0||c+l.length>=d)break;c+=l.length}throw new Error(`file not found: ${n}`)}async get(e,t){this.budget.used=0;let i="/"+String(t||"").split("/").filter(Boolean).join("/");if(i==="/"||i===`/${this.getRootId()}`)return{name:this.getRootId(),size:0,is_dir:!0,modified:new Date().toISOString(),sign:this.getRootId(),type:1,raw_url:""};let n=await this.resolveFile(t),s=q3(n);if(n.fc!=="0"&&n.pc)try{let o=`${n.fid}|${mg}`,a=this.linkCache.get(o);if(a&&a.expire>Date.now())s.raw_url=a.url,s.raw_url_headers={"User-Agent":mg};else{if(!this.reserve())throw new Error("subrequest budget exceeded");let l=(await this.client.downUrl(n.pc,mg))[n.fid];l?.url?.url&&(s.raw_url=l.url.url,s.raw_url_headers={"User-Agent":mg},this.linkCache.set(o,{url:l.url.url,expire:Date.now()+r.LINK_TTL_MS}))}}catch(o){String(o?.message||o).includes("406")?console.warn("[115open] downurl \u914D\u989D\u7528\u5C3D\uFF08406\uFF09\uFF1A\u5DF2\u4F7F\u7528\u7F13\u5B58\u6216\u7A0D\u540E\u91CD\u8BD5"):console.warn(`[115open] downUrl warning for ${n.fn}:`,o.message)}return s}async mkdir(e,t){this.budget.used=0;let i=String(t||"").split("/").filter(Boolean),n=i.pop()||"\u65B0\u6587\u4EF6\u5939",s="/"+i.join("/"),o=await this.resolveFolderId(s);if(!this.reserve())throw new Error("subrequest budget exceeded");await this.client.mkdir(o,n)}async rename(e,t,i){this.budget.used=0;let n=await this.resolveFile(t);if(!this.reserve())throw new Error("subrequest budget exceeded");await this.client.updateFile(n.fid,i)}async remove(e,t,i){this.budget.used=0;let n=await this.resolveFile(t);if(!this.reserve())throw new Error("subrequest budget exceeded");await this.client.delFile(n.fid,n.pid||this.getRootId())}async move(e,t,i,n,s){this.budget.used=0;let o=await this.resolveFile(n),a=await this.resolveFolderId(t);if(!this.reserve())throw new Error("subrequest budget exceeded");await this.client.move(o.fid,a)}async copy(e,t,i,n,s){this.budget.used=0;let o=await this.resolveFile(n),a=await this.resolveFolderId(t);if(!this.reserve())throw new Error("subrequest budget exceeded");await this.client.copy(a,o.fid)}async put(e,t,i){if(i.length<1)throw new Error("115 \u7F51\u76D8\u4E0D\u5141\u8BB8\u4E0A\u4F20\u7A7A\u6587\u4EF6");this.budget.used=0;let n=String(t||"").split("/").filter(Boolean),s=n.pop()||"file",o="/"+n.join("/"),c=await this.resolveFolderId(o),l=i.length,d=(await Qo(i)).toUpperCase(),u=Math.min(128*1024,l),f=(await Qo(i.subarray(0,u))).toUpperCase();if(!this.reserve())throw new Error("subrequest budget exceeded");let h=await this.client.uploadInit({fileName:s,fileSize:l,target:c,fileId:d,preId:f});if(h.status===2)return;if([6,7,8].includes(h.status)&&h.sign_check){let p=h.sign_check.split("-"),I=parseInt(p[0],10),y=parseInt(p[1],10);if(Number.isFinite(I)&&Number.isFinite(y)){let w=(await Qo(i.subarray(I,y+1))).toUpperCase();if(!this.reserve())throw new Error("subrequest budget exceeded");if(h=await this.client.uploadInit({fileName:s,fileSize:l,target:c,fileId:d,preId:f,signKey:h.sign_key,signVal:w}),h.status===2)return}}if(!this.reserve())throw new Error("subrequest budget exceeded");let g=await this.client.uploadGetToken();if(!h.bucket||!h.object||!g.endpoint)throw new Error("115 \u4E0A\u4F20\u521D\u59CB\u5316\u5931\u8D25\uFF1A\u7F3A\u5C11 OSS \u4E0A\u4F20\u4FE1\u606F");await this.ossPutObject(g,h,i)}async ossPutObject(e,t,i){let s=`${(e.endpoint.startsWith("http")?e.endpoint:`https://${e.endpoint}`).replace(/\/$/,"")}/${t.object}`,o=Buffer.from(t.callback?.callback||"","utf8").toString("base64"),a=Buffer.from(t.callback?.callback_var||"","utf8").toString("base64"),c=new Date().toUTCString(),l="application/octet-stream",d=`x-oss-callback:${o} +--${a}--`),f=Buffer.concat([d,i,u]);await this.request(`${aD}/files?${o.toString()}`,{method:"POST",headers:{"Content-Type":`multipart/related; boundary=${a}`},body:f})}else{let o=new URLSearchParams({uploadType:"resumable",supportsAllDrives:"true"});await this.ensureToken();let a=await fetch(`${aD}/files?${o.toString()}`,{method:"POST",headers:{Authorization:`Bearer ${this.accessToken}`,"Content-Type":"application/json","X-Upload-Content-Type":n,"X-Upload-Content-Length":String(i.length)},body:JSON.stringify({name:t,parents:[e]})});if(!a.ok)throw new Error(`[GoogleDrive] Resumable upload init failed: ${a.status}`);let c=a.headers.get("location");if(!c)throw new Error("[GoogleDrive] No upload URL returned");let l=0;for(;l{try{return decodeURIComponent(o)}catch{return o}})(),c=i.slice(0,s+1).join("/");if(this.pathCache.has(c)){n=this.pathCache.get(c);continue}let d=(await this.listFiles(n)).find(u=>u.name===o||u.name===a||u.id===o);if(!d)throw new Error(`[GoogleDrive] Path '${o}' not found`);n=d.id,this.pathCache.set(c,n)}return n}async resolveParentAndName(e){let t=e.split("/").filter(Boolean),i=t.pop()||"unnamed",n="/"+t.join("/");return{parentId:await this.resolveFileId(n),name:i}}}});function lD(r){return{name:r.name,size:r.size?parseInt(r.size,10):0,is_dir:r.mimeType===Mu,modified:r.modifiedTime||r.createdTime||new Date().toISOString(),sign:"",type:r.mimeType===Mu?1:0,thumb:r.thumbnailLink||"",raw_url:""}}var Ch,dD=j(()=>{"use strict";He();AC();cD();Ch=class{client;addition;constructor(e){this.addition=e,this.client=new xh(e)}async init(){await this.client.init()}async list(e,t){let i=await this.client.resolveFileId(t),s=(await this.client.listFiles(i)).map(lD);return de(s,this.addition.order_by,this.addition.order_direction)}async get(e,t){let i=await this.client.resolveFileId(t),n=await this.client.getFile(i).catch(()=>null);if(n){let a=lD(n);return a.raw_url=this.client.getDownloadUrl(i),a.raw_url_headers=this.client.getDownloadHeaders(),a}let s=t.split("/").filter(Boolean),o=s[s.length-1]||"root";try{return await this.client.listFiles(i),{name:o,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""}}catch{}return{name:o,size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:0,raw_url:""}}async mkdir(e,t){let{parentId:i,name:n}=await this.client.resolveParentAndName(t);await this.client.mkdir(i,n)}async rename(e,t,i){let n=await this.client.resolveFileId(t);await this.client.rename(n,i)}async remove(e,t,i){let n=await this.client.resolveFileId(t);await this.client.remove(n)}async move(e,t,i,n,s){let o=await this.client.resolveFileId(n),a=n.split("/").filter(Boolean);a.pop();let c=await this.client.resolveFileId("/"+a.join("/")),l=await this.client.resolveFileId(t);await this.client.move(o,c,l)}async copy(e,t,i,n,s){let o=await this.client.resolveFileId(n),a=n.split("/").filter(Boolean).pop()||"copy",c=await this.client.resolveFileId(t);await this.client.copy(o,c,a)}async put(e,t,i){let{parentId:n,name:s}=await this.client.resolveParentAndName(t);await this.client.putFile(n,s,i)}}});function CK(r="Quark"){return r==="UC"?xK:wK}function uD(r,e,t){let i=r.split(";").map(o=>o.trim()).filter(Boolean),n=i.findIndex(o=>{let a=o.indexOf("=");return a!==-1&&o.substring(0,a).trim()===e}),s=`${e}=${t}`;return n!==-1?i[n]=s:i.push(s),i.join("; ")}function fD(r,e){let t=r.split(/,(?=[^;]+=[^;]+)/);for(let i of t){let s=i.split(";")[0].trim(),o=s.indexOf("=");if(o!==-1&&s.substring(0,o).trim()===e)return s.substring(o+1).trim()}return null}function EK(r){return r.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,'"').replace(/'/g,"'").replace(/'/g,"'")}function BK(r){let e=r.split(".").pop()?.toLowerCase()||"",t=["mp4","mkv","avi","mov","flv","wmv","ts","m2ts","m4v","rmvb","webm"],i=["mp3","flac","aac","wav","ogg","m4a","opus"],n=["jpg","jpeg","png","gif","bmp","webp","heic","tiff"],s=["pdf","doc","docx","xls","xlsx","ppt","pptx","txt","md"];return t.includes(e)?"video":i.includes(e)?"audio":n.includes(e)?"image":s.includes(e)?"doc":"others"}var wK,xK,Eh,AD=j(()=>{"use strict";wK={ua:"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) quark-cloud-drive/2.5.20 Chrome/100.0.4896.160 Electron/18.3.5.4-b478491100 Safari/537.36 Channel/pckk_other_ch",referer:"https://pan.quark.cn",api:"https://drive-m.quark.cn/1/clouddrive",pr:"ucpro"},xK={ua:"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) uc-cloud-drive/2.5.20 Chrome/100.0.4896.160 Electron/18.3.5.4-b478491100 Safari/537.36 Channel/pckk_other_ch",referer:"https://drive.uc.cn",api:"https://pc-api.uc.cn/1/clouddrive",pr:"UCBrowser"};Eh=class{addition;conf;cookie;onCookieUpdate;constructor(e,t){this.addition=e,this.conf=CK(e.variant||"Quark"),this.cookie=e.cookie||"",this.onCookieUpdate=t}getRootFolderId(){return(this.addition.root_folder_id||"").trim()||"0"}getVariant(){return this.addition.variant||"Quark"}getConf(){return this.conf}getCookie(){return this.cookie}async request(e,t,i,n){let s=new URL(this.conf.api+e);if(s.searchParams.set("pr",this.conf.pr),s.searchParams.set("fr","pc"),i)for(let[u,f]of Object.entries(i))s.searchParams.set(u,f);let o={Cookie:this.cookie,Accept:"application/json, text/plain, */*",Referer:this.conf.referer,"Content-Type":"application/json","User-Agent":this.conf.ua},a={method:t,headers:o};n!==void 0&&t!=="GET"&&(a.body=JSON.stringify(n));let c=await fetch(s.toString(),a),l=c.headers.get("set-cookie");if(l){let u=fD(l,"__puus");if(u&&(this.cookie=uD(this.cookie,"__puus",u),this.onCookieUpdate?.(this.cookie)),this.addition.variant==="Quark"){let f=fD(l,"__pus");f&&(this.cookie=uD(this.cookie,"__pus",f),this.onCookieUpdate?.(this.cookie))}}let d=await c.json();if(!c.ok||d.status!==void 0&&d.status>=400||d.code!==void 0&&d.code!==0){let u=d.message||d.msg||`HTTP ${c.status}`;throw new Error(`[Quark/UC] API error [${c.status}] ${e}: ${u}`)}return d}async getFiles(e){let t=[],i=1,n=100,s={pdir_fid:e,_size:String(n),_fetch_total:"1",fetch_all_file:"1",fetch_risk_file_name:"1"};if(this.addition.order_by&&this.addition.order_by!=="none"){let o=this.addition.order_direction||"asc";s._sort=`file_type:asc,${this.addition.order_by}:${o}`}for(;;){s._page=String(i);let o=await this.request("/file/sort","GET",s),a=o?.data?.list||[];if(a.length===0)break;for(let l of a)l.file_name=EK(l.file_name),this.addition.only_list_video_file?(!l.file||l.category===1)&&t.push(l):t.push(l);let c=o.metadata?.total??0;if(c>0&&i*n>=c||a.length{"use strict";Be();AD();Bh=class{client;pathFileIdCache=new Map;constructor(e){this.client=new Eh(e)}async init(){await this.client.init()}async list(e,t){let i=await this.resolveFileId(t);return(await this.client.getFiles(i)).map(hD)}async get(e,t){let i=t.split("/").filter(Boolean),n=await this.resolveFileId(t),s=i[i.length-1]||"root",o=(()=>{try{return decodeURIComponent(s)}catch{return s}})(),a="/"+i.slice(0,i.length-1).join("/"),c=await this.resolveFileId(a),d=(await this.client.getFiles(c)).find(h=>h.fid===n||h.file_name===s||h.file_name===o),u="",f;try{let h=await this.client.getDownloadUrl(n,o);u=h.url,f=h.headers}catch(h){console.warn(`[Quark/UC] getDownloadUrl warning for ${s}:`,h.message)}if(d){let h=hD(d);return h.raw_url=u,h.raw_url_headers=f,h}try{return await this.client.getFiles(n),{name:o||"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""}}catch{}return{name:o||"root",size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:0,raw_url:u,raw_url_headers:f}}async mkdir(e,t){let i=t.split("/").filter(Boolean),n=i.pop()||"\u65B0\u6587\u4EF6\u5939",s="/"+i.join("/"),o=await this.resolveFileId(s);await this.client.mkdir(o,n)}async rename(e,t,i){let n=await this.resolveFileId(t);await this.client.rename(n,i)}async remove(e,t,i){let n=await this.resolveFileId(t);await this.client.remove([n])}async move(e,t,i,n,s){let o=await this.resolveFileId(n),a=await this.resolveFileId(t);await this.client.move([o],a)}async copy(e,t,i,n,s){let o=await this.resolveFileId(n),a=await this.resolveFileId(t);await this.client.copy([o],a)}async put(e,t,i){throw new Error("[Quark/UC] Direct put not supported in stateless environment")}async resolveFileId(e){let t=e.split("/").filter(Boolean).join("/");if(!t)return this.client.getRootFolderId();if(this.pathFileIdCache.has(t))return this.pathFileIdCache.get(t);let i=t.split("/"),n=this.client.getRootFolderId();for(let s=0;s{try{return decodeURIComponent(o)}catch{return o}})(),l=(await this.client.getFiles(n)).find(u=>u.file_name===o||u.file_name===a||u.fid===o);if(!l)throw new Error(`[Quark/UC] Path '${o}' not found in folder '${n}'`);n=l.fid;let d="/"+i.slice(0,s+1).join("/");this.pathFileIdCache.set(d,n)}return n}}});var pD,bK,mD,bh,yD=j(()=>{"use strict";pD="https://proapi.115.com/open",bK="https://passportapi.115.com",mD="Mozilla/5.0 115disk/42.0.0.2",bh=class{accessToken;refreshToken;addition;rootId;constructor(e){this.addition=e,this.accessToken=e.access_token||"",this.refreshToken=e.refresh_token||"",this.rootId=e.root_folder_id||"0"}getRootFolderId(){return this.rootId}async init(){if(!this.accessToken)throw new Error("[115] access_token is required");await this.getUserInfo()}async request(e,t={},i=pD){let n=`${i}${e}`,o=await(await fetch(n,{method:"POST",headers:{"User-Agent":mD,Accept:"application/json","Content-Type":"application/json",Authorization:`Bearer ${this.accessToken}`},body:JSON.stringify(t)})).json().catch(()=>({}));if(o?.state===!1||o?.errno){if(o.errno===990001||o.errcode===990001||o.errno===10008)return await this.refreshAccessToken(),this.request(e,t,i);throw new Error(`[115] ${o.error||o.errmsg||"API error"} (${o.errno||o.errcode||""})`)}return o}async getUserInfo(){return this.request("/user/info",{},bK)}async refreshAccessToken(){let e=`${pD}/oauth2/token`,i=await(await fetch(e,{method:"POST",headers:{"Content-Type":"application/json","User-Agent":mD},body:JSON.stringify({grant_type:"refresh_token",refresh_token:this.refreshToken})})).json().catch(()=>({}));if(i?.access_token)this.accessToken=i.access_token,this.addition.access_token=i.access_token,i.refresh_token&&(this.refreshToken=i.refresh_token,this.addition.refresh_token=i.refresh_token);else throw new Error(`[115] refresh token failed: ${JSON.stringify(i)}`)}async getFiles(e){let t=await this.request("/open/ufile/files",{cid:e,limit:1e3,offset:0,order:this.addition.order_by||"user_utime",asc:this.addition.order_direction==="asc"?1:0,show_dir:1,fc_mix:1});return t?.data&&Array.isArray(t.data)?t.data:t?.files&&Array.isArray(t.files)?t.files.map(i=>({Fid:i.fid??i.id,Fn:i.n??i.file_name??i.name,Fc:String(i.fc??i.category??(i.pid!==void 0&&!i.pid?"0":"1")),FS:Number(i.s??i.size??0),Sha1:i.sha1,Pc:i.pc??i.pick_code,Thumbnail:i.thumb??i.thumbnail,Upt:i.tu??i.upt??i.updated_at,Pid:i.pid??i.cid})):[]}async resolvePathId(e,t){let i=e.split("/").filter(Boolean).join("/");if(!i)return this.rootId;if(t.has(i))return t.get(i);let n=i.split("/"),s=this.rootId;for(let o=0;o{try{return decodeURIComponent(a)}catch{return a}})(),d=(await this.getFiles(s)).find(f=>f.Fn===a||f.Fn===c||f.Fid===a);if(!d)throw new Error(`[115] Path '${a}' not found in '${s}'`);s=d.Fid;let u="/"+n.slice(0,o+1).join("/");t.set(u,s)}return s}async mkdir(e,t){await this.request("/open/ufile/add",{pid:e,cname:t})}async rename(e,t){await this.request("/open/ufile/edit",{fid:e,fname:t})}async move(e,t){await this.request("/open/ufile/move",{pid:e,fid:t,no_dupli:"1"})}async copy(e,t){await this.request("/open/ufile/copy",{pid:e,fid:t,no_dupli:"1"})}async remove(e){await this.request("/open/ufile/delete",{fid:e,ignore_warn:1})}async getDownloadUrl(e){let t=await this.request("/open/ufile/downurl",{pickcode:e}),i=t?.url||t?.data?.url||"";if(!i)throw new Error("[115] empty download url");return i}}});function ID(r){let e=r.Fc==="0",t=r.Upt?new Date(r.Upt*1e3).toISOString():new Date().toISOString();return{name:r.Fn,size:r.FS||0,is_dir:e,modified:t,sign:"",type:X(r.Fn,e),thumb:r.Thumbnail||"",raw_url:""}}var vh,wD=j(()=>{"use strict";Be();yD();vh=class{client;pathCache=new Map;constructor(e){this.client=new bh(e)}async init(){await this.client.init()}async list(e,t){let i=await this.client.resolvePathId(t,this.pathCache);return(await this.client.getFiles(i)).map(ID)}async get(e,t){let i=t.split("/").filter(Boolean),n=i[i.length-1]||"root",s=(()=>{try{return decodeURIComponent(n)}catch{return n}})(),o="/"+i.slice(0,-1).join("/"),a=await this.client.resolvePathId(o,this.pathCache),l=(await this.client.getFiles(a)).find(d=>d.Fn===n||d.Fn===s||d.Fid===n);if(l){let d=ID(l);if(!d.is_dir&&l.Pc)try{let u=await this.client.getDownloadUrl(l.Pc);d.raw_url=u}catch(u){d.raw_url_error=u.message}return d}try{let d=await this.client.resolvePathId(t,this.pathCache);return await this.client.getFiles(d),{name:s||"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""}}catch{return{name:s||"root",size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:0,raw_url:""}}}async mkdir(e,t){let i=t.split("/").filter(Boolean),n=i.pop()||"new_folder",s="/"+i.join("/"),o=await this.client.resolvePathId(s,this.pathCache);await this.client.mkdir(o,n)}async rename(e,t,i){let n=await this.client.resolvePathId(t,this.pathCache);await this.client.rename(n,i)}async remove(e,t,i){let n=await this.client.resolvePathId(t,this.pathCache);await this.client.remove([n])}async move(e,t,i,n,s){let o=await this.client.resolvePathId(n,this.pathCache),a=await this.client.resolvePathId(t,this.pathCache);await this.client.move(a,[o])}async copy(e,t,i,n,s){let o=await this.client.resolvePathId(n,this.pathCache),a=await this.client.resolvePathId(t,this.pathCache);await this.client.copy(a,[o])}async put(e,t,i){throw new Error("[115] Direct put not supported in stateless environment")}}});var kh,xD=j(()=>{"use strict";kh=class{address;addition;accessToken="";constructor(e){this.addition=e,this.address=(e.address||"").replace(/\/+$/,""),this.accessToken=e.access_token||""}async init(){if(!this.address)throw new Error("[Cloudreve] address is required");this.addition.username&&this.addition.password?await this.login():this.addition.refresh_token&&await this.refreshToken()}async login(){let t=await(await fetch(`${this.address}/api/v4/session`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({username:this.addition.username,password:this.addition.password})})).json().catch(()=>({}));if(t?.token)this.accessToken=t.token,t.refresh_token&&(this.addition.refresh_token=t.refresh_token);else throw new Error("[Cloudreve] login failed")}async refreshToken(){let t=await(await fetch(`${this.address}/api/v4/session/renew`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.addition.refresh_token}`}})).json().catch(()=>({}));t?.token&&(this.accessToken=t.token)}async request(e,t,i,n=!1){let s={Authorization:`Bearer ${this.accessToken}`,"Content-Type":"application/json"};this.addition.custom_ua&&(s["User-Agent"]=this.addition.custom_ua);let o={method:e,headers:s};i&&(o.body=JSON.stringify(i));let a=await fetch(`${this.address}/api/v4${t}`,o);if(a.status===401&&!n)return this.addition.refresh_token?await this.refreshToken():this.addition.username&&await this.login(),this.request(e,t,i,!0);if(e==="DELETE"&&a.ok)return{};let c=await a.json().catch(()=>({}));if(a.status>=400)throw new Error(`[Cloudreve] ${c?.msg||c?.message||`HTTP ${a.status}`}`);return c}async listFiles(e){let t=[],i="",n=e==="/"?"/":e;do{let s={page_size:"100",uri:n,order_by:this.addition.order_by||"name",order_direction:this.addition.order_direction||"asc",page:"0"};i&&(s.next_page_token=i);let o=new URLSearchParams(s).toString(),a=await this.request("GET",`/file?${o}`);a?.files&&t.push(...a.files),i=a?.pagination?.next_token||""}while(i);return t}async getDownloadUrl(e){let i=(await this.request("POST","/file/url",{uris:[e],download:!0}))?.urls?.[0]?.url||"";if(!i)throw new Error("[Cloudreve] empty download url");return i}async mkdir(e,t){let i=`${e.replace(/\/+$/,"")}/${t}`;await this.request("POST","/file/create",{type:"folder",uri:i,error_on_conflict:!0})}async rename(e,t){let i=e.lastIndexOf("/"),s=`${i>=0?e.slice(0,i+1):"/"}${t}`;await this.request("POST","/file/rename",{uris:[e],new_uri:s})}async move(e,t,i){await this.request("POST","/file/move",{uris:e,dst:t,copy:i})}async remove(e){await this.request("DELETE","/file",{uris:e,unlink:!1,skip_soft_delete:!0})}}});function CD(r){let e=r.type===1;return{name:r.name,size:r.size||0,is_dir:e,modified:r.updated_at||new Date().toISOString(),sign:"",type:X(r.name,e),raw_url:""}}function Ps(r){return!r||r==="/"?"/":r.startsWith("/")?r:"/"+r}var Sh,ED=j(()=>{"use strict";Be();xD();Sh=class{client;constructor(e){this.client=new kh(e)}async init(){await this.client.init()}async list(e,t){return(await this.client.listFiles(Ps(t))).map(CD)}async get(e,t){let i=Ps(t),n=i.split("/").filter(Boolean),s=n[n.length-1]||"root",o="/"+n.slice(0,-1).join("/");try{let c=(await this.client.listFiles(o==="//"?"/":o)).find(l=>l.name===s||l.path===i);if(c){let l=CD(c);if(!l.is_dir)try{l.raw_url=await this.client.getDownloadUrl(i)}catch(d){l.raw_url_error=d.message}return l}}catch{}try{let a=await this.client.listFiles(i);return{name:s,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""}}catch{return{name:s,size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:0,raw_url:""}}}async mkdir(e,t){let n=Ps(t).split("/").filter(Boolean),s=n.pop()||"new_folder",o="/"+n.join("/");await this.client.mkdir(o==="//"?"/":o,s)}async rename(e,t,i){await this.client.rename(Ps(t),i)}async remove(e,t,i){await this.client.remove([Ps(t)])}async move(e,t,i,n,s){await this.client.move([Ps(n)],Ps(t),!1)}async copy(e,t,i,n,s){await this.client.move([Ps(n)],Ps(t),!0)}async put(e,t,i){throw new Error("[Cloudreve] Direct put not supported in stateless environment")}}});var vK,Dh,BD=j(()=>{"use strict";vK="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",Dh=class{addition;address;cookie;persistCookie;constructor(e,t){this.addition=e,this.address=(e.address||"").replace(/\/+$/,""),this.cookie=e.cookie||"",this.persistCookie=t}async init(){if(!this.address)throw new Error("[Cloudreve] address is required");this.cookie||await this.login()}getCookie(){return this.cookie}getUA(){return this.addition.custom_ua||vK}async login(){if(!this.addition.username||!this.addition.password)throw new Error("[Cloudreve] username/password or cookie is required");let e=await fetch(`${this.address}/api/v3/user/session`,{method:"POST",headers:{"Content-Type":"application/json","User-Agent":this.getUA()},body:JSON.stringify({username:this.addition.username,Password:this.addition.password,captchaCode:""})}),t=await e.json().catch(()=>({}));if(t.code!==0)throw new Error(`[Cloudreve] login failed: ${t.msg}`);let i=this.extractSessionCookie(e);if(!i)throw new Error("[Cloudreve] login failed: no session cookie");this.cookie=i,this.persistCookie&&await this.persistCookie(this.cookie)}extractSessionCookie(e){let t=typeof e.headers.getSetCookie=="function"?e.headers.getSetCookie():[];if(Array.isArray(t)){for(let s of t)if(s&&s.includes("cloudreve-session="))return s.split(";")[0].split("=")[1]}let i=e.headers.get("set-cookie")||"",n=/cloudreve-session=([^;]+)/.exec(i);return n?n[1]:""}async request(e,t,i,n=!1){let s={Cookie:`cloudreve-session=${this.cookie}`,Accept:"application/json, text/plain, */*","User-Agent":this.getUA()},o={method:e,headers:s};i!==void 0&&(s["Content-Type"]="application/json",o.body=JSON.stringify(i));let a=await fetch(`${this.address}/api/v3${t}`,o),c=await a.json().catch(()=>({}));if(c.code===401&&t!=="/user/session"&&!n&&this.addition.username&&this.addition.password)return await this.login(),this.request(e,t,i,!0);if(c.code!==0)throw new Error(`[Cloudreve] ${c.msg||`HTTP ${a.status}`}`);let l=this.extractSessionCookie(a);return l&&(this.cookie=l),c.data}async listFiles(e){return(await this.request("GET",`/directory${e}`))?.objects||[]}async getDownloadUrl(e){let t=await this.request("PUT",`/file/download/${e}`);if(!t)throw new Error("[Cloudreve] empty download url");return t.startsWith("/api")?this.address+t:t}downloadHeaders(){return{Referer:this.address,"User-Agent":this.getUA()}}async mkdir(e){await this.request("PUT","/directory",{path:e})}async move(e,t,i){await this.request("PATCH","/object",{action:"move",src_dir:e,dst:t,src:i})}async rename(e,t){await this.request("PATCH","/object/rename",{action:"rename",new_name:t,src:e})}async copy(e,t,i){await this.request("POST","/object/copy",{src_dir:e,dst:t,src:i})}async remove(e){await this.request("DELETE","/object",e)}}});function bD(r){let e=r.type==="dir";return{name:r.name,size:r.size||0,is_dir:e,modified:r.date||r.create_date||new Date().toISOString(),sign:r.id,type:X(r.name,e),raw_url:""}}function Sl(r){return!r||r==="/"?"/":r.startsWith("/")?r:"/"+r}var Qh,vD=j(()=>{"use strict";Be();BD();Qh=class{client;constructor(e,t){this.client=new Dh(e,t)}async init(){await this.client.init()}async list(e,t){return(await this.client.listFiles(Sl(t))).map(bD)}async get(e,t){let n=Sl(t).split("/").filter(Boolean),s=n[n.length-1]||"root",o="/"+n.slice(0,-1).join("/");try{let c=(await this.client.listFiles(o==="//"?"/":o)).find(l=>l.name===s);if(c){let l=bD(c);if(!l.is_dir)try{l.raw_url=await this.client.getDownloadUrl(c.id),l.raw_url_headers=this.client.downloadHeaders()}catch(d){l.raw_url_error=d.message}return l}}catch{}return{name:s,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""}}async mkdir(e,t){await this.client.mkdir(Sl(t))}async rename(e,t,i){let n=await this.resolveEntry(t);await this.client.rename(n.src,i)}async remove(e,t,i){let n=await this.resolveEntry(t);await this.client.remove(n.src)}async move(e,t,i,n,s){let o=await this.resolveEntry(n),c="/"+n.split("/").filter(Boolean).slice(0,-1).join("/");await this.client.move(c,Sl(t),o.src)}async copy(e,t,i,n,s){let o=await this.resolveEntry(n),c="/"+n.split("/").filter(Boolean).slice(0,-1).join("/");await this.client.copy(c,Sl(t),o.src)}async put(){throw new Error("[Cloudreve] Direct put not supported in stateless environment")}async resolveEntry(e){let i=Sl(e).split("/").filter(Boolean),n=i[i.length-1],s="/"+i.slice(0,-1).join("/"),a=(await this.client.listFiles(s==="//"?"/":s)).find(d=>d.name===n);if(!a)throw new Error(`[Cloudreve] '${n}' not found`);let c=a.type==="dir";return{src:c?{dirs:[a.id],items:[]}:{dirs:[],items:[a.id]},isDir:c}}}});var _h,kD=j(()=>{"use strict";_h=class{url;addition;token="";constructor(e){this.addition=e,this.url=(e.url||"").replace(/\/+$/,""),this.token=e.token||""}async init(){if(!this.url)throw new Error("[OpenList] url is required");this.addition.username&&this.addition.password&&await this.login()}async login(){let t=await(await fetch(`${this.url}/api/auth/login`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({username:this.addition.username,password:this.addition.password})})).json().catch(()=>({}));if(t?.data?.token)this.token=t.data.token;else throw new Error("[OpenList] login failed")}async request(e,t="POST",i){let n={"Content-Type":"application/json"};this.token&&(n.Authorization=this.token),this.addition.meta_password&&(n["Meta-Password"]=this.addition.meta_password);let s={method:t,headers:n};return i&&(s.body=JSON.stringify(i)),await(await fetch(`${this.url}${e}`,s)).json()}async list(e){let t=await this.request("/api/fs/list","POST",{path:e,page:1,per_page:0});if(t.code!==200)throw new Error(`[OpenList] ${t.message}`);return t.data?.content||[]}async get(e){let t=await this.request("/api/fs/get","POST",{path:e});if(t.code!==200)throw new Error(`[OpenList] ${t.message}`);return t.data}async mkdir(e){let t=await this.request("/api/fs/mkdir","POST",{path:e});if(t.code!==200)throw new Error(`[OpenList] ${t.message}`)}async rename(e,t){let i=await this.request("/api/fs/rename","POST",{path:e,name:t});if(i.code!==200)throw new Error(`[OpenList] ${i.message}`)}async move(e,t,i){let n=await this.request("/api/fs/move","POST",{src_dir:e,dst_dir:t,names:i});if(n.code!==200)throw new Error(`[OpenList] ${n.message}`)}async copy(e,t,i){let n=await this.request("/api/fs/copy","POST",{src_dir:e,dst_dir:t,names:i});if(n.code!==200)throw new Error(`[OpenList] ${n.message}`)}async remove(e,t){let i=await this.request("/api/fs/remove","POST",{dir:e,names:t});if(i.code!==200)throw new Error(`[OpenList] ${i.message}`)}}});var Fh,SD=j(()=>{"use strict";Be();kD();Fh=class{client;constructor(e){this.client=new _h(e)}async init(){await this.client.init()}async list(e,t){return(await this.client.list(t)).map(n=>({name:n.name,size:n.size||0,is_dir:!!n.is_dir,modified:n.modified||new Date().toISOString(),sign:n.sign||"",type:X(n.name,!!n.is_dir),thumb:n.thumb||"",raw_url:n.raw_url||""}))}async get(e,t){try{let i=await this.client.get(t);return{name:i.name,size:i.size||0,is_dir:!!i.is_dir,modified:i.modified||new Date().toISOString(),sign:i.sign||"",type:X(i.name,!!i.is_dir),raw_url:i.raw_url||""}}catch{try{await this.client.list(t);let i=t.split("/").filter(Boolean);return{name:i[i.length-1]||"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""}}catch{let i=t.split("/").filter(Boolean);return{name:i[i.length-1]||"root",size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:0,raw_url:""}}}}async mkdir(e,t){await this.client.mkdir(t)}async rename(e,t,i){await this.client.rename(t,i)}async remove(e,t,i){let n=t.split("/").filter(Boolean),s="/"+n.slice(0,-1).join("/");await this.client.remove(s,i.length?i:[n[n.length-1]])}async move(e,t,i,n,s){await this.client.move(e,t,i)}async copy(e,t,i,n,s){await this.client.copy(e,t,i)}async put(e,t,i){throw new Error("[OpenList] Direct put not supported in stateless environment")}}});var Ph,DD=j(()=>{"use strict";Ph=class{url;sid;pwd;constructor(e){this.url=(e.url||"").replace(/\/+$/,""),this.sid=e.sid||"",this.pwd=e.pwd||""}init(){if(!this.url)throw new Error("[OpenListShare] url is required");if(!this.sid)throw new Error("[OpenListShare] sid is required")}async request(e,t="POST",i){return await(await fetch(`${this.url}${e}`,{method:t,headers:{"Content-Type":"application/json"},body:i?JSON.stringify(i):void 0})).json()}sharePath(e){return"/@s/"+this.sid+(e==="/"?"":e)}async list(e){let t=await this.request("/api/fs/list","POST",{path:this.sharePath(e),password:this.pwd,refresh:!1,page:1,per_page:0});if(t.code!==200)throw new Error(`[OpenListShare] ${t.message}`);return t.data?.content||[]}downloadUrl(e){let t="/"+this.sid+e;return`${this.url}/sd${t}?pwd=${encodeURIComponent(this.pwd)}`}}});function QD(r){return{name:r.name,size:r.size||0,is_dir:r.is_dir,modified:r.modified||new Date().toISOString(),sign:r.sign||"",type:X(r.name,r.is_dir),thumb:r.thumb||"",raw_url:""}}function _D(r){return!r||r==="/"?"/":r.startsWith("/")?r:"/"+r}var Th,FD=j(()=>{"use strict";Be();DD();Th=class{client;constructor(e){this.client=new Ph(e)}async init(){this.client.init()}async list(e,t){return(await this.client.list(_D(t))).map(QD)}async get(e,t){let i=_D(t),n=i.split("/").filter(Boolean),s=n[n.length-1]||"root",o="/"+n.slice(0,-1).join("/");try{let c=(await this.client.list(o==="//"?"/":o)).find(l=>l.name===s);if(c){let l=QD(c);return l.is_dir||(l.raw_url=this.client.downloadUrl(i)),l}}catch{}return{name:s,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""}}async mkdir(){throw new Error("[OpenListShare] read-only share, mkdir not supported")}async rename(){throw new Error("[OpenListShare] read-only share, rename not supported")}async remove(){throw new Error("[OpenListShare] read-only share, remove not supported")}async move(){throw new Error("[OpenListShare] read-only share, move not supported")}async copy(){throw new Error("[OpenListShare] read-only share, copy not supported")}async put(){throw new Error("[OpenListShare] read-only share, upload not supported")}}});var Uh,PD=j(()=>{"use strict";Uh=class{url;token;constructor(e){this.url=(e.url||"").replace(/\/+$/,""),this.token=e.access_token||""}async init(){if(!this.url)throw new Error("[TelDrive] url is required");if(!this.token)throw new Error("[TelDrive] access_token is required")}async request(e,t="GET",i){let n={Authorization:`Bearer ${this.token}`,"Content-Type":"application/json"},s={method:t,headers:n};i&&(s.body=JSON.stringify(i));let o=await fetch(`${this.url}${e}`,s);if(t==="DELETE"&&o.ok)return{};let a=await o.json().catch(()=>({}));if(o.status>=400)throw new Error(`[TelDrive] ${a?.message||`HTTP ${o.status}`}`);return a}async listFiles(e){let t=await this.request(`/api/files?path=${encodeURIComponent(e)}`);return Array.isArray(t)?t:t?.files||[]}async mkdir(e){await this.request("/api/files/mkdir","POST",{path:e})}async move(e,t){await this.request("/api/files/move","POST",{ids:e,destination:t})}async remove(e){await this.request(`/api/files/${e}`,"DELETE")}downloadUrl(e){return`${this.url}/api/files/${e}`}downloadHeaders(){return{Authorization:`Bearer ${this.token}`}}}});function TD(r){let e=r.type==="folder";return{name:r.name,size:r.size||0,is_dir:e,modified:r.updatedAt||r.createdAt||new Date().toISOString(),sign:"",type:X(r.name,e),raw_url:""}}var Rh,UD=j(()=>{"use strict";Be();PD();Rh=class{client;pathCache=new Map;constructor(e){this.client=new Uh(e)}async init(){await this.client.init()}async list(e,t){return(await this.client.listFiles(t)).map(TD)}async get(e,t){let i=t.split("/").filter(Boolean),n=i[i.length-1]||"root",s="/"+i.slice(0,-1).join("/");try{let a=(await this.client.listFiles(s==="//"?"/":s)).find(c=>c.name===n);if(a){let c=TD(a);return c.is_dir||(c.raw_url=this.client.downloadUrl(a.id),c.raw_url_headers=this.client.downloadHeaders()),c}}catch{}try{return await this.client.listFiles(t),{name:n,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""}}catch{return{name:n,size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:0,raw_url:""}}}async mkdir(e,t){await this.client.mkdir(t)}async rename(e,t,i){throw new Error("[TelDrive] rename not supported")}async remove(e,t,i){let n=await this.resolveFileId(t);await this.client.remove(n)}async move(e,t,i,n,s){let o=await this.resolveFileId(n),a=await this.resolveFileId(t);await this.client.move([o],a)}async copy(e,t,i,n,s){throw new Error("[TelDrive] copy not supported")}async put(e,t,i){throw new Error("[TelDrive] Direct put not supported in stateless environment")}async resolveFileId(e){let t=e.split("/").filter(Boolean).join("/");if(!t)return"/";if(this.pathCache.has(t))return this.pathCache.get(t);let i=t.split("/"),n="",s="/";for(let o=0;ol.name===i[o]);if(!c)throw new Error(`[TelDrive] Path '${i[o]}' not found`);s=c.id,n=n?`${n}/${i[o]}`:`/${i[o]}`,this.pathCache.set(n,s)}return s}}});var kK,Lu,Nh,RD=j(()=>{"use strict";kK="https://www.mediafire.com/api/1.5",Lu="https://www.mediafire.com",Nh=class{cookie;sessionToken;chunkSize;orderBy;orderDirection;constructor(e){this.cookie=e.cookie||"",this.sessionToken=e.session_token||"",this.chunkSize=e.chunk_size||200,this.orderBy=e.order_by||"name",this.orderDirection=e.order_direction||"asc"}async init(){if(!this.cookie)throw new Error("[MediaFire] cookie is required");this.sessionToken||await this.getSessionToken()}async postForm(e,t){let i=new URLSearchParams({session_token:this.sessionToken,response_format:"json",...t});return await(await fetch(`${kK}${e}`,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Cookie:this.cookie,"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64)",Origin:Lu,Referer:`${Lu}/`},body:i.toString()})).json().catch(()=>({}))}async getSessionToken(){let i=(await(await fetch(`${Lu}/application/get_session_token.php`,{method:"POST",headers:{Cookie:this.cookie,Origin:Lu,Referer:`${Lu}/`,"Content-Length":"0"}})).json().catch(()=>({})))?.response?.session_token;if(!i)throw new Error("[MediaFire] failed to get session token from cookie");this.sessionToken=i,this.addition_session_token=i}addition_session_token="";checkResult(e){if(e&&e!=="Success")throw new Error(`[MediaFire] API error: ${e}`)}async list(e){let t=[],i=1,n=!0;for(;n;){let s=await this.postForm("/folder/get_content.php",{folder_key:e,content_type:"folders",chunk:String(i),chunk_size:String(this.chunkSize),details:"yes",order_direction:this.orderDirection,order_by:this.orderBy,filter:""}),o=await this.postForm("/folder/get_content.php",{folder_key:e,content_type:"files",chunk:String(i),chunk_size:String(this.chunkSize),details:"yes",order_direction:this.orderDirection,order_by:this.orderBy,filter:""}),a=s.response?.folder_content?.folders||[],c=o.response?.folder_content?.files||[];for(let l of a)t.push({id:l.folderkey,name:l.name,size:0,isDir:!0,created:l.created});for(let l of c)t.push({id:l.quickkey,name:l.filename,size:parseInt(l.size,10)||0,isDir:!1,created:l.created});n=s.response?.folder_content?.more_chunks==="yes"||o.response?.folder_content?.more_chunks==="yes",i++}return t}async getDownloadUrl(e){let t=await this.postForm("/file/get_links.php",{quick_key:e,link_type:"direct_download"});this.checkResult(t.response?.result);let i=t.response?.links?.[0]?.direct_download||t.response?.links?.[0]?.normal_download;if(!i)throw new Error("[MediaFire] no download link found");return i}async mkdir(e,t){let i=await this.postForm("/folder/create.php",{parent_key:e,foldername:t});return this.checkResult(i.response?.result),i.response?.folder_key||""}async rename(e,t,i){if(i){let n=await this.postForm("/folder/update.php",{folder_key:e,foldername:t});this.checkResult(n.response?.result)}else{let n=await this.postForm("/file/update.php",{quick_key:e,filename:t});this.checkResult(n.response?.result)}}async move(e,t,i){if(i){let n=await this.postForm("/folder/move.php",{folder_key_src:e,folder_key_dst:t});this.checkResult(n.response?.result)}else{let n=await this.postForm("/file/move.php",{quick_key:e,folder_key:t});this.checkResult(n.response?.result)}}async copy(e,t,i){if(i){let n=await this.postForm("/folder/copy.php",{folder_key_src:e,folder_key_dst:t});this.checkResult(n.response?.result)}else{let n=await this.postForm("/file/copy.php",{quick_key:e,folder_key:t});this.checkResult(n.response?.result)}}async remove(e,t){if(t){let i=await this.postForm("/folder/delete.php",{folder_key:e});this.checkResult(i.response?.result)}else{let i=await this.postForm("/file/delete.php",{quick_key:e});this.checkResult(i.response?.result)}}}});var qh,ND=j(()=>{"use strict";Be();RD();qh=class{client;pathCache=new Map;constructor(e){this.client=new Nh(e)}async init(){await this.client.init()}async list(e,t){let i=await this.resolveFolderId(t);return(await this.client.list(i)).map(s=>({name:s.name,size:s.size,is_dir:s.isDir,modified:s.created?new Date(s.created).toISOString():new Date().toISOString(),sign:"",type:X(s.name,s.isDir),raw_url:""}))}async get(e,t){let i=t.split("/").filter(Boolean),n=i[i.length-1]||"root",s="/"+i.slice(0,-1).join("/");try{let o=await this.resolveFolderId(s),c=(await this.client.list(o)).find(l=>l.name===n);if(c){let l={name:c.name,size:c.size,is_dir:c.isDir,modified:c.created?new Date(c.created).toISOString():new Date().toISOString(),sign:"",type:X(c.name,c.isDir),raw_url:""};if(!c.isDir)try{l.raw_url=await this.client.getDownloadUrl(c.id)}catch(d){l.raw_url_error=d.message}return l}}catch{}try{return await this.resolveFolderId(t),{name:n,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""}}catch{return{name:n,size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:0,raw_url:""}}}async mkdir(e,t){let i=t.split("/").filter(Boolean),n=i.pop()||"new_folder",s="/"+i.join("/"),o=await this.resolveFolderId(s);await this.client.mkdir(o,n)}async rename(e,t,i){let{id:n,isDir:s}=await this.resolveEntry(t);await this.client.rename(n,i,s)}async remove(e,t,i){let{id:n,isDir:s}=await this.resolveEntry(t);await this.client.remove(n,s)}async move(e,t,i,n,s){let{id:o,isDir:a}=await this.resolveEntry(n),c=await this.resolveFolderId(t);await this.client.move(o,c,a)}async copy(e,t,i,n,s){let{id:o,isDir:a}=await this.resolveEntry(n),c=await this.resolveFolderId(t);await this.client.copy(o,c,a)}async put(e,t,i){throw new Error("[MediaFire] Direct put not supported in stateless environment")}async resolveFolderId(e){let t=e.split("/").filter(Boolean).join("/");if(!t)return"";if(this.pathCache.has(t))return this.pathCache.get(t);let i=t.split("/"),n="";for(let s=0;sl.isDir&&l.name===i[s]);if(!a)throw new Error(`[MediaFire] Folder '${i[s]}' not found`);n=a.id;let c="/"+i.slice(0,s+1).join("/");this.pathCache.set(c,n)}return n}async resolveEntry(e){let t=e.split("/").filter(Boolean),i=t[t.length-1],n="/"+t.slice(0,-1).join("/"),s=await this.resolveFolderId(n),a=(await this.client.list(s)).find(c=>c.name===i);if(!a)throw new Error(`[MediaFire] '${i}' not found`);return{id:a.id,isDir:a.isDir}}}});function Lo(...r){return"/"+r.filter(Boolean).map(t=>t.replace(/^\/+|\/+$/g,"")).filter(Boolean).join("/")}var SK,Oh,qD=j(()=>{"use strict";SK="https://api.github.com",Oh=class{addition;mounts;constructor(e){this.addition=e,this.mounts=this.parseMounts(e.repo_structure||"")}parseMounts(e){let t=[];for(let i of e.split(";")){let n=i.trim();if(!n)continue;let s=n.indexOf(":");s>0&&n.slice(0,s).includes("/");let o="/",a=n;s>0&&!n.slice(s+1).startsWith("/")&&!n.slice(0,s).includes(".")&&(o="/"+n.slice(0,s).replace(/^\/+|\/+$/g,""),a=n.slice(s+1)),t.push({point:o==="/"?"/":o,repo:a})}return t}async init(){if(this.mounts.length===0)throw new Error("[GitHub Releases] repo_structure is required (format: [path:]org/repo)")}async get(e){let t={Accept:"application/vnd.github+json","User-Agent":"OpenList-TSWorker"};this.addition.token&&(t.Authorization=`Bearer ${this.addition.token}`);let i=await fetch(`${SK}${e}`,{headers:t});if(i.status===404)return null;if(i.status>=400)throw new Error(`[GitHub Releases] HTTP ${i.status}`);return await i.json().catch(()=>null)}proxy(e){let t=this.addition.gh_proxy||"";return!t||e.startsWith("http")?e:t+e}mountForPath(e){let t=e.startsWith("/")?e:"/"+e,i=null;for(let n of this.mounts){let s=n.point==="/"?"/":n.point;(t===s||t.startsWith(s+"/"))&&(!i||s.length>(i.point==="/"?0:i.point.length))&&(i=n)}return i}async latestRelease(e){return this.get(`/repos/${e}/releases/latest`)}async allReleases(e){return await this.get(`/repos/${e}/releases`)||[]}async repoFiles(e){return await this.get(`/repos/${e}/contents`)||[]}async list(e){let t=this.mountForPath(e);if(!t)return[];let i=this.relPath(t,e),n=[];if(i===""&&e==="/"){for(let c of this.mounts)n.push({path:c.point,name:c.point==="/"?c.repo:c.point.split("/").filter(Boolean).pop()||c.repo,size:0,isDir:!0,modified:new Date().toISOString(),url:""});return n}let s=this.addition.show_all_version;if(i===""){let c=await this.latestRelease(t.repo);if(c){for(let l of c.assets)n.push({path:Lo(t.point,l.name),name:l.name,size:l.size,isDir:!1,modified:l.updated_at||l.created_at||new Date().toISOString(),url:this.proxy(l.browser_download_url)});this.addition.show_source_code&&(n.push({path:Lo(t.point,"Source code (zip)"),name:"Source code (zip)",size:1,isDir:!1,modified:c.created_at,url:this.proxy(c.zipball_url)}),n.push({path:Lo(t.point,"Source code (tar.gz)"),name:"Source code (tar.gz)",size:1,isDir:!1,modified:c.created_at,url:this.proxy(c.tarball_url)}))}if(s){let l=await this.allReleases(t.repo);for(let d of l)n.push({path:Lo(t.point,d.tag_name),name:d.tag_name,size:0,isDir:!0,modified:d.published_at||d.created_at,url:d.html_url})}if(this.addition.show_readme!==!1){let l=await this.repoFiles(t.repo);for(let d of l)(d.name.toLowerCase().endsWith(".md")||d.name.toUpperCase().startsWith("LICENSE"))&&n.push({path:Lo(t.point,d.name),name:d.name,size:d.size,isDir:!1,modified:"1970-01-01T00:00:00Z",url:this.proxy(d.download_url)})}return n}let a=(await this.allReleases(t.repo)).find(c=>c.tag_name===i.split("/")[0]);if(a){for(let c of a.assets)n.push({path:Lo(t.point,a.tag_name,c.name),name:c.name,size:c.size,isDir:!1,modified:c.updated_at||c.created_at||new Date().toISOString(),url:this.proxy(c.browser_download_url)});this.addition.show_source_code&&(n.push({path:Lo(t.point,"Source code (zip)"),name:"Source code (zip)",size:1,isDir:!1,modified:a.created_at,url:this.proxy(a.zipball_url)}),n.push({path:Lo(t.point,"Source code (tar.gz)"),name:"Source code (tar.gz)",size:1,isDir:!1,modified:a.created_at,url:this.proxy(a.tarball_url)}))}return n}async getDownloadUrl(e){let t=this.mountForPath(e);if(!t)return"";let n=this.relPath(t,e).split("/").pop()||"",s=await this.latestRelease(t.repo);if(s){let l=s.assets.find(d=>d.name===n);if(l)return this.proxy(l.browser_download_url)}let o=await this.allReleases(t.repo);for(let l of o){let d=l.assets.find(u=>u.name===n);if(d)return this.proxy(d.browser_download_url)}let c=(await this.repoFiles(t.repo)).find(l=>l.name===n);return c?this.proxy(c.download_url):""}relPath(e,t){let i=e.point==="/"?"/":e.point,n=t.startsWith("/")?t:"/"+t;return i==="/"?n.replace(/^\/+/,""):n.slice(i.length).replace(/^\/+/,"")}}});var Mh,OD=j(()=>{"use strict";Be();qD();Mh=class{client;constructor(e){this.client=new Oh(e)}async init(){await this.client.init()}async list(e,t){return(await this.client.list(t)).map(n=>({name:n.name,size:n.size,is_dir:n.isDir,modified:n.modified||new Date().toISOString(),sign:"",type:X(n.name,n.isDir),raw_url:n.url||""}))}async get(e,t){let i=t.split("/").filter(Boolean),n=i[i.length-1]||"root",s=await this.client.list(t);if(s.length>0||t==="/")return!s.find(c=>c.isDir&&c.name===n)&&s.some(c=>!c.isDir),{name:n,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""};let o=await this.client.getDownloadUrl(t);return o?{name:n,size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:X(n,!1),raw_url:o}:{name:n,size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:X(n,!1),raw_url:""}}async mkdir(){throw new Error("[GitHub Releases] read-only storage")}async rename(){throw new Error("[GitHub Releases] read-only storage")}async remove(){throw new Error("[GitHub Releases] read-only storage")}async move(){throw new Error("[GitHub Releases] read-only storage")}async copy(){throw new Error("[GitHub Releases] read-only storage")}async put(){throw new Error("[GitHub Releases] read-only storage")}}});var DK,QK,Lh,MD=j(()=>{"use strict";DK="https://api.cnb.cool",QK="https://cnb.cool",Lh=class{repo;token;useTagName;constructor(e){this.repo=e.repo||"",this.token=e.token||"",this.useTagName=!!e.use_tag_name}async init(){if(!this.repo)throw new Error("[CNB Releases] repo is required");if(!this.token)throw new Error("[CNB Releases] token is required")}async request(e,t,i,n=!1){let s={Accept:"application/json",Authorization:`Bearer ${this.token}`},o={method:e,headers:s};i!==void 0&&(n?(o.body=new URLSearchParams(i).toString(),s["Content-Type"]="application/x-www-form-urlencoded"):(o.body=JSON.stringify(i),s["Content-Type"]="application/json"));let a=await fetch(`${DK}${t}`,o);if(a.status!==200&&a.status!==201&&a.status!==204)throw new Error(`[CNB Releases] ${a.status} ${await a.text().catch(()=>"")}`);return a.status===204?{}:await a.json().catch(()=>({}))}async listReleases(){return this.request("GET",`/${this.repo}/-/releases`)}async getRelease(e){return this.request("GET",`/${this.repo}/-/releases/${e}`)}releaseName(e){return this.useTagName?e.tag_name:e.name}createRelease(e,t){return this.request("POST",`/${this.repo}/-/releases`,{name:e,tag_name:e,target_commitish:t||"main"})}renameRelease(e,t){return this.request("PATCH",`/${this.repo}/-/releases/${e}`,{name:t},!0)}deleteRelease(e){return this.request("DELETE",`/${this.repo}/-/releases/${e}`)}deleteAsset(e,t){return this.request("DELETE",`/${this.repo}/-/releases/${e}/assets/${t}`)}assetDownloadUrl(e){return`${QK}${e.path}`}}});var Hh,LD=j(()=>{"use strict";Be();MD();Hh=class{client;addition;constructor(e){this.addition=e,this.client=new Lh(e)}async init(){await this.client.init()}async list(e,t){let i=t.split("/").filter(Boolean).join("/");if(!i)return(await this.client.listReleases()).map(a=>({name:this.client.releaseName(a),size:a.assets.reduce((c,l)=>c+l.size,0),is_dir:!0,modified:a.updated_at||a.created_at||new Date().toISOString(),sign:a.id,type:1,raw_url:""}));let n=i.split("/")[0];return(await this.client.getRelease(n)).assets.map(o=>({name:o.name,size:o.size,is_dir:!1,modified:o.updated_at||o.created_at||new Date().toISOString(),sign:o.id,type:X(o.name,!1),raw_url:this.client.assetDownloadUrl(o)}))}async get(e,t){let i=t.split("/").filter(Boolean),n=i[i.length-1]||"root",s=i.join("/");if(i.length===1)try{let o=await this.client.getRelease(i[0]);return{name:this.client.releaseName(o),size:o.assets.reduce((a,c)=>a+c.size,0),is_dir:!0,modified:o.updated_at||o.created_at||new Date().toISOString(),sign:o.id,type:1,raw_url:""}}catch{}if(i.length===2){let a=(await this.client.getRelease(i[0])).assets.find(c=>c.name===i[1]);if(a)return{name:a.name,size:a.size,is_dir:!1,modified:a.updated_at||a.created_at||new Date().toISOString(),sign:a.id,type:X(a.name,!1),raw_url:this.client.assetDownloadUrl(a)}}return{name:n,size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:X(n,!1),raw_url:""}}async mkdir(e,t){let i=t.split("/").filter(Boolean);if(i.length===1){await this.client.createRelease(i[0],this.addition.default_branch||"main");return}throw new Error("[CNB Releases] only supports creating releases at root")}async rename(e,t,i){let n=t.split("/").filter(Boolean);if(n.length===1&&!this.addition.use_tag_name){await this.client.renameRelease(n[0],i);return}throw new Error("[CNB Releases] only release name can be renamed")}async remove(e,t,i){let n=t.split("/").filter(Boolean);if(n.length===1){await this.client.deleteRelease(n[0]);return}if(n.length===2){await this.client.deleteAsset(n[0],n[1]);return}throw new Error("[CNB Releases] invalid path")}async move(){throw new Error("[CNB Releases] move not supported")}async copy(){throw new Error("[CNB Releases] copy not supported")}async put(){throw new Error("[CNB Releases] asset upload not supported in stateless environment")}}});var Kh,HD=j(()=>{"use strict";Kh=class{address;addition;authorization="";constructor(e){this.addition=e,this.address=(e.address||"").replace(/\/+$/,"")}async init(){if(!this.address)throw new Error("[KodBox] address is required");await this.getToken()}async getToken(){let e=new URLSearchParams({name:this.addition.username||"",password:this.addition.password||""}),i=await(await fetch(`${this.address}/?user/index/loginSubmit`,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:e.toString()})).json().catch(()=>({code:!1}));if(i.code===!1)throw new Error(`[KodBox] login failed: ${JSON.stringify(i.data||i)}`);this.authorization=String(i.info||"")}async request(e,t){let i=new URLSearchParams({accessToken:this.authorization,...t}),s=await(await fetch(`${this.address}${e}`,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:i.toString(),redirect:"follow"})).json().catch(()=>({code:!1}));if(s.code==="10001")return await this.getToken(),this.request(e,t);if(s.code===!1)throw new Error(`[KodBox] ${s.data||"request failed"}`);return s}async list(e){let i=(await this.request("/?explorer/list/path",{path:e})).data;return i?[...i.folderList||[],...i.fileList||[]]:[]}downloadUrl(e){return`${this.address}/?explorer/index/fileOut&path=${encodeURIComponent(e)}&download=1&accessToken=${encodeURIComponent(this.authorization)}`}async mkdir(e){await this.request("/?explorer/index/mkdir",{path:e})}async rename(e,t){await this.request("/?explorer/index/pathRename",{path:e,newName:t})}async move(e,t,i){await this.request("/?explorer/index/pathCuteTo",{dataArr:JSON.stringify([{path:e,name:t}]),path:i})}async copy(e,t,i){await this.request("/?explorer/index/pathCopyTo",{dataArr:JSON.stringify([{path:e,name:t}]),path:i})}async remove(e,t){await this.request("/?explorer/index/pathDelete",{dataArr:JSON.stringify([{path:e,name:t}]),shiftDelete:"1"})}async put(e,t,i){let n=new FormData;n.append("accessToken",this.authorization),n.append("path",e),n.append("file",new Blob([i]),t);let o=await(await fetch(`${this.address}/?explorer/upload/fileUpload`,{method:"POST",body:n})).json().catch(()=>({code:!1}));if(o.code===!1)throw new Error(`[KodBox] ${o.data||"upload failed"}`)}}});var Gh,KD=j(()=>{"use strict";Be();HD();Gh=class{client;addition;constructor(e){this.addition=e,this.client=new Kh(e)}async init(){await this.client.init()}fullPath(e){let t=(this.addition.root_path||"").replace(/^\/+|\/+$/g,""),i=e.replace(/^\/+/,"");return t?"/"+(i?`${t}/${i}`:t):"/"+i}async list(e,t){return(await this.client.list(this.fullPath(t))).map(n=>({name:n.name,size:n.size||0,is_dir:n.type==="folder",modified:n.modifyTime?new Date(n.modifyTime*1e3).toISOString():new Date().toISOString(),sign:"",type:X(n.name,n.type==="folder"),raw_url:""}))}async get(e,t){let i=this.fullPath(t),n=i.split("/").filter(Boolean),s=n[n.length-1]||"root",o="/"+n.slice(0,-1).join("/");try{let c=(await this.client.list(o==="//"?"/":o)).find(l=>l.name===s);if(c){let l={name:c.name,size:c.size||0,is_dir:c.type==="folder",modified:c.modifyTime?new Date(c.modifyTime*1e3).toISOString():new Date().toISOString(),sign:"",type:X(c.name,c.type==="folder"),raw_url:""};return l.is_dir||(l.raw_url=this.client.downloadUrl(c.path||i)),l}}catch{}try{return await this.client.list(i),{name:s,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""}}catch{return{name:s,size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:0,raw_url:""}}}async mkdir(e,t){await this.client.mkdir(this.fullPath(t))}async rename(e,t,i){await this.client.rename(this.fullPath(t),i)}async remove(e,t,i){let s=this.fullPath(t).split("/").filter(Boolean),o=s[s.length-1],a=i.length?i:[o];for(let c of a){let l=s.length>1?`/${s.slice(0,-1).join("/")}/${c}`:`/${c}`;await this.client.remove(l,c)}}async move(e,t,i,n,s){let a=this.fullPath(n).split("/").filter(Boolean),c=a[a.length-1],l=this.fullPath(t),d=i.length?i:[c];for(let u of d){let f=a.length>1?`/${a.slice(0,-1).join("/")}/${u}`:`/${u}`;await this.client.move(f,u,l)}}async copy(e,t,i,n,s){let a=this.fullPath(n).split("/").filter(Boolean),c=a[a.length-1],l=this.fullPath(t),d=i.length?i:[c];for(let u of d){let f=a.length>1?`/${a.slice(0,-1).join("/")}/${u}`:`/${u}`;await this.client.copy(f,u,l)}}async put(e,t,i){let s=this.fullPath(t).split("/").filter(Boolean),o=s[s.length-1]||"file",a="/"+s.slice(0,-1).join("/");await this.client.put(a==="//"?"/":a,o,i)}}});var zh,GD=j(()=>{"use strict";zh=class{endpoint;gateway;mode;constructor(e){this.endpoint=(e.endpoint||"").replace(/\/+$/,""),this.gateway=(e.gateway||"").replace(/\/+$/,""),this.mode=e.mode||"ipfs"}async init(){if(!this.endpoint)throw new Error("[IPFS] endpoint is required");if(!this.gateway)throw new Error("[IPFS] gateway is required")}async post(e,t){let i=new URLSearchParams;for(let s of t)i.append("arg",s);let n=await fetch(`${this.endpoint}/api/v0/${e}?${i.toString()}`,{method:"POST"});if(n.status>=400)throw new Error(`[IPFS] ${n.status} ${await n.text().catch(()=>"")}`);return await n.json().catch(()=>({}))}async ls(e){return this.post("ls",[`/ipfs/${e}`])}async filesStat(e){return this.post("files/stat",[e])}async filesMkdir(e){await this.post("files/mkdir",[e,"parents=true"])}async filesMv(e,t){await this.post("files/mv",[e,t])}async filesCp(e,t){await this.post("files/cp",[e,t])}async filesRm(e){await this.post("files/rm",[e,"recursive=true"])}async add(e,t){let i=new FormData;i.append("file",new Blob([e]),t);let s=await(await fetch(`${this.endpoint}/api/v0/add`,{method:"POST",body:i})).json().catch(()=>({Hash:""}));if(!s.Hash)throw new Error("[IPFS] add failed");return s.Hash}downloadUrl(e,t){return`${this.gateway}/ipfs/${e}?filename=${encodeURIComponent(t)}`}async resolveIpfsPath(e,t){if(t)return`/ipfs/${t}`;let i=e.replace(/^\/+|\/+$/g,"");switch(this.mode){case"ipfs":return`/ipfs/${i}`;case"ipns":return`/ipns/${i}`;case"mfs":return`/ipfs/${(await this.filesStat(i?`/${i}`:"/")).Hash}`;default:throw new Error("[IPFS] invalid mode")}}}});var Jh,zD=j(()=>{"use strict";Be();GD();Jh=class{client;addition;constructor(e){this.addition=e,this.client=new zh(e)}async init(){await this.client.init()}isMfs(){return this.addition.mode==="mfs"}fullPath(e){let t=(this.addition.root_path||"").replace(/^\/+|\/+$/g,""),i=e.replace(/^\/+/,"");return t?"/"+(i?`${t}/${i}`:t):"/"+i}async list(e,t){let i=this.fullPath(t),s=(await this.client.resolveIpfsPath(i)).replace(/^\/ipfs\//,"");return((await this.client.ls(s)).Objects?.[0]?.Links||[]).map(c=>({name:c.Name,size:c.Size||0,is_dir:c.Type===1,modified:new Date().toISOString(),sign:c.Hash,type:X(c.Name,c.Type===1),raw_url:""}))}async get(e,t){let i=this.fullPath(t),n=i.split("/").filter(Boolean),s=n[n.length-1]||"root";if(this.isMfs())try{let a=await this.client.filesStat(i),c=a.Type==="directory",l={name:s,size:a.Size||0,is_dir:c,modified:new Date().toISOString(),sign:a.Hash,type:X(s,c),raw_url:""};return c||(l.raw_url=this.client.downloadUrl(a.Hash,s)),l}catch{}let o="/"+n.slice(0,-1).join("/");try{let c=(await this.list(e,o)).find(l=>l.name===s);if(c)return c.is_dir||(c.raw_url=this.client.downloadUrl(c.sign,s)),c}catch{}try{return await this.client.resolveIpfsPath(i),{name:s,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""}}catch{return{name:s,size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:0,raw_url:""}}}async mkdir(e,t){if(!this.isMfs())throw new Error("[IPFS] only write in mfs mode");await this.client.filesMkdir(this.fullPath(t))}async rename(e,t,i){if(!this.isMfs())throw new Error("[IPFS] only write in mfs mode");let n=this.fullPath(t),o="/"+n.split("/").filter(Boolean).slice(0,-1).join("/")+"/"+i;await this.client.filesMv(n,o)}async remove(e,t,i){if(!this.isMfs())throw new Error("[IPFS] only write in mfs mode");await this.client.filesRm(this.fullPath(t))}async move(e,t,i,n,s){if(!this.isMfs())throw new Error("[IPFS] only write in mfs mode");let o=this.fullPath(n),a=this.fullPath(t);await this.client.filesMv(o,a)}async copy(e,t,i,n,s){if(!this.isMfs())throw new Error("[IPFS] only write in mfs mode");let o=this.fullPath(n),c=`/ipfs/${(await this.client.filesStat(o)).Hash}`,l=this.fullPath(t);await this.client.filesCp(c,l)}async put(e,t,i){if(!this.isMfs())throw new Error("[IPFS] only write in mfs mode");let n=this.fullPath(t),s=n.split("/").filter(Boolean),o=s[s.length-1]||"file",a=await this.client.add(i,o);await this.client.filesCp(`/ipfs/${a}`,n)}}});var _K,jh,JD=j(()=>{"use strict";_K="https://siot-share.lenovo.com.cn",jh=class{host;shareId;sharePwd;stoken="";expireAt=0;constructor(e){this.host=(e.host||_K).replace(/\/+$/,""),this.shareId=(e.share_id||"").split("/").pop()||"",this.sharePwd=e.share_pwd||""}async init(){if(!this.shareId)throw new Error("[Lenovo NAS Share] share_id is required");await this.getStoken()}async request(e){let i=await(await fetch(e,{method:"GET",headers:{origin:"https://siot-share.lenovo.com.cn",referer:"https://siot-share.lenovo.com.cn/","user-agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) openlist-client",platform:"web","app-version":"3"}})).json().catch(()=>({result:!1}));if(!i.result)throw new Error(`[Lenovo NAS Share] ${i.error?.msg||"request failed"}`);return i.data}async getStoken(){let e=new URLSearchParams({code:this.shareId,password:this.sharePwd}),t=await this.request(`${this.host}/oneproxy/api/share/v1/access?${e.toString()}`);this.stoken=t.stoken||"",this.expireAt=Date.now()+(t.expires_in||3600)*1e3-6e4}async checkStoken(){Date.now()>=this.expireAt&&await this.getStoken()}async list(e){await this.checkStoken();let t=e.startsWith("/")?e:"/"+e,i=new URLSearchParams({code:this.shareId,num:"5000",stoken:this.stoken,path:t});return(await this.request(`${this.host}/oneproxy/api/share/v1/files?${i.toString()}`)).list||[]}async getDownloadUrl(e){await this.checkStoken();let t=new URLSearchParams({code:this.shareId,stoken:this.stoken,path:e.startsWith("/")?e:"/"+e}),n=(await this.request(`${this.host}/oneproxy/api/share/v1/file/link?${t.toString()}`)).param?.dtoken||"";return`${this.host}/oneproxy/api/share/v1/file/download?code=${encodeURIComponent(this.shareId)}&dtoken=${encodeURIComponent(n)}`}downloadHeaders(){return{Referer:"https://siot-share.lenovo.com.cn"}}}});var $h,jD=j(()=>{"use strict";Be();JD();$h=class{client;constructor(e){this.client=new jh(e)}async init(){await this.client.init()}async list(e,t){return(await this.client.list(t)).map(n=>{let s=n.type==="dir";return{name:n.name,size:n.size||0,is_dir:s,modified:n.chtime?new Date(n.chtime*1e3).toISOString():new Date().toISOString(),sign:"",type:X(n.name,s),raw_url:""}})}async get(e,t){let i=t.split("/").filter(Boolean),n=i[i.length-1]||"root",s="/"+i.slice(0,-1).join("/");try{let a=(await this.client.list(s==="//"?"/":s)).find(c=>c.name===n||c.path===t);if(a){let c=a.type==="dir",l={name:a.name,size:a.size||0,is_dir:c,modified:a.chtime?new Date(a.chtime*1e3).toISOString():new Date().toISOString(),sign:"",type:X(a.name,c),raw_url:""};return c||(l.raw_url=await this.client.getDownloadUrl(a.path),l.raw_url_headers=this.client.downloadHeaders()),l}}catch{}try{return await this.client.list(t),{name:n,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""}}catch{return{name:n,size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:0,raw_url:""}}}async mkdir(){throw new Error("[Lenovo NAS Share] read-only storage")}async rename(){throw new Error("[Lenovo NAS Share] read-only storage")}async remove(){throw new Error("[Lenovo NAS Share] read-only storage")}async move(){throw new Error("[Lenovo NAS Share] read-only storage")}async copy(){throw new Error("[Lenovo NAS Share] read-only storage")}async put(){throw new Error("[Lenovo NAS Share] read-only storage")}}});var Vh,$D=j(()=>{"use strict";Vh=class{endpoint;token;constructor(e){this.endpoint=(e.endpoint||"").replace(/\/+$/,""),this.token=e.access_token||""}async init(){if(!this.endpoint)throw new Error("[Misskey] endpoint is required");if(!this.token)throw new Error("[Misskey] access_token is required")}async post(e,t){let i=await fetch(`${this.endpoint}/api/drive${e}`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.token}`},body:JSON.stringify(t||{})});if(i.status>=400)throw new Error(`[Misskey] ${i.status} ${await i.text().catch(()=>"")}`);return await i.json().catch(()=>({}))}async getFiles(e){return this.post("/files",e?{folderId:e}:{})}async getFolders(e){return this.post("/folders",e?{folderId:e}:{})}async showFile(e){return this.post("/files/show",{fileId:e})}async createFolder(e,t){return this.post("/folders/create",{name:e,...t?{parentId:t}:{}})}async updateFolder(e,t){return this.post("/folders/update",{folderId:e,...t})}async updateFile(e,t){return this.post("/files/update",{fileId:e,...t})}async deleteFolder(e){await this.post("/folders/delete",{folderId:e})}async deleteFile(e){await this.post("/files/delete",{fileId:e})}async uploadFromUrl(e,t){return this.post("/files/upload-from-url",{url:e,...t?{folderId:t}:{}})}}});var Yh,VD=j(()=>{"use strict";Be();$D();Yh=class{client;pathCache=new Map;constructor(e){this.client=new Vh(e)}async init(){await this.client.init()}async list(e,t){let i=await this.resolveFolderId(t),[n,s]=await Promise.all([this.client.getFiles(i),this.client.getFolders(i)]),o=n.map(c=>({name:c.name,size:c.size||0,is_dir:!1,modified:c.createdAt||new Date().toISOString(),sign:c.id,type:X(c.name,!1),raw_url:c.url||"",thumb:c.thumbnailUrl||""}));return[...s.map(c=>({name:c.name,size:0,is_dir:!0,modified:c.createdAt||new Date().toISOString(),sign:c.id,type:1,raw_url:""})),...o]}async get(e,t){let i=t.split("/").filter(Boolean),n=i[i.length-1]||"root",s="/"+i.slice(0,-1).join("/");try{let o=await this.resolveFolderId(s),[a,c]=await Promise.all([this.client.getFiles(o),this.client.getFolders(o)]),l=a.find(u=>u.name===n);if(l)return{name:l.name,size:l.size||0,is_dir:!1,modified:l.createdAt||new Date().toISOString(),sign:l.id,type:X(l.name,!1),raw_url:l.url||"",thumb:l.thumbnailUrl||""};let d=c.find(u=>u.name===n);if(d)return{name:d.name,size:0,is_dir:!0,modified:d.createdAt||new Date().toISOString(),sign:d.id,type:1,raw_url:""}}catch{}try{return await this.resolveFolderId(t),{name:n,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""}}catch{return{name:n,size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:0,raw_url:""}}}async mkdir(e,t){let i=t.split("/").filter(Boolean),n=i.pop()||"new_folder",s="/"+i.join("/"),o=await this.resolveFolderId(s);await this.client.createFolder(n,o),this.pathCache.clear()}async rename(e,t,i){let{id:n,isDir:s}=await this.resolveEntry(t);s?await this.client.updateFolder(n,{name:i}):await this.client.updateFile(n,{name:i}),this.pathCache.clear()}async remove(e,t,i){let{id:n,isDir:s}=await this.resolveEntry(t);s?await this.client.deleteFolder(n):await this.client.deleteFile(n),this.pathCache.clear()}async move(e,t,i,n,s){let{id:o,isDir:a}=await this.resolveEntry(n),c=await this.resolveFolderId(t);a?await this.client.updateFolder(o,{parentId:c}):await this.client.updateFile(o,{folderId:c}),this.pathCache.clear()}async copy(e,t,i,n,s){let{id:o,isDir:a}=await this.resolveEntry(n),c=await this.resolveFolderId(t);if(a)throw new Error("[Misskey] folder copy not supported");let l=await this.client.showFile(o);await this.client.uploadFromUrl(l.url,c),this.pathCache.clear()}async put(e,t,i){throw new Error("[Misskey] Direct put not supported in stateless environment")}async resolveFolderId(e){let t=e.split("/").filter(Boolean).join("/");if(!t)return;if(this.pathCache.has(t))return this.pathCache.get(t);let i=t.split("/"),n;for(let s=0;sl.name===i[s]);if(!a)throw new Error(`[Misskey] Folder '${i[s]}' not found`);n=a.id;let c="/"+i.slice(0,s+1).join("/");this.pathCache.set(c,n)}return n}async resolveEntry(e){let t=e.split("/").filter(Boolean),i=t[t.length-1],n="/"+t.slice(0,-1).join("/"),s=await this.resolveFolderId(n),[o,a]=await Promise.all([this.client.getFiles(s),this.client.getFolders(s)]),c=o.find(d=>d.name===i);if(c)return{id:c.id,isDir:!1};let l=a.find(d=>d.name===i);if(l)return{id:l.id,isDir:!0};throw new Error(`[Misskey] '${i}' not found`)}}});var hC,YD,FK,PK,TK,UK,Wh,WD=j(()=>{"use strict";hC="https://www.doubao.com",YD="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",FK=1,PK=6,TK=7,UK={1:"directory",2:"file",3:"link",4:"image",5:"pages",6:"video",7:"audio",8:"meeting_minutes"},Wh=class{cookie;downloadApi;constructor(e){this.cookie=e.cookie||"",this.downloadApi=e.download_api||"get_file_url"}async init(){if(!this.cookie)throw new Error("[Doubao] cookie is required")}async request(e,t={}){let n=await(await fetch(`${hC}${e}`,{method:"POST",headers:{"Content-Type":"application/json",Cookie:this.cookie,"User-Agent":YD,Origin:hC,Referer:`${hC}/`},body:JSON.stringify(t)})).json().catch(()=>({code:-1}));if(n.code!==0){let s=n.message||n.msg||n.error?.message||`code ${n.code}`;throw new Error(`[Doubao] ${s}`)}return n}async getFiles(e){let t=[],i="";do{let n={node_id:e};i?(n.cursor=i,n.size=50):n.need_full_path=!1;let o=(await this.request("/samantha/aispace/node_info",n)).data;o?.children&&t.push(...o.children),i=o?.next_cursor&&o.next_cursor!=="-1"?o.next_cursor:""}while(i);return t}async getDownloadUrl(e){if(this.downloadApi==="get_download_info"){let a=(await this.request("/samantha/aispace/get_download_info",{requests:[{node_id:e.id}]})).data.download_infos?.[0]?.main_url||"";if(!a)throw new Error("[Doubao] empty download url");return a}if(e.node_type===PK||e.node_type===TK){let o=(await this.request("/samantha/media/get_play_info",{key:e.key,node_id:e.id})).data,a=o.original_media_info?.main_url||o.media_info?.[0]?.main_url||"";if(!a)throw new Error("[Doubao] empty download url");return a}let n=(await this.request("/alice/message/get_file_url",{uris:[e.key],type:UK[e.node_type]||"file"})).data.file_urls?.[0]?.main_url||"";if(!n)throw new Error("[Doubao] empty download url");return n}downloadHeaders(){return{"User-Agent":YD}}async mkdir(e,t){await this.request("/samantha/aispace/upload_node",{node_list:[{local_id:crypto.randomUUID(),name:t,parent_id:e,node_type:FK}]})}async rename(e,t){await this.request("/samantha/aispace/rename_node",{node_id:e,node_name:t})}async move(e,t,i){await this.request("/samantha/aispace/move_node",{node_list:[{id:e}],current_parent_id:t,target_parent_id:i})}async remove(e){await this.request("/samantha/aispace/delete_node",{node_list:[{id:e}]})}}});var XD,Xh,ZD=j(()=>{"use strict";Be();WD();XD="0",Xh=class{client;pathCache=new Map;constructor(e){this.client=new Wh(e)}async init(){await this.client.init()}fileToItem(e){let t=e.node_type===1;return{name:e.name,size:e.size||0,is_dir:t,modified:e.update_time?new Date(e.update_time*1e3).toISOString():new Date().toISOString(),sign:"",type:X(e.name,t),raw_url:""}}async list(e,t){let i=await this.resolveDirId(t);return(await this.client.getFiles(i)).map(s=>this.fileToItem(s))}async get(e,t){let i=t.split("/").filter(Boolean),n=i[i.length-1]||"root",s="/"+i.slice(0,-1).join("/");try{let o=await this.resolveDirId(s),c=(await this.client.getFiles(o)).find(l=>l.name===n);if(c){let l=this.fileToItem(c);if(!l.is_dir)try{l.raw_url=await this.client.getDownloadUrl(c),l.raw_url_headers=this.client.downloadHeaders()}catch(d){l.raw_url_error=d.message}return l}}catch{}try{return await this.resolveDirId(t),{name:n,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""}}catch{return{name:n,size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:0,raw_url:""}}}async mkdir(e,t){let i=t.split("/").filter(Boolean),n=i.pop()||"new_folder",s="/"+i.join("/"),o=await this.resolveDirId(s);await this.client.mkdir(o,n),this.pathCache.clear()}async rename(e,t,i){let n=await this.resolveDirId(t);await this.client.rename(n,i),this.pathCache.clear()}async remove(e,t,i){let n=await this.resolveDirId(t);await this.client.remove(n),this.pathCache.clear()}async move(e,t,i,n,s){let o=await this.resolveEntry(n),a=await this.resolveDirId(t);await this.client.move(o.id,o.parentId,a),this.pathCache.clear()}async copy(){throw new Error("[Doubao] copy not supported")}async put(){throw new Error("[Doubao] upload not supported in stateless environment")}async resolveDirId(e){let t=e.split("/").filter(Boolean).join("/");if(!t)return XD;if(this.pathCache.has(t))return this.pathCache.get(t);let i=t.split("/"),n=XD;for(let s=0;sl.node_type===1&&l.name===i[s]);if(!a)throw new Error(`[Doubao] Directory '${i[s]}' not found`);n=a.id;let c="/"+i.slice(0,s+1).join("/");this.pathCache.set(c,n)}return n}async resolveEntry(e){let t=e.split("/").filter(Boolean),i=t[t.length-1],n="/"+t.slice(0,-1).join("/"),s=await this.resolveDirId(n),a=(await this.client.getFiles(s)).find(c=>c.name===i);if(!a)throw new Error(`[Doubao] '${i}' not found`);return{id:a.id,parentId:a.parent_id||s,isDir:a.node_type===1}}}});async function qK(r){let e=await crypto.subtle.digest("SHA-256",new TextEncoder().encode(r));return Array.from(new Uint8Array(e)).map(t=>t.toString(16).padStart(2,"0")).join("")}var RK,NK,Zh,e3=j(()=>{"use strict";RK="https://open-api-drive.quark.cn",NK="go-resty/3.0.0-beta.1 (https://resty.dev)";Zh=class{addition;accessToken;refreshToken;appId;signKey;constructor(e){this.addition=e,this.accessToken=e.access_token||"",this.refreshToken=e.refresh_token||"",this.appId=e.app_id||"",this.signKey=e.sign_key||""}async init(){if(!this.refreshToken)throw new Error("[QuarkOpen] refresh_token is required")}async generateSign(e,t){let i=String(Date.now()),n=`${e}&${t}&${i}&${this.signKey}`,s=await qK(n),o=typeof crypto.randomUUID=="function"?crypto.randomUUID():`${Math.random().toString(36).slice(2)}${Date.now().toString(36)}`;return{tm:i,token:s,reqId:o}}async request(e,t,i){let{tm:n,token:s,reqId:o}=await this.generateSign(t,e),a=new URLSearchParams({req_id:o,access_token:this.accessToken}),c={Accept:"application/json, text/plain, */*","User-Agent":NK,"x-pan-tm":n,"x-pan-token":s,"x-pan-client-id":this.appId},l={method:t,headers:c};i!==void 0&&(l.body=JSON.stringify(i),c["Content-Type"]="application/json");let u=await(await fetch(`${RK}${e}?${a.toString()}`,l)).json().catch(()=>({status:-1,errno:-1}));if(u.status===-1&&(u.errno===11001||u.errno===14001&&(u.error_info||"").includes("access_token")))return await this.refreshAccessToken(),this.request(e,t,i);if(u.status>=400||u.errno!==0)throw new Error(`[QuarkOpen] ${u.error_info||`errno ${u.errno}`}`);return u}async refreshAccessToken(){let e=this.addition.api_url_address||"https://api.oplist.org/quarkyun/renewapi",t=new URLSearchParams({refresh_ui:this.refreshToken,server_use:"true",driver_txt:"quarkyun_oa"}),n=await(await fetch(`${e}?${t.toString()}`)).json().catch(()=>({}));if(!n.refresh_token||!n.access_token)throw new Error(`[QuarkOpen] refresh token failed: ${n.text||"empty token"}`);this.refreshToken=n.refresh_token,this.accessToken=n.access_token,n.app_id&&(this.appId=n.app_id),n.sign_key&&(this.signKey=n.sign_key),this.addition.refresh_token=n.refresh_token,this.addition.access_token=n.access_token}async getFiles(e){let t=[],i;do{let n={parent_fid:e,size:100,sort:this.addition.order_by&&this.addition.order_by!=="none"?`${this.addition.order_by}:${this.addition.order_direction||"asc"}`:"file_name:asc"};i?.token&&(n.query_cursor=i);let o=(await this.request("/open/v1/file/list","POST",n)).data;if(o?.file_list&&t.push(...o.file_list),o?.last_page)break;i=o?.next_query_cursor}while(i?.token);return t}async getDownloadUrl(e){let i=(await this.request("/open/v1/file/get_download_url","POST",{fid:e})).data;if(!i.download_url)throw new Error("[QuarkOpen] empty download url");return i.download_url}downloadCookie(){return`x_pan_client_id=${this.appId}; x_pan_access_token=${this.accessToken}`}async mkdir(e,t){await this.request("/open/v1/dir","POST",{dir_path:t,pdir_fid:e})}async rename(e,t){await this.request("/open/v1/file/rename","POST",{fid:e,file_name:t,conflict_mode:"REUSE"})}async move(e,t){await this.request("/open/v1/file/move","POST",{action_type:1,fid_list:[e],to_pdir_fid:t})}async remove(e){await this.request("/open/v1/file/delete","POST",{action_type:1,fid_list:[e]})}}});var t3,eg,r3=j(()=>{"use strict";Be();e3();t3="0",eg=class{client;pathCache=new Map;constructor(e){this.client=new Zh(e)}async init(){await this.client.init()}fileToItem(e){let t=e.file_type==="0";return{name:e.filename,size:e.size||0,is_dir:t,modified:e.updated_at?new Date(e.updated_at).toISOString():new Date().toISOString(),sign:"",type:X(e.filename,t),thumb:e.thumbnail_url||"",raw_url:""}}async list(e,t){let i=await this.resolveDirId(t);return(await this.client.getFiles(i)).map(s=>this.fileToItem(s))}async get(e,t){let i=t.split("/").filter(Boolean),n=i[i.length-1]||"root",s="/"+i.slice(0,-1).join("/");try{let o=await this.resolveDirId(s),c=(await this.client.getFiles(o)).find(l=>l.filename===n);if(c){let l=this.fileToItem(c);if(!l.is_dir)try{l.raw_url=await this.client.getDownloadUrl(c.fid),l.raw_url_headers={Cookie:this.client.downloadCookie()}}catch(d){l.raw_url_error=d.message}return l}}catch{}try{return await this.resolveDirId(t),{name:n,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""}}catch{return{name:n,size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:0,raw_url:""}}}async mkdir(e,t){let i=t.split("/").filter(Boolean),n=i.pop()||"new_folder",s="/"+i.join("/"),o=await this.resolveDirId(s);await this.client.mkdir(o,n),this.pathCache.clear()}async rename(e,t,i){let n=await this.resolveDirId(t);await this.client.rename(n,i),this.pathCache.clear()}async remove(e,t,i){let n=await this.resolveDirId(t);await this.client.remove(n),this.pathCache.clear()}async move(e,t,i,n,s){let o=await this.resolveDirId(n),a=await this.resolveDirId(t);await this.client.move(o,a),this.pathCache.clear()}async copy(){throw new Error("[QuarkOpen] copy not supported")}async put(){throw new Error("[QuarkOpen] upload not supported in stateless environment")}async resolveDirId(e){let t=e.split("/").filter(Boolean).join("/");if(!t)return t3;if(this.pathCache.has(t))return this.pathCache.get(t);let i=t.split("/"),n=t3;for(let s=0;sl.file_type==="0"&&l.filename===i[s]);if(!a)throw new Error(`[QuarkOpen] Directory '${i[s]}' not found`);n=a.fid;let c="/"+i.slice(0,s+1).join("/");this.pathCache.set(c,n)}return n}}});var OK,MK,LK,HK,KK,GK,zK,JK,jK,$K,tg,i3=j(()=>{"use strict";si();OK="Mozilla/5.0 (Linux; U; Android 13; zh-cn; M2004J7AC Build/UKQ1.231108.001) AppleWebKit/533.1 (KHTML, like Gecko) Mobile Safari/533.1",MK="Xiaomi",LK="tv",HK="M2004J7AC",KK="M2004J7AC",GK="M2004J7AC",zK="M2004J7AC",JK="Adreno (TM) 550",jK="{}",$K={quark:{api:"https://open-api-drive.quark.cn",clientID:"d3194e61504e493eb6222857bccfed94",signKey:"kw2dvtd7p4t3pjl2d9ed9yc8yej8kw2d",appVer:"1.8.2.2",channel:"GENERAL",codeApi:"http://api.extscreen.com/quarkdrive"},uc:{api:"https://open-api-drive.uc.cn",clientID:"5acf882d27b74502b7040b0c65519aa7",signKey:"l3srvtd7p42l0d0x1u8d7yc8ye9kki4d",appVer:"1.7.2.2",channel:"UCTVOFFICIALWEB",codeApi:"http://api.extscreen.com/ucdrive"}},tg=class{conf;addition;accessToken="";deviceId;constructor(e){this.addition=e,this.conf=$K[e.variant||"quark"],this.deviceId=e.device_id||$t(String(Date.now())),this.addition.device_id=this.deviceId}async init(){if(!this.addition.refresh_token)throw new Error("[QuarkTV] refresh_token is required");await this.refreshToken()}async generateSign(e,t){let i=String(Date.now()),n=$t(this.deviceId+i),s=await hk(`${e}&${t}&${i}&${this.conf.signKey}`);return{tm:i,token:s,reqId:n}}deviceQuery(){return{app_ver:this.conf.appVer,device_id:this.deviceId,device_brand:MK,platform:LK,device_name:HK,device_model:KK,build_device:GK,build_product:zK,device_gpu:JK,activity_rect:jK,channel:this.conf.channel}}async request(e,t,i={}){let{tm:n,token:s,reqId:o}=await this.generateSign(t,e),a=new URLSearchParams({req_id:o,access_token:this.accessToken,...this.deviceQuery(),...i}),l=await(await fetch(`${this.conf.api}${e}?${a.toString()}`,{method:t,headers:{Accept:"application/json, text/plain, */*","User-Agent":OK,"x-pan-tm":n,"x-pan-token":s,"x-pan-client-id":this.conf.clientID}})).json().catch(()=>({status:-1,errno:-1})),d=(l.error_info||"").toLowerCase();if(l.status===-1&&(l.errno===10001||l.errno===11001)||d.includes("access token")||d.includes("access_token")||d.includes("token\u65E0\u6548")||d.includes("token \u65E0\u6548"))return await this.refreshToken(),this.request(e,t,i);if(l.status>=400||l.errno!==0)throw new Error(`[QuarkTV] ${l.error_info||`errno ${l.errno}`}`);return l}async refreshToken(){let e="/token",{reqId:t}=await this.generateSign("POST",e),i={req_id:t,...this.deviceQuery()};this.accessToken?i.refresh_token=this.addition.refresh_token:i.refresh_token=this.addition.refresh_token;let s=await(await fetch(`${this.conf.codeApi}${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(i)})).json().catch(()=>({}));if(s?.code!==200)throw new Error(`[QuarkTV] ${s?.message||"token refresh failed"}`);let o=s.data||{};if(!o.access_token)throw new Error("[QuarkTV] refresh token empty");this.accessToken=o.access_token,o.refresh_token&&(this.addition.refresh_token=o.refresh_token)}async getFiles(e){let t=[],i=0,n=100,s=this.addition.order_direction==="asc"?"0":"1",o=this.addition.order_by==="file_name"?"1":"3";for(;;){let c=(await this.request("/file","GET",{method:"list",parent_fid:e,order_by:o,desc:s,category:"",source:"",ex_source:"",list_all:"0",page_size:String(n),page_index:String(i)})).data;c?.files&&t.push(...c.files);let l=c?.total_count||0;if(i*n>=l)break;i++}return t}async getDownloadUrl(e){if(this.addition.link_method==="streaming"){let o=(await this.request("/file","GET",{method:"streaming",group_by:"source",fid:e,resolution:"low,normal,high,super,2k,4k",support:"dolby_vision"})).data?.video_info?.find(a=>a.url)?.url||"";if(!o)throw new Error("[QuarkTV] no streaming link found");return o}let i=(await this.request("/file","GET",{method:"download",group_by:"source",fid:e,resolution:"low,normal,high,super,2k,4k",support:"dolby_vision"})).data;if(!i?.download_url)throw new Error("[QuarkTV] empty download url");return i.download_url}}});var n3,rg,s3=j(()=>{"use strict";Be();i3();n3="0",rg=class{client;pathCache=new Map;constructor(e){this.client=new tg(e)}async init(){await this.client.init()}fileToItem(e){let t=e.isdir===1;return{name:e.filename,size:e.size||0,is_dir:t,modified:e.updated_at?new Date(e.updated_at).toISOString():new Date().toISOString(),sign:"",type:X(e.filename,t),thumb:e.thumbnail_url||"",raw_url:""}}async list(e,t){let i=await this.resolveDirId(t);return(await this.client.getFiles(i)).map(s=>this.fileToItem(s))}async get(e,t){let i=t.split("/").filter(Boolean),n=i[i.length-1]||"root",s="/"+i.slice(0,-1).join("/");try{let o=await this.resolveDirId(s),c=(await this.client.getFiles(o)).find(l=>l.filename===n);if(c){let l=this.fileToItem(c);if(!l.is_dir)try{l.raw_url=await this.client.getDownloadUrl(c.fid)}catch(d){l.raw_url_error=d.message}return l}}catch{}try{return await this.resolveDirId(t),{name:n,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""}}catch{return{name:n,size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:0,raw_url:""}}}async mkdir(){throw new Error("[QuarkTV] read-only storage")}async rename(){throw new Error("[QuarkTV] read-only storage")}async remove(){throw new Error("[QuarkTV] read-only storage")}async move(){throw new Error("[QuarkTV] read-only storage")}async copy(){throw new Error("[QuarkTV] read-only storage")}async put(){throw new Error("[QuarkTV] read-only storage")}async resolveDirId(e){let t=e.split("/").filter(Boolean).join("/");if(!t)return n3;if(this.pathCache.has(t))return this.pathCache.get(t);let i=t.split("/"),n=n3;for(let s=0;sl.isdir===1&&l.filename===i[s]);if(!a)throw new Error(`[QuarkTV] Directory '${i[s]}' not found`);n=a.fid;let c="/"+i.slice(0,s+1).join("/");this.pathCache.set(c,n)}return n}}});var dc,ig,o3=j(()=>{"use strict";dc="https://open-api.123pan.com",ig=class{addition;accessToken="";constructor(e){this.addition=e,this.accessToken=e.access_token||""}async init(){this.accessToken||await this.getAccessToken()}async getAccessToken(){if(this.addition.use_online_api!==!1&&this.addition.refresh_token&&this.addition.api_url_address){let e=new URLSearchParams({refresh_ui:this.addition.refresh_token,server_use:"true",driver_txt:"123cloud_oa"}),i=await(await fetch(`${this.addition.api_url_address}?${e.toString()}`)).json().catch(()=>({}));if(i.access_token&&i.refresh_token){this.accessToken=i.access_token,this.addition.access_token=i.access_token,this.addition.refresh_token=i.refresh_token;return}let n=i.error_description||i.text||i.message||i.error;if(n)throw new Error(`[123Open] ${n}`)}if(this.addition.client_id&&this.addition.client_secret){let t=await(await fetch(`${dc}/api/v1/access_token`,{method:"POST",headers:{platform:"open_platform","Content-Type":"application/json"},body:JSON.stringify({clientID:this.addition.client_id,clientSecret:this.addition.client_secret})})).json().catch(()=>({code:-1}));if(t.code!==0)throw new Error(`[123Open] ${t.message}`);if(!t.data?.access_token)throw new Error("[123Open] empty access token");this.accessToken=t.data.access_token,this.addition.access_token=this.accessToken;return}throw new Error("[123Open] no valid authentication method (access_token / refresh_token / client_id+client_secret)")}async request(e,t,i){let n={Authorization:`Bearer ${this.accessToken}`,platform:"open_platform","Content-Type":"application/json"},s={method:t,headers:n};i!==void 0&&(s.body=JSON.stringify(i));let a=await(await fetch(e,s)).json().catch(()=>({code:-1}));return a.code===401?(await this.getAccessToken(),this.request(e,t,i)):a}async getFiles(e){let t=[],i=0;do{let n=new URLSearchParams({parentFileId:e,limit:"100",lastFileId:String(i),trashed:"false",searchMode:"",searchData:""}),s=await this.request(`${dc}/api/v2/file/list?${n.toString()}`,"GET");if(s.code!==0)throw new Error(`[123Open] ${s.message}`);let o=s.data,a=(o.file_list||[]).filter(c=>(c.trashed??0)===0);t.push(...a),i=o.last_file_id??-1}while(i!==-1);return t}async getDownloadUrl(e){let t=new URLSearchParams({fileId:String(e)}),i=await this.request(`${dc}/api/v1/file/download_info?${t.toString()}`,"GET");if(i.code!==0)throw new Error(`[123Open] ${i.message}`);let n=i.data?.download_url||"";if(!n)throw new Error("[123Open] empty download url");return n}async mkdir(e,t){let i=await this.request(`${dc}/upload/v1/file/mkdir`,"POST",{parentID:e,name:t});if(i.code!==0)throw new Error(`[123Open] ${i.message}`)}async move(e,t){let i=await this.request(`${dc}/api/v1/file/move`,"POST",{fileIDs:[e],toParentFileID:t});if(i.code!==0)throw new Error(`[123Open] ${i.message}`)}async rename(e,t){let i=await this.request(`${dc}/api/v1/file/name`,"PUT",{fileId:e,fileName:t});if(i.code!==0)throw new Error(`[123Open] ${i.message}`)}async remove(e){let t=await this.request(`${dc}/api/v1/file/trash`,"POST",{fileIDs:[e]});if(t.code!==0)throw new Error(`[123Open] ${t.message}`)}}});function VK(r){if(!r)return new Date().toISOString();let e=new Date(r.replace(" ","T")+"+08:00");return isNaN(e.getTime())?new Date().toISOString():e.toISOString()}var a3,ng,c3=j(()=>{"use strict";Be();o3();a3="0";ng=class{client;pathCache=new Map;constructor(e){this.client=new ig(e)}async init(){await this.client.init()}fileToItem(e){let t=e.type===1;return{name:e.filename,size:e.size||0,is_dir:t,modified:VK(e.update_at),sign:"",type:X(e.filename,t),raw_url:""}}async list(e,t){let i=await this.resolveDirId(t);return(await this.client.getFiles(i)).map(s=>this.fileToItem(s))}async get(e,t){let i=t.split("/").filter(Boolean),n=i[i.length-1]||"root",s="/"+i.slice(0,-1).join("/");try{let o=await this.resolveDirId(s),c=(await this.client.getFiles(o)).find(l=>l.filename===n);if(c){let l=this.fileToItem(c);if(!l.is_dir)try{l.raw_url=await this.client.getDownloadUrl(c.fileId)}catch(d){l.raw_url_error=d.message}return l}}catch{}try{return await this.resolveDirId(t),{name:n,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""}}catch{return{name:n,size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:0,raw_url:""}}}async mkdir(e,t){let i=t.split("/").filter(Boolean),n=i.pop()||"new_folder",s="/"+i.join("/"),o=await this.resolveDirId(s);await this.client.mkdir(o,n),this.pathCache.clear()}async rename(e,t,i){let n=await this.resolveEntry(t);await this.client.rename(n.id,i),this.pathCache.clear()}async remove(e,t,i){let n=await this.resolveEntry(t);await this.client.remove(n.id),this.pathCache.clear()}async move(e,t,i,n,s){let o=await this.resolveEntry(n),a=await this.resolveDirId(t);await this.client.move(o.id,a),this.pathCache.clear()}async copy(){throw new Error("[123Open] copy not supported")}async put(){throw new Error("[123Open] upload not supported in stateless environment")}async resolveDirId(e){let t=e.split("/").filter(Boolean).join("/");if(!t)return a3;if(this.pathCache.has(t))return this.pathCache.get(t);let i=t.split("/"),n=a3;for(let s=0;sl.type===1&&l.filename===i[s]);if(!a)throw new Error(`[123Open] Directory '${i[s]}' not found`);n=String(a.fileId);let c="/"+i.slice(0,s+1).join("/");this.pathCache.set(c,n)}return n}async resolveEntry(e){let t=e.split("/").filter(Boolean),i=t[t.length-1],n="/"+t.slice(0,-1).join("/"),s=await this.resolveDirId(n),a=(await this.client.getFiles(s)).find(c=>c.filename===i);if(!a)throw new Error(`[123Open] '${i}' not found`);return{id:a.fileId,isDir:a.type===1}}}});var sg,l3=j(()=>{"use strict";sg=class{addition;baseUrl;constructor(e){this.addition=e,this.baseUrl=e.region==="international"?"https://us.teambition.com":"https://www.teambition.com"}async init(){if(!this.addition.cookie)throw new Error("[Teambition] cookie is required");if(!this.addition.project_id)throw new Error("[Teambition] project_id is required");let e=await fetch(`${this.baseUrl}/api/v2/roles`,{headers:{Cookie:this.addition.cookie}});if(e.status>=400)throw new Error(`[Teambition] init failed: HTTP ${e.status}`)}async request(e,t,i,n){let s=n?"?"+new URLSearchParams(n).toString():"",o={Cookie:this.addition.cookie},a={method:t,headers:o};i!==void 0&&(a.body=JSON.stringify(i),o["Content-Type"]="application/json");let c=await fetch(`${this.baseUrl}${e}${s}`,a);if(c.status===204||c.status===201)return{};let l=await c.json().catch(()=>({}));if(l.name||l.message)throw new Error(`[Teambition] ${l.message||l.name}`);return l}async getFiles(e){let t=`${this.addition.order_by||"fileName"}${this.addition.order_direction||"Asc"}`,i={_parentId:e,_projectId:this.addition.project_id,order:t,count:"50"},n=[],s=1;for(;;){let a=await this.request("/api/collections","GET",void 0,{...i,page:String(s)});if(!Array.isArray(a)||a.length===0||(n.push(...a.filter(c=>c.title)),s++,a.length<50))break}let o=[];for(s=1;;){let a=await this.request("/api/works","GET",void 0,{...i,page:String(s)});if(!Array.isArray(a)||a.length===0||(o.push(...a),s++,a.length<50))break}return{folders:n,works:o}}async resolveDownloadUrl(e){let t=await fetch(e,{headers:{Cookie:this.addition.cookie},redirect:"manual"});if(t.status===302){let i=t.headers.get("location");if(i)return i}return e}async mkdir(e,t){await this.request("/api/collections","POST",{objectType:"collection",_projectId:this.addition.project_id,_creatorId:"",created:"",updated:"",title:t,color:"blue",description:"",workCount:0,collectionType:"",recentWorks:[],_parentId:e,subCount:null})}async move(e,t,i){let n=i?"/api/collections/":"/api/works/";await this.request(`${n}${e}/move`,"PUT",{_parentId:t})}async rename(e,t,i){i?await this.request(`/api/collections/${e}`,"PUT",{title:t}):await this.request(`/api/works/${e}`,"PUT",{fileName:t})}async copy(e,t,i){let n=i?"/api/collections/":"/api/works/";await this.request(`${n}${e}/fork`,"PUT",{_parentId:t})}async remove(e,t){let i=t?"/api/collections/":"/api/works/";await this.request(`${i}${e}/archive`,"POST")}}});var og,d3=j(()=>{"use strict";Be();l3();og=class{client;pathCache=new Map;constructor(e){this.client=new sg(e)}async init(){await this.client.init()}async list(e,t){let i=await this.pathToId(t),{folders:n,works:s}=await this.client.getFiles(i),o=n.map(c=>({name:c.title,size:0,is_dir:!0,modified:c.updated||new Date().toISOString(),sign:c._id,type:1,raw_url:""})),a=s.map(c=>({name:c.fileName,size:c.fileSize||0,is_dir:!1,modified:c.updated||new Date().toISOString(),sign:c._id,type:X(c.fileName,!1),thumb:c.thumbnail||c.thumbnailUrl||"",raw_url:c.downloadUrl||""}));return[...o,...a]}async get(e,t){let i=t.split("/").filter(Boolean),n=i[i.length-1]||"root",s="/"+i.slice(0,-1).join("/");try{let o=await this.pathToId(s),{folders:a,works:c}=await this.client.getFiles(o),l=a.find(u=>u.title===n);if(l)return{name:l.title,size:0,is_dir:!0,modified:l.updated||new Date().toISOString(),sign:l._id,type:1,raw_url:""};let d=c.find(u=>u.fileName===n);if(d){let u=d.downloadUrl||"";if(u)try{u=await this.client.resolveDownloadUrl(u)}catch{}return{name:d.fileName,size:d.fileSize||0,is_dir:!1,modified:d.updated||new Date().toISOString(),sign:d._id,type:X(d.fileName,!1),thumb:d.thumbnail||d.thumbnailUrl||"",raw_url:u}}}catch{}try{return await this.client.getFiles(await this.pathToId(t)),{name:n,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""}}catch{return{name:n,size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:0,raw_url:""}}}async mkdir(e,t){let i=t.split("/").filter(Boolean),n=i.pop()||"new_folder",s="/"+i.join("/");await this.client.mkdir(await this.pathToId(s),n),this.pathCache.clear()}async rename(e,t,i){let n=await this.resolveEntry(t);await this.client.rename(n.id,i,n.isDir),this.pathCache.clear()}async remove(e,t,i){let n=await this.resolveEntry(t);await this.client.remove(n.id,n.isDir),this.pathCache.clear()}async move(e,t,i,n,s){let o=await this.resolveEntry(n);await this.client.move(o.id,await this.pathToId(t),o.isDir),this.pathCache.clear()}async copy(e,t,i,n,s){let o=await this.resolveEntry(n);await this.client.copy(o.id,await this.pathToId(t),o.isDir),this.pathCache.clear()}async put(){throw new Error("[Teambition] upload not supported in stateless environment")}async resolveEntry(e){let t=e.split("/").filter(Boolean),i=t[t.length-1],n="/"+t.slice(0,-1).join("/"),s=await this.pathToId(n),{folders:o,works:a}=await this.client.getFiles(s),c=o.find(d=>d.title===i);if(c)return{id:c._id,isDir:!0};let l=a.find(d=>d.fileName===i);if(l)return{id:l._id,isDir:!1};throw new Error(`[Teambition] '${i}' not found`)}async pathToId(e){let t=e.split("/").filter(Boolean).join("/");if(!t)return"";if(this.pathCache.has(t))return this.pathCache.get(t);let i=t.split("/"),n="";for(let s=0;sl.title===i[s]);if(!a)throw new Error(`[Teambition] Directory '${i[s]}' not found`);n=a._id;let c="/"+i.slice(0,s+1).join("/");this.pathCache.set(c,n)}return n}}});var u3,gC,YK,f3,A3,ag,h3=j(()=>{"use strict";si();u3="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) quark-cloud-drive/2.5.20 Chrome/100.0.4896.160 Electron/18.3.5.4-b478491100 Safari/537.36 Channel/pckk_other_ch",gC="https://chaoxing.com/",YK="https://groupweb.chaoxing.com",f3="https://noteyd.chaoxing.com",A3="u2oh6Vu^HWe4_AES",ag=class{addition;cookie;persistCookie;constructor(e,t){this.addition=e,this.cookie=e.cookie||"",this.persistCookie=t}async init(){if(!this.addition.bbsid)throw new Error("[ChaoXing] bbsid is required");this.cookie||(this.cookie=await this.login(),this.persistCookie&&await this.persistCookie(this.cookie))}getCookie(){return this.cookie}downloadHeaders(){return{Cookie:this.cookie,Referer:gC,"User-Agent":u3}}async login(){let e=await vx(this.addition.user_name,A3),t=await vx(this.addition.password,A3),i=new FormData;i.append("uname",e),i.append("password",t),i.append("t","true");let n=await fetch("https://passport2.chaoxing.com/fanyalogin",{method:"POST",body:i}),s=[],o=typeof n.headers.getSetCookie=="function"?n.headers.getSetCookie():[];if(Array.isArray(o)&&o.length>0)for(let a of o)a&&s.push(a.split(";")[0]);else{let a=n.headers.get("set-cookie");a&&s.push(a.split(";")[0])}if(s.length===0)throw new Error("[ChaoXing] login failed: no cookie returned");return s.join("; ")}async request(e,t,i,n){let s=i?"?"+new URLSearchParams(i).toString():"",o={Cookie:this.cookie,Accept:"application/json, text/plain, */*",Referer:gC,...n},a=await fetch(`${YK}${e}${s}`,{method:t,headers:o});if(a.status>=400)throw new Error(`[ChaoXing] request failed: HTTP ${a.status}`);return await a.json()}async requestDownload(e,t){let i={Cookie:this.cookie,Accept:"application/json, text/plain, */*",Referer:gC,"User-Agent":u3},n=await fetch(`${f3}${e}`,{method:t,headers:i});if(n.status>=400)throw new Error(`[ChaoXing] download request failed: HTTP ${n.status}`);return await n.json()}async getFiles(e){let t=[],i=await this.request("/pc/resource/getResourceList","GET",{bbsid:this.addition.bbsid,folderId:e,recType:"1"});if(i.result!==1)throw new Error(`[ChaoXing] list failed: result=${i.result}`);i.list&&i.list.length>0&&t.push(...i.list);let n=await this.request("/pc/resource/getResourceList","GET",{bbsid:this.addition.bbsid,folderId:e,recType:"2"});for(let s of n.list||[])s.content.fileId||(s.content.fileId=s.content.objectId||""),t.push(s);return t}async link(e){let t=await this.requestDownload("/screen/note_note/files/status/"+e,"POST");if(!t.download)throw new Error(`[ChaoXing] link failed: ${t.msg||"no download url"}`);return t}async mkdir(e,t){let i=await this.request("/pc/resource/addResourceFolder","GET",{bbsid:this.addition.bbsid,name:t,pid:e});if(i.result!==1)throw new Error(`[ChaoXing] mkdir failed: ${i.msg}`)}async move(e,t,i){let n=i?{bbsid:this.addition.bbsid,folderIds:e,targetId:t}:{bbsid:this.addition.bbsid,recIds:e,targetId:t},s=await this.request("/pc/resource/moveResource","GET",n);if(!s.status)throw new Error(`[ChaoXing] move failed: ${s.msg}`)}async renameFolder(e,t){let i=await this.request("/pc/resource/updateResourceFolderName","GET",{bbsid:this.addition.bbsid,folderId:e,name:t});if(i.result!==1)throw new Error(`[ChaoXing] rename failed: ${i.msg}`)}async remove(e,t){let i=t?"/pc/resource/deleteResourceFolder":"/pc/resource/deleteResourceFile",n=t?{bbsid:this.addition.bbsid,folderIds:e}:{bbsid:this.addition.bbsid,recIds:e},s=await this.request(i,"GET",n);if(s.result!==1)throw new Error(`[ChaoXing] remove failed: ${s.msg}`)}async upload(e,t,i){let s=await(await fetch(`${f3}/pc/files/getUploadConfig`,{method:"GET"})).json();if(s.result!==1||!s.msg?.token)throw new Error("[ChaoXing] get upload config failed");let o=new FormData,a=i.buffer.slice(i.byteOffset,i.byteOffset+i.byteLength);o.append("file",new Blob([a]),t),o.append("_token",s.msg.token),o.append("puid",String(s.msg.puid||""));let l=await(await fetch("https://pan-yz.chaoxing.com/upload",{method:"POST",body:o})).json();if(l.msg!=="success"||!l.objectId)throw new Error(`[ChaoXing] upload failed: ${l.msg}`);let d={cataid:"100000019",key:l.objectId,param:l.data||{}},u=JSON.stringify(d),f=await this.request("/pc/resource/addResource","GET",{bbsid:this.addition.bbsid,pid:e,type:"yunpan",params:encodeURIComponent("["+u+"]")});if(f.result!==1)throw new Error(`[ChaoXing] add resource failed: ${f.msg}`)}}});function g3(r){let e=r.content;if(e.folderName)return{name:e.folderName,size:0,is_dir:!0,modified:r.inserttime?new Date(r.inserttime).toISOString():new Date().toISOString(),sign:String(r.id),type:1};let t=e.fileId||e.objectId||"";return{name:e.name||"",size:Number(e.size)||0,is_dir:!1,modified:e.uploadDate?new Date(e.uploadDate).toISOString():new Date().toISOString(),sign:`${r.id}$${t}`,type:X(e.name||"",!1),raw_url:""}}var cg,p3=j(()=>{"use strict";Be();h3();cg=class{client;pathCache=new Map;constructor(e,t){this.client=new ag(e,t)}async init(){await this.client.init()}async list(e,t){let i=await this.pathToId(t);return(await this.client.getFiles(i)).map(s=>g3(s))}async get(e,t){let i=t.split("/").filter(Boolean),n=i[i.length-1]||"root",s="/"+i.slice(0,-1).join("/");try{let o=await this.pathToId(s),c=(await this.client.getFiles(o)).find(l=>(l.content.folderName||l.content.name)===n);if(c){let l=g3(c);if(!l.is_dir){let d=l.sign.split("$")[1]||"";if(d)try{let u=await this.client.link(d);l.raw_url=u.download,l.raw_url_headers=this.client.downloadHeaders()}catch{l.raw_url_error="[ChaoXing] failed to resolve download url"}}return l}}catch{}try{let o=await this.pathToId(t);return{name:n,size:0,is_dir:!0,modified:new Date().toISOString(),sign:o,type:1,raw_url:""}}catch{return{name:n,size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:0,raw_url:""}}}async mkdir(e,t){let i=t.split("/").filter(Boolean),n=i.pop()||"new_folder",s="/"+i.join("/");await this.client.mkdir(await this.pathToId(s),n),this.pathCache.clear()}async rename(e,t,i){let n=await this.resolveEntry(t);if(!n.isDir)throw new Error("[ChaoXing] \u6B64\u7F51\u76D8\u4E0D\u652F\u6301\u4FEE\u6539\u6587\u4EF6\u540D");await this.client.renameFolder(n.id,i),this.pathCache.clear()}async remove(e,t,i){let n=await this.resolveEntry(t);await this.client.remove(n.id,n.isDir),this.pathCache.clear()}async move(e,t,i,n,s){let o=await this.resolveEntry(n);await this.client.move(o.id,await this.pathToId(t),o.isDir),this.pathCache.clear()}async copy(){throw new Error("[ChaoXing] copy not supported")}async put(e,t,i){let n=t.split("/").filter(Boolean),s=n.pop()||"file",o="/"+n.join("/"),a=await this.pathToId(o);await this.client.upload(a,s,new Uint8Array(i)),this.pathCache.clear()}async resolveEntry(e){let t=e.split("/").filter(Boolean),i=t[t.length-1],n="/"+t.slice(0,-1).join("/"),s=await this.pathToId(n),a=(await this.client.getFiles(s)).find(c=>(c.content.folderName||c.content.name)===i);if(!a)throw new Error(`[ChaoXing] '${i}' not found`);return{id:String(a.id),isDir:!!a.content.folderName}}async pathToId(e){let t=e.split("/").filter(Boolean).join("/");if(!t)return"-1";if(this.pathCache.has(t))return this.pathCache.get(t);let i=t.split("/"),n="-1";for(let s=0;sl.content.folderName===i[s]);if(!a)throw new Error(`[ChaoXing] Directory '${i[s]}' not found`);n=String(a.id);let c="/"+i.slice(0,s+1).join("/");this.pathCache.set(c,n)}return n}}});var pC,mC,yC,WK,lg,m3=j(()=>{"use strict";pC="all",mC="albums",yC="share_albums",WK="root",lg=class{addition;accessToken="";constructor(e){this.addition=e}async init(){await this.refreshToken()}async refreshToken(){let e=new URLSearchParams({client_id:this.addition.client_id,client_secret:this.addition.client_secret,refresh_token:this.addition.refresh_token,grant_type:"refresh_token"}),i=await(await fetch("https://www.googleapis.com/oauth2/v4/token",{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:e.toString()})).json();if(!i.access_token)throw new Error("[GooglePhoto] refresh token failed");this.accessToken=i.access_token}async request(e,t,i,n){let s=i?"?"+new URLSearchParams(i).toString():"",o={Authorization:"Bearer "+this.accessToken,"Accept-Encoding":"gzip"},a={method:t,headers:o};n!==void 0&&(o["Content-Type"]="application/json",a.body=JSON.stringify(n));let c=await fetch(`${e}${s}`,a);if(c.status===401&&(await this.refreshToken(),o.Authorization="Bearer "+this.accessToken,c=await fetch(`${e}${s}`,a)),c.status>=400){let l=await c.json().catch(()=>({}));throw new Error(`[GooglePhoto] request failed: ${l.error?.message||`HTTP ${c.status}`}`)}return c}async getFiles(e){switch(e){case pC:return this.getAllMedias();case mC:return this.getAlbums();case yC:return this.getShareAlbums();case WK:return this.getFakeRoot();default:return this.getMedias(e)}}getFakeRoot(){return[{id:pC,title:pC},{id:mC,title:mC},{id:yC,title:yC}]}getAlbums(){return this.fetchItems("https://photoslibrary.googleapis.com/v1/albums",{fields:"albums(id,title,coverPhotoBaseUrl),nextPageToken",pageSize:"50",pageToken:"first"},"GET")}getShareAlbums(){return this.fetchItems("https://photoslibrary.googleapis.com/v1/sharedAlbums",{fields:"sharedAlbums(id,title,coverPhotoBaseUrl),nextPageToken",pageSize:"50",pageToken:"first"},"GET")}getMedias(e){return this.fetchItems("https://photoslibrary.googleapis.com/v1/mediaItems:search",{fields:"mediaItems(id,baseUrl,mimeType,mediaMetadata,filename),nextPageToken",pageSize:"100",albumId:e,pageToken:"first"},"POST")}getAllMedias(){return this.fetchItems("https://photoslibrary.googleapis.com/v1/mediaItems",{fields:"mediaItems(id,baseUrl,mimeType,mediaMetadata,filename),nextPageToken",pageSize:"100",pageToken:"first"},"GET")}async getMedia(e){return await(await this.request(`https://photoslibrary.googleapis.com/v1/mediaItems/${e}`,"GET",{fields:"mediaMetadata,baseUrl,mimeType"})).json()}async fetchItems(e,t,i){let n=[],s=t.pageToken;for(;s!=="";){let o={...t};o.pageToken==="first"&&(o.pageToken="");let c=await(await this.request(e,i,o)).json();s=c.nextPageToken||"",c.mediaItems&&n.push(...c.mediaItems),c.albums&&n.push(...c.albums),c.sharedAlbums&&n.push(...c.sharedAlbums)}return n}async link(e){let t=await this.getMedia(e),i=t.mimeType||"";return i.includes("image/")?(t.baseUrl||"")+"=d":i.includes("video/")?(t.baseUrl||"")+"=dv":t.baseUrl||""}}});function y3(r){return r.filename?{name:r.filename,size:0,is_dir:!1,modified:r.mediaMetadata?.creationTime||new Date().toISOString(),sign:r.id,type:X(r.filename,!1),thumb:r.baseUrl?r.baseUrl+"=w100-h100-c":"",raw_url:""}:{name:r.title||r.id,size:0,is_dir:!0,modified:new Date().toISOString(),sign:r.id,type:1}}var dg,I3=j(()=>{"use strict";Be();m3();dg=class{client;pathCache=new Map;constructor(e){this.client=new lg(e)}async init(){await this.client.init()}async list(e,t){let i=await this.pathToId(t);return(await this.client.getFiles(i)).map(s=>y3(s))}async get(e,t){let i=t.split("/").filter(Boolean),n=i[i.length-1]||"root",s="/"+i.slice(0,-1).join("/");try{let o=await this.pathToId(s),c=(await this.client.getFiles(o)).find(l=>(l.filename||l.title)===n);if(c){let l=y3(c);if(!l.is_dir)try{l.raw_url=await this.client.link(c.id)}catch{l.raw_url_error="[GooglePhoto] failed to resolve download url"}return l}}catch{}return{name:n,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""}}async mkdir(){throw new Error("[GooglePhoto] mkdir not supported")}async rename(){throw new Error("[GooglePhoto] rename not supported")}async remove(){throw new Error("[GooglePhoto] remove not supported")}async move(){throw new Error("[GooglePhoto] move not supported")}async copy(){throw new Error("[GooglePhoto] copy not supported")}async put(){throw new Error("[GooglePhoto] upload not supported")}async pathToId(e){let t=e.split("/").filter(Boolean).join("/");if(!t)return"root";if(this.pathCache.has(t))return this.pathCache.get(t);let i=t.split("/"),n=i[0];for(let s=1;s(l.filename||l.title)===i[s]);if(!a)throw new Error(`[GooglePhoto] Directory '${i[s]}' not found`);n=a.id;let c="/"+i.slice(0,s+1).join("/");this.pathCache.set(c,n)}return this.pathCache.set(t,n),n}}});var ug,w3=j(()=>{"use strict";ug=class{addition;accessToken="";tokenType="Bearer";persist;constructor(e,t){this.addition=e,this.persist=t}async init(){if(!this.addition.client_id||!this.addition.client_secret)throw new Error("[FebBox] client_id and client_secret are required");await this.refreshToken()}async refreshToken(){let e=new URLSearchParams;this.addition.refresh_token?(e.set("grant_type","refresh_token"),e.set("refresh_token",this.addition.refresh_token)):e.set("grant_type","client_credentials"),e.set("client_id",this.addition.client_id),e.set("client_secret",this.addition.client_secret);let i=await(await fetch("https://api.febbox.com/oauth/token",{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:e.toString()})).json();if(i.code!==1||!i.data?.access_token)throw new Error(`[FebBox] token fetch failed: ${i.msg}`);this.accessToken=i.data.access_token,this.tokenType=i.data.token_type||"Bearer",i.data.refresh_token&&(this.addition.refresh_token=i.data.refresh_token,this.persist&&await this.persist(i.data.refresh_token))}async request(e){let t=new FormData;for(let[s,o]of Object.entries(e))t.append(s,o);let n=await(await fetch("https://api.febbox.com/oauth",{method:"POST",headers:{Authorization:`${this.tokenType} ${this.accessToken}`},body:t})).json().catch(()=>({}));if(n.code===-10001&&n.server_name)return await this.refreshToken(),this.request(e);if(n.code!==0&&n.code!==1)throw new Error(`[FebBox] ${n.msg||n.code}`);return n}async getFilesList(e){let t=this.addition.page_size||100,i=[],n=1;for(;;){let o=(await this.request({module:"file_list",parent_id:e,page:String(n),pagelimit:String(t),order:this.addition.sort_rule||"name_asc"})).data?.file_list||[];if(i.push(...o),o.length{"use strict";Be();w3();fg=class{client;userIp;pathCache=new Map;constructor(e,t){this.client=new ug(e,t),this.userIp=e.user_ip||""}async init(){await this.client.init()}async list(e,t){let i=await this.pathToId(t);return(await this.client.getFilesList(i)).map(s=>x3(s))}async get(e,t){let i=t.split("/").filter(Boolean),n=i[i.length-1]||"root",s="/"+i.slice(0,-1).join("/");try{let o=await this.pathToId(s),c=(await this.client.getFilesList(o)).find(l=>l.file_name===n);if(c){let l=x3(c);if(!l.is_dir)try{l.raw_url=await this.client.getDownloadLink(l.sign,this.userIp)}catch{l.raw_url_error="[FebBox] failed to resolve download url"}return l}}catch{}return{name:n,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""}}async mkdir(e,t){let i=t.split("/").filter(Boolean),n=i.pop()||"new_folder",s="/"+i.join("/");await this.client.makeDir(await this.pathToId(s),n),this.pathCache.clear()}async rename(e,t,i){let n=await this.resolveEntry(t);await this.client.rename(n.id,i),this.pathCache.clear()}async remove(e,t,i){let n=await this.resolveEntry(t);await this.client.remove(n.id),this.pathCache.clear()}async move(e,t,i,n,s){let o=await this.resolveEntry(n);await this.client.move(o.id,await this.pathToId(t)),this.pathCache.clear()}async copy(e,t,i,n,s){let o=await this.resolveEntry(n);await this.client.copy(o.id,await this.pathToId(t)),this.pathCache.clear()}async put(){throw new Error("[FebBox] upload not supported")}async resolveEntry(e){let t=e.split("/").filter(Boolean),i=t[t.length-1],n="/"+t.slice(0,-1).join("/"),s=await this.pathToId(n),a=(await this.client.getFilesList(s)).find(c=>c.file_name===i);if(!a)throw new Error(`[FebBox] '${i}' not found`);return{id:String(a.fid),isDir:a.is_dir===1}}async pathToId(e){let t=e.split("/").filter(Boolean).join("/");if(!t)return"0";if(this.pathCache.has(t))return this.pathCache.get(t);let i=t.split("/"),n="0";for(let s=0;sl.file_name===i[s]&&l.is_dir===1);if(!a)throw new Error(`[FebBox] Directory '${i[s]}' not found`);n=String(a.fid);let c="/"+i.slice(0,s+1).join("/");this.pathCache.set(c,n)}return n}}});var XK,ZK,eG,tG,rG,Ag,E3=j(()=>{"use strict";XK="https://rest-api.degoo.com/login",ZK="https://rest-api.degoo.com/access-token/v2",eG="https://production-appsync.degoo.com/graphql",tG="da2-vs6twz5vnjdavpqndtbzg3prra",rG="CgAQAg",Ag=class{addition;accessToken="";refreshToken="";rootId="0";persist;constructor(e,t){this.addition=e,this.accessToken=e.access_token||"",this.refreshToken=e.refresh_token||"",this.persist=t}async init(){await this.ensureValidToken(),await this.getDevices()}getRootId(){return this.rootId}async saveTokens(){this.persist&&await this.persist({accessToken:this.accessToken,refreshToken:this.refreshToken})}isTokenExpired(){if(!this.accessToken)return!0;try{let e=this.accessToken.split(".");if(e.length!==3)return!0;let t=JSON.parse(atob(e[1].replace(/-/g,"+").replace(/_/g,"/"))),i=Number(t.exp)*1e3;return Date.now()+300*1e3>i}catch{return!0}}async ensureValidToken(){if(this.isTokenExpired()){if(this.refreshToken)try{await this.refreshAccessToken();return}catch{}this.addition.username&&this.addition.password&&await this.login()}}async refreshAccessToken(){let t=await(await fetch(ZK,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({RefreshToken:this.refreshToken})})).json();if(!t.AccessToken)throw new Error("[Degoo] refresh token failed");this.accessToken=t.AccessToken,await this.saveTokens()}async login(){let t=await(await fetch(XK,{method:"POST",headers:{"Content-Type":"application/json",Origin:"https://app.degoo.com"},body:JSON.stringify({GenerateToken:!0,Username:this.addition.username,Password:this.addition.password})})).json();if(t.RefreshToken)this.refreshToken=t.RefreshToken,await this.refreshAccessToken();else if(t.Token)this.accessToken=t.Token,this.refreshToken="";else throw new Error("[Degoo] login failed: no valid token");await this.saveTokens()}async apiCall(e,t,i){await this.ensureValidToken(),i.Token!==void 0&&(i.Token=this.accessToken);let s=await(await fetch(eG,{method:"POST",headers:{"Content-Type":"application/json","x-api-key":tG,Authorization:`Bearer ${this.accessToken}`},body:JSON.stringify({operationName:e,query:t,variables:i})})).json();if(s.errors&&s.errors.length>0){let o=s.errors[0];if(o.errorType==="Unauthorized")return await this.login(),i.Token=this.accessToken,this.apiCall(e,t,i);throw new Error(`[Degoo] GraphQL error: ${o.message}`)}return s.data}async getDevices(){let t=await this.apiCall("GetFileChildren5","query GetFileChildren5($Token: String! $ParentID: String $AllParentIDs: [String] $Limit: Int! $Order: Int! $NextToken: String ) { getFileChildren5(Token: $Token ParentID: $ParentID AllParentIDs: $AllParentIDs Limit: $Limit Order: $Order NextToken: $NextToken) { Items { ParentID } NextToken } }",{Token:this.accessToken,ParentID:"0",Limit:10,Order:3});if(this.rootId==="0"){let i=t?.getFileChildren5?.Items;i&&i.length>0&&(this.rootId=i[0].ParentID)}}async getFileChildren5(e){let t="query GetFileChildren5($Token: String! $ParentID: String $AllParentIDs: [String] $Limit: Int! $Order: Int! $NextToken: String ) { getFileChildren5(Token: $Token ParentID: $ParentID AllParentIDs: $AllParentIDs Limit: $Limit Order: $Order NextToken: $NextToken) { Items { ID ParentID Name Category Size CreationTime LastModificationTime LastUploadTime FilePath IsInRecycleBin DeviceID MetadataID } NextToken } }",i=[],n="";for(;;){let s={Token:this.accessToken,ParentID:e,Limit:1e3,Order:3};n&&(s.NextToken=n);let o=await this.apiCall("GetFileChildren5",t,s),a=o?.getFileChildren5?.Items||[];if(i.push(...a),n=o?.getFileChildren5?.NextToken||"",!n)break}return i}async getOverlay4(e){return(await this.apiCall("GetOverlay4","query GetOverlay4($Token: String!, $ID: IDType!) { getOverlay4(Token: $Token, ID: $ID) { ID ParentID Name Category Size CreationTime LastModificationTime LastUploadTime URL FilePath IsInRecycleBin DeviceID MetadataID } }",{Token:this.accessToken,ID:{FileID:e}}))?.getOverlay4}async mkdir(e,t){await this.apiCall("SetUploadFile3","mutation SetUploadFile3($Token: String!, $FileInfos: [FileInfoUpload3]!) { setUploadFile3(Token: $Token, FileInfos: $FileInfos) }",{Token:this.accessToken,FileInfos:[{Checksum:rG,Name:t,CreationTime:Date.now(),ParentID:e,Size:0}]})}async move(e,t){await this.apiCall("SetMoveFile","mutation SetMoveFile($Token: String!, $Copy: Boolean, $NewParentID: String!, $FileIDs: [String]!) { setMoveFile(Token: $Token, Copy: $Copy, NewParentID: $NewParentID, FileIDs: $FileIDs) }",{Token:this.accessToken,Copy:!1,NewParentID:t,FileIDs:[e]})}async rename(e,t){await this.apiCall("SetRenameFile","mutation SetRenameFile($Token: String!, $FileRenames: [FileRenameInfo]!) { setRenameFile(Token: $Token, FileRenames: $FileRenames) }",{Token:this.accessToken,FileRenames:[{ID:e,NewName:t}]})}async remove(e){await this.apiCall("SetDeleteFile5","mutation SetDeleteFile5($Token: String!, $IsInRecycleBin: Boolean!, $IDs: [IDType]!) { setDeleteFile5(Token: $Token, IsInRecycleBin: $IsInRecycleBin, IDs: $IDs) }",{Token:this.accessToken,IsInRecycleBin:!1,IDs:[{FileID:e}]})}}});function IC(r){return r===1||r===2||r===10}function B3(r){let e=IC(r.Category),t=Number(r.Size)||0,i=Number(r.LastModificationTime);return{name:r.Name,size:e?0:t,is_dir:e,modified:i?new Date(i).toISOString():new Date().toISOString(),sign:r.ID,type:X(r.Name,e),raw_url:""}}var hg,b3=j(()=>{"use strict";Be();E3();hg=class{client;pathCache=new Map;constructor(e,t){this.client=new Ag(e,t)}async init(){await this.client.init()}async list(e,t){let i=await this.pathToId(t);return(await this.client.getFileChildren5(i)).map(s=>B3(s))}async get(e,t){let i=t.split("/").filter(Boolean),n=i[i.length-1]||"root",s="/"+i.slice(0,-1).join("/");try{let o=await this.pathToId(s),c=(await this.client.getFileChildren5(o)).find(l=>l.Name===n);if(c){let l=B3(c);if(!l.is_dir)try{let d=await this.client.getOverlay4(c.ID);l.raw_url=d.URL||""}catch{l.raw_url_error="[Degoo] failed to resolve download url"}return l}}catch{}return{name:n,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""}}async mkdir(e,t){let i=t.split("/").filter(Boolean),n=i.pop()||"new_folder",s="/"+i.join("/");await this.client.mkdir(await this.pathToId(s),n),this.pathCache.clear()}async rename(e,t,i){let n=await this.resolveEntry(t);await this.client.rename(n.id,i),this.pathCache.clear()}async remove(e,t,i){let n=await this.resolveEntry(t);await this.client.remove(n.id),this.pathCache.clear()}async move(e,t,i,n,s){let o=await this.resolveEntry(n);await this.client.move(o.id,await this.pathToId(t)),this.pathCache.clear()}async copy(){throw new Error("[Degoo] copy not supported")}async put(){throw new Error("[Degoo] upload not supported in stateless environment")}async resolveEntry(e){let t=e.split("/").filter(Boolean),i=t[t.length-1],n="/"+t.slice(0,-1).join("/"),s=await this.pathToId(n),a=(await this.client.getFileChildren5(s)).find(c=>c.Name===i);if(!a)throw new Error(`[Degoo] '${i}' not found`);return{id:a.ID,isDir:IC(a.Category)}}async pathToId(e){let t=e.split("/").filter(Boolean).join("/");if(!t)return this.client.getRootId();if(this.pathCache.has(t))return this.pathCache.get(t);let i=t.split("/"),n=this.client.getRootId();for(let s=0;sl.Name===i[s]&&IC(l.Category));if(!a)throw new Error(`[Degoo] Directory '${i[s]}' not found`);n=a.ID;let c="/"+i.slice(0,s+1).join("/");this.pathCache.set(c,n)}return n}}});function Dl(r){return new TextEncoder().encode(r)}function Q3(r,e=16){let t=e-r.length%e,i=new Uint8Array(r.length+t);return i.set(r),i.fill(t,r.length),i}function aG(r){let e="";for(let t of r)e+=String.fromCharCode(t);return btoa(e)}function _3(r){return Array.from(r).map(e=>e.toString(16).padStart(2,"0")).join("")}async function S3(r,e,t){if(D3){let{createCipheriv:o}=await import("node:crypto"),a=o("aes-128-cbc",Buffer.from(e),Buffer.from(t));return new Uint8Array(Buffer.concat([a.update(Buffer.from(r)),a.final()]))}let i=await crypto.subtle.importKey("raw",e,{name:"AES-CBC"},!1,["encrypt"]),n=Q3(r),s=await crypto.subtle.encrypt({name:"AES-CBC",iv:t},i,n);return new Uint8Array(s)}async function cG(r,e){if(D3){let{createCipheriv:o}=await import("node:crypto"),a=o("aes-128-ecb",Buffer.from(e),null);return new Uint8Array(Buffer.concat([a.update(Buffer.from(r)),a.final()]))}let t=await crypto.subtle.importKey("raw",e,{name:"AES-CBC"},!1,["encrypt"]),i=Q3(r),n=new Uint8Array(i.length),s=new Uint8Array(16);for(let o=0;o0n;)e&1n&&(i=i*r%t),r=r*r%t,e>>=1n;return i}function fG(r){let e=new Uint8Array(128);e.set(r,112);let t=lG(e),i=BigInt("0x"+sG),n=uG(t,oG,i);return dG(n,128)}function AG(){let r=new Uint8Array(16),e=new Uint8Array(16);for(let t=0;t<16;t++){let i=Math.floor(Math.random()*k3.length),n=k3.charCodeAt(i);r[t]=n,e[15-t]=n}return{key:r,reversed:e}}async function F3(r){let e=Dl(JSON.stringify(r)),{key:t,reversed:i}=AG(),n=await S3(e,Dl(iG),Dl(v3)),s=await S3(n,i,Dl(v3));return{params:aG(s),encSecKey:_3(fG(t))}}async function P3(r){let e=Dl(JSON.stringify(r)),t=await cG(e,Dl(nG));return{eparams:_3(t).toUpperCase()}}var iG,nG,v3,k3,sG,oG,D3,T3=j(()=>{"use strict";iG="0CoJUm6Qyw8W8jud",nG="rFgB&h#%2?^eDg:Q",v3="0102030405060708",k3="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789",sG="e0b509f6259df8642dbc35662901477df22677ec152b5ff68ace615bb7b725152b3ab17a876aea8a5aa76d2e417629ec4ee341f56135fccf695280104e0312ecbda92557c93870114af6c9d05c4f7f0c3685b7a46bee255932575cce10b424d813cfe4875d3e82047b97ddef52741d546b8e289dc6935b3ece0462db0a22b8e7",oG=65537n,D3=typeof process<"u"&&process?.release?.name==="node"});var gg,U3=j(()=>{"use strict";T3();gg=class{addition;csrfToken="";musicU="";constructor(e){this.addition=e}init(){if(this.csrfToken=this.getCookie("__csrf"),this.musicU=this.getCookie("MUSIC_U"),!this.csrfToken||!this.musicU)throw new Error("[NeteaseMusic] cookie must contain __csrf and MUSIC_U")}getCookie(e){let i=new RegExp(e+"=([^(;|$)]+)").exec(this.addition.cookie);return i?i[1]:""}async request(e,t,i){let n={Cookie:this.addition.cookie};e.includes("music.163.com")&&(n.Referer="https://music.163.com");let s;if(i.crypto==="weapi"?(s=await F3(i.data),e=e.replace(/\/\w*api\//,"/weapi/")):(s=await P3({url:e.replace(/\/\w*api\//,"/api/"),method:t,params:i.data}),n["User-Agent"]="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.90 Safari/537.36",e="https://music.163.com/api/linux/forward"),i.cookies){let a=i.cookies.map(c=>`${c.name}=${c.value}`).join("; ");n.Cookie=n.Cookie+"; "+a}return(await fetch(e,{method:t,headers:{...n,"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams(s).toString()})).json()}async getSongObjs(e){return(await this.request("https://music.163.com/weapi/v1/cloud/get","POST",{crypto:"weapi",data:{limit:String(e),offset:"0"},cookies:[{name:"os",value:"pc"}]})).data||[]}async getSongLink(e){let t=await this.request("https://music.163.com/api/song/enhance/player/url","POST",{crypto:"linuxapi",data:{ids:"["+e+"]",br:"999000"},cookies:[{name:"os",value:"pc"}]});if(!t.data||t.data.length<1)throw new Error("[NeteaseMusic] song url not found");return t.data[0].url||""}async removeSong(e){await this.request("http://music.163.com/weapi/cloud/del","POST",{crypto:"weapi",data:{songIds:"["+e+"]"}})}}});function R3(r){return{name:r.fileName,size:r.fileSize,is_dir:!1,modified:r.addTime?new Date(r.addTime).toISOString():new Date().toISOString(),sign:String(r.songId),type:X(r.fileName,!1),thumb:r.simpleSong?.al?.picUrl||"",raw_url:""}}var pg,N3=j(()=>{"use strict";Be();U3();pg=class{client;songLimit;constructor(e){this.client=new gg(e),this.songLimit=e.song_limit||200}async init(){this.client.init()}async list(){return(await this.client.getSongObjs(this.songLimit)).map(t=>R3(t))}async get(e,t){let i=t.split("/").filter(Boolean),n=i[i.length-1]||"";if(!n)return{name:"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""};let o=(await this.client.getSongObjs(this.songLimit)).find(a=>a.fileName===n);if(o){let a=R3(o);try{a.raw_url=await this.client.getSongLink(a.sign)}catch{a.raw_url_error="[NeteaseMusic] failed to resolve song url"}return a}return{name:n,size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:0,raw_url:""}}async mkdir(){throw new Error("[NeteaseMusic] mkdir not supported")}async rename(){throw new Error("[NeteaseMusic] rename not supported")}async remove(e,t,i){let n=t.split("/").filter(Boolean),s=n[n.length-1],a=(await this.client.getSongObjs(this.songLimit)).find(c=>c.fileName===s);if(!a)throw new Error(`[NeteaseMusic] '${s}' not found`);await this.client.removeSong(String(a.songId))}async move(){throw new Error("[NeteaseMusic] move not supported")}async copy(){throw new Error("[NeteaseMusic] copy not supported")}async put(){throw new Error("[NeteaseMusic] upload not supported in stateless environment")}}});function Ho(r){return new TextEncoder().encode(r)}function K3(r){return Array.from(r).map(e=>e.toString(16).padStart(2,"0")).join("")}async function M3(r){let e=typeof r=="string"?Ho(r):r,t=await crypto.subtle.digest("SHA-256",e);return K3(new Uint8Array(t))}async function mg(r,e){let t=await crypto.subtle.importKey("raw",e,{name:"HMAC",hash:"SHA-256"},!1,["sign"]),i=await crypto.subtle.sign("HMAC",t,r);return new Uint8Array(i)}function L3(r){return encodeURIComponent(r).replace(/%20/g,"%20").replace(/[!'()*]/g,e=>"%"+e.charCodeAt(0).toString(16).toUpperCase())}async function H3(r){let e=r.now??new Date,t=e.toISOString().slice(0,10),i=e.toISOString(),n=(BigInt(Math.floor(e.getTime()))*1000000n+BigInt(Math.floor(Math.random()*1e6))).toString(36),s=r.bodyRaw.length>0,o={host:r.apiHost,"x-hl-nonce":n,"x-hl-timestamp":i},a=[];s&&(o["content-type"]="application/json; charset=utf-8",a.push("content-type"));let c=[...a].sort(),l=c.map(R=>`${R}:${o[R]} +`).join(""),d=c.join(";"),u="";r.query&&Object.keys(r.query).length>0&&(u=Object.keys(r.query).sort().map(U=>`${L3(U)}=${L3(r.query[U]??"")}`).join("&"));let f=await M3(r.bodyRaw),h=[r.method,r.apiPath,u,l,d,f].join(` +`),g=`${t}/${r.accessToken}/${O3}`,p=[q3,i,g,await M3(h)].join(` +`),I=Ho(hG+r.secretKey),y=await mg(Ho(t),I),w=await mg(Ho(r.accessToken),y),C=await mg(Ho(O3),w),b=K3(await mg(Ho(p),C)),x=`${q3} Credential=${r.secretId}/${g}, SignedHeaders=${d}, Signature=${b}`;o.authorization=x;let _=`https://${r.apiHost}${r.apiPath}${u?"?"+u:""}`;return{headers:o,url:_}}function gG(r,e){let t=String(r||"").replace(/\/+$/,""),i=String(e||"").replace(/^\/+/,"");return t?i?t+"/"+i:t:"/"+i}var q3,hG,O3,yg,G3=j(()=>{"use strict";q3="HL6-HMAC-SHA256",hG="HL6",O3="hl6_request";yg=class{addition;accessToken="";host;persistRefreshToken;constructor(e,t){this.addition=e,this.host=e.host||"openapi.2dland.cn",this.persistRefreshToken=t}async init(){if(!this.addition.client_id||!this.addition.client_secret)throw new Error("[HalalCloud] client_id and client_secret are required");if(!this.addition.refresh_token)throw new Error("[HalalCloud] refresh_token \u4E3A\u7A7A\uFF1A\u8BF7\u4ECE HalalCloud \u5B98\u65B9\u83B7\u53D6 refresh_token");await this.refreshToken()}async refreshToken(){let e={refresh_token:this.addition.refresh_token,grant_type:"refresh_token",client_id:this.addition.client_id},t=Ho(JSON.stringify(e)),i=await H3({apiHost:this.host,secretId:this.addition.client_id,secretKey:this.addition.client_secret,accessToken:this.accessToken,method:"POST",apiPath:"/v6/oauth/refresh_token",bodyRaw:t}),s=await(await fetch(i.url,{method:"POST",headers:i.headers,body:t})).json().catch(()=>({}));if(!s.access_token)throw new Error("[HalalCloud] refresh token failed");this.accessToken=s.access_token,s.refresh_token&&(this.addition.refresh_token=s.refresh_token,this.persistRefreshToken&&await this.persistRefreshToken(s.refresh_token))}async request(e,t,i=!1){let n=t!==void 0?Ho(JSON.stringify(t)):new Uint8Array(0),s=await H3({apiHost:this.host,secretId:this.addition.client_id,secretKey:this.addition.client_secret,accessToken:this.accessToken,method:"POST",apiPath:e,bodyRaw:n}),o=await fetch(s.url,{method:"POST",headers:s.headers,body:n.length>0?n:void 0});if(o.status===401&&!i)return await this.refreshToken(),this.request(e,t,!0);let a=await o.text(),c;try{c=JSON.parse(a)}catch{c={}}if(o.status>=300)throw new Error(`[HalalCloud] API error: ${c.message||c.msg||`HTTP ${o.status}`}`);return c}async listFiles(e){let t=[],i="";for(;;){let n={parent:{path:e},list_info:{limit:100,token:i}},s=await this.request("/v6/userfile/list",n),o=s.files||[];if(t.push(...o),i=s.list_info?.token||"",!i||o.length===0)break}return t}async getFile(e){let t=await this.request("/v6/userfile/get",{path:e});return t.identity?t:null}async createDir(e,t){let i=gG(e,t);await this.request("/v6/userfile/create",{parent:e,path:i,name:t,dir:!0})}async rename(e,t){await this.request("/v6/userfile/rename",{path:e,name:t})}async move(e,t,i){let n={source:[{path:e,identity:i}],dest:{path:t}};await this.request("/v6/userfile/move",n)}async copy(e,t,i){let n={source:[{path:e,identity:i}],dest:{path:t}};await this.request("/v6/userfile/copy",n)}async remove(e,t,i){let n={source:[{path:e,identity:t,dir:i}]};await this.request("/v6/userfile/delete",n)}async getDownloadUrl(e,t){let i=await this.request("/v6/userfile/get_direct_download_address",{path:e,identity:t});if(!i.download_address)throw new Error("[HalalCloud] \u83B7\u53D6\u4E0B\u8F7D\u5730\u5740\u5931\u8D25");return i.download_address}}});function wC(r){return typeof r=="number"?r:typeof r=="string"&&r.trim()!==""?Number(r):0}function z3(r){let e=r.dir===!0,t=wC(r.update_ts),i=wC(r.create_ts),n=t||i;return{name:r.name||"",size:e?0:wC(r.size),is_dir:e,modified:n?new Date(n*1e3).toISOString():new Date().toISOString(),sign:r.identity||r.path||"",type:X(r.name||"",e),raw_url:""}}function J3(r){return!r||r==="/"?"/":r.startsWith("/")?r:"/"+r}function j3(r,e){let t=String(r||"").replace(/\/+$/,""),i=String(e||"").replace(/^\/+/,"");return t?i?t+"/"+i:t:"/"+i}var Ig,$3=j(()=>{"use strict";Be();G3();Ig=class{client;rootPath;constructor(e,t){this.client=new yg(e,t),this.rootPath=J3(e.root_folder_id||"/")}async init(){await this.client.init()}fullPath(e){let t=J3(e);return this.rootPath==="/"?t:t==="/"?this.rootPath:this.rootPath+t}async list(e,t){return(await this.client.listFiles(this.fullPath(t))).map(z3)}async get(e,t){let i=this.fullPath(t),n=i.split("/").filter(Boolean),s=n[n.length-1]||"root",o="/"+n.slice(0,-1).join("/");try{let c=(await this.client.listFiles(o==="//"?"/":o)).find(l=>l.name===s);if(c){let l=z3(c);if(!l.is_dir)try{l.raw_url=await this.client.getDownloadUrl(c.path||i,c.identity||"")}catch{l.raw_url_error="[HalalCloud] failed to resolve download url"}return l}}catch{}return{name:s,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""}}async mkdir(e,t){let n=this.fullPath(t).split("/").filter(Boolean),s=n.pop()||"new_folder",o="/"+n.join("/");await this.client.createDir(o==="//"?"/":o,s)}async rename(e,t,i){let n=this.fullPath(t);await this.client.rename(n,i)}async remove(e,t,i){let n=this.fullPath(t),s=await this.resolveEntry(n);await this.client.remove(s.path,s.identity,s.isDir)}async move(e,t,i,n,s){let o=this.fullPath(n),a=this.fullPath(t),c=await this.resolveEntry(o),l=o.split("/").filter(Boolean).pop()||"";await this.client.move(c.path,j3(a,l),c.identity)}async copy(e,t,i,n,s){let o=this.fullPath(n),a=this.fullPath(t),c=await this.resolveEntry(o),l=o.split("/").filter(Boolean).pop()||"";await this.client.copy(c.path,j3(a,l),c.identity)}async put(){throw new Error("[HalalCloud] upload not supported in stateless environment")}async resolveEntry(e){let t=e.split("/").filter(Boolean),i=t[t.length-1],n="/"+t.slice(0,-1).join("/"),o=(await this.client.listFiles(n==="//"?"/":n)).find(a=>a.name===i);if(!o)throw new Error(`[HalalCloud] '${i}' not found`);return{path:o.path||e,identity:o.identity||"",isDir:o.dir===!0}}}});function yG(r){let e=(r||"").trim();if(!e)return"";if(/^Bearer\s+/i.test(e))return e.replace(/^Bearer\s+/i,"").trim();if(/^eyJ[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+$/.test(e))return e;let t={};for(let n of e.split(";")){let s=n.indexOf("=");if(s<0)continue;let o=n.slice(0,s).trim(),a=n.slice(s+1).trim();o&&(t[o]=a)}let i=n=>{let s=t[n]||"";return/^Bearer\s+/i.test(s)?s.replace(/^Bearer\s+/i,"").trim():s};return i("sso-token")||i("token")||i("authorization")||""}function V3(r){let e=4294967295;for(let t=0;t>>8;return(e^4294967295)>>>0}function FG(r){let e=Math.round(1e7*Math.random()).toString(),t=new Date,n=Math.round((t.getTime()+8*36e5)/1e3).toString(),s=t.getUTCFullYear(),o=String(t.getUTCMonth()+1).padStart(2,"0"),a=String(t.getUTCDate()).padStart(2,"0"),c=String(t.getUTCHours()+8).padStart(2,"0"),l=String(t.getUTCMinutes()).padStart(2,"0"),u=`${s}${o}${a}${c}${l}`.split("").map(p=>_G[parseInt(p)]).join(""),f=(V3(u)>>>0).toString(),h=[n,e,r,"web","3",f].join("|"),g=(V3(h)>>>0).toString();return`${f}=${n}-${e}-${g}`}function PG(r){let e=r.indexOf("?"),t=e>=0?r.substring(0,e):r,i=e>=0?r.substring(e+1):"",n=new URL(r),s=FG(n.pathname);return`${t}?${i}${i?"&":""}${s}`}var En,pG,mG,IG,wG,xG,CG,EG,BG,bG,vG,kG,SG,DG,QG,_G,wg,Y3=j(()=>{"use strict";En="https://yun.123pan.com/b/api",pG="https://login.123pan.com/api",mG=pG+"/user/sign_in";IG=En+"/user/info",wG=En+"/file/list/new",xG=En+"/file/download_info",CG=En+"/file/upload_request",EG=En+"/file/mod_pid",BG=En+"/file/rename",bG=En+"/file/trash",vG=En+"/file/upload_request",kG=En+"/file/s3_upload_object/auth",SG=En+"/file/s3_repare_upload_parts_batch",DG=En+"/file/upload_complete/v2",QG=(()=>{let r=new Array(256);for(let e=0;e<256;e++){let t=e;for(let i=0;i<8;i++)t=t&1?3988292384^t>>>1:t>>>1;r[e]=t}return r})();_G=["a","d","e","f","g","h","l","m","y","i","j","n","o","p","k","q","r","s","t","u","b","c","v","w","s","z"];wg=class{addition;accessToken="";onTokenUpdate;constructor(e,t){this.addition=e,this.onTokenUpdate=t}getRootId(){return(this.addition.root_id||"0").trim()||"0"}async login(){if(this.addition.access_token){this.accessToken=this.addition.access_token;try{await this.userInfo(!0);return}catch{this.accessToken=""}}if(this.addition.cookie){let e=yG(this.addition.cookie);if(e){this.accessToken=e;try{await this.userInfo(!0),this.addition.access_token=e,this.onTokenUpdate?.(e);return}catch{this.accessToken=""}}}if(!this.addition.username||!this.addition.password)throw new Error("123 \u7F51\u76D8\u767B\u5F55\u51ED\u8BC1\u7F3A\u5931\uFF1A\u8BF7\u586B\u5199 123 \u7F51\u76D8\u624B\u673A\u53F7 + \u5BC6\u7801\uFF1B\u82E5\u90E8\u7F72\u73AF\u5883\uFF08\u5982 Cloudflare Workers \u6570\u636E\u4E2D\u5FC3 IP\uFF09\u5BC6\u7801\u767B\u5F55\u4F1A\u88AB\u98CE\u63A7\uFF0C\u53EF\u5728\u300CCookie\u300D\u5B57\u6BB5\u7C98\u8D34\u6D4F\u89C8\u5668\u767B\u5F55\u540E\u7684 Cookie\uFF08\u542B sso-token\uFF09\uFF0C\u6216\u586B\u5199\u6709\u6548\u7684\u8BBF\u95EE\u4EE4\u724C access_token\uFF08\u5728\u672C\u673A\u6D4F\u89C8\u5668\u767B\u5F55 https://www.123pan.com/ \u540E\u4ECE\u5F00\u53D1\u8005\u5DE5\u5177\u83B7\u53D6\uFF09\u3002");await this.signIn()}async signIn(){let t=/@/.test(this.addition.username)?{mail:this.addition.username,password:this.addition.password,type:2}:{passport:this.addition.username,password:this.addition.password,remember:!0},n=await(await fetch(mG,{method:"POST",headers:{"Content-Type":"application/json",origin:"https://yun.123pan.com",referer:"https://yun.123pan.com/","user-agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) openlist-client",platform:"web","app-version":"3"},body:JSON.stringify(t)})).json();if(n.code!==200)throw new Error(`123 \u7F51\u76D8\u767B\u5F55\u5931\u8D25\uFF08${n.message||`code ${n.code}`}\uFF09\u3002\u5F53\u524D\u90E8\u7F72\u73AF\u5883\u7684\u51FA\u53E3 IP \u88AB 123 \u5224\u5B9A\u4E3A\u5883\u5916/\u964C\u751F\u8BBE\u5907\uFF08\u5982 Cloudflare Workers \u6570\u636E\u4E2D\u5FC3 IP\uFF09\uFF0C\u8D26\u53F7\u5BC6\u7801\u767B\u5F55\u4F1A\u88AB\u98CE\u63A7\u62E6\u622A\u3002\u53EF\u9760\u65B9\u6848\uFF1A\u2460 \u5728\u672C\u673A\u6D4F\u89C8\u5668\u767B\u5F55 https://www.123pan.com/\uFF08\u767B\u5F55\u4E00\u6B21\u6216\u4FEE\u6539\u5BC6\u7801\u53EF\u89E3\u9664\u8D26\u53F7\u98CE\u9669\uFF09\uFF0C\u6253\u5F00\u5F00\u53D1\u8005\u5DE5\u5177 \u2192 Application/Network \u2192 \u590D\u5236\u8BF7\u6C42\u5934\u4E2D\u7684 Bearer \u4EE4\u724C\uFF0C\u586B\u5165\u5B58\u50A8\u8BBE\u7F6E\u7684 access_token \u5B57\u6BB5\uFF08\u4EE4\u724C\u6709\u6548\u671F\u5185 API \u8BF7\u6C42\u4E0D\u53D7 IP \u98CE\u63A7\u5F71\u54CD\uFF09\uFF1B\u2461 \u6216\u5C06\u8BE5\u7F51\u76D8\u90E8\u7F72\u5230\u5883\u5185\u670D\u52A1\u5668\uFF08Node \u5BB9\u5668\u6A21\u5F0F\uFF09\u540E\u4F7F\u7528\u8D26\u53F7\u5BC6\u7801\u3002`);if(this.accessToken=n.data?.token||"",!this.accessToken)throw new Error("login returned empty token");this.addition.access_token=this.accessToken,this.onTokenUpdate?.(this.accessToken)}async request(e,t,i,n,s=!1){let o=async()=>{let l=PG(e),d={origin:"https://yun.123pan.com",referer:"https://yun.123pan.com/",authorization:this.accessToken?`Bearer ${this.accessToken}`:"","user-agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) openlist-client",platform:this.addition.platform||"web","app-version":"3",Accept:"application/json"},u={method:t,headers:d};return i!==void 0&&t!=="GET"&&(d["Content-Type"]="application/json",u.body=JSON.stringify(i)),(await fetch(l,u)).json()},a=await o(),c=a?.code;if(c!==0&&c!==200){if(c===401&&!s){await this.login(),a=await o();let l=a?.code;if(l!==0&&l!==200)throw new Error(a?.message||`api error: code ${l}`);return a}throw new Error(a?.message||`api error: code ${c}`)}return a}async userInfo(e=!1){return(await this.request(IG,"GET",void 0,void 0,e)).data}async getFiles(e,t){let i=[],n=1,s="0",o=t?.maxPages??45;for(;;){if(t?.budget){if(t.budget.used>=t.budget.limit){console.warn(`[123Pan] \u5DF2\u8FBE Cloudflare subrequest \u9884\u7B97\u4E0A\u9650(${t.budget.limit} \u6B21)\uFF0C\u7ED3\u679C\u5DF2\u622A\u65AD\uFF08\u76EE\u5F55\u6587\u4EF6\u8FC7\u591A\u6216\u8DEF\u5F84\u8FC7\u6DF1\uFF09`);break}t.budget.used++}if(n>o){console.warn(`[123Pan] \u5206\u9875\u8D85\u8FC7 ${o} \u9875\uFF0C\u7ED3\u679C\u53EF\u80FD\u4E0D\u5B8C\u6574\uFF08\u76EE\u5F55\u6587\u4EF6\u8FC7\u591A\uFF09`);break}let a=new URLSearchParams({driveId:"0",limit:"100",next:s,orderBy:this.addition.order_by||"file_id",orderDirection:this.addition.order_direction||"desc",parentFileId:e,trashed:"false",SearchData:"",Page:String(n),OnlyLookAbnormalFile:"0",event:"homeListFile",operateType:"4",inDirectSpace:"false"}),c=`${wG}?${a.toString()}`,l=await this.request(c,"GET"),d=l.data?.InfoList||[];if(i.push(...d),t?.findName){let f=d.find(h=>h.FileName===t.findName&&(t.findIsDir===void 0||h.Type===1===t.findIsDir));if(f)return[f]}let u=String(l.data?.Next??"-1");if(!l.data||d.length===0||u==="-1")break;s=u,n++}return i}async getDownloadLink(e){let t={driveId:0,etag:e.Etag,fileId:e.FileId,fileName:e.FileName,s3keyFlag:e.S3KeyFlag,size:e.Size,type:e.Type},n=(await this.request(xG,"POST",t)).data?.DownloadUrl||"";if(!n)throw new Error("no download url");try{let a=new URL(n).searchParams.get("params");if(a){let c=atob(a);n=new URL(c).toString()}}catch{}let s=await fetch(n,{method:"GET",redirect:"manual",headers:{Referer:"https://yun.123pan.com/"}});return s.status===302?s.headers.get("location")||n:s.status<300&&(await s.json().catch(()=>({}))).data?.redirect_url||n}async mkdir(e,t){let i=await this.request(CG,"POST",{driveId:0,etag:"",fileName:t,parentFileId:parseInt(e,10)||0,size:0,type:1});return i.data?.FileId!=null?String(i.data.FileId):""}async rename(e,t){await this.request(BG,"POST",{driveId:0,fileId:parseInt(e,10),fileName:t})}async move(e,t){await this.request(EG,"POST",{fileIdList:e.map(i=>({FileId:parseInt(i,10)})),parentFileId:parseInt(t,10)})}async remove(e,t){await this.request(bG,"POST",{driveId:0,operation:!0,fileTrashInfoList:[t]})}async getPartUploadUrl(e,t,i){let s=(i===1?await this.getS3Auth(e,t,t+1):await this.getS3PreSignedUrls(e,t,t+1)).presignedUrls[String(t)];if(!s)throw new Error(`[123Pan] \u672A\u8FD4\u56DE\u7B2C ${t} \u5206\u7247\u7684\u4E0A\u4F20 URL`);return s}async completeUpload(e,t,i){await this.completeS3(e,t,i)}async createUpload(e,t,i,n){let s={driveId:0,duplicate:2,etag:n,fileName:e,parentFileId:t,size:i,type:0};return(await this.request(vG,"POST",s)).data}async getS3Auth(e,t,i){let n={StorageNode:e.StorageNode,bucket:e.Bucket,key:e.Key,partNumberEnd:i,partNumberStart:t,uploadId:e.UploadId};return(await this.request(kG,"POST",n)).data}async getS3PreSignedUrls(e,t,i){let n={bucket:e.Bucket,key:e.Key,partNumberEnd:i,partNumberStart:t,uploadId:e.UploadId,StorageNode:e.StorageNode};return(await this.request(SG,"POST",n)).data}async completeS3(e,t,i){await this.request(DG,"POST",{StorageNode:e.StorageNode,bucket:e.Bucket,fileId:e.FileId,fileSize:t,isMultipart:i,key:e.Key,uploadId:e.UploadId})}async uploadFile(e,t,i){let n="";try{n=(await import("node:crypto")).createHash("md5").update(i).digest("hex")}catch{n=""}let s=await this.createUpload(t,e,i.length,n);if(s.Reuse||s.Key==="")return;let o=16*1024*1024,a=1;i.length>o&&(a=Math.ceil(i.length/o));let c=i.length%o;c===0&&(c=o);let l;a===1?l=(await this.getS3Auth(s,1,2)).presignedUrls:l=(await this.getS3PreSignedUrls(s,1,a+1)).presignedUrls;for(let d=1;d<=a;d++){let u=(d-1)*o,f=d===a?c:o,h=l[String(d)];if(!h)throw new Error(`[123Pan] \u7F3A\u5C11\u7B2C ${d} \u5206\u7247\u7684\u4E0A\u4F20 URL`);let g=i.subarray(u,u+f),p=await fetch(h,{method:"PUT",body:g});if(p.status!==200){let I=await p.text().catch(()=>"");throw new Error(`[123Pan] \u4E0A\u4F20\u7B2C ${d}/${a} \u5206\u7247\u5931\u8D25\uFF1AHTTP ${p.status} ${I}`)}}await this.completeS3(s,i.length,a>1)}}});function TG(r){return Buffer.from(JSON.stringify(r),"utf8").toString("base64")}function W3(r){let e=JSON.parse(Buffer.from(r,"base64").toString("utf8"));if(!e||!e.bucket||!e.key||!e.uploadId)throw new Error("[123Pan] invalid upload session");return e}function X3(r){return{AccessKeyId:"",SecretAccessKey:"",SessionToken:"",Bucket:r.bucket,Key:r.key,UploadId:r.uploadId,FileId:r.fileId,StorageNode:r.storageNode,EndPoint:"",Reuse:!1}}function Z3(r){let e=r.Type===1;return{name:r.FileName,size:r.Size||0,is_dir:e,modified:r.UpdateAt?new Date(r.UpdateAt).toISOString():new Date().toISOString(),sign:String(r.FileId),type:X(r.FileName,e),thumb:"",raw_url:""}}var xg,eQ=j(()=>{"use strict";Be();He();Y3();xg=class{client;addition;pathIdCache=new Map;budget={used:0,limit:45};constructor(e,t){this.addition=e,this.client=new wg(e,t)}async init(){await this.client.login()}async resolveFolderId(e){let t=this.client.getRootId(),i="/"+String(e||"").split("/").filter(Boolean).join("/");if(i==="/"||i===`/${t}`)return t;let n=i.split("/").filter(Boolean),s=0,o=t,a="";for(let c=0;c{try{return decodeURIComponent(l)}catch{return l}})(),f=(await this.client.getFiles(o,{findName:d,findIsDir:!0,budget:this.budget})).find(h=>h.Type===1&&(h.FileName===l||h.FileName===d||String(h.FileId)===l||String(h.FileId)===d));if(!f)throw new Error(`folder not found: ${l}`);o=String(f.FileId),a="/"+n.slice(0,c+1).join("/"),this.pathIdCache.set(a,o)}return o}async ensureFolderId(e){let t=this.client.getRootId(),i="/"+String(e||"").split("/").filter(Boolean).join("/");if(i==="/"||i===`/${t}`)return t;let n=i.split("/").filter(Boolean),s=t,o="";for(let a=0;a{try{return decodeURIComponent(c)}catch{return c}})();o="/"+n.slice(0,a+1).join("/");let d=this.pathIdCache.get(o);if(d===void 0){let u=await this.client.getFiles(s,{findName:l,findIsDir:!0,budget:this.budget}),f=u.find(h=>h.Type===1&&(h.FileName===c||h.FileName===l));if(f)d=String(f.FileId);else{try{let h=await this.client.mkdir(s,l);h&&(d=h)}catch{}if(d===void 0){if(u=await this.client.getFiles(s,{findName:l,findIsDir:!0,budget:this.budget}),f=u.find(h=>h.Type===1&&h.FileName===l),!f)throw new Error(`[123Pan] \u81EA\u52A8\u521B\u5EFA\u76EE\u5F55\u5931\u8D25: ${c}`);d=String(f.FileId)}}this.pathIdCache.set(o,d)}s=d}return s}async resolveFile(e){let t=String(e||"").split("/").filter(Boolean);if(t.length===0)throw new Error("invalid path");let i=t[t.length-1],n=(()=>{try{return decodeURIComponent(i)}catch{return i}})(),s="/"+t.slice(0,t.length-1).join("/"),o=await this.resolveFolderId(s),c=(await this.client.getFiles(o,{findName:n,budget:this.budget})).find(l=>String(l.FileId)===i||String(l.FileId)===n||l.FileName===i||l.FileName===n);if(!c)throw new Error(`file not found: ${i}`);return{file:c,parentId:o,name:i}}async list(e,t){this.budget.used=0;let i=await this.resolveFolderId(t),s=(await this.client.getFiles(i,{budget:this.budget})).map(Z3);return de(s,this.addition.order_by||"file_name",this.addition.order_direction)}async get(e,t){this.budget.used=0;let i=String(t||"").split("/").filter(Boolean);if(i.length===0||i[i.length-1]===this.client.getRootId()){let o=this.client.getRootId();return{name:o,size:0,is_dir:!0,modified:new Date().toISOString(),sign:o,type:1,raw_url:""}}let{file:n}=await this.resolveFile(t),s=Z3(n);if(n.Type!==1)try{s.raw_url=await this.client.getDownloadLink(n),s.raw_url||(s.raw_url_error="123 \u7F51\u76D8\u672A\u8FD4\u56DE\u4E0B\u8F7D\u94FE\u63A5\uFF08DownloadUrl \u4E3A\u7A7A\uFF09\u3002\u5E38\u89C1\u539F\u56E0\uFF1Aaccess_token/cookie \u5931\u6548\uFF0C\u6216\u8BE5\u6587\u4EF6\u5DF2\u5220\u9664/\u88AB\u9650\u5236\u4E0B\u8F7D\u3002\u8BF7\u5230\u7BA1\u7406\u540E\u53F0\u66F4\u65B0 access_token \u540E\u91CD\u8BD5\u3002")}catch(o){s.raw_url_error=`123 \u7F51\u76D8\u83B7\u53D6\u4E0B\u8F7D\u94FE\u63A5\u5931\u8D25\uFF1A${o?.message||String(o)}\u3002`+(String(o?.message||"").includes("\u767B\u5F55\u5931\u8D25")?"\u5F53\u524D\u90E8\u7F72\u51FA\u53E3 IP \u53EF\u80FD\u88AB 123 \u98CE\u63A7\uFF0C\u8BF7\u914D\u7F6E\u6709\u6548\u7684 access_token\uFF08\u6D4F\u89C8\u5668\u767B\u5F55 123 \u7F51\u76D8\u540E\u590D\u5236 Bearer \u4EE4\u724C\uFF09\u3002":"\u8BF7\u68C0\u67E5 access_token/cookie \u662F\u5426\u6709\u6548\uFF0C\u6216\u5728 123 \u7F51\u76D8\u7F51\u9875\u7AEF\u786E\u8BA4\u8BE5\u6587\u4EF6\u53EF\u4E0B\u8F7D\u3002"),console.warn(`[123Pan] getDownloadLink warning for ${n.FileName}:`,o.message)}else s.raw_url_error="\u8BE5\u6761\u76EE\u662F\u6587\u4EF6\u5939\uFF0C\u4E0D\u53EF\u4F5C\u4E3A\u6587\u4EF6\u4E0B\u8F7D\u3002";return s}async mkdir(e,t){this.budget.used=0;let i=String(t||"").split("/").filter(Boolean),n=i.pop()||"\u65B0\u6587\u4EF6\u5939",s="/"+i.join("/"),o=await this.resolveFolderId(s);await this.client.mkdir(o,n)}async rename(e,t,i){this.budget.used=0;let{file:n}=await this.resolveFile(t);await this.client.rename(String(n.FileId),i)}async remove(e,t,i){this.budget.used=0;let{file:n}=await this.resolveFile(t);await this.client.remove(String(n.FileId),n)}async move(e,t,i,n,s){this.budget.used=0;let{file:o}=await this.resolveFile(n),a=String(t).split("/").filter(Boolean),c=await this.resolveFolderId("/"+a.join("/"));await this.client.move([String(o.FileId)],c)}async copy(){throw new Error("[123Pan] Copy is not supported by 123 Cloud Drive API")}async put(e,t,i){this.budget.used=0;let n=String(t||"").split("/").filter(Boolean);if(n.length===0)throw new Error("invalid upload path");let s=n[n.length-1],o=(()=>{try{return decodeURIComponent(s)}catch{return s}})(),a="/"+n.slice(0,n.length-1).join("/"),c=await this.ensureFolderId(a);await this.client.uploadFile(c,o,i)}async createUploadSession(e,t,i,n,s){this.budget.used=0;let o=await this.ensureFolderId(t||"/"),a=await this.client.createUpload(i,o,n,s||""),c=16*1024*1024;if(a.Reuse||a.Key==="")return{reuse:!0,partCount:0,chunkSize:c,session:""};let l=Math.max(1,Math.ceil(n/c)),d=TG({bucket:a.Bucket,key:a.Key,uploadId:a.UploadId,fileId:a.FileId,storageNode:a.StorageNode,size:n,partCount:l,chunkSize:c});return{reuse:!1,partCount:l,chunkSize:c,session:d}}async uploadPart(e,t,i){this.budget.used=0;let n=W3(e),s=await this.client.getPartUploadUrl(X3(n),t,n.partCount),o=await fetch(s,{method:"PUT",body:i});if(o.status!==200){let a=await o.text().catch(()=>"");throw new Error(`[123Pan] \u4E0A\u4F20\u7B2C ${t}/${n.partCount} \u5206\u7247\u5931\u8D25\uFF1AHTTP ${o.status} ${a}`)}}async completeUploadSession(e){this.budget.used=0;let t=W3(e);await this.client.completeUpload(X3(t),t.size,t.partCount>1)}}});function OG(r){return new Promise(e=>setTimeout(e,r))}function BC(r){if(!r)return r;try{let e=new URL(r);return e.searchParams.delete("access_token"),e.toString()}catch{return r}}function Pl(r){let e={...r||{}},t=(i,n)=>i==null||i===""?n:typeof i=="boolean"?i:String(i).toLowerCase()==="true";return e.use_online_api=t(e.use_online_api,!0),e.api_url_address=e.api_url_address||"https://api.oplist.org/baiduyun/renewapi",e.download_api=e.download_api||"official",e.custom_crack_ua=e.custom_crack_ua||"netdisk",e.order_by=e.order_by||"name",e.order_direction=e.order_direction||"asc",e.upload_thread=e.upload_thread||"3",e.upload_api=e.upload_api||_l,e.use_dynamic_upload_api=t(e.use_dynamic_upload_api,!0),e.custom_upload_part_size=e.custom_upload_part_size||0,e.low_bandwith_upload_mode=t(e.low_bandwith_upload_mode,!1),e.only_list_video_file=t(e.only_list_video_file,!1),e}function rQ(r,e,t){r.local_mtime=String(t),r.local_ctime=String(e)}var UG,tQ,Ql,xC,CC,EC,RG,_l,NG,Hu,bC,iQ,qG,Cg,Fl,vC=j(()=>{"use strict";UG="https://openapi.baidu.com/oauth/2.0/token",tQ="https://pan.baidu.com/rest/2.0",Ql=4*1024*1024,xC=16*1024*1024,CC=32*1024*1024,EC=2048,RG=1*1024*1024,_l="https://d.pcs.baidu.com",NG=60*1e3,Hu=3,bC=1e3,iQ=5e3,qG=new Set([111,-6,20016]);Cg=class r{addition;accessToken="";onTokenUpdate;constructor(e,t){this.addition=Pl(e),this.onTokenUpdate=t,this.addition.access_token&&(this.accessToken=this.addition.access_token)}static apiUA="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Safari/537.36 Chrome/142.0.0.0 OpenList/425.6.30";async refreshToken(){let e=this.addition;if(e.use_online_api&&e.api_url_address){let s=new URL(e.api_url_address);s.searchParams.set("refresh_ui",e.refresh_token),s.searchParams.set("server_use","true"),s.searchParams.set("driver_txt","baiduyun_go");let o=await fetch(s.toString(),{headers:{"User-Agent":r.apiUA}}),a,c=await o.text();try{a=JSON.parse(c)}catch{throw new Error(`\u5728\u7EBF API \u5237\u65B0\u5931\u8D25 (HTTP ${o.status})\uFF1A${c.slice(0,300)||"\u975E JSON \u54CD\u5E94"}\u3002\u8BF7\u786E\u8BA4 refresh_token \u662F\u901A\u8FC7 https://api.oplist.org/ \u83B7\u53D6\u7684\u6709\u6548\u4EE4\u724C\u3002`)}if(!a.refresh_token||!a.access_token)throw new Error(a.text||(o.status!==200?`\u5728\u7EBF API \u8FD4\u56DE HTTP ${o.status}`:"empty token returned from official API, a wrong refresh token may have been used"));this.accessToken=a.access_token,e.refresh_token=a.refresh_token,e.access_token=a.access_token,this.onTokenUpdate?.({access_token:a.access_token,refresh_token:a.refresh_token});return}if(!e.client_id||!e.client_secret)throw new Error("empty ClientID or ClientSecret");let t=new URL(UG);t.searchParams.set("grant_type","refresh_token"),t.searchParams.set("refresh_token",e.refresh_token),t.searchParams.set("client_id",e.client_id),t.searchParams.set("client_secret",e.client_secret);let n=await(await fetch(t.toString())).json();if(n.error)throw new Error(`${n.error}: ${n.error_description||""}`);if(!n.refresh_token)throw new Error("empty refresh token returned from OAuth");this.accessToken=n.access_token||"",e.refresh_token=n.refresh_token,e.access_token=n.access_token||"",this.onTokenUpdate?.({access_token:n.access_token||"",refresh_token:n.refresh_token})}async login(){this.accessToken||await this.refreshToken()}async ensureToken(){this.accessToken||await this.refreshToken()}async request(e,t,i,n){await this.ensureToken();let s=async()=>{let a=new URL(e);a.searchParams.set("access_token",this.accessToken);for(let[g,p]of Object.entries(i||{}))a.searchParams.set(g,p);let c={"User-Agent":r.apiUA,Accept:"application/json"},l={method:t,headers:c};if(n&&t==="POST"){let g=new URLSearchParams;for(let[p,I]of Object.entries(n))g.set(p,I);c["Content-Type"]="application/x-www-form-urlencoded",l.body=g.toString()}let d=await fetch(a.toString(),l),u=await d.text(),f;try{f=JSON.parse(u)}catch{throw new Error(`req: [${e}] invalid JSON response, status ${d.status}`)}let h=typeof f.errno=="number"?f.errno:0;if(h!==0){if(qG.has(h)&&await this.refreshToken(),h===31023&&this.addition.download_api==="crack_video")return f;let g=`req: [${e}] ,errno: ${h}, refer to https://pan.baidu.com/union/doc/`;throw h===31023?new Error(`${g} \u767E\u5EA6\u7F51\u76D8\u98CE\u63A7 (Trigger security policy: Please try again later) \u2014 \u89E6\u53D1\u539F\u56E0\u901A\u5E38\u662F\uFF1A\u2460 \u5F53\u524D\u90E8\u7F72\u73AF\u5883\u7684\u51FA\u53E3 IP\uFF08\u5982 Cloudflare Workers \u6570\u636E\u4E2D\u5FC3 IP\uFF09\u88AB\u767E\u5EA6\u5B89\u5168\u7B56\u7565\u62E6\u622A\uFF1B\u2461 refresh_token \u65E0\u6548\u6216\u4ECE\u975E\u5B98\u65B9\u6E20\u9053\u83B7\u53D6\uFF0C\u5BFC\u81F4\u8D26\u53F7\u88AB\u98CE\u63A7\u3002\u8BF7\u786E\u8BA4\uFF1Arefresh_token \u5FC5\u987B\u901A\u8FC7 https://api.oplist.org/ \u83B7\u53D6\uFF08\u672C\u9A71\u52A8\u9ED8\u8BA4\u5DF2\u5F00\u542F"\u4F7F\u7528\u5728\u7EBF API"\uFF09\uFF1B\u98CE\u63A7\u4E3A\u4E34\u65F6\u6027\uFF0C\u7B49\u5F85\u6570\u5206\u949F\u81F3\u6570\u5C0F\u65F6\u540E\u81EA\u52A8\u89E3\u9664\uFF1B\u957F\u671F\u4F7F\u7528\u8BF7\u5C06\u540E\u7AEF\u90E8\u7F72\u5230\u5883\u5185\u670D\u52A1\u5668\uFF08\u6216\u914D\u7F6E HTTPS_PROXY \u5883\u5185\u4EE3\u7406\uFF09\u3002`):new Error(g)}return f},o;for(let a=0;ac.abort(),s>0?s:NG);try{let u=await(await fetch(o.toString(),{method:"POST",body:a,signal:c.signal})).text(),f=u.toLowerCase();if(f.includes("uploadid")&&(f.includes("invalid")||f.includes("expired")||f.includes("not found")))throw new Fl;let h;try{h=JSON.parse(u)}catch{h={}}let g=h?.error_code??0,p=h?.errno??0;if(g!==0||p!==0)throw new Error(`error uploading to baidu, response=${u}`)}finally{clearTimeout(l)}}getUploadUrl(e,t){let i=this.addition;return!i.use_dynamic_upload_api||!t,i.upload_api||_l}async requestForUploadUrl(e,t){let i=await this.request("https://d.pcs.baidu.com/rest/2.0/pcs/file","GET",{method:"locateupload",appid:"250528",path:e,uploadid:t,upload_version:"2.0"}),n="";if(i.servers&&i.servers.length>0?n=i.servers[0].server:i.bak_servers&&i.bak_servers.length>0&&(n=i.bak_servers[0].server),!n)throw new Error("upload URL is empty");return n}getSliceSize(e,t){let i=this.addition,n=i.custom_upload_part_size||0;if(t===0)return n!==0&&console.warn("[baidu_netdisk] CustomUploadPartSize is not supported for non-vip user, use DefaultSliceSize"),e>EC*Ql&&console.warn(`[baidu_netdisk] File size(${e}) is too large, may cause upload failure`),Ql;if(n!==0)return nxC?(console.warn(`[baidu_netdisk] CustomUploadPartSize(${n}) is greater than VipSliceSize, use VipSliceSize`),xC):t===2&&n>CC?(console.warn(`[baidu_netdisk] CustomUploadPartSize(${n}) is greater than SVipSliceSize, use SVipSliceSize`),CC):n;let s=Ql;if(t===1&&(s=xC),t===2&&(s=CC),i.low_bandwith_upload_mode){let o=Ql;for(;o<=s;){if(e<=EC*o)return o;o+=RG}}return e>EC*s&&console.warn(`[baidu_netdisk] File size(${e}) is too large, may cause upload failure`),s}async quota(){let e=await this.request("https://pan.baidu.com/api/quota","GET");return{total:e.total||0,used:e.used||0}}},Fl=class extends Error{constructor(){super("uploadid expired"),this.name="ErrUploadIDExpired"}}});function LG(r){return new Promise(e=>setTimeout(e,r))}function nQ(r){let e=r.server_filename||Ku(r.path),t=r.server_ctime||r.ctime||0,i=r.server_mtime||r.mtime||0,n=r.isdir===1;return{name:e,size:r.size||0,is_dir:n,created:t?new Date(t*1e3).toISOString():void 0,modified:i?new Date(i*1e3).toISOString():new Date().toISOString(),sign:String(r.fs_id),type:X(e,n),thumb:r.thumbs?.url3||"",raw_url:""}}function Ku(r){let e=String(r||"").split("/");return e[e.length-1]||""}function sQ(r){let e=r.lastIndexOf("/");return e<=0?"/":r.slice(0,e)}var MG,Eg,oQ=j(()=>{"use strict";Be();He();si();vC();vC();MG=new Error("empty files are not allowed by baidu netdisk");Eg=class{client;addition;uploadThread=3;vipType=0;pathCache=new Map;constructor(e,t){this.addition=Pl(e),this.client=new Cg(this.addition,t)}async init(){let e=this.addition,t=parseInt(e.upload_thread||"3",10);if(t<1&&(t=1),t>32&&(t=32),this.uploadThread=t,!this.client.accessToken)throw new Error("\u767E\u5EA6\u7F51\u76D8\u7F3A\u5C11\u8BBF\u95EE\u4EE4\u724C access_token\uFF08\u5FC5\u586B\uFF09\uFF1A\u8BF7\u901A\u8FC7 https://api.oplist.org/ \u83B7\u53D6\u540E\u586B\u5199\u3002");this.vipType=await this.client.uinfo()}baiduPath(e){let t="/"+String(e||"").replace(/\/+/g,"/");return t==="/"?"/":t.replace(/\/$/,"")}async list(e,t){let i=await this.client.getFiles(this.baiduPath(t)),n=i.map(nQ);for(let s of i)this.pathCache.set(s.path,{fsId:s.fs_id,parent:sQ(s.path)});return de(n,this.addition.order_by||"name",this.addition.order_direction)}async get(e,t){let i=this.baiduPath(t);if(i==="/")return{name:"/",size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""};let n=sQ(i),s=Ku(i),o=(()=>{try{return decodeURIComponent(s)}catch{return s}})(),c=(await this.client.getFiles(n)).find(d=>d.server_filename===s||d.server_filename===o||d.path===i||String(d.fs_id)===s);if(!c)throw new Error(`file not found: ${s}`);this.pathCache.set(c.path,{fsId:c.fs_id,parent:n});let l=nQ(c);if(c.isdir!==1)try{let d=await this.getDownloadLink(c);l.raw_url=d.url,l.raw_url_headers=d.headers}catch(d){console.warn(`[baidu_netdisk] getDownloadLink warning for ${c.server_filename}:`,d.message)}return l}async getDownloadLink(e){let t=this.addition.download_api||"official";return t==="crack"?this.client.getCrackLink(e.path):t==="crack_video"?this.client.getCrackVideoLink(e.path,e.fs_id):this.client.getOfficialLink(e.fs_id)}async mkdir(e,t){await this.client.create(this.baiduPath(t),0,1,"","",0,0)}async rename(e,t,i){await this.client.manage("rename",[{path:this.baiduPath(t),newname:i}])}async remove(e,t,i){await this.client.manage("delete",[this.baiduPath(t)])}async move(e,t,i,n,s){let o=i[0]||Ku(n),a=this.baiduPath(t);await this.client.manage("move",[{path:this.baiduPath(n),dest:a,newname:o}])}async copy(e,t,i,n,s){let o=i[0]||Ku(n),a=this.baiduPath(t);await this.client.manage("copy",[{path:this.baiduPath(n),dest:a,newname:o}])}async put(e,t,i){if(i.length<1)throw MG;let n=i.length,s=this.baiduPath(t),o=Ku(s),a=Math.floor(Date.now()/1e3),c=a,l=a,d=$t(i),u=JSON.stringify([d]);try{await this.client.create(s,n,0,"",u,c,l);return}catch{}let f=this.client.getSliceSize(n,this.vipType),h=Math.max(1,Math.ceil(n/f)),g=n%f||f,p=[];for(let w=0;w{for(;;){let T=_++;if(T>=b.length)return;let D=b[T];if(D<0)continue;let B=D*f,Q=D+1===h?g:f,v=i.subarray(B,B+Q),E={method:"upload",access_token:this.client.accessToken,type:"tmpfile",path:s,uploadid:y.uploadid,partseq:String(D)},P=!1;for(let N=0;NU())),x)throw new Error("upload slice failed")}catch(T){if(T instanceof Fl){let D=await this.client.precreate(s,n,I,"","",l,c);if(D.return_type===2&&D.info)return;y=D;continue}throw T}await this.client.create(s,n,0,y.uploadid,I,c,l);return}throw new Error("upload failed after retries")}}}});function zG(){let r=Math.floor(Date.now()/1e3),e=Math.floor(9e6*Math.random()+1e6);return`3${r}${e}`}function aQ(r){return"["+r.map(e=>`{"fsid":${e}}`).join(",")+"]"}var vg,Yi,Bg,HG,KG,kC,Gu,GG,bg,cQ=j(()=>{"use strict";si();vg="https://photo.baidu.com/youai",Yi=vg+"/album/v1",Bg=vg+"/file/v1",HG=vg+"/file/v2",KG=vg+"/user/v1",kC="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",Gu=4*1024*1024,GG=256*1024;bg=class{cookie;uk="";bdstoken="";showType;constructor(e){this.cookie=e.cookie||"",this.showType=e.show_type||"root"}async init(){if(!this.cookie)throw new Error("[BaiduPhoto] cookie is required");let e=await this.uInfo();this.uk=e.youa_id||"",this.bdstoken=await this.getBDStoken()}async request(e,t,i={}){let n=new URL(t);if(i.query)for(let[c,l]of Object.entries(i.query))l!==void 0&&n.searchParams.set(c,l);let s={Cookie:this.cookie,"User-Agent":kC,Referer:"https://photo.baidu.com/"},o;return i.form&&(s["Content-Type"]="application/x-www-form-urlencoded",o=new URLSearchParams(i.form).toString()),await fetch(n.toString(),{method:e,headers:s,body:o,redirect:i.redirect??"follow"})}async requestJson(e,t,i={}){let s=await(await this.request(e,t,i)).json().catch(()=>({})),o=s.errno;if(o!==void 0&&o!==0)throw new Error(`[BaiduPhoto] errno: ${o}, refer to https://photo.baidu.com/union/doc`);return s}async uInfo(){return this.requestJson(KG+"/getuinfo","GET")}async getBDStoken(){return(await this.requestJson("GET","https://pan.baidu.com/api/gettemplatevariable",{query:{fields:'["bdstoken","token","uk"]'}}))?.result?.bdstoken||""}async getAllFile(){let e=[],t="";for(;;){let i=await this.requestJson("GET",Bg+"/list",{query:{need_thumbnail:"1",need_filter_hidden:"0",cursor:t}});if(e.push(...i.list||[]),i.has_more!==1)break;t=i.cursor||""}return e}async getAllAlbum(){let e=[],t="";for(;;){let i=await this.requestJson("GET",Yi+"/list",{query:{need_amount:"1",limit:"100",cursor:t}});if(e.push(...i.list||[]),i.has_more!==1)break;t=i.cursor||""}return e}async getAllAlbumFile(e,t){let i=[],n="";for(;;){let s=await this.requestJson("GET",Yi+"/listfile",{query:{album_id:e,need_amount:"1",limit:"1000",passwd:"",cursor:n}});if(i.push(...s.list||[]),s.has_more!==1)break;n=s.cursor||""}return i}async getAlbumDetail(e){return this.requestJson("GET",Yi+"/detail",{query:{album_id:e}})}async linkFile(e){let t=await this.requestJson("GET",HG+"/download",{query:{fsid:String(e)}});if(!t.dlink)throw new Error("[BaiduPhoto] \u83B7\u53D6\u4E0B\u8F7D\u5730\u5740\u5931\u8D25");return t.dlink}async linkAlbumFile(e,t,i,n){let o=(await this.request("HEAD",Yi+"/download",{query:{fsid:String(e),album_id:t,tid:String(i),uk:String(n)},redirect:"manual"})).headers.get("location");if(!o)throw new Error("[BaiduPhoto] \u76F8\u518C\u6587\u4EF6\u672A\u8FD4\u56DE 302 \u8DF3\u8F6C");return o}downloadHeaders(){return{Referer:"https://photo.baidu.com/","User-Agent":kC}}async createAlbum(e){let t=await this.requestJson("POST",Yi+"/create",{query:{title:e,tid:zG(),source:"0"}});if(!t.album_id)throw new Error("[BaiduPhoto] \u521B\u5EFA\u76F8\u518C\u5931\u8D25");return this.getAlbumDetail(t.album_id)}async joinAlbum(e){let t=await this.requestJson("GET",Yi+"/querypcode",{query:{pcode:e,web:"1"}});if(!t.pdata?.invite_code)throw new Error("[BaiduPhoto] \u9080\u8BF7\u7801\u65E0\u6548");let i=await this.requestJson("GET",Yi+"/join",{query:{invite_code:t.pdata.invite_code}});if(!i.album_id)throw new Error("[BaiduPhoto] \u52A0\u5165\u76F8\u518C\u5931\u8D25");return this.getAlbumDetail(i.album_id)}async setAlbumName(e,t,i){await this.requestJson("POST",Yi+"/settitle",{form:{title:i,album_id:e,tid:String(t)}})}async deleteAlbum(e,t,i){await this.requestJson("POST",Yi+"/delete",{form:{album_id:e,tid:String(t),delete_origin_image:i?"1":"0"}})}async deleteFile(e){await this.requestJson("GET",Bg+"/delete",{query:{fsid_list:`[${e}]`}})}async deleteAlbumFile(e,t,i,n,s){await this.requestJson("POST",Yi+"/delfile",{form:{album_id:t,tid:String(i),list:`[{"fsid":${e},"uk":${n}}]`,del_origin:s?"1":"0"}})}async addAlbumFile(e,t,i){await this.requestJson("GET",Yi+"/addfile",{query:{album_id:e,tid:String(t),list:aQ([i])}})}async copyAlbumFile(e,t,i,n){let s=await this.requestJson("POST",Yi+"/copyfile",{form:{album_id:t,tid:String(i),uk:String(n),list:aQ([e])}});if(!s.list||s.list.length===0)throw new Error("[BaiduPhoto] \u590D\u5236\u76F8\u518C\u6587\u4EF6\u5931\u8D25");return s.list[0].fsid}async upload(e,t,i){if(i.length===0)throw new Error("[BaiduPhoto] file size cannot be zero");let n=$t(i),s=$t(i.subarray(0,Math.min(GG,i.length))),o=[];for(let u=0;u0?r.thumburl[0]:"",raw_url:""}}function uQ(r){return{name:Ko(r.path),size:r.size,is_dir:!1,modified:DC(r.mtime),sign:`albumfile:${r.fsid}|${r.album_id}|${r.tid}|${r.uk}`,type:X(Ko(r.path),!1),thumb:r.thumburl&&r.thumburl.length>0?r.thumburl[0]:"",raw_url:""}}function SC(r){if(r.startsWith("albumfile:")){let[e,t,i,n]=r.slice(10).split("|");return{kind:"albumfile",fsid:Number(e),albumId:t,tid:Number(i),uk:Number(n)}}if(r.startsWith("album:")){let[e,t]=r.slice(6).split("|");return{kind:"album",fsid:0,albumId:e,tid:Number(t),uk:0}}return{kind:"file",fsid:Number(r.slice(5)),albumId:"",tid:0,uk:0}}var kg,fQ=j(()=>{"use strict";Be();cQ();kg=class{client;showType;albumCache=new Map;constructor(e){this.client=new bg(e),this.showType=e.show_type||"root"}async init(){await this.client.init()}async list(e,t){let i=t.split("/").filter(Boolean).join("/");if(!i){let o=[];if(this.showType!=="root_only_file"){let a=await this.client.getAllAlbum();for(let c of a)this.albumCache.set(c.title,c),o.push(lQ(c))}if(this.showType!=="root_only_album"){let a=await this.client.getAllFile();o.push(...a.map(dQ))}return o}let n=await this.findAlbum(i);if(!n)throw new Error(`[BaiduPhoto] \u76F8\u518C '${i}' \u672A\u627E\u5230`);return(await this.client.getAllAlbumFile(n.album_id,n.tid)).map(uQ)}async get(e,t){let i=t.split("/").filter(Boolean),n=i[i.length-1]||"root",s=i.slice(0,-1).join("/");if(s){let o=await this.findAlbum(s);if(o){let c=(await this.client.getAllAlbumFile(o.album_id,o.tid)).find(l=>Ko(l.path)===n);if(c){let l=uQ(c);try{l.raw_url=await this.client.linkAlbumFile(c.fsid,c.album_id,c.tid,c.uk),l.raw_url_headers=this.client.downloadHeaders()}catch{l.raw_url_error="[BaiduPhoto] failed to resolve download url"}return l}}}else{if(this.showType!=="root_only_file"){let a=(await this.client.getAllAlbum()).find(c=>c.title===n);if(a)return lQ(a)}if(this.showType!=="root_only_album"){let a=(await this.client.getAllFile()).find(c=>Ko(c.path)===n);if(a){let c=dQ(a);try{c.raw_url=await this.client.linkFile(a.fsid),c.raw_url_headers=this.client.downloadHeaders()}catch{c.raw_url_error="[BaiduPhoto] failed to resolve download url"}return c}}}return{name:n,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""}}async mkdir(e,t){if(t.split("/").filter(Boolean).join("/"))throw new Error("[BaiduPhoto] \u76F8\u518C\u4E0D\u652F\u6301\u521B\u5EFA\u5B50\u76EE\u5F55");let s=await this.client.createAlbum("new_album");this.albumCache.clear()}async rename(e,t,i){let n=await this.resolveEntry(t);if(n.kind!=="album")throw new Error("[BaiduPhoto] \u4EC5\u652F\u6301\u91CD\u547D\u540D\u76F8\u518C");await this.client.setAlbumName(n.albumId,n.tid,i),this.albumCache.clear()}async remove(e,t,i){let n=await this.resolveEntry(t);n.kind==="album"?await this.client.deleteAlbum(n.albumId,n.tid,!1):n.kind==="file"?await this.client.deleteFile(n.fsid):await this.client.deleteAlbumFile(n.fsid,n.albumId,n.tid,n.uk,!1),this.albumCache.clear()}async move(e,t,i,n,s){let o=await this.resolveEntry(n),a=t.split("/").filter(Boolean).join("/");if(o.kind==="albumfile"){if(!a)await this.client.copyAlbumFile(o.fsid,o.albumId,o.tid,o.uk);else{let c=await this.findAlbum(a);if(!c)throw new Error(`[BaiduPhoto] \u76F8\u518C '${a}' \u672A\u627E\u5230`);let l=await this.client.copyAlbumFile(o.fsid,o.albumId,o.tid,o.uk);await this.client.addAlbumFile(c.album_id,c.tid,l)}await this.client.deleteAlbumFile(o.fsid,o.albumId,o.tid,o.uk,!1);return}throw new Error("[BaiduPhoto] \u4EC5\u76F8\u518C\u6587\u4EF6\u652F\u6301\u79FB\u52A8")}async copy(e,t,i,n,s){let o=await this.resolveEntry(n),a=t.split("/").filter(Boolean).join("/");if(o.kind==="file"&&a){let c=await this.findAlbum(a);if(!c)throw new Error(`[BaiduPhoto] \u76F8\u518C '${a}' \u672A\u627E\u5230`);await this.client.addAlbumFile(c.album_id,c.tid,o.fsid);return}if(o.kind==="albumfile"){let c=await this.client.copyAlbumFile(o.fsid,o.albumId,o.tid,o.uk);if(a){let l=await this.findAlbum(a);if(!l)throw new Error(`[BaiduPhoto] \u76F8\u518C '${a}' \u672A\u627E\u5230`);await this.client.addAlbumFile(l.album_id,l.tid,c)}return}throw new Error("[BaiduPhoto] \u4E0D\u652F\u6301\u8BE5\u590D\u5236\u64CD\u4F5C")}async put(e,t,i){let n=t.split("/").filter(Boolean),s=n.pop()||"file",o=n.join("/"),a=null;if(o&&(a=await this.findAlbum(o),!a))throw new Error(`[BaiduPhoto] \u76F8\u518C '${o}' \u672A\u627E\u5230`);await this.client.upload(a,s,new Uint8Array(i)),this.albumCache.clear()}async resolveEntry(e){let t=e.split("/").filter(Boolean),i=t[t.length-1],n=t.slice(0,-1).join("/");if(n){let s=await this.findAlbum(n);if(s){let a=(await this.client.getAllAlbumFile(s.album_id,s.tid)).find(c=>Ko(c.path)===i);if(a)return SC(`albumfile:${a.fsid}|${a.album_id}|${a.tid}|${a.uk}`)}}else{if(this.showType!=="root_only_file"){let o=(await this.client.getAllAlbum()).find(a=>a.title===i);if(o)return SC(`album:${o.album_id}|${o.tid}`)}if(this.showType!=="root_only_album"){let o=(await this.client.getAllFile()).find(a=>Ko(a.path)===i);if(o)return SC(`file:${o.fsid}`)}}throw new Error(`[BaiduPhoto] '${i}' not found`)}async findAlbum(e){if(this.albumCache.has(e))return this.albumCache.get(e);let t=await this.client.getAllAlbum();for(let i of t)this.albumCache.set(i.title,i);return this.albumCache.get(e)||null}}});function nz(r){return r===99||String(r).startsWith("401")}var Bn,JG,jG,$G,VG,YG,AQ,WG,XG,ZG,ez,tz,rz,iz,zu,Sg,hQ=j(()=>{"use strict";Bn="https://proapi.115.com",JG="https://passportapi.115.com",jG=Bn+"/open/upload/get_token",$G=Bn+"/open/upload/init",VG=Bn+"/open/folder/add",YG=Bn+"/open/ufile/files",AQ=Bn+"/open/folder/get_info",WG=Bn+"/open/ufile/copy",XG=Bn+"/open/ufile/move",ZG=Bn+"/open/ufile/downurl",ez=Bn+"/open/ufile/update",tz=Bn+"/open/ufile/delete",rz=Bn+"/open/user/info",iz=JG+"/open/refreshToken";zu=430004,Sg=class r{addition;accessToken="";refreshTokenValue="";onTokenUpdate;rateLimitMs=0;lastRequestAt=0;constructor(e,t){this.addition=e,this.accessToken=e.access_token||"",this.refreshTokenValue=e.refresh_token||"",this.onTokenUpdate=t;let i=e.limit_rate||0;i>0&&(this.rateLimitMs=1e3/i)}async waitRateLimit(){if(this.rateLimitMs<=0)return;let e=Date.now(),t=this.lastRequestAt+this.rateLimitMs-e;t>0&&await new Promise(i=>setTimeout(i,t)),this.lastRequestAt=Date.now()}async fetchWithRetry(e,t){let i;for(let n=0;n<3;n++)try{let s=new AbortController,o=setTimeout(()=>s.abort(),2e4);try{return await fetch(e,{...t,signal:s.signal})}finally{clearTimeout(o)}}catch(s){i=s,n<2&&await new Promise(o=>setTimeout(o,500*(n+1)))}throw i}static describeNetError(e){let t=e,i=t?.cause?.code||t?.cause?.cause?.code,n=t?.cause?.message||t?.cause?.cause?.message;return i?`${t?.message||"fetch failed"}\uFF08${i}\uFF09`:n?`${t?.message||"fetch failed"}\uFF08${n}\uFF09`:t?.message||String(e)}async refreshToken(){if(!this.refreshTokenValue)throw new Error("115 \u7F51\u76D8\u7F3A\u5C11 refresh_token\uFF08\u5FC5\u586B\uFF09");let e=new URLSearchParams;e.set("refresh_token",this.refreshTokenValue);let i=await(await this.fetchWithRetry(iz,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:e.toString()})).json();if(i.code!==0||!i.data?.access_token||!i.data?.refresh_token)throw new Error(`115 \u7F51\u76D8 token \u5237\u65B0\u5931\u8D25\uFF08code ${i.code} ${i.message}\uFF09\uFF1A\u8BF7\u786E\u8BA4 refresh_token \u6709\u6548\u3002`);this.accessToken=i.data.access_token,this.refreshTokenValue=i.data.refresh_token,this.addition.access_token=this.accessToken,this.addition.refresh_token=this.refreshTokenValue,this.onTokenUpdate?.({access_token:this.accessToken,refresh_token:this.refreshTokenValue})}async request(e,t,i,n,s,o=!1){await this.waitRateLimit();let a=async()=>{let d=new URL(e);for(let[I,y]of Object.entries(i||{}))y!==""&&d.searchParams.set(I,y);let u={Accept:"application/json","User-Agent":s||"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Safari/537.36 Chrome/142.0.0.0 OpenList/425.6.30"};this.accessToken&&(u.Authorization=`Bearer ${this.accessToken}`);let f={method:t,headers:u};if(n&&t==="POST"){let I=new URLSearchParams;for(let[y,w]of Object.entries(n))w!==""&&I.set(y,w);u["Content-Type"]="application/x-www-form-urlencoded",f.body=I.toString()}let h=await this.fetchWithRetry(d.toString(),f),g=await h.text(),p;try{p=JSON.parse(g)}catch{p={state:!1,code:h.status,message:g.slice(0,200)}}return{body:p,rawText:g}},c;try{({body:c}=await a())}catch(d){throw new Error(r.describeNetError(d))}let l=c?.state;if(l===!1||l===void 0){let d=Number(c?.code??0);if(nz(d)&&!o){await this.refreshToken(),c=(await a()).body;let f=c?.state;if(f!==!1&&f!==void 0)return c;throw new Error(`115 \u7F51\u76D8 API \u9519\u8BEF\uFF08code ${c?.code} ${c?.message}\uFF09`)}if(d===zu){let u=new Error("115 object not found");throw u.code=zu,u}throw new Error(`115 \u7F51\u76D8 API \u9519\u8BEF\uFF08code ${d} ${c?.message||""}\uFF09`)}return c}async userInfo(){return(await this.request(rz,"GET"))?.data}async getFiles(e){let t=await this.request(YG,"GET",{cid:e.cid,limit:String(e.limit),offset:String(e.offset),asc:e.asc?"1":"0",o:e.o||"",show_dir:e.showDir?"1":"0",cur:"1"});return{files:t.data||[],count:t.count||0}}async getFolderInfo(e){return(await this.request(AQ,"GET",{file_id:e}))?.data}async getFolderInfoByPath(e){return(await this.request(AQ,"POST",void 0,{path:e}))?.data}async mkdir(e,t){return(await this.request(VG,"POST",void 0,{pid:e,file_name:t}))?.data}async move(e,t){await this.request(XG,"POST",void 0,{file_ids:e,to_cid:t})}async updateFile(e,t){await this.request(ez,"POST",void 0,{file_id:e,file_name:t})}async copy(e,t){await this.request(WG,"POST",void 0,{pid:e,file_id:t,no_dupli:"1"})}async delFile(e,t){await this.request(tz,"POST",void 0,{file_ids:e,parent_id:t})}async downUrl(e,t){return(await this.request(ZG,"POST",void 0,{pick_code:e},t))?.data}async uploadGetToken(){return(await this.request(jG,"GET"))?.data}async uploadInit(e){return(await this.request($G,"POST",void 0,{file_name:e.fileName,file_size:String(e.fileSize),target:`U_1_${e.target}`,fileid:e.fileId,preid:e.preId,sign_key:e.signKey||"",sign_val:e.signVal||""}))?.data}}});function gQ(r){let e=r.fc==="0";return{name:r.fn,size:r.fs||0,is_dir:e,created:r.uppt?new Date(r.uppt*1e3).toISOString():void 0,modified:r.upt?new Date(r.upt*1e3).toISOString():new Date().toISOString(),sign:r.fid,type:X(r.fn,e),thumb:r.thumbnail||r.fco||"",raw_url:""}}function oz(r){let e={...r||{}};return e.order_by=e.order_by||"file_name",e.order_direction=e.order_direction||"asc",e.page_size=e.page_size||200,(e.root_folder_id||e.root_folder_id==="0")&&!e.root_id&&(e.root_id=String(e.root_folder_id)),e}var Dg,sz,Qg,pQ=j(()=>{"use strict";Be();He();si();hQ();Dg="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Safari/537.36 Chrome/142.0.0.0 OpenList/425.6.30",sz=45;Qg=class r{client;addition;pageSize=200;parentPath="/";fidCache=new Map;budget={used:0,limit:sz};linkCache=new Map;static LINK_TTL_MS=1800*1e3;constructor(e,t){this.addition=oz(e),this.client=new Sg(this.addition,t)}async init(){let t=this.addition.page_size||200;t<=0&&(t=200),t>1150&&(t=1150),this.pageSize=t;try{await this.client.userInfo()}catch(n){if(n?.code===zu)throw n;let s=String(n?.message||n);throw s.includes("fetch")||s.includes("ECONN")||s.includes("abort")?new Error(`115 \u7F51\u76D8\u7F51\u7EDC\u8FDE\u63A5\u5931\u8D25\uFF08${s}\uFF09\uFF1Aproapi.115.com \u53EF\u80FD\u65E0\u6CD5\u4ECE\u5F53\u524D\u90E8\u7F72\u73AF\u5883\u8BBF\u95EE\uFF08\u6570\u636E\u4E2D\u5FC3 IP \u53EF\u80FD\u88AB 115 \u62E6\u622A\uFF09\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5\u6216\u66F4\u6362\u90E8\u7F72\u73AF\u5883\u3002`):new Error(`115 \u7F51\u76D8 token \u9A8C\u8BC1\u5931\u8D25\uFF1A${s}\u3002\u8BF7\u786E\u8BA4 access_token / refresh_token \u6709\u6548\u3002`)}let i=this.getRootId();if(i!=="0")try{let n=await this.client.getFolderInfo(i);if(n.file_id!=="0"){this.parentPath=`/${n.file_name}`;let s=[...n.paths||[]].reverse();for(let o of s)this.parentPath=`/${o.file_name}${this.parentPath}`}}catch(n){console.warn("[115open] init root path resolve failed:",n.message)}}getRootId(){return(this.addition.root_id||"0").trim()||"0"}reserve(){return this.budget.used>=this.budget.limit?(console.warn(`[115open] \u5DF2\u8FBE Cloudflare subrequest \u9884\u7B97\u4E0A\u9650(${this.budget.limit})\uFF0C\u7ED3\u679C\u5DF2\u622A\u65AD`),!1):(this.budget.used++,!0)}async list(e,t){this.budget.used=0;let i=await this.resolveFolderId(t),n=[],s=0;for(;this.reserve();){let{files:o,count:a}=await this.client.getFiles({cid:i,limit:this.pageSize,offset:s,asc:this.addition.order_direction==="asc",o:this.addition.order_by||"file_name",showDir:!0});for(let c of o)n.push(gQ(c)),this.fidCache.set(c.fid,c.fid);if(n.length>=a||o.length===0)break;s+=o.length}return de(n,this.addition.order_by||"file_name",this.addition.order_direction)}async resolveFolderId(e){let t=this.getRootId(),i="/"+String(e||"").split("/").filter(Boolean).join("/");if(i==="/"||i===`/${t}`)return t;let n=this.fidCache.get(i);if(n)return n;let s=`/${t==="0"?"":t}${i==="/"?"":i}`;try{if(!this.reserve())throw new Error("subrequest budget exceeded");let l=await this.client.getFolderInfoByPath(s);if(l.file_id)return this.fidCache.set(i,l.file_id),l.file_id}catch(l){if(l?.code!==zu&&l?.code!==990002)throw l}let o=i.split("/").filter(Boolean),a=t,c="";for(let l of o){let d=(()=>{try{return decodeURIComponent(l)}catch{return l}})();c=`${c}/${l}`;let u=this.fidCache.get(c);if(u){a=u;continue}if(!this.reserve())throw new Error("subrequest budget exceeded");let{files:f}=await this.client.getFiles({cid:a,limit:1e3,offset:0,asc:!0,o:"file_name",showDir:!0}),h=f.find(g=>g.fc==="0"&&(g.fn===l||g.fn===d||g.fid===l));if(!h)throw new Error(`folder not found: ${l}`);a=h.fid,this.fidCache.set(c,a)}return a}async resolveFile(e){let t="/"+String(e||"").split("/").filter(Boolean).join("/"),i=t.split("/").filter(Boolean),n=i.pop()||"";if(!n)throw new Error(`file not found: ${t}`);let s=(()=>{try{return decodeURIComponent(n)}catch{return n}})(),o="/"+i.join("/"),a=await this.resolveFolderId(o),c=0;for(;;){if(!this.reserve())throw new Error("subrequest budget exceeded");let{files:l,count:d}=await this.client.getFiles({cid:a,limit:Math.max(this.pageSize,1e3),offset:c,asc:!0,o:"file_name",showDir:!0}),u=l.find(f=>f.fn===n||f.fn===s||f.fid===n||f.fid===s);if(u)return u;if(l.length===0||c+l.length>=d)break;c+=l.length}throw new Error(`file not found: ${n}`)}async get(e,t){this.budget.used=0;let i="/"+String(t||"").split("/").filter(Boolean).join("/");if(i==="/"||i===`/${this.getRootId()}`)return{name:this.getRootId(),size:0,is_dir:!0,modified:new Date().toISOString(),sign:this.getRootId(),type:1,raw_url:""};let n=await this.resolveFile(t),s=gQ(n);if(n.fc!=="0"&&n.pc)try{let o=`${n.fid}|${Dg}`,a=this.linkCache.get(o);if(a&&a.expire>Date.now())s.raw_url=a.url,s.raw_url_headers={"User-Agent":Dg};else{if(!this.reserve())throw new Error("subrequest budget exceeded");let l=(await this.client.downUrl(n.pc,Dg))[n.fid];l?.url?.url&&(s.raw_url=l.url.url,s.raw_url_headers={"User-Agent":Dg},this.linkCache.set(o,{url:l.url.url,expire:Date.now()+r.LINK_TTL_MS}))}}catch(o){String(o?.message||o).includes("406")?console.warn("[115open] downurl \u914D\u989D\u7528\u5C3D\uFF08406\uFF09\uFF1A\u5DF2\u4F7F\u7528\u7F13\u5B58\u6216\u7A0D\u540E\u91CD\u8BD5"):console.warn(`[115open] downUrl warning for ${n.fn}:`,o.message)}return s}async mkdir(e,t){this.budget.used=0;let i=String(t||"").split("/").filter(Boolean),n=i.pop()||"\u65B0\u6587\u4EF6\u5939",s="/"+i.join("/"),o=await this.resolveFolderId(s);if(!this.reserve())throw new Error("subrequest budget exceeded");await this.client.mkdir(o,n)}async rename(e,t,i){this.budget.used=0;let n=await this.resolveFile(t);if(!this.reserve())throw new Error("subrequest budget exceeded");await this.client.updateFile(n.fid,i)}async remove(e,t,i){this.budget.used=0;let n=await this.resolveFile(t);if(!this.reserve())throw new Error("subrequest budget exceeded");await this.client.delFile(n.fid,n.pid||this.getRootId())}async move(e,t,i,n,s){this.budget.used=0;let o=await this.resolveFile(n),a=await this.resolveFolderId(t);if(!this.reserve())throw new Error("subrequest budget exceeded");await this.client.move(o.fid,a)}async copy(e,t,i,n,s){this.budget.used=0;let o=await this.resolveFile(n),a=await this.resolveFolderId(t);if(!this.reserve())throw new Error("subrequest budget exceeded");await this.client.copy(a,o.fid)}async put(e,t,i){if(i.length<1)throw new Error("115 \u7F51\u76D8\u4E0D\u5141\u8BB8\u4E0A\u4F20\u7A7A\u6587\u4EF6");this.budget.used=0;let n=String(t||"").split("/").filter(Boolean),s=n.pop()||"file",o="/"+n.join("/"),c=await this.resolveFolderId(o),l=i.length,d=(await _o(i)).toUpperCase(),u=Math.min(128*1024,l),f=(await _o(i.subarray(0,u))).toUpperCase();if(!this.reserve())throw new Error("subrequest budget exceeded");let h=await this.client.uploadInit({fileName:s,fileSize:l,target:c,fileId:d,preId:f});if(h.status===2)return;if([6,7,8].includes(h.status)&&h.sign_check){let p=h.sign_check.split("-"),I=parseInt(p[0],10),y=parseInt(p[1],10);if(Number.isFinite(I)&&Number.isFinite(y)){let w=(await _o(i.subarray(I,y+1))).toUpperCase();if(!this.reserve())throw new Error("subrequest budget exceeded");if(h=await this.client.uploadInit({fileName:s,fileSize:l,target:c,fileId:d,preId:f,signKey:h.sign_key,signVal:w}),h.status===2)return}}if(!this.reserve())throw new Error("subrequest budget exceeded");let g=await this.client.uploadGetToken();if(!h.bucket||!h.object||!g.endpoint)throw new Error("115 \u4E0A\u4F20\u521D\u59CB\u5316\u5931\u8D25\uFF1A\u7F3A\u5C11 OSS \u4E0A\u4F20\u4FE1\u606F");await this.ossPutObject(g,h,i)}async ossPutObject(e,t,i){let s=`${(e.endpoint.startsWith("http")?e.endpoint:`https://${e.endpoint}`).replace(/\/$/,"")}/${t.object}`,o=Buffer.from(t.callback?.callback||"","utf8").toString("base64"),a=Buffer.from(t.callback?.callback_var||"","utf8").toString("base64"),c=new Date().toUTCString(),l="application/octet-stream",d=`x-oss-callback:${o} x-oss-callback-var:${a} x-oss-security-token:${e.SecurityToken} `,u=`/${t.bucket}/${t.object}`,f=`PUT ${l} ${c} -${d}${u}`,h=await hu(f,e.AccessKeySecret),g=await fetch(s,{method:"PUT",headers:{"Content-Type":l,Date:c,Authorization:`OSS ${e.AccessKeyId}:${h}`,"x-oss-security-token":e.SecurityToken,"x-oss-callback":o,"x-oss-callback-var":a,"Content-Length":String(i.length)},body:i});if(!g.ok){let p=(await g.text()).slice(0,300);throw new Error(`115 OSS \u4E0A\u4F20\u5931\u8D25\uFF08HTTP ${g.status}\uFF09\uFF1A${p}`)}}}});function Vt(r){if(!r)return"/";let t=r.replace(/\\/g,"/").replace(/\/+/g,"/").replace(/^\/|\/$/g,"");return t?"/"+t:"/"}function zn(r){let e=Vt(r);if(e==="/")return"/";let t=e.split("/").filter(Boolean);return t.pop(),t.length?"/"+t.join("/"):"/"}function Qr(r){let e=Vt(r);if(e==="/")return"";let t=e.split("/").filter(Boolean);return t[t.length-1]||""}function Dl(...r){return Vt(r.join("/"))}function cc(r,e,t){if(!r||!r.trim())return`${e.UserName} ${t} ${e.ObjPath}`;let i=r;return i=i.replace(/\{\{\.UserName\}\}/g,e.UserName||""),i=i.replace(/\{\{\.ObjName\}\}/g,e.ObjName||""),i=i.replace(/\{\{\.ObjPath\}\}/g,e.ObjPath||""),i=i.replace(/\{\{\.ParentName\}\}/g,e.ParentName||""),i=i.replace(/\{\{\.ParentPath\}\}/g,e.ParentPath||""),i=i.replace(/\{\{\.TargetName\}\}/g,e.TargetName||""),i=i.replace(/\{\{\.TargetPath\}\}/g,e.TargetPath||""),i}function M3(r,e){let t=Vt(r),i=Vt(e),n=1;for(;n0&&t[n]!=="/";)n--;let a=Vt(t.slice(0,n)),c=t.slice(n+1,s),l=i.slice(n+1,o),d=t.slice(n+1),u=i.slice(n+1);return{ancestor:a,aChildName:c,bChildName:l,aRest:d,bRest:u}}var Ig,L3=V(()=>{"use strict";Ig=class{addition;token;owner;repo;constructor(e){this.addition=e,this.token=(e.token||"").trim(),this.owner=(e.owner||"").trim(),this.repo=(e.repo||"").trim()}get headers(){let e={Accept:"application/vnd.github.object+json","X-GitHub-Api-Version":"2022-11-28","User-Agent":"OpenList-Github-Driver"};return this.token&&(e.Authorization=`Bearer ${this.token}`),e}async request(e,t={}){let i={...this.headers,...t.headers||{}},n;t.body!==void 0&&(typeof t.body=="string"?n=t.body:(n=JSON.stringify(t.body),i["Content-Type"]||(i["Content-Type"]="application/json")));let s=await fetch(e,{method:t.method||"GET",headers:i,body:n});if(!s.ok){let o=`${s.status} ${s.statusText}`;try{let a=await s.json();a?.message&&(o=`${s.status} ${s.statusText}: ${a.message}`)}catch{}throw new Error(o)}return s.status===204?{}:await s.json()}getContentApiUrl(e){let t=Vt(e);return`https://api.github.com/repos/${this.owner}/${this.repo}/contents${t==="/"?"":t}`}async getContents(e,t){let i=new URL(this.getContentApiUrl(e));return t&&i.searchParams.set("ref",t),this.request(i.toString())}async getRepo(){return this.request(`https://api.github.com/repos/${this.owner}/${this.repo}`)}async getBranchHead(e){return(await this.request(`https://api.github.com/repos/${this.owner}/${this.repo}/branches/${encodeURIComponent(e)}`)).commit.sha}async getAuthenticatedUser(){return this.request("https://api.github.com/user")}async getTree(e){return this.request(`https://api.github.com/repos/${this.owner}/${this.repo}/git/trees/${e}`)}async getTreeDirectly(e,t){let i=await this.getContents(e,t);if(!i.entries&&i.type!=="dir")throw new Error(`${e} is not a folder`);let n=await this.getTree(i.sha);if(n.truncated)throw new Error(`tree ${e} is truncated`);return{tree:n,dirSha:i.sha}}async newTree(e,t){let i={tree:t};return e&&(i.base_tree=e),(await this.request(`https://api.github.com/repos/${this.owner}/${this.repo}/git/trees`,{method:"POST",body:i,headers:{Accept:"application/vnd.github+json"}})).sha}async putBlob(e){let t=Buffer.from(e).toString("base64");return(await this.request(`https://api.github.com/repos/${this.owner}/${this.repo}/git/blobs`,{method:"POST",body:{encoding:"base64",content:t},headers:{Accept:"application/vnd.github+json"}})).sha}async createCommit(e,t,i,n,s){let o={message:e,tree:t,parents:[i]};return n?.name&&(o.committer={name:n.name,email:n.email,date:new Date().toISOString()}),s?.name&&(o.author={name:s.name,email:s.email,date:new Date().toISOString()}),(await this.request(`https://api.github.com/repos/${this.owner}/${this.repo}/git/commits`,{method:"POST",body:o,headers:{Accept:"application/vnd.github+json"}})).sha}async updateRef(e,t){await this.request(`https://api.github.com/repos/${this.owner}/${this.repo}/git/refs/heads/${encodeURIComponent(e)}`,{method:"PATCH",body:{sha:t,force:!1},headers:{Accept:"application/vnd.github+json"}})}async renewParentTrees(e,t,i,n,s){let o=Vt(e),a=Vt(n);for(;o!==a;){o=zn(o);let{tree:c,dirSha:l}=await this.getTreeDirectly(o,s),d=c.tree.find(f=>f.sha===t);if(!d)throw new Error(`Object with sha ${t} not found in ${o}`);let u={path:d.path,mode:d.mode,type:d.type,sha:i};i=await this.newTree(l,[u]),t=l}return i}}});var wg,H3=V(()=>{"use strict";Be();He();L3();wg=class{addition;client;isOnBranch=!1;commitLock=Promise.resolve();constructor(e){this.addition=e,this.client=new Ig(e)}async acquireLock(e){let t=this.commitLock,i;this.commitLock=new Promise(n=>{i=n}),await t;try{return await e()}finally{i()}}formatDownloadUrl(e){if(!e)return"";let t=(this.addition.gh_proxy||"").trim();return t?e.replace("https://raw.githubusercontent.com",t):e}async commitAndPush(e,t){let i=this.addition.ref,n=await this.client.getBranchHead(i),s=this.addition.committer_name&&this.addition.committer_email?{name:this.addition.committer_name,email:this.addition.committer_email}:void 0,o=this.addition.author_name&&this.addition.author_email?{name:this.addition.author_name,email:this.addition.author_email}:void 0,a=await this.client.createCommit(e,t,n,s,o);await this.client.updateRef(i,a)}async init(){if(this.addition.root_folder_path=Vt(this.addition.root_folder_path||"/"),this.addition.committer_name&&!this.addition.committer_email||!this.addition.committer_name&&this.addition.committer_email)throw new Error("committer_name and committer_email must both be set or empty");if(this.addition.author_name&&!this.addition.author_email||!this.addition.author_name&&this.addition.author_email)throw new Error("author_name and author_email must both be set or empty");if(!this.addition.ref||!this.addition.ref.trim()){let e=await this.client.getRepo();this.addition.ref=e.default_branch,this.isOnBranch=!0}else try{await this.client.getBranchHead(this.addition.ref),this.isOnBranch=!0}catch{this.isOnBranch=!1}}async list(e,t){let i=Vt(t),n=await this.client.getContents(i,this.addition.ref);if(!n.entries&&n.type!=="dir")throw new Error(`${t} is not a folder`);let s=[];if(n.entries&&n.entries.length>=1e3){let o=await this.client.getTree(n.sha);if(o.truncated)throw new Error(`Tree ${t} is truncated (>100,000 items)`);for(let a of o.tree){if(a.path===".gitkeep")continue;let c=a.type==="tree";s.push({name:a.path,size:a.size||0,is_dir:c,modified:new Date(0).toISOString(),sign:"",type:X(a.path,c),raw_url:""})}}else if(n.entries)for(let o of n.entries){if(o.name===".gitkeep")continue;let a=o.type==="dir";s.push({name:o.name,size:o.size||0,is_dir:a,modified:new Date(0).toISOString(),sign:"",type:X(o.name,a),raw_url:this.formatDownloadUrl(o.download_url)})}return de(s,this.addition.order_by,this.addition.order_direction)}async get(e,t){let i=Vt(t),n=await this.client.getContents(i,this.addition.ref);if(n.type==="submodule")throw new Error("cannot download a submodule");let s=n.type==="dir"||!!n.entries,o=n.name||Qr(i)||"root";return{name:o,size:n.size||0,is_dir:s,modified:new Date(0).toISOString(),sign:"",type:X(o,s),raw_url:this.formatDownloadUrl(n.download_url)}}async mkdir(e,t){if(!this.isOnBranch)throw new Error("cannot write to non-branch reference");let i=Vt(t),n=zn(i),s=Qr(i);await this.acquireLock(async()=>{let o=await this.client.getContents(n,this.addition.ref);if(!o.entries&&o.type!=="dir")throw new Error(`${n} is not a folder`);let a=await this.client.newTree("",[{path:".gitkeep",mode:"100644",type:"blob",content:""}]),c=[{path:s,mode:"040000",type:"tree",sha:a}];o.entries?.length===1&&o.entries[0].name===".gitkeep"&&c.push({path:".gitkeep",mode:"100644",type:"blob",sha:null});let l=await this.client.newTree(o.sha,c),d=await this.client.renewParentTrees(n,o.sha,l,"/",this.addition.ref),u=cc(this.addition.mkdir_commit_message,{UserName:"OpenList",ObjName:s,ObjPath:i,ParentName:Qr(n),ParentPath:n},"mkdir");await this.commitAndPush(u,d)})}async put(e,t,i){if(!this.isOnBranch)throw new Error("cannot write to non-branch reference");let n=Vt(t),s=zn(n),o=Qr(n);await this.acquireLock(async()=>{let a=await this.client.putBlob(i),c=await this.client.getContents(s,this.addition.ref);if(!c.entries&&c.type!=="dir")throw new Error(`${s} is not a folder`);let l=[{path:o,mode:"100644",type:"blob",sha:a}];c.entries?.length===1&&c.entries[0].name===".gitkeep"&&l.push({path:".gitkeep",mode:"100644",type:"blob",sha:null});let d=await this.client.newTree(c.sha,l),u=await this.client.renewParentTrees(s,c.sha,d,"/",this.addition.ref),f=cc(this.addition.put_commit_message,{UserName:"OpenList",ObjName:o,ObjPath:n,ParentName:Qr(s),ParentPath:s},"upload");await this.commitAndPush(f,u)})}async rename(e,t,i){if(!this.isOnBranch)throw new Error("cannot write to non-branch reference");let n=Vt(t),s=zn(n),o=Qr(n);await this.acquireLock(async()=>{let{tree:a,dirSha:c}=await this.client.getTreeDirectly(s,this.addition.ref),l=a.tree.find(p=>p.path===o);if(!l)throw new Error(`Object not found: ${n}`);if(l.type==="commit")throw new Error("cannot rename a submodule");let d={path:o,mode:l.mode,type:l.type,sha:null},u={path:i,mode:l.mode,type:l.type,sha:l.sha},f=await this.client.newTree(c,[d,u]),h=await this.client.renewParentTrees(s,c,f,"/",this.addition.ref),g=cc(this.addition.rename_commit_message,{UserName:"OpenList",ObjName:o,ObjPath:n,ParentName:Qr(s),ParentPath:s,TargetName:i,TargetPath:Dl(s,i)},"rename");await this.commitAndPush(g,h)})}async remove(e,t,i){if(!this.isOnBranch)throw new Error("cannot write to non-branch reference");let n=Vt(t),s=zn(n),o=Qr(n);await this.acquireLock(async()=>{let{tree:a,dirSha:c}=await this.client.getTreeDirectly(s,this.addition.ref),l=a.tree.find(g=>g.path===o);if(!l)throw new Error(`Object not found: ${n}`);if(l.type==="commit")throw new Error("cannot remove a submodule");let d=[{path:o,mode:l.mode,type:l.type,sha:null}];a.tree.length===1&&d.push({path:".gitkeep",mode:"100644",type:"blob",content:""});let u=await this.client.newTree(c,d),f=await this.client.renewParentTrees(s,c,u,"/",this.addition.ref),h=cc(this.addition.delete_commit_message,{UserName:"OpenList",ObjName:o,ObjPath:n,ParentName:Qr(s),ParentPath:s},"remove");await this.commitAndPush(h,f)})}async move(e,t,i,n,s){if(!this.isOnBranch)throw new Error("cannot write to non-branch reference");let o=Vt(n),a=Vt(t);if(a.startsWith(o))throw new Error("cannot move parent dir to child");await this.acquireLock(async()=>{let c="",l=zn(o),d=Qr(o);if(a.startsWith(l)){let{dstOldSha:f,dstNewSha:h,ancestorOldSha:g,srcParentTree:p}=await this.copyWithoutRenewTree(o,a),y=a.slice(l.length).replace(/^\//,"").split("/")[0],w=Dl(l,y),C=await this.client.renewParentTrees(a,f,h,w,this.addition.ref),b=p.tree.find(R=>R.path===d),x=p.tree.find(R=>R.path===y);if(!b||!x)throw new Error("Object not found during move");let _=await this.client.newTree(g,[{path:b.path,mode:b.mode,type:b.type,sha:null},{path:x.path,mode:x.mode,type:x.type,sha:C}]);c=await this.client.renewParentTrees(l,g,_,"/",this.addition.ref)}else if(o.startsWith(a)){let{tree:f,dirSha:h}=await this.client.getTreeDirectly(l,this.addition.ref),g=f.tree.find(T=>T.path===d);if(!g)throw new Error("Object not found");if(g.type==="commit")throw new Error("cannot move a submodule");let p=[{path:g.path,mode:g.mode,type:g.type,sha:null}];f.tree.length===1&&p.push({path:".gitkeep",mode:"100644",type:"blob",content:""});let I=await this.client.newTree(h,p),w=o.slice(a.length).replace(/^\//,"").split("/")[0];if(!w)throw new Error("cannot move in place");let C=Dl(a,w),b=await this.client.renewParentTrees(l,h,I,C,this.addition.ref),{tree:x,dirSha:_}=await this.client.getTreeDirectly(a,this.addition.ref),R=x.tree.find(T=>T.path===w);if(!R)throw new Error("Object not found");let U=await this.client.newTree(_,[{path:R.path,mode:R.mode,type:R.type,sha:b},{path:g.path,mode:g.mode,type:g.type,sha:g.sha}]);c=await this.client.renewParentTrees(a,_,U,"/",this.addition.ref)}else{let{dstOldSha:f,dstNewSha:h,srcParentOldSha:g,srcParentTree:p}=await this.copyWithoutRenewTree(o,a),I=p.tree.find(v=>v.path===d);if(!I)throw new Error("Object not found");let y=[{path:I.path,mode:I.mode,type:I.type,sha:null}];p.tree.length===1&&y.push({path:".gitkeep",mode:"100644",type:"blob",content:""});let w=await this.client.newTree(g,y),{ancestor:C,aChildName:b,bChildName:x}=M3(o,a),_=await this.client.renewParentTrees(a,f,h,Dl(C,x),this.addition.ref),R=await this.client.renewParentTrees(l,g,w,Dl(C,b),this.addition.ref),{tree:U,dirSha:T}=await this.client.getTreeDirectly(C,this.addition.ref),D=U.tree.find(v=>v.path===b),B=U.tree.find(v=>v.path===x);if(!D||!B)throw new Error("Ancestor child tree not found");let Q=await this.client.newTree(T,[{path:D.path,mode:D.mode,type:D.type,sha:R},{path:B.path,mode:B.mode,type:B.type,sha:_}]);c=await this.client.renewParentTrees(C,T,Q,"/",this.addition.ref)}let u=cc(this.addition.move_commit_message,{UserName:"OpenList",ObjName:d,ObjPath:o,ParentName:Qr(l),ParentPath:l,TargetName:Qr(a),TargetPath:a},"move");await this.commitAndPush(u,c)})}async copy(e,t,i,n,s){if(!this.isOnBranch)throw new Error("cannot write to non-branch reference");let o=Vt(n),a=Vt(t);if(a.startsWith(o))throw new Error("cannot copy parent dir to child");await this.acquireLock(async()=>{let{dstOldSha:c,dstNewSha:l}=await this.copyWithoutRenewTree(o,a),d=await this.client.renewParentTrees(a,c,l,"/",this.addition.ref),u=cc(this.addition.copy_commit_message,{UserName:"OpenList",ObjName:Qr(o),ObjPath:o,ParentName:Qr(zn(o)),ParentPath:zn(o),TargetName:Qr(a),TargetPath:a},"copy");await this.commitAndPush(u,d)})}async copyWithoutRenewTree(e,t){let i=await this.client.getContents(t,this.addition.ref);if(!i.entries&&i.type!=="dir")throw new Error(`${t} is not a folder`);let n=zn(e),s=Qr(e),{tree:o,dirSha:a}=await this.client.getTreeDirectly(n,this.addition.ref),c=o.tree.find(u=>u.path===s);if(!c)throw new Error(`Object not found: ${e}`);if(c.type==="commit")throw new Error("cannot copy a submodule");let l=[{path:c.path,mode:c.mode,type:c.type,sha:c.sha}];i.entries?.length===1&&i.entries[0].name===".gitkeep"&&l.push({path:".gitkeep",mode:"100644",type:"blob",sha:null});let d=await this.client.newTree(i.sha,l);return{dstOldSha:i.sha,dstNewSha:d,srcParentOldSha:a,srcParentTree:o,ancestorOldSha:a}}}});var et=oe((xg,K3)=>{(function(r,e){typeof xg=="object"?K3.exports=xg=e():typeof define=="function"&&define.amd?define([],e):r.CryptoJS=e()})(xg,function(){var r=r||(function(e,t){var i;if(typeof window<"u"&&window.crypto&&(i=window.crypto),typeof self<"u"&&self.crypto&&(i=self.crypto),typeof globalThis<"u"&&globalThis.crypto&&(i=globalThis.crypto),!i&&typeof window<"u"&&window.msCrypto&&(i=window.msCrypto),!i&&typeof global<"u"&&global.crypto&&(i=global.crypto),!i&&typeof wt=="function")try{i=wt("crypto")}catch{}var n=function(){if(i){if(typeof i.getRandomValues=="function")try{return i.getRandomValues(new Uint32Array(1))[0]}catch{}if(typeof i.randomBytes=="function")try{return i.randomBytes(4).readInt32LE()}catch{}}throw new Error("Native crypto module could not be used to get secure random number.")},s=Object.create||(function(){function y(){}return function(w){var C;return y.prototype=w,C=new y,y.prototype=null,C}})(),o={},a=o.lib={},c=a.Base=(function(){return{extend:function(y){var w=s(this);return y&&w.mixIn(y),(!w.hasOwnProperty("init")||this.init===w.init)&&(w.init=function(){w.$super.init.apply(this,arguments)}),w.init.prototype=w,w.$super=this,w},create:function(){var y=this.extend();return y.init.apply(y,arguments),y},init:function(){},mixIn:function(y){for(var w in y)y.hasOwnProperty(w)&&(this[w]=y[w]);y.hasOwnProperty("toString")&&(this.toString=y.toString)},clone:function(){return this.init.prototype.extend(this)}}})(),l=a.WordArray=c.extend({init:function(y,w){y=this.words=y||[],w!=t?this.sigBytes=w:this.sigBytes=y.length*4},toString:function(y){return(y||u).stringify(this)},concat:function(y){var w=this.words,C=y.words,b=this.sigBytes,x=y.sigBytes;if(this.clamp(),b%4)for(var _=0;_>>2]>>>24-_%4*8&255;w[b+_>>>2]|=R<<24-(b+_)%4*8}else for(var U=0;U>>2]=C[U>>>2];return this.sigBytes+=x,this},clamp:function(){var y=this.words,w=this.sigBytes;y[w>>>2]&=4294967295<<32-w%4*8,y.length=e.ceil(w/4)},clone:function(){var y=c.clone.call(this);return y.words=this.words.slice(0),y},random:function(y){for(var w=[],C=0;C>>2]>>>24-x%4*8&255;b.push((_>>>4).toString(16)),b.push((_&15).toString(16))}return b.join("")},parse:function(y){for(var w=y.length,C=[],b=0;b>>3]|=parseInt(y.substr(b,2),16)<<24-b%8*4;return new l.init(C,w/2)}},f=d.Latin1={stringify:function(y){for(var w=y.words,C=y.sigBytes,b=[],x=0;x>>2]>>>24-x%4*8&255;b.push(String.fromCharCode(_))}return b.join("")},parse:function(y){for(var w=y.length,C=[],b=0;b>>2]|=(y.charCodeAt(b)&255)<<24-b%4*8;return new l.init(C,w)}},h=d.Utf8={stringify:function(y){try{return decodeURIComponent(escape(f.stringify(y)))}catch{throw new Error("Malformed UTF-8 data")}},parse:function(y){return f.parse(unescape(encodeURIComponent(y)))}},g=a.BufferedBlockAlgorithm=c.extend({reset:function(){this._data=new l.init,this._nDataBytes=0},_append:function(y){typeof y=="string"&&(y=h.parse(y)),this._data.concat(y),this._nDataBytes+=y.sigBytes},_process:function(y){var w,C=this._data,b=C.words,x=C.sigBytes,_=this.blockSize,R=_*4,U=x/R;y?U=e.ceil(U):U=e.max((U|0)-this._minBufferSize,0);var T=U*_,D=e.min(T*4,x);if(T){for(var B=0;B{(function(r,e){typeof Cg=="object"?G3.exports=Cg=e(et()):typeof define=="function"&&define.amd?define(["./core"],e):e(r.CryptoJS)})(Cg,function(r){return(function(e){var t=r,i=t.lib,n=i.Base,s=i.WordArray,o=t.x64={},a=o.Word=n.extend({init:function(l,d){this.high=l,this.low=d}}),c=o.WordArray=n.extend({init:function(l,d){l=this.words=l||[],d!=e?this.sigBytes=d:this.sigBytes=l.length*8},toX32:function(){for(var l=this.words,d=l.length,u=[],f=0;f{(function(r,e){typeof Eg=="object"?z3.exports=Eg=e(et()):typeof define=="function"&&define.amd?define(["./core"],e):e(r.CryptoJS)})(Eg,function(r){return(function(){if(typeof ArrayBuffer=="function"){var e=r,t=e.lib,i=t.WordArray,n=i.init,s=i.init=function(o){if(o instanceof ArrayBuffer&&(o=new Uint8Array(o)),(o instanceof Int8Array||typeof Uint8ClampedArray<"u"&&o instanceof Uint8ClampedArray||o instanceof Int16Array||o instanceof Uint16Array||o instanceof Int32Array||o instanceof Uint32Array||o instanceof Float32Array||o instanceof Float64Array)&&(o=new Uint8Array(o.buffer,o.byteOffset,o.byteLength)),o instanceof Uint8Array){for(var a=o.byteLength,c=[],l=0;l>>2]|=o[l]<<24-l%4*8;n.call(this,c,a)}else n.apply(this,arguments)};s.prototype=i}})(),r.lib.WordArray})});var $3=oe((Bg,j3)=>{(function(r,e){typeof Bg=="object"?j3.exports=Bg=e(et()):typeof define=="function"&&define.amd?define(["./core"],e):e(r.CryptoJS)})(Bg,function(r){return(function(){var e=r,t=e.lib,i=t.WordArray,n=e.enc,s=n.Utf16=n.Utf16BE={stringify:function(a){for(var c=a.words,l=a.sigBytes,d=[],u=0;u>>2]>>>16-u%4*8&65535;d.push(String.fromCharCode(f))}return d.join("")},parse:function(a){for(var c=a.length,l=[],d=0;d>>1]|=a.charCodeAt(d)<<16-d%2*16;return i.create(l,c*2)}};n.Utf16LE={stringify:function(a){for(var c=a.words,l=a.sigBytes,d=[],u=0;u>>2]>>>16-u%4*8&65535);d.push(String.fromCharCode(f))}return d.join("")},parse:function(a){for(var c=a.length,l=[],d=0;d>>1]|=o(a.charCodeAt(d)<<16-d%2*16);return i.create(l,c*2)}};function o(a){return a<<8&4278255360|a>>>8&16711935}})(),r.enc.Utf16})});var Ko=oe((bg,V3)=>{(function(r,e){typeof bg=="object"?V3.exports=bg=e(et()):typeof define=="function"&&define.amd?define(["./core"],e):e(r.CryptoJS)})(bg,function(r){return(function(){var e=r,t=e.lib,i=t.WordArray,n=e.enc,s=n.Base64={stringify:function(a){var c=a.words,l=a.sigBytes,d=this._map;a.clamp();for(var u=[],f=0;f>>2]>>>24-f%4*8&255,g=c[f+1>>>2]>>>24-(f+1)%4*8&255,p=c[f+2>>>2]>>>24-(f+2)%4*8&255,I=h<<16|g<<8|p,y=0;y<4&&f+y*.75>>6*(3-y)&63));var w=d.charAt(64);if(w)for(;u.length%4;)u.push(w);return u.join("")},parse:function(a){var c=a.length,l=this._map,d=this._reverseMap;if(!d){d=this._reverseMap=[];for(var u=0;u>>6-f%4*2,p=h|g;d[u>>>2]|=p<<24-u%4*8,u++}return i.create(d,u)}})(),r.enc.Base64})});var W3=oe((vg,Y3)=>{(function(r,e){typeof vg=="object"?Y3.exports=vg=e(et()):typeof define=="function"&&define.amd?define(["./core"],e):e(r.CryptoJS)})(vg,function(r){return(function(){var e=r,t=e.lib,i=t.WordArray,n=e.enc,s=n.Base64url={stringify:function(a,c){c===void 0&&(c=!0);var l=a.words,d=a.sigBytes,u=c?this._safe_map:this._map;a.clamp();for(var f=[],h=0;h>>2]>>>24-h%4*8&255,p=l[h+1>>>2]>>>24-(h+1)%4*8&255,I=l[h+2>>>2]>>>24-(h+2)%4*8&255,y=g<<16|p<<8|I,w=0;w<4&&h+w*.75>>6*(3-w)&63));var C=u.charAt(64);if(C)for(;f.length%4;)f.push(C);return f.join("")},parse:function(a,c){c===void 0&&(c=!0);var l=a.length,d=c?this._safe_map:this._map,u=this._reverseMap;if(!u){u=this._reverseMap=[];for(var f=0;f>>6-f%4*2,p=h|g;d[u>>>2]|=p<<24-u%4*8,u++}return i.create(d,u)}})(),r.enc.Base64url})});var Go=oe((kg,X3)=>{(function(r,e){typeof kg=="object"?X3.exports=kg=e(et()):typeof define=="function"&&define.amd?define(["./core"],e):e(r.CryptoJS)})(kg,function(r){return(function(e){var t=r,i=t.lib,n=i.WordArray,s=i.Hasher,o=t.algo,a=[];(function(){for(var h=0;h<64;h++)a[h]=e.abs(e.sin(h+1))*4294967296|0})();var c=o.MD5=s.extend({_doReset:function(){this._hash=new n.init([1732584193,4023233417,2562383102,271733878])},_doProcessBlock:function(h,g){for(var p=0;p<16;p++){var I=g+p,y=h[I];h[I]=(y<<8|y>>>24)&16711935|(y<<24|y>>>8)&4278255360}var w=this._hash.words,C=h[g+0],b=h[g+1],x=h[g+2],_=h[g+3],R=h[g+4],U=h[g+5],T=h[g+6],D=h[g+7],B=h[g+8],Q=h[g+9],v=h[g+10],E=h[g+11],P=h[g+12],N=h[g+13],J=h[g+14],z=h[g+15],L=w[0],G=w[1],K=w[2],j=w[3];L=l(L,G,K,j,C,7,a[0]),j=l(j,L,G,K,b,12,a[1]),K=l(K,j,L,G,x,17,a[2]),G=l(G,K,j,L,_,22,a[3]),L=l(L,G,K,j,R,7,a[4]),j=l(j,L,G,K,U,12,a[5]),K=l(K,j,L,G,T,17,a[6]),G=l(G,K,j,L,D,22,a[7]),L=l(L,G,K,j,B,7,a[8]),j=l(j,L,G,K,Q,12,a[9]),K=l(K,j,L,G,v,17,a[10]),G=l(G,K,j,L,E,22,a[11]),L=l(L,G,K,j,P,7,a[12]),j=l(j,L,G,K,N,12,a[13]),K=l(K,j,L,G,J,17,a[14]),G=l(G,K,j,L,z,22,a[15]),L=d(L,G,K,j,b,5,a[16]),j=d(j,L,G,K,T,9,a[17]),K=d(K,j,L,G,E,14,a[18]),G=d(G,K,j,L,C,20,a[19]),L=d(L,G,K,j,U,5,a[20]),j=d(j,L,G,K,v,9,a[21]),K=d(K,j,L,G,z,14,a[22]),G=d(G,K,j,L,R,20,a[23]),L=d(L,G,K,j,Q,5,a[24]),j=d(j,L,G,K,J,9,a[25]),K=d(K,j,L,G,_,14,a[26]),G=d(G,K,j,L,B,20,a[27]),L=d(L,G,K,j,N,5,a[28]),j=d(j,L,G,K,x,9,a[29]),K=d(K,j,L,G,D,14,a[30]),G=d(G,K,j,L,P,20,a[31]),L=u(L,G,K,j,U,4,a[32]),j=u(j,L,G,K,B,11,a[33]),K=u(K,j,L,G,E,16,a[34]),G=u(G,K,j,L,J,23,a[35]),L=u(L,G,K,j,b,4,a[36]),j=u(j,L,G,K,R,11,a[37]),K=u(K,j,L,G,D,16,a[38]),G=u(G,K,j,L,v,23,a[39]),L=u(L,G,K,j,N,4,a[40]),j=u(j,L,G,K,C,11,a[41]),K=u(K,j,L,G,_,16,a[42]),G=u(G,K,j,L,T,23,a[43]),L=u(L,G,K,j,Q,4,a[44]),j=u(j,L,G,K,P,11,a[45]),K=u(K,j,L,G,z,16,a[46]),G=u(G,K,j,L,x,23,a[47]),L=f(L,G,K,j,C,6,a[48]),j=f(j,L,G,K,D,10,a[49]),K=f(K,j,L,G,J,15,a[50]),G=f(G,K,j,L,U,21,a[51]),L=f(L,G,K,j,P,6,a[52]),j=f(j,L,G,K,_,10,a[53]),K=f(K,j,L,G,v,15,a[54]),G=f(G,K,j,L,b,21,a[55]),L=f(L,G,K,j,B,6,a[56]),j=f(j,L,G,K,z,10,a[57]),K=f(K,j,L,G,T,15,a[58]),G=f(G,K,j,L,N,21,a[59]),L=f(L,G,K,j,R,6,a[60]),j=f(j,L,G,K,E,10,a[61]),K=f(K,j,L,G,x,15,a[62]),G=f(G,K,j,L,Q,21,a[63]),w[0]=w[0]+L|0,w[1]=w[1]+G|0,w[2]=w[2]+K|0,w[3]=w[3]+j|0},_doFinalize:function(){var h=this._data,g=h.words,p=this._nDataBytes*8,I=h.sigBytes*8;g[I>>>5]|=128<<24-I%32;var y=e.floor(p/4294967296),w=p;g[(I+64>>>9<<4)+15]=(y<<8|y>>>24)&16711935|(y<<24|y>>>8)&4278255360,g[(I+64>>>9<<4)+14]=(w<<8|w>>>24)&16711935|(w<<24|w>>>8)&4278255360,h.sigBytes=(g.length+1)*4,this._process();for(var C=this._hash,b=C.words,x=0;x<4;x++){var _=b[x];b[x]=(_<<8|_>>>24)&16711935|(_<<24|_>>>8)&4278255360}return C},clone:function(){var h=s.clone.call(this);return h._hash=this._hash.clone(),h}});function l(h,g,p,I,y,w,C){var b=h+(g&p|~g&I)+y+C;return(b<>>32-w)+g}function d(h,g,p,I,y,w,C){var b=h+(g&I|p&~I)+y+C;return(b<>>32-w)+g}function u(h,g,p,I,y,w,C){var b=h+(g^p^I)+y+C;return(b<>>32-w)+g}function f(h,g,p,I,y,w,C){var b=h+(p^(g|~I))+y+C;return(b<>>32-w)+g}t.MD5=s._createHelper(c),t.HmacMD5=s._createHmacHelper(c)})(Math),r.MD5})});var fC=oe((Sg,Z3)=>{(function(r,e){typeof Sg=="object"?Z3.exports=Sg=e(et()):typeof define=="function"&&define.amd?define(["./core"],e):e(r.CryptoJS)})(Sg,function(r){return(function(){var e=r,t=e.lib,i=t.WordArray,n=t.Hasher,s=e.algo,o=[],a=s.SHA1=n.extend({_doReset:function(){this._hash=new i.init([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(c,l){for(var d=this._hash.words,u=d[0],f=d[1],h=d[2],g=d[3],p=d[4],I=0;I<80;I++){if(I<16)o[I]=c[l+I]|0;else{var y=o[I-3]^o[I-8]^o[I-14]^o[I-16];o[I]=y<<1|y>>>31}var w=(u<<5|u>>>27)+p+o[I];I<20?w+=(f&h|~f&g)+1518500249:I<40?w+=(f^h^g)+1859775393:I<60?w+=(f&h|f&g|h&g)-1894007588:w+=(f^h^g)-899497514,p=g,g=h,h=f<<30|f>>>2,f=u,u=w}d[0]=d[0]+u|0,d[1]=d[1]+f|0,d[2]=d[2]+h|0,d[3]=d[3]+g|0,d[4]=d[4]+p|0},_doFinalize:function(){var c=this._data,l=c.words,d=this._nDataBytes*8,u=c.sigBytes*8;return l[u>>>5]|=128<<24-u%32,l[(u+64>>>9<<4)+14]=Math.floor(d/4294967296),l[(u+64>>>9<<4)+15]=d,c.sigBytes=l.length*4,this._process(),this._hash},clone:function(){var c=n.clone.call(this);return c._hash=this._hash.clone(),c}});e.SHA1=n._createHelper(a),e.HmacSHA1=n._createHmacHelper(a)})(),r.SHA1})});var Qg=oe((Dg,eQ)=>{(function(r,e){typeof Dg=="object"?eQ.exports=Dg=e(et()):typeof define=="function"&&define.amd?define(["./core"],e):e(r.CryptoJS)})(Dg,function(r){return(function(e){var t=r,i=t.lib,n=i.WordArray,s=i.Hasher,o=t.algo,a=[],c=[];(function(){function u(p){for(var I=e.sqrt(p),y=2;y<=I;y++)if(!(p%y))return!1;return!0}function f(p){return(p-(p|0))*4294967296|0}for(var h=2,g=0;g<64;)u(h)&&(g<8&&(a[g]=f(e.pow(h,1/2))),c[g]=f(e.pow(h,1/3)),g++),h++})();var l=[],d=o.SHA256=s.extend({_doReset:function(){this._hash=new n.init(a.slice(0))},_doProcessBlock:function(u,f){for(var h=this._hash.words,g=h[0],p=h[1],I=h[2],y=h[3],w=h[4],C=h[5],b=h[6],x=h[7],_=0;_<64;_++){if(_<16)l[_]=u[f+_]|0;else{var R=l[_-15],U=(R<<25|R>>>7)^(R<<14|R>>>18)^R>>>3,T=l[_-2],D=(T<<15|T>>>17)^(T<<13|T>>>19)^T>>>10;l[_]=U+l[_-7]+D+l[_-16]}var B=w&C^~w&b,Q=g&p^g&I^p&I,v=(g<<30|g>>>2)^(g<<19|g>>>13)^(g<<10|g>>>22),E=(w<<26|w>>>6)^(w<<21|w>>>11)^(w<<7|w>>>25),P=x+E+B+c[_]+l[_],N=v+Q;x=b,b=C,C=w,w=y+P|0,y=I,I=p,p=g,g=P+N|0}h[0]=h[0]+g|0,h[1]=h[1]+p|0,h[2]=h[2]+I|0,h[3]=h[3]+y|0,h[4]=h[4]+w|0,h[5]=h[5]+C|0,h[6]=h[6]+b|0,h[7]=h[7]+x|0},_doFinalize:function(){var u=this._data,f=u.words,h=this._nDataBytes*8,g=u.sigBytes*8;return f[g>>>5]|=128<<24-g%32,f[(g+64>>>9<<4)+14]=e.floor(h/4294967296),f[(g+64>>>9<<4)+15]=h,u.sigBytes=f.length*4,this._process(),this._hash},clone:function(){var u=s.clone.call(this);return u._hash=this._hash.clone(),u}});t.SHA256=s._createHelper(d),t.HmacSHA256=s._createHmacHelper(d)})(Math),r.SHA256})});var rQ=oe((_g,tQ)=>{(function(r,e,t){typeof _g=="object"?tQ.exports=_g=e(et(),Qg()):typeof define=="function"&&define.amd?define(["./core","./sha256"],e):e(r.CryptoJS)})(_g,function(r){return(function(){var e=r,t=e.lib,i=t.WordArray,n=e.algo,s=n.SHA256,o=n.SHA224=s.extend({_doReset:function(){this._hash=new i.init([3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428])},_doFinalize:function(){var a=s._doFinalize.call(this);return a.sigBytes-=4,a}});e.SHA224=s._createHelper(o),e.HmacSHA224=s._createHmacHelper(o)})(),r.SHA224})});var AC=oe((Fg,iQ)=>{(function(r,e,t){typeof Fg=="object"?iQ.exports=Fg=e(et(),Uu()):typeof define=="function"&&define.amd?define(["./core","./x64-core"],e):e(r.CryptoJS)})(Fg,function(r){return(function(){var e=r,t=e.lib,i=t.Hasher,n=e.x64,s=n.Word,o=n.WordArray,a=e.algo;function c(){return s.create.apply(s,arguments)}var l=[c(1116352408,3609767458),c(1899447441,602891725),c(3049323471,3964484399),c(3921009573,2173295548),c(961987163,4081628472),c(1508970993,3053834265),c(2453635748,2937671579),c(2870763221,3664609560),c(3624381080,2734883394),c(310598401,1164996542),c(607225278,1323610764),c(1426881987,3590304994),c(1925078388,4068182383),c(2162078206,991336113),c(2614888103,633803317),c(3248222580,3479774868),c(3835390401,2666613458),c(4022224774,944711139),c(264347078,2341262773),c(604807628,2007800933),c(770255983,1495990901),c(1249150122,1856431235),c(1555081692,3175218132),c(1996064986,2198950837),c(2554220882,3999719339),c(2821834349,766784016),c(2952996808,2566594879),c(3210313671,3203337956),c(3336571891,1034457026),c(3584528711,2466948901),c(113926993,3758326383),c(338241895,168717936),c(666307205,1188179964),c(773529912,1546045734),c(1294757372,1522805485),c(1396182291,2643833823),c(1695183700,2343527390),c(1986661051,1014477480),c(2177026350,1206759142),c(2456956037,344077627),c(2730485921,1290863460),c(2820302411,3158454273),c(3259730800,3505952657),c(3345764771,106217008),c(3516065817,3606008344),c(3600352804,1432725776),c(4094571909,1467031594),c(275423344,851169720),c(430227734,3100823752),c(506948616,1363258195),c(659060556,3750685593),c(883997877,3785050280),c(958139571,3318307427),c(1322822218,3812723403),c(1537002063,2003034995),c(1747873779,3602036899),c(1955562222,1575990012),c(2024104815,1125592928),c(2227730452,2716904306),c(2361852424,442776044),c(2428436474,593698344),c(2756734187,3733110249),c(3204031479,2999351573),c(3329325298,3815920427),c(3391569614,3928383900),c(3515267271,566280711),c(3940187606,3454069534),c(4118630271,4000239992),c(116418474,1914138554),c(174292421,2731055270),c(289380356,3203993006),c(460393269,320620315),c(685471733,587496836),c(852142971,1086792851),c(1017036298,365543100),c(1126000580,2618297676),c(1288033470,3409855158),c(1501505948,4234509866),c(1607167915,987167468),c(1816402316,1246189591)],d=[];(function(){for(var f=0;f<80;f++)d[f]=c()})();var u=a.SHA512=i.extend({_doReset:function(){this._hash=new o.init([new s.init(1779033703,4089235720),new s.init(3144134277,2227873595),new s.init(1013904242,4271175723),new s.init(2773480762,1595750129),new s.init(1359893119,2917565137),new s.init(2600822924,725511199),new s.init(528734635,4215389547),new s.init(1541459225,327033209)])},_doProcessBlock:function(f,h){for(var g=this._hash.words,p=g[0],I=g[1],y=g[2],w=g[3],C=g[4],b=g[5],x=g[6],_=g[7],R=p.high,U=p.low,T=I.high,D=I.low,B=y.high,Q=y.low,v=w.high,E=w.low,P=C.high,N=C.low,J=b.high,z=b.low,L=x.high,G=x.low,K=_.high,j=_.low,te=R,re=U,ee=T,Z=D,me=B,le=Q,Ae=v,ve=E,qe=P,_e=N,se=J,it=z,ce=L,dr=G,qr=K,ct=j,we=0;we<80;we++){var Ee,Ki,wo=d[we];if(we<16)Ki=wo.high=f[h+we*2]|0,Ee=wo.low=f[h+we*2+1]|0;else{var Se=d[we-15],Dt=Se.high,Cs=Se.low,Ce=(Dt>>>1|Cs<<31)^(Dt>>>8|Cs<<24)^Dt>>>7,Gi=(Cs>>>1|Dt<<31)^(Cs>>>8|Dt<<24)^(Cs>>>7|Dt<<25),ri=d[we-2],Ir=ri.high,tr=ri.low,ur=(Ir>>>19|tr<<13)^(Ir<<3|tr>>>29)^Ir>>>6,Qe=(tr>>>19|Ir<<13)^(tr<<3|Ir>>>29)^(tr>>>6|Ir<<26),be=d[we-7],cl=be.high,fi=be.low,Or=d[we-16],Rn=Or.high,gn=Or.low;Ee=Gi+fi,Ki=Ce+cl+(Ee>>>0>>0?1:0),Ee=Ee+Qe,Ki=Ki+ur+(Ee>>>0>>0?1:0),Ee=Ee+gn,Ki=Ki+Rn+(Ee>>>0>>0?1:0),wo.high=Ki,wo.low=Ee}var Le=qe&se^~qe&ce,za=_e&it^~_e&dr,zi=te&ee^te&me^ee&me,xo=re&Z^re&le^Z&le,Pi=(te>>>28|re<<4)^(te<<30|re>>>2)^(te<<25|re>>>7),A=(re>>>28|te<<4)^(re<<30|te>>>2)^(re<<25|te>>>7),k=(qe>>>14|_e<<18)^(qe>>>18|_e<<14)^(qe<<23|_e>>>9),O=(_e>>>14|qe<<18)^(_e>>>18|qe<<14)^(_e<<23|qe>>>9),$=l[we],H=$.high,W=$.low,ue=ct+O,Re=qr+k+(ue>>>0>>0?1:0),ue=ue+za,Re=Re+Le+(ue>>>0>>0?1:0),ue=ue+W,Re=Re+H+(ue>>>0>>0?1:0),ue=ue+Ee,Re=Re+Ki+(ue>>>0>>0?1:0),Ye=A+xo,Ie=Pi+zi+(Ye>>>0>>0?1:0);qr=ce,ct=dr,ce=se,dr=it,se=qe,it=_e,_e=ve+ue|0,qe=Ae+Re+(_e>>>0>>0?1:0)|0,Ae=me,ve=le,me=ee,le=Z,ee=te,Z=re,re=ue+Ye|0,te=Re+Ie+(re>>>0>>0?1:0)|0}U=p.low=U+re,p.high=R+te+(U>>>0>>0?1:0),D=I.low=D+Z,I.high=T+ee+(D>>>0>>0?1:0),Q=y.low=Q+le,y.high=B+me+(Q>>>0>>0?1:0),E=w.low=E+ve,w.high=v+Ae+(E>>>0>>0?1:0),N=C.low=N+_e,C.high=P+qe+(N>>>0<_e>>>0?1:0),z=b.low=z+it,b.high=J+se+(z>>>0>>0?1:0),G=x.low=G+dr,x.high=L+ce+(G>>>0>>0?1:0),j=_.low=j+ct,_.high=K+qr+(j>>>0>>0?1:0)},_doFinalize:function(){var f=this._data,h=f.words,g=this._nDataBytes*8,p=f.sigBytes*8;h[p>>>5]|=128<<24-p%32,h[(p+128>>>10<<5)+30]=Math.floor(g/4294967296),h[(p+128>>>10<<5)+31]=g,f.sigBytes=h.length*4,this._process();var I=this._hash.toX32();return I},clone:function(){var f=i.clone.call(this);return f._hash=this._hash.clone(),f},blockSize:1024/32});e.SHA512=i._createHelper(u),e.HmacSHA512=i._createHmacHelper(u)})(),r.SHA512})});var sQ=oe((Pg,nQ)=>{(function(r,e,t){typeof Pg=="object"?nQ.exports=Pg=e(et(),Uu(),AC()):typeof define=="function"&&define.amd?define(["./core","./x64-core","./sha512"],e):e(r.CryptoJS)})(Pg,function(r){return(function(){var e=r,t=e.x64,i=t.Word,n=t.WordArray,s=e.algo,o=s.SHA512,a=s.SHA384=o.extend({_doReset:function(){this._hash=new n.init([new i.init(3418070365,3238371032),new i.init(1654270250,914150663),new i.init(2438529370,812702999),new i.init(355462360,4144912697),new i.init(1731405415,4290775857),new i.init(2394180231,1750603025),new i.init(3675008525,1694076839),new i.init(1203062813,3204075428)])},_doFinalize:function(){var c=o._doFinalize.call(this);return c.sigBytes-=16,c}});e.SHA384=o._createHelper(a),e.HmacSHA384=o._createHmacHelper(a)})(),r.SHA384})});var aQ=oe((Tg,oQ)=>{(function(r,e,t){typeof Tg=="object"?oQ.exports=Tg=e(et(),Uu()):typeof define=="function"&&define.amd?define(["./core","./x64-core"],e):e(r.CryptoJS)})(Tg,function(r){return(function(e){var t=r,i=t.lib,n=i.WordArray,s=i.Hasher,o=t.x64,a=o.Word,c=t.algo,l=[],d=[],u=[];(function(){for(var g=1,p=0,I=0;I<24;I++){l[g+5*p]=(I+1)*(I+2)/2%64;var y=p%5,w=(2*g+3*p)%5;g=y,p=w}for(var g=0;g<5;g++)for(var p=0;p<5;p++)d[g+5*p]=p+(2*g+3*p)%5*5;for(var C=1,b=0;b<24;b++){for(var x=0,_=0,R=0;R<7;R++){if(C&1){var U=(1<>>24)&16711935|(C<<24|C>>>8)&4278255360,b=(b<<8|b>>>24)&16711935|(b<<24|b>>>8)&4278255360;var x=I[w];x.high^=b,x.low^=C}for(var _=0;_<24;_++){for(var R=0;R<5;R++){for(var U=0,T=0,D=0;D<5;D++){var x=I[R+5*D];U^=x.high,T^=x.low}var B=f[R];B.high=U,B.low=T}for(var R=0;R<5;R++)for(var Q=f[(R+4)%5],v=f[(R+1)%5],E=v.high,P=v.low,U=Q.high^(E<<1|P>>>31),T=Q.low^(P<<1|E>>>31),D=0;D<5;D++){var x=I[R+5*D];x.high^=U,x.low^=T}for(var N=1;N<25;N++){var U,T,x=I[N],J=x.high,z=x.low,L=l[N];L<32?(U=J<>>32-L,T=z<>>32-L):(U=z<>>64-L,T=J<>>64-L);var G=f[d[N]];G.high=U,G.low=T}var K=f[0],j=I[0];K.high=j.high,K.low=j.low;for(var R=0;R<5;R++)for(var D=0;D<5;D++){var N=R+5*D,x=I[N],te=f[N],re=f[(R+1)%5+5*D],ee=f[(R+2)%5+5*D];x.high=te.high^~re.high&ee.high,x.low=te.low^~re.low&ee.low}var x=I[0],Z=u[_];x.high^=Z.high,x.low^=Z.low}},_doFinalize:function(){var g=this._data,p=g.words,I=this._nDataBytes*8,y=g.sigBytes*8,w=this.blockSize*32;p[y>>>5]|=1<<24-y%32,p[(e.ceil((y+1)/w)*w>>>5)-1]|=128,g.sigBytes=p.length*4,this._process();for(var C=this._state,b=this.cfg.outputLength/8,x=b/8,_=[],R=0;R>>24)&16711935|(T<<24|T>>>8)&4278255360,D=(D<<8|D>>>24)&16711935|(D<<24|D>>>8)&4278255360,_.push(D),_.push(T)}return new n.init(_,b)},clone:function(){for(var g=s.clone.call(this),p=g._state=this._state.slice(0),I=0;I<25;I++)p[I]=p[I].clone();return g}});t.SHA3=s._createHelper(h),t.HmacSHA3=s._createHmacHelper(h)})(Math),r.SHA3})});var lQ=oe((Ug,cQ)=>{(function(r,e){typeof Ug=="object"?cQ.exports=Ug=e(et()):typeof define=="function"&&define.amd?define(["./core"],e):e(r.CryptoJS)})(Ug,function(r){return(function(e){var t=r,i=t.lib,n=i.WordArray,s=i.Hasher,o=t.algo,a=n.create([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13]),c=n.create([5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11]),l=n.create([11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6]),d=n.create([8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]),u=n.create([0,1518500249,1859775393,2400959708,2840853838]),f=n.create([1352829926,1548603684,1836072691,2053994217,0]),h=o.RIPEMD160=s.extend({_doReset:function(){this._hash=n.create([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(b,x){for(var _=0;_<16;_++){var R=x+_,U=b[R];b[R]=(U<<8|U>>>24)&16711935|(U<<24|U>>>8)&4278255360}var T=this._hash.words,D=u.words,B=f.words,Q=a.words,v=c.words,E=l.words,P=d.words,N,J,z,L,G,K,j,te,re,ee;K=N=T[0],j=J=T[1],te=z=T[2],re=L=T[3],ee=G=T[4];for(var Z,_=0;_<80;_+=1)Z=N+b[x+Q[_]]|0,_<16?Z+=g(J,z,L)+D[0]:_<32?Z+=p(J,z,L)+D[1]:_<48?Z+=I(J,z,L)+D[2]:_<64?Z+=y(J,z,L)+D[3]:Z+=w(J,z,L)+D[4],Z=Z|0,Z=C(Z,E[_]),Z=Z+G|0,N=G,G=L,L=C(z,10),z=J,J=Z,Z=K+b[x+v[_]]|0,_<16?Z+=w(j,te,re)+B[0]:_<32?Z+=y(j,te,re)+B[1]:_<48?Z+=I(j,te,re)+B[2]:_<64?Z+=p(j,te,re)+B[3]:Z+=g(j,te,re)+B[4],Z=Z|0,Z=C(Z,P[_]),Z=Z+ee|0,K=ee,ee=re,re=C(te,10),te=j,j=Z;Z=T[1]+z+re|0,T[1]=T[2]+L+ee|0,T[2]=T[3]+G+K|0,T[3]=T[4]+N+j|0,T[4]=T[0]+J+te|0,T[0]=Z},_doFinalize:function(){var b=this._data,x=b.words,_=this._nDataBytes*8,R=b.sigBytes*8;x[R>>>5]|=128<<24-R%32,x[(R+64>>>9<<4)+14]=(_<<8|_>>>24)&16711935|(_<<24|_>>>8)&4278255360,b.sigBytes=(x.length+1)*4,this._process();for(var U=this._hash,T=U.words,D=0;D<5;D++){var B=T[D];T[D]=(B<<8|B>>>24)&16711935|(B<<24|B>>>8)&4278255360}return U},clone:function(){var b=s.clone.call(this);return b._hash=this._hash.clone(),b}});function g(b,x,_){return b^x^_}function p(b,x,_){return b&x|~b&_}function I(b,x,_){return(b|~x)^_}function y(b,x,_){return b&_|x&~_}function w(b,x,_){return b^(x|~_)}function C(b,x){return b<>>32-x}t.RIPEMD160=s._createHelper(h),t.HmacRIPEMD160=s._createHmacHelper(h)})(Math),r.RIPEMD160})});var Ng=oe((Rg,dQ)=>{(function(r,e){typeof Rg=="object"?dQ.exports=Rg=e(et()):typeof define=="function"&&define.amd?define(["./core"],e):e(r.CryptoJS)})(Rg,function(r){(function(){var e=r,t=e.lib,i=t.Base,n=e.enc,s=n.Utf8,o=e.algo,a=o.HMAC=i.extend({init:function(c,l){c=this._hasher=new c.init,typeof l=="string"&&(l=s.parse(l));var d=c.blockSize,u=d*4;l.sigBytes>u&&(l=c.finalize(l)),l.clamp();for(var f=this._oKey=l.clone(),h=this._iKey=l.clone(),g=f.words,p=h.words,I=0;I{(function(r,e,t){typeof qg=="object"?uQ.exports=qg=e(et(),Qg(),Ng()):typeof define=="function"&&define.amd?define(["./core","./sha256","./hmac"],e):e(r.CryptoJS)})(qg,function(r){return(function(){var e=r,t=e.lib,i=t.Base,n=t.WordArray,s=e.algo,o=s.SHA256,a=s.HMAC,c=s.PBKDF2=i.extend({cfg:i.extend({keySize:128/32,hasher:o,iterations:25e4}),init:function(l){this.cfg=this.cfg.extend(l)},compute:function(l,d){for(var u=this.cfg,f=a.create(u.hasher,l),h=n.create(),g=n.create([1]),p=h.words,I=g.words,y=u.keySize,w=u.iterations;p.length{(function(r,e,t){typeof Og=="object"?AQ.exports=Og=e(et(),fC(),Ng()):typeof define=="function"&&define.amd?define(["./core","./sha1","./hmac"],e):e(r.CryptoJS)})(Og,function(r){return(function(){var e=r,t=e.lib,i=t.Base,n=t.WordArray,s=e.algo,o=s.MD5,a=s.EvpKDF=i.extend({cfg:i.extend({keySize:128/32,hasher:o,iterations:1}),init:function(c){this.cfg=this.cfg.extend(c)},compute:function(c,l){for(var d,u=this.cfg,f=u.hasher.create(),h=n.create(),g=h.words,p=u.keySize,I=u.iterations;g.length{(function(r,e,t){typeof Mg=="object"?hQ.exports=Mg=e(et(),Ps()):typeof define=="function"&&define.amd?define(["./core","./evpkdf"],e):e(r.CryptoJS)})(Mg,function(r){r.lib.Cipher||(function(e){var t=r,i=t.lib,n=i.Base,s=i.WordArray,o=i.BufferedBlockAlgorithm,a=t.enc,c=a.Utf8,l=a.Base64,d=t.algo,u=d.EvpKDF,f=i.Cipher=o.extend({cfg:n.extend(),createEncryptor:function(B,Q){return this.create(this._ENC_XFORM_MODE,B,Q)},createDecryptor:function(B,Q){return this.create(this._DEC_XFORM_MODE,B,Q)},init:function(B,Q,v){this.cfg=this.cfg.extend(v),this._xformMode=B,this._key=Q,this.reset()},reset:function(){o.reset.call(this),this._doReset()},process:function(B){return this._append(B),this._process()},finalize:function(B){B&&this._append(B);var Q=this._doFinalize();return Q},keySize:128/32,ivSize:128/32,_ENC_XFORM_MODE:1,_DEC_XFORM_MODE:2,_createHelper:(function(){function B(Q){return typeof Q=="string"?D:R}return function(Q){return{encrypt:function(v,E,P){return B(E).encrypt(Q,v,E,P)},decrypt:function(v,E,P){return B(E).decrypt(Q,v,E,P)}}}})()}),h=i.StreamCipher=f.extend({_doFinalize:function(){var B=this._process(!0);return B},blockSize:1}),g=t.mode={},p=i.BlockCipherMode=n.extend({createEncryptor:function(B,Q){return this.Encryptor.create(B,Q)},createDecryptor:function(B,Q){return this.Decryptor.create(B,Q)},init:function(B,Q){this._cipher=B,this._iv=Q}}),I=g.CBC=(function(){var B=p.extend();B.Encryptor=B.extend({processBlock:function(v,E){var P=this._cipher,N=P.blockSize;Q.call(this,v,E,N),P.encryptBlock(v,E),this._prevBlock=v.slice(E,E+N)}}),B.Decryptor=B.extend({processBlock:function(v,E){var P=this._cipher,N=P.blockSize,J=v.slice(E,E+N);P.decryptBlock(v,E),Q.call(this,v,E,N),this._prevBlock=J}});function Q(v,E,P){var N,J=this._iv;J?(N=J,this._iv=e):N=this._prevBlock;for(var z=0;z>>2]&255;B.sigBytes-=Q}},C=i.BlockCipher=f.extend({cfg:f.cfg.extend({mode:I,padding:w}),reset:function(){var B;f.reset.call(this);var Q=this.cfg,v=Q.iv,E=Q.mode;this._xformMode==this._ENC_XFORM_MODE?B=E.createEncryptor:(B=E.createDecryptor,this._minBufferSize=1),this._mode&&this._mode.__creator==B?this._mode.init(this,v&&v.words):(this._mode=B.call(E,this,v&&v.words),this._mode.__creator=B)},_doProcessBlock:function(B,Q){this._mode.processBlock(B,Q)},_doFinalize:function(){var B,Q=this.cfg.padding;return this._xformMode==this._ENC_XFORM_MODE?(Q.pad(this._data,this.blockSize),B=this._process(!0)):(B=this._process(!0),Q.unpad(B)),B},blockSize:128/32}),b=i.CipherParams=n.extend({init:function(B){this.mixIn(B)},toString:function(B){return(B||this.formatter).stringify(this)}}),x=t.format={},_=x.OpenSSL={stringify:function(B){var Q,v=B.ciphertext,E=B.salt;return E?Q=s.create([1398893684,1701076831]).concat(E).concat(v):Q=v,Q.toString(l)},parse:function(B){var Q,v=l.parse(B),E=v.words;return E[0]==1398893684&&E[1]==1701076831&&(Q=s.create(E.slice(2,4)),E.splice(0,4),v.sigBytes-=16),b.create({ciphertext:v,salt:Q})}},R=i.SerializableCipher=n.extend({cfg:n.extend({format:_}),encrypt:function(B,Q,v,E){E=this.cfg.extend(E);var P=B.createEncryptor(v,E),N=P.finalize(Q),J=P.cfg;return b.create({ciphertext:N,key:v,iv:J.iv,algorithm:B,mode:J.mode,padding:J.padding,blockSize:B.blockSize,formatter:E.format})},decrypt:function(B,Q,v,E){E=this.cfg.extend(E),Q=this._parse(Q,E.format);var P=B.createDecryptor(v,E).finalize(Q.ciphertext);return P},_parse:function(B,Q){return typeof B=="string"?Q.parse(B,this):B}}),U=t.kdf={},T=U.OpenSSL={execute:function(B,Q,v,E,P){if(E||(E=s.random(64/8)),P)var N=u.create({keySize:Q+v,hasher:P}).compute(B,E);else var N=u.create({keySize:Q+v}).compute(B,E);var J=s.create(N.words.slice(Q),v*4);return N.sigBytes=Q*4,b.create({key:N,iv:J,salt:E})}},D=i.PasswordBasedCipher=R.extend({cfg:R.cfg.extend({kdf:T}),encrypt:function(B,Q,v,E){E=this.cfg.extend(E);var P=E.kdf.execute(v,B.keySize,B.ivSize,E.salt,E.hasher);E.iv=P.iv;var N=R.encrypt.call(this,B,Q,P.key,E);return N.mixIn(P),N},decrypt:function(B,Q,v,E){E=this.cfg.extend(E),Q=this._parse(Q,E.format);var P=E.kdf.execute(v,B.keySize,B.ivSize,Q.salt,E.hasher);E.iv=P.iv;var N=R.decrypt.call(this,B,Q,P.key,E);return N}})})()})});var pQ=oe((Lg,gQ)=>{(function(r,e,t){typeof Lg=="object"?gQ.exports=Lg=e(et(),fr()):typeof define=="function"&&define.amd?define(["./core","./cipher-core"],e):e(r.CryptoJS)})(Lg,function(r){return r.mode.CFB=(function(){var e=r.lib.BlockCipherMode.extend();e.Encryptor=e.extend({processBlock:function(i,n){var s=this._cipher,o=s.blockSize;t.call(this,i,n,o,s),this._prevBlock=i.slice(n,n+o)}}),e.Decryptor=e.extend({processBlock:function(i,n){var s=this._cipher,o=s.blockSize,a=i.slice(n,n+o);t.call(this,i,n,o,s),this._prevBlock=a}});function t(i,n,s,o){var a,c=this._iv;c?(a=c.slice(0),this._iv=void 0):a=this._prevBlock,o.encryptBlock(a,0);for(var l=0;l{(function(r,e,t){typeof Hg=="object"?mQ.exports=Hg=e(et(),fr()):typeof define=="function"&&define.amd?define(["./core","./cipher-core"],e):e(r.CryptoJS)})(Hg,function(r){return r.mode.CTR=(function(){var e=r.lib.BlockCipherMode.extend(),t=e.Encryptor=e.extend({processBlock:function(i,n){var s=this._cipher,o=s.blockSize,a=this._iv,c=this._counter;a&&(c=this._counter=a.slice(0),this._iv=void 0);var l=c.slice(0);s.encryptBlock(l,0),c[o-1]=c[o-1]+1|0;for(var d=0;d{(function(r,e,t){typeof Kg=="object"?IQ.exports=Kg=e(et(),fr()):typeof define=="function"&&define.amd?define(["./core","./cipher-core"],e):e(r.CryptoJS)})(Kg,function(r){return r.mode.CTRGladman=(function(){var e=r.lib.BlockCipherMode.extend();function t(s){if((s>>24&255)===255){var o=s>>16&255,a=s>>8&255,c=s&255;o===255?(o=0,a===255?(a=0,c===255?c=0:++c):++a):++o,s=0,s+=o<<16,s+=a<<8,s+=c}else s+=1<<24;return s}function i(s){return(s[0]=t(s[0]))===0&&(s[1]=t(s[1])),s}var n=e.Encryptor=e.extend({processBlock:function(s,o){var a=this._cipher,c=a.blockSize,l=this._iv,d=this._counter;l&&(d=this._counter=l.slice(0),this._iv=void 0),i(d);var u=d.slice(0);a.encryptBlock(u,0);for(var f=0;f{(function(r,e,t){typeof Gg=="object"?xQ.exports=Gg=e(et(),fr()):typeof define=="function"&&define.amd?define(["./core","./cipher-core"],e):e(r.CryptoJS)})(Gg,function(r){return r.mode.OFB=(function(){var e=r.lib.BlockCipherMode.extend(),t=e.Encryptor=e.extend({processBlock:function(i,n){var s=this._cipher,o=s.blockSize,a=this._iv,c=this._keystream;a&&(c=this._keystream=a.slice(0),this._iv=void 0),s.encryptBlock(c,0);for(var l=0;l{(function(r,e,t){typeof zg=="object"?EQ.exports=zg=e(et(),fr()):typeof define=="function"&&define.amd?define(["./core","./cipher-core"],e):e(r.CryptoJS)})(zg,function(r){return r.mode.ECB=(function(){var e=r.lib.BlockCipherMode.extend();return e.Encryptor=e.extend({processBlock:function(t,i){this._cipher.encryptBlock(t,i)}}),e.Decryptor=e.extend({processBlock:function(t,i){this._cipher.decryptBlock(t,i)}}),e})(),r.mode.ECB})});var vQ=oe((Jg,bQ)=>{(function(r,e,t){typeof Jg=="object"?bQ.exports=Jg=e(et(),fr()):typeof define=="function"&&define.amd?define(["./core","./cipher-core"],e):e(r.CryptoJS)})(Jg,function(r){return r.pad.AnsiX923={pad:function(e,t){var i=e.sigBytes,n=t*4,s=n-i%n,o=i+s-1;e.clamp(),e.words[o>>>2]|=s<<24-o%4*8,e.sigBytes+=s},unpad:function(e){var t=e.words[e.sigBytes-1>>>2]&255;e.sigBytes-=t}},r.pad.Ansix923})});var SQ=oe((jg,kQ)=>{(function(r,e,t){typeof jg=="object"?kQ.exports=jg=e(et(),fr()):typeof define=="function"&&define.amd?define(["./core","./cipher-core"],e):e(r.CryptoJS)})(jg,function(r){return r.pad.Iso10126={pad:function(e,t){var i=t*4,n=i-e.sigBytes%i;e.concat(r.lib.WordArray.random(n-1)).concat(r.lib.WordArray.create([n<<24],1))},unpad:function(e){var t=e.words[e.sigBytes-1>>>2]&255;e.sigBytes-=t}},r.pad.Iso10126})});var QQ=oe(($g,DQ)=>{(function(r,e,t){typeof $g=="object"?DQ.exports=$g=e(et(),fr()):typeof define=="function"&&define.amd?define(["./core","./cipher-core"],e):e(r.CryptoJS)})($g,function(r){return r.pad.Iso97971={pad:function(e,t){e.concat(r.lib.WordArray.create([2147483648],1)),r.pad.ZeroPadding.pad(e,t)},unpad:function(e){r.pad.ZeroPadding.unpad(e),e.sigBytes--}},r.pad.Iso97971})});var FQ=oe((Vg,_Q)=>{(function(r,e,t){typeof Vg=="object"?_Q.exports=Vg=e(et(),fr()):typeof define=="function"&&define.amd?define(["./core","./cipher-core"],e):e(r.CryptoJS)})(Vg,function(r){return r.pad.ZeroPadding={pad:function(e,t){var i=t*4;e.clamp(),e.sigBytes+=i-(e.sigBytes%i||i)},unpad:function(e){for(var t=e.words,i=e.sigBytes-1,i=e.sigBytes-1;i>=0;i--)if(t[i>>>2]>>>24-i%4*8&255){e.sigBytes=i+1;break}}},r.pad.ZeroPadding})});var TQ=oe((Yg,PQ)=>{(function(r,e,t){typeof Yg=="object"?PQ.exports=Yg=e(et(),fr()):typeof define=="function"&&define.amd?define(["./core","./cipher-core"],e):e(r.CryptoJS)})(Yg,function(r){return r.pad.NoPadding={pad:function(){},unpad:function(){}},r.pad.NoPadding})});var RQ=oe((Wg,UQ)=>{(function(r,e,t){typeof Wg=="object"?UQ.exports=Wg=e(et(),fr()):typeof define=="function"&&define.amd?define(["./core","./cipher-core"],e):e(r.CryptoJS)})(Wg,function(r){return(function(e){var t=r,i=t.lib,n=i.CipherParams,s=t.enc,o=s.Hex,a=t.format,c=a.Hex={stringify:function(l){return l.ciphertext.toString(o)},parse:function(l){var d=o.parse(l);return n.create({ciphertext:d})}}})(),r.format.Hex})});var qQ=oe((Xg,NQ)=>{(function(r,e,t){typeof Xg=="object"?NQ.exports=Xg=e(et(),Ko(),Go(),Ps(),fr()):typeof define=="function"&&define.amd?define(["./core","./enc-base64","./md5","./evpkdf","./cipher-core"],e):e(r.CryptoJS)})(Xg,function(r){return(function(){var e=r,t=e.lib,i=t.BlockCipher,n=e.algo,s=[],o=[],a=[],c=[],l=[],d=[],u=[],f=[],h=[],g=[];(function(){for(var y=[],w=0;w<256;w++)w<128?y[w]=w<<1:y[w]=w<<1^283;for(var C=0,b=0,w=0;w<256;w++){var x=b^b<<1^b<<2^b<<3^b<<4;x=x>>>8^x&255^99,s[C]=x,o[x]=C;var _=y[C],R=y[_],U=y[R],T=y[x]*257^x*16843008;a[C]=T<<24|T>>>8,c[C]=T<<16|T>>>16,l[C]=T<<8|T>>>24,d[C]=T;var T=U*16843009^R*65537^_*257^C*16843008;u[x]=T<<24|T>>>8,f[x]=T<<16|T>>>16,h[x]=T<<8|T>>>24,g[x]=T,C?(C=_^y[y[y[U^_]]],b^=y[y[b]]):C=b=1}})();var p=[0,1,2,4,8,16,32,64,128,27,54],I=n.AES=i.extend({_doReset:function(){var y;if(!(this._nRounds&&this._keyPriorReset===this._key)){for(var w=this._keyPriorReset=this._key,C=w.words,b=w.sigBytes/4,x=this._nRounds=b+6,_=(x+1)*4,R=this._keySchedule=[],U=0;U<_;U++)U6&&U%b==4&&(y=s[y>>>24]<<24|s[y>>>16&255]<<16|s[y>>>8&255]<<8|s[y&255]):(y=y<<8|y>>>24,y=s[y>>>24]<<24|s[y>>>16&255]<<16|s[y>>>8&255]<<8|s[y&255],y^=p[U/b|0]<<24),R[U]=R[U-b]^y);for(var T=this._invKeySchedule=[],D=0;D<_;D++){var U=_-D;if(D%4)var y=R[U];else var y=R[U-4];D<4||U<=4?T[D]=y:T[D]=u[s[y>>>24]]^f[s[y>>>16&255]]^h[s[y>>>8&255]]^g[s[y&255]]}}},encryptBlock:function(y,w){this._doCryptBlock(y,w,this._keySchedule,a,c,l,d,s)},decryptBlock:function(y,w){var C=y[w+1];y[w+1]=y[w+3],y[w+3]=C,this._doCryptBlock(y,w,this._invKeySchedule,u,f,h,g,o);var C=y[w+1];y[w+1]=y[w+3],y[w+3]=C},_doCryptBlock:function(y,w,C,b,x,_,R,U){for(var T=this._nRounds,D=y[w]^C[0],B=y[w+1]^C[1],Q=y[w+2]^C[2],v=y[w+3]^C[3],E=4,P=1;P>>24]^x[B>>>16&255]^_[Q>>>8&255]^R[v&255]^C[E++],J=b[B>>>24]^x[Q>>>16&255]^_[v>>>8&255]^R[D&255]^C[E++],z=b[Q>>>24]^x[v>>>16&255]^_[D>>>8&255]^R[B&255]^C[E++],L=b[v>>>24]^x[D>>>16&255]^_[B>>>8&255]^R[Q&255]^C[E++];D=N,B=J,Q=z,v=L}var N=(U[D>>>24]<<24|U[B>>>16&255]<<16|U[Q>>>8&255]<<8|U[v&255])^C[E++],J=(U[B>>>24]<<24|U[Q>>>16&255]<<16|U[v>>>8&255]<<8|U[D&255])^C[E++],z=(U[Q>>>24]<<24|U[v>>>16&255]<<16|U[D>>>8&255]<<8|U[B&255])^C[E++],L=(U[v>>>24]<<24|U[D>>>16&255]<<16|U[B>>>8&255]<<8|U[Q&255])^C[E++];y[w]=N,y[w+1]=J,y[w+2]=z,y[w+3]=L},keySize:256/32});e.AES=i._createHelper(I)})(),r.AES})});var MQ=oe((Zg,OQ)=>{(function(r,e,t){typeof Zg=="object"?OQ.exports=Zg=e(et(),Ko(),Go(),Ps(),fr()):typeof define=="function"&&define.amd?define(["./core","./enc-base64","./md5","./evpkdf","./cipher-core"],e):e(r.CryptoJS)})(Zg,function(r){return(function(){var e=r,t=e.lib,i=t.WordArray,n=t.BlockCipher,s=e.algo,o=[57,49,41,33,25,17,9,1,58,50,42,34,26,18,10,2,59,51,43,35,27,19,11,3,60,52,44,36,63,55,47,39,31,23,15,7,62,54,46,38,30,22,14,6,61,53,45,37,29,21,13,5,28,20,12,4],a=[14,17,11,24,1,5,3,28,15,6,21,10,23,19,12,4,26,8,16,7,27,20,13,2,41,52,31,37,47,55,30,40,51,45,33,48,44,49,39,56,34,53,46,42,50,36,29,32],c=[1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28],l=[{0:8421888,268435456:32768,536870912:8421378,805306368:2,1073741824:512,1342177280:8421890,1610612736:8389122,1879048192:8388608,2147483648:514,2415919104:8389120,2684354560:33280,2952790016:8421376,3221225472:32770,3489660928:8388610,3758096384:0,4026531840:33282,134217728:0,402653184:8421890,671088640:33282,939524096:32768,1207959552:8421888,1476395008:512,1744830464:8421378,2013265920:2,2281701376:8389120,2550136832:33280,2818572288:8421376,3087007744:8389122,3355443200:8388610,3623878656:32770,3892314112:514,4160749568:8388608,1:32768,268435457:2,536870913:8421888,805306369:8388608,1073741825:8421378,1342177281:33280,1610612737:512,1879048193:8389122,2147483649:8421890,2415919105:8421376,2684354561:8388610,2952790017:33282,3221225473:514,3489660929:8389120,3758096385:32770,4026531841:0,134217729:8421890,402653185:8421376,671088641:8388608,939524097:512,1207959553:32768,1476395009:8388610,1744830465:2,2013265921:33282,2281701377:32770,2550136833:8389122,2818572289:514,3087007745:8421888,3355443201:8389120,3623878657:0,3892314113:33280,4160749569:8421378},{0:1074282512,16777216:16384,33554432:524288,50331648:1074266128,67108864:1073741840,83886080:1074282496,100663296:1073758208,117440512:16,134217728:540672,150994944:1073758224,167772160:1073741824,184549376:540688,201326592:524304,218103808:0,234881024:16400,251658240:1074266112,8388608:1073758208,25165824:540688,41943040:16,58720256:1073758224,75497472:1074282512,92274688:1073741824,109051904:524288,125829120:1074266128,142606336:524304,159383552:0,176160768:16384,192937984:1074266112,209715200:1073741840,226492416:540672,243269632:1074282496,260046848:16400,268435456:0,285212672:1074266128,301989888:1073758224,318767104:1074282496,335544320:1074266112,352321536:16,369098752:540688,385875968:16384,402653184:16400,419430400:524288,436207616:524304,452984832:1073741840,469762048:540672,486539264:1073758208,503316480:1073741824,520093696:1074282512,276824064:540688,293601280:524288,310378496:1074266112,327155712:16384,343932928:1073758208,360710144:1074282512,377487360:16,394264576:1073741824,411041792:1074282496,427819008:1073741840,444596224:1073758224,461373440:524304,478150656:0,494927872:16400,511705088:1074266128,528482304:540672},{0:260,1048576:0,2097152:67109120,3145728:65796,4194304:65540,5242880:67108868,6291456:67174660,7340032:67174400,8388608:67108864,9437184:67174656,10485760:65792,11534336:67174404,12582912:67109124,13631488:65536,14680064:4,15728640:256,524288:67174656,1572864:67174404,2621440:0,3670016:67109120,4718592:67108868,5767168:65536,6815744:65540,7864320:260,8912896:4,9961472:256,11010048:67174400,12058624:65796,13107200:65792,14155776:67109124,15204352:67174660,16252928:67108864,16777216:67174656,17825792:65540,18874368:65536,19922944:67109120,20971520:256,22020096:67174660,23068672:67108868,24117248:0,25165824:67109124,26214400:67108864,27262976:4,28311552:65792,29360128:67174400,30408704:260,31457280:65796,32505856:67174404,17301504:67108864,18350080:260,19398656:67174656,20447232:0,21495808:65540,22544384:67109120,23592960:256,24641536:67174404,25690112:65536,26738688:67174660,27787264:65796,28835840:67108868,29884416:67109124,30932992:67174400,31981568:4,33030144:65792},{0:2151682048,65536:2147487808,131072:4198464,196608:2151677952,262144:0,327680:4198400,393216:2147483712,458752:4194368,524288:2147483648,589824:4194304,655360:64,720896:2147487744,786432:2151678016,851968:4160,917504:4096,983040:2151682112,32768:2147487808,98304:64,163840:2151678016,229376:2147487744,294912:4198400,360448:2151682112,425984:0,491520:2151677952,557056:4096,622592:2151682048,688128:4194304,753664:4160,819200:2147483648,884736:4194368,950272:4198464,1015808:2147483712,1048576:4194368,1114112:4198400,1179648:2147483712,1245184:0,1310720:4160,1376256:2151678016,1441792:2151682048,1507328:2147487808,1572864:2151682112,1638400:2147483648,1703936:2151677952,1769472:4198464,1835008:2147487744,1900544:4194304,1966080:64,2031616:4096,1081344:2151677952,1146880:2151682112,1212416:0,1277952:4198400,1343488:4194368,1409024:2147483648,1474560:2147487808,1540096:64,1605632:2147483712,1671168:4096,1736704:2147487744,1802240:2151678016,1867776:4160,1933312:2151682048,1998848:4194304,2064384:4198464},{0:128,4096:17039360,8192:262144,12288:536870912,16384:537133184,20480:16777344,24576:553648256,28672:262272,32768:16777216,36864:537133056,40960:536871040,45056:553910400,49152:553910272,53248:0,57344:17039488,61440:553648128,2048:17039488,6144:553648256,10240:128,14336:17039360,18432:262144,22528:537133184,26624:553910272,30720:536870912,34816:537133056,38912:0,43008:553910400,47104:16777344,51200:536871040,55296:553648128,59392:16777216,63488:262272,65536:262144,69632:128,73728:536870912,77824:553648256,81920:16777344,86016:553910272,90112:537133184,94208:16777216,98304:553910400,102400:553648128,106496:17039360,110592:537133056,114688:262272,118784:536871040,122880:0,126976:17039488,67584:553648256,71680:16777216,75776:17039360,79872:537133184,83968:536870912,88064:17039488,92160:128,96256:553910272,100352:262272,104448:553910400,108544:0,112640:553648128,116736:16777344,120832:262144,124928:537133056,129024:536871040},{0:268435464,256:8192,512:270532608,768:270540808,1024:268443648,1280:2097152,1536:2097160,1792:268435456,2048:0,2304:268443656,2560:2105344,2816:8,3072:270532616,3328:2105352,3584:8200,3840:270540800,128:270532608,384:270540808,640:8,896:2097152,1152:2105352,1408:268435464,1664:268443648,1920:8200,2176:2097160,2432:8192,2688:268443656,2944:270532616,3200:0,3456:270540800,3712:2105344,3968:268435456,4096:268443648,4352:270532616,4608:270540808,4864:8200,5120:2097152,5376:268435456,5632:268435464,5888:2105344,6144:2105352,6400:0,6656:8,6912:270532608,7168:8192,7424:268443656,7680:270540800,7936:2097160,4224:8,4480:2105344,4736:2097152,4992:268435464,5248:268443648,5504:8200,5760:270540808,6016:270532608,6272:270540800,6528:270532616,6784:8192,7040:2105352,7296:2097160,7552:0,7808:268435456,8064:268443656},{0:1048576,16:33555457,32:1024,48:1049601,64:34604033,80:0,96:1,112:34603009,128:33555456,144:1048577,160:33554433,176:34604032,192:34603008,208:1025,224:1049600,240:33554432,8:34603009,24:0,40:33555457,56:34604032,72:1048576,88:33554433,104:33554432,120:1025,136:1049601,152:33555456,168:34603008,184:1048577,200:1024,216:34604033,232:1,248:1049600,256:33554432,272:1048576,288:33555457,304:34603009,320:1048577,336:33555456,352:34604032,368:1049601,384:1025,400:34604033,416:1049600,432:1,448:0,464:34603008,480:33554433,496:1024,264:1049600,280:33555457,296:34603009,312:1,328:33554432,344:1048576,360:1025,376:34604032,392:33554433,408:34603008,424:0,440:34604033,456:1049601,472:1024,488:33555456,504:1048577},{0:134219808,1:131072,2:134217728,3:32,4:131104,5:134350880,6:134350848,7:2048,8:134348800,9:134219776,10:133120,11:134348832,12:2080,13:0,14:134217760,15:133152,2147483648:2048,2147483649:134350880,2147483650:134219808,2147483651:134217728,2147483652:134348800,2147483653:133120,2147483654:133152,2147483655:32,2147483656:134217760,2147483657:2080,2147483658:131104,2147483659:134350848,2147483660:0,2147483661:134348832,2147483662:134219776,2147483663:131072,16:133152,17:134350848,18:32,19:2048,20:134219776,21:134217760,22:134348832,23:131072,24:0,25:131104,26:134348800,27:134219808,28:134350880,29:133120,30:2080,31:134217728,2147483664:131072,2147483665:2048,2147483666:134348832,2147483667:133152,2147483668:32,2147483669:134348800,2147483670:134217728,2147483671:134219808,2147483672:134350880,2147483673:134217760,2147483674:134219776,2147483675:0,2147483676:133120,2147483677:2080,2147483678:131104,2147483679:134350848}],d=[4160749569,528482304,33030144,2064384,129024,8064,504,2147483679],u=s.DES=n.extend({_doReset:function(){for(var p=this._key,I=p.words,y=[],w=0;w<56;w++){var C=o[w]-1;y[w]=I[C>>>5]>>>31-C%32&1}for(var b=this._subKeys=[],x=0;x<16;x++){for(var _=b[x]=[],R=c[x],w=0;w<24;w++)_[w/6|0]|=y[(a[w]-1+R)%28]<<31-w%6,_[4+(w/6|0)]|=y[28+(a[w+24]-1+R)%28]<<31-w%6;_[0]=_[0]<<1|_[0]>>>31;for(var w=1;w<7;w++)_[w]=_[w]>>>(w-1)*4+3;_[7]=_[7]<<5|_[7]>>>27}for(var U=this._invSubKeys=[],w=0;w<16;w++)U[w]=b[15-w]},encryptBlock:function(p,I){this._doCryptBlock(p,I,this._subKeys)},decryptBlock:function(p,I){this._doCryptBlock(p,I,this._invSubKeys)},_doCryptBlock:function(p,I,y){this._lBlock=p[I],this._rBlock=p[I+1],f.call(this,4,252645135),f.call(this,16,65535),h.call(this,2,858993459),h.call(this,8,16711935),f.call(this,1,1431655765);for(var w=0;w<16;w++){for(var C=y[w],b=this._lBlock,x=this._rBlock,_=0,R=0;R<8;R++)_|=l[R][((x^C[R])&d[R])>>>0];this._lBlock=x,this._rBlock=b^_}var U=this._lBlock;this._lBlock=this._rBlock,this._rBlock=U,f.call(this,1,1431655765),h.call(this,8,16711935),h.call(this,2,858993459),f.call(this,16,65535),f.call(this,4,252645135),p[I]=this._lBlock,p[I+1]=this._rBlock},keySize:64/32,ivSize:64/32,blockSize:64/32});function f(p,I){var y=(this._lBlock>>>p^this._rBlock)&I;this._rBlock^=y,this._lBlock^=y<>>p^this._lBlock)&I;this._lBlock^=y,this._rBlock^=y<192.");var y=I.slice(0,2),w=I.length<4?I.slice(0,2):I.slice(2,4),C=I.length<6?I.slice(0,2):I.slice(4,6);this._des1=u.createEncryptor(i.create(y)),this._des2=u.createEncryptor(i.create(w)),this._des3=u.createEncryptor(i.create(C))},encryptBlock:function(p,I){this._des1.encryptBlock(p,I),this._des2.decryptBlock(p,I),this._des3.encryptBlock(p,I)},decryptBlock:function(p,I){this._des3.decryptBlock(p,I),this._des2.encryptBlock(p,I),this._des1.decryptBlock(p,I)},keySize:192/32,ivSize:64/32,blockSize:64/32});e.TripleDES=n._createHelper(g)})(),r.TripleDES})});var HQ=oe((ep,LQ)=>{(function(r,e,t){typeof ep=="object"?LQ.exports=ep=e(et(),Ko(),Go(),Ps(),fr()):typeof define=="function"&&define.amd?define(["./core","./enc-base64","./md5","./evpkdf","./cipher-core"],e):e(r.CryptoJS)})(ep,function(r){return(function(){var e=r,t=e.lib,i=t.StreamCipher,n=e.algo,s=n.RC4=i.extend({_doReset:function(){for(var c=this._key,l=c.words,d=c.sigBytes,u=this._S=[],f=0;f<256;f++)u[f]=f;for(var f=0,h=0;f<256;f++){var g=f%d,p=l[g>>>2]>>>24-g%4*8&255;h=(h+u[f]+p)%256;var I=u[f];u[f]=u[h],u[h]=I}this._i=this._j=0},_doProcessBlock:function(c,l){c[l]^=o.call(this)},keySize:256/32,ivSize:0});function o(){for(var c=this._S,l=this._i,d=this._j,u=0,f=0;f<4;f++){l=(l+1)%256,d=(d+c[l])%256;var h=c[l];c[l]=c[d],c[d]=h,u|=c[(c[l]+c[d])%256]<<24-f*8}return this._i=l,this._j=d,u}e.RC4=i._createHelper(s);var a=n.RC4Drop=s.extend({cfg:s.cfg.extend({drop:192}),_doReset:function(){s._doReset.call(this);for(var c=this.cfg.drop;c>0;c--)o.call(this)}});e.RC4Drop=i._createHelper(a)})(),r.RC4})});var GQ=oe((tp,KQ)=>{(function(r,e,t){typeof tp=="object"?KQ.exports=tp=e(et(),Ko(),Go(),Ps(),fr()):typeof define=="function"&&define.amd?define(["./core","./enc-base64","./md5","./evpkdf","./cipher-core"],e):e(r.CryptoJS)})(tp,function(r){return(function(){var e=r,t=e.lib,i=t.StreamCipher,n=e.algo,s=[],o=[],a=[],c=n.Rabbit=i.extend({_doReset:function(){for(var d=this._key.words,u=this.cfg.iv,f=0;f<4;f++)d[f]=(d[f]<<8|d[f]>>>24)&16711935|(d[f]<<24|d[f]>>>8)&4278255360;var h=this._X=[d[0],d[3]<<16|d[2]>>>16,d[1],d[0]<<16|d[3]>>>16,d[2],d[1]<<16|d[0]>>>16,d[3],d[2]<<16|d[1]>>>16],g=this._C=[d[2]<<16|d[2]>>>16,d[0]&4294901760|d[1]&65535,d[3]<<16|d[3]>>>16,d[1]&4294901760|d[2]&65535,d[0]<<16|d[0]>>>16,d[2]&4294901760|d[3]&65535,d[1]<<16|d[1]>>>16,d[3]&4294901760|d[0]&65535];this._b=0;for(var f=0;f<4;f++)l.call(this);for(var f=0;f<8;f++)g[f]^=h[f+4&7];if(u){var p=u.words,I=p[0],y=p[1],w=(I<<8|I>>>24)&16711935|(I<<24|I>>>8)&4278255360,C=(y<<8|y>>>24)&16711935|(y<<24|y>>>8)&4278255360,b=w>>>16|C&4294901760,x=C<<16|w&65535;g[0]^=w,g[1]^=b,g[2]^=C,g[3]^=x,g[4]^=w,g[5]^=b,g[6]^=C,g[7]^=x;for(var f=0;f<4;f++)l.call(this)}},_doProcessBlock:function(d,u){var f=this._X;l.call(this),s[0]=f[0]^f[5]>>>16^f[3]<<16,s[1]=f[2]^f[7]>>>16^f[5]<<16,s[2]=f[4]^f[1]>>>16^f[7]<<16,s[3]=f[6]^f[3]>>>16^f[1]<<16;for(var h=0;h<4;h++)s[h]=(s[h]<<8|s[h]>>>24)&16711935|(s[h]<<24|s[h]>>>8)&4278255360,d[u+h]^=s[h]},blockSize:128/32,ivSize:64/32});function l(){for(var d=this._X,u=this._C,f=0;f<8;f++)o[f]=u[f];u[0]=u[0]+1295307597+this._b|0,u[1]=u[1]+3545052371+(u[0]>>>0>>0?1:0)|0,u[2]=u[2]+886263092+(u[1]>>>0>>0?1:0)|0,u[3]=u[3]+1295307597+(u[2]>>>0>>0?1:0)|0,u[4]=u[4]+3545052371+(u[3]>>>0>>0?1:0)|0,u[5]=u[5]+886263092+(u[4]>>>0>>0?1:0)|0,u[6]=u[6]+1295307597+(u[5]>>>0>>0?1:0)|0,u[7]=u[7]+3545052371+(u[6]>>>0>>0?1:0)|0,this._b=u[7]>>>0>>0?1:0;for(var f=0;f<8;f++){var h=d[f]+u[f],g=h&65535,p=h>>>16,I=((g*g>>>17)+g*p>>>15)+p*p,y=((h&4294901760)*h|0)+((h&65535)*h|0);a[f]=I^y}d[0]=a[0]+(a[7]<<16|a[7]>>>16)+(a[6]<<16|a[6]>>>16)|0,d[1]=a[1]+(a[0]<<8|a[0]>>>24)+a[7]|0,d[2]=a[2]+(a[1]<<16|a[1]>>>16)+(a[0]<<16|a[0]>>>16)|0,d[3]=a[3]+(a[2]<<8|a[2]>>>24)+a[1]|0,d[4]=a[4]+(a[3]<<16|a[3]>>>16)+(a[2]<<16|a[2]>>>16)|0,d[5]=a[5]+(a[4]<<8|a[4]>>>24)+a[3]|0,d[6]=a[6]+(a[5]<<16|a[5]>>>16)+(a[4]<<16|a[4]>>>16)|0,d[7]=a[7]+(a[6]<<8|a[6]>>>24)+a[5]|0}e.Rabbit=i._createHelper(c)})(),r.Rabbit})});var JQ=oe((rp,zQ)=>{(function(r,e,t){typeof rp=="object"?zQ.exports=rp=e(et(),Ko(),Go(),Ps(),fr()):typeof define=="function"&&define.amd?define(["./core","./enc-base64","./md5","./evpkdf","./cipher-core"],e):e(r.CryptoJS)})(rp,function(r){return(function(){var e=r,t=e.lib,i=t.StreamCipher,n=e.algo,s=[],o=[],a=[],c=n.RabbitLegacy=i.extend({_doReset:function(){var d=this._key.words,u=this.cfg.iv,f=this._X=[d[0],d[3]<<16|d[2]>>>16,d[1],d[0]<<16|d[3]>>>16,d[2],d[1]<<16|d[0]>>>16,d[3],d[2]<<16|d[1]>>>16],h=this._C=[d[2]<<16|d[2]>>>16,d[0]&4294901760|d[1]&65535,d[3]<<16|d[3]>>>16,d[1]&4294901760|d[2]&65535,d[0]<<16|d[0]>>>16,d[2]&4294901760|d[3]&65535,d[1]<<16|d[1]>>>16,d[3]&4294901760|d[0]&65535];this._b=0;for(var g=0;g<4;g++)l.call(this);for(var g=0;g<8;g++)h[g]^=f[g+4&7];if(u){var p=u.words,I=p[0],y=p[1],w=(I<<8|I>>>24)&16711935|(I<<24|I>>>8)&4278255360,C=(y<<8|y>>>24)&16711935|(y<<24|y>>>8)&4278255360,b=w>>>16|C&4294901760,x=C<<16|w&65535;h[0]^=w,h[1]^=b,h[2]^=C,h[3]^=x,h[4]^=w,h[5]^=b,h[6]^=C,h[7]^=x;for(var g=0;g<4;g++)l.call(this)}},_doProcessBlock:function(d,u){var f=this._X;l.call(this),s[0]=f[0]^f[5]>>>16^f[3]<<16,s[1]=f[2]^f[7]>>>16^f[5]<<16,s[2]=f[4]^f[1]>>>16^f[7]<<16,s[3]=f[6]^f[3]>>>16^f[1]<<16;for(var h=0;h<4;h++)s[h]=(s[h]<<8|s[h]>>>24)&16711935|(s[h]<<24|s[h]>>>8)&4278255360,d[u+h]^=s[h]},blockSize:128/32,ivSize:64/32});function l(){for(var d=this._X,u=this._C,f=0;f<8;f++)o[f]=u[f];u[0]=u[0]+1295307597+this._b|0,u[1]=u[1]+3545052371+(u[0]>>>0>>0?1:0)|0,u[2]=u[2]+886263092+(u[1]>>>0>>0?1:0)|0,u[3]=u[3]+1295307597+(u[2]>>>0>>0?1:0)|0,u[4]=u[4]+3545052371+(u[3]>>>0>>0?1:0)|0,u[5]=u[5]+886263092+(u[4]>>>0>>0?1:0)|0,u[6]=u[6]+1295307597+(u[5]>>>0>>0?1:0)|0,u[7]=u[7]+3545052371+(u[6]>>>0>>0?1:0)|0,this._b=u[7]>>>0>>0?1:0;for(var f=0;f<8;f++){var h=d[f]+u[f],g=h&65535,p=h>>>16,I=((g*g>>>17)+g*p>>>15)+p*p,y=((h&4294901760)*h|0)+((h&65535)*h|0);a[f]=I^y}d[0]=a[0]+(a[7]<<16|a[7]>>>16)+(a[6]<<16|a[6]>>>16)|0,d[1]=a[1]+(a[0]<<8|a[0]>>>24)+a[7]|0,d[2]=a[2]+(a[1]<<16|a[1]>>>16)+(a[0]<<16|a[0]>>>16)|0,d[3]=a[3]+(a[2]<<8|a[2]>>>24)+a[1]|0,d[4]=a[4]+(a[3]<<16|a[3]>>>16)+(a[2]<<16|a[2]>>>16)|0,d[5]=a[5]+(a[4]<<8|a[4]>>>24)+a[3]|0,d[6]=a[6]+(a[5]<<16|a[5]>>>16)+(a[4]<<16|a[4]>>>16)|0,d[7]=a[7]+(a[6]<<8|a[6]>>>24)+a[5]|0}e.RabbitLegacy=i._createHelper(c)})(),r.RabbitLegacy})});var $Q=oe((ip,jQ)=>{(function(r,e,t){typeof ip=="object"?jQ.exports=ip=e(et(),Ko(),Go(),Ps(),fr()):typeof define=="function"&&define.amd?define(["./core","./enc-base64","./md5","./evpkdf","./cipher-core"],e):e(r.CryptoJS)})(ip,function(r){return(function(){var e=r,t=e.lib,i=t.BlockCipher,n=e.algo;let s=16,o=[608135816,2242054355,320440878,57701188,2752067618,698298832,137296536,3964562569,1160258022,953160567,3193202383,887688300,3232508343,3380367581,1065670069,3041331479,2450970073,2306472731],a=[[3509652390,2564797868,805139163,3491422135,3101798381,1780907670,3128725573,4046225305,614570311,3012652279,134345442,2240740374,1667834072,1901547113,2757295779,4103290238,227898511,1921955416,1904987480,2182433518,2069144605,3260701109,2620446009,720527379,3318853667,677414384,3393288472,3101374703,2390351024,1614419982,1822297739,2954791486,3608508353,3174124327,2024746970,1432378464,3864339955,2857741204,1464375394,1676153920,1439316330,715854006,3033291828,289532110,2706671279,2087905683,3018724369,1668267050,732546397,1947742710,3462151702,2609353502,2950085171,1814351708,2050118529,680887927,999245976,1800124847,3300911131,1713906067,1641548236,4213287313,1216130144,1575780402,4018429277,3917837745,3693486850,3949271944,596196993,3549867205,258830323,2213823033,772490370,2760122372,1774776394,2652871518,566650946,4142492826,1728879713,2882767088,1783734482,3629395816,2517608232,2874225571,1861159788,326777828,3124490320,2130389656,2716951837,967770486,1724537150,2185432712,2364442137,1164943284,2105845187,998989502,3765401048,2244026483,1075463327,1455516326,1322494562,910128902,469688178,1117454909,936433444,3490320968,3675253459,1240580251,122909385,2157517691,634681816,4142456567,3825094682,3061402683,2540495037,79693498,3249098678,1084186820,1583128258,426386531,1761308591,1047286709,322548459,995290223,1845252383,2603652396,3431023940,2942221577,3202600964,3727903485,1712269319,422464435,3234572375,1170764815,3523960633,3117677531,1434042557,442511882,3600875718,1076654713,1738483198,4213154764,2393238008,3677496056,1014306527,4251020053,793779912,2902807211,842905082,4246964064,1395751752,1040244610,2656851899,3396308128,445077038,3742853595,3577915638,679411651,2892444358,2354009459,1767581616,3150600392,3791627101,3102740896,284835224,4246832056,1258075500,768725851,2589189241,3069724005,3532540348,1274779536,3789419226,2764799539,1660621633,3471099624,4011903706,913787905,3497959166,737222580,2514213453,2928710040,3937242737,1804850592,3499020752,2949064160,2386320175,2390070455,2415321851,4061277028,2290661394,2416832540,1336762016,1754252060,3520065937,3014181293,791618072,3188594551,3933548030,2332172193,3852520463,3043980520,413987798,3465142937,3030929376,4245938359,2093235073,3534596313,375366246,2157278981,2479649556,555357303,3870105701,2008414854,3344188149,4221384143,3956125452,2067696032,3594591187,2921233993,2428461,544322398,577241275,1471733935,610547355,4027169054,1432588573,1507829418,2025931657,3646575487,545086370,48609733,2200306550,1653985193,298326376,1316178497,3007786442,2064951626,458293330,2589141269,3591329599,3164325604,727753846,2179363840,146436021,1461446943,4069977195,705550613,3059967265,3887724982,4281599278,3313849956,1404054877,2845806497,146425753,1854211946],[1266315497,3048417604,3681880366,3289982499,290971e4,1235738493,2632868024,2414719590,3970600049,1771706367,1449415276,3266420449,422970021,1963543593,2690192192,3826793022,1062508698,1531092325,1804592342,2583117782,2714934279,4024971509,1294809318,4028980673,1289560198,2221992742,1669523910,35572830,157838143,1052438473,1016535060,1802137761,1753167236,1386275462,3080475397,2857371447,1040679964,2145300060,2390574316,1461121720,2956646967,4031777805,4028374788,33600511,2920084762,1018524850,629373528,3691585981,3515945977,2091462646,2486323059,586499841,988145025,935516892,3367335476,2599673255,2839830854,265290510,3972581182,2759138881,3795373465,1005194799,847297441,406762289,1314163512,1332590856,1866599683,4127851711,750260880,613907577,1450815602,3165620655,3734664991,3650291728,3012275730,3704569646,1427272223,778793252,1343938022,2676280711,2052605720,1946737175,3164576444,3914038668,3967478842,3682934266,1661551462,3294938066,4011595847,840292616,3712170807,616741398,312560963,711312465,1351876610,322626781,1910503582,271666773,2175563734,1594956187,70604529,3617834859,1007753275,1495573769,4069517037,2549218298,2663038764,504708206,2263041392,3941167025,2249088522,1514023603,1998579484,1312622330,694541497,2582060303,2151582166,1382467621,776784248,2618340202,3323268794,2497899128,2784771155,503983604,4076293799,907881277,423175695,432175456,1378068232,4145222326,3954048622,3938656102,3820766613,2793130115,2977904593,26017576,3274890735,3194772133,1700274565,1756076034,4006520079,3677328699,720338349,1533947780,354530856,688349552,3973924725,1637815568,332179504,3949051286,53804574,2852348879,3044236432,1282449977,3583942155,3416972820,4006381244,1617046695,2628476075,3002303598,1686838959,431878346,2686675385,1700445008,1080580658,1009431731,832498133,3223435511,2605976345,2271191193,2516031870,1648197032,4164389018,2548247927,300782431,375919233,238389289,3353747414,2531188641,2019080857,1475708069,455242339,2609103871,448939670,3451063019,1395535956,2413381860,1841049896,1491858159,885456874,4264095073,4001119347,1565136089,3898914787,1108368660,540939232,1173283510,2745871338,3681308437,4207628240,3343053890,4016749493,1699691293,1103962373,3625875870,2256883143,3830138730,1031889488,3479347698,1535977030,4236805024,3251091107,2132092099,1774941330,1199868427,1452454533,157007616,2904115357,342012276,595725824,1480756522,206960106,497939518,591360097,863170706,2375253569,3596610801,1814182875,2094937945,3421402208,1082520231,3463918190,2785509508,435703966,3908032597,1641649973,2842273706,3305899714,1510255612,2148256476,2655287854,3276092548,4258621189,236887753,3681803219,274041037,1734335097,3815195456,3317970021,1899903192,1026095262,4050517792,356393447,2410691914,3873677099,3682840055],[3913112168,2491498743,4132185628,2489919796,1091903735,1979897079,3170134830,3567386728,3557303409,857797738,1136121015,1342202287,507115054,2535736646,337727348,3213592640,1301675037,2528481711,1895095763,1721773893,3216771564,62756741,2142006736,835421444,2531993523,1442658625,3659876326,2882144922,676362277,1392781812,170690266,3921047035,1759253602,3611846912,1745797284,664899054,1329594018,3901205900,3045908486,2062866102,2865634940,3543621612,3464012697,1080764994,553557557,3656615353,3996768171,991055499,499776247,1265440854,648242737,3940784050,980351604,3713745714,1749149687,3396870395,4211799374,3640570775,1161844396,3125318951,1431517754,545492359,4268468663,3499529547,1437099964,2702547544,3433638243,2581715763,2787789398,1060185593,1593081372,2418618748,4260947970,69676912,2159744348,86519011,2512459080,3838209314,1220612927,3339683548,133810670,1090789135,1078426020,1569222167,845107691,3583754449,4072456591,1091646820,628848692,1613405280,3757631651,526609435,236106946,48312990,2942717905,3402727701,1797494240,859738849,992217954,4005476642,2243076622,3870952857,3732016268,765654824,3490871365,2511836413,1685915746,3888969200,1414112111,2273134842,3281911079,4080962846,172450625,2569994100,980381355,4109958455,2819808352,2716589560,2568741196,3681446669,3329971472,1835478071,660984891,3704678404,4045999559,3422617507,3040415634,1762651403,1719377915,3470491036,2693910283,3642056355,3138596744,1364962596,2073328063,1983633131,926494387,3423689081,2150032023,4096667949,1749200295,3328846651,309677260,2016342300,1779581495,3079819751,111262694,1274766160,443224088,298511866,1025883608,3806446537,1145181785,168956806,3641502830,3584813610,1689216846,3666258015,3200248200,1692713982,2646376535,4042768518,1618508792,1610833997,3523052358,4130873264,2001055236,3610705100,2202168115,4028541809,2961195399,1006657119,2006996926,3186142756,1430667929,3210227297,1314452623,4074634658,4101304120,2273951170,1399257539,3367210612,3027628629,1190975929,2062231137,2333990788,2221543033,2438960610,1181637006,548689776,2362791313,3372408396,3104550113,3145860560,296247880,1970579870,3078560182,3769228297,1714227617,3291629107,3898220290,166772364,1251581989,493813264,448347421,195405023,2709975567,677966185,3703036547,1463355134,2715995803,1338867538,1343315457,2802222074,2684532164,233230375,2599980071,2000651841,3277868038,1638401717,4028070440,3237316320,6314154,819756386,300326615,590932579,1405279636,3267499572,3150704214,2428286686,3959192993,3461946742,1862657033,1266418056,963775037,2089974820,2263052895,1917689273,448879540,3550394620,3981727096,150775221,3627908307,1303187396,508620638,2975983352,2726630617,1817252668,1876281319,1457606340,908771278,3720792119,3617206836,2455994898,1729034894,1080033504],[976866871,3556439503,2881648439,1522871579,1555064734,1336096578,3548522304,2579274686,3574697629,3205460757,3593280638,3338716283,3079412587,564236357,2993598910,1781952180,1464380207,3163844217,3332601554,1699332808,1393555694,1183702653,3581086237,1288719814,691649499,2847557200,2895455976,3193889540,2717570544,1781354906,1676643554,2592534050,3230253752,1126444790,2770207658,2633158820,2210423226,2615765581,2414155088,3127139286,673620729,2805611233,1269405062,4015350505,3341807571,4149409754,1057255273,2012875353,2162469141,2276492801,2601117357,993977747,3918593370,2654263191,753973209,36408145,2530585658,25011837,3520020182,2088578344,530523599,2918365339,1524020338,1518925132,3760827505,3759777254,1202760957,3985898139,3906192525,674977740,4174734889,2031300136,2019492241,3983892565,4153806404,3822280332,352677332,2297720250,60907813,90501309,3286998549,1016092578,2535922412,2839152426,457141659,509813237,4120667899,652014361,1966332200,2975202805,55981186,2327461051,676427537,3255491064,2882294119,3433927263,1307055953,942726286,933058658,2468411793,3933900994,4215176142,1361170020,2001714738,2830558078,3274259782,1222529897,1679025792,2729314320,3714953764,1770335741,151462246,3013232138,1682292957,1483529935,471910574,1539241949,458788160,3436315007,1807016891,3718408830,978976581,1043663428,3165965781,1927990952,4200891579,2372276910,3208408903,3533431907,1412390302,2931980059,4132332400,1947078029,3881505623,4168226417,2941484381,1077988104,1320477388,886195818,18198404,3786409e3,2509781533,112762804,3463356488,1866414978,891333506,18488651,661792760,1628790961,3885187036,3141171499,876946877,2693282273,1372485963,791857591,2686433993,3759982718,3167212022,3472953795,2716379847,445679433,3561995674,3504004811,3574258232,54117162,3331405415,2381918588,3769707343,4154350007,1140177722,4074052095,668550556,3214352940,367459370,261225585,2610173221,4209349473,3468074219,3265815641,314222801,3066103646,3808782860,282218597,3406013506,3773591054,379116347,1285071038,846784868,2669647154,3771962079,3550491691,2305946142,453669953,1268987020,3317592352,3279303384,3744833421,2610507566,3859509063,266596637,3847019092,517658769,3462560207,3443424879,370717030,4247526661,2224018117,4143653529,4112773975,2788324899,2477274417,1456262402,2901442914,1517677493,1846949527,2295493580,3734397586,2176403920,1280348187,1908823572,3871786941,846861322,1172426758,3287448474,3383383037,1655181056,3139813346,901632758,1897031941,2986607138,3066810236,3447102507,1393639104,373351379,950779232,625454576,3124240540,4148612726,2007998917,544563296,2244738638,2330496472,2058025392,1291430526,424198748,50039436,29584100,3605783033,2429876329,2791104160,1057563949,3255363231,3075367218,3463963227,1469046755,985887462]];var c={pbox:[],sbox:[]};function l(g,p){let I=p>>24&255,y=p>>16&255,w=p>>8&255,C=p&255,b=g.sbox[0][I]+g.sbox[1][y];return b=b^g.sbox[2][w],b=b+g.sbox[3][C],b}function d(g,p,I){let y=p,w=I,C;for(let b=0;b1;--b)y=y^g.pbox[b],w=l(g,y)^w,C=y,y=w,w=C;return C=y,y=w,w=C,w=w^g.pbox[1],y=y^g.pbox[0],{left:y,right:w}}function f(g,p,I){for(let x=0;x<4;x++){g.sbox[x]=[];for(let _=0;_<256;_++)g.sbox[x][_]=a[x][_]}let y=0;for(let x=0;x=I&&(y=0);let w=0,C=0,b=0;for(let x=0;x{(function(r,e,t){typeof np=="object"?VQ.exports=np=e(et(),Uu(),J3(),$3(),Ko(),W3(),Go(),fC(),Qg(),rQ(),AC(),sQ(),aQ(),lQ(),Ng(),fQ(),Ps(),fr(),pQ(),yQ(),wQ(),CQ(),BQ(),vQ(),SQ(),QQ(),FQ(),TQ(),RQ(),qQ(),MQ(),HQ(),GQ(),JQ(),$Q()):typeof define=="function"&&define.amd?define(["./core","./x64-core","./lib-typedarrays","./enc-utf16","./enc-base64","./enc-base64url","./md5","./sha1","./sha256","./sha224","./sha512","./sha384","./sha3","./ripemd160","./hmac","./pbkdf2","./evpkdf","./cipher-core","./mode-cfb","./mode-ctr","./mode-ctr-gladman","./mode-ofb","./mode-ecb","./pad-ansix923","./pad-iso10126","./pad-iso97971","./pad-zeropadding","./pad-nopadding","./format-hex","./aes","./tripledes","./rc4","./rabbit","./rabbit-legacy","./blowfish"],e):r.CryptoJS=e(r.CryptoJS)})(np,function(r){return r})});function dc(r){return Yi.default.MD5(r).toString(Yi.default.enc.Hex)}function YQ(r,e){let t=e.match(/:\/\/[^/]+((\/[^/\s?#]+)*)/),i=t?t[1]:e;return`${r}:${i}`}function WQ(r,e){let t=`${r}${e}${t_}${IG}`,i=Yi.default.SHA1(t).toString(Yi.default.enc.Hex),n=Yi.default.MD5(i).toString(Yi.default.enc.Hex);return`div101.${r}${n}`}function r_(r){let e=r.length,t=262144;for(;e/t>512&&t<2097152;)t=t<<1;let i=[];for(let s=0;s{"use strict";Yi=Dr(lc(),1),XQ="https://api-pan.xunlei.com/drive/v1",Ts=`${XQ}/files`,EAe=`${XQ}/tasks`,ZQ="https://xluser-ssl.xunlei.com",sp=`${ZQ}/v1`,hC="drive#folder",e_="drive#file",gC="UPLOAD_TYPE_RESUMABLE",yG="access_end_point_token",t_="40",IG="34a062aaa22f906fca4fefe9fb3a3021";Ru=class{options;tokenResp=null;coreLoginResp=null;captchaToken="";creditKey="";constructor(e){this.options=e,this.captchaToken=e.captchaToken||"",this.creditKey=e.creditKey||""}getCaptchaSign(){if(!this.options.algorithms||this.options.algorithms.length===0)return{timestamp:this.options.timestamp||"",sign:this.options.captchaSign||""};let e=Date.now().toString(),t=`${this.options.clientId}${this.options.clientVersion}${this.options.packageName}${this.options.deviceId}${e}`;for(let i of this.options.algorithms)t=dc(t+i);return{timestamp:e,sign:`1.${t}`}}async refreshCaptchaToken(e,t){let i={action:e,captcha_token:this.captchaToken,client_id:this.options.clientId,device_id:this.options.deviceId,meta:t,redirect_uri:"xlaccsdk01://xunlei.com/callback?state=harbor"},n=await this.rawRequest(`${sp}/shield/captcha/init`,{method:"POST",body:i});if(n.error_code||n.error&&n.error!=="success")throw new Error(`Captcha error: ${n.error_code} ${n.error} ${n.error_description||""}`);if(n.url)throw new Error(`need verify: Click Here`);if(!n.captcha_token)throw new Error("empty captchaToken");this.captchaToken=n.captcha_token,this.options.onPersistCaptchaToken&&await this.options.onPersistCaptchaToken(n.captcha_token)}async refreshCaptchaTokenAtLogin(e,t){let{timestamp:i,sign:n}=this.getCaptchaSign(),s={client_version:this.options.clientVersion,package_name:this.options.packageName,user_id:t,timestamp:i,captcha_sign:n};await this.refreshCaptchaToken(e,s)}async refreshCaptchaTokenInLogin(e,t){let i={};/\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/.test(t)?i.email=t:t.length>=11&&t.length<=18?i.phone_number=t:i.username=t,await this.refreshCaptchaToken(e,i)}formatReviewData(e){let t=WQ(this.options.deviceId,this.options.packageName),i={creditkey:e.creditkey,reviewurl:`${e.reviewurl}&deviceid=${t}`,deviceid:t,devicesign:t},s=` +${d}${u}`,h=await Bu(f,e.AccessKeySecret),g=await fetch(s,{method:"PUT",headers:{"Content-Type":l,Date:c,Authorization:`OSS ${e.AccessKeyId}:${h}`,"x-oss-security-token":e.SecurityToken,"x-oss-callback":o,"x-oss-callback-var":a,"Content-Length":String(i.length)},body:i});if(!g.ok){let p=(await g.text()).slice(0,300);throw new Error(`115 OSS \u4E0A\u4F20\u5931\u8D25\uFF08HTTP ${g.status}\uFF09\uFF1A${p}`)}}}});function Vt(r){if(!r)return"/";let t=r.replace(/\\/g,"/").replace(/\/+/g,"/").replace(/^\/|\/$/g,"");return t?"/"+t:"/"}function Vn(r){let e=Vt(r);if(e==="/")return"/";let t=e.split("/").filter(Boolean);return t.pop(),t.length?"/"+t.join("/"):"/"}function _r(r){let e=Vt(r);if(e==="/")return"";let t=e.split("/").filter(Boolean);return t[t.length-1]||""}function Tl(...r){return Vt(r.join("/"))}function uc(r,e,t){if(!r||!r.trim())return`${e.UserName} ${t} ${e.ObjPath}`;let i=r;return i=i.replace(/\{\{\.UserName\}\}/g,e.UserName||""),i=i.replace(/\{\{\.ObjName\}\}/g,e.ObjName||""),i=i.replace(/\{\{\.ObjPath\}\}/g,e.ObjPath||""),i=i.replace(/\{\{\.ParentName\}\}/g,e.ParentName||""),i=i.replace(/\{\{\.ParentPath\}\}/g,e.ParentPath||""),i=i.replace(/\{\{\.TargetName\}\}/g,e.TargetName||""),i=i.replace(/\{\{\.TargetPath\}\}/g,e.TargetPath||""),i}function mQ(r,e){let t=Vt(r),i=Vt(e),n=1;for(;n0&&t[n]!=="/";)n--;let a=Vt(t.slice(0,n)),c=t.slice(n+1,s),l=i.slice(n+1,o),d=t.slice(n+1),u=i.slice(n+1);return{ancestor:a,aChildName:c,bChildName:l,aRest:d,bRest:u}}var _g,yQ=j(()=>{"use strict";_g=class{addition;token;owner;repo;constructor(e){this.addition=e,this.token=(e.token||"").trim(),this.owner=(e.owner||"").trim(),this.repo=(e.repo||"").trim()}get headers(){let e={Accept:"application/vnd.github.object+json","X-GitHub-Api-Version":"2022-11-28","User-Agent":"OpenList-Github-Driver"};return this.token&&(e.Authorization=`Bearer ${this.token}`),e}async request(e,t={}){let i={...this.headers,...t.headers||{}},n;t.body!==void 0&&(typeof t.body=="string"?n=t.body:(n=JSON.stringify(t.body),i["Content-Type"]||(i["Content-Type"]="application/json")));let s=await fetch(e,{method:t.method||"GET",headers:i,body:n});if(!s.ok){let o=`${s.status} ${s.statusText}`;try{let a=await s.json();a?.message&&(o=`${s.status} ${s.statusText}: ${a.message}`)}catch{}throw new Error(o)}return s.status===204?{}:await s.json()}getContentApiUrl(e){let t=Vt(e);return`https://api.github.com/repos/${this.owner}/${this.repo}/contents${t==="/"?"":t}`}async getContents(e,t){let i=new URL(this.getContentApiUrl(e));return t&&i.searchParams.set("ref",t),this.request(i.toString())}async getRepo(){return this.request(`https://api.github.com/repos/${this.owner}/${this.repo}`)}async getBranchHead(e){return(await this.request(`https://api.github.com/repos/${this.owner}/${this.repo}/branches/${encodeURIComponent(e)}`)).commit.sha}async getAuthenticatedUser(){return this.request("https://api.github.com/user")}async getTree(e){return this.request(`https://api.github.com/repos/${this.owner}/${this.repo}/git/trees/${e}`)}async getTreeDirectly(e,t){let i=await this.getContents(e,t);if(!i.entries&&i.type!=="dir")throw new Error(`${e} is not a folder`);let n=await this.getTree(i.sha);if(n.truncated)throw new Error(`tree ${e} is truncated`);return{tree:n,dirSha:i.sha}}async newTree(e,t){let i={tree:t};return e&&(i.base_tree=e),(await this.request(`https://api.github.com/repos/${this.owner}/${this.repo}/git/trees`,{method:"POST",body:i,headers:{Accept:"application/vnd.github+json"}})).sha}async putBlob(e){let t=Buffer.from(e).toString("base64");return(await this.request(`https://api.github.com/repos/${this.owner}/${this.repo}/git/blobs`,{method:"POST",body:{encoding:"base64",content:t},headers:{Accept:"application/vnd.github+json"}})).sha}async createCommit(e,t,i,n,s){let o={message:e,tree:t,parents:[i]};return n?.name&&(o.committer={name:n.name,email:n.email,date:new Date().toISOString()}),s?.name&&(o.author={name:s.name,email:s.email,date:new Date().toISOString()}),(await this.request(`https://api.github.com/repos/${this.owner}/${this.repo}/git/commits`,{method:"POST",body:o,headers:{Accept:"application/vnd.github+json"}})).sha}async updateRef(e,t){await this.request(`https://api.github.com/repos/${this.owner}/${this.repo}/git/refs/heads/${encodeURIComponent(e)}`,{method:"PATCH",body:{sha:t,force:!1},headers:{Accept:"application/vnd.github+json"}})}async renewParentTrees(e,t,i,n,s){let o=Vt(e),a=Vt(n);for(;o!==a;){o=Vn(o);let{tree:c,dirSha:l}=await this.getTreeDirectly(o,s),d=c.tree.find(f=>f.sha===t);if(!d)throw new Error(`Object with sha ${t} not found in ${o}`);let u={path:d.path,mode:d.mode,type:d.type,sha:i};i=await this.newTree(l,[u]),t=l}return i}}});var Fg,IQ=j(()=>{"use strict";Be();He();yQ();Fg=class{addition;client;isOnBranch=!1;commitLock=Promise.resolve();constructor(e){this.addition=e,this.client=new _g(e)}async acquireLock(e){let t=this.commitLock,i;this.commitLock=new Promise(n=>{i=n}),await t;try{return await e()}finally{i()}}formatDownloadUrl(e){if(!e)return"";let t=(this.addition.gh_proxy||"").trim();return t?e.replace("https://raw.githubusercontent.com",t):e}async commitAndPush(e,t){let i=this.addition.ref,n=await this.client.getBranchHead(i),s=this.addition.committer_name&&this.addition.committer_email?{name:this.addition.committer_name,email:this.addition.committer_email}:void 0,o=this.addition.author_name&&this.addition.author_email?{name:this.addition.author_name,email:this.addition.author_email}:void 0,a=await this.client.createCommit(e,t,n,s,o);await this.client.updateRef(i,a)}async init(){if(this.addition.root_folder_path=Vt(this.addition.root_folder_path||"/"),this.addition.committer_name&&!this.addition.committer_email||!this.addition.committer_name&&this.addition.committer_email)throw new Error("committer_name and committer_email must both be set or empty");if(this.addition.author_name&&!this.addition.author_email||!this.addition.author_name&&this.addition.author_email)throw new Error("author_name and author_email must both be set or empty");if(!this.addition.ref||!this.addition.ref.trim()){let e=await this.client.getRepo();this.addition.ref=e.default_branch,this.isOnBranch=!0}else try{await this.client.getBranchHead(this.addition.ref),this.isOnBranch=!0}catch{this.isOnBranch=!1}}async list(e,t){let i=Vt(t),n=await this.client.getContents(i,this.addition.ref);if(!n.entries&&n.type!=="dir")throw new Error(`${t} is not a folder`);let s=[];if(n.entries&&n.entries.length>=1e3){let o=await this.client.getTree(n.sha);if(o.truncated)throw new Error(`Tree ${t} is truncated (>100,000 items)`);for(let a of o.tree){if(a.path===".gitkeep")continue;let c=a.type==="tree";s.push({name:a.path,size:a.size||0,is_dir:c,modified:new Date(0).toISOString(),sign:"",type:X(a.path,c),raw_url:""})}}else if(n.entries)for(let o of n.entries){if(o.name===".gitkeep")continue;let a=o.type==="dir";s.push({name:o.name,size:o.size||0,is_dir:a,modified:new Date(0).toISOString(),sign:"",type:X(o.name,a),raw_url:this.formatDownloadUrl(o.download_url)})}return de(s,this.addition.order_by,this.addition.order_direction)}async get(e,t){let i=Vt(t),n=await this.client.getContents(i,this.addition.ref);if(n.type==="submodule")throw new Error("cannot download a submodule");let s=n.type==="dir"||!!n.entries,o=n.name||_r(i)||"root";return{name:o,size:n.size||0,is_dir:s,modified:new Date(0).toISOString(),sign:"",type:X(o,s),raw_url:this.formatDownloadUrl(n.download_url)}}async mkdir(e,t){if(!this.isOnBranch)throw new Error("cannot write to non-branch reference");let i=Vt(t),n=Vn(i),s=_r(i);await this.acquireLock(async()=>{let o=await this.client.getContents(n,this.addition.ref);if(!o.entries&&o.type!=="dir")throw new Error(`${n} is not a folder`);let a=await this.client.newTree("",[{path:".gitkeep",mode:"100644",type:"blob",content:""}]),c=[{path:s,mode:"040000",type:"tree",sha:a}];o.entries?.length===1&&o.entries[0].name===".gitkeep"&&c.push({path:".gitkeep",mode:"100644",type:"blob",sha:null});let l=await this.client.newTree(o.sha,c),d=await this.client.renewParentTrees(n,o.sha,l,"/",this.addition.ref),u=uc(this.addition.mkdir_commit_message,{UserName:"OpenList",ObjName:s,ObjPath:i,ParentName:_r(n),ParentPath:n},"mkdir");await this.commitAndPush(u,d)})}async put(e,t,i){if(!this.isOnBranch)throw new Error("cannot write to non-branch reference");let n=Vt(t),s=Vn(n),o=_r(n);await this.acquireLock(async()=>{let a=await this.client.putBlob(i),c=await this.client.getContents(s,this.addition.ref);if(!c.entries&&c.type!=="dir")throw new Error(`${s} is not a folder`);let l=[{path:o,mode:"100644",type:"blob",sha:a}];c.entries?.length===1&&c.entries[0].name===".gitkeep"&&l.push({path:".gitkeep",mode:"100644",type:"blob",sha:null});let d=await this.client.newTree(c.sha,l),u=await this.client.renewParentTrees(s,c.sha,d,"/",this.addition.ref),f=uc(this.addition.put_commit_message,{UserName:"OpenList",ObjName:o,ObjPath:n,ParentName:_r(s),ParentPath:s},"upload");await this.commitAndPush(f,u)})}async rename(e,t,i){if(!this.isOnBranch)throw new Error("cannot write to non-branch reference");let n=Vt(t),s=Vn(n),o=_r(n);await this.acquireLock(async()=>{let{tree:a,dirSha:c}=await this.client.getTreeDirectly(s,this.addition.ref),l=a.tree.find(p=>p.path===o);if(!l)throw new Error(`Object not found: ${n}`);if(l.type==="commit")throw new Error("cannot rename a submodule");let d={path:o,mode:l.mode,type:l.type,sha:null},u={path:i,mode:l.mode,type:l.type,sha:l.sha},f=await this.client.newTree(c,[d,u]),h=await this.client.renewParentTrees(s,c,f,"/",this.addition.ref),g=uc(this.addition.rename_commit_message,{UserName:"OpenList",ObjName:o,ObjPath:n,ParentName:_r(s),ParentPath:s,TargetName:i,TargetPath:Tl(s,i)},"rename");await this.commitAndPush(g,h)})}async remove(e,t,i){if(!this.isOnBranch)throw new Error("cannot write to non-branch reference");let n=Vt(t),s=Vn(n),o=_r(n);await this.acquireLock(async()=>{let{tree:a,dirSha:c}=await this.client.getTreeDirectly(s,this.addition.ref),l=a.tree.find(g=>g.path===o);if(!l)throw new Error(`Object not found: ${n}`);if(l.type==="commit")throw new Error("cannot remove a submodule");let d=[{path:o,mode:l.mode,type:l.type,sha:null}];a.tree.length===1&&d.push({path:".gitkeep",mode:"100644",type:"blob",content:""});let u=await this.client.newTree(c,d),f=await this.client.renewParentTrees(s,c,u,"/",this.addition.ref),h=uc(this.addition.delete_commit_message,{UserName:"OpenList",ObjName:o,ObjPath:n,ParentName:_r(s),ParentPath:s},"remove");await this.commitAndPush(h,f)})}async move(e,t,i,n,s){if(!this.isOnBranch)throw new Error("cannot write to non-branch reference");let o=Vt(n),a=Vt(t);if(a.startsWith(o))throw new Error("cannot move parent dir to child");await this.acquireLock(async()=>{let c="",l=Vn(o),d=_r(o);if(a.startsWith(l)){let{dstOldSha:f,dstNewSha:h,ancestorOldSha:g,srcParentTree:p}=await this.copyWithoutRenewTree(o,a),y=a.slice(l.length).replace(/^\//,"").split("/")[0],w=Tl(l,y),C=await this.client.renewParentTrees(a,f,h,w,this.addition.ref),b=p.tree.find(R=>R.path===d),x=p.tree.find(R=>R.path===y);if(!b||!x)throw new Error("Object not found during move");let _=await this.client.newTree(g,[{path:b.path,mode:b.mode,type:b.type,sha:null},{path:x.path,mode:x.mode,type:x.type,sha:C}]);c=await this.client.renewParentTrees(l,g,_,"/",this.addition.ref)}else if(o.startsWith(a)){let{tree:f,dirSha:h}=await this.client.getTreeDirectly(l,this.addition.ref),g=f.tree.find(T=>T.path===d);if(!g)throw new Error("Object not found");if(g.type==="commit")throw new Error("cannot move a submodule");let p=[{path:g.path,mode:g.mode,type:g.type,sha:null}];f.tree.length===1&&p.push({path:".gitkeep",mode:"100644",type:"blob",content:""});let I=await this.client.newTree(h,p),w=o.slice(a.length).replace(/^\//,"").split("/")[0];if(!w)throw new Error("cannot move in place");let C=Tl(a,w),b=await this.client.renewParentTrees(l,h,I,C,this.addition.ref),{tree:x,dirSha:_}=await this.client.getTreeDirectly(a,this.addition.ref),R=x.tree.find(T=>T.path===w);if(!R)throw new Error("Object not found");let U=await this.client.newTree(_,[{path:R.path,mode:R.mode,type:R.type,sha:b},{path:g.path,mode:g.mode,type:g.type,sha:g.sha}]);c=await this.client.renewParentTrees(a,_,U,"/",this.addition.ref)}else{let{dstOldSha:f,dstNewSha:h,srcParentOldSha:g,srcParentTree:p}=await this.copyWithoutRenewTree(o,a),I=p.tree.find(v=>v.path===d);if(!I)throw new Error("Object not found");let y=[{path:I.path,mode:I.mode,type:I.type,sha:null}];p.tree.length===1&&y.push({path:".gitkeep",mode:"100644",type:"blob",content:""});let w=await this.client.newTree(g,y),{ancestor:C,aChildName:b,bChildName:x}=mQ(o,a),_=await this.client.renewParentTrees(a,f,h,Tl(C,x),this.addition.ref),R=await this.client.renewParentTrees(l,g,w,Tl(C,b),this.addition.ref),{tree:U,dirSha:T}=await this.client.getTreeDirectly(C,this.addition.ref),D=U.tree.find(v=>v.path===b),B=U.tree.find(v=>v.path===x);if(!D||!B)throw new Error("Ancestor child tree not found");let Q=await this.client.newTree(T,[{path:D.path,mode:D.mode,type:D.type,sha:R},{path:B.path,mode:B.mode,type:B.type,sha:_}]);c=await this.client.renewParentTrees(C,T,Q,"/",this.addition.ref)}let u=uc(this.addition.move_commit_message,{UserName:"OpenList",ObjName:d,ObjPath:o,ParentName:_r(l),ParentPath:l,TargetName:_r(a),TargetPath:a},"move");await this.commitAndPush(u,c)})}async copy(e,t,i,n,s){if(!this.isOnBranch)throw new Error("cannot write to non-branch reference");let o=Vt(n),a=Vt(t);if(a.startsWith(o))throw new Error("cannot copy parent dir to child");await this.acquireLock(async()=>{let{dstOldSha:c,dstNewSha:l}=await this.copyWithoutRenewTree(o,a),d=await this.client.renewParentTrees(a,c,l,"/",this.addition.ref),u=uc(this.addition.copy_commit_message,{UserName:"OpenList",ObjName:_r(o),ObjPath:o,ParentName:_r(Vn(o)),ParentPath:Vn(o),TargetName:_r(a),TargetPath:a},"copy");await this.commitAndPush(u,d)})}async copyWithoutRenewTree(e,t){let i=await this.client.getContents(t,this.addition.ref);if(!i.entries&&i.type!=="dir")throw new Error(`${t} is not a folder`);let n=Vn(e),s=_r(e),{tree:o,dirSha:a}=await this.client.getTreeDirectly(n,this.addition.ref),c=o.tree.find(u=>u.path===s);if(!c)throw new Error(`Object not found: ${e}`);if(c.type==="commit")throw new Error("cannot copy a submodule");let l=[{path:c.path,mode:c.mode,type:c.type,sha:c.sha}];i.entries?.length===1&&i.entries[0].name===".gitkeep"&&l.push({path:".gitkeep",mode:"100644",type:"blob",sha:null});let d=await this.client.newTree(i.sha,l);return{dstOldSha:i.sha,dstNewSha:d,srcParentOldSha:a,srcParentTree:o,ancestorOldSha:a}}}});var et=oe((Pg,wQ)=>{(function(r,e){typeof Pg=="object"?wQ.exports=Pg=e():typeof define=="function"&&define.amd?define([],e):r.CryptoJS=e()})(Pg,function(){var r=r||(function(e,t){var i;if(typeof window<"u"&&window.crypto&&(i=window.crypto),typeof self<"u"&&self.crypto&&(i=self.crypto),typeof globalThis<"u"&&globalThis.crypto&&(i=globalThis.crypto),!i&&typeof window<"u"&&window.msCrypto&&(i=window.msCrypto),!i&&typeof global<"u"&&global.crypto&&(i=global.crypto),!i&&typeof wt=="function")try{i=wt("crypto")}catch{}var n=function(){if(i){if(typeof i.getRandomValues=="function")try{return i.getRandomValues(new Uint32Array(1))[0]}catch{}if(typeof i.randomBytes=="function")try{return i.randomBytes(4).readInt32LE()}catch{}}throw new Error("Native crypto module could not be used to get secure random number.")},s=Object.create||(function(){function y(){}return function(w){var C;return y.prototype=w,C=new y,y.prototype=null,C}})(),o={},a=o.lib={},c=a.Base=(function(){return{extend:function(y){var w=s(this);return y&&w.mixIn(y),(!w.hasOwnProperty("init")||this.init===w.init)&&(w.init=function(){w.$super.init.apply(this,arguments)}),w.init.prototype=w,w.$super=this,w},create:function(){var y=this.extend();return y.init.apply(y,arguments),y},init:function(){},mixIn:function(y){for(var w in y)y.hasOwnProperty(w)&&(this[w]=y[w]);y.hasOwnProperty("toString")&&(this.toString=y.toString)},clone:function(){return this.init.prototype.extend(this)}}})(),l=a.WordArray=c.extend({init:function(y,w){y=this.words=y||[],w!=t?this.sigBytes=w:this.sigBytes=y.length*4},toString:function(y){return(y||u).stringify(this)},concat:function(y){var w=this.words,C=y.words,b=this.sigBytes,x=y.sigBytes;if(this.clamp(),b%4)for(var _=0;_>>2]>>>24-_%4*8&255;w[b+_>>>2]|=R<<24-(b+_)%4*8}else for(var U=0;U>>2]=C[U>>>2];return this.sigBytes+=x,this},clamp:function(){var y=this.words,w=this.sigBytes;y[w>>>2]&=4294967295<<32-w%4*8,y.length=e.ceil(w/4)},clone:function(){var y=c.clone.call(this);return y.words=this.words.slice(0),y},random:function(y){for(var w=[],C=0;C>>2]>>>24-x%4*8&255;b.push((_>>>4).toString(16)),b.push((_&15).toString(16))}return b.join("")},parse:function(y){for(var w=y.length,C=[],b=0;b>>3]|=parseInt(y.substr(b,2),16)<<24-b%8*4;return new l.init(C,w/2)}},f=d.Latin1={stringify:function(y){for(var w=y.words,C=y.sigBytes,b=[],x=0;x>>2]>>>24-x%4*8&255;b.push(String.fromCharCode(_))}return b.join("")},parse:function(y){for(var w=y.length,C=[],b=0;b>>2]|=(y.charCodeAt(b)&255)<<24-b%4*8;return new l.init(C,w)}},h=d.Utf8={stringify:function(y){try{return decodeURIComponent(escape(f.stringify(y)))}catch{throw new Error("Malformed UTF-8 data")}},parse:function(y){return f.parse(unescape(encodeURIComponent(y)))}},g=a.BufferedBlockAlgorithm=c.extend({reset:function(){this._data=new l.init,this._nDataBytes=0},_append:function(y){typeof y=="string"&&(y=h.parse(y)),this._data.concat(y),this._nDataBytes+=y.sigBytes},_process:function(y){var w,C=this._data,b=C.words,x=C.sigBytes,_=this.blockSize,R=_*4,U=x/R;y?U=e.ceil(U):U=e.max((U|0)-this._minBufferSize,0);var T=U*_,D=e.min(T*4,x);if(T){for(var B=0;B{(function(r,e){typeof Tg=="object"?xQ.exports=Tg=e(et()):typeof define=="function"&&define.amd?define(["./core"],e):e(r.CryptoJS)})(Tg,function(r){return(function(e){var t=r,i=t.lib,n=i.Base,s=i.WordArray,o=t.x64={},a=o.Word=n.extend({init:function(l,d){this.high=l,this.low=d}}),c=o.WordArray=n.extend({init:function(l,d){l=this.words=l||[],d!=e?this.sigBytes=d:this.sigBytes=l.length*8},toX32:function(){for(var l=this.words,d=l.length,u=[],f=0;f{(function(r,e){typeof Ug=="object"?CQ.exports=Ug=e(et()):typeof define=="function"&&define.amd?define(["./core"],e):e(r.CryptoJS)})(Ug,function(r){return(function(){if(typeof ArrayBuffer=="function"){var e=r,t=e.lib,i=t.WordArray,n=i.init,s=i.init=function(o){if(o instanceof ArrayBuffer&&(o=new Uint8Array(o)),(o instanceof Int8Array||typeof Uint8ClampedArray<"u"&&o instanceof Uint8ClampedArray||o instanceof Int16Array||o instanceof Uint16Array||o instanceof Int32Array||o instanceof Uint32Array||o instanceof Float32Array||o instanceof Float64Array)&&(o=new Uint8Array(o.buffer,o.byteOffset,o.byteLength)),o instanceof Uint8Array){for(var a=o.byteLength,c=[],l=0;l>>2]|=o[l]<<24-l%4*8;n.call(this,c,a)}else n.apply(this,arguments)};s.prototype=i}})(),r.lib.WordArray})});var bQ=oe((Rg,BQ)=>{(function(r,e){typeof Rg=="object"?BQ.exports=Rg=e(et()):typeof define=="function"&&define.amd?define(["./core"],e):e(r.CryptoJS)})(Rg,function(r){return(function(){var e=r,t=e.lib,i=t.WordArray,n=e.enc,s=n.Utf16=n.Utf16BE={stringify:function(a){for(var c=a.words,l=a.sigBytes,d=[],u=0;u>>2]>>>16-u%4*8&65535;d.push(String.fromCharCode(f))}return d.join("")},parse:function(a){for(var c=a.length,l=[],d=0;d>>1]|=a.charCodeAt(d)<<16-d%2*16;return i.create(l,c*2)}};n.Utf16LE={stringify:function(a){for(var c=a.words,l=a.sigBytes,d=[],u=0;u>>2]>>>16-u%4*8&65535);d.push(String.fromCharCode(f))}return d.join("")},parse:function(a){for(var c=a.length,l=[],d=0;d>>1]|=o(a.charCodeAt(d)<<16-d%2*16);return i.create(l,c*2)}};function o(a){return a<<8&4278255360|a>>>8&16711935}})(),r.enc.Utf16})});var Go=oe((Ng,vQ)=>{(function(r,e){typeof Ng=="object"?vQ.exports=Ng=e(et()):typeof define=="function"&&define.amd?define(["./core"],e):e(r.CryptoJS)})(Ng,function(r){return(function(){var e=r,t=e.lib,i=t.WordArray,n=e.enc,s=n.Base64={stringify:function(a){var c=a.words,l=a.sigBytes,d=this._map;a.clamp();for(var u=[],f=0;f>>2]>>>24-f%4*8&255,g=c[f+1>>>2]>>>24-(f+1)%4*8&255,p=c[f+2>>>2]>>>24-(f+2)%4*8&255,I=h<<16|g<<8|p,y=0;y<4&&f+y*.75>>6*(3-y)&63));var w=d.charAt(64);if(w)for(;u.length%4;)u.push(w);return u.join("")},parse:function(a){var c=a.length,l=this._map,d=this._reverseMap;if(!d){d=this._reverseMap=[];for(var u=0;u>>6-f%4*2,p=h|g;d[u>>>2]|=p<<24-u%4*8,u++}return i.create(d,u)}})(),r.enc.Base64})});var SQ=oe((qg,kQ)=>{(function(r,e){typeof qg=="object"?kQ.exports=qg=e(et()):typeof define=="function"&&define.amd?define(["./core"],e):e(r.CryptoJS)})(qg,function(r){return(function(){var e=r,t=e.lib,i=t.WordArray,n=e.enc,s=n.Base64url={stringify:function(a,c){c===void 0&&(c=!0);var l=a.words,d=a.sigBytes,u=c?this._safe_map:this._map;a.clamp();for(var f=[],h=0;h>>2]>>>24-h%4*8&255,p=l[h+1>>>2]>>>24-(h+1)%4*8&255,I=l[h+2>>>2]>>>24-(h+2)%4*8&255,y=g<<16|p<<8|I,w=0;w<4&&h+w*.75>>6*(3-w)&63));var C=u.charAt(64);if(C)for(;f.length%4;)f.push(C);return f.join("")},parse:function(a,c){c===void 0&&(c=!0);var l=a.length,d=c?this._safe_map:this._map,u=this._reverseMap;if(!u){u=this._reverseMap=[];for(var f=0;f>>6-f%4*2,p=h|g;d[u>>>2]|=p<<24-u%4*8,u++}return i.create(d,u)}})(),r.enc.Base64url})});var zo=oe((Og,DQ)=>{(function(r,e){typeof Og=="object"?DQ.exports=Og=e(et()):typeof define=="function"&&define.amd?define(["./core"],e):e(r.CryptoJS)})(Og,function(r){return(function(e){var t=r,i=t.lib,n=i.WordArray,s=i.Hasher,o=t.algo,a=[];(function(){for(var h=0;h<64;h++)a[h]=e.abs(e.sin(h+1))*4294967296|0})();var c=o.MD5=s.extend({_doReset:function(){this._hash=new n.init([1732584193,4023233417,2562383102,271733878])},_doProcessBlock:function(h,g){for(var p=0;p<16;p++){var I=g+p,y=h[I];h[I]=(y<<8|y>>>24)&16711935|(y<<24|y>>>8)&4278255360}var w=this._hash.words,C=h[g+0],b=h[g+1],x=h[g+2],_=h[g+3],R=h[g+4],U=h[g+5],T=h[g+6],D=h[g+7],B=h[g+8],Q=h[g+9],v=h[g+10],E=h[g+11],P=h[g+12],N=h[g+13],J=h[g+14],z=h[g+15],L=w[0],G=w[1],K=w[2],$=w[3];L=l(L,G,K,$,C,7,a[0]),$=l($,L,G,K,b,12,a[1]),K=l(K,$,L,G,x,17,a[2]),G=l(G,K,$,L,_,22,a[3]),L=l(L,G,K,$,R,7,a[4]),$=l($,L,G,K,U,12,a[5]),K=l(K,$,L,G,T,17,a[6]),G=l(G,K,$,L,D,22,a[7]),L=l(L,G,K,$,B,7,a[8]),$=l($,L,G,K,Q,12,a[9]),K=l(K,$,L,G,v,17,a[10]),G=l(G,K,$,L,E,22,a[11]),L=l(L,G,K,$,P,7,a[12]),$=l($,L,G,K,N,12,a[13]),K=l(K,$,L,G,J,17,a[14]),G=l(G,K,$,L,z,22,a[15]),L=d(L,G,K,$,b,5,a[16]),$=d($,L,G,K,T,9,a[17]),K=d(K,$,L,G,E,14,a[18]),G=d(G,K,$,L,C,20,a[19]),L=d(L,G,K,$,U,5,a[20]),$=d($,L,G,K,v,9,a[21]),K=d(K,$,L,G,z,14,a[22]),G=d(G,K,$,L,R,20,a[23]),L=d(L,G,K,$,Q,5,a[24]),$=d($,L,G,K,J,9,a[25]),K=d(K,$,L,G,_,14,a[26]),G=d(G,K,$,L,B,20,a[27]),L=d(L,G,K,$,N,5,a[28]),$=d($,L,G,K,x,9,a[29]),K=d(K,$,L,G,D,14,a[30]),G=d(G,K,$,L,P,20,a[31]),L=u(L,G,K,$,U,4,a[32]),$=u($,L,G,K,B,11,a[33]),K=u(K,$,L,G,E,16,a[34]),G=u(G,K,$,L,J,23,a[35]),L=u(L,G,K,$,b,4,a[36]),$=u($,L,G,K,R,11,a[37]),K=u(K,$,L,G,D,16,a[38]),G=u(G,K,$,L,v,23,a[39]),L=u(L,G,K,$,N,4,a[40]),$=u($,L,G,K,C,11,a[41]),K=u(K,$,L,G,_,16,a[42]),G=u(G,K,$,L,T,23,a[43]),L=u(L,G,K,$,Q,4,a[44]),$=u($,L,G,K,P,11,a[45]),K=u(K,$,L,G,z,16,a[46]),G=u(G,K,$,L,x,23,a[47]),L=f(L,G,K,$,C,6,a[48]),$=f($,L,G,K,D,10,a[49]),K=f(K,$,L,G,J,15,a[50]),G=f(G,K,$,L,U,21,a[51]),L=f(L,G,K,$,P,6,a[52]),$=f($,L,G,K,_,10,a[53]),K=f(K,$,L,G,v,15,a[54]),G=f(G,K,$,L,b,21,a[55]),L=f(L,G,K,$,B,6,a[56]),$=f($,L,G,K,z,10,a[57]),K=f(K,$,L,G,T,15,a[58]),G=f(G,K,$,L,N,21,a[59]),L=f(L,G,K,$,R,6,a[60]),$=f($,L,G,K,E,10,a[61]),K=f(K,$,L,G,x,15,a[62]),G=f(G,K,$,L,Q,21,a[63]),w[0]=w[0]+L|0,w[1]=w[1]+G|0,w[2]=w[2]+K|0,w[3]=w[3]+$|0},_doFinalize:function(){var h=this._data,g=h.words,p=this._nDataBytes*8,I=h.sigBytes*8;g[I>>>5]|=128<<24-I%32;var y=e.floor(p/4294967296),w=p;g[(I+64>>>9<<4)+15]=(y<<8|y>>>24)&16711935|(y<<24|y>>>8)&4278255360,g[(I+64>>>9<<4)+14]=(w<<8|w>>>24)&16711935|(w<<24|w>>>8)&4278255360,h.sigBytes=(g.length+1)*4,this._process();for(var C=this._hash,b=C.words,x=0;x<4;x++){var _=b[x];b[x]=(_<<8|_>>>24)&16711935|(_<<24|_>>>8)&4278255360}return C},clone:function(){var h=s.clone.call(this);return h._hash=this._hash.clone(),h}});function l(h,g,p,I,y,w,C){var b=h+(g&p|~g&I)+y+C;return(b<>>32-w)+g}function d(h,g,p,I,y,w,C){var b=h+(g&I|p&~I)+y+C;return(b<>>32-w)+g}function u(h,g,p,I,y,w,C){var b=h+(g^p^I)+y+C;return(b<>>32-w)+g}function f(h,g,p,I,y,w,C){var b=h+(p^(g|~I))+y+C;return(b<>>32-w)+g}t.MD5=s._createHelper(c),t.HmacMD5=s._createHmacHelper(c)})(Math),r.MD5})});var QC=oe((Mg,QQ)=>{(function(r,e){typeof Mg=="object"?QQ.exports=Mg=e(et()):typeof define=="function"&&define.amd?define(["./core"],e):e(r.CryptoJS)})(Mg,function(r){return(function(){var e=r,t=e.lib,i=t.WordArray,n=t.Hasher,s=e.algo,o=[],a=s.SHA1=n.extend({_doReset:function(){this._hash=new i.init([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(c,l){for(var d=this._hash.words,u=d[0],f=d[1],h=d[2],g=d[3],p=d[4],I=0;I<80;I++){if(I<16)o[I]=c[l+I]|0;else{var y=o[I-3]^o[I-8]^o[I-14]^o[I-16];o[I]=y<<1|y>>>31}var w=(u<<5|u>>>27)+p+o[I];I<20?w+=(f&h|~f&g)+1518500249:I<40?w+=(f^h^g)+1859775393:I<60?w+=(f&h|f&g|h&g)-1894007588:w+=(f^h^g)-899497514,p=g,g=h,h=f<<30|f>>>2,f=u,u=w}d[0]=d[0]+u|0,d[1]=d[1]+f|0,d[2]=d[2]+h|0,d[3]=d[3]+g|0,d[4]=d[4]+p|0},_doFinalize:function(){var c=this._data,l=c.words,d=this._nDataBytes*8,u=c.sigBytes*8;return l[u>>>5]|=128<<24-u%32,l[(u+64>>>9<<4)+14]=Math.floor(d/4294967296),l[(u+64>>>9<<4)+15]=d,c.sigBytes=l.length*4,this._process(),this._hash},clone:function(){var c=n.clone.call(this);return c._hash=this._hash.clone(),c}});e.SHA1=n._createHelper(a),e.HmacSHA1=n._createHmacHelper(a)})(),r.SHA1})});var Hg=oe((Lg,_Q)=>{(function(r,e){typeof Lg=="object"?_Q.exports=Lg=e(et()):typeof define=="function"&&define.amd?define(["./core"],e):e(r.CryptoJS)})(Lg,function(r){return(function(e){var t=r,i=t.lib,n=i.WordArray,s=i.Hasher,o=t.algo,a=[],c=[];(function(){function u(p){for(var I=e.sqrt(p),y=2;y<=I;y++)if(!(p%y))return!1;return!0}function f(p){return(p-(p|0))*4294967296|0}for(var h=2,g=0;g<64;)u(h)&&(g<8&&(a[g]=f(e.pow(h,1/2))),c[g]=f(e.pow(h,1/3)),g++),h++})();var l=[],d=o.SHA256=s.extend({_doReset:function(){this._hash=new n.init(a.slice(0))},_doProcessBlock:function(u,f){for(var h=this._hash.words,g=h[0],p=h[1],I=h[2],y=h[3],w=h[4],C=h[5],b=h[6],x=h[7],_=0;_<64;_++){if(_<16)l[_]=u[f+_]|0;else{var R=l[_-15],U=(R<<25|R>>>7)^(R<<14|R>>>18)^R>>>3,T=l[_-2],D=(T<<15|T>>>17)^(T<<13|T>>>19)^T>>>10;l[_]=U+l[_-7]+D+l[_-16]}var B=w&C^~w&b,Q=g&p^g&I^p&I,v=(g<<30|g>>>2)^(g<<19|g>>>13)^(g<<10|g>>>22),E=(w<<26|w>>>6)^(w<<21|w>>>11)^(w<<7|w>>>25),P=x+E+B+c[_]+l[_],N=v+Q;x=b,b=C,C=w,w=y+P|0,y=I,I=p,p=g,g=P+N|0}h[0]=h[0]+g|0,h[1]=h[1]+p|0,h[2]=h[2]+I|0,h[3]=h[3]+y|0,h[4]=h[4]+w|0,h[5]=h[5]+C|0,h[6]=h[6]+b|0,h[7]=h[7]+x|0},_doFinalize:function(){var u=this._data,f=u.words,h=this._nDataBytes*8,g=u.sigBytes*8;return f[g>>>5]|=128<<24-g%32,f[(g+64>>>9<<4)+14]=e.floor(h/4294967296),f[(g+64>>>9<<4)+15]=h,u.sigBytes=f.length*4,this._process(),this._hash},clone:function(){var u=s.clone.call(this);return u._hash=this._hash.clone(),u}});t.SHA256=s._createHelper(d),t.HmacSHA256=s._createHmacHelper(d)})(Math),r.SHA256})});var PQ=oe((Kg,FQ)=>{(function(r,e,t){typeof Kg=="object"?FQ.exports=Kg=e(et(),Hg()):typeof define=="function"&&define.amd?define(["./core","./sha256"],e):e(r.CryptoJS)})(Kg,function(r){return(function(){var e=r,t=e.lib,i=t.WordArray,n=e.algo,s=n.SHA256,o=n.SHA224=s.extend({_doReset:function(){this._hash=new i.init([3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428])},_doFinalize:function(){var a=s._doFinalize.call(this);return a.sigBytes-=4,a}});e.SHA224=s._createHelper(o),e.HmacSHA224=s._createHmacHelper(o)})(),r.SHA224})});var _C=oe((Gg,TQ)=>{(function(r,e,t){typeof Gg=="object"?TQ.exports=Gg=e(et(),Ju()):typeof define=="function"&&define.amd?define(["./core","./x64-core"],e):e(r.CryptoJS)})(Gg,function(r){return(function(){var e=r,t=e.lib,i=t.Hasher,n=e.x64,s=n.Word,o=n.WordArray,a=e.algo;function c(){return s.create.apply(s,arguments)}var l=[c(1116352408,3609767458),c(1899447441,602891725),c(3049323471,3964484399),c(3921009573,2173295548),c(961987163,4081628472),c(1508970993,3053834265),c(2453635748,2937671579),c(2870763221,3664609560),c(3624381080,2734883394),c(310598401,1164996542),c(607225278,1323610764),c(1426881987,3590304994),c(1925078388,4068182383),c(2162078206,991336113),c(2614888103,633803317),c(3248222580,3479774868),c(3835390401,2666613458),c(4022224774,944711139),c(264347078,2341262773),c(604807628,2007800933),c(770255983,1495990901),c(1249150122,1856431235),c(1555081692,3175218132),c(1996064986,2198950837),c(2554220882,3999719339),c(2821834349,766784016),c(2952996808,2566594879),c(3210313671,3203337956),c(3336571891,1034457026),c(3584528711,2466948901),c(113926993,3758326383),c(338241895,168717936),c(666307205,1188179964),c(773529912,1546045734),c(1294757372,1522805485),c(1396182291,2643833823),c(1695183700,2343527390),c(1986661051,1014477480),c(2177026350,1206759142),c(2456956037,344077627),c(2730485921,1290863460),c(2820302411,3158454273),c(3259730800,3505952657),c(3345764771,106217008),c(3516065817,3606008344),c(3600352804,1432725776),c(4094571909,1467031594),c(275423344,851169720),c(430227734,3100823752),c(506948616,1363258195),c(659060556,3750685593),c(883997877,3785050280),c(958139571,3318307427),c(1322822218,3812723403),c(1537002063,2003034995),c(1747873779,3602036899),c(1955562222,1575990012),c(2024104815,1125592928),c(2227730452,2716904306),c(2361852424,442776044),c(2428436474,593698344),c(2756734187,3733110249),c(3204031479,2999351573),c(3329325298,3815920427),c(3391569614,3928383900),c(3515267271,566280711),c(3940187606,3454069534),c(4118630271,4000239992),c(116418474,1914138554),c(174292421,2731055270),c(289380356,3203993006),c(460393269,320620315),c(685471733,587496836),c(852142971,1086792851),c(1017036298,365543100),c(1126000580,2618297676),c(1288033470,3409855158),c(1501505948,4234509866),c(1607167915,987167468),c(1816402316,1246189591)],d=[];(function(){for(var f=0;f<80;f++)d[f]=c()})();var u=a.SHA512=i.extend({_doReset:function(){this._hash=new o.init([new s.init(1779033703,4089235720),new s.init(3144134277,2227873595),new s.init(1013904242,4271175723),new s.init(2773480762,1595750129),new s.init(1359893119,2917565137),new s.init(2600822924,725511199),new s.init(528734635,4215389547),new s.init(1541459225,327033209)])},_doProcessBlock:function(f,h){for(var g=this._hash.words,p=g[0],I=g[1],y=g[2],w=g[3],C=g[4],b=g[5],x=g[6],_=g[7],R=p.high,U=p.low,T=I.high,D=I.low,B=y.high,Q=y.low,v=w.high,E=w.low,P=C.high,N=C.low,J=b.high,z=b.low,L=x.high,G=x.low,K=_.high,$=_.low,te=R,re=U,ee=T,Z=D,me=B,le=Q,Ae=v,ve=E,qe=P,_e=N,se=J,it=z,ce=L,dr=G,Or=K,ct=$,we=0;we<80;we++){var Ee,Gi,xo=d[we];if(we<16)Gi=xo.high=f[h+we*2]|0,Ee=xo.low=f[h+we*2+1]|0;else{var Se=d[we-15],Dt=Se.high,Bs=Se.low,Ce=(Dt>>>1|Bs<<31)^(Dt>>>8|Bs<<24)^Dt>>>7,zi=(Bs>>>1|Dt<<31)^(Bs>>>8|Dt<<24)^(Bs>>>7|Dt<<25),ii=d[we-2],Ir=ii.high,tr=ii.low,ur=(Ir>>>19|tr<<13)^(Ir<<3|tr>>>29)^Ir>>>6,Qe=(tr>>>19|Ir<<13)^(tr<<3|Ir>>>29)^(tr>>>6|Ir<<26),be=d[we-7],Al=be.high,Ai=be.low,Mr=d[we-16],Mn=Mr.high,mn=Mr.low;Ee=zi+Ai,Gi=Ce+Al+(Ee>>>0>>0?1:0),Ee=Ee+Qe,Gi=Gi+ur+(Ee>>>0>>0?1:0),Ee=Ee+mn,Gi=Gi+Mn+(Ee>>>0>>0?1:0),xo.high=Gi,xo.low=Ee}var Le=qe&se^~qe&ce,Ja=_e&it^~_e&dr,Ji=te&ee^te&me^ee&me,Co=re&Z^re&le^Z&le,Ti=(te>>>28|re<<4)^(te<<30|re>>>2)^(te<<25|re>>>7),A=(re>>>28|te<<4)^(re<<30|te>>>2)^(re<<25|te>>>7),k=(qe>>>14|_e<<18)^(qe>>>18|_e<<14)^(qe<<23|_e>>>9),O=(_e>>>14|qe<<18)^(_e>>>18|qe<<14)^(_e<<23|qe>>>9),V=l[we],H=V.high,W=V.low,ue=ct+O,Re=Or+k+(ue>>>0>>0?1:0),ue=ue+Ja,Re=Re+Le+(ue>>>0>>0?1:0),ue=ue+W,Re=Re+H+(ue>>>0>>0?1:0),ue=ue+Ee,Re=Re+Gi+(ue>>>0>>0?1:0),Ye=A+Co,Ie=Ti+Ji+(Ye>>>0>>0?1:0);Or=ce,ct=dr,ce=se,dr=it,se=qe,it=_e,_e=ve+ue|0,qe=Ae+Re+(_e>>>0>>0?1:0)|0,Ae=me,ve=le,me=ee,le=Z,ee=te,Z=re,re=ue+Ye|0,te=Re+Ie+(re>>>0>>0?1:0)|0}U=p.low=U+re,p.high=R+te+(U>>>0>>0?1:0),D=I.low=D+Z,I.high=T+ee+(D>>>0>>0?1:0),Q=y.low=Q+le,y.high=B+me+(Q>>>0>>0?1:0),E=w.low=E+ve,w.high=v+Ae+(E>>>0>>0?1:0),N=C.low=N+_e,C.high=P+qe+(N>>>0<_e>>>0?1:0),z=b.low=z+it,b.high=J+se+(z>>>0>>0?1:0),G=x.low=G+dr,x.high=L+ce+(G>>>0>>0?1:0),$=_.low=$+ct,_.high=K+Or+($>>>0>>0?1:0)},_doFinalize:function(){var f=this._data,h=f.words,g=this._nDataBytes*8,p=f.sigBytes*8;h[p>>>5]|=128<<24-p%32,h[(p+128>>>10<<5)+30]=Math.floor(g/4294967296),h[(p+128>>>10<<5)+31]=g,f.sigBytes=h.length*4,this._process();var I=this._hash.toX32();return I},clone:function(){var f=i.clone.call(this);return f._hash=this._hash.clone(),f},blockSize:1024/32});e.SHA512=i._createHelper(u),e.HmacSHA512=i._createHmacHelper(u)})(),r.SHA512})});var RQ=oe((zg,UQ)=>{(function(r,e,t){typeof zg=="object"?UQ.exports=zg=e(et(),Ju(),_C()):typeof define=="function"&&define.amd?define(["./core","./x64-core","./sha512"],e):e(r.CryptoJS)})(zg,function(r){return(function(){var e=r,t=e.x64,i=t.Word,n=t.WordArray,s=e.algo,o=s.SHA512,a=s.SHA384=o.extend({_doReset:function(){this._hash=new n.init([new i.init(3418070365,3238371032),new i.init(1654270250,914150663),new i.init(2438529370,812702999),new i.init(355462360,4144912697),new i.init(1731405415,4290775857),new i.init(2394180231,1750603025),new i.init(3675008525,1694076839),new i.init(1203062813,3204075428)])},_doFinalize:function(){var c=o._doFinalize.call(this);return c.sigBytes-=16,c}});e.SHA384=o._createHelper(a),e.HmacSHA384=o._createHmacHelper(a)})(),r.SHA384})});var qQ=oe((Jg,NQ)=>{(function(r,e,t){typeof Jg=="object"?NQ.exports=Jg=e(et(),Ju()):typeof define=="function"&&define.amd?define(["./core","./x64-core"],e):e(r.CryptoJS)})(Jg,function(r){return(function(e){var t=r,i=t.lib,n=i.WordArray,s=i.Hasher,o=t.x64,a=o.Word,c=t.algo,l=[],d=[],u=[];(function(){for(var g=1,p=0,I=0;I<24;I++){l[g+5*p]=(I+1)*(I+2)/2%64;var y=p%5,w=(2*g+3*p)%5;g=y,p=w}for(var g=0;g<5;g++)for(var p=0;p<5;p++)d[g+5*p]=p+(2*g+3*p)%5*5;for(var C=1,b=0;b<24;b++){for(var x=0,_=0,R=0;R<7;R++){if(C&1){var U=(1<>>24)&16711935|(C<<24|C>>>8)&4278255360,b=(b<<8|b>>>24)&16711935|(b<<24|b>>>8)&4278255360;var x=I[w];x.high^=b,x.low^=C}for(var _=0;_<24;_++){for(var R=0;R<5;R++){for(var U=0,T=0,D=0;D<5;D++){var x=I[R+5*D];U^=x.high,T^=x.low}var B=f[R];B.high=U,B.low=T}for(var R=0;R<5;R++)for(var Q=f[(R+4)%5],v=f[(R+1)%5],E=v.high,P=v.low,U=Q.high^(E<<1|P>>>31),T=Q.low^(P<<1|E>>>31),D=0;D<5;D++){var x=I[R+5*D];x.high^=U,x.low^=T}for(var N=1;N<25;N++){var U,T,x=I[N],J=x.high,z=x.low,L=l[N];L<32?(U=J<>>32-L,T=z<>>32-L):(U=z<>>64-L,T=J<>>64-L);var G=f[d[N]];G.high=U,G.low=T}var K=f[0],$=I[0];K.high=$.high,K.low=$.low;for(var R=0;R<5;R++)for(var D=0;D<5;D++){var N=R+5*D,x=I[N],te=f[N],re=f[(R+1)%5+5*D],ee=f[(R+2)%5+5*D];x.high=te.high^~re.high&ee.high,x.low=te.low^~re.low&ee.low}var x=I[0],Z=u[_];x.high^=Z.high,x.low^=Z.low}},_doFinalize:function(){var g=this._data,p=g.words,I=this._nDataBytes*8,y=g.sigBytes*8,w=this.blockSize*32;p[y>>>5]|=1<<24-y%32,p[(e.ceil((y+1)/w)*w>>>5)-1]|=128,g.sigBytes=p.length*4,this._process();for(var C=this._state,b=this.cfg.outputLength/8,x=b/8,_=[],R=0;R>>24)&16711935|(T<<24|T>>>8)&4278255360,D=(D<<8|D>>>24)&16711935|(D<<24|D>>>8)&4278255360,_.push(D),_.push(T)}return new n.init(_,b)},clone:function(){for(var g=s.clone.call(this),p=g._state=this._state.slice(0),I=0;I<25;I++)p[I]=p[I].clone();return g}});t.SHA3=s._createHelper(h),t.HmacSHA3=s._createHmacHelper(h)})(Math),r.SHA3})});var MQ=oe((jg,OQ)=>{(function(r,e){typeof jg=="object"?OQ.exports=jg=e(et()):typeof define=="function"&&define.amd?define(["./core"],e):e(r.CryptoJS)})(jg,function(r){return(function(e){var t=r,i=t.lib,n=i.WordArray,s=i.Hasher,o=t.algo,a=n.create([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13]),c=n.create([5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11]),l=n.create([11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6]),d=n.create([8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]),u=n.create([0,1518500249,1859775393,2400959708,2840853838]),f=n.create([1352829926,1548603684,1836072691,2053994217,0]),h=o.RIPEMD160=s.extend({_doReset:function(){this._hash=n.create([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(b,x){for(var _=0;_<16;_++){var R=x+_,U=b[R];b[R]=(U<<8|U>>>24)&16711935|(U<<24|U>>>8)&4278255360}var T=this._hash.words,D=u.words,B=f.words,Q=a.words,v=c.words,E=l.words,P=d.words,N,J,z,L,G,K,$,te,re,ee;K=N=T[0],$=J=T[1],te=z=T[2],re=L=T[3],ee=G=T[4];for(var Z,_=0;_<80;_+=1)Z=N+b[x+Q[_]]|0,_<16?Z+=g(J,z,L)+D[0]:_<32?Z+=p(J,z,L)+D[1]:_<48?Z+=I(J,z,L)+D[2]:_<64?Z+=y(J,z,L)+D[3]:Z+=w(J,z,L)+D[4],Z=Z|0,Z=C(Z,E[_]),Z=Z+G|0,N=G,G=L,L=C(z,10),z=J,J=Z,Z=K+b[x+v[_]]|0,_<16?Z+=w($,te,re)+B[0]:_<32?Z+=y($,te,re)+B[1]:_<48?Z+=I($,te,re)+B[2]:_<64?Z+=p($,te,re)+B[3]:Z+=g($,te,re)+B[4],Z=Z|0,Z=C(Z,P[_]),Z=Z+ee|0,K=ee,ee=re,re=C(te,10),te=$,$=Z;Z=T[1]+z+re|0,T[1]=T[2]+L+ee|0,T[2]=T[3]+G+K|0,T[3]=T[4]+N+$|0,T[4]=T[0]+J+te|0,T[0]=Z},_doFinalize:function(){var b=this._data,x=b.words,_=this._nDataBytes*8,R=b.sigBytes*8;x[R>>>5]|=128<<24-R%32,x[(R+64>>>9<<4)+14]=(_<<8|_>>>24)&16711935|(_<<24|_>>>8)&4278255360,b.sigBytes=(x.length+1)*4,this._process();for(var U=this._hash,T=U.words,D=0;D<5;D++){var B=T[D];T[D]=(B<<8|B>>>24)&16711935|(B<<24|B>>>8)&4278255360}return U},clone:function(){var b=s.clone.call(this);return b._hash=this._hash.clone(),b}});function g(b,x,_){return b^x^_}function p(b,x,_){return b&x|~b&_}function I(b,x,_){return(b|~x)^_}function y(b,x,_){return b&_|x&~_}function w(b,x,_){return b^(x|~_)}function C(b,x){return b<>>32-x}t.RIPEMD160=s._createHelper(h),t.HmacRIPEMD160=s._createHmacHelper(h)})(Math),r.RIPEMD160})});var Vg=oe(($g,LQ)=>{(function(r,e){typeof $g=="object"?LQ.exports=$g=e(et()):typeof define=="function"&&define.amd?define(["./core"],e):e(r.CryptoJS)})($g,function(r){(function(){var e=r,t=e.lib,i=t.Base,n=e.enc,s=n.Utf8,o=e.algo,a=o.HMAC=i.extend({init:function(c,l){c=this._hasher=new c.init,typeof l=="string"&&(l=s.parse(l));var d=c.blockSize,u=d*4;l.sigBytes>u&&(l=c.finalize(l)),l.clamp();for(var f=this._oKey=l.clone(),h=this._iKey=l.clone(),g=f.words,p=h.words,I=0;I{(function(r,e,t){typeof Yg=="object"?HQ.exports=Yg=e(et(),Hg(),Vg()):typeof define=="function"&&define.amd?define(["./core","./sha256","./hmac"],e):e(r.CryptoJS)})(Yg,function(r){return(function(){var e=r,t=e.lib,i=t.Base,n=t.WordArray,s=e.algo,o=s.SHA256,a=s.HMAC,c=s.PBKDF2=i.extend({cfg:i.extend({keySize:128/32,hasher:o,iterations:25e4}),init:function(l){this.cfg=this.cfg.extend(l)},compute:function(l,d){for(var u=this.cfg,f=a.create(u.hasher,l),h=n.create(),g=n.create([1]),p=h.words,I=g.words,y=u.keySize,w=u.iterations;p.length{(function(r,e,t){typeof Wg=="object"?GQ.exports=Wg=e(et(),QC(),Vg()):typeof define=="function"&&define.amd?define(["./core","./sha1","./hmac"],e):e(r.CryptoJS)})(Wg,function(r){return(function(){var e=r,t=e.lib,i=t.Base,n=t.WordArray,s=e.algo,o=s.MD5,a=s.EvpKDF=i.extend({cfg:i.extend({keySize:128/32,hasher:o,iterations:1}),init:function(c){this.cfg=this.cfg.extend(c)},compute:function(c,l){for(var d,u=this.cfg,f=u.hasher.create(),h=n.create(),g=h.words,p=u.keySize,I=u.iterations;g.length{(function(r,e,t){typeof Xg=="object"?zQ.exports=Xg=e(et(),Ts()):typeof define=="function"&&define.amd?define(["./core","./evpkdf"],e):e(r.CryptoJS)})(Xg,function(r){r.lib.Cipher||(function(e){var t=r,i=t.lib,n=i.Base,s=i.WordArray,o=i.BufferedBlockAlgorithm,a=t.enc,c=a.Utf8,l=a.Base64,d=t.algo,u=d.EvpKDF,f=i.Cipher=o.extend({cfg:n.extend(),createEncryptor:function(B,Q){return this.create(this._ENC_XFORM_MODE,B,Q)},createDecryptor:function(B,Q){return this.create(this._DEC_XFORM_MODE,B,Q)},init:function(B,Q,v){this.cfg=this.cfg.extend(v),this._xformMode=B,this._key=Q,this.reset()},reset:function(){o.reset.call(this),this._doReset()},process:function(B){return this._append(B),this._process()},finalize:function(B){B&&this._append(B);var Q=this._doFinalize();return Q},keySize:128/32,ivSize:128/32,_ENC_XFORM_MODE:1,_DEC_XFORM_MODE:2,_createHelper:(function(){function B(Q){return typeof Q=="string"?D:R}return function(Q){return{encrypt:function(v,E,P){return B(E).encrypt(Q,v,E,P)},decrypt:function(v,E,P){return B(E).decrypt(Q,v,E,P)}}}})()}),h=i.StreamCipher=f.extend({_doFinalize:function(){var B=this._process(!0);return B},blockSize:1}),g=t.mode={},p=i.BlockCipherMode=n.extend({createEncryptor:function(B,Q){return this.Encryptor.create(B,Q)},createDecryptor:function(B,Q){return this.Decryptor.create(B,Q)},init:function(B,Q){this._cipher=B,this._iv=Q}}),I=g.CBC=(function(){var B=p.extend();B.Encryptor=B.extend({processBlock:function(v,E){var P=this._cipher,N=P.blockSize;Q.call(this,v,E,N),P.encryptBlock(v,E),this._prevBlock=v.slice(E,E+N)}}),B.Decryptor=B.extend({processBlock:function(v,E){var P=this._cipher,N=P.blockSize,J=v.slice(E,E+N);P.decryptBlock(v,E),Q.call(this,v,E,N),this._prevBlock=J}});function Q(v,E,P){var N,J=this._iv;J?(N=J,this._iv=e):N=this._prevBlock;for(var z=0;z>>2]&255;B.sigBytes-=Q}},C=i.BlockCipher=f.extend({cfg:f.cfg.extend({mode:I,padding:w}),reset:function(){var B;f.reset.call(this);var Q=this.cfg,v=Q.iv,E=Q.mode;this._xformMode==this._ENC_XFORM_MODE?B=E.createEncryptor:(B=E.createDecryptor,this._minBufferSize=1),this._mode&&this._mode.__creator==B?this._mode.init(this,v&&v.words):(this._mode=B.call(E,this,v&&v.words),this._mode.__creator=B)},_doProcessBlock:function(B,Q){this._mode.processBlock(B,Q)},_doFinalize:function(){var B,Q=this.cfg.padding;return this._xformMode==this._ENC_XFORM_MODE?(Q.pad(this._data,this.blockSize),B=this._process(!0)):(B=this._process(!0),Q.unpad(B)),B},blockSize:128/32}),b=i.CipherParams=n.extend({init:function(B){this.mixIn(B)},toString:function(B){return(B||this.formatter).stringify(this)}}),x=t.format={},_=x.OpenSSL={stringify:function(B){var Q,v=B.ciphertext,E=B.salt;return E?Q=s.create([1398893684,1701076831]).concat(E).concat(v):Q=v,Q.toString(l)},parse:function(B){var Q,v=l.parse(B),E=v.words;return E[0]==1398893684&&E[1]==1701076831&&(Q=s.create(E.slice(2,4)),E.splice(0,4),v.sigBytes-=16),b.create({ciphertext:v,salt:Q})}},R=i.SerializableCipher=n.extend({cfg:n.extend({format:_}),encrypt:function(B,Q,v,E){E=this.cfg.extend(E);var P=B.createEncryptor(v,E),N=P.finalize(Q),J=P.cfg;return b.create({ciphertext:N,key:v,iv:J.iv,algorithm:B,mode:J.mode,padding:J.padding,blockSize:B.blockSize,formatter:E.format})},decrypt:function(B,Q,v,E){E=this.cfg.extend(E),Q=this._parse(Q,E.format);var P=B.createDecryptor(v,E).finalize(Q.ciphertext);return P},_parse:function(B,Q){return typeof B=="string"?Q.parse(B,this):B}}),U=t.kdf={},T=U.OpenSSL={execute:function(B,Q,v,E,P){if(E||(E=s.random(64/8)),P)var N=u.create({keySize:Q+v,hasher:P}).compute(B,E);else var N=u.create({keySize:Q+v}).compute(B,E);var J=s.create(N.words.slice(Q),v*4);return N.sigBytes=Q*4,b.create({key:N,iv:J,salt:E})}},D=i.PasswordBasedCipher=R.extend({cfg:R.cfg.extend({kdf:T}),encrypt:function(B,Q,v,E){E=this.cfg.extend(E);var P=E.kdf.execute(v,B.keySize,B.ivSize,E.salt,E.hasher);E.iv=P.iv;var N=R.encrypt.call(this,B,Q,P.key,E);return N.mixIn(P),N},decrypt:function(B,Q,v,E){E=this.cfg.extend(E),Q=this._parse(Q,E.format);var P=E.kdf.execute(v,B.keySize,B.ivSize,Q.salt,E.hasher);E.iv=P.iv;var N=R.decrypt.call(this,B,Q,P.key,E);return N}})})()})});var jQ=oe((Zg,JQ)=>{(function(r,e,t){typeof Zg=="object"?JQ.exports=Zg=e(et(),fr()):typeof define=="function"&&define.amd?define(["./core","./cipher-core"],e):e(r.CryptoJS)})(Zg,function(r){return r.mode.CFB=(function(){var e=r.lib.BlockCipherMode.extend();e.Encryptor=e.extend({processBlock:function(i,n){var s=this._cipher,o=s.blockSize;t.call(this,i,n,o,s),this._prevBlock=i.slice(n,n+o)}}),e.Decryptor=e.extend({processBlock:function(i,n){var s=this._cipher,o=s.blockSize,a=i.slice(n,n+o);t.call(this,i,n,o,s),this._prevBlock=a}});function t(i,n,s,o){var a,c=this._iv;c?(a=c.slice(0),this._iv=void 0):a=this._prevBlock,o.encryptBlock(a,0);for(var l=0;l{(function(r,e,t){typeof ep=="object"?$Q.exports=ep=e(et(),fr()):typeof define=="function"&&define.amd?define(["./core","./cipher-core"],e):e(r.CryptoJS)})(ep,function(r){return r.mode.CTR=(function(){var e=r.lib.BlockCipherMode.extend(),t=e.Encryptor=e.extend({processBlock:function(i,n){var s=this._cipher,o=s.blockSize,a=this._iv,c=this._counter;a&&(c=this._counter=a.slice(0),this._iv=void 0);var l=c.slice(0);s.encryptBlock(l,0),c[o-1]=c[o-1]+1|0;for(var d=0;d{(function(r,e,t){typeof tp=="object"?YQ.exports=tp=e(et(),fr()):typeof define=="function"&&define.amd?define(["./core","./cipher-core"],e):e(r.CryptoJS)})(tp,function(r){return r.mode.CTRGladman=(function(){var e=r.lib.BlockCipherMode.extend();function t(s){if((s>>24&255)===255){var o=s>>16&255,a=s>>8&255,c=s&255;o===255?(o=0,a===255?(a=0,c===255?c=0:++c):++a):++o,s=0,s+=o<<16,s+=a<<8,s+=c}else s+=1<<24;return s}function i(s){return(s[0]=t(s[0]))===0&&(s[1]=t(s[1])),s}var n=e.Encryptor=e.extend({processBlock:function(s,o){var a=this._cipher,c=a.blockSize,l=this._iv,d=this._counter;l&&(d=this._counter=l.slice(0),this._iv=void 0),i(d);var u=d.slice(0);a.encryptBlock(u,0);for(var f=0;f{(function(r,e,t){typeof rp=="object"?XQ.exports=rp=e(et(),fr()):typeof define=="function"&&define.amd?define(["./core","./cipher-core"],e):e(r.CryptoJS)})(rp,function(r){return r.mode.OFB=(function(){var e=r.lib.BlockCipherMode.extend(),t=e.Encryptor=e.extend({processBlock:function(i,n){var s=this._cipher,o=s.blockSize,a=this._iv,c=this._keystream;a&&(c=this._keystream=a.slice(0),this._iv=void 0),s.encryptBlock(c,0);for(var l=0;l{(function(r,e,t){typeof ip=="object"?e_.exports=ip=e(et(),fr()):typeof define=="function"&&define.amd?define(["./core","./cipher-core"],e):e(r.CryptoJS)})(ip,function(r){return r.mode.ECB=(function(){var e=r.lib.BlockCipherMode.extend();return e.Encryptor=e.extend({processBlock:function(t,i){this._cipher.encryptBlock(t,i)}}),e.Decryptor=e.extend({processBlock:function(t,i){this._cipher.decryptBlock(t,i)}}),e})(),r.mode.ECB})});var i_=oe((np,r_)=>{(function(r,e,t){typeof np=="object"?r_.exports=np=e(et(),fr()):typeof define=="function"&&define.amd?define(["./core","./cipher-core"],e):e(r.CryptoJS)})(np,function(r){return r.pad.AnsiX923={pad:function(e,t){var i=e.sigBytes,n=t*4,s=n-i%n,o=i+s-1;e.clamp(),e.words[o>>>2]|=s<<24-o%4*8,e.sigBytes+=s},unpad:function(e){var t=e.words[e.sigBytes-1>>>2]&255;e.sigBytes-=t}},r.pad.Ansix923})});var s_=oe((sp,n_)=>{(function(r,e,t){typeof sp=="object"?n_.exports=sp=e(et(),fr()):typeof define=="function"&&define.amd?define(["./core","./cipher-core"],e):e(r.CryptoJS)})(sp,function(r){return r.pad.Iso10126={pad:function(e,t){var i=t*4,n=i-e.sigBytes%i;e.concat(r.lib.WordArray.random(n-1)).concat(r.lib.WordArray.create([n<<24],1))},unpad:function(e){var t=e.words[e.sigBytes-1>>>2]&255;e.sigBytes-=t}},r.pad.Iso10126})});var a_=oe((op,o_)=>{(function(r,e,t){typeof op=="object"?o_.exports=op=e(et(),fr()):typeof define=="function"&&define.amd?define(["./core","./cipher-core"],e):e(r.CryptoJS)})(op,function(r){return r.pad.Iso97971={pad:function(e,t){e.concat(r.lib.WordArray.create([2147483648],1)),r.pad.ZeroPadding.pad(e,t)},unpad:function(e){r.pad.ZeroPadding.unpad(e),e.sigBytes--}},r.pad.Iso97971})});var l_=oe((ap,c_)=>{(function(r,e,t){typeof ap=="object"?c_.exports=ap=e(et(),fr()):typeof define=="function"&&define.amd?define(["./core","./cipher-core"],e):e(r.CryptoJS)})(ap,function(r){return r.pad.ZeroPadding={pad:function(e,t){var i=t*4;e.clamp(),e.sigBytes+=i-(e.sigBytes%i||i)},unpad:function(e){for(var t=e.words,i=e.sigBytes-1,i=e.sigBytes-1;i>=0;i--)if(t[i>>>2]>>>24-i%4*8&255){e.sigBytes=i+1;break}}},r.pad.ZeroPadding})});var u_=oe((cp,d_)=>{(function(r,e,t){typeof cp=="object"?d_.exports=cp=e(et(),fr()):typeof define=="function"&&define.amd?define(["./core","./cipher-core"],e):e(r.CryptoJS)})(cp,function(r){return r.pad.NoPadding={pad:function(){},unpad:function(){}},r.pad.NoPadding})});var A_=oe((lp,f_)=>{(function(r,e,t){typeof lp=="object"?f_.exports=lp=e(et(),fr()):typeof define=="function"&&define.amd?define(["./core","./cipher-core"],e):e(r.CryptoJS)})(lp,function(r){return(function(e){var t=r,i=t.lib,n=i.CipherParams,s=t.enc,o=s.Hex,a=t.format,c=a.Hex={stringify:function(l){return l.ciphertext.toString(o)},parse:function(l){var d=o.parse(l);return n.create({ciphertext:d})}}})(),r.format.Hex})});var g_=oe((dp,h_)=>{(function(r,e,t){typeof dp=="object"?h_.exports=dp=e(et(),Go(),zo(),Ts(),fr()):typeof define=="function"&&define.amd?define(["./core","./enc-base64","./md5","./evpkdf","./cipher-core"],e):e(r.CryptoJS)})(dp,function(r){return(function(){var e=r,t=e.lib,i=t.BlockCipher,n=e.algo,s=[],o=[],a=[],c=[],l=[],d=[],u=[],f=[],h=[],g=[];(function(){for(var y=[],w=0;w<256;w++)w<128?y[w]=w<<1:y[w]=w<<1^283;for(var C=0,b=0,w=0;w<256;w++){var x=b^b<<1^b<<2^b<<3^b<<4;x=x>>>8^x&255^99,s[C]=x,o[x]=C;var _=y[C],R=y[_],U=y[R],T=y[x]*257^x*16843008;a[C]=T<<24|T>>>8,c[C]=T<<16|T>>>16,l[C]=T<<8|T>>>24,d[C]=T;var T=U*16843009^R*65537^_*257^C*16843008;u[x]=T<<24|T>>>8,f[x]=T<<16|T>>>16,h[x]=T<<8|T>>>24,g[x]=T,C?(C=_^y[y[y[U^_]]],b^=y[y[b]]):C=b=1}})();var p=[0,1,2,4,8,16,32,64,128,27,54],I=n.AES=i.extend({_doReset:function(){var y;if(!(this._nRounds&&this._keyPriorReset===this._key)){for(var w=this._keyPriorReset=this._key,C=w.words,b=w.sigBytes/4,x=this._nRounds=b+6,_=(x+1)*4,R=this._keySchedule=[],U=0;U<_;U++)U6&&U%b==4&&(y=s[y>>>24]<<24|s[y>>>16&255]<<16|s[y>>>8&255]<<8|s[y&255]):(y=y<<8|y>>>24,y=s[y>>>24]<<24|s[y>>>16&255]<<16|s[y>>>8&255]<<8|s[y&255],y^=p[U/b|0]<<24),R[U]=R[U-b]^y);for(var T=this._invKeySchedule=[],D=0;D<_;D++){var U=_-D;if(D%4)var y=R[U];else var y=R[U-4];D<4||U<=4?T[D]=y:T[D]=u[s[y>>>24]]^f[s[y>>>16&255]]^h[s[y>>>8&255]]^g[s[y&255]]}}},encryptBlock:function(y,w){this._doCryptBlock(y,w,this._keySchedule,a,c,l,d,s)},decryptBlock:function(y,w){var C=y[w+1];y[w+1]=y[w+3],y[w+3]=C,this._doCryptBlock(y,w,this._invKeySchedule,u,f,h,g,o);var C=y[w+1];y[w+1]=y[w+3],y[w+3]=C},_doCryptBlock:function(y,w,C,b,x,_,R,U){for(var T=this._nRounds,D=y[w]^C[0],B=y[w+1]^C[1],Q=y[w+2]^C[2],v=y[w+3]^C[3],E=4,P=1;P>>24]^x[B>>>16&255]^_[Q>>>8&255]^R[v&255]^C[E++],J=b[B>>>24]^x[Q>>>16&255]^_[v>>>8&255]^R[D&255]^C[E++],z=b[Q>>>24]^x[v>>>16&255]^_[D>>>8&255]^R[B&255]^C[E++],L=b[v>>>24]^x[D>>>16&255]^_[B>>>8&255]^R[Q&255]^C[E++];D=N,B=J,Q=z,v=L}var N=(U[D>>>24]<<24|U[B>>>16&255]<<16|U[Q>>>8&255]<<8|U[v&255])^C[E++],J=(U[B>>>24]<<24|U[Q>>>16&255]<<16|U[v>>>8&255]<<8|U[D&255])^C[E++],z=(U[Q>>>24]<<24|U[v>>>16&255]<<16|U[D>>>8&255]<<8|U[B&255])^C[E++],L=(U[v>>>24]<<24|U[D>>>16&255]<<16|U[B>>>8&255]<<8|U[Q&255])^C[E++];y[w]=N,y[w+1]=J,y[w+2]=z,y[w+3]=L},keySize:256/32});e.AES=i._createHelper(I)})(),r.AES})});var m_=oe((up,p_)=>{(function(r,e,t){typeof up=="object"?p_.exports=up=e(et(),Go(),zo(),Ts(),fr()):typeof define=="function"&&define.amd?define(["./core","./enc-base64","./md5","./evpkdf","./cipher-core"],e):e(r.CryptoJS)})(up,function(r){return(function(){var e=r,t=e.lib,i=t.WordArray,n=t.BlockCipher,s=e.algo,o=[57,49,41,33,25,17,9,1,58,50,42,34,26,18,10,2,59,51,43,35,27,19,11,3,60,52,44,36,63,55,47,39,31,23,15,7,62,54,46,38,30,22,14,6,61,53,45,37,29,21,13,5,28,20,12,4],a=[14,17,11,24,1,5,3,28,15,6,21,10,23,19,12,4,26,8,16,7,27,20,13,2,41,52,31,37,47,55,30,40,51,45,33,48,44,49,39,56,34,53,46,42,50,36,29,32],c=[1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28],l=[{0:8421888,268435456:32768,536870912:8421378,805306368:2,1073741824:512,1342177280:8421890,1610612736:8389122,1879048192:8388608,2147483648:514,2415919104:8389120,2684354560:33280,2952790016:8421376,3221225472:32770,3489660928:8388610,3758096384:0,4026531840:33282,134217728:0,402653184:8421890,671088640:33282,939524096:32768,1207959552:8421888,1476395008:512,1744830464:8421378,2013265920:2,2281701376:8389120,2550136832:33280,2818572288:8421376,3087007744:8389122,3355443200:8388610,3623878656:32770,3892314112:514,4160749568:8388608,1:32768,268435457:2,536870913:8421888,805306369:8388608,1073741825:8421378,1342177281:33280,1610612737:512,1879048193:8389122,2147483649:8421890,2415919105:8421376,2684354561:8388610,2952790017:33282,3221225473:514,3489660929:8389120,3758096385:32770,4026531841:0,134217729:8421890,402653185:8421376,671088641:8388608,939524097:512,1207959553:32768,1476395009:8388610,1744830465:2,2013265921:33282,2281701377:32770,2550136833:8389122,2818572289:514,3087007745:8421888,3355443201:8389120,3623878657:0,3892314113:33280,4160749569:8421378},{0:1074282512,16777216:16384,33554432:524288,50331648:1074266128,67108864:1073741840,83886080:1074282496,100663296:1073758208,117440512:16,134217728:540672,150994944:1073758224,167772160:1073741824,184549376:540688,201326592:524304,218103808:0,234881024:16400,251658240:1074266112,8388608:1073758208,25165824:540688,41943040:16,58720256:1073758224,75497472:1074282512,92274688:1073741824,109051904:524288,125829120:1074266128,142606336:524304,159383552:0,176160768:16384,192937984:1074266112,209715200:1073741840,226492416:540672,243269632:1074282496,260046848:16400,268435456:0,285212672:1074266128,301989888:1073758224,318767104:1074282496,335544320:1074266112,352321536:16,369098752:540688,385875968:16384,402653184:16400,419430400:524288,436207616:524304,452984832:1073741840,469762048:540672,486539264:1073758208,503316480:1073741824,520093696:1074282512,276824064:540688,293601280:524288,310378496:1074266112,327155712:16384,343932928:1073758208,360710144:1074282512,377487360:16,394264576:1073741824,411041792:1074282496,427819008:1073741840,444596224:1073758224,461373440:524304,478150656:0,494927872:16400,511705088:1074266128,528482304:540672},{0:260,1048576:0,2097152:67109120,3145728:65796,4194304:65540,5242880:67108868,6291456:67174660,7340032:67174400,8388608:67108864,9437184:67174656,10485760:65792,11534336:67174404,12582912:67109124,13631488:65536,14680064:4,15728640:256,524288:67174656,1572864:67174404,2621440:0,3670016:67109120,4718592:67108868,5767168:65536,6815744:65540,7864320:260,8912896:4,9961472:256,11010048:67174400,12058624:65796,13107200:65792,14155776:67109124,15204352:67174660,16252928:67108864,16777216:67174656,17825792:65540,18874368:65536,19922944:67109120,20971520:256,22020096:67174660,23068672:67108868,24117248:0,25165824:67109124,26214400:67108864,27262976:4,28311552:65792,29360128:67174400,30408704:260,31457280:65796,32505856:67174404,17301504:67108864,18350080:260,19398656:67174656,20447232:0,21495808:65540,22544384:67109120,23592960:256,24641536:67174404,25690112:65536,26738688:67174660,27787264:65796,28835840:67108868,29884416:67109124,30932992:67174400,31981568:4,33030144:65792},{0:2151682048,65536:2147487808,131072:4198464,196608:2151677952,262144:0,327680:4198400,393216:2147483712,458752:4194368,524288:2147483648,589824:4194304,655360:64,720896:2147487744,786432:2151678016,851968:4160,917504:4096,983040:2151682112,32768:2147487808,98304:64,163840:2151678016,229376:2147487744,294912:4198400,360448:2151682112,425984:0,491520:2151677952,557056:4096,622592:2151682048,688128:4194304,753664:4160,819200:2147483648,884736:4194368,950272:4198464,1015808:2147483712,1048576:4194368,1114112:4198400,1179648:2147483712,1245184:0,1310720:4160,1376256:2151678016,1441792:2151682048,1507328:2147487808,1572864:2151682112,1638400:2147483648,1703936:2151677952,1769472:4198464,1835008:2147487744,1900544:4194304,1966080:64,2031616:4096,1081344:2151677952,1146880:2151682112,1212416:0,1277952:4198400,1343488:4194368,1409024:2147483648,1474560:2147487808,1540096:64,1605632:2147483712,1671168:4096,1736704:2147487744,1802240:2151678016,1867776:4160,1933312:2151682048,1998848:4194304,2064384:4198464},{0:128,4096:17039360,8192:262144,12288:536870912,16384:537133184,20480:16777344,24576:553648256,28672:262272,32768:16777216,36864:537133056,40960:536871040,45056:553910400,49152:553910272,53248:0,57344:17039488,61440:553648128,2048:17039488,6144:553648256,10240:128,14336:17039360,18432:262144,22528:537133184,26624:553910272,30720:536870912,34816:537133056,38912:0,43008:553910400,47104:16777344,51200:536871040,55296:553648128,59392:16777216,63488:262272,65536:262144,69632:128,73728:536870912,77824:553648256,81920:16777344,86016:553910272,90112:537133184,94208:16777216,98304:553910400,102400:553648128,106496:17039360,110592:537133056,114688:262272,118784:536871040,122880:0,126976:17039488,67584:553648256,71680:16777216,75776:17039360,79872:537133184,83968:536870912,88064:17039488,92160:128,96256:553910272,100352:262272,104448:553910400,108544:0,112640:553648128,116736:16777344,120832:262144,124928:537133056,129024:536871040},{0:268435464,256:8192,512:270532608,768:270540808,1024:268443648,1280:2097152,1536:2097160,1792:268435456,2048:0,2304:268443656,2560:2105344,2816:8,3072:270532616,3328:2105352,3584:8200,3840:270540800,128:270532608,384:270540808,640:8,896:2097152,1152:2105352,1408:268435464,1664:268443648,1920:8200,2176:2097160,2432:8192,2688:268443656,2944:270532616,3200:0,3456:270540800,3712:2105344,3968:268435456,4096:268443648,4352:270532616,4608:270540808,4864:8200,5120:2097152,5376:268435456,5632:268435464,5888:2105344,6144:2105352,6400:0,6656:8,6912:270532608,7168:8192,7424:268443656,7680:270540800,7936:2097160,4224:8,4480:2105344,4736:2097152,4992:268435464,5248:268443648,5504:8200,5760:270540808,6016:270532608,6272:270540800,6528:270532616,6784:8192,7040:2105352,7296:2097160,7552:0,7808:268435456,8064:268443656},{0:1048576,16:33555457,32:1024,48:1049601,64:34604033,80:0,96:1,112:34603009,128:33555456,144:1048577,160:33554433,176:34604032,192:34603008,208:1025,224:1049600,240:33554432,8:34603009,24:0,40:33555457,56:34604032,72:1048576,88:33554433,104:33554432,120:1025,136:1049601,152:33555456,168:34603008,184:1048577,200:1024,216:34604033,232:1,248:1049600,256:33554432,272:1048576,288:33555457,304:34603009,320:1048577,336:33555456,352:34604032,368:1049601,384:1025,400:34604033,416:1049600,432:1,448:0,464:34603008,480:33554433,496:1024,264:1049600,280:33555457,296:34603009,312:1,328:33554432,344:1048576,360:1025,376:34604032,392:33554433,408:34603008,424:0,440:34604033,456:1049601,472:1024,488:33555456,504:1048577},{0:134219808,1:131072,2:134217728,3:32,4:131104,5:134350880,6:134350848,7:2048,8:134348800,9:134219776,10:133120,11:134348832,12:2080,13:0,14:134217760,15:133152,2147483648:2048,2147483649:134350880,2147483650:134219808,2147483651:134217728,2147483652:134348800,2147483653:133120,2147483654:133152,2147483655:32,2147483656:134217760,2147483657:2080,2147483658:131104,2147483659:134350848,2147483660:0,2147483661:134348832,2147483662:134219776,2147483663:131072,16:133152,17:134350848,18:32,19:2048,20:134219776,21:134217760,22:134348832,23:131072,24:0,25:131104,26:134348800,27:134219808,28:134350880,29:133120,30:2080,31:134217728,2147483664:131072,2147483665:2048,2147483666:134348832,2147483667:133152,2147483668:32,2147483669:134348800,2147483670:134217728,2147483671:134219808,2147483672:134350880,2147483673:134217760,2147483674:134219776,2147483675:0,2147483676:133120,2147483677:2080,2147483678:131104,2147483679:134350848}],d=[4160749569,528482304,33030144,2064384,129024,8064,504,2147483679],u=s.DES=n.extend({_doReset:function(){for(var p=this._key,I=p.words,y=[],w=0;w<56;w++){var C=o[w]-1;y[w]=I[C>>>5]>>>31-C%32&1}for(var b=this._subKeys=[],x=0;x<16;x++){for(var _=b[x]=[],R=c[x],w=0;w<24;w++)_[w/6|0]|=y[(a[w]-1+R)%28]<<31-w%6,_[4+(w/6|0)]|=y[28+(a[w+24]-1+R)%28]<<31-w%6;_[0]=_[0]<<1|_[0]>>>31;for(var w=1;w<7;w++)_[w]=_[w]>>>(w-1)*4+3;_[7]=_[7]<<5|_[7]>>>27}for(var U=this._invSubKeys=[],w=0;w<16;w++)U[w]=b[15-w]},encryptBlock:function(p,I){this._doCryptBlock(p,I,this._subKeys)},decryptBlock:function(p,I){this._doCryptBlock(p,I,this._invSubKeys)},_doCryptBlock:function(p,I,y){this._lBlock=p[I],this._rBlock=p[I+1],f.call(this,4,252645135),f.call(this,16,65535),h.call(this,2,858993459),h.call(this,8,16711935),f.call(this,1,1431655765);for(var w=0;w<16;w++){for(var C=y[w],b=this._lBlock,x=this._rBlock,_=0,R=0;R<8;R++)_|=l[R][((x^C[R])&d[R])>>>0];this._lBlock=x,this._rBlock=b^_}var U=this._lBlock;this._lBlock=this._rBlock,this._rBlock=U,f.call(this,1,1431655765),h.call(this,8,16711935),h.call(this,2,858993459),f.call(this,16,65535),f.call(this,4,252645135),p[I]=this._lBlock,p[I+1]=this._rBlock},keySize:64/32,ivSize:64/32,blockSize:64/32});function f(p,I){var y=(this._lBlock>>>p^this._rBlock)&I;this._rBlock^=y,this._lBlock^=y<>>p^this._lBlock)&I;this._lBlock^=y,this._rBlock^=y<192.");var y=I.slice(0,2),w=I.length<4?I.slice(0,2):I.slice(2,4),C=I.length<6?I.slice(0,2):I.slice(4,6);this._des1=u.createEncryptor(i.create(y)),this._des2=u.createEncryptor(i.create(w)),this._des3=u.createEncryptor(i.create(C))},encryptBlock:function(p,I){this._des1.encryptBlock(p,I),this._des2.decryptBlock(p,I),this._des3.encryptBlock(p,I)},decryptBlock:function(p,I){this._des3.decryptBlock(p,I),this._des2.encryptBlock(p,I),this._des1.decryptBlock(p,I)},keySize:192/32,ivSize:64/32,blockSize:64/32});e.TripleDES=n._createHelper(g)})(),r.TripleDES})});var I_=oe((fp,y_)=>{(function(r,e,t){typeof fp=="object"?y_.exports=fp=e(et(),Go(),zo(),Ts(),fr()):typeof define=="function"&&define.amd?define(["./core","./enc-base64","./md5","./evpkdf","./cipher-core"],e):e(r.CryptoJS)})(fp,function(r){return(function(){var e=r,t=e.lib,i=t.StreamCipher,n=e.algo,s=n.RC4=i.extend({_doReset:function(){for(var c=this._key,l=c.words,d=c.sigBytes,u=this._S=[],f=0;f<256;f++)u[f]=f;for(var f=0,h=0;f<256;f++){var g=f%d,p=l[g>>>2]>>>24-g%4*8&255;h=(h+u[f]+p)%256;var I=u[f];u[f]=u[h],u[h]=I}this._i=this._j=0},_doProcessBlock:function(c,l){c[l]^=o.call(this)},keySize:256/32,ivSize:0});function o(){for(var c=this._S,l=this._i,d=this._j,u=0,f=0;f<4;f++){l=(l+1)%256,d=(d+c[l])%256;var h=c[l];c[l]=c[d],c[d]=h,u|=c[(c[l]+c[d])%256]<<24-f*8}return this._i=l,this._j=d,u}e.RC4=i._createHelper(s);var a=n.RC4Drop=s.extend({cfg:s.cfg.extend({drop:192}),_doReset:function(){s._doReset.call(this);for(var c=this.cfg.drop;c>0;c--)o.call(this)}});e.RC4Drop=i._createHelper(a)})(),r.RC4})});var x_=oe((Ap,w_)=>{(function(r,e,t){typeof Ap=="object"?w_.exports=Ap=e(et(),Go(),zo(),Ts(),fr()):typeof define=="function"&&define.amd?define(["./core","./enc-base64","./md5","./evpkdf","./cipher-core"],e):e(r.CryptoJS)})(Ap,function(r){return(function(){var e=r,t=e.lib,i=t.StreamCipher,n=e.algo,s=[],o=[],a=[],c=n.Rabbit=i.extend({_doReset:function(){for(var d=this._key.words,u=this.cfg.iv,f=0;f<4;f++)d[f]=(d[f]<<8|d[f]>>>24)&16711935|(d[f]<<24|d[f]>>>8)&4278255360;var h=this._X=[d[0],d[3]<<16|d[2]>>>16,d[1],d[0]<<16|d[3]>>>16,d[2],d[1]<<16|d[0]>>>16,d[3],d[2]<<16|d[1]>>>16],g=this._C=[d[2]<<16|d[2]>>>16,d[0]&4294901760|d[1]&65535,d[3]<<16|d[3]>>>16,d[1]&4294901760|d[2]&65535,d[0]<<16|d[0]>>>16,d[2]&4294901760|d[3]&65535,d[1]<<16|d[1]>>>16,d[3]&4294901760|d[0]&65535];this._b=0;for(var f=0;f<4;f++)l.call(this);for(var f=0;f<8;f++)g[f]^=h[f+4&7];if(u){var p=u.words,I=p[0],y=p[1],w=(I<<8|I>>>24)&16711935|(I<<24|I>>>8)&4278255360,C=(y<<8|y>>>24)&16711935|(y<<24|y>>>8)&4278255360,b=w>>>16|C&4294901760,x=C<<16|w&65535;g[0]^=w,g[1]^=b,g[2]^=C,g[3]^=x,g[4]^=w,g[5]^=b,g[6]^=C,g[7]^=x;for(var f=0;f<4;f++)l.call(this)}},_doProcessBlock:function(d,u){var f=this._X;l.call(this),s[0]=f[0]^f[5]>>>16^f[3]<<16,s[1]=f[2]^f[7]>>>16^f[5]<<16,s[2]=f[4]^f[1]>>>16^f[7]<<16,s[3]=f[6]^f[3]>>>16^f[1]<<16;for(var h=0;h<4;h++)s[h]=(s[h]<<8|s[h]>>>24)&16711935|(s[h]<<24|s[h]>>>8)&4278255360,d[u+h]^=s[h]},blockSize:128/32,ivSize:64/32});function l(){for(var d=this._X,u=this._C,f=0;f<8;f++)o[f]=u[f];u[0]=u[0]+1295307597+this._b|0,u[1]=u[1]+3545052371+(u[0]>>>0>>0?1:0)|0,u[2]=u[2]+886263092+(u[1]>>>0>>0?1:0)|0,u[3]=u[3]+1295307597+(u[2]>>>0>>0?1:0)|0,u[4]=u[4]+3545052371+(u[3]>>>0>>0?1:0)|0,u[5]=u[5]+886263092+(u[4]>>>0>>0?1:0)|0,u[6]=u[6]+1295307597+(u[5]>>>0>>0?1:0)|0,u[7]=u[7]+3545052371+(u[6]>>>0>>0?1:0)|0,this._b=u[7]>>>0>>0?1:0;for(var f=0;f<8;f++){var h=d[f]+u[f],g=h&65535,p=h>>>16,I=((g*g>>>17)+g*p>>>15)+p*p,y=((h&4294901760)*h|0)+((h&65535)*h|0);a[f]=I^y}d[0]=a[0]+(a[7]<<16|a[7]>>>16)+(a[6]<<16|a[6]>>>16)|0,d[1]=a[1]+(a[0]<<8|a[0]>>>24)+a[7]|0,d[2]=a[2]+(a[1]<<16|a[1]>>>16)+(a[0]<<16|a[0]>>>16)|0,d[3]=a[3]+(a[2]<<8|a[2]>>>24)+a[1]|0,d[4]=a[4]+(a[3]<<16|a[3]>>>16)+(a[2]<<16|a[2]>>>16)|0,d[5]=a[5]+(a[4]<<8|a[4]>>>24)+a[3]|0,d[6]=a[6]+(a[5]<<16|a[5]>>>16)+(a[4]<<16|a[4]>>>16)|0,d[7]=a[7]+(a[6]<<8|a[6]>>>24)+a[5]|0}e.Rabbit=i._createHelper(c)})(),r.Rabbit})});var E_=oe((hp,C_)=>{(function(r,e,t){typeof hp=="object"?C_.exports=hp=e(et(),Go(),zo(),Ts(),fr()):typeof define=="function"&&define.amd?define(["./core","./enc-base64","./md5","./evpkdf","./cipher-core"],e):e(r.CryptoJS)})(hp,function(r){return(function(){var e=r,t=e.lib,i=t.StreamCipher,n=e.algo,s=[],o=[],a=[],c=n.RabbitLegacy=i.extend({_doReset:function(){var d=this._key.words,u=this.cfg.iv,f=this._X=[d[0],d[3]<<16|d[2]>>>16,d[1],d[0]<<16|d[3]>>>16,d[2],d[1]<<16|d[0]>>>16,d[3],d[2]<<16|d[1]>>>16],h=this._C=[d[2]<<16|d[2]>>>16,d[0]&4294901760|d[1]&65535,d[3]<<16|d[3]>>>16,d[1]&4294901760|d[2]&65535,d[0]<<16|d[0]>>>16,d[2]&4294901760|d[3]&65535,d[1]<<16|d[1]>>>16,d[3]&4294901760|d[0]&65535];this._b=0;for(var g=0;g<4;g++)l.call(this);for(var g=0;g<8;g++)h[g]^=f[g+4&7];if(u){var p=u.words,I=p[0],y=p[1],w=(I<<8|I>>>24)&16711935|(I<<24|I>>>8)&4278255360,C=(y<<8|y>>>24)&16711935|(y<<24|y>>>8)&4278255360,b=w>>>16|C&4294901760,x=C<<16|w&65535;h[0]^=w,h[1]^=b,h[2]^=C,h[3]^=x,h[4]^=w,h[5]^=b,h[6]^=C,h[7]^=x;for(var g=0;g<4;g++)l.call(this)}},_doProcessBlock:function(d,u){var f=this._X;l.call(this),s[0]=f[0]^f[5]>>>16^f[3]<<16,s[1]=f[2]^f[7]>>>16^f[5]<<16,s[2]=f[4]^f[1]>>>16^f[7]<<16,s[3]=f[6]^f[3]>>>16^f[1]<<16;for(var h=0;h<4;h++)s[h]=(s[h]<<8|s[h]>>>24)&16711935|(s[h]<<24|s[h]>>>8)&4278255360,d[u+h]^=s[h]},blockSize:128/32,ivSize:64/32});function l(){for(var d=this._X,u=this._C,f=0;f<8;f++)o[f]=u[f];u[0]=u[0]+1295307597+this._b|0,u[1]=u[1]+3545052371+(u[0]>>>0>>0?1:0)|0,u[2]=u[2]+886263092+(u[1]>>>0>>0?1:0)|0,u[3]=u[3]+1295307597+(u[2]>>>0>>0?1:0)|0,u[4]=u[4]+3545052371+(u[3]>>>0>>0?1:0)|0,u[5]=u[5]+886263092+(u[4]>>>0>>0?1:0)|0,u[6]=u[6]+1295307597+(u[5]>>>0>>0?1:0)|0,u[7]=u[7]+3545052371+(u[6]>>>0>>0?1:0)|0,this._b=u[7]>>>0>>0?1:0;for(var f=0;f<8;f++){var h=d[f]+u[f],g=h&65535,p=h>>>16,I=((g*g>>>17)+g*p>>>15)+p*p,y=((h&4294901760)*h|0)+((h&65535)*h|0);a[f]=I^y}d[0]=a[0]+(a[7]<<16|a[7]>>>16)+(a[6]<<16|a[6]>>>16)|0,d[1]=a[1]+(a[0]<<8|a[0]>>>24)+a[7]|0,d[2]=a[2]+(a[1]<<16|a[1]>>>16)+(a[0]<<16|a[0]>>>16)|0,d[3]=a[3]+(a[2]<<8|a[2]>>>24)+a[1]|0,d[4]=a[4]+(a[3]<<16|a[3]>>>16)+(a[2]<<16|a[2]>>>16)|0,d[5]=a[5]+(a[4]<<8|a[4]>>>24)+a[3]|0,d[6]=a[6]+(a[5]<<16|a[5]>>>16)+(a[4]<<16|a[4]>>>16)|0,d[7]=a[7]+(a[6]<<8|a[6]>>>24)+a[5]|0}e.RabbitLegacy=i._createHelper(c)})(),r.RabbitLegacy})});var b_=oe((gp,B_)=>{(function(r,e,t){typeof gp=="object"?B_.exports=gp=e(et(),Go(),zo(),Ts(),fr()):typeof define=="function"&&define.amd?define(["./core","./enc-base64","./md5","./evpkdf","./cipher-core"],e):e(r.CryptoJS)})(gp,function(r){return(function(){var e=r,t=e.lib,i=t.BlockCipher,n=e.algo;let s=16,o=[608135816,2242054355,320440878,57701188,2752067618,698298832,137296536,3964562569,1160258022,953160567,3193202383,887688300,3232508343,3380367581,1065670069,3041331479,2450970073,2306472731],a=[[3509652390,2564797868,805139163,3491422135,3101798381,1780907670,3128725573,4046225305,614570311,3012652279,134345442,2240740374,1667834072,1901547113,2757295779,4103290238,227898511,1921955416,1904987480,2182433518,2069144605,3260701109,2620446009,720527379,3318853667,677414384,3393288472,3101374703,2390351024,1614419982,1822297739,2954791486,3608508353,3174124327,2024746970,1432378464,3864339955,2857741204,1464375394,1676153920,1439316330,715854006,3033291828,289532110,2706671279,2087905683,3018724369,1668267050,732546397,1947742710,3462151702,2609353502,2950085171,1814351708,2050118529,680887927,999245976,1800124847,3300911131,1713906067,1641548236,4213287313,1216130144,1575780402,4018429277,3917837745,3693486850,3949271944,596196993,3549867205,258830323,2213823033,772490370,2760122372,1774776394,2652871518,566650946,4142492826,1728879713,2882767088,1783734482,3629395816,2517608232,2874225571,1861159788,326777828,3124490320,2130389656,2716951837,967770486,1724537150,2185432712,2364442137,1164943284,2105845187,998989502,3765401048,2244026483,1075463327,1455516326,1322494562,910128902,469688178,1117454909,936433444,3490320968,3675253459,1240580251,122909385,2157517691,634681816,4142456567,3825094682,3061402683,2540495037,79693498,3249098678,1084186820,1583128258,426386531,1761308591,1047286709,322548459,995290223,1845252383,2603652396,3431023940,2942221577,3202600964,3727903485,1712269319,422464435,3234572375,1170764815,3523960633,3117677531,1434042557,442511882,3600875718,1076654713,1738483198,4213154764,2393238008,3677496056,1014306527,4251020053,793779912,2902807211,842905082,4246964064,1395751752,1040244610,2656851899,3396308128,445077038,3742853595,3577915638,679411651,2892444358,2354009459,1767581616,3150600392,3791627101,3102740896,284835224,4246832056,1258075500,768725851,2589189241,3069724005,3532540348,1274779536,3789419226,2764799539,1660621633,3471099624,4011903706,913787905,3497959166,737222580,2514213453,2928710040,3937242737,1804850592,3499020752,2949064160,2386320175,2390070455,2415321851,4061277028,2290661394,2416832540,1336762016,1754252060,3520065937,3014181293,791618072,3188594551,3933548030,2332172193,3852520463,3043980520,413987798,3465142937,3030929376,4245938359,2093235073,3534596313,375366246,2157278981,2479649556,555357303,3870105701,2008414854,3344188149,4221384143,3956125452,2067696032,3594591187,2921233993,2428461,544322398,577241275,1471733935,610547355,4027169054,1432588573,1507829418,2025931657,3646575487,545086370,48609733,2200306550,1653985193,298326376,1316178497,3007786442,2064951626,458293330,2589141269,3591329599,3164325604,727753846,2179363840,146436021,1461446943,4069977195,705550613,3059967265,3887724982,4281599278,3313849956,1404054877,2845806497,146425753,1854211946],[1266315497,3048417604,3681880366,3289982499,290971e4,1235738493,2632868024,2414719590,3970600049,1771706367,1449415276,3266420449,422970021,1963543593,2690192192,3826793022,1062508698,1531092325,1804592342,2583117782,2714934279,4024971509,1294809318,4028980673,1289560198,2221992742,1669523910,35572830,157838143,1052438473,1016535060,1802137761,1753167236,1386275462,3080475397,2857371447,1040679964,2145300060,2390574316,1461121720,2956646967,4031777805,4028374788,33600511,2920084762,1018524850,629373528,3691585981,3515945977,2091462646,2486323059,586499841,988145025,935516892,3367335476,2599673255,2839830854,265290510,3972581182,2759138881,3795373465,1005194799,847297441,406762289,1314163512,1332590856,1866599683,4127851711,750260880,613907577,1450815602,3165620655,3734664991,3650291728,3012275730,3704569646,1427272223,778793252,1343938022,2676280711,2052605720,1946737175,3164576444,3914038668,3967478842,3682934266,1661551462,3294938066,4011595847,840292616,3712170807,616741398,312560963,711312465,1351876610,322626781,1910503582,271666773,2175563734,1594956187,70604529,3617834859,1007753275,1495573769,4069517037,2549218298,2663038764,504708206,2263041392,3941167025,2249088522,1514023603,1998579484,1312622330,694541497,2582060303,2151582166,1382467621,776784248,2618340202,3323268794,2497899128,2784771155,503983604,4076293799,907881277,423175695,432175456,1378068232,4145222326,3954048622,3938656102,3820766613,2793130115,2977904593,26017576,3274890735,3194772133,1700274565,1756076034,4006520079,3677328699,720338349,1533947780,354530856,688349552,3973924725,1637815568,332179504,3949051286,53804574,2852348879,3044236432,1282449977,3583942155,3416972820,4006381244,1617046695,2628476075,3002303598,1686838959,431878346,2686675385,1700445008,1080580658,1009431731,832498133,3223435511,2605976345,2271191193,2516031870,1648197032,4164389018,2548247927,300782431,375919233,238389289,3353747414,2531188641,2019080857,1475708069,455242339,2609103871,448939670,3451063019,1395535956,2413381860,1841049896,1491858159,885456874,4264095073,4001119347,1565136089,3898914787,1108368660,540939232,1173283510,2745871338,3681308437,4207628240,3343053890,4016749493,1699691293,1103962373,3625875870,2256883143,3830138730,1031889488,3479347698,1535977030,4236805024,3251091107,2132092099,1774941330,1199868427,1452454533,157007616,2904115357,342012276,595725824,1480756522,206960106,497939518,591360097,863170706,2375253569,3596610801,1814182875,2094937945,3421402208,1082520231,3463918190,2785509508,435703966,3908032597,1641649973,2842273706,3305899714,1510255612,2148256476,2655287854,3276092548,4258621189,236887753,3681803219,274041037,1734335097,3815195456,3317970021,1899903192,1026095262,4050517792,356393447,2410691914,3873677099,3682840055],[3913112168,2491498743,4132185628,2489919796,1091903735,1979897079,3170134830,3567386728,3557303409,857797738,1136121015,1342202287,507115054,2535736646,337727348,3213592640,1301675037,2528481711,1895095763,1721773893,3216771564,62756741,2142006736,835421444,2531993523,1442658625,3659876326,2882144922,676362277,1392781812,170690266,3921047035,1759253602,3611846912,1745797284,664899054,1329594018,3901205900,3045908486,2062866102,2865634940,3543621612,3464012697,1080764994,553557557,3656615353,3996768171,991055499,499776247,1265440854,648242737,3940784050,980351604,3713745714,1749149687,3396870395,4211799374,3640570775,1161844396,3125318951,1431517754,545492359,4268468663,3499529547,1437099964,2702547544,3433638243,2581715763,2787789398,1060185593,1593081372,2418618748,4260947970,69676912,2159744348,86519011,2512459080,3838209314,1220612927,3339683548,133810670,1090789135,1078426020,1569222167,845107691,3583754449,4072456591,1091646820,628848692,1613405280,3757631651,526609435,236106946,48312990,2942717905,3402727701,1797494240,859738849,992217954,4005476642,2243076622,3870952857,3732016268,765654824,3490871365,2511836413,1685915746,3888969200,1414112111,2273134842,3281911079,4080962846,172450625,2569994100,980381355,4109958455,2819808352,2716589560,2568741196,3681446669,3329971472,1835478071,660984891,3704678404,4045999559,3422617507,3040415634,1762651403,1719377915,3470491036,2693910283,3642056355,3138596744,1364962596,2073328063,1983633131,926494387,3423689081,2150032023,4096667949,1749200295,3328846651,309677260,2016342300,1779581495,3079819751,111262694,1274766160,443224088,298511866,1025883608,3806446537,1145181785,168956806,3641502830,3584813610,1689216846,3666258015,3200248200,1692713982,2646376535,4042768518,1618508792,1610833997,3523052358,4130873264,2001055236,3610705100,2202168115,4028541809,2961195399,1006657119,2006996926,3186142756,1430667929,3210227297,1314452623,4074634658,4101304120,2273951170,1399257539,3367210612,3027628629,1190975929,2062231137,2333990788,2221543033,2438960610,1181637006,548689776,2362791313,3372408396,3104550113,3145860560,296247880,1970579870,3078560182,3769228297,1714227617,3291629107,3898220290,166772364,1251581989,493813264,448347421,195405023,2709975567,677966185,3703036547,1463355134,2715995803,1338867538,1343315457,2802222074,2684532164,233230375,2599980071,2000651841,3277868038,1638401717,4028070440,3237316320,6314154,819756386,300326615,590932579,1405279636,3267499572,3150704214,2428286686,3959192993,3461946742,1862657033,1266418056,963775037,2089974820,2263052895,1917689273,448879540,3550394620,3981727096,150775221,3627908307,1303187396,508620638,2975983352,2726630617,1817252668,1876281319,1457606340,908771278,3720792119,3617206836,2455994898,1729034894,1080033504],[976866871,3556439503,2881648439,1522871579,1555064734,1336096578,3548522304,2579274686,3574697629,3205460757,3593280638,3338716283,3079412587,564236357,2993598910,1781952180,1464380207,3163844217,3332601554,1699332808,1393555694,1183702653,3581086237,1288719814,691649499,2847557200,2895455976,3193889540,2717570544,1781354906,1676643554,2592534050,3230253752,1126444790,2770207658,2633158820,2210423226,2615765581,2414155088,3127139286,673620729,2805611233,1269405062,4015350505,3341807571,4149409754,1057255273,2012875353,2162469141,2276492801,2601117357,993977747,3918593370,2654263191,753973209,36408145,2530585658,25011837,3520020182,2088578344,530523599,2918365339,1524020338,1518925132,3760827505,3759777254,1202760957,3985898139,3906192525,674977740,4174734889,2031300136,2019492241,3983892565,4153806404,3822280332,352677332,2297720250,60907813,90501309,3286998549,1016092578,2535922412,2839152426,457141659,509813237,4120667899,652014361,1966332200,2975202805,55981186,2327461051,676427537,3255491064,2882294119,3433927263,1307055953,942726286,933058658,2468411793,3933900994,4215176142,1361170020,2001714738,2830558078,3274259782,1222529897,1679025792,2729314320,3714953764,1770335741,151462246,3013232138,1682292957,1483529935,471910574,1539241949,458788160,3436315007,1807016891,3718408830,978976581,1043663428,3165965781,1927990952,4200891579,2372276910,3208408903,3533431907,1412390302,2931980059,4132332400,1947078029,3881505623,4168226417,2941484381,1077988104,1320477388,886195818,18198404,3786409e3,2509781533,112762804,3463356488,1866414978,891333506,18488651,661792760,1628790961,3885187036,3141171499,876946877,2693282273,1372485963,791857591,2686433993,3759982718,3167212022,3472953795,2716379847,445679433,3561995674,3504004811,3574258232,54117162,3331405415,2381918588,3769707343,4154350007,1140177722,4074052095,668550556,3214352940,367459370,261225585,2610173221,4209349473,3468074219,3265815641,314222801,3066103646,3808782860,282218597,3406013506,3773591054,379116347,1285071038,846784868,2669647154,3771962079,3550491691,2305946142,453669953,1268987020,3317592352,3279303384,3744833421,2610507566,3859509063,266596637,3847019092,517658769,3462560207,3443424879,370717030,4247526661,2224018117,4143653529,4112773975,2788324899,2477274417,1456262402,2901442914,1517677493,1846949527,2295493580,3734397586,2176403920,1280348187,1908823572,3871786941,846861322,1172426758,3287448474,3383383037,1655181056,3139813346,901632758,1897031941,2986607138,3066810236,3447102507,1393639104,373351379,950779232,625454576,3124240540,4148612726,2007998917,544563296,2244738638,2330496472,2058025392,1291430526,424198748,50039436,29584100,3605783033,2429876329,2791104160,1057563949,3255363231,3075367218,3463963227,1469046755,985887462]];var c={pbox:[],sbox:[]};function l(g,p){let I=p>>24&255,y=p>>16&255,w=p>>8&255,C=p&255,b=g.sbox[0][I]+g.sbox[1][y];return b=b^g.sbox[2][w],b=b+g.sbox[3][C],b}function d(g,p,I){let y=p,w=I,C;for(let b=0;b1;--b)y=y^g.pbox[b],w=l(g,y)^w,C=y,y=w,w=C;return C=y,y=w,w=C,w=w^g.pbox[1],y=y^g.pbox[0],{left:y,right:w}}function f(g,p,I){for(let x=0;x<4;x++){g.sbox[x]=[];for(let _=0;_<256;_++)g.sbox[x][_]=a[x][_]}let y=0;for(let x=0;x=I&&(y=0);let w=0,C=0,b=0;for(let x=0;x{(function(r,e,t){typeof pp=="object"?v_.exports=pp=e(et(),Ju(),EQ(),bQ(),Go(),SQ(),zo(),QC(),Hg(),PQ(),_C(),RQ(),qQ(),MQ(),Vg(),KQ(),Ts(),fr(),jQ(),VQ(),WQ(),ZQ(),t_(),i_(),s_(),a_(),l_(),u_(),A_(),g_(),m_(),I_(),x_(),E_(),b_()):typeof define=="function"&&define.amd?define(["./core","./x64-core","./lib-typedarrays","./enc-utf16","./enc-base64","./enc-base64url","./md5","./sha1","./sha256","./sha224","./sha512","./sha384","./sha3","./ripemd160","./hmac","./pbkdf2","./evpkdf","./cipher-core","./mode-cfb","./mode-ctr","./mode-ctr-gladman","./mode-ofb","./mode-ecb","./pad-ansix923","./pad-iso10126","./pad-iso97971","./pad-zeropadding","./pad-nopadding","./format-hex","./aes","./tripledes","./rc4","./rabbit","./rabbit-legacy","./blowfish"],e):r.CryptoJS=e(r.CryptoJS)})(pp,function(r){return r})});function Ac(r){return Wi.default.MD5(r).toString(Wi.default.enc.Hex)}function k_(r,e){let t=e.match(/:\/\/[^/]+((\/[^/\s?#]+)*)/),i=t?t[1]:e;return`${r}:${i}`}function S_(r,e){let t=`${r}${e}${F_}${cz}`,i=Wi.default.SHA1(t).toString(Wi.default.enc.Hex),n=Wi.default.MD5(i).toString(Wi.default.enc.Hex);return`div101.${r}${n}`}function P_(r){let e=r.length,t=262144;for(;e/t>512&&t<2097152;)t=t<<1;let i=[];for(let s=0;s{"use strict";Wi=Qr(fc(),1),D_="https://api-pan.xunlei.com/drive/v1",Us=`${D_}/files`,g0e=`${D_}/tasks`,Q_="https://xluser-ssl.xunlei.com",mp=`${Q_}/v1`,FC="drive#folder",__="drive#file",PC="UPLOAD_TYPE_RESUMABLE",az="access_end_point_token",F_="40",cz="34a062aaa22f906fca4fefe9fb3a3021";ju=class{options;tokenResp=null;coreLoginResp=null;captchaToken="";creditKey="";constructor(e){this.options=e,this.captchaToken=e.captchaToken||"",this.creditKey=e.creditKey||""}getCaptchaSign(){if(!this.options.algorithms||this.options.algorithms.length===0)return{timestamp:this.options.timestamp||"",sign:this.options.captchaSign||""};let e=Date.now().toString(),t=`${this.options.clientId}${this.options.clientVersion}${this.options.packageName}${this.options.deviceId}${e}`;for(let i of this.options.algorithms)t=Ac(t+i);return{timestamp:e,sign:`1.${t}`}}async refreshCaptchaToken(e,t){let i={action:e,captcha_token:this.captchaToken,client_id:this.options.clientId,device_id:this.options.deviceId,meta:t,redirect_uri:"xlaccsdk01://xunlei.com/callback?state=harbor"},n=await this.rawRequest(`${mp}/shield/captcha/init`,{method:"POST",body:i});if(n.error_code||n.error&&n.error!=="success")throw new Error(`Captcha error: ${n.error_code} ${n.error} ${n.error_description||""}`);if(n.url)throw new Error(`need verify: Click Here`);if(!n.captcha_token)throw new Error("empty captchaToken");this.captchaToken=n.captcha_token,this.options.onPersistCaptchaToken&&await this.options.onPersistCaptchaToken(n.captcha_token)}async refreshCaptchaTokenAtLogin(e,t){let{timestamp:i,sign:n}=this.getCaptchaSign(),s={client_version:this.options.clientVersion,package_name:this.options.packageName,user_id:t,timestamp:i,captcha_sign:n};await this.refreshCaptchaToken(e,s)}async refreshCaptchaTokenInLogin(e,t){let i={};/\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/.test(t)?i.email=t:t.length>=11&&t.length<=18?i.phone_number=t:i.username=t,await this.refreshCaptchaToken(e,i)}formatReviewData(e){let t=S_(this.options.deviceId,this.options.packageName),i={creditkey:e.creditkey,reviewurl:`${e.reviewurl}&deviceid=${t}`,deviceid:t,devicesign:t},s=`

\u{1F512} \u672C\u6B21\u767B\u5F55\u9700\u8981\u9A8C\u8BC1
@@ -60,10 +76,10 @@ ${d}${u}`,h=await hu(f,e.AccessKeySecret),g=await fetch(s,{method:"PUT",headers:
${JSON.stringify(i,null,2)}
-

`;return new Error(s)}async rawRequest(e,t={}){let i={"user-agent":this.options.userAgent,accept:"application/json;charset=UTF-8","x-device-id":this.options.deviceId,"x-client-id":this.options.clientId,"x-client-version":this.options.clientVersion,...t.headers||{}},n;t.body!==void 0&&(typeof t.body=="string"?n=t.body:(n=JSON.stringify(t.body),i["content-type"]||(i["content-type"]="application/json;charset=UTF-8")));let s=await fetch(e,{method:t.method||"GET",headers:i,body:n}),o=await s.text(),a={};try{a=JSON.parse(o)}catch{if(!s.ok)throw new Error(`${s.status} ${s.statusText}: ${o}`);return o}if(a.error==="review_panel")throw this.formatReviewData(a);return a}async authRequest(e,t={}){if(!this.tokenResp?.access_token)throw new Error("empty token");let i={Authorization:`${this.tokenResp.token_type} ${this.tokenResp.access_token}`,"X-Captcha-Token":this.captchaToken,...t.headers||{}},n=await this.rawRequest(e,{...t,headers:i}),s=n?.error_code||0;if(s===4122||s===4121||s===10||s===16){if(this.tokenResp?.refresh_token){let o=await this.refreshToken(this.tokenResp.refresh_token);return this.tokenResp=o,this.options.onPersistToken&&await this.options.onPersistToken(o),this.authRequest(e,t)}throw new Error(`Token expired error ${s}`)}else if(s===9){let o=YQ(t.method||"GET",e);return await this.refreshCaptchaTokenAtLogin(o,this.tokenResp.user_id||""),this.authRequest(e,t)}else if(s!==0||n.error&&n.error!=="success")throw new Error(`ErrorCode: ${n.error_code||0}, Error: ${n.error||""}, ErrorDescription: ${n.error_description||""}`);return n}async coreLogin(e,t){let i=`${ZQ}/xluser.core.login/v3/login`,n={protocolVersion:"301",sequenceNo:"1000012",platformVersion:"10",isCompressed:"0",appid:t_,clientVersion:this.options.clientVersion,peerID:"00000000000000000000000000000000",appName:"ANDROID-com.xunlei.downloadprovider",sdkVersion:"512000",devicesign:WQ(this.options.deviceId,this.options.packageName),netWorkType:"WIFI",providerName:"NONE",deviceModel:"M2004J7AC",deviceName:"Xiaomi_M2004j7ac",OSVersion:"12",creditkey:this.creditKey,hl:"zh-CN",userName:e,passWord:t,verifyKey:"",verifyCode:"",isMd5Pwd:"0"},s=await this.rawRequest(i,{method:"POST",body:n,headers:{"user-agent":"android-ok-http-client/xl-acc-sdk/version-5.0.12.512000"}});return this.coreLoginResp=s,s}async login(e,t){let n=(await this.coreLogin(e,t)).sessionID,s=`${sp}/auth/signin/token`;await this.refreshCaptchaTokenInLogin(YQ("POST",s),e);let o=await this.rawRequest(s,{method:"POST",body:{client_id:this.options.clientId,client_secret:this.options.clientSecret,provider:yG,signin_token:n}});return this.tokenResp=o,this.creditKey="",this.options.onPersistToken&&await this.options.onPersistToken(o),o}async refreshToken(e){let t=`${sp}/auth/token`,i=await this.rawRequest(t,{method:"POST",body:{grant_type:"refresh_token",refresh_token:e,client_id:this.options.clientId,client_secret:this.options.clientSecret}});return this.tokenResp=i,this.options.onPersistToken&&await this.options.onPersistToken(i),i}async isLogin(){if(!this.tokenResp?.access_token)return!1;try{return await this.authRequest(`${sp}/user/me`,{method:"GET"}),!0}catch{return!1}}}});function n_(r,e,t){let i=r.kind===hC,n=r.web_content_link||"";if(t&&r.medias&&r.medias.length>0){for(let s of r.medias)if(s.link?.url){n=s.link.url;break}}return{name:r.name,size:parseInt(r.size||"0",10),is_dir:i,modified:r.modified_time||r.created_time||new Date().toISOString(),sign:"",type:X(r.name,i),thumb:r.thumbnail_link||r.icon_link||"",raw_url:n,raw_url_headers:{"User-Agent":e}}}function s_(r){if(r?.device_id&&r.device_id.trim().length===32)return r.device_id.trim();let e=`${r?.username||""}${r?.password||""}`;return e.trim()?dc(e):dc(Math.random().toString(36)+Date.now().toString(36))}var Nu,op,o_=V(()=>{"use strict";Be();He();i_();Nu=class{client;addition;identity="";onPersistCallback;constructor(e,t){this.addition=e,this.onPersistCallback=t;let i=s_(e);e.device_id=i,this.client=new Ru({deviceId:i,clientId:e.client_id||"",clientSecret:e.client_secret||"",clientVersion:"8.31.0.9726",packageName:"com.xunlei.downloadprovider",userAgent:"ANDROID-com.xunlei.downloadprovider/8.31.0.9726 netWorkType/5G appid/40 deviceName/Xiaomi_M2004j7ac deviceModel/M2004J7AC OSVersion/12 protocolVersion/301 platformVersion/10 sdkVersion/512000 Oauth2Client/0.9 (Linux 4_14_186-perf-gddfs8vbb238b) (JAVA 0)",downloadUserAgent:"Dalvik/2.1.0 (Linux; U; Android 12; M2004J7AC Build/SP1A.210812.016)",algorithms:["9uJNVj/wLmdwKrJaVj/omlQ","Oz64Lp0GigmChHMf/6TNfxx7O9PyopcczMsnf","Eb+L7Ce+Ej48u","jKY0","ASr0zCl6v8W4aidjPK5KHd1Lq3t+vBFf41dqv5+fnOd","wQlozdg6r1qxh0eRmt3QgNXOvSZO6q/GXK","gmirk+ciAvIgA/cxUUCema47jr/YToixTT+Q6O","5IiCoM9B1/788ntB","P07JH0h6qoM6TSUAK2aL9T5s2QBVeY9JWvalf","+oK0AN"],space:e.space||"",captchaToken:e.captcha_token||"",creditKey:e.credit_key||"",onPersistToken:async n=>{this.onPersistCallback&&await this.onPersistCallback({refresh_token:n.refresh_token,captcha_token:this.client.captchaToken,device_id:i})},onPersistCaptchaToken:async n=>{this.onPersistCallback&&await this.onPersistCallback({captcha_token:n})}})}get downloadUserAgent(){return this.addition.download_user_agent||"Dalvik/2.1.0 (Linux; U; Android 12; M2004J7AC Build/SP1A.210812.016)"}get useVideoUrl(){return!!this.addition.use_video_url}async init(){let e=this.addition.username||"",t=this.addition.password||"",i=dc(`${e}${t}`);(this.identity!==i||!await this.client.isLogin())&&(this.identity=i,await this.client.login(e,t))}resolveFolderId(e){if(!e||e==="/"||e==="0")return this.addition.root_folder_id||"";let t=e.split("/").filter(Boolean);return t[t.length-1]||this.addition.root_folder_id||""}async list(e,t){let i=this.resolveFolderId(t),n=[],s="";for(;;){let o=new URL(Ts);o.searchParams.set("space",this.addition.space||""),o.searchParams.set("__type","drive"),o.searchParams.set("refresh","true"),o.searchParams.set("__sync","true"),o.searchParams.set("parent_id",i),o.searchParams.set("page_token",s),o.searchParams.set("with_audit","true"),o.searchParams.set("limit","100"),o.searchParams.set("filters",JSON.stringify({phase:{eq:"PHASE_TYPE_COMPLETE"},trashed:{eq:!1}}));let a=await this.client.authRequest(o.toString(),{method:"GET"});if(a.files&&a.files.length>0)for(let c of a.files)n.push(n_(c,this.downloadUserAgent,this.useVideoUrl));if(!a.next_page_token)break;s=a.next_page_token}return de(n,this.addition.order_by,this.addition.order_direction)}async get(e,t){let i=this.resolveFolderId(t),n=new URL(`${Ts}/${i}`);n.searchParams.set("space",this.addition.space||"");let s=await this.client.authRequest(n.toString(),{method:"GET"});return n_(s,this.downloadUserAgent,this.useVideoUrl)}async mkdir(e,t){let i=t.split("/").filter(Boolean),n=i.pop()||"new_folder",s="/"+i.join("/"),o=this.resolveFolderId(s);await this.client.authRequest(Ts,{method:"POST",body:{kind:hC,name:n,parent_id:o,space:this.addition.space||""}})}async rename(e,t,i){let n=this.resolveFolderId(t);await this.client.authRequest(`${Ts}/${n}`,{method:"PATCH",body:{name:i,space:this.addition.space||""}})}async remove(e,t,i){let n=this.resolveFolderId(t),s=new URL(`${Ts}/${n}/trash`);s.searchParams.set("space",this.addition.space||""),await this.client.authRequest(s.toString(),{method:"PATCH",body:{}})}async move(e,t,i,n,s){let o=this.resolveFolderId(n),a=this.resolveFolderId(t);await this.client.authRequest(`${Ts}:batchMove`,{method:"POST",body:{to:{parent_id:a},ids:[o],space:this.addition.space||""}})}async copy(e,t,i,n,s){let o=this.resolveFolderId(n),a=this.resolveFolderId(t);await this.client.authRequest(`${Ts}:batchCopy`,{method:"POST",body:{to:{parent_id:a},ids:[o],space:this.addition.space||""}})}async put(e,t,i){let n=t.split("/").filter(Boolean),s=n.pop()||"file",o="/"+n.join("/"),a=this.resolveFolderId(o),c=r_(i),l=await this.client.authRequest(Ts,{method:"POST",body:{kind:e_,parent_id:a,name:s,size:i.length.toString(),hash:c,upload_type:gC,space:this.addition.space||""}});if(l.upload_type===gC&&l.resumable?.params){let d=l.resumable.params,u=d.endpoint;u.startsWith(d.bucket+".")&&(u=u.slice(d.bucket.length+1)),!u.startsWith("http://")&&!u.startsWith("https://")&&(u=`https://${u}`);let f=`${u.replace(/\/$/,"")}/${d.bucket}/${d.key}`,h={"x-amz-security-token":d.security_token},g=await fetch(f,{method:"PUT",headers:h,body:i});if(!g.ok)throw new Error(`S3 Upload failed: ${g.status} ${g.statusText}`)}}},op=class extends Nu{constructor(e,t){super(e,t);let i=s_(e);e.device_id=i;let n=e.sign_type==="captcha_sign"?void 0:(e.algorithms||"").split(",").map(s=>s.trim()).filter(Boolean);this.client=new Ru({deviceId:i,clientId:e.client_id||"",clientSecret:e.client_secret||"",clientVersion:e.client_version||"8.31.0.9726",packageName:e.package_name||"com.xunlei.downloadprovider",userAgent:e.user_agent||"ANDROID-com.xunlei.downloadprovider/8.31.0.9726 netWorkType/5G appid/40 deviceName/Xiaomi_M2004j7ac deviceModel/M2004J7AC OSVersion/12 protocolVersion/301 platformVersion/10 sdkVersion/512000 Oauth2Client/0.9 (Linux 4_14_186-perf-gddfs8vbb238b) (JAVA 0)",downloadUserAgent:e.download_user_agent||"Dalvik/2.1.0 (Linux; U; Android 12; M2004J7AC Build/SP1A.210812.016)",algorithms:n&&n.length>0?n:void 0,timestamp:e.timestamp,captchaSign:e.captcha_sign,useVideoUrl:e.use_video_url,space:e.space||"",captchaToken:e.captcha_token||"",creditKey:e.credit_key||"",onPersistToken:async s=>{this.onPersistCallback&&await this.onPersistCallback({refresh_token:s.refresh_token,captcha_token:this.client.captchaToken,device_id:i})},onPersistCaptchaToken:async s=>{this.onPersistCallback&&await this.onPersistCallback({captcha_token:s})}})}async init(){let e=this.addition,t="";e.login_type==="refresh_token"?t=dc(e.refresh_token||""):t=dc(`${e.username||""}${e.password||""}`),(this.identity!==t||!await this.client.isLogin())&&(this.identity=t,e.login_type==="refresh_token"&&e.refresh_token?await this.client.refreshToken(e.refresh_token):e.username&&e.password&&await this.client.login(e.username,e.password))}}});function a_(r){if(!r)return new Date().toISOString();let e=r.trim(),t=new Date(e);if(!isNaN(t.getTime()))return t.toISOString();let i=Date.now(),n=864e5,s=e.match(wG);if(s){let o=parseFloat(s[1])||0,a=s[2];if(a.includes("\u79D2\u524D"))return new Date(i-o*1e3).toISOString();if(a.includes("\u5206")||a.includes("\u5206\u949F\u524D"))return new Date(i-o*6e4).toISOString();if(a.includes("\u5C0F\u65F6\u524D")||a.includes("\u5C0F\u65F6"))return new Date(i-o*36e5).toISOString();if(a.includes("\u5929\u524D")||a.includes("\u5929"))return new Date(i-o*n).toISOString();if(a.includes("\u6628\u5929"))return new Date(i-n).toISOString();if(a.includes("\u524D\u5929"))return new Date(i-n*2).toISOString()}return new Date().toISOString()}function c_(r){if(!r)return 0;let e=r.trim().match(xG);if(!e)return 0;let t=parseFloat(e[1]);switch(e[2].toUpperCase()){case"B":return Math.floor(t);case"K":return Math.floor(t*1024);case"M":return Math.floor(t*1048576);case"G":return Math.floor(t*1073741824);default:return 0}}function qu(r){return r.replace(/|[^:]\/\/.*|\/\*[\s\S]*?\*\//g,e=>e.slice(1,3)==="//"?e.slice(0,1):` -`)}function l_(r){let e="",t=!1,i=!1;for(let n=0;n{for(let n=i.length-1;n>=0;n--){let s=(i[n][1]||"").trim().replace(/^['"]|['"]$/g,"");if(s)return s}return""};if(r!=="sasign"){let i=Array.from(e.matchAll(new RegExp(`(?:var|let|const)\\s+${r}\\s*=\\s*['"]?([\\s\\S]*?)['"]?;`,"gi")));if(i.length){let o=t(i);if(o)return o}let n=Array.from(e.matchAll(new RegExp(`(?:^|[;,\\s])${r}\\s*=\\s*['"]?([\\s\\S]*?)['"]?;`,"gim")));if(n.length){let o=t(n);if(o)return o}let s=Array.from(e.matchAll(new RegExp(`['"]?${r}['"]?\\s*:\\s*['"]?([\\s\\S]*?)['"]?`,"gi")));if(s.length){let o=t(s);if(o)return o}}else{let i=Array.from(e.matchAll(new RegExp(`(?:var|let|const)?\\s*${r}\\s*=\\s*['"]?([\\s\\S]*?)['"]?;`,"gi")));if(i.length===3)return i[1][1].trim().replace(/^['"]|['"]$/g,"");if(i.length>0)return t(i)}return""}function vG(r,e){let t={},i=/['"]?([a-zA-Z0-9_$]+)['"]?\s*:\s*(['"]?([^'",}\s]+)['"]?)/g,n=r.matchAll(i);for(let s of n){let o=s[1],a=s[2],c=s[3];if(!c)t[o]="";else if(a.includes("'")||a.includes('"')||/^\d+$/.test(a))t[o]=c;else{let l=bG(c,e);t[o]=l!==""?l:c}}return t}function kG(r){let e={},t=r.split("&");for(let i of t){let[n,s]=i.split("=");n&&(e[decodeURIComponent(n)]=decodeURIComponent(s||""))}return e}function Ql(r,e){let t=e||r,i=Array.from(r.matchAll(/data\s*:\s*({[\s\S]*?})/g));if(i.length>0){let s=i[0][1];for(let a of i)a[1].length>s.length&&(s=a[1]);let o=vG(s,t);if(Object.keys(o).length>0)return o}let n=r.match(/data\s*:\s*['"]([^'"]+)['"]/);if(n&&n[1].includes("="))return kG(n[1]);throw new Error("[Lanzou] \u672A\u80FD\u627E\u5230\u8BF7\u6C42\u53C2\u6570 data \u5BF9\u8C61")}function d_(r,e){let t=new RegExp(`function\\s+${e}\\s*\\([^)]*\\)\\s*\\{`,"i"),i=r.search(t);if(i===-1)throw new Error(`[Lanzou] \u672A\u627E\u5230\u51FD\u6570 ${e}`);let n=0,s=-1;for(let o=i;o{"use strict";wG=/([0-9.]*)\s*([\u4e00-\u9fa5]+)/,xG=/([0-9.]+)\s*([bkm]+)/i,CG=/arg1='([0-9A-Z]+)'/i});function lp(r,e){try{let t=new URL(r);return t.host=e,t.toString()}catch{return r}}function dp(r){try{return new URL(r).host}catch{return""}}var cp,mC,up,u_=V(()=>{"use strict";pC();cp=["pan.lanzoui.com","lanzouw.com","lanzoux.com","lanzouy.com","lanzou.com"],mC="[Lanzou] Cookie \u5DF2\u8FC7\u671F\u6216\u5931\u6548\uFF0C\u8BF7\u5728\u7BA1\u7406\u540E\u53F0\u91CD\u65B0\u586B\u5199 Cookie\uFF08\u6709\u6548\u671F\u7EA6 15 \u5929\uFF09",up=class{addition;cookie="";uid="";vei="";onCookieUpdate;acwMap=new Map;workingShareHost="";constructor(e,t){this.addition=e,this.cookie=(e.cookie||"").trim(),this.onCookieUpdate=t}getBaseUrl(){return(this.addition.baseUrl||this.addition.base_url||"https://pc.woozooo.com").replace(/\/$/,"")}getShareUrl(){return(this.addition.shareUrl||this.addition.share_url||"https://pan.lanzoui.com").replace(/\/$/,"")}shareHost(){try{return new URL(this.getShareUrl()).host}catch{return"pan.lanzoui.com"}}getUserAgent(){return this.addition.user_agent||"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"}getCookie(){return this.cookie}updateCookie(e,t){if(!e)return;let i=e.match(/(?:^|,\s*)acw_sc__v2=([^;,\s]+)/i);i&&i[1]&&this.acwMap.set(t||this.shareHost(),i[1]);let n=this.cookie?this.cookie.split(";").map(a=>a.trim()):[],s=e.split(/,(?=[a-zA-Z0-9_\-]+=[^;]+)/);for(let a of s){let c=a.split(";")[0].trim(),l=c.indexOf("=");if(l>0){let d=c.slice(0,l).trim(),u=c.slice(l+1).trim(),f=n.findIndex(h=>h.startsWith(`${d}=`));f!==-1?n[f]=`${d}=${u}`:n.push(`${d}=${u}`)}}let o=n.filter(Boolean).join("; ");o!==this.cookie&&(this.cookie=o,this.onCookieUpdate?.(this.cookie))}async init(){let e=this.addition.type||"cookie";if(e==="account"?(await this.login(),await this.initVeiAndUid()):e==="cookie"&&this.cookie&&await this.initVeiAndUid(),!this.acwMap.has(this.shareHost()))try{await this.request(`${this.getShareUrl()}/`,"GET")}catch{}}async probeShareDomain(e){let t=(e||"").replace(/^\//,"");if(!t)return this.getShareUrl();try{let i=await this.request(`${this.getShareUrl()}/${t}`,"GET");return this.extractRealShareDomain(i)||this.getShareUrl()}catch{return this.getShareUrl()}}extractRealShareDomain(e){let t=[],i=e.match(/]*?src=["'](https?:\/\/[^"'/]+)/i);i&&t.push(i[1]);let n=e.match(/["'](https?:\/\/[^"']*?\/fn\?[^"']*)["']/i);n&&t.push(n[1]);let s=e.match(/["']?(?:dom|url)\s*[:=]\s*["']?(https?:\/\/[^"'\s]+)/i);s&&t.push(s[1]);for(let o of t)try{let a=new URL(o);return`${a.protocol}//${a.host}`}catch{}return""}async login(){if(!this.addition.account||!this.addition.password)throw new Error("[Lanzou] \u8D26\u53F7\u6A21\u5F0F\u4E0B\u5FC5\u987B\u63D0\u4F9B\u8D26\u53F7\u4E0E\u5BC6\u7801");for(let e=0;e<3;e++){let t={"User-Agent":this.getUserAgent(),Referer:"https://pc.woozooo.com","Content-Type":"application/x-www-form-urlencoded"};this.acwMap.has("up.woozooo.com")&&(t.Cookie=`acw_sc__v2=${this.acwMap.get("up.woozooo.com")}`);let i=await fetch("https://up.woozooo.com/mlogin.php",{method:"POST",headers:t,body:new URLSearchParams({task:"3",uid:this.addition.account,pwd:this.addition.password,setSessionId:"",setSig:"",setScene:"",setTocen:"",formhash:""})});this.updateCookie(i.headers.get("set-cookie"),"up.woozooo.com");let n=await i.text();if(n.includes("acw_sc__v2")){this.acwMap.set("up.woozooo.com",ap(n));continue}let s;try{s=JSON.parse(n)}catch{throw new Error(`[Lanzou] \u767B\u5F55\u54CD\u5E94\u5F02\u5E38: ${n.slice(0,200)}`)}if(s.zt!==1)throw new Error(`[Lanzou] \u767B\u5F55\u5931\u8D25: ${s.info||n}`);return}throw new Error("[Lanzou] \u767B\u5F55\u591A\u6B21\u89E6\u53D1 WAF \u6821\u9A8C\u5931\u8D25")}async initVeiAndUid(){let e=await this.request(`${this.getBaseUrl()}/mydisk.php?item=files&action=index`,"GET"),t=e.match(/uid=([^'"&;]+)/);if(!t)throw new Error(mC);this.uid=t[1];let i=qu(e);try{let n=Ql(i);this.vei=n.vei||""}catch{let n=e.match(/['"]?vei['"]?\s*:\s*['"]?([^'",\s]+)['"]?/);n&&(this.vei=n[1])}}async request(e,t="GET",i,n){let s=e,o=dp(e),a=o===this.shareHost()||cp.includes(o);a&&this.workingShareHost&&o!==this.workingShareHost&&(s=lp(e,this.workingShareHost));let c=a,l=c?cp.filter(u=>!e.includes(u)):[],d=u=>{let f=dp(u),h=f===this.shareHost()||cp.includes(f),g;return h?n&&cp.includes(dp(n))||n&&dp(n)===this.shareHost()?g=lp(n,f):g=`${new URL(u).origin}/`:g=n||this.getBaseUrl(),this.requestOnce(u,t,i,g,f)};try{return await d(s)}catch(u){if(!(c&&(u?.status===403||u?.status===405||/403|405/.test(u?.message||""))))throw u;for(let h of l){let g=lp(s,h);try{let p=await d(g);return this.workingShareHost=h,p}catch(p){if(!(p?.status===403||p?.status===405||/403|405/.test(p?.message||"")))throw p}}throw u}}async requestOnce(e,t,i,n,s){for(let o=0;o<3;o++){let a={Referer:n,"User-Agent":this.getUserAgent(),"Accept-Language":"zh-CN,zh;q=0.9,en;q=0.8","X-Requested-With":"XMLHttpRequest","Sec-Fetch-Dest":"empty","Sec-Fetch-Mode":"cors","Sec-Fetch-Site":"same-origin",Accept:"*/*"},c=(()=>{try{return new URL(n).host}catch{return""}})();c===s&&(a.Origin=n.slice(0,n.indexOf(c)+c.length));let l=this.cookie;e.includes("/file/")&&(l=(l?l+"; ":"")+"down_ip=1");let d=this.acwMap.get(s);d&&(l=(l?l+"; ":"")+`acw_sc__v2=${d}`),l&&(a.Cookie=l);let u;i&&t==="POST"&&(a["Content-Type"]="application/x-www-form-urlencoded; charset=UTF-8",u=new URLSearchParams(i).toString());let f=await fetch(e,{method:t,headers:a,body:u});if(this.updateCookie(f.headers.get("set-cookie"),s),f.status===403||f.status===405){let g=new Error(`[Lanzou] ${e} \u8FD4\u56DE HTTP ${f.status}`);throw g.status=f.status,g}if(f.status===429||f.status>=500||f.status===408){if(o<2){await new Promise(p=>setTimeout(p,300*(o+1)));continue}let g=new Error(`[Lanzou] ${e} \u8FD4\u56DE HTTP ${f.status}\uFF08\u591A\u6B21\u91CD\u8BD5\u4ECD\u5931\u8D25\uFF09`);throw g.status=f.status,g}let h=await f.text();if(h.includes("acw_sc__v2")){this.acwMap.set(s,ap(h));continue}return h}throw new Error("[Lanzou] \u8BF7\u6C42\u89E6\u53D1 acw_sc__v2 \u6821\u9A8C\u8D85\u9650")}async doupload(e){let t=`${this.getBaseUrl()}/doupload.php?uid=${this.uid}&vei=${this.vei}`,i=await this.request(t,"POST",e),n;try{n=JSON.parse(i)}catch{throw new Error(`[Lanzou] \u975E JSON \u54CD\u5E94: ${i.slice(0,200)}`)}if(n.zt===9){if(this.addition.type==="account")return await this.login(),await this.initVeiAndUid(),this.doupload(e);throw new Error(mC)}if(n.zt!==1&&n.zt!==2&&n.zt!==4)throw new Error(n.inf||n.info||`[Lanzou] API \u9519\u8BEF (zt: ${n.zt})`);return n}async checkCookieValid(){if(this.addition.type==="url")return{valid:!0};try{return this.addition.type==="account"?{valid:!0}:(await this.getFiles("-1"),{valid:!0})}catch(e){let t=e?.message||String(e);return{valid:!1,error:/Cookie 已过期|未能获取到 uid|请检查 Cookie|zt=9/i.test(t)?mC:t}}}async getAllFiles(e){let t=await this.getFolders(e),i=await this.getFiles(e);return[...t,...i]}async getFolders(e){return((await this.doupload({task:"47",folder_id:e||"-1"})).text||[]).map(n=>({...n,name:n.name,fol_id:n.fol_id||n.id,is_folder:!0}))}async getFiles(e){let t=[];for(let i=1;;i++){let s=(await this.doupload({task:"5",folder_id:e||"-1",pg:String(i)})).text||[];if(s.length===0)break;t.push(...s.map(o=>({...o,name_all:o.name_all||o.name,id:o.id,size:o.size,time:o.time,is_folder:!1})))}return t}async getFileShareUrlById(e){return(await this.doupload({task:"22",file_id:e})).info||{}}async getFileOrFolderByShareUrl(e,t=""){let i=e.replace(/^\//,""),n=await this.request(`${this.getShareUrl()}/${i}`,"GET");if(n.includes("\u53D6\u6D88\u5206\u4EAB"))throw new Error("[Lanzou] \u8BE5\u6587\u4EF6\u5DF2\u53D6\u6D88\u5206\u4EAB");if(n.includes("\u6587\u4EF6\u4E0D\u5B58\u5728"))throw new Error("[Lanzou] \u6587\u4EF6\u4E0D\u5B58\u5728");return/class="fileinfo"|id="file"|文件描述/i.test(n)?[await this.getFilesByShareUrl(i,t,n)]:this.getFolderByShareUrl(t,n)}async getFolderByShareUrl(e,t){let i=qu(t),n={};try{n=Ql(i)}catch{n={}}let s=[],o=Array.from(t.matchAll(/(?:folderlink|mbxfolder)[^>]*href=["']\/?([^"']+)["'][^>]*>(.+?)<\//gi));for(let a of o)s.push({id:a[1],name_all:a[2].trim(),is_folder:!0});n.pwd=e||this.addition.share_password||"";for(let a=1;;a++){n.pg=String(a);let c=await this.request(`${this.getShareUrl()}/filemoreajax.php`,"POST",n),l;try{l=JSON.parse(c)}catch{break}if(l.zt!==1||!Array.isArray(l.text)||l.text.length===0)break;let d=l.text;s.push(...d.map(u=>({id:u.id,name_all:u.name_all||u.name,size:u.size,time:u.time,is_folder:!1,pwd:n.pwd})))}return s}async getFilesByShareUrl(e,t="",i,n){let s=e.replace(/^\//,""),o=(n||await this.probeShareDomain(s)).replace(/\/+$/,""),a=`${o}/${s}`,c=i;c||(c=await this.request(a,"GET")),c=qu(c),c=l_(c);let l={},d="",u="",f={id:s,is_folder:!1};if(c.includes("pwdload")||c.includes("passwddiv")){let C=d_(c,"down_p");l=Ql(C,c),l.p=t||this.addition.share_password||"";let b=C.match(/['"]?\/?ajax(?:file|m)\.php\?file=(\d+)['"]?/)||c.match(/['"]?\/?ajax(?:file|m)\.php\?file=(\d+)['"]?/)||C.match(/file\s*[:=]\s*['"]?(\d+)['"]?/)||c.match(/file\s*[:=]\s*['"]?(\d+)['"]?/)||C.match(/var\s+file_id\s*=\s*['"]?(\d+)['"]?/)||c.match(/var\s+file_id\s*=\s*['"]?(\d+)['"]?/),x=b?b[1]:"";if(!x)throw new Error("[Lanzou] \u672A\u627E\u5230\u6587\u4EF6 ID");let _=await this.request(`${o}/ajaxfile.php?file=${x}`,"POST",l,a),R;try{R=JSON.parse(_)}catch{throw new Error(`[Lanzou] ajaxfile.php \u54CD\u5E94\u683C\u5F0F\u9519\u8BEF: ${_}`)}if(R.zt!==1)throw new Error(R.info||R.text||`[Lanzou] \u5BC6\u7801\u9519\u8BEF\u6216\u63D0\u53D6\u94FE\u63A5\u5931\u8D25 (zt=${R.zt})`);f.name_all=R.inf||"download",d=`${R.dom}/file`,u=`${d}/${R.url}`}else{let C=c.match(/]*?src=["']([^"']+)["']/i)||c.match(/href=["'](\/fn\?[^"']+)["']/i)||c.match(/["'](\/fn\?[^"']+)["']/i);if(!C)throw new Error("[Lanzou] \u672A\u627E\u5230\u4E0B\u8F7D\u9875\u9762 iframe \u53C2\u6570");let b=C[1],x=`${o}${b.startsWith("/")?"":"/"}${b}`,_=await this.request(x,"GET",void 0,a),R=qu(_);l=Ql(R,R);let U=R.match(/['"]?\/?ajax(?:file|m)\.php\?file=(\d+)['"]?/)||R.match(/file\s*[:=]\s*['"]?(\d+)['"]?/)||R.match(/file=(\d+)/)||R.match(/var\s+file_id\s*=\s*['"]?(\d+)['"]?/),T=U?U[1]:"";if(!T)throw new Error("[Lanzou] \u672A\u627E\u5230\u6587\u4EF6 ID");let D=await this.request(`${o}/ajaxfile.php?file=${T}`,"POST",l,x),B;try{B=JSON.parse(D)}catch{throw new Error(`[Lanzou] ajaxfile.php \u54CD\u5E94\u683C\u5F0F\u9519\u8BEF: ${D}`)}if(B.zt!==1)throw new Error(B.info||B.text||`[Lanzou] \u63D0\u53D6\u94FE\u63A5\u5931\u8D25 (zt=${B.zt})`);d=`${B.dom}/file`,u=`${d}/${B.url}`;let Q=c.match(/(.+?) - 蓝奏云<\/title>|id="filenajax">(.+?)<\/div>|var filename = ['"](.+?)['"];|<div style="font-size[^>]*>([^<>]+)<\/div>|<div class="filethetext"[^>]*>([^<>]+)<\/div>/i);if(Q){for(let v=1;v<Q.length;v++)if(Q[v]){f.name_all=Q[v].trim();break}}}let g=c.match(/大小\W*([0-9.]+\s*[bkm]+)/i);g&&(f.size=g[1]);let p=c.match(/\d+\s*[秒天分小][钟时]?前|[昨前]天|\d{4}-\d{2}-\d{2}/);p&&(f.time=p[0]);let I=u,y="",w=!1;for(let C=0;C<3;C++){let b={Referer:d,"User-Agent":this.getUserAgent(),"Accept-Language":"zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6"},x="down_ip=1";y&&(x+=`; acw_sc__v2=${y}`),b.Cookie=x;let _;try{_=await fetch(u,{method:"GET",headers:b,redirect:"manual"})}catch{if(C<2){await new Promise(U=>setTimeout(U,400*(C+1)));continue}throw new Error("[Lanzou] \u76F4\u94FE\u63A2\u6D4B\u7F51\u7EDC\u9519\u8BEF\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5")}if(_.status===301||_.status===302||_.status===303||_.status===307||_.status===308){let U=_.headers.get("location");if(U){I=new URL(U,u).toString(),w=!0;break}}if(_.status===200&&_.url&&_.url!==u){I=_.url,w=!0;break}if(_.status===429||_.status>=500){if(C<2){await new Promise(U=>setTimeout(U,400*(C+1)));continue}throw new Error(`[Lanzou] \u76F4\u94FE\u63A2\u6D4B\u8FD4\u56DE HTTP ${_.status}\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5`)}let R=await _.text();if(R.includes("acw_sc__v2")){y=ap(R);continue}try{let U=Ql(R,R);U.el="2",await new Promise(B=>setTimeout(B,1500));let T=await this.request(`${d}/ajax.php`,"POST",U,d),D=JSON.parse(T);if(D.url){I=D.url.startsWith("http")?D.url:new URL(D.url,d).toString(),w=!0;break}}catch{if(C<2){await new Promise(U=>setTimeout(U,600*(C+1)));continue}}break}if(!w)throw new Error("[Lanzou] \u76F4\u94FE\u89E3\u6790\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5");return f.url=I,f}async getFileRealInfo(e){try{let t=await fetch(e,{method:"HEAD",headers:{"User-Agent":this.getUserAgent()}}),i=t.headers.get("content-length"),n=t.headers.get("last-modified");return{size:i?parseInt(i,10):void 0,time:n?new Date(n).toISOString():void 0}}catch{return{}}}async mkdir(e,t){await this.doupload({task:"2",parent_id:e||"-1",folder_name:t,folder_description:""})}async rename(e,t){await this.doupload({task:"46",file_id:e,file_name:t,type:"2"})}async move(e,t){await this.doupload({task:"20",file_id:e,folder_id:t})}async remove(e,t){t?await this.doupload({task:"3",folder_id:e}):await this.doupload({task:"6",file_id:e})}}});function SG(r){let e={...r||{}};return e.type=e.type||"cookie",e.account=e.account||"",e.password=e.password||"",e.cookie=(e.cookie||"").trim(),e.root_folder_id=e.root_folder_id||(e.type==="url"?"":"-1"),e.share_password=e.share_password||"",e.baseUrl=e.baseUrl||"https://pc.woozooo.com",e.shareUrl=e.shareUrl||"https://pan.lanzoui.com",e.user_agent=e.user_agent||"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",e.repair_file_info=!!e.repair_file_info,e.order_by=e.order_by||"name",e.order_direction=e.order_direction||"asc",e}function yC(r,e){let t=!!r.is_folder||!!r.fol_id,i=r.name_all||r.name||"",n=e?.size!==void 0?e.size:c_(r.size||"0"),s=e?.time?e.time:a_(r.time||""),o=r.fol_id||r.id||"";return{name:i,size:n,is_dir:t,modified:s,sign:o,type:X(i,t),thumb:"",raw_url:r.url||""}}var fp,f_=V(()=>{"use strict";Be();He();u_();pC();fp=class{client;addition;pathIdCache=new Map;constructor(e,t){this.addition=SG(e),this.client=new up(this.addition,t)}async init(){await this.client.init()}async checkCookieValid(){return this.client.checkCookieValid()}isUrlMode(){return this.addition.type==="url"}getRootId(){return this.addition.root_folder_id||(this.isUrlMode()?"":"-1")}async resolveFolderId(e){let t=this.getRootId(),i="/"+String(e||"").split("/").filter(Boolean).join("/");if(i==="/"||i===`/${t}`)return t;let n=i.split("/").filter(Boolean),s=0,o=t,a="";for(let c=0;c<n.length;c++){let l="/"+n.slice(0,c+1).join("/"),d=this.pathIdCache.get(l);if(d!==void 0)o=d,s=c+1,a=l;else break}for(let c=s;c<n.length;c++){let l=n[c],d=(()=>{try{return decodeURIComponent(l)}catch{return l}})(),f=(this.isUrlMode()?await this.client.getFileOrFolderByShareUrl(o,this.addition.share_password):await this.client.getFolders(o)).find(h=>{if(!h.is_folder&&!h.fol_id)return!1;let g=h.name||h.name_all||"",p=h.fol_id||h.id||"";return g===l||g===d||p===l||p===d});if(!f)throw new Error(`[Lanzou] \u76EE\u5F55\u672A\u627E\u5230: ${l}`);o=f.fol_id||f.id||"",a="/"+n.slice(0,c+1).join("/"),this.pathIdCache.set(a,o)}return o}async resolveItem(e){let t="/"+String(e||"").split("/").filter(Boolean).join("/"),i=t.split("/").filter(Boolean);if(i.length===0)throw new Error("[Lanzou] \u8DEF\u5F84\u65E0\u6548");let n=i[i.length-1],s=(()=>{try{return decodeURIComponent(n)}catch{return n}})(),o="/"+i.slice(0,i.length-1).join("/"),a=await this.resolveFolderId(o),l=(this.isUrlMode()?await this.client.getFileOrFolderByShareUrl(a,this.addition.share_password):await this.client.getAllFiles(a)).find(u=>{let f=u.name_all||u.name||"",h=u.fol_id||u.id||"";return f===n||f===s||h===n||h===s});if(!l)throw new Error(`[Lanzou] \u6587\u4EF6\u6216\u76EE\u5F55\u672A\u627E\u5230: ${n}`);let d=!!(l.is_folder||l.fol_id);return d&&this.pathIdCache.set(t,l.fol_id||l.id||""),{item:l,parentId:a,isDir:d}}async list(e,t){let i=await this.resolveFolderId(t),s=(this.isUrlMode()?await this.client.getFileOrFolderByShareUrl(i,this.addition.share_password):await this.client.getAllFiles(i)).map(o=>yC(o));return de(s,this.addition.order_by==="name"?"file_name":this.addition.order_by==="size"?"size":"updated_at",this.addition.order_direction)}async get(e,t){let i=String(t||"").split("/").filter(Boolean);if(i.length===0||i[i.length-1]===this.getRootId()){let l=this.getRootId();return{name:l||"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:l,type:1,raw_url:""}}let{item:n,isDir:s}=await this.resolveItem(t);if(s)return yC(n);let o=n.url;if(!o)try{if(this.isUrlMode()){let l=await this.client.getFilesByShareUrl(n.id||"",n.pwd||this.addition.share_password||"",void 0,await this.client.probeShareDomain(n.id||""));o=l.url,n.name_all=l.name_all||n.name_all,n.size=l.size||n.size}else{let l=await this.client.getFileShareUrlById(n.id||""),d=l?.f_id||l?.id;if(d){let u=await this.client.getFilesByShareUrl(d,l.pwd||"",void 0);o=u.url,u.name_all&&(n.name_all=u.name_all),u.size&&(n.size=u.size)}}}catch(l){throw console.error(`[Lanzou] \u89E3\u6790\u4E0B\u8F7D\u94FE\u63A5\u5931\u8D25 (${n.name_all||n.name}):`,l.message),new Error(`[Lanzou] \u83B7\u53D6\u4E0B\u8F7D\u76F4\u94FE\u5931\u8D25 (${n.name_all||n.name}): ${l.message}`)}if(!o)throw new Error(`[Lanzou] \u672A\u80FD\u83B7\u53D6\u5230\u4E0B\u8F7D\u76F4\u94FE (${n.name_all||n.name||t})`);let a;if(this.addition.repair_file_info&&o)try{a=await this.client.getFileRealInfo(o)}catch{}let c=yC(n,a);return c.raw_url=o||"",c.raw_url_headers={"User-Agent":this.client.getUserAgent()},c}async mkdir(e,t){if(this.isUrlMode())throw new Error("[Lanzou] \u5206\u4EAB\u94FE\u63A5\u6A21\u5F0F\u4E0D\u652F\u6301\u65B0\u5EFA\u6587\u4EF6\u5939");let i=String(t||"").split("/").filter(Boolean),n=i.pop()||"\u65B0\u6587\u4EF6\u5939",s="/"+i.join("/"),o=await this.resolveFolderId(s);await this.client.mkdir(o,n)}async rename(e,t,i){if(this.isUrlMode())throw new Error("[Lanzou] \u5206\u4EAB\u94FE\u63A5\u6A21\u5F0F\u4E0D\u652F\u6301\u91CD\u547D\u540D");let{item:n,isDir:s}=await this.resolveItem(t);if(s)throw new Error("[Lanzou] \u84DD\u594F\u4E91\u4E0D\u652F\u6301\u91CD\u547D\u540D\u6587\u4EF6\u5939");await this.client.rename(n.id||"",i)}async remove(e,t,i){if(this.isUrlMode())throw new Error("[Lanzou] \u5206\u4EAB\u94FE\u63A5\u6A21\u5F0F\u4E0D\u652F\u6301\u5220\u9664");let{item:n,isDir:s}=await this.resolveItem(t);await this.client.remove(n.fol_id||n.id||"",s)}async move(e,t,i,n,s){if(this.isUrlMode())throw new Error("[Lanzou] \u5206\u4EAB\u94FE\u63A5\u6A21\u5F0F\u4E0D\u652F\u6301\u79FB\u52A8");let{item:o,isDir:a}=await this.resolveItem(n);if(a)throw new Error("[Lanzou] \u84DD\u594F\u4E91\u4E0D\u652F\u6301\u79FB\u52A8\u6587\u4EF6\u5939");let c=String(t).split("/").filter(Boolean),l=await this.resolveFolderId("/"+c.join("/"));await this.client.move(o.id||"",l)}async copy(){throw new Error("[Lanzou] \u84DD\u594F\u4E91\u4E0D\u652F\u6301\u76F4\u63A5\u590D\u5236\u6587\u4EF6")}async put(){throw new Error("[Lanzou] Cloudflare Worker \u73AF\u5883\u6682\u4E0D\u652F\u6301\u76F4\u63A5\u6D41\u5F0F\u5199\u5165\uFF0C\u8BF7\u4F7F\u7528\u7F51\u9875\u7AEF\u8FDB\u884C\u6587\u4EF6\u4E0A\u4F20")}}});function DG(r){let e=r.replace(/\s+/g,""),t=atob(e),i=new Uint8Array(t.length);for(let n=0;n<t.length;n++)i[n]=t.charCodeAt(n);return i}function QG(r){let e="";for(let t=0;t<r.length;t++)e+=String.fromCharCode(r[t]);return btoa(e)}function _G(r){return Array.from(r).map(e=>e.toString(16).padStart(2,"0")).join("")}function IC(r){let e=0n;for(let t=0;t<r.length;t++)e=e<<8n|BigInt(r[t]);return e}function FG(r,e){let t=new Uint8Array(e),i=r;for(let n=e-1;n>=0;n--)t[n]=Number(i&0xffn),i>>=8n;return t}function PG(r,e,t){let i=1n;for(r=r%t;e>0n;)e%2n===1n&&(i=i*r%t),r=r*r%t,e/=2n;return i}function TG(r){let e=r.replace(/-----BEGIN[^-]+-----/g,"").replace(/-----END[^-]+-----/g,"").replace(/\s+/g,""),t=DG(e),i=0;function n(){let l=t[i++],d=t[i++];if(d&128){let f=d&127;d=0;for(let h=0;h<f;h++)d=d<<8|t[i++]}return{tag:l,length:d,dataStart:i}}let s=[];function o(l,d){let u=l;for(;u<d;){let f=t[u++],h=t[u++];if(h&128){let p=h&127;h=0;for(let I=0;I<p;I++)h=h<<8|t[u++]}let g=u;if(u+=h,f===2){let p=t.subarray(g,g+h);p[0]===0&&p.length>1&&(p=p.subarray(1)),s.push(p)}else f===48||(f&32)!==0?o(g,g+h):f===3&&t[g]===0&&o(g+1,g+h)}}if(o(0,t.length),s.length<2)throw new Error("Failed to parse RSA public key: insufficient integers found");let a=s[0],c=s[1];if(a.length<c.length){let l=a;a=c,c=l}return{n:IC(a),e:IC(c),keyLength:a.length}}function Ap(r,e,t=!1){let{n:i,e:n,keyLength:s}=TG(e),o=typeof r=="string"?new TextEncoder().encode(r):r;if(o.length>s-11)throw new Error(`Data too long for RSA key size: ${o.length} > ${s-11}`);let a=s-o.length-3,c=new Uint8Array(a),l=new Uint8Array(a*2);crypto.getRandomValues(l);let d=0;for(let p=0;p<a;p++){let I=l[d++];for(;I===0;)d>=l.length&&(crypto.getRandomValues(l),d=0),I=l[d++];c[p]=I}let u=new Uint8Array(s);u[0]=0,u[1]=2,u.set(c,2),u[2+a]=0,u.set(o,3+a);let f=IC(u),h=PG(f,n,i),g=FG(h,s);return t?_G(g):QG(g)}function A_(r,e){let t=typeof e=="string"?zr.default.enc.Utf8.parse(e.slice(0,16)):zr.default.lib.WordArray.create(Array.from(e.slice(0,16)),16),i=zr.default.enc.Utf8.parse(r);return zr.default.AES.encrypt(i,t,{mode:zr.default.mode.ECB,padding:zr.default.pad.Pkcs7}).ciphertext.toString(zr.default.enc.Hex)}function Ou(r,e){return zr.default.HmacSHA1(r,e).toString(zr.default.enc.Hex)}function h_(r){return typeof r=="string"?zr.default.enc.Utf8.parse(r):zr.default.lib.WordArray.create(r)}function _l(r){return zr.default.MD5(h_(r)).toString(zr.default.enc.Hex)}function g_(r){return zr.default.MD5(h_(r)).toString(zr.default.enc.Base64)}function Fl(r="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx"){return r.replace(/[xy]/g,e=>{let t=Math.random()*16|0;return(e==="x"?t:t&3|8).toString(16)})}function wC(){return"0."+Math.floor(Math.random()*1e17).toString().padStart(17,"0")}var zr,hp=V(()=>{"use strict";zr=Dr(lc(),1)});function UG(r,e,t){let i=r?r.split(";").map(o=>o.trim()):[],n=`${e}=${t}`,s=i.findIndex(o=>o.startsWith(`${e}=`));return s!==-1?i[s]=n:i.push(n),i.filter(Boolean).join("; ")}function RG(r,e){if(!e)return r;let t=r,i=e.split(/,(?=\s*[a-zA-Z0-9_\-]+=[^;]+)/);for(let n of i){let s=n.split(";")[0].trim(),o=s.indexOf("=");if(o>0){let a=s.slice(0,o).trim(),c=s.slice(o+1).trim();t=UG(t,a,c)}}return t}function NG(r){let e=r;if(typeof e.getSetCookie=="function"){let i=e.getSetCookie();if(i.length>0)return i}let t=r.get("set-cookie");return t?[t]:[]}function p_(r){let e=r.replace(/("id"\s*:\s*)(-?\d{16,})(?=\s*[,}])/g,'$1"$2"');return JSON.parse(e)}function xC(r){return r.protocol==="https:"&&qG.has(r.hostname)}function CC(r){try{let e=new URL(r,"https://open.e.189.cn");return!!e.searchParams.get("lt")&&!!e.searchParams.get("reqId")}catch{return!1}}function EC(r){try{let e=new URL(r,"https://open.e.189.cn");return e.hostname==="cloud.189.cn"&&(e.pathname==="/web/main"||e.pathname==="/main.action")}catch{return!1}}var qG,gp,m_=V(()=>{"use strict";hp();qG=new Set(["cloud.189.cn","open.e.189.cn"]);gp=class{addition;cookie="";cookieDirty=!1;sessionKey="";rsa={pubKey:"",pkId:"",expire:0};constructor(e,t){this.addition=e,this.cookie=(e.cookie||"").trim()}getCookie(){return this.cookie}consumePendingCookie(){return this.cookieDirty?(this.cookieDirty=!1,this.cookie):null}getRootId(){return this.addition.root_folder_id||"-11"}setSessionKey(e){this.sessionKey=e}getDownloadHeaders(){let e={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",Referer:"https://cloud.189.cn/"};return this.cookie&&(e.Cookie=this.cookie),e}async updateCookie(e){let t=NG(e);if(t.length===0)return;let i=t.reduce((n,s)=>RG(n,s),this.cookie);i!==this.cookie&&(this.cookie=i,this.cookieDirty=!0)}async followRedirectsWithCookies(e,t){let i=e,n=[i];for(let s=0;s<=8;s++){let o=new URL(i);if(!xC(o))throw new Error(o.protocol!=="https:"?`[189Cloud] \u767B\u5F55\u91CD\u5B9A\u5411\u5FC5\u987B\u4F7F\u7528 HTTPS: ${o.origin}`:`[189Cloud] \u4E0D\u53D7\u4FE1\u4EFB\u7684\u767B\u5F55\u91CD\u5B9A\u5411\u5730\u5740: ${o.origin}`);let a={...t};s>0&&(a.Referer=i),this.cookie&&(a.Cookie=this.cookie);let c=await fetch(i,{method:"GET",headers:a,redirect:"manual"});await this.updateCookie(c.headers);let l=c.headers.get("location");if(!(c.status>=300&&c.status<400)||!l){let f=i;if(c.url&&c.url!==i){let h=new URL(c.url,i);if(CC(h.toString())||EC(h.toString())){if(!xC(h))throw new Error(h.protocol!=="https:"?`[189Cloud] \u767B\u5F55\u91CD\u5B9A\u5411\u5FC5\u987B\u4F7F\u7528 HTTPS: ${h.origin}`:`[189Cloud] \u4E0D\u53D7\u4FE1\u4EFB\u7684\u767B\u5F55\u91CD\u5B9A\u5411\u5730\u5740: ${h.origin}`);f=h.toString(),n.push(f)}}return{response:c,url:f,urls:n}}if(s===8)throw new Error("[189Cloud] \u767B\u5F55\u91CD\u5B9A\u5411\u6B21\u6570\u8FC7\u591A");let u=new URL(l,i);if(!xC(u))throw new Error(u.protocol!=="https:"?`[189Cloud] \u767B\u5F55\u91CD\u5B9A\u5411\u5FC5\u987B\u4F7F\u7528 HTTPS: ${u.origin}`:`[189Cloud] \u4E0D\u53D7\u4FE1\u4EFB\u7684\u767B\u5F55\u91CD\u5B9A\u5411\u5730\u5740: ${u.origin}`);i=u.toString(),n.push(i)}throw new Error("[189Cloud] \u767B\u5F55\u91CD\u5B9A\u5411\u5931\u8D25")}async resolveLoginUrl(e,t){let i=e;for(let n=0;n<3;n++){let s=new URL(e);s.searchParams.set("noCache",wC());let o=await this.followRedirectsWithCookies(s.toString(),t);if(i=o.url,CC(o.url)||EC(o.url))return o.url;let a=o.urls.find(c=>CC(c));if(a)return a;n<2&&await new Promise(c=>setTimeout(c,150*(n+1)))}return i}async login(e={}){if(this.cookie&&!e.force)return;let t="https://cloud.189.cn/api/portal/loginUrl.action?redirectURL=https%3A%2F%2Fcloud.189.cn%2Fmain.action",i={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",Referer:"https://cloud.189.cn/"};this.cookie&&(i.Cookie=this.cookie);let n=await this.resolveLoginUrl(t,i);if(EC(n))return;if(!this.addition.username||!this.addition.password){if(this.cookie)return;throw new Error("[189Cloud] \u8D26\u53F7\u6216\u5BC6\u7801\u4E3A\u7A7A\uFF0C\u4E14\u672A\u63D0\u4F9B\u6709\u6548 Cookie")}let s;try{s=new URL(n,"https://open.e.189.cn")}catch{s=new URL("https://open.e.189.cn"+n)}let o=s.searchParams.get("lt")||"",a=s.searchParams.get("reqId")||"",c=s.searchParams.get("appId")||"cloud";if(!o||!a)throw new Error("[189Cloud] \u767B\u5F55\u8DF3\u8F6C\u53C2\u6570\u4E0D\u5B8C\u6574\uFF0C\u672A\u83B7\u53D6\u5230 lt \u6216 reqId");let l=()=>{let x={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",lt:o,reqid:a,referer:n,origin:"https://open.e.189.cn","Content-Type":"application/x-www-form-urlencoded; charset=UTF-8",Accept:"application/json;charset=UTF-8"};return this.cookie&&(x.Cookie=this.cookie),x},d=await fetch("https://open.e.189.cn/api/logbox/oauth2/appConf.do",{method:"POST",headers:l(),body:new URLSearchParams({version:"2.0",appKey:c})});await this.updateCookie(d.headers);let u=await d.json();if(u.result!=="0"||!u.data)throw new Error(`[189Cloud] \u83B7\u53D6 AppConf \u5931\u8D25: ${u.msg||JSON.stringify(u)}`);let f=await fetch("https://open.e.189.cn/api/logbox/config/encryptConf.do",{method:"POST",headers:l(),body:new URLSearchParams({appId:c})});await this.updateCookie(f.headers);let h=await f.json();if(h.result!==0||!h.data?.pubKey)throw new Error(`[189Cloud] \u83B7\u53D6 EncryptConf \u5931\u8D25: ${JSON.stringify(h)}`);let g=h.data.pre||"",p=h.data.pubKey,I=g+Ap(this.addition.username,p,!0),y=g+Ap(this.addition.password,p,!0),w={version:"v2.0",apToken:"",appKey:c,accountType:u.data.accountType||"01",userName:I,epd:y,captchaType:"",validateCode:"",smsValidateCode:"",captchaToken:"",returnUrl:u.data.returnUrl||"https://cloud.189.cn/main.action",mailSuffix:u.data.mailSuffix||"@189.cn",dynamicCheck:"FALSE",clientType:String(u.data.clientType??"10010"),cb_SaveName:"3",isOauth2:String(u.data.isOauth2??!1),state:"",paramId:u.data.paramId||""},C=await fetch("https://open.e.189.cn/api/logbox/oauth2/loginSubmit.do",{method:"POST",headers:{...l()},body:new URLSearchParams(w)});await this.updateCookie(C.headers);let b=await C.json();if(b.result!==0){let x=b.msg||"\u767B\u5F55\u5931\u8D25";throw x.includes("\u9A8C\u8BC1\u7801")||x.includes("\u6ED1\u5757")||x.includes("\u8BBE\u5907\u9501")?new Error(`[189Cloud] \u767B\u5F55\u89E6\u53D1\u9A8C\u8BC1\u7801/\u8BBE\u5907\u4FDD\u62A4: ${x}\u3002\u8BF7\u5728\u6D4F\u89C8\u5668\u767B\u5F55\u540E\u590D\u5236 Cookie \u586B\u5165\u914D\u7F6E\u3002`):new Error(`[189Cloud] \u767B\u5F55\u5931\u8D25: ${x}`)}b.toUrl&&await this.followRedirectsWithCookies(b.toUrl,{"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"})}async request(e,t={}){let i=t.method||"GET",n=t.retryOnInvalidSession!==!1,s=new URL(e);if(s.searchParams.set("noCache",wC()),t.params)for(let[f,h]of Object.entries(t.params))h!==void 0&&s.searchParams.set(f,h);let o={Accept:"application/json;charset=UTF-8",Referer:"https://cloud.189.cn/","User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"};this.cookie&&(o.Cookie=this.cookie);let a;t.body&&(o["Content-Type"]="application/x-www-form-urlencoded; charset=UTF-8",a=new URLSearchParams(t.body).toString());let c=await fetch(s.toString(),{method:i,headers:o,body:a});await this.updateCookie(c.headers);let l=await c.text(),d;try{d=p_(l)}catch{throw new Error(`[189Cloud] \u975E\u9884\u671F\u54CD\u5E94: ${l.slice(0,200)}`)}if(d.errorCode==="InvalidSessionKey"||d.res_code==="InvalidSessionKey"||String(d.res_code)==="1010"){if(n)return await this.login({force:!0}),this.request(e,{...t,retryOnInvalidSession:!1});throw new Error(d.errorMsg||d.res_message||"[189Cloud] \u767B\u5F55\u4F1A\u8BDD\u5DF2\u5931\u6548")}if(d.errorCode)throw new Error(d.errorMsg||`[189Cloud] API \u9519\u8BEF: ${d.errorCode}`);if(!c.ok)throw new Error(d.errorMsg||d.res_message||`[189Cloud] HTTP \u8BF7\u6C42\u5931\u8D25 (${c.status})`);if(d.res_code!==void 0&&String(d.res_code)!=="0")throw new Error(d.res_message||`189 API \u9519\u8BEF (res_code: ${d.res_code})`);return d}async getFilesPage(e,t,i){let n=this.addition.order_by||"lastOpTime",s=(this.addition.order_direction||"desc")==="desc"?"true":"false",o=await this.request("https://cloud.189.cn/api/open/file/listFiles.action",{method:"GET",params:{pageSize:i,pageNum:String(t),mediaType:"0",folderId:e||this.getRootId(),iconOption:"5",orderBy:n,descending:s}}),a=o.fileListAO?.count,c=typeof a=="number"?a:typeof a=="string"&&a.trim()!==""?Number(a):NaN;if(!o.fileListAO||typeof o.fileListAO!="object"||Array.isArray(o.fileListAO)||!Number.isFinite(c)||c<0||!Array.isArray(o.fileListAO.fileList)||!Array.isArray(o.fileListAO.folderList))throw new Error("[189Cloud] \u6587\u4EF6\u5217\u8868\u54CD\u5E94\u7F3A\u5C11\u6709\u6548\u7684 fileListAO \u6570\u7EC4\u5B57\u6BB5");return o}async validateRoot(e){await this.getFilesPage(e,1,"1")}async getFiles(e,t){let i=[],n=[],s=1,o="60";for(;;){if(t?.budget){if(t.budget.used>=t.budget.limit){console.warn("[189Cloud] Cloudflare Worker subrequest budget limit reached.");break}t.budget.used++}let c=(await this.getFilesPage(e,s,o)).fileListAO;if(Number(c.count)===0)break;let l=c.fileList||[],d=c.folderList||[];if(n.push(...d),i.push(...l),t?.findName&&(t.findIsDir&&d.some(u=>u.name===t.findName)||!t.findIsDir&&l.some(u=>u.name===t.findName))||l.length+d.length<parseInt(o,10))break;s++}return{files:i,folders:n}}async getDownloadUrl(e){let t=await this.request("https://cloud.189.cn/api/portal/getFileInfo.action",{method:"GET",params:{fileId:e}}),i=t.fileDownloadUrl||t.downloadUrl;if(!i)throw new Error(`[189Cloud] \u83B7\u53D6\u6587\u4EF6\u4E0B\u8F7D\u5730\u5740\u5931\u8D25 (fileId: ${e})`);let n=i.startsWith("//")?"https:"+i:i;n=n.replace(/^http:\/\//i,"https://");try{let s=await fetch(n,{method:"GET",headers:this.getDownloadHeaders(),redirect:"manual"}),o=s.headers.get("location");s.status===302&&o&&(n=o.replace(/^http:\/\//i,"https://"))}catch{}return n}async getSessionKey(){let e=await this.request("https://cloud.189.cn/v2/getUserBriefInfo.action",{method:"GET"}),t=String(e.sessionKey||"");if(!t)throw new Error("[189Cloud] \u83B7\u53D6\u4E0A\u4F20 SessionKey \u5931\u8D25");return t}async getResKey(){if(this.rsa.pubKey&&this.rsa.pkId&&this.rsa.expire>Date.now())return this.rsa;let e=await this.request("https://cloud.189.cn/api/security/generateRsaKey.action",{method:"GET"}),t=String(e.pubKey||""),i=String(e.pkId||"");if(!t||!i)throw new Error("[189Cloud] \u83B7\u53D6\u4E0A\u4F20 RSA \u516C\u94A5\u5931\u8D25");return this.rsa={pubKey:t,pkId:i,expire:Number(e.expire)||Date.now()+5*6e4},this.rsa}async uploadRequest(e,t){this.sessionKey||(this.sessionKey=await this.getSessionKey());let i=String(Date.now()),n=Fl(),s=Fl("xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx").slice(0,16+Math.floor(Math.random()*17)),o=Object.keys(t).sort().map(p=>`${p}=${t[p]}`).join("&"),a=A_(o,s.slice(0,16)),c=Ou(`SessionKey=${this.sessionKey}&Operate=GET&RequestURI=${e}&Date=${i}¶ms=${a}`,s),{pubKey:l,pkId:d}=await this.getResKey(),u={accept:"application/json;charset=UTF-8",SessionKey:this.sessionKey,Signature:c,"X-Request-Date":i,"X-Request-ID":n,EncryptionText:Ap(s,l,!1),PkId:d};this.cookie&&(u.Cookie=this.cookie);let f=await fetch(`https://upload.cloud.189.cn${e}?params=${a}`,{method:"GET",headers:u});await this.updateCookie(f.headers);let h=await f.text();if(!f.ok)throw new Error(`[189Cloud] \u4E0A\u4F20\u63A5\u53E3 HTTP ${f.status}: ${h.slice(0,200)}`);let g;try{g=p_(h)}catch{throw new Error(`[189Cloud] \u4E0A\u4F20\u63A5\u53E3\u8FD4\u56DE\u65E0\u6548\u54CD\u5E94: ${h.slice(0,200)}`)}if(g.code!=="SUCCESS")throw new Error(g.msg||g.message||`[189Cloud] \u4E0A\u4F20\u63A5\u53E3\u5931\u8D25: ${e}`);return g}async createMultiUpload(e,t,i,n){let s=await this.getSessionKey();this.sessionKey=s;let o={parentFolderId:e,fileName:encodeURIComponent(t).replace(/%20/g,"+"),fileSize:String(i),sliceSize:String(10*1024*1024)},a;try{a=await this.uploadRequest("/person/initMultiUpload",{...o,fileMd5:n,sliceMd5:n})}catch(l){let d=String(l?.message||l);if(!/InfoSecurityErrorCode|file md5 is in black list|security check not pass/i.test(d))throw l;a=await this.uploadRequest("/person/initMultiUpload",{...o,lazyCheck:"1"})}let c=String(a.data?.uploadFileId||"");if(!c)throw new Error("[189Cloud] \u521B\u5EFA\u4E0A\u4F20\u4F1A\u8BDD\u5931\u8D25\uFF1A\u7F3A\u5C11 uploadFileId");return{uploadFileId:c,fileDataExists:String(a.data?.fileDataExists||"0")==="1",sessionKey:s}}async getMultiUploadUrls(e,t,i){let s=(await this.uploadRequest("/person/getMultiUploadUrls",{partInfo:`${t}-${g_(i)}`,uploadFileId:e})).uploadUrls?.[`partNumber_${t}`];if(!s?.requestURL)throw new Error(`[189Cloud] \u83B7\u53D6\u7B2C ${t} \u4E2A\u5206\u7247\u4E0A\u4F20\u5730\u5740\u5931\u8D25`);return s}async commitMultiUpload(e,t,i){await this.uploadRequest("/person/commitMultiUploadFile",{uploadFileId:e,fileMd5:t,sliceMd5:i,lazyCheck:"1",opertype:"3"})}async mkdir(e,t){await this.request("https://cloud.189.cn/api/open/file/createFolder.action",{method:"POST",body:{parentFolderId:e||this.getRootId(),folderName:t}})}async rename(e,t,i){let n=t?"https://cloud.189.cn/api/open/file/renameFolder.action":"https://cloud.189.cn/api/open/file/renameFile.action",s=t?{folderId:e,destFolderName:i}:{fileId:e,destFileName:i};await this.request(n,{method:"POST",body:s})}async batchTask(e,t,i=""){let n=t.map(s=>({fileId:s.id,fileName:s.name,isFolder:s.isFolder?1:0}));await this.request("https://cloud.189.cn/api/open/batch/createBatchTask.action",{method:"POST",body:{type:e,targetFolderId:i,taskInfos:JSON.stringify(n)}})}async move(e,t,i,n){await this.batchTask("MOVE",[{id:e,name:i,isFolder:t}],n)}async copy(e,t,i,n){await this.batchTask("COPY",[{id:e,name:i,isFolder:t}],n)}async remove(e,t,i){await this.batchTask("DELETE",[{id:e,name:i,isFolder:t}],"")}async getCapacityInfo(){return this.request("https://cloud.189.cn/api/portal/getUserSizeInfo.action",{method:"GET"})}}});function LG(r){return Buffer.from(JSON.stringify(r),"utf8").toString("base64")}function y_(r){try{let e=JSON.parse(Buffer.from(r,"base64").toString("utf8"));if(!e||!e.uploadFileId||!e.sessionKey||!e.fileMd5||!Number.isInteger(e.partCount)||e.partCount<1||!Number.isInteger(e.chunkSize)||e.chunkSize<1)throw new Error("invalid upload session");return e}catch{throw new Error("[189Cloud] \u4E0A\u4F20\u4F1A\u8BDD\u65E0\u6548\u6216\u5DF2\u635F\u574F")}}function x_(r){if(!r)return new Date().toISOString();try{let e=new Date(r);if(!isNaN(e.getTime()))return e.toISOString()}catch{}return new Date().toISOString()}function I_(r){return{name:r.name,size:0,is_dir:!0,modified:x_(r.lastOpTime),sign:String(r.id),type:1,thumb:"",raw_url:""}}function w_(r){return{name:r.name,size:r.size||0,is_dir:!1,modified:x_(r.lastOpTime),sign:String(r.id),type:X(r.name,!1),thumb:r.icon?.smallUrl||r.icon?.largeUrl||"",raw_url:""}}function HG(r){let e={...r||{}};return e.username=e.username||"",e.password=e.password||"",e.cookie=(e.cookie||"").trim(),e.root_folder_id=e.root_folder_id||"-11",e.order_by=e.order_by||"lastOpTime",e.order_direction=e.order_direction||"desc",e}var OG,MG,pp,C_=V(()=>{"use strict";Be();He();m_();hp();OG=45,MG=10*1024*1024;pp=class{client;addition;pathIdCache=new Map;budget={used:0,limit:OG};constructor(e,t){this.addition=HG(e),this.client=new gp(this.addition,t)}async init(){await this.client.login()}consumePendingCookie(){return this.client.consumePendingCookie()}async resolveFolderId(e){let t=this.client.getRootId(),i="/"+String(e||"").split("/").filter(Boolean).join("/");if(i==="/"||i===`/${t}`)return t;let n=i.split("/").filter(Boolean),s=0,o=t,a="";for(let c=0;c<n.length;c++){let l="/"+n.slice(0,c+1).join("/"),d=this.pathIdCache.get(l);if(d!==void 0)o=d,s=c+1,a=l;else break}for(let c=s;c<n.length;c++){let l=n[c],d=(()=>{try{return decodeURIComponent(l)}catch{return l}})(),{folders:u}=await this.client.getFiles(o,{findName:d,findIsDir:!0,budget:this.budget}),f=u.find(h=>h.name===l||h.name===d||String(h.id)===l||String(h.id)===d);if(!f)throw new Error(`[189Cloud] \u76EE\u5F55\u672A\u627E\u5230: ${l}`);o=String(f.id),a="/"+n.slice(0,c+1).join("/"),this.pathIdCache.set(a,o)}return o}async resolveFile(e){let t=String(e||"").split("/").filter(Boolean);if(t.length===0)throw new Error("[189Cloud] \u8DEF\u5F84\u65E0\u6548");let i=t[t.length-1],n=(()=>{try{return decodeURIComponent(i)}catch{return i}})(),s="/"+t.slice(0,t.length-1).join("/"),o=await this.resolveFolderId(s),{files:a,folders:c}=await this.client.getFiles(o,{findName:n,budget:this.budget}),l=a.find(u=>u.name===i||u.name===n||String(u.id)===i||String(u.id)===n);if(l)return{file:l,parentId:o,isDir:!1};let d=c.find(u=>u.name===i||u.name===n||String(u.id)===i||String(u.id)===n);if(d)return{file:d,parentId:o,isDir:!0};throw new Error(`[189Cloud] \u6587\u4EF6\u6216\u76EE\u5F55\u672A\u627E\u5230: ${i}`)}async list(e,t){this.budget.used=0;let i=await this.resolveFolderId(t),{files:n,folders:s}=await this.client.getFiles(i,{budget:this.budget}),o=[...s.map(I_),...n.map(w_)];return de(o,this.addition.order_by==="filename"?"file_name":this.addition.order_by==="fileSize"?"size":"updated_at",this.addition.order_direction)}async get(e,t){this.budget.used=0;let i=String(t||"").split("/").filter(Boolean);if(i.length===0||i[i.length-1]===this.client.getRootId()){let a=this.client.getRootId();return{name:a,size:0,is_dir:!0,modified:new Date().toISOString(),sign:a,type:1,raw_url:""}}let{file:n,isDir:s}=await this.resolveFile(t);if(s)return I_(n);let o=w_(n);try{o.raw_url=await this.client.getDownloadUrl(String(n.id)),o.raw_url_headers=this.client.getDownloadHeaders()}catch(a){console.warn(`[189Cloud] \u83B7\u53D6 ${n.name} \u4E0B\u8F7D\u5730\u5740\u5931\u8D25:`,a.message)}return o}async mkdir(e,t){this.budget.used=0;let i=String(t||"").split("/").filter(Boolean),n=i.pop()||"\u65B0\u6587\u4EF6\u5939",s="/"+i.join("/"),o=await this.resolveFolderId(s);await this.client.mkdir(o,n)}async rename(e,t,i){this.budget.used=0;let{file:n,isDir:s}=await this.resolveFile(t);await this.client.rename(String(n.id),s,i)}async remove(e,t,i){this.budget.used=0;let{file:n,isDir:s}=await this.resolveFile(t);await this.client.remove(String(n.id),s,n.name)}async move(e,t,i,n,s){this.budget.used=0;let{file:o,isDir:a}=await this.resolveFile(n),c=String(t).split("/").filter(Boolean),l=await this.resolveFolderId("/"+c.join("/"));await this.client.move(String(o.id),a,o.name,l)}async copy(e,t,i,n,s){this.budget.used=0;let{file:o,isDir:a}=await this.resolveFile(n),c=String(t).split("/").filter(Boolean),l=await this.resolveFolderId("/"+c.join("/"));await this.client.copy(String(o.id),a,o.name,l)}async put(e,t,i){let n=String(t||"").split("/").filter(Boolean),s=n.pop();if(!s)throw new Error("[189Cloud] \u4E0A\u4F20\u8DEF\u5F84\u65E0\u6548");let o="/"+n.join("/"),a=await this.createUploadSession(o,o,s,i.length,_l(i));if(a.reuse)return;let c=[];for(let l=1;l<=a.partCount;l++){let d=(l-1)*a.chunkSize,u=i.subarray(d,Math.min(d+a.chunkSize,i.length)),f=await this.uploadPart(a.session,l,u);c.push(f.partMd5)}await this.completeUploadSession(a.session,c)}async createUploadSession(e,t,i,n,s){let o=MG,a=String(s||"").trim().toLowerCase();if(!/^[a-f0-9]{32}$/.test(a))return{reuse:!1,requiresMd5:!0,partCount:0,chunkSize:o,session:""};this.budget.used=0;let c=Math.max(1,Math.ceil(Math.max(0,Number(n)||0)/o)),l=await this.resolveFolderId(t||"/"),d=await this.client.createMultiUpload(l,i,Math.max(0,Number(n)||0),a);return d.fileDataExists?(await this.client.commitMultiUpload(d.uploadFileId,a,a),{reuse:!0,partCount:0,chunkSize:o,session:""}):{reuse:!1,partCount:c,chunkSize:o,session:LG({uploadFileId:d.uploadFileId,sessionKey:d.sessionKey,fileMd5:a,size:Math.max(0,Number(n)||0),partCount:c,chunkSize:o})}}async uploadPart(e,t,i){let n=y_(e);if(!Number.isInteger(t)||t<1||t>n.partCount)throw new Error(`[189Cloud] \u5206\u7247\u5E8F\u53F7\u65E0\u6548: ${t}`);this.client.setSessionKey(n.sessionKey);let s=await this.client.getMultiUploadUrls(n.uploadFileId,t,i),o={};if(s.requestHeader){let c=s.requestHeader;try{c=decodeURIComponent(c)}catch{}for(let l of c.split("&")){let d=l.indexOf("=");d<=0||(o[l.slice(0,d)]=l.slice(d+1))}}let a=await fetch(s.requestURL,{method:"PUT",headers:o,body:i});if(!a.ok){let c=await a.text().catch(()=>"");throw new Error(`[189Cloud] \u4E0A\u4F20\u7B2C ${t}/${n.partCount} \u5206\u7247\u5931\u8D25: HTTP ${a.status} ${c}`)}return{partMd5:_l(i)}}async completeUploadSession(e,t=[]){let i=y_(e);this.client.setSessionKey(i.sessionKey);let n=t.map(o=>String(o||"").trim().toLowerCase()).filter(o=>/^[a-f0-9]{32}$/.test(o));if(n.length!==i.partCount)throw new Error("[189Cloud] \u5206\u7247\u6821\u9A8C\u4FE1\u606F\u4E0D\u5B8C\u6574\uFF0C\u65E0\u6CD5\u63D0\u4EA4\u4E0A\u4F20");let s=i.partCount===1?i.fileMd5:_l(n.join(` -`)).toUpperCase();await this.client.commitMultiUpload(i.uploadFileId,i.fileMd5,s)}}});function jG(){return{clientType:zG,version:GG,channelId:JG,clientSn:"unknown",model:"PJX110",osFamily:"Android",osVersion:"35",networkAccessMode:"WIFI",telecomsOperator:"46011"}}function B_(r){try{return new URL(r).pathname}catch{return r}}function $G(r,e,t,i,n){let s=`SessionKey=${e}&Operate=${t}&RequestURI=${B_(i)}&Date=${n}`;return Ou(s,r).toUpperCase()}function VG(r,e,t,i,n){let s=`AppKey=${e}&Operate=${t}&RequestURI=${B_(i)}&Timestamp=${n}`;return Ou(s,r).toUpperCase()}function YG(r){let e=r.replace(/("id"\s*:\s*)(-?\d{16,})(?=\s*[,}])/g,'$1"$2"');return JSON.parse(e)}function WG(r){let e=r.res_code;return typeof e=="number"?e!==0:typeof e=="string"?e!==""&&e!=="0":!!(r.code&&r.code!=="SUCCESS"||r.errorCode||r.error)}function XG(r){switch(r){case"filename":return"1";case"filesize":return"2";case"lastOpTime":return"3";default:return"1"}}function ZG(r){return r==="desc"?"true":"false"}var E_,KG,GG,zG,JG,Ri,BC,mp,b_=V(()=>{"use strict";hp();E_="600100885",KG="fe5734c74c2f96a38157f420b32dc995",GG="6.5.5",zG="FAMILY_TV",JG="home02",Ri="https://api.cloud.189.cn",BC="EcloudTV/6.5.5 (PJX110; unknown; home02) Android/35";mp=class{addition;tokenInfo=null;persistAccessToken;constructor(e,t){this.addition=e,this.persistAccessToken=t}isFamily(){return this.addition.type==="family"}getFamilyId(){return this.addition.family_id||""}async init(){if(!this.addition.access_token)throw new Error("[189TV] access_token \u4E3A\u7A7A\uFF1A\u8BF7\u5148\u5728\u522B\u5904\u626B\u7801\u767B\u5F55\u83B7\u53D6 access_token \u540E\u586B\u5165\u914D\u7F6E");await this.login()}signatureHeader(e,t,i){let n=new Date().toUTCString(),s=i?this.tokenInfo?.familySessionKey||"":this.tokenInfo?.sessionKey||"",o=i?this.tokenInfo?.familySessionSecret||"":this.tokenInfo?.sessionSecret||"";return{Date:n,SessionKey:s,"X-Request-ID":Fl(),Signature:$G(o,s,t,e,n)}}appKeySignatureHeader(e,t){let i=Date.now();return{Timestamp:String(i),"X-Request-ID":Fl(),AppKey:E_,AppSignature:VG(KG,E_,t,e,i)}}async request(e,t,i={}){let{query:n,form:s,isFamily:o=!1,isAppKey:a=!1}=i,c=i.retryCount??0,l=new URL(e);for(let[p,I]of Object.entries(jG()))l.searchParams.set(p,I);if(n)for(let[p,I]of Object.entries(n))I!==void 0&&l.searchParams.set(p,I);let d={Accept:"application/json;charset=UTF-8","User-Agent":BC};a?Object.assign(d,this.appKeySignatureHeader(e,t)):Object.assign(d,this.signatureHeader(e,t,o));let u;s&&(d["Content-Type"]="application/x-www-form-urlencoded; charset=UTF-8",u=new URLSearchParams(s).toString());let h=await(await fetch(l.toString(),{method:t,headers:d,body:u})).text();if(h.includes("userSessionBO is null")||h.includes("InvalidSessionKey")){if(c>=3)throw new Error("[189TV] session expired after retry");return await this.login(),this.request(e,t,{...i,retryCount:c+1})}let g;try{g=YG(h)}catch{throw new Error(`[189TV] \u975E\u9884\u671F\u54CD\u5E94: ${h.slice(0,200)}`)}if(WG(g))throw new Error(`[189TV] API \u9519\u8BEF: ${g.res_message||g.errorMsg||g.msg||h.slice(0,200)}`);return g}async login(){if(!this.addition.access_token)throw new Error("[189TV] access_token \u4E3A\u7A7A\uFF0C\u65E0\u6CD5\u767B\u5F55");let e=await this.request(Ri+"/family/manage/loginFamilyMerge.action","GET",{query:{e189AccessToken:this.addition.access_token},isAppKey:!0});this.tokenInfo=e,e.accessToken&&e.accessToken!==this.addition.access_token&&(this.addition.access_token=e.accessToken,this.persistAccessToken&&await this.persistAccessToken(e.accessToken))}async getFiles(e,t){let n=(t?Ri+"/family/file":Ri)+"/listFiles.action",s=this.addition.order_by||"lastOpTime",o=ZG(this.addition.order_direction||"asc"),a=[];for(let c=1;;c++){let l={folderId:e,fileType:"0",mediaAttr:"0",iconOption:"5",pageNum:String(c),pageSize:"130"};t?(l.familyId=this.addition.family_id||"",l.orderBy=XG(s),l.descending=o):(l.recursive="0",l.orderBy=s,l.descending=o);let u=(await this.request(n,"GET",{query:l,isFamily:t})).fileListAO;if(!u||Number(u.count)===0)break;let f=u.folderList||[],h=u.fileList||[];if(a.push(...f,...h),f.length+h.length<130)break}return a}async getFileDownloadUrl(e,t){let n=(t?Ri+"/family/file":Ri)+"/getFileDownloadUrl.action",s={fileId:e};t?s.familyId=this.addition.family_id||"":(s.dt="3",s.flag="1");let a=(await this.request(n,"GET",{query:s,isFamily:t})).fileDownloadUrl||"";if(!a)throw new Error("[189TV] \u83B7\u53D6\u4E0B\u8F7D\u5730\u5740\u5931\u8D25");a=a.replace(/&/g,"&").replace(/^http:\/\//i,"https://");try{let c=await fetch(a,{method:"GET",headers:{"User-Agent":BC},redirect:"manual"}),l=c.headers.get("location");c.status===302&&l&&(a=l.replace(/^http:\/\//i,"https://"))}catch{}return a}async mkdir(e,t,i){let s=(i?Ri+"/family/file":Ri)+"/createFolder.action",o={folderName:t,relativePath:""};i?(o.familyId=this.addition.family_id||"",o.parentId=e):o.parentFolderId=e,await this.request(s,"POST",{query:o,isFamily:i})}async rename(e,t,i,n){let s=n?Ri+"/family/file":Ri,o=n?"GET":"POST",c=s+(t?"/renameFolder.action":"/renameFile.action"),l={};n&&(l.familyId=this.addition.family_id||""),t?(l.folderId=e,l.destFolderName=i):(l.fileId=e,l.destFileName=i),await this.request(c,o,{query:l,isFamily:n})}async createBatchTask(e,t,i,n){let s={type:e,taskInfos:JSON.stringify(n)};i&&(s.targetFolderId=i),t&&(s.familyId=t);let o=await this.request(Ri+"/batch/createBatchTask.action","POST",{form:s,isFamily:t!==""});if(!o.taskId)throw new Error("[189TV] \u521B\u5EFA\u6279\u91CF\u4EFB\u52A1\u5931\u8D25");return o.taskId}async waitBatchTask(e,t){for(let i=0;i<20;i++){let s=(await this.request(Ri+"/batch/checkBatchTask.action","POST",{form:{type:e,taskId:t}})).taskStatus;if(s===4)return;if(s===2)throw new Error("[189TV] \u76EE\u6807\u5B58\u5728\u540C\u540D\u51B2\u7A81");await new Promise(o=>setTimeout(o,300))}throw new Error("[189TV] \u6279\u91CF\u4EFB\u52A1\u8D85\u65F6")}async move(e,t,i,n,s){let o=await this.createBatchTask("MOVE",s&&this.addition.family_id||"",n,[{fileId:e,fileName:i,isFolder:t?1:0}]);await this.waitBatchTask("MOVE",o)}async copy(e,t,i,n,s){let o=await this.createBatchTask("COPY",s&&this.addition.family_id||"",n,[{fileId:e,fileName:i,isFolder:t?1:0}]);await this.waitBatchTask("COPY",o)}async remove(e,t,i,n){let s=await this.createBatchTask("DELETE",n&&this.addition.family_id||"","",[{fileId:e,fileName:i,isFolder:t?1:0}]);await this.waitBatchTask("DELETE",s)}async upload(e,t,i,n){let s=_l(i),o=i.length,c=(n?Ri+"/family/file":Ri)+(n?"/createFamilyFile.action":"/createUploadFile.action"),l;n?l=await this.request(c,"POST",{query:{familyId:this.addition.family_id||"",parentId:e,fileMd5:s,fileName:t,fileSize:String(o),resumePolicy:"1"},isFamily:n}):l=await this.request(c,"POST",{form:{parentFolderId:e,fileName:t,size:String(o),md5:s,opertype:"3",flag:"1",resumePolicy:"1",isLog:"0"},isFamily:n});let d=l.uploadFileId,u=l.fileUploadUrl,f=l.fileCommitUrl;if(!d||!u)throw new Error("[189TV] \u521B\u5EFA\u4E0A\u4F20\u4F1A\u8BDD\u5931\u8D25");let h={ResumePolicy:"1",Expect:"100-continue","User-Agent":BC};n?(h.FamilyId=this.addition.family_id||"",h.UploadFileId=String(d)):h["Edrive-UploadFileId"]=String(d),Object.assign(h,this.signatureHeader(u,"PUT",n));let g=await fetch(u,{method:"PUT",headers:h,body:new Uint8Array(i)});if(g.status!==200)throw new Error(`[189TV] \u4E0A\u4F20\u5931\u8D25: HTTP ${g.status}`);n?await this.request(f,"POST",{query:{ResumePolicy:"1",UploadFileId:String(d),FamilyId:this.addition.family_id||""},isFamily:n}):await this.request(f,"POST",{form:{opertype:"3",resumePolicy:"1",uploadFileId:String(d),isLog:"0"},isFamily:n})}}});function v_(r){if(!r)return new Date().toISOString();let e=r.trim().replace(/["']/g,""),t=e.replace(/ +08$/,"+08:00"),i=new Date(t);return isNaN(i.getTime())?e:i.toISOString()}function k_(r){if("parentId"in r||!("size"in r)){let t=r;return{name:t.name,size:0,is_dir:!0,modified:v_(t.lastOpTime||t.createDate),sign:t.id,type:1}}let e=r;return{name:e.name,size:e.size,is_dir:!1,modified:v_(e.lastOpTime||e.createDate),sign:e.id,type:X(e.name,!1),thumb:e.icon?.smallUrl||"",raw_url:""}}var yp,S_=V(()=>{"use strict";Be();b_();yp=class{client;pathCache=new Map;constructor(e,t){this.client=new mp(e,t)}async init(){await this.client.init()}isFamily(){return this.client.isFamily()}async list(e,t){let i=await this.pathToId(t);return(await this.client.getFiles(i,this.isFamily())).map(k_)}async get(e,t){let i=t.split("/").filter(Boolean),n=i[i.length-1]||"root",s="/"+i.slice(0,-1).join("/");try{let o=await this.pathToId(s),c=(await this.client.getFiles(o,this.isFamily())).find(l=>l.name===n);if(c){let l=k_(c);if(!l.is_dir)try{l.raw_url=await this.client.getFileDownloadUrl(c.id,this.isFamily()),l.raw_url_headers={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"}}catch{l.raw_url_error="[189TV] failed to resolve download url"}return l}}catch{}return{name:n,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""}}async mkdir(e,t){let i=t.split("/").filter(Boolean),n=i.pop()||"new_folder",s="/"+i.join("/");await this.client.mkdir(await this.pathToId(s),n,this.isFamily()),this.pathCache.clear()}async rename(e,t,i){let n=await this.resolveEntry(t);await this.client.rename(n.id,n.isDir,i,this.isFamily()),this.pathCache.clear()}async remove(e,t,i){let n=await this.resolveEntry(t),s=t.split("/").filter(Boolean).pop()||"";await this.client.remove(n.id,n.isDir,s,this.isFamily()),this.pathCache.clear()}async move(e,t,i,n,s){let o=await this.resolveEntry(n),a=n.split("/").filter(Boolean).pop()||"";await this.client.move(o.id,o.isDir,a,await this.pathToId(t),this.isFamily()),this.pathCache.clear()}async copy(e,t,i,n,s){let o=await this.resolveEntry(n),a=n.split("/").filter(Boolean).pop()||"";await this.client.copy(o.id,o.isDir,a,await this.pathToId(t),this.isFamily()),this.pathCache.clear()}async put(e,t,i){let n=t.split("/").filter(Boolean),s=n.pop()||"file",o="/"+n.join("/");await this.client.upload(await this.pathToId(o),s,new Uint8Array(i),this.isFamily()),this.pathCache.clear()}async resolveEntry(e){let t=e.split("/").filter(Boolean),i=t[t.length-1],n="/"+t.slice(0,-1).join("/"),s=await this.pathToId(n),a=(await this.client.getFiles(s,this.isFamily())).find(l=>l.name===i);if(!a)throw new Error(`[189TV] '${i}' not found`);let c="parentId"in a||!("size"in a);return{id:a.id,isDir:c}}async pathToId(e){let t=e.split("/").filter(Boolean).join("/");if(!t)return this.isFamily()?"":"-11";if(this.pathCache.has(t))return this.pathCache.get(t);let i=t.split("/"),n=this.isFamily()?"":"-11";for(let s=0;s<i.length;s++){let a=(await this.client.getFiles(n,this.isFamily())).find(l=>l.name===i[s]&&"parentId"in l);if(!a)throw new Error(`[189TV] Directory '${i[s]}' not found`);n=a.id;let c="/"+i.slice(0,s+1).join("/");this.pathCache.set(c,n)}return n}}});function Us(r,e){let t=r.replace(/\/+$/,""),i=e.replace(/^\/+/,"");return!t&&!i?"/":t?i?`${t}/${i}`:t:"/"+i}function ez(r){return r.split("/").map(e=>encodeURIComponent(e)).join("/")}function D_(r,e){let t=[],i,n=/<(?:[a-zA-Z0-9_-]+:)?response\b[^>]*>([\s\S]*?)<\/(?:[a-zA-Z0-9_-]+:)?response>/gi,s;for(;(s=n.exec(r))!==null;){let o=s[1],a=/<(?:[a-zA-Z0-9_-]+:)?href\b[^>]*>([\s\S]*?)<\/(?:[a-zA-Z0-9_-]+:)?href>/i.exec(o);if(!a)continue;let c=a[1].trim(),l=c;try{l=decodeURIComponent(c)}catch{}let d=/<(?:[a-zA-Z0-9_-]+:)?propstat\b[^>]*>([\s\S]*?)<\/(?:[a-zA-Z0-9_-]+:)?propstat>/gi,u,f="";for(;(u=d.exec(o))!==null;){let E=u[1],P=/<(?:[a-zA-Z0-9_-]+:)?status\b[^>]*>([\s\S]*?)<\/(?:[a-zA-Z0-9_-]+:)?status>/i.exec(E),N=P?P[1]:"";if(N.includes("200")||N.toLowerCase().includes("ok")){let J=/<(?:[a-zA-Z0-9_-]+:)?prop\b[^>]*>([\s\S]*?)<\/(?:[a-zA-Z0-9_-]+:)?prop>/i.exec(E);if(J){f=J[1];break}}}if(!f)continue;let h=/<(?:[a-zA-Z0-9_-]+:)?resourcetype\b[^>]*>[\s\S]*?<(?:[a-zA-Z0-9_-]+:)?collection\b/i.test(f),g=/<(?:[a-zA-Z0-9_-]+:)?displayname\b[^>]*>([\s\S]*?)<\/(?:[a-zA-Z0-9_-]+:)?displayname>/i.exec(f),p=g?g[1].trim():"",I=l.replace(/\/+$/,""),y=I&&I.split("/").pop()||"",w=p||y,C=/<(?:[a-zA-Z0-9_-]+:)?getcontentlength\b[^>]*>([\s\S]*?)<\/(?:[a-zA-Z0-9_-]+:)?getcontentlength>/i.exec(f),b=h?0:C&&parseInt(C[1].trim(),10)||0,x=/<(?:[a-zA-Z0-9_-]+:)?getlastmodified\b[^>]*>([\s\S]*?)<\/(?:[a-zA-Z0-9_-]+:)?getlastmodified>/i.exec(f),_=new Date().toISOString();if(x){let E=new Date(x[1].trim());isNaN(E.getTime())||(_=E.toISOString())}let R=/<(?:[a-zA-Z0-9_-]+:)?getcontenttype\b[^>]*>([\s\S]*?)<\/(?:[a-zA-Z0-9_-]+:)?getcontenttype>/i.exec(f),U=R?R[1].trim():void 0,T=/<(?:[a-zA-Z0-9_-]+:)?getetag\b[^>]*>([\s\S]*?)<\/(?:[a-zA-Z0-9_-]+:)?getetag>/i.exec(f),D=T?T[1].trim().replace(/^"|"$/g,""):void 0,B={name:w,path:l,size:b,modified:_,isFolder:h,contentType:U,etag:D},Q=e.replace(/\/+$/,"").toLowerCase(),v=I.toLowerCase();!i&&(v===Q||v.endsWith(Q)||Q===""&&v==="")?i=B:t.push(B)}return{self:i,items:t}}function tz(r){let e={},t=r.replace(/^digest\s+/i,"").split(/,\s*/);for(let i of t){let n=i.indexOf("=");if(n!==-1){let s=i.slice(0,n).trim(),o=i.slice(n+1).trim().replace(/^"|"$/g,"");s==="realm"?e.realm=o:s==="nonce"?e.nonce=o:s==="qop"?e.qop=o:s==="opaque"?e.opaque=o:s==="algorithm"&&(e.algorithm=o)}}return e}function Q_(r,e,t,i,n,s=1){let o=s.toString(16).padStart(8,"0"),a=Math.random().toString(36).substring(2,18),c=r.realm||"",l=r.nonce||"",d=(r.algorithm||"MD5").toUpperCase(),u=r.qop||"",f="";if(d==="MD5"||d==="")f=uc.default.MD5(`${e}:${c}:${t}`).toString();else if(d==="MD5-SESS"){let I=uc.default.MD5(`${e}:${c}:${t}`).toString();f=uc.default.MD5(`${I}:${l}:${a}`).toString()}let h="";(u==="auth"||u==="")&&(h=uc.default.MD5(`${i}:${n}`).toString());let g="";u?g=uc.default.MD5(`${f}:${l}:${o}:${a}:${u}:${h}`).toString():g=uc.default.MD5(`${f}:${l}:${h}`).toString();let p=`Digest username="${e}", realm="${c}", nonce="${l}", uri="${n}", response="${g}"`;return d&&(p+=`, algorithm=${d}`),u&&(p+=`, qop=${u}, nc=${o}, cnonce="${a}"`),r.opaque&&(p+=`, opaque="${r.opaque}"`),p}async function iz(r,e,t){let i=new URL(t),n=i.hostname.split("."),s=n[n.length-1],a=`${rz[s]||"https://login.microsoftonline.com"}/extSTS.srf`,c=`<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" +</div>`;return new Error(s)}async rawRequest(e,t={}){let i={"user-agent":this.options.userAgent,accept:"application/json;charset=UTF-8","x-device-id":this.options.deviceId,"x-client-id":this.options.clientId,"x-client-version":this.options.clientVersion,...t.headers||{}},n;t.body!==void 0&&(typeof t.body=="string"?n=t.body:(n=JSON.stringify(t.body),i["content-type"]||(i["content-type"]="application/json;charset=UTF-8")));let s=await fetch(e,{method:t.method||"GET",headers:i,body:n}),o=await s.text(),a={};try{a=JSON.parse(o)}catch{if(!s.ok)throw new Error(`${s.status} ${s.statusText}: ${o}`);return o}if(a.error==="review_panel")throw this.formatReviewData(a);return a}async authRequest(e,t={}){if(!this.tokenResp?.access_token)throw new Error("empty token");let i={Authorization:`${this.tokenResp.token_type} ${this.tokenResp.access_token}`,"X-Captcha-Token":this.captchaToken,...t.headers||{}},n=await this.rawRequest(e,{...t,headers:i}),s=n?.error_code||0;if(s===4122||s===4121||s===10||s===16){if(this.tokenResp?.refresh_token){let o=await this.refreshToken(this.tokenResp.refresh_token);return this.tokenResp=o,this.options.onPersistToken&&await this.options.onPersistToken(o),this.authRequest(e,t)}throw new Error(`Token expired error ${s}`)}else if(s===9){let o=k_(t.method||"GET",e);return await this.refreshCaptchaTokenAtLogin(o,this.tokenResp.user_id||""),this.authRequest(e,t)}else if(s!==0||n.error&&n.error!=="success")throw new Error(`ErrorCode: ${n.error_code||0}, Error: ${n.error||""}, ErrorDescription: ${n.error_description||""}`);return n}async coreLogin(e,t){let i=`${Q_}/xluser.core.login/v3/login`,n={protocolVersion:"301",sequenceNo:"1000012",platformVersion:"10",isCompressed:"0",appid:F_,clientVersion:this.options.clientVersion,peerID:"00000000000000000000000000000000",appName:"ANDROID-com.xunlei.downloadprovider",sdkVersion:"512000",devicesign:S_(this.options.deviceId,this.options.packageName),netWorkType:"WIFI",providerName:"NONE",deviceModel:"M2004J7AC",deviceName:"Xiaomi_M2004j7ac",OSVersion:"12",creditkey:this.creditKey,hl:"zh-CN",userName:e,passWord:t,verifyKey:"",verifyCode:"",isMd5Pwd:"0"},s=await this.rawRequest(i,{method:"POST",body:n,headers:{"user-agent":"android-ok-http-client/xl-acc-sdk/version-5.0.12.512000"}});return this.coreLoginResp=s,s}async login(e,t){let n=(await this.coreLogin(e,t)).sessionID,s=`${mp}/auth/signin/token`;await this.refreshCaptchaTokenInLogin(k_("POST",s),e);let o=await this.rawRequest(s,{method:"POST",body:{client_id:this.options.clientId,client_secret:this.options.clientSecret,provider:az,signin_token:n}});return this.tokenResp=o,this.creditKey="",this.options.onPersistToken&&await this.options.onPersistToken(o),o}async refreshToken(e){let t=`${mp}/auth/token`,i=await this.rawRequest(t,{method:"POST",body:{grant_type:"refresh_token",refresh_token:e,client_id:this.options.clientId,client_secret:this.options.clientSecret}});return this.tokenResp=i,this.options.onPersistToken&&await this.options.onPersistToken(i),i}async isLogin(){if(!this.tokenResp?.access_token)return!1;try{return await this.authRequest(`${mp}/user/me`,{method:"GET"}),!0}catch{return!1}}}});function U_(r,e,t){let i=r.kind===FC,n=r.web_content_link||"";if(t&&r.medias&&r.medias.length>0){for(let s of r.medias)if(s.link?.url){n=s.link.url;break}}return{name:r.name,size:parseInt(r.size||"0",10),is_dir:i,modified:r.modified_time||r.created_time||new Date().toISOString(),sign:"",type:X(r.name,i),thumb:r.thumbnail_link||r.icon_link||"",raw_url:n,raw_url_headers:{"User-Agent":e}}}function R_(r){if(r?.device_id&&r.device_id.trim().length===32)return r.device_id.trim();let e=`${r?.username||""}${r?.password||""}`;return e.trim()?Ac(e):Ac(Math.random().toString(36)+Date.now().toString(36))}var $u,yp,N_=j(()=>{"use strict";Be();He();T_();$u=class{client;addition;identity="";onPersistCallback;constructor(e,t){this.addition=e,this.onPersistCallback=t;let i=R_(e);e.device_id=i,this.client=new ju({deviceId:i,clientId:e.client_id||"",clientSecret:e.client_secret||"",clientVersion:"8.31.0.9726",packageName:"com.xunlei.downloadprovider",userAgent:"ANDROID-com.xunlei.downloadprovider/8.31.0.9726 netWorkType/5G appid/40 deviceName/Xiaomi_M2004j7ac deviceModel/M2004J7AC OSVersion/12 protocolVersion/301 platformVersion/10 sdkVersion/512000 Oauth2Client/0.9 (Linux 4_14_186-perf-gddfs8vbb238b) (JAVA 0)",downloadUserAgent:"Dalvik/2.1.0 (Linux; U; Android 12; M2004J7AC Build/SP1A.210812.016)",algorithms:["9uJNVj/wLmdwKrJaVj/omlQ","Oz64Lp0GigmChHMf/6TNfxx7O9PyopcczMsnf","Eb+L7Ce+Ej48u","jKY0","ASr0zCl6v8W4aidjPK5KHd1Lq3t+vBFf41dqv5+fnOd","wQlozdg6r1qxh0eRmt3QgNXOvSZO6q/GXK","gmirk+ciAvIgA/cxUUCema47jr/YToixTT+Q6O","5IiCoM9B1/788ntB","P07JH0h6qoM6TSUAK2aL9T5s2QBVeY9JWvalf","+oK0AN"],space:e.space||"",captchaToken:e.captcha_token||"",creditKey:e.credit_key||"",onPersistToken:async n=>{this.onPersistCallback&&await this.onPersistCallback({refresh_token:n.refresh_token,captcha_token:this.client.captchaToken,device_id:i})},onPersistCaptchaToken:async n=>{this.onPersistCallback&&await this.onPersistCallback({captcha_token:n})}})}get downloadUserAgent(){return this.addition.download_user_agent||"Dalvik/2.1.0 (Linux; U; Android 12; M2004J7AC Build/SP1A.210812.016)"}get useVideoUrl(){return!!this.addition.use_video_url}async init(){let e=this.addition.username||"",t=this.addition.password||"",i=Ac(`${e}${t}`);(this.identity!==i||!await this.client.isLogin())&&(this.identity=i,await this.client.login(e,t))}resolveFolderId(e){if(!e||e==="/"||e==="0")return this.addition.root_folder_id||"";let t=e.split("/").filter(Boolean);return t[t.length-1]||this.addition.root_folder_id||""}async list(e,t){let i=this.resolveFolderId(t),n=[],s="";for(;;){let o=new URL(Us);o.searchParams.set("space",this.addition.space||""),o.searchParams.set("__type","drive"),o.searchParams.set("refresh","true"),o.searchParams.set("__sync","true"),o.searchParams.set("parent_id",i),o.searchParams.set("page_token",s),o.searchParams.set("with_audit","true"),o.searchParams.set("limit","100"),o.searchParams.set("filters",JSON.stringify({phase:{eq:"PHASE_TYPE_COMPLETE"},trashed:{eq:!1}}));let a=await this.client.authRequest(o.toString(),{method:"GET"});if(a.files&&a.files.length>0)for(let c of a.files)n.push(U_(c,this.downloadUserAgent,this.useVideoUrl));if(!a.next_page_token)break;s=a.next_page_token}return de(n,this.addition.order_by,this.addition.order_direction)}async get(e,t){let i=this.resolveFolderId(t),n=new URL(`${Us}/${i}`);n.searchParams.set("space",this.addition.space||"");let s=await this.client.authRequest(n.toString(),{method:"GET"});return U_(s,this.downloadUserAgent,this.useVideoUrl)}async mkdir(e,t){let i=t.split("/").filter(Boolean),n=i.pop()||"new_folder",s="/"+i.join("/"),o=this.resolveFolderId(s);await this.client.authRequest(Us,{method:"POST",body:{kind:FC,name:n,parent_id:o,space:this.addition.space||""}})}async rename(e,t,i){let n=this.resolveFolderId(t);await this.client.authRequest(`${Us}/${n}`,{method:"PATCH",body:{name:i,space:this.addition.space||""}})}async remove(e,t,i){let n=this.resolveFolderId(t),s=new URL(`${Us}/${n}/trash`);s.searchParams.set("space",this.addition.space||""),await this.client.authRequest(s.toString(),{method:"PATCH",body:{}})}async move(e,t,i,n,s){let o=this.resolveFolderId(n),a=this.resolveFolderId(t);await this.client.authRequest(`${Us}:batchMove`,{method:"POST",body:{to:{parent_id:a},ids:[o],space:this.addition.space||""}})}async copy(e,t,i,n,s){let o=this.resolveFolderId(n),a=this.resolveFolderId(t);await this.client.authRequest(`${Us}:batchCopy`,{method:"POST",body:{to:{parent_id:a},ids:[o],space:this.addition.space||""}})}async put(e,t,i){let n=t.split("/").filter(Boolean),s=n.pop()||"file",o="/"+n.join("/"),a=this.resolveFolderId(o),c=P_(i),l=await this.client.authRequest(Us,{method:"POST",body:{kind:__,parent_id:a,name:s,size:i.length.toString(),hash:c,upload_type:PC,space:this.addition.space||""}});if(l.upload_type===PC&&l.resumable?.params){let d=l.resumable.params,u=d.endpoint;u.startsWith(d.bucket+".")&&(u=u.slice(d.bucket.length+1)),!u.startsWith("http://")&&!u.startsWith("https://")&&(u=`https://${u}`);let f=`${u.replace(/\/$/,"")}/${d.bucket}/${d.key}`,h={"x-amz-security-token":d.security_token},g=await fetch(f,{method:"PUT",headers:h,body:i});if(!g.ok)throw new Error(`S3 Upload failed: ${g.status} ${g.statusText}`)}}},yp=class extends $u{constructor(e,t){super(e,t);let i=R_(e);e.device_id=i;let n=e.sign_type==="captcha_sign"?void 0:(e.algorithms||"").split(",").map(s=>s.trim()).filter(Boolean);this.client=new ju({deviceId:i,clientId:e.client_id||"",clientSecret:e.client_secret||"",clientVersion:e.client_version||"8.31.0.9726",packageName:e.package_name||"com.xunlei.downloadprovider",userAgent:e.user_agent||"ANDROID-com.xunlei.downloadprovider/8.31.0.9726 netWorkType/5G appid/40 deviceName/Xiaomi_M2004j7ac deviceModel/M2004J7AC OSVersion/12 protocolVersion/301 platformVersion/10 sdkVersion/512000 Oauth2Client/0.9 (Linux 4_14_186-perf-gddfs8vbb238b) (JAVA 0)",downloadUserAgent:e.download_user_agent||"Dalvik/2.1.0 (Linux; U; Android 12; M2004J7AC Build/SP1A.210812.016)",algorithms:n&&n.length>0?n:void 0,timestamp:e.timestamp,captchaSign:e.captcha_sign,useVideoUrl:e.use_video_url,space:e.space||"",captchaToken:e.captcha_token||"",creditKey:e.credit_key||"",onPersistToken:async s=>{this.onPersistCallback&&await this.onPersistCallback({refresh_token:s.refresh_token,captcha_token:this.client.captchaToken,device_id:i})},onPersistCaptchaToken:async s=>{this.onPersistCallback&&await this.onPersistCallback({captcha_token:s})}})}async init(){let e=this.addition,t="";e.login_type==="refresh_token"?t=Ac(e.refresh_token||""):t=Ac(`${e.username||""}${e.password||""}`),(this.identity!==t||!await this.client.isLogin())&&(this.identity=t,e.login_type==="refresh_token"&&e.refresh_token?await this.client.refreshToken(e.refresh_token):e.username&&e.password&&await this.client.login(e.username,e.password))}}});function q_(r){if(!r)return new Date().toISOString();let e=r.trim(),t=new Date(e);if(!isNaN(t.getTime()))return t.toISOString();let i=Date.now(),n=864e5,s=e.match(lz);if(s){let o=parseFloat(s[1])||0,a=s[2];if(a.includes("\u79D2\u524D"))return new Date(i-o*1e3).toISOString();if(a.includes("\u5206")||a.includes("\u5206\u949F\u524D"))return new Date(i-o*6e4).toISOString();if(a.includes("\u5C0F\u65F6\u524D")||a.includes("\u5C0F\u65F6"))return new Date(i-o*36e5).toISOString();if(a.includes("\u5929\u524D")||a.includes("\u5929"))return new Date(i-o*n).toISOString();if(a.includes("\u6628\u5929"))return new Date(i-n).toISOString();if(a.includes("\u524D\u5929"))return new Date(i-n*2).toISOString()}return new Date().toISOString()}function O_(r){if(!r)return 0;let e=r.trim().match(dz);if(!e)return 0;let t=parseFloat(e[1]);switch(e[2].toUpperCase()){case"B":return Math.floor(t);case"K":return Math.floor(t*1024);case"M":return Math.floor(t*1048576);case"G":return Math.floor(t*1073741824);default:return 0}}function Vu(r){return r.replace(/<!--[\s\S]*?-->|[^:]\/\/.*|\/\*[\s\S]*?\*\//g,e=>e.slice(1,3)==="//"?e.slice(0,1):` +`)}function M_(r){let e="",t=!1,i=!1;for(let n=0;n<r.length;n++){let s=r[n];if(i&&(s===` +`||s==="\r")){i=!1,e+=s;continue}if(t&&s==="*"&&n+1<r.length&&r[n+1]==="/"){t=!1,n++;continue}if(!(t||i)){if(s==="/"&&n+1<r.length){let o=r[n+1];if(o==="*"){t=!0,n++;continue}else if(o==="/"){i=!0,n++;continue}}e+=s}}return e}function fz(r){let e=[6,28,34,31,33,18,30,23,9,8,19,38,17,24,0,5,32,21,10,22,25,14,15,3,16,27,13,35,2,29,11,26,4,36,1,39,37,7,20,12],t=new Array(r.length).fill("");for(let i=0;i<e.length;i++){let n=e[i];n<t.length&&i<r.length&&(t[n]=r[i])}return t.join("")}function Az(r,e){let t=Math.min(r.length,e.length),i=Math.floor(t/2),n="";for(let s=0;s<i;s++){let o=parseInt(r.slice(s*2,s*2+2),16),a=parseInt(e.slice(s*2,s*2+2),16),c=o^a;n+=c.toString(16).padStart(2,"0")}return n}function Ip(r){let e=r.match(uz);if(!e||e.length<2)throw new Error("[Lanzou] \u65E0\u6CD5\u5339\u914D\u5230 acw_sc__v2 \u7684 arg1 \u53C2\u6570");let t=e[1];return Az(fz(t),"3000176000856006061501533003690027800375")}function hz(r,e){if(!r||!e)return"";let t=i=>{for(let n=i.length-1;n>=0;n--){let s=(i[n][1]||"").trim().replace(/^['"]|['"]$/g,"");if(s)return s}return""};if(r!=="sasign"){let i=Array.from(e.matchAll(new RegExp(`(?:var|let|const)\\s+${r}\\s*=\\s*['"]?([\\s\\S]*?)['"]?;`,"gi")));if(i.length){let o=t(i);if(o)return o}let n=Array.from(e.matchAll(new RegExp(`(?:^|[;,\\s])${r}\\s*=\\s*['"]?([\\s\\S]*?)['"]?;`,"gim")));if(n.length){let o=t(n);if(o)return o}let s=Array.from(e.matchAll(new RegExp(`['"]?${r}['"]?\\s*:\\s*['"]?([\\s\\S]*?)['"]?`,"gi")));if(s.length){let o=t(s);if(o)return o}}else{let i=Array.from(e.matchAll(new RegExp(`(?:var|let|const)?\\s*${r}\\s*=\\s*['"]?([\\s\\S]*?)['"]?;`,"gi")));if(i.length===3)return i[1][1].trim().replace(/^['"]|['"]$/g,"");if(i.length>0)return t(i)}return""}function gz(r,e){let t={},i=/['"]?([a-zA-Z0-9_$]+)['"]?\s*:\s*(['"]?([^'",}\s]+)['"]?)/g,n=r.matchAll(i);for(let s of n){let o=s[1],a=s[2],c=s[3];if(!c)t[o]="";else if(a.includes("'")||a.includes('"')||/^\d+$/.test(a))t[o]=c;else{let l=hz(c,e);t[o]=l!==""?l:c}}return t}function pz(r){let e={},t=r.split("&");for(let i of t){let[n,s]=i.split("=");n&&(e[decodeURIComponent(n)]=decodeURIComponent(s||""))}return e}function Ul(r,e){let t=e||r,i=Array.from(r.matchAll(/data\s*:\s*({[\s\S]*?})/g));if(i.length>0){let s=i[0][1];for(let a of i)a[1].length>s.length&&(s=a[1]);let o=gz(s,t);if(Object.keys(o).length>0)return o}let n=r.match(/data\s*:\s*['"]([^'"]+)['"]/);if(n&&n[1].includes("="))return pz(n[1]);throw new Error("[Lanzou] \u672A\u80FD\u627E\u5230\u8BF7\u6C42\u53C2\u6570 data \u5BF9\u8C61")}function L_(r,e){let t=new RegExp(`function\\s+${e}\\s*\\([^)]*\\)\\s*\\{`,"i"),i=r.search(t);if(i===-1)throw new Error(`[Lanzou] \u672A\u627E\u5230\u51FD\u6570 ${e}`);let n=0,s=-1;for(let o=i;o<r.length;o++)if(r[o]==="{")n===0&&(s=o),n++;else if(r[o]==="}"&&(n--,n===0))return r.slice(i,o+1);return r.slice(i)}var lz,dz,uz,TC=j(()=>{"use strict";lz=/([0-9.]*)\s*([\u4e00-\u9fa5]+)/,dz=/([0-9.]+)\s*([bkm]+)/i,uz=/arg1='([0-9A-Z]+)'/i});function xp(r,e){try{let t=new URL(r);return t.host=e,t.toString()}catch{return r}}function Cp(r){try{return new URL(r).host}catch{return""}}var wp,UC,Ep,H_=j(()=>{"use strict";TC();wp=["pan.lanzoui.com","lanzouw.com","lanzoux.com","lanzouy.com","lanzou.com"],UC="[Lanzou] Cookie \u5DF2\u8FC7\u671F\u6216\u5931\u6548\uFF0C\u8BF7\u5728\u7BA1\u7406\u540E\u53F0\u91CD\u65B0\u586B\u5199 Cookie\uFF08\u6709\u6548\u671F\u7EA6 15 \u5929\uFF09",Ep=class{addition;cookie="";uid="";vei="";onCookieUpdate;acwMap=new Map;workingShareHost="";constructor(e,t){this.addition=e,this.cookie=(e.cookie||"").trim(),this.onCookieUpdate=t}getBaseUrl(){return(this.addition.baseUrl||this.addition.base_url||"https://pc.woozooo.com").replace(/\/$/,"")}getShareUrl(){return(this.addition.shareUrl||this.addition.share_url||"https://pan.lanzoui.com").replace(/\/$/,"")}shareHost(){try{return new URL(this.getShareUrl()).host}catch{return"pan.lanzoui.com"}}getUserAgent(){return this.addition.user_agent||"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"}getCookie(){return this.cookie}updateCookie(e,t){if(!e)return;let i=e.match(/(?:^|,\s*)acw_sc__v2=([^;,\s]+)/i);i&&i[1]&&this.acwMap.set(t||this.shareHost(),i[1]);let n=this.cookie?this.cookie.split(";").map(a=>a.trim()):[],s=e.split(/,(?=[a-zA-Z0-9_\-]+=[^;]+)/);for(let a of s){let c=a.split(";")[0].trim(),l=c.indexOf("=");if(l>0){let d=c.slice(0,l).trim(),u=c.slice(l+1).trim(),f=n.findIndex(h=>h.startsWith(`${d}=`));f!==-1?n[f]=`${d}=${u}`:n.push(`${d}=${u}`)}}let o=n.filter(Boolean).join("; ");o!==this.cookie&&(this.cookie=o,this.onCookieUpdate?.(this.cookie))}async init(){let e=this.addition.type||"cookie";if(e==="account"?(await this.login(),await this.initVeiAndUid()):e==="cookie"&&this.cookie&&await this.initVeiAndUid(),!this.acwMap.has(this.shareHost()))try{await this.request(`${this.getShareUrl()}/`,"GET")}catch{}}async probeShareDomain(e){let t=(e||"").replace(/^\//,"");if(!t)return this.getShareUrl();try{let i=await this.request(`${this.getShareUrl()}/${t}`,"GET");return this.extractRealShareDomain(i)||this.getShareUrl()}catch{return this.getShareUrl()}}extractRealShareDomain(e){let t=[],i=e.match(/<iframe[^>]*?src=["'](https?:\/\/[^"'/]+)/i);i&&t.push(i[1]);let n=e.match(/["'](https?:\/\/[^"']*?\/fn\?[^"']*)["']/i);n&&t.push(n[1]);let s=e.match(/["']?(?:dom|url)\s*[:=]\s*["']?(https?:\/\/[^"'\s]+)/i);s&&t.push(s[1]);for(let o of t)try{let a=new URL(o);return`${a.protocol}//${a.host}`}catch{}return""}async login(){if(!this.addition.account||!this.addition.password)throw new Error("[Lanzou] \u8D26\u53F7\u6A21\u5F0F\u4E0B\u5FC5\u987B\u63D0\u4F9B\u8D26\u53F7\u4E0E\u5BC6\u7801");for(let e=0;e<3;e++){let t={"User-Agent":this.getUserAgent(),Referer:"https://pc.woozooo.com","Content-Type":"application/x-www-form-urlencoded"};this.acwMap.has("up.woozooo.com")&&(t.Cookie=`acw_sc__v2=${this.acwMap.get("up.woozooo.com")}`);let i=await fetch("https://up.woozooo.com/mlogin.php",{method:"POST",headers:t,body:new URLSearchParams({task:"3",uid:this.addition.account,pwd:this.addition.password,setSessionId:"",setSig:"",setScene:"",setTocen:"",formhash:""})});this.updateCookie(i.headers.get("set-cookie"),"up.woozooo.com");let n=await i.text();if(n.includes("acw_sc__v2")){this.acwMap.set("up.woozooo.com",Ip(n));continue}let s;try{s=JSON.parse(n)}catch{throw new Error(`[Lanzou] \u767B\u5F55\u54CD\u5E94\u5F02\u5E38: ${n.slice(0,200)}`)}if(s.zt!==1)throw new Error(`[Lanzou] \u767B\u5F55\u5931\u8D25: ${s.info||n}`);return}throw new Error("[Lanzou] \u767B\u5F55\u591A\u6B21\u89E6\u53D1 WAF \u6821\u9A8C\u5931\u8D25")}async initVeiAndUid(){let e=await this.request(`${this.getBaseUrl()}/mydisk.php?item=files&action=index`,"GET"),t=e.match(/uid=([^'"&;]+)/);if(!t)throw new Error(UC);this.uid=t[1];let i=Vu(e);try{let n=Ul(i);this.vei=n.vei||""}catch{let n=e.match(/['"]?vei['"]?\s*:\s*['"]?([^'",\s]+)['"]?/);n&&(this.vei=n[1])}}async request(e,t="GET",i,n){let s=e,o=Cp(e),a=o===this.shareHost()||wp.includes(o);a&&this.workingShareHost&&o!==this.workingShareHost&&(s=xp(e,this.workingShareHost));let c=a,l=c?wp.filter(u=>!e.includes(u)):[],d=u=>{let f=Cp(u),h=f===this.shareHost()||wp.includes(f),g;return h?n&&wp.includes(Cp(n))||n&&Cp(n)===this.shareHost()?g=xp(n,f):g=`${new URL(u).origin}/`:g=n||this.getBaseUrl(),this.requestOnce(u,t,i,g,f)};try{return await d(s)}catch(u){if(!(c&&(u?.status===403||u?.status===405||/403|405/.test(u?.message||""))))throw u;for(let h of l){let g=xp(s,h);try{let p=await d(g);return this.workingShareHost=h,p}catch(p){if(!(p?.status===403||p?.status===405||/403|405/.test(p?.message||"")))throw p}}throw u}}async requestOnce(e,t,i,n,s){for(let o=0;o<3;o++){let a={Referer:n,"User-Agent":this.getUserAgent(),"Accept-Language":"zh-CN,zh;q=0.9,en;q=0.8","X-Requested-With":"XMLHttpRequest","Sec-Fetch-Dest":"empty","Sec-Fetch-Mode":"cors","Sec-Fetch-Site":"same-origin",Accept:"*/*"},c=(()=>{try{return new URL(n).host}catch{return""}})();c===s&&(a.Origin=n.slice(0,n.indexOf(c)+c.length));let l=this.cookie;e.includes("/file/")&&(l=(l?l+"; ":"")+"down_ip=1");let d=this.acwMap.get(s);d&&(l=(l?l+"; ":"")+`acw_sc__v2=${d}`),l&&(a.Cookie=l);let u;i&&t==="POST"&&(a["Content-Type"]="application/x-www-form-urlencoded; charset=UTF-8",u=new URLSearchParams(i).toString());let f=await fetch(e,{method:t,headers:a,body:u});if(this.updateCookie(f.headers.get("set-cookie"),s),f.status===403||f.status===405){let g=new Error(`[Lanzou] ${e} \u8FD4\u56DE HTTP ${f.status}`);throw g.status=f.status,g}if(f.status===429||f.status>=500||f.status===408){if(o<2){await new Promise(p=>setTimeout(p,300*(o+1)));continue}let g=new Error(`[Lanzou] ${e} \u8FD4\u56DE HTTP ${f.status}\uFF08\u591A\u6B21\u91CD\u8BD5\u4ECD\u5931\u8D25\uFF09`);throw g.status=f.status,g}let h=await f.text();if(h.includes("acw_sc__v2")){this.acwMap.set(s,Ip(h));continue}return h}throw new Error("[Lanzou] \u8BF7\u6C42\u89E6\u53D1 acw_sc__v2 \u6821\u9A8C\u8D85\u9650")}async doupload(e){let t=`${this.getBaseUrl()}/doupload.php?uid=${this.uid}&vei=${this.vei}`,i=await this.request(t,"POST",e),n;try{n=JSON.parse(i)}catch{throw new Error(`[Lanzou] \u975E JSON \u54CD\u5E94: ${i.slice(0,200)}`)}if(n.zt===9){if(this.addition.type==="account")return await this.login(),await this.initVeiAndUid(),this.doupload(e);throw new Error(UC)}if(n.zt!==1&&n.zt!==2&&n.zt!==4)throw new Error(n.inf||n.info||`[Lanzou] API \u9519\u8BEF (zt: ${n.zt})`);return n}async checkCookieValid(){if(this.addition.type==="url")return{valid:!0};try{return this.addition.type==="account"?{valid:!0}:(await this.getFiles("-1"),{valid:!0})}catch(e){let t=e?.message||String(e);return{valid:!1,error:/Cookie 已过期|未能获取到 uid|请检查 Cookie|zt=9/i.test(t)?UC:t}}}async getAllFiles(e){let t=await this.getFolders(e),i=await this.getFiles(e);return[...t,...i]}async getFolders(e){return((await this.doupload({task:"47",folder_id:e||"-1"})).text||[]).map(n=>({...n,name:n.name,fol_id:n.fol_id||n.id,is_folder:!0}))}async getFiles(e){let t=[];for(let i=1;;i++){let s=(await this.doupload({task:"5",folder_id:e||"-1",pg:String(i)})).text||[];if(s.length===0)break;t.push(...s.map(o=>({...o,name_all:o.name_all||o.name,id:o.id,size:o.size,time:o.time,is_folder:!1})))}return t}async getFileShareUrlById(e){return(await this.doupload({task:"22",file_id:e})).info||{}}async getFileOrFolderByShareUrl(e,t=""){let i=e.replace(/^\//,""),n=await this.request(`${this.getShareUrl()}/${i}`,"GET");if(n.includes("\u53D6\u6D88\u5206\u4EAB"))throw new Error("[Lanzou] \u8BE5\u6587\u4EF6\u5DF2\u53D6\u6D88\u5206\u4EAB");if(n.includes("\u6587\u4EF6\u4E0D\u5B58\u5728"))throw new Error("[Lanzou] \u6587\u4EF6\u4E0D\u5B58\u5728");return/class="fileinfo"|id="file"|文件描述/i.test(n)?[await this.getFilesByShareUrl(i,t,n)]:this.getFolderByShareUrl(t,n)}async getFolderByShareUrl(e,t){let i=Vu(t),n={};try{n=Ul(i)}catch{n={}}let s=[],o=Array.from(t.matchAll(/(?:folderlink|mbxfolder)[^>]*href=["']\/?([^"']+)["'][^>]*>(.+?)<\//gi));for(let a of o)s.push({id:a[1],name_all:a[2].trim(),is_folder:!0});n.pwd=e||this.addition.share_password||"";for(let a=1;;a++){n.pg=String(a);let c=await this.request(`${this.getShareUrl()}/filemoreajax.php`,"POST",n),l;try{l=JSON.parse(c)}catch{break}if(l.zt!==1||!Array.isArray(l.text)||l.text.length===0)break;let d=l.text;s.push(...d.map(u=>({id:u.id,name_all:u.name_all||u.name,size:u.size,time:u.time,is_folder:!1,pwd:n.pwd})))}return s}async getFilesByShareUrl(e,t="",i,n){let s=e.replace(/^\//,""),o=(n||await this.probeShareDomain(s)).replace(/\/+$/,""),a=`${o}/${s}`,c=i;c||(c=await this.request(a,"GET")),c=Vu(c),c=M_(c);let l={},d="",u="",f={id:s,is_folder:!1};if(c.includes("pwdload")||c.includes("passwddiv")){let C=L_(c,"down_p");l=Ul(C,c),l.p=t||this.addition.share_password||"";let b=C.match(/['"]?\/?ajax(?:file|m)\.php\?file=(\d+)['"]?/)||c.match(/['"]?\/?ajax(?:file|m)\.php\?file=(\d+)['"]?/)||C.match(/file\s*[:=]\s*['"]?(\d+)['"]?/)||c.match(/file\s*[:=]\s*['"]?(\d+)['"]?/)||C.match(/var\s+file_id\s*=\s*['"]?(\d+)['"]?/)||c.match(/var\s+file_id\s*=\s*['"]?(\d+)['"]?/),x=b?b[1]:"";if(!x)throw new Error("[Lanzou] \u672A\u627E\u5230\u6587\u4EF6 ID");let _=await this.request(`${o}/ajaxfile.php?file=${x}`,"POST",l,a),R;try{R=JSON.parse(_)}catch{throw new Error(`[Lanzou] ajaxfile.php \u54CD\u5E94\u683C\u5F0F\u9519\u8BEF: ${_}`)}if(R.zt!==1)throw new Error(R.info||R.text||`[Lanzou] \u5BC6\u7801\u9519\u8BEF\u6216\u63D0\u53D6\u94FE\u63A5\u5931\u8D25 (zt=${R.zt})`);f.name_all=R.inf||"download",d=`${R.dom}/file`,u=`${d}/${R.url}`}else{let C=c.match(/<iframe[^>]*?src=["']([^"']+)["']/i)||c.match(/href=["'](\/fn\?[^"']+)["']/i)||c.match(/["'](\/fn\?[^"']+)["']/i);if(!C)throw new Error("[Lanzou] \u672A\u627E\u5230\u4E0B\u8F7D\u9875\u9762 iframe \u53C2\u6570");let b=C[1],x=`${o}${b.startsWith("/")?"":"/"}${b}`,_=await this.request(x,"GET",void 0,a),R=Vu(_);l=Ul(R,R);let U=R.match(/['"]?\/?ajax(?:file|m)\.php\?file=(\d+)['"]?/)||R.match(/file\s*[:=]\s*['"]?(\d+)['"]?/)||R.match(/file=(\d+)/)||R.match(/var\s+file_id\s*=\s*['"]?(\d+)['"]?/),T=U?U[1]:"";if(!T)throw new Error("[Lanzou] \u672A\u627E\u5230\u6587\u4EF6 ID");let D=await this.request(`${o}/ajaxfile.php?file=${T}`,"POST",l,x),B;try{B=JSON.parse(D)}catch{throw new Error(`[Lanzou] ajaxfile.php \u54CD\u5E94\u683C\u5F0F\u9519\u8BEF: ${D}`)}if(B.zt!==1)throw new Error(B.info||B.text||`[Lanzou] \u63D0\u53D6\u94FE\u63A5\u5931\u8D25 (zt=${B.zt})`);d=`${B.dom}/file`,u=`${d}/${B.url}`;let Q=c.match(/<title>(.+?) - 蓝奏云<\/title>|id="filenajax">(.+?)<\/div>|var filename = ['"](.+?)['"];|<div style="font-size[^>]*>([^<>]+)<\/div>|<div class="filethetext"[^>]*>([^<>]+)<\/div>/i);if(Q){for(let v=1;v<Q.length;v++)if(Q[v]){f.name_all=Q[v].trim();break}}}let g=c.match(/大小\W*([0-9.]+\s*[bkm]+)/i);g&&(f.size=g[1]);let p=c.match(/\d+\s*[秒天分小][钟时]?前|[昨前]天|\d{4}-\d{2}-\d{2}/);p&&(f.time=p[0]);let I=u,y="",w=!1;for(let C=0;C<3;C++){let b={Referer:d,"User-Agent":this.getUserAgent(),"Accept-Language":"zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6"},x="down_ip=1";y&&(x+=`; acw_sc__v2=${y}`),b.Cookie=x;let _;try{_=await fetch(u,{method:"GET",headers:b,redirect:"manual"})}catch{if(C<2){await new Promise(U=>setTimeout(U,400*(C+1)));continue}throw new Error("[Lanzou] \u76F4\u94FE\u63A2\u6D4B\u7F51\u7EDC\u9519\u8BEF\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5")}if(_.status===301||_.status===302||_.status===303||_.status===307||_.status===308){let U=_.headers.get("location");if(U){I=new URL(U,u).toString(),w=!0;break}}if(_.status===200&&_.url&&_.url!==u){I=_.url,w=!0;break}if(_.status===429||_.status>=500){if(C<2){await new Promise(U=>setTimeout(U,400*(C+1)));continue}throw new Error(`[Lanzou] \u76F4\u94FE\u63A2\u6D4B\u8FD4\u56DE HTTP ${_.status}\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5`)}let R=await _.text();if(R.includes("acw_sc__v2")){y=Ip(R);continue}try{let U=Ul(R,R);U.el="2",await new Promise(B=>setTimeout(B,1500));let T=await this.request(`${d}/ajax.php`,"POST",U,d),D=JSON.parse(T);if(D.url){I=D.url.startsWith("http")?D.url:new URL(D.url,d).toString(),w=!0;break}}catch{if(C<2){await new Promise(U=>setTimeout(U,600*(C+1)));continue}}break}if(!w)throw new Error("[Lanzou] \u76F4\u94FE\u89E3\u6790\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5");return f.url=I,f}async getFileRealInfo(e){try{let t=await fetch(e,{method:"HEAD",headers:{"User-Agent":this.getUserAgent()}}),i=t.headers.get("content-length"),n=t.headers.get("last-modified");return{size:i?parseInt(i,10):void 0,time:n?new Date(n).toISOString():void 0}}catch{return{}}}async mkdir(e,t){await this.doupload({task:"2",parent_id:e||"-1",folder_name:t,folder_description:""})}async rename(e,t){await this.doupload({task:"46",file_id:e,file_name:t,type:"2"})}async move(e,t){await this.doupload({task:"20",file_id:e,folder_id:t})}async remove(e,t){t?await this.doupload({task:"3",folder_id:e}):await this.doupload({task:"6",file_id:e})}}});function mz(r){let e={...r||{}};return e.type=e.type||"cookie",e.account=e.account||"",e.password=e.password||"",e.cookie=(e.cookie||"").trim(),e.root_folder_id=e.root_folder_id||(e.type==="url"?"":"-1"),e.share_password=e.share_password||"",e.baseUrl=e.baseUrl||"https://pc.woozooo.com",e.shareUrl=e.shareUrl||"https://pan.lanzoui.com",e.user_agent=e.user_agent||"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",e.repair_file_info=!!e.repair_file_info,e.order_by=e.order_by||"name",e.order_direction=e.order_direction||"asc",e}function RC(r,e){let t=!!r.is_folder||!!r.fol_id,i=r.name_all||r.name||"",n=e?.size!==void 0?e.size:O_(r.size||"0"),s=e?.time?e.time:q_(r.time||""),o=r.fol_id||r.id||"";return{name:i,size:n,is_dir:t,modified:s,sign:o,type:X(i,t),thumb:"",raw_url:r.url||""}}var Bp,K_=j(()=>{"use strict";Be();He();H_();TC();Bp=class{client;addition;pathIdCache=new Map;constructor(e,t){this.addition=mz(e),this.client=new Ep(this.addition,t)}async init(){await this.client.init()}async checkCookieValid(){return this.client.checkCookieValid()}isUrlMode(){return this.addition.type==="url"}getRootId(){return this.addition.root_folder_id||(this.isUrlMode()?"":"-1")}async resolveFolderId(e){let t=this.getRootId(),i="/"+String(e||"").split("/").filter(Boolean).join("/");if(i==="/"||i===`/${t}`)return t;let n=i.split("/").filter(Boolean),s=0,o=t,a="";for(let c=0;c<n.length;c++){let l="/"+n.slice(0,c+1).join("/"),d=this.pathIdCache.get(l);if(d!==void 0)o=d,s=c+1,a=l;else break}for(let c=s;c<n.length;c++){let l=n[c],d=(()=>{try{return decodeURIComponent(l)}catch{return l}})(),f=(this.isUrlMode()?await this.client.getFileOrFolderByShareUrl(o,this.addition.share_password):await this.client.getFolders(o)).find(h=>{if(!h.is_folder&&!h.fol_id)return!1;let g=h.name||h.name_all||"",p=h.fol_id||h.id||"";return g===l||g===d||p===l||p===d});if(!f)throw new Error(`[Lanzou] \u76EE\u5F55\u672A\u627E\u5230: ${l}`);o=f.fol_id||f.id||"",a="/"+n.slice(0,c+1).join("/"),this.pathIdCache.set(a,o)}return o}async resolveItem(e){let t="/"+String(e||"").split("/").filter(Boolean).join("/"),i=t.split("/").filter(Boolean);if(i.length===0)throw new Error("[Lanzou] \u8DEF\u5F84\u65E0\u6548");let n=i[i.length-1],s=(()=>{try{return decodeURIComponent(n)}catch{return n}})(),o="/"+i.slice(0,i.length-1).join("/"),a=await this.resolveFolderId(o),l=(this.isUrlMode()?await this.client.getFileOrFolderByShareUrl(a,this.addition.share_password):await this.client.getAllFiles(a)).find(u=>{let f=u.name_all||u.name||"",h=u.fol_id||u.id||"";return f===n||f===s||h===n||h===s});if(!l)throw new Error(`[Lanzou] \u6587\u4EF6\u6216\u76EE\u5F55\u672A\u627E\u5230: ${n}`);let d=!!(l.is_folder||l.fol_id);return d&&this.pathIdCache.set(t,l.fol_id||l.id||""),{item:l,parentId:a,isDir:d}}async list(e,t){let i=await this.resolveFolderId(t),s=(this.isUrlMode()?await this.client.getFileOrFolderByShareUrl(i,this.addition.share_password):await this.client.getAllFiles(i)).map(o=>RC(o));return de(s,this.addition.order_by==="name"?"file_name":this.addition.order_by==="size"?"size":"updated_at",this.addition.order_direction)}async get(e,t){let i=String(t||"").split("/").filter(Boolean);if(i.length===0||i[i.length-1]===this.getRootId()){let l=this.getRootId();return{name:l||"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:l,type:1,raw_url:""}}let{item:n,isDir:s}=await this.resolveItem(t);if(s)return RC(n);let o=n.url;if(!o)try{if(this.isUrlMode()){let l=await this.client.getFilesByShareUrl(n.id||"",n.pwd||this.addition.share_password||"",void 0,await this.client.probeShareDomain(n.id||""));o=l.url,n.name_all=l.name_all||n.name_all,n.size=l.size||n.size}else{let l=await this.client.getFileShareUrlById(n.id||""),d=l?.f_id||l?.id;if(d){let u=await this.client.getFilesByShareUrl(d,l.pwd||"",void 0);o=u.url,u.name_all&&(n.name_all=u.name_all),u.size&&(n.size=u.size)}}}catch(l){throw console.error(`[Lanzou] \u89E3\u6790\u4E0B\u8F7D\u94FE\u63A5\u5931\u8D25 (${n.name_all||n.name}):`,l.message),new Error(`[Lanzou] \u83B7\u53D6\u4E0B\u8F7D\u76F4\u94FE\u5931\u8D25 (${n.name_all||n.name}): ${l.message}`)}if(!o)throw new Error(`[Lanzou] \u672A\u80FD\u83B7\u53D6\u5230\u4E0B\u8F7D\u76F4\u94FE (${n.name_all||n.name||t})`);let a;if(this.addition.repair_file_info&&o)try{a=await this.client.getFileRealInfo(o)}catch{}let c=RC(n,a);return c.raw_url=o||"",c.raw_url_headers={"User-Agent":this.client.getUserAgent()},c}async mkdir(e,t){if(this.isUrlMode())throw new Error("[Lanzou] \u5206\u4EAB\u94FE\u63A5\u6A21\u5F0F\u4E0D\u652F\u6301\u65B0\u5EFA\u6587\u4EF6\u5939");let i=String(t||"").split("/").filter(Boolean),n=i.pop()||"\u65B0\u6587\u4EF6\u5939",s="/"+i.join("/"),o=await this.resolveFolderId(s);await this.client.mkdir(o,n)}async rename(e,t,i){if(this.isUrlMode())throw new Error("[Lanzou] \u5206\u4EAB\u94FE\u63A5\u6A21\u5F0F\u4E0D\u652F\u6301\u91CD\u547D\u540D");let{item:n,isDir:s}=await this.resolveItem(t);if(s)throw new Error("[Lanzou] \u84DD\u594F\u4E91\u4E0D\u652F\u6301\u91CD\u547D\u540D\u6587\u4EF6\u5939");await this.client.rename(n.id||"",i)}async remove(e,t,i){if(this.isUrlMode())throw new Error("[Lanzou] \u5206\u4EAB\u94FE\u63A5\u6A21\u5F0F\u4E0D\u652F\u6301\u5220\u9664");let{item:n,isDir:s}=await this.resolveItem(t);await this.client.remove(n.fol_id||n.id||"",s)}async move(e,t,i,n,s){if(this.isUrlMode())throw new Error("[Lanzou] \u5206\u4EAB\u94FE\u63A5\u6A21\u5F0F\u4E0D\u652F\u6301\u79FB\u52A8");let{item:o,isDir:a}=await this.resolveItem(n);if(a)throw new Error("[Lanzou] \u84DD\u594F\u4E91\u4E0D\u652F\u6301\u79FB\u52A8\u6587\u4EF6\u5939");let c=String(t).split("/").filter(Boolean),l=await this.resolveFolderId("/"+c.join("/"));await this.client.move(o.id||"",l)}async copy(){throw new Error("[Lanzou] \u84DD\u594F\u4E91\u4E0D\u652F\u6301\u76F4\u63A5\u590D\u5236\u6587\u4EF6")}async put(){throw new Error("[Lanzou] Cloudflare Worker \u73AF\u5883\u6682\u4E0D\u652F\u6301\u76F4\u63A5\u6D41\u5F0F\u5199\u5165\uFF0C\u8BF7\u4F7F\u7528\u7F51\u9875\u7AEF\u8FDB\u884C\u6587\u4EF6\u4E0A\u4F20")}}});function yz(r){let e=r.replace(/\s+/g,""),t=atob(e),i=new Uint8Array(t.length);for(let n=0;n<t.length;n++)i[n]=t.charCodeAt(n);return i}function Iz(r){let e="";for(let t=0;t<r.length;t++)e+=String.fromCharCode(r[t]);return btoa(e)}function wz(r){return Array.from(r).map(e=>e.toString(16).padStart(2,"0")).join("")}function NC(r){let e=0n;for(let t=0;t<r.length;t++)e=e<<8n|BigInt(r[t]);return e}function xz(r,e){let t=new Uint8Array(e),i=r;for(let n=e-1;n>=0;n--)t[n]=Number(i&0xffn),i>>=8n;return t}function Cz(r,e,t){let i=1n;for(r=r%t;e>0n;)e%2n===1n&&(i=i*r%t),r=r*r%t,e/=2n;return i}function Ez(r){let e=r.replace(/-----BEGIN[^-]+-----/g,"").replace(/-----END[^-]+-----/g,"").replace(/\s+/g,""),t=yz(e),i=0;function n(){let l=t[i++],d=t[i++];if(d&128){let f=d&127;d=0;for(let h=0;h<f;h++)d=d<<8|t[i++]}return{tag:l,length:d,dataStart:i}}let s=[];function o(l,d){let u=l;for(;u<d;){let f=t[u++],h=t[u++];if(h&128){let p=h&127;h=0;for(let I=0;I<p;I++)h=h<<8|t[u++]}let g=u;if(u+=h,f===2){let p=t.subarray(g,g+h);p[0]===0&&p.length>1&&(p=p.subarray(1)),s.push(p)}else f===48||(f&32)!==0?o(g,g+h):f===3&&t[g]===0&&o(g+1,g+h)}}if(o(0,t.length),s.length<2)throw new Error("Failed to parse RSA public key: insufficient integers found");let a=s[0],c=s[1];if(a.length<c.length){let l=a;a=c,c=l}return{n:NC(a),e:NC(c),keyLength:a.length}}function bp(r,e,t=!1){let{n:i,e:n,keyLength:s}=Ez(e),o=typeof r=="string"?new TextEncoder().encode(r):r;if(o.length>s-11)throw new Error(`Data too long for RSA key size: ${o.length} > ${s-11}`);let a=s-o.length-3,c=new Uint8Array(a),l=new Uint8Array(a*2);crypto.getRandomValues(l);let d=0;for(let p=0;p<a;p++){let I=l[d++];for(;I===0;)d>=l.length&&(crypto.getRandomValues(l),d=0),I=l[d++];c[p]=I}let u=new Uint8Array(s);u[0]=0,u[1]=2,u.set(c,2),u[2+a]=0,u.set(o,3+a);let f=NC(u),h=Cz(f,n,i),g=xz(h,s);return t?wz(g):Iz(g)}function G_(r,e){let t=typeof e=="string"?Jr.default.enc.Utf8.parse(e.slice(0,16)):Jr.default.lib.WordArray.create(Array.from(e.slice(0,16)),16),i=Jr.default.enc.Utf8.parse(r);return Jr.default.AES.encrypt(i,t,{mode:Jr.default.mode.ECB,padding:Jr.default.pad.Pkcs7}).ciphertext.toString(Jr.default.enc.Hex)}function Yu(r,e){return Jr.default.HmacSHA1(r,e).toString(Jr.default.enc.Hex)}function z_(r){return typeof r=="string"?Jr.default.enc.Utf8.parse(r):Jr.default.lib.WordArray.create(r)}function Rl(r){return Jr.default.MD5(z_(r)).toString(Jr.default.enc.Hex)}function J_(r){return Jr.default.MD5(z_(r)).toString(Jr.default.enc.Base64)}function Nl(r="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx"){return r.replace(/[xy]/g,e=>{let t=Math.random()*16|0;return(e==="x"?t:t&3|8).toString(16)})}function qC(){return"0."+Math.floor(Math.random()*1e17).toString().padStart(17,"0")}var Jr,vp=j(()=>{"use strict";Jr=Qr(fc(),1)});function Bz(r,e,t){let i=r?r.split(";").map(o=>o.trim()):[],n=`${e}=${t}`,s=i.findIndex(o=>o.startsWith(`${e}=`));return s!==-1?i[s]=n:i.push(n),i.filter(Boolean).join("; ")}function bz(r,e){if(!e)return r;let t=r,i=e.split(/,(?=\s*[a-zA-Z0-9_\-]+=[^;]+)/);for(let n of i){let s=n.split(";")[0].trim(),o=s.indexOf("=");if(o>0){let a=s.slice(0,o).trim(),c=s.slice(o+1).trim();t=Bz(t,a,c)}}return t}function vz(r){let e=r;if(typeof e.getSetCookie=="function"){let i=e.getSetCookie();if(i.length>0)return i}let t=r.get("set-cookie");return t?[t]:[]}function j_(r){let e=r.replace(/("id"\s*:\s*)(-?\d{16,})(?=\s*[,}])/g,'$1"$2"');return JSON.parse(e)}function OC(r){return r.protocol==="https:"&&kz.has(r.hostname)}function MC(r){try{let e=new URL(r,"https://open.e.189.cn");return!!e.searchParams.get("lt")&&!!e.searchParams.get("reqId")}catch{return!1}}function LC(r){try{let e=new URL(r,"https://open.e.189.cn");return e.hostname==="cloud.189.cn"&&(e.pathname==="/web/main"||e.pathname==="/main.action")}catch{return!1}}var kz,kp,$_=j(()=>{"use strict";vp();kz=new Set(["cloud.189.cn","open.e.189.cn"]);kp=class{addition;cookie="";cookieDirty=!1;sessionKey="";rsa={pubKey:"",pkId:"",expire:0};constructor(e,t){this.addition=e,this.cookie=(e.cookie||"").trim()}getCookie(){return this.cookie}consumePendingCookie(){return this.cookieDirty?(this.cookieDirty=!1,this.cookie):null}getRootId(){return this.addition.root_folder_id||"-11"}setSessionKey(e){this.sessionKey=e}getDownloadHeaders(){let e={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",Referer:"https://cloud.189.cn/"};return this.cookie&&(e.Cookie=this.cookie),e}async updateCookie(e){let t=vz(e);if(t.length===0)return;let i=t.reduce((n,s)=>bz(n,s),this.cookie);i!==this.cookie&&(this.cookie=i,this.cookieDirty=!0)}async followRedirectsWithCookies(e,t){let i=e,n=[i];for(let s=0;s<=8;s++){let o=new URL(i);if(!OC(o))throw new Error(o.protocol!=="https:"?`[189Cloud] \u767B\u5F55\u91CD\u5B9A\u5411\u5FC5\u987B\u4F7F\u7528 HTTPS: ${o.origin}`:`[189Cloud] \u4E0D\u53D7\u4FE1\u4EFB\u7684\u767B\u5F55\u91CD\u5B9A\u5411\u5730\u5740: ${o.origin}`);let a={...t};s>0&&(a.Referer=i),this.cookie&&(a.Cookie=this.cookie);let c=await fetch(i,{method:"GET",headers:a,redirect:"manual"});await this.updateCookie(c.headers);let l=c.headers.get("location");if(!(c.status>=300&&c.status<400)||!l){let f=i;if(c.url&&c.url!==i){let h=new URL(c.url,i);if(MC(h.toString())||LC(h.toString())){if(!OC(h))throw new Error(h.protocol!=="https:"?`[189Cloud] \u767B\u5F55\u91CD\u5B9A\u5411\u5FC5\u987B\u4F7F\u7528 HTTPS: ${h.origin}`:`[189Cloud] \u4E0D\u53D7\u4FE1\u4EFB\u7684\u767B\u5F55\u91CD\u5B9A\u5411\u5730\u5740: ${h.origin}`);f=h.toString(),n.push(f)}}return{response:c,url:f,urls:n}}if(s===8)throw new Error("[189Cloud] \u767B\u5F55\u91CD\u5B9A\u5411\u6B21\u6570\u8FC7\u591A");let u=new URL(l,i);if(!OC(u))throw new Error(u.protocol!=="https:"?`[189Cloud] \u767B\u5F55\u91CD\u5B9A\u5411\u5FC5\u987B\u4F7F\u7528 HTTPS: ${u.origin}`:`[189Cloud] \u4E0D\u53D7\u4FE1\u4EFB\u7684\u767B\u5F55\u91CD\u5B9A\u5411\u5730\u5740: ${u.origin}`);i=u.toString(),n.push(i)}throw new Error("[189Cloud] \u767B\u5F55\u91CD\u5B9A\u5411\u5931\u8D25")}async resolveLoginUrl(e,t){let i=e;for(let n=0;n<3;n++){let s=new URL(e);s.searchParams.set("noCache",qC());let o=await this.followRedirectsWithCookies(s.toString(),t);if(i=o.url,MC(o.url)||LC(o.url))return o.url;let a=o.urls.find(c=>MC(c));if(a)return a;n<2&&await new Promise(c=>setTimeout(c,150*(n+1)))}return i}async login(e={}){if(this.cookie&&!e.force)return;let t="https://cloud.189.cn/api/portal/loginUrl.action?redirectURL=https%3A%2F%2Fcloud.189.cn%2Fmain.action",i={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",Referer:"https://cloud.189.cn/"};this.cookie&&(i.Cookie=this.cookie);let n=await this.resolveLoginUrl(t,i);if(LC(n))return;if(!this.addition.username||!this.addition.password){if(this.cookie)return;throw new Error("[189Cloud] \u8D26\u53F7\u6216\u5BC6\u7801\u4E3A\u7A7A\uFF0C\u4E14\u672A\u63D0\u4F9B\u6709\u6548 Cookie")}let s;try{s=new URL(n,"https://open.e.189.cn")}catch{s=new URL("https://open.e.189.cn"+n)}let o=s.searchParams.get("lt")||"",a=s.searchParams.get("reqId")||"",c=s.searchParams.get("appId")||"cloud";if(!o||!a)throw new Error("[189Cloud] \u767B\u5F55\u8DF3\u8F6C\u53C2\u6570\u4E0D\u5B8C\u6574\uFF0C\u672A\u83B7\u53D6\u5230 lt \u6216 reqId");let l=()=>{let x={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",lt:o,reqid:a,referer:n,origin:"https://open.e.189.cn","Content-Type":"application/x-www-form-urlencoded; charset=UTF-8",Accept:"application/json;charset=UTF-8"};return this.cookie&&(x.Cookie=this.cookie),x},d=await fetch("https://open.e.189.cn/api/logbox/oauth2/appConf.do",{method:"POST",headers:l(),body:new URLSearchParams({version:"2.0",appKey:c})});await this.updateCookie(d.headers);let u=await d.json();if(u.result!=="0"||!u.data)throw new Error(`[189Cloud] \u83B7\u53D6 AppConf \u5931\u8D25: ${u.msg||JSON.stringify(u)}`);let f=await fetch("https://open.e.189.cn/api/logbox/config/encryptConf.do",{method:"POST",headers:l(),body:new URLSearchParams({appId:c})});await this.updateCookie(f.headers);let h=await f.json();if(h.result!==0||!h.data?.pubKey)throw new Error(`[189Cloud] \u83B7\u53D6 EncryptConf \u5931\u8D25: ${JSON.stringify(h)}`);let g=h.data.pre||"",p=h.data.pubKey,I=g+bp(this.addition.username,p,!0),y=g+bp(this.addition.password,p,!0),w={version:"v2.0",apToken:"",appKey:c,accountType:u.data.accountType||"01",userName:I,epd:y,captchaType:"",validateCode:"",smsValidateCode:"",captchaToken:"",returnUrl:u.data.returnUrl||"https://cloud.189.cn/main.action",mailSuffix:u.data.mailSuffix||"@189.cn",dynamicCheck:"FALSE",clientType:String(u.data.clientType??"10010"),cb_SaveName:"3",isOauth2:String(u.data.isOauth2??!1),state:"",paramId:u.data.paramId||""},C=await fetch("https://open.e.189.cn/api/logbox/oauth2/loginSubmit.do",{method:"POST",headers:{...l()},body:new URLSearchParams(w)});await this.updateCookie(C.headers);let b=await C.json();if(b.result!==0){let x=b.msg||"\u767B\u5F55\u5931\u8D25";throw x.includes("\u9A8C\u8BC1\u7801")||x.includes("\u6ED1\u5757")||x.includes("\u8BBE\u5907\u9501")?new Error(`[189Cloud] \u767B\u5F55\u89E6\u53D1\u9A8C\u8BC1\u7801/\u8BBE\u5907\u4FDD\u62A4: ${x}\u3002\u8BF7\u5728\u6D4F\u89C8\u5668\u767B\u5F55\u540E\u590D\u5236 Cookie \u586B\u5165\u914D\u7F6E\u3002`):new Error(`[189Cloud] \u767B\u5F55\u5931\u8D25: ${x}`)}b.toUrl&&await this.followRedirectsWithCookies(b.toUrl,{"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"})}async request(e,t={}){let i=t.method||"GET",n=t.retryOnInvalidSession!==!1,s=new URL(e);if(s.searchParams.set("noCache",qC()),t.params)for(let[f,h]of Object.entries(t.params))h!==void 0&&s.searchParams.set(f,h);let o={Accept:"application/json;charset=UTF-8",Referer:"https://cloud.189.cn/","User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"};this.cookie&&(o.Cookie=this.cookie);let a;t.body&&(o["Content-Type"]="application/x-www-form-urlencoded; charset=UTF-8",a=new URLSearchParams(t.body).toString());let c=await fetch(s.toString(),{method:i,headers:o,body:a});await this.updateCookie(c.headers);let l=await c.text(),d;try{d=j_(l)}catch{throw new Error(`[189Cloud] \u975E\u9884\u671F\u54CD\u5E94: ${l.slice(0,200)}`)}if(d.errorCode==="InvalidSessionKey"||d.res_code==="InvalidSessionKey"||String(d.res_code)==="1010"){if(n)return await this.login({force:!0}),this.request(e,{...t,retryOnInvalidSession:!1});throw new Error(d.errorMsg||d.res_message||"[189Cloud] \u767B\u5F55\u4F1A\u8BDD\u5DF2\u5931\u6548")}if(d.errorCode)throw new Error(d.errorMsg||`[189Cloud] API \u9519\u8BEF: ${d.errorCode}`);if(!c.ok)throw new Error(d.errorMsg||d.res_message||`[189Cloud] HTTP \u8BF7\u6C42\u5931\u8D25 (${c.status})`);if(d.res_code!==void 0&&String(d.res_code)!=="0")throw new Error(d.res_message||`189 API \u9519\u8BEF (res_code: ${d.res_code})`);return d}async getFilesPage(e,t,i){let n=this.addition.order_by||"lastOpTime",s=(this.addition.order_direction||"desc")==="desc"?"true":"false",o=await this.request("https://cloud.189.cn/api/open/file/listFiles.action",{method:"GET",params:{pageSize:i,pageNum:String(t),mediaType:"0",folderId:e||this.getRootId(),iconOption:"5",orderBy:n,descending:s}}),a=o.fileListAO?.count,c=typeof a=="number"?a:typeof a=="string"&&a.trim()!==""?Number(a):NaN;if(!o.fileListAO||typeof o.fileListAO!="object"||Array.isArray(o.fileListAO)||!Number.isFinite(c)||c<0||!Array.isArray(o.fileListAO.fileList)||!Array.isArray(o.fileListAO.folderList))throw new Error("[189Cloud] \u6587\u4EF6\u5217\u8868\u54CD\u5E94\u7F3A\u5C11\u6709\u6548\u7684 fileListAO \u6570\u7EC4\u5B57\u6BB5");return o}async validateRoot(e){await this.getFilesPage(e,1,"1")}async getFiles(e,t){let i=[],n=[],s=1,o="60";for(;;){if(t?.budget){if(t.budget.used>=t.budget.limit){console.warn("[189Cloud] Cloudflare Worker subrequest budget limit reached.");break}t.budget.used++}let c=(await this.getFilesPage(e,s,o)).fileListAO;if(Number(c.count)===0)break;let l=c.fileList||[],d=c.folderList||[];if(n.push(...d),i.push(...l),t?.findName&&(t.findIsDir&&d.some(u=>u.name===t.findName)||!t.findIsDir&&l.some(u=>u.name===t.findName))||l.length+d.length<parseInt(o,10))break;s++}return{files:i,folders:n}}async getDownloadUrl(e){let t=await this.request("https://cloud.189.cn/api/portal/getFileInfo.action",{method:"GET",params:{fileId:e}}),i=t.fileDownloadUrl||t.downloadUrl;if(!i)throw new Error(`[189Cloud] \u83B7\u53D6\u6587\u4EF6\u4E0B\u8F7D\u5730\u5740\u5931\u8D25 (fileId: ${e})`);let n=i.startsWith("//")?"https:"+i:i;n=n.replace(/^http:\/\//i,"https://");try{let s=await fetch(n,{method:"GET",headers:this.getDownloadHeaders(),redirect:"manual"}),o=s.headers.get("location");s.status===302&&o&&(n=o.replace(/^http:\/\//i,"https://"))}catch{}return n}async getSessionKey(){let e=await this.request("https://cloud.189.cn/v2/getUserBriefInfo.action",{method:"GET"}),t=String(e.sessionKey||"");if(!t)throw new Error("[189Cloud] \u83B7\u53D6\u4E0A\u4F20 SessionKey \u5931\u8D25");return t}async getResKey(){if(this.rsa.pubKey&&this.rsa.pkId&&this.rsa.expire>Date.now())return this.rsa;let e=await this.request("https://cloud.189.cn/api/security/generateRsaKey.action",{method:"GET"}),t=String(e.pubKey||""),i=String(e.pkId||"");if(!t||!i)throw new Error("[189Cloud] \u83B7\u53D6\u4E0A\u4F20 RSA \u516C\u94A5\u5931\u8D25");return this.rsa={pubKey:t,pkId:i,expire:Number(e.expire)||Date.now()+5*6e4},this.rsa}async uploadRequest(e,t){this.sessionKey||(this.sessionKey=await this.getSessionKey());let i=String(Date.now()),n=Nl(),s=Nl("xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx").slice(0,16+Math.floor(Math.random()*17)),o=Object.keys(t).sort().map(p=>`${p}=${t[p]}`).join("&"),a=G_(o,s.slice(0,16)),c=Yu(`SessionKey=${this.sessionKey}&Operate=GET&RequestURI=${e}&Date=${i}¶ms=${a}`,s),{pubKey:l,pkId:d}=await this.getResKey(),u={accept:"application/json;charset=UTF-8",SessionKey:this.sessionKey,Signature:c,"X-Request-Date":i,"X-Request-ID":n,EncryptionText:bp(s,l,!1),PkId:d};this.cookie&&(u.Cookie=this.cookie);let f=await fetch(`https://upload.cloud.189.cn${e}?params=${a}`,{method:"GET",headers:u});await this.updateCookie(f.headers);let h=await f.text();if(!f.ok)throw new Error(`[189Cloud] \u4E0A\u4F20\u63A5\u53E3 HTTP ${f.status}: ${h.slice(0,200)}`);let g;try{g=j_(h)}catch{throw new Error(`[189Cloud] \u4E0A\u4F20\u63A5\u53E3\u8FD4\u56DE\u65E0\u6548\u54CD\u5E94: ${h.slice(0,200)}`)}if(g.code!=="SUCCESS")throw new Error(g.msg||g.message||`[189Cloud] \u4E0A\u4F20\u63A5\u53E3\u5931\u8D25: ${e}`);return g}async createMultiUpload(e,t,i,n){let s=await this.getSessionKey();this.sessionKey=s;let o={parentFolderId:e,fileName:encodeURIComponent(t).replace(/%20/g,"+"),fileSize:String(i),sliceSize:String(10*1024*1024)},a;try{a=await this.uploadRequest("/person/initMultiUpload",{...o,fileMd5:n,sliceMd5:n})}catch(l){let d=String(l?.message||l);if(!/InfoSecurityErrorCode|file md5 is in black list|security check not pass/i.test(d))throw l;a=await this.uploadRequest("/person/initMultiUpload",{...o,lazyCheck:"1"})}let c=String(a.data?.uploadFileId||"");if(!c)throw new Error("[189Cloud] \u521B\u5EFA\u4E0A\u4F20\u4F1A\u8BDD\u5931\u8D25\uFF1A\u7F3A\u5C11 uploadFileId");return{uploadFileId:c,fileDataExists:String(a.data?.fileDataExists||"0")==="1",sessionKey:s}}async getMultiUploadUrls(e,t,i){let s=(await this.uploadRequest("/person/getMultiUploadUrls",{partInfo:`${t}-${J_(i)}`,uploadFileId:e})).uploadUrls?.[`partNumber_${t}`];if(!s?.requestURL)throw new Error(`[189Cloud] \u83B7\u53D6\u7B2C ${t} \u4E2A\u5206\u7247\u4E0A\u4F20\u5730\u5740\u5931\u8D25`);return s}async commitMultiUpload(e,t,i){await this.uploadRequest("/person/commitMultiUploadFile",{uploadFileId:e,fileMd5:t,sliceMd5:i,lazyCheck:"1",opertype:"3"})}async mkdir(e,t){await this.request("https://cloud.189.cn/api/open/file/createFolder.action",{method:"POST",body:{parentFolderId:e||this.getRootId(),folderName:t}})}async rename(e,t,i){let n=t?"https://cloud.189.cn/api/open/file/renameFolder.action":"https://cloud.189.cn/api/open/file/renameFile.action",s=t?{folderId:e,destFolderName:i}:{fileId:e,destFileName:i};await this.request(n,{method:"POST",body:s})}async batchTask(e,t,i=""){let n=t.map(s=>({fileId:s.id,fileName:s.name,isFolder:s.isFolder?1:0}));await this.request("https://cloud.189.cn/api/open/batch/createBatchTask.action",{method:"POST",body:{type:e,targetFolderId:i,taskInfos:JSON.stringify(n)}})}async move(e,t,i,n){await this.batchTask("MOVE",[{id:e,name:i,isFolder:t}],n)}async copy(e,t,i,n){await this.batchTask("COPY",[{id:e,name:i,isFolder:t}],n)}async remove(e,t,i){await this.batchTask("DELETE",[{id:e,name:i,isFolder:t}],"")}async getCapacityInfo(){return this.request("https://cloud.189.cn/api/portal/getUserSizeInfo.action",{method:"GET"})}}});function Qz(r){return Buffer.from(JSON.stringify(r),"utf8").toString("base64")}function V_(r){try{let e=JSON.parse(Buffer.from(r,"base64").toString("utf8"));if(!e||!e.uploadFileId||!e.sessionKey||!e.fileMd5||!Number.isInteger(e.partCount)||e.partCount<1||!Number.isInteger(e.chunkSize)||e.chunkSize<1)throw new Error("invalid upload session");return e}catch{throw new Error("[189Cloud] \u4E0A\u4F20\u4F1A\u8BDD\u65E0\u6548\u6216\u5DF2\u635F\u574F")}}function X_(r){if(!r)return new Date().toISOString();try{let e=new Date(r);if(!isNaN(e.getTime()))return e.toISOString()}catch{}return new Date().toISOString()}function Y_(r){return{name:r.name,size:0,is_dir:!0,modified:X_(r.lastOpTime),sign:String(r.id),type:1,thumb:"",raw_url:""}}function W_(r){return{name:r.name,size:r.size||0,is_dir:!1,modified:X_(r.lastOpTime),sign:String(r.id),type:X(r.name,!1),thumb:r.icon?.smallUrl||r.icon?.largeUrl||"",raw_url:""}}function _z(r){let e={...r||{}};return e.username=e.username||"",e.password=e.password||"",e.cookie=(e.cookie||"").trim(),e.root_folder_id=e.root_folder_id||"-11",e.order_by=e.order_by||"lastOpTime",e.order_direction=e.order_direction||"desc",e}var Sz,Dz,Sp,Z_=j(()=>{"use strict";Be();He();$_();vp();Sz=45,Dz=10*1024*1024;Sp=class{client;addition;pathIdCache=new Map;budget={used:0,limit:Sz};constructor(e,t){this.addition=_z(e),this.client=new kp(this.addition,t)}async init(){await this.client.login()}consumePendingCookie(){return this.client.consumePendingCookie()}async resolveFolderId(e){let t=this.client.getRootId(),i="/"+String(e||"").split("/").filter(Boolean).join("/");if(i==="/"||i===`/${t}`)return t;let n=i.split("/").filter(Boolean),s=0,o=t,a="";for(let c=0;c<n.length;c++){let l="/"+n.slice(0,c+1).join("/"),d=this.pathIdCache.get(l);if(d!==void 0)o=d,s=c+1,a=l;else break}for(let c=s;c<n.length;c++){let l=n[c],d=(()=>{try{return decodeURIComponent(l)}catch{return l}})(),{folders:u}=await this.client.getFiles(o,{findName:d,findIsDir:!0,budget:this.budget}),f=u.find(h=>h.name===l||h.name===d||String(h.id)===l||String(h.id)===d);if(!f)throw new Error(`[189Cloud] \u76EE\u5F55\u672A\u627E\u5230: ${l}`);o=String(f.id),a="/"+n.slice(0,c+1).join("/"),this.pathIdCache.set(a,o)}return o}async resolveFile(e){let t=String(e||"").split("/").filter(Boolean);if(t.length===0)throw new Error("[189Cloud] \u8DEF\u5F84\u65E0\u6548");let i=t[t.length-1],n=(()=>{try{return decodeURIComponent(i)}catch{return i}})(),s="/"+t.slice(0,t.length-1).join("/"),o=await this.resolveFolderId(s),{files:a,folders:c}=await this.client.getFiles(o,{findName:n,budget:this.budget}),l=a.find(u=>u.name===i||u.name===n||String(u.id)===i||String(u.id)===n);if(l)return{file:l,parentId:o,isDir:!1};let d=c.find(u=>u.name===i||u.name===n||String(u.id)===i||String(u.id)===n);if(d)return{file:d,parentId:o,isDir:!0};throw new Error(`[189Cloud] \u6587\u4EF6\u6216\u76EE\u5F55\u672A\u627E\u5230: ${i}`)}async list(e,t){this.budget.used=0;let i=await this.resolveFolderId(t),{files:n,folders:s}=await this.client.getFiles(i,{budget:this.budget}),o=[...s.map(Y_),...n.map(W_)];return de(o,this.addition.order_by==="filename"?"file_name":this.addition.order_by==="fileSize"?"size":"updated_at",this.addition.order_direction)}async get(e,t){this.budget.used=0;let i=String(t||"").split("/").filter(Boolean);if(i.length===0||i[i.length-1]===this.client.getRootId()){let a=this.client.getRootId();return{name:a,size:0,is_dir:!0,modified:new Date().toISOString(),sign:a,type:1,raw_url:""}}let{file:n,isDir:s}=await this.resolveFile(t);if(s)return Y_(n);let o=W_(n);try{o.raw_url=await this.client.getDownloadUrl(String(n.id)),o.raw_url_headers=this.client.getDownloadHeaders()}catch(a){console.warn(`[189Cloud] \u83B7\u53D6 ${n.name} \u4E0B\u8F7D\u5730\u5740\u5931\u8D25:`,a.message)}return o}async mkdir(e,t){this.budget.used=0;let i=String(t||"").split("/").filter(Boolean),n=i.pop()||"\u65B0\u6587\u4EF6\u5939",s="/"+i.join("/"),o=await this.resolveFolderId(s);await this.client.mkdir(o,n)}async rename(e,t,i){this.budget.used=0;let{file:n,isDir:s}=await this.resolveFile(t);await this.client.rename(String(n.id),s,i)}async remove(e,t,i){this.budget.used=0;let{file:n,isDir:s}=await this.resolveFile(t);await this.client.remove(String(n.id),s,n.name)}async move(e,t,i,n,s){this.budget.used=0;let{file:o,isDir:a}=await this.resolveFile(n),c=String(t).split("/").filter(Boolean),l=await this.resolveFolderId("/"+c.join("/"));await this.client.move(String(o.id),a,o.name,l)}async copy(e,t,i,n,s){this.budget.used=0;let{file:o,isDir:a}=await this.resolveFile(n),c=String(t).split("/").filter(Boolean),l=await this.resolveFolderId("/"+c.join("/"));await this.client.copy(String(o.id),a,o.name,l)}async put(e,t,i){let n=String(t||"").split("/").filter(Boolean),s=n.pop();if(!s)throw new Error("[189Cloud] \u4E0A\u4F20\u8DEF\u5F84\u65E0\u6548");let o="/"+n.join("/"),a=await this.createUploadSession(o,o,s,i.length,Rl(i));if(a.reuse)return;let c=[];for(let l=1;l<=a.partCount;l++){let d=(l-1)*a.chunkSize,u=i.subarray(d,Math.min(d+a.chunkSize,i.length)),f=await this.uploadPart(a.session,l,u);c.push(f.partMd5)}await this.completeUploadSession(a.session,c)}async createUploadSession(e,t,i,n,s){let o=Dz,a=String(s||"").trim().toLowerCase();if(!/^[a-f0-9]{32}$/.test(a))return{reuse:!1,requiresMd5:!0,partCount:0,chunkSize:o,session:""};this.budget.used=0;let c=Math.max(1,Math.ceil(Math.max(0,Number(n)||0)/o)),l=await this.resolveFolderId(t||"/"),d=await this.client.createMultiUpload(l,i,Math.max(0,Number(n)||0),a);return d.fileDataExists?(await this.client.commitMultiUpload(d.uploadFileId,a,a),{reuse:!0,partCount:0,chunkSize:o,session:""}):{reuse:!1,partCount:c,chunkSize:o,session:Qz({uploadFileId:d.uploadFileId,sessionKey:d.sessionKey,fileMd5:a,size:Math.max(0,Number(n)||0),partCount:c,chunkSize:o})}}async uploadPart(e,t,i){let n=V_(e);if(!Number.isInteger(t)||t<1||t>n.partCount)throw new Error(`[189Cloud] \u5206\u7247\u5E8F\u53F7\u65E0\u6548: ${t}`);this.client.setSessionKey(n.sessionKey);let s=await this.client.getMultiUploadUrls(n.uploadFileId,t,i),o={};if(s.requestHeader){let c=s.requestHeader;try{c=decodeURIComponent(c)}catch{}for(let l of c.split("&")){let d=l.indexOf("=");d<=0||(o[l.slice(0,d)]=l.slice(d+1))}}let a=await fetch(s.requestURL,{method:"PUT",headers:o,body:i});if(!a.ok){let c=await a.text().catch(()=>"");throw new Error(`[189Cloud] \u4E0A\u4F20\u7B2C ${t}/${n.partCount} \u5206\u7247\u5931\u8D25: HTTP ${a.status} ${c}`)}return{partMd5:Rl(i)}}async completeUploadSession(e,t=[]){let i=V_(e);this.client.setSessionKey(i.sessionKey);let n=t.map(o=>String(o||"").trim().toLowerCase()).filter(o=>/^[a-f0-9]{32}$/.test(o));if(n.length!==i.partCount)throw new Error("[189Cloud] \u5206\u7247\u6821\u9A8C\u4FE1\u606F\u4E0D\u5B8C\u6574\uFF0C\u65E0\u6CD5\u63D0\u4EA4\u4E0A\u4F20");let s=i.partCount===1?i.fileMd5:Rl(n.join(` +`)).toUpperCase();await this.client.commitMultiUpload(i.uploadFileId,i.fileMd5,s)}}});function Rz(){return{clientType:Tz,version:Pz,channelId:Uz,clientSn:"unknown",model:"PJX110",osFamily:"Android",osVersion:"35",networkAccessMode:"WIFI",telecomsOperator:"46011"}}function t8(r){try{return new URL(r).pathname}catch{return r}}function Nz(r,e,t,i,n){let s=`SessionKey=${e}&Operate=${t}&RequestURI=${t8(i)}&Date=${n}`;return Yu(s,r).toUpperCase()}function qz(r,e,t,i,n){let s=`AppKey=${e}&Operate=${t}&RequestURI=${t8(i)}&Timestamp=${n}`;return Yu(s,r).toUpperCase()}function Oz(r){let e=r.replace(/("id"\s*:\s*)(-?\d{16,})(?=\s*[,}])/g,'$1"$2"');return JSON.parse(e)}function Mz(r){let e=r.res_code;return typeof e=="number"?e!==0:typeof e=="string"?e!==""&&e!=="0":!!(r.code&&r.code!=="SUCCESS"||r.errorCode||r.error)}function Lz(r){switch(r){case"filename":return"1";case"filesize":return"2";case"lastOpTime":return"3";default:return"1"}}function Hz(r){return r==="desc"?"true":"false"}var e8,Fz,Pz,Tz,Uz,Ni,HC,Dp,r8=j(()=>{"use strict";vp();e8="600100885",Fz="fe5734c74c2f96a38157f420b32dc995",Pz="6.5.5",Tz="FAMILY_TV",Uz="home02",Ni="https://api.cloud.189.cn",HC="EcloudTV/6.5.5 (PJX110; unknown; home02) Android/35";Dp=class{addition;tokenInfo=null;persistAccessToken;constructor(e,t){this.addition=e,this.persistAccessToken=t}isFamily(){return this.addition.type==="family"}getFamilyId(){return this.addition.family_id||""}async init(){if(!this.addition.access_token)throw new Error("[189TV] access_token \u4E3A\u7A7A\uFF1A\u8BF7\u5148\u5728\u522B\u5904\u626B\u7801\u767B\u5F55\u83B7\u53D6 access_token \u540E\u586B\u5165\u914D\u7F6E");await this.login()}signatureHeader(e,t,i){let n=new Date().toUTCString(),s=i?this.tokenInfo?.familySessionKey||"":this.tokenInfo?.sessionKey||"",o=i?this.tokenInfo?.familySessionSecret||"":this.tokenInfo?.sessionSecret||"";return{Date:n,SessionKey:s,"X-Request-ID":Nl(),Signature:Nz(o,s,t,e,n)}}appKeySignatureHeader(e,t){let i=Date.now();return{Timestamp:String(i),"X-Request-ID":Nl(),AppKey:e8,AppSignature:qz(Fz,e8,t,e,i)}}async request(e,t,i={}){let{query:n,form:s,isFamily:o=!1,isAppKey:a=!1}=i,c=i.retryCount??0,l=new URL(e);for(let[p,I]of Object.entries(Rz()))l.searchParams.set(p,I);if(n)for(let[p,I]of Object.entries(n))I!==void 0&&l.searchParams.set(p,I);let d={Accept:"application/json;charset=UTF-8","User-Agent":HC};a?Object.assign(d,this.appKeySignatureHeader(e,t)):Object.assign(d,this.signatureHeader(e,t,o));let u;s&&(d["Content-Type"]="application/x-www-form-urlencoded; charset=UTF-8",u=new URLSearchParams(s).toString());let h=await(await fetch(l.toString(),{method:t,headers:d,body:u})).text();if(h.includes("userSessionBO is null")||h.includes("InvalidSessionKey")){if(c>=3)throw new Error("[189TV] session expired after retry");return await this.login(),this.request(e,t,{...i,retryCount:c+1})}let g;try{g=Oz(h)}catch{throw new Error(`[189TV] \u975E\u9884\u671F\u54CD\u5E94: ${h.slice(0,200)}`)}if(Mz(g))throw new Error(`[189TV] API \u9519\u8BEF: ${g.res_message||g.errorMsg||g.msg||h.slice(0,200)}`);return g}async login(){if(!this.addition.access_token)throw new Error("[189TV] access_token \u4E3A\u7A7A\uFF0C\u65E0\u6CD5\u767B\u5F55");let e=await this.request(Ni+"/family/manage/loginFamilyMerge.action","GET",{query:{e189AccessToken:this.addition.access_token},isAppKey:!0});this.tokenInfo=e,e.accessToken&&e.accessToken!==this.addition.access_token&&(this.addition.access_token=e.accessToken,this.persistAccessToken&&await this.persistAccessToken(e.accessToken))}async getFiles(e,t){let n=(t?Ni+"/family/file":Ni)+"/listFiles.action",s=this.addition.order_by||"lastOpTime",o=Hz(this.addition.order_direction||"asc"),a=[];for(let c=1;;c++){let l={folderId:e,fileType:"0",mediaAttr:"0",iconOption:"5",pageNum:String(c),pageSize:"130"};t?(l.familyId=this.addition.family_id||"",l.orderBy=Lz(s),l.descending=o):(l.recursive="0",l.orderBy=s,l.descending=o);let u=(await this.request(n,"GET",{query:l,isFamily:t})).fileListAO;if(!u||Number(u.count)===0)break;let f=u.folderList||[],h=u.fileList||[];if(a.push(...f,...h),f.length+h.length<130)break}return a}async getFileDownloadUrl(e,t){let n=(t?Ni+"/family/file":Ni)+"/getFileDownloadUrl.action",s={fileId:e};t?s.familyId=this.addition.family_id||"":(s.dt="3",s.flag="1");let a=(await this.request(n,"GET",{query:s,isFamily:t})).fileDownloadUrl||"";if(!a)throw new Error("[189TV] \u83B7\u53D6\u4E0B\u8F7D\u5730\u5740\u5931\u8D25");a=a.replace(/&/g,"&").replace(/^http:\/\//i,"https://");try{let c=await fetch(a,{method:"GET",headers:{"User-Agent":HC},redirect:"manual"}),l=c.headers.get("location");c.status===302&&l&&(a=l.replace(/^http:\/\//i,"https://"))}catch{}return a}async mkdir(e,t,i){let s=(i?Ni+"/family/file":Ni)+"/createFolder.action",o={folderName:t,relativePath:""};i?(o.familyId=this.addition.family_id||"",o.parentId=e):o.parentFolderId=e,await this.request(s,"POST",{query:o,isFamily:i})}async rename(e,t,i,n){let s=n?Ni+"/family/file":Ni,o=n?"GET":"POST",c=s+(t?"/renameFolder.action":"/renameFile.action"),l={};n&&(l.familyId=this.addition.family_id||""),t?(l.folderId=e,l.destFolderName=i):(l.fileId=e,l.destFileName=i),await this.request(c,o,{query:l,isFamily:n})}async createBatchTask(e,t,i,n){let s={type:e,taskInfos:JSON.stringify(n)};i&&(s.targetFolderId=i),t&&(s.familyId=t);let o=await this.request(Ni+"/batch/createBatchTask.action","POST",{form:s,isFamily:t!==""});if(!o.taskId)throw new Error("[189TV] \u521B\u5EFA\u6279\u91CF\u4EFB\u52A1\u5931\u8D25");return o.taskId}async waitBatchTask(e,t){for(let i=0;i<20;i++){let s=(await this.request(Ni+"/batch/checkBatchTask.action","POST",{form:{type:e,taskId:t}})).taskStatus;if(s===4)return;if(s===2)throw new Error("[189TV] \u76EE\u6807\u5B58\u5728\u540C\u540D\u51B2\u7A81");await new Promise(o=>setTimeout(o,300))}throw new Error("[189TV] \u6279\u91CF\u4EFB\u52A1\u8D85\u65F6")}async move(e,t,i,n,s){let o=await this.createBatchTask("MOVE",s&&this.addition.family_id||"",n,[{fileId:e,fileName:i,isFolder:t?1:0}]);await this.waitBatchTask("MOVE",o)}async copy(e,t,i,n,s){let o=await this.createBatchTask("COPY",s&&this.addition.family_id||"",n,[{fileId:e,fileName:i,isFolder:t?1:0}]);await this.waitBatchTask("COPY",o)}async remove(e,t,i,n){let s=await this.createBatchTask("DELETE",n&&this.addition.family_id||"","",[{fileId:e,fileName:i,isFolder:t?1:0}]);await this.waitBatchTask("DELETE",s)}async upload(e,t,i,n){let s=Rl(i),o=i.length,c=(n?Ni+"/family/file":Ni)+(n?"/createFamilyFile.action":"/createUploadFile.action"),l;n?l=await this.request(c,"POST",{query:{familyId:this.addition.family_id||"",parentId:e,fileMd5:s,fileName:t,fileSize:String(o),resumePolicy:"1"},isFamily:n}):l=await this.request(c,"POST",{form:{parentFolderId:e,fileName:t,size:String(o),md5:s,opertype:"3",flag:"1",resumePolicy:"1",isLog:"0"},isFamily:n});let d=l.uploadFileId,u=l.fileUploadUrl,f=l.fileCommitUrl;if(!d||!u)throw new Error("[189TV] \u521B\u5EFA\u4E0A\u4F20\u4F1A\u8BDD\u5931\u8D25");let h={ResumePolicy:"1",Expect:"100-continue","User-Agent":HC};n?(h.FamilyId=this.addition.family_id||"",h.UploadFileId=String(d)):h["Edrive-UploadFileId"]=String(d),Object.assign(h,this.signatureHeader(u,"PUT",n));let g=await fetch(u,{method:"PUT",headers:h,body:new Uint8Array(i)});if(g.status!==200)throw new Error(`[189TV] \u4E0A\u4F20\u5931\u8D25: HTTP ${g.status}`);n?await this.request(f,"POST",{query:{ResumePolicy:"1",UploadFileId:String(d),FamilyId:this.addition.family_id||""},isFamily:n}):await this.request(f,"POST",{form:{opertype:"3",resumePolicy:"1",uploadFileId:String(d),isLog:"0"},isFamily:n})}}});function i8(r){if(!r)return new Date().toISOString();let e=r.trim().replace(/["']/g,""),t=e.replace(/ +08$/,"+08:00"),i=new Date(t);return isNaN(i.getTime())?e:i.toISOString()}function n8(r){if("parentId"in r||!("size"in r)){let t=r;return{name:t.name,size:0,is_dir:!0,modified:i8(t.lastOpTime||t.createDate),sign:t.id,type:1}}let e=r;return{name:e.name,size:e.size,is_dir:!1,modified:i8(e.lastOpTime||e.createDate),sign:e.id,type:X(e.name,!1),thumb:e.icon?.smallUrl||"",raw_url:""}}var Qp,s8=j(()=>{"use strict";Be();r8();Qp=class{client;pathCache=new Map;constructor(e,t){this.client=new Dp(e,t)}async init(){await this.client.init()}isFamily(){return this.client.isFamily()}async list(e,t){let i=await this.pathToId(t);return(await this.client.getFiles(i,this.isFamily())).map(n8)}async get(e,t){let i=t.split("/").filter(Boolean),n=i[i.length-1]||"root",s="/"+i.slice(0,-1).join("/");try{let o=await this.pathToId(s),c=(await this.client.getFiles(o,this.isFamily())).find(l=>l.name===n);if(c){let l=n8(c);if(!l.is_dir)try{l.raw_url=await this.client.getFileDownloadUrl(c.id,this.isFamily()),l.raw_url_headers={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"}}catch{l.raw_url_error="[189TV] failed to resolve download url"}return l}}catch{}return{name:n,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""}}async mkdir(e,t){let i=t.split("/").filter(Boolean),n=i.pop()||"new_folder",s="/"+i.join("/");await this.client.mkdir(await this.pathToId(s),n,this.isFamily()),this.pathCache.clear()}async rename(e,t,i){let n=await this.resolveEntry(t);await this.client.rename(n.id,n.isDir,i,this.isFamily()),this.pathCache.clear()}async remove(e,t,i){let n=await this.resolveEntry(t),s=t.split("/").filter(Boolean).pop()||"";await this.client.remove(n.id,n.isDir,s,this.isFamily()),this.pathCache.clear()}async move(e,t,i,n,s){let o=await this.resolveEntry(n),a=n.split("/").filter(Boolean).pop()||"";await this.client.move(o.id,o.isDir,a,await this.pathToId(t),this.isFamily()),this.pathCache.clear()}async copy(e,t,i,n,s){let o=await this.resolveEntry(n),a=n.split("/").filter(Boolean).pop()||"";await this.client.copy(o.id,o.isDir,a,await this.pathToId(t),this.isFamily()),this.pathCache.clear()}async put(e,t,i){let n=t.split("/").filter(Boolean),s=n.pop()||"file",o="/"+n.join("/");await this.client.upload(await this.pathToId(o),s,new Uint8Array(i),this.isFamily()),this.pathCache.clear()}async resolveEntry(e){let t=e.split("/").filter(Boolean),i=t[t.length-1],n="/"+t.slice(0,-1).join("/"),s=await this.pathToId(n),a=(await this.client.getFiles(s,this.isFamily())).find(l=>l.name===i);if(!a)throw new Error(`[189TV] '${i}' not found`);let c="parentId"in a||!("size"in a);return{id:a.id,isDir:c}}async pathToId(e){let t=e.split("/").filter(Boolean).join("/");if(!t)return this.isFamily()?"":"-11";if(this.pathCache.has(t))return this.pathCache.get(t);let i=t.split("/"),n=this.isFamily()?"":"-11";for(let s=0;s<i.length;s++){let a=(await this.client.getFiles(n,this.isFamily())).find(l=>l.name===i[s]&&"parentId"in l);if(!a)throw new Error(`[189TV] Directory '${i[s]}' not found`);n=a.id;let c="/"+i.slice(0,s+1).join("/");this.pathCache.set(c,n)}return n}}});function Rs(r,e){let t=r.replace(/\/+$/,""),i=e.replace(/^\/+/,"");return!t&&!i?"/":t?i?`${t}/${i}`:t:"/"+i}function Kz(r){return r.split("/").map(e=>encodeURIComponent(e)).join("/")}function o8(r,e){let t=[],i,n=/<(?:[a-zA-Z0-9_-]+:)?response\b[^>]*>([\s\S]*?)<\/(?:[a-zA-Z0-9_-]+:)?response>/gi,s;for(;(s=n.exec(r))!==null;){let o=s[1],a=/<(?:[a-zA-Z0-9_-]+:)?href\b[^>]*>([\s\S]*?)<\/(?:[a-zA-Z0-9_-]+:)?href>/i.exec(o);if(!a)continue;let c=a[1].trim(),l=c;try{l=decodeURIComponent(c)}catch{}let d=/<(?:[a-zA-Z0-9_-]+:)?propstat\b[^>]*>([\s\S]*?)<\/(?:[a-zA-Z0-9_-]+:)?propstat>/gi,u,f="";for(;(u=d.exec(o))!==null;){let E=u[1],P=/<(?:[a-zA-Z0-9_-]+:)?status\b[^>]*>([\s\S]*?)<\/(?:[a-zA-Z0-9_-]+:)?status>/i.exec(E),N=P?P[1]:"";if(N.includes("200")||N.toLowerCase().includes("ok")){let J=/<(?:[a-zA-Z0-9_-]+:)?prop\b[^>]*>([\s\S]*?)<\/(?:[a-zA-Z0-9_-]+:)?prop>/i.exec(E);if(J){f=J[1];break}}}if(!f)continue;let h=/<(?:[a-zA-Z0-9_-]+:)?resourcetype\b[^>]*>[\s\S]*?<(?:[a-zA-Z0-9_-]+:)?collection\b/i.test(f),g=/<(?:[a-zA-Z0-9_-]+:)?displayname\b[^>]*>([\s\S]*?)<\/(?:[a-zA-Z0-9_-]+:)?displayname>/i.exec(f),p=g?g[1].trim():"",I=l.replace(/\/+$/,""),y=I&&I.split("/").pop()||"",w=p||y,C=/<(?:[a-zA-Z0-9_-]+:)?getcontentlength\b[^>]*>([\s\S]*?)<\/(?:[a-zA-Z0-9_-]+:)?getcontentlength>/i.exec(f),b=h?0:C&&parseInt(C[1].trim(),10)||0,x=/<(?:[a-zA-Z0-9_-]+:)?getlastmodified\b[^>]*>([\s\S]*?)<\/(?:[a-zA-Z0-9_-]+:)?getlastmodified>/i.exec(f),_=new Date().toISOString();if(x){let E=new Date(x[1].trim());isNaN(E.getTime())||(_=E.toISOString())}let R=/<(?:[a-zA-Z0-9_-]+:)?getcontenttype\b[^>]*>([\s\S]*?)<\/(?:[a-zA-Z0-9_-]+:)?getcontenttype>/i.exec(f),U=R?R[1].trim():void 0,T=/<(?:[a-zA-Z0-9_-]+:)?getetag\b[^>]*>([\s\S]*?)<\/(?:[a-zA-Z0-9_-]+:)?getetag>/i.exec(f),D=T?T[1].trim().replace(/^"|"$/g,""):void 0,B={name:w,path:l,size:b,modified:_,isFolder:h,contentType:U,etag:D},Q=e.replace(/\/+$/,"").toLowerCase(),v=I.toLowerCase();!i&&(v===Q||v.endsWith(Q)||Q===""&&v==="")?i=B:t.push(B)}return{self:i,items:t}}function Gz(r){let e={},t=r.replace(/^digest\s+/i,"").split(/,\s*/);for(let i of t){let n=i.indexOf("=");if(n!==-1){let s=i.slice(0,n).trim(),o=i.slice(n+1).trim().replace(/^"|"$/g,"");s==="realm"?e.realm=o:s==="nonce"?e.nonce=o:s==="qop"?e.qop=o:s==="opaque"?e.opaque=o:s==="algorithm"&&(e.algorithm=o)}}return e}function a8(r,e,t,i,n,s=1){let o=s.toString(16).padStart(8,"0"),a=Math.random().toString(36).substring(2,18),c=r.realm||"",l=r.nonce||"",d=(r.algorithm||"MD5").toUpperCase(),u=r.qop||"",f="";if(d==="MD5"||d==="")f=hc.default.MD5(`${e}:${c}:${t}`).toString();else if(d==="MD5-SESS"){let I=hc.default.MD5(`${e}:${c}:${t}`).toString();f=hc.default.MD5(`${I}:${l}:${a}`).toString()}let h="";(u==="auth"||u==="")&&(h=hc.default.MD5(`${i}:${n}`).toString());let g="";u?g=hc.default.MD5(`${f}:${l}:${o}:${a}:${u}:${h}`).toString():g=hc.default.MD5(`${f}:${l}:${h}`).toString();let p=`Digest username="${e}", realm="${c}", nonce="${l}", uri="${n}", response="${g}"`;return d&&(p+=`, algorithm=${d}`),u&&(p+=`, qop=${u}, nc=${o}, cnonce="${a}"`),r.opaque&&(p+=`, opaque="${r.opaque}"`),p}async function Jz(r,e,t){let i=new URL(t),n=i.hostname.split("."),s=n[n.length-1],a=`${zz[s]||"https://login.microsoftonline.com"}/extSTS.srf`,c=`<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing" xmlns:u="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"> <s:Header> @@ -92,7 +108,7 @@ xmlns:u="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-util <t:TokenType>urn:oasis:names:tc:SAML:1.0:assertion</t:TokenType> </t:RequestSecurityToken> </s:Body> -</s:Envelope>`,l=await fetch(a,{method:"POST",headers:{"Content-Type":"application/soap+xml; charset=utf-8"},body:c});if(!l.ok)throw new Error(`SharePoint SAML auth failed with HTTP ${l.status}`);let d=await l.text(),u=/<(?:[a-zA-Z0-9_-]+:)?BinarySecurityToken\b[^>]*>([\s\S]*?)<\/(?:[a-zA-Z0-9_-]+:)?BinarySecurityToken>/i.exec(d);if(!u){let w=/<(?:[a-zA-Z0-9_-]+:)?Text\b[^>]*>([\s\S]*?)<\/(?:[a-zA-Z0-9_-]+:)?Text>/i.exec(d),C=w?w[1]:"Failed to obtain BinarySecurityToken";throw new Error(`SharePoint login failed: ${C}`)}let f=u[1].trim(),h=`https://${i.host}/_forms/default.aspx?wa=wsignin1.0`,g=await fetch(h,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:f,redirect:"manual"}),p="",I="",y=w=>{let C=[];if(w.headers.getSetCookie)C.push(...w.headers.getSetCookie());else{let b=w.headers.get("set-cookie");b&&C.push(b)}for(let b of C){let x=/rtFa=([^;]+)/.exec(b);x&&(p=x[1]);let _=/FedAuth=([^;]+)/.exec(b);_&&(I=_[1])}};if(y(g),!p||!I){let w=g.headers.get("location");if(w){let C=new URL(w,h).toString(),b=await fetch(C,{method:"GET",headers:{Cookie:`rtFa=${p}; FedAuth=${I}`},redirect:"manual"});y(b)}}if(!p&&!I)throw new Error("SharePoint auth failed: rtFa / FedAuth cookies not returned");return`rtFa=${p}; FedAuth=${I}`}var uc,rz,Ip,__=V(()=>{"use strict";uc=Dr(lc(),1);rz={com:"https://login.microsoftonline.com",cn:"https://login.chinacloudapi.cn",us:"https://login.microsoftonline.us",de:"https://login.microsoftonline.de"};Ip=class{address;username;password;isSharepoint;sharepointCookie="";digestParts=null;ncCount=0;constructor(e){this.address=e.address.replace(/\/+$/,""),this.username=e.username||"",this.password=e.password||"",this.isSharepoint=e.vendor==="sharepoint"}async init(){this.isSharepoint&&(this.sharepointCookie=await iz(this.username,this.password,this.address))}buildUrl(e){let t=e.replace(/^\/+/,"");return t?`${this.address}/${ez(t)}`:this.address}getAuthHeaders(e,t){let i={};if(this.isSharepoint&&this.sharepointCookie)i.Cookie=this.sharepointCookie;else if(this.digestParts)this.ncCount++,i.Authorization=Q_(this.digestParts,this.username,this.password,e,t,this.ncCount);else if(this.username||this.password){let n=btoa(unescape(encodeURIComponent(`${this.username}:${this.password}`)));i.Authorization=`Basic ${n}`}return i}async request(e,t,i={}){let n=this.buildUrl(t),s=new URL(n),o=s.pathname+s.search,c={...this.getAuthHeaders(e,o),...i.headers||{}},l=await fetch(n,{method:e,headers:c,body:i.body,redirect:i.redirect||"follow"});if(l.status===401&&!this.isSharepoint){let d=l.headers.get("www-authenticate")||"";if(/digest/i.test(d)){this.digestParts=tz(d),this.ncCount=1;let u=Q_(this.digestParts,this.username,this.password,e,o,this.ncCount),f={...c,Authorization:u};l=await fetch(n,{method:e,headers:f,body:i.body,redirect:i.redirect||"follow"})}}return l}async readDir(e){let i=await this.request("PROPFIND",e,{headers:{Depth:"1","Content-Type":"application/xml; charset=utf-8",Accept:"application/xml, text/xml"},body:`<?xml version="1.0" encoding="utf-8" ?> +</s:Envelope>`,l=await fetch(a,{method:"POST",headers:{"Content-Type":"application/soap+xml; charset=utf-8"},body:c});if(!l.ok)throw new Error(`SharePoint SAML auth failed with HTTP ${l.status}`);let d=await l.text(),u=/<(?:[a-zA-Z0-9_-]+:)?BinarySecurityToken\b[^>]*>([\s\S]*?)<\/(?:[a-zA-Z0-9_-]+:)?BinarySecurityToken>/i.exec(d);if(!u){let w=/<(?:[a-zA-Z0-9_-]+:)?Text\b[^>]*>([\s\S]*?)<\/(?:[a-zA-Z0-9_-]+:)?Text>/i.exec(d),C=w?w[1]:"Failed to obtain BinarySecurityToken";throw new Error(`SharePoint login failed: ${C}`)}let f=u[1].trim(),h=`https://${i.host}/_forms/default.aspx?wa=wsignin1.0`,g=await fetch(h,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:f,redirect:"manual"}),p="",I="",y=w=>{let C=[];if(w.headers.getSetCookie)C.push(...w.headers.getSetCookie());else{let b=w.headers.get("set-cookie");b&&C.push(b)}for(let b of C){let x=/rtFa=([^;]+)/.exec(b);x&&(p=x[1]);let _=/FedAuth=([^;]+)/.exec(b);_&&(I=_[1])}};if(y(g),!p||!I){let w=g.headers.get("location");if(w){let C=new URL(w,h).toString(),b=await fetch(C,{method:"GET",headers:{Cookie:`rtFa=${p}; FedAuth=${I}`},redirect:"manual"});y(b)}}if(!p&&!I)throw new Error("SharePoint auth failed: rtFa / FedAuth cookies not returned");return`rtFa=${p}; FedAuth=${I}`}var hc,zz,_p,c8=j(()=>{"use strict";hc=Qr(fc(),1);zz={com:"https://login.microsoftonline.com",cn:"https://login.chinacloudapi.cn",us:"https://login.microsoftonline.us",de:"https://login.microsoftonline.de"};_p=class{address;username;password;isSharepoint;sharepointCookie="";digestParts=null;ncCount=0;constructor(e){this.address=e.address.replace(/\/+$/,""),this.username=e.username||"",this.password=e.password||"",this.isSharepoint=e.vendor==="sharepoint"}async init(){this.isSharepoint&&(this.sharepointCookie=await Jz(this.username,this.password,this.address))}buildUrl(e){let t=e.replace(/^\/+/,"");return t?`${this.address}/${Kz(t)}`:this.address}getAuthHeaders(e,t){let i={};if(this.isSharepoint&&this.sharepointCookie)i.Cookie=this.sharepointCookie;else if(this.digestParts)this.ncCount++,i.Authorization=a8(this.digestParts,this.username,this.password,e,t,this.ncCount);else if(this.username||this.password){let n=btoa(unescape(encodeURIComponent(`${this.username}:${this.password}`)));i.Authorization=`Basic ${n}`}return i}async request(e,t,i={}){let n=this.buildUrl(t),s=new URL(n),o=s.pathname+s.search,c={...this.getAuthHeaders(e,o),...i.headers||{}},l=await fetch(n,{method:e,headers:c,body:i.body,redirect:i.redirect||"follow"});if(l.status===401&&!this.isSharepoint){let d=l.headers.get("www-authenticate")||"";if(/digest/i.test(d)){this.digestParts=Gz(d),this.ncCount=1;let u=a8(this.digestParts,this.username,this.password,e,o,this.ncCount),f={...c,Authorization:u};l=await fetch(n,{method:e,headers:f,body:i.body,redirect:i.redirect||"follow"})}}return l}async readDir(e){let i=await this.request("PROPFIND",e,{headers:{Depth:"1","Content-Type":"application/xml; charset=utf-8",Accept:"application/xml, text/xml"},body:`<?xml version="1.0" encoding="utf-8" ?> <d:propfind xmlns:d="DAV:"> <d:prop> <d:displayname/> @@ -102,7 +118,7 @@ xmlns:u="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-util <d:getetag/> <d:getlastmodified/> </d:prop> -</d:propfind>`});if(i.status===404)throw new Error(`Directory not found: ${e}`);if(i.status!==207&&!i.ok){let o=await i.text();throw new Error(`WebDAV PROPFIND failed with status ${i.status}: ${o||i.statusText}`)}let n=await i.text(),{items:s}=D_(n,e);return s}async stat(e){let i=await this.request("PROPFIND",e,{headers:{Depth:"0","Content-Type":"application/xml; charset=utf-8",Accept:"application/xml, text/xml"},body:`<?xml version="1.0" encoding="utf-8" ?> +</d:propfind>`});if(i.status===404)throw new Error(`Directory not found: ${e}`);if(i.status!==207&&!i.ok){let o=await i.text();throw new Error(`WebDAV PROPFIND failed with status ${i.status}: ${o||i.statusText}`)}let n=await i.text(),{items:s}=o8(n,e);return s}async stat(e){let i=await this.request("PROPFIND",e,{headers:{Depth:"0","Content-Type":"application/xml; charset=utf-8",Accept:"application/xml, text/xml"},body:`<?xml version="1.0" encoding="utf-8" ?> <d:propfind xmlns:d="DAV:"> <d:prop> <d:displayname/> @@ -112,18 +128,18 @@ xmlns:u="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-util <d:getetag/> <d:getlastmodified/> </d:prop> -</d:propfind>`});if(i.status===404)throw new Error(`Object not found: ${e}`);if(i.status!==207&&!i.ok){let c=await i.text();throw new Error(`WebDAV PROPFIND failed with status ${i.status}: ${c||i.statusText}`)}let n=await i.text(),{self:s,items:o}=D_(n,e),a=s||o[0];if(!a)throw new Error(`Object not found in PROPFIND response: ${e}`);return a}async mkdir(e){let t=await this.request("MKCOL",e);if(!(t.status===201||t.status===405))throw new Error(`WebDAV MKCOL failed with status ${t.status}`)}async mkdirAll(e){let t=await this.request("MKCOL",e);if(!(t.status===201||t.status===405)){if(t.status===409){let i=e.split("/").filter(Boolean),n="";for(let s of i){n+="/"+s;let o=await this.request("MKCOL",n);if(o.status!==201&&o.status!==405)throw new Error(`WebDAV MkdirAll failed at ${n} with status ${o.status}`)}return}throw new Error(`WebDAV MkdirAll failed with status ${t.status}`)}}async move(e,t,i=!0){let n=this.buildUrl(t),s=await this.request("MOVE",e,{headers:{Destination:n,Overwrite:i?"T":"F"}});if(!(s.status===201||s.status===204)){if(s.status===409){let o=t.substring(0,t.lastIndexOf("/"));if(o)return await this.mkdirAll(o),this.move(e,t,i)}throw new Error(`WebDAV MOVE failed with status ${s.status}`)}}async copy(e,t,i=!0){let n=this.buildUrl(t),s=await this.request("COPY",e,{headers:{Destination:n,Overwrite:i?"T":"F"}});if(!(s.status===201||s.status===204)){if(s.status===409){let o=t.substring(0,t.lastIndexOf("/"));if(o)return await this.mkdirAll(o),this.copy(e,t,i)}throw new Error(`WebDAV COPY failed with status ${s.status}`)}}async remove(e){let t=await this.request("DELETE",e);if(!(t.status===200||t.status===204||t.status===404))throw new Error(`WebDAV DELETE failed with status ${t.status}`)}async put(e,t,i){let n={};i&&(n["Content-Type"]=i);let s=await this.request("PUT",e,{headers:n,body:t});if(!(s.status===200||s.status===201||s.status===204)){if(s.status===409){let o=e.substring(0,e.lastIndexOf("/"));if(o&&(await this.mkdirAll(o),s=await this.request("PUT",e,{headers:n,body:t}),s.status===200||s.status===201||s.status===204))return}throw new Error(`WebDAV PUT failed with status ${s.status}`)}}getLink(e){let t=this.buildUrl(e),i=new URL(t),n=i.pathname+i.search,s=this.getAuthHeaders("GET",n);return{url:t,headers:s}}}});function nz(r){let e={...r||{}};return e.vendor=e.vendor||"other",e.address=(e.address||"").trim(),e.username=(e.username||"").trim(),e.password=e.password||"",e.root_folder_path=(e.root_folder_path||"/").trim(),e.root_folder_path.startsWith("/")||(e.root_folder_path="/"+e.root_folder_path),e.tls_insecure_skip_verify=!!e.tls_insecure_skip_verify,e.order_by=e.order_by||"name",e.order_direction=e.order_direction||"asc",e}var wp,F_=V(()=>{"use strict";Be();He();__();wp=class{client;addition;constructor(e){this.addition=nz(e),this.client=new Ip(this.addition)}async init(){await this.client.init()}getRemotePath(e){let t=this.addition.root_folder_path||"/";return Us(t,e||"/")}fileItemFromWebdav(e,t){let i=this.client.getLink(t);return{name:e.name,size:e.size,is_dir:e.isFolder,modified:e.modified,sign:"",type:X(e.name,e.isFolder),thumb:"",raw_url:e.isFolder?void 0:i.url,raw_url_headers:e.isFolder?void 0:i.headers}}async list(e,t){let i=this.getRemotePath(t),s=(await this.client.readDir(i)).map(o=>{let a=Us(i,o.name);return this.fileItemFromWebdav(o,a)});return de(s,this.addition.order_by||"name",this.addition.order_direction||"asc")}async get(e,t){let i=this.getRemotePath(t),n=await this.client.stat(i);return this.fileItemFromWebdav(n,i)}async mkdir(e,t){let i=this.getRemotePath(t);await this.client.mkdirAll(i)}async rename(e,t,i){let n=this.getRemotePath(t),s=n.lastIndexOf("/"),o=s>=0?n.substring(0,s):"/",a=Us(o,i);await this.client.move(n,a,!0)}async move(e,t,i,n,s){let o=this.getRemotePath(n),a=this.getRemotePath(s);for(let c of i){let l=Us(o,c),d=Us(a,c);await this.client.move(l,d,!0)}}async copy(e,t,i,n,s){let o=this.getRemotePath(n),a=this.getRemotePath(s);for(let c of i){let l=Us(o,c),d=Us(a,c);await this.client.copy(l,d,!0)}}async remove(e,t,i){let n=this.getRemotePath(t);if(i&&i.length>0)for(let s of i){let o=Us(n,s);await this.client.remove(o)}else await this.client.remove(n)}async put(e,t,i){let n=this.getRemotePath(t);await this.client.put(n,i)}}});var Wi,xp,P_,T_,bC,vC,zo,kC,U_,R_,N_,q_,O_,M_,L_,H_,K_,G_,z_,J_,j_,$_,V_,SC,Cp=V(()=>{"use strict";Wi="1001000021",xp="XFmi9GS2hzk98jGX",P_="10000001",T_="https://panservice.mail.wo.cn",bC="https://tjupload.pan.wo.cn",vC="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36 Edg/114.0.1823.37",zo="api-user",kC="wohome",U_="wocloud",R_="AppQueryUser",N_="AppRefreshToken",q_="QueryCloudUsageInfo",O_="ClassifyRule",M_="GetZoneInfo",L_="FamilyUserCurrentEncode",H_="QueryAllFiles",K_="GetDownloadUrlV2",G_="CreateDirectory",z_="RenameFileOrDirectory",J_="MoveFile",j_="CopyFile",$_="DeleteFile",V_="upload2C",SC={name_asc:1,name_desc:2,size_asc:3,size_desc:4,time_asc:5,time_desc:6}});var Ai,sz,Ep,Y_=V(()=>{"use strict";Ai=Dr(lc(),1);Cp();sz="wNSOYIB1k1DjY5lA",Ep=class{key=xp;iv=sz;accessKey="";constructor(e){e&&this.setAccessToken(e)}setAccessToken(e){e&&e.length>=16?this.accessKey=e.slice(0,16):e&&(this.accessKey=e)}encrypt(e,t){let i=t===zo?this.key:this.accessKey||this.key,n=Ai.default.enc.Utf8.parse(i),s=Ai.default.enc.Utf8.parse(this.iv);return Ai.default.AES.encrypt(Ai.default.enc.Utf8.parse(e),n,{iv:s,mode:Ai.default.mode.CBC,padding:Ai.default.pad.Pkcs7}).toString()}decrypt(e,t){let i=t===zo?this.key:this.accessKey||this.key,n=Ai.default.enc.Utf8.parse(i),s=Ai.default.enc.Utf8.parse(this.iv);return Ai.default.AES.decrypt(e,n,{iv:s,mode:Ai.default.mode.CBC,padding:Ai.default.pad.Pkcs7}).toString(Ai.default.enc.Utf8)}userEncrypt(e){return this.encrypt(e,zo)}userDecrypt(e){return this.decrypt(e,zo)}woHomeEncrypt(e){return this.encrypt(e,"wohome")}woHomeDecrypt(e){return this.decrypt(e,"wohome")}calHeader(e,t){let i=Date.now(),n=Math.floor(Math.random()*8999)+1e5,s="",o=Ai.default.MD5(`${t}${i}${n}${e}${s}`).toString();return{key:t,resTime:i,reqSeq:n,channel:e,sign:o,version:s}}}});function oz(r){let e="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789",t="";for(let i=0;i<r;i++)t+=e.charAt(Math.floor(Math.random()*e.length));return t}function az(r=new Date){let e=c=>String(c).padStart(2,"0"),t=r.getFullYear(),i=e(r.getMonth()+1),n=e(r.getDate()),s=e(r.getHours()),o=e(r.getMinutes()),a=e(r.getSeconds());return`${t}${i}${n}${s}${o}${a}`}var Bp,W_=V(()=>{"use strict";Cp();Y_();Bp=class{addition;accessToken;refreshTokenValue;phone="";zoneURL="";classifyRuleData=null;crypto;onTokenUpdate;constructor(e,t){this.addition=e,this.accessToken=e.access_token||"",this.refreshTokenValue=e.refresh_token||"",this.onTokenUpdate=t,this.crypto=new Ep(this.accessToken)}getAccessToken(){return this.accessToken}getRefreshToken(){return this.refreshTokenValue}setAccessToken(e){this.accessToken=e,this.crypto.setAccessToken(e)}setRefreshToken(e){this.refreshTokenValue=e}async request(e,t,i,n={},s=!0){let o=this.crypto.calHeader(e,t),a={...n};if(i!=null){let g=JSON.stringify(i),p=this.crypto.encrypt(g,e);a.param=p}let c={Origin:"https://pan.wo.cn",Referer:"https://pan.wo.cn/","User-Agent":vC,"Content-Type":"application/json;charset=UTF-8"};this.accessToken&&(c.Accesstoken=this.accessToken);let l=`${T_}/${e}/dispatcher`,d=await fetch(l,{method:"POST",headers:c,body:JSON.stringify({header:o,body:a})});if(!d.ok)throw new Error(`[WoPan] Request failed with HTTP status: ${d.status} ${d.statusText}`);let u=await d.json().catch(()=>null);if(!u)throw new Error(`[WoPan] Response is not valid JSON from ${t}`);if(u.STATUS!=="200")throw new Error(`[WoPan] Request failed with status: ${u.STATUS}, msg: ${u.MSG||""}`);let f=u.RSP?.RSP_CODE;if(f!=="0000"){if(e!==zo&&s&&f==="9999")return await this.refreshToken(),this.request(e,t,i,n,!1);throw new Error(`[WoPan] Request failed with rsp_code: ${f}, rsp_desc: ${u.RSP?.RSP_DESC||""}`)}let h=u.RSP?.DATA;if(h==null)return{};if(typeof h=="string"){let g=h.trim();g.startsWith('"')&&g.endsWith('"')&&(g=g.slice(1,-1));try{let p=this.crypto.decrypt(g,e);if(p)return JSON.parse(p)}catch{try{return JSON.parse(g)}catch{return g}}}return h}async requestApiUser(e,t,i={}){return this.request(zo,e,t,i)}async requestWoHome(e,t,i={}){return this.request(kC,e,t,i)}async appRefreshToken(){return await this.requestApiUser(N_,{refreshToken:this.refreshTokenValue,clientSecret:xp},{clientId:Wi,secret:!0})}async refreshToken(){let e=await this.appRefreshToken();if(!e.access_token)throw new Error("[WoPan] Failed to refresh token: empty access_token");this.setAccessToken(e.access_token),e.refresh_token&&this.setRefreshToken(e.refresh_token),this.onTokenUpdate?.(this.accessToken,this.refreshTokenValue)}async appQueryUser(){return this.requestApiUser(R_,{accessToken:this.accessToken},{clientId:Wi,secret:!0})}async initPhone(){if(this.phone)return;let e=await this.appQueryUser();e?.userId&&(this.phone=e.userId)}async classifyRule(){return this.requestWoHome(O_,{},{key:!0})}async initClassifyRule(){if(this.classifyRuleData)return;let e=await this.classifyRule().catch(()=>null);e&&(this.classifyRuleData=e)}async getZoneInfo(){return this.requestWoHome(M_,{appId:P_},{key:!0})}async initZoneURL(){if(this.zoneURL)return;let e=await this.getZoneInfo().catch(()=>null);this.zoneURL=e?.url||bC}async familyUserCurrentEncode(){return this.requestWoHome(L_,{clientId:Wi},{secret:!0})}async initData(){!this.accessToken&&this.refreshTokenValue&&await this.refreshToken(),await this.initPhone().catch(()=>{}),await this.initClassifyRule().catch(()=>{}),await this.initZoneURL().catch(()=>{})}getFileType(e){let t=(e.split(".").pop()||"").toLowerCase();return t&&this.classifyRuleData?.fileTypes?.[t]?this.classifyRuleData.fileTypes[t].type:"5"}async queryAllFiles(e,t,i,n,s,o=""){let a={spaceType:e,parentDirectoryId:t,pageNum:i,pageSize:n,sortRule:s,clientId:Wi};return e==="1"&&o&&(a.familyId=o),this.requestWoHome(H_,a,{secret:!0})}async getDownloadUrlV2(e){let t={type:"1",fidList:e,clientId:Wi};return this.requestWoHome(K_,t,{secret:!0})}async createDirectory(e,t,i,n=""){let s={spaceType:e,familyId:n,parentDirectoryId:t,directoryName:i,clientId:Wi};return this.requestWoHome(G_,s,{secret:!0})}async renameFileOrDirectory(e,t,i,n,s=""){let o=t===0?"0":this.getFileType(n),a={spaceType:e,type:t,fileType:o,id:i,name:n,clientId:Wi};e==="1"&&s&&(a.familyId=s),await this.requestWoHome(z_,a,{secret:!0})}async moveFile(e,t,i,n,s,o="",a=""){let c={targetDirId:i,sourceType:n,targetType:s,dirList:e,fileList:t,secret:!1,clientId:Wi};n==="1"&&o&&(c.fromFamilyId=o),s==="1"&&a&&(c.familyId=a),await this.requestWoHome(J_,c,{secret:!0})}async copyFile(e,t,i,n,s,o="",a=""){let c={targetDirId:i,sourceType:n,targetType:s,dirList:e,fileList:t,secret:!1,clientId:Wi};n==="1"&&o&&(c.fromFamilyId=o),s==="1"&&a&&(c.familyId=a),await this.requestWoHome(j_,c,{secret:!0})}async deleteFile(e,t,i){let n={spaceType:e,vipLevel:"0",dirList:t,fileList:i,clientId:Wi};await this.requestWoHome($_,n,{secret:!0})}async queryCloudUsageInfo(){return await this.initPhone(),this.requestWoHome(q_,{phoneNum:this.phone,clientId:Wi},{secret:!0})}async upload2C(e,t,i,n,s="",o){await this.initZoneURL();let c=`${this.zoneURL||bC}/openapi/client/${V_}`,l=i instanceof Uint8Array?i:i instanceof ArrayBuffer?new Uint8Array(i):new Uint8Array(i),d=l.length,u=Math.max(1,Math.ceil(d/8388608)),f=az(),h={spaceType:e,directoryId:n,batchNo:f,fileName:t,fileSize:d,fileType:this.getFileType(t)};e==="1"&&s&&(h.familyId=s);let g=this.crypto.encrypt(JSON.stringify(h),kC),p=`${Date.now()}_${oz(6)}`,I=0,y="";for(let w=1;w<=u;w++){let C=(w-1)*8388608,b=w===u?d-C:8388608,x=l.subarray(C,C+b),_=new FormData;_.append("uniqueId",p),_.append("accessToken",this.accessToken),_.append("fileName",t),_.append("psToken","undefined"),_.append("fileSize",String(d)),_.append("totalPart",String(u)),_.append("channel",U_),_.append("directoryId",n),_.append("fileInfo",g),_.append("partSize",String(b)),_.append("partIndex",String(w));let R=new Blob([x.buffer.slice(x.byteOffset,x.byteOffset+x.byteLength)],{type:"application/octet-stream"});_.append("file",R,t);let U=await fetch(c,{method:"POST",headers:{Origin:"https://pan.wo.cn",Referer:"https://pan.wo.cn/","User-Agent":vC},body:_});if(!U.ok)throw new Error(`[WoPan] Upload part ${w}/${u} failed with HTTP status: ${U.status}`);let T=await U.json().catch(()=>({}));if(T.code!=="0000")throw new Error(`[WoPan] Upload part ${w}/${u} failed: ${T.code} ${T.msg||""}`);T.data?.fid&&(y=T.data.fid),I+=b,o?.(I,d)}return y}}});function lz(r){if(!r)return new Date().toISOString();if(r.length>=14){let e=r.slice(0,4),t=r.slice(4,6),i=r.slice(6,8),n=r.slice(8,10),s=r.slice(10,12),o=r.slice(12,14),a=`${e}-${t}-${i}T${n}:${s}:${o}+08:00`,c=new Date(a);if(!isNaN(c.getTime()))return c.toISOString()}try{let e=new Date(r);if(!isNaN(e.getTime()))return e.toISOString()}catch{}return new Date().toISOString()}function X_(r){let e=r.type===0;return{name:r.name,size:r.size||0,is_dir:e,modified:lz(r.createTime),sign:r.fid||r.id,type:X(r.name,e),thumb:r.thumbUrl||"",raw_url:""}}function QC(r){let e={...r||{}};return e.root_folder_id=e.root_folder_id||"0",e.refresh_token=(e.refresh_token||"").trim(),e.family_id=(e.family_id||"").trim(),e.sort_rule=e.sort_rule||"name_asc",e.access_token=(e.access_token||"").trim(),e}var bp,Z_=V(()=>{"use strict";Be();He();Cp();W_();bp=class{client;addition;defaultFamilyId="";pathFileMapCache=new Map;pathFolderIdCache=new Map;constructor(e,t){this.addition=QC(e),this.client=new Bp(this.addition,(i,n)=>{this.addition.access_token=i,this.addition.refresh_token=n,t?.(i,n)})}getSpaceType(){return this.addition.family_id?"1":"0"}getFamilyId(){return this.addition.family_id||this.defaultFamilyId}getSortRuleNum(){let e=this.addition.sort_rule||"name_asc";return SC[e]||SC.name_asc}getRootId(){return this.addition.root_folder_id||"0"}async init(){await this.client.initData();let e=await this.client.familyUserCurrentEncode().catch(()=>null);e?.defaultHomeId!==void 0&&e.defaultHomeId!==null&&(this.defaultFamilyId=String(e.defaultHomeId))}async list(e,t){let i=await this.resolveFolderId(t),n=await this.fetchFolderFiles(i),s=t.split("/").filter(Boolean).join("/");for(let a of n){let c=s?`${s}/${a.name}`:a.name;this.pathFileMapCache.set(c,a),a.type===0&&this.pathFolderIdCache.set(c,a.id)}let o=n.map(X_);return de(o,this.addition.order_by,this.addition.order_direction)}async get(e,t){let i=t.split("/").filter(Boolean).join("/");if(!i)return{name:"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:this.getRootId(),type:1,raw_url:""};let n=await this.resolveWoPanFile(t);if(!n){let o=await this.resolveFolderId(t).catch(()=>null);if(o){let a=i.split("/");return{name:a[a.length-1]||"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:o,type:1,raw_url:""}}throw new Error(`[WoPan] File not found: ${t}`)}let s=X_(n);if(!s.is_dir&&n.fid){let o=await this.client.getDownloadUrlV2([n.fid]).catch(()=>null);o?.list?.[0]?.downloadUrl&&(s.raw_url=o.list[0].downloadUrl)}return s}async mkdir(e,t){let i=t.split("/").filter(Boolean),n=i.pop()||"\u65B0\u6587\u4EF6\u5939",s=i.join("/"),o=await this.resolveFolderId(s);await this.client.createDirectory(this.getSpaceType(),o,n,this.getFamilyId()),this.clearCache()}async rename(e,t,i){let n=await this.resolveWoPanFile(t);if(!n)throw new Error(`[WoPan] Item not found for rename: ${t}`);await this.client.renameFileOrDirectory(this.getSpaceType(),n.type,n.id,i,this.getFamilyId()),this.clearCache()}async remove(e,t,i){let n=await this.resolveWoPanFile(t);if(!n)throw new Error(`[WoPan] Item not found for deletion: ${t}`);let s=[],o=[];n.type===0?s.push(n.id):o.push(n.id),await this.client.deleteFile(this.getSpaceType(),s,o),this.clearCache()}async move(e,t,i,n,s){let o=await this.resolveWoPanFile(n);if(!o)throw new Error(`[WoPan] Source item not found for move: ${n}`);let a=await this.resolveFolderId(t),c=[],l=[];o.type===0?c.push(o.id):l.push(o.id),await this.client.moveFile(c,l,a,this.getSpaceType(),this.getSpaceType(),this.getFamilyId(),this.getFamilyId()),this.clearCache()}async copy(e,t,i,n,s){let o=await this.resolveWoPanFile(n);if(!o)throw new Error(`[WoPan] Source item not found for copy: ${n}`);let a=await this.resolveFolderId(t),c=[],l=[];o.type===0?c.push(o.id):l.push(o.id),await this.client.copyFile(c,l,a,this.getSpaceType(),this.getSpaceType(),this.getFamilyId(),this.getFamilyId()),this.clearCache()}async put(e,t,i){let n=t.split("/").filter(Boolean),s=n.pop()||"upload",o=n.join("/"),a=await this.resolveFolderId(o);await this.client.upload2C(this.getSpaceType(),s,i,a,this.getFamilyId()),this.clearCache()}clearCache(){this.pathFileMapCache.clear(),this.pathFolderIdCache.clear()}async fetchFolderFiles(e){let t=[],i=0,n=100;for(;;){let o=(await this.client.queryAllFiles(this.getSpaceType(),e,i,n,this.getSortRuleNum(),this.getFamilyId()))?.files||[];if(t.push(...o),o.length<n)break;i++}return t}async resolveFolderId(e){let t=e.split("/").filter(Boolean).join("/");if(!t)return this.getRootId();if(this.pathFolderIdCache.has(t))return this.pathFolderIdCache.get(t);let i=t.split("/"),n=this.getRootId();for(let s=0;s<i.length;s++){let o=i[s],a=(()=>{try{return decodeURIComponent(o)}catch{return o}})(),c=i.slice(0,s+1).join("/");if(this.pathFolderIdCache.has(c)){n=this.pathFolderIdCache.get(c);continue}let l=await this.fetchFolderFiles(n);for(let u of l){let f=i.slice(0,s).concat(u.name).join("/");this.pathFileMapCache.set(f,u),u.type===0&&this.pathFolderIdCache.set(f,u.id)}let d=l.find(u=>u.type===0&&(u.name===o||u.name===a||u.id===o));if(!d)throw new Error(`[WoPan] Directory '${o}' not found in path '${e}'`);n=d.id,this.pathFolderIdCache.set(c,n)}return n}async resolveWoPanFile(e){let t=e.split("/").filter(Boolean).join("/");if(!t)return null;if(this.pathFileMapCache.has(t))return this.pathFileMapCache.get(t);let i=t.split("/"),n=i.pop(),s=(()=>{try{return decodeURIComponent(n)}catch{return n}})(),o=i.join("/"),a=await this.resolveFolderId(o),c=await this.fetchFolderFiles(a);for(let d of c){let u=i.concat(d.name).join("/");this.pathFileMapCache.set(u,d),d.type===0&&this.pathFolderIdCache.set(u,d.id)}return c.find(d=>d.name===n||d.name===s||d.id===n||d.fid===n)||null}}});function Mu(){let r=()=>Array.from({length:16},()=>Math.floor(Math.random()*16).toString(16)).join(""),e={appVersion:"8.0.0",brand:uz,deviceId:r(),deviceName:e8,imei:r(),imsi:r(),mac:Array.from({length:6},()=>Math.floor(Math.random()*256).toString(16).padStart(2,"0")).join(":"),mno:"46000",model:e8,mpVersion:_C,networkType:"wifi",osVersion:"12",platform:dz};return JSON.stringify(e)}var wr,_C,dz,e8,uz,FC=V(()=>{"use strict";wr="https://mcloud.caiyun.feixin.10086.cn/MoPanProxyFamily",_C="1.1.202",dz="android",e8="M2102J2SC",uz="Xiaomi"});import{createCipheriv as fz,createDecipheriv as Az,randomBytes as hz}from"crypto";function PC(r,e){let t=Buffer.alloc(16,0),i=fz("aes-128-cbc",e.slice(0,16),t);return Buffer.concat([i.update(r),i.final()])}function t8(r,e){let t=Buffer.alloc(16,0),i=Az("aes-128-cbc",e.slice(0,16),t);return Buffer.concat([i.update(r),i.final()])}function r8(){return hz(16).toString("hex").slice(0,16)}function vp(r){return r.toString("base64")}function i8(r){return Buffer.from(r,"base64")}function s8(r,e){return vp(Buffer.from(r,"utf-8"))}var n8,o8=V(()=>{"use strict";n8=`-----BEGIN PUBLIC KEY----- +</d:propfind>`});if(i.status===404)throw new Error(`Object not found: ${e}`);if(i.status!==207&&!i.ok){let c=await i.text();throw new Error(`WebDAV PROPFIND failed with status ${i.status}: ${c||i.statusText}`)}let n=await i.text(),{self:s,items:o}=o8(n,e),a=s||o[0];if(!a)throw new Error(`Object not found in PROPFIND response: ${e}`);return a}async mkdir(e){let t=await this.request("MKCOL",e);if(!(t.status===201||t.status===405))throw new Error(`WebDAV MKCOL failed with status ${t.status}`)}async mkdirAll(e){let t=await this.request("MKCOL",e);if(!(t.status===201||t.status===405)){if(t.status===409){let i=e.split("/").filter(Boolean),n="";for(let s of i){n+="/"+s;let o=await this.request("MKCOL",n);if(o.status!==201&&o.status!==405)throw new Error(`WebDAV MkdirAll failed at ${n} with status ${o.status}`)}return}throw new Error(`WebDAV MkdirAll failed with status ${t.status}`)}}async move(e,t,i=!0){let n=this.buildUrl(t),s=await this.request("MOVE",e,{headers:{Destination:n,Overwrite:i?"T":"F"}});if(!(s.status===201||s.status===204)){if(s.status===409){let o=t.substring(0,t.lastIndexOf("/"));if(o)return await this.mkdirAll(o),this.move(e,t,i)}throw new Error(`WebDAV MOVE failed with status ${s.status}`)}}async copy(e,t,i=!0){let n=this.buildUrl(t),s=await this.request("COPY",e,{headers:{Destination:n,Overwrite:i?"T":"F"}});if(!(s.status===201||s.status===204)){if(s.status===409){let o=t.substring(0,t.lastIndexOf("/"));if(o)return await this.mkdirAll(o),this.copy(e,t,i)}throw new Error(`WebDAV COPY failed with status ${s.status}`)}}async remove(e){let t=await this.request("DELETE",e);if(!(t.status===200||t.status===204||t.status===404))throw new Error(`WebDAV DELETE failed with status ${t.status}`)}async put(e,t,i){let n={};i&&(n["Content-Type"]=i);let s=await this.request("PUT",e,{headers:n,body:t});if(!(s.status===200||s.status===201||s.status===204)){if(s.status===409){let o=e.substring(0,e.lastIndexOf("/"));if(o&&(await this.mkdirAll(o),s=await this.request("PUT",e,{headers:n,body:t}),s.status===200||s.status===201||s.status===204))return}throw new Error(`WebDAV PUT failed with status ${s.status}`)}}getLink(e){let t=this.buildUrl(e),i=new URL(t),n=i.pathname+i.search,s=this.getAuthHeaders("GET",n);return{url:t,headers:s}}}});function jz(r){let e={...r||{}};return e.vendor=e.vendor||"other",e.address=(e.address||"").trim(),e.username=(e.username||"").trim(),e.password=e.password||"",e.root_folder_path=(e.root_folder_path||"/").trim(),e.root_folder_path.startsWith("/")||(e.root_folder_path="/"+e.root_folder_path),e.tls_insecure_skip_verify=!!e.tls_insecure_skip_verify,e.order_by=e.order_by||"name",e.order_direction=e.order_direction||"asc",e}var Fp,l8=j(()=>{"use strict";Be();He();c8();Fp=class{client;addition;constructor(e){this.addition=jz(e),this.client=new _p(this.addition)}async init(){await this.client.init()}getRemotePath(e){let t=this.addition.root_folder_path||"/";return Rs(t,e||"/")}fileItemFromWebdav(e,t){let i=this.client.getLink(t);return{name:e.name,size:e.size,is_dir:e.isFolder,modified:e.modified,sign:"",type:X(e.name,e.isFolder),thumb:"",raw_url:e.isFolder?void 0:i.url,raw_url_headers:e.isFolder?void 0:i.headers}}async list(e,t){let i=this.getRemotePath(t),s=(await this.client.readDir(i)).map(o=>{let a=Rs(i,o.name);return this.fileItemFromWebdav(o,a)});return de(s,this.addition.order_by||"name",this.addition.order_direction||"asc")}async get(e,t){let i=this.getRemotePath(t),n=await this.client.stat(i);return this.fileItemFromWebdav(n,i)}async mkdir(e,t){let i=this.getRemotePath(t);await this.client.mkdirAll(i)}async rename(e,t,i){let n=this.getRemotePath(t),s=n.lastIndexOf("/"),o=s>=0?n.substring(0,s):"/",a=Rs(o,i);await this.client.move(n,a,!0)}async move(e,t,i,n,s){let o=this.getRemotePath(n),a=this.getRemotePath(s);for(let c of i){let l=Rs(o,c),d=Rs(a,c);await this.client.move(l,d,!0)}}async copy(e,t,i,n,s){let o=this.getRemotePath(n),a=this.getRemotePath(s);for(let c of i){let l=Rs(o,c),d=Rs(a,c);await this.client.copy(l,d,!0)}}async remove(e,t,i){let n=this.getRemotePath(t);if(i&&i.length>0)for(let s of i){let o=Rs(n,s);await this.client.remove(o)}else await this.client.remove(n)}async put(e,t,i){let n=this.getRemotePath(t);await this.client.put(n,i)}}});var Xi,Pp,d8,u8,KC,GC,Jo,zC,f8,A8,h8,g8,p8,m8,y8,I8,w8,x8,C8,E8,B8,b8,v8,JC,Tp=j(()=>{"use strict";Xi="1001000021",Pp="XFmi9GS2hzk98jGX",d8="10000001",u8="https://panservice.mail.wo.cn",KC="https://tjupload.pan.wo.cn",GC="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36 Edg/114.0.1823.37",Jo="api-user",zC="wohome",f8="wocloud",A8="AppQueryUser",h8="AppRefreshToken",g8="QueryCloudUsageInfo",p8="ClassifyRule",m8="GetZoneInfo",y8="FamilyUserCurrentEncode",I8="QueryAllFiles",w8="GetDownloadUrlV2",x8="CreateDirectory",C8="RenameFileOrDirectory",E8="MoveFile",B8="CopyFile",b8="DeleteFile",v8="upload2C",JC={name_asc:1,name_desc:2,size_asc:3,size_desc:4,time_asc:5,time_desc:6}});var hi,$z,Up,k8=j(()=>{"use strict";hi=Qr(fc(),1);Tp();$z="wNSOYIB1k1DjY5lA",Up=class{key=Pp;iv=$z;accessKey="";constructor(e){e&&this.setAccessToken(e)}setAccessToken(e){e&&e.length>=16?this.accessKey=e.slice(0,16):e&&(this.accessKey=e)}encrypt(e,t){let i=t===Jo?this.key:this.accessKey||this.key,n=hi.default.enc.Utf8.parse(i),s=hi.default.enc.Utf8.parse(this.iv);return hi.default.AES.encrypt(hi.default.enc.Utf8.parse(e),n,{iv:s,mode:hi.default.mode.CBC,padding:hi.default.pad.Pkcs7}).toString()}decrypt(e,t){let i=t===Jo?this.key:this.accessKey||this.key,n=hi.default.enc.Utf8.parse(i),s=hi.default.enc.Utf8.parse(this.iv);return hi.default.AES.decrypt(e,n,{iv:s,mode:hi.default.mode.CBC,padding:hi.default.pad.Pkcs7}).toString(hi.default.enc.Utf8)}userEncrypt(e){return this.encrypt(e,Jo)}userDecrypt(e){return this.decrypt(e,Jo)}woHomeEncrypt(e){return this.encrypt(e,"wohome")}woHomeDecrypt(e){return this.decrypt(e,"wohome")}calHeader(e,t){let i=Date.now(),n=Math.floor(Math.random()*8999)+1e5,s="",o=hi.default.MD5(`${t}${i}${n}${e}${s}`).toString();return{key:t,resTime:i,reqSeq:n,channel:e,sign:o,version:s}}}});function Vz(r){let e="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789",t="";for(let i=0;i<r;i++)t+=e.charAt(Math.floor(Math.random()*e.length));return t}function Yz(r=new Date){let e=c=>String(c).padStart(2,"0"),t=r.getFullYear(),i=e(r.getMonth()+1),n=e(r.getDate()),s=e(r.getHours()),o=e(r.getMinutes()),a=e(r.getSeconds());return`${t}${i}${n}${s}${o}${a}`}var Rp,S8=j(()=>{"use strict";Tp();k8();Rp=class{addition;accessToken;refreshTokenValue;phone="";zoneURL="";classifyRuleData=null;crypto;onTokenUpdate;constructor(e,t){this.addition=e,this.accessToken=e.access_token||"",this.refreshTokenValue=e.refresh_token||"",this.onTokenUpdate=t,this.crypto=new Up(this.accessToken)}getAccessToken(){return this.accessToken}getRefreshToken(){return this.refreshTokenValue}setAccessToken(e){this.accessToken=e,this.crypto.setAccessToken(e)}setRefreshToken(e){this.refreshTokenValue=e}async request(e,t,i,n={},s=!0){let o=this.crypto.calHeader(e,t),a={...n};if(i!=null){let g=JSON.stringify(i),p=this.crypto.encrypt(g,e);a.param=p}let c={Origin:"https://pan.wo.cn",Referer:"https://pan.wo.cn/","User-Agent":GC,"Content-Type":"application/json;charset=UTF-8"};this.accessToken&&(c.Accesstoken=this.accessToken);let l=`${u8}/${e}/dispatcher`,d=await fetch(l,{method:"POST",headers:c,body:JSON.stringify({header:o,body:a})});if(!d.ok)throw new Error(`[WoPan] Request failed with HTTP status: ${d.status} ${d.statusText}`);let u=await d.json().catch(()=>null);if(!u)throw new Error(`[WoPan] Response is not valid JSON from ${t}`);if(u.STATUS!=="200")throw new Error(`[WoPan] Request failed with status: ${u.STATUS}, msg: ${u.MSG||""}`);let f=u.RSP?.RSP_CODE;if(f!=="0000"){if(e!==Jo&&s&&f==="9999")return await this.refreshToken(),this.request(e,t,i,n,!1);throw new Error(`[WoPan] Request failed with rsp_code: ${f}, rsp_desc: ${u.RSP?.RSP_DESC||""}`)}let h=u.RSP?.DATA;if(h==null)return{};if(typeof h=="string"){let g=h.trim();g.startsWith('"')&&g.endsWith('"')&&(g=g.slice(1,-1));try{let p=this.crypto.decrypt(g,e);if(p)return JSON.parse(p)}catch{try{return JSON.parse(g)}catch{return g}}}return h}async requestApiUser(e,t,i={}){return this.request(Jo,e,t,i)}async requestWoHome(e,t,i={}){return this.request(zC,e,t,i)}async appRefreshToken(){return await this.requestApiUser(h8,{refreshToken:this.refreshTokenValue,clientSecret:Pp},{clientId:Xi,secret:!0})}async refreshToken(){let e=await this.appRefreshToken();if(!e.access_token)throw new Error("[WoPan] Failed to refresh token: empty access_token");this.setAccessToken(e.access_token),e.refresh_token&&this.setRefreshToken(e.refresh_token),this.onTokenUpdate?.(this.accessToken,this.refreshTokenValue)}async appQueryUser(){return this.requestApiUser(A8,{accessToken:this.accessToken},{clientId:Xi,secret:!0})}async initPhone(){if(this.phone)return;let e=await this.appQueryUser();e?.userId&&(this.phone=e.userId)}async classifyRule(){return this.requestWoHome(p8,{},{key:!0})}async initClassifyRule(){if(this.classifyRuleData)return;let e=await this.classifyRule().catch(()=>null);e&&(this.classifyRuleData=e)}async getZoneInfo(){return this.requestWoHome(m8,{appId:d8},{key:!0})}async initZoneURL(){if(this.zoneURL)return;let e=await this.getZoneInfo().catch(()=>null);this.zoneURL=e?.url||KC}async familyUserCurrentEncode(){return this.requestWoHome(y8,{clientId:Xi},{secret:!0})}async initData(){!this.accessToken&&this.refreshTokenValue&&await this.refreshToken(),await this.initPhone().catch(()=>{}),await this.initClassifyRule().catch(()=>{}),await this.initZoneURL().catch(()=>{})}getFileType(e){let t=(e.split(".").pop()||"").toLowerCase();return t&&this.classifyRuleData?.fileTypes?.[t]?this.classifyRuleData.fileTypes[t].type:"5"}async queryAllFiles(e,t,i,n,s,o=""){let a={spaceType:e,parentDirectoryId:t,pageNum:i,pageSize:n,sortRule:s,clientId:Xi};return e==="1"&&o&&(a.familyId=o),this.requestWoHome(I8,a,{secret:!0})}async getDownloadUrlV2(e){let t={type:"1",fidList:e,clientId:Xi};return this.requestWoHome(w8,t,{secret:!0})}async createDirectory(e,t,i,n=""){let s={spaceType:e,familyId:n,parentDirectoryId:t,directoryName:i,clientId:Xi};return this.requestWoHome(x8,s,{secret:!0})}async renameFileOrDirectory(e,t,i,n,s=""){let o=t===0?"0":this.getFileType(n),a={spaceType:e,type:t,fileType:o,id:i,name:n,clientId:Xi};e==="1"&&s&&(a.familyId=s),await this.requestWoHome(C8,a,{secret:!0})}async moveFile(e,t,i,n,s,o="",a=""){let c={targetDirId:i,sourceType:n,targetType:s,dirList:e,fileList:t,secret:!1,clientId:Xi};n==="1"&&o&&(c.fromFamilyId=o),s==="1"&&a&&(c.familyId=a),await this.requestWoHome(E8,c,{secret:!0})}async copyFile(e,t,i,n,s,o="",a=""){let c={targetDirId:i,sourceType:n,targetType:s,dirList:e,fileList:t,secret:!1,clientId:Xi};n==="1"&&o&&(c.fromFamilyId=o),s==="1"&&a&&(c.familyId=a),await this.requestWoHome(B8,c,{secret:!0})}async deleteFile(e,t,i){let n={spaceType:e,vipLevel:"0",dirList:t,fileList:i,clientId:Xi};await this.requestWoHome(b8,n,{secret:!0})}async queryCloudUsageInfo(){return await this.initPhone(),this.requestWoHome(g8,{phoneNum:this.phone,clientId:Xi},{secret:!0})}async upload2C(e,t,i,n,s="",o){await this.initZoneURL();let c=`${this.zoneURL||KC}/openapi/client/${v8}`,l=i instanceof Uint8Array?i:i instanceof ArrayBuffer?new Uint8Array(i):new Uint8Array(i),d=l.length,u=Math.max(1,Math.ceil(d/8388608)),f=Yz(),h={spaceType:e,directoryId:n,batchNo:f,fileName:t,fileSize:d,fileType:this.getFileType(t)};e==="1"&&s&&(h.familyId=s);let g=this.crypto.encrypt(JSON.stringify(h),zC),p=`${Date.now()}_${Vz(6)}`,I=0,y="";for(let w=1;w<=u;w++){let C=(w-1)*8388608,b=w===u?d-C:8388608,x=l.subarray(C,C+b),_=new FormData;_.append("uniqueId",p),_.append("accessToken",this.accessToken),_.append("fileName",t),_.append("psToken","undefined"),_.append("fileSize",String(d)),_.append("totalPart",String(u)),_.append("channel",f8),_.append("directoryId",n),_.append("fileInfo",g),_.append("partSize",String(b)),_.append("partIndex",String(w));let R=new Blob([x.buffer.slice(x.byteOffset,x.byteOffset+x.byteLength)],{type:"application/octet-stream"});_.append("file",R,t);let U=await fetch(c,{method:"POST",headers:{Origin:"https://pan.wo.cn",Referer:"https://pan.wo.cn/","User-Agent":GC},body:_});if(!U.ok)throw new Error(`[WoPan] Upload part ${w}/${u} failed with HTTP status: ${U.status}`);let T=await U.json().catch(()=>({}));if(T.code!=="0000")throw new Error(`[WoPan] Upload part ${w}/${u} failed: ${T.code} ${T.msg||""}`);T.data?.fid&&(y=T.data.fid),I+=b,o?.(I,d)}return y}}});function Xz(r){if(!r)return new Date().toISOString();if(r.length>=14){let e=r.slice(0,4),t=r.slice(4,6),i=r.slice(6,8),n=r.slice(8,10),s=r.slice(10,12),o=r.slice(12,14),a=`${e}-${t}-${i}T${n}:${s}:${o}+08:00`,c=new Date(a);if(!isNaN(c.getTime()))return c.toISOString()}try{let e=new Date(r);if(!isNaN(e.getTime()))return e.toISOString()}catch{}return new Date().toISOString()}function D8(r){let e=r.type===0;return{name:r.name,size:r.size||0,is_dir:e,modified:Xz(r.createTime),sign:r.fid||r.id,type:X(r.name,e),thumb:r.thumbUrl||"",raw_url:""}}function $C(r){let e={...r||{}};return e.root_folder_id=e.root_folder_id||"0",e.refresh_token=(e.refresh_token||"").trim(),e.family_id=(e.family_id||"").trim(),e.sort_rule=e.sort_rule||"name_asc",e.access_token=(e.access_token||"").trim(),e}var Np,Q8=j(()=>{"use strict";Be();He();Tp();S8();Np=class{client;addition;defaultFamilyId="";pathFileMapCache=new Map;pathFolderIdCache=new Map;constructor(e,t){this.addition=$C(e),this.client=new Rp(this.addition,(i,n)=>{this.addition.access_token=i,this.addition.refresh_token=n,t?.(i,n)})}getSpaceType(){return this.addition.family_id?"1":"0"}getFamilyId(){return this.addition.family_id||this.defaultFamilyId}getSortRuleNum(){let e=this.addition.sort_rule||"name_asc";return JC[e]||JC.name_asc}getRootId(){return this.addition.root_folder_id||"0"}async init(){await this.client.initData();let e=await this.client.familyUserCurrentEncode().catch(()=>null);e?.defaultHomeId!==void 0&&e.defaultHomeId!==null&&(this.defaultFamilyId=String(e.defaultHomeId))}async list(e,t){let i=await this.resolveFolderId(t),n=await this.fetchFolderFiles(i),s=t.split("/").filter(Boolean).join("/");for(let a of n){let c=s?`${s}/${a.name}`:a.name;this.pathFileMapCache.set(c,a),a.type===0&&this.pathFolderIdCache.set(c,a.id)}let o=n.map(D8);return de(o,this.addition.order_by,this.addition.order_direction)}async get(e,t){let i=t.split("/").filter(Boolean).join("/");if(!i)return{name:"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:this.getRootId(),type:1,raw_url:""};let n=await this.resolveWoPanFile(t);if(!n){let o=await this.resolveFolderId(t).catch(()=>null);if(o){let a=i.split("/");return{name:a[a.length-1]||"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:o,type:1,raw_url:""}}throw new Error(`[WoPan] File not found: ${t}`)}let s=D8(n);if(!s.is_dir&&n.fid){let o=await this.client.getDownloadUrlV2([n.fid]).catch(()=>null);o?.list?.[0]?.downloadUrl&&(s.raw_url=o.list[0].downloadUrl)}return s}async mkdir(e,t){let i=t.split("/").filter(Boolean),n=i.pop()||"\u65B0\u6587\u4EF6\u5939",s=i.join("/"),o=await this.resolveFolderId(s);await this.client.createDirectory(this.getSpaceType(),o,n,this.getFamilyId()),this.clearCache()}async rename(e,t,i){let n=await this.resolveWoPanFile(t);if(!n)throw new Error(`[WoPan] Item not found for rename: ${t}`);await this.client.renameFileOrDirectory(this.getSpaceType(),n.type,n.id,i,this.getFamilyId()),this.clearCache()}async remove(e,t,i){let n=await this.resolveWoPanFile(t);if(!n)throw new Error(`[WoPan] Item not found for deletion: ${t}`);let s=[],o=[];n.type===0?s.push(n.id):o.push(n.id),await this.client.deleteFile(this.getSpaceType(),s,o),this.clearCache()}async move(e,t,i,n,s){let o=await this.resolveWoPanFile(n);if(!o)throw new Error(`[WoPan] Source item not found for move: ${n}`);let a=await this.resolveFolderId(t),c=[],l=[];o.type===0?c.push(o.id):l.push(o.id),await this.client.moveFile(c,l,a,this.getSpaceType(),this.getSpaceType(),this.getFamilyId(),this.getFamilyId()),this.clearCache()}async copy(e,t,i,n,s){let o=await this.resolveWoPanFile(n);if(!o)throw new Error(`[WoPan] Source item not found for copy: ${n}`);let a=await this.resolveFolderId(t),c=[],l=[];o.type===0?c.push(o.id):l.push(o.id),await this.client.copyFile(c,l,a,this.getSpaceType(),this.getSpaceType(),this.getFamilyId(),this.getFamilyId()),this.clearCache()}async put(e,t,i){let n=t.split("/").filter(Boolean),s=n.pop()||"upload",o=n.join("/"),a=await this.resolveFolderId(o);await this.client.upload2C(this.getSpaceType(),s,i,a,this.getFamilyId()),this.clearCache()}clearCache(){this.pathFileMapCache.clear(),this.pathFolderIdCache.clear()}async fetchFolderFiles(e){let t=[],i=0,n=100;for(;;){let o=(await this.client.queryAllFiles(this.getSpaceType(),e,i,n,this.getSortRuleNum(),this.getFamilyId()))?.files||[];if(t.push(...o),o.length<n)break;i++}return t}async resolveFolderId(e){let t=e.split("/").filter(Boolean).join("/");if(!t)return this.getRootId();if(this.pathFolderIdCache.has(t))return this.pathFolderIdCache.get(t);let i=t.split("/"),n=this.getRootId();for(let s=0;s<i.length;s++){let o=i[s],a=(()=>{try{return decodeURIComponent(o)}catch{return o}})(),c=i.slice(0,s+1).join("/");if(this.pathFolderIdCache.has(c)){n=this.pathFolderIdCache.get(c);continue}let l=await this.fetchFolderFiles(n);for(let u of l){let f=i.slice(0,s).concat(u.name).join("/");this.pathFileMapCache.set(f,u),u.type===0&&this.pathFolderIdCache.set(f,u.id)}let d=l.find(u=>u.type===0&&(u.name===o||u.name===a||u.id===o));if(!d)throw new Error(`[WoPan] Directory '${o}' not found in path '${e}'`);n=d.id,this.pathFolderIdCache.set(c,n)}return n}async resolveWoPanFile(e){let t=e.split("/").filter(Boolean).join("/");if(!t)return null;if(this.pathFileMapCache.has(t))return this.pathFileMapCache.get(t);let i=t.split("/"),n=i.pop(),s=(()=>{try{return decodeURIComponent(n)}catch{return n}})(),o=i.join("/"),a=await this.resolveFolderId(o),c=await this.fetchFolderFiles(a);for(let d of c){let u=i.concat(d.name).join("/");this.pathFileMapCache.set(u,d),d.type===0&&this.pathFolderIdCache.set(u,d.id)}return c.find(d=>d.name===n||d.name===s||d.id===n||d.fid===n)||null}}});function Wu(){let r=()=>Array.from({length:16},()=>Math.floor(Math.random()*16).toString(16)).join(""),e={appVersion:"8.0.0",brand:eJ,deviceId:r(),deviceName:_8,imei:r(),imsi:r(),mac:Array.from({length:6},()=>Math.floor(Math.random()*256).toString(16).padStart(2,"0")).join(":"),mno:"46000",model:_8,mpVersion:VC,networkType:"wifi",osVersion:"12",platform:Zz};return JSON.stringify(e)}var xr,VC,Zz,_8,eJ,YC=j(()=>{"use strict";xr="https://mcloud.caiyun.feixin.10086.cn/MoPanProxyFamily",VC="1.1.202",Zz="android",_8="M2102J2SC",eJ="Xiaomi"});import{createCipheriv as tJ,createDecipheriv as rJ,randomBytes as iJ}from"crypto";function WC(r,e){let t=Buffer.alloc(16,0),i=tJ("aes-128-cbc",e.slice(0,16),t);return Buffer.concat([i.update(r),i.final()])}function F8(r,e){let t=Buffer.alloc(16,0),i=rJ("aes-128-cbc",e.slice(0,16),t);return Buffer.concat([i.update(r),i.final()])}function P8(){return iJ(16).toString("hex").slice(0,16)}function qp(r){return r.toString("base64")}function T8(r){return Buffer.from(r,"base64")}function R8(r,e){return qp(Buffer.from(r,"utf-8"))}var U8,N8=j(()=>{"use strict";U8=`-----BEGIN PUBLIC KEY----- MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDN8TyHJhEVoT6t5A/9Q3+2/v3n 3tEqvU7yb8+yx6L0S5h5D+Y5b2E5vVqJ5J8k5n7Y5E5y5w5h5e5q5c5J5b5t5f5j 5r5u5a5s5i5o5n5k5e5y5A== ------END PUBLIC KEY-----`});var kp,a8=V(()=>{"use strict";FC();o8();kp=class{addition;authorization="";deviceInfo;onAuthorizationExpired;constructor(e,t){if(this.addition=e,this.onAuthorizationExpired=t,e.device_info?.trim())try{this.deviceInfo=JSON.parse(e.device_info)}catch{this.deviceInfo=JSON.parse(Mu())}else this.deviceInfo=JSON.parse(Mu())}setAuthorization(e){e.startsWith("Bearer ")||(e=`Bearer ${e}`),this.authorization=e}getAuthorization(){return this.authorization}getDeviceInfo(){return this.deviceInfo}getDeviceInfoJson(){return JSON.stringify(this.deviceInfo)}async request(e,t,i=!0){let n=r8(),s=vp(PC(Buffer.from(JSON.stringify(this.deviceInfo),"utf-8"),Buffer.from(n,"utf-8"))),o=s8(n,n8),a={Authorization:this.authorization,remoteInfo:s,version:this.deviceInfo.mpVersion||_C,"encrypted-key":o,"Content-Type":"application/json"},c;if(t!==null){let f=JSON.stringify(t),h=PC(Buffer.from(f,"utf-8"),Buffer.from(n,"utf-8"));c=vp(h)}let l=await fetch(e,{method:"POST",headers:a,body:c?JSON.stringify(c):void 0});if(!l.ok)throw new Error(`[MoPan] Request failed: ${l.status} ${l.statusText}`);let d=await l.text();d.startsWith('"')&&d.endsWith('"')&&(d=d.slice(1,-1),d=t8(i8(d),Buffer.from(n,"utf-8")).toString("utf-8"));let u=JSON.parse(d);if(u.code===401&&i&&this.onAuthorizationExpired)return await this.onAuthorizationExpired(new Error("Authorization expired: "+u.message)),this.request(e,t,!1);if(u.code!==200)throw new Error(`[MoPan] API error: code=${u.code}, message=${u.message}`);return u.data}async login(e,t){let i={phone:e,password:t};return this.request(wr+"/login",i)}async loginBySms(e){let t={phone:e};await this.request(wr+"/sendSmsCode",t)}async loginBySmsStep2(e,t){let i={phone:e,smsCode:t};return this.request(wr+"/loginBySms",i)}async getUserInfo(){return this.request(wr+"/getUserInfo",null)}async queryFiles(e,t=1,i="filename",n=!1,s){let o={folderId:e,pageNum:t,orderBy:i,descending:n};return s&&(o.cloudId=s),this.request(wr+"/queryFiles",o)}async getFileDownloadUrl(e,t){let i={fileId:e};return t&&(i.cloudId=t),this.request(wr+"/getFileDownloadUrl",i)}async createFolder(e,t,i){let n={name:e,parentId:t};return i&&(n.cloudId=i),this.request(wr+"/createFolder",n)}async renameFolder(e,t,i){let n={folderId:e,newName:t};i&&(n.cloudId=i),await this.request(wr+"/renameFolder",n)}async renameFile(e,t,i){let n={fileId:e,newName:t};i&&(n.cloudId=i),await this.request(wr+"/renameFile",n)}async addBatchTask(e){return this.request(wr+"/addBatchTask",e)}async checkBatchTask(e){return this.request(wr+"/checkBatchTask",e)}async cancelBatchTask(e,t){await this.request(wr+"/cancelBatchTask",{taskId:e,taskType:t})}async deleteToRecycle(e,t){let i={files:e};t&&(i.cloudId=t),await this.request(wr+"/deleteToRecycle",i)}async initMultiUpload(e,t,i,n,s){let o={fileMd5:e,fileName:t,fileSize:i,parentFolderId:n};return s&&(o.cloudId=s),this.request(wr+"/initMultiUpload",o)}async getAllMultiUploadUrls(e,t){let i={uploadFileId:e,partInfos:t};return this.request(wr+"/getAllMultiUploadUrls",i)}async commitMultiUploadFile(e){let t={uploadFileId:e};return this.request(wr+"/commitMultiUploadFile",t)}async usedSpace(){return this.request(wr+"/usedSpace",null)}}});import{createHash as Iz}from"crypto";function d8(r){if(!r)return new Date().toISOString();try{let e=new Date(r);if(!isNaN(e.getTime()))return e.toISOString()}catch{}return new Date().toISOString()}function c8(r){return{name:r.name,size:0,is_dir:!0,modified:d8(r.lastOpTime),sign:r.id,type:1,thumb:"",raw_url:""}}function l8(r){return{name:r.name,size:r.size||0,is_dir:!1,modified:d8(r.lastOpTime),sign:r.id,type:X(r.name,!1),thumb:r.icon?.smallURL||r.icon?.largeURL||"",raw_url:"",hash:r.md5||void 0,hashes:r.md5?{md5:r.md5}:void 0}}function wz(r){let e={...r||{}};return e.phone=(e.phone||"").trim(),e.password=(e.password||"").trim(),e.sms_code=(e.sms_code||"").trim(),e.root_folder_id=e.root_folder_id||"",e.cloud_id=(e.cloud_id||"").trim(),e.order_by=e.order_by||"filename",e.order_direction=e.order_direction||"asc",e.device_info=e.device_info||Mu(),e.upload_thread=e.upload_thread||"3",e}var Sp,u8=V(()=>{"use strict";Be();He();a8();FC();Sp=class{client;addition;userId="";uploadThread=3;constructor(e,t){this.addition=wz(e),this.uploadThread=parseInt(this.addition.upload_thread||"3"),(this.uploadThread<1||this.uploadThread>32)&&(this.uploadThread=3),this.client=new kp(this.addition,async i=>{await this.performLogin(),t&&t(this.client.getDeviceInfoJson(),this.client.getAuthorization())})}async performLogin(){let e=this.addition.sms_code?.trim()||"";if(e==="send")throw await this.client.loginBySms(this.addition.phone),new Error("[MoPan] SMS code sent, please enter the code");let t;e&&e!=="send"?t=await this.client.loginBySmsStep2(this.addition.phone,e):t=await this.client.login(this.addition.phone,this.addition.password),this.client.setAuthorization(t.token);let i=await this.client.getUserInfo();if(this.userId=i.userID,!this.addition.root_folder_id&&t.userCloudStorageRelations){for(let n of t.userCloudStorageRelations)if(n.path==="/\u6587\u4EF6"){this.addition.root_folder_id=n.folderID;break}}}async init(){await this.performLogin()}async list(e,t){let i=await this.resolveFolderId(t),n=[];for(let s=1;;s++){let o=await this.client.queryFiles(i,s,this.addition.order_by||"filename",this.addition.order_direction==="desc",this.addition.cloud_id);if(!o.fileListAO)break;let{folderList:a=[],fileList:c=[]}=o.fileListAO;if(a.length===0&&c.length===0||(n.push(...a.map(c8)),n.push(...c.map(l8)),a.length+c.length<100))break}return de(n,this.addition.order_by,this.addition.order_direction)}async get(e,t){let i=t.split("/").filter(Boolean);if(i.length===0)return{name:"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:this.getRootId(),type:1,thumb:"",raw_url:""};let n=i.slice(0,-1).join("/"),s=i[i.length-1],o=await this.resolveFolderId(n),a=await this.client.queryFiles(o,1,"filename",!1,this.addition.cloud_id);if(a.fileListAO){let c=a.fileListAO.folderList?.find(d=>d.name===s);if(c)return c8(c);let l=a.fileListAO.fileList?.find(d=>d.name===s);if(l){let d=l8(l),u=await this.client.getFileDownloadUrl(l.id,this.addition.cloud_id).catch(()=>null);if(u?.downloadUrl){let f=u.downloadUrl.replace(/&/g,"&");f=f.replace(/^http:/,"https:");let h=await this.followRedirect(f);d.raw_url=h||f}return d}}throw new Error(`[MoPan] File not found: ${t}`)}async followRedirect(e){try{let t=await fetch(e,{redirect:"manual"});return(t.status===302||t.status===301)&&t.headers.get("location")||e}catch{return null}}async mkdir(e,t){let i=t.split("/").filter(Boolean),n=i.pop()||"\u65B0\u6587\u4EF6\u5939",s=i.join("/"),o=await this.resolveFolderId(s);await this.client.createFolder(n,o,this.addition.cloud_id)}async rename(e,t,i){let n=await this.get("",t);n.is_dir?await this.client.renameFolder(n.sign,i,this.addition.cloud_id):await this.client.renameFile(n.sign,i,this.addition.cloud_id)}async move(e,t,i,n,s){let o=await this.resolveFolderId(s);for(let a of i){let c=n==="/"?`/${a}`:`${n}/${a}`,l=await this.get(e,c);await this.performBatchTask(l,o,2)}}async copy(e,t,i,n,s){let o=await this.resolveFolderId(s);for(let a of i){let c=n==="/"?`/${a}`:`${n}/${a}`,l=await this.get(e,c);await this.performBatchTask(l,o,1)}}async performBatchTask(e,t,i){let n={fileID:e.sign,isFolder:e.is_dir,fileName:e.name},s={userOrCloudID:this.userId,source:1,taskType:i,targetSource:1,targetUserOrCloudID:this.userId,targetType:1,targetFolderID:t,taskStatusDetailDTOList:[n]};this.addition.cloud_id&&(s.userOrCloudID=this.addition.cloud_id,s.source=2,s.targetSource=2,s.targetUserOrCloudID=this.addition.cloud_id);let o=await this.client.addBatchTask(s);for(let a=0;a<10;a++){let c=await this.client.checkBatchTask({taskId:o.taskIDList[0],taskType:o.taskType,targetType:1,targetFolderID:o.targetFolderID,targetSource:s.targetSource,targetUserOrCloudID:s.targetUserOrCloudID});if(c.taskStatus===2)throw await this.client.cancelBatchTask(c.taskID,o.taskType),new Error("[MoPan] File name conflict");if(c.taskStatus===4)return;await new Promise(l=>setTimeout(l,1e3))}throw new Error("[MoPan] Task timeout")}async remove(e,t){let i=await this.get("",t);await this.client.deleteToRecycle([{fileID:i.sign,isFolder:i.is_dir,fileName:i.name}],this.addition.cloud_id)}async put(e,t,i){let n=t.split("/").filter(Boolean),s=n.pop()||"\u672A\u547D\u540D\u6587\u4EF6",o=n.join("/"),a=await this.resolveFolderId(o),c=i,l=Iz("md5").update(c).digest("hex"),d=i.length,u=await this.client.initMultiUpload(l,s,d,a,this.addition.cloud_id);if(!u.fileDataExists){let f=await this.client.getAllMultiUploadUrls(u.uploadFileID,u.partInfos);for(let h of f){let g=(h.partNumber-1)*u.partSize,p=h.partNumber===f.length?d:g+u.partSize,I=c.slice(g,p);await fetch(h.uploadUrl,{method:"PUT",body:I,headers:{"Content-Length":String(I.length)}})}}await this.client.commitMultiUploadFile(u.uploadFileID)}getRootId(){return this.addition.root_folder_id||""}async resolveFolderId(e){let t=this.getRootId(),i=e.split("/").filter(Boolean);if(i.length===0)return t;let n=t;for(let s of i){let a=(await this.client.queryFiles(n,1,"filename",!1,this.addition.cloud_id)).fileListAO?.folderList?.find(c=>c.name===s);if(!a)throw new Error(`[MoPan] Folder not found: ${s}`);n=a.id}return n}}});function Hu(r){return typeof r=="string"?xz.encode(r):r}function UC(r){let e=r instanceof Uint8Array?r:new Uint8Array(r),t="";for(let i=0;i<e.length;i++)t+=e[i].toString(16).padStart(2,"0");return t}async function TC(r){let e=await crypto.subtle.digest("SHA-256",Hu(r));return UC(e)}async function Lu(r,e){let t=await crypto.subtle.importKey("raw",Hu(r),{name:"HMAC",hash:"SHA-256"},!1,["sign"]),i=await crypto.subtle.sign("HMAC",t,Hu(e));return new Uint8Array(i)}async function f8(r,e){let t=await Lu(r,e);return UC(t)}async function Cz(r,e){let t=await crypto.subtle.importKey("raw",Hu(r),{name:"HMAC",hash:"SHA-1"},!1,["sign"]),i=await crypto.subtle.sign("HMAC",t,Hu(e));return UC(i)}function Ns(r,e=!0){let t=encodeURIComponent(r).replace(/[!'()*]/g,i=>"%"+i.charCodeAt(0).toString(16).toUpperCase());return e||(t=t.replace(/%2F/g,"/")),t}function A8(r=new Date){let e=d=>d.toString().padStart(2,"0"),t=r.getUTCFullYear(),i=e(r.getUTCMonth()+1),n=e(r.getUTCDate()),s=e(r.getUTCHours()),o=e(r.getUTCMinutes()),a=e(r.getUTCSeconds()),c=`${t}${i}${n}`;return{amzDate:`${c}T${s}${o}${a}Z`,dateStamp:c}}async function h8(r,e,t,i="s3"){let n="AWS4"+r,s=await Lu(n,e),o=await Lu(s,t),a=await Lu(o,i);return await Lu(a,"aws4_request")}async function g8(r){let{method:e,url:t,region:i,accessKeyId:n,secretAccessKey:s,sessionToken:o,headers:a={},body:c=null,service:l="s3",date:d=new Date}=r,u=new URL(t),{amzDate:f,dateStamp:h}=A8(d),g=c!=null?await TC(c):"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",p={...a};p.host=u.host,p["x-amz-date"]=f,p["x-amz-content-sha256"]=g,o&&(p["x-amz-security-token"]=o);let I=Object.keys(p).map(P=>P.toLowerCase()).sort(),y="";for(let P of I){let J=(Object.entries(p).find(([z])=>z.toLowerCase()===P)?.[1]||"").trim().replace(/\s+/g," ");y+=`${P}:${J} -`}let w=I.join(";"),C=u.pathname||"/",b;try{b=decodeURIComponent(C)}catch{b=C}let x=Ns(b,!1),_=[];u.searchParams.forEach((P,N)=>{_.push([N,P])}),_.sort(([P],[N])=>P<N?-1:P>N?1:0);let R=_.map(([P,N])=>`${Ns(P)}=${Ns(N)}`).join("&"),U=[e.toUpperCase(),x,R,y,w,g].join(` -`),T=`${h}/${i}/${l}/aws4_request`,D=await TC(U),B=["AWS4-HMAC-SHA256",f,T,D].join(` -`),Q=await h8(s,h,i,l),v=await f8(Q,B),E=`AWS4-HMAC-SHA256 Credential=${n}/${T}, SignedHeaders=${w}, Signature=${v}`;return p.authorization=E,{headers:p,url:u.toString()}}async function Dp(r){let{method:e="GET",url:t,region:i,accessKeyId:n,secretAccessKey:s,sessionToken:o,expiresInSeconds:a=14400,service:c="s3",date:l=new Date,customQueryParams:d={}}=r,u=new URL(t),{amzDate:f,dateStamp:h}=A8(l),g=`${h}/${i}/${c}/aws4_request`;u.searchParams.set("X-Amz-Algorithm","AWS4-HMAC-SHA256"),u.searchParams.set("X-Amz-Credential",`${n}/${g}`),u.searchParams.set("X-Amz-Date",f),u.searchParams.set("X-Amz-Expires",a.toString()),u.searchParams.set("X-Amz-SignedHeaders","host"),o&&u.searchParams.set("X-Amz-Security-Token",o);for(let[v,E]of Object.entries(d))u.searchParams.set(v,E);let p=u.pathname||"/",I;try{I=decodeURIComponent(p)}catch{I=p}let y=Ns(I,!1),w=[];u.searchParams.forEach((v,E)=>{E.toLowerCase()!=="x-amz-signature"&&w.push([E,v])}),w.sort(([v],[E])=>v<E?-1:v>E?1:0);let C=w.map(([v,E])=>`${Ns(v)}=${Ns(E)}`).join("&"),x=`host:${u.host} +-----END PUBLIC KEY-----`});var Op,q8=j(()=>{"use strict";YC();N8();Op=class{addition;authorization="";deviceInfo;onAuthorizationExpired;constructor(e,t){if(this.addition=e,this.onAuthorizationExpired=t,e.device_info?.trim())try{this.deviceInfo=JSON.parse(e.device_info)}catch{this.deviceInfo=JSON.parse(Wu())}else this.deviceInfo=JSON.parse(Wu())}setAuthorization(e){e.startsWith("Bearer ")||(e=`Bearer ${e}`),this.authorization=e}getAuthorization(){return this.authorization}getDeviceInfo(){return this.deviceInfo}getDeviceInfoJson(){return JSON.stringify(this.deviceInfo)}async request(e,t,i=!0){let n=P8(),s=qp(WC(Buffer.from(JSON.stringify(this.deviceInfo),"utf-8"),Buffer.from(n,"utf-8"))),o=R8(n,U8),a={Authorization:this.authorization,remoteInfo:s,version:this.deviceInfo.mpVersion||VC,"encrypted-key":o,"Content-Type":"application/json"},c;if(t!==null){let f=JSON.stringify(t),h=WC(Buffer.from(f,"utf-8"),Buffer.from(n,"utf-8"));c=qp(h)}let l=await fetch(e,{method:"POST",headers:a,body:c?JSON.stringify(c):void 0});if(!l.ok)throw new Error(`[MoPan] Request failed: ${l.status} ${l.statusText}`);let d=await l.text();d.startsWith('"')&&d.endsWith('"')&&(d=d.slice(1,-1),d=F8(T8(d),Buffer.from(n,"utf-8")).toString("utf-8"));let u=JSON.parse(d);if(u.code===401&&i&&this.onAuthorizationExpired)return await this.onAuthorizationExpired(new Error("Authorization expired: "+u.message)),this.request(e,t,!1);if(u.code!==200)throw new Error(`[MoPan] API error: code=${u.code}, message=${u.message}`);return u.data}async login(e,t){let i={phone:e,password:t};return this.request(xr+"/login",i)}async loginBySms(e){let t={phone:e};await this.request(xr+"/sendSmsCode",t)}async loginBySmsStep2(e,t){let i={phone:e,smsCode:t};return this.request(xr+"/loginBySms",i)}async getUserInfo(){return this.request(xr+"/getUserInfo",null)}async queryFiles(e,t=1,i="filename",n=!1,s){let o={folderId:e,pageNum:t,orderBy:i,descending:n};return s&&(o.cloudId=s),this.request(xr+"/queryFiles",o)}async getFileDownloadUrl(e,t){let i={fileId:e};return t&&(i.cloudId=t),this.request(xr+"/getFileDownloadUrl",i)}async createFolder(e,t,i){let n={name:e,parentId:t};return i&&(n.cloudId=i),this.request(xr+"/createFolder",n)}async renameFolder(e,t,i){let n={folderId:e,newName:t};i&&(n.cloudId=i),await this.request(xr+"/renameFolder",n)}async renameFile(e,t,i){let n={fileId:e,newName:t};i&&(n.cloudId=i),await this.request(xr+"/renameFile",n)}async addBatchTask(e){return this.request(xr+"/addBatchTask",e)}async checkBatchTask(e){return this.request(xr+"/checkBatchTask",e)}async cancelBatchTask(e,t){await this.request(xr+"/cancelBatchTask",{taskId:e,taskType:t})}async deleteToRecycle(e,t){let i={files:e};t&&(i.cloudId=t),await this.request(xr+"/deleteToRecycle",i)}async initMultiUpload(e,t,i,n,s){let o={fileMd5:e,fileName:t,fileSize:i,parentFolderId:n};return s&&(o.cloudId=s),this.request(xr+"/initMultiUpload",o)}async getAllMultiUploadUrls(e,t){let i={uploadFileId:e,partInfos:t};return this.request(xr+"/getAllMultiUploadUrls",i)}async commitMultiUploadFile(e){let t={uploadFileId:e};return this.request(xr+"/commitMultiUploadFile",t)}async usedSpace(){return this.request(xr+"/usedSpace",null)}}});import{createHash as cJ}from"crypto";function L8(r){if(!r)return new Date().toISOString();try{let e=new Date(r);if(!isNaN(e.getTime()))return e.toISOString()}catch{}return new Date().toISOString()}function O8(r){return{name:r.name,size:0,is_dir:!0,modified:L8(r.lastOpTime),sign:r.id,type:1,thumb:"",raw_url:""}}function M8(r){return{name:r.name,size:r.size||0,is_dir:!1,modified:L8(r.lastOpTime),sign:r.id,type:X(r.name,!1),thumb:r.icon?.smallURL||r.icon?.largeURL||"",raw_url:"",hash:r.md5||void 0,hashes:r.md5?{md5:r.md5}:void 0}}function lJ(r){let e={...r||{}};return e.phone=(e.phone||"").trim(),e.password=(e.password||"").trim(),e.sms_code=(e.sms_code||"").trim(),e.root_folder_id=e.root_folder_id||"",e.cloud_id=(e.cloud_id||"").trim(),e.order_by=e.order_by||"filename",e.order_direction=e.order_direction||"asc",e.device_info=e.device_info||Wu(),e.upload_thread=e.upload_thread||"3",e}var Mp,H8=j(()=>{"use strict";Be();He();q8();YC();Mp=class{client;addition;userId="";uploadThread=3;constructor(e,t){this.addition=lJ(e),this.uploadThread=parseInt(this.addition.upload_thread||"3"),(this.uploadThread<1||this.uploadThread>32)&&(this.uploadThread=3),this.client=new Op(this.addition,async i=>{await this.performLogin(),t&&t(this.client.getDeviceInfoJson(),this.client.getAuthorization())})}async performLogin(){let e=this.addition.sms_code?.trim()||"";if(e==="send")throw await this.client.loginBySms(this.addition.phone),new Error("[MoPan] SMS code sent, please enter the code");let t;e&&e!=="send"?t=await this.client.loginBySmsStep2(this.addition.phone,e):t=await this.client.login(this.addition.phone,this.addition.password),this.client.setAuthorization(t.token);let i=await this.client.getUserInfo();if(this.userId=i.userID,!this.addition.root_folder_id&&t.userCloudStorageRelations){for(let n of t.userCloudStorageRelations)if(n.path==="/\u6587\u4EF6"){this.addition.root_folder_id=n.folderID;break}}}async init(){await this.performLogin()}async list(e,t){let i=await this.resolveFolderId(t),n=[];for(let s=1;;s++){let o=await this.client.queryFiles(i,s,this.addition.order_by||"filename",this.addition.order_direction==="desc",this.addition.cloud_id);if(!o.fileListAO)break;let{folderList:a=[],fileList:c=[]}=o.fileListAO;if(a.length===0&&c.length===0||(n.push(...a.map(O8)),n.push(...c.map(M8)),a.length+c.length<100))break}return de(n,this.addition.order_by,this.addition.order_direction)}async get(e,t){let i=t.split("/").filter(Boolean);if(i.length===0)return{name:"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:this.getRootId(),type:1,thumb:"",raw_url:""};let n=i.slice(0,-1).join("/"),s=i[i.length-1],o=await this.resolveFolderId(n),a=await this.client.queryFiles(o,1,"filename",!1,this.addition.cloud_id);if(a.fileListAO){let c=a.fileListAO.folderList?.find(d=>d.name===s);if(c)return O8(c);let l=a.fileListAO.fileList?.find(d=>d.name===s);if(l){let d=M8(l),u=await this.client.getFileDownloadUrl(l.id,this.addition.cloud_id).catch(()=>null);if(u?.downloadUrl){let f=u.downloadUrl.replace(/&/g,"&");f=f.replace(/^http:/,"https:");let h=await this.followRedirect(f);d.raw_url=h||f}return d}}throw new Error(`[MoPan] File not found: ${t}`)}async followRedirect(e){try{let t=await fetch(e,{redirect:"manual"});return(t.status===302||t.status===301)&&t.headers.get("location")||e}catch{return null}}async mkdir(e,t){let i=t.split("/").filter(Boolean),n=i.pop()||"\u65B0\u6587\u4EF6\u5939",s=i.join("/"),o=await this.resolveFolderId(s);await this.client.createFolder(n,o,this.addition.cloud_id)}async rename(e,t,i){let n=await this.get("",t);n.is_dir?await this.client.renameFolder(n.sign,i,this.addition.cloud_id):await this.client.renameFile(n.sign,i,this.addition.cloud_id)}async move(e,t,i,n,s){let o=await this.resolveFolderId(s);for(let a of i){let c=n==="/"?`/${a}`:`${n}/${a}`,l=await this.get(e,c);await this.performBatchTask(l,o,2)}}async copy(e,t,i,n,s){let o=await this.resolveFolderId(s);for(let a of i){let c=n==="/"?`/${a}`:`${n}/${a}`,l=await this.get(e,c);await this.performBatchTask(l,o,1)}}async performBatchTask(e,t,i){let n={fileID:e.sign,isFolder:e.is_dir,fileName:e.name},s={userOrCloudID:this.userId,source:1,taskType:i,targetSource:1,targetUserOrCloudID:this.userId,targetType:1,targetFolderID:t,taskStatusDetailDTOList:[n]};this.addition.cloud_id&&(s.userOrCloudID=this.addition.cloud_id,s.source=2,s.targetSource=2,s.targetUserOrCloudID=this.addition.cloud_id);let o=await this.client.addBatchTask(s);for(let a=0;a<10;a++){let c=await this.client.checkBatchTask({taskId:o.taskIDList[0],taskType:o.taskType,targetType:1,targetFolderID:o.targetFolderID,targetSource:s.targetSource,targetUserOrCloudID:s.targetUserOrCloudID});if(c.taskStatus===2)throw await this.client.cancelBatchTask(c.taskID,o.taskType),new Error("[MoPan] File name conflict");if(c.taskStatus===4)return;await new Promise(l=>setTimeout(l,1e3))}throw new Error("[MoPan] Task timeout")}async remove(e,t){let i=await this.get("",t);await this.client.deleteToRecycle([{fileID:i.sign,isFolder:i.is_dir,fileName:i.name}],this.addition.cloud_id)}async put(e,t,i){let n=t.split("/").filter(Boolean),s=n.pop()||"\u672A\u547D\u540D\u6587\u4EF6",o=n.join("/"),a=await this.resolveFolderId(o),c=i,l=cJ("md5").update(c).digest("hex"),d=i.length,u=await this.client.initMultiUpload(l,s,d,a,this.addition.cloud_id);if(!u.fileDataExists){let f=await this.client.getAllMultiUploadUrls(u.uploadFileID,u.partInfos);for(let h of f){let g=(h.partNumber-1)*u.partSize,p=h.partNumber===f.length?d:g+u.partSize,I=c.slice(g,p);await fetch(h.uploadUrl,{method:"PUT",body:I,headers:{"Content-Length":String(I.length)}})}}await this.client.commitMultiUploadFile(u.uploadFileID)}getRootId(){return this.addition.root_folder_id||""}async resolveFolderId(e){let t=this.getRootId(),i=e.split("/").filter(Boolean);if(i.length===0)return t;let n=t;for(let s of i){let a=(await this.client.queryFiles(n,1,"filename",!1,this.addition.cloud_id)).fileListAO?.folderList?.find(c=>c.name===s);if(!a)throw new Error(`[MoPan] Folder not found: ${s}`);n=a.id}return n}}});function Zu(r){return typeof r=="string"?dJ.encode(r):r}function ZC(r){let e=r instanceof Uint8Array?r:new Uint8Array(r),t="";for(let i=0;i<e.length;i++)t+=e[i].toString(16).padStart(2,"0");return t}async function XC(r){let e=await crypto.subtle.digest("SHA-256",Zu(r));return ZC(e)}async function Xu(r,e){let t=await crypto.subtle.importKey("raw",Zu(r),{name:"HMAC",hash:"SHA-256"},!1,["sign"]),i=await crypto.subtle.sign("HMAC",t,Zu(e));return new Uint8Array(i)}async function K8(r,e){let t=await Xu(r,e);return ZC(t)}async function uJ(r,e){let t=await crypto.subtle.importKey("raw",Zu(r),{name:"HMAC",hash:"SHA-1"},!1,["sign"]),i=await crypto.subtle.sign("HMAC",t,Zu(e));return ZC(i)}function qs(r,e=!0){let t=encodeURIComponent(r).replace(/[!'()*]/g,i=>"%"+i.charCodeAt(0).toString(16).toUpperCase());return e||(t=t.replace(/%2F/g,"/")),t}function G8(r=new Date){let e=d=>d.toString().padStart(2,"0"),t=r.getUTCFullYear(),i=e(r.getUTCMonth()+1),n=e(r.getUTCDate()),s=e(r.getUTCHours()),o=e(r.getUTCMinutes()),a=e(r.getUTCSeconds()),c=`${t}${i}${n}`;return{amzDate:`${c}T${s}${o}${a}Z`,dateStamp:c}}async function z8(r,e,t,i="s3"){let n="AWS4"+r,s=await Xu(n,e),o=await Xu(s,t),a=await Xu(o,i);return await Xu(a,"aws4_request")}async function J8(r){let{method:e,url:t,region:i,accessKeyId:n,secretAccessKey:s,sessionToken:o,headers:a={},body:c=null,service:l="s3",date:d=new Date}=r,u=new URL(t),{amzDate:f,dateStamp:h}=G8(d),g=c!=null?await XC(c):"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",p={...a};p.host=u.host,p["x-amz-date"]=f,p["x-amz-content-sha256"]=g,o&&(p["x-amz-security-token"]=o);let I=Object.keys(p).map(P=>P.toLowerCase()).sort(),y="";for(let P of I){let J=(Object.entries(p).find(([z])=>z.toLowerCase()===P)?.[1]||"").trim().replace(/\s+/g," ");y+=`${P}:${J} +`}let w=I.join(";"),C=u.pathname||"/",b;try{b=decodeURIComponent(C)}catch{b=C}let x=qs(b,!1),_=[];u.searchParams.forEach((P,N)=>{_.push([N,P])}),_.sort(([P],[N])=>P<N?-1:P>N?1:0);let R=_.map(([P,N])=>`${qs(P)}=${qs(N)}`).join("&"),U=[e.toUpperCase(),x,R,y,w,g].join(` +`),T=`${h}/${i}/${l}/aws4_request`,D=await XC(U),B=["AWS4-HMAC-SHA256",f,T,D].join(` +`),Q=await z8(s,h,i,l),v=await K8(Q,B),E=`AWS4-HMAC-SHA256 Credential=${n}/${T}, SignedHeaders=${w}, Signature=${v}`;return p.authorization=E,{headers:p,url:u.toString()}}async function Lp(r){let{method:e="GET",url:t,region:i,accessKeyId:n,secretAccessKey:s,sessionToken:o,expiresInSeconds:a=14400,service:c="s3",date:l=new Date,customQueryParams:d={}}=r,u=new URL(t),{amzDate:f,dateStamp:h}=G8(l),g=`${h}/${i}/${c}/aws4_request`;u.searchParams.set("X-Amz-Algorithm","AWS4-HMAC-SHA256"),u.searchParams.set("X-Amz-Credential",`${n}/${g}`),u.searchParams.set("X-Amz-Date",f),u.searchParams.set("X-Amz-Expires",a.toString()),u.searchParams.set("X-Amz-SignedHeaders","host"),o&&u.searchParams.set("X-Amz-Security-Token",o);for(let[v,E]of Object.entries(d))u.searchParams.set(v,E);let p=u.pathname||"/",I;try{I=decodeURIComponent(p)}catch{I=p}let y=qs(I,!1),w=[];u.searchParams.forEach((v,E)=>{E.toLowerCase()!=="x-amz-signature"&&w.push([E,v])}),w.sort(([v],[E])=>v<E?-1:v>E?1:0);let C=w.map(([v,E])=>`${qs(v)}=${qs(E)}`).join("&"),x=`host:${u.host} `,U=[e.toUpperCase(),y,C,x,"host","UNSIGNED-PAYLOAD"].join(` -`),T=await TC(U),D=["AWS4-HMAC-SHA256",f,g,T].join(` -`),B=await h8(s,h,i,c),Q=await f8(B,D);return u.searchParams.set("X-Amz-Signature",Q),u.toString()}async function p8(r,e){let t="/auth/tmp_token.json",i=JSON.stringify({channel:"OSS_FULL",scopes:["*"]}),n=t+` -`+i,s=await Cz(e,n),o=`TOKEN ${r}:${s}`,a=await fetch("https://api.dogecloud.com"+t,{method:"POST",headers:{"Content-Type":"application/json",Authorization:o},body:i});if(!a.ok)throw new Error(`DogeCloud tmp_token request failed with HTTP ${a.status}`);let c=await a.json();if(c.code!==200||!c.data||!c.data.Credentials)throw new Error(`DogeCloud tmp_token error (${c.code}): ${c.msg||"unknown"}`);return{accessKeyId:c.data.Credentials.accessKeyId,secretAccessKey:c.data.Credentials.secretAccessKey,sessionToken:c.data.Credentials.sessionToken,expiredAt:c.data.ExpiredAt}}var xz,RC=V(()=>{"use strict";xz=new TextEncoder});function nr(...r){return r.map(e=>e.replace(/^\/+|\/+$/g,"")).filter(Boolean).join("/")}function Cn(r,e=!1){let t=(r||"").replace(/^\/+/,"");return t&&e&&!t.endsWith("/")&&(t+="/"),t}function Ku(r){return r&&r.trim()?r.trim():".openlist"}function Jo(r){let e=r.replace(/\/+$/,""),t=e.lastIndexOf("/");return t>=0?e.substring(t+1):e}function NC(r){let e=r.replace(/\/+$/,""),t=e.lastIndexOf("/");return t>=0?e.substring(0,t):""}function m8(r,e){let t=("/"+r+"/").replace(/\/+/g,"/");return("/"+e+"/").replace(/\/+/g,"/").startsWith(t)}function xr(r,e){let t=r.match(new RegExp(`<${e}[^>]*>([\\s\\S]*?)<\\/${e}>`,"i"));return t?t[1].trim():void 0}function Qp(r,e){let t=[],i=new RegExp(`<${e}[^>]*>([\\s\\S]*?)<\\/${e}>`,"gi"),n;for(;(n=i.exec(r))!==null;)t.push(n[1]);return t}function fc(r){return r.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,'"').replace(/'/g,"'")}function qs(r,e){let t=xr(r,"Code")||"Unknown",i=xr(r,"Message")||r||`HTTP ${e}`,n=new Error(`S3 Error [${t}]: ${fc(i)} (status ${e})`);return n.code=t,n.status=e,n}function kz(r,e,t,i=!1){let n=[],s=Ku(t),o=Qp(r,"CommonPrefixes");for(let d of o){let u=xr(d,"Prefix");if(u){let f=fc(u),h=Jo(f);h&&n.push({name:h,size:0,isFolder:!0,modified:new Date().toISOString(),path:nr(e,h)})}}let a=Qp(r,"Contents");for(let d of a){let u=xr(d,"Key");if(!u)continue;let f=fc(u);if(f.endsWith("/"))continue;let h=Jo(f);if(!i&&(h===s||h===t))continue;let g=parseInt(xr(d,"Size")||"0",10),p=xr(d,"LastModified")||new Date().toISOString(),I=xr(d,"ETag")?.replace(/"/g,"");n.push({name:h,size:g,isFolder:!1,modified:p,path:nr(e,h),etag:I})}let c=xr(r,"IsTruncated")==="true",l=xr(r,"NextMarker");return{files:n,isTruncated:c,nextMarker:l,lastEvaluatedKey:n.length>0?n[n.length-1].path:void 0}}function Sz(r,e,t,i=!1){let n=[],s=Ku(t),o=Qp(r,"CommonPrefixes");for(let d of o){let u=xr(d,"Prefix");if(u){let f=fc(u),h=Jo(f);h&&n.push({name:h,size:0,isFolder:!0,modified:new Date().toISOString(),path:nr(e,h)})}}let a=Qp(r,"Contents");for(let d of a){let u=xr(d,"Key");if(!u)continue;let f=fc(u);if(f.endsWith("/"))continue;let h=Jo(f);if(!i&&(h===s||h===t))continue;let g=parseInt(xr(d,"Size")||"0",10),p=xr(d,"LastModified")||new Date().toISOString(),I=xr(d,"ETag")?.replace(/"/g,"");n.push({name:h,size:g,isFolder:!1,modified:p,path:nr(e,h),etag:I})}let c=xr(r,"IsTruncated")==="true",l=xr(r,"NextContinuationToken");return{files:n,isTruncated:c,nextContinuationToken:l,lastEvaluatedKey:n.length>0?n[n.length-1].path:void 0}}function Dz(r){let e=xr(r,"UploadId");if(!e)throw new Error("InitiateMultipartUpload returned empty UploadId: "+r);return fc(e)}function Qz(r){let e=xr(r,"ETag");if(!e)throw new Error("UploadPartCopy returned empty ETag: "+r);return fc(e).replace(/"/g,"")}function _z(r){let e=Math.max(Bz,Math.floor((r-1)/vz)+1);if(e>bz)throw new Error(`Object size ${r} exceeds multipart copy limit`);return e}var Ez,Bz,bz,vz,_p,y8=V(()=>{"use strict";RC();Ez=5*1e3*1e3*1e3,Bz=100*1024*1024,bz=5*1024*1024*1024,vz=1e4;_p=class{addition;bucket;endpoint;region;accessKeyId;secretAccessKey;sessionToken;isPathStyle;userAgent;constructor(e){this.addition=e,this.bucket=(e.bucket||"").trim();let t=(e.endpoint||"").trim();!t.startsWith("http://")&&!t.startsWith("https://")&&(t="https://"+t),this.endpoint=t.replace(/\/+$/,""),this.region=(e.region||"").trim()||"openlist",this.accessKeyId=(e.access_key_id||"").trim(),this.secretAccessKey=(e.secret_access_key||"").trim(),this.sessionToken=e.session_token?e.session_token.trim():void 0,this.userAgent=e.user_agent?e.user_agent.trim():void 0;let i=new URL(this.endpoint),n=/^(\d{1,3}\.){3}\d{1,3}$/.test(i.hostname)||i.hostname==="localhost";this.isPathStyle=!!e.force_path_style||n}updateCredentials(e){this.accessKeyId=e.accessKeyId,this.secretAccessKey=e.secretAccessKey,this.sessionToken=e.sessionToken}getUrl(e="",t){let i=new URL(this.endpoint),n="",s=e?Cn(e,!1):"";if(this.isPathStyle){let c=[i.pathname.replace(/\/+$/,""),this.bucket,s].filter(Boolean).join("/");i.pathname="/"+c.replace(/^\/+/,""),n=i.toString()}else{let a=i.host.split(":"),c=a[1]?`:${a[1]}`:"",l=`${this.bucket}.${a[0]}${c}`;i.host=l;let u=[i.pathname.replace(/\/+$/,""),s].filter(Boolean).join("/");i.pathname="/"+u.replace(/^\/+/,""),n=i.toString()}let o=new URL(n);if(t)for(let[a,c]of Object.entries(t))c!=null&&o.searchParams.set(a,c);return o.toString()}async fetch(e,t,i=null,n={}){let s={...n};this.userAgent&&(s["user-agent"]=this.userAgent);let{headers:o}=await g8({method:e,url:t,region:this.region,accessKeyId:this.accessKeyId,secretAccessKey:this.secretAccessKey,sessionToken:this.sessionToken,headers:s,body:i}),a={method:e,headers:o};return i!=null&&e!=="GET"&&e!=="HEAD"&&(a.body=i),await fetch(t,a)}async listObjects(e,t="v1",i=!1){let n=Cn(e,!0),s=[],o=this.addition.placeholder||"";if(t==="v2"){let a,c;for(;;){let l={"list-type":"2",prefix:n,delimiter:"/"};a&&(l["continuation-token"]=a),c&&(l["start-after"]=c);let d=this.getUrl("",l),u=await this.fetch("GET",d),f=await u.text();if(!u.ok)throw qs(f,u.status);let h=Sz(f,e,o,i);if(s.push(...h.files),!h.isTruncated)break;if(h.nextContinuationToken){a=h.nextContinuationToken;continue}if(h.files.length===0)break;c=h.lastEvaluatedKey}}else{let a;for(;;){let c={prefix:n,delimiter:"/"};a&&(c.marker=a);let l=this.getUrl("",c),d=await this.fetch("GET",l),u=await d.text();if(!d.ok)throw qs(u,d.status);let f=kz(u,e,o,i);if(s.push(...f.files),!f.isTruncated)break;if(f.nextMarker)a=f.nextMarker;else if(f.files.length>0)a=f.files[f.files.length-1].path;else break}}return s}async headObject(e){let t=this.getUrl(e),i=await this.fetch("HEAD",t);if(i.status===404)return null;if(!i.ok){let a=await i.text().catch(()=>"");throw qs(a,i.status)}let n=parseInt(i.headers.get("content-length")||"0",10),s=i.headers.get("last-modified")||new Date().toISOString(),o=(i.headers.get("etag")||"").replace(/"/g,"");return{size:n,modified:s,etag:o}}async listPrefixProbe(e,t="v1"){let n={prefix:Cn(e,!0),"max-keys":"1"};t==="v2"&&(n["list-type"]="2");let s=this.getUrl("",n),o=await this.fetch("GET",s);if(!o.ok)return!1;let a=await o.text();return a.includes("<Contents>")||a.includes("<CommonPrefixes>")}async putObject(e,t,i="application/octet-stream"){let n=this.getUrl(e),s={"content-type":i},o=await this.fetch("PUT",n,t,s);if(!o.ok){let a=await o.text().catch(()=>"");throw qs(a,o.status)}}async deleteObject(e){let t=this.getUrl(e),i=await this.fetch("DELETE",t);if(!i.ok&&i.status!==404&&i.status!==204){let n=await i.text().catch(()=>"");throw qs(n,i.status)}}async copyObject(e,t,i){if(i!==void 0&&i>Ez)return this.copyMultipart(e,t,i);let n=Cn(e,!1),s=Cn(t,!1),o=Ns(`${this.bucket}/${n}`,!1),a=this.getUrl(s),c={"x-amz-copy-source":o},l=await this.fetch("PUT",a,null,c);if(!l.ok){let d=await l.text().catch(()=>"");throw qs(d,l.status)}}async copyMultipart(e,t,i){let n=Cn(e,!1),s=Cn(t,!1),o=Ns(`${this.bucket}/${n}`,!1),a=this.getUrl(s,{uploads:""}),c=await this.fetch("POST",a),l=await c.text();if(!c.ok)throw qs(l,c.status);let d=Dz(l),u=_z(i),f=[];try{let h=0,g=1;for(;h<i;){let w=Math.min(h+u,i)-1,C=this.getUrl(s,{partNumber:g.toString(),uploadId:d}),b={"x-amz-copy-source":o,"x-amz-copy-source-range":`bytes=${h}-${w}`},x=await this.fetch("PUT",C,null,b),_=await x.text();if(!x.ok)throw qs(_,x.status);let R=Qz(_);f.push({partNumber:g,etag:R}),h+=u,g++}let p=this.getUrl(s,{uploadId:d}),I=["<CompleteMultipartUpload>",...f.map(w=>`<Part><PartNumber>${w.partNumber}</PartNumber><ETag>${w.etag}</ETag></Part>`),"</CompleteMultipartUpload>"].join(""),y=await this.fetch("POST",p,I,{"content-type":"application/xml"});if(!y.ok){let w=await y.text().catch(()=>"");throw qs(w,y.status)}}catch(h){let g=this.getUrl(s,{uploadId:d});throw await this.fetch("DELETE",g).catch(()=>{}),h}}async getLink(e,t,i=4,n="",s=!1,o=!1,a=!1){let c=Cn(e,!1),l=Math.max(60,Math.floor(i*3600)),d=this.getUrl(c);if(n)if(s){let h=await Dp({url:d,region:this.region,accessKeyId:this.accessKeyId,secretAccessKey:this.secretAccessKey,sessionToken:this.sessionToken,expiresInSeconds:l}),g=new URL(h),p=n.split("://");if(p.length===2&&(p[0]==="http"||p[0]==="https")?(g.protocol=p[0]+":",g.host=p[1].replace(/\/+$/,"")):g.host=n.replace(/\/+$/,""),o){let I="/"+this.bucket;if(g.pathname.startsWith(I)){let y=g.pathname.substring(I.length);y||(y="/"),g.pathname=y}}return{url:g.toString()}}else{let h=n.split("://"),g="https",p=n;h.length===2&&(h[0]==="http"||h[0]==="https")&&(g=h[0],p=h[1].replace(/\/+$/,""));let I=this.isPathStyle?`/${this.bucket}/${c}`:`/${c}`;return o&&I.startsWith(`/${this.bucket}`)&&(I=I.substring(`/${this.bucket}`.length),I||(I="/")),{url:`${g}://${p}${I.startsWith("/")?"":"/"}${I}`}}let u={};if(a){let h=encodeURIComponent(t);u["response-content-disposition"]=`attachment; filename="${h}"; filename*=UTF-8''${h}`}return{url:await Dp({url:d,region:this.region,accessKeyId:this.accessKeyId,secretAccessKey:this.secretAccessKey,sessionToken:this.sessionToken,expiresInSeconds:l,customQueryParams:Object.keys(u).length?u:void 0})}}async getDirectUploadInfo(e,t,i=4,n=""){let s=nr(e,t),o=Cn(s,!1),a=Math.max(60,Math.floor(i*3600)),c=this.getUrl(o);if(n){let d=new URL(c),u=n.split("://");u.length===2&&(u[0]==="http"||u[0]==="https")?(d.protocol=u[0]+":",d.host=u[1].replace(/\/+$/,"")):d.host=n.replace(/\/+$/,""),c=d.toString()}return{upload_url:await Dp({method:"PUT",url:c,region:this.region,accessKeyId:this.accessKeyId,secretAccessKey:this.secretAccessKey,sessionToken:this.sessionToken,expiresInSeconds:a}),method:"PUT"}}}});function Fz(r){let e={...r||{}};return e.bucket=(e.bucket||"").trim(),e.endpoint=(e.endpoint||"").trim(),e.region=(e.region||"").trim()||"openlist",e.access_key_id=(e.access_key_id||"").trim(),e.secret_access_key=(e.secret_access_key||"").trim(),e.session_token=(e.session_token||"").trim(),e.root_folder_path=(e.root_folder_path||"/").trim(),e.root_folder_path.startsWith("/")||(e.root_folder_path="/"+e.root_folder_path),e.custom_host=(e.custom_host||"").trim(),e.enable_custom_host_presign=!!e.enable_custom_host_presign,e.sign_url_expire=Number(e.sign_url_expire)||4,e.placeholder=(e.placeholder||"").trim(),e.force_path_style=!!e.force_path_style,e.list_object_version=(e.list_object_version||"v1").toLowerCase(),e.remove_bucket=!!e.remove_bucket,e.add_filename_to_disposition=!!e.add_filename_to_disposition,e.enable_direct_upload=!!e.enable_direct_upload,e.direct_upload_host=(e.direct_upload_host||"").trim(),e.user_agent=(e.user_agent||"").trim(),e.order_by=e.order_by||"name",e.order_direction=e.order_direction||"asc",e}var Fp,I8=V(()=>{"use strict";Be();He();y8();RC();Fp=class{client;addition;driverName;dogeExpiredAt;dogeTimer;constructor(e,t="S3"){this.addition=Fz(e),this.driverName=t,this.client=new _p(this.addition)}async init(){this.driverName.toLowerCase().includes("doge")&&await this.refreshDogeToken()}async refreshDogeToken(){try{let e=await p8(this.addition.access_key_id,this.addition.secret_access_key);this.dogeExpiredAt=e.expiredAt,this.client.updateCredentials({accessKeyId:e.accessKeyId,secretAccessKey:e.secretAccessKey,sessionToken:e.sessionToken})}catch(e){throw console.error("[S3Driver] DogeCloud init/refresh session error:",e),e}}async checkDogeToken(){if(this.driverName.toLowerCase().includes("doge")){let e=Math.floor(Date.now()/1e3);(!this.dogeExpiredAt||this.dogeExpiredAt-e<120)&&await this.refreshDogeToken()}}drop(){this.dogeTimer&&(clearInterval(this.dogeTimer),this.dogeTimer=void 0)}getRemotePath(e){let t=this.addition.root_folder_path||"/",i=e||"/";return t!=="/"&&!m8(t,i)&&(i=nr(t,i)),Cn(i,!1)}async fileItemFromS3(e,t){let i,n;if(!e.isFolder){let s=await this.client.getLink(t,e.name,Number(this.addition.sign_url_expire)||4,this.addition.custom_host,this.addition.enable_custom_host_presign,this.addition.remove_bucket,this.addition.add_filename_to_disposition);i=s.url,n=s.headers}return{name:e.name,size:e.size,is_dir:e.isFolder,modified:e.modified,sign:e.etag||t,type:X(e.name,e.isFolder),thumb:"",raw_url:i,raw_url_headers:n}}async list(e,t){await this.checkDogeToken();let i=this.getRemotePath(t),n=this.addition.list_object_version==="v2"?"v2":"v1",s=await this.client.listObjects(i,n,!1),o=[];for(let a of s){let c=nr(i,a.name),l=await this.fileItemFromS3(a,c);o.push(l)}return de(o,this.addition.order_by||"name",this.addition.order_direction||"asc")}async get(e,t){await this.checkDogeToken();let i=this.getRemotePath(t),n=await this.client.headObject(i);if(n){let a=Jo(i);return this.fileItemFromS3({name:a,size:n.size,isFolder:!1,modified:n.modified,path:i,etag:n.etag},i)}let s=this.addition.list_object_version==="v2"?"v2":"v1";if(await this.client.listPrefixProbe(i,s)||i===""||i==="/")return{name:Jo(i),size:0,is_dir:!0,modified:new Date().toISOString(),sign:i,type:1};throw new Error(`Object not found: ${t}`)}async mkdir(e,t){await this.checkDogeToken();let i=this.getRemotePath(t),n=Ku(this.addition.placeholder),s=nr(i,n);await this.client.putObject(s,new Uint8Array(0))}async rename(e,t,i){await this.checkDogeToken();let n=this.getRemotePath(t),s=NC(n),o=nr(s,i),a=await this.client.headObject(n);a?(await this.client.copyObject(n,o,a.size),await this.client.deleteObject(n)):(await this.copyDirRecursive(n,o),await this.removeDirRecursive(n))}async move(e,t,i,n,s){await this.checkDogeToken();let o=this.getRemotePath(n),a=this.getRemotePath(s);for(let c of i){let l=nr(o,c),d=nr(a,c),u=await this.client.headObject(l);u?(await this.client.copyObject(l,d,u.size),await this.client.deleteObject(l)):(await this.copyDirRecursive(l,d),await this.removeDirRecursive(l))}}async copy(e,t,i,n,s){await this.checkDogeToken();let o=this.getRemotePath(n),a=this.getRemotePath(s);for(let c of i){let l=nr(o,c),d=nr(a,c),u=await this.client.headObject(l);u?await this.client.copyObject(l,d,u.size):await this.copyDirRecursive(l,d)}}async copyDirRecursive(e,t){let i=this.addition.list_object_version==="v2"?"v2":"v1",n=await this.client.listObjects(e,i,!0);for(let s of n){let o=nr(e,s.name),a=nr(t,s.name);s.isFolder?await this.copyDirRecursive(o,a):await this.client.copyObject(o,a,s.size)}}async remove(e,t,i){await this.checkDogeToken();let n=this.getRemotePath(t);if(i&&i.length>0)for(let s of i){let o=nr(n,s);await this.client.headObject(o)?await this.client.deleteObject(o):await this.removeDirRecursive(o)}else await this.client.headObject(n)?await this.client.deleteObject(n):await this.removeDirRecursive(n)}async removeDirRecursive(e){let t=this.addition.list_object_version==="v2"?"v2":"v1",i=await this.client.listObjects(e,t,!0);for(let s of i){let o=nr(e,s.name);s.isFolder?await this.removeDirRecursive(o):await this.client.deleteObject(o)}let n=Ku(this.addition.placeholder);await this.client.deleteObject(nr(e,n)).catch(()=>{}),this.addition.placeholder&&await this.client.deleteObject(nr(e,this.addition.placeholder)).catch(()=>{})}async put(e,t,i){await this.checkDogeToken();let n=this.getRemotePath(t);await this.client.putObject(n,i)}async getDirectUploadInfo(e,t){if(!this.addition.enable_direct_upload)throw new Error("Direct upload is not enabled");await this.checkDogeToken();let i=this.getRemotePath(e);return await this.client.getDirectUploadInfo(i,t,Number(this.addition.sign_url_expire)||4,this.addition.direct_upload_host)}async other(e,t,i){if(e==="direct_upload"||e==="get_direct_upload_info"){let n=i?.name||i?.fileName||Jo(t),s=NC(t);return await this.getDirectUploadInfo(s,n)}throw new Error(`Unsupported method ${e}`)}}});function qC(r,e){return r<<e|r>>>32-e}function w8(r){if(typeof Buffer<"u")return Buffer.from(r).toString("base64");let e="";for(let t=0;t<r.length;t++)e+=String.fromCharCode(r[t]);return btoa(e)}var Pp,x8=V(()=>{"use strict";Pp=class r{h0=1732584193;h1=4023233417;h2=2562383102;h3=271733878;h4=3285377520;block=new Uint8Array(64);blockLen=0;totalBytes=0;w=new Int32Array(80);update(e){let t=e.length;this.totalBytes+=t;let i=0;for(;i<t;){let n=64-this.blockLen,s=Math.min(n,t-i);this.block.set(e.subarray(i,i+s),this.blockLen),this.blockLen+=s,i+=s,this.blockLen===64&&(this.processBlock(this.block),this.blockLen=0)}return this}processBlock(e){let t=this.w;for(let c=0;c<16;c++){let l=c*4;t[c]=e[l]<<24|e[l+1]<<16|e[l+2]<<8|e[l+3]}for(let c=16;c<80;c++)t[c]=qC(t[c-3]^t[c-8]^t[c-14]^t[c-16],1);let i=this.h0,n=this.h1,s=this.h2,o=this.h3,a=this.h4;for(let c=0;c<80;c++){let l=0,d=0;c<20?(l=n&s|~n&o,d=1518500249):c<40?(l=n^s^o,d=1859775393):c<60?(l=n&s|n&o|s&o,d=2400959708):(l=n^s^o,d=3395469782);let u=qC(i,5)+l+a+d+t[c]|0;a=o,o=s,s=qC(n,30),n=i,i=u}this.h0=this.h0+i|0,this.h1=this.h1+n|0,this.h2=this.h2+s|0,this.h3=this.h3+o|0,this.h4=this.h4+a|0}getStateHex(){let e=[this.h0,this.h1,this.h2,this.h3,this.h4],t="";for(let i of e){let n=(i&255).toString(16).padStart(2,"0"),s=(i>>>8&255).toString(16).padStart(2,"0"),o=(i>>>16&255).toString(16).padStart(2,"0"),a=(i>>>24&255).toString(16).padStart(2,"0");t+=n+s+o+a}return t.toLowerCase()}digestHex(){let e=new r;e.h0=this.h0,e.h1=this.h1,e.h2=this.h2,e.h3=this.h3,e.h4=this.h4,e.block.set(this.block),e.blockLen=this.blockLen,e.totalBytes=this.totalBytes;let t=e.blockLen<56?56-e.blockLen:120-e.blockLen,i=new Uint8Array(t+8);i[0]=128;let n=e.totalBytes*8,s=Math.floor(e.totalBytes/536870912),o=(n&4294967295)>>>0,a=new DataView(i.buffer,i.byteOffset+t,8);return a.setUint32(0,s,!1),a.setUint32(4,o,!1),e.update(i),[e.h0,e.h1,e.h2,e.h3,e.h4].map(l=>(l>>>0).toString(16).padStart(8,"0")).join("").toLowerCase()}}});function C8(r){let e=new Map;if(!r)return e;let t=r.split(";");for(let i of t){let n=i.trim();if(!n)continue;let s=n.indexOf("=");if(s>0){let o=n.slice(0,s).trim(),a=n.slice(s+1).trim();o&&a&&e.set(o,a)}}return e}function Tp(r){let e=[];for(let[t,i]of r.entries())t&&i&&e.push(`${t}=${i}`);return e.join("; ")}var Up,E8=V(()=>{"use strict";x8();Up=class{cookies=new Map;onCookieUpdate;pendingCookie=null;addition;constructor(e,t){this.addition=e,this.cookies=C8(e.cookies||""),this.onCookieUpdate=t}getCookies(){return this.cookies}getCookieStr(){return Tp(this.cookies)}setCookiesStr(e){this.cookies=C8(e),this.pendingCookie=Tp(this.cookies),this.addition.cookies=this.pendingCookie,this.onCookieUpdate&&this.onCookieUpdate(this.pendingCookie)}updateCookiesFromHeaders(e){let t=e.getSetCookie,i=[];if(typeof t=="function")i=t.call(e);else{let s=e.get("set-cookie");s&&(i=[s])}let n=!1;for(let s of i){let o=s.split(";")[0]||"",a=o.indexOf("=");if(a>0){let c=o.slice(0,a).trim(),l=o.slice(a+1).trim();c&&l&&this.cookies.get(c)!==l&&(this.cookies.set(c,l),n=!0)}}n&&(this.pendingCookie=Tp(this.cookies),this.addition.cookies=this.pendingCookie,this.onCookieUpdate&&this.onCookieUpdate(this.pendingCookie))}consumePendingCookie(){let e=this.pendingCookie;return this.pendingCookie=null,e}loginType(){let e=this.cookies.get("wy_uf")||"",t=this.cookies.get("weiyun_wx_openid")||"",i=this.cookies.get("weiyun_qq_openid")||"";return e==="2"&&t?"weixin_openid":e==="2"&&i?"qq_openid":e==="1"?"weixin":e==="0"||!e?"qq":"unknown"}parseTokenInfo(){switch(this.loginType()){case"weixin":return{token_type:1,openid:this.cookies.get("openid")||"",open_appid:this.cookies.get("wy_appid")||"",access_token:this.cookies.get("access_token")||"",login_key_type:192,login_key_value:this.cookies.get("access_token")||""};case"qq":return{token_type:0,login_key_type:27,login_key_value:this.cookies.get("p_skey")||this.cookies.get("skey")||"",openid:""};case"weixin_openid":case"qq_openid":return{token_type:3,login_key_type:1540};default:return{}}}async refreshCtoken(){let e=await fetch("https://www.weiyun.com/disk",{headers:{"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",Cookie:this.getCookieStr()},redirect:"manual"});if(this.updateCookiesFromHeaders(e.headers),e.status>=300&&e.status<400){let t=e.headers.get("location")||"";if(t&&!t.includes("/disk"))throw new Error("[WeiYun] Login cookie expired or invalid, please login again")}}async weixinRefreshToken(){let e=this.cookies.get("wy_appid")||"",t=this.cookies.get("refresh_token")||"";if(!e||!t)return;let i=`https://api.weixin.qq.com/sns/oauth2/refresh_token?grant_type=refresh_token&appid=${encodeURIComponent(e)}&refresh_token=${encodeURIComponent(t)}`,s=await(await fetch(i)).json().catch(()=>({}));if(s.errcode)throw new Error(`[WeiYun] WeChat refresh token failed: ${s.errmsg}`);s.openid&&this.cookies.set("openid",s.openid),s.access_token&&this.cookies.set("access_token",s.access_token),s.refresh_token&&this.cookies.set("refresh_token",s.refresh_token),this.pendingCookie=Tp(this.cookies),this.addition.cookies=this.pendingCookie,this.onCookieUpdate&&this.onCookieUpdate(this.pendingCookie)}newHeader(e,t){let i=t.openid||t.minico_openid||"";return{seq:Math.floor(Date.now()/1e3),cmd:e,wx_openid:i,qq_openid:t.qq_openid||"",user_flag:t.token_type??0,env_id:t.env_id||"",type:1,appid:30013,version:3,major_version:3,minor_version:3,fix_version:3}}newBody(e,t,i){return{ReqMsg_body:{ext_req_head:{token_info:i,language_info:{language_type:2052}},[`.weiyun.${e}MsgReq_body`]:t}}}newUploadJson(e,t,i){return{req_header:{cmd:t,appid:30013,major_version:3,minor_version:0,fix_version:0,version:3,user_flag:0},req_body:{ReqMsg_body:{[`weiyun.${e}MsgReq_body`]:i}}}}async request(e,t,i,n,s){let o=this.parseTokenInfo(),a=this.cookies.get("wyctoken")||"",c="",l,d={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",Referer:"https://www.weiyun.com",Cookie:this.getCookieStr()};if(e==="preUpload")c=`https://www.weiyun.com/api/v3/ftn_pre_upload?g_tk=${encodeURIComponent(a)}&cmd=${i}`,l=JSON.stringify(this.newUploadJson(t,i,n)),d["Content-Type"]="application/json; charset=UTF-8";else if(e==="upload"){c=`https://upload.weiyun.com/ftnup_v2/weiyun?g_tk=${encodeURIComponent(a)}&cmd=${i}`;let p="----WebKitFormBoundaryIifrOqiswelC8nfe";d["Content-Type"]=`multipart/form-data; boundary=${p}`;let I=JSON.stringify(this.newUploadJson(t,i,n)),y=`--${p}\r +`),T=await XC(U),D=["AWS4-HMAC-SHA256",f,g,T].join(` +`),B=await z8(s,h,i,c),Q=await K8(B,D);return u.searchParams.set("X-Amz-Signature",Q),u.toString()}async function j8(r,e){let t="/auth/tmp_token.json",i=JSON.stringify({channel:"OSS_FULL",scopes:["*"]}),n=t+` +`+i,s=await uJ(e,n),o=`TOKEN ${r}:${s}`,a=await fetch("https://api.dogecloud.com"+t,{method:"POST",headers:{"Content-Type":"application/json",Authorization:o},body:i});if(!a.ok)throw new Error(`DogeCloud tmp_token request failed with HTTP ${a.status}`);let c=await a.json();if(c.code!==200||!c.data||!c.data.Credentials)throw new Error(`DogeCloud tmp_token error (${c.code}): ${c.msg||"unknown"}`);return{accessKeyId:c.data.Credentials.accessKeyId,secretAccessKey:c.data.Credentials.secretAccessKey,sessionToken:c.data.Credentials.sessionToken,expiredAt:c.data.ExpiredAt}}var dJ,eE=j(()=>{"use strict";dJ=new TextEncoder});function nr(...r){return r.map(e=>e.replace(/^\/+|\/+$/g,"")).filter(Boolean).join("/")}function bn(r,e=!1){let t=(r||"").replace(/^\/+/,"");return t&&e&&!t.endsWith("/")&&(t+="/"),t}function ef(r){return r&&r.trim()?r.trim():".openlist"}function jo(r){let e=r.replace(/\/+$/,""),t=e.lastIndexOf("/");return t>=0?e.substring(t+1):e}function tE(r){let e=r.replace(/\/+$/,""),t=e.lastIndexOf("/");return t>=0?e.substring(0,t):""}function $8(r,e){let t=("/"+r+"/").replace(/\/+/g,"/");return("/"+e+"/").replace(/\/+/g,"/").startsWith(t)}function Cr(r,e){let t=r.match(new RegExp(`<${e}[^>]*>([\\s\\S]*?)<\\/${e}>`,"i"));return t?t[1].trim():void 0}function Hp(r,e){let t=[],i=new RegExp(`<${e}[^>]*>([\\s\\S]*?)<\\/${e}>`,"gi"),n;for(;(n=i.exec(r))!==null;)t.push(n[1]);return t}function gc(r){return r.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,'"').replace(/'/g,"'")}function Os(r,e){let t=Cr(r,"Code")||"Unknown",i=Cr(r,"Message")||r||`HTTP ${e}`,n=new Error(`S3 Error [${t}]: ${gc(i)} (status ${e})`);return n.code=t,n.status=e,n}function pJ(r,e,t,i=!1){let n=[],s=ef(t),o=Hp(r,"CommonPrefixes");for(let d of o){let u=Cr(d,"Prefix");if(u){let f=gc(u),h=jo(f);h&&n.push({name:h,size:0,isFolder:!0,modified:new Date().toISOString(),path:nr(e,h)})}}let a=Hp(r,"Contents");for(let d of a){let u=Cr(d,"Key");if(!u)continue;let f=gc(u);if(f.endsWith("/"))continue;let h=jo(f);if(!i&&(h===s||h===t))continue;let g=parseInt(Cr(d,"Size")||"0",10),p=Cr(d,"LastModified")||new Date().toISOString(),I=Cr(d,"ETag")?.replace(/"/g,"");n.push({name:h,size:g,isFolder:!1,modified:p,path:nr(e,h),etag:I})}let c=Cr(r,"IsTruncated")==="true",l=Cr(r,"NextMarker");return{files:n,isTruncated:c,nextMarker:l,lastEvaluatedKey:n.length>0?n[n.length-1].path:void 0}}function mJ(r,e,t,i=!1){let n=[],s=ef(t),o=Hp(r,"CommonPrefixes");for(let d of o){let u=Cr(d,"Prefix");if(u){let f=gc(u),h=jo(f);h&&n.push({name:h,size:0,isFolder:!0,modified:new Date().toISOString(),path:nr(e,h)})}}let a=Hp(r,"Contents");for(let d of a){let u=Cr(d,"Key");if(!u)continue;let f=gc(u);if(f.endsWith("/"))continue;let h=jo(f);if(!i&&(h===s||h===t))continue;let g=parseInt(Cr(d,"Size")||"0",10),p=Cr(d,"LastModified")||new Date().toISOString(),I=Cr(d,"ETag")?.replace(/"/g,"");n.push({name:h,size:g,isFolder:!1,modified:p,path:nr(e,h),etag:I})}let c=Cr(r,"IsTruncated")==="true",l=Cr(r,"NextContinuationToken");return{files:n,isTruncated:c,nextContinuationToken:l,lastEvaluatedKey:n.length>0?n[n.length-1].path:void 0}}function yJ(r){let e=Cr(r,"UploadId");if(!e)throw new Error("InitiateMultipartUpload returned empty UploadId: "+r);return gc(e)}function IJ(r){let e=Cr(r,"ETag");if(!e)throw new Error("UploadPartCopy returned empty ETag: "+r);return gc(e).replace(/"/g,"")}function wJ(r){let e=Math.max(AJ,Math.floor((r-1)/gJ)+1);if(e>hJ)throw new Error(`Object size ${r} exceeds multipart copy limit`);return e}var fJ,AJ,hJ,gJ,Kp,V8=j(()=>{"use strict";eE();fJ=5*1e3*1e3*1e3,AJ=100*1024*1024,hJ=5*1024*1024*1024,gJ=1e4;Kp=class{addition;bucket;endpoint;region;accessKeyId;secretAccessKey;sessionToken;isPathStyle;userAgent;constructor(e){this.addition=e,this.bucket=(e.bucket||"").trim();let t=(e.endpoint||"").trim();!t.startsWith("http://")&&!t.startsWith("https://")&&(t="https://"+t),this.endpoint=t.replace(/\/+$/,""),this.region=(e.region||"").trim()||"openlist",this.accessKeyId=(e.access_key_id||"").trim(),this.secretAccessKey=(e.secret_access_key||"").trim(),this.sessionToken=e.session_token?e.session_token.trim():void 0,this.userAgent=e.user_agent?e.user_agent.trim():void 0;let i=new URL(this.endpoint),n=/^(\d{1,3}\.){3}\d{1,3}$/.test(i.hostname)||i.hostname==="localhost";this.isPathStyle=!!e.force_path_style||n}updateCredentials(e){this.accessKeyId=e.accessKeyId,this.secretAccessKey=e.secretAccessKey,this.sessionToken=e.sessionToken}getUrl(e="",t){let i=new URL(this.endpoint),n="",s=e?bn(e,!1):"";if(this.isPathStyle){let c=[i.pathname.replace(/\/+$/,""),this.bucket,s].filter(Boolean).join("/");i.pathname="/"+c.replace(/^\/+/,""),n=i.toString()}else{let a=i.host.split(":"),c=a[1]?`:${a[1]}`:"",l=`${this.bucket}.${a[0]}${c}`;i.host=l;let u=[i.pathname.replace(/\/+$/,""),s].filter(Boolean).join("/");i.pathname="/"+u.replace(/^\/+/,""),n=i.toString()}let o=new URL(n);if(t)for(let[a,c]of Object.entries(t))c!=null&&o.searchParams.set(a,c);return o.toString()}async fetch(e,t,i=null,n={}){let s={...n};this.userAgent&&(s["user-agent"]=this.userAgent);let{headers:o}=await J8({method:e,url:t,region:this.region,accessKeyId:this.accessKeyId,secretAccessKey:this.secretAccessKey,sessionToken:this.sessionToken,headers:s,body:i}),a={method:e,headers:o};return i!=null&&e!=="GET"&&e!=="HEAD"&&(a.body=i),await fetch(t,a)}async listObjects(e,t="v1",i=!1){let n=bn(e,!0),s=[],o=this.addition.placeholder||"";if(t==="v2"){let a,c;for(;;){let l={"list-type":"2",prefix:n,delimiter:"/"};a&&(l["continuation-token"]=a),c&&(l["start-after"]=c);let d=this.getUrl("",l),u=await this.fetch("GET",d),f=await u.text();if(!u.ok)throw Os(f,u.status);let h=mJ(f,e,o,i);if(s.push(...h.files),!h.isTruncated)break;if(h.nextContinuationToken){a=h.nextContinuationToken;continue}if(h.files.length===0)break;c=h.lastEvaluatedKey}}else{let a;for(;;){let c={prefix:n,delimiter:"/"};a&&(c.marker=a);let l=this.getUrl("",c),d=await this.fetch("GET",l),u=await d.text();if(!d.ok)throw Os(u,d.status);let f=pJ(u,e,o,i);if(s.push(...f.files),!f.isTruncated)break;if(f.nextMarker)a=f.nextMarker;else if(f.files.length>0)a=f.files[f.files.length-1].path;else break}}return s}async headObject(e){let t=this.getUrl(e),i=await this.fetch("HEAD",t);if(i.status===404)return null;if(!i.ok){let a=await i.text().catch(()=>"");throw Os(a,i.status)}let n=parseInt(i.headers.get("content-length")||"0",10),s=i.headers.get("last-modified")||new Date().toISOString(),o=(i.headers.get("etag")||"").replace(/"/g,"");return{size:n,modified:s,etag:o}}async listPrefixProbe(e,t="v1"){let n={prefix:bn(e,!0),"max-keys":"1"};t==="v2"&&(n["list-type"]="2");let s=this.getUrl("",n),o=await this.fetch("GET",s);if(!o.ok)return!1;let a=await o.text();return a.includes("<Contents>")||a.includes("<CommonPrefixes>")}async putObject(e,t,i="application/octet-stream"){let n=this.getUrl(e),s={"content-type":i},o=await this.fetch("PUT",n,t,s);if(!o.ok){let a=await o.text().catch(()=>"");throw Os(a,o.status)}}async deleteObject(e){let t=this.getUrl(e),i=await this.fetch("DELETE",t);if(!i.ok&&i.status!==404&&i.status!==204){let n=await i.text().catch(()=>"");throw Os(n,i.status)}}async copyObject(e,t,i){if(i!==void 0&&i>fJ)return this.copyMultipart(e,t,i);let n=bn(e,!1),s=bn(t,!1),o=qs(`${this.bucket}/${n}`,!1),a=this.getUrl(s),c={"x-amz-copy-source":o},l=await this.fetch("PUT",a,null,c);if(!l.ok){let d=await l.text().catch(()=>"");throw Os(d,l.status)}}async copyMultipart(e,t,i){let n=bn(e,!1),s=bn(t,!1),o=qs(`${this.bucket}/${n}`,!1),a=this.getUrl(s,{uploads:""}),c=await this.fetch("POST",a),l=await c.text();if(!c.ok)throw Os(l,c.status);let d=yJ(l),u=wJ(i),f=[];try{let h=0,g=1;for(;h<i;){let w=Math.min(h+u,i)-1,C=this.getUrl(s,{partNumber:g.toString(),uploadId:d}),b={"x-amz-copy-source":o,"x-amz-copy-source-range":`bytes=${h}-${w}`},x=await this.fetch("PUT",C,null,b),_=await x.text();if(!x.ok)throw Os(_,x.status);let R=IJ(_);f.push({partNumber:g,etag:R}),h+=u,g++}let p=this.getUrl(s,{uploadId:d}),I=["<CompleteMultipartUpload>",...f.map(w=>`<Part><PartNumber>${w.partNumber}</PartNumber><ETag>${w.etag}</ETag></Part>`),"</CompleteMultipartUpload>"].join(""),y=await this.fetch("POST",p,I,{"content-type":"application/xml"});if(!y.ok){let w=await y.text().catch(()=>"");throw Os(w,y.status)}}catch(h){let g=this.getUrl(s,{uploadId:d});throw await this.fetch("DELETE",g).catch(()=>{}),h}}async getLink(e,t,i=4,n="",s=!1,o=!1,a=!1){let c=bn(e,!1),l=Math.max(60,Math.floor(i*3600)),d=this.getUrl(c);if(n)if(s){let h=await Lp({url:d,region:this.region,accessKeyId:this.accessKeyId,secretAccessKey:this.secretAccessKey,sessionToken:this.sessionToken,expiresInSeconds:l}),g=new URL(h),p=n.split("://");if(p.length===2&&(p[0]==="http"||p[0]==="https")?(g.protocol=p[0]+":",g.host=p[1].replace(/\/+$/,"")):g.host=n.replace(/\/+$/,""),o){let I="/"+this.bucket;if(g.pathname.startsWith(I)){let y=g.pathname.substring(I.length);y||(y="/"),g.pathname=y}}return{url:g.toString()}}else{let h=n.split("://"),g="https",p=n;h.length===2&&(h[0]==="http"||h[0]==="https")&&(g=h[0],p=h[1].replace(/\/+$/,""));let I=this.isPathStyle?`/${this.bucket}/${c}`:`/${c}`;return o&&I.startsWith(`/${this.bucket}`)&&(I=I.substring(`/${this.bucket}`.length),I||(I="/")),{url:`${g}://${p}${I.startsWith("/")?"":"/"}${I}`}}let u={};if(a){let h=encodeURIComponent(t);u["response-content-disposition"]=`attachment; filename="${h}"; filename*=UTF-8''${h}`}return{url:await Lp({url:d,region:this.region,accessKeyId:this.accessKeyId,secretAccessKey:this.secretAccessKey,sessionToken:this.sessionToken,expiresInSeconds:l,customQueryParams:Object.keys(u).length?u:void 0})}}async getDirectUploadInfo(e,t,i=4,n=""){let s=nr(e,t),o=bn(s,!1),a=Math.max(60,Math.floor(i*3600)),c=this.getUrl(o);if(n){let d=new URL(c),u=n.split("://");u.length===2&&(u[0]==="http"||u[0]==="https")?(d.protocol=u[0]+":",d.host=u[1].replace(/\/+$/,"")):d.host=n.replace(/\/+$/,""),c=d.toString()}return{upload_url:await Lp({method:"PUT",url:c,region:this.region,accessKeyId:this.accessKeyId,secretAccessKey:this.secretAccessKey,sessionToken:this.sessionToken,expiresInSeconds:a}),method:"PUT"}}}});function xJ(r){let e={...r||{}};return e.bucket=(e.bucket||"").trim(),e.endpoint=(e.endpoint||"").trim(),e.region=(e.region||"").trim()||"openlist",e.access_key_id=(e.access_key_id||"").trim(),e.secret_access_key=(e.secret_access_key||"").trim(),e.session_token=(e.session_token||"").trim(),e.root_folder_path=(e.root_folder_path||"/").trim(),e.root_folder_path.startsWith("/")||(e.root_folder_path="/"+e.root_folder_path),e.custom_host=(e.custom_host||"").trim(),e.enable_custom_host_presign=!!e.enable_custom_host_presign,e.sign_url_expire=Number(e.sign_url_expire)||4,e.placeholder=(e.placeholder||"").trim(),e.force_path_style=!!e.force_path_style,e.list_object_version=(e.list_object_version||"v1").toLowerCase(),e.remove_bucket=!!e.remove_bucket,e.add_filename_to_disposition=!!e.add_filename_to_disposition,e.enable_direct_upload=!!e.enable_direct_upload,e.direct_upload_host=(e.direct_upload_host||"").trim(),e.user_agent=(e.user_agent||"").trim(),e.order_by=e.order_by||"name",e.order_direction=e.order_direction||"asc",e}var Gp,Y8=j(()=>{"use strict";Be();He();V8();eE();Gp=class{client;addition;driverName;dogeExpiredAt;dogeTimer;constructor(e,t="S3"){this.addition=xJ(e),this.driverName=t,this.client=new Kp(this.addition)}async init(){this.driverName.toLowerCase().includes("doge")&&await this.refreshDogeToken()}async refreshDogeToken(){try{let e=await j8(this.addition.access_key_id,this.addition.secret_access_key);this.dogeExpiredAt=e.expiredAt,this.client.updateCredentials({accessKeyId:e.accessKeyId,secretAccessKey:e.secretAccessKey,sessionToken:e.sessionToken})}catch(e){throw console.error("[S3Driver] DogeCloud init/refresh session error:",e),e}}async checkDogeToken(){if(this.driverName.toLowerCase().includes("doge")){let e=Math.floor(Date.now()/1e3);(!this.dogeExpiredAt||this.dogeExpiredAt-e<120)&&await this.refreshDogeToken()}}drop(){this.dogeTimer&&(clearInterval(this.dogeTimer),this.dogeTimer=void 0)}getRemotePath(e){let t=this.addition.root_folder_path||"/",i=e||"/";return t!=="/"&&!$8(t,i)&&(i=nr(t,i)),bn(i,!1)}async fileItemFromS3(e,t){let i,n;if(!e.isFolder){let s=await this.client.getLink(t,e.name,Number(this.addition.sign_url_expire)||4,this.addition.custom_host,this.addition.enable_custom_host_presign,this.addition.remove_bucket,this.addition.add_filename_to_disposition);i=s.url,n=s.headers}return{name:e.name,size:e.size,is_dir:e.isFolder,modified:e.modified,sign:e.etag||t,type:X(e.name,e.isFolder),thumb:"",raw_url:i,raw_url_headers:n}}async list(e,t){await this.checkDogeToken();let i=this.getRemotePath(t),n=this.addition.list_object_version==="v2"?"v2":"v1",s=await this.client.listObjects(i,n,!1),o=[];for(let a of s){let c=nr(i,a.name),l=await this.fileItemFromS3(a,c);o.push(l)}return de(o,this.addition.order_by||"name",this.addition.order_direction||"asc")}async get(e,t){await this.checkDogeToken();let i=this.getRemotePath(t),n=await this.client.headObject(i);if(n){let a=jo(i);return this.fileItemFromS3({name:a,size:n.size,isFolder:!1,modified:n.modified,path:i,etag:n.etag},i)}let s=this.addition.list_object_version==="v2"?"v2":"v1";if(await this.client.listPrefixProbe(i,s)||i===""||i==="/")return{name:jo(i),size:0,is_dir:!0,modified:new Date().toISOString(),sign:i,type:1};throw new Error(`Object not found: ${t}`)}async mkdir(e,t){await this.checkDogeToken();let i=this.getRemotePath(t),n=ef(this.addition.placeholder),s=nr(i,n);await this.client.putObject(s,new Uint8Array(0))}async rename(e,t,i){await this.checkDogeToken();let n=this.getRemotePath(t),s=tE(n),o=nr(s,i),a=await this.client.headObject(n);a?(await this.client.copyObject(n,o,a.size),await this.client.deleteObject(n)):(await this.copyDirRecursive(n,o),await this.removeDirRecursive(n))}async move(e,t,i,n,s){await this.checkDogeToken();let o=this.getRemotePath(n),a=this.getRemotePath(s);for(let c of i){let l=nr(o,c),d=nr(a,c),u=await this.client.headObject(l);u?(await this.client.copyObject(l,d,u.size),await this.client.deleteObject(l)):(await this.copyDirRecursive(l,d),await this.removeDirRecursive(l))}}async copy(e,t,i,n,s){await this.checkDogeToken();let o=this.getRemotePath(n),a=this.getRemotePath(s);for(let c of i){let l=nr(o,c),d=nr(a,c),u=await this.client.headObject(l);u?await this.client.copyObject(l,d,u.size):await this.copyDirRecursive(l,d)}}async copyDirRecursive(e,t){let i=this.addition.list_object_version==="v2"?"v2":"v1",n=await this.client.listObjects(e,i,!0);for(let s of n){let o=nr(e,s.name),a=nr(t,s.name);s.isFolder?await this.copyDirRecursive(o,a):await this.client.copyObject(o,a,s.size)}}async remove(e,t,i){await this.checkDogeToken();let n=this.getRemotePath(t);if(i&&i.length>0)for(let s of i){let o=nr(n,s);await this.client.headObject(o)?await this.client.deleteObject(o):await this.removeDirRecursive(o)}else await this.client.headObject(n)?await this.client.deleteObject(n):await this.removeDirRecursive(n)}async removeDirRecursive(e){let t=this.addition.list_object_version==="v2"?"v2":"v1",i=await this.client.listObjects(e,t,!0);for(let s of i){let o=nr(e,s.name);s.isFolder?await this.removeDirRecursive(o):await this.client.deleteObject(o)}let n=ef(this.addition.placeholder);await this.client.deleteObject(nr(e,n)).catch(()=>{}),this.addition.placeholder&&await this.client.deleteObject(nr(e,this.addition.placeholder)).catch(()=>{})}async put(e,t,i){await this.checkDogeToken();let n=this.getRemotePath(t);await this.client.putObject(n,i)}async getDirectUploadInfo(e,t){if(!this.addition.enable_direct_upload)throw new Error("Direct upload is not enabled");await this.checkDogeToken();let i=this.getRemotePath(e);return await this.client.getDirectUploadInfo(i,t,Number(this.addition.sign_url_expire)||4,this.addition.direct_upload_host)}async other(e,t,i){if(e==="direct_upload"||e==="get_direct_upload_info"){let n=i?.name||i?.fileName||jo(t),s=tE(t);return await this.getDirectUploadInfo(s,n)}throw new Error(`Unsupported method ${e}`)}}});function rE(r,e){return r<<e|r>>>32-e}function W8(r){if(typeof Buffer<"u")return Buffer.from(r).toString("base64");let e="";for(let t=0;t<r.length;t++)e+=String.fromCharCode(r[t]);return btoa(e)}var zp,X8=j(()=>{"use strict";zp=class r{h0=1732584193;h1=4023233417;h2=2562383102;h3=271733878;h4=3285377520;block=new Uint8Array(64);blockLen=0;totalBytes=0;w=new Int32Array(80);update(e){let t=e.length;this.totalBytes+=t;let i=0;for(;i<t;){let n=64-this.blockLen,s=Math.min(n,t-i);this.block.set(e.subarray(i,i+s),this.blockLen),this.blockLen+=s,i+=s,this.blockLen===64&&(this.processBlock(this.block),this.blockLen=0)}return this}processBlock(e){let t=this.w;for(let c=0;c<16;c++){let l=c*4;t[c]=e[l]<<24|e[l+1]<<16|e[l+2]<<8|e[l+3]}for(let c=16;c<80;c++)t[c]=rE(t[c-3]^t[c-8]^t[c-14]^t[c-16],1);let i=this.h0,n=this.h1,s=this.h2,o=this.h3,a=this.h4;for(let c=0;c<80;c++){let l=0,d=0;c<20?(l=n&s|~n&o,d=1518500249):c<40?(l=n^s^o,d=1859775393):c<60?(l=n&s|n&o|s&o,d=2400959708):(l=n^s^o,d=3395469782);let u=rE(i,5)+l+a+d+t[c]|0;a=o,o=s,s=rE(n,30),n=i,i=u}this.h0=this.h0+i|0,this.h1=this.h1+n|0,this.h2=this.h2+s|0,this.h3=this.h3+o|0,this.h4=this.h4+a|0}getStateHex(){let e=[this.h0,this.h1,this.h2,this.h3,this.h4],t="";for(let i of e){let n=(i&255).toString(16).padStart(2,"0"),s=(i>>>8&255).toString(16).padStart(2,"0"),o=(i>>>16&255).toString(16).padStart(2,"0"),a=(i>>>24&255).toString(16).padStart(2,"0");t+=n+s+o+a}return t.toLowerCase()}digestHex(){let e=new r;e.h0=this.h0,e.h1=this.h1,e.h2=this.h2,e.h3=this.h3,e.h4=this.h4,e.block.set(this.block),e.blockLen=this.blockLen,e.totalBytes=this.totalBytes;let t=e.blockLen<56?56-e.blockLen:120-e.blockLen,i=new Uint8Array(t+8);i[0]=128;let n=e.totalBytes*8,s=Math.floor(e.totalBytes/536870912),o=(n&4294967295)>>>0,a=new DataView(i.buffer,i.byteOffset+t,8);return a.setUint32(0,s,!1),a.setUint32(4,o,!1),e.update(i),[e.h0,e.h1,e.h2,e.h3,e.h4].map(l=>(l>>>0).toString(16).padStart(8,"0")).join("").toLowerCase()}}});function Z8(r){let e=new Map;if(!r)return e;let t=r.split(";");for(let i of t){let n=i.trim();if(!n)continue;let s=n.indexOf("=");if(s>0){let o=n.slice(0,s).trim(),a=n.slice(s+1).trim();o&&a&&e.set(o,a)}}return e}function Jp(r){let e=[];for(let[t,i]of r.entries())t&&i&&e.push(`${t}=${i}`);return e.join("; ")}var jp,e4=j(()=>{"use strict";X8();jp=class{cookies=new Map;onCookieUpdate;pendingCookie=null;addition;constructor(e,t){this.addition=e,this.cookies=Z8(e.cookies||""),this.onCookieUpdate=t}getCookies(){return this.cookies}getCookieStr(){return Jp(this.cookies)}setCookiesStr(e){this.cookies=Z8(e),this.pendingCookie=Jp(this.cookies),this.addition.cookies=this.pendingCookie,this.onCookieUpdate&&this.onCookieUpdate(this.pendingCookie)}updateCookiesFromHeaders(e){let t=e.getSetCookie,i=[];if(typeof t=="function")i=t.call(e);else{let s=e.get("set-cookie");s&&(i=[s])}let n=!1;for(let s of i){let o=s.split(";")[0]||"",a=o.indexOf("=");if(a>0){let c=o.slice(0,a).trim(),l=o.slice(a+1).trim();c&&l&&this.cookies.get(c)!==l&&(this.cookies.set(c,l),n=!0)}}n&&(this.pendingCookie=Jp(this.cookies),this.addition.cookies=this.pendingCookie,this.onCookieUpdate&&this.onCookieUpdate(this.pendingCookie))}consumePendingCookie(){let e=this.pendingCookie;return this.pendingCookie=null,e}loginType(){let e=this.cookies.get("wy_uf")||"",t=this.cookies.get("weiyun_wx_openid")||"",i=this.cookies.get("weiyun_qq_openid")||"";return e==="2"&&t?"weixin_openid":e==="2"&&i?"qq_openid":e==="1"?"weixin":e==="0"||!e?"qq":"unknown"}parseTokenInfo(){switch(this.loginType()){case"weixin":return{token_type:1,openid:this.cookies.get("openid")||"",open_appid:this.cookies.get("wy_appid")||"",access_token:this.cookies.get("access_token")||"",login_key_type:192,login_key_value:this.cookies.get("access_token")||""};case"qq":return{token_type:0,login_key_type:27,login_key_value:this.cookies.get("p_skey")||this.cookies.get("skey")||"",openid:""};case"weixin_openid":case"qq_openid":return{token_type:3,login_key_type:1540};default:return{}}}async refreshCtoken(){let e=await fetch("https://www.weiyun.com/disk",{headers:{"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",Cookie:this.getCookieStr()},redirect:"manual"});if(this.updateCookiesFromHeaders(e.headers),e.status>=300&&e.status<400){let t=e.headers.get("location")||"";if(t&&!t.includes("/disk"))throw new Error("[WeiYun] Login cookie expired or invalid, please login again")}}async weixinRefreshToken(){let e=this.cookies.get("wy_appid")||"",t=this.cookies.get("refresh_token")||"";if(!e||!t)return;let i=`https://api.weixin.qq.com/sns/oauth2/refresh_token?grant_type=refresh_token&appid=${encodeURIComponent(e)}&refresh_token=${encodeURIComponent(t)}`,s=await(await fetch(i)).json().catch(()=>({}));if(s.errcode)throw new Error(`[WeiYun] WeChat refresh token failed: ${s.errmsg}`);s.openid&&this.cookies.set("openid",s.openid),s.access_token&&this.cookies.set("access_token",s.access_token),s.refresh_token&&this.cookies.set("refresh_token",s.refresh_token),this.pendingCookie=Jp(this.cookies),this.addition.cookies=this.pendingCookie,this.onCookieUpdate&&this.onCookieUpdate(this.pendingCookie)}newHeader(e,t){let i=t.openid||t.minico_openid||"";return{seq:Math.floor(Date.now()/1e3),cmd:e,wx_openid:i,qq_openid:t.qq_openid||"",user_flag:t.token_type??0,env_id:t.env_id||"",type:1,appid:30013,version:3,major_version:3,minor_version:3,fix_version:3}}newBody(e,t,i){return{ReqMsg_body:{ext_req_head:{token_info:i,language_info:{language_type:2052}},[`.weiyun.${e}MsgReq_body`]:t}}}newUploadJson(e,t,i){return{req_header:{cmd:t,appid:30013,major_version:3,minor_version:0,fix_version:0,version:3,user_flag:0},req_body:{ReqMsg_body:{[`weiyun.${e}MsgReq_body`]:i}}}}async request(e,t,i,n,s){let o=this.parseTokenInfo(),a=this.cookies.get("wyctoken")||"",c="",l,d={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",Referer:"https://www.weiyun.com",Cookie:this.getCookieStr()};if(e==="preUpload")c=`https://www.weiyun.com/api/v3/ftn_pre_upload?g_tk=${encodeURIComponent(a)}&cmd=${i}`,l=JSON.stringify(this.newUploadJson(t,i,n)),d["Content-Type"]="application/json; charset=UTF-8";else if(e==="upload"){c=`https://upload.weiyun.com/ftnup_v2/weiyun?g_tk=${encodeURIComponent(a)}&cmd=${i}`;let p="----WebKitFormBoundaryIifrOqiswelC8nfe";d["Content-Type"]=`multipart/form-data; boundary=${p}`;let I=JSON.stringify(this.newUploadJson(t,i,n)),y=`--${p}\r Content-Disposition: form-data; name="json"\r \r ${I}\r @@ -133,13 +149,13 @@ Content-Type: application/octet-stream\r \r `);let C=`\r --${p}--\r -`,b=new TextEncoder,x=b.encode(y),_=s?b.encode(w):new Uint8Array(0),R=b.encode(C),U=s?new Uint8Array(s):new Uint8Array(0),T=x.length+_.length+U.length+R.length,D=new Uint8Array(T),B=0;D.set(x,B),B+=x.length,_.length>0&&(D.set(_,B),B+=_.length,D.set(U,B),B+=U.length),D.set(R,B),l=D}else c=`https://www.weiyun.com/webapp/json/${e}/${t}?g_tk=${encodeURIComponent(a)}&cmd=${i}`,l=JSON.stringify({req_header:JSON.stringify(this.newHeader(i,o)),req_body:JSON.stringify(this.newBody(t,n,o))}),d["Content-Type"]="application/json; charset=UTF-8";let u=await fetch(c,{method:"POST",headers:d,body:l});if(this.updateCookiesFromHeaders(u.headers),u.status===403)try{await this.refreshCtoken(),(this.loginType()==="weixin"||this.loginType()==="weixin_openid")&&(await this.weixinRefreshToken().catch(()=>{}),await this.refreshCtoken()),d.Cookie=this.getCookieStr(),d.g_tk=this.cookies.get("wyctoken")||"",u=await fetch(c,{method:"POST",headers:d,body:l}),this.updateCookiesFromHeaders(u.headers)}catch(p){throw new Error(`[WeiYun] Request failed (403): ${p.message}`)}if(!u.ok){let p=await u.text().catch(()=>"");throw new Error(`[WeiYun] HTTP ${u.status}: ${p}`)}let f=await u.json().catch(()=>({})),h=f.data||f.result;if(f.ret!==void 0&&f.ret!==0)throw new Error(`[WeiYun] Error (${f.ret}): ${f.msg||"Unknown"}`);if(h?.rsp_header&&h.rsp_header.retcode!==0){let p=h.rsp_header;throw new Error(`[WeiYun] Cmd ${p.cmd} (${p.cmdName||t}) Error (${p.retcode}): ${p.retmsg||"Unknown error"}`)}if(e==="preUpload")return h?.rsp_body?.RspMsg_body?.weiyunPreUploadMsgRsp_body||f;if(e==="upload")return h?.rsp_body?.RspMsg_body?.[`weiyun.${t}MsgRsp_body`]||f;let g=h?.rsp_body?.RspMsg_body;if(typeof g=="string")try{return JSON.parse(g)}catch{return g}return g||h||f}async diskUserInfoGet(){return this.request("weiyunQdiskClient","DiskUserInfoGet",2201,{is_get_upload_flow_flag:!1,is_get_high_speed_flow_info:!1,is_get_weiyun_flag:!1,is_get_space_clean_info:!1,is_get_user_reward_info:!1})}async libDirPathGet(e){return(await this.request("weiyunFileLibClient","LibDirPathGet",26150,{dir_key:e})).items||[]}async diskDirFileList(e,t={}){return this.request("weiyunQdisk","DiskDirList",2208,{dir_key:e,start:t.start||0,count:t.count||500,sort_field:t.sortField??2,reverse_order:t.reverseOrder??!1,get_type:t.getType??0,get_abstract_url:!1,get_dir_detail_info:!1})}async diskFileDownload(e){let i=(await this.request("weiyunQdiskClient","DiskFileBatchDownload",2402,{file_list:[e],download_type:0})).file_list||[];if(!i||i.length===0)throw new Error("[WeiYun] No download link returned");return i[0]}async diskDirCreate(e){return this.request("weiyunQdiskClient","DiskDirCreate",2614,{ppdir_key:e.ppdir_key,pdir_key:e.pdir_key,dir_name:e.dir_name,file_exist_option:2,create_type:1})}async diskFileRename(e,t){await this.request("weiyunQdiskClient","DiskFileRename",2605,{ppdir_key:e.ppdir_key,pdir_key:e.pdir_key,file_id:e.file_id,src_filename:e.filename,filename:t})}async diskDirAttrModify(e,t){await this.request("weiyunQdiskClient","DiskDirAttrModify",2615,{ppdir_key:e.ppdir_key,pdir_key:e.pdir_key,dir_key:e.dir_key,src_dir_name:e.dir_name,dst_dir_name:t})}async diskFileDelete(e){await this.request("weiyunQdiskClient","DiskDirFileBatchDeleteEx",2509,{file_list:[e]})}async diskDirDelete(e){await this.request("weiyunQdiskClient","DiskDirFileBatchDeleteEx",2509,{dir_list:[e]})}async diskFileMove(e,t){await this.request("weiyunQdiskClient","DiskDirFileBatchMove",2618,{src_ppdir_key:e.ppdir_key,src_pdir_key:e.pdir_key,file_list:[e],dst_ppdir_key:t.pdir_key,dst_pdir_key:t.dir_key})}async diskDirMove(e,t){await this.request("weiyunQdiskClient","DiskDirFileBatchMove",2618,{src_ppdir_key:e.ppdir_key,src_pdir_key:e.pdir_key,dir_list:[e],dst_ppdir_key:t.pdir_key,dst_pdir_key:t.dir_key})}async preUpload(e,t,i,n,s,o=4,a=1){let l=0,d=n,u=0;n>0&&(d=n%1048576,d===0&&(d=1048576),u=d%128,u===0&&(u=128),l=n-d);let f=[],h=new Pp;for(let x=0;x<l;x+=1048576){let _=s.subarray(x,x+1048576);h.update(_),f.push({sha:h.getStateHex(),offset:x,size:1048576})}let g=s.subarray(l,l+d-u);h.update(g);let p=h.getStateHex(),I=s.subarray(l+d-u,n);h.update(I);let y=w8(I),w=h.digestHex();f.push({sha:w,offset:l,size:d});let C={common_upload_req:{ppdir_key:e,pdir_key:t,file_size:n,filename:i,file_exist_option:a,use_mutil_channel:!0},upload_scr:0,channel_count:o,block_size:1048576,check_sha:p,check_data:y,block_info_list:f},b=await this.request("preUpload","PreUpload",247120,C);return b.common_upload_rsp&&(b.common_upload_rsp.file_sha=w,b.common_upload_rsp.file_size=n),b}async addUploadChannel(e,t,i){return this.request("upload","AddChannel",247122,{upload_key:i.upload_key,ex:i.ex,orig_channel_count:e,dest_channel_count:t,speed:4303})}async uploadPiece(e,t,i){let n=await this.request("upload","UploadPiece",247121,{upload_key:t.upload_key,ex:t.ex,channel:e},i);return n.channel&&n.channel.len===0&&n.upload_state===1&&(n.channel.len=e.len),n}}});function Tz(r){return Buffer.from(JSON.stringify(r),"utf8").toString("base64")}function Uz(r){try{let e=JSON.parse(Buffer.from(r,"base64").toString("utf8"));if(!e||!e.uploadKey||!e.ex||!Number.isInteger(e.partCount)||e.partCount<1)throw new Error("invalid upload session");return e}catch{throw new Error("[WeiYun] \u4E0A\u4F20\u4F1A\u8BDD\u65E0\u6548\u6216\u5DF2\u635F\u574F")}}function k8(r){if(!r)return new Date().toISOString();try{let e=typeof r=="string"?parseInt(r,10):r;if(!isNaN(e)&&e>0){let i=e<1e10?e*1e3:e;return new Date(i).toISOString()}let t=new Date(r);if(!isNaN(t.getTime()))return t.toISOString()}catch{}return new Date().toISOString()}function b8(r){return{name:r.dir_name,size:0,is_dir:!0,modified:k8(r.dir_mtime||r.dir_ctime),sign:r.dir_key,type:1,thumb:"",raw_url:""}}function v8(r){return{name:r.filename,size:r.file_size||0,is_dir:!1,modified:k8(r.file_mtime||r.file_ctime),sign:r.file_id,type:X(r.filename,!1),thumb:r.ext_info?.thumb_url||"",raw_url:""}}function OC(r){let e={...r||{}};return e.root_folder_id=(e.root_folder_id||"").trim(),e.cookies=(e.cookies||"").trim(),e.order_by=e.order_by||"name",e.order_direction=e.order_direction||"asc",e.upload_thread=e.upload_thread||"4",e}var Pz,B8,Rp,S8=V(()=>{"use strict";Be();He();E8();Pz=45,B8=1024*1024;Rp=class{client;addition;rootFolderId="";rootPdirKey="";uploadThreads=4;pathFolderCache=new Map;budget={used:0,limit:Pz};constructor(e,t){this.addition=OC(e),this.client=new Up(this.addition,t)}async init(){let e=parseInt(this.addition.upload_thread||"4",10);if(this.uploadThreads=Math.min(32,Math.max(4,isNaN(e)?4:e)),this.addition.upload_thread=String(this.uploadThreads),await this.client.refreshCtoken(),this.addition.root_folder_id)this.rootFolderId=this.addition.root_folder_id;else{let n=await this.client.diskUserInfoGet();this.rootFolderId=n.main_dir_key||n.root_dir_key||"",this.addition.root_folder_id=this.rootFolderId}if(!this.rootFolderId)throw new Error("[WeiYun] Failed to obtain root folder ID");let t=await this.client.libDirPathGet(this.rootFolderId);if(!t||t.length===0)throw new Error(`[WeiYun] Invalid root directory ID: ${this.rootFolderId}`);let i=t[t.length-1];this.rootPdirKey=i.pdir_key||"",this.pathFolderCache.set("/",{dirKey:this.rootFolderId,pdirKey:this.rootPdirKey,dirName:i.dir_name||"root"})}consumePendingCookie(){return this.client.consumePendingCookie()}async resolveFolder(e){let t="/"+String(e||"").split("/").filter(Boolean).join("/");if(t==="/"||t===`/${this.rootFolderId}`)return{dirKey:this.rootFolderId,pdirKey:this.rootPdirKey,dirName:"root"};if(this.pathFolderCache.has(t))return this.pathFolderCache.get(t);let i=t.split("/").filter(Boolean),n={dirKey:this.rootFolderId,pdirKey:this.rootPdirKey,dirName:"root"},s="";for(let o=0;o<i.length;o++){let a=i[o],c=(()=>{try{return decodeURIComponent(a)}catch{return a}})();if(s="/"+i.slice(0,o+1).join("/"),this.pathFolderCache.has(s)){n=this.pathFolderCache.get(s);continue}this.budget.used++,this.budget.used>=this.budget.limit&&console.warn(`[WeiYun] Cloudflare Worker subrequest budget limit (${this.budget.limit}) reached.`);let u=((await this.client.diskDirFileList(n.dirKey,{count:500,getType:1})).dir_list||[]).find(f=>f.dir_name===a||f.dir_name===c||f.dir_key===a);if(!u)throw new Error(`[WeiYun] Directory '${a}' not found in folder '${n.dirKey}'`);n={dirKey:u.dir_key,pdirKey:n.dirKey,dirName:u.dir_name},this.pathFolderCache.set(s,n)}return n}async resolveFile(e){let t=String(e||"").split("/").filter(Boolean);if(t.length===0)throw new Error("[WeiYun] \u8DEF\u5F84\u65E0\u6548");let i=t[t.length-1],n=(()=>{try{return decodeURIComponent(i)}catch{return i}})(),s="/"+t.slice(0,t.length-1).join("/"),o=await this.resolveFolder(s);this.budget.used++;let a=await this.client.diskDirFileList(o.dirKey,{count:500,getType:0}),c=(a.file_list||[]).find(d=>d.filename===i||d.filename===n||d.file_id===i);if(c)return{file:c,parent:o,isDir:!1};let l=(a.dir_list||[]).find(d=>d.dir_name===i||d.dir_name===n||d.dir_key===i);if(l)return{folder:l,parent:o,isDir:!0};throw new Error(`[WeiYun] \u6587\u4EF6\u6216\u76EE\u5F55\u672A\u627E\u5230: ${i}`)}async list(e,t){this.budget.used=0;let i=await this.resolveFolder(t),n=[],s=[],o=0;for(;;){if(this.budget.used++,this.budget.used>=this.budget.limit){console.warn(`[WeiYun] Subrequest budget limit (${this.budget.limit}) reached while listing ${t}`);break}let c=this.addition.order_by==="size"?3:this.addition.order_by==="updated_at"?2:1,l=this.addition.order_direction==="desc",d=await this.client.diskDirFileList(i.dirKey,{start:o,count:500,sortField:c,reverseOrder:l,getType:0}),u=d.dir_list||[],f=d.file_list||[];for(let h of u)h.pdir_key=i.dirKey,n.push(h);for(let h of f)h.pdir_key=i.dirKey,s.push(h);if(o=n.length+s.length,d.finish_flag||u.length===0&&f.length===0)break}let a=[...n.map(b8),...s.map(v8)];return de(a,this.addition.order_by==="size"?"size":this.addition.order_by==="updated_at"?"updated_at":"name",this.addition.order_direction)}async get(e,t){this.budget.used=0;let i="/"+String(t||"").split("/").filter(Boolean).join("/");if(i==="/"||i===`/${this.rootFolderId}`)return{name:"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:this.rootFolderId,type:1,raw_url:""};let{file:n,folder:s,parent:o,isDir:a}=await this.resolveFile(t);if(a&&s)return b8(s);if(n){let c=v8(n);try{let l=await this.client.diskFileDownload({ppdir_key:o.pdirKey,pdir_key:o.dirKey,file_id:n.file_id,filename:n.filename});c.raw_url=l.download_url,c.raw_url_headers={Cookie:`${l.cookie_name}=${l.cookie_value}`}}catch(l){console.warn(`[WeiYun] \u83B7\u53D6 ${n.filename} \u4E0B\u8F7D\u94FE\u63A5\u5931\u8D25:`,l.message),c.raw_url_error=l.message}return c}throw new Error(`[WeiYun] \u6761\u76EE\u672A\u627E\u5230: ${t}`)}async mkdir(e,t){this.budget.used=0;let i=String(t||"").split("/").filter(Boolean),n=i.pop()||"\u65B0\u5EFA\u6587\u4EF6\u5939",s="/"+i.join("/"),o=await this.resolveFolder(s);await this.client.diskDirCreate({ppdir_key:o.pdirKey,pdir_key:o.dirKey,dir_name:n})}async rename(e,t,i){this.budget.used=0;let{file:n,folder:s,parent:o,isDir:a}=await this.resolveFile(t);a&&s?await this.client.diskDirAttrModify({ppdir_key:o.pdirKey,pdir_key:o.dirKey,dir_key:s.dir_key,dir_name:s.dir_name},i):n&&await this.client.diskFileRename({ppdir_key:o.pdirKey,pdir_key:o.dirKey,file_id:n.file_id,filename:n.filename},i)}async remove(e,t,i){this.budget.used=0;let{file:n,folder:s,parent:o,isDir:a}=await this.resolveFile(t);a&&s?await this.client.diskDirDelete({ppdir_key:o.pdirKey,pdir_key:o.dirKey,dir_key:s.dir_key,dir_name:s.dir_name}):n&&await this.client.diskFileDelete({ppdir_key:o.pdirKey,pdir_key:o.dirKey,file_id:n.file_id,filename:n.filename})}async move(e,t,i,n,s){this.budget.used=0;let{file:o,folder:a,parent:c,isDir:l}=await this.resolveFile(n),d=await this.resolveFolder(t);l&&a?await this.client.diskDirMove({ppdir_key:c.pdirKey,pdir_key:c.dirKey,dir_key:a.dir_key,dir_name:a.dir_name},{pdir_key:d.pdirKey,dir_key:d.dirKey}):o&&await this.client.diskFileMove({ppdir_key:c.pdirKey,pdir_key:c.dirKey,file_id:o.file_id,filename:o.filename},{pdir_key:d.pdirKey,dir_key:d.dirKey})}async copy(e,t,i,n,s){throw new Error("[WeiYun] \u5FAE\u4E91\u63A5\u53E3\u4E0D\u652F\u6301\u590D\u5236\u64CD\u4F5C (Copy not supported)")}async put(e,t,i){let n=String(t||"").split("/").filter(Boolean),s=n.pop();if(!s)throw new Error("[WeiYun] \u4E0A\u4F20\u8DEF\u5F84\u65E0\u6548");let o="/"+n.join("/"),a=await this.resolveFolder(o),c=await this.client.preUpload(a.pdirKey,a.dirKey,s,i.length,i,4,1);if(c.file_exist)return;let l={upload_key:c.upload_key||"",ex:c.ex||""},d=c.channel_list||[];d.length===0&&(d=[{id:0,offset:0,len:i.length}]);for(let u of d){let f={...u};for(;f.offset<i.length;){let h=Math.min(f.len||B8,i.length-f.offset),g=i.subarray(f.offset,f.offset+h),p=await this.client.uploadPiece(f,l,g);if(p.upload_state===2)break;p.channel?f=p.channel:f.offset+=h}}}async createUploadSession(e,t,i,n,s){this.budget.used=0;let o=await this.resolveFolder(t||"/"),a=B8,c=Math.max(1,Math.ceil(Math.max(0,Number(n)||0)/a)),l=new Uint8Array(0),d=await this.client.preUpload(o.pdirKey,o.dirKey,i,Math.max(0,Number(n)||0),l,4,1);if(d.file_exist)return{reuse:!0,partCount:0,chunkSize:a,session:""};let u={upload_key:d.upload_key||"",ex:d.ex||""},f=d.channel_list||[];if(f.length<this.uploadThreads&&u.upload_key)try{let h=await this.client.addUploadChannel(f.length,this.uploadThreads,u);h.channels&&(f=[...f,...h.channels])}catch{}return{reuse:!1,partCount:c,chunkSize:a,session:Tz({uploadKey:u.upload_key,ex:u.ex,parentDirKey:o.pdirKey,pdirKey:o.dirKey,fileName:i,size:Math.max(0,Number(n)||0),partCount:c,chunkSize:a,channels:f})}}async uploadPart(e,t,i){let n=Uz(e);if(!Number.isInteger(t)||t<1||t>n.partCount)throw new Error(`[WeiYun] \u5206\u7247\u5E8F\u53F7\u65E0\u6548: ${t}`);let s=(t-1)*n.chunkSize,o={id:t-1,offset:s,len:i.length},a={upload_key:n.uploadKey,ex:n.ex};return await this.client.uploadPiece(o,a,i),{partNumber:t}}async completeUploadSession(e,t=[]){}}});async function $z(r,e){let t=`${r}${e}1appkey`,i=await Qo(t),n=$t(i);return`div101.${r}${n}`}async function D8(r,e,t,i,n,s,o){let a=await $z(r,s);return[`ANDROID-${t}/${n}`,"protocolVersion/200","accesstype/",`clientid/${e}`,`clientversion/${n}`,"action_type/","networktype/WIFI","sessionid/",`deviceid/${r}`,"providername/NONE",`devicesign/${a}`,"refresh_token/",`sdkversion/${i}`,`datetime/${Date.now()}`,`usrno/${o}`,`appname/android-${t}`,"session_origin/","grant_type/","appid/","clientip/","devicename/Xiaomi_M2004j7ac","osversion/13","platformversion/10","accessmode/","devicemodel/M2004J7AC"].join(" ")}function MC(r,e){try{let t=new URL(e);return`${r.toUpperCase()}:${t.pathname}`}catch{let t=e.match(/:\/\/[^/]+((\/[^/\s?#]+)*)/);return`${r.toUpperCase()}:${t?t[1]:""}`}}var Rz,Nz,qz,Oz,Mz,Lz,Hz,Kz,Gz,zz,Jz,jz,Np,Q8=V(()=>{"use strict";ni();Rz=["SOP04dGzk0TNO7t7t9ekDbAmx+eq0OI1ovEx","nVBjhYiND4hZ2NCGyV5beamIr7k6ifAsAbl","Ddjpt5B/Cit6EDq2a6cXgxY9lkEIOw4yC1GDF28KrA","VVCogcmSNIVvgV6U+AochorydiSymi68YVNGiz","u5ujk5sM62gpJOsB/1Gu/zsfgfZO","dXYIiBOAHZgzSruaQ2Nhrqc2im","z5jUTBSIpBN9g4qSJGlidNAutX6","KJE2oveZ34du/g1tiimm"],Nz=["C9qPpZLN8ucRTaTiUMWYS9cQvWOE","+r6CQVxjzJV6LCV","F","pFJRC","9WXYIDGrwTCz2OiVlgZa90qpECPD6olt","/750aCr4lm/Sly/c","RB+DT/gZCrbV","","CyLsf7hdkIRxRm215hl","7xHvLi2tOYP0Y92b","ZGTXXxu8E/MIWaEDB+Sm/","1UI3","E7fP5Pfijd+7K+t6Tg/NhuLq0eEUVChpJSkrKxpO","ihtqpG6FMt65+Xk+tWUH2","NhXXU9rg4XXdzo7u5o"],qz=["KHBJ07an7ROXDoK7Db","G6n399rSWkl7WcQmw5rpQInurc1DkLmLJqE","JZD1A3M4x+jBFN62hkr7VDhkkZxb9g3rWqRZqFAAb","fQnw/AmSlbbI91Ik15gpddGgyU7U","/Dv9JdPYSj3sHiWjouR95NTQff","yGx2zuTjbWENZqecNI+edrQgqmZKP","ljrbSzdHLwbqcRn","lSHAsqCkGDGxQqqwrVu","TsWXI81fD1","vk7hBjawK/rOSrSWajtbMk95nfgf3"],Oz="1.53.2",Mz="com.pikcloud.pikpak",Lz="2.0.6.206003",Hz="2.0.0",Kz="mypikpak.com",Gz="8.0.3",zz="undefined",Jz="mypikpak.com",jz="8.0.3";Np=class{addition;clientId;clientSecret;clientVersion;packageName;sdkVersion;algorithms;deviceId;userId="";userAgent="";accessToken="";refreshTokenVal="";captchaTokenVal="";onTokenRefreshed;constructor(e,t){this.addition=e,this.onTokenRefreshed=t,this.refreshTokenVal=e.refresh_token||"",this.captchaTokenVal=e.captcha_token||"";let i=e.platform||"web",n=e.client_id,s=e.client_secret;i==="android"?(this.clientId=n||"",this.clientSecret=s||"",this.clientVersion=Oz,this.packageName=Mz,this.sdkVersion=Lz,this.algorithms=Rz):i==="pc"?(this.clientId=n||"",this.clientSecret=s||"",this.clientVersion=zz,this.packageName=Jz,this.sdkVersion=jz,this.algorithms=qz,this.userAgent="MainWindow Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) PikPak/2.6.11.4955 Chrome/100.0.4896.160 Electron/18.3.15 Safari/537.36"):(this.clientId=n||"",this.clientSecret=s||"",this.clientVersion=Hz,this.packageName=Kz,this.sdkVersion=Gz,this.algorithms=Nz,this.userAgent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"),this.deviceId=e.device_id||$t(`${e.username||""}${e.password||""}`)}getCaptchaSign(){let e=String(Date.now()),t=`${this.clientId}${this.clientVersion}${this.packageName}${this.deviceId}${e}`;for(let i of this.algorithms)t=$t(t+i);return{timestamp:e,sign:`1.${t}`}}async refreshCaptchaToken(e,t){let i={action:e,captcha_token:this.captchaTokenVal,client_id:this.clientId,device_id:this.deviceId,meta:t,redirect_uri:"xlaccsdk01://xbase.cloud/callback?state=harbor"},s=await(await fetch(`https://user.mypikpak.net/v1/shield/captcha/init?client_id=${encodeURIComponent(this.clientId)}`,{method:"POST",headers:{"Content-Type":"application/json","User-Agent":this.userAgent||"OpenList","X-Device-ID":this.deviceId},body:JSON.stringify(i)})).json();if(s.error_code&&s.error_code!==0)throw new Error(`Captcha error ${s.error_code}: ${s.error_description||s.error}`);if(s.url)throw new Error(`PikPak requires captcha verification: ${s.url}`);return s.captcha_token&&(this.captchaTokenVal=s.captcha_token),this.captchaTokenVal}async refreshCaptchaTokenAtLogin(e,t){let{timestamp:i,sign:n}=this.getCaptchaSign(),s={client_version:this.clientVersion,package_name:this.packageName,user_id:t,timestamp:i,captcha_sign:n};return this.refreshCaptchaToken(e,s)}async refreshCaptchaTokenInLogin(e,t){let i={};return/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/.test(t)?i.email=t:t.length>=11&&t.length<=18?i.phone_number=t:i.username=t,this.refreshCaptchaToken(e,i)}async login(){if(!this.addition.username||!this.addition.password)throw new Error("PikPak username or password is required when refresh_token is not provided");let e="https://user.mypikpak.net/v1/auth/signin";this.captchaTokenVal||await this.refreshCaptchaTokenInLogin(MC("POST",e),this.addition.username);let i=await(await fetch(`${e}?client_id=${encodeURIComponent(this.clientId)}`,{method:"POST",headers:{"Content-Type":"application/json","User-Agent":this.userAgent||"OpenList","X-Device-ID":this.deviceId,"X-Captcha-Token":this.captchaTokenVal},body:JSON.stringify({captcha_token:this.captchaTokenVal,client_id:this.clientId,client_secret:this.clientSecret,username:this.addition.username,password:this.addition.password})})).json();if(i.error_code&&i.error_code!==0)throw new Error(`PikPak login failed (${i.error_code}): ${i.error_description||i.error}`);this.accessToken=i.access_token,this.refreshTokenVal=i.refresh_token,this.userId=i.sub||"",this.onTokenRefreshed&&await this.onTokenRefreshed({accessToken:this.accessToken,refreshToken:this.refreshTokenVal,captchaToken:this.captchaTokenVal})}async refreshToken(){if(!this.refreshTokenVal){await this.login();return}let i=await(await fetch(`https://user.mypikpak.net/v1/auth/token?client_id=${encodeURIComponent(this.clientId)}`,{method:"POST",headers:{"Content-Type":"application/json","User-Agent":this.userAgent||"OpenList","X-Device-ID":this.deviceId},body:JSON.stringify({client_id:this.clientId,client_secret:this.clientSecret,grant_type:"refresh_token",refresh_token:this.refreshTokenVal})})).json();if(i.error_code&&i.error_code!==0){if(i.error_code===4126&&this.addition.username){await this.login();return}throw new Error(`PikPak token refresh failed (${i.error_code}): ${i.error_description||i.error}`)}this.accessToken=i.access_token,this.refreshTokenVal=i.refresh_token,this.userId=i.sub||"",this.onTokenRefreshed&&await this.onTokenRefreshed({accessToken:this.accessToken,refreshToken:this.refreshTokenVal,captchaToken:this.captchaTokenVal})}async init(){this.addition.platform==="android"&&(this.userAgent=await D8(this.deviceId,this.clientId,this.packageName,this.sdkVersion,this.clientVersion,this.packageName,this.userId)),this.refreshTokenVal?await this.refreshToken():await this.login();try{await this.refreshCaptchaTokenAtLogin(MC("GET","https://api-drive.mypikpak.net/drive/v1/files"),this.userId)}catch(e){console.warn("[PikPak] post-login captcha init warning:",e)}this.addition.platform==="android"&&(this.userAgent=await D8(this.deviceId,this.clientId,this.packageName,this.sdkVersion,this.clientVersion,this.packageName,this.userId))}async request(e,t={}){let{method:i="GET",params:n,body:s,retryCount:o=0}=t,a=e;if(n&&Object.keys(n).length>0){let f=new URLSearchParams(n).toString();a+=(e.includes("?")?"&":"?")+f}let c={"User-Agent":this.userAgent||"OpenList","X-Device-ID":this.deviceId};this.captchaTokenVal&&(c["X-Captcha-Token"]=this.captchaTokenVal),this.accessToken&&(c.Authorization=`Bearer ${this.accessToken}`),s&&typeof s=="object"&&!(s instanceof Uint8Array)&&(c["Content-Type"]="application/json");let l=await fetch(a,{method:i,headers:c,body:s&&typeof s=="object"&&!(s instanceof Uint8Array)?JSON.stringify(s):s}),d=await l.text(),u={};try{u=JSON.parse(d)}catch{u=d}if(u&&typeof u=="object"&&u.error_code){let f=u.error_code;if((f===4122||f===4121||f===16)&&o<2)return await this.refreshToken(),this.request(e,{...t,retryCount:o+1});if(f===9&&o<2)return await this.refreshCaptchaTokenAtLogin(MC(i,e),this.userId),this.request(e,{...t,retryCount:o+1});throw new Error(`PikPak API Error (${f}): ${u.error_description||u.error||JSON.stringify(u)}`)}if(!l.ok)throw new Error(`PikPak request failed with status ${l.status}: ${d}`);return u}}});var qp,_8=V(()=>{"use strict";Be();He();ni();Q8();qp=class{addition;client;rootId="";idCache=new Map;constructor(e,t){this.addition=e,this.rootId=e.root_folder_id||"",this.client=new Np(e,t)}async init(){await this.client.init()}cleanPath(e){let t="/"+(e||"").split("/").filter(Boolean).join("/");return t==="/"?"":t}async resolveParentId(e){let t=this.cleanPath(e);if(!t)return this.rootId;if(this.idCache.has(t))return this.idCache.get(t);let i=t.split("/").filter(Boolean),n=this.rootId,s="";for(let o of i){if(s+="/"+o,this.idCache.has(s)){n=this.idCache.get(s);continue}let c=(await this.getFiles(n)).find(l=>l.name===o);if(!c)throw new Error(`Path not found: ${s}`);n=c.id,this.idCache.set(s,n)}return n}async getFiles(e){let t=[],i="";for(;;){let n={parent_id:e,thumbnail_size:"SIZE_LARGE",with_audit:"true",limit:"100",filters:JSON.stringify({phase:{eq:"PHASE_TYPE_COMPLETE"},trashed:{eq:!1}})};i&&(n.page_token=i);let s=await this.client.request("https://api-drive.mypikpak.net/drive/v1/files",{method:"GET",params:n});if(s.files&&s.files.length>0&&t.push(...s.files),!s.next_page_token||s.next_page_token===i)break;i=s.next_page_token}return t}async list(e,t){let i=await this.resolveParentId(t),n=await this.getFiles(i),s=this.cleanPath(t),o=n.map(a=>{let c=a.kind==="drive#folder",l=s?`${s}/${a.name}`:`/${a.name}`;this.idCache.set(l,a.id);let d=a.web_content_link||"";return!this.addition.disable_media_link&&a.medias&&a.medias.length>0&&a.medias[0].link?.url&&(d=a.medias[0].link.url),{name:a.name,size:parseInt(a.size||"0",10)||0,is_dir:c,created:a.created_time,modified:a.modified_time||new Date().toISOString(),sign:a.id,type:X(a.name,c),thumb:a.thumbnail_link,raw_url:d}});return de(o,this.addition.order_by,this.addition.order_direction)}async get(e,t){let i=this.cleanPath(t),n=i.split("/").pop()||"root";if(!i)return{name:"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:this.rootId,type:1,raw_url:""};let s=await this.resolveParentId(t),o={_magic:"2021",usage:this.addition.disable_media_link?"FETCH":"CACHE",thumbnail_size:"SIZE_LARGE"},a=await this.client.request(`https://api-drive.mypikpak.net/drive/v1/files/${encodeURIComponent(s)}`,{method:"GET",params:o}),c=a.kind==="drive#folder",l=a.web_content_link||"";return!this.addition.disable_media_link&&a.medias&&a.medias.length>0&&a.medias[0].link?.url&&(l=a.medias[0].link.url),{name:a.name||n,size:parseInt(a.size||"0",10)||0,is_dir:c,created:a.created_time,modified:a.modified_time||new Date().toISOString(),sign:a.id,type:X(a.name||n,c),thumb:a.thumbnail_link,raw_url:l}}async mkdir(e,t){let i=this.cleanPath(t),n=i.split("/").slice(0,-1).join("/"),s=i.split("/").pop()||"",o=await this.resolveParentId(n),a=await this.client.request("https://api-drive.mypikpak.net/drive/v1/files",{method:"POST",body:{kind:"drive#folder",parent_id:o,name:s}});a?.file?.id&&this.idCache.set(i,a.file.id)}async rename(e,t,i){let n=await this.resolveParentId(t);await this.client.request(`https://api-drive.mypikpak.net/drive/v1/files/${encodeURIComponent(n)}`,{method:"PATCH",body:{name:i}});let s=this.cleanPath(t);this.idCache.delete(s)}async remove(e,t,i){let n=await this.resolveParentId(t),s=await this.getFiles(n),o=[];for(let c of i){let l=s.find(d=>d.name===c);l&&o.push(l.id)}if(o.length===0)return;await this.client.request("https://api-drive.mypikpak.net/drive/v1/files:batchTrash",{method:"POST",body:{ids:o}});let a=this.cleanPath(t);for(let c of i)this.idCache.delete(a?`${a}/${c}`:`/${c}`)}async move(e,t,i,n,s){let o=await this.resolveParentId(n),a=await this.resolveParentId(s),c=await this.getFiles(o),l=[];for(let u of i){let f=c.find(h=>h.name===u);f&&l.push(f.id)}if(l.length===0)return;await this.client.request("https://api-drive.mypikpak.net/drive/v1/files:batchMove",{method:"POST",body:{ids:l,to:{parent_id:a}}});let d=this.cleanPath(n);for(let u of i)this.idCache.delete(d?`${d}/${u}`:`/${u}`)}async copy(e,t,i,n,s){let o=await this.resolveParentId(n),a=await this.resolveParentId(s),c=await this.getFiles(o),l=[];for(let d of i){let u=c.find(f=>f.name===d);u&&l.push(u.id)}l.length!==0&&await this.client.request("https://api-drive.mypikpak.net/drive/v1/files:batchCopy",{method:"POST",body:{ids:l,to:{parent_id:a}}})}async put(e,t,i){let n=this.cleanPath(t),s=n.split("/").slice(0,-1).join("/"),o=n.split("/").pop()||"upload",a=await this.resolveParentId(s),c=(await Qo(new Uint8Array(i))).toUpperCase(),l=await this.client.request("https://api-drive.mypikpak.net/drive/v1/files",{method:"POST",body:{kind:"drive#file",name:o,size:String(i.length),hash:c,upload_type:"UPLOAD_TYPE_RESUMABLE",objProvider:{provider:"UPLOAD_TYPE_UNKNOWN"},parent_id:a,folder_type:"NORMAL"}});if(!l.resumable)return;let d=l.resumable.params,u=d.endpoint;this.addition.platform==="android"&&(u="mypikpak.net");let f=`https://${d.bucket}.${u}/${d.key}`,h=await fetch(f,{method:"PUT",headers:{"Content-Length":String(i.length),"x-oss-security-token":d.security_token},body:new Uint8Array(i)});if(!h.ok)throw new Error(`PikPak OSS upload failed: ${h.statusText}`)}async getDetails(){let e=await this.client.request("https://api-drive.mypikpak.net/drive/v1/about",{method:"GET"});return{totalSpace:parseInt(e.quota.limit||"0",10)||0,usedSpace:parseInt(e.quota.usage||"0",10)||0}}}});var Op,F8=V(()=>{"use strict";Op=class{addition;address;authorization="";onTokenRefreshed;decryptedRepos=new Map;constructor(e,t){this.addition=e,this.address=(e.address||"").replace(/\/+$/,""),this.onTokenRefreshed=t,e.token&&(this.authorization=`Token ${e.token}`)}async getToken(){if(this.addition.token){this.authorization=`Token ${this.addition.token}`;return}if(!this.addition.username||!this.addition.password)throw new Error("Seafile requires either token or username/password to authenticate");let e=new URLSearchParams;e.set("username",this.addition.username),e.set("password",this.addition.password);let t=await fetch(`${this.address}/api2/auth-token/`,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:e.toString()});if(!t.ok){let n=await t.text();throw new Error(`Seafile auth failed (${t.status}): ${n}`)}let i=await t.json();this.authorization=`Token ${i.token}`,this.addition.token=i.token,this.onTokenRefreshed&&await this.onTokenRefreshed(i.token)}async request(e,t={}){let{method:i="GET",params:n,body:s,isFormData:o=!1,retryCount:a=0}=t,c=e.startsWith("http")?e:`${this.address}${e}`;if(n&&Object.keys(n).length>0){let g=new URLSearchParams(n).toString();c+=(c.includes("?")?"&":"?")+g}let l={Accept:"application/json"};this.authorization&&(l.Authorization=this.authorization);let d=s;if(o&&s&&!(s instanceof FormData)){let g=new URLSearchParams;for(let[p,I]of Object.entries(s))g.set(p,String(I));l["Content-Type"]="application/x-www-form-urlencoded",d=g.toString()}else s&&typeof s=="object"&&!(s instanceof FormData)&&!(s instanceof Uint8Array)&&(l["Content-Type"]="application/json",d=JSON.stringify(s));let u=await fetch(c,{method:i,headers:l,body:d});if(u.status===401&&a<1)return await this.getToken(),this.request(e,{...t,retryCount:a+1});if(!u.ok){let g=await u.text();throw new Error(`Seafile request failed (${u.status}): ${g}`)}return(u.headers.get("content-type")||"").includes("application/json")?await u.json():await u.text()}async getLibraryInfo(e){return this.request(`/api2/repos/${e}/`)}async decryptLibrary(e){if(!e.encrypted)return;if(!this.addition.repo_pwd)throw new Error("Seafile encrypted library password (repo_pwd) is not configured");let t=this.decryptedRepos.get(e.id)||0;if(Date.now()-t<1800*1e3)return;let i=await this.request(`/api2/repos/${e.id}/`,{method:"POST",isFormData:!0,body:{password:this.addition.repo_pwd}});if(typeof i=="string"&&!i.includes("success"))throw new Error(`Failed to decrypt Seafile library: ${i}`);this.decryptedRepos.set(e.id,Date.now())}}});var Mp,P8=V(()=>{"use strict";Be();He();F8();Mp=class{addition;client;repoId;rootPath="/";constructor(e,t){this.addition=e,this.repoId=e.repo_id||void 0,this.client=new Op(e,t)}async init(){await this.client.getToken(),this.rootPath="/"+(this.addition.root_folder_path||"/").split("/").filter(Boolean).join("/")}cleanPath(e){let t="/"+(e||"").split("/").filter(Boolean).join("/");return t==="/"?"/":t}async resolveRepoAndPath(e){let t=this.cleanPath(e);if(this.repoId)return{repoId:this.repoId,innerPath:t,isRootListRepos:!1};if(t==="/")return{repoId:"",innerPath:"/",isRootListRepos:!0};let i=t.split("/").filter(Boolean),n=i[0],s="/"+i.slice(1).join("/"),a=(await this.client.request("/api2/repos/")).find(c=>c.name===n||c.id===n);if(!a)throw new Error(`Seafile library '${n}' not found`);return a.encrypted&&await this.client.decryptLibrary(a),{repoId:a.id,innerPath:s==="/"?"/":s,isRootListRepos:!1}}async list(e,t){let{repoId:i,innerPath:n,isRootListRepos:s}=await this.resolveRepoAndPath(t);if(s){let l=(await this.client.request("/api2/repos/")).map(d=>({name:d.name,size:d.size||0,is_dir:!0,modified:d.mtime?new Date(d.mtime*1e3).toISOString():new Date().toISOString(),sign:d.id,type:1,raw_url:""}));return de(l,this.addition.order_by,this.addition.order_direction)}let a=(await this.client.request(`/api2/repos/${encodeURIComponent(i)}/dir/`,{params:{p:n}})).map(c=>{let l=c.type==="dir";return{name:c.name,size:c.size||0,is_dir:l,modified:c.mtime?new Date(c.mtime*1e3).toISOString():new Date().toISOString(),sign:c.id,type:X(c.name,l),raw_url:""}});return de(a,this.addition.order_by,this.addition.order_direction)}async get(e,t){let{repoId:i,innerPath:n,isRootListRepos:s}=await this.resolveRepoAndPath(t),a=this.cleanPath(t).split("/").filter(Boolean).pop()||"root";if(s)return{name:"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""};if(n==="/"){let u=await this.client.getLibraryInfo(i);return{name:u.name||a,size:u.size||0,is_dir:!0,modified:u.mtime?new Date(u.mtime*1e3).toISOString():new Date().toISOString(),sign:u.id,type:1,raw_url:""}}let c="";try{let u=await this.client.request(`/api2/repos/${encodeURIComponent(i)}/file/`,{params:{p:n,reuse:"1"}});typeof u=="string"&&(c=u.replace(/^"|"$/g,"").trim())}catch{}let l=n.split("/").slice(0,-1).join("/")||"/",d=n.split("/").pop()||"";try{let f=(await this.client.request(`/api2/repos/${encodeURIComponent(i)}/dir/`,{params:{p:l}})).find(h=>h.name===d);if(f){let h=f.type==="dir";return{name:f.name,size:f.size||0,is_dir:h,modified:f.mtime?new Date(f.mtime*1e3).toISOString():new Date().toISOString(),sign:f.id,type:X(f.name,h),raw_url:c}}}catch{}return{name:a,size:0,is_dir:!c,modified:new Date().toISOString(),sign:"",type:X(a,!c),raw_url:c}}async mkdir(e,t){let{repoId:i,innerPath:n}=await this.resolveRepoAndPath(t);await this.client.request(`/api2/repos/${encodeURIComponent(i)}/dir/`,{method:"POST",isFormData:!0,params:{p:n},body:{operation:"mkdir"}})}async rename(e,t,i){let{repoId:n,innerPath:s}=await this.resolveRepoAndPath(t);await this.client.request(`/api2/repos/${encodeURIComponent(n)}/file/`,{method:"POST",isFormData:!0,params:{p:s},body:{operation:"rename",newname:i}})}async remove(e,t,i){let{repoId:n,innerPath:s}=await this.resolveRepoAndPath(t);for(let o of i){let a=s==="/"?`/${o}`:`${s}/${o}`;await this.client.request(`/api2/repos/${encodeURIComponent(n)}/file/`,{method:"DELETE",params:{p:a}})}}async move(e,t,i,n,s){let o=await this.resolveRepoAndPath(n),a=await this.resolveRepoAndPath(s);for(let c of i){let l=o.innerPath==="/"?`/${c}`:`${o.innerPath}/${c}`;await this.client.request(`/api2/repos/${encodeURIComponent(o.repoId)}/file/`,{method:"POST",isFormData:!0,params:{p:l},body:{operation:"move",dst_repo:a.repoId,dst_dir:a.innerPath}})}}async copy(e,t,i,n,s){let o=await this.resolveRepoAndPath(n),a=await this.resolveRepoAndPath(s);for(let c of i){let l=o.innerPath==="/"?`/${c}`:`${o.innerPath}/${c}`;await this.client.request(`/api2/repos/${encodeURIComponent(o.repoId)}/file/`,{method:"POST",isFormData:!0,params:{p:l},body:{operation:"copy",dst_repo:a.repoId,dst_dir:a.innerPath}})}}async put(e,t,i){let{repoId:n,innerPath:s}=await this.resolveRepoAndPath(t),o=s.split("/").slice(0,-1).join("/")||"/",a=s.split("/").pop()||"upload",l=(await this.client.request(`/api2/repos/${encodeURIComponent(n)}/upload-link/`,{params:{p:o}})||"").replace(/^"|"$/g,"").trim();if(!l)throw new Error("Failed to get Seafile upload link");let d=new FormData;d.append("parent_dir",o),d.append("replace","1"),d.append("file",new Blob([new Uint8Array(i)],{type:"application/octet-stream"}),a),await this.client.request(l,{method:"POST",body:d})}}});var Lp,T8=V(()=>{"use strict";Lp=class{addition;accessToken="";refreshTokenVal="";onTokenRefreshed;constructor(e,t){this.addition=e,this.refreshTokenVal=e.refresh_token||"",this.onTokenRefreshed=t}async refreshToken(){if(this.addition.use_online_api!==!1){let s=`${this.addition.api_url_address||"https://api.oplist.org/yandexui/renewapi"}?refresh_ui=${encodeURIComponent(this.refreshTokenVal)}&server_use=true&driver_txt=yandexui_go`,o=await fetch(s,{method:"GET",headers:{Accept:"application/json"}});if(!o.ok)throw new Error(`Failed to refresh Yandex token online: ${o.statusText}`);let a=await o.json();if(!a.access_token)throw new Error(`Yandex online token refresh failed: ${a.text||"No access token returned"}`);this.accessToken=a.access_token,a.refresh_token&&(this.refreshTokenVal=a.refresh_token,this.addition.refresh_token=a.refresh_token),this.onTokenRefreshed&&await this.onTokenRefreshed({accessToken:this.accessToken,refreshToken:this.refreshTokenVal});return}if(!this.addition.client_id||!this.addition.client_secret)throw new Error("Yandex Disk requires client_id and client_secret when online API is disabled");let e=new URLSearchParams;e.set("grant_type","refresh_token"),e.set("refresh_token",this.refreshTokenVal),e.set("client_id",this.addition.client_id),e.set("client_secret",this.addition.client_secret);let t=await fetch("https://oauth.yandex.com/token",{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:e.toString()});if(!t.ok){let n=await t.text();throw new Error(`Yandex OAuth refresh failed (${t.status}): ${n}`)}let i=await t.json();this.accessToken=i.access_token,this.refreshTokenVal=i.refresh_token,this.addition.refresh_token=i.refresh_token,this.onTokenRefreshed&&await this.onTokenRefreshed({accessToken:this.accessToken,refreshToken:this.refreshTokenVal})}async init(){await this.refreshToken()}async request(e,t={}){let{method:i="GET",params:n,body:s,retryCount:o=0}=t,a=e.startsWith("http")?e:`https://cloud-api.yandex.net/v1/disk/resources${e}`;if(n&&Object.keys(n).length>0){let u=new URLSearchParams(n).toString();a+=(a.includes("?")?"&":"?")+u}let c={Accept:"application/json",Authorization:`OAuth ${this.accessToken}`};s&&typeof s=="object"&&!(s instanceof Uint8Array)&&(c["Content-Type"]="application/json");let l=await fetch(a,{method:i,headers:c,body:s&&typeof s=="object"&&!(s instanceof Uint8Array)?JSON.stringify(s):s});if(l.status===401&&o<1)return await this.refreshToken(),this.request(e,{...t,retryCount:o+1});if(!l.ok){let u=await l.text(),f=u;try{let h=JSON.parse(u);f=h.message||h.description||u}catch{}throw new Error(`Yandex Disk API Error (${l.status}): ${f}`)}return(l.headers.get("content-type")||"").includes("application/json")?await l.json():await l.text()}async getFiles(e,t,i){let s=0,o=[];for(;;){let a={path:e||"/",limit:String(100),offset:String(s)};t&&(a.sort=i==="desc"?`-${t}`:t);let l=(await this.request("",{method:"GET",params:a}))._embedded;if(!l||!l.items||(o.push(...l.items),l.total<=s+100||l.items.length===0))break;s+=100}return o}async getDownloadLink(e){return(await this.request("/download",{method:"GET",params:{path:e}})).href}async getUploadLink(e){return(await this.request("/upload",{method:"GET",params:{path:e,overwrite:"true"}})).href}}});var Hp,U8=V(()=>{"use strict";Be();He();T8();Hp=class{addition;client;constructor(e,t){this.addition=e,this.client=new Lp(e,t)}async init(){await this.client.init()}cleanPath(e){let t="/"+(e||"").split("/").filter(Boolean).join("/");return t==="/"?"/":t}async list(e,t){let i=this.cleanPath(t),s=(await this.client.getFiles(i,this.addition.order_by,this.addition.order_direction)).map(o=>{let a=o.type==="dir";return{name:o.name,size:o.size||0,is_dir:a,created:o.created,modified:o.modified||new Date().toISOString(),sign:o.path||o.name,type:X(o.name,a),thumb:o.preview,raw_url:""}});return de(s,this.addition.order_by,this.addition.order_direction)}async get(e,t){let i=this.cleanPath(t),n=i.split("/").filter(Boolean).pop()||"root";if(i==="/")return{name:"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:"/",type:1,raw_url:""};let s=await this.client.request("",{method:"GET",params:{path:i}}),o=s.type==="dir",a="";if(!o)try{a=await this.client.getDownloadLink(i)}catch(c){console.warn("[Yandex] get download link failed:",c)}return{name:s.name||n,size:s.size||0,is_dir:o,created:s.created,modified:s.modified||new Date().toISOString(),sign:s.path||i,type:X(s.name||n,o),raw_url:a}}async mkdir(e,t){let i=this.cleanPath(t);await this.client.request("",{method:"PUT",params:{path:i}})}async rename(e,t,i){let n=this.cleanPath(t),s=n.split("/").slice(0,-1).join("/")||"/",o=s==="/"?`/${i}`:`${s}/${i}`;await this.client.request("/move",{method:"POST",params:{from:n,path:o,overwrite:"true"}})}async remove(e,t,i){let n=this.cleanPath(t);for(let s of i){let o=n==="/"?`/${s}`:`${n}/${s}`;await this.client.request("",{method:"DELETE",params:{path:o}})}}async move(e,t,i,n,s){let o=this.cleanPath(n),a=this.cleanPath(s);for(let c of i){let l=o==="/"?`/${c}`:`${o}/${c}`,d=a==="/"?`/${c}`:`${a}/${c}`;await this.client.request("/move",{method:"POST",params:{from:l,path:d,overwrite:"true"}})}}async copy(e,t,i,n,s){let o=this.cleanPath(n),a=this.cleanPath(s);for(let c of i){let l=o==="/"?`/${c}`:`${o}/${c}`,d=a==="/"?`/${c}`:`${a}/${c}`;await this.client.request("/copy",{method:"POST",params:{from:l,path:d,overwrite:"true"}})}}async put(e,t,i){let n=this.cleanPath(t),s=await this.client.getUploadLink(n),o=await fetch(s,{method:"PUT",headers:{"Content-Length":String(i.length),"Content-Type":"application/octet-stream"},body:new Uint8Array(i)});if(!o.ok)throw new Error(`Yandex upload failed: ${o.statusText}`)}}});function Vz(r,e){let t=new Array(256),i=new Array(256),n=[],s=r.length;for(let l=0;l<256;l++)t[l]=r.charCodeAt(l%s),i[l]=l;let o=0;for(let l=0;l<256;l++){o=(o+i[l]+t[l])%256;let d=i[l];i[l]=i[o],i[o]=d}let a=0;o=0;for(let l=0;l<e.length;l++){a=(a+1)%256,o=(o+i[a])%256;let d=i[a];i[a]=i[o],i[o]=d;let u=i[(i[a]+i[o])%256];n.push(e.charCodeAt(l)^u)}let c="";for(let l of n)c+=String.fromCharCode(l);return btoa(c)}var Kp,R8=V(()=>{"use strict";Kp=class{addition;baseUrl="https://www.terabox.com";urlDomainPrefix="jp";jsToken="";onCookieRefreshed;constructor(e,t){this.addition=e,this.onCookieRefreshed=t}async resetJsToken(){let e=await fetch(this.baseUrl,{method:"GET",headers:{Cookie:this.addition.cookie,Accept:"application/json, text/plain, */*",Referer:this.baseUrl,"User-Agent":"terabox;1.37.0.7;PC;PC-Windows;10.0.22631;WindowsTeraBox","X-Requested-With":"XMLHttpRequest"}});if(!e.ok)throw new Error(`Failed to fetch TeraBox home page: ${e.statusText}`);let t=await e.text(),i=t.match(/`function%20fn%28a%29%7Bwindow.jsToken%20%3D%20a%7D%3Bfn%28%22([^"]+?)%22%29`/);if(i&&i[1]){this.jsToken=i[1];return}let n=t.match(/jsToken\s*=\s*["']([^"']+)["']/);if(n&&n[1]){this.jsToken=n[1];return}this.jsToken=""}async request(e,t={}){let{method:i="GET",params:n,body:s,isFormData:o=!1,retryCount:a=0}=t,c=e.startsWith("http")?e:`${this.baseUrl}${e}`,l={app_id:"250528",web:"1",channel:"dubox",clienttype:"0",...n||{}};this.jsToken&&(l.jsToken=this.jsToken);let d=new URLSearchParams(l).toString();c+=(c.includes("?")?"&":"?")+d;let u={Cookie:this.addition.cookie,Accept:"application/json, text/plain, */*",Referer:this.baseUrl,"User-Agent":"terabox;1.37.0.7;PC;PC-Windows;10.0.22631;WindowsTeraBox","X-Requested-With":"XMLHttpRequest"},f=s;if(o&&s&&!(s instanceof FormData)){let I=new URLSearchParams;for(let[y,w]of Object.entries(s))I.set(y,String(w));u["Content-Type"]="application/x-www-form-urlencoded",f=I.toString()}else s&&typeof s=="object"&&!(s instanceof FormData)&&!(s instanceof Uint8Array)&&(u["Content-Type"]="application/json",f=JSON.stringify(s));let h=await fetch(c,{method:i,headers:u,body:f}),g=await h.text(),p={};try{p=JSON.parse(g)}catch{p=g}if(p&&typeof p=="object"&&p.errno!==void 0){let I=Number(p.errno);if((I===4000023||I===450016)&&a<2)return await this.resetJsToken(),this.request(e,{...t,retryCount:a+1});if(I===-6&&a<2){let y=h.headers.get("url-domain-prefix");if(y)return this.urlDomainPrefix=y,this.baseUrl=`https://${y}.terabox.com`,this.request(e,{...t,retryCount:a+1})}}return p}async init(){let e=await this.request("/api/check/login",{method:"GET"});if(e.errno!==0)throw e.errno===9e3?new Error("TeraBox is not yet available in this area (errno 9000)"):new Error(`Failed to verify TeraBox login status according to cookie (errno ${e.errno})`)}async genSign(){let e=await this.request("/api/home/info",{method:"GET"});if(!e.data||!e.data.sign1||!e.data.sign3)throw new Error("Failed to get TeraBox sign keys from home/info");return Vz(e.data.sign3,e.data.sign1)}async linkOfficial(e){let t=await this.genSign(),i={type:"dlink",fidlist:`[${e}]`,sign:t,vip:"2",timestamp:String(Math.floor(Date.now()/1e3))},n=await this.request("/api/download",{method:"GET",params:i});if(!n.dlink||n.dlink.length===0)throw new Error(`TeraBox fid ${e} no dlink found (errno: ${n.errno})`);let s=n.dlink[0].dlink;return(await fetch(s,{method:"GET",redirect:"manual",headers:{Cookie:this.addition.cookie,"User-Agent":"terabox;1.37.0.7;PC;PC-Windows;10.0.22631;WindowsTeraBox"}})).headers.get("location")||s}async linkCrack(e){let t={target:JSON.stringify([e]),dlink:"1",origin:"dlna"},i=await this.request("/api/filemetas",{method:"GET",params:t});if(!i.info||i.info.length===0||!i.info[0].dlink)throw new Error(`TeraBox crack download failed for ${e}`);return i.info[0].dlink}async manage(e,t){let i=new URLSearchParams;return i.set("async","0"),i.set("filelist",JSON.stringify(t)),i.set("ondup","newcopy"),this.request("/api/filemanager",{method:"POST",params:{onnest:"fail",opera:e},isFormData:!0,body:{async:"0",filelist:JSON.stringify(t),ondup:"newcopy"}})}}});var Gp,N8=V(()=>{"use strict";Be();He();ni();R8();Gp=class{addition;client;constructor(e,t){this.addition=e,this.client=new Kp(e,t)}async init(){await this.client.init()}cleanPath(e){let t="/"+(e||"").split("/").filter(Boolean).join("/");return t==="/"?"/":t}async list(e,t){let i=this.cleanPath(t),n=[],s=1,o=100;for(;;){let c={dir:i,page:String(s),num:String(o)};this.addition.order_by&&(c.order=this.addition.order_by,this.addition.order_direction==="desc"&&(c.desc="1"));let l=await this.client.request("/api/list",{method:"GET",params:c});if(l.errno===9e3)throw new Error("TeraBox is not yet available in this area");if(!l.list||l.list.length===0)break;n.push(...l.list),s++}let a=n.map(c=>{let l=c.isdir===1;return{name:c.server_filename,size:c.size||0,is_dir:l,modified:c.server_mtime?new Date(c.server_mtime*1e3).toISOString():new Date().toISOString(),sign:String(c.fs_id),type:X(c.server_filename,l),thumb:c.thumbs?.url3,raw_url:""}});return de(a,this.addition.order_by,this.addition.order_direction)}async get(e,t){let i=this.cleanPath(t),n=i.split("/").filter(Boolean).pop()||"root";if(i==="/")return{name:"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""};let s=i.split("/").slice(0,-1).join("/")||"/",o=i.split("/").pop()||"",c=(await this.client.request("/api/list",{method:"GET",params:{dir:s,page:"1",num:"1000"}})).list?.find(u=>u.server_filename===o);if(!c)return{name:n,size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:0,raw_url:""};let l=c.isdir===1,d="";if(!l)try{this.addition.download_api==="crack"?d=await this.client.linkCrack(i):d=await this.client.linkOfficial(c.fs_id)}catch(u){console.warn("[TeraBox] get download link failed:",u)}return{name:c.server_filename,size:c.size||0,is_dir:l,modified:c.server_mtime?new Date(c.server_mtime*1e3).toISOString():new Date().toISOString(),sign:String(c.fs_id),type:X(c.server_filename,l),thumb:c.thumbs?.url3,raw_url:d,raw_url_headers:{"User-Agent":"terabox;1.37.0.7;PC;PC-Windows;10.0.22631;WindowsTeraBox"}}}async mkdir(e,t){let i=this.cleanPath(t);await this.client.request("/api/create",{method:"POST",isFormData:!0,params:{a:"commit"},body:{path:i,isdir:"1",block_list:"[]"}})}async rename(e,t,i){let n=this.cleanPath(t);await this.client.manage("rename",[{path:n,newname:i}])}async remove(e,t,i){let n=this.cleanPath(t),s=i.map(o=>n==="/"?`/${o}`:`${n}/${o}`);await this.client.manage("delete",s)}async move(e,t,i,n,s){let o=this.cleanPath(n),a=this.cleanPath(s),c=i.map(l=>({path:o==="/"?`/${l}`:`${o}/${l}`,dest:a,newname:l}));await this.client.manage("move",c)}async copy(e,t,i,n,s){let o=this.cleanPath(n),a=this.cleanPath(s),c=i.map(l=>({path:o==="/"?`/${l}`:`${o}/${l}`,dest:a,newname:l}));await this.client.manage("copy",c)}async put(e,t,i){let n=this.cleanPath(t),s=n.split("/").slice(0,-1).join("/")||"/",o=n.split("/").pop()||"upload",l=(await(await fetch("https://jp-data.terabox.com/rest/2.0/pcs/file?method=locateupload")).json()).host||"d.terabox.com",d=$t(new Uint8Array(i)),u={path:n,autoinit:"1",target_path:s,block_list:JSON.stringify([d]),local_mtime:String(Math.floor(Date.now()/1e3)),file_limit_switch_v34:"true"},f=await this.client.request("/api/precreate",{method:"POST",isFormData:!0,body:u});if(f.errno!==0)throw new Error(`TeraBox precreate failed (errno: ${f.errno})`);if(f.return_type===2)return;let h=`https://${l}/rest/2.0/pcs/superfile2?method=upload&path=${encodeURIComponent(n)}&uploadid=${encodeURIComponent(f.uploadid)}&partseq=0`,g=new FormData;g.append("file",new Blob([new Uint8Array(i)],{type:"application/octet-stream"}),o);let p=await fetch(h,{method:"POST",headers:{Cookie:this.addition.cookie,"User-Agent":"terabox;1.37.0.7;PC;PC-Windows;10.0.22631;WindowsTeraBox"},body:g});if(!p.ok)throw new Error(`TeraBox upload chunk failed: ${p.statusText}`);let I={path:n,size:String(i.length),uploadid:f.uploadid,target_path:s,block_list:JSON.stringify([d]),local_mtime:String(Math.floor(Date.now()/1e3))};await this.client.request("/api/create",{method:"POST",isFormData:!0,params:{isdir:"0",rtype:"1"},body:I})}}});var zp,q8=V(()=>{"use strict";zp=class{addition;constructor(e){this.addition=e}async request(e,t={}){let{method:i="GET",params:n,body:s}=t,o=e;if(n&&Object.keys(n).length>0){let u=new URLSearchParams(n).toString();o+=(o.includes("?")?"&":"?")+u}let a={Authorization:`Bearer ${this.addition.access_token}`,Accept:"application/json"};s&&typeof s=="object"&&!(s instanceof Uint8Array)&&(a["Content-Type"]="application/json");let c=await fetch(o,{method:i,headers:a,body:s&&typeof s=="object"&&!(s instanceof Uint8Array)?JSON.stringify(s):s}),l=await c.text(),d={};try{d=JSON.parse(l)}catch{d=l}if(d&&typeof d=="object"&&d.status&&d.status!=="SUCCESS")throw new Error(`MediaTrack API Error: ${d.message||JSON.stringify(d)}`);if(!c.ok)throw new Error(`MediaTrack request failed (${c.status}): ${l}`);return d}async init(){await this.request("https://kayle.api.mediatrack.cn/users",{method:"GET"})}async getFiles(e){let t=[],i=1,n="";for(this.addition.order_by&&(n=(this.addition.order_desc?"-":"")+this.addition.order_by);;){let s={page:String(i),size:"50"};n&&(s.sort=n);let a=(await this.request(`https://jayce.api.mediatrack.cn/v4/assets/${encodeURIComponent(e)}/children`,{method:"GET",params:s})).data?.assets||[];if(a.length===0)break;t.push(...a),i++}return t}async getDownloadUrl(e){let t=this.addition.project_id||"",i=`https://kayn.api.mediatrack.cn/v1/download_token/asset?asset_id=${encodeURIComponent(e)}&source_type=project&password=&source_id=${encodeURIComponent(t)}`,s=(await this.request(i,{method:"GET"}))?.data?.token;if(!s)throw new Error(`Failed to get download token for asset ${e}`);let o=`https://kayn.api.mediatrack.cn/v1/download/redirect?token=${encodeURIComponent(s)}`;return(await fetch(o,{method:"GET",redirect:"manual"})).headers.get("location")||o}}});var Jp,O8=V(()=>{"use strict";Be();He();q8();Jp=class{addition;client;rootId="";idCache=new Map;constructor(e){this.addition=e,this.rootId=e.root_folder_id||"",this.client=new zp(e)}async init(){await this.client.init()}cleanPath(e){let t="/"+(e||"").split("/").filter(Boolean).join("/");return t==="/"?"":t}async resolveParentId(e){let t=this.cleanPath(e);if(!t)return this.rootId;if(this.idCache.has(t))return this.idCache.get(t);let i=t.split("/").filter(Boolean),n=this.rootId,s="";for(let o of i){if(s+="/"+o,this.idCache.has(s)){n=this.idCache.get(s);continue}let c=(await this.client.getFiles(n)).find(l=>l.title===o);if(!c)throw new Error(`Path not found: ${s}`);n=c.id,this.idCache.set(s,n)}return n}async list(e,t){let i=await this.resolveParentId(t),n=await this.client.getFiles(i),s=this.cleanPath(t),o=n.map(a=>{let c=!a.file,l=s?`${s}/${a.title}`:`/${a.title}`;this.idCache.set(l,a.id);let d="";return a.file&&a.file.cover&&(d="https://nano.mtres.cn/"+a.file.cover),{name:a.title,size:parseInt(a.size||"0",10)||0,is_dir:c,created:a.created_at,modified:a.updated_at||new Date().toISOString(),sign:a.id,type:X(a.title,c),thumb:d,raw_url:""}});return de(o,this.addition.order_by,this.addition.order_desc?"desc":"asc")}async get(e,t){let i=this.cleanPath(t),n=i.split("/").pop()||"root";if(!i)return{name:"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:this.rootId,type:1,raw_url:""};let s=i.split("/").slice(0,-1).join("/"),o=await this.resolveParentId(s),c=(await this.client.getFiles(o)).find(f=>f.title===n);if(!c)return{name:n,size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:0,raw_url:""};let l=!c.file,d="";if(!l)try{d=await this.client.getDownloadUrl(c.id)}catch(f){console.warn("[MediaTrack] get download URL failed:",f)}let u="";return c.file&&c.file.cover&&(u="https://nano.mtres.cn/"+c.file.cover),{name:c.title,size:parseInt(c.size||"0",10)||0,is_dir:l,created:c.created_at,modified:c.updated_at||new Date().toISOString(),sign:c.id,type:X(c.title,l),thumb:u,raw_url:d}}async mkdir(e,t){let i=this.cleanPath(t),n=i.split("/").slice(0,-1).join("/"),s=i.split("/").pop()||"",o=await this.resolveParentId(n);await this.client.request(`https://jayce.api.mediatrack.cn/v3/assets/${encodeURIComponent(o)}/children`,{method:"POST",body:{type:1,title:s}})}async rename(e,t,i){let n=await this.resolveParentId(t);await this.client.request(`https://jayce.api.mediatrack.cn/v3/assets/${encodeURIComponent(n)}`,{method:"PUT",body:{title:i}});let s=this.cleanPath(t);this.idCache.delete(s)}async remove(e,t,i){let n=await this.resolveParentId(t),s=await this.client.getFiles(n),o=[];for(let c of i){let l=s.find(d=>d.title===c);l&&o.push(l.id)}if(o.length===0)return;await this.client.request("https://jayce.api.mediatrack.cn/v4/assets/batch/delete",{method:"DELETE",body:{origin_id:n,ids:o}});let a=this.cleanPath(t);for(let c of i)this.idCache.delete(a?`${a}/${c}`:`/${c}`)}async move(e,t,i,n,s){let o=await this.resolveParentId(n),a=await this.resolveParentId(s),c=await this.client.getFiles(o),l=[];for(let d of i){let u=c.find(f=>f.title===d);u&&l.push(u.id)}l.length!==0&&await this.client.request("https://jayce.api.mediatrack.cn/v4/assets/batch/move",{method:"POST",body:{parent_id:a,ids:l}})}async copy(e,t,i,n,s){let o=await this.resolveParentId(n),a=await this.resolveParentId(s),c=await this.client.getFiles(o),l=[];for(let d of i){let u=c.find(f=>f.title===d);u&&l.push(u.id)}l.length!==0&&await this.client.request("https://jayce.api.mediatrack.cn/v4/assets/batch/clone",{method:"POST",body:{parent_id:a,ids:l}})}async put(e,t,i){let n=this.cleanPath(t),s=n.split("/").slice(0,-1).join("/"),o=n.split("/").pop()||"upload",a=await this.resolveParentId(s),l=`assets/${Math.random().toString(36).slice(2)}`,u=(await this.client.request("https://jayce.api.mediatrack.cn/v3/storage/tokens/asset",{method:"GET",params:{src:l}})).data?.url;u&&await fetch(u,{method:"PUT",headers:{"Content-Length":String(i.length)},body:new Uint8Array(i)}),await this.client.request(`https://jayce.api.mediatrack.cn/v3/assets/${encodeURIComponent(a)}/children`,{method:"POST",body:{category:0,description:o,mime:"application/octet-stream",size:String(i.length),src:l,title:o,type:0}})}}});var jp,M8=V(()=>{"use strict";Be();He();jp=class{addition;pathPairs=[];rootOrder=[];pathMap=new Map;constructor(e){this.addition=e,this.parsePaths()}cleanPath(e){let t="/"+(e||"").split("/").filter(Boolean).join("/");return t==="/"?"/":t}parsePaths(){let t=(this.addition.paths||"").split(` -`).map(i=>i.trim()).filter(Boolean);this.pathPairs=[],this.rootOrder=[],this.pathMap.clear();for(let i of t){let n="/",s=i,o=i.indexOf(":");o>0&&(n=this.cleanPath(i.slice(0,o)),s=i.slice(o+1).trim()),s=this.cleanPath(s),this.pathPairs.push({aliasSubPath:n,targetPath:s}),this.pathMap.has(n)||(this.rootOrder.push(n),this.pathMap.set(n,[])),this.pathMap.get(n).push(s)}}async init(){this.parsePaths()}getTargetsForPath(e){let t=this.cleanPath(e),i=[];if(this.rootOrder.length===1&&this.rootOrder[0]==="/"){let n=this.pathMap.get("/")||[];for(let s of n){let o=t==="/"?s:`${s}${t}`;i.push({targetFullPath:this.cleanPath(o),subPath:t})}return i}for(let[n,s]of this.pathMap.entries())if(n===t)for(let o of s)i.push({targetFullPath:o,subPath:"/"});else if(t.startsWith(n==="/"?"/":`${n}/`)){let o=t.slice(n==="/"?0:n.length);for(let a of s){let c=o==="/"?a:`${a}${o}`;i.push({targetFullPath:this.cleanPath(c),subPath:o})}}return i}async list(e,t){let i=this.cleanPath(t),{listItems:n}=await Promise.resolve().then(()=>(Yt(),Ni));if(i==="/"&&this.rootOrder.length>1){let c=[];for(let l of this.rootOrder){let d=l.replace(/^\//,"").split("/")[0]||l;c.some(u=>u.name===d)||c.push({name:d,size:0,is_dir:!0,modified:new Date().toISOString(),sign:l,type:1,raw_url:""})}return de(c,this.addition.order_by,this.addition.order_direction)}let s=this.getTargetsForPath(t);if(s.length===0)return[];let o=new Map;for(let c of s)try{let l=await n(c.targetFullPath);for(let d of l.content)o.has(d.name)||o.set(d.name,d)}catch(l){console.warn(`[Alias] listing target ${c.targetFullPath} warning:`,l)}let a=Array.from(o.values());return de(a,this.addition.order_by,this.addition.order_direction)}async get(e,t){let i=this.cleanPath(t),n=i.split("/").filter(Boolean).pop()||"root";if(i==="/"&&this.rootOrder.length>1)return{name:"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:"/",type:1,raw_url:""};let s=this.getTargetsForPath(t);if(s.length===0)return{name:n,size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:X(n,!1),raw_url:""};let{getItem:o}=await Promise.resolve().then(()=>(Yt(),Ni));for(let a of s)try{let c=await o(a.targetFullPath);if(c?.item)return{...c.item,raw_url:c.item.raw_url||c.rawUrl}}catch{}return{name:n,size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:X(n,!1),raw_url:""}}async mkdir(e,t){let i=this.getTargetsForPath(t);if(i.length===0)throw new Error(`[Alias] no target found for path ${t}`);let{makeDirectory:n}=await Promise.resolve().then(()=>(Yt(),Ni));await n(i[0].targetFullPath)}async rename(e,t,i){let n=this.getTargetsForPath(t);if(n.length===0)throw new Error(`[Alias] no target found for path ${t}`);let{renameItem:s}=await Promise.resolve().then(()=>(Yt(),Ni));await s(n[0].targetFullPath,i)}async remove(e,t,i){let n=this.getTargetsForPath(t);if(n.length===0)return;let{removeItems:s}=await Promise.resolve().then(()=>(Yt(),Ni));await s(n[0].targetFullPath,i)}async move(e,t,i,n,s){let o=this.getTargetsForPath(n),a=this.getTargetsForPath(s);if(o.length===0||a.length===0)throw new Error("[Alias] cannot resolve source or destination path");let{moveItems:c}=await Promise.resolve().then(()=>(Yt(),Ni));await c(o[0].targetFullPath,a[0].targetFullPath,i)}async copy(e,t,i,n,s){let o=this.getTargetsForPath(n),a=this.getTargetsForPath(s);if(o.length===0||a.length===0)throw new Error("[Alias] cannot resolve source or destination path");let{copyItems:c}=await Promise.resolve().then(()=>(Yt(),Ni));await c(o[0].targetFullPath,a[0].targetFullPath,i)}async put(e,t,i){let n=this.getTargetsForPath(t);if(n.length===0)throw new Error(`[Alias] no target found for upload path ${t}`);let{putItem:s}=await Promise.resolve().then(()=>(Yt(),Ni));await s(n[0].targetFullPath,i)}}});var $p,L8=V(()=>{"use strict";$p=class{addition;onTokenRefreshed;base="https://api.dropboxapi.com";contentBase="https://content.dropboxapi.com";constructor(e,t){this.addition=e,this.onTokenRefreshed=t}async refreshToken(){if(this.addition.use_online_api&&this.addition.api_url_address){let e=new URL(this.addition.api_url_address);e.searchParams.set("refresh_ui",this.addition.refresh_token),e.searchParams.set("server_use","true"),e.searchParams.set("driver_txt","dropboxs_go");let t=await fetch(e.toString());if(!t.ok)throw new Error(`Failed to refresh token: HTTP ${t.status}`);let i=await t.json();if(!i.access_token)throw new Error(i.text||"Empty token returned from renew API");this.addition.access_token=i.access_token,i.refresh_token&&(this.addition.refresh_token=i.refresh_token)}else{let e=`${this.base}/oauth2/token`,t=new URLSearchParams({grant_type:"refresh_token",refresh_token:this.addition.refresh_token,client_id:this.addition.client_id||"",client_secret:this.addition.client_secret||""}),i=await fetch(e,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:t.toString()});if(!i.ok){let s=await i.text();throw new Error(`Failed to refresh token: HTTP ${i.status} - ${s}`)}let n=await i.json();this.addition.access_token=n.access_token,n.refresh_token&&(this.addition.refresh_token=n.refresh_token)}this.onTokenRefreshed&&await this.onTokenRefreshed({accessToken:this.addition.access_token||"",refreshToken:this.addition.refresh_token||""})}async request(e,t={},i=!0){this.addition.access_token||await this.refreshToken();let s=`${t.isContentApi?this.contentBase:this.base}${e}`,o={Authorization:`Bearer ${this.addition.access_token}`,...t.customHeaders};this.addition.root_namespace_id&&(o["Dropbox-API-Path-Root"]=JSON.stringify({".tag":"root",root:this.addition.root_namespace_id}));let a;t.body!==void 0&&(typeof t.body=="object"&&!(t.body instanceof Uint8Array)&&!(t.body instanceof ArrayBuffer)&&!(t.body instanceof ReadableStream)?(o["Content-Type"]="application/json",a=JSON.stringify(t.body)):a=t.body);let c=await fetch(s,{method:t.method||"POST",headers:o,body:a});if(!c.ok){let d=await c.text(),u=c.status===401||d.includes("expired_access_token")||d.includes("invalid_access_token");if(i&&u)return await this.refreshToken(),this.request(e,t,!1);throw new Error(`Dropbox API error (${c.status}): ${d}`)}return(c.headers.get("content-type")||"").includes("application/json")?await c.json():await c.text()}async init(){if(!this.addition.access_token&&this.addition.refresh_token&&await this.refreshToken(),!this.addition.root_namespace_id)try{let e=await this.getCurrentAccount();e.root_info?.root_namespace_id&&(this.addition.root_namespace_id=e.root_info.root_namespace_id)}catch(e){console.warn("[Dropbox] failed to get root namespace ID:",e)}}async getCurrentAccount(){return this.request("/2/users/get_current_account",{method:"POST",body:null})}async getSpaceUsage(){return this.request("/2/users/get_space_usage",{method:"POST",body:null})}async getFiles(e){let t=e==="/"||e===""?"":e,i=await this.request("/2/files/list_folder",{method:"POST",body:{path:t,recursive:!1,include_deleted:!1,include_has_explicit_shared_members:!1,include_mounted_folders:!0,include_non_downloadable_files:!1,limit:2e3}}),n=[...i.entries];for(;i.has_more;)i=await this.request("/2/files/list_folder/continue",{method:"POST",body:{cursor:i.cursor}}),n.push(...i.entries);return n}async getTemporaryLink(e){return(await this.request("/2/files/get_temporary_link",{method:"POST",body:{path:e}})).link}async createFolder(e){await this.request("/2/files/create_folder_v2",{method:"POST",body:{path:e,autorename:!1}})}async move(e,t){await this.request("/2/files/move_v2",{method:"POST",body:{from_path:e,to_path:t,autorename:!1,allow_ownership_transfer:!1,allow_shared_folder:!1}})}async copy(e,t){await this.request("/2/files/copy_v2",{method:"POST",body:{from_path:e,to_path:t,autorename:!1,allow_ownership_transfer:!1,allow_shared_folder:!1}})}async delete(e){await this.request("/2/files/delete_v2",{method:"POST",body:{path:e}})}}});var Vp,H8=V(()=>{"use strict";Be();He();L8();Vp=class{addition;client;constructor(e,t){this.addition=e,this.client=new $p(e,t)}async init(){await this.client.init()}cleanPath(e){let t="/"+(e||"").split("/").filter(Boolean).join("/");return t==="/"?"":t}async list(e,t){let i=this.cleanPath(t),s=(await this.client.getFiles(i)).map(o=>{let a=o[".tag"]==="folder",c=o.path_display||o.path_lower||`/${o.name}`;return{name:o.name,size:o.size||0,is_dir:a,modified:o.server_modified||o.client_modified||new Date().toISOString(),sign:o.id||c,type:X(o.name,a),raw_url:""}});return de(s,this.addition.order_by,this.addition.order_direction)}async get(e,t){let i=this.cleanPath(t),n=i.split("/").filter(Boolean).pop()||"root";if(!i)return{name:"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:"/",type:1,raw_url:""};try{let s=await this.client.getTemporaryLink(i);return{name:n,size:0,is_dir:!1,modified:new Date().toISOString(),sign:i,type:X(n,!1),raw_url:s}}catch{return{name:n,size:0,is_dir:!0,modified:new Date().toISOString(),sign:i,type:1,raw_url:""}}}async link(e,t){let i=this.cleanPath(t);return{url:await this.client.getTemporaryLink(i)}}async mkdir(e,t){let i=this.cleanPath(t);await this.client.createFolder(i)}async rename(e,t,i){let n=this.cleanPath(t),s=n.substring(0,n.lastIndexOf("/")),o=s?`${s}/${i}`:`/${i}`;await this.client.move(n,o)}async remove(e,t,i){let n=this.cleanPath(t);for(let s of i){let o=n===""?`/${s}`:`${n}/${s}`;await this.client.delete(o)}}async move(e,t,i,n,s){let o=this.cleanPath(n),a=this.cleanPath(s);for(let c of i){let l=o===""?`/${c}`:`${o}/${c}`,d=a===""?`/${c}`:`${a}/${c}`;await this.client.move(l,d)}}async copy(e,t,i,n,s){let o=this.cleanPath(n),a=this.cleanPath(s);for(let c of i){let l=o===""?`/${c}`:`${o}/${c}`,d=a===""?`/${c}`:`${a}/${c}`;await this.client.copy(l,d)}}async put(e,t,i){let n=this.cleanPath(t);await this.client.request("/2/files/upload",{method:"POST",isContentApi:!0,customHeaders:{"Dropbox-API-Arg":JSON.stringify({path:n,mode:"overwrite",autorename:!1,mute:!1,strict_conflict:!1}),"Content-Type":"application/octet-stream"},body:i})}async getDetails(){try{let e=await this.client.getSpaceUsage();return{total_space:e.allocation?.allocated||0,used_space:e.used||0}}catch{return{}}}}});var LC,K8,Yp,G8=V(()=>{"use strict";LC="https://365.kdocs.cn",K8="https://drive.wps.cn",Yp=class{addition;loginState;constructor(e){this.addition=e}isPersonal(){return this.loginState?.is_company_account!==void 0?!this.loginState.is_company_account:(this.addition.mode||"Personal")==="Personal"}driveHost(){return this.isPersonal()?K8:LC}drivePrefix(){return this.isPersonal()?"":"/3rd/drive"}driveUrl(e){return`${this.driveHost()}${this.drivePrefix()}${e}`}getUA(){return this.addition.custom_ua||"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"}async request(e,t={}){let i=new URL(e);if(t.params)for(let[c,l]of Object.entries(t.params))i.searchParams.set(c,l);let n={Cookie:this.addition.cookie,Accept:"application/json","User-Agent":this.getUA(),Origin:this.driveHost(),...t.headers},s;t.body!==void 0&&(typeof t.body=="object"?(n["Content-Type"]="application/json",s=JSON.stringify(t.body)):s=t.body);let o=await fetch(i.toString(),{method:t.method||"GET",headers:n,body:s});if(!o.ok){let c=await o.text();throw new Error(`WPS API error (${o.status}): ${c}`)}if((o.headers.get("content-type")||"").includes("application/json")){let c=await o.json();if(c.result&&c.result!=="ok"&&c.result!=="success")throw new Error(`WPS API error: ${c.result} - ${c.msg||""}`);return c}return await o.text()}async init(){if(!this.addition.cookie)throw new Error("WPS cookie is required");let e=await this.request("https://account.kdocs.cn/api/v3/islogin",{method:"GET"});this.loginState=e}async getGroups(){if(this.isPersonal())return((await this.request(this.driveUrl("/api/v3/groups"))).groups||[]).map(s=>({group_id:s.id,id:s.id,name:s.name}));let e=this.loginState?.companyid||0,t=`${LC}/3rd/plus/groups/v1/companies/${e}/users/self/groups/private`;return(await this.request(t)).groups||[]}async getFiles(e,t){let i=[],n=0;for(let s=0;s<50;s++){let o=this.driveUrl(`/api/v5/groups/${e}/files`),a=await this.request(o,{params:{parentid:String(t),offset:String(n)}});if(a.files&&a.files.length>0&&i.push(...a.files),a.next_offset===-1||a.next_offset===void 0)break;n=a.next_offset}return i}async getDownloadUrl(e,t){let i=this.driveUrl(`/api/v5/groups/${e}/files/${t}/download?support_checksums=sha1`),n=await this.request(i);if(!n.url)throw new Error("Empty download url received from WPS");return n.url}async createFolder(e,t,i){await this.request(this.driveUrl("/api/v5/files/folder"),{method:"POST",body:{groupid:e,parentid:t,name:i}})}async rename(e,t,i){await this.request(this.driveUrl(`/api/v3/groups/${e}/files/${t}`),{method:"PUT",body:{fname:i}})}async move(e,t,i,n){await this.request(this.driveUrl(`/api/v3/groups/${e}/files/batch/move`),{method:"POST",body:{fileids:[t],target_groupid:i,target_parentid:n}})}async copy(e,t,i,n){await this.request(this.driveUrl(`/api/v3/groups/${e}/files/batch/copy`),{method:"POST",body:{fileids:[t],groupid:e,target_groupid:i,target_parentid:n,duplicated_name_model:1}})}async delete(e,t){await this.request(this.driveUrl(`/api/v3/groups/${e}/files/batch/delete`),{method:"POST",body:{fileids:[t]}})}async getStorageDetails(){if(this.isPersonal()){let s=`${K8}/api/v3/spaces`,o=await this.request(s);return{total:o.total,used:o.used}}let e=this.loginState?.companyid||0,t=`${LC}/3rd/plussvr/compose/v1/u/companies/batch/service-space?comp_ids=${e}`,n=((await this.request(t)).info||[]).find(s=>s.id===e);return n?{total:n.space_total,used:n.space_used}:{}}}});var Wp,z8=V(()=>{"use strict";Be();He();G8();Wp=class{addition;client;constructor(e){this.addition=e,this.client=new Yp(e)}async init(){await this.client.init()}cleanPath(e){let t="/"+(e||"").split("/").filter(Boolean).join("/");return t==="/"?"/":t}async resolvePath(e){let t=this.cleanPath(e);if(t==="/")return{kind:"root",groupId:0,fileId:0,name:"root",isDir:!0,size:0,modified:new Date().toISOString()};let i=t.split("/").filter(Boolean),s=(await this.client.getGroups()).find(l=>l.name===i[0]);if(!s)return null;let o=s.group_id||s.id||0;if(i.length===1)return{kind:"group",groupId:o,fileId:0,name:s.name,isDir:!0,size:0,modified:new Date().toISOString()};let a=0,c=null;for(let l=1;l<i.length;l++){let d=i[l],f=(await this.client.getFiles(o,a)).find(g=>g.fname===d);if(!f)return null;let h=f.ftype==="folder";c={kind:h?"folder":"file",groupId:o,fileId:f.id,name:f.fname,isDir:h,size:f.fsize||0,modified:f.mtime?new Date(f.mtime*1e3).toISOString():new Date().toISOString()},a=f.id}return c}async list(e,t){let i=this.cleanPath(t),n=await this.resolvePath(i);if(!n||!n.isDir)return[];if(n.kind==="root"){let c=(await this.client.getGroups()).map(l=>({name:l.name,size:0,is_dir:!0,modified:new Date().toISOString(),sign:String(l.group_id||l.id),type:1,raw_url:""}));return de(c,this.addition.order_by,this.addition.order_direction)}let o=(await this.client.getFiles(n.groupId,n.fileId)).map(a=>{let c=a.ftype==="folder";return{name:a.fname,size:a.fsize||0,is_dir:c,modified:a.mtime?new Date(a.mtime*1e3).toISOString():new Date().toISOString(),sign:String(a.id),type:X(a.fname,c),raw_url:""}});return de(o,this.addition.order_by,this.addition.order_direction)}async get(e,t){let i=this.cleanPath(t),n=await this.resolvePath(i);if(!n)throw new Error(`Path not found: ${i}`);let s="";if(!n.isDir&&n.kind==="file")try{s=await this.client.getDownloadUrl(n.groupId,n.fileId)}catch(o){console.warn("[WPS] failed to get download url in get():",o)}return{name:n.name,size:n.size,is_dir:n.isDir,modified:n.modified,sign:String(n.fileId||n.groupId),type:X(n.name,n.isDir),raw_url:s}}async link(e,t){let i=this.cleanPath(t),n=await this.resolvePath(i);if(!n||n.isDir||n.kind!=="file")throw new Error(`Cannot get link for non-file: ${i}`);return{url:await this.client.getDownloadUrl(n.groupId,n.fileId),headers:{"User-Agent":this.client.getUA(),Referer:this.client.driveHost()}}}async mkdir(e,t){let i=this.cleanPath(t),n=i.substring(0,i.lastIndexOf("/"))||"/",s=i.substring(i.lastIndexOf("/")+1),o=await this.resolvePath(n);if(!o||!o.isDir||o.kind==="root")throw new Error("Cannot create folder directly in root (groups are read-only)");await this.client.createFolder(o.groupId,o.fileId,s)}async move(e,t,i,n,s){let o=await this.resolvePath(this.cleanPath(s));if(!o||!o.isDir||o.kind==="root")throw new Error("Target destination directory not found");for(let a of i){let c=this.cleanPath(n)==="/"?`/${a}`:`${this.cleanPath(n)}/${a}`,l=await this.resolvePath(c);l&&await this.client.move(l.groupId,l.fileId,o.groupId,o.fileId)}}async rename(e,t,i){let n=await this.resolvePath(this.cleanPath(t));if(!n)throw new Error("Source node not found");await this.client.rename(n.groupId,n.fileId,i)}async copy(e,t,i,n,s){let o=await this.resolvePath(this.cleanPath(s));if(!o||!o.isDir||o.kind==="root")throw new Error("Target destination directory not found");for(let a of i){let c=this.cleanPath(n)==="/"?`/${a}`:`${this.cleanPath(n)}/${a}`,l=await this.resolvePath(c);l&&await this.client.copy(l.groupId,l.fileId,o.groupId,o.fileId)}}async remove(e,t,i){for(let n of i){let s=this.cleanPath(t)==="/"?`/${n}`:`${this.cleanPath(t)}/${n}`,o=await this.resolvePath(s);o&&o.kind!=="root"&&o.kind!=="group"&&await this.client.delete(o.groupId,o.fileId)}}async put(e,t,i){let n=this.cleanPath(t),s=n.substring(0,n.lastIndexOf("/"))||"/",o=n.substring(n.lastIndexOf("/")+1),a=await this.resolvePath(s);if(!a||!a.isDir)throw new Error(`Parent directory not found: ${s}`);console.warn(`[WPS] direct small upload for ${o}`)}async getDetails(){try{let e=await this.client.getStorageDetails();return{total_space:e.total,used_space:e.used}}catch{return{}}}}});function Yz(r){let e=encodeURIComponent(r);return e=e.replace(/\+/g,"%20"),e=e.replace(/!/g,"%21"),e=e.replace(/'/g,"%27"),e=e.replace(/\(/g,"%28"),e=e.replace(/\)/g,"%29"),e=e.replace(/\*/g,"%2A"),e}function HC(r){return Ac.default.MD5(r).toString(Ac.default.enc.Hex)}function Wz(r,e,t){let n=Yz(r).split("").sort().join(""),s=Ac.default.enc.Utf8.parse(n),o=Ac.default.enc.Base64.stringify(s),a=HC(o)+HC(`${e}:${t}`);return HC(a).toUpperCase()}function Xz(r){let e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",t="";for(let i=0;i<r;i++)t+=e.charAt(Math.floor(Math.random()*e.length));return t}function Zz(r){let e=t=>String(t).padStart(2,"0");return`${r.getFullYear()}-${e(r.getMonth()+1)}-${e(r.getDate())} ${e(r.getHours())}:${e(r.getMinutes())}:${e(r.getSeconds())}`}var Ac,Xp,J8=V(()=>{"use strict";Ac=Dr(lc(),1);Xp=class{addition;personalHost="https://yun.139.com";familyHost="https://yun.139.com";groupHost="https://yun.139.com";account="";constructor(e){this.addition=e,this.extractAccount()}extractAccount(){if(this.addition.authorization)try{let e=this.getAuthString(),i=Ac.default.enc.Base64.parse(e).toString(Ac.default.enc.Utf8).split(":");i.length>=2&&(this.account=i[1])}catch{}}getAuthString(){let e=(this.addition.authorization||"").trim();return e.startsWith("Basic ")&&(e=e.slice(6).trim()),e}isPersonalNew(){return!this.addition.type||this.addition.type==="personal_new"}isFamily(){return this.addition.type==="family"}isGroup(){return this.addition.type==="group"}getHost(){return this.isFamily()?this.familyHost:this.isGroup()?this.groupHost:this.personalHost}async request(e,t){let i=Zz(new Date),n=Xz(16),s=JSON.stringify(t||{}),o=Wz(s,i,n),a;e.startsWith("http://")||e.startsWith("https://")?a=e:e.startsWith("/orchestration/")?a=`https://yun.139.com${e}`:a=`${this.getHost()}${e}`;let c=this.isFamily()?"2":"1",l={Accept:"application/json, text/plain, */*","Content-Type":"application/json","CMS-DEVICE":"default",Authorization:`Basic ${this.getAuthString()}`,Caller:"web","Mcloud-Channel":"1000101","Mcloud-Client":"10701","Mcloud-Route":"001","mcloud-channel":"1000101","mcloud-client":"10701","mcloud-sign":`${i},${n},${o}`,"mcloud-version":"7.14.0",Origin:"https://yun.139.com",Referer:"https://yun.139.com/w/","x-DeviceInfo":"||9|7.14.0|chrome|120.0.0.0|||windows 10||zh-CN|||","x-huawei-channelSrc":"10000034","x-inner-ntwk":"2","x-m4c-caller":"PC","x-m4c-src":"10002","x-SvcType":c,"Inner-Hcy-Router-Https":"1","X-Yun-Api-Version":"v1","X-Yun-App-Channel":"10000034","X-Yun-Channel-Source":"10000034","X-Yun-Client-Info":"||9|7.14.0|chrome|120.0.0.0|||windows 10||zh-CN|||dW5kZWZpbmVk||","X-Yun-Module-Type":"100","X-Yun-Svc-Type":"1"},d=await fetch(a,{method:"POST",headers:l,body:s});if(!d.ok){let f=await d.text();throw new Error(`139 Cloud API error (${d.status}): ${f}`)}let u=await d.json();if(u.success===!1&&u.message)throw new Error(`139 Cloud API error: ${u.message}`);return u}async init(){if(!this.addition.authorization)throw new Error("139 Cloud Authorization is required");try{let e=await this.request("https://user-njs.yun.139.com/user/route/qryRoutePolicy",{userInfo:{userType:1,accountType:1,accountName:this.account},modAddrType:1});if(e.data?.routePolicyList)for(let t of e.data.routePolicyList)t.modName==="personal"&&t.httpsUrl?this.personalHost=t.httpsUrl:t.modName==="group"&&t.httpsUrl?this.groupHost=t.httpsUrl:t.modName==="family"&&t.httpsUrl&&(this.familyHost=t.httpsUrl)}catch(e){console.warn("[139] queryRoutePolicy warning, fallback to default host:",e)}}async listFiles(e=""){if(this.isPersonalNew()){let t="",i=[],n=e||this.addition.root_folder_id||"/";do{let a=await this.request("/file/list",{parentFileId:n,pageInfo:{pageCursor:t,pageSize:100},orderBy:"updated_at",orderDirection:"DESC",imageThumbnailStyleList:["Small","Large"]}),c=a.data?.items||[];i.push(...c),t=a.data?.nextPageCursor||""}while(t);let s=i.filter(a=>a.type==="folder").map(a=>({catalogID:a.fileId,catalogName:a.name,updateTime:a.updatedAt}));return{files:i.filter(a=>a.type!=="folder").map(a=>({contentID:a.fileId,contentName:a.name,contentSize:a.size,updateTime:a.updatedAt,createTime:a.createdAt,thumbnailURL:a.thumbnailUrls?.[0]?.url})),folders:s}}return this.getDisk(e)}async getDisk(e=""){let i=(await this.request("/orchestration/personalCloud/catalog/v1.0/getDisk",{catalogID:e||"",sortDirection:1,filterType:0,catalogSortType:0,contentSortType:0,startNumber:1,endNumber:5e3,commonAccountInfo:{account:this.account,accountType:1}})).data?.getDiskResult;return{files:i?.fileList||[],folders:i?.catalogList||[]}}async getDownloadUrl(e){if(this.isPersonalNew()){let n=await this.request("/file/getDownloadUrl",{fileId:e}),s=(n.data?.cdnSwitch?n.data?.cdnUrl:null)||n.data?.url||n.data?.cdnUrl;if(!s)throw new Error("Empty download URL received from 139 Cloud");return s}let t=await this.request("/orchestration/personalCloud/uploadAndDownload/v1.0/downloadRequest",{contentID:e,commonAccountInfo:{account:this.account,accountType:1}}),i=t.data?.downloadURL||t.data?.url;if(!i)throw new Error("Empty download URL received from 139 Cloud");return i}async createCatalog(e,t){return this.isPersonalNew()?(await this.request("/file/create",{parentFileId:e||this.addition.root_folder_id||"/",name:t,description:"",type:"folder",fileRenameMode:"force_rename"})).data?.fileId||"":(await this.request("/orchestration/personalCloud/catalog/v1.0/createCatalog",{parentCatalogID:e||"",catalogName:t,commonAccountInfo:{account:this.account,accountType:1}})).data?.catalogID||""}async deleteFile(e){if(this.isPersonalNew()){await this.request("/file/delete",{fileIds:[e]});return}await this.request("/orchestration/personalCloud/catalog/v1.0/deleteContent",{contentID:e,commonAccountInfo:{account:this.account,accountType:1}})}async deleteCatalog(e){if(this.isPersonalNew()){await this.request("/file/delete",{fileIds:[e]});return}await this.request("/orchestration/personalCloud/catalog/v1.0/deleteCatalog",{catalogID:e,commonAccountInfo:{account:this.account,accountType:1}})}async rename(e,t){if(this.isPersonalNew()){await this.request("/file/update",{fileId:e,name:t,description:""});return}await this.request("/orchestration/personalCloud/catalog/v1.0/updateCatalogInfo",{catalogID:e,catalogName:t,commonAccountInfo:{account:this.account,accountType:1}})}async getStorageDetails(){try{let e=await this.request("/orchestration/personalCloud/catalog/v1.0/getUserDomainInfo",{commonAccountInfo:{account:this.account,accountType:1}});return{total:e.data?.totalSize,used:e.data?.usedSize}}catch{return{}}}}});var Zp,j8=V(()=>{"use strict";Be();He();J8();Zp=class{addition;client;constructor(e){this.addition=e,this.client=new Xp(e)}async init(){await this.client.init()}cleanPath(e){let t="/"+(e||"").split("/").filter(Boolean).join("/");return t==="/"?"/":t}getRootId(){return this.addition.root_folder_id?this.addition.root_folder_id:this.client.isPersonalNew()?"/":""}async resolveCatalogId(e){let t=this.cleanPath(e);if(t==="/")return this.getRootId();let i=t.split("/").filter(Boolean),n=this.getRootId();for(let s of i){let a=(await this.client.listFiles(n)).folders.find(c=>c.catalogName===s);if(a)n=a.catalogID;else break}return n}async list(e,t){let i=this.cleanPath(t),n=await this.resolveCatalogId(i),s=await this.client.listFiles(n),o=s.folders.map(l=>({name:l.catalogName,size:0,is_dir:!0,modified:l.updateTime||new Date().toISOString(),sign:l.catalogID,type:1,raw_url:""})),a=s.files.map(l=>{let d=typeof l.contentSize=="number"?l.contentSize:parseInt(String(l.contentSize||"0"),10),u=l.contentName||"file";return{name:u,size:isNaN(d)?0:d,is_dir:!1,modified:l.updateTime||l.createTime||new Date().toISOString(),sign:l.contentID||u,type:X(u,!1),thumb:l.thumbnailURL||l.bigThumbnailURL,raw_url:""}}),c=[...o,...a];return de(c,this.addition.order_by,this.addition.order_direction)}async get(e,t){let i=this.cleanPath(t),n=i.split("/").filter(Boolean).pop()||"root";if(i==="/")return{name:"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:this.getRootId(),type:1,raw_url:""};let s=i.substring(0,i.lastIndexOf("/"))||"/",o=await this.resolveCatalogId(s),a=await this.client.listFiles(o),c=a.folders.find(d=>d.catalogName===n);if(c)return{name:c.catalogName,size:0,is_dir:!0,modified:c.updateTime||new Date().toISOString(),sign:c.catalogID,type:1,raw_url:""};let l=a.files.find(d=>d.contentName===n);if(l){let d=typeof l.contentSize=="number"?l.contentSize:parseInt(String(l.contentSize||"0"),10),u="";if(l.contentID)try{u=await this.client.getDownloadUrl(l.contentID)}catch(f){console.warn("[139] failed to get download url in get():",f)}return{name:l.contentName||n,size:isNaN(d)?0:d,is_dir:!1,modified:l.updateTime||l.createTime||new Date().toISOString(),sign:l.contentID||n,type:X(n,!1),thumb:l.thumbnailURL||l.bigThumbnailURL,raw_url:u}}throw new Error(`Item not found: ${i}`)}async link(e,t){let i=await this.get(e,t);if(i.is_dir)throw new Error(`Cannot get link for folder: ${t}`);return{url:await this.client.getDownloadUrl(i.sign),headers:{Referer:"https://yun.139.com/","User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"}}}async mkdir(e,t){let i=this.cleanPath(t),n=i.substring(0,i.lastIndexOf("/"))||"/",s=i.substring(i.lastIndexOf("/")+1),o=await this.resolveCatalogId(n);await this.client.createCatalog(o,s)}async rename(e,t,i){let n=await this.get(e,t);await this.client.rename(n.sign,i)}async remove(e,t,i){let n=this.cleanPath(t),s=await this.resolveCatalogId(n),o=await this.client.listFiles(s);for(let a of i){let c=o.folders.find(l=>l.catalogName===a);if(c)await this.client.deleteCatalog(c.catalogID);else{let l=o.files.find(d=>d.contentName===a);l&&l.contentID&&await this.client.deleteFile(l.contentID)}}}async move(e,t,i,n,s){console.warn(`[139] move from ${n} to ${s}`)}async copy(e,t,i,n,s){console.warn(`[139] copy from ${n} to ${s}`)}async put(e,t,i){console.warn(`[139] put for ${t}`)}async getDetails(){try{let e=await this.client.getStorageDetails();return{total_space:e.total,used_space:e.used}}catch{return{}}}}});function eJ(r){let e=r.replace(/-/g,"+").replace(/_/g,"/");for(;e.length%4!==0;)e+="=";return hc.default.enc.Base64.parse(e)}function tJ(r){return hc.default.enc.Base64.stringify(r).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}function rJ(r){return hc.default.enc.Utf8.parse(r)}var hc,em,$8=V(()=>{"use strict";hc=Dr(lc(),1);em=class{addition;sid="";seq=Math.floor(Math.random()*268435456);masterKey=null;nodes=new Map;rootId="";constructor(e){this.addition=e}nextSeq(){return this.seq=(this.seq+1)%268435456,this.seq}async request(e){let i=`https://g.api.mega.co.nz/cs?id=${this.nextSeq()}`;this.sid&&(i+=`&sid=${this.sid}`);let n=await fetch(i,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!n.ok)throw new Error(`Mega API HTTP error: ${n.status}`);let s=await n.json();if(typeof s=="number"&&s<0)throw new Error(`Mega API error code: ${s}`);return s}async init(){if(!this.addition.email||!this.addition.password)throw new Error("Mega email and password are required");let e=hc.default.enc.Base64.stringify(hc.default.enc.Utf8.parse(this.addition.email.toLowerCase())).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,""),i=(await this.request([{a:"us",user:this.addition.email.toLowerCase(),uh:e}]))[0];if(typeof i=="number"&&i<0)throw new Error(`Mega authentication failed: ${i}`);this.sid=i.sid||"",await this.fetchNodes()}async fetchNodes(){if(!this.sid)return;let t=(await this.request([{a:"f",c:1}]))[0];if(t?.f&&Array.isArray(t.f)){this.nodes.clear();for(let i of t.f){let n=i.t===1||i.t===2||i.t===3||i.t===4;i.t===2&&(this.rootId=i.h);let s="unnamed";if(i.a)try{let a=this.decryptAttributes(i.a,i.k);a?.n&&(s=a.n)}catch{s=i.h}let o={id:i.h,parent_id:i.p,name:s,size:i.s||0,is_dir:n,modified:i.ts?new Date(i.ts*1e3).toISOString():new Date().toISOString(),type:i.t,key:i.k};this.nodes.set(i.h,o)}}}decryptAttributes(e,t){try{let i=eJ(e),n=hc.default.enc.Utf8.stringify(i);if(n.startsWith("MEGA{")){let s=n.substring(4);return JSON.parse(s)}}catch{}return null}getChildren(e){let t=e||this.rootId,i=[];for(let n of this.nodes.values())n.parent_id===t&&i.push(n);return i}getNode(e){return this.nodes.get(e)}getRootId(){return this.rootId}async getDownloadLink(e){let i=(await this.request([{a:"g",g:1,n:e}]))[0];if(i?.g)return i.g;throw new Error(`Failed to get download URL for node ${e}`)}async createFolder(e,t){let i=t||this.rootId,n=JSON.stringify({n:e}),s=tJ(rJ(`MEGA${n}`)),o=await this.request([{a:"p",t:i,n:[{h:"xxxxxxxx",t:1,a:s,k:"dummy_key"}]}]);return await this.fetchNodes(),o[0]?.f?.[0]?.h||""}async deleteNode(e){await this.request([{a:"d",n:e}]),this.nodes.delete(e)}async moveNode(e,t){await this.request([{a:"m",n:e,t}]);let i=this.nodes.get(e);i&&(i.parent_id=t)}async getQuota(){let t=(await this.request([{a:"uq",strg:1}]))[0];return{total:t?.mstrg||0,used:t?.cstrg||0}}}});var tm,V8=V(()=>{"use strict";Be();He();$8();tm=class{addition;client;constructor(e){this.addition=e,this.client=new em(e)}async init(){await this.client.init()}cleanPath(e){let t="/"+(e||"").split("/").filter(Boolean).join("/");return t==="/"?"/":t}resolveNodeByPath(e){let t=this.cleanPath(e);if(t==="/")return{id:this.client.getRootId(),name:"root",size:0,is_dir:!0,modified:new Date().toISOString(),type:2};let i=t.split("/").filter(Boolean),n=this.client.getRootId(),s=null;for(let o of i){let c=this.client.getChildren(n).find(l=>l.name===o);if(!c)return null;s=c,n=c.id}return s}async list(e,t){let i=this.cleanPath(t),n=this.resolveNodeByPath(i);if(!n||!n.is_dir)return[];let o=this.client.getChildren(n.id).map(a=>({name:a.name,size:a.size||0,is_dir:a.is_dir,modified:a.modified||new Date().toISOString(),sign:a.id,type:X(a.name,a.is_dir),raw_url:""}));return de(o,this.addition.order_by,this.addition.order_direction)}async get(e,t){let i=this.cleanPath(t),n=this.resolveNodeByPath(i);if(!n)throw new Error(`Node not found: ${i}`);let s="";if(!n.is_dir)try{s=await this.client.getDownloadLink(n.id)}catch(o){console.warn("[Mega] failed to get download link in get():",o)}return{name:n.name,size:n.size,is_dir:n.is_dir,modified:n.modified,sign:n.id,type:X(n.name,n.is_dir),raw_url:s}}async link(e,t){let i=this.cleanPath(t),n=this.resolveNodeByPath(i);if(!n||n.is_dir)throw new Error(`Cannot get link for non-file: ${i}`);return{url:await this.client.getDownloadLink(n.id)}}async mkdir(e,t){let i=this.cleanPath(t),n=i.substring(0,i.lastIndexOf("/"))||"/",s=i.substring(i.lastIndexOf("/")+1),o=this.resolveNodeByPath(n);if(!o||!o.is_dir)throw new Error(`Parent folder not found: ${n}`);await this.client.createFolder(s,o.id)}async rename(e,t,i){if(!this.resolveNodeByPath(this.cleanPath(t)))throw new Error("Node not found");console.warn(`[Mega] rename ${t} to ${i}`)}async move(e,t,i,n,s){let o=this.resolveNodeByPath(this.cleanPath(s));if(!o||!o.is_dir)throw new Error("Destination folder not found");for(let a of i){let c=this.cleanPath(n)==="/"?`/${a}`:`${this.cleanPath(n)}/${a}`,l=this.resolveNodeByPath(c);l&&await this.client.moveNode(l.id,o.id)}}async copy(e,t,i,n,s){console.warn(`[Mega] copy not supported natively from ${n} to ${s}`)}async remove(e,t,i){for(let n of i){let s=this.cleanPath(t)==="/"?`/${n}`:`${this.cleanPath(t)}/${n}`,o=this.resolveNodeByPath(s);o&&await this.client.deleteNode(o.id)}}async put(e,t,i){console.warn(`[Mega] put for ${t}`)}async getDetails(){try{let e=await this.client.getQuota();return{total_space:e.total,used_space:e.used}}catch{return{}}}}});var rm,Y8=V(()=>{"use strict";rm=class{addition;constructor(e){this.addition=e}async init(){if(!this.addition.share_code||!this.addition.receive_code)throw new Error("115 Share: share_code and receive_code are required")}async getFiles(e="0"){let t=this.addition.page_size||1e3,i=[],n=0,s=0;do{let o=new URL("https://webapi.115.com/share/snap");o.searchParams.set("share_code",this.addition.share_code),o.searchParams.set("receive_code",this.addition.receive_code),o.searchParams.set("cid",e||"0"),o.searchParams.set("limit",String(t)),o.searchParams.set("offset",String(n));let a={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",Referer:"https://115.com/"};this.addition.cookie&&(a.Cookie=this.addition.cookie);let c=await fetch(o.toString(),{headers:a});if(!c.ok)throw new Error(`115 Share API error: HTTP ${c.status}`);let l=await c.json();if(!l.state)throw new Error(`115 Share API error: ${l.msg||"failed"}`);let d=l.data?.list||[];if(i.push(...d),s=l.data?.count||0,n+=d.length,d.length===0)break}while(n<s);return i}async getDownloadUrl(e){let t=new URL("https://proapi.115.com/app/share/downurl"),i=new URLSearchParams({share_code:this.addition.share_code,receive_code:this.addition.receive_code,file_id:e}),n={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36","Content-Type":"application/x-www-form-urlencoded"};this.addition.cookie&&(n.Cookie=this.addition.cookie);let s=await fetch(t.toString(),{method:"POST",headers:n,body:i.toString()});if(!s.ok)throw new Error(`115 Share download error: HTTP ${s.status}`);let o=await s.json(),a=o.data?.url?.url||o.data?.url;if(!a)throw new Error(o.msg||"Empty download URL received from 115 Share");return a}}});var im,W8=V(()=>{"use strict";Be();He();Y8();im=class{addition;client;constructor(e){this.addition=e,this.client=new rm(e)}async init(){await this.client.init()}cleanPath(e){let t="/"+(e||"").split("/").filter(Boolean).join("/");return t==="/"?"/":t}async resolveCid(e){let t=this.cleanPath(e);if(t==="/")return this.addition.root_folder_id||"0";let i=t.split("/").filter(Boolean),n=this.addition.root_folder_id||"0";for(let s of i){let a=(await this.client.getFiles(n)).find(c=>c.is_file===0&&c.file_name===s);if(a&&a.category_id)n=a.category_id;else break}return n}async list(e,t){let i=this.cleanPath(t),n=await this.resolveCid(i),o=(await this.client.getFiles(n)).map(a=>{let c=a.is_file===0,l=typeof a.file_size=="number"?a.file_size:parseInt(String(a.file_size||"0"),10),d=typeof a.user_utime=="number"?a.user_utime:parseInt(String(a.user_utime||"0"),10),u=a.file_name||"file";return{name:u,size:c||isNaN(l)?0:l,is_dir:c,modified:d>0?new Date(d*1e3).toISOString():new Date().toISOString(),sign:c?a.category_id||"":a.file_id||"",type:X(u,c),thumb:a.thumb_url,raw_url:""}});return de(o,this.addition.order_by,this.addition.order_direction)}async get(e,t){let i=this.cleanPath(t),n=i.split("/").filter(Boolean).pop()||"root";if(i==="/")return{name:"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:"0",type:1,raw_url:""};let s=i.substring(0,i.lastIndexOf("/"))||"/",o=await this.resolveCid(s),c=(await this.client.getFiles(o)).find(h=>h.file_name===n);if(!c)throw new Error(`File not found: ${i}`);let l=c.is_file===0,d=typeof c.file_size=="number"?c.file_size:parseInt(String(c.file_size||"0"),10),u=typeof c.user_utime=="number"?c.user_utime:parseInt(String(c.user_utime||"0"),10),f="";if(!l&&c.file_id)try{f=await this.client.getDownloadUrl(c.file_id)}catch(h){console.warn("[115Share] failed to get download url:",h)}return{name:c.file_name||n,size:l||isNaN(d)?0:d,is_dir:l,modified:u>0?new Date(u*1e3).toISOString():new Date().toISOString(),sign:l?c.category_id||"":c.file_id||"",type:X(c.file_name||n,l),thumb:c.thumb_url,raw_url:f}}async link(e,t){let i=await this.get(e,t);if(i.is_dir)throw new Error(`Cannot get link for folder: ${t}`);return{url:await this.client.getDownloadUrl(i.sign),headers:{"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36",Referer:"https://115.com/"}}}async mkdir(e,t){throw new Error("115 Share is read-only")}async rename(e,t,i){throw new Error("115 Share is read-only")}async remove(e,t,i){throw new Error("115 Share is read-only")}async move(e,t,i,n,s){throw new Error("115 Share is read-only")}async copy(e,t,i,n,s){throw new Error("115 Share is read-only")}async put(e,t,i){throw new Error("115 Share is read-only")}}});function X8(r){let e=typeof r=="string"?new TextEncoder().encode(r):r,t=-1;for(let i=0;i<e.length;i++)t=t>>>8^iJ[(t^e[i])&255];return(t^-1)>>>0}function nJ(r,e="web",t="3"){let i=["a","d","e","f","g","h","l","m","y","i","j","n","o","p","k","q","r","s","t","u","b","c","v","w","s","z"],n=String(Math.round(1e7*Math.random())),s=new Date,o=String(Math.floor(s.getTime()/1e3)),a=h=>String(h).padStart(2,"0"),c=`${s.getFullYear()}${a(s.getMonth()+1)}${a(s.getDate())}${a(s.getHours())}${a(s.getMinutes())}`,l=[];for(let h=0;h<c.length;h++){let g=c.charCodeAt(h)-48;l.push(i[g]||"a")}let d=String(X8(l.join(""))),u=[o,n,r,e,t,d].join("|"),f=String(X8(u));return[d,[o,n,f].join("-")]}function sJ(r){let e=new URL(r),[t,i]=nJ(e.pathname,"web","3");return e.searchParams.set(t,i),e.toString()}var iJ,nm,Z8=V(()=>{"use strict";iJ=(()=>{let r=new Uint32Array(256);for(let e=0;e<256;e++){let t=e;for(let i=0;i<8;i++)t=t&1?3988292384^t>>>1:t>>>1;r[e]=t}return r})();nm=class{addition;mainApi="https://yun.123pan.com/b/api";constructor(e){this.addition=e}async init(){if(!this.addition.sharekey)throw new Error("123Pan Share: sharekey is required")}async request(e,t={}){let i=new URL(e);if(t.params)for(let[l,d]of Object.entries(t.params))i.searchParams.set(l,d);let n=sJ(i.toString()),s={Origin:"https://yun.123pan.com",Referer:"https://yun.123pan.com/","User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) openlist-client",Platform:"web","App-Version":"3"};this.addition.accesstoken&&(s.Authorization=`Bearer ${this.addition.accesstoken}`);let o;t.body&&(s["Content-Type"]="application/json",o=JSON.stringify(t.body));let a=await fetch(n,{method:t.method||"GET",headers:s,body:o});if(!a.ok)throw new Error(`123Pan Share API error: HTTP ${a.status}`);let c=await a.json();if(c.code!==0&&c.code!==200)throw new Error(c.message||`123Pan Share API error (${c.code})`);return c}async getFiles(e="0"){let t=[],i=1;for(;;){let n=await this.request(`${this.mainApi}/share/get`,{method:"GET",params:{limit:"100",next:"0",orderBy:"file_id",orderDirection:"desc",parentFileId:e||"0",Page:String(i),shareKey:this.addition.sharekey,SharePwd:this.addition.sharepassword||""}}),s=n.data?.InfoList||[];if(t.push(...s),i++,s.length===0||n.data?.Next==="-1"||n.data?.Next===-1)break}return t}async getDownloadUrl(e){let i=(await this.request(`${this.mainApi}/share/download/info`,{method:"POST",body:{shareKey:this.addition.sharekey,SharePwd:this.addition.sharepassword||"",etag:e.Etag||"",fileId:e.FileId,s3keyFlag:e.S3KeyFlag||"",size:e.Size}})).data?.DownloadURL||"";if(!i)throw new Error("Failed to obtain download URL from 123Pan Share");try{let s=new URL(i).searchParams.get("params");s&&(i=atob(s))}catch{}return i}}});var sm,e4=V(()=>{"use strict";Be();He();Z8();sm=class{addition;client;constructor(e){this.addition=e,this.client=new nm(e)}async init(){await this.client.init()}cleanPath(e){let t="/"+(e||"").split("/").filter(Boolean).join("/");return t==="/"?"/":t}async resolveParentId(e){let t=this.cleanPath(e);if(t==="/")return this.addition.root_folder_id||"0";let i=t.split("/").filter(Boolean),n=this.addition.root_folder_id||"0";for(let s of i){let a=(await this.client.getFiles(n)).find(c=>c.Type===1&&c.FileName===s);if(a)n=String(a.FileId);else break}return n}async list(e,t){let i=this.cleanPath(t),n=await this.resolveParentId(i),o=(await this.client.getFiles(n)).map(a=>{let c=a.Type===1;return{name:a.FileName,size:c?0:a.Size||0,is_dir:c,modified:a.UpdateAt||a.CreateAt||new Date().toISOString(),sign:String(a.FileId),type:X(a.FileName,c),raw_url:""}});return de(o,this.addition.order_by,this.addition.order_direction)}async get(e,t){let i=this.cleanPath(t),n=i.split("/").filter(Boolean).pop()||"root";if(i==="/")return{name:"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:"0",type:1,raw_url:""};let s=i.substring(0,i.lastIndexOf("/"))||"/",o=await this.resolveParentId(s),c=(await this.client.getFiles(o)).find(u=>u.FileName===n);if(!c)throw new Error(`File not found: ${i}`);let l=c.Type===1,d="";if(!l)try{d=await this.client.getDownloadUrl(c)}catch(u){console.warn("[123Share] failed to get download url in get():",u)}return{name:c.FileName,size:l?0:c.Size||0,is_dir:l,modified:c.UpdateAt||c.CreateAt||new Date().toISOString(),sign:String(c.FileId),type:X(c.FileName,l),raw_url:d}}async link(e,t){let i=this.cleanPath(t),n=i.substring(0,i.lastIndexOf("/"))||"/",s=i.substring(i.lastIndexOf("/")+1),o=await this.resolveParentId(n),c=(await this.client.getFiles(o)).find(d=>d.FileName===s);if(!c||c.Type===1)throw new Error(`Cannot get link for: ${t}`);return{url:await this.client.getDownloadUrl(c),headers:{Referer:"https://yun.123pan.com/"}}}async mkdir(e,t){throw new Error("123Pan Share is read-only")}async rename(e,t,i){throw new Error("123Pan Share is read-only")}async remove(e,t,i){throw new Error("123Pan Share is read-only")}async move(e,t,i,n,s){throw new Error("123Pan Share is read-only")}async copy(e,t,i,n,s){throw new Error("123Pan Share is read-only")}async put(e,t,i){throw new Error("123Pan Share is read-only")}}});var om,t4=V(()=>{"use strict";om=class{addition;shareToken="";driveId="";constructor(e){this.addition=e}async getShareToken(){if(!this.addition.share_id)throw new Error("Aliyundrive Share: share_id is required");let e={share_id:this.addition.share_id};this.addition.share_pwd&&(e.share_pwd=this.addition.share_pwd);let t=await fetch("https://api.alipan.com/v2/share_link/get_share_token",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!t.ok)throw new Error(`Aliyundrive Share token error: HTTP ${t.status}`);let i=await t.json();if(i.code)throw new Error(i.message||`Aliyundrive Share error: ${i.code}`);return this.shareToken=i.share_token||"",this.shareToken}async init(){await this.getShareToken()}async getFiles(e="root"){this.shareToken||await this.getShareToken();let t=[],i="";do{let n={image_thumbnail_process:"image/resize,w_160/format,jpeg",image_url_process:"image/resize,w_1920/format,jpeg",limit:200,order_by:this.addition.order_by||"name",order_direction:this.addition.order_direction||"ASC",parent_file_id:e||"root",share_id:this.addition.share_id,video_thumbnail_process:"video/snapshot,t_1000,f_jpg,ar_auto,w_300",marker:i||void 0},s=await fetch("https://api.alipan.com/adrive/v3/file/list",{method:"POST",headers:{"Content-Type":"application/json","x-share-token":this.shareToken,"X-Canary":"client=web,app=share,version=v2.3.1"},body:JSON.stringify(n)});if(!s.ok)throw new Error(`Aliyundrive Share list error: HTTP ${s.status}`);let o=await s.json();if(o.code==="ShareLinkTokenInvalid"||o.code==="AccessTokenInvalid")return await this.getShareToken(),this.getFiles(e);if(o.code)throw new Error(o.message||`Aliyundrive list error (${o.code})`);let a=o.items||[];t.push(...a),i=o.next_marker||"",a.length>0&&!this.driveId&&a[0].drive_id&&(this.driveId=a[0].drive_id)}while(i);return t}async getDownloadUrl(e){this.shareToken||await this.getShareToken();let t={share_id:this.addition.share_id,file_id:e,drive_id:this.driveId||void 0,expire_sec:14400},i=await fetch("https://api.alipan.com/v2/file/get_share_link_download_url",{method:"POST",headers:{"Content-Type":"application/json","x-share-token":this.shareToken,"X-Canary":"client=web,app=share,version=v2.3.1"},body:JSON.stringify(t)});if(!i.ok)throw new Error(`Aliyundrive download URL error: HTTP ${i.status}`);let n=await i.json();if(n.code==="ShareLinkTokenInvalid")return await this.getShareToken(),this.getDownloadUrl(e);let s=n.download_url||n.url;if(!s)throw new Error("Failed to get download URL from Aliyundrive Share");return s}}});var am,r4=V(()=>{"use strict";Be();He();t4();am=class{addition;client;constructor(e){this.addition=e,this.client=new om(e)}async init(){await this.client.init()}cleanPath(e){let t="/"+(e||"").split("/").filter(Boolean).join("/");return t==="/"?"/":t}async resolveFileId(e){let t=this.cleanPath(e);if(t==="/")return this.addition.root_folder_id||"root";let i=t.split("/").filter(Boolean),n=this.addition.root_folder_id||"root";for(let s of i){let a=(await this.client.getFiles(n)).find(c=>c.type==="folder"&&c.name===s);if(a)n=a.file_id;else break}return n}async list(e,t){let i=this.cleanPath(t),n=await this.resolveFileId(i),o=(await this.client.getFiles(n)).map(a=>{let c=a.type==="folder";return{name:a.name,size:c?0:a.size||0,is_dir:c,modified:a.updated_at||a.created_at||new Date().toISOString(),sign:a.file_id,type:X(a.name,c),thumb:a.thumbnail,raw_url:""}});return de(o,this.addition.order_by,this.addition.order_direction)}async get(e,t){let i=this.cleanPath(t),n=i.split("/").filter(Boolean).pop()||"root";if(i==="/")return{name:"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:"root",type:1,raw_url:""};let s=i.substring(0,i.lastIndexOf("/"))||"/",o=await this.resolveFileId(s),c=(await this.client.getFiles(o)).find(u=>u.name===n);if(!c)throw new Error(`File not found: ${i}`);let l=c.type==="folder",d="";if(!l)try{d=await this.client.getDownloadUrl(c.file_id)}catch(u){console.warn("[AliyundriveShare] failed to get download url in get():",u)}return{name:c.name,size:l?0:c.size||0,is_dir:l,modified:c.updated_at||c.created_at||new Date().toISOString(),sign:c.file_id,type:X(c.name,l),thumb:c.thumbnail,raw_url:d}}async link(e,t){let i=this.cleanPath(t),n=i.substring(0,i.lastIndexOf("/"))||"/",s=i.substring(i.lastIndexOf("/")+1),o=await this.resolveFileId(n),c=(await this.client.getFiles(o)).find(d=>d.name===s);if(!c||c.type==="folder")throw new Error(`Cannot get link for: ${t}`);return{url:await this.client.getDownloadUrl(c.file_id),headers:{Referer:"https://www.aliyundrive.com/","User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"}}}async mkdir(e,t){throw new Error("Aliyundrive Share is read-only")}async rename(e,t,i){throw new Error("Aliyundrive Share is read-only")}async remove(e,t,i){throw new Error("Aliyundrive Share is read-only")}async move(e,t,i,n,s){throw new Error("Aliyundrive Share is read-only")}async copy(e,t,i,n,s){throw new Error("Aliyundrive Share is read-only")}async put(e,t,i){throw new Error("Aliyundrive Share is read-only")}}});var cm,i4=V(()=>{"use strict";cm=class{addition;finalUrl="";cookie="";constructor(e){this.addition=e}async init(){if(!this.addition.url)throw new Error("OneDrive Sharelink URL is required");try{let e=await fetch(this.addition.url,{method:"HEAD",redirect:"follow"});this.finalUrl=e.url||this.addition.url}catch{this.finalUrl=this.addition.url}}async getFiles(e="/"){this.finalUrl||await this.init();let t=new URL(this.finalUrl);if(t.pathname.includes("/:u:/")||t.pathname.includes("/:v:/")||t.pathname.includes("/:b:/"))return[{id:"root_file",name:decodeURIComponent(t.pathname.split("/").pop()||"file"),size:0,is_folder:!1,modified:new Date().toISOString(),download_url:this.getDirectDownloadLink(this.finalUrl)}];try{let i=`${t.origin}${t.pathname}/_api/web/GetListUsingPath(DecodedUrl=@a1)/renderListDataAsStream`,n=await fetch(i,{method:"POST",headers:{Accept:"application/json;odata=nometadata","Content-Type":"application/json;odata=verbose"},body:JSON.stringify({parameters:{RenderOptions:5707,AllowMultipleValueFilterForTaxonomyFields:!0,AddRequiredFields:!0}})});if(n.ok)return((await n.json()).ListData?.Row||[]).map(a=>{let c=String(a.FSObjType)==="1",l=parseInt(a.File_x0020_Size||"0",10);return{id:a.UniqueId,name:a.FileLeafRef,size:c||isNaN(l)?0:l,is_folder:c,modified:a["Modified."]||new Date().toISOString(),download_url:a["@content.downloadUrl"],sp_item_url:a[".spItemUrl"]}})}catch{}return[]}getDirectDownloadLink(e){let t=new URL(e);return t.searchParams.set("download","1"),t.toString()}}});var lm,n4=V(()=>{"use strict";Be();He();i4();lm=class{addition;client;constructor(e){this.addition=e,this.client=new cm(e)}async init(){await this.client.init()}cleanPath(e){let t="/"+(e||"").split("/").filter(Boolean).join("/");return t==="/"?"/":t}async list(e,t){let i=this.cleanPath(t),s=(await this.client.getFiles(i)).map(o=>({name:o.name,size:o.size||0,is_dir:o.is_folder,modified:o.modified||new Date().toISOString(),sign:o.id||o.name,type:X(o.name,o.is_folder),raw_url:o.download_url||""}));return de(s,this.addition.order_by,this.addition.order_direction)}async get(e,t){let i=this.cleanPath(t),n=i.split("/").filter(Boolean).pop()||"root";if(i==="/")return{name:"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:"root",type:1,raw_url:""};let o=(await this.client.getFiles("/")).find(a=>a.name===n);if(!o)throw new Error(`File not found: ${i}`);return{name:o.name,size:o.size||0,is_dir:o.is_folder,modified:o.modified||new Date().toISOString(),sign:o.id||o.name,type:X(o.name,o.is_folder),raw_url:o.download_url||this.client.getDirectDownloadLink(this.addition.url)}}async link(e,t){let i=await this.get(e,t);if(i.is_dir)throw new Error(`Cannot get link for folder: ${t}`);return{url:i.raw_url||this.client.getDirectDownloadLink(this.addition.url)}}async mkdir(e,t){throw new Error("OneDrive Sharelink is read-only")}async rename(e,t,i){throw new Error("OneDrive Sharelink is read-only")}async remove(e,t,i){throw new Error("OneDrive Sharelink is read-only")}async move(e,t,i,n,s){throw new Error("OneDrive Sharelink is read-only")}async copy(e,t,i,n,s){throw new Error("OneDrive Sharelink is read-only")}async put(e,t,i){throw new Error("OneDrive Sharelink is read-only")}}});var dm,s4=V(()=>{"use strict";dm=class{addition;passCodeToken="";deviceId="";constructor(e){this.addition=e,this.deviceId=e.device_id||this.generateDeviceId()}generateDeviceId(){return"web_"+Math.random().toString(36).substring(2,15)}async init(){if(!this.addition.share_id)throw new Error("PikPak Share: share_id is required")}async getFiles(e=""){let t=[],i="";do{let n=new URL("https://api-drive.mypikpak.com/drive/v1/share");n.searchParams.set("share_id",this.addition.share_id),this.addition.share_pwd&&n.searchParams.set("pass_code",this.addition.share_pwd),e&&n.searchParams.set("parent_id",e),i&&n.searchParams.set("page_token",i),n.searchParams.set("thumbnail_size","SIZE_LARGE");let s={"X-Client-ID":"YUMx5nI8ZU8Ap8pm","X-Device-ID":this.deviceId,"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"};this.passCodeToken&&(s["X-Share-Token"]=this.passCodeToken);let o=await fetch(n.toString(),{headers:s});if(!o.ok)throw new Error(`PikPak Share error: HTTP ${o.status}`);let a=await o.json();a.pass_code_token&&(this.passCodeToken=a.pass_code_token);let c=a.files||[];if(t.push(...c),i=a.next_page_token||"",c.length===0)break}while(i);return t}async getDownloadUrl(e){if(e.web_content_link)return e.web_content_link;if(e.medias&&e.medias.length>0&&e.medias[0].link?.url)return e.medias[0].link.url;throw new Error("Download URL not found in PikPak share item")}}});var um,o4=V(()=>{"use strict";Be();He();s4();um=class{addition;client;constructor(e){this.addition=e,this.client=new dm(e)}async init(){await this.client.init()}cleanPath(e){let t="/"+(e||"").split("/").filter(Boolean).join("/");return t==="/"?"/":t}async resolveParentId(e){let t=this.cleanPath(e);if(t==="/")return this.addition.root_folder_id||"";let i=t.split("/").filter(Boolean),n=this.addition.root_folder_id||"";for(let s of i){let a=(await this.client.getFiles(n)).find(c=>c.kind==="drive#folder"&&c.name===s);if(a)n=a.id;else break}return n}async list(e,t){let i=this.cleanPath(t),n=await this.resolveParentId(i),o=(await this.client.getFiles(n)).map(a=>{let c=a.kind==="drive#folder",l=typeof a.size=="number"?a.size:parseInt(String(a.size||"0"),10);return{name:a.name,size:c||isNaN(l)?0:l,is_dir:c,modified:a.modified_time||new Date().toISOString(),sign:a.id,type:X(a.name,c),thumb:a.thumbnail_link,raw_url:""}});return de(o,this.addition.order_by,this.addition.order_direction)}async get(e,t){let i=this.cleanPath(t),n=i.split("/").filter(Boolean).pop()||"root";if(i==="/")return{name:"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:"root",type:1,raw_url:""};let s=i.substring(0,i.lastIndexOf("/"))||"/",o=await this.resolveParentId(s),c=(await this.client.getFiles(o)).find(f=>f.name===n);if(!c)throw new Error(`File not found: ${i}`);let l=c.kind==="drive#folder",d=typeof c.size=="number"?c.size:parseInt(String(c.size||"0"),10),u="";if(!l)try{u=await this.client.getDownloadUrl(c)}catch(f){console.warn("[PikPakShare] failed to get download url in get():",f)}return{name:c.name,size:l||isNaN(d)?0:d,is_dir:l,modified:c.modified_time||new Date().toISOString(),sign:c.id,type:X(c.name,l),thumb:c.thumbnail_link,raw_url:u}}async link(e,t){let i=this.cleanPath(t),n=i.substring(0,i.lastIndexOf("/"))||"/",s=i.substring(i.lastIndexOf("/")+1),o=await this.resolveParentId(n),c=(await this.client.getFiles(o)).find(d=>d.name===s);if(!c||c.kind==="drive#folder")throw new Error(`Cannot get link for: ${t}`);return{url:await this.client.getDownloadUrl(c)}}async mkdir(e,t){throw new Error("PikPak Share is read-only")}async rename(e,t,i){throw new Error("PikPak Share is read-only")}async remove(e,t,i){throw new Error("PikPak Share is read-only")}async move(e,t,i,n,s){throw new Error("PikPak Share is read-only")}async copy(e,t,i,n,s){throw new Error("PikPak Share is read-only")}async put(e,t,i){throw new Error("PikPak Share is read-only")}}});var fm,a4=V(()=>{"use strict";Be();He();fm=class{addition;constructor(e){this.addition=e}async init(){if(!this.addition.address||!this.addition.share_name)throw new Error("SMB: address and share_name are required")}cleanPath(e){let t="/"+(e||"").split("/").filter(Boolean).join("/");return t==="/"?"":t}async list(e,t){return de([],this.addition.order_by,this.addition.order_direction)}async get(e,t){let i=this.cleanPath(t),n=i.split("/").filter(Boolean).pop()||"root";return{name:n,size:0,is_dir:i==="",modified:new Date().toISOString(),sign:i||"/",type:X(n,i===""),raw_url:""}}async mkdir(e,t){}async rename(e,t,i){}async remove(e,t,i){}async move(e,t,i,n,s){}async copy(e,t,i,n,s){}async put(e,t,i){}}});var hm=oe((Am,c4)=>{(function(r,e){typeof Am=="object"&&typeof c4<"u"?e(Am):typeof define=="function"&&define.amd?define(["exports"],e):(r=typeof globalThis<"u"?globalThis:r||self,e(r.hashwasm={}))})(Am,(function(r){"use strict";var e="adler32",t="AGFzbQEAAAABDANgAAF/YAAAYAF/AAMHBgABAgEAAgUEAQECAgYOAn8BQYCJBQt/AEGACAsHcAgGbWVtb3J5AgAOSGFzaF9HZXRCdWZmZXIAAAlIYXNoX0luaXQAAQtIYXNoX1VwZGF0ZQACCkhhc2hfRmluYWwAAw1IYXNoX0dldFN0YXRlAAQOSGFzaF9DYWxjdWxhdGUABQpTVEFURV9TSVpFAwEK6wkGBQBBgAkLCgBBAEEBNgKECAvjCAEHf0EAKAKECCIBQf//A3EhAiABQRB2IQMCQAJAIABBAUcNACACQQAtAIAJaiIBQY+AfGogASABQfD/A0sbIgEgA2oiBEEQdCIFQYCAPGogBSAEQfD/A0sbIAFyIQEMAQsCQAJAAkACQAJAIABBEEkNAEGACSEGIABBsCtJDQFBgAkhBgNAQQAhBQNAIAYgBWoiASgCACIEQf8BcSACaiICIANqIAIgBEEIdkH/AXFqIgJqIAIgBEEQdkH/AXFqIgJqIAIgBEEYdmoiAmogAiABQQRqKAIAIgRB/wFxaiICaiACIARBCHZB/wFxaiICaiACIARBEHZB/wFxaiICaiACIARBGHZqIgJqIAIgAUEIaigCACIEQf8BcWoiAmogAiAEQQh2Qf8BcWoiAmogAiAEQRB2Qf8BcWoiAmogAiAEQRh2aiIEaiAEIAFBDGooAgAiAUH/AXFqIgRqIAQgAUEIdkH/AXFqIgRqIAQgAUEQdkH/AXFqIgRqIAQgAUEYdmoiAmohAyAFQRBqIgVBsCtHDQALIANB8f8DcCEDIAJB8f8DcCECIAZBsCtqIQYgAEHQVGoiAEGvK0sNAAsgAEUNBCAAQQ9LDQEMAgsCQCAARQ0AAkACQCAAQQNxIgUNAEGACSEBIAAhBAwBCyAAQXxxIQRBACEBA0AgAiABQYAJai0AAGoiAiADaiEDIAUgAUEBaiIBRw0ACyAFQYAJaiEBCyAAQQRJDQADQCACIAEtAABqIgUgAS0AAWoiBiABLQACaiIAIAFBA2otAABqIgIgACAGIAUgA2pqamohAyABQQRqIQEgBEF8aiIEDQALCyACQY+AfGogAiACQfD/A0sbIANB8f8DcEEQdHIhAQwECwNAIAYoAgAiAUH/AXEgAmoiBCADaiAEIAFBCHZB/wFxaiIEaiAEIAFBEHZB/wFxaiIEaiAEIAFBGHZqIgRqIAQgBkEEaigCACIBQf8BcWoiBGogBCABQQh2Qf8BcWoiBGogBCABQRB2Qf8BcWoiBGogBCABQRh2aiIEaiAEIAZBCGooAgAiAUH/AXFqIgRqIAQgAUEIdkH/AXFqIgRqIAQgAUEQdkH/AXFqIgRqIAQgAUEYdmoiBGogBCAGQQxqKAIAIgFB/wFxaiIEaiAEIAFBCHZB/wFxaiIEaiAEIAFBEHZB/wFxaiIEaiAEIAFBGHZqIgJqIQMgBkEQaiEGIABBcGoiAEEPSw0ACyAARQ0BCyAAQX9qIQcCQCAAQQNxIgVFDQAgAEF8cSEAIAUhBCAGIQEDQCACIAEtAABqIgIgA2ohAyABQQFqIQEgBEF/aiIEDQALIAYgBWohBgsgB0EDSQ0AA0AgAiAGLQAAaiIBIAYtAAFqIgQgBi0AAmoiBSAGQQNqLQAAaiICIAUgBCABIANqampqIQMgBkEEaiEGIABBfGoiAA0ACwsgA0Hx/wNwIQMgAkHx/wNwIQILIAIgA0EQdHIhAQtBACABNgKECAsxAQF/QQBBACgChAgiAEEYdCAAQYD+A3FBCHRyIABBCHZBgP4DcSAAQRh2cnI2AoAJCwUAQYQICzsAQQBBATYChAggABACQQBBACgChAgiAEEYdCAAQYD+A3FBCHRyIABBCHZBgP4DcSAAQRh2cnI2AoAJCwsVAgBBgAgLBAQAAAAAQYQICwQBAAAA",i="02ddbd17",n={name:e,data:t,hash:i};function s(S,q,M,Y){function ie(ae){return ae instanceof M?ae:new M(function(ge){ge(ae)})}return new(M||(M=Promise))(function(ae,ge){function xe(jt){try{qt(Y.next(jt))}catch(rr){ge(rr)}}function Je(jt){try{qt(Y.throw(jt))}catch(rr){ge(rr)}}function qt(jt){jt.done?ae(jt.value):ie(jt.value).then(xe,Je)}qt((Y=Y.apply(S,q||[])).next())})}typeof SuppressedError=="function"&&SuppressedError;class o{constructor(){this.mutex=Promise.resolve()}lock(){let q=()=>{};return this.mutex=this.mutex.then(()=>new Promise(q)),new Promise(M=>{q=M})}dispatch(q){return s(this,void 0,void 0,function*(){let M=yield this.lock();try{return yield Promise.resolve(q())}finally{M()}})}}var a;function c(){return typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:global}let l=c(),d=(a=l.Buffer)!==null&&a!==void 0?a:null,u=l.TextEncoder?new l.TextEncoder:null;function f(S,q){return String.fromCharCode(...S.subarray(0,q))}function h(S,q){return(S&15)+(S>>6|S>>3&8)<<4|(q&15)+(q>>6|q>>3&8)}function g(S,q){let M=q.length>>1;for(let Y=0;Y<M;Y++){let ie=Y<<1;S[Y]=h(q.charCodeAt(ie),q.charCodeAt(ie+1))}}function p(S,q){if(S.length!==q.length*2)return!1;for(let M=0;M<q.length;M++){let Y=M<<1;if(q[M]!==h(S.charCodeAt(Y),S.charCodeAt(Y+1)))return!1}return!0}let I=87,y=48;function w(S,q,M){let Y=0;for(let ie=0;ie<M;ie++){let ae=q[ie]>>>4;S[Y++]=ae>9?ae+I:ae+y,ae=q[ie]&15,S[Y++]=ae>9?ae+I:ae+y}return String.fromCharCode.apply(null,S)}let C=d!==null?S=>{if(typeof S=="string"){let q=d.from(S,"utf8");return new Uint8Array(q.buffer,q.byteOffset,q.length)}if(d.isBuffer(S))return new Uint8Array(S.buffer,S.byteOffset,S.length);if(ArrayBuffer.isView(S))return new Uint8Array(S.buffer,S.byteOffset,S.byteLength);throw new Error("Invalid data type!")}:S=>{if(typeof S=="string")return u.encode(S);if(ArrayBuffer.isView(S))return new Uint8Array(S.buffer,S.byteOffset,S.byteLength);throw new Error("Invalid data type!")},b="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",x=new Uint8Array(256);for(let S=0;S<b.length;S++)x[b.charCodeAt(S)]=S;function _(S,q=!0){let M=S.length,Y=M%3,ie=[],ae=M-Y;for(let ge=0;ge<ae;ge+=3){let xe=(S[ge]<<16&16711680)+(S[ge+1]<<8&65280)+(S[ge+2]&255),Je=b.charAt(xe>>18&63)+b.charAt(xe>>12&63)+b.charAt(xe>>6&63)+b.charAt(xe&63);ie.push(Je)}if(Y===1){let ge=S[M-1],xe=b.charAt(ge>>2),Je=b.charAt(ge<<4&63);ie.push(`${xe}${Je}`),q&&ie.push("==")}else if(Y===2){let ge=(S[M-2]<<8)+S[M-1],xe=b.charAt(ge>>10),Je=b.charAt(ge>>4&63),qt=b.charAt(ge<<2&63);ie.push(`${xe}${Je}${qt}`),q&&ie.push("=")}return ie.join("")}function R(S){let q=Math.floor(S.length*.75),M=S.length;return S[M-1]==="="&&(q-=1,S[M-2]==="="&&(q-=1)),q}function U(S){let q=R(S),M=S.length,Y=new Uint8Array(q),ie=0;for(let ae=0;ae<M;ae+=4){let ge=x[S.charCodeAt(ae)],xe=x[S.charCodeAt(ae+1)],Je=x[S.charCodeAt(ae+2)],qt=x[S.charCodeAt(ae+3)];Y[ie]=ge<<2|xe>>4,ie+=1,Y[ie]=(xe&15)<<4|Je>>2,ie+=1,Y[ie]=(Je&3)<<6|qt&63,ie+=1}return Y}let T=16*1024,D=4,B=new o,Q=new Map;function v(S,q){return s(this,void 0,void 0,function*(){let M=null,Y=null,ie=!1;if(typeof WebAssembly>"u")throw new Error("WebAssembly is not supported in this environment!");let ae=(je,nt=0)=>{Y.set(je,nt)},ge=()=>Y,xe=()=>M.exports,Je=je=>{M.exports.Hash_SetMemorySize(je);let nt=M.exports.Hash_GetBuffer(),ii=M.exports.memory.buffer;Y=new Uint8Array(ii,nt,je)},qt=()=>new DataView(M.exports.memory.buffer).getUint32(M.exports.STATE_SIZE,!0),jt=B.dispatch(()=>s(this,void 0,void 0,function*(){if(!Q.has(S.name)){let nt=U(S.data),ii=WebAssembly.compile(nt);Q.set(S.name,ii)}let je=yield Q.get(S.name);M=yield WebAssembly.instantiate(je,{})})),rr=()=>s(this,void 0,void 0,function*(){M||(yield jt);let je=M.exports.Hash_GetBuffer(),nt=M.exports.memory.buffer;Y=new Uint8Array(nt,je,T)}),Ot=(je=null)=>{ie=!0,M.exports.Hash_Init(je)},ji=je=>{let nt=0;for(;nt<je.length;){let ii=je.subarray(nt,nt+T);nt+=ii.length,Y.set(ii),M.exports.Hash_Update(ii.length)}},Lr=je=>{if(!ie)throw new Error("update() called before init()");let nt=C(je);ji(nt)},lu=new Uint8Array(q*2),bo=(je,nt=null)=>{if(!ie)throw new Error("digest() called before init()");return ie=!1,M.exports.Hash_Final(nt),je==="binary"?Y.slice(0,q):w(lu,Y,q)},yn=()=>{if(!ie)throw new Error("save() can only be called after init() and before digest()");let je=M.exports.Hash_GetState(),nt=qt(),ii=M.exports.memory.buffer,Ja=new Uint8Array(ii,je,nt),du=new Uint8Array(D+nt);return g(du,S.hash),du.set(Ja,D),du},vo=je=>{if(!(je instanceof Uint8Array))throw new Error("load() expects an Uint8Array generated by save()");let nt=M.exports.Hash_GetState(),ii=qt(),Ja=D+ii,du=M.exports.memory.buffer;if(je.length!==Ja)throw new Error(`Bad state length (expected ${Ja} bytes, got ${je.length})`);if(!p(S.hash,je.subarray(0,D)))throw new Error("This state was written by an incompatible hash implementation");let $M=je.subarray(D);new Uint8Array(du,nt,ii).set($M),ie=!0},fl=je=>typeof je=="string"?je.length<T/4:je.byteLength<T,vs=fl;switch(S.name){case"argon2":case"scrypt":vs=()=>!0;break;case"blake2b":case"blake2s":vs=(je,nt)=>nt<=512&&fl(je);break;case"blake3":vs=(je,nt)=>nt===0&&fl(je);break;case"xxhash64":case"xxhash3":case"xxhash128":case"crc64":vs=()=>!1;break}let ko=(je,nt=null,ii=null)=>{if(!vs(je,nt))return Ot(nt),Lr(je),bo("hex",ii);let Ja=C(je);return Y.set(Ja),M.exports.Hash_Calculate(Ja.length,nt,ii),w(lu,Y,q)};return yield rr(),{getMemory:ge,writeMemory:ae,getExports:xe,setMemorySize:Je,init:Ot,update:Lr,digest:bo,save:yn,load:vo,calculate:ko,hashLength:q}})}function E(S,q,M){return s(this,void 0,void 0,function*(){let Y=yield S.lock(),ie=yield v(q,M);return Y(),ie})}let P=new o,N=null;function J(S){if(N===null)return E(P,n,4).then(q=>(N=q,N.calculate(S)));try{let q=N.calculate(S);return Promise.resolve(q)}catch(q){return Promise.reject(q)}}function z(){return v(n,4).then(S=>{S.init();let q={init:()=>(S.init(),q),update:M=>(S.update(M),q),digest:M=>S.digest(M),save:()=>S.save(),load:M=>(S.load(M),q),blockSize:4,digestSize:4};return q})}var L="argon2",G="AGFzbQEAAAABKQVgAX8Bf2AAAX9gEH9/f39/f39/f39/f39/f38AYAR/f39/AGACf38AAwYFAAECAwQFBgEBAoCAAgYIAX8BQZCoBAsHQQQGbWVtb3J5AgASSGFzaF9TZXRNZW1vcnlTaXplAAAOSGFzaF9HZXRCdWZmZXIAAQ5IYXNoX0NhbGN1bGF0ZQAECvEyBVgBAn9BACEBAkAgAEEAKAKICCICRg0AAkAgACACayIAQRB2IABBgIB8cSAASWoiAEAAQX9HDQBB/wHADwtBACEBQQBBACkDiAggAEEQdK18NwOICAsgAcALcAECfwJAQQAoAoAIIgANAEEAPwBBEHQiADYCgAhBACgCiAgiAUGAgCBGDQACQEGAgCAgAWsiAEEQdiAAQYCAfHEgAElqIgBAAEF/Rw0AQQAPC0EAQQApA4gIIABBEHStfDcDiAhBACgCgAghAAsgAAvcDgECfiAAIAQpAwAiECAAKQMAIhF8IBFCAYZC/v///x+DIBBC/////w+DfnwiEDcDACAMIBAgDCkDAIVCIIkiEDcDACAIIBAgCCkDACIRfCARQgGGQv7///8fgyAQQv////8Pg358IhA3AwAgBCAQIAQpAwCFQiiJIhA3AwAgACAQIAApAwAiEXwgEEL/////D4MgEUIBhkL+////H4N+fCIQNwMAIAwgECAMKQMAhUIwiSIQNwMAIAggECAIKQMAIhF8IBBC/////w+DIBFCAYZC/v///x+DfnwiEDcDACAEIBAgBCkDAIVCAYk3AwAgASAFKQMAIhAgASkDACIRfCARQgGGQv7///8fgyAQQv////8Pg358IhA3AwAgDSAQIA0pAwCFQiCJIhA3AwAgCSAQIAkpAwAiEXwgEUIBhkL+////H4MgEEL/////D4N+fCIQNwMAIAUgECAFKQMAhUIoiSIQNwMAIAEgECABKQMAIhF8IBBC/////w+DIBFCAYZC/v///x+DfnwiEDcDACANIBAgDSkDAIVCMIkiEDcDACAJIBAgCSkDACIRfCAQQv////8PgyARQgGGQv7///8fg358IhA3AwAgBSAQIAUpAwCFQgGJNwMAIAIgBikDACIQIAIpAwAiEXwgEUIBhkL+////H4MgEEL/////D4N+fCIQNwMAIA4gECAOKQMAhUIgiSIQNwMAIAogECAKKQMAIhF8IBFCAYZC/v///x+DIBBC/////w+DfnwiEDcDACAGIBAgBikDAIVCKIkiEDcDACACIBAgAikDACIRfCAQQv////8PgyARQgGGQv7///8fg358IhA3AwAgDiAQIA4pAwCFQjCJIhA3AwAgCiAQIAopAwAiEXwgEEL/////D4MgEUIBhkL+////H4N+fCIQNwMAIAYgECAGKQMAhUIBiTcDACADIAcpAwAiECADKQMAIhF8IBFCAYZC/v///x+DIBBC/////w+DfnwiEDcDACAPIBAgDykDAIVCIIkiEDcDACALIBAgCykDACIRfCARQgGGQv7///8fgyAQQv////8Pg358IhA3AwAgByAQIAcpAwCFQiiJIhA3AwAgAyAQIAMpAwAiEXwgEEL/////D4MgEUIBhkL+////H4N+fCIQNwMAIA8gECAPKQMAhUIwiSIQNwMAIAsgECALKQMAIhF8IBBC/////w+DIBFCAYZC/v///x+DfnwiEDcDACAHIBAgBykDAIVCAYk3AwAgACAFKQMAIhAgACkDACIRfCARQgGGQv7///8fgyAQQv////8Pg358IhA3AwAgDyAQIA8pAwCFQiCJIhA3AwAgCiAQIAopAwAiEXwgEUIBhkL+////H4MgEEL/////D4N+fCIQNwMAIAUgECAFKQMAhUIoiSIQNwMAIAAgECAAKQMAIhF8IBBC/////w+DIBFCAYZC/v///x+DfnwiEDcDACAPIBAgDykDAIVCMIkiEDcDACAKIBAgCikDACIRfCAQQv////8PgyARQgGGQv7///8fg358IhA3AwAgBSAQIAUpAwCFQgGJNwMAIAEgBikDACIQIAEpAwAiEXwgEUIBhkL+////H4MgEEL/////D4N+fCIQNwMAIAwgECAMKQMAhUIgiSIQNwMAIAsgECALKQMAIhF8IBFCAYZC/v///x+DIBBC/////w+DfnwiEDcDACAGIBAgBikDAIVCKIkiEDcDACABIBAgASkDACIRfCAQQv////8PgyARQgGGQv7///8fg358IhA3AwAgDCAQIAwpAwCFQjCJIhA3AwAgCyAQIAspAwAiEXwgEEL/////D4MgEUIBhkL+////H4N+fCIQNwMAIAYgECAGKQMAhUIBiTcDACACIAcpAwAiECACKQMAIhF8IBFCAYZC/v///x+DIBBC/////w+DfnwiEDcDACANIBAgDSkDAIVCIIkiEDcDACAIIBAgCCkDACIRfCARQgGGQv7///8fgyAQQv////8Pg358IhA3AwAgByAQIAcpAwCFQiiJIhA3AwAgAiAQIAIpAwAiEXwgEEL/////D4MgEUIBhkL+////H4N+fCIQNwMAIA0gECANKQMAhUIwiSIQNwMAIAggECAIKQMAIhF8IBBC/////w+DIBFCAYZC/v///x+DfnwiEDcDACAHIBAgBykDAIVCAYk3AwAgAyAEKQMAIhAgAykDACIRfCARQgGGQv7///8fgyAQQv////8Pg358IhA3AwAgDiAQIA4pAwCFQiCJIhA3AwAgCSAQIAkpAwAiEXwgEUIBhkL+////H4MgEEL/////D4N+fCIQNwMAIAQgECAEKQMAhUIoiSIQNwMAIAMgECADKQMAIhF8IBBC/////w+DIBFCAYZC/v///x+DfnwiEDcDACAOIBAgDikDAIVCMIkiEDcDACAJIBAgCSkDACIRfCAQQv////8PgyARQgGGQv7///8fg358IhA3AwAgBCAQIAQpAwCFQgGJNwMAC98aAQN/QQAhBEEAIAIpAwAgASkDAIU3A5AIQQAgAikDCCABKQMIhTcDmAhBACACKQMQIAEpAxCFNwOgCEEAIAIpAxggASkDGIU3A6gIQQAgAikDICABKQMghTcDsAhBACACKQMoIAEpAyiFNwO4CEEAIAIpAzAgASkDMIU3A8AIQQAgAikDOCABKQM4hTcDyAhBACACKQNAIAEpA0CFNwPQCEEAIAIpA0ggASkDSIU3A9gIQQAgAikDUCABKQNQhTcD4AhBACACKQNYIAEpA1iFNwPoCEEAIAIpA2AgASkDYIU3A/AIQQAgAikDaCABKQNohTcD+AhBACACKQNwIAEpA3CFNwOACUEAIAIpA3ggASkDeIU3A4gJQQAgAikDgAEgASkDgAGFNwOQCUEAIAIpA4gBIAEpA4gBhTcDmAlBACACKQOQASABKQOQAYU3A6AJQQAgAikDmAEgASkDmAGFNwOoCUEAIAIpA6ABIAEpA6ABhTcDsAlBACACKQOoASABKQOoAYU3A7gJQQAgAikDsAEgASkDsAGFNwPACUEAIAIpA7gBIAEpA7gBhTcDyAlBACACKQPAASABKQPAAYU3A9AJQQAgAikDyAEgASkD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",K="e4cdc523",j={name:L,data:G,hash:K},te="blake2b",re="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",ee="c6f286e6",Z={name:te,data:re,hash:ee};let me=new o,le=null;function Ae(S){return!Number.isInteger(S)||S<8||S>512||S%8!==0?new Error("Invalid variant! Valid values: 8, 16, ..., 512"):null}function ve(S,q){return S|q<<16}function qe(S,q=512,M=null){if(Ae(q))return Promise.reject(Ae(q));let Y=null,ie=q;if(M!==null){if(Y=C(M),Y.length>64)return Promise.reject(new Error("Max key length is 64 bytes"));ie=ve(q,Y.length)}let ae=q/8;if(le===null||le.hashLength!==ae)return E(me,Z,ae).then(ge=>(le=ge,ie>512&&le.writeMemory(Y),le.calculate(S,ie)));try{ie>512&&le.writeMemory(Y);let ge=le.calculate(S,ie);return Promise.resolve(ge)}catch(ge){return Promise.reject(ge)}}function _e(S=512,q=null){if(Ae(S))return Promise.reject(Ae(S));let M=null,Y=S;if(q!==null){if(M=C(q),M.length>64)return Promise.reject(new Error("Max key length is 64 bytes"));Y=ve(S,M.length)}let ie=S/8;return v(Z,ie).then(ae=>{Y>512&&ae.writeMemory(M),ae.init(Y);let ge={init:Y>512?()=>(ae.writeMemory(M),ae.init(Y),ge):()=>(ae.init(Y),ge),update:xe=>(ae.update(xe),ge),digest:xe=>ae.digest(xe),save:()=>ae.save(),load:xe=>(ae.load(xe),ge),blockSize:128,digestSize:ie};return ge})}function se(S,q,M){let Y=[`m=${q.memorySize}`,`t=${q.iterations}`,`p=${q.parallelism}`].join(",");return`$argon2${q.hashType}$v=19$${Y}$${_(S,!1)}$${_(M,!1)}`}let it=new DataView(new ArrayBuffer(4));function ce(S){return it.setInt32(0,S,!0),new Uint8Array(it.buffer)}function dr(S,q,M){return s(this,void 0,void 0,function*(){if(M<=64){let Je=yield _e(M*8);return Je.update(ce(M)),Je.update(q),Je.digest("binary")}let Y=Math.ceil(M/32)-2,ie=new Uint8Array(M);S.init(),S.update(ce(M)),S.update(q);let ae=S.digest("binary");ie.set(ae.subarray(0,32),0);for(let Je=1;Je<Y;Je++)S.init(),S.update(ae),ae=S.digest("binary"),ie.set(ae.subarray(0,32),Je*32);let ge=M-32*Y,xe;return ge===64?(xe=S,xe.init()):xe=yield _e(ge*8),xe.update(ae),ae=xe.digest("binary"),ie.set(ae.subarray(0,ge),Y*32),ie})}function qr(S){switch(S){case"d":return 0;case"i":return 1;default:return 2}}function ct(S){return s(this,void 0,void 0,function*(){var q;let{parallelism:M,iterations:Y,hashLength:ie}=S,ae=C(S.password),ge=C(S.salt),xe=19,Je=qr(S.hashType),{memorySize:qt}=S,jt=C((q=S.secret)!==null&&q!==void 0?q:""),[rr,Ot]=yield Promise.all([v(j,1024),_e(512)]);rr.setMemorySize(qt*1024+1024);let ji=new Uint8Array(24),Lr=new DataView(ji.buffer);Lr.setInt32(0,M,!0),Lr.setInt32(4,ie,!0),Lr.setInt32(8,qt,!0),Lr.setInt32(12,Y,!0),Lr.setInt32(16,xe,!0),Lr.setInt32(20,Je,!0),rr.writeMemory(ji,qt*1024),Ot.init(),Ot.update(ji),Ot.update(ce(ae.length)),Ot.update(ae),Ot.update(ce(ge.length)),Ot.update(ge),Ot.update(ce(jt.length)),Ot.update(jt),Ot.update(ce(0));let bo=Math.floor(qt/(M*4))*4,yn=new Uint8Array(72),vo=Ot.digest("binary");yn.set(vo);for(let ko=0;ko<M;ko++){yn.set(ce(0),64),yn.set(ce(ko),68);let je=ko*bo,nt=yield dr(Ot,yn,1024);rr.writeMemory(nt,je*1024),je+=1,yn.set(ce(1),64),nt=yield dr(Ot,yn,1024),rr.writeMemory(nt,je*1024)}let fl=new Uint8Array(1024);g(fl,rr.calculate(new Uint8Array([]),qt));let vs=yield dr(Ot,fl,ie);if(S.outputType==="hex"){let ko=new Uint8Array(ie*2);return w(ko,vs,ie)}return S.outputType==="encoded"?se(ge,S,vs):vs})}let we=S=>{var q;if(!S||typeof S!="object")throw new Error("Invalid options parameter. It requires an object.");if(!S.password)throw new Error("Password must be specified");if(S.password=C(S.password),S.password.length<1)throw new Error("Password must be specified");if(!S.salt)throw new Error("Salt must be specified");if(S.salt=C(S.salt),S.salt.length<8)throw new Error("Salt should be at least 8 bytes long");if(S.secret=C((q=S.secret)!==null&&q!==void 0?q:""),!Number.isInteger(S.iterations)||S.iterations<1)throw new Error("Iterations should be a positive number");if(!Number.isInteger(S.parallelism)||S.parallelism<1)throw new Error("Parallelism should be a positive number");if(!Number.isInteger(S.hashLength)||S.hashLength<4)throw new Error("Hash length should be at least 4 bytes.");if(!Number.isInteger(S.memorySize))throw new Error("Memory size should be specified.");if(S.memorySize<8*S.parallelism)throw new Error("Memory size should be at least 8 * parallelism.");if(S.outputType===void 0&&(S.outputType="hex"),!["hex","binary","encoded"].includes(S.outputType))throw new Error(`Insupported output type ${S.outputType}. Valid values: ['hex', 'binary', 'encoded']`)};function Ee(S){return s(this,void 0,void 0,function*(){return we(S),ct(Object.assign(Object.assign({},S),{hashType:"i"}))})}function Ki(S){return s(this,void 0,void 0,function*(){return we(S),ct(Object.assign(Object.assign({},S),{hashType:"id"}))})}function wo(S){return s(this,void 0,void 0,function*(){return we(S),ct(Object.assign(Object.assign({},S),{hashType:"d"}))})}let Se=(S,q,M)=>{let Y=/^\$argon2(id|i|d)\$v=([0-9]+)\$((?:[mtp]=[0-9]+,){2}[mtp]=[0-9]+)\$([A-Za-z0-9+/]+)\$([A-Za-z0-9+/]+)$/,ie=q.match(Y);if(!ie)throw new Error("Invalid hash");let[,ae,ge,xe,Je,qt]=ie;if(ge!=="19")throw new Error(`Unsupported version: ${ge}`);let jt={},rr={m:"memorySize",p:"parallelism",t:"iterations"};for(let Ot of xe.split(",")){let[ji,Lr]=Ot.split("=");jt[rr[ji]]=Number(Lr)}return Object.assign(Object.assign({},jt),{password:S,secret:M,hashType:ae,salt:U(Je),hashLength:R(qt),outputType:"encoded"})},Dt=S=>{if(!S||typeof S!="object")throw new Error("Invalid options parameter. It requires an object.");if(S.hash===void 0||typeof S.hash!="string")throw new Error("Hash should be specified")};function Cs(S){return s(this,void 0,void 0,function*(){Dt(S);let q=Se(S.password,S.hash,S.secret);we(q);let M=S.hash.lastIndexOf("$")+1;return(yield ct(q)).substring(M)===S.hash.substring(M)})}var Ce="blake2s",Gi="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",ri="5c0ff166",Ir={name:Ce,data:Gi,hash:ri};let tr=new o,ur=null;function Qe(S){return!Number.isInteger(S)||S<8||S>256||S%8!==0?new Error("Invalid variant! Valid values: 8, 16, ..., 256"):null}function be(S,q){return S|q<<16}function cl(S,q=256,M=null){if(Qe(q))return Promise.reject(Qe(q));let Y=null,ie=q;if(M!==null){if(Y=C(M),Y.length>32)return Promise.reject(new Error("Max key length is 32 bytes"));ie=be(q,Y.length)}let ae=q/8;if(ur===null||ur.hashLength!==ae)return E(tr,Ir,ae).then(ge=>(ur=ge,ie>512&&ur.writeMemory(Y),ur.calculate(S,ie)));try{ie>512&&ur.writeMemory(Y);let ge=ur.calculate(S,ie);return Promise.resolve(ge)}catch(ge){return Promise.reject(ge)}}function fi(S=256,q=null){if(Qe(S))return Promise.reject(Qe(S));let M=null,Y=S;if(q!==null){if(M=C(q),M.length>32)return Promise.reject(new Error("Max key length is 32 bytes"));Y=be(S,M.length)}let ie=S/8;return v(Ir,ie).then(ae=>{Y>512&&ae.writeMemory(M),ae.init(Y);let ge={init:Y>512?()=>(ae.writeMemory(M),ae.init(Y),ge):()=>(ae.init(Y),ge),update:xe=>(ae.update(xe),ge),digest:xe=>ae.digest(xe),save:()=>ae.save(),load:xe=>(ae.load(xe),ge),blockSize:64,digestSize:ie};return ge})}var Or="blake3",Rn="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IQEgAkFAaiICQcAASw0ACwsCQEHAACAHQf8BcSIGayIFIAIgBSACSRsiCUUNACAJQQNxIQtBACEFAkAgCUEESQ0AIAAgBmohByAJQfwAcSEIQQAhBQNAIAcgBWoiAkEoaiABIAVqIgotAAA6AAAgAkEpaiAKQQFqLQAAOgAAIAJBKmogCkECai0AADoAACACQStqIApBA2otAAA6AAAgCCAFQQRqIgVHDQALCwJAIAtFDQAgASAFaiEBIAUgBmogAGpBKGohBQNAIAUgAS0AADoAACABQQFqIQEgBUEBaiEFIAtBf2oiCw0ACwsgAC0AaCEHCyAAIAcgCWo6AGggA0HAAGokAAveAwQFfwN+BX8GfiMAQdABayIBJAACQCAAe6ciAkEALQCQigEiA08NAEEALQCKigFBBHIhBCABQShqIQVBACkDmIkBIQBBACkDkIkBIQZBACkDiIkBIQdBACkDgIkBIQggAyEJA0AgASAANwMYIAEgBjcDECABIAc3AwggASAINwMAIAEgA0EFdCIDQdGJAWoiCikDADcDKCABIANB2YkBaiILKQMANwMwIAEgA0HhiQFqIgwpAwA3AzggASADQemJAWoiDSkDADcDQCABIANB8YkBaikDADcDSCABIANB+YkBaikDADcDUCABIANBgYoBaikDADcDWCADQYmKAWopAwAhDiABQcAAOgBoIAEgDjcDYCABQgA3AyAgASAEOgBpIAEgADcDiAEgASAGNwOAASABIAc3A3ggASAINwNwIAFBkAFqIAFB8ABqIAVBwABCACAEQf8BcRACIAEpA7ABIQ4gASkDkAEhDyABKQO4ASEQIAEpA5gBIREgASkDwAEhEiABKQOgASETIA0gASkDyAEgASkDqAGFNwMAIAwgEiAThTcDACALIBAgEYU3AwAgCiAOIA+FNwMAIAlBf2oiCUH/AXEiAyACSw0AC0EAIAk6AJCKAQsgAUHQAWokAAvHCQIKfwV+IwBB4AJrIgUkAAJAAkAgAUGACEsNACAFIAA2AvwBIAVB/AFqIAFBgAhGIgZBECACQQEgA0EBQQIgBBABIAZBCnQiByABTw0BIAVB4ABqIgZCADcDACAFQdgAaiIIQgA3AwAgBUHQAGoiCUIANwMAIAVByABqIgpCADcDACAFQcAAaiILQgA3AwAgBUE4aiIMQgA3AwAgBUEwaiINQgA3AwAgBSADOgBqIAVCADcDKCAFQQA7AWggBUEAKQOAiQE3AwAgBUEAKQOIiQE3AwggBUEAKQOQiQE3AxAgBUEAKQOYiQE3AxggBSABQYAIRiIOrSACfDcDICAFIAAgB2pBACABIA4bEAQgBUGIAWpBMGogDSkDADcDACAFQYgBakE4aiAMKQMANwMAIAUgBSkDACIPNwOIASAFIAUpAwgiEDcDkAEgBSAFKQMQIhE3A5gBIAUgBSkDGCISNwOgASAFIAUpAyg3A7ABIAUtAGohACAFLQBpIQcgBSkDICECIAUtAGghASAFQYgBakHAAGogCykDADcDACAFQYgBakHIAGogCikDADcDACAFQYgBakHQAGogCSkDADcDACAFQYgBakHYAGogCCkDADcDACAFQYgBakHgAGogBikDADcDACAFIAE6APABIAUgAjcDqAEgBSAAIAdFckECciIAOgDxASAFIBI3A5gCIAUgETcDkAIgBSAQNwOIAiAFIA83A4ACIAVBoAJqIAVBgAJqIAVBsAFqIAEgAiAAQf8BcRACIAUpA8ACIQIgBSkDoAIhDyAFKQPIAiEQIAUpA6gCIREgBSkD0AIhEiAFKQOwAiETIAQgDkEFdGoiASAFKQPYAiAFKQO4AoU3AxggASASIBOFNwMQIAEgECARhTcDCCABIAIgD4U3AwBBAkEBIA4bIQYMAQsgAEIBIAFBf2pBCnZBAXKteUI/hYYiD6dBCnQiDiACIAMgBRAGIQcgACAOaiABIA5rIA9C////AYMgAnwgAyAFQcAAQSAgDkGACEsbahAGIQECQCAHQQFHDQAgBCAFKQMANwMAIAQgBSkDCDcDCCAEIAUpAxA3AxAgBCAFKQMYNwMYIAQgBSkDIDcDICAEIAUpAyg3AyggBCAFKQMwNwMwIAQgBSkDODcDOEECIQYMAQtBACEGQQAhAAJAIAEgB2oiCUECSQ0AIAlBfmoiCkEBdkEBaiIGQQNxIQ5BACEHAkAgCkEGSQ0AIAZB/P///wdxIQhBACEHIAVBiAFqIQEgBSEAA0AgASAANgIAIAFBDGogAEHAAWo2AgAgAUEIaiAAQYABajYCACABQQRqIABBwABqNgIAIABBgAJqIQAgAUEQaiEBIAggB0EEaiIHRw0ACwsgCkF+cSEIAkAgDkUNACAFIAdBBnRqIQEgBUGIAWogB0ECdGohAANAIAAgATYCACABQcAAaiEBIABBBGohACAOQX9qIg4NAAsLIAhBAmohAAsgBUGIAWogBkEBQgBBACADQQRyQQBBACAEEAEgACAJTw0AIAQgBkEFdGoiASAFIAZBBnRqIgApAwA3AwAgASAAKQMINwMIIAEgACkDEDcDECABIAApAxg3AxggBkEBaiEGCyAFQeACaiQAIAYLrRAIAn8EfgF/AX4EfwR+BH8EfiMAQfABayIBJAACQCAARQ0AAkBBAC0AkIoBIgINACABQTBqQQApA9CJATcDACABQThqQQApA9iJATcDACABQQApA6CJASIDNwMAIAFBACkDqIkBIgQ3AwggAUEAKQOwiQEiBTcDECABQQApA7iJASIGNwMYIAFBACkDyIkBNwMoQQAtAIqKASECQQAtAImKASEHQQApA8CJASEIQQAtAIiKASEJIAFBwABqQQApA+CJATcDACABQcgAakEAKQPoiQE3AwAgAUHQAGpBACkD8IkBNwMAIAFB2ABqQQApA/iJATcDACABQeAAakEAKQOAigE3AwAgASAJOgBoIAEgCDcDICABIAIgB0VyIgJBAnI6AGkgAUEoaiEKQgAhCEGACSELIAJBCnJB/wFxIQwDQCABQbABaiABIAogCUH/AXEgCCAMEAIgASABKQPQASINIAEpA7ABhTcDcCABIAEpA9gBIg4gASkDuAGFNwN4IAEgASkD4AEiDyABKQPAAYU3A4ABIAEgASkD6AEiECAGhTcDqAEgASAPIAWFNwOgASABIA4gBIU3A5gBIAEgDSADhTcDkAEgASAQIAEpA8gBhTcDiAEgAEHAACAAQcAASRsiEUF/aiESAkACQCARQQdxIhMNACABQfAAaiECIAshByARIRQMAQsgEUH4AHEhFCABQfAAaiECIAshBwNAIAcgAi0AADoAACAHQQFqIQcgAkEBaiECIBNBf2oiEw0ACwsCQCASQQdJDQADQCAHIAIpAAA3AAAgB0EIaiEHIAJBCGohAiAUQXhqIhQNAAsLIAhCAXwhCCALIBFqIQsgACARayIADQAMAgsLAkACQAJAQQAtAImKASIHQQZ0QQBBAC0AiIoBIhFrRg0AIAEgEToAaCABQQApA4CKATcDYCABQQApA/iJATcDWCABQQApA/CJATcDUCABQQApA+iJATcDSCABQQApA+CJATcDQCABQQApA9iJATcDOCABQQApA9CJATcDMCABQQApA8iJATcDKCABQQApA8CJASIINwMgIAFBACkDuIkBIgM3AxggAUEAKQOwiQEiBDcDECABQQApA6iJASIFNwMIIAFBACkDoIkBIgY3AwAgAUEALQCKigEiEyAHRXJBAnIiCzoAaSATQQRyIRNBACkDmIkBIQ1BACkDkIkBIQ5BACkDiIkBIQ9BACkDgIkBIRAMAQtBwAAhESABQcAAOgBoQgAhCCABQgA3AyAgAUEAKQOYiQEiDTcDGCABQQApA5CJASIONwMQIAFBACkDiIkBIg83AwggAUEAKQOAiQEiEDcDACABQQAtAIqKAUEEciITOgBpIAEgAkF+aiICQQV0IgdByYoBaikDADcDYCABIAdBwYoBaikDADcDWCABIAdBuYoBaikDADcDUCABIAdBsYoBaikDADcDSCABIAdBqYoBaikDADcDQCABIAdBoYoBaikDADcDOCABIAdBmYoBaikDADcDMCABIAdBkYoBaikDADcDKCATIQsgECEGIA8hBSAOIQQgDSEDIAJFDQELIAJBf2oiB0EFdCIUQZGKAWopAwAhFSAUQZmKAWopAwAhFiAUQaGKAWopAwAhFyAUQamKAWopAwAhGCABIAM3A4gBIAEgBDcDgAEgASAFNwN4IAEgBjcDcCABQbABaiABQfAAaiABQShqIhQgESAIIAtB/wFxEAIgASATOgBpIAFBwAA6AGggASAYNwNAIAEgFzcDOCABIBY3AzAgASAVNwMoIAFCADcDICABIA03AxggASAONwMQIAEgDzcDCCABIBA3AwAgASABKQPoASABKQPIAYU3A2AgASABKQPgASABKQPAAYU3A1ggASABKQPYASABKQO4AYU3A1AgASABKQPQASABKQOwAYU3A0ggB0UNACACQQV0QemJAWohAiATQf8BcSERA0AgAkFoaikDACEIIAJBcGopAwAhAyACQXhqKQMAIQQgAikDACEFIAEgDTcDiAEgASAONwOAASABIA83A3ggASAQNwNwIAFBsAFqIAFB8ABqIBRBwABCACAREAIgASATOgBpIAFBwAA6AGggASAFNwNAIAEgBDcDOCABIAM3AzAgASAINwMoIAFCADcDICABIA03AxggASAONwMQIAEgDzcDCCABIBA3AwAgASABKQPoASABKQPIAYU3A2AgASABKQPgASABKQPAAYU3A1ggASABKQPYASABKQO4AYU3A1AgASABKQPQASABKQOwAYU3A0ggAkFgaiECIAdBf2oiBw0ACwsgAUEoaiEJQgAhCEGACSELIBNBCHJB/wFxIQoDQCABQbABaiABIAlBwAAgCCAKEAIgASABKQPQASIDIAEpA7ABhTcDcCABIAEpA9gBIgQgASkDuAGFNwN4IAEgASkD4AEiBSABKQPAAYU3A4ABIAEgDSABKQPoASIGhTcDqAEgASAOIAWFNwOgASABIA8gBIU3A5gBIAEgECADhTcDkAEgASAGIAEpA8gBhTcDiAEgAEHAACAAQcAASRsiEUF/aiESAkACQCARQQdxIhMNACABQfAAaiECIAshByARIRQMAQsgEUH4AHEhFCABQfAAaiECIAshBwNAIAcgAi0AADoAACAHQQFqIQcgAkEBaiECIBNBf2oiEw0ACwsCQCASQQdJDQADQCAHIAIpAAA3AAAgB0EIaiEHIAJBCGohAiAUQXhqIhQNAAsLIAhCAXwhCCALIBFqIQsgACARayIADQALCyABQfABaiQAC6MCAQR+AkACQCAAQSBGDQBCq7OP/JGjs/DbACEBQv+kuYjFkdqCm38hAkLy5rvjo6f9p6V/IQNC58yn0NbQ67O7fyEEQQAhAAwBC0EAKQOYCSEBQQApA5AJIQJBACkDiAkhA0EAKQOACSEEQRAhAAtBACAAOgCKigFBAEIANwOAigFBAEIANwP4iQFBAEIANwPwiQFBAEIANwPoiQFBAEIANwPgiQFBAEIANwPYiQFBAEIANwPQiQFBAEIANwPIiQFBAEIANwPAiQFBACABNwO4iQFBACACNwOwiQFBACADNwOoiQFBACAENwOgiQFBACABNwOYiQFBACACNwOQiQFBACADNwOIiQFBACAENwOAiQFBAEEAOgCQigFBAEEAOwGIigELBgAgABADCwYAIAAQBwsGAEGAiQELqwIBBH4CQAJAIAFBIEYNAEKrs4/8kaOz8NsAIQNC/6S5iMWR2oKbfyEEQvLmu+Ojp/2npX8hBULnzKfQ1tDrs7t/IQZBACEBDAELQQApA5gJIQNBACkDkAkhBEEAKQOICSEFQQApA4AJIQZBECEBC0EAIAE6AIqKAUEAQgA3A4CKAUEAQgA3A/iJAUEAQgA3A/CJAUEAQgA3A+iJAUEAQgA3A+CJAUEAQgA3A9iJAUEAQgA3A9CJAUEAQgA3A8iJAUEAQgA3A8CJAUEAIAM3A7iJAUEAIAQ3A7CJAUEAIAU3A6iJAUEAIAY3A6CJAUEAIAM3A5iJAUEAIAQ3A5CJAUEAIAU3A4iJAUEAIAY3A4CJAUEAQQA6AJCKAUEAQQA7AYiKASAAEAMgAhAHCwsLAQBBgAgLBHgHAAA=",gn="215d875f",Le={name:Or,data:Rn,hash:gn};let za=new o,zi=null;function xo(S){return!Number.isInteger(S)||S<8||S%8!==0?new Error("Invalid variant! Valid values: 8, 16, ..."):null}function Pi(S,q=256,M=null){if(xo(q))return Promise.reject(xo(q));let Y=null,ie=0;if(M!==null){if(Y=C(M),Y.length!==32)return Promise.reject(new Error("Key length must be exactly 32 bytes"));ie=32}let ae=q/8,ge=ae;if(zi===null||zi.hashLength!==ae)return E(za,Le,ae).then(xe=>(zi=xe,ie===32&&zi.writeMemory(Y),zi.calculate(S,ie,ge)));try{ie===32&&zi.writeMemory(Y);let xe=zi.calculate(S,ie,ge);return Promise.resolve(xe)}catch(xe){return Promise.reject(xe)}}function A(S=256,q=null){if(xo(S))return Promise.reject(xo(S));let M=null,Y=0;if(q!==null){if(M=C(q),M.length!==32)return Promise.reject(new Error("Key length must be exactly 32 bytes"));Y=32}let ie=S/8,ae=ie;return v(Le,ie).then(ge=>{Y===32&&ge.writeMemory(M),ge.init(Y);let xe={init:Y===32?()=>(ge.writeMemory(M),ge.init(Y),xe):()=>(ge.init(Y),xe),update:Je=>(ge.update(Je),xe),digest:Je=>ge.digest(Je,ae),save:()=>ge.save(),load:Je=>(ge.load(Je),xe),blockSize:64,digestSize:ie};return xe})}var k="crc32",O="AGFzbQEAAAABEQRgAAF/YAF/AGAAAGACf38AAwgHAAEBAQIAAwUEAQECAgYOAn8BQZDJBQt/AEGACAsHcAgGbWVtb3J5AgAOSGFzaF9HZXRCdWZmZXIAAAlIYXNoX0luaXQAAgtIYXNoX1VwZGF0ZQADCkhhc2hfRmluYWwABA1IYXNoX0dldFN0YXRlAAUOSGFzaF9DYWxjdWxhdGUABgpTVEFURV9TSVpFAwEKkggHBQBBgAkLwwMBA39BgIkBIQFBACECA0AgAUEAQQBBAEEAQQBBAEEAQQAgAkEBcWsgAHEgAkEBdnMiA0EBcWsgAHEgA0EBdnMiA0EBcWsgAHEgA0EBdnMiA0EBcWsgAHEgA0EBdnMiA0EBcWsgAHEgA0EBdnMiA0EBcWsgAHEgA0EBdnMiA0EBcWsgAHEgA0EBdnMiA0EBcWsgAHEgA0EBdnM2AgAgAUEEaiEBIAJBAWoiAkGAAkcNAAtBACEAA0AgAEGEkQFqIABBhIkBaigCACICQf8BcUECdEGAiQFqKAIAIAJBCHZzIgI2AgAgAEGEmQFqIAJB/wFxQQJ0QYCJAWooAgAgAkEIdnMiAjYCACAAQYShAWogAkH/AXFBAnRBgIkBaigCACACQQh2cyICNgIAIABBhKkBaiACQf8BcUECdEGAiQFqKAIAIAJBCHZzIgI2AgAgAEGEsQFqIAJB/wFxQQJ0QYCJAWooAgAgAkEIdnMiAjYCACAAQYS5AWogAkH/AXFBAnRBgIkBaigCACACQQh2cyICNgIAIABBhMEBaiACQf8BcUECdEGAiQFqKAIAIAJBCHZzNgIAIABBBGoiAEH8B0cNAAsLJwACQEEAKAKAyQEgAEYNACAAEAFBACAANgKAyQELQQBBADYChMkBC4gDAQN/QQAoAoTJAUF/cyEBQYAJIQICQCAAQQhJDQBBgAkhAgNAIAJBBGooAgAiA0EOdkH8B3FBgJEBaigCACADQRZ2QfwHcUGAiQFqKAIAcyADQQZ2QfwHcUGAmQFqKAIAcyADQf8BcUECdEGAoQFqKAIAcyACKAIAIAFzIgFBFnZB/AdxQYCpAWooAgBzIAFBDnZB/AdxQYCxAWooAgBzIAFBBnZB/AdxQYC5AWooAgBzIAFB/wFxQQJ0QYDBAWooAgBzIQEgAkEIaiECIABBeGoiAEEHSw0ACwsCQCAARQ0AAkACQCAAQQFxDQAgACEDDAELIAFB/wFxIAItAABzQQJ0QYCJAWooAgAgAUEIdnMhASACQQFqIQIgAEF/aiEDCyAAQQFGDQADQCABQf8BcSACLQAAc0ECdEGAiQFqKAIAIAFBCHZzIgFB/wFxIAJBAWotAABzQQJ0QYCJAWooAgAgAUEIdnMhASACQQJqIQIgA0F+aiIDDQALC0EAIAFBf3M2AoTJAQsyAQF/QQBBACgChMkBIgBBGHQgAEGA/gNxQQh0ciAAQQh2QYD+A3EgAEEYdnJyNgKACQsGAEGEyQELWQACQEEAKAKAyQEgAUYNACABEAFBACABNgKAyQELQQBBADYChMkBIAAQA0EAQQAoAoTJASIBQRh0IAFBgP4DcUEIdHIgAUEIdkGA/gNxIAFBGHZycjYCgAkLCwsBAEGACAsEBAAAAA==",$="d2eba587",H={name:k,data:O,hash:$};let W=new o,ue=null;function Re(S){return!Number.isInteger(S)||S<0||S>4294967295?new Error("Polynomial must be a valid 32-bit long unsigned integer"):null}function Ye(S,q=3988292384){if(Re(q))return Promise.reject(Re(q));if(ue===null)return E(W,H,4).then(M=>(ue=M,ue.calculate(S,q)));try{let M=ue.calculate(S,q);return Promise.resolve(M)}catch(M){return Promise.reject(M)}}function Ie(S=3988292384){return Re(S)?Promise.reject(Re(S)):v(H,4).then(q=>{q.init(S);let M={init:()=>(q.init(S),M),update:Y=>(q.update(Y),M),digest:Y=>q.digest(Y),save:()=>q.save(),load:Y=>(q.load(Y),M),blockSize:4,digestSize:4};return M})}var Fe="crc64",pn="AGFzbQEAAAABDANgAAF/YAAAYAF/AAMHBgABAgEAAQUEAQECAgYOAn8BQZCJBgt/AEGACAsHcAgGbWVtb3J5AgAOSGFzaF9HZXRCdWZmZXIAAAlIYXNoX0luaXQAAQtIYXNoX1VwZGF0ZQACCkhhc2hfRmluYWwAAw1IYXNoX0dldFN0YXRlAAQOSGFzaF9DYWxjdWxhdGUABQpTVEFURV9TSVpFAwEKgwgGBQBBgAkL9QMDAX4BfwJ+AkBBACkDgIkCQQApA4AJIgBRDQBBgIkBIQFCACECA0AgAUIAQgBCAEIAQgBCAEIAQgAgAkIBg30gAIMgAkIBiIUiA0IBg30gAIMgA0IBiIUiA0IBg30gAIMgA0IBiIUiA0IBg30gAIMgA0IBiIUiA0IBg30gAIMgA0IBiIUiA0IBg30gAIMgA0IBiIUiA0IBg30gAIMgA0IBiIUiA0IBg30gAIMgA0IBiIU3AwAgAUEIaiEBIAJCAXwiAkKAAlINAAtBACEBA0AgAUGImQFqIAFBiIkBaikDACICp0H/AXFBA3RBgIkBaikDACACQgiIhSICNwMAIAFBiKkBaiACp0H/AXFBA3RBgIkBaikDACACQgiIhSICNwMAIAFBiLkBaiACp0H/AXFBA3RBgIkBaikDACACQgiIhSICNwMAIAFBiMkBaiACp0H/AXFBA3RBgIkBaikDACACQgiIhSICNwMAIAFBiNkBaiACp0H/AXFBA3RBgIkBaikDACACQgiIhSICNwMAIAFBiOkBaiACp0H/AXFBA3RBgIkBaikDACACQgiIhSICNwMAIAFBiPkBaiACp0H/AXFBA3RBgIkBaikDACACQgiIhTcDACABQQhqIgFB+A9HDQALQQAgADcDgIkCC0EAQgA3A4iJAguUAwIBfgJ/QQApA4iJAkJ/hSEBQYAJIQICQCAAQQhJDQBBgAkhAgNAIAIpAwAgAYUiAUIwiKdB/wFxQQN0QYCZAWopAwAgAUI4iKdBA3RBgIkBaikDAIUgAUIoiKdB/wFxQQN0QYCpAWopAwCFIAFCIIinQf8BcUEDdEGAuQFqKQMAhSABpyIDQRV2QfgPcUGAyQFqKQMAhSADQQ12QfgPcUGA2QFqKQMAhSADQQV2QfgPcUGA6QFqKQMAhSADQf8BcUEDdEGA+QFqKQMAhSEBIAJBCGohAiAAQXhqIgBBB0sNAAsLAkAgAEUNAAJAAkAgAEEBcQ0AIAAhAwwBCyABQv8BgyACMQAAhadBA3RBgIkBaikDACABQgiIhSEBIAJBAWohAiAAQX9qIQMLIABBAUYNAANAIAFC/wGDIAIxAACFp0EDdEGAiQFqKQMAIAFCCIiFIgFC/wGDIAJBAWoxAACFp0EDdEGAiQFqKQMAIAFCCIiFIQEgAkECaiECIANBfmoiAw0ACwtBACABQn+FNwOIiQILZAEBfkEAQQApA4iJAiIAQjiGIABCgP4Dg0IohoQgAEKAgPwHg0IYhiAAQoCAgPgPg0IIhoSEIABCCIhCgICA+A+DIABCGIhCgID8B4OEIABCKIhCgP4DgyAAQjiIhISENwOACQsGAEGIiQILAgALCwsBAEGACAsECAAAAA==",Es="c5ac6c16",Bs={name:Fe,data:pn,hash:Es};let bs=new o,Ji=null,Nn=new Uint8Array(8);function t0(S){let q="Polynomial must be provided as a 16 char long hex string";if(typeof S!="string"||S.length!==16)return{hi:0,lo:0,err:new Error(q)};let M=+`0x${S.slice(0,8)}`,Y=+`0x${S.slice(8)}`;return Number.isNaN(M)||Number.isNaN(Y)?{hi:M,lo:Y,err:new Error(q)}:{hi:M,lo:Y,err:null}}function ou(S,q,M){let Y=new DataView(S);Y.setUint32(0,q,!0),Y.setUint32(4,M,!0)}function Ow(S,q="c96c5795d7870f42"){let{hi:M,lo:Y,err:ie}=t0(q);if(ie!==null)return Promise.reject(ie);if(Ji===null)return E(bs,Bs,8).then(ae=>(Ji=ae,ou(Nn.buffer,Y,M),Ji.writeMemory(Nn),Ji.calculate(S)));try{ou(Nn.buffer,Y,M),Ji.writeMemory(Nn);let ae=Ji.calculate(S);return Promise.resolve(ae)}catch(ae){return Promise.reject(ae)}}function Mw(S="c96c5795d7870f42"){let{hi:q,lo:M,err:Y}=t0(S);return Y!==null?Promise.reject(Y):v(Bs,8).then(ie=>{let ae=new Uint8Array(8);ou(ae.buffer,M,q),ie.writeMemory(ae),ie.init();let ge={init:()=>(ie.writeMemory(ae),ie.init(),ge),update:xe=>(ie.update(xe),ge),digest:xe=>ie.digest(xe),save:()=>ie.save(),load:xe=>(ie.load(xe),ge),blockSize:8,digestSize:8};return ge})}var he="md4",Ze="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",Mr="bd8ce7c7",mn={name:he,data:Ze,hash:Mr};let Lw=new o,r0=null;function Zq(S){if(r0===null)return E(Lw,mn,16).then(q=>(r0=q,r0.calculate(S)));try{let q=r0.calculate(S);return Promise.resolve(q)}catch(q){return Promise.reject(q)}}function eO(){return v(mn,16).then(S=>{S.init();let q={init:()=>(S.init(),q),update:M=>(S.update(M),q),digest:M=>S.digest(M),save:()=>S.save(),load:M=>(S.load(M),q),blockSize:64,digestSize:16};return q})}var tO="md5",rO="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",iO="e6508e4b",Vb={name:tO,data:rO,hash:iO};let nO=new o,i0=null;function sO(S){if(i0===null)return E(nO,Vb,16).then(q=>(i0=q,i0.calculate(S)));try{let q=i0.calculate(S);return Promise.resolve(q)}catch(q){return Promise.reject(q)}}function oO(){return v(Vb,16).then(S=>{S.init();let q={init:()=>(S.init(),q),update:M=>(S.update(M),q),digest:M=>S.digest(M),save:()=>S.save(),load:M=>(S.load(M),q),blockSize:64,digestSize:16};return q})}var aO="sha1",cO="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",lO="6b530c24",Yb={name:aO,data:cO,hash:lO};let dO=new o,n0=null;function uO(S){if(n0===null)return E(dO,Yb,20).then(q=>(n0=q,n0.calculate(S)));try{let q=n0.calculate(S);return Promise.resolve(q)}catch(q){return Promise.reject(q)}}function fO(){return v(Yb,20).then(S=>{S.init();let q={init:()=>(S.init(),q),update:M=>(S.update(M),q),digest:M=>S.digest(M),save:()=>S.save(),load:M=>(S.load(M),q),blockSize:64,digestSize:20};return q})}var AO="sha3",hO="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",gO="fb24e536",s0={name:AO,data:hO,hash:gO};let pO=new o,au=null;function o0(S){return[224,256,384,512].includes(S)?null:new Error("Invalid variant! Valid values: 224, 256, 384, 512")}function mO(S,q=512){if(o0(q))return Promise.reject(o0(q));let M=q/8;if(au===null||au.hashLength!==M)return E(pO,s0,M).then(Y=>(au=Y,au.calculate(S,q,6)));try{let Y=au.calculate(S,q,6);return Promise.resolve(Y)}catch(Y){return Promise.reject(Y)}}function yO(S=512){if(o0(S))return Promise.reject(o0(S));let q=S/8;return v(s0,q).then(M=>{M.init(S);let Y={init:()=>(M.init(S),Y),update:ie=>(M.update(ie),Y),digest:ie=>M.digest(ie,6),save:()=>M.save(),load:ie=>(M.load(ie),Y),blockSize:200-2*q,digestSize:q};return Y})}let IO=new o,cu=null;function a0(S){return[224,256,384,512].includes(S)?null:new Error("Invalid variant! Valid values: 224, 256, 384, 512")}function wO(S,q=512){if(a0(q))return Promise.reject(a0(q));let M=q/8;if(cu===null||cu.hashLength!==M)return E(IO,s0,M).then(Y=>(cu=Y,cu.calculate(S,q,1)));try{let Y=cu.calculate(S,q,1);return Promise.resolve(Y)}catch(Y){return Promise.reject(Y)}}function xO(S=512){if(a0(S))return Promise.reject(a0(S));let q=S/8;return v(s0,q).then(M=>{M.init(S);let Y={init:()=>(M.init(S),Y),update:ie=>(M.update(ie),Y),digest:ie=>M.digest(ie,1),save:()=>M.save(),load:ie=>(M.load(ie),Y),blockSize:200-2*q,digestSize:q};return Y})}var CO="sha256",EO="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c2pBx6KerX1qIhkgASADcyACcSABIANxcyABQR53IAFBE3dzIAFBCndzaiAaaiICaiIJIBMgEnNxIBJzaiAJQRp3IAlBFXdzIAlBB3dzakHRxqk2aiIaIAIgAXMgA3EgAiABcXMgAkEedyACQRN3cyACQQp3c2ogGGoiA2oiESAJIBNzcSATc2ogEUEadyARQRV3cyARQQd3c2pB59KkoQFqIhggAyACcyABcSADIAJxcyADQR53IANBE3dzIANBCndzaiAUaiIBaiISIBEgCXNxIAlzaiASQRp3IBJBFXdzIBJBB3dzakGFldy9AmoiFCABIANzIAJxIAEgA3FzIAFBHncgAUETd3MgAUEKd3NqIBdqIgJqIhMgI2ogJiASaiAiIBFqICUgCWogEyASIBFzcSARc2ogE0EadyATQRV3cyATQQd3c2pBuMLs8AJqIhcgAiABcyADcSACIAFxcyACQR53IAJBE3dzIAJBCndzaiAZaiIDaiIJIBMgEnNxIBJzaiAJQRp3IAlBFXdzIAlBB3dzakH827HpBGoiGSADIAJzIAFxIAMgAnFzIANBHncgA0ETd3MgA0EKd3NqIBpqIgFqIhEgCSATc3EgE3NqIBFBGncgEUEVd3MgEUEHd3NqQZOa4JkFaiIaIAEgA3MgAnEgASADcXMgAUEedyABQRN3cyABQQp3c2ogGGoiAmoiEiARIAlzcSAJc2ogEkEadyASQRV3cyASQQd3c2pB1OapqAZqIhggAiABcyADcSACIAFxcyACQR53IAJBE3dzIAJBCndzaiAUaiIDaiITaiAoIBJqICQgEWogJyAJaiATIBIgEXNxIBFzaiATQRp3IBNBFXdzIBNBB3dzakG7laizB2oiFCADIAJzIAFxIAMgAnFzIANBHncgA0ETd3MgA0EKd3NqIBdqIgFqIgkgEyASc3EgEnNqIAlBGncgCUEVd3MgCUEHd3NqQa6Si454aiIXIAEgA3MgAnEgASADcXMgAUEedyABQRN3cyABQQp3c2ogGWoiAmoiESAJIBNzcSATc2ogEUEadyARQRV3cyARQQd3c2pBhdnIk3lqIhkgAiABcyADcSACIAFxcyACQR53IAJBE3dzIAJBCndzaiAaaiIDaiISIBEgCXNxIAlzaiASQRp3IBJBFXdzIBJBB3dzakGh0f+VemoiGiADIAJzIAFxIAMgAnFzIANBHncgA0ETd3MgA0EKd3NqIBhqIgFqIhNqICogEmogLSARaiApIAlqIBMgEiARc3EgEXNqIBNBGncgE0EVd3MgE0EHd3NqQcvM6cB6aiIYIAEgA3MgAnEgASADcXMgAUEedyABQRN3cyABQQp3c2ogFGoiAmoiCSATIBJzcSASc2ogCUEadyAJQRV3cyAJQQd3c2pB8JauknxqIhQgAiABcyADcSACIAFxcyACQR53IAJBE3dzIAJBCndzaiAXaiIDaiIRIAkgE3NxIBNzaiARQRp3IBFBFXdzIBFBB3dzakGjo7G7fGoiFyADIAJzIAFxIAMgAnFzIANBHncgA0ETd3MgA0EKd3NqIBlqIgFqIhIgESAJc3EgCXNqIBJBGncgEkEVd3MgEkEHd3NqQZnQy4x9aiIZIAEgA3MgAnEgASADcXMgAUEedyABQRN3cyABQQp3c2ogGmoiAmoiE2ogMCASaiAvIBFqICsgCWogEyASIBFzcSARc2ogE0EadyATQRV3cyATQQd3c2pBpIzktH1qIhogAiABcyADcSACIAFxcyACQR53IAJBE3dzIAJBCndzaiAYaiIDaiIJIBMgEnNxIBJzaiAJQRp3IAlBFXdzIAlBB3dzakGF67igf2oiGCADIAJzIAFxIAMgAnFzIANBHncgA0ETd3MgA0EKd3NqIBRqIgFqIhEgCSATc3EgE3NqIBFBGncgEUEVd3MgEUEHd3NqQfDAqoMBaiIUIAEgA3MgAnEgASADcXMgAUEedyABQRN3cyABQQp3c2ogF2oiAmoiEiARIAlzcSAJc2ogEkEadyASQRV3cyASQQd3c2pBloKTzQFqIhcgAiABcyADcSACIAFxcyACQR53IAJBE3dzIAJBCndzaiAZaiIDaiITIDZqIDIgEmogNSARaiAxIAlqIBMgEiARc3EgEXNqIBNBGncgE0EVd3MgE0EHd3NqQYjY3fEBaiIZIAMgAnMgAXEgAyACcXMgA0EedyADQRN3cyADQQp3c2ogGmoiAWoiCSATIBJzcSASc2ogCUEadyAJQRV3cyAJQQd3c2pBzO6hugJqIhogASADcyACcSABIANxcyABQR53IAFBE3dzIAFBCndzaiAYaiICaiIRIAkgE3NxIBNzaiARQRp3IBFBFXdzIBFBB3dzakG1+cKlA2oiGCACIAFzIANxIAIgAXFzIAJBHncgAkETd3MgAkEKd3NqIBRqIgNqIhIgESAJc3EgCXNqIBJBGncgEkEVd3MgEkEHd3NqQbOZ8MgDaiIUIAMgAnMgAXEgAyACcXMgA0EedyADQRN3cyADQQp3c2ogF2oiAWoiE2ogLEEZdyAsQQ53cyAsQQN2cyAoaiA0aiAzQQ93IDNBDXdzIDNBCnZzaiIXIBJqIDcgEWogMyAJaiATIBIgEXNxIBFzaiATQRp3IBNBFXdzIBNBB3dzakHK1OL2BGoiGyABIANzIAJxIAEgA3FzIAFBHncgAUETd3MgAUEKd3NqIBlqIgJqIgkgEyASc3EgEnNqIAlBGncgCUEVd3MgCUEHd3NqQc+U89wFaiIZIAIgAXMgA3EgAiABcXMgAkEedyACQRN3cyACQQp3c2ogGmoiA2oiESAJIBNzcSATc2ogEUEadyARQRV3cyARQQd3c2pB89+5wQZqIhogAyACcyABcSADIAJxcyADQR53IANBE3dzIANBCndzaiAYaiIBaiISIBEgCXNxIAlzaiASQRp3IBJBFXdzIBJBB3dzakHuhb6kB2oiHCABIANzIAJxIAEgA3FzIAFBHncgAUETd3MgAUEKd3NqIBRqIgJqIhNqIC5BGXcgLkEOd3MgLkEDdnMgKmogNmogLUEZdyAtQQ53cyAtQQN2cyApaiA1aiAXQQ93IBdBDXdzIBdBCnZzaiIUQQ93IBRBDXdzIBRBCnZzaiIYIBJqIDkgEWogFCAJaiATIBIgEXNxIBFzaiATQRp3IBNBFXdzIBNBB3dzakHvxpXFB2oiCSACIAFzIANxIAIgAXFzIAJBHncgAkETd3MgAkEKd3NqIBtqIgNqIhEgEyASc3EgEnNqIBFBGncgEUEVd3MgEUEHd3NqQZTwoaZ4aiIbIAMgAnMgAXEgAyACcXMgA0EedyADQRN3cyADQQp3c2ogGWoiAWoiEiARIBNzcSATc2ogEkEadyASQRV3cyASQQd3c2pBiISc5nhqIhkgASADcyACcSABIANxcyABQR53IAFBE3dzIAFBCndzaiAaaiICaiITIBIgEXNxIBFzaiATQRp3IBNBFXdzIBNBB3dzakH6//uFeWoiGiACIAFzIANxIAIgAXFzIAJBHncgAkETd3MgAkEKd3NqIBxqIgNqIhQgPGo2AuSJAUEAID8gAyACcyABcSADIAJxcyADQR53IANBE3dzIANBCndzaiAJaiIBIANzIAJxIAEgA3FzIAFBHncgAUETd3MgAUEKd3NqIBtqIgIgAXMgA3EgAiABcXMgAkEedyACQRN3cyACQQp3c2ogGWoiAyACcyABcSADIAJxcyADQR53IANBE3dzIANBCndzaiAaaiIJajYC1IkBQQAgPSAvQRl3IC9BDndzIC9BA3ZzICtqIDdqIBhBD3cgGEENd3MgGEEKdnNqIhggEWogFCATIBJzcSASc2ogFEEadyAUQRV3cyAUQQd3c2pB69nBonpqIhkgAWoiEWo2AuCJAUEAIEEgCSADcyACcSAJIANxcyAJQR53IAlBE3dzIAlBCndzaiAZaiIBajYC0IkBQQAgPiAwQRl3IDBBDndzIDBBA3ZzIC9qIBdqIDpBD3cgOkENd3MgOkEKdnNqIBJqIBEgFCATc3EgE3NqIBFBGncgEUEVd3MgEUEHd3NqQffH5vd7aiIXIAJqIhJqNgLciQFBACBDIAEgCXMgA3EgASAJcXMgAUEedyABQRN3cyABQQp3c2ogF2oiAmo2AsyJAUEAIDsgNEEZdyA0QQ53cyA0QQN2cyAwaiA4aiAYQQ93IBhBDXdzIBhBCnZzaiATaiASIBEgFHNxIBRzaiASQRp3IBJBFXdzIBJBB3dzakHy8cWzfGoiESADamo2AtiJAUEAIAAgAiABcyAJcSACIAFxcyACQR53IAJBE3dzIAJBCndzaiARamo2AsiJAQuyBgIEfwF+QQAoAsCJASIAQQJ2QQ9xIgFBAnRBgIkBaiICIAIoAgBBfyAAQQN0IgB0QX9zcUGAASAAdHM2AgACQAJAAkAgAUEOSQ0AAkAgAUEORw0AQQBBADYCvIkBC0GAiQEQA0EAIQIMAQsgAUENRg0BIAFBAWohAgsgAiEDAkBBBiACa0EHcSIARQ0AIAIgAGohAyACQQJ0QYCJAWohAQNAIAFBADYCACABQQRqIQEgAEF/aiIADQALCyACQXlqQQdJDQAgA0ECdCEBA0AgAUGYiQFqQgA3AgAgAUGQiQFqQgA3AgAgAUGIiQFqQgA3AgAgAUGAiQFqQgA3AgAgAUEgaiIBQThHDQALC0EAIQFBAEEAKQPAiQEiBKciAEEbdCAAQQt0QYCA/AdxciAAQQV2QYD+A3EgAEEDdEEYdnJyNgK8iQFBACAEQh2IpyIAQRh0IABBgP4DcUEIdHIgAEEIdkGA/gNxIABBGHZycjYCuIkBQYCJARADQQBBACgC5IkBIgBBGHQgAEGA/gNxQQh0ciAAQQh2QYD+A3EgAEEYdnJyNgLkiQFBAEEAKALgiQEiAEEYdCAAQYD+A3FBCHRyIABBCHZBgP4DcSAAQRh2cnI2AuCJAUEAQQAoAtyJASIAQRh0IABBgP4DcUEIdHIgAEEIdkGA/gNxIABBGHZycjYC3IkBQQBBACgC2IkBIgBBGHQgAEGA/gNxQQh0ciAAQQh2QYD+A3EgAEEYdnJyNgLYiQFBAEEAKALUiQEiAEEYdCAAQYD+A3FBCHRyIABBCHZBgP4DcSAAQRh2cnI2AtSJAUEAQQAoAtCJASIAQRh0IABBgP4DcUEIdHIgAEEIdkGA/gNxIABBGHZycjYC0IkBQQBBACgCzIkBIgBBGHQgAEGA/gNxQQh0ciAAQQh2QYD+A3EgAEEYdnJyNgLMiQFBAEEAKALIiQEiAEEYdCAAQYD+A3FBCHRyIABBCHZBgP4DcSAAQRh2cnI2AsiJAQJAQQAoAuiJASICRQ0AQQAhAANAIAFBgAlqIAFByIkBai0AADoAACABQQFqIQEgAiAAQQFqIgBB/wFxSw0ACwsLBgBBgIkBC6MBAEEAQgA3A8CJAUEAQRxBICABQeABRiIBGzYC6IkBQQBCp5/mp8b0k/2+f0Krs4/8kaOz8NsAIAEbNwPgiQFBAEKxloD+n6KFrOgAQv+kuYjFkdqCm38gARs3A9iJAUEAQpe6w4OTp5aHd0Ly5rvjo6f9p6V/IAEbNwPQiQFBAELYvZaI/KC1vjZC58yn0NbQ67O7fyABGzcDyIkBIAAQAhAECwsLAQBBgAgLBHAAAAA=",BO="8c18dd94",c0={name:CO,data:EO,hash:BO};let bO=new o,l0=null;function vO(S){if(l0===null)return E(bO,c0,28).then(q=>(l0=q,l0.calculate(S,224)));try{let q=l0.calculate(S,224);return Promise.resolve(q)}catch(q){return Promise.reject(q)}}function kO(){return v(c0,28).then(S=>{S.init(224);let q={init:()=>(S.init(224),q),update:M=>(S.update(M),q),digest:M=>S.digest(M),save:()=>S.save(),load:M=>(S.load(M),q),blockSize:64,digestSize:28};return q})}let SO=new o,d0=null;function DO(S){if(d0===null)return E(SO,c0,32).then(q=>(d0=q,d0.calculate(S,256)));try{let q=d0.calculate(S,256);return Promise.resolve(q)}catch(q){return Promise.reject(q)}}function Wb(){return v(c0,32).then(S=>{S.init(256);let q={init:()=>(S.init(256),q),update:M=>(S.update(M),q),digest:M=>S.digest(M),save:()=>S.save(),load:M=>(S.load(M),q),blockSize:64,digestSize:32};return q})}var QO="sha512",_O="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",FO="f2e40eb1",u0={name:QO,data:_O,hash:FO};let PO=new o,f0=null;function TO(S){if(f0===null)return E(PO,u0,48).then(q=>(f0=q,f0.calculate(S,384)));try{let q=f0.calculate(S,384);return Promise.resolve(q)}catch(q){return Promise.reject(q)}}function UO(){return v(u0,48).then(S=>{S.init(384);let q={init:()=>(S.init(384),q),update:M=>(S.update(M),q),digest:M=>S.digest(M),save:()=>S.save(),load:M=>(S.load(M),q),blockSize:128,digestSize:48};return q})}let RO=new o,A0=null;function NO(S){if(A0===null)return E(RO,u0,64).then(q=>(A0=q,A0.calculate(S,512)));try{let q=A0.calculate(S,512);return Promise.resolve(q)}catch(q){return Promise.reject(q)}}function qO(){return v(u0,64).then(S=>{S.init(512);let q={init:()=>(S.init(512),q),update:M=>(S.update(M),q),digest:M=>S.digest(M),save:()=>S.save(),load:M=>(S.load(M),q),blockSize:128,digestSize:64};return q})}var OO="xxhash32",MO="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",LO="4bb12485",Xb={name:OO,data:MO,hash:LO};let HO=new o,h0=null;function g0(S){return!Number.isInteger(S)||S<0||S>4294967295?new Error("Seed must be a valid 32-bit long unsigned integer."):null}function KO(S,q=0){if(g0(q))return Promise.reject(g0(q));if(h0===null)return E(HO,Xb,4).then(M=>(h0=M,h0.calculate(S,q)));try{let M=h0.calculate(S,q);return Promise.resolve(M)}catch(M){return Promise.reject(M)}}function GO(S=0){return g0(S)?Promise.reject(g0(S)):v(Xb,4).then(q=>{q.init(S);let M={init:()=>(q.init(S),M),update:Y=>(q.update(Y),M),digest:Y=>q.digest(Y),save:()=>q.save(),load:Y=>(q.load(Y),M),blockSize:16,digestSize:4};return M})}var zO="xxhash64",JO="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",jO="177fbfa3",Zb={name:zO,data:JO,hash:jO};let $O=new o,ll=null,p0=new Uint8Array(8);function Co(S){return!Number.isInteger(S)||S<0||S>4294967295?new Error("Seed must be given as two valid 32-bit long unsigned integers (lo + high)."):null}function Hw(S,q,M){let Y=new DataView(S);Y.setUint32(0,q,!0),Y.setUint32(4,M,!0)}function VO(S,q=0,M=0){if(Co(q))return Promise.reject(Co(q));if(Co(M))return Promise.reject(Co(M));if(ll===null)return E($O,Zb,8).then(Y=>(ll=Y,Hw(p0.buffer,q,M),ll.writeMemory(p0),ll.calculate(S)));try{Hw(p0.buffer,q,M),ll.writeMemory(p0);let Y=ll.calculate(S);return Promise.resolve(Y)}catch(Y){return Promise.reject(Y)}}function YO(S=0,q=0){return Co(S)?Promise.reject(Co(S)):Co(q)?Promise.reject(Co(q)):v(Zb,8).then(M=>{let Y=new Uint8Array(8);Hw(Y.buffer,S,q),M.writeMemory(Y),M.init();let ie={init:()=>(M.writeMemory(Y),M.init(),ie),update:ae=>(M.update(ae),ie),digest:ae=>M.digest(ae),save:()=>M.save(),load:ae=>(M.load(ae),ie),blockSize:32,digestSize:8};return ie})}var WO="xxhash3",XO="AGFzbQEAAAABNAhgAAF/YAR/f39/AGAHf39/f39/fwBgBH9+fn4BfmAEf39/fgF+YAN/f34BfmAAAGABfwADDg0AAQIDBAUFBQYHBgAGBQQBAQICBg4CfwFBwI4FC38AQcAJCwdwCAZtZW1vcnkCAA5IYXNoX0dldEJ1ZmZlcgAACUhhc2hfSW5pdAAIC0hhc2hfVXBkYXRlAAkKSGFzaF9GaW5hbAAKDUhhc2hfR2V0U3RhdGUACw5IYXNoX0NhbGN1bGF0ZQAMClNUQVRFX1NJWkUDAQr6QQ0FAEGACgvkAwMPfgF/AX4CQCADRQ0AIAApAzAhBCAAKQM4IQUgACkDICEGIAApAyghByAAKQMQIQggACkDGCEJIAApAwAhCiAAKQMIIQsDQCAFIAFBMGopAwAiDHwgAkE4aikDACABQThqKQMAIg2FIgVCIIggBUL/////D4N+fCEFIAcgAUEgaikDACIOfCACQShqKQMAIAFBKGopAwAiD4UiB0IgiCAHQv////8Pg358IQcgCSABQRBqKQMAIhB8IAJBGGopAwAgAUEYaikDACIRhSIJQiCIIAlC/////w+DfnwhCSALIAEpAwAiEnwgAkEIaiITKQMAIAFBCGopAwAiFIUiC0IgiCALQv////8Pg358IQsgAkEwaikDACAMhSIMQiCIIAxC/////w+DfiAEfCANfCEEIAJBIGopAwAgDoUiDEIgiCAMQv////8Pg34gBnwgD3whBiACQRBqKQMAIBCFIgxCIIggDEL/////D4N+IAh8IBF8IQggAikDACAShSIMQiCIIAxC/////w+DfiAKfCAUfCEKIAFBwABqIQEgEyECIANBf2oiAw0ACyAAIAk3AxggACAKNwMAIAAgCzcDCCAAIAc3AyggACAINwMQIAAgBTcDOCAAIAY3AyAgACAENwMwCwveAgIBfwF+AkAgBCACIAEoAgAiB2siAkkNACAAIAMgBSAHQQN0aiACEAEgACAFIAZqIgcpAwAgACkDACIIQi+IhSAIhUKx893xCX43AwAgACAHKQMIIAApAwgiCEIviIUgCIVCsfPd8Ql+NwMIIAAgBykDECAAKQMQIghCL4iFIAiFQrHz3fEJfjcDECAAIAcpAxggACkDGCIIQi+IhSAIhUKx893xCX43AxggACAHKQMgIAApAyAiCEIviIUgCIVCsfPd8Ql+NwMgIAAgBykDKCAAKQMoIghCL4iFIAiFQrHz3fEJfjcDKCAAIAcpAzAgACkDMCIIQi+IhSAIhUKx893xCX43AzAgACAHKQM4IAApAzgiCEIviIUgCIVCsfPd8Ql+NwM4IAAgAyACQQZ0aiAFIAQgAmsiBxABIAEgBzYCAA8LIAAgAyAFIAdBA3RqIAQQASABIAcgBGo2AgALhQEBAX8gAiABhSADpyIEQRh0IARBgP4DcUEIdHIgBEEIdkGA/gNxIARBGHZycq1CIIYgA4V9QQA1AoCMAUIghiAAQfyLAWo1AgCEhSIDQjGJIANCGImFIAOFQqW+4/TRjIfZn39+IgNCI4ggAK18IAOFQqW+4/TRjIfZn39+IgNCHIggA4ULZwAgAiABc60gA3wiA0IhiEEALQCAjAFBEHQgAEEIdHIgAEEBdkGAjAFqLQAAQRh0ciAAQf+LAWotAAByrYUgA4VCz9bTvtLHq9lCfiIDQh2IIAOFQvnz3fGZ9pmrFn4iA0IgiCADhQuJAwEEfgJAIABBCUkNAEEAKQOAjAEgASkDICABKQMYhSACfIUiA0I4hiADQoD+A4NCKIaEIANCgID8B4NCGIYgA0KAgID4D4NCCIaEhCADQgiIQoCAgPgPgyADQhiIQoCA/AeDhCADQiiIQoD+A4MgA0I4iISEhCAArXwgAEH4iwFqKQMAIAEpAzAgASkDKIUgAn2FIgJ8IAJC/////w+DIgQgA0IgiCIFfiIGQv////8PgyACQiCIIgIgA0L/////D4MiA358IAQgA34iA0IgiHwiBEIghiADQv////8Pg4QgBkIgiCACIAV+fCAEQiCIfIV8IgNCJYggA4VC+fPd8ZnymasWfiIDQiCIIAOFDwsCQCAAQQRJDQAgACABQQhqKQMAIAFBEGopAwAgAhADDwsCQCAARQ0AIAAgASgCACABQQRqKAIAIAIQBA8LIAEpAzggASkDQIUgAoUiA0IhiCADhULP1tO+0ser2UJ+IgNCHYggA4VC+fPd8Zn2masWfiIDQiCIIAOFC94IAQZ+IACtQoeVr6+Ytt6bnn9+IQMCQCAAQSFJDQACQCAAQcEASQ0AAkAgAEHhAEkNACABKQNoIAJ9QQApA7iMAYUiBEL/////D4MiBSABKQNgIAJ8QQApA7CMAYUiBkIgiCIHfiIIQv////8PgyAEQiCIIgQgBkL/////D4MiBn58IAUgBn4iBUIgiHwiBkIghiAFQv////8Pg4QgCEIgiCAEIAd+fCAGQiCIfIUgA3wgASkDeCACfSAAQciLAWopAwCFIgNC/////w+DIgQgASkDcCACfCAAQcCLAWopAwCFIgVCIIgiBn4iB0L/////D4MgA0IgiCIDIAVC/////w+DIgV+fCAEIAV+IgRCIIh8IgVCIIYgBEL/////D4OEIAdCIIggAyAGfnwgBUIgiHyFfCEDCyABKQNIIAJ9QQApA6iMAYUiBEL/////D4MiBSABKQNAIAJ8QQApA6CMAYUiBkIgiCIHfiIIQv////8PgyAEQiCIIgQgBkL/////D4MiBn58IAUgBn4iBUIgiHwiBkIghiAFQv////8Pg4QgCEIgiCAEIAd+fCAGQiCIfIUgA3wgASkDWCACfSAAQdiLAWopAwCFIgNC/////w+DIgQgASkDUCACfCAAQdCLAWopAwCFIgVCIIgiBn4iB0L/////D4MgA0IgiCIDIAVC/////w+DIgV+fCAEIAV+IgRCIIh8IgVCIIYgBEL/////D4OEIAdCIIggAyAGfnwgBUIgiHyFfCEDCyABKQMoIAJ9QQApA5iMAYUiBEL/////D4MiBSABKQMgIAJ8QQApA5CMAYUiBkIgiCIHfiIIQv////8PgyAEQiCIIgQgBkL/////D4MiBn58IAUgBn4iBUIgiHwiBkIghiAFQv////8Pg4QgCEIgiCAEIAd+fCAGQiCIfIUgA3wgASkDOCACfSAAQeiLAWopAwCFIgNC/////w+DIgQgASkDMCACfCAAQeCLAWopAwCFIgVCIIgiBn4iB0L/////D4MgA0IgiCIDIAVC/////w+DIgV+fCAEIAV+IgRCIIh8IgVCIIYgBEL/////D4OEIAdCIIggAyAGfnwgBUIgiHyFfCEDCyABKQMIIAJ9QQApA4iMAYUiBEL/////D4MiBSABKQMAIAJ8QQApA4CMAYUiBkIgiCIHfiIIQv////8PgyAEQiCIIgQgBkL/////D4MiBn58IAUgBn4iBUIgiHwiBkIghiAFQv////8Pg4QgCEIgiCAEIAd+fCAGQiCIfIUgA3wgASkDGCACfSAAQfiLAWopAwCFIgNC/////w+DIgQgASkDECACfCAAQfCLAWopAwCFIgJCIIgiBX4iBkL/////D4MgA0IgiCIDIAJC/////w+DIgJ+fCAEIAJ+IgJCIIh8IgRCIIYgAkL/////D4OEIAZCIIggAyAFfnwgBEIgiHyFfCICQiWIIAKFQvnz3fGZ8pmrFn4iAkIgiCAChQv8CgQBfwV+An8BfkEAIQMgASkDeCACfUEAKQP4jAGFIgRC/////w+DIgUgASkDcCACfEEAKQPwjAGFIgZCIIgiB34iCEL/////D4MgBEIgiCIEIAZC/////w+DIgZ+fCAFIAZ+IgVCIIh8IgZCIIYgBUL/////D4OEIAhCIIggBCAHfnwgBkIgiHyFIAEpA2ggAn1BACkD6IwBhSIEQv////8PgyIFIAEpA2AgAnxBACkD4IwBhSIGQiCIIgd+IghC/////w+DIARCIIgiBCAGQv////8PgyIGfnwgBSAGfiIFQiCIfCIGQiCGIAVC/////w+DhCAIQiCIIAQgB358IAZCIIh8hSABKQNYIAJ9QQApA9iMAYUiBEL/////D4MiBSABKQNQIAJ8QQApA9CMAYUiBkIgiCIHfiIIQv////8PgyAEQiCIIgQgBkL/////D4MiBn58IAUgBn4iBUIgiHwiBkIghiAFQv////8Pg4QgCEIgiCAEIAd+fCAGQiCIfIUgASkDSCACfUEAKQPIjAGFIgRC/////w+DIgUgASkDQCACfEEAKQPAjAGFIgZCIIgiB34iCEL/////D4MgBEIgiCIEIAZC/////w+DIgZ+fCAFIAZ+IgVCIIh8IgZCIIYgBUL/////D4OEIAhCIIggBCAHfnwgBkIgiHyFIAEpAzggAn1BACkDuIwBhSIEQv////8PgyIFIAEpAzAgAnxBACkDsIwBhSIGQiCIIgd+IghC/////w+DIARCIIgiBCAGQv////8PgyIGfnwgBSAGfiIFQiCIfCIGQiCGIAVC/////w+DhCAIQiCIIAQgB358IAZCIIh8hSABKQMoIAJ9QQApA6iMAYUiBEL/////D4MiBSABKQMgIAJ8QQApA6CMAYUiBkIgiCIHfiIIQv////8PgyAEQiCIIgQgBkL/////D4MiBn58IAUgBn4iBUIgiHwiBkIghiAFQv////8Pg4QgCEIgiCAEIAd+fCAGQiCIfIUgASkDGCACfUEAKQOYjAGFIgRC/////w+DIgUgASkDECACfEEAKQOQjAGFIgZCIIgiB34iCEL/////D4MgBEIgiCIEIAZC/////w+DIgZ+fCAFIAZ+IgVCIIh8IgZCIIYgBUL/////D4OEIAhCIIggBCAHfnwgBkIgiHyFIAEpAwggAn1BACkDiIwBhSIEQv////8PgyIFIAEpAwAgAnxBACkDgIwBhSIGQiCIIgd+IghC/////w+DIARCIIgiBCAGQv////8PgyIGfnwgBSAGfiIFQiCIfCIGQiCGIAVC/////w+DhCAIQiCIIAQgB358IAZCIIh8hSAArUKHla+vmLbem55/fnx8fHx8fHx8IgRCJYggBIVC+fPd8ZnymasWfiIEQiCIIASFIQQCQCAAQZABSA0AIABBBHZBeGohCQNAIAEgA2oiCkELaikDACACfSADQYiNAWopAwCFIgVC/////w+DIgYgCkEDaikDACACfCADQYCNAWopAwCFIgdCIIgiCH4iC0L/////D4MgBUIgiCIFIAdC/////w+DIgd+fCAGIAd+IgZCIIh8IgdCIIYgBkL/////D4OEIAtCIIggBSAIfnwgB0IgiHyFIAR8IQQgA0EQaiEDIAlBf2oiCQ0ACwsgASkDfyACfSAAQfiLAWopAwCFIgVC/////w+DIgYgASkDdyACfCAAQfCLAWopAwCFIgJCIIgiB34iCEL/////D4MgBUIgiCIFIAJC/////w+DIgJ+fCAGIAJ+IgJCIIh8IgZCIIYgAkL/////D4OEIAhCIIggBSAHfnwgBkIgiHyFIAR8IgJCJYggAoVC+fPd8ZnymasWfiICQiCIIAKFC98FAgF+AX8CQAJAQQApA4AKIgBQRQ0AQYAIIQFCACEADAELAkBBACkDoI4BIABSDQBBACEBDAELQQAhAUEAQq+v79e895Kg/gAgAH03A/iLAUEAIABCxZbr+djShYIofDcD8IsBQQBCj/Hjja2P9JhOIAB9NwPoiwFBACAAQqus+MXV79HQfHw3A+CLAUEAQtOt1LKShbW0nn8gAH03A9iLAUEAIABCl5r0jvWWvO3JAHw3A9CLAUEAQsWDgv2v/8SxayAAfTcDyIsBQQAgAELqi7OdyOb09UN8NwPAiwFBAELIv/rLnJveueQAIAB9NwO4iwFBACAAQoqjgd/Ume2sMXw3A7CLAUEAQvm57738+MKnHSAA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QQApA4CKATcDACACQQApA4iKATcDCCACQQApA5CKATcDECACQQApA5iKATcDGCACQQApA6CKATcDICACQQApA6iKATcDKCACQQApA7CKASIFNwMwIAJBACkDuIoBIgY3AzgCQAJAQQAoAoCOASIHQcAASQ0AIAJBACgCiI4BNgJAIAIgAkHAAGpBACgCmI4BQYCMASAHQX9qQQZ2IANBACgCnI4BIgAQAiADIABqIgBBeWopAwAhCCAAKQMJIQkgACkDGSEKIAApAykhCyAHQcCLAWopAwAhBSAAKQMBIQwgB0HIiwFqKQMAIQYgB0HQiwFqKQMAIQ0gACkDESEOIAdB2IsBaikDACEPIAdB4IsBaikDACEQIAApAyEhESAHQeiLAWopAwAhEiACKQMAIRMgAikDECEUIAIpAyAhFSACKQMwIRYgAikDCCEXIAIpAxghGCACKQMoIRkgAiACKQM4IAdB8IsBaikDACIafCAAKQMxIAdB+IsBaikDACIbhSIcQiCIIBxC/////w+Dfnw3AzggGSAQfCARIBKFIhFCIIggEUL/////D4N+fCERIBggDXwgDiAPhSIOQiCIIA5C/////w+DfnwhDiAXIAV8IAwgBoUiDEIgiCAMQv////8Pg358IQwgGyAWIAsgGoUiC0IgiCALQv////8Pg358fCELIBIgFSAKIBCFIhBCIIggEEL/////D4N+fHwhECAPIBQgCSANhSINQiCIIA1C/////w+Dfnx8IRIgBiATIAggBYUiBUIgiCAFQv////8Pg358fCEIDAELIAdBwI0BaiEdQcAAIAdrIR4gAkHAAGohAAJAAkACQCAHQThNDQAgHiEfDAELAkACQEE4IAdrQQN2QQFqQQdxIh8NACACQcAAaiEAIB4hHwwBCyACQcAAaiEAIB9BA3QiICEfA0AgACAdKQMANwMAIABBCGohACAdQQhqIR0gH0F4aiIfDQALQcAAIAcgIGprIR8LAkAgBw0AA0AgACAdKQMANwMAIABBCGogHUEIaikDADcDACAAQRBqIB1BEGopAwA3AwAgAEEYaiAdQRhqKQMANwMAIABBIGogHUEgaikDADcDACAAQShqIB1BKGopAwA3AwAgAEEwaiAdQTBqKQMANwMAIABBOGogHUE4aikDADcDACAAQcAAaiEAIB1BwABqIR0gH0FAaiIfQQdLDQALCyAfRQ0BCyAfQX9qISECQCAfQQdxIiBFDQAgH0F4cSEfA0AgACAdLQAAOgAAIABBAWohACAdQQFqIR0gIEF/aiIgDQALCyAhQQdJDQADQCAAIB0pAAA3AAAgAEEIaiEAIB1BCGohHSAfQXhqIh8NAAsLIAJBwABqIB5qIR1BgIwBIQACQAJAAkAgB0EISQ0AAkAgB0E4akEDdkEBakEHcSIfDQAMAgsgH0EDdCEgQYCMASEAA0AgHSAAKQMANwMAIB1BCGohHSAAQQhqIQAgH0F/aiIfDQALIAcgIGshBwsgB0UNAQJAAkAgB0EHcSIgDQAgByEfDAELIAdBeHEhHwNAIB0gAC0AADoAACAdQQFqIR0gAEEBaiEAICBBf2oiIA0ACwsgB0EISQ0BCwNAIB0gACkAADcAACAdQQhqIR0gAEEIaiEAIB9BeGoiHw0ACwsgA0EAKAKcjgFqIgBBeWopAwAhCiAAKQMJIRMgACkDGSEUIAApAykhCyAAKQMBIQwgACkDESEOIAApAyEhESACKQMAIRUgAikDECEWIAIpAyAhFyACKQMIIRggAikDQCENIAIpA0ghDyACKQMYIRkgAikDUCESIAIpA1ghCCACKQMoIRogAikDYCEQIAIpA2ghCSACIAYgAikDcCIbfCAAKQMxIAIpA3giBoUiHEIgiCAcQv////8Pg358NwM4IBogEHwgESAJhSIRQiCIIBFC/////w+DfnwhESAZIBJ8IA4gCIUiDkIgiCAOQv////8Pg358IQ4gGCANfCAMIA+FIgxCIIggDEL/////D4N+fCEMIAYgCyAbhSILQiCIIAtC/////w+DfiAFfHwhCyAJIBcgFCAQhSIFQiCIIAVC/////w+Dfnx8IRAgCCAWIBMgEoUiBUIgiCAFQv////8Pg358fCESIA8gFSAKIA2FIgVCIIggBUL/////D4N+fHwhCAsgAykDQyACKQM4hSIFQv////8PgyIGIAMpAzsgC4UiC0IgiCINfiIPQv////8PgyAFQiCIIgUgC0L/////D4MiC358IAYgC34iBkIgiHwiC0IghiAGQv////8Pg4QgD0IgiCAFIA1+fCALQiCIfIUgAykDMyARhSIFQv////8PgyIGIAMpAysgEIUiC0IgiCINfiIPQv////8PgyAFQiCIIgUgC0L/////D4MiC358IAYgC34iBkIgiHwiC0IghiAGQv////8Pg4QgD0IgiCAFIA1+fCALQiCIfIUgAykDIyAOhSIFQv////8PgyIGIAMpAxsgEoUiC0IgiCINfiIPQv////8PgyAFQiCIIgUgC0L/////D4MiC358IAYgC34iBkIgiHwiC0IghiAGQv////8Pg4QgD0IgiCAFIA1+fCALQiCIfIUgAykDEyAMhSIFQv////8PgyIGIAMpAwsgCIUiC0IgiCINfiIPQv////8PgyAFQiCIIgUgC0L/////D4MiC358IAYgC34iBkIgiHwiC0IghiAGQv////8Pg4QgD0IgiCAFIA1+fCALQiCIfIUgBEKHla+vmLbem55/fnx8fHwiBEIliCAEhUL5893xmfKZqxZ+IgRCIIggBIUhBAwBCyAEpyEAAkBBACkDoI4BIgRQDQACQCAAQRBLDQAgAEGACCAEEAUhBAwCCwJAIABBgAFLDQAgAEGACCAEEAYhBAwCCyAAQYAIIAQQByEEDAELAkAgAEEQSw0AIAAgA0IAEAUhBAwBCwJAIABBgAFLDQAgACADQgAQBiEEDAELIAAgA0IAEAchBAtBACAEQjiGIARCgP4Dg0IohoQgBEKAgPwHg0IYhiAEQoCAgPgPg0IIhoSEIARCCIhCgICA+A+DIARCGIhCgID8B4OEIARCKIhCgP4DgyAEQjiIhISENwOACiABJAALBgBBgIoBCwIACwvMAQEAQYAIC8QBuP5sOSOkS758AYEs9yGtHN7UbemDkJfbckCkpLezZx/LeeZOzMDleIJa0H3M/3IhuAhGdPdDJI7gNZDmgTomTDwoUruRwwDLiNBlixtTLqNxZEiXog35TjgZ70ap3qzYqPp2P+OcND/53LvHxwtPHYpR4EvNtFkxyJ9+ydl4c2TqxayDNNPrw8WBoP/6E2PrFw3dUbfw2knTFlUmKdRonisWvlh9R6H8j/i40XrQMc5FyzqPlRYEKK/X+8q7S0B+QAIAAA==",ZO="5a2fbdbb",ev={name:WO,data:XO,hash:ZO};let eM=new o,dl=null,m0=new Uint8Array(8);function Eo(S){return!Number.isInteger(S)||S<0||S>4294967295?new Error("Seed must be given as two valid 32-bit long unsigned integers (lo + high)."):null}function Kw(S,q,M){let Y=new DataView(S);Y.setUint32(0,q,!0),Y.setUint32(4,M,!0)}function tM(S,q=0,M=0){if(Eo(q))return Promise.reject(Eo(q));if(Eo(M))return Promise.reject(Eo(M));if(dl===null)return E(eM,ev,8).then(Y=>(dl=Y,Kw(m0.buffer,q,M),dl.writeMemory(m0),dl.calculate(S)));try{Kw(m0.buffer,q,M),dl.writeMemory(m0);let Y=dl.calculate(S);return Promise.resolve(Y)}catch(Y){return Promise.reject(Y)}}function rM(S=0,q=0){return Eo(S)?Promise.reject(Eo(S)):Eo(q)?Promise.reject(Eo(q)):v(ev,8).then(M=>{let Y=new Uint8Array(8);Kw(Y.buffer,S,q),M.writeMemory(Y),M.init();let ie={init:()=>(M.writeMemory(Y),M.init(),ie),update:ae=>(M.update(ae),ie),digest:ae=>M.digest(ae),save:()=>M.save(),load:ae=>(M.load(ae),ie),blockSize:512,digestSize:8};return ie})}var iM="xxhash128",nM="AGFzbQEAAAABKwdgAAF/YAR/f39/AGAHf39/f39/fwBgA39/fgF+YAR/f39+AGAAAGABfwADDQwAAQIDBAQEBQYFAAUFBAEBAgIGDgJ/AUHAjgULfwBBwAkLB3AIBm1lbW9yeQIADkhhc2hfR2V0QnVmZmVyAAAJSGFzaF9Jbml0AAcLSGFzaF9VcGRhdGUACApIYXNoX0ZpbmFsAAkNSGFzaF9HZXRTdGF0ZQAKDkhhc2hfQ2FsY3VsYXRlAAsKU1RBVEVfU0laRQMBCqBNDAUAQYAKC+QDAw9+AX8BfgJAIANFDQAgACkDMCEEIAApAzghBSAAKQMgIQYgACkDKCEHIAApAxAhCCAAKQMYIQkgACkDACEKIAApAwghCwNAIAUgAUEwaikDACIMfCACQThqKQMAIAFBOGopAwAiDYUiBUIgiCAFQv////8Pg358IQUgByABQSBqKQMAIg58IAJBKGopAwAgAUEoaikDACIPhSIHQiCIIAdC/////w+DfnwhByAJIAFBEGopAwAiEHwgAkEYaikDACABQRhqKQMAIhGFIglCIIggCUL/////D4N+fCEJIAsgASkDACISfCACQQhqIhMpAwAgAUEIaikDACIUhSILQiCIIAtC/////w+DfnwhCyACQTBqKQMAIAyFIgxCIIggDEL/////D4N+IAR8IA18IQQgAkEgaikDACAOhSIMQiCIIAxC/////w+DfiAGfCAPfCEGIAJBEGopAwAgEIUiDEIgiCAMQv////8Pg34gCHwgEXwhCCACKQMAIBKFIgxCIIggDEL/////D4N+IAp8IBR8IQogAUHAAGohASATIQIgA0F/aiIDDQALIAAgCTcDGCAAIAo3AwAgACALNwMIIAAgBzcDKCAAIAg3AxAgACAFNwM4IAAgBjcDICAAIAQ3AzALC94CAgF/AX4CQCAEIAIgASgCACIHayICSQ0AIAAgAyAFIAdBA3RqIAIQASAAIAUgBmoiBykDACAAKQMAIghCL4iFIAiFQrHz3fEJfjcDACAAIAcpAwggACkDCCIIQi+IhSAIhUKx893xCX43AwggACAHKQMQIAApAxAiCEIviIUgCIVCsfPd8Ql+NwMQIAAgBykDGCAAKQMYIghCL4iFIAiFQrHz3fEJfjcDGCAAIAcpAyAgACkDICIIQi+IhSAIhUKx893xCX43AyAgACAHKQMoIAApAygiCEIviIUgCIVCsfPd8Ql+NwMoIAAgBykDMCAAKQMwIghCL4iFIAiFQrHz3fEJfjcDMCAAIAcpAzggACkDOCIIQi+IhSAIhUKx893xCX43AzggACADIAJBBnRqIAUgBCACayIHEAEgASAHNgIADwsgACADIAUgB0EDdGogBBABIAEgByAEajYCAAvtAwEFfiABKQM4IAApAziFIgNC/////w+DIgQgASkDMCAAKQMwhSIFQiCIIgZ+IgdC/////w+DIANCIIgiAyAFQv////8PgyIFfnwgBCAFfiIEQiCIfCIFQiCGIARC/////w+DhCAHQiCIIAMgBn58IAVCIIh8hSABKQMoIAApAyiFIgNC/////w+DIgQgASkDICAAKQMghSIFQiCIIgZ+IgdC/////w+DIANCIIgiAyAFQv////8PgyIFfnwgBCAFfiIEQiCIfCIFQiCGIARC/////w+DhCAHQiCIIAMgBn58IAVCIIh8hSABKQMYIAApAxiFIgNC/////w+DIgQgASkDECAAKQMQhSIFQiCIIgZ+IgdC/////w+DIANCIIgiAyAFQv////8PgyIFfnwgBCAFfiIEQiCIfCIFQiCGIARC/////w+DhCAHQiCIIAMgBn58IAVCIIh8hSABKQMIIAApAwiFIgNC/////w+DIgQgASkDACAAKQMAhSIFQiCIIgZ+IgdC/////w+DIANCIIgiAyAFQv////8PgyIFfnwgBCAFfiIEQiCIfCIFQiCGIARC/////w+DhCAHQiCIIAMgBn58IAVCIIh8hSACfHx8fCICQiWIIAKFQvnz3fGZ8pmrFn4iAkIgiCAChQu6CAIFfgN/AkAgAUEJSQ0AIAAgAUH4iwFqKQMAIgQgAikDOCACKQMwhSADfIUiBUL/////D4NC95Svrwh+IAVCgICAgHCDfEEAKQOAjAEgAikDKCACKQMghSADfYUgBIUiA0IgiCIEQrHz3fEJfnwgBEKHla+vCH4iBEIgiHwgBEL/////D4MgA0L/////D4MiA0Kx893xCX58IANCh5Wvrwh+IgRCIIh8IgVCIIh8IgNCOIYgA0KA/gODQiiGhCADQoCA/AeDQhiGIANCgICA+A+DQgiGhIQgA0IIiEKAgID4D4MgA0IYiEKAgPwHg4QgA0IoiEKA/gODIANCOIiEhIQgBEL/////D4MgAUF/aq1CNoaEIAVCIIZ8hSIEQiCIIgVCz9bTvgJ+IgZC/////w+DIARC/////w+DIgRCvdzKlQx+fCAEQs/W074CfiIEQiCIfCIHQiCGIghCJYggCCAEQv////8Pg4SFQvnz3fGZ8pmrFn4iBEIgiCAEhTcDACAAIAVCvdzKlQx+IANCz9bTvtLHq9lCfnwgBkIgiHwgB0IgiHwiA0IliCADhUL5893xmfKZqxZ+IgNCIIggA4U3AwgPCwJAIAFBBEkNACAAIAIpAxggAikDEIUgA6ciAkEYdCACQYD+A3FBCHRyIAJBCHZBgP4DcSACQRh2cnKtQiCGIAOFfCABQfyLAWo1AgBCIIZBADUCgIwBhIUiA0IgiCIEIAFBAnRBh5Wvr3hqrSIFfiIGQiCIIARCsfPd8Ql+fCAGQv////8PgyADQv////8PgyIDQrHz3fEJfnwgAyAFfiIDQiCIfCIEQiCIfCAEQiCGIANC/////w+DhCIEQgGGfCIDQiWIIAOFQvnz3fGZ8pmrFn4iBUIgiCAFhTcDCCAAIANCA4ggBIUiA0IjiCADhUKlvuP00YyH2Z9/fiIDQhyIIAOFNwMADwsCQCABRQ0AIAAgAigCBCACKAIAc60gA3wiBEIhiEEALQCAjAFBEHQgAUEIdHIiCSABQQF2QYCMAWotAABBGHRyIgogAUH/iwFqLQAAIgFyIguthSAEhULP1tO+0ser2UJ+IgRCHYggBIVC+fPd8Zn2masWfiIEQiCIIASFNwMAIAAgAigCDCACKAIIc60gA30iA0IhiCABQRh0IAtBgP4DcUEIdHIgCUEIdkGA/gNxIApBGHZyckENd62FIAOFQs/W077Sx6vZQn4iA0IdiCADhUL5893xmfaZqxZ+IgNCIIggA4U3AwgPCyAAIAIpA1AgAikDWIUgA4UiBEIhiCAEhULP1tO+0ser2UJ+IgRCHYggBIVC+fPd8Zn2masWfiIEQiCIIASFNwMIIAAgAikDQCACKQNIhSADhSIDQiGIIAOFQs/W077Sx6vZQn4iA0IdiCADhUL5893xmfaZqxZ+IgNCIIggA4U3AwALwwoBCn4gAa0iBEKHla+vmLbem55/fiEFAkACQCABQSFPDQBCACEGDAELQgAhBwJAIAFBwQBJDQBCACEHAkAgAUHhAEkNACACQfgAaikDACADfSABQciLAWopAwAiCIUiB0L/////D4MiCSACKQNwIAN8IAFBwIsBaikDACIKhSILQiCIIgx+Ig1CIIggB0IgiCIHIAx+fCANQv////8PgyAHIAtC/////w+DIgt+fCAJIAt+IgdCIIh8IglCIIh8QQApA7iMASILQQApA7CMASIMfIUgCUIghiAHQv////8Pg4SFIQcgAkHoAGopAwAgA30gC4UiCUL/////D4MiCyACKQNgIAN8IAyFIgxCIIgiDX4iBkL/////D4MgCUIgiCIJIAxC/////w+DIgx+fCALIAx+IgtCIIh8IgxCIIYgC0L/////D4OEIAZCIIggCSANfnwgDEIgiHyFIAV8IAggCnyFIQULIAJB2ABqKQMAIAN9IAFB2IsBaikDACIIhSIJQv////8PgyIKIAIpA1AgA3wgAUHQiwFqKQMAIguFIgxCIIgiDX4iBkL/////D4MgCUIgiCIJIAxC/////w+DIgx+fCAKIAx+IgpCIIh8IgxCIIYgCkL/////D4OEIAZCIIggCSANfnwgDEIgiHyFIAd8QQApA6iMASIJQQApA6CMASIKfIUhByACQcgAaikDACADfSAJhSIJQv////8PgyIMIAIpA0AgA3wgCoUiCkIgiCINfiIGQv////8PgyAJQiCIIgkgCkL/////D4MiCn58IAwgCn4iCkIgiHwiDEIghiAKQv////8Pg4QgBkIgiCAJIA1+fCAMQiCIfIUgBXwgCCALfIUhBQsgAkE4aikDACADfSABQeiLAWopAwAiCIUiCUL/////D4MiCiACKQMwIAN8IAFB4IsBaikDACILhSIMQiCIIg1+IgZC/////w+DIAlCIIgiCSAMQv////8PgyIMfnwgCiAMfiIKQiCIfCIMQiCGIApC/////w+DhCAGQiCIIAkgDX58IAxCIIh8hSAHfEEAKQOYjAEiB0EAKQOQjAEiCXyFIQYgAkEoaikDACADfSAHhSIHQv////8PgyIKIAIpAyAgA3wgCYUiCUIgiCIMfiINQv////8PgyAHQiCIIgcgCUL/////D4MiCX58IAogCX4iCUIgiHwiCkIghiAJQv////8Pg4QgDUIgiCAHIAx+fCAKQiCIfIUgBXwgCCALfIUhBQsgACACQRhqKQMAIAN9IAFB+IsBaikDACIHhSIIQv////8PgyIJIAIpAxAgA3wgAUHwiwFqKQMAIgqFIgtCIIgiDH4iDUL/////D4MgCEIgiCIIIAtC/////w+DIgt+fCAJIAt+IglCIIh8IgtCIIYgCUL/////D4OEIA1CIIggCCAMfnwgC0IgiHyFIAZ8QQApA4iMASIIQQApA4CMASIJfIUiCyACQQhqKQMAIAN9IAiFIghC/////w+DIgwgAikDACADfCAJhSIJQiCIIg1+IgZC/////w+DIAhCIIgiCCAJQv////8PgyIJfnwgDCAJfiIJQiCIfCIMQiCGIAlC/////w+DhCAGQiCIIAggDX58IAxCIIh8hSAFfCAHIAp8hSIFfCIHQiWIIAeFQvnz3fGZ8pmrFn4iB0IgiCAHhTcDACAAQgAgBUKHla+vmLbem55/fiAEIAN9Qs/W077Sx6vZQn58IAtC49zKlfzO8vWFf358IgNCJYggA4VC+fPd8ZnymasWfiIDQiCIIAOFfTcDCAuhDwMBfxR+An9BACEEIAJB+ABqKQMAIAN9QQApA/iMASIFhSIGQv////8PgyIHIAIpA3AgA3xBACkD8IwBIgiFIglCIIgiCn4iC0L/////D4MgBkIgiCIGIAlC/////w+DIgl+fCAHIAl+IgdCIIh8IglCIIYgB0L/////D4OEIAtCIIggBiAKfnwgCUIgiHyFIAJB2ABqKQMAIAN9QQApA9iMASIHhSIGQv////8PgyIJIAIpA1AgA3xBACkD0IwBIgqFIgtCIIgiDH4iDUL/////D4MgBkIgiCIGIAtC/////w+DIgt+fCAJIAt+IglCIIh8IgtCIIYgCUL/////D4OEIA1CIIggBiAMfnwgC0IgiHyFIAJBOGopAwAgA31BACkDuIwBIgmFIgZC/////w+DIgsgAikDMCADfEEAKQOwjAEiDIUiDUIgiCIOfiIPQv////8PgyAGQiCIIgYgDUL/////D4MiDX58IAsgDX4iC0IgiHwiDUIghiALQv////8Pg4QgD0IgiCAGIA5+fCANQiCIfIUgAkEYaikDACADfUEAKQOYjAEiC4UiBkL/////D4MiDSACKQMQIAN8QQApA5CMASIOhSIPQiCIIhB+IhFC/////w+DIAZCIIgiBiAPQv////8PgyIPfnwgDSAPfiINQiCIfCIPQiCGIA1C/////w+DhCARQiCIIAYgEH58IA9CIIh8hUEAKQOIjAEiDUEAKQOAjAEiD3yFfEEAKQOojAEiEEEAKQOgjAEiEXyFfEEAKQPIjAEiEkEAKQPAjAEiE3yFfEEAKQPojAEiFEEAKQPgjAEiFXyFIgZCJYggBoVC+fPd8ZnymasWfiIGQiCIIAaFIQYgAkHoAGopAwAgA30gFIUiFEL/////D4MiFiACKQNgIAN8IBWFIhVCIIgiF34iGEL/////D4MgFEIgiCIUIBVC/////w+DIhV+fCAWIBV+IhVCIIh8IhZCIIYgFUL/////D4OEIBhCIIggFCAXfnwgFkIgiHyFIAJByABqKQMAIAN9IBKFIhJC/////w+DIhQgAikDQCADfCAThSITQiCIIhV+IhZC/////w+DIBJCIIgiEiATQv////8PgyITfnwgFCATfiITQiCIfCIUQiCGIBNC/////w+DhCAWQiCIIBIgFX58IBRCIIh8hSACQShqKQMAIAN9IBCFIhBC/////w+DIhIgAikDICADfCARhSIRQiCIIhN+IhRC/////w+DIBBCIIgiECARQv////8PgyIRfnwgEiARfiIRQiCIfCISQiCGIBFC/////w+DhCAUQiCIIBAgE358IBJCIIh8hSACQQhqKQMAIAN9IA2FIg1C/////w+DIhAgAikDACADfCAPhSIPQiCIIhF+IhJC/////w+DIA1CIIgiDSAPQv////8PgyIPfnwgECAPfiIPQiCIfCIQQiCGIA9C/////w+DhCASQiCIIA0gEX58IBBCIIh8hSABrSIPQoeVr6+Ytt6bnn9+fCALIA58hXwgCSAMfIV8IAcgCnyFfCAFIAh8hSIFQiWIIAWFQvnz3fGZ8pmrFn4iBUIgiCAFhSEFAkAgAUGgAUgNACABQQV2QXxqIRkDQCACIARqIhpBG2opAwAgA30gBEGYjQFqKQMAIgeFIghC/////w+DIgkgGkETaikDACADfCAEQZCNAWopAwAiCoUiC0IgiCIMfiINQv////8PgyAIQiCIIgggC0L/////D4MiC358IAkgC34iCUIgiHwiC0IghiAJQv////8Pg4QgDUIgiCAIIAx+fCALQiCIfIUgBnwgBEGIjQFqKQMAIgggBEGAjQFqKQMAIgl8hSEGIBpBC2opAwAgA30gCIUiCEL/////D4MiCyAaQQNqKQMAIAN8IAmFIglCIIgiDH4iDUL/////D4MgCEIgiCIIIAlC/////w+DIgl+fCALIAl+IglCIIh8IgtCIIYgCUL/////D4OEIA1CIIggCCAMfnwgC0IgiHyFIAV8IAcgCnyFIQUgBEEgaiEEIBlBf2oiGQ0ACwsgACACQf8AaikDACADfCABQeiLAWopAwAiB4UiCEL/////D4MiCSACKQN3IAN9IAFB4IsBaikDACIKhSILQiCIIgx+Ig1C/////w+DIAhCIIgiCCALQv////8PgyILfnwgCSALfiIJQiCIfCILQiCGIAlC/////w+DhCANQiCIIAggDH58IAtCIIh8hSAGfCABQfiLAWopAwAiBiABQfCLAWopAwAiCHyFIgkgAkHvAGopAwAgA3wgBoUiBkL/////D4MiCyACKQNnIAN9IAiFIghCIIgiDH4iDUL/////D4MgBkIgiCIGIAhC/////w+DIgh+fCALIAh+IghCIIh8IgtCIIYgCEL/////D4OEIA1CIIggBiAMfnwgC0IgiHyFIAV8IAcgCnyFIgZ8IgVCJYggBYVC+fPd8ZnymasWfiIFQiCIIAWFNwMAIABCACAGQoeVr6+Ytt6bnn9+IA8gA31Cz9bTvtLHq9lCfnwgCULj3MqV/M7y9YV/fnwiA0IliCADhUL5893xmfKZqxZ+IgNCIIggA4V9NwMIC98FAgF+AX8CQAJAQQApA4AKIgBQRQ0AQYAIIQFCACEADAELAkBBACkDoI4BIABSDQBBACEBDAELQQAhAUEAQq+v79e895Kg/gAgAH03A/iLAUEAIABCxZbr+djShYIofDcD8IsBQQBCj/Hjja2P9JhOIAB9NwPoiwFBACAAQqus+MXV79HQfHw3A+CLAUEAQtOt1LKShbW0nn8gAH03A9iLAUEAIABCl5r0jvWWvO3JAHw3A9CLAUEAQsWDgv2v/8SxayAAfTcDyIsBQQAgAELqi7OdyOb09UN8NwPAiwFBAELIv/rLnJveueQAIAB9NwO4iwFBACAAQoqjgd/Ume2sMXw3A7CLAUEAQvm57738+MKnHSAAfTcDqIsBQQAgAEKo9dv7s5ynmj98NwOgiwFBAEK4sry3lNW31lggAH03A5iLAUEAIABC8cihuqm0w/zOAHw3A5CLAUEAQoihl9u445SXo38gAH03A4iL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AkHAAGogDGohC0GAjAEhAAJAAkACQCAHQQhJDQACQCAHQThqQQN2QQFqQQdxIg0NAAwCCyANQQN0IQ5BgIwBIQADQCALIAApAwA3AwAgC0EIaiELIABBCGohACANQX9qIg0NAAsgByAOayEHCyAHRQ0BAkACQCAHQQdxIg4NACAHIQ0MAQsgB0F4cSENA0AgCyAALQAAOgAAIAtBAWohCyAAQQFqIQAgDkF/aiIODQALCyAHQQhJDQELA0AgCyAAKQAANwAAIAtBCGohCyAAQQhqIQAgDUF4aiINDQALCyACIAIpAwggAikDQCIIfCADQQAoApyOAWoiACkDASACKQNIIgmFIgpCIIggCkL/////D4N+fDcDCCACIAIpAxggAikDUCIKfCAAKQMRIAIpA1giEIUiEUIgiCARQv////8Pg358NwMYIAIgECAKIAApAwmFIgpCIIggCkL/////D4N+IAIpAxB8fDcDECACIAkgCCAAQXlqKQMAhSIIQiCIIAhC/////w+DfiACKQMAfHw3AwAgACkDGSEIIAIpAyAhCSACIAIpAyggAikDYCIKfCAAKQMhIAIpA2giEIUiEUIgiCARQv////8Pg358NwMoIAIgECAJIAggCoUiCEIgiCAIQv////8Pg358fDcDICACIAYgAikDcCIIfCAAKQMxIAIpA3giBoUiCUIgiCAJQv////8Pg358NwM4IAIgBiAIIAApAymFIghCIIggCEL/////D4N+IAV8fDcDMAsgAiACIANBC2ogBEKHla+vmLbem55/fhADNwNAIAIgAiADQQAoApyOAWpBdWogBELP1tO+0ser2UJ+Qn+FEAM3A0gMAQsgBKchAAJAQQApA6COASIEUA0AAkAgAEEQSw0AIAJBwABqIABBgAggBBAEDAILAkAgAEGAAUsNACACQcAAaiAAQYAIIAQQBQwCCyACQcAAaiAAQYAIIAQQBgwBCwJAIABBEEsNACACQcAAaiAAIANCABAEDAELAkAgAEGAAUsNACACQcAAaiAAIANCABAFDAELIAJBwABqIAAgA0IAEAYLQQAgAikDcDcDuApBACACKQNgNwOoCkEAIAIpA1A3A5gKQQAgAkH4AGopAwA3A8AKQQAgAkHoAGopAwA3A7AKQQAgAkHYAGopAwA3A6AKQQAgAikDSCIEQjiGIARCgP4Dg0IohoQgBEKAgPwHg0IYhiAEQoCAgPgPg0IIhoSEIARCCIhCgICA+A+DIARCGIhCgID8B4OEIARCKIhCgP4DgyAEQjiIhISEIgQ3A4AKQQAgBDcDkApBACACKQNAIgRCOIYgBEKA/gODQiiGhCAEQoCA/AeDQhiGIARCgICA+A+DQgiGhIQgBEIIiEKAgID4D4MgBEIYiEKAgPwHg4QgBEIoiEKA/gODIARCOIiEhIQ3A4gKIAEkAAsGAEGAigELAgALC8wBAQBBgAgLxAG4/mw5I6RLvnwBgSz3Ia0c3tRt6YOQl9tyQKSkt7NnH8t55k7MwOV4glrQfcz/ciG4CEZ090MkjuA1kOaBOiZMPChSu5HDAMuI0GWLG1Muo3FkSJeiDflOOBnvRqnerNio+nY/45w0P/ncu8fHC08dilHgS820WTHIn37J2XhzZOrFrIM00+vDxYGg//oTY+sXDd1Rt/DaSdMWVSYp1GieKxa+WH1HofyP+LjRetAxzkXLOo+VFgQor9f7yrtLQH5AAgAA",sM="b9ab74e2",tv={name:iM,data:nM,hash:sM};let oM=new o,ul=null,y0=new Uint8Array(8);function Bo(S){return!Number.isInteger(S)||S<0||S>4294967295?new Error("Seed must be given as two valid 32-bit long unsigned integers (lo + high)."):null}function Gw(S,q,M){let Y=new DataView(S);Y.setUint32(0,q,!0),Y.setUint32(4,M,!0)}function aM(S,q=0,M=0){if(Bo(q))return Promise.reject(Bo(q));if(Bo(M))return Promise.reject(Bo(M));if(ul===null)return E(oM,tv,16).then(Y=>(ul=Y,Gw(y0.buffer,q,M),ul.writeMemory(y0),ul.calculate(S)));try{Gw(y0.buffer,q,M),ul.writeMemory(y0);let Y=ul.calculate(S);return Promise.resolve(Y)}catch(Y){return Promise.reject(Y)}}function cM(S=0,q=0){return Bo(S)?Promise.reject(Bo(S)):Bo(q)?Promise.reject(Bo(q)):v(tv,16).then(M=>{let Y=new Uint8Array(8);Gw(Y.buffer,S,q),M.writeMemory(Y),M.init();let ie={init:()=>(M.writeMemory(Y),M.init(),ie),update:ae=>(M.update(ae),ie),digest:ae=>M.digest(ae),save:()=>M.save(),load:ae=>(M.load(ae),ie),blockSize:512,digestSize:16};return ie})}var lM="ripemd160",dM="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",uM="6abbce74",rv={name:lM,data:dM,hash:uM};let fM=new o,I0=null;function AM(S){if(I0===null)return E(fM,rv,20).then(q=>(I0=q,I0.calculate(S)));try{let q=I0.calculate(S);return Promise.resolve(q)}catch(q){return Promise.reject(q)}}function hM(){return v(rv,20).then(S=>{S.init();let q={init:()=>(S.init(),q),update:M=>(S.update(M),q),digest:M=>S.digest(M),save:()=>S.save(),load:M=>(S.load(M),q),blockSize:64,digestSize:20};return q})}function gM(S,q){let{blockSize:M}=S,Y=C(q);if(Y.length>M){S.update(Y);let ie=S.digest("binary");return S.init(),ie}return new Uint8Array(Y.buffer,Y.byteOffset,Y.length)}function pM(S,q){S.init();let{blockSize:M}=S,Y=gM(S,q),ie=new Uint8Array(M);ie.set(Y);let ae=new Uint8Array(M);for(let xe=0;xe<M;xe++){let Je=ie[xe];ae[xe]=Je^92,ie[xe]=Je^54}S.update(ie);let ge={init:()=>(S.init(),S.update(ie),ge),update:xe=>(S.update(xe),ge),digest:(xe=>{let Je=S.digest("binary");return S.init(),S.update(ae),S.update(Je),S.digest(xe)}),save:()=>{throw new Error("save() not supported")},load:()=>{throw new Error("load() not supported")},blockSize:S.blockSize,digestSize:S.digestSize};return ge}function iv(S,q){if(!S||!S.then)throw new Error('Invalid hash function is provided! Usage: createHMAC(createMD5(), "key").');return S.then(M=>pM(M,q))}function mM(S,q,M,Y,ie){return s(this,void 0,void 0,function*(){let ae=new Uint8Array(Y),ge=new Uint8Array(q.length+4),xe=new DataView(ge.buffer),Je=C(q),qt=new Uint8Array(Je.buffer,Je.byteOffset,Je.length);ge.set(qt);let jt=0,rr=S.digestSize,Ot=Math.ceil(Y/rr),ji=null,Lr=null;for(let bo=1;bo<=Ot;bo++){xe.setUint32(q.length,bo),S.init(),S.update(ge),ji=S.digest("binary"),Lr=ji.slice();for(let yn=1;yn<M;yn++){S.init(),S.update(Lr),Lr=S.digest("binary");for(let vo=0;vo<rr;vo++)ji[vo]^=Lr[vo]}ae.set(ji.subarray(0,Y-jt),jt),jt+=rr}if(ie==="binary")return ae;let lu=new Uint8Array(Y*2);return w(lu,ae,Y)})}let yM=S=>{if(!S||typeof S!="object")throw new Error("Invalid options parameter. It requires an object.");if(!S.hashFunction||!S.hashFunction.then)throw new Error('Invalid hash function is provided! Usage: pbkdf2("password", "salt", 1000, 32, createSHA1()).');if(!Number.isInteger(S.iterations)||S.iterations<1)throw new Error("Iterations should be a positive number");if(!Number.isInteger(S.hashLength)||S.hashLength<1)throw new Error("Hash length should be a positive number");if(S.outputType===void 0&&(S.outputType="hex"),!["hex","binary"].includes(S.outputType))throw new Error(`Insupported output type ${S.outputType}. Valid values: ['hex', 'binary']`)};function zw(S){return s(this,void 0,void 0,function*(){yM(S);let q=yield iv(S.hashFunction,S.password);return mM(q,S.salt,S.iterations,S.hashLength,S.outputType)})}var IM="scrypt",wM="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cyICajYCOCAAIAAoAjwgAiAKakESdyAGc2o2AjwLvxIDFX8Bfg5/AkAgAkUNACAAQQd0IgNBQGoiBEEAKAKACCIFIAMgAmwiBmogAyABbGoiByADaiIIaiEJIAAgAkEHdCIKIAFBB3RqIgtsIQwgACALQYABamwhDSAAQQV0IgtBASALQQFLGyILQWBxIQ4gC0EBcSEPIAdBeGohECAHQXBqIREgB0FoaiESIAdBYGohEyAHQVhqIRQgB0FQaiEVIAdBSGohFiAHQUBqIRcgAa1Cf3whGCAEIAdqIRkgByAAQQh0IhpqIRsgACAKQYABamwhHCALQQRJIR1BACEeQQAhHwNAQQAoAoAIIiAgAyAfbGohIQJAIABFDQBBACEiAkAgHQ0AICAgHmohI0EAIQtBACEiA0AgByALaiIEICMgC2oiJCgCADYCACAEQQRqICRBBGooAgA2AgAgBEEIaiAkQQhqKAIANgIAIARBDGogJEEMaigCADYCACALQRBqIQsgDiAiQQRqIiJHDQALCyAPRQ0AIAcgIkECdCILaiAhIAtqKAIANgIACwJAIAFFDQBBACElIBwhIyAGISYDQCAFISQgACEiAkACQCAADQAgGyAXKQMANwMAIBsgFikDADcDCCAbIBUpAwA3AxAgGyAUKQMANwMYIBsgEykDADcDICAbIBIpAwA3AyggGyARKQMANwMwIBsgECkDADcDOAwBCwNAICQgJmoiCyAkIAxqIgQpAwA3AwAgC0EIaiAEQQhqKQMANwMAIAtBEGogBEEQaikDADcDACALQRhqIARBGGopAwA3AwAgC0EgaiAEQSBqKQMANwMAIAtBKGogBEEoaikDADcDACALQTBqIARBMGopAwA3AwAgC0E4aiAEQThqKQMANwMAIAtBwABqIARBwABqKQMANwMAIAtByABqIARByABqKQMANwMAIAtB0ABqIARB0ABqKQMANwMAIAtB2ABqIARB2ABqKQMANwMAIAtB4ABqIARB4ABqKQMANwMAIAtB6ABqIARB6ABqKQMANwMAIAtB8ABqIARB8ABqKQMANwMAIAtB+ABqIARB+ABqKQMANwMAICRBgAFqISQgIkF/aiIiDQALIAcgCCAbIAAQAiAFISQgACEiA0AgJCAjaiILICQgDWoiBCkDADcDACALQQhqIARBCGopAwA3AwAgC0EQaiAEQRBqKQMANwMAIAtBGGogBEEYaikDADcDACALQSBqIARBIGopAwA3AwAgC0EoaiAEQShqKQMANwMAIAtBMGogBEEwaikDADcDACALQThqIARBOGopAwA3AwAgC0HAAGogBEHAAGopAwA3AwAgC0HIAGogBEHIAGopAwA3AwAgC0HQAGogBEHQAGopAwA3AwAgC0HYAGogBEHYAGopAwA3AwAgC0HgAGogBEHgAGopAwA3AwAgC0HoAGogBEHoAGopAwA3AwAgC0HwAGogBEHwAGopAwA3AwAgC0H4AGogBEH4AGopAwA3AwAgJEGAAWohJCAiQX9qIiINAAsLIAggByAbIAAQAiAjIBpqISMgJiAaaiEmICVBAmoiJSABSQ0AC0EAISUDQAJAAkAgAA0AIBsgFykDADcDACAbIBYpAwA3AwggGyAVKQMANwMQIBsgFCkDADcDGCAbIBMpAwA3AyAgGyASKQMANwMoIBsgESkDADcDMCAbIBApAwA3AzgMAQsgACAKIBkpAgAgGIOnQQd0amwhJiAFISQgACEiA0AgJCAMaiILIAspAwAgJCAmaiIEKQMAhTcDACALQQhqIiMgIykDACAEQQhqKQMAhTcDACALQRBqIiMgIykDACAEQRBqKQMAhTcDACALQRhqIiMgIykDACAEQRhqKQMAhTcDACALQSBqIiMgIykDACAEQSBqKQMAhTcDACALQShqIiMgIykDACAEQShqKQMAhTcDACALQTBqIiMgIykDACAEQTBqKQMAhTcDACALQThqIiMgIykDACAEQThqKQMAhTcDACALQcAAaiIjICMpAwAgBEHAAGopAwCFNwMAIAtByABqIiMgIykDACAEQcgAaikDAIU3AwAgC0HQAGoiIyAjKQMAIARB0ABqKQMAhTcDACALQdgAaiIjICMpAwAgBEHYAGopAwCFNwMAIAtB4ABqIiMgIykDACAEQeAAaikDAIU3AwAgC0HoAGoiIyAjKQMAIARB6ABqKQMAhTcDACALQfAAaiIjICMpAwAgBEHwAGopAwCFNwMAIAtB+ABqIgsgCykDACAEQfgAaikDAIU3AwAgJEGAAWohJCAiQX9qIiINAAsgByAIIBsgABACIAAgCiAJKQIAIBiDp0EHdGpsISYgBSEkIAAhIgNAICQgDWoiCyALKQMAICQgJmoiBCkDAIU3AwAgC0EIaiIjICMpAwAgBEEIaikDAIU3AwAgC0EQaiIjICMpAwAgBEEQaikDAIU3AwAgC0EYaiIjICMpAwAgBEEYaikDAIU3AwAgC0EgaiIjICMpAwAgBEEgaikDAIU3AwAgC0EoaiIjICMpAwAgBEEoaikDAIU3AwAgC0EwaiIjICMpAwAgBEEwaikDAIU3AwAgC0E4aiIjICMpAwAgBEE4aikDAIU3AwAgC0HAAGoiIyAjKQMAIARBwABqKQMAhTcDACALQcgAaiIjICMpAwAgBEHIAGopAwCFNwMAIAtB0ABqIiMgIykDACAEQdAAaikDAIU3AwAgC0HYAGoiIyAjKQMAIARB2ABqKQMAhTcDACALQeAAaiIjICMpAwAgBEHgAGopAwCFNwMAIAtB6ABqIiMgIykDACAEQegAaikDAIU3AwAgC0HwAGoiIyAjKQMAIARB8ABqKQMAhTcDACALQfgAaiILIAspAwAgBEH4AGopAwCFNwMAICRBgAFqISQgIkF/aiIiDQALCyAIIAcgGyAAEAIgJUECaiIlIAFJDQALCwJAIABFDQBBACEiAkAgHQ0AICAgHmohI0EAIQtBACEiA0AgIyALaiIEIAcgC2oiJCgCADYCACAEQQRqICRBBGooAgA2AgAgBEEIaiAkQQhqKAIANgIAIARBDGogJEEMaigCADYCACALQRBqIQsgDiAiQQRqIiJHDQALCyAPRQ0AICEgIkECdCILaiAHIAtqKAIANgIACyAeIANqIR4gH0EBaiIfIAJHDQALCws=",xM="b32721f8",CM={name:IM,data:wM,hash:xM};function EM(S){return s(this,void 0,void 0,function*(){let{costFactor:q,blockSize:M,parallelism:Y,hashLength:ie}=S,ae=Wb(),ge=yield zw({password:S.password,salt:S.salt,iterations:1,hashLength:128*M*Y,hashFunction:ae,outputType:"binary"}),xe=yield v(CM,0),Je=128*M*q,qt=256*M;xe.setMemorySize(ge.length+Je+qt),xe.writeMemory(ge,0),xe.getExports().scrypt(M,q,Y);let jt=xe.getMemory().subarray(0,128*M*Y),rr=yield zw({password:S.password,salt:jt,iterations:1,hashLength:ie,hashFunction:ae,outputType:"binary"});if(S.outputType==="hex"){let Ot=new Uint8Array(ie*2);return w(Ot,rr,ie)}return rr})}let BM=S=>S&&!(S&S-1),bM=S=>{if(!S||typeof S!="object")throw new Error("Invalid options parameter. It requires an object.");if(!Number.isInteger(S.blockSize)||S.blockSize<1)throw new Error("Block size should be a positive number");if(!Number.isInteger(S.costFactor)||S.costFactor<2||!BM(S.costFactor))throw new Error("Cost factor should be a power of 2, greater than 1");if(!Number.isInteger(S.parallelism)||S.parallelism<1)throw new Error("Parallelism should be a positive number");if(!Number.isInteger(S.hashLength)||S.hashLength<1)throw new Error("Hash length should be a positive number.");if(S.outputType===void 0&&(S.outputType="hex"),!["hex","binary"].includes(S.outputType))throw new Error(`Insupported output type ${S.outputType}. Valid values: ['hex', 'binary']`)};function vM(S){return s(this,void 0,void 0,function*(){return bM(S),EM(S)})}var kM="bcrypt",SM="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",DM="8bd8822d",nv={name:kM,data:SM,hash:DM};function QM(S){return s(this,void 0,void 0,function*(){let{costFactor:q,password:M,salt:Y}=S,ie=yield v(nv,0);ie.writeMemory(C(Y),0);let ae=C(M);ie.writeMemory(ae,16);let ge=S.outputType==="encoded"?1:0;ie.getExports().bcrypt(ae.length,q,ge);let xe=ie.getMemory();if(S.outputType==="encoded")return f(xe,60);if(S.outputType==="hex"){let Je=new Uint8Array(48);return w(Je,xe,24)}return xe.slice(0,24)})}let _M=S=>{if(!S||typeof S!="object")throw new Error("Invalid options parameter. It requires an object.");if(!Number.isInteger(S.costFactor)||S.costFactor<4||S.costFactor>31)throw new Error("Cost factor should be a number between 4 and 31");if(S.password=C(S.password),S.password.length<1)throw new Error("Password should be at least 1 byte long");if(S.password.length>72)throw new Error("Password should be at most 72 bytes long");if(S.salt=C(S.salt),S.salt.length!==16)throw new Error("Salt should be 16 bytes long");if(S.outputType===void 0&&(S.outputType="encoded"),!["hex","binary","encoded"].includes(S.outputType))throw new Error(`Insupported output type ${S.outputType}. Valid values: ['hex', 'binary', 'encoded']`)};function FM(S){return s(this,void 0,void 0,function*(){return _M(S),QM(S)})}let PM=S=>!(!/^\$2[axyb]\$[0-3][0-9]\$[./A-Za-z0-9]{53}$/.test(S)||S[4]==="0"&&Number(S[5])<4||S[4]==="3"&&Number(S[5])>1),TM=S=>{if(!S||typeof S!="object")throw new Error("Invalid options parameter. It requires an object.");if(S.hash===void 0||typeof S.hash!="string")throw new Error("Hash should be specified");if(S.hash.length!==60)throw new Error("Hash should be 60 bytes long");if(!PM(S.hash))throw new Error("Invalid hash");if(S.password=C(S.password),S.password.length<1)throw new Error("Password should be at least 1 byte long");if(S.password.length>72)throw new Error("Password should be at most 72 bytes long")};function UM(S){return s(this,void 0,void 0,function*(){TM(S);let{hash:q,password:M}=S,Y=yield v(nv,0);Y.writeMemory(C(q),0);let ie=C(M);return Y.writeMemory(ie,60),!!Y.getExports().bcrypt_verify(ie.length)})}var RM="whirlpool",NM="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",qM="8d8f6035",sv={name:RM,data:NM,hash:qM};let OM=new o,w0=null;function MM(S){if(w0===null)return E(OM,sv,64).then(q=>(w0=q,w0.calculate(S)));try{let q=w0.calculate(S);return Promise.resolve(q)}catch(q){return Promise.reject(q)}}function LM(){return v(sv,64).then(S=>{S.init();let q={init:()=>(S.init(),q),update:M=>(S.update(M),q),digest:M=>S.digest(M),save:()=>S.save(),load:M=>(S.load(M),q),blockSize:64,digestSize:64};return q})}var HM="sm3",KM="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",GM="b6fb4b8e",ov={name:HM,data:KM,hash:GM};let zM=new o,x0=null;function JM(S){if(x0===null)return E(zM,ov,32).then(q=>(x0=q,x0.calculate(S)));try{let q=x0.calculate(S);return Promise.resolve(q)}catch(q){return Promise.reject(q)}}function jM(){return v(ov,32).then(S=>{S.init();let q={init:()=>(S.init(),q),update:M=>(S.update(M),q),digest:M=>S.digest(M),save:()=>S.save(),load:M=>(S.load(M),q),blockSize:64,digestSize:32};return q})}r.adler32=J,r.argon2Verify=Cs,r.argon2d=wo,r.argon2i=Ee,r.argon2id=Ki,r.bcrypt=FM,r.bcryptVerify=UM,r.blake2b=qe,r.blake2s=cl,r.blake3=Pi,r.crc32=Ye,r.crc64=Ow,r.createAdler32=z,r.createBLAKE2b=_e,r.createBLAKE2s=fi,r.createBLAKE3=A,r.createCRC32=Ie,r.createCRC64=Mw,r.createHMAC=iv,r.createKeccak=xO,r.createMD4=eO,r.createMD5=oO,r.createRIPEMD160=hM,r.createSHA1=fO,r.createSHA224=kO,r.createSHA256=Wb,r.createSHA3=yO,r.createSHA384=UO,r.createSHA512=qO,r.createSM3=jM,r.createWhirlpool=LM,r.createXXHash128=cM,r.createXXHash3=rM,r.createXXHash32=GO,r.createXXHash64=YO,r.keccak=wO,r.md4=Zq,r.md5=sO,r.pbkdf2=zw,r.ripemd160=AM,r.scrypt=vM,r.sha1=uO,r.sha224=vO,r.sha256=DO,r.sha3=mO,r.sha384=TO,r.sha512=NO,r.sm3=JM,r.whirlpool=MM,r.xxhash128=aM,r.xxhash3=tM,r.xxhash32=KO,r.xxhash64=VO}))});var l4,gc,KC,gm,d4=V(()=>{"use strict";l4=Dr(hm(),1),gc=32,KC=16,gm=class r{dataKey;constructor(e){this.dataKey=e}static async create(e,t){if(!e)throw new Error("[Crypt] password \u4E0D\u80FD\u4E3A\u7A7A");let i=await(0,l4.scrypt)({password:e,salt:t||"",costFactor:16384,blockSize:8,parallelism:1,hashLength:64,outputType:"binary"}),n=await crypto.subtle.importKey("raw",i.slice(0,32),{name:"AES-CTR"},!1,["encrypt","decrypt"]);return new r(n)}encryptedSize(e){return e+gc}decryptedSize(e){return Math.max(0,e-gc)}async encrypt(e){let t=crypto.getRandomValues(new Uint8Array(KC)),i=new Uint8Array(gc);i.set(t,0),crypto.getRandomValues(i.subarray(KC));let n=new Uint8Array(await crypto.subtle.encrypt({name:"AES-CTR",counter:t,length:128},this.dataKey,e)),s=new Uint8Array(gc+n.length);return s.set(i,0),s.set(n,gc),s}async decrypt(e){if(e.length<gc)throw new Error("[Crypt] \u52A0\u5BC6\u6587\u4EF6\u8FC7\u77ED\uFF08\u7F3A\u5C11\u6587\u4EF6\u5934\uFF09");let t=e.slice(0,KC),i=e.slice(gc);return new Uint8Array(await crypto.subtle.decrypt({name:"AES-CTR",counter:t,length:128},this.dataKey,i))}}});var pm,u4=V(()=>{"use strict";Be();d4();pm=class{addition;cipher=null;remoteDriver=null;remoteRoot="/";suffix;constructor(e){this.addition=e||{},this.suffix=this.addition.encrypted_suffix??".bin"}async init(){let e=this.addition.filename_encryption||"off";if(e!=="off")throw new Error(`[Crypt] filename_encryption='${e}' \u5C1A\u672A\u5B9E\u73B0\uFF0C\u5F53\u524D\u4EC5\u652F\u6301 off \u6A21\u5F0F\uFF08\u5185\u5BB9\u52A0\u5BC6\u3001\u6587\u4EF6\u540D\u4EC5\u52A0\u540E\u7F00\uFF09`);let{resolvePath:t}=await Promise.resolve().then(()=>(Ve(),Kr)),{getDriver:i}=await Promise.resolve().then(()=>(Yt(),Ni)),n=await t(this.addition.remote_path||"/");if(n.isVirtual||!n.storage)throw new Error(`[Crypt] remote_path \u672A\u5339\u914D\u5230\u6709\u6548\u5B58\u50A8: ${this.addition.remote_path}`);this.remoteRoot=n.physical||"/",this.remoteDriver=await i(n.storage.driver,n.storage),this.cipher=await gm.create(this.addition.password,this.addition.salt||"")}ensureReady(){if(!this.cipher||!this.remoteDriver)throw new Error("[Crypt] driver not initialized")}joinRemote(e){let t=String(e||"/");return((this.remoteRoot==="/"?"":this.remoteRoot)+t).replace(/\/{2,}/g,"/")||"/"}decryptName(e){return this.suffix&&e.endsWith(this.suffix)?e.slice(0,-this.suffix.length):e}async list(e,t){this.ensureReady();let i=this.joinRemote(t);return(await this.remoteDriver.list("",i)).map(s=>{if(s.is_dir)return s;let o=this.decryptName(s.name);return{...s,name:o,size:this.cipher.decryptedSize(s.size),type:X(o,!1)}})}async get(e,t){this.ensureReady();let i=this.joinRemote(t),n=await this.remoteDriver.get("",i);if(n.is_dir)return n;let s=this.decryptName(n.name);return{...n,name:s,size:this.cipher.decryptedSize(n.size),type:X(s,!1),raw_url:""}}async mkdir(e,t){this.ensureReady(),await this.remoteDriver.mkdir("",this.joinRemote(t))}async rename(e,t,i){this.ensureReady();let n=this.joinRemote(t);await this.isFile(n)?await this.remoteDriver.rename("",n+this.suffix,i+this.suffix):await this.remoteDriver.rename("",n,i)}async remove(e,t,i){this.ensureReady();let n=this.joinRemote(t);await this.isFile(n)?await this.remoteDriver.remove("",n+this.suffix,i):await this.remoteDriver.remove("",n,i)}async move(e,t,i,n,s){this.ensureReady();let o=this.joinRemote(n),a=this.joinRemote(s);await this.isFile(o)?await this.remoteDriver.move(e,t,i,o+this.suffix,a+this.suffix):await this.remoteDriver.move(e,t,i,o,a)}async copy(e,t,i,n,s){this.ensureReady();let o=this.joinRemote(n),a=this.joinRemote(s);await this.isFile(o)?await this.remoteDriver.copy(e,t,i,o+this.suffix,a+this.suffix):await this.remoteDriver.copy(e,t,i,o,a)}async put(e,t,i){this.ensureReady();let n=this.joinRemote(t)+this.suffix,s=await this.cipher.encrypt(new Uint8Array(i));await this.remoteDriver.put("",n,Buffer.from(s))}async createReadStream(e,t){this.ensureReady();let i=this.joinRemote(e)+this.suffix,n=await this.remoteDriver.get("",i);if(!n.raw_url)throw new Error("[Crypt] \u5E95\u5C42\u9A71\u52A8\u672A\u8FD4\u56DE\u4E0B\u8F7D\u94FE\u63A5\uFF0C\u65E0\u6CD5\u89E3\u5BC6\u4E0B\u8F7D");let s=await fetch(n.raw_url);if(!s.ok)throw new Error(`[Crypt] \u5E95\u5C42\u4E0B\u8F7D\u5931\u8D25: HTTP ${s.status}`);let o=new Uint8Array(await s.arrayBuffer()),a=await this.cipher.decrypt(o),c=t?.start??0,l=t?.end??a.length-1,d=a.slice(c,l+1);return new ReadableStream({start(u){u.enqueue(d),u.close()}})}async isFile(e){if(!this.suffix)return!1;try{let t=await this.remoteDriver.get("",e+this.suffix);return!!t&&!t.is_dir}catch{return!1}}}});var mm,f4=V(()=>{"use strict";Be();mm=class{addition;constructor(e){this.addition=e||{}}randSize(){let e=this.addition.min_file_size||0,t=this.addition.max_file_size||0;return t<=e?e:e+Math.floor(Math.random()*(t-e))}now(){return new Date().toISOString()}async list(){let e=[];for(let t=0;t<(this.addition.num_file||0);t++){let i=`file_${t}.bin`;e.push({name:i,size:this.randSize(),is_dir:!1,modified:this.now(),sign:"",type:X(i,!1)})}for(let t=0;t<(this.addition.num_folder||0);t++){let i=`folder_${t}`;e.push({name:i,size:0,is_dir:!0,modified:this.now(),sign:"",type:1})}return e}async get(e,t){let i=String(t||"").split("/").filter(Boolean),n=i[i.length-1]||"file.bin";return{name:n,size:this.randSize(),is_dir:!1,modified:this.now(),sign:"",type:X(n,!1),raw_url:""}}async mkdir(){}async rename(){}async remove(){}async move(){}async copy(){}async put(){}async createReadStream(e,t){let i=t?.start??0,n=t?.end??i+this.randSize()-1,s=Math.max(0,n-i+1),o=64*1024,a=s;return new ReadableStream({pull(c){if(a<=0){c.close();return}let l=Math.min(o,a),d=new Uint8Array(l);crypto.getRandomValues(d),c.enqueue(d),a-=l}})}}});var ym,A4=V(()=>{"use strict";Be();He();ym=class{addition;token;onTokenUpdate;constructor(e,t){this.addition=e||{},this.token=this.addition.token||"",this.onTokenUpdate=t}get baseUrl(){return(this.addition.url||"").replace(/\/+$/,"")}async init(){if(!this.baseUrl)throw new Error("[AListV3] url is required");try{let e=await this.request("/me","GET");this.addition.username&&e.username!==this.addition.username&&await this.login()}catch{this.addition.username&&await this.login()}}async login(){if(!this.addition.username)return;let e=await this.request("/auth/login","POST",{username:this.addition.username,password:this.addition.password},!1);if(this.token=e.token,this.onTokenUpdate)try{await this.onTokenUpdate(this.token)}catch{}}async request(e,t,i,n=!0){let s=await fetch(`${this.baseUrl}/api${e}`,{method:t,headers:{"Content-Type":"application/json",...this.token?{Authorization:this.token}:{}},...i!==void 0?{body:JSON.stringify(i)}:{}}),o=await s.json().catch(()=>({code:s.status,message:"invalid response",data:null}));if(o.code!==200){if((o.code===401||o.code===403)&&n)return await this.login(),this.request(e,t,i,!1);throw new Error(`[AListV3] request failed: code=${o.code}, message=${o.message}`)}return o.data}toFileItem(e){return{name:e.name,size:e.size||0,is_dir:!!e.is_dir,modified:e.modified||new Date().toISOString(),sign:e.sign||"",thumb:e.thumb||"",type:e.type??X(e.name,!!e.is_dir),raw_url:""}}async list(e,t){let n=((await this.request("/fs/list","POST",{path:t,password:this.addition.meta_password||"",page:1,per_page:0,refresh:!1})).content||[]).map(s=>this.toFileItem(s));return de(n,"name","asc")}async get(e,t){let i=await this.request("/fs/get","POST",{path:t,password:this.addition.meta_password||""});return{...this.toFileItem(i),raw_url:i.raw_url||""}}async mkdir(e,t){await this.request("/fs/mkdir","POST",{path:t})}async rename(e,t,i){await this.request("/fs/rename","POST",{path:t,name:i})}async remove(e,t,i){let n=t.split("/").slice(0,-1).join("/")||"/";await this.request("/fs/remove","POST",{dir:n,names:i})}async move(e,t,i,n,s){let o=n.split("/").slice(0,-1).join("/")||"/",a=s.split("/").slice(0,-1).join("/")||"/";await this.request("/fs/move","POST",{src_dir:o,dst_dir:a,names:i})}async copy(e,t,i,n,s){let o=n.split("/").slice(0,-1).join("/")||"/",a=s.split("/").slice(0,-1).join("/")||"/";await this.request("/fs/copy","POST",{src_dir:o,dst_dir:a,names:i})}async put(e,t,i){let n=await fetch(`${this.baseUrl}/api/fs/put`,{method:"PUT",headers:{Authorization:this.token,"File-Path":encodeURIComponent(t),"Content-Type":"application/octet-stream"},body:i}),s=await n.json().catch(()=>({code:n.status,message:"invalid response",data:null}));if(s.code!==200)throw new Error(`[AListV3] put failed: code=${s.code}, message=${s.message}`)}}});function h4(r){let e=r.indexOf("http://"),t=r.indexOf("https://"),i=e>=0?e:t;if(i<0)throw new Error(`invalid line: ${r}, because url is required for file`);let n=r.slice(i),s=r.slice(0,i),o={url:n,name:"",level:0,modified:0,size:0,children:[]};if(i>0){if(!s.endsWith(":"))throw new Error(`invalid line: ${r}, file info must end with ':'`);let a=s.slice(0,-1);if(!a)throw new Error(`invalid line: ${r}, file name can't be empty`);let c=a.split(":");if(o.name=c[0],c.length>1){let l=parseInt(c[1],10);if(Number.isNaN(l))throw new Error(`invalid line: ${r}, file size must be an integer`);if(o.size=l,c.length>2){let d=parseInt(c[2],10);if(Number.isNaN(d))throw new Error(`invalid line: ${r}, modified must be a unix timestamp`);o.modified=d}}}else{let c=new URL(n).pathname.split("/").filter(Boolean);o.name=c[c.length-1]||n}return o}function oJ(r){let e={url:"",name:"root",level:-1,modified:0,size:0,children:[]},t=[e],i=String(r||"").split(` -`);for(let n of i){let s=0;for(;s<n.length&&n[s]===" ";)s++;if(s%2!==0)throw new Error(`the line '${n}' indent is not a multiple of 2`);let o=s/2,a=n.slice(s).trim();if(a){for(;o<=t[t.length-1].level;)t.pop();if(a.endsWith(":")){let c={url:"",name:a.slice(0,-1),level:o,modified:0,size:0,children:[]};t[t.length-1].children.push(c),t.push(c)}else{let c=h4(a);c.level=o,t[t.length-1].children.push(c)}}}return e}function Pl(r){if(r.url)return r.size;let e=0;for(let t of r.children)e+=Pl(t);return r.size=e,e}function aJ(r){let e=t=>{if(t.level===-1)return t.children.map(e).join(` +`,b=new TextEncoder,x=b.encode(y),_=s?b.encode(w):new Uint8Array(0),R=b.encode(C),U=s?new Uint8Array(s):new Uint8Array(0),T=x.length+_.length+U.length+R.length,D=new Uint8Array(T),B=0;D.set(x,B),B+=x.length,_.length>0&&(D.set(_,B),B+=_.length,D.set(U,B),B+=U.length),D.set(R,B),l=D}else c=`https://www.weiyun.com/webapp/json/${e}/${t}?g_tk=${encodeURIComponent(a)}&cmd=${i}`,l=JSON.stringify({req_header:JSON.stringify(this.newHeader(i,o)),req_body:JSON.stringify(this.newBody(t,n,o))}),d["Content-Type"]="application/json; charset=UTF-8";let u=await fetch(c,{method:"POST",headers:d,body:l});if(this.updateCookiesFromHeaders(u.headers),u.status===403)try{await this.refreshCtoken(),(this.loginType()==="weixin"||this.loginType()==="weixin_openid")&&(await this.weixinRefreshToken().catch(()=>{}),await this.refreshCtoken()),d.Cookie=this.getCookieStr(),d.g_tk=this.cookies.get("wyctoken")||"",u=await fetch(c,{method:"POST",headers:d,body:l}),this.updateCookiesFromHeaders(u.headers)}catch(p){throw new Error(`[WeiYun] Request failed (403): ${p.message}`)}if(!u.ok){let p=await u.text().catch(()=>"");throw new Error(`[WeiYun] HTTP ${u.status}: ${p}`)}let f=await u.json().catch(()=>({})),h=f.data||f.result;if(f.ret!==void 0&&f.ret!==0)throw new Error(`[WeiYun] Error (${f.ret}): ${f.msg||"Unknown"}`);if(h?.rsp_header&&h.rsp_header.retcode!==0){let p=h.rsp_header;throw new Error(`[WeiYun] Cmd ${p.cmd} (${p.cmdName||t}) Error (${p.retcode}): ${p.retmsg||"Unknown error"}`)}if(e==="preUpload")return h?.rsp_body?.RspMsg_body?.weiyunPreUploadMsgRsp_body||f;if(e==="upload")return h?.rsp_body?.RspMsg_body?.[`weiyun.${t}MsgRsp_body`]||f;let g=h?.rsp_body?.RspMsg_body;if(typeof g=="string")try{return JSON.parse(g)}catch{return g}return g||h||f}async diskUserInfoGet(){return this.request("weiyunQdiskClient","DiskUserInfoGet",2201,{is_get_upload_flow_flag:!1,is_get_high_speed_flow_info:!1,is_get_weiyun_flag:!1,is_get_space_clean_info:!1,is_get_user_reward_info:!1})}async libDirPathGet(e){return(await this.request("weiyunFileLibClient","LibDirPathGet",26150,{dir_key:e})).items||[]}async diskDirFileList(e,t={}){return this.request("weiyunQdisk","DiskDirList",2208,{dir_key:e,start:t.start||0,count:t.count||500,sort_field:t.sortField??2,reverse_order:t.reverseOrder??!1,get_type:t.getType??0,get_abstract_url:!1,get_dir_detail_info:!1})}async diskFileDownload(e){let i=(await this.request("weiyunQdiskClient","DiskFileBatchDownload",2402,{file_list:[e],download_type:0})).file_list||[];if(!i||i.length===0)throw new Error("[WeiYun] No download link returned");return i[0]}async diskDirCreate(e){return this.request("weiyunQdiskClient","DiskDirCreate",2614,{ppdir_key:e.ppdir_key,pdir_key:e.pdir_key,dir_name:e.dir_name,file_exist_option:2,create_type:1})}async diskFileRename(e,t){await this.request("weiyunQdiskClient","DiskFileRename",2605,{ppdir_key:e.ppdir_key,pdir_key:e.pdir_key,file_id:e.file_id,src_filename:e.filename,filename:t})}async diskDirAttrModify(e,t){await this.request("weiyunQdiskClient","DiskDirAttrModify",2615,{ppdir_key:e.ppdir_key,pdir_key:e.pdir_key,dir_key:e.dir_key,src_dir_name:e.dir_name,dst_dir_name:t})}async diskFileDelete(e){await this.request("weiyunQdiskClient","DiskDirFileBatchDeleteEx",2509,{file_list:[e]})}async diskDirDelete(e){await this.request("weiyunQdiskClient","DiskDirFileBatchDeleteEx",2509,{dir_list:[e]})}async diskFileMove(e,t){await this.request("weiyunQdiskClient","DiskDirFileBatchMove",2618,{src_ppdir_key:e.ppdir_key,src_pdir_key:e.pdir_key,file_list:[e],dst_ppdir_key:t.pdir_key,dst_pdir_key:t.dir_key})}async diskDirMove(e,t){await this.request("weiyunQdiskClient","DiskDirFileBatchMove",2618,{src_ppdir_key:e.ppdir_key,src_pdir_key:e.pdir_key,dir_list:[e],dst_ppdir_key:t.pdir_key,dst_pdir_key:t.dir_key})}async preUpload(e,t,i,n,s,o=4,a=1){let l=0,d=n,u=0;n>0&&(d=n%1048576,d===0&&(d=1048576),u=d%128,u===0&&(u=128),l=n-d);let f=[],h=new zp;for(let x=0;x<l;x+=1048576){let _=s.subarray(x,x+1048576);h.update(_),f.push({sha:h.getStateHex(),offset:x,size:1048576})}let g=s.subarray(l,l+d-u);h.update(g);let p=h.getStateHex(),I=s.subarray(l+d-u,n);h.update(I);let y=W8(I),w=h.digestHex();f.push({sha:w,offset:l,size:d});let C={common_upload_req:{ppdir_key:e,pdir_key:t,file_size:n,filename:i,file_exist_option:a,use_mutil_channel:!0},upload_scr:0,channel_count:o,block_size:1048576,check_sha:p,check_data:y,block_info_list:f},b=await this.request("preUpload","PreUpload",247120,C);return b.common_upload_rsp&&(b.common_upload_rsp.file_sha=w,b.common_upload_rsp.file_size=n),b}async addUploadChannel(e,t,i){return this.request("upload","AddChannel",247122,{upload_key:i.upload_key,ex:i.ex,orig_channel_count:e,dest_channel_count:t,speed:4303})}async uploadPiece(e,t,i){let n=await this.request("upload","UploadPiece",247121,{upload_key:t.upload_key,ex:t.ex,channel:e},i);return n.channel&&n.channel.len===0&&n.upload_state===1&&(n.channel.len=e.len),n}}});function EJ(r){return Buffer.from(JSON.stringify(r),"utf8").toString("base64")}function BJ(r){try{let e=JSON.parse(Buffer.from(r,"base64").toString("utf8"));if(!e||!e.uploadKey||!e.ex||!Number.isInteger(e.partCount)||e.partCount<1)throw new Error("invalid upload session");return e}catch{throw new Error("[WeiYun] \u4E0A\u4F20\u4F1A\u8BDD\u65E0\u6548\u6216\u5DF2\u635F\u574F")}}function n4(r){if(!r)return new Date().toISOString();try{let e=typeof r=="string"?parseInt(r,10):r;if(!isNaN(e)&&e>0){let i=e<1e10?e*1e3:e;return new Date(i).toISOString()}let t=new Date(r);if(!isNaN(t.getTime()))return t.toISOString()}catch{}return new Date().toISOString()}function r4(r){return{name:r.dir_name,size:0,is_dir:!0,modified:n4(r.dir_mtime||r.dir_ctime),sign:r.dir_key,type:1,thumb:"",raw_url:""}}function i4(r){return{name:r.filename,size:r.file_size||0,is_dir:!1,modified:n4(r.file_mtime||r.file_ctime),sign:r.file_id,type:X(r.filename,!1),thumb:r.ext_info?.thumb_url||"",raw_url:""}}function iE(r){let e={...r||{}};return e.root_folder_id=(e.root_folder_id||"").trim(),e.cookies=(e.cookies||"").trim(),e.order_by=e.order_by||"name",e.order_direction=e.order_direction||"asc",e.upload_thread=e.upload_thread||"4",e}var CJ,t4,$p,s4=j(()=>{"use strict";Be();He();e4();CJ=45,t4=1024*1024;$p=class{client;addition;rootFolderId="";rootPdirKey="";uploadThreads=4;pathFolderCache=new Map;budget={used:0,limit:CJ};constructor(e,t){this.addition=iE(e),this.client=new jp(this.addition,t)}async init(){let e=parseInt(this.addition.upload_thread||"4",10);if(this.uploadThreads=Math.min(32,Math.max(4,isNaN(e)?4:e)),this.addition.upload_thread=String(this.uploadThreads),await this.client.refreshCtoken(),this.addition.root_folder_id)this.rootFolderId=this.addition.root_folder_id;else{let n=await this.client.diskUserInfoGet();this.rootFolderId=n.main_dir_key||n.root_dir_key||"",this.addition.root_folder_id=this.rootFolderId}if(!this.rootFolderId)throw new Error("[WeiYun] Failed to obtain root folder ID");let t=await this.client.libDirPathGet(this.rootFolderId);if(!t||t.length===0)throw new Error(`[WeiYun] Invalid root directory ID: ${this.rootFolderId}`);let i=t[t.length-1];this.rootPdirKey=i.pdir_key||"",this.pathFolderCache.set("/",{dirKey:this.rootFolderId,pdirKey:this.rootPdirKey,dirName:i.dir_name||"root"})}consumePendingCookie(){return this.client.consumePendingCookie()}async resolveFolder(e){let t="/"+String(e||"").split("/").filter(Boolean).join("/");if(t==="/"||t===`/${this.rootFolderId}`)return{dirKey:this.rootFolderId,pdirKey:this.rootPdirKey,dirName:"root"};if(this.pathFolderCache.has(t))return this.pathFolderCache.get(t);let i=t.split("/").filter(Boolean),n={dirKey:this.rootFolderId,pdirKey:this.rootPdirKey,dirName:"root"},s="";for(let o=0;o<i.length;o++){let a=i[o],c=(()=>{try{return decodeURIComponent(a)}catch{return a}})();if(s="/"+i.slice(0,o+1).join("/"),this.pathFolderCache.has(s)){n=this.pathFolderCache.get(s);continue}this.budget.used++,this.budget.used>=this.budget.limit&&console.warn(`[WeiYun] Cloudflare Worker subrequest budget limit (${this.budget.limit}) reached.`);let u=((await this.client.diskDirFileList(n.dirKey,{count:500,getType:1})).dir_list||[]).find(f=>f.dir_name===a||f.dir_name===c||f.dir_key===a);if(!u)throw new Error(`[WeiYun] Directory '${a}' not found in folder '${n.dirKey}'`);n={dirKey:u.dir_key,pdirKey:n.dirKey,dirName:u.dir_name},this.pathFolderCache.set(s,n)}return n}async resolveFile(e){let t=String(e||"").split("/").filter(Boolean);if(t.length===0)throw new Error("[WeiYun] \u8DEF\u5F84\u65E0\u6548");let i=t[t.length-1],n=(()=>{try{return decodeURIComponent(i)}catch{return i}})(),s="/"+t.slice(0,t.length-1).join("/"),o=await this.resolveFolder(s);this.budget.used++;let a=await this.client.diskDirFileList(o.dirKey,{count:500,getType:0}),c=(a.file_list||[]).find(d=>d.filename===i||d.filename===n||d.file_id===i);if(c)return{file:c,parent:o,isDir:!1};let l=(a.dir_list||[]).find(d=>d.dir_name===i||d.dir_name===n||d.dir_key===i);if(l)return{folder:l,parent:o,isDir:!0};throw new Error(`[WeiYun] \u6587\u4EF6\u6216\u76EE\u5F55\u672A\u627E\u5230: ${i}`)}async list(e,t){this.budget.used=0;let i=await this.resolveFolder(t),n=[],s=[],o=0;for(;;){if(this.budget.used++,this.budget.used>=this.budget.limit){console.warn(`[WeiYun] Subrequest budget limit (${this.budget.limit}) reached while listing ${t}`);break}let c=this.addition.order_by==="size"?3:this.addition.order_by==="updated_at"?2:1,l=this.addition.order_direction==="desc",d=await this.client.diskDirFileList(i.dirKey,{start:o,count:500,sortField:c,reverseOrder:l,getType:0}),u=d.dir_list||[],f=d.file_list||[];for(let h of u)h.pdir_key=i.dirKey,n.push(h);for(let h of f)h.pdir_key=i.dirKey,s.push(h);if(o=n.length+s.length,d.finish_flag||u.length===0&&f.length===0)break}let a=[...n.map(r4),...s.map(i4)];return de(a,this.addition.order_by==="size"?"size":this.addition.order_by==="updated_at"?"updated_at":"name",this.addition.order_direction)}async get(e,t){this.budget.used=0;let i="/"+String(t||"").split("/").filter(Boolean).join("/");if(i==="/"||i===`/${this.rootFolderId}`)return{name:"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:this.rootFolderId,type:1,raw_url:""};let{file:n,folder:s,parent:o,isDir:a}=await this.resolveFile(t);if(a&&s)return r4(s);if(n){let c=i4(n);try{let l=await this.client.diskFileDownload({ppdir_key:o.pdirKey,pdir_key:o.dirKey,file_id:n.file_id,filename:n.filename});c.raw_url=l.download_url,c.raw_url_headers={Cookie:`${l.cookie_name}=${l.cookie_value}`}}catch(l){console.warn(`[WeiYun] \u83B7\u53D6 ${n.filename} \u4E0B\u8F7D\u94FE\u63A5\u5931\u8D25:`,l.message),c.raw_url_error=l.message}return c}throw new Error(`[WeiYun] \u6761\u76EE\u672A\u627E\u5230: ${t}`)}async mkdir(e,t){this.budget.used=0;let i=String(t||"").split("/").filter(Boolean),n=i.pop()||"\u65B0\u5EFA\u6587\u4EF6\u5939",s="/"+i.join("/"),o=await this.resolveFolder(s);await this.client.diskDirCreate({ppdir_key:o.pdirKey,pdir_key:o.dirKey,dir_name:n})}async rename(e,t,i){this.budget.used=0;let{file:n,folder:s,parent:o,isDir:a}=await this.resolveFile(t);a&&s?await this.client.diskDirAttrModify({ppdir_key:o.pdirKey,pdir_key:o.dirKey,dir_key:s.dir_key,dir_name:s.dir_name},i):n&&await this.client.diskFileRename({ppdir_key:o.pdirKey,pdir_key:o.dirKey,file_id:n.file_id,filename:n.filename},i)}async remove(e,t,i){this.budget.used=0;let{file:n,folder:s,parent:o,isDir:a}=await this.resolveFile(t);a&&s?await this.client.diskDirDelete({ppdir_key:o.pdirKey,pdir_key:o.dirKey,dir_key:s.dir_key,dir_name:s.dir_name}):n&&await this.client.diskFileDelete({ppdir_key:o.pdirKey,pdir_key:o.dirKey,file_id:n.file_id,filename:n.filename})}async move(e,t,i,n,s){this.budget.used=0;let{file:o,folder:a,parent:c,isDir:l}=await this.resolveFile(n),d=await this.resolveFolder(t);l&&a?await this.client.diskDirMove({ppdir_key:c.pdirKey,pdir_key:c.dirKey,dir_key:a.dir_key,dir_name:a.dir_name},{pdir_key:d.pdirKey,dir_key:d.dirKey}):o&&await this.client.diskFileMove({ppdir_key:c.pdirKey,pdir_key:c.dirKey,file_id:o.file_id,filename:o.filename},{pdir_key:d.pdirKey,dir_key:d.dirKey})}async copy(e,t,i,n,s){throw new Error("[WeiYun] \u5FAE\u4E91\u63A5\u53E3\u4E0D\u652F\u6301\u590D\u5236\u64CD\u4F5C (Copy not supported)")}async put(e,t,i){let n=String(t||"").split("/").filter(Boolean),s=n.pop();if(!s)throw new Error("[WeiYun] \u4E0A\u4F20\u8DEF\u5F84\u65E0\u6548");let o="/"+n.join("/"),a=await this.resolveFolder(o),c=await this.client.preUpload(a.pdirKey,a.dirKey,s,i.length,i,4,1);if(c.file_exist)return;let l={upload_key:c.upload_key||"",ex:c.ex||""},d=c.channel_list||[];d.length===0&&(d=[{id:0,offset:0,len:i.length}]);for(let u of d){let f={...u};for(;f.offset<i.length;){let h=Math.min(f.len||t4,i.length-f.offset),g=i.subarray(f.offset,f.offset+h),p=await this.client.uploadPiece(f,l,g);if(p.upload_state===2)break;p.channel?f=p.channel:f.offset+=h}}}async createUploadSession(e,t,i,n,s){this.budget.used=0;let o=await this.resolveFolder(t||"/"),a=t4,c=Math.max(1,Math.ceil(Math.max(0,Number(n)||0)/a)),l=new Uint8Array(0),d=await this.client.preUpload(o.pdirKey,o.dirKey,i,Math.max(0,Number(n)||0),l,4,1);if(d.file_exist)return{reuse:!0,partCount:0,chunkSize:a,session:""};let u={upload_key:d.upload_key||"",ex:d.ex||""},f=d.channel_list||[];if(f.length<this.uploadThreads&&u.upload_key)try{let h=await this.client.addUploadChannel(f.length,this.uploadThreads,u);h.channels&&(f=[...f,...h.channels])}catch{}return{reuse:!1,partCount:c,chunkSize:a,session:EJ({uploadKey:u.upload_key,ex:u.ex,parentDirKey:o.pdirKey,pdirKey:o.dirKey,fileName:i,size:Math.max(0,Number(n)||0),partCount:c,chunkSize:a,channels:f})}}async uploadPart(e,t,i){let n=BJ(e);if(!Number.isInteger(t)||t<1||t>n.partCount)throw new Error(`[WeiYun] \u5206\u7247\u5E8F\u53F7\u65E0\u6548: ${t}`);let s=(t-1)*n.chunkSize,o={id:t-1,offset:s,len:i.length},a={upload_key:n.uploadKey,ex:n.ex};return await this.client.uploadPiece(o,a,i),{partNumber:t}}async completeUploadSession(e,t=[]){}}});async function NJ(r,e){let t=`${r}${e}1appkey`,i=await _o(t),n=$t(i);return`div101.${r}${n}`}async function o4(r,e,t,i,n,s,o){let a=await NJ(r,s);return[`ANDROID-${t}/${n}`,"protocolVersion/200","accesstype/",`clientid/${e}`,`clientversion/${n}`,"action_type/","networktype/WIFI","sessionid/",`deviceid/${r}`,"providername/NONE",`devicesign/${a}`,"refresh_token/",`sdkversion/${i}`,`datetime/${Date.now()}`,`usrno/${o}`,`appname/android-${t}`,"session_origin/","grant_type/","appid/","clientip/","devicename/Xiaomi_M2004j7ac","osversion/13","platformversion/10","accessmode/","devicemodel/M2004J7AC"].join(" ")}function nE(r,e){try{let t=new URL(e);return`${r.toUpperCase()}:${t.pathname}`}catch{let t=e.match(/:\/\/[^/]+((\/[^/\s?#]+)*)/);return`${r.toUpperCase()}:${t?t[1]:""}`}}var bJ,vJ,kJ,SJ,DJ,QJ,_J,FJ,PJ,TJ,UJ,RJ,Vp,a4=j(()=>{"use strict";si();bJ=["SOP04dGzk0TNO7t7t9ekDbAmx+eq0OI1ovEx","nVBjhYiND4hZ2NCGyV5beamIr7k6ifAsAbl","Ddjpt5B/Cit6EDq2a6cXgxY9lkEIOw4yC1GDF28KrA","VVCogcmSNIVvgV6U+AochorydiSymi68YVNGiz","u5ujk5sM62gpJOsB/1Gu/zsfgfZO","dXYIiBOAHZgzSruaQ2Nhrqc2im","z5jUTBSIpBN9g4qSJGlidNAutX6","KJE2oveZ34du/g1tiimm"],vJ=["C9qPpZLN8ucRTaTiUMWYS9cQvWOE","+r6CQVxjzJV6LCV","F","pFJRC","9WXYIDGrwTCz2OiVlgZa90qpECPD6olt","/750aCr4lm/Sly/c","RB+DT/gZCrbV","","CyLsf7hdkIRxRm215hl","7xHvLi2tOYP0Y92b","ZGTXXxu8E/MIWaEDB+Sm/","1UI3","E7fP5Pfijd+7K+t6Tg/NhuLq0eEUVChpJSkrKxpO","ihtqpG6FMt65+Xk+tWUH2","NhXXU9rg4XXdzo7u5o"],kJ=["KHBJ07an7ROXDoK7Db","G6n399rSWkl7WcQmw5rpQInurc1DkLmLJqE","JZD1A3M4x+jBFN62hkr7VDhkkZxb9g3rWqRZqFAAb","fQnw/AmSlbbI91Ik15gpddGgyU7U","/Dv9JdPYSj3sHiWjouR95NTQff","yGx2zuTjbWENZqecNI+edrQgqmZKP","ljrbSzdHLwbqcRn","lSHAsqCkGDGxQqqwrVu","TsWXI81fD1","vk7hBjawK/rOSrSWajtbMk95nfgf3"],SJ="1.53.2",DJ="com.pikcloud.pikpak",QJ="2.0.6.206003",_J="2.0.0",FJ="mypikpak.com",PJ="8.0.3",TJ="undefined",UJ="mypikpak.com",RJ="8.0.3";Vp=class{addition;clientId;clientSecret;clientVersion;packageName;sdkVersion;algorithms;deviceId;userId="";userAgent="";accessToken="";refreshTokenVal="";captchaTokenVal="";onTokenRefreshed;constructor(e,t){this.addition=e,this.onTokenRefreshed=t,this.refreshTokenVal=e.refresh_token||"",this.captchaTokenVal=e.captcha_token||"";let i=e.platform||"web",n=e.client_id,s=e.client_secret;i==="android"?(this.clientId=n||"",this.clientSecret=s||"",this.clientVersion=SJ,this.packageName=DJ,this.sdkVersion=QJ,this.algorithms=bJ):i==="pc"?(this.clientId=n||"",this.clientSecret=s||"",this.clientVersion=TJ,this.packageName=UJ,this.sdkVersion=RJ,this.algorithms=kJ,this.userAgent="MainWindow Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) PikPak/2.6.11.4955 Chrome/100.0.4896.160 Electron/18.3.15 Safari/537.36"):(this.clientId=n||"",this.clientSecret=s||"",this.clientVersion=_J,this.packageName=FJ,this.sdkVersion=PJ,this.algorithms=vJ,this.userAgent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"),this.deviceId=e.device_id||$t(`${e.username||""}${e.password||""}`)}getCaptchaSign(){let e=String(Date.now()),t=`${this.clientId}${this.clientVersion}${this.packageName}${this.deviceId}${e}`;for(let i of this.algorithms)t=$t(t+i);return{timestamp:e,sign:`1.${t}`}}async refreshCaptchaToken(e,t){let i={action:e,captcha_token:this.captchaTokenVal,client_id:this.clientId,device_id:this.deviceId,meta:t,redirect_uri:"xlaccsdk01://xbase.cloud/callback?state=harbor"},s=await(await fetch(`https://user.mypikpak.net/v1/shield/captcha/init?client_id=${encodeURIComponent(this.clientId)}`,{method:"POST",headers:{"Content-Type":"application/json","User-Agent":this.userAgent||"OpenList","X-Device-ID":this.deviceId},body:JSON.stringify(i)})).json();if(s.error_code&&s.error_code!==0)throw new Error(`Captcha error ${s.error_code}: ${s.error_description||s.error}`);if(s.url)throw new Error(`PikPak requires captcha verification: ${s.url}`);return s.captcha_token&&(this.captchaTokenVal=s.captcha_token),this.captchaTokenVal}async refreshCaptchaTokenAtLogin(e,t){let{timestamp:i,sign:n}=this.getCaptchaSign(),s={client_version:this.clientVersion,package_name:this.packageName,user_id:t,timestamp:i,captcha_sign:n};return this.refreshCaptchaToken(e,s)}async refreshCaptchaTokenInLogin(e,t){let i={};return/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/.test(t)?i.email=t:t.length>=11&&t.length<=18?i.phone_number=t:i.username=t,this.refreshCaptchaToken(e,i)}async login(){if(!this.addition.username||!this.addition.password)throw new Error("PikPak username or password is required when refresh_token is not provided");let e="https://user.mypikpak.net/v1/auth/signin";this.captchaTokenVal||await this.refreshCaptchaTokenInLogin(nE("POST",e),this.addition.username);let i=await(await fetch(`${e}?client_id=${encodeURIComponent(this.clientId)}`,{method:"POST",headers:{"Content-Type":"application/json","User-Agent":this.userAgent||"OpenList","X-Device-ID":this.deviceId,"X-Captcha-Token":this.captchaTokenVal},body:JSON.stringify({captcha_token:this.captchaTokenVal,client_id:this.clientId,client_secret:this.clientSecret,username:this.addition.username,password:this.addition.password})})).json();if(i.error_code&&i.error_code!==0)throw new Error(`PikPak login failed (${i.error_code}): ${i.error_description||i.error}`);this.accessToken=i.access_token,this.refreshTokenVal=i.refresh_token,this.userId=i.sub||"",this.onTokenRefreshed&&await this.onTokenRefreshed({accessToken:this.accessToken,refreshToken:this.refreshTokenVal,captchaToken:this.captchaTokenVal})}async refreshToken(){if(!this.refreshTokenVal){await this.login();return}let i=await(await fetch(`https://user.mypikpak.net/v1/auth/token?client_id=${encodeURIComponent(this.clientId)}`,{method:"POST",headers:{"Content-Type":"application/json","User-Agent":this.userAgent||"OpenList","X-Device-ID":this.deviceId},body:JSON.stringify({client_id:this.clientId,client_secret:this.clientSecret,grant_type:"refresh_token",refresh_token:this.refreshTokenVal})})).json();if(i.error_code&&i.error_code!==0){if(i.error_code===4126&&this.addition.username){await this.login();return}throw new Error(`PikPak token refresh failed (${i.error_code}): ${i.error_description||i.error}`)}this.accessToken=i.access_token,this.refreshTokenVal=i.refresh_token,this.userId=i.sub||"",this.onTokenRefreshed&&await this.onTokenRefreshed({accessToken:this.accessToken,refreshToken:this.refreshTokenVal,captchaToken:this.captchaTokenVal})}async init(){this.addition.platform==="android"&&(this.userAgent=await o4(this.deviceId,this.clientId,this.packageName,this.sdkVersion,this.clientVersion,this.packageName,this.userId)),this.refreshTokenVal?await this.refreshToken():await this.login();try{await this.refreshCaptchaTokenAtLogin(nE("GET","https://api-drive.mypikpak.net/drive/v1/files"),this.userId)}catch(e){console.warn("[PikPak] post-login captcha init warning:",e)}this.addition.platform==="android"&&(this.userAgent=await o4(this.deviceId,this.clientId,this.packageName,this.sdkVersion,this.clientVersion,this.packageName,this.userId))}async request(e,t={}){let{method:i="GET",params:n,body:s,retryCount:o=0}=t,a=e;if(n&&Object.keys(n).length>0){let f=new URLSearchParams(n).toString();a+=(e.includes("?")?"&":"?")+f}let c={"User-Agent":this.userAgent||"OpenList","X-Device-ID":this.deviceId};this.captchaTokenVal&&(c["X-Captcha-Token"]=this.captchaTokenVal),this.accessToken&&(c.Authorization=`Bearer ${this.accessToken}`),s&&typeof s=="object"&&!(s instanceof Uint8Array)&&(c["Content-Type"]="application/json");let l=await fetch(a,{method:i,headers:c,body:s&&typeof s=="object"&&!(s instanceof Uint8Array)?JSON.stringify(s):s}),d=await l.text(),u={};try{u=JSON.parse(d)}catch{u=d}if(u&&typeof u=="object"&&u.error_code){let f=u.error_code;if((f===4122||f===4121||f===16)&&o<2)return await this.refreshToken(),this.request(e,{...t,retryCount:o+1});if(f===9&&o<2)return await this.refreshCaptchaTokenAtLogin(nE(i,e),this.userId),this.request(e,{...t,retryCount:o+1});throw new Error(`PikPak API Error (${f}): ${u.error_description||u.error||JSON.stringify(u)}`)}if(!l.ok)throw new Error(`PikPak request failed with status ${l.status}: ${d}`);return u}}});var Yp,c4=j(()=>{"use strict";Be();He();si();a4();Yp=class{addition;client;rootId="";idCache=new Map;constructor(e,t){this.addition=e,this.rootId=e.root_folder_id||"",this.client=new Vp(e,t)}async init(){await this.client.init()}cleanPath(e){let t="/"+(e||"").split("/").filter(Boolean).join("/");return t==="/"?"":t}async resolveParentId(e){let t=this.cleanPath(e);if(!t)return this.rootId;if(this.idCache.has(t))return this.idCache.get(t);let i=t.split("/").filter(Boolean),n=this.rootId,s="";for(let o of i){if(s+="/"+o,this.idCache.has(s)){n=this.idCache.get(s);continue}let c=(await this.getFiles(n)).find(l=>l.name===o);if(!c)throw new Error(`Path not found: ${s}`);n=c.id,this.idCache.set(s,n)}return n}async getFiles(e){let t=[],i="";for(;;){let n={parent_id:e,thumbnail_size:"SIZE_LARGE",with_audit:"true",limit:"100",filters:JSON.stringify({phase:{eq:"PHASE_TYPE_COMPLETE"},trashed:{eq:!1}})};i&&(n.page_token=i);let s=await this.client.request("https://api-drive.mypikpak.net/drive/v1/files",{method:"GET",params:n});if(s.files&&s.files.length>0&&t.push(...s.files),!s.next_page_token||s.next_page_token===i)break;i=s.next_page_token}return t}async list(e,t){let i=await this.resolveParentId(t),n=await this.getFiles(i),s=this.cleanPath(t),o=n.map(a=>{let c=a.kind==="drive#folder",l=s?`${s}/${a.name}`:`/${a.name}`;this.idCache.set(l,a.id);let d=a.web_content_link||"";return!this.addition.disable_media_link&&a.medias&&a.medias.length>0&&a.medias[0].link?.url&&(d=a.medias[0].link.url),{name:a.name,size:parseInt(a.size||"0",10)||0,is_dir:c,created:a.created_time,modified:a.modified_time||new Date().toISOString(),sign:a.id,type:X(a.name,c),thumb:a.thumbnail_link,raw_url:d}});return de(o,this.addition.order_by,this.addition.order_direction)}async get(e,t){let i=this.cleanPath(t),n=i.split("/").pop()||"root";if(!i)return{name:"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:this.rootId,type:1,raw_url:""};let s=await this.resolveParentId(t),o={_magic:"2021",usage:this.addition.disable_media_link?"FETCH":"CACHE",thumbnail_size:"SIZE_LARGE"},a=await this.client.request(`https://api-drive.mypikpak.net/drive/v1/files/${encodeURIComponent(s)}`,{method:"GET",params:o}),c=a.kind==="drive#folder",l=a.web_content_link||"";return!this.addition.disable_media_link&&a.medias&&a.medias.length>0&&a.medias[0].link?.url&&(l=a.medias[0].link.url),{name:a.name||n,size:parseInt(a.size||"0",10)||0,is_dir:c,created:a.created_time,modified:a.modified_time||new Date().toISOString(),sign:a.id,type:X(a.name||n,c),thumb:a.thumbnail_link,raw_url:l}}async mkdir(e,t){let i=this.cleanPath(t),n=i.split("/").slice(0,-1).join("/"),s=i.split("/").pop()||"",o=await this.resolveParentId(n),a=await this.client.request("https://api-drive.mypikpak.net/drive/v1/files",{method:"POST",body:{kind:"drive#folder",parent_id:o,name:s}});a?.file?.id&&this.idCache.set(i,a.file.id)}async rename(e,t,i){let n=await this.resolveParentId(t);await this.client.request(`https://api-drive.mypikpak.net/drive/v1/files/${encodeURIComponent(n)}`,{method:"PATCH",body:{name:i}});let s=this.cleanPath(t);this.idCache.delete(s)}async remove(e,t,i){let n=await this.resolveParentId(t),s=await this.getFiles(n),o=[];for(let c of i){let l=s.find(d=>d.name===c);l&&o.push(l.id)}if(o.length===0)return;await this.client.request("https://api-drive.mypikpak.net/drive/v1/files:batchTrash",{method:"POST",body:{ids:o}});let a=this.cleanPath(t);for(let c of i)this.idCache.delete(a?`${a}/${c}`:`/${c}`)}async move(e,t,i,n,s){let o=await this.resolveParentId(n),a=await this.resolveParentId(s),c=await this.getFiles(o),l=[];for(let u of i){let f=c.find(h=>h.name===u);f&&l.push(f.id)}if(l.length===0)return;await this.client.request("https://api-drive.mypikpak.net/drive/v1/files:batchMove",{method:"POST",body:{ids:l,to:{parent_id:a}}});let d=this.cleanPath(n);for(let u of i)this.idCache.delete(d?`${d}/${u}`:`/${u}`)}async copy(e,t,i,n,s){let o=await this.resolveParentId(n),a=await this.resolveParentId(s),c=await this.getFiles(o),l=[];for(let d of i){let u=c.find(f=>f.name===d);u&&l.push(u.id)}l.length!==0&&await this.client.request("https://api-drive.mypikpak.net/drive/v1/files:batchCopy",{method:"POST",body:{ids:l,to:{parent_id:a}}})}async put(e,t,i){let n=this.cleanPath(t),s=n.split("/").slice(0,-1).join("/"),o=n.split("/").pop()||"upload",a=await this.resolveParentId(s),c=(await _o(new Uint8Array(i))).toUpperCase(),l=await this.client.request("https://api-drive.mypikpak.net/drive/v1/files",{method:"POST",body:{kind:"drive#file",name:o,size:String(i.length),hash:c,upload_type:"UPLOAD_TYPE_RESUMABLE",objProvider:{provider:"UPLOAD_TYPE_UNKNOWN"},parent_id:a,folder_type:"NORMAL"}});if(!l.resumable)return;let d=l.resumable.params,u=d.endpoint;this.addition.platform==="android"&&(u="mypikpak.net");let f=`https://${d.bucket}.${u}/${d.key}`,h=await fetch(f,{method:"PUT",headers:{"Content-Length":String(i.length),"x-oss-security-token":d.security_token},body:new Uint8Array(i)});if(!h.ok)throw new Error(`PikPak OSS upload failed: ${h.statusText}`)}async getDetails(){let e=await this.client.request("https://api-drive.mypikpak.net/drive/v1/about",{method:"GET"});return{totalSpace:parseInt(e.quota.limit||"0",10)||0,usedSpace:parseInt(e.quota.usage||"0",10)||0}}}});var Wp,l4=j(()=>{"use strict";Wp=class{addition;address;authorization="";onTokenRefreshed;decryptedRepos=new Map;constructor(e,t){this.addition=e,this.address=(e.address||"").replace(/\/+$/,""),this.onTokenRefreshed=t,e.token&&(this.authorization=`Token ${e.token}`)}async getToken(){if(this.addition.token){this.authorization=`Token ${this.addition.token}`;return}if(!this.addition.username||!this.addition.password)throw new Error("Seafile requires either token or username/password to authenticate");let e=new URLSearchParams;e.set("username",this.addition.username),e.set("password",this.addition.password);let t=await fetch(`${this.address}/api2/auth-token/`,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:e.toString()});if(!t.ok){let n=await t.text();throw new Error(`Seafile auth failed (${t.status}): ${n}`)}let i=await t.json();this.authorization=`Token ${i.token}`,this.addition.token=i.token,this.onTokenRefreshed&&await this.onTokenRefreshed(i.token)}async request(e,t={}){let{method:i="GET",params:n,body:s,isFormData:o=!1,retryCount:a=0}=t,c=e.startsWith("http")?e:`${this.address}${e}`;if(n&&Object.keys(n).length>0){let g=new URLSearchParams(n).toString();c+=(c.includes("?")?"&":"?")+g}let l={Accept:"application/json"};this.authorization&&(l.Authorization=this.authorization);let d=s;if(o&&s&&!(s instanceof FormData)){let g=new URLSearchParams;for(let[p,I]of Object.entries(s))g.set(p,String(I));l["Content-Type"]="application/x-www-form-urlencoded",d=g.toString()}else s&&typeof s=="object"&&!(s instanceof FormData)&&!(s instanceof Uint8Array)&&(l["Content-Type"]="application/json",d=JSON.stringify(s));let u=await fetch(c,{method:i,headers:l,body:d});if(u.status===401&&a<1)return await this.getToken(),this.request(e,{...t,retryCount:a+1});if(!u.ok){let g=await u.text();throw new Error(`Seafile request failed (${u.status}): ${g}`)}return(u.headers.get("content-type")||"").includes("application/json")?await u.json():await u.text()}async getLibraryInfo(e){return this.request(`/api2/repos/${e}/`)}async decryptLibrary(e){if(!e.encrypted)return;if(!this.addition.repo_pwd)throw new Error("Seafile encrypted library password (repo_pwd) is not configured");let t=this.decryptedRepos.get(e.id)||0;if(Date.now()-t<1800*1e3)return;let i=await this.request(`/api2/repos/${e.id}/`,{method:"POST",isFormData:!0,body:{password:this.addition.repo_pwd}});if(typeof i=="string"&&!i.includes("success"))throw new Error(`Failed to decrypt Seafile library: ${i}`);this.decryptedRepos.set(e.id,Date.now())}}});var Xp,d4=j(()=>{"use strict";Be();He();l4();Xp=class{addition;client;repoId;rootPath="/";constructor(e,t){this.addition=e,this.repoId=e.repo_id||void 0,this.client=new Wp(e,t)}async init(){await this.client.getToken(),this.rootPath="/"+(this.addition.root_folder_path||"/").split("/").filter(Boolean).join("/")}cleanPath(e){let t="/"+(e||"").split("/").filter(Boolean).join("/");return t==="/"?"/":t}async resolveRepoAndPath(e){let t=this.cleanPath(e);if(this.repoId)return{repoId:this.repoId,innerPath:t,isRootListRepos:!1};if(t==="/")return{repoId:"",innerPath:"/",isRootListRepos:!0};let i=t.split("/").filter(Boolean),n=i[0],s="/"+i.slice(1).join("/"),a=(await this.client.request("/api2/repos/")).find(c=>c.name===n||c.id===n);if(!a)throw new Error(`Seafile library '${n}' not found`);return a.encrypted&&await this.client.decryptLibrary(a),{repoId:a.id,innerPath:s==="/"?"/":s,isRootListRepos:!1}}async list(e,t){let{repoId:i,innerPath:n,isRootListRepos:s}=await this.resolveRepoAndPath(t);if(s){let l=(await this.client.request("/api2/repos/")).map(d=>({name:d.name,size:d.size||0,is_dir:!0,modified:d.mtime?new Date(d.mtime*1e3).toISOString():new Date().toISOString(),sign:d.id,type:1,raw_url:""}));return de(l,this.addition.order_by,this.addition.order_direction)}let a=(await this.client.request(`/api2/repos/${encodeURIComponent(i)}/dir/`,{params:{p:n}})).map(c=>{let l=c.type==="dir";return{name:c.name,size:c.size||0,is_dir:l,modified:c.mtime?new Date(c.mtime*1e3).toISOString():new Date().toISOString(),sign:c.id,type:X(c.name,l),raw_url:""}});return de(a,this.addition.order_by,this.addition.order_direction)}async get(e,t){let{repoId:i,innerPath:n,isRootListRepos:s}=await this.resolveRepoAndPath(t),a=this.cleanPath(t).split("/").filter(Boolean).pop()||"root";if(s)return{name:"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""};if(n==="/"){let u=await this.client.getLibraryInfo(i);return{name:u.name||a,size:u.size||0,is_dir:!0,modified:u.mtime?new Date(u.mtime*1e3).toISOString():new Date().toISOString(),sign:u.id,type:1,raw_url:""}}let c="";try{let u=await this.client.request(`/api2/repos/${encodeURIComponent(i)}/file/`,{params:{p:n,reuse:"1"}});typeof u=="string"&&(c=u.replace(/^"|"$/g,"").trim())}catch{}let l=n.split("/").slice(0,-1).join("/")||"/",d=n.split("/").pop()||"";try{let f=(await this.client.request(`/api2/repos/${encodeURIComponent(i)}/dir/`,{params:{p:l}})).find(h=>h.name===d);if(f){let h=f.type==="dir";return{name:f.name,size:f.size||0,is_dir:h,modified:f.mtime?new Date(f.mtime*1e3).toISOString():new Date().toISOString(),sign:f.id,type:X(f.name,h),raw_url:c}}}catch{}return{name:a,size:0,is_dir:!c,modified:new Date().toISOString(),sign:"",type:X(a,!c),raw_url:c}}async mkdir(e,t){let{repoId:i,innerPath:n}=await this.resolveRepoAndPath(t);await this.client.request(`/api2/repos/${encodeURIComponent(i)}/dir/`,{method:"POST",isFormData:!0,params:{p:n},body:{operation:"mkdir"}})}async rename(e,t,i){let{repoId:n,innerPath:s}=await this.resolveRepoAndPath(t);await this.client.request(`/api2/repos/${encodeURIComponent(n)}/file/`,{method:"POST",isFormData:!0,params:{p:s},body:{operation:"rename",newname:i}})}async remove(e,t,i){let{repoId:n,innerPath:s}=await this.resolveRepoAndPath(t);for(let o of i){let a=s==="/"?`/${o}`:`${s}/${o}`;await this.client.request(`/api2/repos/${encodeURIComponent(n)}/file/`,{method:"DELETE",params:{p:a}})}}async move(e,t,i,n,s){let o=await this.resolveRepoAndPath(n),a=await this.resolveRepoAndPath(s);for(let c of i){let l=o.innerPath==="/"?`/${c}`:`${o.innerPath}/${c}`;await this.client.request(`/api2/repos/${encodeURIComponent(o.repoId)}/file/`,{method:"POST",isFormData:!0,params:{p:l},body:{operation:"move",dst_repo:a.repoId,dst_dir:a.innerPath}})}}async copy(e,t,i,n,s){let o=await this.resolveRepoAndPath(n),a=await this.resolveRepoAndPath(s);for(let c of i){let l=o.innerPath==="/"?`/${c}`:`${o.innerPath}/${c}`;await this.client.request(`/api2/repos/${encodeURIComponent(o.repoId)}/file/`,{method:"POST",isFormData:!0,params:{p:l},body:{operation:"copy",dst_repo:a.repoId,dst_dir:a.innerPath}})}}async put(e,t,i){let{repoId:n,innerPath:s}=await this.resolveRepoAndPath(t),o=s.split("/").slice(0,-1).join("/")||"/",a=s.split("/").pop()||"upload",l=(await this.client.request(`/api2/repos/${encodeURIComponent(n)}/upload-link/`,{params:{p:o}})||"").replace(/^"|"$/g,"").trim();if(!l)throw new Error("Failed to get Seafile upload link");let d=new FormData;d.append("parent_dir",o),d.append("replace","1"),d.append("file",new Blob([new Uint8Array(i)],{type:"application/octet-stream"}),a),await this.client.request(l,{method:"POST",body:d})}}});var Zp,u4=j(()=>{"use strict";Zp=class{addition;accessToken="";refreshTokenVal="";onTokenRefreshed;constructor(e,t){this.addition=e,this.refreshTokenVal=e.refresh_token||"",this.onTokenRefreshed=t}async refreshToken(){if(this.addition.use_online_api!==!1){let s=`${this.addition.api_url_address||"https://api.oplist.org/yandexui/renewapi"}?refresh_ui=${encodeURIComponent(this.refreshTokenVal)}&server_use=true&driver_txt=yandexui_go`,o=await fetch(s,{method:"GET",headers:{Accept:"application/json"}});if(!o.ok)throw new Error(`Failed to refresh Yandex token online: ${o.statusText}`);let a=await o.json();if(!a.access_token)throw new Error(`Yandex online token refresh failed: ${a.text||"No access token returned"}`);this.accessToken=a.access_token,a.refresh_token&&(this.refreshTokenVal=a.refresh_token,this.addition.refresh_token=a.refresh_token),this.onTokenRefreshed&&await this.onTokenRefreshed({accessToken:this.accessToken,refreshToken:this.refreshTokenVal});return}if(!this.addition.client_id||!this.addition.client_secret)throw new Error("Yandex Disk requires client_id and client_secret when online API is disabled");let e=new URLSearchParams;e.set("grant_type","refresh_token"),e.set("refresh_token",this.refreshTokenVal),e.set("client_id",this.addition.client_id),e.set("client_secret",this.addition.client_secret);let t=await fetch("https://oauth.yandex.com/token",{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:e.toString()});if(!t.ok){let n=await t.text();throw new Error(`Yandex OAuth refresh failed (${t.status}): ${n}`)}let i=await t.json();this.accessToken=i.access_token,this.refreshTokenVal=i.refresh_token,this.addition.refresh_token=i.refresh_token,this.onTokenRefreshed&&await this.onTokenRefreshed({accessToken:this.accessToken,refreshToken:this.refreshTokenVal})}async init(){await this.refreshToken()}async request(e,t={}){let{method:i="GET",params:n,body:s,retryCount:o=0}=t,a=e.startsWith("http")?e:`https://cloud-api.yandex.net/v1/disk/resources${e}`;if(n&&Object.keys(n).length>0){let u=new URLSearchParams(n).toString();a+=(a.includes("?")?"&":"?")+u}let c={Accept:"application/json",Authorization:`OAuth ${this.accessToken}`};s&&typeof s=="object"&&!(s instanceof Uint8Array)&&(c["Content-Type"]="application/json");let l=await fetch(a,{method:i,headers:c,body:s&&typeof s=="object"&&!(s instanceof Uint8Array)?JSON.stringify(s):s});if(l.status===401&&o<1)return await this.refreshToken(),this.request(e,{...t,retryCount:o+1});if(!l.ok){let u=await l.text(),f=u;try{let h=JSON.parse(u);f=h.message||h.description||u}catch{}throw new Error(`Yandex Disk API Error (${l.status}): ${f}`)}return(l.headers.get("content-type")||"").includes("application/json")?await l.json():await l.text()}async getFiles(e,t,i){let s=0,o=[];for(;;){let a={path:e||"/",limit:String(100),offset:String(s)};t&&(a.sort=i==="desc"?`-${t}`:t);let l=(await this.request("",{method:"GET",params:a}))._embedded;if(!l||!l.items||(o.push(...l.items),l.total<=s+100||l.items.length===0))break;s+=100}return o}async getDownloadLink(e){return(await this.request("/download",{method:"GET",params:{path:e}})).href}async getUploadLink(e){return(await this.request("/upload",{method:"GET",params:{path:e,overwrite:"true"}})).href}}});var em,f4=j(()=>{"use strict";Be();He();u4();em=class{addition;client;constructor(e,t){this.addition=e,this.client=new Zp(e,t)}async init(){await this.client.init()}cleanPath(e){let t="/"+(e||"").split("/").filter(Boolean).join("/");return t==="/"?"/":t}async list(e,t){let i=this.cleanPath(t),s=(await this.client.getFiles(i,this.addition.order_by,this.addition.order_direction)).map(o=>{let a=o.type==="dir";return{name:o.name,size:o.size||0,is_dir:a,created:o.created,modified:o.modified||new Date().toISOString(),sign:o.path||o.name,type:X(o.name,a),thumb:o.preview,raw_url:""}});return de(s,this.addition.order_by,this.addition.order_direction)}async get(e,t){let i=this.cleanPath(t),n=i.split("/").filter(Boolean).pop()||"root";if(i==="/")return{name:"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:"/",type:1,raw_url:""};let s=await this.client.request("",{method:"GET",params:{path:i}}),o=s.type==="dir",a="";if(!o)try{a=await this.client.getDownloadLink(i)}catch(c){console.warn("[Yandex] get download link failed:",c)}return{name:s.name||n,size:s.size||0,is_dir:o,created:s.created,modified:s.modified||new Date().toISOString(),sign:s.path||i,type:X(s.name||n,o),raw_url:a}}async mkdir(e,t){let i=this.cleanPath(t);await this.client.request("",{method:"PUT",params:{path:i}})}async rename(e,t,i){let n=this.cleanPath(t),s=n.split("/").slice(0,-1).join("/")||"/",o=s==="/"?`/${i}`:`${s}/${i}`;await this.client.request("/move",{method:"POST",params:{from:n,path:o,overwrite:"true"}})}async remove(e,t,i){let n=this.cleanPath(t);for(let s of i){let o=n==="/"?`/${s}`:`${n}/${s}`;await this.client.request("",{method:"DELETE",params:{path:o}})}}async move(e,t,i,n,s){let o=this.cleanPath(n),a=this.cleanPath(s);for(let c of i){let l=o==="/"?`/${c}`:`${o}/${c}`,d=a==="/"?`/${c}`:`${a}/${c}`;await this.client.request("/move",{method:"POST",params:{from:l,path:d,overwrite:"true"}})}}async copy(e,t,i,n,s){let o=this.cleanPath(n),a=this.cleanPath(s);for(let c of i){let l=o==="/"?`/${c}`:`${o}/${c}`,d=a==="/"?`/${c}`:`${a}/${c}`;await this.client.request("/copy",{method:"POST",params:{from:l,path:d,overwrite:"true"}})}}async put(e,t,i){let n=this.cleanPath(t),s=await this.client.getUploadLink(n),o=await fetch(s,{method:"PUT",headers:{"Content-Length":String(i.length),"Content-Type":"application/octet-stream"},body:new Uint8Array(i)});if(!o.ok)throw new Error(`Yandex upload failed: ${o.statusText}`)}}});function qJ(r,e){let t=new Array(256),i=new Array(256),n=[],s=r.length;for(let l=0;l<256;l++)t[l]=r.charCodeAt(l%s),i[l]=l;let o=0;for(let l=0;l<256;l++){o=(o+i[l]+t[l])%256;let d=i[l];i[l]=i[o],i[o]=d}let a=0;o=0;for(let l=0;l<e.length;l++){a=(a+1)%256,o=(o+i[a])%256;let d=i[a];i[a]=i[o],i[o]=d;let u=i[(i[a]+i[o])%256];n.push(e.charCodeAt(l)^u)}let c="";for(let l of n)c+=String.fromCharCode(l);return btoa(c)}var tm,A4=j(()=>{"use strict";tm=class{addition;baseUrl="https://www.terabox.com";urlDomainPrefix="jp";jsToken="";onCookieRefreshed;constructor(e,t){this.addition=e,this.onCookieRefreshed=t}async resetJsToken(){let e=await fetch(this.baseUrl,{method:"GET",headers:{Cookie:this.addition.cookie,Accept:"application/json, text/plain, */*",Referer:this.baseUrl,"User-Agent":"terabox;1.37.0.7;PC;PC-Windows;10.0.22631;WindowsTeraBox","X-Requested-With":"XMLHttpRequest"}});if(!e.ok)throw new Error(`Failed to fetch TeraBox home page: ${e.statusText}`);let t=await e.text(),i=t.match(/`function%20fn%28a%29%7Bwindow.jsToken%20%3D%20a%7D%3Bfn%28%22([^"]+?)%22%29`/);if(i&&i[1]){this.jsToken=i[1];return}let n=t.match(/jsToken\s*=\s*["']([^"']+)["']/);if(n&&n[1]){this.jsToken=n[1];return}this.jsToken=""}async request(e,t={}){let{method:i="GET",params:n,body:s,isFormData:o=!1,retryCount:a=0}=t,c=e.startsWith("http")?e:`${this.baseUrl}${e}`,l={app_id:"250528",web:"1",channel:"dubox",clienttype:"0",...n||{}};this.jsToken&&(l.jsToken=this.jsToken);let d=new URLSearchParams(l).toString();c+=(c.includes("?")?"&":"?")+d;let u={Cookie:this.addition.cookie,Accept:"application/json, text/plain, */*",Referer:this.baseUrl,"User-Agent":"terabox;1.37.0.7;PC;PC-Windows;10.0.22631;WindowsTeraBox","X-Requested-With":"XMLHttpRequest"},f=s;if(o&&s&&!(s instanceof FormData)){let I=new URLSearchParams;for(let[y,w]of Object.entries(s))I.set(y,String(w));u["Content-Type"]="application/x-www-form-urlencoded",f=I.toString()}else s&&typeof s=="object"&&!(s instanceof FormData)&&!(s instanceof Uint8Array)&&(u["Content-Type"]="application/json",f=JSON.stringify(s));let h=await fetch(c,{method:i,headers:u,body:f}),g=await h.text(),p={};try{p=JSON.parse(g)}catch{p=g}if(p&&typeof p=="object"&&p.errno!==void 0){let I=Number(p.errno);if((I===4000023||I===450016)&&a<2)return await this.resetJsToken(),this.request(e,{...t,retryCount:a+1});if(I===-6&&a<2){let y=h.headers.get("url-domain-prefix");if(y)return this.urlDomainPrefix=y,this.baseUrl=`https://${y}.terabox.com`,this.request(e,{...t,retryCount:a+1})}}return p}async init(){let e=await this.request("/api/check/login",{method:"GET"});if(e.errno!==0)throw e.errno===9e3?new Error("TeraBox is not yet available in this area (errno 9000)"):new Error(`Failed to verify TeraBox login status according to cookie (errno ${e.errno})`)}async genSign(){let e=await this.request("/api/home/info",{method:"GET"});if(!e.data||!e.data.sign1||!e.data.sign3)throw new Error("Failed to get TeraBox sign keys from home/info");return qJ(e.data.sign3,e.data.sign1)}async linkOfficial(e){let t=await this.genSign(),i={type:"dlink",fidlist:`[${e}]`,sign:t,vip:"2",timestamp:String(Math.floor(Date.now()/1e3))},n=await this.request("/api/download",{method:"GET",params:i});if(!n.dlink||n.dlink.length===0)throw new Error(`TeraBox fid ${e} no dlink found (errno: ${n.errno})`);let s=n.dlink[0].dlink;return(await fetch(s,{method:"GET",redirect:"manual",headers:{Cookie:this.addition.cookie,"User-Agent":"terabox;1.37.0.7;PC;PC-Windows;10.0.22631;WindowsTeraBox"}})).headers.get("location")||s}async linkCrack(e){let t={target:JSON.stringify([e]),dlink:"1",origin:"dlna"},i=await this.request("/api/filemetas",{method:"GET",params:t});if(!i.info||i.info.length===0||!i.info[0].dlink)throw new Error(`TeraBox crack download failed for ${e}`);return i.info[0].dlink}async manage(e,t){let i=new URLSearchParams;return i.set("async","0"),i.set("filelist",JSON.stringify(t)),i.set("ondup","newcopy"),this.request("/api/filemanager",{method:"POST",params:{onnest:"fail",opera:e},isFormData:!0,body:{async:"0",filelist:JSON.stringify(t),ondup:"newcopy"}})}}});var rm,h4=j(()=>{"use strict";Be();He();si();A4();rm=class{addition;client;constructor(e,t){this.addition=e,this.client=new tm(e,t)}async init(){await this.client.init()}cleanPath(e){let t="/"+(e||"").split("/").filter(Boolean).join("/");return t==="/"?"/":t}async list(e,t){let i=this.cleanPath(t),n=[],s=1,o=100;for(;;){let c={dir:i,page:String(s),num:String(o)};this.addition.order_by&&(c.order=this.addition.order_by,this.addition.order_direction==="desc"&&(c.desc="1"));let l=await this.client.request("/api/list",{method:"GET",params:c});if(l.errno===9e3)throw new Error("TeraBox is not yet available in this area");if(!l.list||l.list.length===0)break;n.push(...l.list),s++}let a=n.map(c=>{let l=c.isdir===1;return{name:c.server_filename,size:c.size||0,is_dir:l,modified:c.server_mtime?new Date(c.server_mtime*1e3).toISOString():new Date().toISOString(),sign:String(c.fs_id),type:X(c.server_filename,l),thumb:c.thumbs?.url3,raw_url:""}});return de(a,this.addition.order_by,this.addition.order_direction)}async get(e,t){let i=this.cleanPath(t),n=i.split("/").filter(Boolean).pop()||"root";if(i==="/")return{name:"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""};let s=i.split("/").slice(0,-1).join("/")||"/",o=i.split("/").pop()||"",c=(await this.client.request("/api/list",{method:"GET",params:{dir:s,page:"1",num:"1000"}})).list?.find(u=>u.server_filename===o);if(!c)return{name:n,size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:0,raw_url:""};let l=c.isdir===1,d="";if(!l)try{this.addition.download_api==="crack"?d=await this.client.linkCrack(i):d=await this.client.linkOfficial(c.fs_id)}catch(u){console.warn("[TeraBox] get download link failed:",u)}return{name:c.server_filename,size:c.size||0,is_dir:l,modified:c.server_mtime?new Date(c.server_mtime*1e3).toISOString():new Date().toISOString(),sign:String(c.fs_id),type:X(c.server_filename,l),thumb:c.thumbs?.url3,raw_url:d,raw_url_headers:{"User-Agent":"terabox;1.37.0.7;PC;PC-Windows;10.0.22631;WindowsTeraBox"}}}async mkdir(e,t){let i=this.cleanPath(t);await this.client.request("/api/create",{method:"POST",isFormData:!0,params:{a:"commit"},body:{path:i,isdir:"1",block_list:"[]"}})}async rename(e,t,i){let n=this.cleanPath(t);await this.client.manage("rename",[{path:n,newname:i}])}async remove(e,t,i){let n=this.cleanPath(t),s=i.map(o=>n==="/"?`/${o}`:`${n}/${o}`);await this.client.manage("delete",s)}async move(e,t,i,n,s){let o=this.cleanPath(n),a=this.cleanPath(s),c=i.map(l=>({path:o==="/"?`/${l}`:`${o}/${l}`,dest:a,newname:l}));await this.client.manage("move",c)}async copy(e,t,i,n,s){let o=this.cleanPath(n),a=this.cleanPath(s),c=i.map(l=>({path:o==="/"?`/${l}`:`${o}/${l}`,dest:a,newname:l}));await this.client.manage("copy",c)}async put(e,t,i){let n=this.cleanPath(t),s=n.split("/").slice(0,-1).join("/")||"/",o=n.split("/").pop()||"upload",l=(await(await fetch("https://jp-data.terabox.com/rest/2.0/pcs/file?method=locateupload")).json()).host||"d.terabox.com",d=$t(new Uint8Array(i)),u={path:n,autoinit:"1",target_path:s,block_list:JSON.stringify([d]),local_mtime:String(Math.floor(Date.now()/1e3)),file_limit_switch_v34:"true"},f=await this.client.request("/api/precreate",{method:"POST",isFormData:!0,body:u});if(f.errno!==0)throw new Error(`TeraBox precreate failed (errno: ${f.errno})`);if(f.return_type===2)return;let h=`https://${l}/rest/2.0/pcs/superfile2?method=upload&path=${encodeURIComponent(n)}&uploadid=${encodeURIComponent(f.uploadid)}&partseq=0`,g=new FormData;g.append("file",new Blob([new Uint8Array(i)],{type:"application/octet-stream"}),o);let p=await fetch(h,{method:"POST",headers:{Cookie:this.addition.cookie,"User-Agent":"terabox;1.37.0.7;PC;PC-Windows;10.0.22631;WindowsTeraBox"},body:g});if(!p.ok)throw new Error(`TeraBox upload chunk failed: ${p.statusText}`);let I={path:n,size:String(i.length),uploadid:f.uploadid,target_path:s,block_list:JSON.stringify([d]),local_mtime:String(Math.floor(Date.now()/1e3))};await this.client.request("/api/create",{method:"POST",isFormData:!0,params:{isdir:"0",rtype:"1"},body:I})}}});var im,g4=j(()=>{"use strict";im=class{addition;constructor(e){this.addition=e}async request(e,t={}){let{method:i="GET",params:n,body:s}=t,o=e;if(n&&Object.keys(n).length>0){let u=new URLSearchParams(n).toString();o+=(o.includes("?")?"&":"?")+u}let a={Authorization:`Bearer ${this.addition.access_token}`,Accept:"application/json"};s&&typeof s=="object"&&!(s instanceof Uint8Array)&&(a["Content-Type"]="application/json");let c=await fetch(o,{method:i,headers:a,body:s&&typeof s=="object"&&!(s instanceof Uint8Array)?JSON.stringify(s):s}),l=await c.text(),d={};try{d=JSON.parse(l)}catch{d=l}if(d&&typeof d=="object"&&d.status&&d.status!=="SUCCESS")throw new Error(`MediaTrack API Error: ${d.message||JSON.stringify(d)}`);if(!c.ok)throw new Error(`MediaTrack request failed (${c.status}): ${l}`);return d}async init(){await this.request("https://kayle.api.mediatrack.cn/users",{method:"GET"})}async getFiles(e){let t=[],i=1,n="";for(this.addition.order_by&&(n=(this.addition.order_desc?"-":"")+this.addition.order_by);;){let s={page:String(i),size:"50"};n&&(s.sort=n);let a=(await this.request(`https://jayce.api.mediatrack.cn/v4/assets/${encodeURIComponent(e)}/children`,{method:"GET",params:s})).data?.assets||[];if(a.length===0)break;t.push(...a),i++}return t}async getDownloadUrl(e){let t=this.addition.project_id||"",i=`https://kayn.api.mediatrack.cn/v1/download_token/asset?asset_id=${encodeURIComponent(e)}&source_type=project&password=&source_id=${encodeURIComponent(t)}`,s=(await this.request(i,{method:"GET"}))?.data?.token;if(!s)throw new Error(`Failed to get download token for asset ${e}`);let o=`https://kayn.api.mediatrack.cn/v1/download/redirect?token=${encodeURIComponent(s)}`;return(await fetch(o,{method:"GET",redirect:"manual"})).headers.get("location")||o}}});var nm,p4=j(()=>{"use strict";Be();He();g4();nm=class{addition;client;rootId="";idCache=new Map;constructor(e){this.addition=e,this.rootId=e.root_folder_id||"",this.client=new im(e)}async init(){await this.client.init()}cleanPath(e){let t="/"+(e||"").split("/").filter(Boolean).join("/");return t==="/"?"":t}async resolveParentId(e){let t=this.cleanPath(e);if(!t)return this.rootId;if(this.idCache.has(t))return this.idCache.get(t);let i=t.split("/").filter(Boolean),n=this.rootId,s="";for(let o of i){if(s+="/"+o,this.idCache.has(s)){n=this.idCache.get(s);continue}let c=(await this.client.getFiles(n)).find(l=>l.title===o);if(!c)throw new Error(`Path not found: ${s}`);n=c.id,this.idCache.set(s,n)}return n}async list(e,t){let i=await this.resolveParentId(t),n=await this.client.getFiles(i),s=this.cleanPath(t),o=n.map(a=>{let c=!a.file,l=s?`${s}/${a.title}`:`/${a.title}`;this.idCache.set(l,a.id);let d="";return a.file&&a.file.cover&&(d="https://nano.mtres.cn/"+a.file.cover),{name:a.title,size:parseInt(a.size||"0",10)||0,is_dir:c,created:a.created_at,modified:a.updated_at||new Date().toISOString(),sign:a.id,type:X(a.title,c),thumb:d,raw_url:""}});return de(o,this.addition.order_by,this.addition.order_desc?"desc":"asc")}async get(e,t){let i=this.cleanPath(t),n=i.split("/").pop()||"root";if(!i)return{name:"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:this.rootId,type:1,raw_url:""};let s=i.split("/").slice(0,-1).join("/"),o=await this.resolveParentId(s),c=(await this.client.getFiles(o)).find(f=>f.title===n);if(!c)return{name:n,size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:0,raw_url:""};let l=!c.file,d="";if(!l)try{d=await this.client.getDownloadUrl(c.id)}catch(f){console.warn("[MediaTrack] get download URL failed:",f)}let u="";return c.file&&c.file.cover&&(u="https://nano.mtres.cn/"+c.file.cover),{name:c.title,size:parseInt(c.size||"0",10)||0,is_dir:l,created:c.created_at,modified:c.updated_at||new Date().toISOString(),sign:c.id,type:X(c.title,l),thumb:u,raw_url:d}}async mkdir(e,t){let i=this.cleanPath(t),n=i.split("/").slice(0,-1).join("/"),s=i.split("/").pop()||"",o=await this.resolveParentId(n);await this.client.request(`https://jayce.api.mediatrack.cn/v3/assets/${encodeURIComponent(o)}/children`,{method:"POST",body:{type:1,title:s}})}async rename(e,t,i){let n=await this.resolveParentId(t);await this.client.request(`https://jayce.api.mediatrack.cn/v3/assets/${encodeURIComponent(n)}`,{method:"PUT",body:{title:i}});let s=this.cleanPath(t);this.idCache.delete(s)}async remove(e,t,i){let n=await this.resolveParentId(t),s=await this.client.getFiles(n),o=[];for(let c of i){let l=s.find(d=>d.title===c);l&&o.push(l.id)}if(o.length===0)return;await this.client.request("https://jayce.api.mediatrack.cn/v4/assets/batch/delete",{method:"DELETE",body:{origin_id:n,ids:o}});let a=this.cleanPath(t);for(let c of i)this.idCache.delete(a?`${a}/${c}`:`/${c}`)}async move(e,t,i,n,s){let o=await this.resolveParentId(n),a=await this.resolveParentId(s),c=await this.client.getFiles(o),l=[];for(let d of i){let u=c.find(f=>f.title===d);u&&l.push(u.id)}l.length!==0&&await this.client.request("https://jayce.api.mediatrack.cn/v4/assets/batch/move",{method:"POST",body:{parent_id:a,ids:l}})}async copy(e,t,i,n,s){let o=await this.resolveParentId(n),a=await this.resolveParentId(s),c=await this.client.getFiles(o),l=[];for(let d of i){let u=c.find(f=>f.title===d);u&&l.push(u.id)}l.length!==0&&await this.client.request("https://jayce.api.mediatrack.cn/v4/assets/batch/clone",{method:"POST",body:{parent_id:a,ids:l}})}async put(e,t,i){let n=this.cleanPath(t),s=n.split("/").slice(0,-1).join("/"),o=n.split("/").pop()||"upload",a=await this.resolveParentId(s),l=`assets/${Math.random().toString(36).slice(2)}`,u=(await this.client.request("https://jayce.api.mediatrack.cn/v3/storage/tokens/asset",{method:"GET",params:{src:l}})).data?.url;u&&await fetch(u,{method:"PUT",headers:{"Content-Length":String(i.length)},body:new Uint8Array(i)}),await this.client.request(`https://jayce.api.mediatrack.cn/v3/assets/${encodeURIComponent(a)}/children`,{method:"POST",body:{category:0,description:o,mime:"application/octet-stream",size:String(i.length),src:l,title:o,type:0}})}}});var sm,m4=j(()=>{"use strict";Be();He();sm=class{addition;pathPairs=[];rootOrder=[];pathMap=new Map;constructor(e){this.addition=e,this.parsePaths()}cleanPath(e){let t="/"+(e||"").split("/").filter(Boolean).join("/");return t==="/"?"/":t}parsePaths(){let t=(this.addition.paths||"").split(` +`).map(i=>i.trim()).filter(Boolean);this.pathPairs=[],this.rootOrder=[],this.pathMap.clear();for(let i of t){let n="/",s=i,o=i.indexOf(":");o>0&&(n=this.cleanPath(i.slice(0,o)),s=i.slice(o+1).trim()),s=this.cleanPath(s),this.pathPairs.push({aliasSubPath:n,targetPath:s}),this.pathMap.has(n)||(this.rootOrder.push(n),this.pathMap.set(n,[])),this.pathMap.get(n).push(s)}}async init(){this.parsePaths()}getTargetsForPath(e){let t=this.cleanPath(e),i=[];if(this.rootOrder.length===1&&this.rootOrder[0]==="/"){let n=this.pathMap.get("/")||[];for(let s of n){let o=t==="/"?s:`${s}${t}`;i.push({targetFullPath:this.cleanPath(o),subPath:t})}return i}for(let[n,s]of this.pathMap.entries())if(n===t)for(let o of s)i.push({targetFullPath:o,subPath:"/"});else if(t.startsWith(n==="/"?"/":`${n}/`)){let o=t.slice(n==="/"?0:n.length);for(let a of s){let c=o==="/"?a:`${a}${o}`;i.push({targetFullPath:this.cleanPath(c),subPath:o})}}return i}async list(e,t){let i=this.cleanPath(t),{listItems:n}=await Promise.resolve().then(()=>(Yt(),qi));if(i==="/"&&this.rootOrder.length>1){let c=[];for(let l of this.rootOrder){let d=l.replace(/^\//,"").split("/")[0]||l;c.some(u=>u.name===d)||c.push({name:d,size:0,is_dir:!0,modified:new Date().toISOString(),sign:l,type:1,raw_url:""})}return de(c,this.addition.order_by,this.addition.order_direction)}let s=this.getTargetsForPath(t);if(s.length===0)return[];let o=new Map;for(let c of s)try{let l=await n(c.targetFullPath);for(let d of l.content)o.has(d.name)||o.set(d.name,d)}catch(l){console.warn(`[Alias] listing target ${c.targetFullPath} warning:`,l)}let a=Array.from(o.values());return de(a,this.addition.order_by,this.addition.order_direction)}async get(e,t){let i=this.cleanPath(t),n=i.split("/").filter(Boolean).pop()||"root";if(i==="/"&&this.rootOrder.length>1)return{name:"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:"/",type:1,raw_url:""};let s=this.getTargetsForPath(t);if(s.length===0)return{name:n,size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:X(n,!1),raw_url:""};let{getItem:o}=await Promise.resolve().then(()=>(Yt(),qi));for(let a of s)try{let c=await o(a.targetFullPath);if(c?.item)return{...c.item,raw_url:c.item.raw_url||c.rawUrl}}catch{}return{name:n,size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",type:X(n,!1),raw_url:""}}async mkdir(e,t){let i=this.getTargetsForPath(t);if(i.length===0)throw new Error(`[Alias] no target found for path ${t}`);let{makeDirectory:n}=await Promise.resolve().then(()=>(Yt(),qi));await n(i[0].targetFullPath)}async rename(e,t,i){let n=this.getTargetsForPath(t);if(n.length===0)throw new Error(`[Alias] no target found for path ${t}`);let{renameItem:s}=await Promise.resolve().then(()=>(Yt(),qi));await s(n[0].targetFullPath,i)}async remove(e,t,i){let n=this.getTargetsForPath(t);if(n.length===0)return;let{removeItems:s}=await Promise.resolve().then(()=>(Yt(),qi));await s(n[0].targetFullPath,i)}async move(e,t,i,n,s){let o=this.getTargetsForPath(n),a=this.getTargetsForPath(s);if(o.length===0||a.length===0)throw new Error("[Alias] cannot resolve source or destination path");let{moveItems:c}=await Promise.resolve().then(()=>(Yt(),qi));await c(o[0].targetFullPath,a[0].targetFullPath,i)}async copy(e,t,i,n,s){let o=this.getTargetsForPath(n),a=this.getTargetsForPath(s);if(o.length===0||a.length===0)throw new Error("[Alias] cannot resolve source or destination path");let{copyItems:c}=await Promise.resolve().then(()=>(Yt(),qi));await c(o[0].targetFullPath,a[0].targetFullPath,i)}async put(e,t,i){let n=this.getTargetsForPath(t);if(n.length===0)throw new Error(`[Alias] no target found for upload path ${t}`);let{putItem:s}=await Promise.resolve().then(()=>(Yt(),qi));await s(n[0].targetFullPath,i)}}});var om,y4=j(()=>{"use strict";om=class{addition;onTokenRefreshed;base="https://api.dropboxapi.com";contentBase="https://content.dropboxapi.com";constructor(e,t){this.addition=e,this.onTokenRefreshed=t}async refreshToken(){if(this.addition.use_online_api&&this.addition.api_url_address){let e=new URL(this.addition.api_url_address);e.searchParams.set("refresh_ui",this.addition.refresh_token),e.searchParams.set("server_use","true"),e.searchParams.set("driver_txt","dropboxs_go");let t=await fetch(e.toString());if(!t.ok)throw new Error(`Failed to refresh token: HTTP ${t.status}`);let i=await t.json();if(!i.access_token)throw new Error(i.text||"Empty token returned from renew API");this.addition.access_token=i.access_token,i.refresh_token&&(this.addition.refresh_token=i.refresh_token)}else{let e=`${this.base}/oauth2/token`,t=new URLSearchParams({grant_type:"refresh_token",refresh_token:this.addition.refresh_token,client_id:this.addition.client_id||"",client_secret:this.addition.client_secret||""}),i=await fetch(e,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:t.toString()});if(!i.ok){let s=await i.text();throw new Error(`Failed to refresh token: HTTP ${i.status} - ${s}`)}let n=await i.json();this.addition.access_token=n.access_token,n.refresh_token&&(this.addition.refresh_token=n.refresh_token)}this.onTokenRefreshed&&await this.onTokenRefreshed({accessToken:this.addition.access_token||"",refreshToken:this.addition.refresh_token||""})}async request(e,t={},i=!0){this.addition.access_token||await this.refreshToken();let s=`${t.isContentApi?this.contentBase:this.base}${e}`,o={Authorization:`Bearer ${this.addition.access_token}`,...t.customHeaders};this.addition.root_namespace_id&&(o["Dropbox-API-Path-Root"]=JSON.stringify({".tag":"root",root:this.addition.root_namespace_id}));let a;t.body!==void 0&&(typeof t.body=="object"&&!(t.body instanceof Uint8Array)&&!(t.body instanceof ArrayBuffer)&&!(t.body instanceof ReadableStream)?(o["Content-Type"]="application/json",a=JSON.stringify(t.body)):a=t.body);let c=await fetch(s,{method:t.method||"POST",headers:o,body:a});if(!c.ok){let d=await c.text(),u=c.status===401||d.includes("expired_access_token")||d.includes("invalid_access_token");if(i&&u)return await this.refreshToken(),this.request(e,t,!1);throw new Error(`Dropbox API error (${c.status}): ${d}`)}return(c.headers.get("content-type")||"").includes("application/json")?await c.json():await c.text()}async init(){if(!this.addition.access_token&&this.addition.refresh_token&&await this.refreshToken(),!this.addition.root_namespace_id)try{let e=await this.getCurrentAccount();e.root_info?.root_namespace_id&&(this.addition.root_namespace_id=e.root_info.root_namespace_id)}catch(e){console.warn("[Dropbox] failed to get root namespace ID:",e)}}async getCurrentAccount(){return this.request("/2/users/get_current_account",{method:"POST",body:null})}async getSpaceUsage(){return this.request("/2/users/get_space_usage",{method:"POST",body:null})}async getFiles(e){let t=e==="/"||e===""?"":e,i=await this.request("/2/files/list_folder",{method:"POST",body:{path:t,recursive:!1,include_deleted:!1,include_has_explicit_shared_members:!1,include_mounted_folders:!0,include_non_downloadable_files:!1,limit:2e3}}),n=[...i.entries];for(;i.has_more;)i=await this.request("/2/files/list_folder/continue",{method:"POST",body:{cursor:i.cursor}}),n.push(...i.entries);return n}async getTemporaryLink(e){return(await this.request("/2/files/get_temporary_link",{method:"POST",body:{path:e}})).link}async createFolder(e){await this.request("/2/files/create_folder_v2",{method:"POST",body:{path:e,autorename:!1}})}async move(e,t){await this.request("/2/files/move_v2",{method:"POST",body:{from_path:e,to_path:t,autorename:!1,allow_ownership_transfer:!1,allow_shared_folder:!1}})}async copy(e,t){await this.request("/2/files/copy_v2",{method:"POST",body:{from_path:e,to_path:t,autorename:!1,allow_ownership_transfer:!1,allow_shared_folder:!1}})}async delete(e){await this.request("/2/files/delete_v2",{method:"POST",body:{path:e}})}}});var am,I4=j(()=>{"use strict";Be();He();y4();am=class{addition;client;constructor(e,t){this.addition=e,this.client=new om(e,t)}async init(){await this.client.init()}cleanPath(e){let t="/"+(e||"").split("/").filter(Boolean).join("/");return t==="/"?"":t}async list(e,t){let i=this.cleanPath(t),s=(await this.client.getFiles(i)).map(o=>{let a=o[".tag"]==="folder",c=o.path_display||o.path_lower||`/${o.name}`;return{name:o.name,size:o.size||0,is_dir:a,modified:o.server_modified||o.client_modified||new Date().toISOString(),sign:o.id||c,type:X(o.name,a),raw_url:""}});return de(s,this.addition.order_by,this.addition.order_direction)}async get(e,t){let i=this.cleanPath(t),n=i.split("/").filter(Boolean).pop()||"root";if(!i)return{name:"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:"/",type:1,raw_url:""};try{let s=await this.client.getTemporaryLink(i);return{name:n,size:0,is_dir:!1,modified:new Date().toISOString(),sign:i,type:X(n,!1),raw_url:s}}catch{return{name:n,size:0,is_dir:!0,modified:new Date().toISOString(),sign:i,type:1,raw_url:""}}}async link(e,t){let i=this.cleanPath(t);return{url:await this.client.getTemporaryLink(i)}}async mkdir(e,t){let i=this.cleanPath(t);await this.client.createFolder(i)}async rename(e,t,i){let n=this.cleanPath(t),s=n.substring(0,n.lastIndexOf("/")),o=s?`${s}/${i}`:`/${i}`;await this.client.move(n,o)}async remove(e,t,i){let n=this.cleanPath(t);for(let s of i){let o=n===""?`/${s}`:`${n}/${s}`;await this.client.delete(o)}}async move(e,t,i,n,s){let o=this.cleanPath(n),a=this.cleanPath(s);for(let c of i){let l=o===""?`/${c}`:`${o}/${c}`,d=a===""?`/${c}`:`${a}/${c}`;await this.client.move(l,d)}}async copy(e,t,i,n,s){let o=this.cleanPath(n),a=this.cleanPath(s);for(let c of i){let l=o===""?`/${c}`:`${o}/${c}`,d=a===""?`/${c}`:`${a}/${c}`;await this.client.copy(l,d)}}async put(e,t,i){let n=this.cleanPath(t);await this.client.request("/2/files/upload",{method:"POST",isContentApi:!0,customHeaders:{"Dropbox-API-Arg":JSON.stringify({path:n,mode:"overwrite",autorename:!1,mute:!1,strict_conflict:!1}),"Content-Type":"application/octet-stream"},body:i})}async getDetails(){try{let e=await this.client.getSpaceUsage();return{total_space:e.allocation?.allocated||0,used_space:e.used||0}}catch{return{}}}}});var sE,w4,cm,x4=j(()=>{"use strict";sE="https://365.kdocs.cn",w4="https://drive.wps.cn",cm=class{addition;loginState;constructor(e){this.addition=e}isPersonal(){return this.loginState?.is_company_account!==void 0?!this.loginState.is_company_account:(this.addition.mode||"Personal")==="Personal"}driveHost(){return this.isPersonal()?w4:sE}drivePrefix(){return this.isPersonal()?"":"/3rd/drive"}driveUrl(e){return`${this.driveHost()}${this.drivePrefix()}${e}`}getUA(){return this.addition.custom_ua||"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"}async request(e,t={}){let i=new URL(e);if(t.params)for(let[c,l]of Object.entries(t.params))i.searchParams.set(c,l);let n={Cookie:this.addition.cookie,Accept:"application/json","User-Agent":this.getUA(),Origin:this.driveHost(),...t.headers},s;t.body!==void 0&&(typeof t.body=="object"?(n["Content-Type"]="application/json",s=JSON.stringify(t.body)):s=t.body);let o=await fetch(i.toString(),{method:t.method||"GET",headers:n,body:s});if(!o.ok){let c=await o.text();throw new Error(`WPS API error (${o.status}): ${c}`)}if((o.headers.get("content-type")||"").includes("application/json")){let c=await o.json();if(c.result&&c.result!=="ok"&&c.result!=="success")throw new Error(`WPS API error: ${c.result} - ${c.msg||""}`);return c}return await o.text()}async init(){if(!this.addition.cookie)throw new Error("WPS cookie is required");let e=await this.request("https://account.kdocs.cn/api/v3/islogin",{method:"GET"});this.loginState=e}async getGroups(){if(this.isPersonal())return((await this.request(this.driveUrl("/api/v3/groups"))).groups||[]).map(s=>({group_id:s.id,id:s.id,name:s.name}));let e=this.loginState?.companyid||0,t=`${sE}/3rd/plus/groups/v1/companies/${e}/users/self/groups/private`;return(await this.request(t)).groups||[]}async getFiles(e,t){let i=[],n=0;for(let s=0;s<50;s++){let o=this.driveUrl(`/api/v5/groups/${e}/files`),a=await this.request(o,{params:{parentid:String(t),offset:String(n)}});if(a.files&&a.files.length>0&&i.push(...a.files),a.next_offset===-1||a.next_offset===void 0)break;n=a.next_offset}return i}async getDownloadUrl(e,t){let i=this.driveUrl(`/api/v5/groups/${e}/files/${t}/download?support_checksums=sha1`),n=await this.request(i);if(!n.url)throw new Error("Empty download url received from WPS");return n.url}async createFolder(e,t,i){await this.request(this.driveUrl("/api/v5/files/folder"),{method:"POST",body:{groupid:e,parentid:t,name:i}})}async rename(e,t,i){await this.request(this.driveUrl(`/api/v3/groups/${e}/files/${t}`),{method:"PUT",body:{fname:i}})}async move(e,t,i,n){await this.request(this.driveUrl(`/api/v3/groups/${e}/files/batch/move`),{method:"POST",body:{fileids:[t],target_groupid:i,target_parentid:n}})}async copy(e,t,i,n){await this.request(this.driveUrl(`/api/v3/groups/${e}/files/batch/copy`),{method:"POST",body:{fileids:[t],groupid:e,target_groupid:i,target_parentid:n,duplicated_name_model:1}})}async delete(e,t){await this.request(this.driveUrl(`/api/v3/groups/${e}/files/batch/delete`),{method:"POST",body:{fileids:[t]}})}async getStorageDetails(){if(this.isPersonal()){let s=`${w4}/api/v3/spaces`,o=await this.request(s);return{total:o.total,used:o.used}}let e=this.loginState?.companyid||0,t=`${sE}/3rd/plussvr/compose/v1/u/companies/batch/service-space?comp_ids=${e}`,n=((await this.request(t)).info||[]).find(s=>s.id===e);return n?{total:n.space_total,used:n.space_used}:{}}}});var lm,C4=j(()=>{"use strict";Be();He();x4();lm=class{addition;client;constructor(e){this.addition=e,this.client=new cm(e)}async init(){await this.client.init()}cleanPath(e){let t="/"+(e||"").split("/").filter(Boolean).join("/");return t==="/"?"/":t}async resolvePath(e){let t=this.cleanPath(e);if(t==="/")return{kind:"root",groupId:0,fileId:0,name:"root",isDir:!0,size:0,modified:new Date().toISOString()};let i=t.split("/").filter(Boolean),s=(await this.client.getGroups()).find(l=>l.name===i[0]);if(!s)return null;let o=s.group_id||s.id||0;if(i.length===1)return{kind:"group",groupId:o,fileId:0,name:s.name,isDir:!0,size:0,modified:new Date().toISOString()};let a=0,c=null;for(let l=1;l<i.length;l++){let d=i[l],f=(await this.client.getFiles(o,a)).find(g=>g.fname===d);if(!f)return null;let h=f.ftype==="folder";c={kind:h?"folder":"file",groupId:o,fileId:f.id,name:f.fname,isDir:h,size:f.fsize||0,modified:f.mtime?new Date(f.mtime*1e3).toISOString():new Date().toISOString()},a=f.id}return c}async list(e,t){let i=this.cleanPath(t),n=await this.resolvePath(i);if(!n||!n.isDir)return[];if(n.kind==="root"){let c=(await this.client.getGroups()).map(l=>({name:l.name,size:0,is_dir:!0,modified:new Date().toISOString(),sign:String(l.group_id||l.id),type:1,raw_url:""}));return de(c,this.addition.order_by,this.addition.order_direction)}let o=(await this.client.getFiles(n.groupId,n.fileId)).map(a=>{let c=a.ftype==="folder";return{name:a.fname,size:a.fsize||0,is_dir:c,modified:a.mtime?new Date(a.mtime*1e3).toISOString():new Date().toISOString(),sign:String(a.id),type:X(a.fname,c),raw_url:""}});return de(o,this.addition.order_by,this.addition.order_direction)}async get(e,t){let i=this.cleanPath(t),n=await this.resolvePath(i);if(!n)throw new Error(`Path not found: ${i}`);let s="";if(!n.isDir&&n.kind==="file")try{s=await this.client.getDownloadUrl(n.groupId,n.fileId)}catch(o){console.warn("[WPS] failed to get download url in get():",o)}return{name:n.name,size:n.size,is_dir:n.isDir,modified:n.modified,sign:String(n.fileId||n.groupId),type:X(n.name,n.isDir),raw_url:s}}async link(e,t){let i=this.cleanPath(t),n=await this.resolvePath(i);if(!n||n.isDir||n.kind!=="file")throw new Error(`Cannot get link for non-file: ${i}`);return{url:await this.client.getDownloadUrl(n.groupId,n.fileId),headers:{"User-Agent":this.client.getUA(),Referer:this.client.driveHost()}}}async mkdir(e,t){let i=this.cleanPath(t),n=i.substring(0,i.lastIndexOf("/"))||"/",s=i.substring(i.lastIndexOf("/")+1),o=await this.resolvePath(n);if(!o||!o.isDir||o.kind==="root")throw new Error("Cannot create folder directly in root (groups are read-only)");await this.client.createFolder(o.groupId,o.fileId,s)}async move(e,t,i,n,s){let o=await this.resolvePath(this.cleanPath(s));if(!o||!o.isDir||o.kind==="root")throw new Error("Target destination directory not found");for(let a of i){let c=this.cleanPath(n)==="/"?`/${a}`:`${this.cleanPath(n)}/${a}`,l=await this.resolvePath(c);l&&await this.client.move(l.groupId,l.fileId,o.groupId,o.fileId)}}async rename(e,t,i){let n=await this.resolvePath(this.cleanPath(t));if(!n)throw new Error("Source node not found");await this.client.rename(n.groupId,n.fileId,i)}async copy(e,t,i,n,s){let o=await this.resolvePath(this.cleanPath(s));if(!o||!o.isDir||o.kind==="root")throw new Error("Target destination directory not found");for(let a of i){let c=this.cleanPath(n)==="/"?`/${a}`:`${this.cleanPath(n)}/${a}`,l=await this.resolvePath(c);l&&await this.client.copy(l.groupId,l.fileId,o.groupId,o.fileId)}}async remove(e,t,i){for(let n of i){let s=this.cleanPath(t)==="/"?`/${n}`:`${this.cleanPath(t)}/${n}`,o=await this.resolvePath(s);o&&o.kind!=="root"&&o.kind!=="group"&&await this.client.delete(o.groupId,o.fileId)}}async put(e,t,i){let n=this.cleanPath(t),s=n.substring(0,n.lastIndexOf("/"))||"/",o=n.substring(n.lastIndexOf("/")+1),a=await this.resolvePath(s);if(!a||!a.isDir)throw new Error(`Parent directory not found: ${s}`);console.warn(`[WPS] direct small upload for ${o}`)}async getDetails(){try{let e=await this.client.getStorageDetails();return{total_space:e.total,used_space:e.used}}catch{return{}}}}});function OJ(r){let e=encodeURIComponent(r);return e=e.replace(/\+/g,"%20"),e=e.replace(/!/g,"%21"),e=e.replace(/'/g,"%27"),e=e.replace(/\(/g,"%28"),e=e.replace(/\)/g,"%29"),e=e.replace(/\*/g,"%2A"),e}function oE(r){return pc.default.MD5(r).toString(pc.default.enc.Hex)}function MJ(r,e,t){let n=OJ(r).split("").sort().join(""),s=pc.default.enc.Utf8.parse(n),o=pc.default.enc.Base64.stringify(s),a=oE(o)+oE(`${e}:${t}`);return oE(a).toUpperCase()}function LJ(r){let e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",t="";for(let i=0;i<r;i++)t+=e.charAt(Math.floor(Math.random()*e.length));return t}function HJ(r){let e=t=>String(t).padStart(2,"0");return`${r.getFullYear()}-${e(r.getMonth()+1)}-${e(r.getDate())} ${e(r.getHours())}:${e(r.getMinutes())}:${e(r.getSeconds())}`}var pc,dm,E4=j(()=>{"use strict";pc=Qr(fc(),1);dm=class{addition;personalHost="https://yun.139.com";familyHost="https://yun.139.com";groupHost="https://yun.139.com";account="";constructor(e){this.addition=e,this.extractAccount()}extractAccount(){if(this.addition.authorization)try{let e=this.getAuthString(),i=pc.default.enc.Base64.parse(e).toString(pc.default.enc.Utf8).split(":");i.length>=2&&(this.account=i[1])}catch{}}getAuthString(){let e=(this.addition.authorization||"").trim();return e.startsWith("Basic ")&&(e=e.slice(6).trim()),e}isPersonalNew(){return!this.addition.type||this.addition.type==="personal_new"}isFamily(){return this.addition.type==="family"}isGroup(){return this.addition.type==="group"}getHost(){return this.isFamily()?this.familyHost:this.isGroup()?this.groupHost:this.personalHost}async request(e,t){let i=HJ(new Date),n=LJ(16),s=JSON.stringify(t||{}),o=MJ(s,i,n),a;e.startsWith("http://")||e.startsWith("https://")?a=e:e.startsWith("/orchestration/")?a=`https://yun.139.com${e}`:a=`${this.getHost()}${e}`;let c=this.isFamily()?"2":"1",l={Accept:"application/json, text/plain, */*","Content-Type":"application/json","CMS-DEVICE":"default",Authorization:`Basic ${this.getAuthString()}`,Caller:"web","Mcloud-Channel":"1000101","Mcloud-Client":"10701","Mcloud-Route":"001","mcloud-channel":"1000101","mcloud-client":"10701","mcloud-sign":`${i},${n},${o}`,"mcloud-version":"7.14.0",Origin:"https://yun.139.com",Referer:"https://yun.139.com/w/","x-DeviceInfo":"||9|7.14.0|chrome|120.0.0.0|||windows 10||zh-CN|||","x-huawei-channelSrc":"10000034","x-inner-ntwk":"2","x-m4c-caller":"PC","x-m4c-src":"10002","x-SvcType":c,"Inner-Hcy-Router-Https":"1","X-Yun-Api-Version":"v1","X-Yun-App-Channel":"10000034","X-Yun-Channel-Source":"10000034","X-Yun-Client-Info":"||9|7.14.0|chrome|120.0.0.0|||windows 10||zh-CN|||dW5kZWZpbmVk||","X-Yun-Module-Type":"100","X-Yun-Svc-Type":"1"},d=await fetch(a,{method:"POST",headers:l,body:s});if(!d.ok){let f=await d.text();throw new Error(`139 Cloud API error (${d.status}): ${f}`)}let u=await d.json();if(u.success===!1&&u.message)throw new Error(`139 Cloud API error: ${u.message}`);return u}async init(){if(!this.addition.authorization)throw new Error("139 Cloud Authorization is required");try{let e=await this.request("https://user-njs.yun.139.com/user/route/qryRoutePolicy",{userInfo:{userType:1,accountType:1,accountName:this.account},modAddrType:1});if(e.data?.routePolicyList)for(let t of e.data.routePolicyList)t.modName==="personal"&&t.httpsUrl?this.personalHost=t.httpsUrl:t.modName==="group"&&t.httpsUrl?this.groupHost=t.httpsUrl:t.modName==="family"&&t.httpsUrl&&(this.familyHost=t.httpsUrl)}catch(e){console.warn("[139] queryRoutePolicy warning, fallback to default host:",e)}}async listFiles(e=""){if(this.isPersonalNew()){let t="",i=[],n=e||this.addition.root_folder_id||"/";do{let a=await this.request("/file/list",{parentFileId:n,pageInfo:{pageCursor:t,pageSize:100},orderBy:"updated_at",orderDirection:"DESC",imageThumbnailStyleList:["Small","Large"]}),c=a.data?.items||[];i.push(...c),t=a.data?.nextPageCursor||""}while(t);let s=i.filter(a=>a.type==="folder").map(a=>({catalogID:a.fileId,catalogName:a.name,updateTime:a.updatedAt}));return{files:i.filter(a=>a.type!=="folder").map(a=>({contentID:a.fileId,contentName:a.name,contentSize:a.size,updateTime:a.updatedAt,createTime:a.createdAt,thumbnailURL:a.thumbnailUrls?.[0]?.url})),folders:s}}return this.getDisk(e)}async getDisk(e=""){let i=(await this.request("/orchestration/personalCloud/catalog/v1.0/getDisk",{catalogID:e||"",sortDirection:1,filterType:0,catalogSortType:0,contentSortType:0,startNumber:1,endNumber:5e3,commonAccountInfo:{account:this.account,accountType:1}})).data?.getDiskResult;return{files:i?.fileList||[],folders:i?.catalogList||[]}}async getDownloadUrl(e){if(this.isPersonalNew()){let n=await this.request("/file/getDownloadUrl",{fileId:e}),s=(n.data?.cdnSwitch?n.data?.cdnUrl:null)||n.data?.url||n.data?.cdnUrl;if(!s)throw new Error("Empty download URL received from 139 Cloud");return s}let t=await this.request("/orchestration/personalCloud/uploadAndDownload/v1.0/downloadRequest",{contentID:e,commonAccountInfo:{account:this.account,accountType:1}}),i=t.data?.downloadURL||t.data?.url;if(!i)throw new Error("Empty download URL received from 139 Cloud");return i}async createCatalog(e,t){return this.isPersonalNew()?(await this.request("/file/create",{parentFileId:e||this.addition.root_folder_id||"/",name:t,description:"",type:"folder",fileRenameMode:"force_rename"})).data?.fileId||"":(await this.request("/orchestration/personalCloud/catalog/v1.0/createCatalog",{parentCatalogID:e||"",catalogName:t,commonAccountInfo:{account:this.account,accountType:1}})).data?.catalogID||""}async deleteFile(e){if(this.isPersonalNew()){await this.request("/file/delete",{fileIds:[e]});return}await this.request("/orchestration/personalCloud/catalog/v1.0/deleteContent",{contentID:e,commonAccountInfo:{account:this.account,accountType:1}})}async deleteCatalog(e){if(this.isPersonalNew()){await this.request("/file/delete",{fileIds:[e]});return}await this.request("/orchestration/personalCloud/catalog/v1.0/deleteCatalog",{catalogID:e,commonAccountInfo:{account:this.account,accountType:1}})}async rename(e,t){if(this.isPersonalNew()){await this.request("/file/update",{fileId:e,name:t,description:""});return}await this.request("/orchestration/personalCloud/catalog/v1.0/updateCatalogInfo",{catalogID:e,catalogName:t,commonAccountInfo:{account:this.account,accountType:1}})}async getStorageDetails(){try{let e=await this.request("/orchestration/personalCloud/catalog/v1.0/getUserDomainInfo",{commonAccountInfo:{account:this.account,accountType:1}});return{total:e.data?.totalSize,used:e.data?.usedSize}}catch{return{}}}}});var um,B4=j(()=>{"use strict";Be();He();E4();um=class{addition;client;constructor(e){this.addition=e,this.client=new dm(e)}async init(){await this.client.init()}cleanPath(e){let t="/"+(e||"").split("/").filter(Boolean).join("/");return t==="/"?"/":t}getRootId(){return this.addition.root_folder_id?this.addition.root_folder_id:this.client.isPersonalNew()?"/":""}async resolveCatalogId(e){let t=this.cleanPath(e);if(t==="/")return this.getRootId();let i=t.split("/").filter(Boolean),n=this.getRootId();for(let s of i){let a=(await this.client.listFiles(n)).folders.find(c=>c.catalogName===s);if(a)n=a.catalogID;else break}return n}async list(e,t){let i=this.cleanPath(t),n=await this.resolveCatalogId(i),s=await this.client.listFiles(n),o=s.folders.map(l=>({name:l.catalogName,size:0,is_dir:!0,modified:l.updateTime||new Date().toISOString(),sign:l.catalogID,type:1,raw_url:""})),a=s.files.map(l=>{let d=typeof l.contentSize=="number"?l.contentSize:parseInt(String(l.contentSize||"0"),10),u=l.contentName||"file";return{name:u,size:isNaN(d)?0:d,is_dir:!1,modified:l.updateTime||l.createTime||new Date().toISOString(),sign:l.contentID||u,type:X(u,!1),thumb:l.thumbnailURL||l.bigThumbnailURL,raw_url:""}}),c=[...o,...a];return de(c,this.addition.order_by,this.addition.order_direction)}async get(e,t){let i=this.cleanPath(t),n=i.split("/").filter(Boolean).pop()||"root";if(i==="/")return{name:"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:this.getRootId(),type:1,raw_url:""};let s=i.substring(0,i.lastIndexOf("/"))||"/",o=await this.resolveCatalogId(s),a=await this.client.listFiles(o),c=a.folders.find(d=>d.catalogName===n);if(c)return{name:c.catalogName,size:0,is_dir:!0,modified:c.updateTime||new Date().toISOString(),sign:c.catalogID,type:1,raw_url:""};let l=a.files.find(d=>d.contentName===n);if(l){let d=typeof l.contentSize=="number"?l.contentSize:parseInt(String(l.contentSize||"0"),10),u="";if(l.contentID)try{u=await this.client.getDownloadUrl(l.contentID)}catch(f){console.warn("[139] failed to get download url in get():",f)}return{name:l.contentName||n,size:isNaN(d)?0:d,is_dir:!1,modified:l.updateTime||l.createTime||new Date().toISOString(),sign:l.contentID||n,type:X(n,!1),thumb:l.thumbnailURL||l.bigThumbnailURL,raw_url:u}}throw new Error(`Item not found: ${i}`)}async link(e,t){let i=await this.get(e,t);if(i.is_dir)throw new Error(`Cannot get link for folder: ${t}`);return{url:await this.client.getDownloadUrl(i.sign),headers:{Referer:"https://yun.139.com/","User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"}}}async mkdir(e,t){let i=this.cleanPath(t),n=i.substring(0,i.lastIndexOf("/"))||"/",s=i.substring(i.lastIndexOf("/")+1),o=await this.resolveCatalogId(n);await this.client.createCatalog(o,s)}async rename(e,t,i){let n=await this.get(e,t);await this.client.rename(n.sign,i)}async remove(e,t,i){let n=this.cleanPath(t),s=await this.resolveCatalogId(n),o=await this.client.listFiles(s);for(let a of i){let c=o.folders.find(l=>l.catalogName===a);if(c)await this.client.deleteCatalog(c.catalogID);else{let l=o.files.find(d=>d.contentName===a);l&&l.contentID&&await this.client.deleteFile(l.contentID)}}}async move(e,t,i,n,s){console.warn(`[139] move from ${n} to ${s}`)}async copy(e,t,i,n,s){console.warn(`[139] copy from ${n} to ${s}`)}async put(e,t,i){console.warn(`[139] put for ${t}`)}async getDetails(){try{let e=await this.client.getStorageDetails();return{total_space:e.total,used_space:e.used}}catch{return{}}}}});function KJ(r){let e=r.replace(/-/g,"+").replace(/_/g,"/");for(;e.length%4!==0;)e+="=";return mc.default.enc.Base64.parse(e)}function GJ(r){return mc.default.enc.Base64.stringify(r).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}function zJ(r){return mc.default.enc.Utf8.parse(r)}var mc,fm,b4=j(()=>{"use strict";mc=Qr(fc(),1);fm=class{addition;sid="";seq=Math.floor(Math.random()*268435456);masterKey=null;nodes=new Map;rootId="";constructor(e){this.addition=e}nextSeq(){return this.seq=(this.seq+1)%268435456,this.seq}async request(e){let i=`https://g.api.mega.co.nz/cs?id=${this.nextSeq()}`;this.sid&&(i+=`&sid=${this.sid}`);let n=await fetch(i,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!n.ok)throw new Error(`Mega API HTTP error: ${n.status}`);let s=await n.json();if(typeof s=="number"&&s<0)throw new Error(`Mega API error code: ${s}`);return s}async init(){if(!this.addition.email||!this.addition.password)throw new Error("Mega email and password are required");let e=mc.default.enc.Base64.stringify(mc.default.enc.Utf8.parse(this.addition.email.toLowerCase())).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,""),i=(await this.request([{a:"us",user:this.addition.email.toLowerCase(),uh:e}]))[0];if(typeof i=="number"&&i<0)throw new Error(`Mega authentication failed: ${i}`);this.sid=i.sid||"",await this.fetchNodes()}async fetchNodes(){if(!this.sid)return;let t=(await this.request([{a:"f",c:1}]))[0];if(t?.f&&Array.isArray(t.f)){this.nodes.clear();for(let i of t.f){let n=i.t===1||i.t===2||i.t===3||i.t===4;i.t===2&&(this.rootId=i.h);let s="unnamed";if(i.a)try{let a=this.decryptAttributes(i.a,i.k);a?.n&&(s=a.n)}catch{s=i.h}let o={id:i.h,parent_id:i.p,name:s,size:i.s||0,is_dir:n,modified:i.ts?new Date(i.ts*1e3).toISOString():new Date().toISOString(),type:i.t,key:i.k};this.nodes.set(i.h,o)}}}decryptAttributes(e,t){try{let i=KJ(e),n=mc.default.enc.Utf8.stringify(i);if(n.startsWith("MEGA{")){let s=n.substring(4);return JSON.parse(s)}}catch{}return null}getChildren(e){let t=e||this.rootId,i=[];for(let n of this.nodes.values())n.parent_id===t&&i.push(n);return i}getNode(e){return this.nodes.get(e)}getRootId(){return this.rootId}async getDownloadLink(e){let i=(await this.request([{a:"g",g:1,n:e}]))[0];if(i?.g)return i.g;throw new Error(`Failed to get download URL for node ${e}`)}async createFolder(e,t){let i=t||this.rootId,n=JSON.stringify({n:e}),s=GJ(zJ(`MEGA${n}`)),o=await this.request([{a:"p",t:i,n:[{h:"xxxxxxxx",t:1,a:s,k:"dummy_key"}]}]);return await this.fetchNodes(),o[0]?.f?.[0]?.h||""}async deleteNode(e){await this.request([{a:"d",n:e}]),this.nodes.delete(e)}async moveNode(e,t){await this.request([{a:"m",n:e,t}]);let i=this.nodes.get(e);i&&(i.parent_id=t)}async getQuota(){let t=(await this.request([{a:"uq",strg:1}]))[0];return{total:t?.mstrg||0,used:t?.cstrg||0}}}});var Am,v4=j(()=>{"use strict";Be();He();b4();Am=class{addition;client;constructor(e){this.addition=e,this.client=new fm(e)}async init(){await this.client.init()}cleanPath(e){let t="/"+(e||"").split("/").filter(Boolean).join("/");return t==="/"?"/":t}resolveNodeByPath(e){let t=this.cleanPath(e);if(t==="/")return{id:this.client.getRootId(),name:"root",size:0,is_dir:!0,modified:new Date().toISOString(),type:2};let i=t.split("/").filter(Boolean),n=this.client.getRootId(),s=null;for(let o of i){let c=this.client.getChildren(n).find(l=>l.name===o);if(!c)return null;s=c,n=c.id}return s}async list(e,t){let i=this.cleanPath(t),n=this.resolveNodeByPath(i);if(!n||!n.is_dir)return[];let o=this.client.getChildren(n.id).map(a=>({name:a.name,size:a.size||0,is_dir:a.is_dir,modified:a.modified||new Date().toISOString(),sign:a.id,type:X(a.name,a.is_dir),raw_url:""}));return de(o,this.addition.order_by,this.addition.order_direction)}async get(e,t){let i=this.cleanPath(t),n=this.resolveNodeByPath(i);if(!n)throw new Error(`Node not found: ${i}`);let s="";if(!n.is_dir)try{s=await this.client.getDownloadLink(n.id)}catch(o){console.warn("[Mega] failed to get download link in get():",o)}return{name:n.name,size:n.size,is_dir:n.is_dir,modified:n.modified,sign:n.id,type:X(n.name,n.is_dir),raw_url:s}}async link(e,t){let i=this.cleanPath(t),n=this.resolveNodeByPath(i);if(!n||n.is_dir)throw new Error(`Cannot get link for non-file: ${i}`);return{url:await this.client.getDownloadLink(n.id)}}async mkdir(e,t){let i=this.cleanPath(t),n=i.substring(0,i.lastIndexOf("/"))||"/",s=i.substring(i.lastIndexOf("/")+1),o=this.resolveNodeByPath(n);if(!o||!o.is_dir)throw new Error(`Parent folder not found: ${n}`);await this.client.createFolder(s,o.id)}async rename(e,t,i){if(!this.resolveNodeByPath(this.cleanPath(t)))throw new Error("Node not found");console.warn(`[Mega] rename ${t} to ${i}`)}async move(e,t,i,n,s){let o=this.resolveNodeByPath(this.cleanPath(s));if(!o||!o.is_dir)throw new Error("Destination folder not found");for(let a of i){let c=this.cleanPath(n)==="/"?`/${a}`:`${this.cleanPath(n)}/${a}`,l=this.resolveNodeByPath(c);l&&await this.client.moveNode(l.id,o.id)}}async copy(e,t,i,n,s){console.warn(`[Mega] copy not supported natively from ${n} to ${s}`)}async remove(e,t,i){for(let n of i){let s=this.cleanPath(t)==="/"?`/${n}`:`${this.cleanPath(t)}/${n}`,o=this.resolveNodeByPath(s);o&&await this.client.deleteNode(o.id)}}async put(e,t,i){console.warn(`[Mega] put for ${t}`)}async getDetails(){try{let e=await this.client.getQuota();return{total_space:e.total,used_space:e.used}}catch{return{}}}}});var hm,k4=j(()=>{"use strict";hm=class{addition;constructor(e){this.addition=e}async init(){if(!this.addition.share_code||!this.addition.receive_code)throw new Error("115 Share: share_code and receive_code are required")}async getFiles(e="0"){let t=this.addition.page_size||1e3,i=[],n=0,s=0;do{let o=new URL("https://webapi.115.com/share/snap");o.searchParams.set("share_code",this.addition.share_code),o.searchParams.set("receive_code",this.addition.receive_code),o.searchParams.set("cid",e||"0"),o.searchParams.set("limit",String(t)),o.searchParams.set("offset",String(n));let a={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",Referer:"https://115.com/"};this.addition.cookie&&(a.Cookie=this.addition.cookie);let c=await fetch(o.toString(),{headers:a});if(!c.ok)throw new Error(`115 Share API error: HTTP ${c.status}`);let l=await c.json();if(!l.state)throw new Error(`115 Share API error: ${l.msg||"failed"}`);let d=l.data?.list||[];if(i.push(...d),s=l.data?.count||0,n+=d.length,d.length===0)break}while(n<s);return i}async getDownloadUrl(e){let t=new URL("https://proapi.115.com/app/share/downurl"),i=new URLSearchParams({share_code:this.addition.share_code,receive_code:this.addition.receive_code,file_id:e}),n={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36","Content-Type":"application/x-www-form-urlencoded"};this.addition.cookie&&(n.Cookie=this.addition.cookie);let s=await fetch(t.toString(),{method:"POST",headers:n,body:i.toString()});if(!s.ok)throw new Error(`115 Share download error: HTTP ${s.status}`);let o=await s.json(),a=o.data?.url?.url||o.data?.url;if(!a)throw new Error(o.msg||"Empty download URL received from 115 Share");return a}}});var gm,S4=j(()=>{"use strict";Be();He();k4();gm=class{addition;client;constructor(e){this.addition=e,this.client=new hm(e)}async init(){await this.client.init()}cleanPath(e){let t="/"+(e||"").split("/").filter(Boolean).join("/");return t==="/"?"/":t}async resolveCid(e){let t=this.cleanPath(e);if(t==="/")return this.addition.root_folder_id||"0";let i=t.split("/").filter(Boolean),n=this.addition.root_folder_id||"0";for(let s of i){let a=(await this.client.getFiles(n)).find(c=>c.is_file===0&&c.file_name===s);if(a&&a.category_id)n=a.category_id;else break}return n}async list(e,t){let i=this.cleanPath(t),n=await this.resolveCid(i),o=(await this.client.getFiles(n)).map(a=>{let c=a.is_file===0,l=typeof a.file_size=="number"?a.file_size:parseInt(String(a.file_size||"0"),10),d=typeof a.user_utime=="number"?a.user_utime:parseInt(String(a.user_utime||"0"),10),u=a.file_name||"file";return{name:u,size:c||isNaN(l)?0:l,is_dir:c,modified:d>0?new Date(d*1e3).toISOString():new Date().toISOString(),sign:c?a.category_id||"":a.file_id||"",type:X(u,c),thumb:a.thumb_url,raw_url:""}});return de(o,this.addition.order_by,this.addition.order_direction)}async get(e,t){let i=this.cleanPath(t),n=i.split("/").filter(Boolean).pop()||"root";if(i==="/")return{name:"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:"0",type:1,raw_url:""};let s=i.substring(0,i.lastIndexOf("/"))||"/",o=await this.resolveCid(s),c=(await this.client.getFiles(o)).find(h=>h.file_name===n);if(!c)throw new Error(`File not found: ${i}`);let l=c.is_file===0,d=typeof c.file_size=="number"?c.file_size:parseInt(String(c.file_size||"0"),10),u=typeof c.user_utime=="number"?c.user_utime:parseInt(String(c.user_utime||"0"),10),f="";if(!l&&c.file_id)try{f=await this.client.getDownloadUrl(c.file_id)}catch(h){console.warn("[115Share] failed to get download url:",h)}return{name:c.file_name||n,size:l||isNaN(d)?0:d,is_dir:l,modified:u>0?new Date(u*1e3).toISOString():new Date().toISOString(),sign:l?c.category_id||"":c.file_id||"",type:X(c.file_name||n,l),thumb:c.thumb_url,raw_url:f}}async link(e,t){let i=await this.get(e,t);if(i.is_dir)throw new Error(`Cannot get link for folder: ${t}`);return{url:await this.client.getDownloadUrl(i.sign),headers:{"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36",Referer:"https://115.com/"}}}async mkdir(e,t){throw new Error("115 Share is read-only")}async rename(e,t,i){throw new Error("115 Share is read-only")}async remove(e,t,i){throw new Error("115 Share is read-only")}async move(e,t,i,n,s){throw new Error("115 Share is read-only")}async copy(e,t,i,n,s){throw new Error("115 Share is read-only")}async put(e,t,i){throw new Error("115 Share is read-only")}}});function D4(r){let e=typeof r=="string"?new TextEncoder().encode(r):r,t=-1;for(let i=0;i<e.length;i++)t=t>>>8^JJ[(t^e[i])&255];return(t^-1)>>>0}function jJ(r,e="web",t="3"){let i=["a","d","e","f","g","h","l","m","y","i","j","n","o","p","k","q","r","s","t","u","b","c","v","w","s","z"],n=String(Math.round(1e7*Math.random())),s=new Date,o=String(Math.floor(s.getTime()/1e3)),a=h=>String(h).padStart(2,"0"),c=`${s.getFullYear()}${a(s.getMonth()+1)}${a(s.getDate())}${a(s.getHours())}${a(s.getMinutes())}`,l=[];for(let h=0;h<c.length;h++){let g=c.charCodeAt(h)-48;l.push(i[g]||"a")}let d=String(D4(l.join(""))),u=[o,n,r,e,t,d].join("|"),f=String(D4(u));return[d,[o,n,f].join("-")]}function $J(r){let e=new URL(r),[t,i]=jJ(e.pathname,"web","3");return e.searchParams.set(t,i),e.toString()}var JJ,pm,Q4=j(()=>{"use strict";JJ=(()=>{let r=new Uint32Array(256);for(let e=0;e<256;e++){let t=e;for(let i=0;i<8;i++)t=t&1?3988292384^t>>>1:t>>>1;r[e]=t}return r})();pm=class{addition;mainApi="https://yun.123pan.com/b/api";constructor(e){this.addition=e}async init(){if(!this.addition.sharekey)throw new Error("123Pan Share: sharekey is required")}async request(e,t={}){let i=new URL(e);if(t.params)for(let[l,d]of Object.entries(t.params))i.searchParams.set(l,d);let n=$J(i.toString()),s={Origin:"https://yun.123pan.com",Referer:"https://yun.123pan.com/","User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) openlist-client",Platform:"web","App-Version":"3"};this.addition.accesstoken&&(s.Authorization=`Bearer ${this.addition.accesstoken}`);let o;t.body&&(s["Content-Type"]="application/json",o=JSON.stringify(t.body));let a=await fetch(n,{method:t.method||"GET",headers:s,body:o});if(!a.ok)throw new Error(`123Pan Share API error: HTTP ${a.status}`);let c=await a.json();if(c.code!==0&&c.code!==200)throw new Error(c.message||`123Pan Share API error (${c.code})`);return c}async getFiles(e="0"){let t=[],i=1;for(;;){let n=await this.request(`${this.mainApi}/share/get`,{method:"GET",params:{limit:"100",next:"0",orderBy:"file_id",orderDirection:"desc",parentFileId:e||"0",Page:String(i),shareKey:this.addition.sharekey,SharePwd:this.addition.sharepassword||""}}),s=n.data?.InfoList||[];if(t.push(...s),i++,s.length===0||n.data?.Next==="-1"||n.data?.Next===-1)break}return t}async getDownloadUrl(e){let i=(await this.request(`${this.mainApi}/share/download/info`,{method:"POST",body:{shareKey:this.addition.sharekey,SharePwd:this.addition.sharepassword||"",etag:e.Etag||"",fileId:e.FileId,s3keyFlag:e.S3KeyFlag||"",size:e.Size}})).data?.DownloadURL||"";if(!i)throw new Error("Failed to obtain download URL from 123Pan Share");try{let s=new URL(i).searchParams.get("params");s&&(i=atob(s))}catch{}return i}}});var mm,_4=j(()=>{"use strict";Be();He();Q4();mm=class{addition;client;constructor(e){this.addition=e,this.client=new pm(e)}async init(){await this.client.init()}cleanPath(e){let t="/"+(e||"").split("/").filter(Boolean).join("/");return t==="/"?"/":t}async resolveParentId(e){let t=this.cleanPath(e);if(t==="/")return this.addition.root_folder_id||"0";let i=t.split("/").filter(Boolean),n=this.addition.root_folder_id||"0";for(let s of i){let a=(await this.client.getFiles(n)).find(c=>c.Type===1&&c.FileName===s);if(a)n=String(a.FileId);else break}return n}async list(e,t){let i=this.cleanPath(t),n=await this.resolveParentId(i),o=(await this.client.getFiles(n)).map(a=>{let c=a.Type===1;return{name:a.FileName,size:c?0:a.Size||0,is_dir:c,modified:a.UpdateAt||a.CreateAt||new Date().toISOString(),sign:String(a.FileId),type:X(a.FileName,c),raw_url:""}});return de(o,this.addition.order_by,this.addition.order_direction)}async get(e,t){let i=this.cleanPath(t),n=i.split("/").filter(Boolean).pop()||"root";if(i==="/")return{name:"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:"0",type:1,raw_url:""};let s=i.substring(0,i.lastIndexOf("/"))||"/",o=await this.resolveParentId(s),c=(await this.client.getFiles(o)).find(u=>u.FileName===n);if(!c)throw new Error(`File not found: ${i}`);let l=c.Type===1,d="";if(!l)try{d=await this.client.getDownloadUrl(c)}catch(u){console.warn("[123Share] failed to get download url in get():",u)}return{name:c.FileName,size:l?0:c.Size||0,is_dir:l,modified:c.UpdateAt||c.CreateAt||new Date().toISOString(),sign:String(c.FileId),type:X(c.FileName,l),raw_url:d}}async link(e,t){let i=this.cleanPath(t),n=i.substring(0,i.lastIndexOf("/"))||"/",s=i.substring(i.lastIndexOf("/")+1),o=await this.resolveParentId(n),c=(await this.client.getFiles(o)).find(d=>d.FileName===s);if(!c||c.Type===1)throw new Error(`Cannot get link for: ${t}`);return{url:await this.client.getDownloadUrl(c),headers:{Referer:"https://yun.123pan.com/"}}}async mkdir(e,t){throw new Error("123Pan Share is read-only")}async rename(e,t,i){throw new Error("123Pan Share is read-only")}async remove(e,t,i){throw new Error("123Pan Share is read-only")}async move(e,t,i,n,s){throw new Error("123Pan Share is read-only")}async copy(e,t,i,n,s){throw new Error("123Pan Share is read-only")}async put(e,t,i){throw new Error("123Pan Share is read-only")}}});var ym,F4=j(()=>{"use strict";ym=class{addition;shareToken="";driveId="";constructor(e){this.addition=e}async getShareToken(){if(!this.addition.share_id)throw new Error("Aliyundrive Share: share_id is required");let e={share_id:this.addition.share_id};this.addition.share_pwd&&(e.share_pwd=this.addition.share_pwd);let t=await fetch("https://api.alipan.com/v2/share_link/get_share_token",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!t.ok)throw new Error(`Aliyundrive Share token error: HTTP ${t.status}`);let i=await t.json();if(i.code)throw new Error(i.message||`Aliyundrive Share error: ${i.code}`);return this.shareToken=i.share_token||"",this.shareToken}async init(){await this.getShareToken()}async getFiles(e="root"){this.shareToken||await this.getShareToken();let t=[],i="";do{let n={image_thumbnail_process:"image/resize,w_160/format,jpeg",image_url_process:"image/resize,w_1920/format,jpeg",limit:200,order_by:this.addition.order_by||"name",order_direction:this.addition.order_direction||"ASC",parent_file_id:e||"root",share_id:this.addition.share_id,video_thumbnail_process:"video/snapshot,t_1000,f_jpg,ar_auto,w_300",marker:i||void 0},s=await fetch("https://api.alipan.com/adrive/v3/file/list",{method:"POST",headers:{"Content-Type":"application/json","x-share-token":this.shareToken,"X-Canary":"client=web,app=share,version=v2.3.1"},body:JSON.stringify(n)});if(!s.ok)throw new Error(`Aliyundrive Share list error: HTTP ${s.status}`);let o=await s.json();if(o.code==="ShareLinkTokenInvalid"||o.code==="AccessTokenInvalid")return await this.getShareToken(),this.getFiles(e);if(o.code)throw new Error(o.message||`Aliyundrive list error (${o.code})`);let a=o.items||[];t.push(...a),i=o.next_marker||"",a.length>0&&!this.driveId&&a[0].drive_id&&(this.driveId=a[0].drive_id)}while(i);return t}async getDownloadUrl(e){this.shareToken||await this.getShareToken();let t={share_id:this.addition.share_id,file_id:e,drive_id:this.driveId||void 0,expire_sec:14400},i=await fetch("https://api.alipan.com/v2/file/get_share_link_download_url",{method:"POST",headers:{"Content-Type":"application/json","x-share-token":this.shareToken,"X-Canary":"client=web,app=share,version=v2.3.1"},body:JSON.stringify(t)});if(!i.ok)throw new Error(`Aliyundrive download URL error: HTTP ${i.status}`);let n=await i.json();if(n.code==="ShareLinkTokenInvalid")return await this.getShareToken(),this.getDownloadUrl(e);let s=n.download_url||n.url;if(!s)throw new Error("Failed to get download URL from Aliyundrive Share");return s}}});var Im,P4=j(()=>{"use strict";Be();He();F4();Im=class{addition;client;constructor(e){this.addition=e,this.client=new ym(e)}async init(){await this.client.init()}cleanPath(e){let t="/"+(e||"").split("/").filter(Boolean).join("/");return t==="/"?"/":t}async resolveFileId(e){let t=this.cleanPath(e);if(t==="/")return this.addition.root_folder_id||"root";let i=t.split("/").filter(Boolean),n=this.addition.root_folder_id||"root";for(let s of i){let a=(await this.client.getFiles(n)).find(c=>c.type==="folder"&&c.name===s);if(a)n=a.file_id;else break}return n}async list(e,t){let i=this.cleanPath(t),n=await this.resolveFileId(i),o=(await this.client.getFiles(n)).map(a=>{let c=a.type==="folder";return{name:a.name,size:c?0:a.size||0,is_dir:c,modified:a.updated_at||a.created_at||new Date().toISOString(),sign:a.file_id,type:X(a.name,c),thumb:a.thumbnail,raw_url:""}});return de(o,this.addition.order_by,this.addition.order_direction)}async get(e,t){let i=this.cleanPath(t),n=i.split("/").filter(Boolean).pop()||"root";if(i==="/")return{name:"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:"root",type:1,raw_url:""};let s=i.substring(0,i.lastIndexOf("/"))||"/",o=await this.resolveFileId(s),c=(await this.client.getFiles(o)).find(u=>u.name===n);if(!c)throw new Error(`File not found: ${i}`);let l=c.type==="folder",d="";if(!l)try{d=await this.client.getDownloadUrl(c.file_id)}catch(u){console.warn("[AliyundriveShare] failed to get download url in get():",u)}return{name:c.name,size:l?0:c.size||0,is_dir:l,modified:c.updated_at||c.created_at||new Date().toISOString(),sign:c.file_id,type:X(c.name,l),thumb:c.thumbnail,raw_url:d}}async link(e,t){let i=this.cleanPath(t),n=i.substring(0,i.lastIndexOf("/"))||"/",s=i.substring(i.lastIndexOf("/")+1),o=await this.resolveFileId(n),c=(await this.client.getFiles(o)).find(d=>d.name===s);if(!c||c.type==="folder")throw new Error(`Cannot get link for: ${t}`);return{url:await this.client.getDownloadUrl(c.file_id),headers:{Referer:"https://www.aliyundrive.com/","User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"}}}async mkdir(e,t){throw new Error("Aliyundrive Share is read-only")}async rename(e,t,i){throw new Error("Aliyundrive Share is read-only")}async remove(e,t,i){throw new Error("Aliyundrive Share is read-only")}async move(e,t,i,n,s){throw new Error("Aliyundrive Share is read-only")}async copy(e,t,i,n,s){throw new Error("Aliyundrive Share is read-only")}async put(e,t,i){throw new Error("Aliyundrive Share is read-only")}}});var wm,T4=j(()=>{"use strict";wm=class{addition;finalUrl="";cookie="";constructor(e){this.addition=e}async init(){if(!this.addition.url)throw new Error("OneDrive Sharelink URL is required");try{let e=await fetch(this.addition.url,{method:"HEAD",redirect:"follow"});this.finalUrl=e.url||this.addition.url}catch{this.finalUrl=this.addition.url}}async getFiles(e="/"){this.finalUrl||await this.init();let t=new URL(this.finalUrl);if(t.pathname.includes("/:u:/")||t.pathname.includes("/:v:/")||t.pathname.includes("/:b:/"))return[{id:"root_file",name:decodeURIComponent(t.pathname.split("/").pop()||"file"),size:0,is_folder:!1,modified:new Date().toISOString(),download_url:this.getDirectDownloadLink(this.finalUrl)}];try{let i=`${t.origin}${t.pathname}/_api/web/GetListUsingPath(DecodedUrl=@a1)/renderListDataAsStream`,n=await fetch(i,{method:"POST",headers:{Accept:"application/json;odata=nometadata","Content-Type":"application/json;odata=verbose"},body:JSON.stringify({parameters:{RenderOptions:5707,AllowMultipleValueFilterForTaxonomyFields:!0,AddRequiredFields:!0}})});if(n.ok)return((await n.json()).ListData?.Row||[]).map(a=>{let c=String(a.FSObjType)==="1",l=parseInt(a.File_x0020_Size||"0",10);return{id:a.UniqueId,name:a.FileLeafRef,size:c||isNaN(l)?0:l,is_folder:c,modified:a["Modified."]||new Date().toISOString(),download_url:a["@content.downloadUrl"],sp_item_url:a[".spItemUrl"]}})}catch{}return[]}getDirectDownloadLink(e){let t=new URL(e);return t.searchParams.set("download","1"),t.toString()}}});var xm,U4=j(()=>{"use strict";Be();He();T4();xm=class{addition;client;constructor(e){this.addition=e,this.client=new wm(e)}async init(){await this.client.init()}cleanPath(e){let t="/"+(e||"").split("/").filter(Boolean).join("/");return t==="/"?"/":t}async list(e,t){let i=this.cleanPath(t),s=(await this.client.getFiles(i)).map(o=>({name:o.name,size:o.size||0,is_dir:o.is_folder,modified:o.modified||new Date().toISOString(),sign:o.id||o.name,type:X(o.name,o.is_folder),raw_url:o.download_url||""}));return de(s,this.addition.order_by,this.addition.order_direction)}async get(e,t){let i=this.cleanPath(t),n=i.split("/").filter(Boolean).pop()||"root";if(i==="/")return{name:"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:"root",type:1,raw_url:""};let o=(await this.client.getFiles("/")).find(a=>a.name===n);if(!o)throw new Error(`File not found: ${i}`);return{name:o.name,size:o.size||0,is_dir:o.is_folder,modified:o.modified||new Date().toISOString(),sign:o.id||o.name,type:X(o.name,o.is_folder),raw_url:o.download_url||this.client.getDirectDownloadLink(this.addition.url)}}async link(e,t){let i=await this.get(e,t);if(i.is_dir)throw new Error(`Cannot get link for folder: ${t}`);return{url:i.raw_url||this.client.getDirectDownloadLink(this.addition.url)}}async mkdir(e,t){throw new Error("OneDrive Sharelink is read-only")}async rename(e,t,i){throw new Error("OneDrive Sharelink is read-only")}async remove(e,t,i){throw new Error("OneDrive Sharelink is read-only")}async move(e,t,i,n,s){throw new Error("OneDrive Sharelink is read-only")}async copy(e,t,i,n,s){throw new Error("OneDrive Sharelink is read-only")}async put(e,t,i){throw new Error("OneDrive Sharelink is read-only")}}});var Cm,R4=j(()=>{"use strict";Cm=class{addition;passCodeToken="";deviceId="";constructor(e){this.addition=e,this.deviceId=e.device_id||this.generateDeviceId()}generateDeviceId(){return"web_"+Math.random().toString(36).substring(2,15)}async init(){if(!this.addition.share_id)throw new Error("PikPak Share: share_id is required")}async getFiles(e=""){let t=[],i="";do{let n=new URL("https://api-drive.mypikpak.com/drive/v1/share");n.searchParams.set("share_id",this.addition.share_id),this.addition.share_pwd&&n.searchParams.set("pass_code",this.addition.share_pwd),e&&n.searchParams.set("parent_id",e),i&&n.searchParams.set("page_token",i),n.searchParams.set("thumbnail_size","SIZE_LARGE");let s={"X-Client-ID":"YUMx5nI8ZU8Ap8pm","X-Device-ID":this.deviceId,"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"};this.passCodeToken&&(s["X-Share-Token"]=this.passCodeToken);let o=await fetch(n.toString(),{headers:s});if(!o.ok)throw new Error(`PikPak Share error: HTTP ${o.status}`);let a=await o.json();a.pass_code_token&&(this.passCodeToken=a.pass_code_token);let c=a.files||[];if(t.push(...c),i=a.next_page_token||"",c.length===0)break}while(i);return t}async getDownloadUrl(e){if(e.web_content_link)return e.web_content_link;if(e.medias&&e.medias.length>0&&e.medias[0].link?.url)return e.medias[0].link.url;throw new Error("Download URL not found in PikPak share item")}}});var Em,N4=j(()=>{"use strict";Be();He();R4();Em=class{addition;client;constructor(e){this.addition=e,this.client=new Cm(e)}async init(){await this.client.init()}cleanPath(e){let t="/"+(e||"").split("/").filter(Boolean).join("/");return t==="/"?"/":t}async resolveParentId(e){let t=this.cleanPath(e);if(t==="/")return this.addition.root_folder_id||"";let i=t.split("/").filter(Boolean),n=this.addition.root_folder_id||"";for(let s of i){let a=(await this.client.getFiles(n)).find(c=>c.kind==="drive#folder"&&c.name===s);if(a)n=a.id;else break}return n}async list(e,t){let i=this.cleanPath(t),n=await this.resolveParentId(i),o=(await this.client.getFiles(n)).map(a=>{let c=a.kind==="drive#folder",l=typeof a.size=="number"?a.size:parseInt(String(a.size||"0"),10);return{name:a.name,size:c||isNaN(l)?0:l,is_dir:c,modified:a.modified_time||new Date().toISOString(),sign:a.id,type:X(a.name,c),thumb:a.thumbnail_link,raw_url:""}});return de(o,this.addition.order_by,this.addition.order_direction)}async get(e,t){let i=this.cleanPath(t),n=i.split("/").filter(Boolean).pop()||"root";if(i==="/")return{name:"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:"root",type:1,raw_url:""};let s=i.substring(0,i.lastIndexOf("/"))||"/",o=await this.resolveParentId(s),c=(await this.client.getFiles(o)).find(f=>f.name===n);if(!c)throw new Error(`File not found: ${i}`);let l=c.kind==="drive#folder",d=typeof c.size=="number"?c.size:parseInt(String(c.size||"0"),10),u="";if(!l)try{u=await this.client.getDownloadUrl(c)}catch(f){console.warn("[PikPakShare] failed to get download url in get():",f)}return{name:c.name,size:l||isNaN(d)?0:d,is_dir:l,modified:c.modified_time||new Date().toISOString(),sign:c.id,type:X(c.name,l),thumb:c.thumbnail_link,raw_url:u}}async link(e,t){let i=this.cleanPath(t),n=i.substring(0,i.lastIndexOf("/"))||"/",s=i.substring(i.lastIndexOf("/")+1),o=await this.resolveParentId(n),c=(await this.client.getFiles(o)).find(d=>d.name===s);if(!c||c.kind==="drive#folder")throw new Error(`Cannot get link for: ${t}`);return{url:await this.client.getDownloadUrl(c)}}async mkdir(e,t){throw new Error("PikPak Share is read-only")}async rename(e,t,i){throw new Error("PikPak Share is read-only")}async remove(e,t,i){throw new Error("PikPak Share is read-only")}async move(e,t,i,n,s){throw new Error("PikPak Share is read-only")}async copy(e,t,i,n,s){throw new Error("PikPak Share is read-only")}async put(e,t,i){throw new Error("PikPak Share is read-only")}}});var Bm,q4=j(()=>{"use strict";Be();He();Bm=class{addition;constructor(e){this.addition=e}async init(){if(!this.addition.address||!this.addition.share_name)throw new Error("SMB: address and share_name are required")}cleanPath(e){let t="/"+(e||"").split("/").filter(Boolean).join("/");return t==="/"?"":t}async list(e,t){return de([],this.addition.order_by,this.addition.order_direction)}async get(e,t){let i=this.cleanPath(t),n=i.split("/").filter(Boolean).pop()||"root";return{name:n,size:0,is_dir:i==="",modified:new Date().toISOString(),sign:i||"/",type:X(n,i===""),raw_url:""}}async mkdir(e,t){}async rename(e,t,i){}async remove(e,t,i){}async move(e,t,i,n,s){}async copy(e,t,i,n,s){}async put(e,t,i){}}});var vm=oe((bm,O4)=>{(function(r,e){typeof bm=="object"&&typeof O4<"u"?e(bm):typeof define=="function"&&define.amd?define(["exports"],e):(r=typeof globalThis<"u"?globalThis:r||self,e(r.hashwasm={}))})(bm,(function(r){"use strict";var e="adler32",t="AGFzbQEAAAABDANgAAF/YAAAYAF/AAMHBgABAgEAAgUEAQECAgYOAn8BQYCJBQt/AEGACAsHcAgGbWVtb3J5AgAOSGFzaF9HZXRCdWZmZXIAAAlIYXNoX0luaXQAAQtIYXNoX1VwZGF0ZQACCkhhc2hfRmluYWwAAw1IYXNoX0dldFN0YXRlAAQOSGFzaF9DYWxjdWxhdGUABQpTVEFURV9TSVpFAwEK6wkGBQBBgAkLCgBBAEEBNgKECAvjCAEHf0EAKAKECCIBQf//A3EhAiABQRB2IQMCQAJAIABBAUcNACACQQAtAIAJaiIBQY+AfGogASABQfD/A0sbIgEgA2oiBEEQdCIFQYCAPGogBSAEQfD/A0sbIAFyIQEMAQsCQAJAAkACQAJAIABBEEkNAEGACSEGIABBsCtJDQFBgAkhBgNAQQAhBQNAIAYgBWoiASgCACIEQf8BcSACaiICIANqIAIgBEEIdkH/AXFqIgJqIAIgBEEQdkH/AXFqIgJqIAIgBEEYdmoiAmogAiABQQRqKAIAIgRB/wFxaiICaiACIARBCHZB/wFxaiICaiACIARBEHZB/wFxaiICaiACIARBGHZqIgJqIAIgAUEIaigCACIEQf8BcWoiAmogAiAEQQh2Qf8BcWoiAmogAiAEQRB2Qf8BcWoiAmogAiAEQRh2aiIEaiAEIAFBDGooAgAiAUH/AXFqIgRqIAQgAUEIdkH/AXFqIgRqIAQgAUEQdkH/AXFqIgRqIAQgAUEYdmoiAmohAyAFQRBqIgVBsCtHDQALIANB8f8DcCEDIAJB8f8DcCECIAZBsCtqIQYgAEHQVGoiAEGvK0sNAAsgAEUNBCAAQQ9LDQEMAgsCQCAARQ0AAkACQCAAQQNxIgUNAEGACSEBIAAhBAwBCyAAQXxxIQRBACEBA0AgAiABQYAJai0AAGoiAiADaiEDIAUgAUEBaiIBRw0ACyAFQYAJaiEBCyAAQQRJDQADQCACIAEtAABqIgUgAS0AAWoiBiABLQACaiIAIAFBA2otAABqIgIgACAGIAUgA2pqamohAyABQQRqIQEgBEF8aiIEDQALCyACQY+AfGogAiACQfD/A0sbIANB8f8DcEEQdHIhAQwECwNAIAYoAgAiAUH/AXEgAmoiBCADaiAEIAFBCHZB/wFxaiIEaiAEIAFBEHZB/wFxaiIEaiAEIAFBGHZqIgRqIAQgBkEEaigCACIBQf8BcWoiBGogBCABQQh2Qf8BcWoiBGogBCABQRB2Qf8BcWoiBGogBCABQRh2aiIEaiAEIAZBCGooAgAiAUH/AXFqIgRqIAQgAUEIdkH/AXFqIgRqIAQgAUEQdkH/AXFqIgRqIAQgAUEYdmoiBGogBCAGQQxqKAIAIgFB/wFxaiIEaiAEIAFBCHZB/wFxaiIEaiAEIAFBEHZB/wFxaiIEaiAEIAFBGHZqIgJqIQMgBkEQaiEGIABBcGoiAEEPSw0ACyAARQ0BCyAAQX9qIQcCQCAAQQNxIgVFDQAgAEF8cSEAIAUhBCAGIQEDQCACIAEtAABqIgIgA2ohAyABQQFqIQEgBEF/aiIEDQALIAYgBWohBgsgB0EDSQ0AA0AgAiAGLQAAaiIBIAYtAAFqIgQgBi0AAmoiBSAGQQNqLQAAaiICIAUgBCABIANqampqIQMgBkEEaiEGIABBfGoiAA0ACwsgA0Hx/wNwIQMgAkHx/wNwIQILIAIgA0EQdHIhAQtBACABNgKECAsxAQF/QQBBACgChAgiAEEYdCAAQYD+A3FBCHRyIABBCHZBgP4DcSAAQRh2cnI2AoAJCwUAQYQICzsAQQBBATYChAggABACQQBBACgChAgiAEEYdCAAQYD+A3FBCHRyIABBCHZBgP4DcSAAQRh2cnI2AoAJCwsVAgBBgAgLBAQAAAAAQYQICwQBAAAA",i="02ddbd17",n={name:e,data:t,hash:i};function s(S,q,M,Y){function ie(ae){return ae instanceof M?ae:new M(function(ge){ge(ae)})}return new(M||(M=Promise))(function(ae,ge){function xe(jt){try{qt(Y.next(jt))}catch(rr){ge(rr)}}function Je(jt){try{qt(Y.throw(jt))}catch(rr){ge(rr)}}function qt(jt){jt.done?ae(jt.value):ie(jt.value).then(xe,Je)}qt((Y=Y.apply(S,q||[])).next())})}typeof SuppressedError=="function"&&SuppressedError;class o{constructor(){this.mutex=Promise.resolve()}lock(){let q=()=>{};return this.mutex=this.mutex.then(()=>new Promise(q)),new Promise(M=>{q=M})}dispatch(q){return s(this,void 0,void 0,function*(){let M=yield this.lock();try{return yield Promise.resolve(q())}finally{M()}})}}var a;function c(){return typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:global}let l=c(),d=(a=l.Buffer)!==null&&a!==void 0?a:null,u=l.TextEncoder?new l.TextEncoder:null;function f(S,q){return String.fromCharCode(...S.subarray(0,q))}function h(S,q){return(S&15)+(S>>6|S>>3&8)<<4|(q&15)+(q>>6|q>>3&8)}function g(S,q){let M=q.length>>1;for(let Y=0;Y<M;Y++){let ie=Y<<1;S[Y]=h(q.charCodeAt(ie),q.charCodeAt(ie+1))}}function p(S,q){if(S.length!==q.length*2)return!1;for(let M=0;M<q.length;M++){let Y=M<<1;if(q[M]!==h(S.charCodeAt(Y),S.charCodeAt(Y+1)))return!1}return!0}let I=87,y=48;function w(S,q,M){let Y=0;for(let ie=0;ie<M;ie++){let ae=q[ie]>>>4;S[Y++]=ae>9?ae+I:ae+y,ae=q[ie]&15,S[Y++]=ae>9?ae+I:ae+y}return String.fromCharCode.apply(null,S)}let C=d!==null?S=>{if(typeof S=="string"){let q=d.from(S,"utf8");return new Uint8Array(q.buffer,q.byteOffset,q.length)}if(d.isBuffer(S))return new Uint8Array(S.buffer,S.byteOffset,S.length);if(ArrayBuffer.isView(S))return new Uint8Array(S.buffer,S.byteOffset,S.byteLength);throw new Error("Invalid data type!")}:S=>{if(typeof S=="string")return u.encode(S);if(ArrayBuffer.isView(S))return new Uint8Array(S.buffer,S.byteOffset,S.byteLength);throw new Error("Invalid data type!")},b="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",x=new Uint8Array(256);for(let S=0;S<b.length;S++)x[b.charCodeAt(S)]=S;function _(S,q=!0){let M=S.length,Y=M%3,ie=[],ae=M-Y;for(let ge=0;ge<ae;ge+=3){let xe=(S[ge]<<16&16711680)+(S[ge+1]<<8&65280)+(S[ge+2]&255),Je=b.charAt(xe>>18&63)+b.charAt(xe>>12&63)+b.charAt(xe>>6&63)+b.charAt(xe&63);ie.push(Je)}if(Y===1){let ge=S[M-1],xe=b.charAt(ge>>2),Je=b.charAt(ge<<4&63);ie.push(`${xe}${Je}`),q&&ie.push("==")}else if(Y===2){let ge=(S[M-2]<<8)+S[M-1],xe=b.charAt(ge>>10),Je=b.charAt(ge>>4&63),qt=b.charAt(ge<<2&63);ie.push(`${xe}${Je}${qt}`),q&&ie.push("=")}return ie.join("")}function R(S){let q=Math.floor(S.length*.75),M=S.length;return S[M-1]==="="&&(q-=1,S[M-2]==="="&&(q-=1)),q}function U(S){let q=R(S),M=S.length,Y=new Uint8Array(q),ie=0;for(let ae=0;ae<M;ae+=4){let ge=x[S.charCodeAt(ae)],xe=x[S.charCodeAt(ae+1)],Je=x[S.charCodeAt(ae+2)],qt=x[S.charCodeAt(ae+3)];Y[ie]=ge<<2|xe>>4,ie+=1,Y[ie]=(xe&15)<<4|Je>>2,ie+=1,Y[ie]=(Je&3)<<6|qt&63,ie+=1}return Y}let T=16*1024,D=4,B=new o,Q=new Map;function v(S,q){return s(this,void 0,void 0,function*(){let M=null,Y=null,ie=!1;if(typeof WebAssembly>"u")throw new Error("WebAssembly is not supported in this environment!");let ae=(je,nt=0)=>{Y.set(je,nt)},ge=()=>Y,xe=()=>M.exports,Je=je=>{M.exports.Hash_SetMemorySize(je);let nt=M.exports.Hash_GetBuffer(),ni=M.exports.memory.buffer;Y=new Uint8Array(ni,nt,je)},qt=()=>new DataView(M.exports.memory.buffer).getUint32(M.exports.STATE_SIZE,!0),jt=B.dispatch(()=>s(this,void 0,void 0,function*(){if(!Q.has(S.name)){let nt=U(S.data),ni=WebAssembly.compile(nt);Q.set(S.name,ni)}let je=yield Q.get(S.name);M=yield WebAssembly.instantiate(je,{})})),rr=()=>s(this,void 0,void 0,function*(){M||(yield jt);let je=M.exports.Hash_GetBuffer(),nt=M.exports.memory.buffer;Y=new Uint8Array(nt,je,T)}),Ot=(je=null)=>{ie=!0,M.exports.Hash_Init(je)},$i=je=>{let nt=0;for(;nt<je.length;){let ni=je.subarray(nt,nt+T);nt+=ni.length,Y.set(ni),M.exports.Hash_Update(ni.length)}},Hr=je=>{if(!ie)throw new Error("update() called before init()");let nt=C(je);$i(nt)},Iu=new Uint8Array(q*2),vo=(je,nt=null)=>{if(!ie)throw new Error("digest() called before init()");return ie=!1,M.exports.Hash_Final(nt),je==="binary"?Y.slice(0,q):w(Iu,Y,q)},wn=()=>{if(!ie)throw new Error("save() can only be called after init() and before digest()");let je=M.exports.Hash_GetState(),nt=qt(),ni=M.exports.memory.buffer,ja=new Uint8Array(ni,je,nt),wu=new Uint8Array(D+nt);return g(wu,S.hash),wu.set(ja,D),wu},ko=je=>{if(!(je instanceof Uint8Array))throw new Error("load() expects an Uint8Array generated by save()");let nt=M.exports.Hash_GetState(),ni=qt(),ja=D+ni,wu=M.exports.memory.buffer;if(je.length!==ja)throw new Error(`Bad state length (expected ${ja} bytes, got ${je.length})`);if(!p(S.hash,je.subarray(0,D)))throw new Error("This state was written by an incompatible hash implementation");let TL=je.subarray(D);new Uint8Array(wu,nt,ni).set(TL),ie=!0},ml=je=>typeof je=="string"?je.length<T/4:je.byteLength<T,Ss=ml;switch(S.name){case"argon2":case"scrypt":Ss=()=>!0;break;case"blake2b":case"blake2s":Ss=(je,nt)=>nt<=512&&ml(je);break;case"blake3":Ss=(je,nt)=>nt===0&&ml(je);break;case"xxhash64":case"xxhash3":case"xxhash128":case"crc64":Ss=()=>!1;break}let So=(je,nt=null,ni=null)=>{if(!Ss(je,nt))return Ot(nt),Hr(je),vo("hex",ni);let ja=C(je);return Y.set(ja),M.exports.Hash_Calculate(ja.length,nt,ni),w(Iu,Y,q)};return yield rr(),{getMemory:ge,writeMemory:ae,getExports:xe,setMemorySize:Je,init:Ot,update:Hr,digest:vo,save:wn,load:ko,calculate:So,hashLength:q}})}function E(S,q,M){return s(this,void 0,void 0,function*(){let Y=yield S.lock(),ie=yield v(q,M);return Y(),ie})}let P=new o,N=null;function J(S){if(N===null)return E(P,n,4).then(q=>(N=q,N.calculate(S)));try{let q=N.calculate(S);return Promise.resolve(q)}catch(q){return Promise.reject(q)}}function z(){return v(n,4).then(S=>{S.init();let q={init:()=>(S.init(),q),update:M=>(S.update(M),q),digest:M=>S.digest(M),save:()=>S.save(),load:M=>(S.load(M),q),blockSize:4,digestSize:4};return q})}var L="argon2",G="AGFzbQEAAAABKQVgAX8Bf2AAAX9gEH9/f39/f39/f39/f39/f38AYAR/f39/AGACf38AAwYFAAECAwQFBgEBAoCAAgYIAX8BQZCoBAsHQQQGbWVtb3J5AgASSGFzaF9TZXRNZW1vcnlTaXplAAAOSGFzaF9HZXRCdWZmZXIAAQ5IYXNoX0NhbGN1bGF0ZQAECvEyBVgBAn9BACEBAkAgAEEAKAKICCICRg0AAkAgACACayIAQRB2IABBgIB8cSAASWoiAEAAQX9HDQBB/wHADwtBACEBQQBBACkDiAggAEEQdK18NwOICAsgAcALcAECfwJAQQAoAoAIIgANAEEAPwBBEHQiADYCgAhBACgCiAgiAUGAgCBGDQACQEGAgCAgAWsiAEEQdiAAQYCAfHEgAElqIgBAAEF/Rw0AQQAPC0EAQQApA4gIIABBEHStfDcDiAhBACgCgAghAAsgAAvcDgECfiAAIAQpAwAiECAAKQMAIhF8IBFCAYZC/v///x+DIBBC/////w+DfnwiEDcDACAMIBAgDCkDAIVCIIkiEDcDACAIIBAgCCkDACIRfCARQgGGQv7///8fgyAQQv////8Pg358IhA3AwAgBCAQIAQpAwCFQiiJIhA3AwAgACAQIAApAwAiEXwgEEL/////D4MgEUIBhkL+////H4N+fCIQNwMAIAwgECAMKQMAhUIwiSIQNwMAIAggECAIKQMAIhF8IBBC/////w+DIBFCAYZC/v///x+DfnwiEDcDACAEIBAgBCkDAIVCAYk3AwAgASAFKQMAIhAgASkDACIRfCARQgGGQv7///8fgyAQQv////8Pg358IhA3AwAgDSAQIA0pAwCFQiCJIhA3AwAgCSAQIAkpAwAiEXwgEUIBhkL+////H4MgEEL/////D4N+fCIQNwMAIAUgECAFKQMAhUIoiSIQNwMAIAEgECABKQMAIhF8IBBC/////w+DIBFCAYZC/v///x+DfnwiEDcDACANIBAgDSkDAIVCMIkiEDcDACAJIBAgCSkDACIRfCAQQv////8PgyARQgGGQv7///8fg358IhA3AwAgBSAQIAUpAwCFQgGJNwMAIAIgBikDACIQIAIpAwAiEXwgEUIBhkL+////H4MgEEL/////D4N+fCIQNwMAIA4gECAOKQMAhUIgiSIQNwMAIAogECAKKQMAIhF8IBFCAYZC/v///x+DIBBC/////w+DfnwiEDcDACAGIBAgBikDAIVCKIkiEDcDACACIBAgAikDACIRfCAQQv////8PgyARQgGGQv7///8fg358IhA3AwAgDiAQIA4pAwCFQjCJIhA3AwAgCiAQIAopAwAiEXwgEEL/////D4MgEUIBhkL+////H4N+fCIQNwMAIAYgECAGKQMAhUIBiTcDACADIAcpAwAiECADKQMAIhF8IBFCAYZC/v///x+DIBBC/////w+DfnwiEDcDACAPIBAgDykDAIVCIIkiEDcDACALIBAgCykDACIRfCARQgGGQv7///8fgyAQQv////8Pg358IhA3AwAgByAQIAcpAwCFQiiJIhA3AwAgAyAQIAMpAwAiEXwgEEL/////D4MgEUIBhkL+////H4N+fCIQNwMAIA8gECAPKQMAhUIwiSIQNwMAIAsgECALKQMAIhF8IBBC/////w+DIBFCAYZC/v///x+DfnwiEDcDACAHIBAgBykDAIVCAYk3AwAgACAFKQMAIhAgACkDACIRfCARQgGGQv7///8fgyAQQv////8Pg358IhA3AwAgDyAQIA8pAwCFQiCJIhA3AwAgCiAQIAopAwAiEXwgEUIBhkL+////H4MgEEL/////D4N+fCIQNwMAIAUgECAFKQMAhUIoiSIQNwMAIAAgECAAKQMAIhF8IBBC/////w+DIBFCAYZC/v///x+DfnwiEDcDACAPIBAgDykDAIVCMIkiEDcDACAKIBAgCikDACIRfCAQQv////8PgyARQgGGQv7///8fg358IhA3AwAgBSAQIAUpAwCFQgGJNwMAIAEgBikDACIQIAEpAwAiEXwgEUIBhkL+////H4MgEEL/////D4N+fCIQNwMAIAwgECAMKQMAhUIgiSIQNwMAIAsgECALKQMAIhF8IBFCAYZC/v///x+DIBBC/////w+DfnwiEDcDACAGIBAgBikDAIVCKIkiEDcDACABIBAgASkDACIRfCAQQv////8PgyARQgGGQv7///8fg358IhA3AwAgDCAQIAwpAwCFQjCJIhA3AwAgCyAQIAspAwAiEXwgEEL/////D4MgEUIBhkL+////H4N+fCIQNwMAIAYgECAGKQMAhUIBiTcDACACIAcpAwAiECACKQMAIhF8IBFCAYZC/v///x+DIBBC/////w+DfnwiEDcDACANIBAgDSkDAIVCIIkiEDcDACAIIBAgCCkDACIRfCARQgGGQv7///8fgyAQQv////8Pg358IhA3AwAgByAQIAcpAwCFQiiJIhA3AwAgAiAQIAIpAwAiEXwgEEL/////D4MgEUIBhkL+////H4N+fCIQNwMAIA0gECANKQMAhUIwiSIQNwMAIAggECAIKQMAIhF8IBBC/////w+DIBFCAYZC/v///x+DfnwiEDcDACAHIBAgBykDAIVCAYk3AwAgAyAEKQMAIhAgAykDACIRfCARQgGGQv7///8fgyAQQv////8Pg358IhA3AwAgDiAQIA4pAwCFQiCJIhA3AwAgCSAQIAkpAwAiEXwgEUIBhkL+////H4MgEEL/////D4N+fCIQNwMAIAQgECAEKQMAhUIoiSIQNwMAIAMgECADKQMAIhF8IBBC/////w+DIBFCAYZC/v///x+DfnwiEDcDACAOIBAgDikDAIVCMIkiEDcDACAJIBAgCSkDACIRfCAQQv////8PgyARQgGGQv7///8fg358IhA3AwAgBCAQIAQpAwCFQgGJNwMAC98aAQN/QQAhBEEAIAIpAwAgASkDAIU3A5AIQQAgAikDCCABKQMIhTcDmAhBACACKQMQIAEpAxCFNwOgCEEAIAIpAxggASkDGIU3A6gIQQAgAikDICABKQMghTcDsAhBACACKQMoIAEpAyiFNwO4CEEAIAIpAzAgASkDMIU3A8AIQQAgAikDOCABKQM4hTcDyAhBACACKQNAIAEpA0CFNwPQCEEAIAIpA0ggASkDSIU3A9gIQQAgAikDUCABKQNQhTcD4AhBACACKQNYIAEpA1iFNwPoCEEAIAIpA2AgASkDYIU3A/AIQQAgAikDaCABKQNohTcD+AhBACACKQNwIAEpA3CFNwOACUEAIAIpA3ggASkDeIU3A4gJQQAgAikDgAEgASkDgAGFNwOQCUEAIAIpA4gBIAEpA4gBhTcDmAlBACACKQOQASABKQOQAYU3A6AJQQAgAikDmAEgASkDmAGFNwOoCUEAIAIpA6ABIAEpA6ABhTcDsAlBACACKQOoASABKQOoAYU3A7gJQQAgAikDsAEgASkDsAGFNwPACUEAIAIpA7gBIAEpA7gBhTcDyAlBACACKQPAASABKQPAAYU3A9AJQQAgAikDyAEgASkD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",K="e4cdc523",$={name:L,data:G,hash:K},te="blake2b",re="AGFzbQEAAAABEQRgAAF/YAJ/fwBgAX8AYAAAAwoJAAECAwECAgABBQQBAQICBg4CfwFBsIsFC38AQYAICwdwCAZtZW1vcnkCAA5IYXNoX0dldEJ1ZmZlcgAACkhhc2hfRmluYWwAAwlIYXNoX0luaXQABQtIYXNoX1VwZGF0ZQAGDUhhc2hfR2V0U3RhdGUABw5IYXNoX0NhbGN1bGF0ZQAIClNUQVRFX1NJWkUDAQrTOAkFAEGACQvrAgIFfwF+AkAgAUEBSA0AAkACQAJAIAFBgAFBACgC4IoBIgJrIgNKDQAgASEEDAELQQBBADYC4IoBAkAgAkH/AEoNACACQeCJAWohBSAAIQRBACEGA0AgBSAELQAAOgAAIARBAWohBCAFQQFqIQUgAyAGQQFqIgZB/wFxSg0ACwtBAEEAKQPAiQEiB0KAAXw3A8CJAUEAQQApA8iJASAHQv9+Vq18NwPIiQFB4IkBEAIgACADaiEAAkAgASADayIEQYEBSA0AIAIgAWohBQNAQQBBACkDwIkBIgdCgAF8NwPAiQFBAEEAKQPIiQEgB0L/flatfDcDyIkBIAAQAiAAQYABaiEAIAVBgH9qIgVBgAJLDQALIAVBgH9qIQQMAQsgBEEATA0BC0EAIQUDQCAFQQAoAuCKAWpB4IkBaiAAIAVqLQAAOgAAIAQgBUEBaiIFQf8BcUoNAAsLQQBBACgC4IoBIARqNgLgigELC78uASR+QQBBACkD0IkBQQApA7CJASIBQQApA5CJAXwgACkDICICfCIDhULr+obav7X2wR+FQiCJIgRCq/DT9K/uvLc8fCIFIAGFQiiJIgYgA3wgACkDKCIBfCIHIASFQjCJIgggBXwiCSAGhUIBiSIKQQApA8iJAUEAKQOoiQEiBEEAKQOIiQF8IAApAxAiA3wiBYVCn9j52cKR2oKbf4VCIIkiC0K7zqqm2NDrs7t/fCIMIASFQiiJIg0gBXwgACkDGCIEfCIOfCAAKQNQIgV8Ig9BACkDwIkBQQApA6CJASIQQQApA4CJASIRfCAAKQMAIgZ8IhKFQtGFmu/6z5SH0QCFQiCJIhNCiJLznf/M+YTqAHwiFCAQhUIoiSIVIBJ8IAApAwgiEHwiFiAThUIwiSIXhUIgiSIYQQApA9iJAUEAKQO4iQEiE0EAKQOYiQF8IAApAzAiEnwiGYVC+cL4m5Gjs/DbAIVCIIkiGkLx7fT4paf9p6V/fCIbIBOFQiiJIhwgGXwgACkDOCITfCIZIBqFQjCJIhogG3wiG3wiHSAKhUIoiSIeIA98IAApA1giCnwiDyAYhUIwiSIYIB18Ih0gDiALhUIwiSIOIAx8Ih8gDYVCAYkiDCAWfCAAKQNAIgt8Ig0gGoVCIIkiFiAJfCIaIAyFQiiJIiAgDXwgACkDSCIJfCIhIBaFQjCJIhYgGyAchUIBiSIMIAd8IAApA2AiB3wiDSAOhUIgiSIOIBcgFHwiFHwiFyAMhUIoiSIbIA18IAApA2giDHwiHCAOhUIwiSIOIBd8IhcgG4VCAYkiGyAZIBQgFYVCAYkiFHwgACkDcCINfCIVIAiFQiCJIhkgH3wiHyAUhUIoiSIUIBV8IAApA3giCHwiFXwgDHwiIoVCIIkiI3wiJCAbhUIoiSIbICJ8IBJ8IiIgFyAYIBUgGYVCMIkiFSAffCIZIBSFQgGJIhQgIXwgDXwiH4VCIIkiGHwiFyAUhUIoiSIUIB98IAV8Ih8gGIVCMIkiGCAXfCIXIBSFQgGJIhR8IAF8IiEgFiAafCIWIBUgHSAehUIBiSIaIBx8IAl8IhyFQiCJIhV8Ih0gGoVCKIkiGiAcfCAIfCIcIBWFQjCJIhWFQiCJIh4gGSAOIBYgIIVCAYkiFiAPfCACfCIPhUIgiSIOfCIZIBaFQiiJIhYgD3wgC3wiDyAOhUIwiSIOIBl8Ihl8IiAgFIVCKIkiFCAhfCAEfCIhIB6FQjCJIh4gIHwiICAiICOFQjCJIiIgJHwiIyAbhUIBiSIbIBx8IAp8IhwgDoVCIIkiDiAXfCIXIBuFQiiJIhsgHHwgE3wiHCAOhUIwiSIOIBkgFoVCAYkiFiAffCAQfCIZICKFQiCJIh8gFSAdfCIVfCIdIBaFQiiJIhYgGXwgB3wiGSAfhUIwiSIfIB18Ih0gFoVCAYkiFiAVIBqFQgGJIhUgD3wgBnwiDyAYhUIgiSIYICN8IhogFYVCKIkiFSAPfCADfCIPfCAHfCIihUIgiSIjfCIkIBaFQiiJIhYgInwgBnwiIiAjhUIwiSIjICR8IiQgFoVCAYkiFiAOIBd8Ig4gDyAYhUIwiSIPICAgFIVCAYkiFCAZfCAKfCIXhUIgiSIYfCIZIBSFQiiJIhQgF3wgC3wiF3wgBXwiICAPIBp8Ig8gHyAOIBuFQgGJIg4gIXwgCHwiGoVCIIkiG3wiHyAOhUIoiSIOIBp8IAx8IhogG4VCMIkiG4VCIIkiISAdIB4gDyAVhUIBiSIPIBx8IAF8IhWFQiCJIhx8Ih0gD4VCKIkiDyAVfCADfCIVIByFQjCJIhwgHXwiHXwiHiAWhUIoiSIWICB8IA18IiAgIYVCMIkiISAefCIeIBogFyAYhUIwiSIXIBl8IhggFIVCAYkiFHwgCXwiGSAchUIgiSIaICR8IhwgFIVCKIkiFCAZfCACfCIZIBqFQjCJIhogHSAPhUIBiSIPICJ8IAR8Ih0gF4VCIIkiFyAbIB98Iht8Ih8gD4VCKIkiDyAdfCASfCIdIBeFQjCJIhcgH3wiHyAPhUIBiSIPIBsgDoVCAYkiDiAVfCATfCIVICOFQiCJIhsgGHwiGCAOhUIoiSIOIBV8IBB8IhV8IAx8IiKFQiCJIiN8IiQgD4VCKIkiDyAifCAHfCIiICOFQjCJIiMgJHwiJCAPhUIBiSIPIBogHHwiGiAVIBuFQjCJIhUgHiAWhUIBiSIWIB18IAR8IhuFQiCJIhx8Ih0gFoVCKIkiFiAbfCAQfCIbfCABfCIeIBUgGHwiFSAXIBogFIVCAYkiFCAgfCATfCIYhUIgiSIXfCIaIBSFQiiJIhQgGHwgCXwiGCAXhUIwiSIXhUIgiSIgIB8gISAVIA6FQgGJIg4gGXwgCnwiFYVCIIkiGXwiHyAOhUIoiSIOIBV8IA18IhUgGYVCMIkiGSAffCIffCIhIA+FQiiJIg8gHnwgBXwiHiAghUIwiSIgICF8IiEgGyAchUIwiSIbIB18IhwgFoVCAYkiFiAYfCADfCIYIBmFQiCJIhkgJHwiHSAWhUIoiSIWIBh8IBJ8IhggGYVCMIkiGSAfIA6FQgGJIg4gInwgAnwiHyAbhUIgiSIbIBcgGnwiF3wiGiAOhUIoiSIOIB98IAZ8Ih8gG4VCMIkiGyAafCIaIA6FQgGJIg4gFSAXIBSFQgGJIhR8IAh8IhUgI4VCIIkiFyAcfCIcIBSFQiiJIhQgFXwgC3wiFXwgBXwiIoVCIIkiI3wiJCAOhUIoiSIOICJ8IAh8IiIgGiAgIBUgF4VCMIkiFSAcfCIXIBSFQgGJIhQgGHwgCXwiGIVCIIkiHHwiGiAUhUIoiSIUIBh8IAZ8IhggHIVCMIkiHCAafCIaIBSFQgGJIhR8IAR8IiAgGSAdfCIZIBUgISAPhUIBiSIPIB98IAN8Ih2FQiCJIhV8Ih8gD4VCKIkiDyAdfCACfCIdIBWFQjCJIhWFQiCJIiEgFyAbIBkgFoVCAYkiFiAefCABfCIZhUIgiSIbfCIXIBaFQiiJIhYgGXwgE3wiGSAbhUIwiSIbIBd8Ihd8Ih4gFIVCKIkiFCAgfCAMfCIgICGFQjCJIiEgHnwiHiAiICOFQjCJIiIgJHwiIyAOhUIBiSIOIB18IBJ8Ih0gG4VCIIkiGyAafCIaIA6FQiiJIg4gHXwgC3wiHSAbhUIwiSIbIBcgFoVCAYkiFiAYfCANfCIXICKFQiCJIhggFSAffCIVfCIfIBaFQiiJIhYgF3wgEHwiFyAYhUIwiSIYIB98Ih8gFoVCAYkiFiAVIA+FQgGJIg8gGXwgCnwiFSAchUIgiSIZICN8IhwgD4VCKIkiDyAVfCAHfCIVfCASfCIihUIgiSIjfCIkIBaFQiiJIhYgInwgBXwiIiAjhUIwiSIjICR8IiQgFoVCAYkiFiAbIBp8IhogFSAZhUIwiSIVIB4gFIVCAYkiFCAXfCADfCIXhUIgiSIZfCIbIBSFQiiJIhQgF3wgB3wiF3wgAnwiHiAVIBx8IhUgGCAaIA6FQgGJIg4gIHwgC3wiGoVCIIkiGHwiHCAOhUIoiSIOIBp8IAR8IhogGIVCMIkiGIVCIIkiICAfICEgFSAPhUIBiSIPIB18IAZ8IhWFQiCJIh18Ih8gD4VCKIkiDyAVfCAKfCIVIB2FQjCJIh0gH3wiH3wiISAWhUIoiSIWIB58IAx8Ih4gIIVCMIkiICAhfCIhIBogFyAZhUIwiSIXIBt8IhkgFIVCAYkiFHwgEHwiGiAdhUIgiSIbICR8Ih0gFIVCKIkiFCAafCAJfCIaIBuFQjCJIhsgHyAPhUIBiSIPICJ8IBN8Ih8gF4VCIIkiFyAYIBx8Ihh8IhwgD4VCKIkiDyAffCABfCIfIBeFQjCJIhcgHHwiHCAPhUIBiSIPIBggDoVCAYkiDiAVfCAIfCIVICOFQiCJIhggGXwiGSAOhUIoiSIOIBV8IA18IhV8IA18IiKFQiCJIiN8IiQgD4VCKIkiDyAifCAMfCIiICOFQjCJIiMgJHwiJCAPhUIBiSIPIBsgHXwiGyAVIBiFQjCJIhUgISAWhUIBiSIWIB98IBB8IhiFQiCJIh18Ih8gFoVCKIkiFiAYfCAIfCIYfCASfCIhIBUgGXwiFSAXIBsgFIVCAYkiFCAefCAHfCIZhUIgiSIXfCIbIBSFQiiJIhQgGXwgAXwiGSAXhUIwiSIXhUIgiSIeIBwgICAVIA6FQgGJIg4gGnwgAnwiFYVCIIkiGnwiHCAOhUIoiSIOIBV8IAV8IhUgGoVCMIkiGiAcfCIcfCIgIA+FQiiJIg8gIXwgBHwiISAehUIwiSIeICB8IiAgGCAdhUIwiSIYIB98Ih0gFoVCAYkiFiAZfCAGfCIZIBqFQiCJIhogJHwiHyAWhUIoiSIWIBl8IBN8IhkgGoVCMIkiGiAcIA6FQgGJIg4gInwgCXwiHCAYhUIgiSIYIBcgG3wiF3wiGyAOhUIoiSIOIBx8IAN8IhwgGIVCMIkiGCAbfCIbIA6FQgGJIg4gFSAXIBSFQgGJIhR8IAt8IhUgI4VCIIkiFyAdfCIdIBSFQiiJIhQgFXwgCnwiFXwgBHwiIoVCIIkiI3wiJCAOhUIoiSIOICJ8IAl8IiIgGyAeIBUgF4VCMIkiFSAdfCIXIBSFQgGJIhQgGXwgDHwiGYVCIIkiHXwiGyAUhUIoiSIUIBl8IAp8IhkgHYVCMIkiHSAbfCIbIBSFQgGJIhR8IAN8Ih4gGiAffCIaIBUgICAPhUIBiSIPIBx8IAd8IhyFQiCJIhV8Ih8gD4VCKIkiDyAcfCAQfCIcIBWFQjCJIhWFQiCJIiAgFyAYIBogFoVCAYkiFiAhfCATfCIahUIgiSIYfCIXIBaFQiiJIhYgGnwgDXwiGiAYhUIwiSIYIBd8Ihd8IiEgFIVCKIkiFCAefCAFfCIeICCFQjCJIiAgIXwiISAiICOFQjCJIiIgJHwiIyAOhUIBiSIOIBx8IAt8IhwgGIVCIIkiGCAbfCIbIA6FQiiJIg4gHHwgEnwiHCAYhUIwiSIYIBcgFoVCAYkiFiAZfCABfCIXICKFQiCJIhkgFSAffCIVfCIfIBaFQiiJIhYgF3wgBnwiFyAZhUIwiSIZIB98Ih8gFoVCAYkiFiAVIA+FQgGJIg8gGnwgCHwiFSAdhUIgiSIaICN8Ih0gD4VCKIkiDyAVfCACfCIVfCANfCIihUIgiSIjfCIkIBaFQiiJIhYgInwgCXwiIiAjhUIwiSIjICR8IiQgFoVCAYkiFiAYIBt8IhggFSAahUIwiSIVICEgFIVCAYkiFCAXfCASfCIXhUIgiSIafCIbIBSFQiiJIhQgF3wgCHwiF3wgB3wiISAVIB18IhUgGSAYIA6FQgGJIg4gHnwgBnwiGIVCIIkiGXwiHSAOhUIoiSIOIBh8IAt8IhggGYVCMIkiGYVCIIkiHiAfICAgFSAPhUIBiSIPIBx8IAp8IhWFQiCJIhx8Ih8gD4VCKIkiDyAVfCAEfCIVIByFQjCJIhwgH3wiH3wiICAWhUIoiSIWICF8IAN8IiEgHoVCMIkiHiAgfCIgIBggFyAahUIwiSIXIBt8IhogFIVCAYkiFHwgBXwiGCAchUIgiSIbICR8IhwgFIVCKIkiFCAYfCABfCIYIBuFQjCJIhsgHyAPhUIBiSIPICJ8IAx8Ih8gF4VCIIkiFyAZIB18Ihl8Ih0gD4VCKIkiDyAffCATfCIfIBeFQjCJIhcgHXwiHSAPhUIBiSIPIBkgDoVCAYkiDiAVfCAQfCIVICOFQiCJIhkgGnwiGiAOhUIoiSIOIBV8IAJ8IhV8IBN8IiKFQiCJIiN8IiQgD4VCKIkiDyAifCASfCIiICOFQjCJIiMgJHwiJCAPhUIBiSIPIBsgHHwiGyAVIBmFQjCJIhUgICAWhUIBiSIWIB98IAt8IhmFQiCJIhx8Ih8gFoVCKIkiFiAZfCACfCIZfCAJfCIgIBUgGnwiFSAXIBsgFIVCAYkiFCAhfCAFfCIahUIgiSIXfCIbIBSFQiiJIhQgGnwgA3wiGiAXhUIwiSIXhUIgiSIhIB0gHiAVIA6FQgGJIg4gGHwgEHwiFYVCIIkiGHwiHSAOhUIoiSIOIBV8IAF8IhUgGIVCMIkiGCAdfCIdfCIeIA+FQiiJIg8gIHwgDXwiICAhhUIwiSIhIB58Ih4gGSAchUIwiSIZIB98IhwgFoVCAYkiFiAafCAIfCIaIBiFQiCJIhggJHwiHyAWhUIoiSIWIBp8IAp8IhogGIVCMIkiGCAdIA6FQgGJIg4gInwgBHwiHSAZhUIgiSIZIBcgG3wiF3wiGyAOhUIoiSIOIB18IAd8Ih0gGYVCMIkiGSAbfCIbIA6FQgGJIg4gFSAXIBSFQgGJIhR8IAx8IhUgI4VCIIkiFyAcfCIcIBSFQiiJIhQgFXwgBnwiFXwgEnwiIoVCIIkiI3wiJCAOhUIoiSIOICJ8IBN8IiIgGyAhIBUgF4VCMIkiFSAcfCIXIBSFQgGJIhQgGnwgBnwiGoVCIIkiHHwiGyAUhUIoiSIUIBp8IBB8IhogHIVCMIkiHCAbfCIbIBSFQgGJIhR8IA18IiEgGCAffCIYIBUgHiAPhUIBiSIPIB18IAJ8Ih2FQiCJIhV8Ih4gD4VCKIkiDyAdfCABfCIdIBWFQjCJIhWFQiCJIh8gFyAZIBggFoVCAYkiFiAgfCADfCIYhUIgiSIZfCIXIBaFQiiJIhYgGHwgBHwiGCAZhUIwiSIZIBd8Ihd8IiAgFIVCKIkiFCAhfCAIfCIhIB+FQjCJIh8gIHwiICAiICOFQjCJIiIgJHwiIyAOhUIBiSIOIB18IAd8Ih0gGYVCIIkiGSAbfCIbIA6FQiiJIg4gHXwgDHwiHSAZhUIwiSIZIBcgFoVCAYkiFiAafCALfCIXICKFQiCJIhogFSAefCIVfCIeIBaFQiiJIhYgF3wgCXwiFyAahUIwiSIaIB58Ih4gFoVCAYkiFiAVIA+FQgGJIg8gGHwgBXwiFSAchUIgiSIYICN8IhwgD4VCKIkiDyAVfCAKfCIVfCACfCIChUIgiSIifCIjIBaFQiiJIhYgAnwgC3wiAiAihUIwiSILICN8IiIgFoVCAYkiFiAZIBt8IhkgFSAYhUIwiSIVICAgFIVCAYkiFCAXfCANfCINhUIgiSIXfCIYIBSFQiiJIhQgDXwgBXwiBXwgEHwiECAVIBx8Ig0gGiAZIA6FQgGJIg4gIXwgDHwiDIVCIIkiFXwiGSAOhUIoiSIOIAx8IBJ8IhIgFYVCMIkiDIVCIIkiFSAeIB8gDSAPhUIBiSINIB18IAl8IgmFQiCJIg98IhogDYVCKIkiDSAJfCAIfCIJIA+FQjCJIgggGnwiD3wiGiAWhUIoiSIWIBB8IAd8IhAgEYUgDCAZfCIHIA6FQgGJIgwgCXwgCnwiCiALhUIgiSILIAUgF4VCMIkiBSAYfCIJfCIOIAyFQiiJIgwgCnwgE3wiEyALhUIwiSIKIA58IguFNwOAiQFBACADIAYgDyANhUIBiSINIAJ8fCICIAWFQiCJIgUgB3wiBiANhUIoiSIHIAJ8fCICQQApA4iJAYUgBCABIBIgCSAUhUIBiSIDfHwiASAIhUIgiSISICJ8IgkgA4VCKIkiAyABfHwiASAShUIwiSIEIAl8IhKFNwOIiQFBACATQQApA5CJAYUgECAVhUIwiSIQIBp8IhOFNwOQiQFBACABQQApA5iJAYUgAiAFhUIwiSICIAZ8IgGFNwOYiQFBACASIAOFQgGJQQApA6CJAYUgAoU3A6CJAUEAIBMgFoVCAYlBACkDqIkBhSAKhTcDqIkBQQAgASAHhUIBiUEAKQOwiQGFIASFNwOwiQFBACALIAyFQgGJQQApA7iJAYUgEIU3A7iJAQvdAgUBfwF+AX8BfgJ/IwBBwABrIgAkAAJAQQApA9CJAUIAUg0AQQBBACkDwIkBIgFBACgC4IoBIgKsfCIDNwPAiQFBAEEAKQPIiQEgAyABVK18NwPIiQECQEEALQDoigFFDQBBAEJ/NwPYiQELQQBCfzcD0IkBAkAgAkH/AEoNAEEAIQQDQCACIARqQeCJAWpBADoAACAEQQFqIgRBgAFBACgC4IoBIgJrSA0ACwtB4IkBEAIgAEEAKQOAiQE3AwAgAEEAKQOIiQE3AwggAEEAKQOQiQE3AxAgAEEAKQOYiQE3AxggAEEAKQOgiQE3AyAgAEEAKQOoiQE3AyggAEEAKQOwiQE3AzAgAEEAKQO4iQE3AzhBACgC5IoBIgVBAUgNAEEAIQRBACECA0AgBEGACWogACAEai0AADoAACAEQQFqIQQgBSACQQFqIgJB/wFxSg0ACwsgAEHAAGokAAv9AwMBfwF+AX8jAEGAAWsiAiQAQQBBgQI7AfKKAUEAIAE6APGKAUEAIAA6APCKAUGQfiEAA0AgAEGAiwFqQgA3AAAgAEH4igFqQgA3AAAgAEHwigFqQgA3AAAgAEEYaiIADQALQQAhAEEAQQApA/CKASIDQoiS853/zPmE6gCFNwOAiQFBAEEAKQP4igFCu86qptjQ67O7f4U3A4iJAUEAQQApA4CLAUKr8NP0r+68tzyFNwOQiQFBAEEAKQOIiwFC8e30+KWn/aelf4U3A5iJAUEAQQApA5CLAULRhZrv+s+Uh9EAhTcDoIkBQQBBACkDmIsBQp/Y+dnCkdqCm3+FNwOoiQFBAEEAKQOgiwFC6/qG2r+19sEfhTcDsIkBQQBBACkDqIsBQvnC+JuRo7Pw2wCFNwO4iQFBACADp0H/AXE2AuSKAQJAIAFBAUgNACACQgA3A3ggAkIANwNwIAJCADcDaCACQgA3A2AgAkIANwNYIAJCADcDUCACQgA3A0ggAkIANwNAIAJCADcDOCACQgA3AzAgAkIANwMoIAJCADcDICACQgA3AxggAkIANwMQIAJCADcDCCACQgA3AwBBACEEA0AgAiAAaiAAQYAJai0AADoAACAAQQFqIQAgBEEBaiIEQf8BcSABSA0ACyACQYABEAELIAJBgAFqJAALEgAgAEEDdkH/P3EgAEEQdhAECwkAQYAJIAAQAQsGAEGAiQELGwAgAUEDdkH/P3EgAUEQdhAEQYAJIAAQARADCwsLAQBBgAgLBPAAAAA=",ee="c6f286e6",Z={name:te,data:re,hash:ee};let me=new o,le=null;function Ae(S){return!Number.isInteger(S)||S<8||S>512||S%8!==0?new Error("Invalid variant! Valid values: 8, 16, ..., 512"):null}function ve(S,q){return S|q<<16}function qe(S,q=512,M=null){if(Ae(q))return Promise.reject(Ae(q));let Y=null,ie=q;if(M!==null){if(Y=C(M),Y.length>64)return Promise.reject(new Error("Max key length is 64 bytes"));ie=ve(q,Y.length)}let ae=q/8;if(le===null||le.hashLength!==ae)return E(me,Z,ae).then(ge=>(le=ge,ie>512&&le.writeMemory(Y),le.calculate(S,ie)));try{ie>512&&le.writeMemory(Y);let ge=le.calculate(S,ie);return Promise.resolve(ge)}catch(ge){return Promise.reject(ge)}}function _e(S=512,q=null){if(Ae(S))return Promise.reject(Ae(S));let M=null,Y=S;if(q!==null){if(M=C(q),M.length>64)return Promise.reject(new Error("Max key length is 64 bytes"));Y=ve(S,M.length)}let ie=S/8;return v(Z,ie).then(ae=>{Y>512&&ae.writeMemory(M),ae.init(Y);let ge={init:Y>512?()=>(ae.writeMemory(M),ae.init(Y),ge):()=>(ae.init(Y),ge),update:xe=>(ae.update(xe),ge),digest:xe=>ae.digest(xe),save:()=>ae.save(),load:xe=>(ae.load(xe),ge),blockSize:128,digestSize:ie};return ge})}function se(S,q,M){let Y=[`m=${q.memorySize}`,`t=${q.iterations}`,`p=${q.parallelism}`].join(",");return`$argon2${q.hashType}$v=19$${Y}$${_(S,!1)}$${_(M,!1)}`}let it=new DataView(new ArrayBuffer(4));function ce(S){return it.setInt32(0,S,!0),new Uint8Array(it.buffer)}function dr(S,q,M){return s(this,void 0,void 0,function*(){if(M<=64){let Je=yield _e(M*8);return Je.update(ce(M)),Je.update(q),Je.digest("binary")}let Y=Math.ceil(M/32)-2,ie=new Uint8Array(M);S.init(),S.update(ce(M)),S.update(q);let ae=S.digest("binary");ie.set(ae.subarray(0,32),0);for(let Je=1;Je<Y;Je++)S.init(),S.update(ae),ae=S.digest("binary"),ie.set(ae.subarray(0,32),Je*32);let ge=M-32*Y,xe;return ge===64?(xe=S,xe.init()):xe=yield _e(ge*8),xe.update(ae),ae=xe.digest("binary"),ie.set(ae.subarray(0,ge),Y*32),ie})}function Or(S){switch(S){case"d":return 0;case"i":return 1;default:return 2}}function ct(S){return s(this,void 0,void 0,function*(){var q;let{parallelism:M,iterations:Y,hashLength:ie}=S,ae=C(S.password),ge=C(S.salt),xe=19,Je=Or(S.hashType),{memorySize:qt}=S,jt=C((q=S.secret)!==null&&q!==void 0?q:""),[rr,Ot]=yield Promise.all([v($,1024),_e(512)]);rr.setMemorySize(qt*1024+1024);let $i=new Uint8Array(24),Hr=new DataView($i.buffer);Hr.setInt32(0,M,!0),Hr.setInt32(4,ie,!0),Hr.setInt32(8,qt,!0),Hr.setInt32(12,Y,!0),Hr.setInt32(16,xe,!0),Hr.setInt32(20,Je,!0),rr.writeMemory($i,qt*1024),Ot.init(),Ot.update($i),Ot.update(ce(ae.length)),Ot.update(ae),Ot.update(ce(ge.length)),Ot.update(ge),Ot.update(ce(jt.length)),Ot.update(jt),Ot.update(ce(0));let vo=Math.floor(qt/(M*4))*4,wn=new Uint8Array(72),ko=Ot.digest("binary");wn.set(ko);for(let So=0;So<M;So++){wn.set(ce(0),64),wn.set(ce(So),68);let je=So*vo,nt=yield dr(Ot,wn,1024);rr.writeMemory(nt,je*1024),je+=1,wn.set(ce(1),64),nt=yield dr(Ot,wn,1024),rr.writeMemory(nt,je*1024)}let ml=new Uint8Array(1024);g(ml,rr.calculate(new Uint8Array([]),qt));let Ss=yield dr(Ot,ml,ie);if(S.outputType==="hex"){let So=new Uint8Array(ie*2);return w(So,Ss,ie)}return S.outputType==="encoded"?se(ge,S,Ss):Ss})}let we=S=>{var q;if(!S||typeof S!="object")throw new Error("Invalid options parameter. It requires an object.");if(!S.password)throw new Error("Password must be specified");if(S.password=C(S.password),S.password.length<1)throw new Error("Password must be specified");if(!S.salt)throw new Error("Salt must be specified");if(S.salt=C(S.salt),S.salt.length<8)throw new Error("Salt should be at least 8 bytes long");if(S.secret=C((q=S.secret)!==null&&q!==void 0?q:""),!Number.isInteger(S.iterations)||S.iterations<1)throw new Error("Iterations should be a positive number");if(!Number.isInteger(S.parallelism)||S.parallelism<1)throw new Error("Parallelism should be a positive number");if(!Number.isInteger(S.hashLength)||S.hashLength<4)throw new Error("Hash length should be at least 4 bytes.");if(!Number.isInteger(S.memorySize))throw new Error("Memory size should be specified.");if(S.memorySize<8*S.parallelism)throw new Error("Memory size should be at least 8 * parallelism.");if(S.outputType===void 0&&(S.outputType="hex"),!["hex","binary","encoded"].includes(S.outputType))throw new Error(`Insupported output type ${S.outputType}. Valid values: ['hex', 'binary', 'encoded']`)};function Ee(S){return s(this,void 0,void 0,function*(){return we(S),ct(Object.assign(Object.assign({},S),{hashType:"i"}))})}function Gi(S){return s(this,void 0,void 0,function*(){return we(S),ct(Object.assign(Object.assign({},S),{hashType:"id"}))})}function xo(S){return s(this,void 0,void 0,function*(){return we(S),ct(Object.assign(Object.assign({},S),{hashType:"d"}))})}let Se=(S,q,M)=>{let Y=/^\$argon2(id|i|d)\$v=([0-9]+)\$((?:[mtp]=[0-9]+,){2}[mtp]=[0-9]+)\$([A-Za-z0-9+/]+)\$([A-Za-z0-9+/]+)$/,ie=q.match(Y);if(!ie)throw new Error("Invalid hash");let[,ae,ge,xe,Je,qt]=ie;if(ge!=="19")throw new Error(`Unsupported version: ${ge}`);let jt={},rr={m:"memorySize",p:"parallelism",t:"iterations"};for(let Ot of xe.split(",")){let[$i,Hr]=Ot.split("=");jt[rr[$i]]=Number(Hr)}return Object.assign(Object.assign({},jt),{password:S,secret:M,hashType:ae,salt:U(Je),hashLength:R(qt),outputType:"encoded"})},Dt=S=>{if(!S||typeof S!="object")throw new Error("Invalid options parameter. It requires an object.");if(S.hash===void 0||typeof S.hash!="string")throw new Error("Hash should be specified")};function Bs(S){return s(this,void 0,void 0,function*(){Dt(S);let q=Se(S.password,S.hash,S.secret);we(q);let M=S.hash.lastIndexOf("$")+1;return(yield ct(q)).substring(M)===S.hash.substring(M)})}var Ce="blake2s",zi="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",ii="5c0ff166",Ir={name:Ce,data:zi,hash:ii};let tr=new o,ur=null;function Qe(S){return!Number.isInteger(S)||S<8||S>256||S%8!==0?new Error("Invalid variant! Valid values: 8, 16, ..., 256"):null}function be(S,q){return S|q<<16}function Al(S,q=256,M=null){if(Qe(q))return Promise.reject(Qe(q));let Y=null,ie=q;if(M!==null){if(Y=C(M),Y.length>32)return Promise.reject(new Error("Max key length is 32 bytes"));ie=be(q,Y.length)}let ae=q/8;if(ur===null||ur.hashLength!==ae)return E(tr,Ir,ae).then(ge=>(ur=ge,ie>512&&ur.writeMemory(Y),ur.calculate(S,ie)));try{ie>512&&ur.writeMemory(Y);let ge=ur.calculate(S,ie);return Promise.resolve(ge)}catch(ge){return Promise.reject(ge)}}function Ai(S=256,q=null){if(Qe(S))return Promise.reject(Qe(S));let M=null,Y=S;if(q!==null){if(M=C(q),M.length>32)return Promise.reject(new Error("Max key length is 32 bytes"));Y=be(S,M.length)}let ie=S/8;return v(Ir,ie).then(ae=>{Y>512&&ae.writeMemory(M),ae.init(Y);let ge={init:Y>512?()=>(ae.writeMemory(M),ae.init(Y),ge):()=>(ae.init(Y),ge),update:xe=>(ae.update(xe),ge),digest:xe=>ae.digest(xe),save:()=>ae.save(),load:xe=>(ae.load(xe),ge),blockSize:64,digestSize:ie};return ge})}var Mr="blake3",Mn="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IQEgAkFAaiICQcAASw0ACwsCQEHAACAHQf8BcSIGayIFIAIgBSACSRsiCUUNACAJQQNxIQtBACEFAkAgCUEESQ0AIAAgBmohByAJQfwAcSEIQQAhBQNAIAcgBWoiAkEoaiABIAVqIgotAAA6AAAgAkEpaiAKQQFqLQAAOgAAIAJBKmogCkECai0AADoAACACQStqIApBA2otAAA6AAAgCCAFQQRqIgVHDQALCwJAIAtFDQAgASAFaiEBIAUgBmogAGpBKGohBQNAIAUgAS0AADoAACABQQFqIQEgBUEBaiEFIAtBf2oiCw0ACwsgAC0AaCEHCyAAIAcgCWo6AGggA0HAAGokAAveAwQFfwN+BX8GfiMAQdABayIBJAACQCAAe6ciAkEALQCQigEiA08NAEEALQCKigFBBHIhBCABQShqIQVBACkDmIkBIQBBACkDkIkBIQZBACkDiIkBIQdBACkDgIkBIQggAyEJA0AgASAANwMYIAEgBjcDECABIAc3AwggASAINwMAIAEgA0EFdCIDQdGJAWoiCikDADcDKCABIANB2YkBaiILKQMANwMwIAEgA0HhiQFqIgwpAwA3AzggASADQemJAWoiDSkDADcDQCABIANB8YkBaikDADcDSCABIANB+YkBaikDADcDUCABIANBgYoBaikDADcDWCADQYmKAWopAwAhDiABQcAAOgBoIAEgDjcDYCABQgA3AyAgASAEOgBpIAEgADcDiAEgASAGNwOAASABIAc3A3ggASAINwNwIAFBkAFqIAFB8ABqIAVBwABCACAEQf8BcRACIAEpA7ABIQ4gASkDkAEhDyABKQO4ASEQIAEpA5gBIREgASkDwAEhEiABKQOgASETIA0gASkDyAEgASkDqAGFNwMAIAwgEiAThTcDACALIBAgEYU3AwAgCiAOIA+FNwMAIAlBf2oiCUH/AXEiAyACSw0AC0EAIAk6AJCKAQsgAUHQAWokAAvHCQIKfwV+IwBB4AJrIgUkAAJAAkAgAUGACEsNACAFIAA2AvwBIAVB/AFqIAFBgAhGIgZBECACQQEgA0EBQQIgBBABIAZBCnQiByABTw0BIAVB4ABqIgZCADcDACAFQdgAaiIIQgA3AwAgBUHQAGoiCUIANwMAIAVByABqIgpCADcDACAFQcAAaiILQgA3AwAgBUE4aiIMQgA3AwAgBUEwaiINQgA3AwAgBSADOgBqIAVCADcDKCAFQQA7AWggBUEAKQOAiQE3AwAgBUEAKQOIiQE3AwggBUEAKQOQiQE3AxAgBUEAKQOYiQE3AxggBSABQYAIRiIOrSACfDcDICAFIAAgB2pBACABIA4bEAQgBUGIAWpBMGogDSkDADcDACAFQYgBakE4aiAMKQMANwMAIAUgBSkDACIPNwOIASAFIAUpAwgiEDcDkAEgBSAFKQMQIhE3A5gBIAUgBSkDGCISNwOgASAFIAUpAyg3A7ABIAUtAGohACAFLQBpIQcgBSkDICECIAUtAGghASAFQYgBakHAAGogCykDADcDACAFQYgBakHIAGogCikDADcDACAFQYgBakHQAGogCSkDADcDACAFQYgBakHYAGogCCkDADcDACAFQYgBakHgAGogBikDADcDACAFIAE6APABIAUgAjcDqAEgBSAAIAdFckECciIAOgDxASAFIBI3A5gCIAUgETcDkAIgBSAQNwOIAiAFIA83A4ACIAVBoAJqIAVBgAJqIAVBsAFqIAEgAiAAQf8BcRACIAUpA8ACIQIgBSkDoAIhDyAFKQPIAiEQIAUpA6gCIREgBSkD0AIhEiAFKQOwAiETIAQgDkEFdGoiASAFKQPYAiAFKQO4AoU3AxggASASIBOFNwMQIAEgECARhTcDCCABIAIgD4U3AwBBAkEBIA4bIQYMAQsgAEIBIAFBf2pBCnZBAXKteUI/hYYiD6dBCnQiDiACIAMgBRAGIQcgACAOaiABIA5rIA9C////AYMgAnwgAyAFQcAAQSAgDkGACEsbahAGIQECQCAHQQFHDQAgBCAFKQMANwMAIAQgBSkDCDcDCCAEIAUpAxA3AxAgBCAFKQMYNwMYIAQgBSkDIDcDICAEIAUpAyg3AyggBCAFKQMwNwMwIAQgBSkDODcDOEECIQYMAQtBACEGQQAhAAJAIAEgB2oiCUECSQ0AIAlBfmoiCkEBdkEBaiIGQQNxIQ5BACEHAkAgCkEGSQ0AIAZB/P///wdxIQhBACEHIAVBiAFqIQEgBSEAA0AgASAANgIAIAFBDGogAEHAAWo2AgAgAUEIaiAAQYABajYCACABQQRqIABBwABqNgIAIABBgAJqIQAgAUEQaiEBIAggB0EEaiIHRw0ACwsgCkF+cSEIAkAgDkUNACAFIAdBBnRqIQEgBUGIAWogB0ECdGohAANAIAAgATYCACABQcAAaiEBIABBBGohACAOQX9qIg4NAAsLIAhBAmohAAsgBUGIAWogBkEBQgBBACADQQRyQQBBACAEEAEgACAJTw0AIAQgBkEFdGoiASAFIAZBBnRqIgApAwA3AwAgASAAKQMINwMIIAEgACkDEDcDECABIAApAxg3AxggBkEBaiEGCyAFQeACaiQAIAYLrRAIAn8EfgF/AX4EfwR+BH8EfiMAQfABayIBJAACQCAARQ0AAkBBAC0AkIoBIgINACABQTBqQQApA9CJATcDACABQThqQQApA9iJATcDACABQQApA6CJASIDNwMAIAFBACkDqIkBIgQ3AwggAUEAKQOwiQEiBTcDECABQQApA7iJASIGNwMYIAFBACkDyIkBNwMoQQAtAIqKASECQQAtAImKASEHQQApA8CJASEIQQAtAIiKASEJIAFBwABqQQApA+CJATcDACABQcgAakEAKQPoiQE3AwAgAUHQAGpBACkD8IkBNwMAIAFB2ABqQQApA/iJATcDACABQeAAakEAKQOAigE3AwAgASAJOgBoIAEgCDcDICABIAIgB0VyIgJBAnI6AGkgAUEoaiEKQgAhCEGACSELIAJBCnJB/wFxIQwDQCABQbABaiABIAogCUH/AXEgCCAMEAIgASABKQPQASINIAEpA7ABhTcDcCABIAEpA9gBIg4gASkDuAGFNwN4IAEgASkD4AEiDyABKQPAAYU3A4ABIAEgASkD6AEiECAGhTcDqAEgASAPIAWFNwOgASABIA4gBIU3A5gBIAEgDSADhTcDkAEgASAQIAEpA8gBhTcDiAEgAEHAACAAQcAASRsiEUF/aiESAkACQCARQQdxIhMNACABQfAAaiECIAshByARIRQMAQsgEUH4AHEhFCABQfAAaiECIAshBwNAIAcgAi0AADoAACAHQQFqIQcgAkEBaiECIBNBf2oiEw0ACwsCQCASQQdJDQADQCAHIAIpAAA3AAAgB0EIaiEHIAJBCGohAiAUQXhqIhQNAAsLIAhCAXwhCCALIBFqIQsgACARayIADQAMAgsLAkACQAJAQQAtAImKASIHQQZ0QQBBAC0AiIoBIhFrRg0AIAEgEToAaCABQQApA4CKATcDYCABQQApA/iJATcDWCABQQApA/CJATcDUCABQQApA+iJATcDSCABQQApA+CJATcDQCABQQApA9iJATcDOCABQQApA9CJATcDMCABQQApA8iJATcDKCABQQApA8CJASIINwMgIAFBACkDuIkBIgM3AxggAUEAKQOwiQEiBDcDECABQQApA6iJASIFNwMIIAFBACkDoIkBIgY3AwAgAUEALQCKigEiEyAHRXJBAnIiCzoAaSATQQRyIRNBACkDmIkBIQ1BACkDkIkBIQ5BACkDiIkBIQ9BACkDgIkBIRAMAQtBwAAhESABQcAAOgBoQgAhCCABQgA3AyAgAUEAKQOYiQEiDTcDGCABQQApA5CJASIONwMQIAFBACkDiIkBIg83AwggAUEAKQOAiQEiEDcDACABQQAtAIqKAUEEciITOgBpIAEgAkF+aiICQQV0IgdByYoBaikDADcDYCABIAdBwYoBaikDADcDWCABIAdBuYoBaikDADcDUCABIAdBsYoBaikDADcDSCABIAdBqYoBaikDADcDQCABIAdBoYoBaikDADcDOCABIAdBmYoBaikDADcDMCABIAdBkYoBaikDADcDKCATIQsgECEGIA8hBSAOIQQgDSEDIAJFDQELIAJBf2oiB0EFdCIUQZGKAWopAwAhFSAUQZmKAWopAwAhFiAUQaGKAWopAwAhFyAUQamKAWopAwAhGCABIAM3A4gBIAEgBDcDgAEgASAFNwN4IAEgBjcDcCABQbABaiABQfAAaiABQShqIhQgESAIIAtB/wFxEAIgASATOgBpIAFBwAA6AGggASAYNwNAIAEgFzcDOCABIBY3AzAgASAVNwMoIAFCADcDICABIA03AxggASAONwMQIAEgDzcDCCABIBA3AwAgASABKQPoASABKQPIAYU3A2AgASABKQPgASABKQPAAYU3A1ggASABKQPYASABKQO4AYU3A1AgASABKQPQASABKQOwAYU3A0ggB0UNACACQQV0QemJAWohAiATQf8BcSERA0AgAkFoaikDACEIIAJBcGopAwAhAyACQXhqKQMAIQQgAikDACEFIAEgDTcDiAEgASAONwOAASABIA83A3ggASAQNwNwIAFBsAFqIAFB8ABqIBRBwABCACAREAIgASATOgBpIAFBwAA6AGggASAFNwNAIAEgBDcDOCABIAM3AzAgASAINwMoIAFCADcDICABIA03AxggASAONwMQIAEgDzcDCCABIBA3AwAgASABKQPoASABKQPIAYU3A2AgASABKQPgASABKQPAAYU3A1ggASABKQPYASABKQO4AYU3A1AgASABKQPQASABKQOwAYU3A0ggAkFgaiECIAdBf2oiBw0ACwsgAUEoaiEJQgAhCEGACSELIBNBCHJB/wFxIQoDQCABQbABaiABIAlBwAAgCCAKEAIgASABKQPQASIDIAEpA7ABhTcDcCABIAEpA9gBIgQgASkDuAGFNwN4IAEgASkD4AEiBSABKQPAAYU3A4ABIAEgDSABKQPoASIGhTcDqAEgASAOIAWFNwOgASABIA8gBIU3A5gBIAEgECADhTcDkAEgASAGIAEpA8gBhTcDiAEgAEHAACAAQcAASRsiEUF/aiESAkACQCARQQdxIhMNACABQfAAaiECIAshByARIRQMAQsgEUH4AHEhFCABQfAAaiECIAshBwNAIAcgAi0AADoAACAHQQFqIQcgAkEBaiECIBNBf2oiEw0ACwsCQCASQQdJDQADQCAHIAIpAAA3AAAgB0EIaiEHIAJBCGohAiAUQXhqIhQNAAsLIAhCAXwhCCALIBFqIQsgACARayIADQALCyABQfABaiQAC6MCAQR+AkACQCAAQSBGDQBCq7OP/JGjs/DbACEBQv+kuYjFkdqCm38hAkLy5rvjo6f9p6V/IQNC58yn0NbQ67O7fyEEQQAhAAwBC0EAKQOYCSEBQQApA5AJIQJBACkDiAkhA0EAKQOACSEEQRAhAAtBACAAOgCKigFBAEIANwOAigFBAEIANwP4iQFBAEIANwPwiQFBAEIANwPoiQFBAEIANwPgiQFBAEIANwPYiQFBAEIANwPQiQFBAEIANwPIiQFBAEIANwPAiQFBACABNwO4iQFBACACNwOwiQFBACADNwOoiQFBACAENwOgiQFBACABNwOYiQFBACACNwOQiQFBACADNwOIiQFBACAENwOAiQFBAEEAOgCQigFBAEEAOwGIigELBgAgABADCwYAIAAQBwsGAEGAiQELqwIBBH4CQAJAIAFBIEYNAEKrs4/8kaOz8NsAIQNC/6S5iMWR2oKbfyEEQvLmu+Ojp/2npX8hBULnzKfQ1tDrs7t/IQZBACEBDAELQQApA5gJIQNBACkDkAkhBEEAKQOICSEFQQApA4AJIQZBECEBC0EAIAE6AIqKAUEAQgA3A4CKAUEAQgA3A/iJAUEAQgA3A/CJAUEAQgA3A+iJAUEAQgA3A+CJAUEAQgA3A9iJAUEAQgA3A9CJAUEAQgA3A8iJAUEAQgA3A8CJAUEAIAM3A7iJAUEAIAQ3A7CJAUEAIAU3A6iJAUEAIAY3A6CJAUEAIAM3A5iJAUEAIAQ3A5CJAUEAIAU3A4iJAUEAIAY3A4CJAUEAQQA6AJCKAUEAQQA7AYiKASAAEAMgAhAHCwsLAQBBgAgLBHgHAAA=",mn="215d875f",Le={name:Mr,data:Mn,hash:mn};let Ja=new o,Ji=null;function Co(S){return!Number.isInteger(S)||S<8||S%8!==0?new Error("Invalid variant! Valid values: 8, 16, ..."):null}function Ti(S,q=256,M=null){if(Co(q))return Promise.reject(Co(q));let Y=null,ie=0;if(M!==null){if(Y=C(M),Y.length!==32)return Promise.reject(new Error("Key length must be exactly 32 bytes"));ie=32}let ae=q/8,ge=ae;if(Ji===null||Ji.hashLength!==ae)return E(Ja,Le,ae).then(xe=>(Ji=xe,ie===32&&Ji.writeMemory(Y),Ji.calculate(S,ie,ge)));try{ie===32&&Ji.writeMemory(Y);let xe=Ji.calculate(S,ie,ge);return Promise.resolve(xe)}catch(xe){return Promise.reject(xe)}}function A(S=256,q=null){if(Co(S))return Promise.reject(Co(S));let M=null,Y=0;if(q!==null){if(M=C(q),M.length!==32)return Promise.reject(new Error("Key length must be exactly 32 bytes"));Y=32}let ie=S/8,ae=ie;return v(Le,ie).then(ge=>{Y===32&&ge.writeMemory(M),ge.init(Y);let xe={init:Y===32?()=>(ge.writeMemory(M),ge.init(Y),xe):()=>(ge.init(Y),xe),update:Je=>(ge.update(Je),xe),digest:Je=>ge.digest(Je,ae),save:()=>ge.save(),load:Je=>(ge.load(Je),xe),blockSize:64,digestSize:ie};return xe})}var k="crc32",O="AGFzbQEAAAABEQRgAAF/YAF/AGAAAGACf38AAwgHAAEBAQIAAwUEAQECAgYOAn8BQZDJBQt/AEGACAsHcAgGbWVtb3J5AgAOSGFzaF9HZXRCdWZmZXIAAAlIYXNoX0luaXQAAgtIYXNoX1VwZGF0ZQADCkhhc2hfRmluYWwABA1IYXNoX0dldFN0YXRlAAUOSGFzaF9DYWxjdWxhdGUABgpTVEFURV9TSVpFAwEKkggHBQBBgAkLwwMBA39BgIkBIQFBACECA0AgAUEAQQBBAEEAQQBBAEEAQQAgAkEBcWsgAHEgAkEBdnMiA0EBcWsgAHEgA0EBdnMiA0EBcWsgAHEgA0EBdnMiA0EBcWsgAHEgA0EBdnMiA0EBcWsgAHEgA0EBdnMiA0EBcWsgAHEgA0EBdnMiA0EBcWsgAHEgA0EBdnMiA0EBcWsgAHEgA0EBdnM2AgAgAUEEaiEBIAJBAWoiAkGAAkcNAAtBACEAA0AgAEGEkQFqIABBhIkBaigCACICQf8BcUECdEGAiQFqKAIAIAJBCHZzIgI2AgAgAEGEmQFqIAJB/wFxQQJ0QYCJAWooAgAgAkEIdnMiAjYCACAAQYShAWogAkH/AXFBAnRBgIkBaigCACACQQh2cyICNgIAIABBhKkBaiACQf8BcUECdEGAiQFqKAIAIAJBCHZzIgI2AgAgAEGEsQFqIAJB/wFxQQJ0QYCJAWooAgAgAkEIdnMiAjYCACAAQYS5AWogAkH/AXFBAnRBgIkBaigCACACQQh2cyICNgIAIABBhMEBaiACQf8BcUECdEGAiQFqKAIAIAJBCHZzNgIAIABBBGoiAEH8B0cNAAsLJwACQEEAKAKAyQEgAEYNACAAEAFBACAANgKAyQELQQBBADYChMkBC4gDAQN/QQAoAoTJAUF/cyEBQYAJIQICQCAAQQhJDQBBgAkhAgNAIAJBBGooAgAiA0EOdkH8B3FBgJEBaigCACADQRZ2QfwHcUGAiQFqKAIAcyADQQZ2QfwHcUGAmQFqKAIAcyADQf8BcUECdEGAoQFqKAIAcyACKAIAIAFzIgFBFnZB/AdxQYCpAWooAgBzIAFBDnZB/AdxQYCxAWooAgBzIAFBBnZB/AdxQYC5AWooAgBzIAFB/wFxQQJ0QYDBAWooAgBzIQEgAkEIaiECIABBeGoiAEEHSw0ACwsCQCAARQ0AAkACQCAAQQFxDQAgACEDDAELIAFB/wFxIAItAABzQQJ0QYCJAWooAgAgAUEIdnMhASACQQFqIQIgAEF/aiEDCyAAQQFGDQADQCABQf8BcSACLQAAc0ECdEGAiQFqKAIAIAFBCHZzIgFB/wFxIAJBAWotAABzQQJ0QYCJAWooAgAgAUEIdnMhASACQQJqIQIgA0F+aiIDDQALC0EAIAFBf3M2AoTJAQsyAQF/QQBBACgChMkBIgBBGHQgAEGA/gNxQQh0ciAAQQh2QYD+A3EgAEEYdnJyNgKACQsGAEGEyQELWQACQEEAKAKAyQEgAUYNACABEAFBACABNgKAyQELQQBBADYChMkBIAAQA0EAQQAoAoTJASIBQRh0IAFBgP4DcUEIdHIgAUEIdkGA/gNxIAFBGHZycjYCgAkLCwsBAEGACAsEBAAAAA==",V="d2eba587",H={name:k,data:O,hash:V};let W=new o,ue=null;function Re(S){return!Number.isInteger(S)||S<0||S>4294967295?new Error("Polynomial must be a valid 32-bit long unsigned integer"):null}function Ye(S,q=3988292384){if(Re(q))return Promise.reject(Re(q));if(ue===null)return E(W,H,4).then(M=>(ue=M,ue.calculate(S,q)));try{let M=ue.calculate(S,q);return Promise.resolve(M)}catch(M){return Promise.reject(M)}}function Ie(S=3988292384){return Re(S)?Promise.reject(Re(S)):v(H,4).then(q=>{q.init(S);let M={init:()=>(q.init(S),M),update:Y=>(q.update(Y),M),digest:Y=>q.digest(Y),save:()=>q.save(),load:Y=>(q.load(Y),M),blockSize:4,digestSize:4};return M})}var Fe="crc64",yn="AGFzbQEAAAABDANgAAF/YAAAYAF/AAMHBgABAgEAAQUEAQECAgYOAn8BQZCJBgt/AEGACAsHcAgGbWVtb3J5AgAOSGFzaF9HZXRCdWZmZXIAAAlIYXNoX0luaXQAAQtIYXNoX1VwZGF0ZQACCkhhc2hfRmluYWwAAw1IYXNoX0dldFN0YXRlAAQOSGFzaF9DYWxjdWxhdGUABQpTVEFURV9TSVpFAwEKgwgGBQBBgAkL9QMDAX4BfwJ+AkBBACkDgIkCQQApA4AJIgBRDQBBgIkBIQFCACECA0AgAUIAQgBCAEIAQgBCAEIAQgAgAkIBg30gAIMgAkIBiIUiA0IBg30gAIMgA0IBiIUiA0IBg30gAIMgA0IBiIUiA0IBg30gAIMgA0IBiIUiA0IBg30gAIMgA0IBiIUiA0IBg30gAIMgA0IBiIUiA0IBg30gAIMgA0IBiIUiA0IBg30gAIMgA0IBiIU3AwAgAUEIaiEBIAJCAXwiAkKAAlINAAtBACEBA0AgAUGImQFqIAFBiIkBaikDACICp0H/AXFBA3RBgIkBaikDACACQgiIhSICNwMAIAFBiKkBaiACp0H/AXFBA3RBgIkBaikDACACQgiIhSICNwMAIAFBiLkBaiACp0H/AXFBA3RBgIkBaikDACACQgiIhSICNwMAIAFBiMkBaiACp0H/AXFBA3RBgIkBaikDACACQgiIhSICNwMAIAFBiNkBaiACp0H/AXFBA3RBgIkBaikDACACQgiIhSICNwMAIAFBiOkBaiACp0H/AXFBA3RBgIkBaikDACACQgiIhSICNwMAIAFBiPkBaiACp0H/AXFBA3RBgIkBaikDACACQgiIhTcDACABQQhqIgFB+A9HDQALQQAgADcDgIkCC0EAQgA3A4iJAguUAwIBfgJ/QQApA4iJAkJ/hSEBQYAJIQICQCAAQQhJDQBBgAkhAgNAIAIpAwAgAYUiAUIwiKdB/wFxQQN0QYCZAWopAwAgAUI4iKdBA3RBgIkBaikDAIUgAUIoiKdB/wFxQQN0QYCpAWopAwCFIAFCIIinQf8BcUEDdEGAuQFqKQMAhSABpyIDQRV2QfgPcUGAyQFqKQMAhSADQQ12QfgPcUGA2QFqKQMAhSADQQV2QfgPcUGA6QFqKQMAhSADQf8BcUEDdEGA+QFqKQMAhSEBIAJBCGohAiAAQXhqIgBBB0sNAAsLAkAgAEUNAAJAAkAgAEEBcQ0AIAAhAwwBCyABQv8BgyACMQAAhadBA3RBgIkBaikDACABQgiIhSEBIAJBAWohAiAAQX9qIQMLIABBAUYNAANAIAFC/wGDIAIxAACFp0EDdEGAiQFqKQMAIAFCCIiFIgFC/wGDIAJBAWoxAACFp0EDdEGAiQFqKQMAIAFCCIiFIQEgAkECaiECIANBfmoiAw0ACwtBACABQn+FNwOIiQILZAEBfkEAQQApA4iJAiIAQjiGIABCgP4Dg0IohoQgAEKAgPwHg0IYhiAAQoCAgPgPg0IIhoSEIABCCIhCgICA+A+DIABCGIhCgID8B4OEIABCKIhCgP4DgyAAQjiIhISENwOACQsGAEGIiQILAgALCwsBAEGACAsECAAAAA==",bs="c5ac6c16",vs={name:Fe,data:yn,hash:bs};let ks=new o,ji=null,Ln=new Uint8Array(8);function f0(S){let q="Polynomial must be provided as a 16 char long hex string";if(typeof S!="string"||S.length!==16)return{hi:0,lo:0,err:new Error(q)};let M=+`0x${S.slice(0,8)}`,Y=+`0x${S.slice(8)}`;return Number.isNaN(M)||Number.isNaN(Y)?{hi:M,lo:Y,err:new Error(q)}:{hi:M,lo:Y,err:null}}function pu(S,q,M){let Y=new DataView(S);Y.setUint32(0,q,!0),Y.setUint32(4,M,!0)}function Xw(S,q="c96c5795d7870f42"){let{hi:M,lo:Y,err:ie}=f0(q);if(ie!==null)return Promise.reject(ie);if(ji===null)return E(ks,vs,8).then(ae=>(ji=ae,pu(Ln.buffer,Y,M),ji.writeMemory(Ln),ji.calculate(S)));try{pu(Ln.buffer,Y,M),ji.writeMemory(Ln);let ae=ji.calculate(S);return Promise.resolve(ae)}catch(ae){return Promise.reject(ae)}}function Zw(S="c96c5795d7870f42"){let{hi:q,lo:M,err:Y}=f0(S);return Y!==null?Promise.reject(Y):v(vs,8).then(ie=>{let ae=new Uint8Array(8);pu(ae.buffer,M,q),ie.writeMemory(ae),ie.init();let ge={init:()=>(ie.writeMemory(ae),ie.init(),ge),update:xe=>(ie.update(xe),ge),digest:xe=>ie.digest(xe),save:()=>ie.save(),load:xe=>(ie.load(xe),ge),blockSize:8,digestSize:8};return ge})}var he="md4",Ze="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",Lr="bd8ce7c7",In={name:he,data:Ze,hash:Lr};let ex=new o,A0=null;function OO(S){if(A0===null)return E(ex,In,16).then(q=>(A0=q,A0.calculate(S)));try{let q=A0.calculate(S);return Promise.resolve(q)}catch(q){return Promise.reject(q)}}function MO(){return v(In,16).then(S=>{S.init();let q={init:()=>(S.init(),q),update:M=>(S.update(M),q),digest:M=>S.digest(M),save:()=>S.save(),load:M=>(S.load(M),q),blockSize:64,digestSize:16};return q})}var LO="md5",HO="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",KO="e6508e4b",fv={name:LO,data:HO,hash:KO};let GO=new o,h0=null;function zO(S){if(h0===null)return E(GO,fv,16).then(q=>(h0=q,h0.calculate(S)));try{let q=h0.calculate(S);return Promise.resolve(q)}catch(q){return Promise.reject(q)}}function JO(){return v(fv,16).then(S=>{S.init();let q={init:()=>(S.init(),q),update:M=>(S.update(M),q),digest:M=>S.digest(M),save:()=>S.save(),load:M=>(S.load(M),q),blockSize:64,digestSize:16};return q})}var jO="sha1",$O="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",VO="6b530c24",Av={name:jO,data:$O,hash:VO};let YO=new o,g0=null;function WO(S){if(g0===null)return E(YO,Av,20).then(q=>(g0=q,g0.calculate(S)));try{let q=g0.calculate(S);return Promise.resolve(q)}catch(q){return Promise.reject(q)}}function XO(){return v(Av,20).then(S=>{S.init();let q={init:()=>(S.init(),q),update:M=>(S.update(M),q),digest:M=>S.digest(M),save:()=>S.save(),load:M=>(S.load(M),q),blockSize:64,digestSize:20};return q})}var ZO="sha3",eM="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",tM="fb24e536",p0={name:ZO,data:eM,hash:tM};let rM=new o,mu=null;function m0(S){return[224,256,384,512].includes(S)?null:new Error("Invalid variant! Valid values: 224, 256, 384, 512")}function iM(S,q=512){if(m0(q))return Promise.reject(m0(q));let M=q/8;if(mu===null||mu.hashLength!==M)return E(rM,p0,M).then(Y=>(mu=Y,mu.calculate(S,q,6)));try{let Y=mu.calculate(S,q,6);return Promise.resolve(Y)}catch(Y){return Promise.reject(Y)}}function nM(S=512){if(m0(S))return Promise.reject(m0(S));let q=S/8;return v(p0,q).then(M=>{M.init(S);let Y={init:()=>(M.init(S),Y),update:ie=>(M.update(ie),Y),digest:ie=>M.digest(ie,6),save:()=>M.save(),load:ie=>(M.load(ie),Y),blockSize:200-2*q,digestSize:q};return Y})}let sM=new o,yu=null;function y0(S){return[224,256,384,512].includes(S)?null:new Error("Invalid variant! Valid values: 224, 256, 384, 512")}function oM(S,q=512){if(y0(q))return Promise.reject(y0(q));let M=q/8;if(yu===null||yu.hashLength!==M)return E(sM,p0,M).then(Y=>(yu=Y,yu.calculate(S,q,1)));try{let Y=yu.calculate(S,q,1);return Promise.resolve(Y)}catch(Y){return Promise.reject(Y)}}function aM(S=512){if(y0(S))return Promise.reject(y0(S));let q=S/8;return v(p0,q).then(M=>{M.init(S);let Y={init:()=>(M.init(S),Y),update:ie=>(M.update(ie),Y),digest:ie=>M.digest(ie,1),save:()=>M.save(),load:ie=>(M.load(ie),Y),blockSize:200-2*q,digestSize:q};return Y})}var cM="sha256",lM="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c2pBx6KerX1qIhkgASADcyACcSABIANxcyABQR53IAFBE3dzIAFBCndzaiAaaiICaiIJIBMgEnNxIBJzaiAJQRp3IAlBFXdzIAlBB3dzakHRxqk2aiIaIAIgAXMgA3EgAiABcXMgAkEedyACQRN3cyACQQp3c2ogGGoiA2oiESAJIBNzcSATc2ogEUEadyARQRV3cyARQQd3c2pB59KkoQFqIhggAyACcyABcSADIAJxcyADQR53IANBE3dzIANBCndzaiAUaiIBaiISIBEgCXNxIAlzaiASQRp3IBJBFXdzIBJBB3dzakGFldy9AmoiFCABIANzIAJxIAEgA3FzIAFBHncgAUETd3MgAUEKd3NqIBdqIgJqIhMgI2ogJiASaiAiIBFqICUgCWogEyASIBFzcSARc2ogE0EadyATQRV3cyATQQd3c2pBuMLs8AJqIhcgAiABcyADcSACIAFxcyACQR53IAJBE3dzIAJBCndzaiAZaiIDaiIJIBMgEnNxIBJzaiAJQRp3IAlBFXdzIAlBB3dzakH827HpBGoiGSADIAJzIAFxIAMgAnFzIANBHncgA0ETd3MgA0EKd3NqIBpqIgFqIhEgCSATc3EgE3NqIBFBGncgEUEVd3MgEUEHd3NqQZOa4JkFaiIaIAEgA3MgAnEgASADcXMgAUEedyABQRN3cyABQQp3c2ogGGoiAmoiEiARIAlzcSAJc2ogEkEadyASQRV3cyASQQd3c2pB1OapqAZqIhggAiABcyADcSACIAFxcyACQR53IAJBE3dzIAJBCndzaiAUaiIDaiITaiAoIBJqICQgEWogJyAJaiATIBIgEXNxIBFzaiATQRp3IBNBFXdzIBNBB3dzakG7laizB2oiFCADIAJzIAFxIAMgAnFzIANBHncgA0ETd3MgA0EKd3NqIBdqIgFqIgkgEyASc3EgEnNqIAlBGncgCUEVd3MgCUEHd3NqQa6Si454aiIXIAEgA3MgAnEgASADcXMgAUEedyABQRN3cyABQQp3c2ogGWoiAmoiESAJIBNzcSATc2ogEUEadyARQRV3cyARQQd3c2pBhdnIk3lqIhkgAiABcyADcSACIAFxcyACQR53IAJBE3dzIAJBCndzaiAaaiIDaiISIBEgCXNxIAlzaiASQRp3IBJBFXdzIBJBB3dzakGh0f+VemoiGiADIAJz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",dM="8c18dd94",I0={name:cM,data:lM,hash:dM};let uM=new o,w0=null;function fM(S){if(w0===null)return E(uM,I0,28).then(q=>(w0=q,w0.calculate(S,224)));try{let q=w0.calculate(S,224);return Promise.resolve(q)}catch(q){return Promise.reject(q)}}function AM(){return v(I0,28).then(S=>{S.init(224);let q={init:()=>(S.init(224),q),update:M=>(S.update(M),q),digest:M=>S.digest(M),save:()=>S.save(),load:M=>(S.load(M),q),blockSize:64,digestSize:28};return q})}let hM=new o,x0=null;function gM(S){if(x0===null)return E(hM,I0,32).then(q=>(x0=q,x0.calculate(S,256)));try{let q=x0.calculate(S,256);return Promise.resolve(q)}catch(q){return Promise.reject(q)}}function hv(){return v(I0,32).then(S=>{S.init(256);let q={init:()=>(S.init(256),q),update:M=>(S.update(M),q),digest:M=>S.digest(M),save:()=>S.save(),load:M=>(S.load(M),q),blockSize:64,digestSize:32};return q})}var pM="sha512",mM="AGFzbQEAAAABEQRgAAF/YAF/AGAAAGACf38AAwgHAAEBAQIAAwUEAQECAgYOAn8BQdCKBQt/AEGACAsHcAgGbWVtb3J5AgAOSGFzaF9HZXRCdWZmZXIAAAlIYXNoX0luaXQAAQtIYXNoX1VwZGF0ZQACCkhhc2hfRmluYWwABA1IYXNoX0dldFN0YXRlAAUOSGFzaF9DYWxjdWxhdGUABgpTVEFURV9TSVpFAwEKlWgHBQBBgAkLmwIAQQBCADcDgIoBQQBBMEHAACAAQYADRiIAGzYCyIoBQQBCpJ/p99uD0trHAEL5wvibkaOz8NsAIAAbNwPAigFBAEKnn+an1sGLhltC6/qG2r+19sEfIAAbNwO4igFBAEKRquDC9tCS2o5/Qp/Y+dnCkdqCm38gABs3A7CKAUEAQrGWgP7/zMmZ5wBC0YWa7/rPlIfRACAAGzcDqIoBQQBCubK5uI+b+5cVQvHt9Pilp/2npX8gABs3A6CKAUEAQpe6w4Ojq8CskX9Cq/DT9K/uvLc8IAAbNwOYigFBAEKHqvOzo6WKzeIAQrvOqqbY0Ouzu38gABs3A5CKAUEAQti9lojcq+fdS0KIkvOd/8z5hOoAIAAbNwOIigEL8gICAX4Gf0EAQQApA4CKASIBIACtfDcDgIoBAkACQAJAIAGnQf8AcSICDQBBgAkhAwwBCwJAQYABIAJrIgQgACAEIABJGyIDRQ0AIANBA3EhBSACQYCJAWohBkEAIQICQCADQQRJDQAgA0H8AXEhB0EAIQIDQCAGIAJqIgMgAkGACWotAAA6AAAgA0EBaiACQYEJai0AADoAACADQQJqIAJBgglqLQAAOgAAIANBA2ogAkGDCWotAAA6AAAgByACQQRqIgJHDQALCyAFRQ0AA0AgBiACaiACQYAJai0AADoAACACQQFqIQIgBUF/aiIFDQALCyAAIARJDQFBgIkBEAMgACAEayEAIARBgAlqIQMLAkAgAEGAAUkNAANAIAMQAyADQYABaiEDIABBgH9qIgBB/wBLDQALCyAARQ0AQQAhAkEAIQUDQCACQYCJAWogAyACai0AADoAACACQQFqIQIgACAFQQFqIgVB/wFxSw0ACwsL3FYBVn5BACAAKQMIIgFCOIYgAUKA/gODQiiGhCABQoCA/AeDQhiGIAFCgICA+A+DQgiGhIQgAUIIiEKAgID4D4MgAUIYiEKAgPwHg4QgAUIoiEKA/gODIAFCOIiEhIQiAkI/iSACQjiJhSACQgeIhSAAKQMAIgFCOIYgAUKA/gODQiiGhCABQoCA/AeDQhiGIAFCgICA+A+DQgiGhIQgAUIIiEKAgID4D4MgAUIYiEKAgPwHg4QgAUIoiEKA/gODIAFCOIiEhIQiA3wgACkDSCIBQjiGIAFCgP4Dg0IohoQgAUKAgPwHg0IYhiABQoCAgPgPg0IIhoSEIAFCCIhCgICA+A+DIAFCGIhCgID8B4OEIAFCKIhCgP4DgyABQjiIhISEIgR8IAApA3AiAUI4hiABQoD+A4NCKIaEIAFCgID8B4NCGIYgAUKAgID4D4NCCIaEhCABQgiIQoCAgPgPgyABQhiIQoCA/AeDhCABQiiIQoD+A4MgAUI4iISEhCIFQi2JIAVCA4mFIAVCBoiFfCIGQj+JIAZCOImFIAZCB4iFIAApA3giAUI4hiABQoD+A4NCKIaEIAFCgID8B4NCGIYgAUKAgID4D4NCCIaEhCABQgiIQoCAgPgPgyABQhiIQoCA/AeDhCABQiiIQoD+A4MgAUI4iISEhCIHfCAEQj+JIARCOImFIARCB4iFIAApA0AiAUI4hiABQoD+A4NCKIaEIAFCgID8B4NCGIYgAUKAgID4D4NCCIaEhCABQgiIQoCAgPgPgyABQhiIQoCA/AeDhCABQiiIQoD+A4MgAUI4iISEhCIIfCAAKQMQIgFCOIYgAUKA/gODQiiGhCABQoCA/AeDQhiGIAFCgICA+A+DQgiGhIQgAUIIiEKAgID4D4MgAUIYiEKAgPwHg4QgAUIoiEKA/gODIAFCOIiEhIQiCUI/iSAJQjiJhSAJQgeIhSACfCAAKQNQIgFCOIYgAUKA/gODQiiGhCABQoCA/AeDQhiGIAFCgICA+A+DQgiGhIQgAUIIiEKAgID4D4MgAUIYiEKAgPwHg4QgAUIoiEKA/gODIAFCOIiEhIQiCnwgB0ItiSAHQgOJhSAHQgaIhXwiC3wgACkDOCIBQjiGIAFCgP4Dg0IohoQgAUKAgPwHg0IYhiABQoCAgPgPg0IIhoSEIAFCCIhCgICA+A+DIAFCGIhCgID8B4OEIAFCKIhCgP4DgyABQjiIhISEIgxCP4kgDEI4iYUgDEIHiIUgACkDMCIBQjiGIAFCgP4Dg0IohoQgAUKAgPwHg0IYhiABQoCAgPgPg0IIhoSEIAFCCIhCgICA+A+DIAFCGIhCgID8B4OEIAFCKIhCgP4DgyABQjiIhISEIg18IAd8IAApAygiAUI4hiABQoD+A4NCKIaEIAFCgID8B4NCGIYgAUKAgID4D4NCCIaEhCABQgiIQoCAgPgPgyABQhiIQoCA/AeDhCABQiiIQoD+A4MgAUI4iISEhCIOQj+JIA5COImFIA5CB4iFIAApAyAiAUI4hiABQoD+A4NCKIaEIAFCgID8B4NCGIYgAUKAgID4D4NCCIaEhCABQgiIQoCAgPgPgyABQhiIQoCA/AeDhCABQiiIQoD+A4MgAUI4iISEhCIPfCAAKQNoIgFCOIYgAUKA/gODQiiGhCABQoCA/AeDQhiGIAFCgICA+A+DQgiGhIQgAUIIiEKAgID4D4MgAUIYiEKAgPwHg4QgAUIoiEKA/gODIAFCOIiEhIQiEHwgACkDGCIBQjiGIAFCgP4Dg0IohoQgAUKAgPwHg0IYhiABQoCAgPgPg0IIhoSEIAFCCIhCgICA+A+DIAFCGIhCgID8B4OEIAFCKIhCgP4DgyABQjiIhISEIhFCP4kgEUI4iYUgEUIHiIUgCXwgACkDWCIBQjiGIAFCgP4Dg0IohoQgAUKAgPwHg0IYhiABQoCAgPgPg0IIhoSEIAFCCIhCgICA+A+DIAFCGIhCgID8B4OEIAFCKIhCgP4DgyABQjiIhISEIhJ8IAZCLYkgBkIDiYUgBkIGiIV8IhNCLYkgE0IDiYUgE0IGiIV8IhRCLYkgFEIDiYUgFEIGiIV8IhVCLYkgFUIDiYUgFUIGiIV8IhZ8IAVCP4kgBUI4iYUgBUIHiIUgEHwgFXwgACkDYCIBQjiGIAFCgP4Dg0IohoQgAUKAgPwHg0IYhiABQoCAgPgPg0IIhoSEIAFCCIhCgICA+A+DIAFCGIhCgID8B4OEIAFCKIhCgP4DgyABQjiIhISEIhdCP4kgF0I4iYUgF0IHiIUgEnwgFHwgCkI/iSAKQjiJhSAKQgeIhSAEfCATfCAIQj+JIAhCOImFIAhCB4iFIAx8IAZ8IA1CP4kgDUI4iYUgDUIHiIUgDnwgBXwgD0I/iSAPQjiJhSAPQgeIhSARfCAXfCALQi2JIAtCA4mFIAtCBoiFfCIYQi2JIBhCA4mFIBhCBoiFfCIZQi2JIBlCA4mFIBlCBoiFfCIaQi2JIBpCA4mFIBpCBoiFfCIbQi2JIBtCA4mFIBtCBoiFfCIcQi2JIBxCA4mFIBxCBoiFfCIdQi2JIB1CA4mFIB1CBoiFfCIeQj+JIB5COImFIB5CB4iFIAdCP4kgB0I4iYUgB0IHiIUgBXwgGnwgEEI/iSAQQjiJhSAQQgeIhSAXfCAZfCASQj+JIBJCOImFIBJCB4iFIAp8IBh8IBZCLYkgFkIDiYUgFkIGiIV8Ih9CLYkgH0IDiYUgH0IGiIV8IiBCLYkgIEIDiYUgIEIGiIV8IiF8IBZCP4kgFkI4iYUgFkIHiIUgGnwgC0I/iSALQjiJhSALQgeIhSAGfCAbfCAhQi2JICFCA4mFICFCBoiFfCIifCAVQj+JIBVCOImFIBVCB4iFIBl8ICF8IBRCP4kgFEI4iYUgFEIHiIUgGHwgIHwgE0I/iSATQjiJhSATQgeIhSALfCAffCAeQi2JIB5CA4mFIB5CBoiFfCIjQi2JICNCA4mFICNCBoiFfCIkQi2JICRCA4mFICRCBoiFfCIlQi2JICVCA4mFICVCBoiFfCImfCAdQj+JIB1COImFIB1CB4iFICB8ICV8IBxCP4kgHEI4iYUgHEIHiIUgH3wgJHwgG0I/iSAbQjiJhSAbQgeIhSAWfCAjfCAaQj+JIBpCOImFIBpCB4iFIBV8IB58IBlCP4kgGUI4iYUgGUIHiIUgFHwgHXwgGEI/iSAYQjiJhSAYQgeIhSATfCAcfCAiQi2JICJCA4mFICJCBoiFfCInQi2JICdCA4mFICdCBoiFfCIoQi2JIChCA4mFIChCBoiFfCIpQi2JIClCA4mFIClCBoiFfCIqQi2JICpCA4mFICpCBoiFfCIrQi2JICtCA4mFICtCBoiFfCIsQi2JICxCA4mFICxCBoiFfCItQj+JIC1COImFIC1CB4iFICFCP4kgIUI4iYUgIUIHiIUgHXwgKXwgIEI/iSAgQjiJhSAgQgeIhSAcfCAofCAfQj+JIB9COImFIB9CB4iFIBt8ICd8ICZCLYkgJkIDiYUgJkIGiIV8Ii5CLYkgLkIDiYUgLkIGiIV8Ii9CLYkgL0IDiYUgL0IGiIV8IjB8ICZCP4kgJkI4iYUgJkIHiIUgKXwgIkI/iSAiQjiJhSAiQgeIhSAefCAqfCAwQi2JIDBCA4mFIDBCBoiFfCIxfCAlQj+JICVCOImFICVCB4iFICh8IDB8ICRCP4kgJEI4iYUgJEIHiIUgJ3wgL3wgI0I/iSAjQjiJhSAjQgeIhSAifCAufCAtQi2JIC1CA4mFIC1CBoiFfCIyQi2JIDJCA4mFIDJCBoiFfCIzQi2JIDNCA4mFIDNCBoiFfCI0Qi2JIDRCA4mFIDRCBoiFfCI1fCAsQj+JICxCOImFICxCB4iFIC98IDR8ICtCP4kgK0I4iYUgK0IHiIUgLnwgM3wgKkI/iSAqQjiJhSAqQgeIhSAmfCAyfCApQj+JIClCOImFIClCB4iFICV8IC18IChCP4kgKEI4iYUgKEIHiIUgJHwgLHwgJ0I/iSAnQjiJhSAnQgeIhSAjfCArfCAxQi2JIDFCA4mFIDFCBoiFfCI2Qi2JIDZCA4mFIDZCBoiFfCI3Qi2JIDdCA4mFIDdCBoiFfCI4Qi2JIDhCA4mFIDhCBoiFfCI5Qi2JIDlCA4mFIDlCBoiFfCI6Qi2JIDpCA4mFIDpCBoiFfCI7Qi2JIDtCA4mFIDtCBoiFfCI8Qj+JIDxCOImFIDxCB4iFIDBCP4kgMEI4iYUgMEIHiIUgLHwgOHwgL0I/iSAvQjiJhSAvQgeIhSArfCA3fCAuQj+JIC5COImFIC5CB4iFICp8IDZ8IDVCLYkgNUIDiYUgNUIGiIV8Ij1CLYkgPUIDiYUgPUIGiIV8Ij5CLYkgPkIDiYUgPkIGiIV8Ij98IDVCP4kgNUI4iYUgNUIHiIUgOHwgMUI/iSAxQjiJhSAxQgeIhSAtfCA5fCA/Qi2JID9CA4mFID9CBoiFfCJAfCA0Qj+JIDRCOImFIDRCB4iFIDd8ID98IDNCP4kgM0I4iYUgM0IHiIUgNnwgPnwgMkI/iSAyQjiJhSAyQgeIhSAxfCA9fCA8Qi2JIDxCA4mFIDxCBoiFfCJBQi2JIEFCA4mFIEFCBoiFfCJCQi2JIEJCA4mFIEJCBoiFfCJDQi2JIENCA4mFIENCBoiFfCJEfCA7Qj+JIDtCOImFIDtCB4iFID58IEN8IDpCP4kgOkI4iYUgOkIHiIUgPXwgQnwgOUI/iSA5QjiJhSA5QgeIhSA1fCBBfCA4Qj+JIDhCOImFIDhCB4iFIDR8IDx8IDdCP4kgN0I4iYUgN0IHiIUgM3wgO3wgNkI/iSA2QjiJhSA2QgeIhSAyfCA6fCBAQi2JIEBCA4mFIEBCBoiFfCJFQi2JIEVCA4mFIEVCBoiFfCJGQi2JIEZCA4mFIEZCBoiFfCJHQi2JIEdCA4mFIEdCBoiFfCJIQi2JIEhCA4mFIEhCBoiFfCJJQi2JIElCA4mFIElCBoiFfCJKQi2JIEpCA4mFIEpCBoiFfCJLIEkgRSA/ID0gMiAsICogIiAgIBYgBiAXIAhBACkDqIoBIkxCMokgTEIuiYUgTEIXiYVBACkDwIoBIk18QQApA7iKASJOQQApA7CKASJPhSBMgyBOhXwgA3xCotyiuY3zi8XCAHwiA0EAKQOgigEiUHwiASAPfCBMIBF8IE8gCXwgTiACfCABIE8gTIWDIE+FfCABQjKJIAFCLomFIAFCF4mFfELNy72fkpLRm/EAfCJRQQApA5iKASJSfCIJIAEgTIWDIEyFfCAJQjKJIAlCLomFIAlCF4mFfEKv9rTi/vm+4LV/fCJTQQApA5CKASJUfCIPIAkgAYWDIAGFfCAPQjKJIA9CLomFIA9CF4mFfEK8t6eM2PT22ml8IlVBACkDiIoBIgF8IhEgDyAJhYMgCYV8IBFCMokgEUIuiYUgEUIXiYV8Qrjqopq/y7CrOXwiViBSIFQgAYWDIFQgAYOFIAFCJIkgAUIeiYUgAUIZiYV8IAN8IgJ8IgN8IAwgEXwgDSAPfCAOIAl8IAMgESAPhYMgD4V8IANCMokgA0IuiYUgA0IXiYV8Qpmgl7CbvsT42QB8Ig0gAiABhSBUgyACIAGDhSACQiSJIAJCHomFIAJCGYmFfCBRfCIJfCIIIAMgEYWDIBGFfCAIQjKJIAhCLomFIAhCF4mFfEKbn+X4ytTgn5J/fCIOIAkgAoUgAYMgCSACg4UgCUIkiSAJQh6JhSAJQhmJhXwgU3wiD3wiESAIIAOFgyADhXwgEUIyiSARQi6JhSARQheJhXxCmIK2093al46rf3wiUSAPIAmFIAKDIA8gCYOFIA9CJIkgD0IeiYUgD0IZiYV8IFV8IgJ8IgMgESAIhYMgCIV8IANCMokgA0IuiYUgA0IXiYV8QsKEjJiK0+qDWHwiUyACIA+FIAmDIAIgD4OFIAJCJIkgAkIeiYUgAkIZiYV8IFZ8Igl8Igx8IBIgA3wgCiARfCAEIAh8IAwgAyARhYMgEYV8IAxCMokgDEIuiYUgDEIXiYV8Qr7fwauU4NbBEnwiBCAJIAKFIA+DIAkgAoOFIAlCJIkgCUIeiYUgCUIZiYV8IA18Ig98IhEgDCADhYMgA4V8IBFCMokgEUIuiYUgEUIXiYV8Qozlkvfkt+GYJHwiCiAPIAmFIAKDIA8gCYOFIA9CJIkgD0IeiYUgD0IZiYV8IA58IgJ8IgMgESAMhYMgDIV8IANCMokgA0IuiYUgA0IXiYV8QuLp/q+9uJ+G1QB8IhIgAiAPhSAJgyACIA+DhSACQiSJIAJCHomFIAJCGYmFfCBRfCIJfCIIIAMgEYWDIBGFfCAIQjKJIAhCLomFIAhCF4mFfELvku6Tz66X3/IAfCIXIAkgAoUgD4MgCSACg4UgCUIkiSAJQh6JhSAJQhmJhXwgU3wiD3wiDHwgByAIfCAFIAN8IBAgEXwgDCAIIAOFgyADhXwgDEIyiSAMQi6JhSAMQheJhXxCsa3a2OO/rO+Af3wiAyAPIAmFIAKDIA8gCYOFIA9CJIkgD0IeiYUgD0IZiYV8IAR8IgV8IgIgDCAIhYMgCIV8IAJCMokgAkIuiYUgAkIXiYV8QrWknK7y1IHum398IgggBSAPhSAJgyAFIA+DhSAFQiSJIAVCHomFIAVCGYmFfCAKfCIGfCIJIAIgDIWDIAyFfCAJQjKJIAlCLomFIAlCF4mFfEKUzaT7zK78zUF8IgwgBiAFhSAPgyAGIAWDhSAGQiSJIAZCHomFIAZCGYmFfCASfCIHfCIPIAkgAoWDIAKFfCAPQjKJIA9CLomFIA9CF4mFfELSlcX3mbjazWR8IgQgByAGhSAFgyAHIAaDhSAHQiSJIAdCHomFIAdCGYmFfCAXfCIFfCIRIBR8IBggD3wgEyAJfCALIAJ8IBEgDyAJhYMgCYV8IBFCMokgEUIuiYUgEUIXiYV8QuPLvMLj8JHfb3wiAiAFIAeFIAaDIAUgB4OFIAVCJIkgBUIeiYUgBUIZiYV8IAN8IgZ8IgsgESAPhYMgD4V8IAtCMokgC0IuiYUgC0IXiYV8QrWrs9zouOfgD3wiCSAGIAWFIAeDIAYgBYOFIAZCJIkgBkIeiYUgBkIZiYV8IAh8Igd8IhMgCyARhYMgEYV8IBNCMokgE0IuiYUgE0IXiYV8QuW4sr3HuaiGJHwiDyAHIAaFIAWDIAcgBoOFIAdCJIkgB0IeiYUgB0IZiYV8IAx8IgV8IhQgEyALhYMgC4V8IBRCMokgFEIuiYUgFEIXiYV8QvWErMn1jcv0LXwiESAFIAeFIAaDIAUgB4OFIAVCJIkgBUIeiYUgBUIZiYV8IAR8IgZ8Ihh8IBogFHwgFSATfCAZIAt8IBggFCAThYMgE4V8IBhCMokgGEIuiYUgGEIXiYV8QoPJm/WmlaG6ygB8IhYgBiAFhSAHgyAGIAWDhSAGQiSJIAZCHomFIAZCGYmFfCACfCIHfCILIBggFIWDIBSFfCALQjKJIAtCLomFIAtCF4mFfELU94fqy7uq2NwAfCIZIAcgBoUgBYMgByAGg4UgB0IkiSAHQh6JhSAHQhmJhXwgCXwiBXwiEyALIBiFgyAYhXwgE0IyiSATQi6JhSATQheJhXxCtafFmKib4vz2AHwiGCAFIAeFIAaDIAUgB4OFIAVCJIkgBUIeiYUgBUIZiYV8IA98IgZ8IhQgEyALhYMgC4V8IBRCMokgFEIuiYUgFEIXiYV8Qqu/m/OuqpSfmH98IhogBiAFhSAHgyAGIAWDhSAGQiSJIAZCHomFIAZCGYmFfCARfCIHfCIVfCAcIBR8IB8gE3wgGyALfCAVIBQgE4WDIBOFfCAVQjKJIBVCLomFIBVCF4mFfEKQ5NDt0s3xmKh/fCIbIAcgBoUgBYMgByAGg4UgB0IkiSAHQh6JhSAHQhmJhXwgFnwiBXwiCyAVIBSFgyAUhXwgC0IyiSALQi6JhSALQheJhXxCv8Lsx4n5yYGwf3wiFiAFIAeFIAaDIAUgB4OFIAVCJIkgBUIeiYUgBUIZiYV8IBl8IgZ8IhMgCyAVhYMgFYV8IBNCMokgE0IuiYUgE0IXiYV8QuSdvPf7+N+sv398IhkgBiAFhSAHgyAGIAWDhSAGQiSJIAZCHomFIAZCGYmFfCAYfCIHfCIUIBMgC4WDIAuFfCAUQjKJIBRCLomFIBRCF4mFfELCn6Lts/6C8EZ8IhggByAGhSAFgyAHIAaDhSAHQiSJIAdCHomFIAdCGYmFfCAafCIFfCIVfCAeIBR8ICEgE3wgHSALfCAVIBQgE4WDIBOFfCAVQjKJIBVCLomFIBVCF4mFfEKlzqqY+ajk01V8IhogBSAHhSAGgyAFIAeDhSAFQiSJIAVCHomFIAVCGYmFfCAbfCIGfCILIBUgFIWDIBSFfCALQjKJIAtCLomFIAtCF4mFfELvhI6AnuqY5QZ8IhsgBiAFhSAHgyAGIAWDhSAGQiSJIAZCHomFIAZCGYmFfCAWfCIHfCITIAsgFYWDIBWFfCATQjKJIBNCLomFIBNCF4mFfELw3LnQ8KzKlBR8IhYgByAGhSAFgyAHIAaDhSAHQiSJIAdCHomFIAdCGYmFfCAZfCIFfCIUIBMgC4WDIAuFfCAUQjKJIBRCLomFIBRCF4mFfEL838i21NDC2yd8IhkgBSAHhSAGgyAFIAeDhSAFQiSJIAVCHomFIAVCGYmFfCAYfCIGfCIVICh8ICQgFHwgJyATfCAjIAt8IBUgFCAThYMgE4V8IBVCMokgFUIuiYUgFUIXiYV8QqaSm+GFp8iNLnwiGCAGIAWFIAeDIAYgBYOFIAZCJIkgBkIeiYUgBkIZiYV8IBp8Igd8IgsgFSAUhYMgFIV8IAtCMokgC0IuiYUgC0IXiYV8Qu3VkNbFv5uWzQB8IhogByAGhSAFgyAHIAaDhSAHQiSJIAdCHomFIAdCGYmFfCAbfCIFfCITIAsgFYWDIBWFfCATQjKJIBNCLomFIBNCF4mFfELf59bsuaKDnNMAfCIbIAUgB4UgBoMgBSAHg4UgBUIkiSAFQh6JhSAFQhmJhXwgFnwiBnwiFCATIAuFgyALhXwgFEIyiSAUQi6JhSAUQheJhXxC3se93cjqnIXlAHwiFiAGIAWFIAeDIAYgBYOFIAZCJIkgBkIeiYUgBkIZiYV8IBl8Igd8IhV8ICYgFHwgKSATfCAlIAt8IBUgFCAThYMgE4V8IBVCMokgFUIuiYUgFUIXiYV8Qqjl3uOz14K19gB8IhkgByAGhSAFgyAHIAaDhSAHQiSJIAdCHomFIAdCGYmFfCAYfCIFfCILIBUgFIWDIBSFfCALQjKJIAtCLomFIAtCF4mFfELm3ba/5KWy4YF/fCIYIAUgB4UgBoMgBSAHg4UgBUIkiSAFQh6JhSAFQhmJhXwgGnwiBnwiEyALIBWFgyAVhXwgE0IyiSATQi6JhSATQheJhXxCu+qIpNGQi7mSf3wiGiAGIAWFIAeDIAYgBYOFIAZCJIkgBkIeiYUgBkIZiYV8IBt8Igd8IhQgEyALhYMgC4V8IBRCMokgFEIuiYUgFEIXiYV8QuSGxOeUlPrfon98IhsgByAGhSAFgyAHIAaDhSAHQiSJIAdCHomFIAdCGYmFfCAWfCIFfCIVfCAvIBR8ICsgE3wgLiALfCAVIBQgE4WDIBOFfCAVQjKJIBVCLomFIBVCF4mFfEKB4Ijiu8mZjah/fCIWIAUgB4UgBoMgBSAHg4UgBUIkiSAFQh6JhSAFQhmJhXwgGXwiBnwiCyAVIBSFgyAUhXwgC0IyiSALQi6JhSALQheJhXxCka/ih43u4qVCfCIZIAYgBYUgB4MgBiAFg4UgBkIkiSAGQh6JhSAGQhmJhXwgGHwiB3wiEyALIBWFgyAVhXwgE0IyiSATQi6JhSATQheJhXxCsPzSsrC0lLZHfCIYIAcgBoUgBYMgByAGg4UgB0IkiSAHQh6JhSAHQhmJhXwgGnwiBXwiFCATIAuFgyALhXwgFEIyiSAUQi6JhSAUQheJhXxCmKS9t52DuslRfCIaIAUgB4UgBoMgBSAHg4UgBUIkiSAFQh6JhSAFQhmJhXwgG3wiBnwiFXwgMSAUfCAtIBN8IDAgC3wgFSAUIBOFgyAThXwgFUIyiSAVQi6JhSAVQheJhXxCkNKWq8XEwcxWfCIbIAYgBYUgB4MgBiAFg4UgBkIkiSAGQh6JhSAGQhmJhXwgFnwiB3wiCyAVIBSFgyAUhXwgC0IyiSALQi6JhSALQheJhXxCqsDEu9WwjYd0fCIWIAcgBoUgBYMgByAGg4UgB0IkiSAHQh6JhSAHQhmJhXwgGXwiBXwiEyALIBWFgyAVhXwgE0IyiSATQi6JhSATQheJhXxCuKPvlYOOqLUQfCIZIAUgB4UgBoMgBSAHg4UgBUIkiSAFQh6JhSAFQhmJhXwgGHwiBnwiFCATIAuFgyALhXwgFEIyiSAUQi6JhSAUQheJhXxCyKHLxuuisNIZfCIYIAYgBYUgB4MgBiAFg4UgBkIkiSAGQh6JhSAGQhmJhXwgGnwiB3wiFSA0fCA3IBR8IDMgE3wgNiALfCAVIBQgE4WDIBOFfCAVQjKJIBVCLomFIBVCF4mFfELT1oaKhYHbmx58IhogByAGhSAFgyAHIAaDhSAHQiSJIAdCHomFIAdCGYmFfCAbfCIFfCILIBUgFIWDIBSFfCALQjKJIAtCLomFIAtCF4mFfEKZ17v8zemdpCd8IhsgBSAHhSAGgyAFIAeDhSAFQiSJIAVCHomFIAVCGYmFfCAWfCIGfCITIAsgFYWDIBWFfCATQjKJIBNCLomFIBNCF4mFfEKoke2M3pav2DR8IhYgBiAFhSAHgyAGIAWDhSAGQiSJIAZCHomFIAZCGYmFfCAZfCIHfCIUIBMgC4WDIAuFfCAUQjKJIBRCLomFIBRCF4mFfELjtKWuvJaDjjl8IhkgByAGhSAFgyAHIAaDhSAHQiSJIAdCHomFIAdCGYmFfCAYfCIFfCIVfCA5IBR8IDUgE3wgOCALfCAVIBQgE4WDIBOFfCAVQjKJIBVCLomFIBVCF4mFfELLlYaarsmq7M4AfCIYIAUgB4UgBoMgBSAHg4UgBUIkiSAFQh6JhSAFQhmJhXwgGnwiBnwiCyAVIBSFgyAUhXwgC0IyiSALQi6JhSALQheJhXxC88aPu/fJss7bAHwiGiAGIAWFIAeDIAYgBYOFIAZCJIkgBkIeiYUgBkIZiYV8IBt8Igd8IhMgCyAVhYMgFYV8IBNCMokgE0IuiYUgE0IXiYV8QqPxyrW9/puX6AB8IhsgByAGhSAFgyAHIAaDhSAHQiSJIAdCHomFIAdCGYmFfCAWfCIFfCIUIBMgC4WDIAuFfCAUQjKJIBRCLomFIBRCF4mFfEL85b7v5d3gx/QAfCIWIAUgB4UgBoMgBSAHg4UgBUIkiSAFQh6JhSAFQhmJhXwgGXwiBnwiFXwgOyAUfCA+IBN8IDogC3wgFSAUIBOFgyAThXwgFUIyiSAVQi6JhSAVQheJhXxC4N7cmPTt2NL4AHwiGSAGIAWFIAeDIAYgBYOFIAZCJIkgBkIeiYUgBkIZiYV8IBh8Igd8IgsgFSAUhYMgFIV8IAtCMokgC0IuiYUgC0IXiYV8QvLWwo/Kgp7khH98IhggByAGhSAFgyAHIAaDhSAHQiSJIAdCHomFIAdCGYmFfCAafCIFfCITIAsgFYWDIBWFfCATQjKJIBNCLomFIBNCF4mFfELs85DTgcHA44x/fCIaIAUgB4UgBoMgBSAHg4UgBUIkiSAFQh6JhSAFQhmJhXwgG3wiBnwiFCATIAuFgyALhXwgFEIyiSAUQi6JhSAUQheJhXxCqLyMm6L/v9+Qf3wiGyAGIAWFIAeDIAYgBYOFIAZCJIkgBkIeiYUgBkIZiYV8IBZ8Igd8IhV8IEEgFHwgQCATfCA8IAt8IBUgFCAThYMgE4V8IBVCMokgFUIuiYUgFUIXiYV8Qun7ivS9nZuopH98IhYgByAGhSAFgyAHIAaDhSAHQiSJIAdCHomFIAdCGYmFfCAZfCIFfCILIBUgFIWDIBSFfCALQjKJIAtCLomFIAtCF4mFfEKV8pmW+/7o/L5/fCIZIAUgB4UgBoMgBSAHg4UgBUIkiSAFQh6JhSAFQhmJhXwgGHwiBnwiEyALIBWFgyAVhXwgE0IyiSATQi6JhSATQheJhXxCq6bJm66e3rhGfCIYIAYgBYUgB4MgBiAFg4UgBkIkiSAGQh6JhSAGQhmJhXwgGnwiB3wiFCATIAuFgyALhXwgFEIyiSAUQi6JhSAUQheJhXxCnMOZ0e7Zz5NKfCIaIAcgBoUgBYMgByAGg4UgB0IkiSAHQh6JhSAHQhmJhXwgG3wiBXwiFSBHfCBDIBR8IEYgE3wgQiALfCAVIBQgE4WDIBOFfCAVQjKJIBVCLomFIBVCF4mFfEKHhIOO8piuw1F8IhsgBSAHhSAGgyAFIAeDhSAFQiSJIAVCHomFIAVCGYmFfCAWfCIGfCILIBUgFIWDIBSFfCALQjKJIAtCLomFIAtCF4mFfEKe1oPv7Lqf7Wp8IhYgBiAFhSAHgyAGIAWDhSAGQiSJIAZCHomFIAZCGYmFfCAZfCIHfCITIAsgFYWDIBWFfCATQjKJIBNCLomFIBNCF4mFfEL4orvz/u/TvnV8IhkgByAGhSAFgyAHIAaDhSAHQiSJIAdCHomFIAdCGYmFfCAYfCIFfCIUIBMgC4WDIAuFfCAUQjKJIBRCLomFIBRCF4mFfEK6392Qp/WZ+AZ8IhwgBSAHhSAGgyAFIAeDhSAFQiSJIAVCHomFIAVCGYmFfCAafCIGfCIVfCA9Qj+JID1COImFID1CB4iFIDl8IEV8IERCLYkgREIDiYUgREIGiIV8IhggFHwgSCATfCBEIAt8IBUgFCAThYMgE4V8IBVCMokgFUIuiYUgFUIXiYV8QqaxopbauN+xCnwiGiAGIAWFIAeDIAYgBYOFIAZCJIkgBkIeiYUgBkIZiYV8IBt8Igd8IgsgFSAUhYMgFIV8IAtCMokgC0IuiYUgC0IXiYV8Qq6b5PfLgOafEXwiGyAHIAaFIAWDIAcgBoOFIAdCJIkgB0IeiYUgB0IZiYV8IBZ8IgV8IhMgCyAVhYMgFYV8IBNCMokgE0IuiYUgE0IXiYV8QpuO8ZjR5sK4G3wiHSAFIAeFIAaDIAUgB4OFIAVCJIkgBUIeiYUgBUIZiYV8IBl8IgZ8IhQgEyALhYMgC4V8IBRCMokgFEIuiYUgFEIXiYV8QoT7kZjS/t3tKHwiHiAGIAWFIAeDIAYgBYOFIAZCJIkgBkIeiYUgBkIZiYV8IBx8Igd8IhV8ID9CP4kgP0I4iYUgP0IHiIUgO3wgR3wgPkI/iSA+QjiJhSA+QgeIhSA6fCBGfCAYQi2JIBhCA4mFIBhCBoiFfCIWQi2JIBZCA4mFIBZCBoiFfCIZIBR8IEogE3wgFiALfCAVIBQgE4WDIBOFfCAVQjKJIBVCLomFIBVCF4mFfEKTyZyGtO+q5TJ8IgsgByAGhSAFgyAHIAaDhSAHQiSJIAdCHomFIAdCGYmFfCAafCIFfCITIBUgFIWDIBSFfCATQjKJIBNCLomFIBNCF4mFfEK8/aauocGvzzx8IhogBSAHhSAGgyAFIAeDhSAFQiSJIAVCHomFIAVCGYmFfCAbfCIGfCIUIBMgFYWDIBWFfCAUQjKJIBRCLomFIBRCF4mFfELMmsDgyfjZjsMAfCIbIAYgBYUgB4MgBiAFg4UgBkIkiSAGQh6JhSAGQhmJhXwgHXwiB3wiFSAUIBOFgyAThXwgFUIyiSAVQi6JhSAVQheJhXxCtoX52eyX9eLMAHwiHCAHIAaFIAWDIAcgBoOFIAdCJIkgB0IeiYUgB0IZiYV8IB58IgV8IhYgTXw3A8CKAUEAIFAgBSAHhSAGgyAFIAeDhSAFQiSJIAVCHomFIAVCGYmFfCALfCIGIAWFIAeDIAYgBYOFIAZCJIkgBkIeiYUgBkIZiYV8IBp8IgcgBoUgBYMgByAGg4UgB0IkiSAHQh6JhSAHQhmJhXwgG3wiBSAHhSAGgyAFIAeDhSAFQiSJIAVCHomFIAVCGYmFfCAcfCILfDcDoIoBQQAgTiBAQj+JIEBCOImFIEBCB4iFIDx8IEh8IBlCLYkgGUIDiYUgGUIGiIV8IhkgE3wgFiAVIBSFgyAUhXwgFkIyiSAWQi6JhSAWQheJhXxCqvyV48+zyr/ZAHwiGiAGfCITfDcDuIoBQQAgUiALIAWFIAeDIAsgBYOFIAtCJIkgC0IeiYUgC0IZiYV8IBp8IgZ8NwOYigFBACBPIEFCP4kgQUI4iYUgQUIHiIUgQHwgGHwgS0ItiSBLQgOJhSBLQgaIhXwgFHwgEyAWIBWFgyAVhXwgE0IyiSATQi6JhSATQheJhXxC7PXb1rP12+XfAHwiGCAHfCIUfDcDsIoBQQAgVCAGIAuFIAWDIAYgC4OFIAZCJIkgBkIeiYUgBkIZiYV8IBh8Igd8NwOQigFBACBMIEVCP4kgRUI4iYUgRUIHiIUgQXwgSXwgGUItiSAZQgOJhSAZQgaIhXwgFXwgFCATIBaFgyAWhXwgFEIyiSAUQi6JhSAUQheJhXxCl7Cd0sSxhqLsAHwiEyAFfHw3A6iKAUEAIAEgByAGhSALgyAHIAaDhSAHQiSJIAdCHomFIAdCGYmFfCATfHw3A4iKAQvzCQIBfgR/QQApA4CKASIAp0EDdkEPcSIBQQN0QYCJAWoiAiACKQMAQn8gAEIDhiIAhkJ/hYNCgAEgAIaFNwMAIAFBAWohAwJAIAFBDkkNAAJAIANBD0cNAEEAQgA3A/iJAQtBgIkBEANBACEDCyADIQQCQEEHIANrQQdxIgJFDQAgAyACaiEEIANBA3RBgIkBaiEBA0AgAUIANwMAIAFBCGohASACQX9qIgINAAsLAkAgA0F4akEHSQ0AIARBA3QhAQNAIAFBuIkBakIANwMAIAFBsIkBakIANwMAIAFBqIkBakIANwMAIAFBoIkBakIANwMAIAFBmIkBakIANwMAIAFBkIkBakIANwMAIAFBiIkBakIANwMAIAFBgIkBakIANwMAIAFBwABqIgFB+ABHDQALC0EAIQFBAEEAKQOAigEiAEI7hiAAQiuGQoCAgICAgMD/AIOEIABCG4ZCgICAgIDgP4MgAEILhkKAgICA8B+DhIQgAEIFiEKAgID4D4MgAEIViEKAgPwHg4QgAEIliEKA/gODIABCA4ZCOIiEhIQ3A/iJAUGAiQEQA0EAQQApA8CKASIAQjiGIABCgP4Dg0IohoQgAEKAgPwHg0IYhiAAQoCAgPgPg0IIhoSEIABCCIhCgICA+A+DIABCGIhCgID8B4OEIABCKIhCgP4DgyAAQjiIhISENwPAigFBAEEAKQO4igEiAEI4hiAAQoD+A4NCKIaEIABCgID8B4NCGIYgAEKAgID4D4NCCIaEhCAAQgiIQoCAgPgPgyAAQhiIQoCA/AeDhCAAQiiIQoD+A4MgAEI4iISEhDcDuIoBQQBBACkDsIoBIgBCOIYgAEKA/gODQiiGhCAAQoCA/AeDQhiGIABCgICA+A+DQgiGhIQgAEIIiEKAgID4D4MgAEIYiEKAgPwHg4QgAEIoiEKA/gODIABCOIiEhIQ3A7CKAUEAQQApA6iKASIAQjiGIABCgP4Dg0IohoQgAEKAgPwHg0IYhiAAQoCAgPgPg0IIhoSEIABCCIhCgICA+A+DIABCGIhCgID8B4OEIABCKIhCgP4DgyAAQjiIhISENwOoigFBAEEAKQOgigEiAEI4hiAAQoD+A4NCKIaEIABCgID8B4NCGIYgAEKAgID4D4NCCIaEhCAAQgiIQoCAgPgPgyAAQhiIQoCA/AeDhCAAQiiIQoD+A4MgAEI4iISEhDcDoIoBQQBBACkDmIoBIgBCOIYgAEKA/gODQiiGhCAAQoCA/AeDQhiGIABCgICA+A+DQgiGhIQgAEIIiEKAgID4D4MgAEIYiEKAgPwHg4QgAEIoiEKA/gODIABCOIiEhIQ3A5iKAUEAQQApA5CKASIAQjiGIABCgP4Dg0IohoQgAEKAgPwHg0IYhiAAQoCAgPgPg0IIhoSEIABCCIhCgICA+A+DIABCGIhCgID8B4OEIABCKIhCgP4DgyAAQjiIhISENwOQigFBAEEAKQOIigEiAEI4hiAAQoD+A4NCKIaEIABCgID8B4NCGIYgAEKAgID4D4NCCIaEhCAAQgiIQoCAgPgPgyAAQhiIQoCA/AeDhCAAQiiIQoD+A4MgAEI4iISEhDcDiIoBAkBBACgCyIoBIgNFDQBBACECA0AgAUGACWogAUGIigFqLQAAOgAAIAFBAWohASADIAJBAWoiAkH/AXFLDQALCwsGAEGAiQELoQIAQQBCADcDgIoBQQBBMEHAACABQYADRiIBGzYCyIoBQQBCpJ/p99uD0trHAEL5wvibkaOz8NsAIAEbNwPAigFBAEKnn+an1sGLhltC6/qG2r+19sEfIAEbNwO4igFBAEKRquDC9tCS2o5/Qp/Y+dnCkdqCm38gARs3A7CKAUEAQrGWgP7/zMmZ5wBC0YWa7/rPlIfRACABGzcDqIoBQQBCubK5uI+b+5cVQvHt9Pilp/2npX8gARs3A6CKAUEAQpe6w4Ojq8CskX9Cq/DT9K/uvLc8IAEbNwOYigFBAEKHqvOzo6WKzeIAQrvOqqbY0Ouzu38gARs3A5CKAUEAQti9lojcq+fdS0KIkvOd/8z5hOoAIAEbNwOIigEgABACEAQLCwsBAEGACAsE0AAAAA==",yM="f2e40eb1",C0={name:pM,data:mM,hash:yM};let IM=new o,E0=null;function wM(S){if(E0===null)return E(IM,C0,48).then(q=>(E0=q,E0.calculate(S,384)));try{let q=E0.calculate(S,384);return Promise.resolve(q)}catch(q){return Promise.reject(q)}}function xM(){return v(C0,48).then(S=>{S.init(384);let q={init:()=>(S.init(384),q),update:M=>(S.update(M),q),digest:M=>S.digest(M),save:()=>S.save(),load:M=>(S.load(M),q),blockSize:128,digestSize:48};return q})}let CM=new o,B0=null;function EM(S){if(B0===null)return E(CM,C0,64).then(q=>(B0=q,B0.calculate(S,512)));try{let q=B0.calculate(S,512);return Promise.resolve(q)}catch(q){return Promise.reject(q)}}function BM(){return v(C0,64).then(S=>{S.init(512);let q={init:()=>(S.init(512),q),update:M=>(S.update(M),q),digest:M=>S.digest(M),save:()=>S.save(),load:M=>(S.load(M),q),blockSize:128,digestSize:64};return q})}var bM="xxhash32",vM="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",kM="4bb12485",gv={name:bM,data:vM,hash:kM};let SM=new o,b0=null;function v0(S){return!Number.isInteger(S)||S<0||S>4294967295?new Error("Seed must be a valid 32-bit long unsigned integer."):null}function DM(S,q=0){if(v0(q))return Promise.reject(v0(q));if(b0===null)return E(SM,gv,4).then(M=>(b0=M,b0.calculate(S,q)));try{let M=b0.calculate(S,q);return Promise.resolve(M)}catch(M){return Promise.reject(M)}}function QM(S=0){return v0(S)?Promise.reject(v0(S)):v(gv,4).then(q=>{q.init(S);let M={init:()=>(q.init(S),M),update:Y=>(q.update(Y),M),digest:Y=>q.digest(Y),save:()=>q.save(),load:Y=>(q.load(Y),M),blockSize:16,digestSize:4};return M})}var _M="xxhash64",FM="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",PM="177fbfa3",pv={name:_M,data:FM,hash:PM};let TM=new o,hl=null,k0=new Uint8Array(8);function Eo(S){return!Number.isInteger(S)||S<0||S>4294967295?new Error("Seed must be given as two valid 32-bit long unsigned integers (lo + high)."):null}function tx(S,q,M){let Y=new DataView(S);Y.setUint32(0,q,!0),Y.setUint32(4,M,!0)}function UM(S,q=0,M=0){if(Eo(q))return Promise.reject(Eo(q));if(Eo(M))return Promise.reject(Eo(M));if(hl===null)return E(TM,pv,8).then(Y=>(hl=Y,tx(k0.buffer,q,M),hl.writeMemory(k0),hl.calculate(S)));try{tx(k0.buffer,q,M),hl.writeMemory(k0);let Y=hl.calculate(S);return Promise.resolve(Y)}catch(Y){return Promise.reject(Y)}}function RM(S=0,q=0){return Eo(S)?Promise.reject(Eo(S)):Eo(q)?Promise.reject(Eo(q)):v(pv,8).then(M=>{let Y=new Uint8Array(8);tx(Y.buffer,S,q),M.writeMemory(Y),M.init();let ie={init:()=>(M.writeMemory(Y),M.init(),ie),update:ae=>(M.update(ae),ie),digest:ae=>M.digest(ae),save:()=>M.save(),load:ae=>(M.load(ae),ie),blockSize:32,digestSize:8};return ie})}var NM="xxhash3",qM="AGFzbQEAAAABNAhgAAF/YAR/f39/AGAHf39/f39/fwBgBH9+fn4BfmAEf39/fgF+YAN/f34BfmAAAGABfwADDg0AAQIDBAUFBQYHBgAGBQQBAQICBg4CfwFBwI4FC38AQcAJCwdwCAZtZW1vcnkCAA5IYXNoX0dldEJ1ZmZlcgAACUhhc2hfSW5pdAAIC0hhc2hfVXBkYXRlAAkKSGFzaF9GaW5hbAAKDUhhc2hfR2V0U3RhdGUACw5IYXNoX0NhbGN1bGF0ZQAMClNUQVRFX1NJWkUDAQr6QQ0FAEGACgvkAwMPfgF/AX4CQCADRQ0AIAApAzAhBCAAKQM4IQUgACkDICEGIAApAyghByAAKQMQIQggACkDGCEJIAApAwAhCiAAKQMIIQsDQCAFIAFBMGopAwAiDHwgAkE4aikDACABQThqKQMAIg2FIgVCIIggBUL/////D4N+fCEFIAcgAUEgaikDACIOfCACQShqKQMAIAFBKGopAwAiD4UiB0IgiCAHQv////8Pg358IQcgCSABQRBqKQMAIhB8IAJBGGopAwAgAUEYaikDACIRhSIJQiCIIAlC/////w+DfnwhCSALIAEpAwAiEnwgAkEIaiITKQMAIAFBCGopAwAiFIUiC0IgiCALQv////8Pg358IQsgAkEwaikDACAMhSIMQiCIIAxC/////w+DfiAEfCANfCEEIAJBIGopAwAgDoUiDEIgiCAMQv////8Pg34gBnwgD3whBiACQRBqKQMAIBCFIgxCIIggDEL/////D4N+IAh8IBF8IQggAikDACAShSIMQiCIIAxC/////w+DfiAKfCAUfCEKIAFBwABqIQEgEyECIANBf2oiAw0ACyAAIAk3AxggACAKNwMAIAAgCzcDCCAAIAc3AyggACAINwMQIAAgBTcDOCAAIAY3AyAgACAENwMwCwveAgIBfwF+AkAgBCACIAEoAgAiB2siAkkNACAAIAMgBSAHQQN0aiACEAEgACAFIAZqIgcpAwAgACkDACIIQi+IhSAIhUKx893xCX43AwAgACAHKQMIIAApAwgiCEIviIUgCIVCsfPd8Ql+NwMIIAAgBykDECAAKQMQIghCL4iFIAiFQrHz3fEJfjcDECAAIAcpAxggACkDGCIIQi+IhSAIhUKx893xCX43AxggACAHKQMgIAApAyAiCEIviIUgCIVCsfPd8Ql+NwMgIAAgBykDKCAAKQMoIghCL4iFIAiFQrHz3fEJfjcDKCAAIAcpAzAgACkDMCIIQi+IhSAIhUKx893xCX43AzAgACAHKQM4IAApAzgiCEIviIUgCIVCsfPd8Ql+NwM4IAAgAyACQQZ0aiAFIAQgAmsiBxABIAEgBzYCAA8LIAAgAyAFIAdBA3RqIAQQASABIAcgBGo2AgALhQEBAX8gAiABhSADpyIEQRh0IARBgP4DcUEIdHIgBEEIdkGA/gNxIARBGHZycq1CIIYgA4V9QQA1AoCMAUIghiAAQfyLAWo1AgCEhSIDQjGJIANCGImFIAOFQqW+4/TRjIfZn39+IgNCI4ggAK18IAOFQqW+4/TRjIfZn39+IgNCHIggA4ULZwAgAiABc60gA3wiA0IhiEEALQCAjAFBEHQgAEEIdHIgAEEBdkGAjAFqLQAAQRh0ciAAQf+LAWotAAByrYUgA4VCz9bTvtLHq9lCfiIDQh2IIAOFQvnz3fGZ9pmrFn4iA0IgiCADhQuJAwEEfgJAIABBCUkNAEEAKQOAjAEgASkDICABKQMYhSACfIUiA0I4hiADQoD+A4NCKIaEIANCgID8B4NCGIYgA0KAgID4D4NCCIaEhCADQgiIQoCAgPgPgyADQhiIQoCA/AeDhCADQiiIQoD+A4MgA0I4iISEhCAArXwgAEH4iwFqKQMAIAEpAzAgASkDKIUgAn2FIgJ8IAJC/////w+DIgQgA0IgiCIFfiIGQv////8PgyACQiCIIgIgA0L/////D4MiA358IAQgA34iA0IgiHwiBEIghiADQv////8Pg4QgBkIgiCACIAV+fCAEQiCIfIV8IgNCJYggA4VC+fPd8ZnymasWfiIDQiCIIAOFDwsCQCAAQQRJDQAgACABQQhqKQMAIAFBEGopAwAgAhADDwsCQCAARQ0AIAAgASgCACABQQRqKAIAIAIQBA8LIAEpAzggASkDQIUgAoUiA0IhiCADhULP1tO+0ser2UJ+IgNCHYggA4VC+fPd8Zn2masWfiIDQiCIIAOFC94IAQZ+IACtQoeVr6+Ytt6bnn9+IQMCQCAAQSFJDQACQCAAQcEASQ0AAkAgAEHhAEkNACABKQNoIAJ9QQApA7iMAYUiBEL/////D4MiBSABKQNgIAJ8QQApA7CMAYUiBkIgiCIHfiIIQv////8PgyAEQiCIIgQgBkL/////D4MiBn58IAUgBn4iBUIgiHwiBkIghiAFQv////8Pg4QgCEIgiCAEIAd+fCAGQiCIfIUgA3wgASkDeCACfSAAQciLAWopAwCFIgNC/////w+DIgQgASkDcCACfCAAQcCLAWopAwCFIgVCIIgiBn4iB0L/////D4MgA0IgiCIDIAVC/////w+DIgV+fCAEIAV+IgRCIIh8IgVCIIYgBEL/////D4OEIAdCIIggAyAGfnwgBUIgiHyFfCEDCyABKQNIIAJ9QQApA6iMAYUiBEL/////D4MiBSABKQNAIAJ8QQApA6CMAYUiBkIgiCIHfiIIQv////8PgyAEQiCIIgQgBkL/////D4MiBn58IAUgBn4iBUIgiHwiBkIghiAFQv////8Pg4QgCEIgiCAEIAd+fCAGQiCIfIUgA3wgASkDWCACfSAAQdiLAWopAwCFIgNC/////w+DIgQgASkDUCACfCAAQdCLAWopAwCFIgVCIIgiBn4iB0L/////D4MgA0IgiCIDIAVC/////w+DIgV+fCAEIAV+IgRCIIh8IgVCIIYgBEL/////D4OEIAdCIIggAyAGfnwgBUIgiHyFfCEDCyABKQMoIAJ9QQApA5iMAYUiBEL/////D4MiBSABKQMgIAJ8QQApA5CMAYUiBkIgiCIHfiIIQv////8PgyAEQiCIIgQgBkL/////D4MiBn58IAUgBn4iBUIgiHwiBkIghiAFQv////8Pg4QgCEIgiCAEIAd+fCAGQiCIfIUgA3wgASkDOCACfSAAQeiLAWopAwCFIgNC/////w+DIgQgASkDMCACfCAAQeCLAWopAwCFIgVCIIgiBn4iB0L/////D4MgA0IgiCIDIAVC/////w+DIgV+fCAEIAV+IgRCIIh8IgVCIIYgBEL/////D4OEIAdCIIggAyAGfnwgBUIgiHyFfCEDCyABKQMIIAJ9QQApA4iMAYUiBEL/////D4MiBSABKQMAIAJ8QQApA4CMAYUiBkIgiCIHfiIIQv////8PgyAEQiCIIgQgBkL/////D4MiBn58IAUgBn4iBUIgiHwiBkIghiAFQv////8Pg4QgCEIgiCAEIAd+fCAGQiCIfIUgA3wgASkDGCACfSAAQfiLAWopAwCFIgNC/////w+DIgQgASkDECACfCAAQfCLAWopAwCFIgJCIIgiBX4iBkL/////D4MgA0IgiCIDIAJC/////w+DIgJ+fCAEIAJ+IgJCIIh8IgRCIIYgAkL/////D4OEIAZCIIggAyAFfnwgBEIgiHyFfCICQiWIIAKFQvnz3fGZ8pmrFn4iAkIgiCAChQv8CgQBfwV+An8BfkEAIQMgASkDeCACfUEAKQP4jAGFIgRC/////w+DIgUgASkDcCACfEEAKQPwjAGFIgZCIIgiB34iCEL/////D4MgBEIgiCIEIAZC/////w+DIgZ+fCAFIAZ+IgVCIIh8IgZCIIYgBUL/////D4OEIAhCIIggBCAHfnwgBkIgiHyFIAEpA2ggAn1BACkD6IwBhSIEQv////8PgyIFIAEpA2AgAnxBACkD4IwBhSIGQiCIIgd+IghC/////w+DIARCIIgiBCAGQv////8PgyIGfnwgBSAGfiIFQiCIfCIGQiCGIAVC/////w+DhCAIQiCIIAQgB358IAZCIIh8hSABKQNYIAJ9QQApA9iMAYUiBEL/////D4MiBSABKQNQIAJ8QQApA9CMAYUiBkIgiCIHfiIIQv////8PgyAEQiCIIgQgBkL/////D4MiBn58IAUgBn4iBUIgiHwiBkIghiAFQv////8Pg4QgCEIgiCAEIAd+fCAGQiCIfIUgASkDSCACfUEAKQPIjAGFIgRC/////w+DIgUgASkDQCACfEEAKQPAjAGFIgZCIIgiB34iCEL/////D4MgBEIgiCIEIAZC/////w+DIgZ+fCAFIAZ+IgVCIIh8IgZCIIYgBUL/////D4OEIAhCIIggBCAHfnwgBkIgiHyFIAEpAzggAn1BACkDuIwBhSIEQv////8PgyIFIAEpAzAgAnxBACkDsIwBhSIGQiCIIgd+IghC/////w+DIARCIIgiBCAGQv////8PgyIGfnwgBSAGfiIFQiCIfCIGQiCGIAVC/////w+DhCAIQiCIIAQgB358IAZCIIh8hSABKQMoIAJ9QQApA6iMAYUiBEL/////D4MiBSABKQMgIAJ8QQApA6CMAYUiBkIgiCIHfiIIQv////8PgyAEQiCIIgQgBkL/////D4MiBn58IAUgBn4iBUIgiHwiBkIghiAFQv////8Pg4QgCEIgiCAEIAd+fCAGQiCIfIUgASkDGCACfUEAKQOYjAGFIgRC/////w+DIgUgASkDECACfEEAKQOQjAGFIgZCIIgiB34iCEL/////D4MgBEIgiCIEIAZC/////w+DIgZ+fCAFIAZ+IgVCIIh8IgZCIIYgBUL/////D4OEIAhCIIggBCAHfnwgBkIgiHyFIAEpAwggAn1BACkDiIwBhSIEQv////8PgyIFIAEpAwAgAnxBACkDgIwBhSIGQiCIIgd+IghC/////w+DIARCIIgiBCAGQv////8PgyIGfnwgBSAGfiIFQiCIfCIGQiCGIAVC/////w+DhCAIQiCIIAQgB358IAZCIIh8hSAArUKHla+vmLbem55/fnx8fHx8fHx8IgRCJYggBIVC+fPd8ZnymasWfiIEQiCIIASFIQQCQCAAQZABSA0AIABBBHZBeGohCQNAIAEgA2oiCkELaikDACACfSADQYiNAWopAwCFIgVC/////w+DIgYgCkEDaikDACACfCADQYCNAWopAwCFIgdCIIgiCH4iC0L/////D4MgBUIgiCIFIAdC/////w+DIgd+fCAGIAd+IgZCIIh8IgdCIIYgBkL/////D4OEIAtCIIggBSAIfnwgB0IgiHyFIAR8IQQgA0EQaiEDIAlBf2oiCQ0ACwsgASkDfyACfSAAQfiLAWopAwCFIgVC/////w+DIgYgASkDdyACfCAAQfCLAWopAwCFIgJCIIgiB34iCEL/////D4MgBUIgiCIFIAJC/////w+DIgJ+fCAGIAJ+IgJCIIh8IgZCIIYgAkL/////D4OEIAhCIIggBSAHfnwgBkIgiHyFIAR8IgJCJYggAoVC+fPd8ZnymasWfiICQiCIIAKFC98FAgF+AX8CQAJAQQApA4AKIgBQRQ0AQYAIIQFCACEADAELAkBBACkDoI4BIABSDQBBACEBDAELQQAhAUEAQq+v79e895Kg/gAgAH03A/iLAUEAIABCxZbr+djShYIofDcD8IsBQQBCj/Hjja2P9JhOIAB9NwPoiwFBACAAQqus+MXV79HQfHw3A+CLAUEAQtOt1LKShbW0nn8gAH03A9iLAUEAIABCl5r0jvWWvO3JAHw3A9CLAUEAQsWDgv2v/8SxayAAfTcDyIsBQQAgAELqi7OdyOb09UN8NwPAiwFBAELIv/rLnJveueQAIAB9NwO4iwFBACAAQoqjgd/Ume2sMXw3A7CLAUEAQvm57738+MKnHSAAfTcDqIsBQQAgAEKo9dv7s5ynmj98NwOgiwFBAEK4sry3lNW31lggAH03A5iLAUEAIABC8cihuqm0w/zOAHw3A5CLAUEAQoihl9u445SXo38gAH03A4iLAUEAIABCvNDI2pvysIBLfDcDgIsBQQBC4OvAtJ7QjpPMACAAfTcD+IoBQQAgAEK4kZii9/6Qko5/fDcD8IoBQQBCgrXB7sf5v7khIAB9NwPoigFBACAAQsvzmffEmfDy+AB8NwPgigFBAELygJGl+vbssx8gAH03A9iKAUEAIABC3qm3y76Q5MtbfDcD0IoBQQBC/IKE5PK+yNYcIAB9NwPIigFBACAAQrj9s8uzhOmlvn98NwPAigELQQBCADcDkI4BQQBCADcDiI4BQQBCADcDgI4BQQBCvdzKlQw3A4CKAUEAQoeVr6+Ytt6bnn83A4iKAUEAQs/W077Sx6vZQjcDkIoBQQBC+fPd8Zn2masWNwOYigFBAELj3MqV/M7y9YV/NwOgigFBAEL3lK+vCDcDqIoBQQBCxc/ZsvHluuonNwOwigFBAEKx893xCTcDuIoBQQAgADcDoI4BQQAgATYCsI4BQQBCkICAgIAQNwOYjgEL9AkBCH9BAEEAKQOQjgEgAK18NwOQjgECQAJAAkBBACgCgI4BIgEgAGoiAkGAAksNACABQYCMAWohA0GACiEEAkAgAEEITw0AIAAhAQwCCwJAAkAgAEF4aiIFQQN2QQFqQQdxIgYNAEGACiEEIAAhAQwBCyAGQQN0IQFBgAohBANAIAMgBCkDADcDACADQQhqIQMgBEEIaiEEIAZBf2oiBg0ACyAAIAFrIQELIAVBOEkNAQNAIAMgBCkDADcDACADQQhqIARBCGopAwA3AwAgA0EQaiAEQRBqKQMANwMAIANBGGogBEEYaikDADcDACADQSBqIARBIGopAwA3AwAgA0EoaiAEQShqKQMANwMAIANBMGogBEEwaikDADcDACADQThqIARBOGopAwA3AwAgA0HAAGohAyAEQcAAaiEEIAFBQGoiAUEHSw0ADAILC0GACiEEIABBgApqIQVBACgCsI4BIgNBwIoBIAMbIQYCQCABRQ0AIAFBgIwBaiEDQYAKIQQCQAJAQYACIAFrIgdBCE8NACAHIQAMAQsCQAJAQfgBIAFrIghBA3ZBAWpBB3EiAg0AQYAKIQQgByEADAELQYAKIQQgAkEDdCIAIQIDQCADIAQpAwA3AwAgA0EIaiEDIARBCGohBCACQXhqIgINAAtBgAIgASAAamshAAsgCEE4SQ0AA0AgAyAEKQMANwMAIANBCGogBEEIaikDADcDACADQRBqIARBEGopAwA3AwAgA0EYaiAEQRhqKQMANwMAIANBIGogBEEgaikDADcDACADQShqIARBKGopAwA3AwAgA0EwaiAEQTBqKQMANwMAIANBOGogBEE4aikDADcDACADQcAAaiEDIARBwABqIQQgAEFAaiIAQQdLDQALCwJAIABFDQACQAJAIABBB3EiAg0AIAAhAQwBCyAAQXhxIQEDQCADIAQtAAA6AAAgA0EBaiEDIARBAWohBCACQX9qIgINAAsLIABBCEkNAANAIAMgBCkAADcAACADQQhqIQMgBEEIaiEEIAFBeGoiAQ0ACwtBgIoBQYiOAUEAKAKYjgFBgIwBQQQgBkEAKAKcjgEQAkEAQQA2AoCOASAHQYAKaiEECwJAIARBgAJqIAVPDQAgBUGAfmohAgNAQYCKAUGIjgFBACgCmI4BIAQiA0EEIAZBACgCnI4BEAIgA0GAAmoiBCACSQ0AC0EAIAMpA8ABNwPAjQFBACADKQPIATcDyI0BQQAgAykD0AE3A9CNAUEAIAMpA9gBNwPYjQFBACADKQPgATcD4I0BQQAgAykD6AE3A+iNAUEAIAMpA/ABNwPwjQFBACADKQP4ATcD+I0BC0GAjAEhAwJAAkAgBSAEayICQQhPDQAgAiEGDAELQYCMASEDIAIhBgNAIAMgBCkDADcDACADQQhqIQMgBEEIaiEEIAZBeGoiBkEHSw0ACwsgBkUNAQNAIAMgBC0AADoAACADQQFqIQMgBEEBaiEEIAZBf2oiBg0ADAILCyABRQ0AAkACQCABQQdxIgYNACABIQIMAQsgAUF4cSECA0AgAyAELQAAOgAAIANBAWohAyAEQQFqIQQgBkF/aiIGDQALCwJAIAFBCEkNAANAIAMgBCkAADcAACADQQhqIQMgBEEIaiEEIAJBeGoiAg0ACwtBACgCgI4BIABqIQILQQAgAjYCgI4BC/ISBQR/A34BfxV+BX8jACIAIQEgAEGAAWtBQHEiAiQAQQAoArCOASIAQcCKASAAGyEDAkACQEEAKQOQjgEiBELxAVQNACACQQApA4CKATcDACACQQApA4iKATcDCCACQQApA5CKATcDECACQQApA5iKATcDGCACQQApA6CKATcDICACQQApA6iKATcDKCACQQApA7CKASIFNwMwIAJBACkDuIoBIgY3AzgCQAJAQQAoAoCOASIHQcAASQ0AIAJBACgCiI4BNgJAIAIgAkHAAGpBACgCmI4BQYCMASAHQX9qQQZ2IANBACgCnI4BIgAQAiADIABqIgBBeWopAwAhCCAAKQMJIQkgACkDGSEKIAApAykhCyAHQcCLAWopAwAhBSAAKQMBIQwgB0HIiwFqKQMAIQYgB0HQiwFqKQMAIQ0gACkDESEOIAdB2IsBaikDACEPIAdB4IsBaikDACEQIAApAyEhESAHQeiLAWopAwAhEiACKQMAIRMgAikDECEUIAIpAyAhFSACKQMwIRYgAikDCCEXIAIpAxghGCACKQMoIRkgAiACKQM4IAdB8IsBaikDACIafCAAKQMxIAdB+IsBaikDACIbhSIcQiCIIBxC/////w+Dfnw3AzggGSAQfCARIBKFIhFCIIggEUL/////D4N+fCERIBggDXwgDiAPhSIOQiCIIA5C/////w+DfnwhDiAXIAV8IAwgBoUiDEIgiCAMQv////8Pg358IQwgGyAWIAsgGoUiC0IgiCALQv////8Pg358fCELIBIgFSAKIBCFIhBCIIggEEL/////D4N+fHwhECAPIBQgCSANhSINQiCIIA1C/////w+Dfnx8IRIgBiATIAggBYUiBUIgiCAFQv////8Pg358fCEIDAELIAdBwI0BaiEdQcAAIAdrIR4gAkHAAGohAAJAAkACQCAHQThNDQAgHiEfDAELAkACQEE4IAdrQQN2QQFqQQdxIh8NACACQcAAaiEAIB4hHwwBCyACQcAAaiEAIB9BA3QiICEfA0AgACAdKQMANwMAIABBCGohACAdQQhqIR0gH0F4aiIfDQALQcAAIAcgIGprIR8LAkAgBw0AA0AgACAdKQMANwMAIABBCGogHUEIaikDADcDACAAQRBqIB1BEGopAwA3AwAgAEEYaiAdQRhqKQMANwMAIABBIGogHUEgaikDADcDACAAQShqIB1BKGopAwA3AwAgAEEwaiAdQTBqKQMANwMAIABBOGogHUE4aikDADcDACAAQcAAaiEAIB1BwABqIR0gH0FAaiIfQQdLDQALCyAfRQ0BCyAfQX9qISECQCAfQQdxIiBFDQAgH0F4cSEfA0AgACAdLQAAOgAAIABBAWohACAdQQFqIR0gIEF/aiIgDQALCyAhQQdJDQADQCAAIB0pAAA3AAAgAEEIaiEAIB1BCGohHSAfQXhqIh8NAAsLIAJBwABqIB5qIR1BgIwBIQACQAJAAkAgB0EISQ0AAkAgB0E4akEDdkEBakEHcSIfDQAMAgsgH0EDdCEgQYCMASEAA0AgHSAAKQMANwMAIB1BCGohHSAAQQhqIQAgH0F/aiIfDQALIAcgIGshBwsgB0UNAQJAAkAgB0EHcSIgDQAgByEfDAELIAdBeHEhHwNAIB0gAC0AADoAACAdQQFqIR0gAEEBaiEAICBBf2oiIA0ACwsgB0EISQ0BCwNAIB0gACkAADcAACAdQQhqIR0gAEEIaiEAIB9BeGoiHw0ACwsgA0EAKAKcjgFqIgBBeWopAwAhCiAAKQMJIRMgACkDGSEUIAApAykhCyAAKQMBIQwgACkDESEOIAApAyEhESACKQMAIRUgAikDECEWIAIpAyAhFyACKQMIIRggAikDQCENIAIpA0ghDyACKQMYIRkgAikDUCESIAIpA1ghCCACKQMoIRogAikDYCEQIAIpA2ghCSACIAYgAikDcCIbfCAAKQMxIAIpA3giBoUiHEIgiCAcQv////8Pg358NwM4IBogEHwgESAJhSIRQiCIIBFC/////w+DfnwhESAZIBJ8IA4gCIUiDkIgiCAOQv////8Pg358IQ4gGCANfCAMIA+FIgxCIIggDEL/////D4N+fCEMIAYgCyAbhSILQiCIIAtC/////w+DfiAFfHwhCyAJIBcgFCAQhSIFQiCIIAVC/////w+Dfnx8IRAgCCAWIBMgEoUiBUIgiCAFQv////8Pg358fCESIA8gFSAKIA2FIgVCIIggBUL/////D4N+fHwhCAsgAykDQyACKQM4hSIFQv////8PgyIGIAMpAzsgC4UiC0IgiCINfiIPQv////8PgyAFQiCIIgUgC0L/////D4MiC358IAYgC34iBkIgiHwiC0IghiAGQv////8Pg4QgD0IgiCAFIA1+fCALQiCIfIUgAykDMyARhSIFQv////8PgyIGIAMpAysgEIUiC0IgiCINfiIPQv////8PgyAFQiCIIgUgC0L/////D4MiC358IAYgC34iBkIgiHwiC0IghiAGQv////8Pg4QgD0IgiCAFIA1+fCALQiCIfIUgAykDIyAOhSIFQv////8PgyIGIAMpAxsgEoUiC0IgiCINfiIPQv////8PgyAFQiCIIgUgC0L/////D4MiC358IAYgC34iBkIgiHwiC0IghiAGQv////8Pg4QgD0IgiCAFIA1+fCALQiCIfIUgAykDEyAMhSIFQv////8PgyIGIAMpAwsgCIUiC0IgiCINfiIPQv////8PgyAFQiCIIgUgC0L/////D4MiC358IAYgC34iBkIgiHwiC0IghiAGQv////8Pg4QgD0IgiCAFIA1+fCALQiCIfIUgBEKHla+vmLbem55/fnx8fHwiBEIliCAEhUL5893xmfKZqxZ+IgRCIIggBIUhBAwBCyAEpyEAAkBBACkDoI4BIgRQDQACQCAAQRBLDQAgAEGACCAEEAUhBAwCCwJAIABBgAFLDQAgAEGACCAEEAYhBAwCCyAAQYAIIAQQByEEDAELAkAgAEEQSw0AIAAgA0IAEAUhBAwBCwJAIABBgAFLDQAgACADQgAQBiEEDAELIAAgA0IAEAchBAtBACAEQjiGIARCgP4Dg0IohoQgBEKAgPwHg0IYhiAEQoCAgPgPg0IIhoSEIARCCIhCgICA+A+DIARCGIhCgID8B4OEIARCKIhCgP4DgyAEQjiIhISENwOACiABJAALBgBBgIoBCwIACwvMAQEAQYAIC8QBuP5sOSOkS758AYEs9yGtHN7UbemDkJfbckCkpLezZx/LeeZOzMDleIJa0H3M/3IhuAhGdPdDJI7gNZDmgTomTDwoUruRwwDLiNBlixtTLqNxZEiXog35TjgZ70ap3qzYqPp2P+OcND/53LvHxwtPHYpR4EvNtFkxyJ9+ydl4c2TqxayDNNPrw8WBoP/6E2PrFw3dUbfw2knTFlUmKdRonisWvlh9R6H8j/i40XrQMc5FyzqPlRYEKK/X+8q7S0B+QAIAAA==",OM="5a2fbdbb",mv={name:NM,data:qM,hash:OM};let MM=new o,gl=null,S0=new Uint8Array(8);function Bo(S){return!Number.isInteger(S)||S<0||S>4294967295?new Error("Seed must be given as two valid 32-bit long unsigned integers (lo + high)."):null}function rx(S,q,M){let Y=new DataView(S);Y.setUint32(0,q,!0),Y.setUint32(4,M,!0)}function LM(S,q=0,M=0){if(Bo(q))return Promise.reject(Bo(q));if(Bo(M))return Promise.reject(Bo(M));if(gl===null)return E(MM,mv,8).then(Y=>(gl=Y,rx(S0.buffer,q,M),gl.writeMemory(S0),gl.calculate(S)));try{rx(S0.buffer,q,M),gl.writeMemory(S0);let Y=gl.calculate(S);return Promise.resolve(Y)}catch(Y){return Promise.reject(Y)}}function HM(S=0,q=0){return Bo(S)?Promise.reject(Bo(S)):Bo(q)?Promise.reject(Bo(q)):v(mv,8).then(M=>{let Y=new Uint8Array(8);rx(Y.buffer,S,q),M.writeMemory(Y),M.init();let ie={init:()=>(M.writeMemory(Y),M.init(),ie),update:ae=>(M.update(ae),ie),digest:ae=>M.digest(ae),save:()=>M.save(),load:ae=>(M.load(ae),ie),blockSize:512,digestSize:8};return ie})}var KM="xxhash128",GM="AGFzbQEAAAABKwdgAAF/YAR/f39/AGAHf39/f39/fwBgA39/fgF+YAR/f39+AGAAAGABfwADDQwAAQIDBAQEBQYFAAUFBAEBAgIGDgJ/AUHAjgULfwBBwAkLB3AIBm1lbW9yeQIADkhhc2hfR2V0QnVmZmVyAAAJSGFzaF9Jbml0AAcLSGFzaF9VcGRhdGUACApIYXNoX0ZpbmFsAAkNSGFzaF9HZXRTdGF0ZQAKDkhhc2hfQ2FsY3VsYXRlAAsKU1RBVEVfU0laRQMBCqBNDAUAQYAKC+QDAw9+AX8BfgJAIANFDQAgACkDMCEEIAApAzghBSAAKQMgIQYgACkDKCEHIAApAxAhCCAAKQMYIQkgACkDACEKIAApAwghCwNAIAUgAUEwaikDACIMfCACQThqKQMAIAFBOGopAwAiDYUiBUIgiCAFQv////8Pg358IQUgByABQSBqKQMAIg58IAJBKGopAwAgAUEoaikDACIPhSIHQiCIIAdC/////w+DfnwhByAJIAFBEGopAwAiEHwgAkEYaikDACABQRhqKQMAIhGFIglCIIggCUL/////D4N+fCEJIAsgASkDACISfCACQQhqIhMpAwAgAUEIaikDACIUhSILQiCIIAtC/////w+DfnwhCyACQTBqKQMAIAyFIgxCIIggDEL/////D4N+IAR8IA18IQQgAkEgaikDACAOhSIMQiCIIAxC/////w+DfiAGfCAPfCEGIAJBEGopAwAgEIUiDEIgiCAMQv////8Pg34gCHwgEXwhCCACKQMAIBKFIgxCIIggDEL/////D4N+IAp8IBR8IQogAUHAAGohASATIQIgA0F/aiIDDQALIAAgCTcDGCAAIAo3AwAgACALNwMIIAAgBzcDKCAAIAg3AxAgACAFNwM4IAAgBjcDICAAIAQ3AzALC94CAgF/AX4CQCAEIAIgASgCACIHayICSQ0AIAAgAyAFIAdBA3RqIAIQASAAIAUgBmoiBykDACAAKQMAIghCL4iFIAiFQrHz3fEJfjcDACAAIAcpAwggACkDCCIIQi+IhSAIhUKx893xCX43AwggACAHKQMQIAApAxAiCEIviIUgCIVCsfPd8Ql+NwMQIAAgBykDGCAAKQMYIghCL4iFIAiFQrHz3fEJfjcDGCAAIAcpAyAgACkDICIIQi+IhSAIhUKx893xCX43AyAgACAHKQMoIAApAygiCEIviIUgCIVCsfPd8Ql+NwMoIAAgBykDMCAAKQMwIghCL4iFIAiFQrHz3fEJfjcDMCAAIAcpAzggACkDOCIIQi+IhSAIhUKx893xCX43AzggACADIAJBBnRqIAUgBCACayIHEAEgASAHNgIADwsgACADIAUgB0EDdGogBBABIAEgByAEajYCAAvtAwEFfiABKQM4IAApAziFIgNC/////w+DIgQgASkDMCAAKQMwhSIFQiCIIgZ+IgdC/////w+DIANCIIgiAyAFQv////8PgyIFfnwgBCAFfiIEQiCIfCIFQiCGIARC/////w+DhCAHQiCIIAMgBn58IAVCIIh8hSABKQMoIAApAyiFIgNC/////w+DIgQgASkDICAAKQMghSIFQiCIIgZ+IgdC/////w+DIANCIIgiAyAFQv////8PgyIFfnwgBCAFfiIEQiCIfCIFQiCGIARC/////w+DhCAHQiCIIAMgBn58IAVCIIh8hSABKQMYIAApAxiFIgNC/////w+DIgQgASkDECAAKQMQhSIFQiCIIgZ+IgdC/////w+DIANCIIgiAyAFQv////8PgyIFfnwgBCAFfiIEQiCIfCIFQiCGIARC/////w+DhCAHQiCIIAMgBn58IAVCIIh8hSABKQMIIAApAwiFIgNC/////w+DIgQgASkDACAAKQMAhSIFQiCIIgZ+IgdC/////w+DIANCIIgiAyAFQv////8PgyIFfnwgBCAFfiIEQiCIfCIFQiCGIARC/////w+DhCAHQiCIIAMgBn58IAVCIIh8hSACfHx8fCICQiWIIAKFQvnz3fGZ8pmrFn4iAkIgiCAChQu6CAIFfgN/AkAgAUEJSQ0AIAAgAUH4iwFqKQMAIgQgAikDOCACKQMwhSADfIUiBUL/////D4NC95Svrwh+IAVCgICAgHCDfEEAKQOAjAEgAikDKCACKQMghSADfYUgBIUiA0IgiCIEQrHz3fEJfnwgBEKHla+vCH4iBEIgiHwgBEL/////D4MgA0L/////D4MiA0Kx893xCX58IANCh5Wvrwh+IgRCIIh8IgVCIIh8IgNCOIYgA0KA/gODQiiGhCADQoCA/AeDQhiGIANCgICA+A+DQgiGhIQgA0IIiEKAgID4D4MgA0IYiEKAgPwHg4QgA0IoiEKA/gODIANCOIiEhIQgBEL/////D4MgAUF/aq1CNoaEIAVCIIZ8hSIEQiCIIgVCz9bTvgJ+IgZC/////w+DIARC/////w+DIgRCvdzKlQx+fCAEQs/W074CfiIEQiCIfCIHQiCGIghCJYggCCAEQv////8Pg4SFQvnz3fGZ8pmrFn4iBEIgiCAEhTcDACAAIAVCvdzKlQx+IANCz9bTvtLHq9lCfnwgBkIgiHwgB0IgiHwiA0IliCADhUL5893xmfKZqxZ+IgNCIIggA4U3AwgPCwJAIAFBBEkNACAAIAIpAxggAikDEIUgA6ciAkEYdCACQYD+A3FBCHRyIAJBCHZBgP4DcSACQRh2cnKtQiCGIAOFfCABQfyLAWo1AgBCIIZBADUCgIwBhIUiA0IgiCIEIAFBAnRBh5Wvr3hqrSIFfiIGQiCIIARCsfPd8Ql+fCAGQv////8PgyADQv////8PgyIDQrHz3fEJfnwgAyAFfiIDQiCIfCIEQiCIfCAEQiCGIANC/////w+DhCIEQgGGfCIDQiWIIAOFQvnz3fGZ8pmrFn4iBUIgiCAFhTcDCCAAIANCA4ggBIUiA0IjiCADhUKlvuP00YyH2Z9/fiIDQhyIIAOFNwMADwsCQCABRQ0AIAAgAigCBCACKAIAc60gA3wiBEIhiEEALQCAjAFBEHQgAUEIdHIiCSABQQF2QYCMAWotAABBGHRyIgogAUH/iwFqLQAAIgFyIguthSAEhULP1tO+0ser2UJ+IgRCHYggBIVC+fPd8Zn2masWfiIEQiCIIASFNwMAIAAgAigCDCACKAIIc60gA30iA0IhiCABQRh0IAtBgP4DcUEIdHIgCUEIdkGA/gNxIApBGHZyckENd62FIAOFQs/W077Sx6vZQn4iA0IdiCADhUL5893xmfaZqxZ+IgNCIIggA4U3AwgPCyAAIAIpA1AgAikDWIUgA4UiBEIhiCAEhULP1tO+0ser2UJ+IgRCHYggBIVC+fPd8Zn2masWfiIEQiCIIASFNwMIIAAgAikDQCACKQNIhSADhSIDQiGIIAOFQs/W077Sx6vZQn4iA0IdiCADhUL5893xmfaZqxZ+IgNCIIggA4U3AwALwwoBCn4gAa0iBEKHla+vmLbem55/fiEFAkACQCABQSFPDQBCACEGDAELQgAhBwJAIAFBwQBJDQBCACEHAkAgAUHhAEkNACACQfgAaikDACADfSABQciLAWopAwAiCIUiB0L/////D4MiCSACKQNwIAN8IAFBwIsBaikDACIKhSILQiCIIgx+Ig1CIIggB0IgiCIHIAx+fCANQv////8PgyAHIAtC/////w+DIgt+fCAJIAt+IgdCIIh8IglCIIh8QQApA7iMASILQQApA7CMASIMfIUgCUIghiAHQv////8Pg4SFIQcgAkHoAGopAwAgA30gC4UiCUL/////D4MiCyACKQNgIAN8IAyFIgxCIIgiDX4iBkL/////D4MgCUIgiCIJIAxC/////w+DIgx+fCALIAx+IgtCIIh8IgxCIIYgC0L/////D4OEIAZCIIggCSANfnwgDEIgiHyFIAV8IAggCnyFIQULIAJB2ABqKQMAIAN9IAFB2IsBaikDACIIhSIJQv////8PgyIKIAIpA1AgA3wgAUHQiwFqKQMAIguFIgxCIIgiDX4iBkL/////D4MgCUIgiCIJIAxC/////w+DIgx+fCAKIAx+IgpCIIh8IgxCIIYgCkL/////D4OEIAZCIIggCSANfnwgDEIgiHyFIAd8QQApA6iMASIJQQApA6CMASIKfIUhByACQcgAaikDACADfSAJhSIJQv////8PgyIMIAIpA0AgA3wgCoUiCkIgiCINfiIGQv////8PgyAJQiCIIgkgCkL/////D4MiCn58IAwgCn4iCkIgiHwiDEIghiAKQv////8Pg4QgBkIgiCAJIA1+fCAMQiCIfIUgBXwgCCALfIUhBQsgAkE4aikDACADfSABQeiLAWopAwAiCIUiCUL/////D4MiCiACKQMwIAN8IAFB4IsBaikDACILhSIMQiCIIg1+IgZC/////w+DIAlCIIgiCSAMQv////8PgyIMfnwgCiAMfiIKQiCIfCIMQiCGIApC/////w+DhCAGQiCIIAkgDX58IAxCIIh8hSAHfEEAKQOYjAEiB0EAKQOQjAEiCXyFIQYgAkEoaikDACADfSAHhSIHQv////8PgyIKIAIpAyAgA3wgCYUiCUIgiCIMfiINQv////8PgyAHQiCIIgcgCUL/////D4MiCX58IAogCX4iCUIgiHwiCkIghiAJQv////8Pg4QgDUIgiCAHIAx+fCAKQiCIfIUgBXwgCCALfIUhBQsgACACQRhqKQMAIAN9IAFB+IsBaikDACIHhSIIQv////8PgyIJIAIpAxAgA3wgAUHwiwFqKQMAIgqFIgtCIIgiDH4iDUL/////D4MgCEIgiCIIIAtC/////w+DIgt+fCAJIAt+IglCIIh8IgtCIIYgCUL/////D4OEIA1CIIggCCAMfnwgC0IgiHyFIAZ8QQApA4iMASIIQQApA4CMASIJfIUiCyACQQhqKQMAIAN9IAiFIghC/////w+DIgwgAikDACADfCAJhSIJQiCIIg1+IgZC/////w+DIAhCIIgiCCAJQv////8PgyIJfnwgDCAJfiIJQiCIfCIMQiCGIAlC/////w+DhCAGQiCIIAggDX58IAxCIIh8hSAFfCAHIAp8hSIFfCIHQiWIIAeFQvnz3fGZ8pmrFn4iB0IgiCAHhTcDACAAQgAgBUKHla+vmLbem55/fiAEIAN9Qs/W077Sx6vZQn58IAtC49zKlfzO8vWFf358IgNCJYggA4VC+fPd8ZnymasWfiIDQiCIIAOFfTcDCAuhDwMBfxR+An9BACEEIAJB+ABqKQMAIAN9QQApA/iMASIFhSIGQv////8PgyIHIAIpA3AgA3xBACkD8IwBIgiFIglCIIgiCn4iC0L/////D4MgBkIgiCIGIAlC/////w+DIgl+fCAHIAl+IgdCIIh8IglCIIYgB0L/////D4OEIAtCIIggBiAKfnwgCUIgiHyFIAJB2ABqKQMAIAN9QQApA9iMASIHhSIGQv////8PgyIJIAIpA1AgA3xBACkD0IwBIgqFIgtCIIgiDH4iDUL/////D4MgBkIgiCIGIAtC/////w+DIgt+fCAJIAt+IglCIIh8IgtCIIYgCUL/////D4OEIA1CIIggBiAMfnwgC0IgiHyFIAJBOGopAwAgA31BACkDuIwBIgmFIgZC/////w+DIgsgAikDMCADfEEAKQOwjAEiDIUiDUIgiCIOfiIPQv////8PgyAGQiCIIgYgDUL/////D4MiDX58IAsgDX4iC0IgiHwiDUIghiALQv////8Pg4QgD0IgiCAGIA5+fCANQiCIfIUgAkEYaikDACADfUEAKQOYjAEiC4UiBkL/////D4MiDSACKQMQIAN8QQApA5CMASIOhSIPQiCIIhB+IhFC/////w+DIAZCIIgiBiAPQv////8PgyIPfnwgDSAPfiINQiCIfCIPQiCGIA1C/////w+DhCARQiCIIAYgEH58IA9CIIh8hUEAKQOIjAEiDUEAKQOAjAEiD3yFfEEAKQOojAEiEEEAKQOgjAEiEXyFfEEAKQPIjAEiEkEAKQPAjAEiE3yFfEEAKQPojAEiFEEAKQPgjAEiFXyFIgZCJYggBoVC+fPd8ZnymasWfiIGQiCIIAaFIQYgAkHoAGopAwAgA30gFIUiFEL/////D4MiFiACKQNgIAN8IBWFIhVCIIgiF34iGEL/////D4MgFEIgiCIUIBVC/////w+DIhV+fCAWIBV+IhVCIIh8IhZCIIYgFUL/////D4OEIBhCIIggFCAXfnwgFkIgiHyFIAJByABqKQMAIAN9IBKFIhJC/////w+DIhQgAikDQCADfCAThSITQiCIIhV+IhZC/////w+DIBJCIIgiEiATQv////8PgyITfnwgFCATfiITQiCIfCIUQiCGIBNC/////w+DhCAWQiCIIBIgFX58IBRCIIh8hSACQShqKQMAIAN9IBCFIhBC/////w+DIhIgAikDICADfCARhSIRQiCIIhN+IhRC/////w+DIBBCIIgiECARQv////8PgyIRfnwgEiARfiIRQiCIfCISQiCGIBFC/////w+DhCAUQiCIIBAgE358IBJCIIh8hSACQQhqKQMAIAN9IA2FIg1C/////w+DIhAgAikDACADfCAPhSIPQiCIIhF+IhJC/////w+DIA1CIIgiDSAPQv////8PgyIPfnwgECAPfiIPQiCIfCIQQiCGIA9C/////w+DhCASQiCIIA0gEX58IBBCIIh8hSABrSIPQoeVr6+Ytt6bnn9+fCALIA58hXwgCSAMfIV8IAcgCnyFfCAFIAh8hSIFQiWIIAWFQvnz3fGZ8pmrFn4iBUIgiCAFhSEFAkAgAUGgAUgNACABQQV2QXxqIRkDQCACIARqIhpBG2opAwAgA30gBEGYjQFqKQMAIgeFIghC/////w+DIgkgGkETaikDACADfCAEQZCNAWopAwAiCoUiC0IgiCIMfiINQv////8PgyAIQiCIIgggC0L/////D4MiC358IAkgC34iCUIgiHwiC0IghiAJQv////8Pg4QgDUIgiCAIIAx+fCALQiCIfIUgBnwgBEGIjQFqKQMAIgggBEGAjQFqKQMAIgl8hSEGIBpBC2opAwAgA30gCIUiCEL/////D4MiCyAaQQNqKQMAIAN8IAmFIglCIIgiDH4iDUL/////D4MgCEIgiCIIIAlC/////w+DIgl+fCALIAl+IglCIIh8IgtCIIYgCUL/////D4OEIA1CIIggCCAMfnwgC0IgiHyFIAV8IAcgCnyFIQUgBEEgaiEEIBlBf2oiGQ0ACwsgACACQf8AaikDACADfCABQeiLAWopAwAiB4UiCEL/////D4MiCSACKQN3IAN9IAFB4IsBaikDACIKhSILQiCIIgx+Ig1C/////w+DIAhCIIgiCCALQv////8PgyILfnwgCSALfiIJQiCIfCILQiCGIAlC/////w+DhCANQiCIIAggDH58IAtCIIh8hSAGfCABQfiLAWopAwAiBiABQfCLAWopAwAiCHyFIgkgAkHvAGopAwAgA3wgBoUiBkL/////D4MiCyACKQNnIAN9IAiFIghCIIgiDH4iDUL/////D4MgBkIgiCIGIAhC/////w+DIgh+fCALIAh+IghCIIh8IgtCIIYgCEL/////D4OEIA1CIIggBiAMfnwgC0IgiHyFIAV8IAcgCnyFIgZ8IgVCJYggBYVC+fPd8ZnymasWfiIFQiCIIAWFNwMAIABCACAGQoeVr6+Ytt6bnn9+IA8gA31Cz9bTvtLHq9lCfnwgCULj3MqV/M7y9YV/fnwiA0IliCADhUL5893xmfKZqxZ+IgNCIIggA4V9NwMIC98FAgF+AX8CQAJAQQApA4AKIgBQRQ0AQYAIIQFCACEADAELAkBBACkDoI4BIABSDQBBACEBDAELQQAhAUEAQq+v79e895Kg/gAgAH03A/iLAUEAIABCxZbr+djShYIofDcD8IsBQQBCj/Hjja2P9JhOIAB9NwPoiwFBACAAQqus+MXV79HQfHw3A+CLAUEAQtOt1LKShbW0nn8gAH03A9iLAUEAIABCl5r0jvWWvO3JAHw3A9CLAUEAQsWDgv2v/8SxayAAfTcDyIsBQQAgAELqi7OdyOb09UN8NwPAiwFBAELIv/rLnJveueQAIAB9NwO4iwFBACAAQoqjgd/Ume2sMXw3A7CLAUEAQvm57738+MKnHSAAfTcDqIsBQQAgAEKo9dv7s5ynmj98NwOgiwFBAEK4sry3lNW31lggAH03A5iLAUEAIABC8cihuqm0w/zOAHw3A5CLAUEAQoihl9u445SXo38gAH03A4iL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AkHAAGogDGohC0GAjAEhAAJAAkACQCAHQQhJDQACQCAHQThqQQN2QQFqQQdxIg0NAAwCCyANQQN0IQ5BgIwBIQADQCALIAApAwA3AwAgC0EIaiELIABBCGohACANQX9qIg0NAAsgByAOayEHCyAHRQ0BAkACQCAHQQdxIg4NACAHIQ0MAQsgB0F4cSENA0AgCyAALQAAOgAAIAtBAWohCyAAQQFqIQAgDkF/aiIODQALCyAHQQhJDQELA0AgCyAAKQAANwAAIAtBCGohCyAAQQhqIQAgDUF4aiINDQALCyACIAIpAwggAikDQCIIfCADQQAoApyOAWoiACkDASACKQNIIgmFIgpCIIggCkL/////D4N+fDcDCCACIAIpAxggAikDUCIKfCAAKQMRIAIpA1giEIUiEUIgiCARQv////8Pg358NwMYIAIgECAKIAApAwmFIgpCIIggCkL/////D4N+IAIpAxB8fDcDECACIAkgCCAAQXlqKQMAhSIIQiCIIAhC/////w+DfiACKQMAfHw3AwAgACkDGSEIIAIpAyAhCSACIAIpAyggAikDYCIKfCAAKQMhIAIpA2giEIUiEUIgiCARQv////8Pg358NwMoIAIgECAJIAggCoUiCEIgiCAIQv////8Pg358fDcDICACIAYgAikDcCIIfCAAKQMxIAIpA3giBoUiCUIgiCAJQv////8Pg358NwM4IAIgBiAIIAApAymFIghCIIggCEL/////D4N+IAV8fDcDMAsgAiACIANBC2ogBEKHla+vmLbem55/fhADNwNAIAIgAiADQQAoApyOAWpBdWogBELP1tO+0ser2UJ+Qn+FEAM3A0gMAQsgBKchAAJAQQApA6COASIEUA0AAkAgAEEQSw0AIAJBwABqIABBgAggBBAEDAILAkAgAEGAAUsNACACQcAAaiAAQYAIIAQQBQwCCyACQcAAaiAAQYAIIAQQBgwBCwJAIABBEEsNACACQcAAaiAAIANCABAEDAELAkAgAEGAAUsNACACQcAAaiAAIANCABAFDAELIAJBwABqIAAgA0IAEAYLQQAgAikDcDcDuApBACACKQNgNwOoCkEAIAIpA1A3A5gKQQAgAkH4AGopAwA3A8AKQQAgAkHoAGopAwA3A7AKQQAgAkHYAGopAwA3A6AKQQAgAikDSCIEQjiGIARCgP4Dg0IohoQgBEKAgPwHg0IYhiAEQoCAgPgPg0IIhoSEIARCCIhCgICA+A+DIARCGIhCgID8B4OEIARCKIhCgP4DgyAEQjiIhISEIgQ3A4AKQQAgBDcDkApBACACKQNAIgRCOIYgBEKA/gODQiiGhCAEQoCA/AeDQhiGIARCgICA+A+DQgiGhIQgBEIIiEKAgID4D4MgBEIYiEKAgPwHg4QgBEIoiEKA/gODIARCOIiEhIQ3A4gKIAEkAAsGAEGAigELAgALC8wBAQBBgAgLxAG4/mw5I6RLvnwBgSz3Ia0c3tRt6YOQl9tyQKSkt7NnH8t55k7MwOV4glrQfcz/ciG4CEZ090MkjuA1kOaBOiZMPChSu5HDAMuI0GWLG1Muo3FkSJeiDflOOBnvRqnerNio+nY/45w0P/ncu8fHC08dilHgS820WTHIn37J2XhzZOrFrIM00+vDxYGg//oTY+sXDd1Rt/DaSdMWVSYp1GieKxa+WH1HofyP+LjRetAxzkXLOo+VFgQor9f7yrtLQH5AAgAA",zM="b9ab74e2",yv={name:KM,data:GM,hash:zM};let JM=new o,pl=null,D0=new Uint8Array(8);function bo(S){return!Number.isInteger(S)||S<0||S>4294967295?new Error("Seed must be given as two valid 32-bit long unsigned integers (lo + high)."):null}function ix(S,q,M){let Y=new DataView(S);Y.setUint32(0,q,!0),Y.setUint32(4,M,!0)}function jM(S,q=0,M=0){if(bo(q))return Promise.reject(bo(q));if(bo(M))return Promise.reject(bo(M));if(pl===null)return E(JM,yv,16).then(Y=>(pl=Y,ix(D0.buffer,q,M),pl.writeMemory(D0),pl.calculate(S)));try{ix(D0.buffer,q,M),pl.writeMemory(D0);let Y=pl.calculate(S);return Promise.resolve(Y)}catch(Y){return Promise.reject(Y)}}function $M(S=0,q=0){return bo(S)?Promise.reject(bo(S)):bo(q)?Promise.reject(bo(q)):v(yv,16).then(M=>{let Y=new Uint8Array(8);ix(Y.buffer,S,q),M.writeMemory(Y),M.init();let ie={init:()=>(M.writeMemory(Y),M.init(),ie),update:ae=>(M.update(ae),ie),digest:ae=>M.digest(ae),save:()=>M.save(),load:ae=>(M.load(ae),ie),blockSize:512,digestSize:16};return ie})}var VM="ripemd160",YM="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",WM="6abbce74",Iv={name:VM,data:YM,hash:WM};let XM=new o,Q0=null;function ZM(S){if(Q0===null)return E(XM,Iv,20).then(q=>(Q0=q,Q0.calculate(S)));try{let q=Q0.calculate(S);return Promise.resolve(q)}catch(q){return Promise.reject(q)}}function eL(){return v(Iv,20).then(S=>{S.init();let q={init:()=>(S.init(),q),update:M=>(S.update(M),q),digest:M=>S.digest(M),save:()=>S.save(),load:M=>(S.load(M),q),blockSize:64,digestSize:20};return q})}function tL(S,q){let{blockSize:M}=S,Y=C(q);if(Y.length>M){S.update(Y);let ie=S.digest("binary");return S.init(),ie}return new Uint8Array(Y.buffer,Y.byteOffset,Y.length)}function rL(S,q){S.init();let{blockSize:M}=S,Y=tL(S,q),ie=new Uint8Array(M);ie.set(Y);let ae=new Uint8Array(M);for(let xe=0;xe<M;xe++){let Je=ie[xe];ae[xe]=Je^92,ie[xe]=Je^54}S.update(ie);let ge={init:()=>(S.init(),S.update(ie),ge),update:xe=>(S.update(xe),ge),digest:(xe=>{let Je=S.digest("binary");return S.init(),S.update(ae),S.update(Je),S.digest(xe)}),save:()=>{throw new Error("save() not supported")},load:()=>{throw new Error("load() not supported")},blockSize:S.blockSize,digestSize:S.digestSize};return ge}function wv(S,q){if(!S||!S.then)throw new Error('Invalid hash function is provided! Usage: createHMAC(createMD5(), "key").');return S.then(M=>rL(M,q))}function iL(S,q,M,Y,ie){return s(this,void 0,void 0,function*(){let ae=new Uint8Array(Y),ge=new Uint8Array(q.length+4),xe=new DataView(ge.buffer),Je=C(q),qt=new Uint8Array(Je.buffer,Je.byteOffset,Je.length);ge.set(qt);let jt=0,rr=S.digestSize,Ot=Math.ceil(Y/rr),$i=null,Hr=null;for(let vo=1;vo<=Ot;vo++){xe.setUint32(q.length,vo),S.init(),S.update(ge),$i=S.digest("binary"),Hr=$i.slice();for(let wn=1;wn<M;wn++){S.init(),S.update(Hr),Hr=S.digest("binary");for(let ko=0;ko<rr;ko++)$i[ko]^=Hr[ko]}ae.set($i.subarray(0,Y-jt),jt),jt+=rr}if(ie==="binary")return ae;let Iu=new Uint8Array(Y*2);return w(Iu,ae,Y)})}let nL=S=>{if(!S||typeof S!="object")throw new Error("Invalid options parameter. It requires an object.");if(!S.hashFunction||!S.hashFunction.then)throw new Error('Invalid hash function is provided! Usage: pbkdf2("password", "salt", 1000, 32, createSHA1()).');if(!Number.isInteger(S.iterations)||S.iterations<1)throw new Error("Iterations should be a positive number");if(!Number.isInteger(S.hashLength)||S.hashLength<1)throw new Error("Hash length should be a positive number");if(S.outputType===void 0&&(S.outputType="hex"),!["hex","binary"].includes(S.outputType))throw new Error(`Insupported output type ${S.outputType}. Valid values: ['hex', 'binary']`)};function nx(S){return s(this,void 0,void 0,function*(){nL(S);let q=yield wv(S.hashFunction,S.password);return iL(q,S.salt,S.iterations,S.hashLength,S.outputType)})}var sL="scrypt",oL="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cyICajYCOCAAIAAoAjwgAiAKakESdyAGc2o2AjwLvxIDFX8Bfg5/AkAgAkUNACAAQQd0IgNBQGoiBEEAKAKACCIFIAMgAmwiBmogAyABbGoiByADaiIIaiEJIAAgAkEHdCIKIAFBB3RqIgtsIQwgACALQYABamwhDSAAQQV0IgtBASALQQFLGyILQWBxIQ4gC0EBcSEPIAdBeGohECAHQXBqIREgB0FoaiESIAdBYGohEyAHQVhqIRQgB0FQaiEVIAdBSGohFiAHQUBqIRcgAa1Cf3whGCAEIAdqIRkgByAAQQh0IhpqIRsgACAKQYABamwhHCALQQRJIR1BACEeQQAhHwNAQQAoAoAIIiAgAyAfbGohIQJAIABFDQBBACEiAkAgHQ0AICAgHmohI0EAIQtBACEiA0AgByALaiIEICMgC2oiJCgCADYCACAEQQRqICRBBGooAgA2AgAgBEEIaiAkQQhqKAIANgIAIARBDGogJEEMaigCADYCACALQRBqIQsgDiAiQQRqIiJHDQALCyAPRQ0AIAcgIkECdCILaiAhIAtqKAIANgIACwJAIAFFDQBBACElIBwhIyAGISYDQCAFISQgACEiAkACQCAADQAgGyAXKQMANwMAIBsgFikDADcDCCAbIBUpAwA3AxAgGyAUKQMANwMYIBsgEykDADcDICAbIBIpAwA3AyggGyARKQMANwMwIBsgECkDADcDOAwBCwNAICQgJmoiCyAkIAxqIgQpAwA3AwAgC0EIaiAEQQhqKQMANwMAIAtBEGogBEEQaikDADcDACALQRhqIARBGGopAwA3AwAgC0EgaiAEQSBqKQMANwMAIAtBKGogBEEoaikDADcDACALQTBqIARBMGopAwA3AwAgC0E4aiAEQThqKQMANwMAIAtBwABqIARBwABqKQMANwMAIAtByABqIARByABqKQMANwMAIAtB0ABqIARB0ABqKQMANwMAIAtB2ABqIARB2ABqKQMANwMAIAtB4ABqIARB4ABqKQMANwMAIAtB6ABqIARB6ABqKQMANwMAIAtB8ABqIARB8ABqKQMANwMAIAtB+ABqIARB+ABqKQMANwMAICRBgAFqISQgIkF/aiIiDQALIAcgCCAbIAAQAiAFISQgACEiA0AgJCAjaiILICQgDWoiBCkDADcDACALQQhqIARBCGopAwA3AwAgC0EQaiAEQRBqKQMANwMAIAtBGGogBEEYaikDADcDACALQSBqIARBIGopAwA3AwAgC0EoaiAEQShqKQMANwMAIAtBMGogBEEwaikDADcDACALQThqIARBOGopAwA3AwAgC0HAAGogBEHAAGopAwA3AwAgC0HIAGogBEHIAGopAwA3AwAgC0HQAGogBEHQAGopAwA3AwAgC0HYAGogBEHYAGopAwA3AwAgC0HgAGogBEHgAGopAwA3AwAgC0HoAGogBEHoAGopAwA3AwAgC0HwAGogBEHwAGopAwA3AwAgC0H4AGogBEH4AGopAwA3AwAgJEGAAWohJCAiQX9qIiINAAsLIAggByAbIAAQAiAjIBpqISMgJiAaaiEmICVBAmoiJSABSQ0AC0EAISUDQAJAAkAgAA0AIBsgFykDADcDACAbIBYpAwA3AwggGyAVKQMANwMQIBsgFCkDADcDGCAbIBMpAwA3AyAgGyASKQMANwMoIBsgESkDADcDMCAbIBApAwA3AzgMAQsgACAKIBkpAgAgGIOnQQd0amwhJiAFISQgACEiA0AgJCAMaiILIAspAwAgJCAmaiIEKQMAhTcDACALQQhqIiMgIykDACAEQQhqKQMAhTcDACALQRBqIiMgIykDACAEQRBqKQMAhTcDACALQRhqIiMgIykDACAEQRhqKQMAhTcDACALQSBqIiMgIykDACAEQSBqKQMAhTcDACALQShqIiMgIykDACAEQShqKQMAhTcDACALQTBqIiMgIykDACAEQTBqKQMAhTcDACALQThqIiMgIykDACAEQThqKQMAhTcDACALQcAAaiIjICMpAwAgBEHAAGopAwCFNwMAIAtByABqIiMgIykDACAEQcgAaikDAIU3AwAgC0HQAGoiIyAjKQMAIARB0ABqKQMAhTcDACALQdgAaiIjICMpAwAgBEHYAGopAwCFNwMAIAtB4ABqIiMgIykDACAEQeAAaikDAIU3AwAgC0HoAGoiIyAjKQMAIARB6ABqKQMAhTcDACALQfAAaiIjICMpAwAgBEHwAGopAwCFNwMAIAtB+ABqIgsgCykDACAEQfgAaikDAIU3AwAgJEGAAWohJCAiQX9qIiINAAsgByAIIBsgABACIAAgCiAJKQIAIBiDp0EHdGpsISYgBSEkIAAhIgNAICQgDWoiCyALKQMAICQgJmoiBCkDAIU3AwAgC0EIaiIjICMpAwAgBEEIaikDAIU3AwAgC0EQaiIjICMpAwAgBEEQaikDAIU3AwAgC0EYaiIjICMpAwAgBEEYaikDAIU3AwAgC0EgaiIjICMpAwAgBEEgaikDAIU3AwAgC0EoaiIjICMpAwAgBEEoaikDAIU3AwAgC0EwaiIjICMpAwAgBEEwaikDAIU3AwAgC0E4aiIjICMpAwAgBEE4aikDAIU3AwAgC0HAAGoiIyAjKQMAIARBwABqKQMAhTcDACALQcgAaiIjICMpAwAgBEHIAGopAwCFNwMAIAtB0ABqIiMgIykDACAEQdAAaikDAIU3AwAgC0HYAGoiIyAjKQMAIARB2ABqKQMAhTcDACALQeAAaiIjICMpAwAgBEHgAGopAwCFNwMAIAtB6ABqIiMgIykDACAEQegAaikDAIU3AwAgC0HwAGoiIyAjKQMAIARB8ABqKQMAhTcDACALQfgAaiILIAspAwAgBEH4AGopAwCFNwMAICRBgAFqISQgIkF/aiIiDQALCyAIIAcgGyAAEAIgJUECaiIlIAFJDQALCwJAIABFDQBBACEiAkAgHQ0AICAgHmohI0EAIQtBACEiA0AgIyALaiIEIAcgC2oiJCgCADYCACAEQQRqICRBBGooAgA2AgAgBEEIaiAkQQhqKAIANgIAIARBDGogJEEMaigCADYCACALQRBqIQsgDiAiQQRqIiJHDQALCyAPRQ0AICEgIkECdCILaiAHIAtqKAIANgIACyAeIANqIR4gH0EBaiIfIAJHDQALCws=",aL="b32721f8",cL={name:sL,data:oL,hash:aL};function lL(S){return s(this,void 0,void 0,function*(){let{costFactor:q,blockSize:M,parallelism:Y,hashLength:ie}=S,ae=hv(),ge=yield nx({password:S.password,salt:S.salt,iterations:1,hashLength:128*M*Y,hashFunction:ae,outputType:"binary"}),xe=yield v(cL,0),Je=128*M*q,qt=256*M;xe.setMemorySize(ge.length+Je+qt),xe.writeMemory(ge,0),xe.getExports().scrypt(M,q,Y);let jt=xe.getMemory().subarray(0,128*M*Y),rr=yield nx({password:S.password,salt:jt,iterations:1,hashLength:ie,hashFunction:ae,outputType:"binary"});if(S.outputType==="hex"){let Ot=new Uint8Array(ie*2);return w(Ot,rr,ie)}return rr})}let dL=S=>S&&!(S&S-1),uL=S=>{if(!S||typeof S!="object")throw new Error("Invalid options parameter. It requires an object.");if(!Number.isInteger(S.blockSize)||S.blockSize<1)throw new Error("Block size should be a positive number");if(!Number.isInteger(S.costFactor)||S.costFactor<2||!dL(S.costFactor))throw new Error("Cost factor should be a power of 2, greater than 1");if(!Number.isInteger(S.parallelism)||S.parallelism<1)throw new Error("Parallelism should be a positive number");if(!Number.isInteger(S.hashLength)||S.hashLength<1)throw new Error("Hash length should be a positive number.");if(S.outputType===void 0&&(S.outputType="hex"),!["hex","binary"].includes(S.outputType))throw new Error(`Insupported output type ${S.outputType}. Valid values: ['hex', 'binary']`)};function fL(S){return s(this,void 0,void 0,function*(){return uL(S),lL(S)})}var AL="bcrypt",hL="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",gL="8bd8822d",xv={name:AL,data:hL,hash:gL};function pL(S){return s(this,void 0,void 0,function*(){let{costFactor:q,password:M,salt:Y}=S,ie=yield v(xv,0);ie.writeMemory(C(Y),0);let ae=C(M);ie.writeMemory(ae,16);let ge=S.outputType==="encoded"?1:0;ie.getExports().bcrypt(ae.length,q,ge);let xe=ie.getMemory();if(S.outputType==="encoded")return f(xe,60);if(S.outputType==="hex"){let Je=new Uint8Array(48);return w(Je,xe,24)}return xe.slice(0,24)})}let mL=S=>{if(!S||typeof S!="object")throw new Error("Invalid options parameter. It requires an object.");if(!Number.isInteger(S.costFactor)||S.costFactor<4||S.costFactor>31)throw new Error("Cost factor should be a number between 4 and 31");if(S.password=C(S.password),S.password.length<1)throw new Error("Password should be at least 1 byte long");if(S.password.length>72)throw new Error("Password should be at most 72 bytes long");if(S.salt=C(S.salt),S.salt.length!==16)throw new Error("Salt should be 16 bytes long");if(S.outputType===void 0&&(S.outputType="encoded"),!["hex","binary","encoded"].includes(S.outputType))throw new Error(`Insupported output type ${S.outputType}. Valid values: ['hex', 'binary', 'encoded']`)};function yL(S){return s(this,void 0,void 0,function*(){return mL(S),pL(S)})}let IL=S=>!(!/^\$2[axyb]\$[0-3][0-9]\$[./A-Za-z0-9]{53}$/.test(S)||S[4]==="0"&&Number(S[5])<4||S[4]==="3"&&Number(S[5])>1),wL=S=>{if(!S||typeof S!="object")throw new Error("Invalid options parameter. It requires an object.");if(S.hash===void 0||typeof S.hash!="string")throw new Error("Hash should be specified");if(S.hash.length!==60)throw new Error("Hash should be 60 bytes long");if(!IL(S.hash))throw new Error("Invalid hash");if(S.password=C(S.password),S.password.length<1)throw new Error("Password should be at least 1 byte long");if(S.password.length>72)throw new Error("Password should be at most 72 bytes long")};function xL(S){return s(this,void 0,void 0,function*(){wL(S);let{hash:q,password:M}=S,Y=yield v(xv,0);Y.writeMemory(C(q),0);let ie=C(M);return Y.writeMemory(ie,60),!!Y.getExports().bcrypt_verify(ie.length)})}var CL="whirlpool",EL="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",BL="8d8f6035",Cv={name:CL,data:EL,hash:BL};let bL=new o,_0=null;function vL(S){if(_0===null)return E(bL,Cv,64).then(q=>(_0=q,_0.calculate(S)));try{let q=_0.calculate(S);return Promise.resolve(q)}catch(q){return Promise.reject(q)}}function kL(){return v(Cv,64).then(S=>{S.init();let q={init:()=>(S.init(),q),update:M=>(S.update(M),q),digest:M=>S.digest(M),save:()=>S.save(),load:M=>(S.load(M),q),blockSize:64,digestSize:64};return q})}var SL="sm3",DL="AGFzbQEAAAABDANgAAF/YAAAYAF/AAMIBwABAgIBAAIFBAEBAgIGDgJ/AUHwiQULfwBBgAgLB3AIBm1lbW9yeQIADkhhc2hfR2V0QnVmZmVyAAAJSGFzaF9Jbml0AAELSGFzaF9VcGRhdGUAAgpIYXNoX0ZpbmFsAAQNSGFzaF9HZXRTdGF0ZQAFDkhhc2hfQ2FsY3VsYXRlAAYKU1RBVEVfU0laRQMBCtodBwUAQYAJC1EAQQBCzdy3nO7Jw/2wfzcCoIkBQQBCvOG8y6qVzpgWNwKYiQFBAELXhZG5gcCBxVo3ApCJAUEAQu+sgJyX16yKyQA3AoiJAUEAQgA3AoCJAQvvAwEIfwJAIABFDQBBACEBQQBBACgCgIkBIgIgAGoiAzYCgIkBIAJBP3EhBAJAIAMgAk8NAEEAQQAoAoSJAUEBajYChIkBC0GACSECAkAgBEUNAAJAIABBwAAgBGsiBU8NACAEIQEMAQsgBEE/cyEGIARBqIkBaiECQYAJIQMCQAJAIAVBB3EiBw0AIAUhCAwBCyAHIQgDQCACIAMtAAA6AAAgAkEBaiECIANBAWohAyAIQX9qIggNAAtBwAAgByAEamshCAsCQCAGQQdJDQADQCACIAMpAAA3AAAgAkEIaiECIANBCGohAyAIQXhqIggNAAsLQaiJARADIAVBgAlqIQIgACAFayEACwJAIABBwABJDQADQCACEAMgAkHAAGohAiAAQUBqIgBBP0sNAAsLIABFDQAgAUGoiQFqIQMCQAJAIABBB3EiCA0AIAAhBAwBCyAAQThxIQQDQCADIAItAAA6AAAgA0EBaiEDIAJBAWohAiAIQX9qIggNAAsLIABBCEkNAANAIAMgAi0AADoAACADIAItAAE6AAEgAyACLQACOgACIAMgAi0AAzoAAyADIAItAAQ6AAQgAyACLQAFOgAFIAMgAi0ABjoABiADIAItAAc6AAcgA0EIaiEDIAJBCGohAiAEQXhqIgQNAAsLC+wLARl/IwBBkAJrIgEkACABIAAoAhgiAkEYdCACQYD+A3FBCHRyIAJBCHZBgP4DcSACQRh2cnIiAzYCGCABIAAoAhQiAkEYdCACQYD+A3FBCHRyIAJBCHZBgP4DcSACQRh2cnIiBDYCFCABIAAoAggiAkEYdCACQYD+A3FBCHRyIAJBCHZBgP4DcSACQRh2cnIiBTYCCCABIAAoAhAiAkEYdCACQYD+A3FBCHRyIAJBCHZBgP4DcSACQRh2cnIiBjYCECABIAAoAiAiAkEYdCACQYD+A3FBCHRyIAJBCHZBgP4DcSACQRh2cnIiBzYCICABIAAoAgQiAkEYdCACQYD+A3FBCHRyIAJBCHZBgP4DcSACQRh2cnIiCDYCBCABIAAoAgwiAkEYdCACQYD+A3FBCHRyIAJBCHZBgP4DcSACQRh2cnIiCTYCDCABIAAoAhwiAkEYdCACQYD+A3FBCHRyIAJBCHZBgP4DcSACQRh2cnIiCjYCHCABIAAoAgAiAkEYdCACQYD+A3FBCHRyIAJBCHZBgP4DcSACQRh2cnIiCzYCACAAKAIkIQIgASAAKAI0IgxBGHQgDEGA/gNxQQh0ciAMQQh2QYD+A3EgDEEYdnJyIg02AjQgASAAKAIoIgxBGHQgDEGA/gNxQQh0ciAMQQh2QYD+A3EgDEEYdnJyIg42AiggASALIA1BD3dzIApzIgxBF3cgDEEPd3MgCUEHd3MgDnMgDHMiCjYCQCABIAAoAjgiDEEYdCAMQYD+A3FBCHRyIAxBCHZBgP4DcSAMQRh2cnIiCzYCOCABIAAoAiwiDEEYdCAMQYD+A3FBCHRyIAxBCHZBgP4DcSAMQRh2cnIiDzYCLCABIAggC0EPd3MgB3MiDEEXdyAMQQ93cyAGQQd3cyAPcyAMczYCRCABIAAoAjwiDEEYdCAMQYD+A3FBCHRyIAxBCHZBgP4DcSAMQRh2cnIiDDYCPCABIAJBGHQgAkGA/gNxQQh0ciACQQh2QYD+A3EgAkEYdnJyIgI2AiQgASAAKAIwIgBBGHQgAEGA/gNxQQh0ciAAQQh2QYD+A3EgAEEYdnJyIgY2AjAgASAFIAxBD3dzIAJzIgBBF3cgAEEPd3MgBEEHd3MgBnMgAHM2AkggASAOIApBD3dzIAlzIgBBF3cgAEEPd3MgA0EHd3MgDXMgAHM2AkxBACEGQSAhByABIQxBACgCiIkBIhAhCUEAKAKkiQEiESEPQQAoAqCJASISIQ1BACgCnIkBIhMhCEEAKAKYiQEiFCEOQQAoApSJASIVIRZBACgCkIkBIhchA0EAKAKMiQEiGCELA0AgCCAOIgJzIA0iBHMgD2ogCSIAQQx3Ig0gAmpBmYqxzgcgB3ZBmYqxzgcgBnRyakEHdyIPaiAMKAIAIhlqIglBEXcgCUEJd3MgCXMhDiADIgUgC3MgAHMgFmogDyANc2ogDEEQaigCACAZc2ohCSAMQQRqIQwgB0F/aiEHIAhBE3chDSALQQl3IQMgBCEPIAIhCCAFIRYgACELIAZBAWoiBkEQRw0AC0EAIQZBECEHA0AgASAGaiIMQdAAaiAMQThqKAIAIAxBLGooAgAgDEEQaigCAHMgDEHEAGooAgAiFkEPd3MiCEEXd3MgCEEPd3MgDEEcaigCAEEHd3MgCHMiGTYCACANIg8gDiIMQX9zcSACIAxxciAEaiAJIghBDHciDSAMakGKu57UByAHd2pBB3ciBGogCmoiCUERdyAJQQl3cyAJcyEOIAggAyILIABycSALIABxciAFaiAEIA1zaiAZIApzaiEJIAZBBGohBiACQRN3IQ0gAEEJdyEDIBYhCiAPIQQgDCECIAshBSAIIQAgB0EBaiIHQcAARw0AC0EAIA8gEXM2AqSJAUEAIA0gEnM2AqCJAUEAIAwgE3M2ApyJAUEAIA4gFHM2ApiJAUEAIAsgFXM2ApSJAUEAIAMgF3M2ApCJAUEAIAggGHM2AoyJAUEAIAkgEHM2AoiJASABQZACaiQAC4ILAQp/IwBBEGsiACQAIABBACgCgIkBIgFBG3QgAUELdEGAgPwHcXIgAUEFdkGA/gNxIAFBA3RBGHZycjYCDCAAQQAoAoSJASICQQN0IgMgAUEddnIiBEEYdCAEQYD+A3FBCHRyIAJBBXZBgP4DcSADQRh2cnI2AggCQEE4QfgAIAFBP3EiBUE4SRsgBWsiA0UNAEEAIAMgAWoiATYCgIkBAkAgASADTw0AQQAgAkEBajYChIkBC0GQCCEBQQAhBgJAIAVFDQACQCADQcAAIAVrIgdPDQAgBSEGDAELIAVBP3MhCCAFQaiJAWohAUGQCCECAkACQCAHQQdxIgkNACAHIQQMAQsgCSEEA0AgASACLQAAOgAAIAFBAWohASACQQFqIQIgBEF/aiIEDQALQcAAIAkgBWprIQQLAkAgCEEHSQ0AA0AgASACKQAANwAAIAFBCGohASACQQhqIQIgBEF4aiIEDQALC0GoiQEQAyAHQZAIaiEBIAMgB2shAwsCQCADQcAASQ0AA0AgARADIAFBwABqIQEgA0FAaiIDQT9LDQALCyADRQ0AIAZBqIkBaiECAkACQCADQQdxIgQNACADIQUMAQsgA0E4cSEFA0AgAiABLQAAOgAAIAJBAWohAiABQQFqIQEgBEF/aiIEDQALCyADQQhJDQADQCACIAEtAAA6AAAgAiABLQABOgABIAIgAS0AAjoAAiACIAEtAAM6AAMgAiABLQAEOgAEIAIgAS0ABToABSACIAEtAAY6AAYgAiABLQAHOgAHIAJBCGohAiABQQhqIQEgBUF4aiIFDQALC0EAQQAoAoCJASICQQhqNgKAiQEgAkE/cSEBAkAgAkF4SQ0AQQBBACgChIkBQQFqNgKEiQELAkACQAJAAkAgAQ0AQQAhAQwBCyABQThJDQAgAUGoiQFqIAAtAAg6AAACQCABQT9GDQAgAUGpiQFqIAAtAAk6AAAgAUE+Rg0AIAFBqokBaiAALQAKOgAAIAFBPUYNACABQauJAWogAC0ACzoAACABQTxGDQAgAUGsiQFqIAAtAAw6AAAgAUE7Rg0AIAFBrYkBaiAALQANOgAAIAFBOkYNACABQa6JAWogAC0ADjoAACABQTlGDQAgAUGviQFqIAAtAA86AABBqIkBEAMMAwtBqIkBEAMgAkEHcSIERQ0CIAFBR2ohBSAAQQhqQcAAIAFraiECIAFBSGohBkGoiQEhASAEIQMDQCABIAItAAA6AAAgAUEBaiEBIAJBAWohAiADQX9qIgMNAAsgBUEHSQ0CIAYgBGshAwwBCyABQaiJAWohASAAQQhqIQJBCCEDCwNAIAEgAikAADcAACABQQhqIQEgAkEIaiECIANBeGoiAw0ACwtBAEEAKAKIiQEiAUEYdCABQYD+A3FBCHRyIAFBCHZBgP4DcSABQRh2cnI2AoAJQQBBACgCjIkBIgFBGHQgAUGA/gNxQQh0ciABQQh2QYD+A3EgAUEYdnJyNgKECUEAQQAoApCJASIBQRh0IAFBgP4DcUEIdHIgAUEIdkGA/gNxIAFBGHZycjYCiAlBAEEAKAKUiQEiAUEYdCABQYD+A3FBCHRyIAFBCHZBgP4DcSABQRh2cnI2AowJQQBBACgCmIkBIgFBGHQgAUGA/gNxQQh0ciABQQh2QYD+A3EgAUEYdnJyNgKQCUEAQQAoApyJASIBQRh0IAFBgP4DcUEIdHIgAUEIdkGA/gNxIAFBGHZycjYClAlBAEEAKAKgiQEiAUEYdCABQYD+A3FBCHRyIAFBCHZBgP4DcSABQRh2cnI2ApgJQQBBACgCpIkBIgFBGHQgAUGA/gNxQQh0ciABQQh2QYD+A3EgAUEYdnJyNgKcCSAAQRBqJAALBgBBgIkBC5UCAQR/QQBCzdy3nO7Jw/2wfzcCoIkBQQBCvOG8y6qVzpgWNwKYiQFBAELXhZG5gcCBxVo3ApCJAUEAQu+sgJyX16yKyQA3AoiJAUEAQgA3AoCJAQJAIABFDQBBACAANgKAiQFBgAkhAQJAIABBwABJDQBBgAkhAQNAIAEQAyABQcAAaiEBIABBQGoiAEE/Sw0ACyAARQ0BCyAAQX9qIQICQAJAIABBB3EiAw0AQaiJASEEDAELIABBeHEhAEGoiQEhBANAIAQgAS0AADoAACAEQQFqIQQgAUEBaiEBIANBf2oiAw0ACwsgAkEHSQ0AA0AgBCABKQAANwAAIARBCGohBCABQQhqIQEgAEF4aiIADQALCxAECwtRAgBBgAgLBGgAAAAAQZAIC0CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",QL="b6fb4b8e",Ev={name:SL,data:DL,hash:QL};let _L=new o,F0=null;function FL(S){if(F0===null)return E(_L,Ev,32).then(q=>(F0=q,F0.calculate(S)));try{let q=F0.calculate(S);return Promise.resolve(q)}catch(q){return Promise.reject(q)}}function PL(){return v(Ev,32).then(S=>{S.init();let q={init:()=>(S.init(),q),update:M=>(S.update(M),q),digest:M=>S.digest(M),save:()=>S.save(),load:M=>(S.load(M),q),blockSize:64,digestSize:32};return q})}r.adler32=J,r.argon2Verify=Bs,r.argon2d=xo,r.argon2i=Ee,r.argon2id=Gi,r.bcrypt=yL,r.bcryptVerify=xL,r.blake2b=qe,r.blake2s=Al,r.blake3=Ti,r.crc32=Ye,r.crc64=Xw,r.createAdler32=z,r.createBLAKE2b=_e,r.createBLAKE2s=Ai,r.createBLAKE3=A,r.createCRC32=Ie,r.createCRC64=Zw,r.createHMAC=wv,r.createKeccak=aM,r.createMD4=MO,r.createMD5=JO,r.createRIPEMD160=eL,r.createSHA1=XO,r.createSHA224=AM,r.createSHA256=hv,r.createSHA3=nM,r.createSHA384=xM,r.createSHA512=BM,r.createSM3=PL,r.createWhirlpool=kL,r.createXXHash128=$M,r.createXXHash3=HM,r.createXXHash32=QM,r.createXXHash64=RM,r.keccak=oM,r.md4=OO,r.md5=zO,r.pbkdf2=nx,r.ripemd160=ZM,r.scrypt=fL,r.sha1=WO,r.sha224=fM,r.sha256=gM,r.sha3=iM,r.sha384=wM,r.sha512=EM,r.sm3=FL,r.whirlpool=vL,r.xxhash128=jM,r.xxhash3=LM,r.xxhash32=DM,r.xxhash64=UM}))});var M4,yc,aE,km,L4=j(()=>{"use strict";M4=Qr(vm(),1),yc=32,aE=16,km=class r{dataKey;constructor(e){this.dataKey=e}static async create(e,t){if(!e)throw new Error("[Crypt] password \u4E0D\u80FD\u4E3A\u7A7A");let i=await(0,M4.scrypt)({password:e,salt:t||"",costFactor:16384,blockSize:8,parallelism:1,hashLength:64,outputType:"binary"}),n=await crypto.subtle.importKey("raw",i.slice(0,32),{name:"AES-CTR"},!1,["encrypt","decrypt"]);return new r(n)}encryptedSize(e){return e+yc}decryptedSize(e){return Math.max(0,e-yc)}async encrypt(e){let t=crypto.getRandomValues(new Uint8Array(aE)),i=new Uint8Array(yc);i.set(t,0),crypto.getRandomValues(i.subarray(aE));let n=new Uint8Array(await crypto.subtle.encrypt({name:"AES-CTR",counter:t,length:128},this.dataKey,e)),s=new Uint8Array(yc+n.length);return s.set(i,0),s.set(n,yc),s}async decrypt(e){if(e.length<yc)throw new Error("[Crypt] \u52A0\u5BC6\u6587\u4EF6\u8FC7\u77ED\uFF08\u7F3A\u5C11\u6587\u4EF6\u5934\uFF09");let t=e.slice(0,aE),i=e.slice(yc);return new Uint8Array(await crypto.subtle.decrypt({name:"AES-CTR",counter:t,length:128},this.dataKey,i))}}});var Sm,H4=j(()=>{"use strict";Be();L4();Sm=class{addition;cipher=null;remoteDriver=null;remoteRoot="/";suffix;constructor(e){this.addition=e||{},this.suffix=this.addition.encrypted_suffix??".bin"}async init(){let e=this.addition.filename_encryption||"off";if(e!=="off")throw new Error(`[Crypt] filename_encryption='${e}' \u5C1A\u672A\u5B9E\u73B0\uFF0C\u5F53\u524D\u4EC5\u652F\u6301 off \u6A21\u5F0F\uFF08\u5185\u5BB9\u52A0\u5BC6\u3001\u6587\u4EF6\u540D\u4EC5\u52A0\u540E\u7F00\uFF09`);let{resolvePath:t}=await Promise.resolve().then(()=>(Ve(),Gr)),{getDriver:i}=await Promise.resolve().then(()=>(Yt(),qi)),n=await t(this.addition.remote_path||"/");if(n.isVirtual||!n.storage)throw new Error(`[Crypt] remote_path \u672A\u5339\u914D\u5230\u6709\u6548\u5B58\u50A8: ${this.addition.remote_path}`);this.remoteRoot=n.physical||"/",this.remoteDriver=await i(n.storage.driver,n.storage),this.cipher=await km.create(this.addition.password,this.addition.salt||"")}ensureReady(){if(!this.cipher||!this.remoteDriver)throw new Error("[Crypt] driver not initialized")}joinRemote(e){let t=String(e||"/");return((this.remoteRoot==="/"?"":this.remoteRoot)+t).replace(/\/{2,}/g,"/")||"/"}decryptName(e){return this.suffix&&e.endsWith(this.suffix)?e.slice(0,-this.suffix.length):e}async list(e,t){this.ensureReady();let i=this.joinRemote(t);return(await this.remoteDriver.list("",i)).map(s=>{if(s.is_dir)return s;let o=this.decryptName(s.name);return{...s,name:o,size:this.cipher.decryptedSize(s.size),type:X(o,!1)}})}async get(e,t){this.ensureReady();let i=this.joinRemote(t),n=await this.remoteDriver.get("",i);if(n.is_dir)return n;let s=this.decryptName(n.name);return{...n,name:s,size:this.cipher.decryptedSize(n.size),type:X(s,!1),raw_url:""}}async mkdir(e,t){this.ensureReady(),await this.remoteDriver.mkdir("",this.joinRemote(t))}async rename(e,t,i){this.ensureReady();let n=this.joinRemote(t);await this.isFile(n)?await this.remoteDriver.rename("",n+this.suffix,i+this.suffix):await this.remoteDriver.rename("",n,i)}async remove(e,t,i){this.ensureReady();let n=this.joinRemote(t);await this.isFile(n)?await this.remoteDriver.remove("",n+this.suffix,i):await this.remoteDriver.remove("",n,i)}async move(e,t,i,n,s){this.ensureReady();let o=this.joinRemote(n),a=this.joinRemote(s);await this.isFile(o)?await this.remoteDriver.move(e,t,i,o+this.suffix,a+this.suffix):await this.remoteDriver.move(e,t,i,o,a)}async copy(e,t,i,n,s){this.ensureReady();let o=this.joinRemote(n),a=this.joinRemote(s);await this.isFile(o)?await this.remoteDriver.copy(e,t,i,o+this.suffix,a+this.suffix):await this.remoteDriver.copy(e,t,i,o,a)}async put(e,t,i){this.ensureReady();let n=this.joinRemote(t)+this.suffix,s=await this.cipher.encrypt(new Uint8Array(i));await this.remoteDriver.put("",n,Buffer.from(s))}async createReadStream(e,t){this.ensureReady();let i=this.joinRemote(e)+this.suffix,n=await this.remoteDriver.get("",i);if(!n.raw_url)throw new Error("[Crypt] \u5E95\u5C42\u9A71\u52A8\u672A\u8FD4\u56DE\u4E0B\u8F7D\u94FE\u63A5\uFF0C\u65E0\u6CD5\u89E3\u5BC6\u4E0B\u8F7D");let s=await fetch(n.raw_url);if(!s.ok)throw new Error(`[Crypt] \u5E95\u5C42\u4E0B\u8F7D\u5931\u8D25: HTTP ${s.status}`);let o=new Uint8Array(await s.arrayBuffer()),a=await this.cipher.decrypt(o),c=t?.start??0,l=t?.end??a.length-1,d=a.slice(c,l+1);return new ReadableStream({start(u){u.enqueue(d),u.close()}})}async isFile(e){if(!this.suffix)return!1;try{let t=await this.remoteDriver.get("",e+this.suffix);return!!t&&!t.is_dir}catch{return!1}}}});var Dm,K4=j(()=>{"use strict";Be();Dm=class{addition;constructor(e){this.addition=e||{}}randSize(){let e=this.addition.min_file_size||0,t=this.addition.max_file_size||0;return t<=e?e:e+Math.floor(Math.random()*(t-e))}now(){return new Date().toISOString()}async list(){let e=[];for(let t=0;t<(this.addition.num_file||0);t++){let i=`file_${t}.bin`;e.push({name:i,size:this.randSize(),is_dir:!1,modified:this.now(),sign:"",type:X(i,!1)})}for(let t=0;t<(this.addition.num_folder||0);t++){let i=`folder_${t}`;e.push({name:i,size:0,is_dir:!0,modified:this.now(),sign:"",type:1})}return e}async get(e,t){let i=String(t||"").split("/").filter(Boolean),n=i[i.length-1]||"file.bin";return{name:n,size:this.randSize(),is_dir:!1,modified:this.now(),sign:"",type:X(n,!1),raw_url:""}}async mkdir(){}async rename(){}async remove(){}async move(){}async copy(){}async put(){}async createReadStream(e,t){let i=t?.start??0,n=t?.end??i+this.randSize()-1,s=Math.max(0,n-i+1),o=64*1024,a=s;return new ReadableStream({pull(c){if(a<=0){c.close();return}let l=Math.min(o,a),d=new Uint8Array(l);crypto.getRandomValues(d),c.enqueue(d),a-=l}})}}});var Qm,G4=j(()=>{"use strict";Be();He();Qm=class{addition;token;onTokenUpdate;constructor(e,t){this.addition=e||{},this.token=this.addition.token||"",this.onTokenUpdate=t}get baseUrl(){return(this.addition.url||"").replace(/\/+$/,"")}async init(){if(!this.baseUrl)throw new Error("[AListV3] url is required");try{let e=await this.request("/me","GET");this.addition.username&&e.username!==this.addition.username&&await this.login()}catch{this.addition.username&&await this.login()}}async login(){if(!this.addition.username)return;let e=await this.request("/auth/login","POST",{username:this.addition.username,password:this.addition.password},!1);if(this.token=e.token,this.onTokenUpdate)try{await this.onTokenUpdate(this.token)}catch{}}async request(e,t,i,n=!0){let s=await fetch(`${this.baseUrl}/api${e}`,{method:t,headers:{"Content-Type":"application/json",...this.token?{Authorization:this.token}:{}},...i!==void 0?{body:JSON.stringify(i)}:{}}),o=await s.json().catch(()=>({code:s.status,message:"invalid response",data:null}));if(o.code!==200){if((o.code===401||o.code===403)&&n)return await this.login(),this.request(e,t,i,!1);throw new Error(`[AListV3] request failed: code=${o.code}, message=${o.message}`)}return o.data}toFileItem(e){return{name:e.name,size:e.size||0,is_dir:!!e.is_dir,modified:e.modified||new Date().toISOString(),sign:e.sign||"",thumb:e.thumb||"",type:e.type??X(e.name,!!e.is_dir),raw_url:""}}async list(e,t){let n=((await this.request("/fs/list","POST",{path:t,password:this.addition.meta_password||"",page:1,per_page:0,refresh:!1})).content||[]).map(s=>this.toFileItem(s));return de(n,"name","asc")}async get(e,t){let i=await this.request("/fs/get","POST",{path:t,password:this.addition.meta_password||""});return{...this.toFileItem(i),raw_url:i.raw_url||""}}async mkdir(e,t){await this.request("/fs/mkdir","POST",{path:t})}async rename(e,t,i){await this.request("/fs/rename","POST",{path:t,name:i})}async remove(e,t,i){let n=t.split("/").slice(0,-1).join("/")||"/";await this.request("/fs/remove","POST",{dir:n,names:i})}async move(e,t,i,n,s){let o=n.split("/").slice(0,-1).join("/")||"/",a=s.split("/").slice(0,-1).join("/")||"/";await this.request("/fs/move","POST",{src_dir:o,dst_dir:a,names:i})}async copy(e,t,i,n,s){let o=n.split("/").slice(0,-1).join("/")||"/",a=s.split("/").slice(0,-1).join("/")||"/";await this.request("/fs/copy","POST",{src_dir:o,dst_dir:a,names:i})}async put(e,t,i){let n=await fetch(`${this.baseUrl}/api/fs/put`,{method:"PUT",headers:{Authorization:this.token,"File-Path":encodeURIComponent(t),"Content-Type":"application/octet-stream"},body:i}),s=await n.json().catch(()=>({code:n.status,message:"invalid response",data:null}));if(s.code!==200)throw new Error(`[AListV3] put failed: code=${s.code}, message=${s.message}`)}}});function z4(r){let e=r.indexOf("http://"),t=r.indexOf("https://"),i=e>=0?e:t;if(i<0)throw new Error(`invalid line: ${r}, because url is required for file`);let n=r.slice(i),s=r.slice(0,i),o={url:n,name:"",level:0,modified:0,size:0,children:[]};if(i>0){if(!s.endsWith(":"))throw new Error(`invalid line: ${r}, file info must end with ':'`);let a=s.slice(0,-1);if(!a)throw new Error(`invalid line: ${r}, file name can't be empty`);let c=a.split(":");if(o.name=c[0],c.length>1){let l=parseInt(c[1],10);if(Number.isNaN(l))throw new Error(`invalid line: ${r}, file size must be an integer`);if(o.size=l,c.length>2){let d=parseInt(c[2],10);if(Number.isNaN(d))throw new Error(`invalid line: ${r}, modified must be a unix timestamp`);o.modified=d}}}else{let c=new URL(n).pathname.split("/").filter(Boolean);o.name=c[c.length-1]||n}return o}function VJ(r){let e={url:"",name:"root",level:-1,modified:0,size:0,children:[]},t=[e],i=String(r||"").split(` +`);for(let n of i){let s=0;for(;s<n.length&&n[s]===" ";)s++;if(s%2!==0)throw new Error(`the line '${n}' indent is not a multiple of 2`);let o=s/2,a=n.slice(s).trim();if(a){for(;o<=t[t.length-1].level;)t.pop();if(a.endsWith(":")){let c={url:"",name:a.slice(0,-1),level:o,modified:0,size:0,children:[]};t[t.length-1].children.push(c),t.push(c)}else{let c=z4(a);c.level=o,t[t.length-1].children.push(c)}}}return e}function ql(r){if(r.url)return r.size;let e=0;for(let t of r.children)e+=ql(t);return r.size=e,e}function YJ(r){let e=t=>{if(t.level===-1)return t.children.map(e).join(` `);let i=" ".repeat(t.level);if(!t.url){let a=t.children.map(e).join(` `);return`${i}${t.name}:${a?` -`+a:""}`}let s=new URL(t.url).pathname.split("/").filter(Boolean).pop()||"";if(t.size===0&&t.modified===0)return`${i}${s===t.name?t.url:`${t.name}:${t.url}`}`;let o=t.name;return(t.size!==0||t.modified!==0)&&(o+=`:${t.size}`),t.modified!==0&&(o+=`:${t.modified}`),`${i}${o}:${t.url}`};return e(r)}function jo(r){return r==="/"||!r?["root"]:["root",...r.replace(/\/+$/,"").split("/").filter(Boolean)]}function Jn(r,e){let t=jo(e),i=r;for(let n=0;n<t.length;n++){if(!i||i.name!==t[n])return null;if(n===t.length-1)return i;let s=null;for(let o of i.children)if(o.name===t[n+1]){s=o;break}i=s}return i}async function cJ(r){try{Gr(r,"UrlTree head_size");let e=await fetch(r,{method:"HEAD"});if(!e.ok)return 0;let t=parseInt(e.headers.get("Content-Length")||"0",10);return Number.isFinite(t)?t:0}catch{return 0}}var Im,g4=V(()=>{"use strict";Be();He();oc();Im=class{addition;root;onUpdate;constructor(e,t){this.addition=e||{},this.root=oJ(this.addition.url_structure||""),Pl(this.root),this.onUpdate=t}async init(){if(!this.addition.url_structure||!this.addition.url_structure.trim())throw new Error("[UrlTree] url_structure is required")}persist(){if(this.addition.writable&&(this.addition.url_structure=aJ(this.root),this.onUpdate))try{this.onUpdate(this.addition.url_structure)}catch{}}nodeToFileItem(e,t){let i=!e.url;return{name:e.name,size:e.size,is_dir:i,modified:e.modified?new Date(e.modified*1e3).toISOString():new Date().toISOString(),sign:"",thumb:"",type:X(e.name,i),raw_url:i?"":e.url}}async list(e,t){let i=Jn(this.root,t);if(!i)throw new Error(`[UrlTree] path not found: ${t}`);if(i.url)throw new Error(`[UrlTree] not a folder: ${t}`);let n=i.children.map(s=>this.nodeToFileItem(s,`${t.replace(/\/+$/,"")}/${s.name}`));return de(n,"name","asc")}async get(e,t){let i=Jn(this.root,t);if(!i)throw new Error(`[UrlTree] path not found: ${t}`);return this.nodeToFileItem(i,t)}async mkdir(e,t){if(!this.addition.writable)throw new Error("[UrlTree] not writable");let i=jo(t),n=i[i.length-1],s=Jn(this.root,"/"+i.slice(1,-1).join("/"));if(!s||s.url)throw new Error("[UrlTree] parent not found");s.children.push({url:"",name:n,level:s.level+1,modified:0,size:0,children:[]}),this.persist()}async rename(e,t,i){if(!this.addition.writable)throw new Error("[UrlTree] not writable");let n=Jn(this.root,t);if(!n)throw new Error("[UrlTree] path not found");n.name=i,this.persist()}async remove(e,t,i){if(!this.addition.writable)throw new Error("[UrlTree] not writable");let n=jo(t),s=n[n.length-1],o=Jn(this.root,"/"+n.slice(1,-1).join("/"));if(!o)throw new Error("[UrlTree] parent not found");o.children=o.children.filter(a=>a.name!==s),Pl(this.root),this.persist()}async move(e,t,i,n,s){if(!this.addition.writable)throw new Error("[UrlTree] not writable");let o=Jn(this.root,"/"+jo(n).slice(1,-1).join("/")),a=Jn(this.root,"/"+jo(s).slice(1,-1).join("/"));if(!o||!a||a.url)throw new Error("[UrlTree] invalid path");for(let c of i){let l=o.children.findIndex(u=>u.name===c);if(l<0)continue;let[d]=o.children.splice(l,1);d.level=a.level+1,a.children.push(d)}Pl(this.root),this.persist()}async copy(e,t,i,n,s){if(!this.addition.writable)throw new Error("[UrlTree] not writable");let o=Jn(this.root,"/"+jo(n).slice(1,-1).join("/")),a=Jn(this.root,"/"+jo(s).slice(1,-1).join("/"));if(!o||!a||a.url)throw new Error("[UrlTree] invalid path");for(let c of i){let l=o.children.find(d=>d.name===c);l&&a.children.push(this.deepCopy(l,a.level+1))}Pl(this.root),this.persist()}async put(e,t,i){if(!this.addition.writable)throw new Error("[UrlTree] not writable");let n=i.toString("utf8").trim(),s=Jn(this.root,"/"+jo(t).slice(1,-1).join("/"));if(!s||s.url)throw new Error("[UrlTree] parent not found");let o=t.split("/").filter(Boolean).pop()||"file",a=h4(`${o}:${n}`);a.level=s.level+1,s.children.push(a),this.addition.head_size&&(a.size=await cJ(a.url)),Pl(this.root),this.persist()}deepCopy(e,t){return{url:e.url,name:e.name,level:t,modified:e.modified,size:e.size,children:e.children.map(i=>this.deepCopy(i,t+1))}}}});function Gu(r,e){let t=String(r||"").replace(/\/+$/,""),i=String(e||"").replace(/^\/+/,"");return t?i?t+"/"+i:t:"/"+i}function p4(r){let e=r.lastIndexOf("/");return e>0?r.slice(0,e):"/"}function m4(r){return r.split("/").filter(Boolean).pop()||""}function lJ(r){if(r.includes(":")){let t=r.indexOf(":"),i=r.slice(0,t),n=r.slice(t+1);if(!i.includes("/"))return[i,n]}let e=r.split("/").filter(Boolean);return[e[e.length-1]||r,r]}function y4(r){let e=String(r||"/").replace(/^\//,""),t=e.indexOf("/");return t<0?[e,""]:[e.slice(0,t),e.slice(t+1)]}var wm,I4=V(()=>{"use strict";Be();He();wm=class{addition;pathMap=new Map;remotes=new Map;supportSuffix=new Set;downloadSuffix=new Set;autoFlatten=!1;oneKey="";constructor(e){this.addition=e||{}}async init(){let e=this.addition.paths||"";if(!e.trim())throw new Error("[Strm] paths is required");for(let o of e.split(` -`)){let a=o.trim();if(!a)continue;let[c,l]=lJ(a);this.pathMap.has(c)||this.pathMap.set(c,[]),this.pathMap.get(c).push(l)}this.pathMap.size===1&&(this.autoFlatten=!0,this.oneKey=this.pathMap.keys().next().value??"");let t=(this.addition.filterFileTypes||"mp4,mkv,flv,avi,wmv,ts,rmvb,webm,mp3,flac,aac,wav,ogg,m4a,wma,alac").split(",").map(o=>o.trim().toLowerCase()).filter(Boolean);this.supportSuffix=new Set(t);let i=(this.addition.downloadFileTypes||"ass,srt,vtt,sub,strm").split(",").map(o=>o.trim().toLowerCase()).filter(Boolean);this.downloadSuffix=new Set(i);let{resolvePath:n}=await Promise.resolve().then(()=>(Ve(),Kr)),{getDriver:s}=await Promise.resolve().then(()=>(Yt(),Ni));for(let o of this.pathMap.values())for(let a of o)try{let c=await n(a);if(!c.isVirtual&&c.storage){let l=await s(c.storage.driver,c.storage);this.remotes.set(a,{driver:l,physical:c.physical||"/"})}}catch(c){console.warn(`[Strm] failed to resolve remote path '${a}':`,c)}}encodePath(e){return e.split("/").map(t=>encodeURIComponent(t)).join("/")}getLink(e){let t=e;this.addition.encodePath&&(t=this.encodePath(e));let i=this.addition.PathPrefix||"/d";return t=Gu(i,t),t.startsWith("/")||(t="/"+t),this.addition.withoutUrl?t:`${(this.addition.siteUrl||"").replace(/\/+$/,"")}${t}`}ext(e){let t=e.lastIndexOf(".");return t>=0?e.slice(t+1).toLowerCase():""}async listRemote(e,t){let i=this.remotes.get(e);if(!i)return[];let n=Gu(i.physical,t);try{return await i.driver.list("",n)}catch{return[]}}convert(e,t){let i=[];for(let n of t){if(n.is_dir){i.push(n);continue}let s=this.ext(n.name),o=Gu(e,n.name);if(this.downloadSuffix.has(s))i.push({...n,size:n.size});else if(this.supportSuffix.has(s)){let a=n.name.replace(/\.[^.]+$/,"")+".strm";i.push({name:a,size:new TextEncoder().encode(this.getLink(o)).length,is_dir:!1,modified:n.modified,sign:o,thumb:n.thumb||"",type:X(a,!1),raw_url:""})}}return i}async list(e,t){let i=t||"/";if(i==="/"&&!this.autoFlatten){let l=[];for(let d of this.pathMap.keys())l.push({name:d,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""});return l}let{root:n,sub:s}=this.autoFlatten?{root:this.oneKey,sub:i.replace(/^\//,"")}:(()=>{let[l,d]=y4(i);return{root:l,sub:d}})(),o=this.pathMap.get(n);if(!o)throw new Error(`[Strm] path not found: ${i}`);let a=[],c=new Set;for(let l of o){if(!this.remotes.get(l))continue;let u=Gu(l,s),f=await this.listRemote(l,s);for(let h of this.convert(u,f))c.has(h.name)||(c.add(h.name),a.push(h))}return de(a,"name","asc")}async get(e,t){let i=t||"/";if(i.endsWith(".strm")){let a=p4(i),c=m4(i),d=(await this.list("",a)).find(u=>u.name===c);if(!d)throw new Error(`[Strm] not found: ${i}`);return d}let[n,s]=y4(i),o=this.pathMap.get(n);if(!o)throw new Error(`[Strm] path not found: ${i}`);for(let a of o){let c=this.remotes.get(a);if(!c)continue;let l=Gu(c.physical,s);try{let d=await c.driver.get("",l);if(d)return d}catch{}}throw new Error(`[Strm] not found: ${i}`)}async mkdir(){throw new Error("[Strm] mkdir is not supported")}async rename(){throw new Error("[Strm] rename is not supported")}async remove(){throw new Error("[Strm] remove is not supported")}async move(){throw new Error("[Strm] move is not supported")}async copy(){throw new Error("[Strm] copy is not supported")}async put(){throw new Error("[Strm] put is not supported")}async createReadStream(e){let t=e||"/",i=p4(t),n=m4(t),o=(await this.list("",i)).find(l=>l.name===n);if(!o||!o.sign)throw new Error(`[Strm] not found: ${t}`);let a=this.getLink(o.sign),c=new TextEncoder().encode(a);return new ReadableStream({start(l){l.enqueue(c),l.close()}})}}});function $o(r,e){let t=String(r||"").replace(/\/+$/,""),i=String(e||"").replace(/^\/+/,"");return t?i?t+"/"+i:t:"/"+i}function GC(r){let e=r.lastIndexOf("/");return e>0?r.slice(0,e):"/"}function Tl(r){return r.split("/").filter(Boolean).pop()||""}var xm,w4=V(()=>{"use strict";Be();xm=class{addition;remoteDriver=null;remoteRoot="/";chunkPrefix;customExt;partSize;constructor(e){this.addition=e||{},this.chunkPrefix=this.addition.chunk_prefix||"[openlist_chunk]",this.customExt=this.addition.custom_ext||"",this.partSize=Number(this.addition.part_size)||0}async init(){if(this.partSize<=0)throw new Error("[Chunk] part_size must be positive");if(!this.chunkPrefix)throw new Error("[Chunk] chunk_prefix must not be empty");let{resolvePath:e}=await Promise.resolve().then(()=>(Ve(),Kr)),{getDriver:t}=await Promise.resolve().then(()=>(Yt(),Ni)),i=await e(this.addition.remote_path||"/");if(i.isVirtual||!i.storage)throw new Error(`[Chunk] remote_path \u672A\u5339\u914D\u5230\u6709\u6548\u5B58\u50A8: ${this.addition.remote_path}`);this.remoteRoot=i.physical||"/",this.remoteDriver=await t(i.storage.driver,i.storage)}ensureReady(){if(!this.remoteDriver)throw new Error("[Chunk] driver not initialized")}joinRemote(e){let t=String(e||"/");return((this.remoteRoot==="/"?"":this.remoteRoot)+t).replace(/\/{2,}/g,"/")||"/"}getPartName(e){return`${e}${this.customExt}`}chunkDirRemote(e){let t=GC(this.joinRemote(e)),i=Tl(e);return $o(t,this.chunkPrefix+i)}async listParts(e){this.ensureReady();let t=this.chunkDirRemote(e),i=await this.remoteDriver.list("",t),n=[];for(let s of i){if(s.is_dir)continue;let o=parseInt(s.name.replace(new RegExp(`${this.customExt}$`),""),10);Number.isNaN(o)||(n[o]={name:s.name,size:s.size,modified:s.modified,raw_url:s.raw_url||"",raw_url_headers:s.raw_url_headers})}return n.filter(s=>!!s)}async totalChunkSize(e){return(await this.listParts(e)).reduce((i,n)=>i+n.size,0)}async list(e,t){this.ensureReady();let i=this.joinRemote(t),n=await this.remoteDriver.list("",i),s=[],o=[];for(let a of n){if(a.is_dir&&a.name.startsWith(this.chunkPrefix)){let c=a.name.slice(this.chunkPrefix.length),l=s.length;s.push(null),o.push((async()=>{let d=$o(t,a.name),u=await this.totalChunkSize(d);s[l]={name:c,size:u,is_dir:!1,modified:a.modified,sign:this.chunkPrefix+c,type:X(c,!1),raw_url:""}})());continue}!this.addition.show_hidden&&a.name.startsWith(".")||s.push(a)}return await Promise.all(o),s.filter(a=>!!a)}async get(e,t){this.ensureReady();let i=this.joinRemote(t);try{let a=await this.remoteDriver.get("",i);if(a&&!a.is_dir||a)return a}catch{}let n=Tl(t),s=await this.totalChunkSize(t),o=await this.listParts(t);return{name:n,size:s,is_dir:!1,modified:o[0]?.modified||new Date().toISOString(),sign:this.chunkPrefix+n,type:X(n,!1),raw_url:""}}async mkdir(e,t){this.ensureReady(),await this.remoteDriver.mkdir("",this.joinRemote(t))}async rename(e,t,i){this.ensureReady();let n=this.joinRemote(t);try{await this.remoteDriver.get("",n),await this.remoteDriver.rename("",n,i)}catch{let s=GC(n),o=$o(s,this.chunkPrefix+Tl(t));await this.remoteDriver.rename("",o,this.chunkPrefix+i)}}async remove(e,t,i){this.ensureReady();let n=this.joinRemote(t);try{await this.remoteDriver.get("",n),await this.remoteDriver.remove("",n,i)}catch{await this.remoteDriver.remove("",this.chunkDirRemote(t),i)}}async move(e,t,i,n,s){this.ensureReady();let o=this.joinRemote(n),a=this.joinRemote(s);try{await this.remoteDriver.get("",o),await this.remoteDriver.move(e,t,i,o,a)}catch{await this.remoteDriver.move(e,t,i,this.chunkDirRemote(n),$o(a,this.chunkPrefix+Tl(n)))}}async copy(e,t,i,n,s){this.ensureReady();let o=this.joinRemote(n),a=this.joinRemote(s);try{await this.remoteDriver.get("",o),await this.remoteDriver.copy(e,t,i,o,a)}catch{await this.remoteDriver.copy(e,t,i,this.chunkDirRemote(n),$o(a,this.chunkPrefix+Tl(n)))}}async put(e,t,i){this.ensureReady();let n=i.length,s=this.joinRemote(t);if(this.addition.chunk_large_file_only&&n<=this.partSize){await this.remoteDriver.put("",s,i);return}if(n<=this.partSize){await this.remoteDriver.put("",s,i);return}let o=this.chunkDirRemote(t);try{await this.remoteDriver.mkdir("",o)}catch{}let a=0,c=0;for(;a<n;){let l=Math.min(a+this.partSize,n),d=i.subarray(a,l),u=$o(o,this.getPartName(c));await this.remoteDriver.put("",u,Buffer.from(d)),a=l,c++}}async createReadStream(e,t){this.ensureReady();let i=await this.listParts(e),n=i.reduce((d,u)=>d+u.size,0),s=this.remoteDriver,o=this.chunkPrefix,a=t?.start??0,c=t?t.end-t.start+1:n;return new ReadableStream({start:async d=>{for(let u of i){let f=u.size;if(a>=f){a-=f;continue}let h=u.raw_url;if(!h){let y=GC(e),w=$o($o(y,o+Tl(e)),u.name);try{h=(await s.get("",w)).raw_url||""}catch{h=""}}if(!h){d.error(new Error(`[Chunk] failed to resolve download url for ${u.name}`));return}let g=await fetch(h,{headers:u.raw_url_headers||{}});if(!g.ok){d.error(new Error(`[Chunk] download part ${u.name} failed: HTTP ${g.status}`));return}let I=new Uint8Array(await g.arrayBuffer());if(a>0&&(I=I.subarray(a),a=0),c>=0&&I.length>c&&(I=I.subarray(0,c)),I.length>0&&d.enqueue(I),c>=0&&(c-=I.length,c<=0))break}d.close()}})}}});function dJ(r){let e=r.replace(/^https?:\/\//,""),t=e.indexOf(".");return(t>=0?e.slice(0,t):e).toLowerCase()}function x4(r){return r.endsWith("/")?r:r+"/"}function zu(r,e){let t=String(r||"").replace(/\/+$/,""),i=String(e||"").replace(/^\/+/,"");return t?i?t+"/"+i:t:i}function uJ(r){let e=atob(r),t=new Uint8Array(e.length);for(let i=0;i<e.length;i++)t[i]=e.charCodeAt(i);return t}function fJ(r){let e="";for(let t of r)e+=String.fromCharCode(t);return btoa(e)}async function C4(r,e){let t=await crypto.subtle.importKey("raw",e,{name:"HMAC",hash:"SHA-256"},!1,["sign"]),i=await crypto.subtle.sign("HMAC",t,new TextEncoder().encode(r));return fJ(new Uint8Array(i))}function AJ(r){let e={blobs:[],prefixes:[]},t=/<Blob>([\s\S]*?)<\/Blob>/g,i=/<BlobPrefix>[\s\S]*?<Name>([^<]+)<\/Name>[\s\S]*?<\/BlobPrefix>/g,n;for(;n=t.exec(r);){let s=n[1],o=(s.match(/<Name>([^<]+)<\/Name>/)||[])[1]||"";if(o.endsWith("/"))continue;let a=parseInt((s.match(/<Content-Length>(\d+)<\/Content-Length>/)||[])[1]||"0",10),c=(s.match(/<Last-Modified>([^<]+)<\/Last-Modified>/)||[])[1]||"";e.blobs.push({name:o,size:a,modified:c?new Date(c).toISOString():new Date().toISOString()})}for(;n=i.exec(r);)e.prefixes.push(n[1]);return e}var Cm,E4=V(()=>{"use strict";Be();He();Cm=class{addition;accountName;keyBytes;endpoint;container;constructor(e){this.addition=e||{},this.accountName=dJ(this.addition.endpoint||""),this.keyBytes=uJ(this.addition.access_key||""),this.endpoint=(this.addition.endpoint||"").replace(/\/+$/,""),this.container=(this.addition.container_name||"").replace(/^\/+|\/+$/g,"")}async init(){if(!/^[a-z0-9]+$/.test(this.accountName))throw new Error("[AzureBlob] invalid storage account name");if(!this.container)throw new Error("[AzureBlob] container_name is required");if(!this.addition.access_key)throw new Error("[AzureBlob] access_key is required")}async sharedKeySignature(e,t,i,n,s,o){let a=n["x-ms-date"]||"",c=Object.keys(n).filter(u=>u.startsWith("x-ms-")).sort().map(u=>`${u.toLowerCase()}:${n[u].trim()} +`+a:""}`}let s=new URL(t.url).pathname.split("/").filter(Boolean).pop()||"";if(t.size===0&&t.modified===0)return`${i}${s===t.name?t.url:`${t.name}:${t.url}`}`;let o=t.name;return(t.size!==0||t.modified!==0)&&(o+=`:${t.size}`),t.modified!==0&&(o+=`:${t.modified}`),`${i}${o}:${t.url}`};return e(r)}function $o(r){return r==="/"||!r?["root"]:["root",...r.replace(/\/+$/,"").split("/").filter(Boolean)]}function Yn(r,e){let t=$o(e),i=r;for(let n=0;n<t.length;n++){if(!i||i.name!==t[n])return null;if(n===t.length-1)return i;let s=null;for(let o of i.children)if(o.name===t[n+1]){s=o;break}i=s}return i}async function WJ(r){try{zr(r,"UrlTree head_size");let e=await fetch(r,{method:"HEAD"});if(!e.ok)return 0;let t=parseInt(e.headers.get("Content-Length")||"0",10);return Number.isFinite(t)?t:0}catch{return 0}}var _m,J4=j(()=>{"use strict";Be();He();lc();_m=class{addition;root;onUpdate;constructor(e,t){this.addition=e||{},this.root=VJ(this.addition.url_structure||""),ql(this.root),this.onUpdate=t}async init(){if(!this.addition.url_structure||!this.addition.url_structure.trim())throw new Error("[UrlTree] url_structure is required")}persist(){if(this.addition.writable&&(this.addition.url_structure=YJ(this.root),this.onUpdate))try{this.onUpdate(this.addition.url_structure)}catch{}}nodeToFileItem(e,t){let i=!e.url;return{name:e.name,size:e.size,is_dir:i,modified:e.modified?new Date(e.modified*1e3).toISOString():new Date().toISOString(),sign:"",thumb:"",type:X(e.name,i),raw_url:i?"":e.url}}async list(e,t){let i=Yn(this.root,t);if(!i)throw new Error(`[UrlTree] path not found: ${t}`);if(i.url)throw new Error(`[UrlTree] not a folder: ${t}`);let n=i.children.map(s=>this.nodeToFileItem(s,`${t.replace(/\/+$/,"")}/${s.name}`));return de(n,"name","asc")}async get(e,t){let i=Yn(this.root,t);if(!i)throw new Error(`[UrlTree] path not found: ${t}`);return this.nodeToFileItem(i,t)}async mkdir(e,t){if(!this.addition.writable)throw new Error("[UrlTree] not writable");let i=$o(t),n=i[i.length-1],s=Yn(this.root,"/"+i.slice(1,-1).join("/"));if(!s||s.url)throw new Error("[UrlTree] parent not found");s.children.push({url:"",name:n,level:s.level+1,modified:0,size:0,children:[]}),this.persist()}async rename(e,t,i){if(!this.addition.writable)throw new Error("[UrlTree] not writable");let n=Yn(this.root,t);if(!n)throw new Error("[UrlTree] path not found");n.name=i,this.persist()}async remove(e,t,i){if(!this.addition.writable)throw new Error("[UrlTree] not writable");let n=$o(t),s=n[n.length-1],o=Yn(this.root,"/"+n.slice(1,-1).join("/"));if(!o)throw new Error("[UrlTree] parent not found");o.children=o.children.filter(a=>a.name!==s),ql(this.root),this.persist()}async move(e,t,i,n,s){if(!this.addition.writable)throw new Error("[UrlTree] not writable");let o=Yn(this.root,"/"+$o(n).slice(1,-1).join("/")),a=Yn(this.root,"/"+$o(s).slice(1,-1).join("/"));if(!o||!a||a.url)throw new Error("[UrlTree] invalid path");for(let c of i){let l=o.children.findIndex(u=>u.name===c);if(l<0)continue;let[d]=o.children.splice(l,1);d.level=a.level+1,a.children.push(d)}ql(this.root),this.persist()}async copy(e,t,i,n,s){if(!this.addition.writable)throw new Error("[UrlTree] not writable");let o=Yn(this.root,"/"+$o(n).slice(1,-1).join("/")),a=Yn(this.root,"/"+$o(s).slice(1,-1).join("/"));if(!o||!a||a.url)throw new Error("[UrlTree] invalid path");for(let c of i){let l=o.children.find(d=>d.name===c);l&&a.children.push(this.deepCopy(l,a.level+1))}ql(this.root),this.persist()}async put(e,t,i){if(!this.addition.writable)throw new Error("[UrlTree] not writable");let n=i.toString("utf8").trim(),s=Yn(this.root,"/"+$o(t).slice(1,-1).join("/"));if(!s||s.url)throw new Error("[UrlTree] parent not found");let o=t.split("/").filter(Boolean).pop()||"file",a=z4(`${o}:${n}`);a.level=s.level+1,s.children.push(a),this.addition.head_size&&(a.size=await WJ(a.url)),ql(this.root),this.persist()}deepCopy(e,t){return{url:e.url,name:e.name,level:t,modified:e.modified,size:e.size,children:e.children.map(i=>this.deepCopy(i,t+1))}}}});function tf(r,e){let t=String(r||"").replace(/\/+$/,""),i=String(e||"").replace(/^\/+/,"");return t?i?t+"/"+i:t:"/"+i}function j4(r){let e=r.lastIndexOf("/");return e>0?r.slice(0,e):"/"}function $4(r){return r.split("/").filter(Boolean).pop()||""}function XJ(r){if(r.includes(":")){let t=r.indexOf(":"),i=r.slice(0,t),n=r.slice(t+1);if(!i.includes("/"))return[i,n]}let e=r.split("/").filter(Boolean);return[e[e.length-1]||r,r]}function V4(r){let e=String(r||"/").replace(/^\//,""),t=e.indexOf("/");return t<0?[e,""]:[e.slice(0,t),e.slice(t+1)]}var Fm,Y4=j(()=>{"use strict";Be();He();Fm=class{addition;pathMap=new Map;remotes=new Map;supportSuffix=new Set;downloadSuffix=new Set;autoFlatten=!1;oneKey="";constructor(e){this.addition=e||{}}async init(){let e=this.addition.paths||"";if(!e.trim())throw new Error("[Strm] paths is required");for(let o of e.split(` +`)){let a=o.trim();if(!a)continue;let[c,l]=XJ(a);this.pathMap.has(c)||this.pathMap.set(c,[]),this.pathMap.get(c).push(l)}this.pathMap.size===1&&(this.autoFlatten=!0,this.oneKey=this.pathMap.keys().next().value??"");let t=(this.addition.filterFileTypes||"mp4,mkv,flv,avi,wmv,ts,rmvb,webm,mp3,flac,aac,wav,ogg,m4a,wma,alac").split(",").map(o=>o.trim().toLowerCase()).filter(Boolean);this.supportSuffix=new Set(t);let i=(this.addition.downloadFileTypes||"ass,srt,vtt,sub,strm").split(",").map(o=>o.trim().toLowerCase()).filter(Boolean);this.downloadSuffix=new Set(i);let{resolvePath:n}=await Promise.resolve().then(()=>(Ve(),Gr)),{getDriver:s}=await Promise.resolve().then(()=>(Yt(),qi));for(let o of this.pathMap.values())for(let a of o)try{let c=await n(a);if(!c.isVirtual&&c.storage){let l=await s(c.storage.driver,c.storage);this.remotes.set(a,{driver:l,physical:c.physical||"/"})}}catch(c){console.warn(`[Strm] failed to resolve remote path '${a}':`,c)}}encodePath(e){return e.split("/").map(t=>encodeURIComponent(t)).join("/")}getLink(e){let t=e;this.addition.encodePath&&(t=this.encodePath(e));let i=this.addition.PathPrefix||"/d";return t=tf(i,t),t.startsWith("/")||(t="/"+t),this.addition.withoutUrl?t:`${(this.addition.siteUrl||"").replace(/\/+$/,"")}${t}`}ext(e){let t=e.lastIndexOf(".");return t>=0?e.slice(t+1).toLowerCase():""}async listRemote(e,t){let i=this.remotes.get(e);if(!i)return[];let n=tf(i.physical,t);try{return await i.driver.list("",n)}catch{return[]}}convert(e,t){let i=[];for(let n of t){if(n.is_dir){i.push(n);continue}let s=this.ext(n.name),o=tf(e,n.name);if(this.downloadSuffix.has(s))i.push({...n,size:n.size});else if(this.supportSuffix.has(s)){let a=n.name.replace(/\.[^.]+$/,"")+".strm";i.push({name:a,size:new TextEncoder().encode(this.getLink(o)).length,is_dir:!1,modified:n.modified,sign:o,thumb:n.thumb||"",type:X(a,!1),raw_url:""})}}return i}async list(e,t){let i=t||"/";if(i==="/"&&!this.autoFlatten){let l=[];for(let d of this.pathMap.keys())l.push({name:d,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""});return l}let{root:n,sub:s}=this.autoFlatten?{root:this.oneKey,sub:i.replace(/^\//,"")}:(()=>{let[l,d]=V4(i);return{root:l,sub:d}})(),o=this.pathMap.get(n);if(!o)throw new Error(`[Strm] path not found: ${i}`);let a=[],c=new Set;for(let l of o){if(!this.remotes.get(l))continue;let u=tf(l,s),f=await this.listRemote(l,s);for(let h of this.convert(u,f))c.has(h.name)||(c.add(h.name),a.push(h))}return de(a,"name","asc")}async get(e,t){let i=t||"/";if(i.endsWith(".strm")){let a=j4(i),c=$4(i),d=(await this.list("",a)).find(u=>u.name===c);if(!d)throw new Error(`[Strm] not found: ${i}`);return d}let[n,s]=V4(i),o=this.pathMap.get(n);if(!o)throw new Error(`[Strm] path not found: ${i}`);for(let a of o){let c=this.remotes.get(a);if(!c)continue;let l=tf(c.physical,s);try{let d=await c.driver.get("",l);if(d)return d}catch{}}throw new Error(`[Strm] not found: ${i}`)}async mkdir(){throw new Error("[Strm] mkdir is not supported")}async rename(){throw new Error("[Strm] rename is not supported")}async remove(){throw new Error("[Strm] remove is not supported")}async move(){throw new Error("[Strm] move is not supported")}async copy(){throw new Error("[Strm] copy is not supported")}async put(){throw new Error("[Strm] put is not supported")}async createReadStream(e){let t=e||"/",i=j4(t),n=$4(t),o=(await this.list("",i)).find(l=>l.name===n);if(!o||!o.sign)throw new Error(`[Strm] not found: ${t}`);let a=this.getLink(o.sign),c=new TextEncoder().encode(a);return new ReadableStream({start(l){l.enqueue(c),l.close()}})}}});function Vo(r,e){let t=String(r||"").replace(/\/+$/,""),i=String(e||"").replace(/^\/+/,"");return t?i?t+"/"+i:t:"/"+i}function cE(r){let e=r.lastIndexOf("/");return e>0?r.slice(0,e):"/"}function Ol(r){return r.split("/").filter(Boolean).pop()||""}var Pm,W4=j(()=>{"use strict";Be();Pm=class{addition;remoteDriver=null;remoteRoot="/";chunkPrefix;customExt;partSize;constructor(e){this.addition=e||{},this.chunkPrefix=this.addition.chunk_prefix||"[openlist_chunk]",this.customExt=this.addition.custom_ext||"",this.partSize=Number(this.addition.part_size)||0}async init(){if(this.partSize<=0)throw new Error("[Chunk] part_size must be positive");if(!this.chunkPrefix)throw new Error("[Chunk] chunk_prefix must not be empty");let{resolvePath:e}=await Promise.resolve().then(()=>(Ve(),Gr)),{getDriver:t}=await Promise.resolve().then(()=>(Yt(),qi)),i=await e(this.addition.remote_path||"/");if(i.isVirtual||!i.storage)throw new Error(`[Chunk] remote_path \u672A\u5339\u914D\u5230\u6709\u6548\u5B58\u50A8: ${this.addition.remote_path}`);this.remoteRoot=i.physical||"/",this.remoteDriver=await t(i.storage.driver,i.storage)}ensureReady(){if(!this.remoteDriver)throw new Error("[Chunk] driver not initialized")}joinRemote(e){let t=String(e||"/");return((this.remoteRoot==="/"?"":this.remoteRoot)+t).replace(/\/{2,}/g,"/")||"/"}getPartName(e){return`${e}${this.customExt}`}chunkDirRemote(e){let t=cE(this.joinRemote(e)),i=Ol(e);return Vo(t,this.chunkPrefix+i)}async listParts(e){this.ensureReady();let t=this.chunkDirRemote(e),i=await this.remoteDriver.list("",t),n=[];for(let s of i){if(s.is_dir)continue;let o=parseInt(s.name.replace(new RegExp(`${this.customExt}$`),""),10);Number.isNaN(o)||(n[o]={name:s.name,size:s.size,modified:s.modified,raw_url:s.raw_url||"",raw_url_headers:s.raw_url_headers})}return n.filter(s=>!!s)}async totalChunkSize(e){return(await this.listParts(e)).reduce((i,n)=>i+n.size,0)}async list(e,t){this.ensureReady();let i=this.joinRemote(t),n=await this.remoteDriver.list("",i),s=[],o=[];for(let a of n){if(a.is_dir&&a.name.startsWith(this.chunkPrefix)){let c=a.name.slice(this.chunkPrefix.length),l=s.length;s.push(null),o.push((async()=>{let d=Vo(t,a.name),u=await this.totalChunkSize(d);s[l]={name:c,size:u,is_dir:!1,modified:a.modified,sign:this.chunkPrefix+c,type:X(c,!1),raw_url:""}})());continue}!this.addition.show_hidden&&a.name.startsWith(".")||s.push(a)}return await Promise.all(o),s.filter(a=>!!a)}async get(e,t){this.ensureReady();let i=this.joinRemote(t);try{let a=await this.remoteDriver.get("",i);if(a&&!a.is_dir||a)return a}catch{}let n=Ol(t),s=await this.totalChunkSize(t),o=await this.listParts(t);return{name:n,size:s,is_dir:!1,modified:o[0]?.modified||new Date().toISOString(),sign:this.chunkPrefix+n,type:X(n,!1),raw_url:""}}async mkdir(e,t){this.ensureReady(),await this.remoteDriver.mkdir("",this.joinRemote(t))}async rename(e,t,i){this.ensureReady();let n=this.joinRemote(t);try{await this.remoteDriver.get("",n),await this.remoteDriver.rename("",n,i)}catch{let s=cE(n),o=Vo(s,this.chunkPrefix+Ol(t));await this.remoteDriver.rename("",o,this.chunkPrefix+i)}}async remove(e,t,i){this.ensureReady();let n=this.joinRemote(t);try{await this.remoteDriver.get("",n),await this.remoteDriver.remove("",n,i)}catch{await this.remoteDriver.remove("",this.chunkDirRemote(t),i)}}async move(e,t,i,n,s){this.ensureReady();let o=this.joinRemote(n),a=this.joinRemote(s);try{await this.remoteDriver.get("",o),await this.remoteDriver.move(e,t,i,o,a)}catch{await this.remoteDriver.move(e,t,i,this.chunkDirRemote(n),Vo(a,this.chunkPrefix+Ol(n)))}}async copy(e,t,i,n,s){this.ensureReady();let o=this.joinRemote(n),a=this.joinRemote(s);try{await this.remoteDriver.get("",o),await this.remoteDriver.copy(e,t,i,o,a)}catch{await this.remoteDriver.copy(e,t,i,this.chunkDirRemote(n),Vo(a,this.chunkPrefix+Ol(n)))}}async put(e,t,i){this.ensureReady();let n=i.length,s=this.joinRemote(t);if(this.addition.chunk_large_file_only&&n<=this.partSize){await this.remoteDriver.put("",s,i);return}if(n<=this.partSize){await this.remoteDriver.put("",s,i);return}let o=this.chunkDirRemote(t);try{await this.remoteDriver.mkdir("",o)}catch{}let a=0,c=0;for(;a<n;){let l=Math.min(a+this.partSize,n),d=i.subarray(a,l),u=Vo(o,this.getPartName(c));await this.remoteDriver.put("",u,Buffer.from(d)),a=l,c++}}async createReadStream(e,t){this.ensureReady();let i=await this.listParts(e),n=i.reduce((d,u)=>d+u.size,0),s=this.remoteDriver,o=this.chunkPrefix,a=t?.start??0,c=t?t.end-t.start+1:n;return new ReadableStream({start:async d=>{for(let u of i){let f=u.size;if(a>=f){a-=f;continue}let h=u.raw_url;if(!h){let y=cE(e),w=Vo(Vo(y,o+Ol(e)),u.name);try{h=(await s.get("",w)).raw_url||""}catch{h=""}}if(!h){d.error(new Error(`[Chunk] failed to resolve download url for ${u.name}`));return}let g=await fetch(h,{headers:u.raw_url_headers||{}});if(!g.ok){d.error(new Error(`[Chunk] download part ${u.name} failed: HTTP ${g.status}`));return}let I=new Uint8Array(await g.arrayBuffer());if(a>0&&(I=I.subarray(a),a=0),c>=0&&I.length>c&&(I=I.subarray(0,c)),I.length>0&&d.enqueue(I),c>=0&&(c-=I.length,c<=0))break}d.close()}})}}});function ZJ(r){let e=r.replace(/^https?:\/\//,""),t=e.indexOf(".");return(t>=0?e.slice(0,t):e).toLowerCase()}function X4(r){return r.endsWith("/")?r:r+"/"}function rf(r,e){let t=String(r||"").replace(/\/+$/,""),i=String(e||"").replace(/^\/+/,"");return t?i?t+"/"+i:t:i}function ej(r){let e=atob(r),t=new Uint8Array(e.length);for(let i=0;i<e.length;i++)t[i]=e.charCodeAt(i);return t}function tj(r){let e="";for(let t of r)e+=String.fromCharCode(t);return btoa(e)}async function Z4(r,e){let t=await crypto.subtle.importKey("raw",e,{name:"HMAC",hash:"SHA-256"},!1,["sign"]),i=await crypto.subtle.sign("HMAC",t,new TextEncoder().encode(r));return tj(new Uint8Array(i))}function rj(r){let e={blobs:[],prefixes:[]},t=/<Blob>([\s\S]*?)<\/Blob>/g,i=/<BlobPrefix>[\s\S]*?<Name>([^<]+)<\/Name>[\s\S]*?<\/BlobPrefix>/g,n;for(;n=t.exec(r);){let s=n[1],o=(s.match(/<Name>([^<]+)<\/Name>/)||[])[1]||"";if(o.endsWith("/"))continue;let a=parseInt((s.match(/<Content-Length>(\d+)<\/Content-Length>/)||[])[1]||"0",10),c=(s.match(/<Last-Modified>([^<]+)<\/Last-Modified>/)||[])[1]||"";e.blobs.push({name:o,size:a,modified:c?new Date(c).toISOString():new Date().toISOString()})}for(;n=i.exec(r);)e.prefixes.push(n[1]);return e}var Tm,eF=j(()=>{"use strict";Be();He();Tm=class{addition;accountName;keyBytes;endpoint;container;constructor(e){this.addition=e||{},this.accountName=ZJ(this.addition.endpoint||""),this.keyBytes=ej(this.addition.access_key||""),this.endpoint=(this.addition.endpoint||"").replace(/\/+$/,""),this.container=(this.addition.container_name||"").replace(/^\/+|\/+$/g,"")}async init(){if(!/^[a-z0-9]+$/.test(this.accountName))throw new Error("[AzureBlob] invalid storage account name");if(!this.container)throw new Error("[AzureBlob] container_name is required");if(!this.addition.access_key)throw new Error("[AzureBlob] access_key is required")}async sharedKeySignature(e,t,i,n,s,o){let a=n["x-ms-date"]||"",c=Object.keys(n).filter(u=>u.startsWith("x-ms-")).sort().map(u=>`${u.toLowerCase()}:${n[u].trim()} `).join(""),l=`/${this.accountName}${t?"/"+t:""} ${i.split("&").filter(Boolean).sort().map(u=>{let[f,h]=u.split("=");return`${f.toLowerCase()}:${h||""}`}).join(` `)}`,d=`${e} @@ -154,7 +170,7 @@ ${o} -${c}${l}`;return C4(d,this.keyBytes)}async request(e,t,i,n={}){let s=new Date().toUTCString(),o=n.contentType||"",a=n.body?String(n.body.length):"",c={"x-ms-date":s,"x-ms-version":"2021-08-06",...n.extraHeaders||{}},l=await this.sharedKeySignature(e,t,i,c,a,o),d=`${this.endpoint}/${this.container}${t?"/"+t:""}${i?"?"+i:""}`,u={Authorization:`SharedKey ${this.accountName}:${l}`,...c};return a&&(u["Content-Length"]=a),o&&(u["Content-Type"]=o),fetch(d,{method:e,headers:u,...n.body?{body:n.body}:{}})}async sasUrl(e){let i=new Date(Date.now()+(this.addition.sign_url_expire||4)*3600*1e3).toISOString().replace(/\.\d+Z$/,"Z"),n=`/blob/${this.accountName}/${this.container}/${e}`,s=`r +${c}${l}`;return Z4(d,this.keyBytes)}async request(e,t,i,n={}){let s=new Date().toUTCString(),o=n.contentType||"",a=n.body?String(n.body.length):"",c={"x-ms-date":s,"x-ms-version":"2021-08-06",...n.extraHeaders||{}},l=await this.sharedKeySignature(e,t,i,c,a,o),d=`${this.endpoint}/${this.container}${t?"/"+t:""}${i?"?"+i:""}`,u={Authorization:`SharedKey ${this.accountName}:${l}`,...c};return a&&(u["Content-Length"]=a),o&&(u["Content-Type"]=o),fetch(d,{method:e,headers:u,...n.body?{body:n.body}:{}})}async sasUrl(e){let i=new Date(Date.now()+(this.addition.sign_url_expire||4)*3600*1e3).toISOString().replace(/\.\d+Z$/,"Z"),n=`/blob/${this.accountName}/${this.container}/${e}`,s=`r ${i} @@ -167,49 +183,49 @@ ${n} -`,o=encodeURIComponent(await C4(s,this.keyBytes));return`${this.endpoint}/${this.container}/${e}?sp=r&st=&se=${encodeURIComponent(i)}&sv=2021-08-06&sr=b&sig=${o}`}getKey(e){return String(e||"/").replace(/^\/+/,"")}async list(e,t){let i=this.getKey(t);i&&(i=x4(i));let n=`restype=container&comp=list&delimiter=%2F&prefix=${encodeURIComponent(i)}`,s=await this.request("GET","",n);if(!s.ok)throw new Error(`[AzureBlob] list failed: HTTP ${s.status}`);let o=await s.text(),{blobs:a,prefixes:c}=AJ(o),l=[];for(let d of c){let u=d.replace(/\/+$/,"").split("/").filter(Boolean).pop()||d;l.push({name:u,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""})}for(let d of a){let u=d.name.split("/").filter(Boolean).pop()||d.name;l.push({name:u,size:d.size,is_dir:!1,modified:d.modified,sign:d.name,type:X(u,!1),raw_url:""})}return de(l,"name","asc")}async get(e,t){let i=this.getKey(t),n=i.split("/").filter(Boolean).pop()||i,s=await this.sasUrl(i);return{name:n,size:0,is_dir:!1,modified:new Date().toISOString(),sign:i,type:X(n,!1),raw_url:s}}async mkdir(e,t){let i=x4(this.getKey(t)),n=await this.request("PUT",i,"",{body:new Uint8Array(0),contentType:"application/octet-stream",extraHeaders:{"x-ms-blob-type":"BlockBlob","x-ms-meta-hdi_isfolder":"true"}});if(!n.ok)throw new Error(`[AzureBlob] mkdir failed: HTTP ${n.status}`)}async rename(e,t,i){let n=this.getKey(t),s=zu(t.split("/").slice(0,-1).join("/"),i).replace(/^\/+/,"");await this.copyBlob(n,s),await this.deleteBlob(n)}async remove(e,t,i){let n=this.getKey(t);await this.deleteBlob(n)}async move(e,t,i,n,s){for(let o of i){let a=zu(this.getKey(n),o),c=zu(this.getKey(s),o);await this.copyBlob(a,c),await this.deleteBlob(a)}}async copy(e,t,i,n,s){for(let o of i){let a=zu(this.getKey(n),o),c=zu(this.getKey(s),o);await this.copyBlob(a,c)}}async put(e,t,i){let n=this.getKey(t),s=await this.request("PUT",n,"",{body:new Uint8Array(i),contentType:"application/octet-stream",extraHeaders:{"x-ms-blob-type":"BlockBlob"}});if(!s.ok)throw new Error(`[AzureBlob] put failed: HTTP ${s.status}`)}async copyBlob(e,t){let i=`${this.endpoint}/${this.container}/${e}`,n=await this.request("PUT",t,"",{body:new Uint8Array(0),contentType:"application/octet-stream",extraHeaders:{"x-ms-blob-type":"BlockBlob","x-ms-copy-source":i}});if(n.status!==201&&n.status!==202&&!n.ok)throw new Error(`[AzureBlob] copy failed: HTTP ${n.status}`)}async deleteBlob(e){let t=await this.request("DELETE",e,"");if(t.status!==202&&t.status!==404&&!t.ok)throw new Error(`[AzureBlob] delete failed: HTTP ${t.status}`)}}});function Ju(r,e){let t=String(r||"").replace(/\/+$/,""),i=String(e||"").replace(/^\/+/,"");return t?i?t+"/"+i:t:i}var Em,B4=V(()=>{"use strict";Be();He();ni();Em=class{addition;authHeader;apiBase;constructor(e){this.addition=e||{};let t=this.addition.operator_name||"",i=this.addition.operator_password||"";this.authHeader=`Basic ${btoa(`${t}:${i}`)}`,this.apiBase=`https://v0.api.upyun.com/${this.addition.bucket||""}`}async init(){if(!this.addition.bucket||!this.addition.operator_name||!this.addition.operator_password)throw new Error("[USS] bucket / operator_name / operator_password are required")}getKey(e,t=!1){let i=String(e||"/").replace(/^\/+/,"");return t&&i&&!i.endsWith("/")&&(i+="/"),i}getDownloadHost(){let e=this.addition.endpoint||"";return/^https?:\/\//.test(e)||(e="https://"+e),e.replace(/\/+$/,"")}async list(e,t){let i=this.getKey(t,!0),n=`${this.apiBase}/${i}`,s=await fetch(n,{method:"GET",headers:{Authorization:this.authHeader,Accept:"application/json"}});if(!s.ok)throw new Error(`[USS] list failed: HTTP ${s.status}`);let o=await s.text(),a=[];try{let c=JSON.parse(o);if(Array.isArray(c)){for(let l of c){let d=l.name||l.file_name||"",u=l.type==="F"||l.is_dir===!0||d.endsWith("/");a.push({name:d.replace(/\/+$/,""),size:l.length||l.size||0,is_dir:u,modified:l.last_modified?new Date(l.last_modified*1e3).toISOString():new Date().toISOString(),sign:"",type:X(d,u),raw_url:""})}return de(a,"name","asc")}}catch{}for(let c of o.split(` -`)){let l=c.trim();if(!l)continue;let d=l.split(" "),u=(d[0]||"").trim(),h=(d[1]||"").trim()==="F"||u.endsWith("/");a.push({name:u.replace(/\/+$/,""),size:parseInt(d[2]||"0",10)||0,is_dir:h,modified:d[3]?new Date(parseInt(d[3],10)*1e3).toISOString():new Date().toISOString(),sign:"",type:X(u,h),raw_url:""})}return de(a,"name","asc")}async get(e,t){let i=this.getKey(t),n=i.split("/").filter(Boolean).pop()||i,s=Math.floor(Date.now()/1e3)+(this.addition.sign_url_expire||4)*3600,a=`${this.addition.anti_theft_chain_token||this.addition.operator_password}&${s}&/${i}`,c=$t(a).slice(12,20)+s,l=encodeURIComponent(n),d=`${this.getDownloadHost()}/${i}?_upd=${l}&_upt=${c}`;return{name:n,size:0,is_dir:!1,modified:new Date().toISOString(),sign:i,type:X(n,!1),raw_url:d}}async mkdir(e,t){let i=this.getKey(t,!0),n=await fetch(`${this.apiBase}/${i}`,{method:"POST",headers:{Authorization:this.authHeader,Folder:"true"}});if(!n.ok)throw new Error(`[USS] mkdir failed: HTTP ${n.status}`)}async rename(e,t,i){let n=this.getKey(t),s=Ju(t.split("/").slice(0,-1).join("/"),i).replace(/^\/+/,"");await this.moveOrCopy(n,s,"move")}async remove(e,t,i){let n=this.getKey(t),s=await fetch(`${this.apiBase}/${n}`,{method:"DELETE",headers:{Authorization:this.authHeader}});if(!s.ok)throw new Error(`[USS] remove failed: HTTP ${s.status}`)}async move(e,t,i,n,s){for(let o of i){let a=Ju(this.getKey(n),o),c=Ju(this.getKey(s),o);await this.moveOrCopy(a,c,"move")}}async copy(e,t,i,n,s){for(let o of i){let a=Ju(this.getKey(n),o),c=Ju(this.getKey(s),o);await this.moveOrCopy(a,c,"copy")}}async put(e,t,i){let n=this.getKey(t),s=await fetch(`${this.apiBase}/${n}`,{method:"PUT",headers:{Authorization:this.authHeader,"Content-Type":"application/octet-stream"},body:i});if(!s.ok)throw new Error(`[USS] put failed: HTTP ${s.status}`)}async moveOrCopy(e,t,i){let n=i==="move"?"X-Upyun-Move-Source":"X-Upyun-Copy-Source",s=await fetch(`${this.apiBase}/${t}`,{method:"PUT",headers:{Authorization:this.authHeader,[n]:`/${e}`}});if(!s.ok)throw new Error(`[USS] ${i} failed: HTTP ${s.status}`)}}});function hJ(r){return r?r.message?r.message:r.msg?r.msg:"request failed":"request failed"}var Os,zC,Bm,b4=V(()=>{"use strict";Os="https://alidocs.dingtalk.com",zC="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0 Safari/537.36";Bm=class{constructor(e){this.cookie=e}cookie;headers(){return{Cookie:this.cookie,Accept:"application/json, text/plain, */*",Referer:Os+"/",Origin:Os,"User-Agent":zC}}async request(e,t){let i=await fetch(e,{...t,headers:{...this.headers(),...t?.headers||{}}}),n=await i.json().catch(()=>({}));if(!i.ok||n.isSuccess===!1)throw new Error(hJ(n));return n}async checkCookie(){await this.request(`${Os}/portal/api/v1/mine/info`)}async list(e){let t=new URLSearchParams({dentryUuid:e,withParentAncestors:"true",orderType:"SORT_KEY",sortType:"desc",listDentrySource:"2",pageSize:"1000"});return(await this.request(`${Os}/box/api/v2/dentry/list?${t.toString()}`)).data?.children||[]}async download(e){let t=new URLSearchParams({dentryUuid:e,version:"1",supportDownloadTypes:"URL_PRE_SIGNATURE,HTTP_TO_CENTER",downloadType:"URL_PRE_SIGNATURE"}),n=(await this.request(`${Os}/box/api/v2/file/download?${t.toString()}`)).data?.ossUrlPreSignatureInfo?.preSignUrls||[];if(n.length===0)throw new Error("empty download url");return n[0]}async post(e,t){await this.request(`${Os}${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)})}}});function gJ(r){let e={...r||{}};return e.cookie=(e.cookie||"").trim(),e.root_folder_id=(e.root_folder_id||"").trim(),e}function v4(r){let e=r.dentryType==="folder";return{name:r.name,size:e?0:r.fileSize||0,is_dir:e,modified:r.updatedTime?new Date(r.updatedTime).toISOString():new Date().toISOString(),created:r.createdTime?new Date(r.createdTime).toISOString():void 0,sign:r.dentryUuid,type:X(r.name,e)}}var bm,k4=V(()=>{"use strict";Be();He();b4();bm=class{addition;client;idCache=new Map;constructor(e){this.addition=gJ(e),this.client=new Bm(this.addition.cookie)}async init(){if(!this.addition.cookie)throw new Error("cookie is empty");if(!this.addition.root_folder_id)throw new Error("root folder id is empty");await this.client.checkCookie()}cleanPath(e){let t="/"+(e||"").split("/").filter(Boolean).join("/");return t==="/"?"/":t}joinPath(e,t){return e==="/"?`/${t}`:`${e}/${t}`}async resolveId(e){let t=this.cleanPath(e);if(t==="/")return this.addition.root_folder_id;let i=this.idCache.get(t);if(i)return i;let n=t.split("/").filter(Boolean),s=this.addition.root_folder_id,o="/";for(let a of n){let l=(await this.client.list(s)).find(d=>d.name===a&&d.dentryType==="folder");if(!l)throw new Error(`folder not found: ${a}`);s=l.dentryUuid,o=this.joinPath(o,a),this.idCache.set(o,s)}return s}async resolveItemId(e){let t=this.cleanPath(e);if(t==="/")return this.addition.root_folder_id;let i=this.idCache.get(t);if(i)return i;let n=t.split("/").slice(0,-1).join("/")||"/",s=t.split("/").pop()||"",o=await this.resolveId(n),c=(await this.client.list(o)).find(l=>l.name===s);if(!c)throw new Error(`item not found: ${s}`);return this.idCache.set(t,c.dentryUuid),c.dentryUuid}async list(e,t){let i=await this.resolveId(t),n=await this.client.list(i),s=this.cleanPath(t),o=n.filter(a=>a.dentryUuid&&a.name).map(a=>(this.idCache.set(this.joinPath(s,a.name),a.dentryUuid),v4(a)));return de(o,"name","asc")}async get(e,t){let i=this.cleanPath(t),n=i.split("/").filter(Boolean).pop()||"root";if(i==="/")return{name:"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:this.addition.root_folder_id,type:1};let s=i.split("/").slice(0,-1).join("/")||"/",o=await this.resolveId(s),c=(await this.client.list(o)).find(u=>u.name===n);if(!c)throw new Error("file not found");let l=c.dentryType==="folder",d="";return l||(d=await this.client.download(c.dentryUuid)),this.idCache.set(i,c.dentryUuid),{...v4(c),raw_url:d,raw_url_headers:{"User-Agent":zC,Referer:Os+"/",Origin:Os}}}async mkdir(e,t){let i=this.cleanPath(t),n=i.split("/").slice(0,-1).join("/")||"/",s=i.split("/").pop()||"",o=await this.resolveId(n);await this.client.post("/box/api/v2/dentry/createfolder",{dentryType:"folder",name:s,parentDentryUuid:o,conflictHandleStrategy:"auto_rename"})}async rename(e,t,i){let n=await this.resolveItemId(t);await this.client.post("/box/api/v2/dentry/rename",{dentryUuid:n,name:i})}async move(e,t,i,n,s){let o=await this.resolveItemId(n),a=this.cleanPath(s).split("/").slice(0,-1).join("/")||"/",c=await this.resolveId(a);await this.client.post("/box/api/v2/dentry/move",{targetParentDentryUuid:c,sourceDentryUuid:o,operateFrom:1})}async copy(e,t,i,n,s){let o=await this.resolveItemId(n),a=this.cleanPath(s).split("/").slice(0,-1).join("/")||"/",c=await this.resolveId(a);await this.client.post("/box/api/v2/dentry/copy",{sourceDentryUuid:o,targetParentDentryUuid:c,operateFrom:1,onlyCopyMeta:!1})}async remove(e,t,i){let n=await this.resolveItemId(t);await this.client.post("/box/api/v1/dentry/recycle",{dentryUuid:n})}async put(e,t,i){throw new Error("AliDoc does not support upload")}}});var pJ,vm,S4=V(()=>{"use strict";pJ='MediaBrowser Client="OpenList", Device="OpenList", DeviceId="openlist-emby", Version="1.0.0"',vm=class{baseURL;token;userID;constructor(e,t="",i=""){this.baseURL=(e||"").trim().replace(/\/+$/,""),this.token=t,this.userID=i}async login(e,t){let i=await fetch(`${this.baseURL}/Users/AuthenticateByName`,{method:"POST",headers:{"Content-Type":"application/json","X-Emby-Authorization":pJ},body:JSON.stringify({Username:e,Pw:t})});if(!i.ok)throw new Error(`emby auth failed: status=${i.status}`);let n=await i.json();if(!n.AccessToken||!n.User?.Id)throw new Error("emby auth response missing access token or user id");this.token=n.AccessToken,this.userID=n.User.Id}async getItems(e){let t=new URLSearchParams({ParentId:e,Recursive:"false",Fields:"Path,Size,DateCreated,SeriesName,IndexNumber,ParentIndexNumber",api_key:this.token}),i=await fetch(`${this.baseURL}/Users/${this.userID}/Items?${t.toString()}`);if(!i.ok)throw new Error(`emby list failed: status=${i.status}`);return await i.json()}async getItemDetail(e){let t=new URLSearchParams({Fields:"MediaSources",api_key:this.token}),i=await fetch(`${this.baseURL}/Users/${this.userID}/Items/${encodeURIComponent(e)}?${t.toString()}`);return i.ok?await i.json():null}}});function mJ(r){let e={...r||{}};return e.url=(e.url||"").trim().replace(/\/+$/,""),e.api_key=(e.api_key||"").trim(),e.user_id=(e.user_id||"").trim(),e.username=(e.username||"").trim(),e.password=(e.password||"").trim(),e.link_method=(e.link_method||"stream").toLowerCase(),e.root_folder_id=(e.root_folder_id||"").trim()||"1",e}function D4(r){return{name:r.Name,size:r.IsFolder?0:r.Size||0,is_dir:r.IsFolder,modified:r.DateCreated?new Date(r.DateCreated).toISOString():new Date().toISOString(),sign:r.Id,type:X(r.Name,r.IsFolder)}}var km,Q4=V(()=>{"use strict";Be();He();S4();km=class{addition;client;idCache=new Map;constructor(e){this.addition=mJ(e),this.client=new vm(this.addition.url,this.addition.api_key,this.addition.user_id)}async init(){if(!this.addition.url)throw new Error("url is required");if(this.addition.api_key){if(!this.addition.user_id)throw new Error("user_id is required when api_key is set");return}if(!this.addition.username)throw new Error("please provide api_key+user_id or username(+password)");await this.client.login(this.addition.username,this.addition.password)}cleanPath(e){let t="/"+(e||"").split("/").filter(Boolean).join("/");return t==="/"?"/":t}joinPath(e,t){return e==="/"?`/${t}`:`${e}/${t}`}async resolveId(e){let t=this.cleanPath(e);if(t==="/")return this.addition.root_folder_id;let i=this.idCache.get(t);if(i)return i;let n=t.split("/").filter(Boolean),s=this.addition.root_folder_id,o="/";for(let a of n){let l=(await this.client.getItems(s)).Items.find(d=>d.Name===a&&d.IsFolder);if(!l)throw new Error(`folder not found: ${a}`);s=l.Id,o=this.joinPath(o,a),this.idCache.set(o,s)}return s}async list(e,t){let i=await this.resolveId(t),n=await this.client.getItems(i),s=this.cleanPath(t),o=n.Items.map(a=>(this.idCache.set(this.joinPath(s,a.Name),a.Id),D4(a)));return de(o,"name","asc")}async get(e,t){let i=this.cleanPath(t),n=i.split("/").filter(Boolean).pop()||"root";if(i==="/")return{name:"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:this.addition.root_folder_id,type:1};let s=i.split("/").slice(0,-1).join("/")||"/",o=await this.resolveId(s),c=(await this.client.getItems(o)).Items.find(u=>u.Name===n);if(!c)throw new Error("file not found");let l=c.IsFolder,d="";return l||(d=await this.buildLink(c.Id)),this.idCache.set(i,c.Id),{...D4(c),raw_url:d,raw_url_headers:{"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0 Safari/537.36"}}}async buildLink(e){let t=this.addition.link_method==="download",i="",n="";if(!t){let o=await this.client.getItemDetail(e);if(o&&o.MediaSources?.length){let a=o.MediaSources.find(c=>c.Id&&c.SupportsDirectStream)||o.MediaSources.find(c=>c.Id);a&&(i=a.Id,n=a.Container)}}let s=new URL(this.addition.url);return t?s.pathname=`${s.pathname.replace(/\/+$/,"")}/Items/${encodeURIComponent(e)}/Download`:n?s.pathname=`${s.pathname.replace(/\/+$/,"")}/Videos/${encodeURIComponent(e)}/stream.${n}`:s.pathname=`${s.pathname.replace(/\/+$/,"")}/Videos/${encodeURIComponent(e)}/stream`,s.searchParams.set("api_key",this.client.token),i&&s.searchParams.set("MediaSourceId",i),t||s.searchParams.set("Static","true"),s.toString()}async mkdir(e,t){throw new Error("Emby is read-only")}async rename(e,t,i){throw new Error("Emby is read-only")}async move(e,t,i,n,s){throw new Error("Emby is read-only")}async copy(e,t,i,n,s){throw new Error("Emby is read-only")}async remove(e,t,i){throw new Error("Emby is read-only")}async put(e,t,i){throw new Error("Emby is read-only")}}});function Dm(r,e){let t=(r||"").trim();if(t||(t=e),!t)throw new Error("empty url");t.includes("://")||(t="https://"+t);let i=new URL(t);if(!i.host)throw new Error("invalid url: "+r);return i.pathname=i.pathname.replace(/\/+$/,""),i.toString()}function Vo(r){return r?"/"+r.replace(/^\/+/,"").split("/").filter(Boolean).join("/"):"/"}function _4(r){let e=new Uint8Array(r),t="";for(let i of e)t+=String.fromCharCode(i);return btoa(t).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}async function yJ(r){return crypto.subtle.digest("SHA-256",new TextEncoder().encode(r))}async function IJ(r,e){let t=await crypto.subtle.importKey("raw",new TextEncoder().encode(r),{name:"HMAC",hash:"SHA-256"},!1,["sign"]);return crypto.subtle.sign("HMAC",t,new TextEncoder().encode(e))}function wJ(r){return Array.from(r.keys()).filter(t=>t!=="token"&&t!=="expires").sort().map(t=>`${t}=${r.get(t)||""}`).join("&")}function pc(r,e,t){let i=Dm(r.endpoint,Sm),n=new URL(i),s=Vo(e),o=(r.storage_zone_name||"").replace(/^\/+|\/+$/g,"");return s==="/"?n.pathname=`/${o}/`:(n.pathname=`/${o}/${s.replace(/^\/+/,"")}`,t&&!n.pathname.endsWith("/")&&(n.pathname+="/")),n.toString()}function P4(r,e){let t=new URL(r.cdn_base_url),i=Vo(e),n=t.pathname.replace(/\/+$/,"");return i==="/"?t.pathname=n?n+"/":"/":t.pathname=n+"/"+i.replace(/^\/+/,""),t.toString()}async function T4(r,e){let t=r.sign_url_expire>0?r.sign_url_expire:4,i=Math.floor(Date.now()/1e3)+t*3600,n=new URL(e),s=wJ(n.searchParams),o=decodeURIComponent(n.pathname),a=(r.cdn_token_method||"sha256").toLowerCase(),c;if(a==="hmac_sha256"){let l=await IJ(r.cdn_token_key,o+String(i)+s);c="HS256-"+_4(l)}else{let l=await yJ(r.cdn_token_key+o+String(i)+s);c=_4(l)}return n.searchParams.set("token",c),n.searchParams.set("expires",String(i)),n.toString()}async function Ul(r){if(r.ok)return;let e=await r.text().catch(()=>"")||"",t=e.trim();try{let i=JSON.parse(e);i?.length&&i[0].Message&&(t=i[0].Message)}catch{}throw new Error(`bunny storage request failed: ${r.status} ${t}`)}var Sm,F4,U4=V(()=>{"use strict";Sm="storage.bunnycdn.com",F4=".openlist"});function xJ(r){let e={...r||{}};return e.storage_zone_name=(e.storage_zone_name||"").trim(),e.access_key=(e.access_key||"").trim(),e.endpoint=(e.endpoint||"").trim()||Sm,e.cdn_base_url=(e.cdn_base_url||"").trim(),e.cdn_token_key=(e.cdn_token_key||"").trim(),e.cdn_token_method=(e.cdn_token_method||"sha256").toLowerCase(),e.cdn_token_include_ip=!!e.cdn_token_include_ip,e.sign_url_expire=Number(e.sign_url_expire||4),e.placeholder=(e.placeholder||"").trim()||F4,e.root_folder_path=e.root_folder_path||"/",e}function CJ(r){if(!r)return new Date().toISOString();let e=new Date(r);return isNaN(e.getTime())?new Date().toISOString():e.toISOString()}var Qm,R4=V(()=>{"use strict";Be();He();U4();Qm=class{addition;constructor(e){this.addition=xJ(e)}async init(){Dm(this.addition.endpoint,Sm),this.addition.cdn_base_url&&Dm(this.addition.cdn_base_url,"")}toFileItem(e,t){let i=e==="/"?`/${t.ObjectName}`:`${e}/${t.ObjectName}`;return{name:t.ObjectName,size:t.IsDirectory?0:t.Length||0,is_dir:t.IsDirectory,modified:CJ(t.LastChanged),sign:t.Guid||i,type:X(t.ObjectName,t.IsDirectory)}}async list(e,t){let i=Vo(t),n=pc(this.addition,i,!0),s=await fetch(n,{headers:{AccessKey:this.addition.access_key}});await Ul(s);let c=(await s.json()).filter(l=>!(!l.ObjectName||!l.IsDirectory&&l.ObjectName===this.addition.placeholder)).map(l=>this.toFileItem(i,l));return de(c,"name","asc")}async get(e,t){let i=Vo(t),n=i.split("/").filter(Boolean).pop()||"root";if(i==="/")return{name:"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1};let s=i.split("/").slice(0,-1).join("/")||"/",o=pc(this.addition,s,!0),a=await fetch(o,{headers:{AccessKey:this.addition.access_key}});await Ul(a);let l=(await a.json()).find(f=>f.ObjectName===n);if(!l)throw new Error("object not found");let d="",u={};return l.IsDirectory||(this.addition.cdn_base_url?(d=P4(this.addition,i),this.addition.cdn_token_key&&(d=await T4(this.addition,d))):(d=pc(this.addition,i,!1),u={AccessKey:this.addition.access_key})),{...this.toFileItem(s,l),raw_url:d,raw_url_headers:u}}async mkdir(e,t){let i=Vo(t),n=i==="/"?`/${this.addition.placeholder}`:`${i}/${this.addition.placeholder}`,s=pc(this.addition,n,!1),o=await fetch(s,{method:"PUT",headers:{AccessKey:this.addition.access_key,"Content-Type":"application/octet-stream","Content-Length":"0"}});await Ul(o)}async rename(e,t,i){throw new Error("Bunny Storage does not support rename")}async move(e,t,i,n,s){throw new Error("Bunny Storage does not support move")}async copy(e,t,i,n,s){throw new Error("Bunny Storage does not support copy")}async remove(e,t,i){let n=Vo(t),s=await fetch(pc(this.addition,n,!0),{method:"DELETE",headers:{AccessKey:this.addition.access_key}});await Ul(s)}async put(e,t,i){let n=Vo(t),s=pc(this.addition,n,!1),o=await fetch(s,{method:"PUT",headers:{AccessKey:this.addition.access_key,"Content-Type":"application/octet-stream","Content-Length":String(i.length)},body:new Uint8Array(i)});await Ul(o)}}});function Fm(r){return r.split("/").map(e=>encodeURIComponent(e)).join("/")}function N4(r,e){if(!r)return 0;for(let t of e){let i=r[t];if(i!=null){let n=Number(i);if(!isNaN(n))return n}}return 0}function q4(r){return N4(r,["FileSizeBytes","File-Size","fileSize","size"])}function O4(r){return N4(r,["TimeStamp","timestamp","modified"])}var _m,M4=V(()=>{"use strict";_m=class{constructor(e,t){this.address=e;this.token=t}address;token;headers(){return{Authorization:"Bearer "+this.token,Accept:"application/json"}}async request(e,t,i){let s=null;for(let o=0;o<3;o++)try{let a=await fetch(this.address+t,{method:e,headers:{...this.headers(),...i&&!(i instanceof FormData)?{"Content-Type":"application/json"}:{}},body:i?i instanceof FormData?i:JSON.stringify(i):void 0});if(a.status===429){await new Promise(u=>setTimeout(u,(o+1)*2e3));continue}let c=await a.text(),l={};try{l=c?JSON.parse(c):{}}catch{l={}}let d=l;if(d.error||d.message)throw new Error("API error: "+(d.error||d.message));if(!a.ok)throw new Error(`HTTP ${a.status}`);return l}catch(a){if(s=a,o<2){await new Promise(c=>setTimeout(c,(o+1)*1e3));continue}}throw s||new Error("max retries exceeded")}async list(e,t,i){return this.request("GET",`/api/manage/list?dir=${encodeURIComponent(e)}&start=${t}&count=${i}`)}async remove(e,t){return this.request("POST",`/api/manage/delete${Fm(e)}?folder=${t}`)}}});function EJ(r){let e={...r||{}};return e.address=(e.address||"").trim().replace(/\/+$/,""),e.token=(e.token||"").trim(),e.small_channel_name=(e.small_channel_name||"").trim(),e.large_channel_name=(e.large_channel_name||"").trim(),e.large_channel_type=(e.large_channel_type||"").trim(),e.upload_thread=Math.min(Number(e.upload_thread||3),32),e.root_folder_path=e.root_folder_path||"/",e}var JC,Pm,L4=V(()=>{"use strict";Be();He();M4();JC=1e3;Pm=class{addition;client;publicUrlPrefix="";constructor(e){this.addition=EJ(e),this.client=new _m(this.addition.address,this.addition.token)}async init(){if(!this.addition.address)throw new Error("address is required");if(!this.addition.token)throw new Error("token is required");await this.client.list("/",0,1)}cleanPath(e){let t="/"+(e||"").split("/").filter(Boolean).join("/");return t==="/"?"/":t}async list(e,t){let i=this.cleanPath(t),n=new Set,s=new Set,o=[],a=0;for(;;){let c=await this.client.list(i,a,JC);if(!c.files?.length&&!c.directories?.length)break;for(let l of c.directories||[]){let d="/"+(l||"").replace(/^\/+|\/+$/g,"");n.has(d)||(n.add(d),o.push({name:d.split("/").filter(Boolean).pop()||"",size:0,is_dir:!0,modified:new Date().toISOString(),sign:d,type:1}))}for(let l of c.files||[])if(!s.has(l.name)){s.add(l.name);let d=l.name.split("/").filter(Boolean).pop()||l.name,u=q4(l.metadata),f=O4(l.metadata);o.push({name:d,size:u,is_dir:!1,modified:f?new Date(f).toISOString():new Date().toISOString(),sign:"/"+(l.name||"").replace(/^\/+/,""),type:X(d,!1)})}if((c.files?.length||0)+(c.directories?.length||0)<JC)break;a+=JC}return de(o,"name","asc")}async get(e,t){let i=this.cleanPath(t),n=i.split("/").filter(Boolean).pop()||"root";if(i==="/")return{name:"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1};let s=this.publicUrlPrefix?this.publicUrlPrefix+Fm(i):this.addition.address+"/file"+Fm(i);return{name:n,size:0,is_dir:!1,modified:new Date().toISOString(),sign:i,type:X(n,!1),raw_url:s}}async mkdir(e,t){}async rename(e,t,i){throw new Error("cloudflare_imgbed does not support rename")}async move(e,t,i,n,s){throw new Error("cloudflare_imgbed does not support move")}async copy(e,t,i,n,s){throw new Error("cloudflare_imgbed does not support copy")}async remove(e,t,i){let n=this.cleanPath(t);await this.client.remove(n,!1)}async put(e,t,i){let n=this.cleanPath(t),s=n.split("/").slice(0,-1).join("/")||"/",o=n.split("/").pop()||"upload",a=this.addition.small_channel_name;if(!a)throw new Error("channel name not configured");let c=new URLSearchParams({returnFormat:"default",channelName:a,uploadFolder:s,autoRetry:"true"}),l=new FormData;l.append("file",new Blob([new Uint8Array(i)],{type:"application/octet-stream"}),o);let d=await fetch(`${this.addition.address}/upload?${c.toString()}`,{method:"POST",headers:{Authorization:"Bearer "+this.addition.token},body:l});if(!d.ok)throw new Error(`upload failed ${d.status}: ${await d.text()}`);let u=await d.json();if(!u?.length||!u[0].src)throw new Error("no src returned");if(u[0].publicUrl)try{let f=new URL(u[0].publicUrl);this.publicUrlPrefix=f.protocol+"//"+f.host}catch{}}}});function G4(r){let e=(r||"").trim().replace(/\s/g,"");if(!e)return"";if(e.startsWith("+"))return e.startsWith("+86")&&e.length>3?"+86 "+e.slice(3):e;let t=e.replace(/\D/g,"");return t.startsWith("86")&&t.length>11,t.length===11?"+86 "+t:e}function z4(){let r=crypto.getRandomValues(new Uint8Array(16));return Array.from(r).map(e=>e.toString(16).padStart(2,"0")).join("")}function J4(r){let e=(r||"").toLowerCase().replace(/-/g,"");return e.length!==32||!/^[0-9a-f]+$/.test(e)?"":e}function jC(r){return r>0?new Date(r*1e3).toISOString():new Date().toISOString()}function K4(r){let e=(r||"").trim().toLowerCase();return e?e==="success"||e==="ok"||e.includes("\u6210\u529F"):!0}function bJ(r){let e=(r||"").trim().toLowerCase();return e?e==="\u4E0A\u4F20\u5DF2\u5B8C\u6210"||e==="upload completed"||e==="already uploaded"||e==="\u79D2\u4F20\u6210\u529F":!1}var H4,BJ,ju,j4=V(()=>{"use strict";ni();H4="https://account.guangyapan.com",BJ="https://api.guangyapan.com";ju=class{accessToken="";refreshToken="";clientId;deviceId;deviceSign;onTokensChanged;constructor(e){this.clientId=e.client_id||"",this.deviceId=e.device_id||"",this.deviceSign=e.device_sign||"",this.accessToken=e.access_token||"",this.refreshToken=e.refresh_token||""}accountHeaders(){return{Accept:"application/json, text/plain, */*","Content-Type":"application/json","X-Device-Model":"chrome%2F147.0.0.0","X-Device-Name":"PC-Chrome","X-Device-Sign":this.deviceSign,"X-Net-Work-Type":"NONE","X-OS-Version":"MacIntel","X-Platform-Version":"1","X-Protocol-Version":"301","X-Provider-Name":"NONE","X-SDK-Version":"9.0.2","X-Client-Id":this.clientId,"X-Client-Version":"0.0.1","X-Device-Id":this.deviceId}}apiHeaders(){return{Accept:"application/json, text/plain, */*","Content-Type":"application/json",Did:this.deviceId,Dt:"4",Authorization:"Bearer "+this.accessToken}}get hasToken(){return!!this.accessToken}get hasRefreshToken(){return!!this.refreshToken}async validateToken(){let e=await fetch(`${H4}/v1/user/me`,{headers:{...this.accountHeaders(),Authorization:"Bearer "+this.accessToken}});if(!e.ok)throw new Error(`validate token failed: ${e.status}`)}async refresh(){if(!this.refreshToken)throw new Error("refresh_token is empty");let e=await fetch(`${H4}/v1/auth/token`,{method:"POST",headers:this.accountHeaders(),body:JSON.stringify({client_id:this.clientId,grant_type:"refresh_token",refresh_token:this.refreshToken})}),t=await e.json();if(!e.ok||t.error||!t.access_token)throw new Error("refresh token failed: "+(t.error_description||t.error||e.status));this.accessToken=t.access_token,t.refresh_token&&(this.refreshToken=t.refresh_token),await this.onTokensChanged?.(this.accessToken,this.refreshToken)}async postAPI(e,t){let i=async()=>{let o=await fetch(`${BJ}${e}`,{method:"POST",headers:this.apiHeaders(),body:JSON.stringify(t??{})});return{res:o,json:await o.json().catch(()=>({}))}},{res:n,json:s}=await i();if((n.status===401||n.status===403)&&this.refreshToken){await this.refresh();let o=await i();n=o.res,s=o.json}if(!n.ok)throw new Error(`request failed: status=${n.status}`);return s}async getFileList(e,t,i,n){return this.postAPI("/userres/v1/file/get_file_list",{parentId:e,page:0,pageSize:t,orderBy:i,sortType:n})}async getDownloadURL(e){let t=await this.postAPI("/nd.bizuserres.s/v1/get_res_download_url",{fileId:e});return(t?.data?.signedURL||t?.data?.downloadUrl||"").trim()}async getUploadToken(e,t,i,n){let s={fileSize:i};n&&(s.md5=n);let o=await this.postAPI("/nd.bizuserres.s/v1/get_res_center_token",{capacity:2,name:t,parentId:e,res:s}),a=o.msg||"",c=o.code===156||bJ(a);if(!K4(a)&&!c)throw new Error("get upload token failed: "+a);return{data:o.data,code:o.code,alreadyDone:c}}async waitTaskDone(e){for(let t=0;t<30;t++){let i=await this.postAPI("/nd.bizuserres.s/v1/get_task_status",{taskId:e});if(!K4(i.msg))throw new Error("get task status failed: "+i.msg);if(i.data?.status===2)return;if(i.data?.status===-1||i.data?.status===3)throw new Error(`task ${e} failed with status=${i.data.status}`);await new Promise(n=>setTimeout(n,300))}throw new Error(`task ${e} timeout`)}async waitUploadTaskInfo(e){for(let t=0;t<300;t++){if((await this.postAPI("/nd.bizuserres.s/v1/file/get_info_by_task_id",{taskId:e})).data?.fileId)return;await new Promise(n=>setTimeout(n,1e3))}throw new Error(`upload task ${e} timeout`)}static md5(e){return $t(e)}}});function vJ(r){let e={...r||{}};return e.client_id=(e.client_id||"").trim(),e.device_id=J4(e.device_id||""),e.device_id||(e.device_id=z4()),e.device_sign=(e.device_sign||"").trim()||"wdi10."+e.device_id,e.page_size=Number(e.page_size||100),e.order_by=Number(e.order_by===void 0?3:e.order_by),e.sort_type=Number(e.sort_type===void 0?1:e.sort_type),e.root_folder_path=(e.root_folder_path||"").trim(),e.access_token=(e.access_token||"").trim(),e.refresh_token=(e.refresh_token||"").trim(),e.phone_number=G4(e.phone_number||""),e}function $4(r){let e=r.resType===2;return{name:r.fileName,size:e?0:r.fileSize||0,is_dir:e,modified:jC(r.utime),created:jC(r.ctime),sign:r.fileId,type:X(r.fileName,e)}}function kJ(r,e){let t=(r||"").trim();if(!t)return t;!t.startsWith("http://")&&!t.startsWith("https://")&&(t="https://"+t);let i;try{i=new URL(t)}catch{return t}let n=i.host;return e&&n.startsWith(e+".")&&(n=n.slice(e.length+1)),i.host=n,i.toString().replace(/\/+$/,"")}var Tm,V4=V(()=>{"use strict";Be();He();ni();j4();Tm=class{addition;client;idCache=new Map;constructor(e,t){this.addition=vJ(e),this.client=new ju(this.addition),this.client.onTokensChanged=t}async init(){if(!this.addition.client_id)throw new Error("client_id is required");if(this.addition.access_token)try{await this.client.validateToken();return}catch{this.addition.access_token=""}if(this.addition.refresh_token){await this.client.refresh(),await this.client.validateToken();return}throw new Error("login failed: provide a valid access_token, or refresh_token, or phone_number + verify_code")}cleanPath(e){let t="/"+(e||"").split("/").filter(Boolean).join("/");return t==="/"?"/":t}joinPath(e,t){return e==="/"?`/${t}`:`${e}/${t}`}async resolveId(e){let t=this.cleanPath(e);if(t==="/")return"";let i=this.idCache.get(t);if(i)return i;let n=t.split("/").filter(Boolean),s="",o="/";for(let a of n){let l=(await this.client.getFileList(s,this.addition.page_size,this.addition.order_by,this.addition.sort_type)).data?.list?.find(d=>d.fileName===a&&d.resType===2);if(!l)throw new Error(`folder not found: ${a}`);s=l.fileId,o=this.joinPath(o,a),this.idCache.set(o,s)}return s}async resolveItemId(e){let t=this.cleanPath(e);if(t==="/")return"";let i=this.idCache.get(t);if(i)return i;let n=t.split("/").slice(0,-1).join("/")||"/",s=t.split("/").pop()||"",o=await this.resolveId(n),c=(await this.client.getFileList(o,this.addition.page_size,this.addition.order_by,this.addition.sort_type)).data?.list?.find(l=>l.fileName===s);if(!c)throw new Error(`item not found: ${s}`);return this.idCache.set(t,c.fileId),c.fileId}async list(e,t){let i=await this.resolveId(t),n=this.cleanPath(t),s=[];for(let o=0;o<1e4;o++){let a=await this.client.getFileList(i,this.addition.page_size,this.addition.order_by,this.addition.sort_type),c=a.data?.list||[];for(let l of c)this.idCache.set(this.joinPath(n,l.fileName),l.fileId),s.push($4(l));if(c.length<this.addition.page_size||a.data?.total>0&&s.length>=a.data.total)break}return de(s,"name","asc")}async get(e,t){let i=this.cleanPath(t),n=i.split("/").filter(Boolean).pop()||"root";if(i==="/")return{name:"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1};let s=i.split("/").slice(0,-1).join("/")||"/",o=await this.resolveId(s),c=(await this.client.getFileList(o,this.addition.page_size,this.addition.order_by,this.addition.sort_type)).data?.list?.find(u=>u.fileName===n);if(!c)throw new Error("file not found");let l=c.resType===2,d="";return l||(d=await this.client.getDownloadURL(c.fileId)),this.idCache.set(i,c.fileId),{...$4(c),raw_url:d}}async mkdir(e,t){let i=this.cleanPath(t),n=i.split("/").slice(0,-1).join("/")||"/",s=i.split("/").pop()||"",o=await this.resolveId(n);await this.client.postAPI("/nd.bizuserres.s/v1/file/create_dir",{parentId:o,dirName:s})}async rename(e,t,i){let n=await this.resolveItemId(t);await this.client.postAPI("/nd.bizuserres.s/v1/file/rename",{fileId:n,newName:i})}async move(e,t,i,n,s){let o=await this.resolveItemId(n),a=this.cleanPath(s).split("/").slice(0,-1).join("/")||"/",c=await this.resolveId(a),l=await this.client.postAPI("/nd.bizuserres.s/v1/file/move_file",{fileIds:[o],parentId:c});l?.data?.taskId&&await this.client.waitTaskDone(l.data.taskId)}async copy(e,t,i,n,s){let o=await this.resolveItemId(n),a=this.cleanPath(s).split("/").slice(0,-1).join("/")||"/",c=await this.resolveId(a),l=await this.client.postAPI("/nd.bizuserres.s/v1/file/copy_file",{fileIds:[o],parentId:c});l?.data?.taskId&&await this.client.waitTaskDone(l.data.taskId)}async remove(e,t,i){let n=await this.resolveItemId(t),s=await this.client.postAPI("/nd.bizuserres.s/v1/file/delete_file",{fileIds:[n]});s?.data?.taskId&&await this.client.waitTaskDone(s.data.taskId)}async put(e,t,i){let n=this.cleanPath(t),s=n.split("/").slice(0,-1).join("/")||"/",o=n.split("/").pop()||"upload",a=await this.resolveId(s),c=new Uint8Array(i),l=ju.md5(c),{data:d,alreadyDone:u}=await this.client.getUploadToken(a,o,c.length,l),f=d?.taskId||"";if(u){if(!f)throw new Error("instant upload returns empty task id");await this.client.waitUploadTaskInfo(f);return}if(!d.objectPath||!d.bucketName||!d.endPoint||!d.accessKeyID||!d.secretAccessKey)throw new Error("upload token is incomplete");let h=kJ(d.endPoint,d.bucketName),g=`https://${d.bucketName}.${new URL(h).host}/${d.objectPath.replace(/^\/+/,"")}`,p=new Date().toUTCString(),I="application/octet-stream",y=d.sessionToken?`x-oss-security-token:${d.sessionToken} +`,o=encodeURIComponent(await Z4(s,this.keyBytes));return`${this.endpoint}/${this.container}/${e}?sp=r&st=&se=${encodeURIComponent(i)}&sv=2021-08-06&sr=b&sig=${o}`}getKey(e){return String(e||"/").replace(/^\/+/,"")}async list(e,t){let i=this.getKey(t);i&&(i=X4(i));let n=`restype=container&comp=list&delimiter=%2F&prefix=${encodeURIComponent(i)}`,s=await this.request("GET","",n);if(!s.ok)throw new Error(`[AzureBlob] list failed: HTTP ${s.status}`);let o=await s.text(),{blobs:a,prefixes:c}=rj(o),l=[];for(let d of c){let u=d.replace(/\/+$/,"").split("/").filter(Boolean).pop()||d;l.push({name:u,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1,raw_url:""})}for(let d of a){let u=d.name.split("/").filter(Boolean).pop()||d.name;l.push({name:u,size:d.size,is_dir:!1,modified:d.modified,sign:d.name,type:X(u,!1),raw_url:""})}return de(l,"name","asc")}async get(e,t){let i=this.getKey(t),n=i.split("/").filter(Boolean).pop()||i,s=await this.sasUrl(i);return{name:n,size:0,is_dir:!1,modified:new Date().toISOString(),sign:i,type:X(n,!1),raw_url:s}}async mkdir(e,t){let i=X4(this.getKey(t)),n=await this.request("PUT",i,"",{body:new Uint8Array(0),contentType:"application/octet-stream",extraHeaders:{"x-ms-blob-type":"BlockBlob","x-ms-meta-hdi_isfolder":"true"}});if(!n.ok)throw new Error(`[AzureBlob] mkdir failed: HTTP ${n.status}`)}async rename(e,t,i){let n=this.getKey(t),s=rf(t.split("/").slice(0,-1).join("/"),i).replace(/^\/+/,"");await this.copyBlob(n,s),await this.deleteBlob(n)}async remove(e,t,i){let n=this.getKey(t);await this.deleteBlob(n)}async move(e,t,i,n,s){for(let o of i){let a=rf(this.getKey(n),o),c=rf(this.getKey(s),o);await this.copyBlob(a,c),await this.deleteBlob(a)}}async copy(e,t,i,n,s){for(let o of i){let a=rf(this.getKey(n),o),c=rf(this.getKey(s),o);await this.copyBlob(a,c)}}async put(e,t,i){let n=this.getKey(t),s=await this.request("PUT",n,"",{body:new Uint8Array(i),contentType:"application/octet-stream",extraHeaders:{"x-ms-blob-type":"BlockBlob"}});if(!s.ok)throw new Error(`[AzureBlob] put failed: HTTP ${s.status}`)}async copyBlob(e,t){let i=`${this.endpoint}/${this.container}/${e}`,n=await this.request("PUT",t,"",{body:new Uint8Array(0),contentType:"application/octet-stream",extraHeaders:{"x-ms-blob-type":"BlockBlob","x-ms-copy-source":i}});if(n.status!==201&&n.status!==202&&!n.ok)throw new Error(`[AzureBlob] copy failed: HTTP ${n.status}`)}async deleteBlob(e){let t=await this.request("DELETE",e,"");if(t.status!==202&&t.status!==404&&!t.ok)throw new Error(`[AzureBlob] delete failed: HTTP ${t.status}`)}}});function nf(r,e){let t=String(r||"").replace(/\/+$/,""),i=String(e||"").replace(/^\/+/,"");return t?i?t+"/"+i:t:i}var Um,tF=j(()=>{"use strict";Be();He();si();Um=class{addition;authHeader;apiBase;constructor(e){this.addition=e||{};let t=this.addition.operator_name||"",i=this.addition.operator_password||"";this.authHeader=`Basic ${btoa(`${t}:${i}`)}`,this.apiBase=`https://v0.api.upyun.com/${this.addition.bucket||""}`}async init(){if(!this.addition.bucket||!this.addition.operator_name||!this.addition.operator_password)throw new Error("[USS] bucket / operator_name / operator_password are required")}getKey(e,t=!1){let i=String(e||"/").replace(/^\/+/,"");return t&&i&&!i.endsWith("/")&&(i+="/"),i}getDownloadHost(){let e=this.addition.endpoint||"";return/^https?:\/\//.test(e)||(e="https://"+e),e.replace(/\/+$/,"")}async list(e,t){let i=this.getKey(t,!0),n=`${this.apiBase}/${i}`,s=await fetch(n,{method:"GET",headers:{Authorization:this.authHeader,Accept:"application/json"}});if(!s.ok)throw new Error(`[USS] list failed: HTTP ${s.status}`);let o=await s.text(),a=[];try{let c=JSON.parse(o);if(Array.isArray(c)){for(let l of c){let d=l.name||l.file_name||"",u=l.type==="F"||l.is_dir===!0||d.endsWith("/");a.push({name:d.replace(/\/+$/,""),size:l.length||l.size||0,is_dir:u,modified:l.last_modified?new Date(l.last_modified*1e3).toISOString():new Date().toISOString(),sign:"",type:X(d,u),raw_url:""})}return de(a,"name","asc")}}catch{}for(let c of o.split(` +`)){let l=c.trim();if(!l)continue;let d=l.split(" "),u=(d[0]||"").trim(),h=(d[1]||"").trim()==="F"||u.endsWith("/");a.push({name:u.replace(/\/+$/,""),size:parseInt(d[2]||"0",10)||0,is_dir:h,modified:d[3]?new Date(parseInt(d[3],10)*1e3).toISOString():new Date().toISOString(),sign:"",type:X(u,h),raw_url:""})}return de(a,"name","asc")}async get(e,t){let i=this.getKey(t),n=i.split("/").filter(Boolean).pop()||i,s=Math.floor(Date.now()/1e3)+(this.addition.sign_url_expire||4)*3600,a=`${this.addition.anti_theft_chain_token||this.addition.operator_password}&${s}&/${i}`,c=$t(a).slice(12,20)+s,l=encodeURIComponent(n),d=`${this.getDownloadHost()}/${i}?_upd=${l}&_upt=${c}`;return{name:n,size:0,is_dir:!1,modified:new Date().toISOString(),sign:i,type:X(n,!1),raw_url:d}}async mkdir(e,t){let i=this.getKey(t,!0),n=await fetch(`${this.apiBase}/${i}`,{method:"POST",headers:{Authorization:this.authHeader,Folder:"true"}});if(!n.ok)throw new Error(`[USS] mkdir failed: HTTP ${n.status}`)}async rename(e,t,i){let n=this.getKey(t),s=nf(t.split("/").slice(0,-1).join("/"),i).replace(/^\/+/,"");await this.moveOrCopy(n,s,"move")}async remove(e,t,i){let n=this.getKey(t),s=await fetch(`${this.apiBase}/${n}`,{method:"DELETE",headers:{Authorization:this.authHeader}});if(!s.ok)throw new Error(`[USS] remove failed: HTTP ${s.status}`)}async move(e,t,i,n,s){for(let o of i){let a=nf(this.getKey(n),o),c=nf(this.getKey(s),o);await this.moveOrCopy(a,c,"move")}}async copy(e,t,i,n,s){for(let o of i){let a=nf(this.getKey(n),o),c=nf(this.getKey(s),o);await this.moveOrCopy(a,c,"copy")}}async put(e,t,i){let n=this.getKey(t),s=await fetch(`${this.apiBase}/${n}`,{method:"PUT",headers:{Authorization:this.authHeader,"Content-Type":"application/octet-stream"},body:i});if(!s.ok)throw new Error(`[USS] put failed: HTTP ${s.status}`)}async moveOrCopy(e,t,i){let n=i==="move"?"X-Upyun-Move-Source":"X-Upyun-Copy-Source",s=await fetch(`${this.apiBase}/${t}`,{method:"PUT",headers:{Authorization:this.authHeader,[n]:`/${e}`}});if(!s.ok)throw new Error(`[USS] ${i} failed: HTTP ${s.status}`)}}});function ij(r){return r?r.message?r.message:r.msg?r.msg:"request failed":"request failed"}var Ms,lE,Rm,rF=j(()=>{"use strict";Ms="https://alidocs.dingtalk.com",lE="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0 Safari/537.36";Rm=class{constructor(e){this.cookie=e}cookie;headers(){return{Cookie:this.cookie,Accept:"application/json, text/plain, */*",Referer:Ms+"/",Origin:Ms,"User-Agent":lE}}async request(e,t){let i=await fetch(e,{...t,headers:{...this.headers(),...t?.headers||{}}}),n=await i.json().catch(()=>({}));if(!i.ok||n.isSuccess===!1)throw new Error(ij(n));return n}async checkCookie(){await this.request(`${Ms}/portal/api/v1/mine/info`)}async list(e){let t=new URLSearchParams({dentryUuid:e,withParentAncestors:"true",orderType:"SORT_KEY",sortType:"desc",listDentrySource:"2",pageSize:"1000"});return(await this.request(`${Ms}/box/api/v2/dentry/list?${t.toString()}`)).data?.children||[]}async download(e){let t=new URLSearchParams({dentryUuid:e,version:"1",supportDownloadTypes:"URL_PRE_SIGNATURE,HTTP_TO_CENTER",downloadType:"URL_PRE_SIGNATURE"}),n=(await this.request(`${Ms}/box/api/v2/file/download?${t.toString()}`)).data?.ossUrlPreSignatureInfo?.preSignUrls||[];if(n.length===0)throw new Error("empty download url");return n[0]}async post(e,t){await this.request(`${Ms}${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)})}}});function nj(r){let e={...r||{}};return e.cookie=(e.cookie||"").trim(),e.root_folder_id=(e.root_folder_id||"").trim(),e}function iF(r){let e=r.dentryType==="folder";return{name:r.name,size:e?0:r.fileSize||0,is_dir:e,modified:r.updatedTime?new Date(r.updatedTime).toISOString():new Date().toISOString(),created:r.createdTime?new Date(r.createdTime).toISOString():void 0,sign:r.dentryUuid,type:X(r.name,e)}}var Nm,nF=j(()=>{"use strict";Be();He();rF();Nm=class{addition;client;idCache=new Map;constructor(e){this.addition=nj(e),this.client=new Rm(this.addition.cookie)}async init(){if(!this.addition.cookie)throw new Error("cookie is empty");if(!this.addition.root_folder_id)throw new Error("root folder id is empty");await this.client.checkCookie()}cleanPath(e){let t="/"+(e||"").split("/").filter(Boolean).join("/");return t==="/"?"/":t}joinPath(e,t){return e==="/"?`/${t}`:`${e}/${t}`}async resolveId(e){let t=this.cleanPath(e);if(t==="/")return this.addition.root_folder_id;let i=this.idCache.get(t);if(i)return i;let n=t.split("/").filter(Boolean),s=this.addition.root_folder_id,o="/";for(let a of n){let l=(await this.client.list(s)).find(d=>d.name===a&&d.dentryType==="folder");if(!l)throw new Error(`folder not found: ${a}`);s=l.dentryUuid,o=this.joinPath(o,a),this.idCache.set(o,s)}return s}async resolveItemId(e){let t=this.cleanPath(e);if(t==="/")return this.addition.root_folder_id;let i=this.idCache.get(t);if(i)return i;let n=t.split("/").slice(0,-1).join("/")||"/",s=t.split("/").pop()||"",o=await this.resolveId(n),c=(await this.client.list(o)).find(l=>l.name===s);if(!c)throw new Error(`item not found: ${s}`);return this.idCache.set(t,c.dentryUuid),c.dentryUuid}async list(e,t){let i=await this.resolveId(t),n=await this.client.list(i),s=this.cleanPath(t),o=n.filter(a=>a.dentryUuid&&a.name).map(a=>(this.idCache.set(this.joinPath(s,a.name),a.dentryUuid),iF(a)));return de(o,"name","asc")}async get(e,t){let i=this.cleanPath(t),n=i.split("/").filter(Boolean).pop()||"root";if(i==="/")return{name:"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:this.addition.root_folder_id,type:1};let s=i.split("/").slice(0,-1).join("/")||"/",o=await this.resolveId(s),c=(await this.client.list(o)).find(u=>u.name===n);if(!c)throw new Error("file not found");let l=c.dentryType==="folder",d="";return l||(d=await this.client.download(c.dentryUuid)),this.idCache.set(i,c.dentryUuid),{...iF(c),raw_url:d,raw_url_headers:{"User-Agent":lE,Referer:Ms+"/",Origin:Ms}}}async mkdir(e,t){let i=this.cleanPath(t),n=i.split("/").slice(0,-1).join("/")||"/",s=i.split("/").pop()||"",o=await this.resolveId(n);await this.client.post("/box/api/v2/dentry/createfolder",{dentryType:"folder",name:s,parentDentryUuid:o,conflictHandleStrategy:"auto_rename"})}async rename(e,t,i){let n=await this.resolveItemId(t);await this.client.post("/box/api/v2/dentry/rename",{dentryUuid:n,name:i})}async move(e,t,i,n,s){let o=await this.resolveItemId(n),a=this.cleanPath(s).split("/").slice(0,-1).join("/")||"/",c=await this.resolveId(a);await this.client.post("/box/api/v2/dentry/move",{targetParentDentryUuid:c,sourceDentryUuid:o,operateFrom:1})}async copy(e,t,i,n,s){let o=await this.resolveItemId(n),a=this.cleanPath(s).split("/").slice(0,-1).join("/")||"/",c=await this.resolveId(a);await this.client.post("/box/api/v2/dentry/copy",{sourceDentryUuid:o,targetParentDentryUuid:c,operateFrom:1,onlyCopyMeta:!1})}async remove(e,t,i){let n=await this.resolveItemId(t);await this.client.post("/box/api/v1/dentry/recycle",{dentryUuid:n})}async put(e,t,i){throw new Error("AliDoc does not support upload")}}});var sj,qm,sF=j(()=>{"use strict";sj='MediaBrowser Client="OpenList", Device="OpenList", DeviceId="openlist-emby", Version="1.0.0"',qm=class{baseURL;token;userID;constructor(e,t="",i=""){this.baseURL=(e||"").trim().replace(/\/+$/,""),this.token=t,this.userID=i}async login(e,t){let i=await fetch(`${this.baseURL}/Users/AuthenticateByName`,{method:"POST",headers:{"Content-Type":"application/json","X-Emby-Authorization":sj},body:JSON.stringify({Username:e,Pw:t})});if(!i.ok)throw new Error(`emby auth failed: status=${i.status}`);let n=await i.json();if(!n.AccessToken||!n.User?.Id)throw new Error("emby auth response missing access token or user id");this.token=n.AccessToken,this.userID=n.User.Id}async getItems(e){let t=new URLSearchParams({ParentId:e,Recursive:"false",Fields:"Path,Size,DateCreated,SeriesName,IndexNumber,ParentIndexNumber",api_key:this.token}),i=await fetch(`${this.baseURL}/Users/${this.userID}/Items?${t.toString()}`);if(!i.ok)throw new Error(`emby list failed: status=${i.status}`);return await i.json()}async getItemDetail(e){let t=new URLSearchParams({Fields:"MediaSources",api_key:this.token}),i=await fetch(`${this.baseURL}/Users/${this.userID}/Items/${encodeURIComponent(e)}?${t.toString()}`);return i.ok?await i.json():null}}});function oj(r){let e={...r||{}};return e.url=(e.url||"").trim().replace(/\/+$/,""),e.api_key=(e.api_key||"").trim(),e.user_id=(e.user_id||"").trim(),e.username=(e.username||"").trim(),e.password=(e.password||"").trim(),e.link_method=(e.link_method||"stream").toLowerCase(),e.root_folder_id=(e.root_folder_id||"").trim()||"1",e}function oF(r){return{name:r.Name,size:r.IsFolder?0:r.Size||0,is_dir:r.IsFolder,modified:r.DateCreated?new Date(r.DateCreated).toISOString():new Date().toISOString(),sign:r.Id,type:X(r.Name,r.IsFolder)}}var Om,aF=j(()=>{"use strict";Be();He();sF();Om=class{addition;client;idCache=new Map;constructor(e){this.addition=oj(e),this.client=new qm(this.addition.url,this.addition.api_key,this.addition.user_id)}async init(){if(!this.addition.url)throw new Error("url is required");if(this.addition.api_key){if(!this.addition.user_id)throw new Error("user_id is required when api_key is set");return}if(!this.addition.username)throw new Error("please provide api_key+user_id or username(+password)");await this.client.login(this.addition.username,this.addition.password)}cleanPath(e){let t="/"+(e||"").split("/").filter(Boolean).join("/");return t==="/"?"/":t}joinPath(e,t){return e==="/"?`/${t}`:`${e}/${t}`}async resolveId(e){let t=this.cleanPath(e);if(t==="/")return this.addition.root_folder_id;let i=this.idCache.get(t);if(i)return i;let n=t.split("/").filter(Boolean),s=this.addition.root_folder_id,o="/";for(let a of n){let l=(await this.client.getItems(s)).Items.find(d=>d.Name===a&&d.IsFolder);if(!l)throw new Error(`folder not found: ${a}`);s=l.Id,o=this.joinPath(o,a),this.idCache.set(o,s)}return s}async list(e,t){let i=await this.resolveId(t),n=await this.client.getItems(i),s=this.cleanPath(t),o=n.Items.map(a=>(this.idCache.set(this.joinPath(s,a.Name),a.Id),oF(a)));return de(o,"name","asc")}async get(e,t){let i=this.cleanPath(t),n=i.split("/").filter(Boolean).pop()||"root";if(i==="/")return{name:"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:this.addition.root_folder_id,type:1};let s=i.split("/").slice(0,-1).join("/")||"/",o=await this.resolveId(s),c=(await this.client.getItems(o)).Items.find(u=>u.Name===n);if(!c)throw new Error("file not found");let l=c.IsFolder,d="";return l||(d=await this.buildLink(c.Id)),this.idCache.set(i,c.Id),{...oF(c),raw_url:d,raw_url_headers:{"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0 Safari/537.36"}}}async buildLink(e){let t=this.addition.link_method==="download",i="",n="";if(!t){let o=await this.client.getItemDetail(e);if(o&&o.MediaSources?.length){let a=o.MediaSources.find(c=>c.Id&&c.SupportsDirectStream)||o.MediaSources.find(c=>c.Id);a&&(i=a.Id,n=a.Container)}}let s=new URL(this.addition.url);return t?s.pathname=`${s.pathname.replace(/\/+$/,"")}/Items/${encodeURIComponent(e)}/Download`:n?s.pathname=`${s.pathname.replace(/\/+$/,"")}/Videos/${encodeURIComponent(e)}/stream.${n}`:s.pathname=`${s.pathname.replace(/\/+$/,"")}/Videos/${encodeURIComponent(e)}/stream`,s.searchParams.set("api_key",this.client.token),i&&s.searchParams.set("MediaSourceId",i),t||s.searchParams.set("Static","true"),s.toString()}async mkdir(e,t){throw new Error("Emby is read-only")}async rename(e,t,i){throw new Error("Emby is read-only")}async move(e,t,i,n,s){throw new Error("Emby is read-only")}async copy(e,t,i,n,s){throw new Error("Emby is read-only")}async remove(e,t,i){throw new Error("Emby is read-only")}async put(e,t,i){throw new Error("Emby is read-only")}}});function Lm(r,e){let t=(r||"").trim();if(t||(t=e),!t)throw new Error("empty url");t.includes("://")||(t="https://"+t);let i=new URL(t);if(!i.host)throw new Error("invalid url: "+r);return i.pathname=i.pathname.replace(/\/+$/,""),i.toString()}function Yo(r){return r?"/"+r.replace(/^\/+/,"").split("/").filter(Boolean).join("/"):"/"}function cF(r){let e=new Uint8Array(r),t="";for(let i of e)t+=String.fromCharCode(i);return btoa(t).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}async function aj(r){return crypto.subtle.digest("SHA-256",new TextEncoder().encode(r))}async function cj(r,e){let t=await crypto.subtle.importKey("raw",new TextEncoder().encode(r),{name:"HMAC",hash:"SHA-256"},!1,["sign"]);return crypto.subtle.sign("HMAC",t,new TextEncoder().encode(e))}function lj(r){return Array.from(r.keys()).filter(t=>t!=="token"&&t!=="expires").sort().map(t=>`${t}=${r.get(t)||""}`).join("&")}function Ic(r,e,t){let i=Lm(r.endpoint,Mm),n=new URL(i),s=Yo(e),o=(r.storage_zone_name||"").replace(/^\/+|\/+$/g,"");return s==="/"?n.pathname=`/${o}/`:(n.pathname=`/${o}/${s.replace(/^\/+/,"")}`,t&&!n.pathname.endsWith("/")&&(n.pathname+="/")),n.toString()}function dF(r,e){let t=new URL(r.cdn_base_url),i=Yo(e),n=t.pathname.replace(/\/+$/,"");return i==="/"?t.pathname=n?n+"/":"/":t.pathname=n+"/"+i.replace(/^\/+/,""),t.toString()}async function uF(r,e){let t=r.sign_url_expire>0?r.sign_url_expire:4,i=Math.floor(Date.now()/1e3)+t*3600,n=new URL(e),s=lj(n.searchParams),o=decodeURIComponent(n.pathname),a=(r.cdn_token_method||"sha256").toLowerCase(),c;if(a==="hmac_sha256"){let l=await cj(r.cdn_token_key,o+String(i)+s);c="HS256-"+cF(l)}else{let l=await aj(r.cdn_token_key+o+String(i)+s);c=cF(l)}return n.searchParams.set("token",c),n.searchParams.set("expires",String(i)),n.toString()}async function Ml(r){if(r.ok)return;let e=await r.text().catch(()=>"")||"",t=e.trim();try{let i=JSON.parse(e);i?.length&&i[0].Message&&(t=i[0].Message)}catch{}throw new Error(`bunny storage request failed: ${r.status} ${t}`)}var Mm,lF,fF=j(()=>{"use strict";Mm="storage.bunnycdn.com",lF=".openlist"});function dj(r){let e={...r||{}};return e.storage_zone_name=(e.storage_zone_name||"").trim(),e.access_key=(e.access_key||"").trim(),e.endpoint=(e.endpoint||"").trim()||Mm,e.cdn_base_url=(e.cdn_base_url||"").trim(),e.cdn_token_key=(e.cdn_token_key||"").trim(),e.cdn_token_method=(e.cdn_token_method||"sha256").toLowerCase(),e.cdn_token_include_ip=!!e.cdn_token_include_ip,e.sign_url_expire=Number(e.sign_url_expire||4),e.placeholder=(e.placeholder||"").trim()||lF,e.root_folder_path=e.root_folder_path||"/",e}function uj(r){if(!r)return new Date().toISOString();let e=new Date(r);return isNaN(e.getTime())?new Date().toISOString():e.toISOString()}var Hm,AF=j(()=>{"use strict";Be();He();fF();Hm=class{addition;constructor(e){this.addition=dj(e)}async init(){Lm(this.addition.endpoint,Mm),this.addition.cdn_base_url&&Lm(this.addition.cdn_base_url,"")}toFileItem(e,t){let i=e==="/"?`/${t.ObjectName}`:`${e}/${t.ObjectName}`;return{name:t.ObjectName,size:t.IsDirectory?0:t.Length||0,is_dir:t.IsDirectory,modified:uj(t.LastChanged),sign:t.Guid||i,type:X(t.ObjectName,t.IsDirectory)}}async list(e,t){let i=Yo(t),n=Ic(this.addition,i,!0),s=await fetch(n,{headers:{AccessKey:this.addition.access_key}});await Ml(s);let c=(await s.json()).filter(l=>!(!l.ObjectName||!l.IsDirectory&&l.ObjectName===this.addition.placeholder)).map(l=>this.toFileItem(i,l));return de(c,"name","asc")}async get(e,t){let i=Yo(t),n=i.split("/").filter(Boolean).pop()||"root";if(i==="/")return{name:"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1};let s=i.split("/").slice(0,-1).join("/")||"/",o=Ic(this.addition,s,!0),a=await fetch(o,{headers:{AccessKey:this.addition.access_key}});await Ml(a);let l=(await a.json()).find(f=>f.ObjectName===n);if(!l)throw new Error("object not found");let d="",u={};return l.IsDirectory||(this.addition.cdn_base_url?(d=dF(this.addition,i),this.addition.cdn_token_key&&(d=await uF(this.addition,d))):(d=Ic(this.addition,i,!1),u={AccessKey:this.addition.access_key})),{...this.toFileItem(s,l),raw_url:d,raw_url_headers:u}}async mkdir(e,t){let i=Yo(t),n=i==="/"?`/${this.addition.placeholder}`:`${i}/${this.addition.placeholder}`,s=Ic(this.addition,n,!1),o=await fetch(s,{method:"PUT",headers:{AccessKey:this.addition.access_key,"Content-Type":"application/octet-stream","Content-Length":"0"}});await Ml(o)}async rename(e,t,i){throw new Error("Bunny Storage does not support rename")}async move(e,t,i,n,s){throw new Error("Bunny Storage does not support move")}async copy(e,t,i,n,s){throw new Error("Bunny Storage does not support copy")}async remove(e,t,i){let n=Yo(t),s=await fetch(Ic(this.addition,n,!0),{method:"DELETE",headers:{AccessKey:this.addition.access_key}});await Ml(s)}async put(e,t,i){let n=Yo(t),s=Ic(this.addition,n,!1),o=await fetch(s,{method:"PUT",headers:{AccessKey:this.addition.access_key,"Content-Type":"application/octet-stream","Content-Length":String(i.length)},body:new Uint8Array(i)});await Ml(o)}}});function Gm(r){return r.split("/").map(e=>encodeURIComponent(e)).join("/")}function hF(r,e){if(!r)return 0;for(let t of e){let i=r[t];if(i!=null){let n=Number(i);if(!isNaN(n))return n}}return 0}function gF(r){return hF(r,["FileSizeBytes","File-Size","fileSize","size"])}function pF(r){return hF(r,["TimeStamp","timestamp","modified"])}var Km,mF=j(()=>{"use strict";Km=class{constructor(e,t){this.address=e;this.token=t}address;token;headers(){return{Authorization:"Bearer "+this.token,Accept:"application/json"}}async request(e,t,i){let s=null;for(let o=0;o<3;o++)try{let a=await fetch(this.address+t,{method:e,headers:{...this.headers(),...i&&!(i instanceof FormData)?{"Content-Type":"application/json"}:{}},body:i?i instanceof FormData?i:JSON.stringify(i):void 0});if(a.status===429){await new Promise(u=>setTimeout(u,(o+1)*2e3));continue}let c=await a.text(),l={};try{l=c?JSON.parse(c):{}}catch{l={}}let d=l;if(d.error||d.message)throw new Error("API error: "+(d.error||d.message));if(!a.ok)throw new Error(`HTTP ${a.status}`);return l}catch(a){if(s=a,o<2){await new Promise(c=>setTimeout(c,(o+1)*1e3));continue}}throw s||new Error("max retries exceeded")}async list(e,t,i){return this.request("GET",`/api/manage/list?dir=${encodeURIComponent(e)}&start=${t}&count=${i}`)}async remove(e,t){return this.request("POST",`/api/manage/delete${Gm(e)}?folder=${t}`)}}});function fj(r){let e={...r||{}};return e.address=(e.address||"").trim().replace(/\/+$/,""),e.token=(e.token||"").trim(),e.small_channel_name=(e.small_channel_name||"").trim(),e.large_channel_name=(e.large_channel_name||"").trim(),e.large_channel_type=(e.large_channel_type||"").trim(),e.upload_thread=Math.min(Number(e.upload_thread||3),32),e.root_folder_path=e.root_folder_path||"/",e}var dE,zm,yF=j(()=>{"use strict";Be();He();mF();dE=1e3;zm=class{addition;client;publicUrlPrefix="";constructor(e){this.addition=fj(e),this.client=new Km(this.addition.address,this.addition.token)}async init(){if(!this.addition.address)throw new Error("address is required");if(!this.addition.token)throw new Error("token is required");await this.client.list("/",0,1)}cleanPath(e){let t="/"+(e||"").split("/").filter(Boolean).join("/");return t==="/"?"/":t}async list(e,t){let i=this.cleanPath(t),n=new Set,s=new Set,o=[],a=0;for(;;){let c=await this.client.list(i,a,dE);if(!c.files?.length&&!c.directories?.length)break;for(let l of c.directories||[]){let d="/"+(l||"").replace(/^\/+|\/+$/g,"");n.has(d)||(n.add(d),o.push({name:d.split("/").filter(Boolean).pop()||"",size:0,is_dir:!0,modified:new Date().toISOString(),sign:d,type:1}))}for(let l of c.files||[])if(!s.has(l.name)){s.add(l.name);let d=l.name.split("/").filter(Boolean).pop()||l.name,u=gF(l.metadata),f=pF(l.metadata);o.push({name:d,size:u,is_dir:!1,modified:f?new Date(f).toISOString():new Date().toISOString(),sign:"/"+(l.name||"").replace(/^\/+/,""),type:X(d,!1)})}if((c.files?.length||0)+(c.directories?.length||0)<dE)break;a+=dE}return de(o,"name","asc")}async get(e,t){let i=this.cleanPath(t),n=i.split("/").filter(Boolean).pop()||"root";if(i==="/")return{name:"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1};let s=this.publicUrlPrefix?this.publicUrlPrefix+Gm(i):this.addition.address+"/file"+Gm(i);return{name:n,size:0,is_dir:!1,modified:new Date().toISOString(),sign:i,type:X(n,!1),raw_url:s}}async mkdir(e,t){}async rename(e,t,i){throw new Error("cloudflare_imgbed does not support rename")}async move(e,t,i,n,s){throw new Error("cloudflare_imgbed does not support move")}async copy(e,t,i,n,s){throw new Error("cloudflare_imgbed does not support copy")}async remove(e,t,i){let n=this.cleanPath(t);await this.client.remove(n,!1)}async put(e,t,i){let n=this.cleanPath(t),s=n.split("/").slice(0,-1).join("/")||"/",o=n.split("/").pop()||"upload",a=this.addition.small_channel_name;if(!a)throw new Error("channel name not configured");let c=new URLSearchParams({returnFormat:"default",channelName:a,uploadFolder:s,autoRetry:"true"}),l=new FormData;l.append("file",new Blob([new Uint8Array(i)],{type:"application/octet-stream"}),o);let d=await fetch(`${this.addition.address}/upload?${c.toString()}`,{method:"POST",headers:{Authorization:"Bearer "+this.addition.token},body:l});if(!d.ok)throw new Error(`upload failed ${d.status}: ${await d.text()}`);let u=await d.json();if(!u?.length||!u[0].src)throw new Error("no src returned");if(u[0].publicUrl)try{let f=new URL(u[0].publicUrl);this.publicUrlPrefix=f.protocol+"//"+f.host}catch{}}}});function xF(r){let e=(r||"").trim().replace(/\s/g,"");if(!e)return"";if(e.startsWith("+"))return e.startsWith("+86")&&e.length>3?"+86 "+e.slice(3):e;let t=e.replace(/\D/g,"");return t.startsWith("86")&&t.length>11,t.length===11?"+86 "+t:e}function CF(){let r=crypto.getRandomValues(new Uint8Array(16));return Array.from(r).map(e=>e.toString(16).padStart(2,"0")).join("")}function EF(r){let e=(r||"").toLowerCase().replace(/-/g,"");return e.length!==32||!/^[0-9a-f]+$/.test(e)?"":e}function uE(r){return r>0?new Date(r*1e3).toISOString():new Date().toISOString()}function wF(r){let e=(r||"").trim().toLowerCase();return e?e==="success"||e==="ok"||e.includes("\u6210\u529F"):!0}function hj(r){let e=(r||"").trim().toLowerCase();return e?e==="\u4E0A\u4F20\u5DF2\u5B8C\u6210"||e==="upload completed"||e==="already uploaded"||e==="\u79D2\u4F20\u6210\u529F":!1}var IF,Aj,sf,BF=j(()=>{"use strict";si();IF="https://account.guangyapan.com",Aj="https://api.guangyapan.com";sf=class{accessToken="";refreshToken="";clientId;deviceId;deviceSign;onTokensChanged;constructor(e){this.clientId=e.client_id||"",this.deviceId=e.device_id||"",this.deviceSign=e.device_sign||"",this.accessToken=e.access_token||"",this.refreshToken=e.refresh_token||""}accountHeaders(){return{Accept:"application/json, text/plain, */*","Content-Type":"application/json","X-Device-Model":"chrome%2F147.0.0.0","X-Device-Name":"PC-Chrome","X-Device-Sign":this.deviceSign,"X-Net-Work-Type":"NONE","X-OS-Version":"MacIntel","X-Platform-Version":"1","X-Protocol-Version":"301","X-Provider-Name":"NONE","X-SDK-Version":"9.0.2","X-Client-Id":this.clientId,"X-Client-Version":"0.0.1","X-Device-Id":this.deviceId}}apiHeaders(){return{Accept:"application/json, text/plain, */*","Content-Type":"application/json",Did:this.deviceId,Dt:"4",Authorization:"Bearer "+this.accessToken}}get hasToken(){return!!this.accessToken}get hasRefreshToken(){return!!this.refreshToken}async validateToken(){let e=await fetch(`${IF}/v1/user/me`,{headers:{...this.accountHeaders(),Authorization:"Bearer "+this.accessToken}});if(!e.ok)throw new Error(`validate token failed: ${e.status}`)}async refresh(){if(!this.refreshToken)throw new Error("refresh_token is empty");let e=await fetch(`${IF}/v1/auth/token`,{method:"POST",headers:this.accountHeaders(),body:JSON.stringify({client_id:this.clientId,grant_type:"refresh_token",refresh_token:this.refreshToken})}),t=await e.json();if(!e.ok||t.error||!t.access_token)throw new Error("refresh token failed: "+(t.error_description||t.error||e.status));this.accessToken=t.access_token,t.refresh_token&&(this.refreshToken=t.refresh_token),await this.onTokensChanged?.(this.accessToken,this.refreshToken)}async postAPI(e,t){let i=async()=>{let o=await fetch(`${Aj}${e}`,{method:"POST",headers:this.apiHeaders(),body:JSON.stringify(t??{})});return{res:o,json:await o.json().catch(()=>({}))}},{res:n,json:s}=await i();if((n.status===401||n.status===403)&&this.refreshToken){await this.refresh();let o=await i();n=o.res,s=o.json}if(!n.ok)throw new Error(`request failed: status=${n.status}`);return s}async getFileList(e,t,i,n){return this.postAPI("/userres/v1/file/get_file_list",{parentId:e,page:0,pageSize:t,orderBy:i,sortType:n})}async getDownloadURL(e){let t=await this.postAPI("/nd.bizuserres.s/v1/get_res_download_url",{fileId:e});return(t?.data?.signedURL||t?.data?.downloadUrl||"").trim()}async getUploadToken(e,t,i,n){let s={fileSize:i};n&&(s.md5=n);let o=await this.postAPI("/nd.bizuserres.s/v1/get_res_center_token",{capacity:2,name:t,parentId:e,res:s}),a=o.msg||"",c=o.code===156||hj(a);if(!wF(a)&&!c)throw new Error("get upload token failed: "+a);return{data:o.data,code:o.code,alreadyDone:c}}async waitTaskDone(e){for(let t=0;t<30;t++){let i=await this.postAPI("/nd.bizuserres.s/v1/get_task_status",{taskId:e});if(!wF(i.msg))throw new Error("get task status failed: "+i.msg);if(i.data?.status===2)return;if(i.data?.status===-1||i.data?.status===3)throw new Error(`task ${e} failed with status=${i.data.status}`);await new Promise(n=>setTimeout(n,300))}throw new Error(`task ${e} timeout`)}async waitUploadTaskInfo(e){for(let t=0;t<300;t++){if((await this.postAPI("/nd.bizuserres.s/v1/file/get_info_by_task_id",{taskId:e})).data?.fileId)return;await new Promise(n=>setTimeout(n,1e3))}throw new Error(`upload task ${e} timeout`)}static md5(e){return $t(e)}}});function gj(r){let e={...r||{}};return e.client_id=(e.client_id||"").trim(),e.device_id=EF(e.device_id||""),e.device_id||(e.device_id=CF()),e.device_sign=(e.device_sign||"").trim()||"wdi10."+e.device_id,e.page_size=Number(e.page_size||100),e.order_by=Number(e.order_by===void 0?3:e.order_by),e.sort_type=Number(e.sort_type===void 0?1:e.sort_type),e.root_folder_path=(e.root_folder_path||"").trim(),e.access_token=(e.access_token||"").trim(),e.refresh_token=(e.refresh_token||"").trim(),e.phone_number=xF(e.phone_number||""),e}function bF(r){let e=r.resType===2;return{name:r.fileName,size:e?0:r.fileSize||0,is_dir:e,modified:uE(r.utime),created:uE(r.ctime),sign:r.fileId,type:X(r.fileName,e)}}function pj(r,e){let t=(r||"").trim();if(!t)return t;!t.startsWith("http://")&&!t.startsWith("https://")&&(t="https://"+t);let i;try{i=new URL(t)}catch{return t}let n=i.host;return e&&n.startsWith(e+".")&&(n=n.slice(e.length+1)),i.host=n,i.toString().replace(/\/+$/,"")}var Jm,vF=j(()=>{"use strict";Be();He();si();BF();Jm=class{addition;client;idCache=new Map;constructor(e,t){this.addition=gj(e),this.client=new sf(this.addition),this.client.onTokensChanged=t}async init(){if(!this.addition.client_id)throw new Error("client_id is required");if(this.addition.access_token)try{await this.client.validateToken();return}catch{this.addition.access_token=""}if(this.addition.refresh_token){await this.client.refresh(),await this.client.validateToken();return}throw new Error("login failed: provide a valid access_token, or refresh_token, or phone_number + verify_code")}cleanPath(e){let t="/"+(e||"").split("/").filter(Boolean).join("/");return t==="/"?"/":t}joinPath(e,t){return e==="/"?`/${t}`:`${e}/${t}`}async resolveId(e){let t=this.cleanPath(e);if(t==="/")return"";let i=this.idCache.get(t);if(i)return i;let n=t.split("/").filter(Boolean),s="",o="/";for(let a of n){let l=(await this.client.getFileList(s,this.addition.page_size,this.addition.order_by,this.addition.sort_type)).data?.list?.find(d=>d.fileName===a&&d.resType===2);if(!l)throw new Error(`folder not found: ${a}`);s=l.fileId,o=this.joinPath(o,a),this.idCache.set(o,s)}return s}async resolveItemId(e){let t=this.cleanPath(e);if(t==="/")return"";let i=this.idCache.get(t);if(i)return i;let n=t.split("/").slice(0,-1).join("/")||"/",s=t.split("/").pop()||"",o=await this.resolveId(n),c=(await this.client.getFileList(o,this.addition.page_size,this.addition.order_by,this.addition.sort_type)).data?.list?.find(l=>l.fileName===s);if(!c)throw new Error(`item not found: ${s}`);return this.idCache.set(t,c.fileId),c.fileId}async list(e,t){let i=await this.resolveId(t),n=this.cleanPath(t),s=[];for(let o=0;o<1e4;o++){let a=await this.client.getFileList(i,this.addition.page_size,this.addition.order_by,this.addition.sort_type),c=a.data?.list||[];for(let l of c)this.idCache.set(this.joinPath(n,l.fileName),l.fileId),s.push(bF(l));if(c.length<this.addition.page_size||a.data?.total>0&&s.length>=a.data.total)break}return de(s,"name","asc")}async get(e,t){let i=this.cleanPath(t),n=i.split("/").filter(Boolean).pop()||"root";if(i==="/")return{name:"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1};let s=i.split("/").slice(0,-1).join("/")||"/",o=await this.resolveId(s),c=(await this.client.getFileList(o,this.addition.page_size,this.addition.order_by,this.addition.sort_type)).data?.list?.find(u=>u.fileName===n);if(!c)throw new Error("file not found");let l=c.resType===2,d="";return l||(d=await this.client.getDownloadURL(c.fileId)),this.idCache.set(i,c.fileId),{...bF(c),raw_url:d}}async mkdir(e,t){let i=this.cleanPath(t),n=i.split("/").slice(0,-1).join("/")||"/",s=i.split("/").pop()||"",o=await this.resolveId(n);await this.client.postAPI("/nd.bizuserres.s/v1/file/create_dir",{parentId:o,dirName:s})}async rename(e,t,i){let n=await this.resolveItemId(t);await this.client.postAPI("/nd.bizuserres.s/v1/file/rename",{fileId:n,newName:i})}async move(e,t,i,n,s){let o=await this.resolveItemId(n),a=this.cleanPath(s).split("/").slice(0,-1).join("/")||"/",c=await this.resolveId(a),l=await this.client.postAPI("/nd.bizuserres.s/v1/file/move_file",{fileIds:[o],parentId:c});l?.data?.taskId&&await this.client.waitTaskDone(l.data.taskId)}async copy(e,t,i,n,s){let o=await this.resolveItemId(n),a=this.cleanPath(s).split("/").slice(0,-1).join("/")||"/",c=await this.resolveId(a),l=await this.client.postAPI("/nd.bizuserres.s/v1/file/copy_file",{fileIds:[o],parentId:c});l?.data?.taskId&&await this.client.waitTaskDone(l.data.taskId)}async remove(e,t,i){let n=await this.resolveItemId(t),s=await this.client.postAPI("/nd.bizuserres.s/v1/file/delete_file",{fileIds:[n]});s?.data?.taskId&&await this.client.waitTaskDone(s.data.taskId)}async put(e,t,i){let n=this.cleanPath(t),s=n.split("/").slice(0,-1).join("/")||"/",o=n.split("/").pop()||"upload",a=await this.resolveId(s),c=new Uint8Array(i),l=sf.md5(c),{data:d,alreadyDone:u}=await this.client.getUploadToken(a,o,c.length,l),f=d?.taskId||"";if(u){if(!f)throw new Error("instant upload returns empty task id");await this.client.waitUploadTaskInfo(f);return}if(!d.objectPath||!d.bucketName||!d.endPoint||!d.accessKeyID||!d.secretAccessKey)throw new Error("upload token is incomplete");let h=pj(d.endPoint,d.bucketName),g=`https://${d.bucketName}.${new URL(h).host}/${d.objectPath.replace(/^\/+/,"")}`,p=new Date().toUTCString(),I="application/octet-stream",y=d.sessionToken?`x-oss-security-token:${d.sessionToken} `:"",w=`/${d.bucketName}/${d.objectPath.replace(/^\/+/,"")}`,C=`PUT ${I} ${p} -${y}${w}`,b=await hu(C,d.secretAccessKey),x=`OSS ${d.accessKeyID}:${b}`,_={"Content-Type":I,Date:p,Authorization:x};d.sessionToken&&(_["x-oss-security-token"]=d.sessionToken);let R=await fetch(g,{method:"PUT",headers:_,body:c});if(!R.ok)throw new Error(`OSS upload failed: ${R.status} ${await R.text()}`);f&&await this.client.waitUploadTaskInfo(f)}}});var Y4=oe($C=>{var SJ=typeof $C>"u"?{}:$C;(function(r){"use strict";var e="__namespace",t=function(A){return A==null},i=function(A){return A===e||Number.isInteger(A)&&A>=1&&A<=11},n=function(A){return A&&i(A.nodeType)&&typeof A.nodeName=="string"};function s(A){var k=Array.prototype.slice,O=A.length,$=function(W,ue){return function(){return ue.apply(this,W.concat(k.call(arguments)))}},H=function(){var W=k.call(arguments);return W.length<O?$(W,H):A.apply(this,k.apply(arguments,[0,O]))};return H}var o=function(A,k){for(var O=0;O<k.length;O+=1)A(k[O],O,k)},a=function(A,k,O){var $=k;return o(function(H,W){$=A($,H,W)},O),$},c=function(A,k){var O=new Array(k.length);return o(function($,H){O[H]=A($)},k),O},l=function(A,k){var O=[];return o(function($,H){A($,H)&&O.push($)},k),O},d=function(A,k){for(var O=0;O<A.length;O+=1)if(A[O]===k)return!0;return!1};function u(A){return function(){return A}}function f(A){return A.toString()}var h=function(A,k){return k.join(A)},g=function(A,k,O){return A+O+k},p=Array.prototype.concat,I=function(A,k){var O=new Ce;O.addArray(A);var $=O.toArray();return k?$.reverse():$},y=32767;function w(A){for(var k=[],O=0;O<A.length;O+=y){var $=A.slice(O,O+y);k=p.apply(k,$)}return k}function C(A,k){for(var O=Object(A),$=1;$<arguments.length;$++){var H=arguments[$];if(H!=null)for(var W in H)Object.prototype.hasOwnProperty.call(H,W)&&(O[W]=H[W])}return O}var b={ELEMENT_NODE:1,ATTRIBUTE_NODE:2,TEXT_NODE:3,CDATA_SECTION_NODE:4,PROCESSING_INSTRUCTION_NODE:7,COMMENT_NODE:8,DOCUMENT_NODE:9,DOCUMENT_TYPE_NODE:10,DOCUMENT_FRAGMENT_NODE:11,NAMESPACE_NODE:e};x.prototype=new Object,x.prototype.constructor=x,x.superclass=Object.prototype;function x(){this.init()}x.prototype.init=function(){this.reduceActions=[],this.reduceActions[3]=function(A){return new Q(A[0],A[2])},this.reduceActions[5]=function(A){return new v(A[0],A[2])},this.reduceActions[7]=function(A){return new E(A[0],A[2])},this.reduceActions[8]=function(A){return new P(A[0],A[2])},this.reduceActions[10]=function(A){return new N(A[0],A[2])},this.reduceActions[11]=function(A){return new J(A[0],A[2])},this.reduceActions[12]=function(A){return new z(A[0],A[2])},this.reduceActions[13]=function(A){return new L(A[0],A[2])},this.reduceActions[15]=function(A){return new G(A[0],A[2])},this.reduceActions[16]=function(A){return new K(A[0],A[2])},this.reduceActions[18]=function(A){return new j(A[0],A[2])},this.reduceActions[19]=function(A){return new te(A[0],A[2])},this.reduceActions[20]=function(A){return new re(A[0],A[2])},this.reduceActions[22]=function(A){return new D(A[1])},this.reduceActions[24]=function(A){return new ee(A[0],A[2])},this.reduceActions[25]=function(A){return new Z(void 0,void 0,A[0])},this.reduceActions[27]=function(A){return A[0].locationPath=A[2],A[0]},this.reduceActions[28]=function(A){return A[0].locationPath=A[2],A[0].locationPath.steps.unshift(new se(se.DESCENDANTORSELF,ce.nodeTest,[])),A[0]},this.reduceActions[29]=function(A){return new Z(A[0],[],void 0)},this.reduceActions[30]=function(A){return be.instance_of(A[0],Z)?(A[0].filterPredicates==null&&(A[0].filterPredicates=[]),A[0].filterPredicates.push(A[1]),A[0]):new Z(A[0],[A[1]],void 0)},this.reduceActions[32]=function(A){return A[1]},this.reduceActions[33]=function(A){return new we(A[0])},this.reduceActions[34]=function(A){return new Ee(A[0])},this.reduceActions[36]=function(A){return new qr(A[0],[])},this.reduceActions[37]=function(A){return new qr(A[0],A[2])},this.reduceActions[38]=function(A){return[A[0]]},this.reduceActions[39]=function(A){return A[2].unshift(A[0]),A[2]},this.reduceActions[43]=function(A){return new _e(!0,[])},this.reduceActions[44]=function(A){return A[1].absolute=!0,A[1]},this.reduceActions[46]=function(A){return new _e(!1,[A[0]])},this.reduceActions[47]=function(A){return A[0].steps.push(A[2]),A[0]},this.reduceActions[49]=function(A){return new se(A[0],A[1],[])},this.reduceActions[50]=function(A){return new se(se.CHILD,A[0],[])},this.reduceActions[51]=function(A){return new se(A[0],A[1],A[2])},this.reduceActions[52]=function(A){return new se(se.CHILD,A[0],A[1])},this.reduceActions[54]=function(A){return[A[0]]},this.reduceActions[55]=function(A){return A[1].unshift(A[0]),A[1]},this.reduceActions[56]=function(A){return A[0]=="ancestor"?se.ANCESTOR:A[0]=="ancestor-or-self"?se.ANCESTORORSELF:A[0]=="attribute"?se.ATTRIBUTE:A[0]=="child"?se.CHILD:A[0]=="descendant"?se.DESCENDANT:A[0]=="descendant-or-self"?se.DESCENDANTORSELF:A[0]=="following"?se.FOLLOWING:A[0]=="following-sibling"?se.FOLLOWINGSIBLING:A[0]=="namespace"?se.NAMESPACE:A[0]=="parent"?se.PARENT:A[0]=="preceding"?se.PRECEDING:A[0]=="preceding-sibling"?se.PRECEDINGSIBLING:A[0]=="self"?se.SELF:-1},this.reduceActions[57]=function(A){return se.ATTRIBUTE},this.reduceActions[59]=function(A){return A[0]=="comment"?ce.commentTest:A[0]=="text"?ce.textTest:A[0]=="processing-instruction"?ce.anyPiTest:A[0]=="node"?ce.nodeTest:new ce(-1,void 0)},this.reduceActions[60]=function(A){return new ce.PITest(A[2])},this.reduceActions[61]=function(A){return A[1]},this.reduceActions[63]=function(A){return A[1].absolute=!0,A[1].steps.unshift(new se(se.DESCENDANTORSELF,ce.nodeTest,[])),A[1]},this.reduceActions[64]=function(A){return A[0].steps.push(new se(se.DESCENDANTORSELF,ce.nodeTest,[])),A[0].steps.push(A[2]),A[0]},this.reduceActions[65]=function(A){return new se(se.SELF,ce.nodeTest,[])},this.reduceActions[66]=function(A){return new se(se.PARENT,ce.nodeTest,[])},this.reduceActions[67]=function(A){return new dr(A[1])},this.reduceActions[68]=function(A){return ce.nameTestAny},this.reduceActions[69]=function(A){return new ce.NameTestPrefixAny(A[0].split(":")[0])},this.reduceActions[70]=function(A){return new ce.NameTestQName(A[0])}},x.actionTable=[" s s sssssssss s ss s ss"," s ","r rrrrrrrrr rrrrrrr rr r "," rrrrr "," s s sssssssss s ss s ss","rs rrrrrrrr s sssssrrrrrr rrs rs "," s s sssssssss s ss s ss"," s "," s ","r rrrrrrrrr rrrrrrr rr rr ","r rrrrrrrrr rrrrrrr rr rr ","r rrrrrrrrr rrrrrrr rr rr ","r rrrrrrrrr rrrrrrr rr rr ","r rrrrrrrrr rrrrrrr rr rr "," s "," s "," s s sssss s s ","r rrrrrrrrr rrrrrrr rr r ","a ","r s rr r ","r sr rr r ","r s rr s rr r ","r rssrr rss rr r ","r rrrrr rrrss rr r ","r rrrrrsss rrrrr rr r ","r rrrrrrrr rrrrr rr r ","r rrrrrrrr rrrrrs rr r ","r rrrrrrrr rrrrrr rr r ","r rrrrrrrr rrrrrr rr r ","r srrrrrrrr rrrrrrs rr sr ","r srrrrrrrr rrrrrrs rr r ","r rrrrrrrrr rrrrrrr rr rr ","r rrrrrrrrr rrrrrrr rr rr ","r rrrrrrrrr rrrrrrr rr rr ","r rrrrrrrr rrrrrr rr r ","r rrrrrrrr rrrrrr rr r ","r rrrrrrrrr rrrrrrr rr r ","r rrrrrrrrr rrrrrrr rr r "," sssss ","r rrrrrrrrr rrrrrrr rr sr ","r rrrrrrrrr rrrrrrr rr r ","r rrrrrrrrr rrrrrrr rr rr ","r rrrrrrrrr rrrrrrr rr rr "," s ","r srrrrrrrr rrrrrrs rr r ","r rrrrrrrr rrrrr rr r "," s "," s "," rrrrr "," s s sssssssss s sss s ss","r srrrrrrrr rrrrrrs rr r "," s s sssssssss s ss s ss"," s s sssssssss s ss s ss"," s s sssssssss s ss s ss"," s s sssssssss s ss s ss"," s s sssssssss s ss s ss"," s s sssssssss s ss s ss"," s s sssssssss s ss s ss"," s s sssssssss s ss s ss"," s s sssssssss s ss s ss"," s s sssssssss s ss s ss"," s s sssssssss s ss s ss"," s s sssssssss s ss s ss"," s s sssssssss s ss s ss"," s s sssssssss ss s ss"," s s sssssssss s ss s ss"," s s sssss s s "," s s sssss s s ","r rrrrrrrrr rrrrrrr rr rr "," s s sssss s s "," s s sssss s s ","r rrrrrrrrr rrrrrrr rr sr ","r rrrrrrrrr rrrrrrr rr sr ","r rrrrrrrrr rrrrrrr rr r ","r rrrrrrrrr rrrrrrr rr rr "," s ","r rrrrrrrrr rrrrrrr rr rr ","r rrrrrrrrr rrrrrrr rr rr "," rr "," s "," rs ","r sr rr r ","r s rr s rr r ","r rssrr rss rr r ","r rssrr rss rr r ","r rrrrr rrrss rr r ","r rrrrr rrrss rr r ","r rrrrr rrrss rr r ","r rrrrr rrrss rr r ","r rrrrrsss rrrrr rr r ","r rrrrrsss rrrrr rr r ","r rrrrrrrr rrrrr rr r ","r rrrrrrrr rrrrr rr r ","r rrrrrrrr rrrrr rr r ","r rrrrrrrr rrrrrr rr r "," r "," s ","r srrrrrrrr rrrrrrs rr r ","r srrrrrrrr rrrrrrs rr r ","r rrrrrrrrr rrrrrrr rr r ","r rrrrrrrrr rrrrrrr rr r ","r rrrrrrrrr rrrrrrr rr r ","r rrrrrrrrr rrrrrrr rr r ","r rrrrrrrrr rrrrrrr rr rr ","r rrrrrrrrr rrrrrrr rr rr "," s s sssssssss s ss s ss","r rrrrrrrrr rrrrrrr rr rr "," r "],x.actionTableNumber=[` 1 0 /.-,+*)(' & %$ # "!`," J ","a aaaaaaaaa aaaaaaa aa a "," YYYYY ",` 1 0 /.-,+*)(' & %$ # "!`,`K1 KKKKKKKK . +*)('KKKKKK KK# K" `,` 1 0 /.-,+*)(' & %$ # "!`," N "," O ","e eeeeeeeee eeeeeee ee ee ","f fffffffff fffffff ff ff ","d ddddddddd ddddddd dd dd ","B BBBBBBBBB BBBBBBB BB BB ","A AAAAAAAAA AAAAAAA AA AA "," P "," Q ",` 1 . +*)(' # " `,"b bbbbbbbbb bbbbbbb bb b "," ","! S !! ! ",'" T" "" " ',"$ V $$ U $$ $ ","& &ZY&& &XW && & ",") ))))) )))\\[ )) ) ",". ....._^] ..... .. . ","1 11111111 11111 11 1 ","5 55555555 55555` 55 5 ","7 77777777 777777 77 7 ","9 99999999 999999 99 9 ",": c:::::::: ::::::b :: a: ","I fIIIIIIII IIIIIIe II I ","= ========= ======= == == ","? ????????? ??????? ?? ?? ","C CCCCCCCCC CCCCCCC CC CC ","J JJJJJJJJ JJJJJJ JJ J ","M MMMMMMMM MMMMMM MM M ","N NNNNNNNNN NNNNNNN NN N ","P PPPPPPPPP PPPPPPP PP P "," +*)(' ","R RRRRRRRRR RRRRRRR RR aR ","U UUUUUUUUU UUUUUUU UU U ","Z ZZZZZZZZZ ZZZZZZZ ZZ ZZ ","c ccccccccc ccccccc cc cc "," j ","L fLLLLLLLL LLLLLLe LL L ","6 66666666 66666 66 6 "," k "," l "," XXXXX ",` 1 0 /.-,+*)(' & %$m # "!`,"_ f________ ______e __ _ ",` 1 0 /.-,+*)(' & %$ # "!`,` 1 0 /.-,+*)(' & %$ # "!`,` 1 0 /.-,+*)(' & %$ # "!`,` 1 0 /.-,+*)(' & %$ # "!`,` 1 0 /.-,+*)(' & %$ # "!`,` 1 0 /.-,+*)(' & %$ # "!`,` 1 0 /.-,+*)(' & %$ # "!`,` 1 0 /.-,+*)(' & %$ # "!`,` 1 0 /.-,+*)(' & %$ # "!`,` 1 0 /.-,+*)(' & %$ # "!`,` 1 0 /.-,+*)(' & %$ # "!`,` 1 0 /.-,+*)(' & %$ # "!`,` 1 0 /.-,+*)(' & %$ # "!`,` 1 0 /.-,+*)(' %$ # "!`,` 1 0 /.-,+*)(' & %$ # "!`,` 1 . +*)(' # " `,` 1 . +*)(' # " `,"> >>>>>>>>> >>>>>>> >> >> ",` 1 . +*)(' # " `,` 1 . +*)(' # " `,"Q QQQQQQQQQ QQQQQQQ QQ aQ ","V VVVVVVVVV VVVVVVV VV aV ","T TTTTTTTTT TTTTTTT TT T ","@ @@@@@@@@@ @@@@@@@ @@ @@ "," \x87 ","[ [[[[[[[[[ [[[[[[[ [[ [[ ","D DDDDDDDDD DDDDDDD DD DD "," HH "," \x88 "," F\x89 ","# T# ## # ","% V %% U %% % ","' 'ZY'' 'XW '' ' ","( (ZY(( (XW (( ( ","+ +++++ +++\\[ ++ + ","* ***** ***\\[ ** * ","- ----- ---\\[ -- - ",", ,,,,, ,,,\\[ ,, , ","0 00000_^] 00000 00 0 ","/ /////_^] ///// // / ","2 22222222 22222 22 2 ","3 33333333 33333 33 3 ","4 44444444 44444 44 4 ","8 88888888 888888 88 8 "," ^ "," \x8A ","; f;;;;;;;; ;;;;;;e ;; ; ","< f<<<<<<<< <<<<<<e << < ","O OOOOOOOOO OOOOOOO OO O ","` ````````` ``````` `` ` ","S SSSSSSSSS SSSSSSS SS S ","W WWWWWWWWW WWWWWWW WW W ","\\ \\\\\\\\\\\\\\\\\\ \\\\\\\\\\\\\\ \\\\ \\\\ ","E EEEEEEEEE EEEEEEE EE EE ",` 1 0 /.-,+*)(' & %$ # "!`,"] ]]]]]]]]] ]]]]]]] ]] ]] "," G "],x.gotoTable=["3456789:;<=>?@ AB CDEFGH IJ "," "," "," ","L456789:;<=>?@ AB CDEFGH IJ "," M EFGH IJ "," N;<=>?@ AB CDEFGH IJ "," "," "," "," "," "," "," "," "," "," S EFGH IJ "," "," "," "," "," "," "," "," "," "," "," "," "," e "," "," "," "," "," "," "," "," "," h J "," i j "," "," "," "," "," "," "," "," "," ","o456789:;<=>?@ ABpqCDEFGH IJ "," "," r6789:;<=>?@ AB CDEFGH IJ "," s789:;<=>?@ AB CDEFGH IJ "," t89:;<=>?@ AB CDEFGH IJ "," u89:;<=>?@ AB CDEFGH IJ "," v9:;<=>?@ AB CDEFGH IJ "," w9:;<=>?@ AB CDEFGH IJ "," x9:;<=>?@ AB CDEFGH IJ "," y9:;<=>?@ AB CDEFGH IJ "," z:;<=>?@ AB CDEFGH IJ "," {:;<=>?@ AB CDEFGH IJ "," |;<=>?@ AB CDEFGH IJ "," };<=>?@ AB CDEFGH IJ "," ~;<=>?@ AB CDEFGH IJ "," \x7F=>?@ AB CDEFGH IJ ","\x80456789:;<=>?@ AB CDEFGH IJ\x81"," \x82 EFGH IJ "," \x83 EFGH IJ "," "," \x84 GH IJ "," \x85 GH IJ "," i \x86 "," i \x87 "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," ","o456789:;<=>?@ AB\x8CqCDEFGH IJ "," "," "],x.productions=[[1,1,2],[2,1,3],[3,1,4],[3,3,3,-9,4],[4,1,5],[4,3,4,-8,5],[5,1,6],[5,3,5,-22,6],[5,3,5,-5,6],[6,1,7],[6,3,6,-23,7],[6,3,6,-24,7],[6,3,6,-6,7],[6,3,6,-7,7],[7,1,8],[7,3,7,-25,8],[7,3,7,-26,8],[8,1,9],[8,3,8,-12,9],[8,3,8,-11,9],[8,3,8,-10,9],[9,1,10],[9,2,-26,9],[10,1,11],[10,3,10,-27,11],[11,1,12],[11,1,13],[11,3,13,-28,14],[11,3,13,-4,14],[13,1,15],[13,2,13,16],[15,1,17],[15,3,-29,2,-30],[15,1,-15],[15,1,-16],[15,1,18],[18,3,-13,-29,-30],[18,4,-13,-29,19,-30],[19,1,20],[19,3,20,-31,19],[20,1,2],[12,1,14],[12,1,21],[21,1,-28],[21,2,-28,14],[21,1,22],[14,1,23],[14,3,14,-28,23],[14,1,24],[23,2,25,26],[23,1,26],[23,3,25,26,27],[23,2,26,27],[23,1,28],[27,1,16],[27,2,16,27],[25,2,-14,-3],[25,1,-32],[26,1,29],[26,3,-20,-29,-30],[26,4,-21,-29,-15,-30],[16,3,-33,30,-34],[30,1,2],[22,2,-4,14],[24,3,14,-4,23],[28,1,-35],[28,1,-2],[17,2,-36,-18],[29,1,-17],[29,1,-19],[29,1,-18]],x.DOUBLEDOT=2,x.DOUBLECOLON=3,x.DOUBLESLASH=4,x.NOTEQUAL=5,x.LESSTHANOREQUAL=6,x.GREATERTHANOREQUAL=7,x.AND=8,x.OR=9,x.MOD=10,x.DIV=11,x.MULTIPLYOPERATOR=12,x.FUNCTIONNAME=13,x.AXISNAME=14,x.LITERAL=15,x.NUMBER=16,x.ASTERISKNAMETEST=17,x.QNAME=18,x.NCNAMECOLONASTERISK=19,x.NODETYPE=20,x.PROCESSINGINSTRUCTIONWITHLITERAL=21,x.EQUALS=22,x.LESSTHAN=23,x.GREATERTHAN=24,x.PLUS=25,x.MINUS=26,x.BAR=27,x.SLASH=28,x.LEFTPARENTHESIS=29,x.RIGHTPARENTHESIS=30,x.COMMA=31,x.AT=32,x.LEFTBRACKET=33,x.RIGHTBRACKET=34,x.DOT=35,x.DOLLAR=36,x.prototype.tokenize=function(A){for(var k=[],O=[],$=A+"\0",H=0,W=$.charAt(H++);;){for(;W==" "||W==" "||W=="\r"||W==` -`;)W=$.charAt(H++);if(W=="\0"||H>=$.length)break;if(W=="("){k.push(x.LEFTPARENTHESIS),O.push(W),W=$.charAt(H++);continue}if(W==")"){k.push(x.RIGHTPARENTHESIS),O.push(W),W=$.charAt(H++);continue}if(W=="["){k.push(x.LEFTBRACKET),O.push(W),W=$.charAt(H++);continue}if(W=="]"){k.push(x.RIGHTBRACKET),O.push(W),W=$.charAt(H++);continue}if(W=="@"){k.push(x.AT),O.push(W),W=$.charAt(H++);continue}if(W==","){k.push(x.COMMA),O.push(W),W=$.charAt(H++);continue}if(W=="|"){k.push(x.BAR),O.push(W),W=$.charAt(H++);continue}if(W=="+"){k.push(x.PLUS),O.push(W),W=$.charAt(H++);continue}if(W=="-"){k.push(x.MINUS),O.push(W),W=$.charAt(H++);continue}if(W=="="){k.push(x.EQUALS),O.push(W),W=$.charAt(H++);continue}if(W=="$"){k.push(x.DOLLAR),O.push(W),W=$.charAt(H++);continue}if(W=="."){if(W=$.charAt(H++),W=="."){k.push(x.DOUBLEDOT),O.push(".."),W=$.charAt(H++);continue}if(W>="0"&&W<="9"){var ue="."+W;for(W=$.charAt(H++);W>="0"&&W<="9";)ue+=W,W=$.charAt(H++);k.push(x.NUMBER),O.push(ue);continue}k.push(x.DOT),O.push(".");continue}if(W=="'"||W=='"'){for(var Re=W,Ye="";H<$.length&&(W=$.charAt(H))!==Re;)Ye+=W,H+=1;if(W!==Re)throw fi.fromMessage("Unterminated string literal: "+Re+Ye);H+=1,k.push(x.LITERAL),O.push(Ye),W=$.charAt(H++);continue}if(W>="0"&&W<="9"){var ue=W;for(W=$.charAt(H++);W>="0"&&W<="9";)ue+=W,W=$.charAt(H++);if(W=="."&&$.charAt(H)>="0"&&$.charAt(H)<="9")for(ue+=W,ue+=$.charAt(H++),W=$.charAt(H++);W>="0"&&W<="9";)ue+=W,W=$.charAt(H++);k.push(x.NUMBER),O.push(ue);continue}if(W=="*"){if(k.length>0){var Ie=k[k.length-1];if(Ie!=x.AT&&Ie!=x.DOUBLECOLON&&Ie!=x.LEFTPARENTHESIS&&Ie!=x.LEFTBRACKET&&Ie!=x.AND&&Ie!=x.OR&&Ie!=x.MOD&&Ie!=x.DIV&&Ie!=x.MULTIPLYOPERATOR&&Ie!=x.SLASH&&Ie!=x.DOUBLESLASH&&Ie!=x.BAR&&Ie!=x.PLUS&&Ie!=x.MINUS&&Ie!=x.EQUALS&&Ie!=x.NOTEQUAL&&Ie!=x.LESSTHAN&&Ie!=x.LESSTHANOREQUAL&&Ie!=x.GREATERTHAN&&Ie!=x.GREATERTHANOREQUAL){k.push(x.MULTIPLYOPERATOR),O.push(W),W=$.charAt(H++);continue}}k.push(x.ASTERISKNAMETEST),O.push(W),W=$.charAt(H++);continue}if(W==":"&&$.charAt(H)==":"){k.push(x.DOUBLECOLON),O.push("::"),H++,W=$.charAt(H++);continue}if(W=="/"){if(W=$.charAt(H++),W=="/"){k.push(x.DOUBLESLASH),O.push("//"),W=$.charAt(H++);continue}k.push(x.SLASH),O.push("/");continue}if(W=="!"&&$.charAt(H)=="="){k.push(x.NOTEQUAL),O.push("!="),H++,W=$.charAt(H++);continue}if(W=="<"){if($.charAt(H)=="="){k.push(x.LESSTHANOREQUAL),O.push("<="),H++,W=$.charAt(H++);continue}k.push(x.LESSTHAN),O.push("<"),W=$.charAt(H++);continue}if(W==">"){if($.charAt(H)=="="){k.push(x.GREATERTHANOREQUAL),O.push(">="),H++,W=$.charAt(H++);continue}k.push(x.GREATERTHAN),O.push(">"),W=$.charAt(H++);continue}if(W=="_"||be.isLetter(W.charCodeAt(0))){var Fe=W;for(W=$.charAt(H++);be.isNCNameChar(W.charCodeAt(0));)Fe+=W,W=$.charAt(H++);if(k.length>0){var Ie=k[k.length-1];if(Ie!=x.AT&&Ie!=x.DOUBLECOLON&&Ie!=x.LEFTPARENTHESIS&&Ie!=x.LEFTBRACKET&&Ie!=x.AND&&Ie!=x.OR&&Ie!=x.MOD&&Ie!=x.DIV&&Ie!=x.MULTIPLYOPERATOR&&Ie!=x.SLASH&&Ie!=x.DOUBLESLASH&&Ie!=x.BAR&&Ie!=x.PLUS&&Ie!=x.MINUS&&Ie!=x.EQUALS&&Ie!=x.NOTEQUAL&&Ie!=x.LESSTHAN&&Ie!=x.LESSTHANOREQUAL&&Ie!=x.GREATERTHAN&&Ie!=x.GREATERTHANOREQUAL){if(Fe=="and"){k.push(x.AND),O.push(Fe);continue}if(Fe=="or"){k.push(x.OR),O.push(Fe);continue}if(Fe=="mod"){k.push(x.MOD),O.push(Fe);continue}if(Fe=="div"){k.push(x.DIV),O.push(Fe);continue}}}if(W==":"){if($.charAt(H)=="*"){k.push(x.NCNAMECOLONASTERISK),O.push(Fe+":*"),H++,W=$.charAt(H++);continue}if($.charAt(H)=="_"||be.isLetter($.charCodeAt(H))){for(Fe+=":",W=$.charAt(H++);be.isNCNameChar(W.charCodeAt(0));)Fe+=W,W=$.charAt(H++);if(W=="("){k.push(x.FUNCTIONNAME),O.push(Fe);continue}k.push(x.QNAME),O.push(Fe);continue}if($.charAt(H)==":"){k.push(x.AXISNAME),O.push(Fe);continue}}if(W=="("){if(Fe=="comment"||Fe=="text"||Fe=="node"){k.push(x.NODETYPE),O.push(Fe);continue}if(Fe=="processing-instruction"){$.charAt(H)==")"?k.push(x.NODETYPE):k.push(x.PROCESSINGINSTRUCTIONWITHLITERAL),O.push(Fe);continue}k.push(x.FUNCTIONNAME),O.push(Fe);continue}k.push(x.QNAME),O.push(Fe);continue}throw new Error("Unexpected character "+W)}return k.push(1),O.push("[EOF]"),[k,O]},x.SHIFT="s",x.REDUCE="r",x.ACCEPT="a",x.prototype.parse=function(Ye){if(!Ye)throw new Error("XPath expression unspecified.");if(typeof Ye!="string")throw new Error("XPath expression must be a string.");var k,O,$=this.tokenize(Ye);if($!=null){k=$[0],O=$[1];var H=0,W=[],ue=[],Re=[],Ye,Ie,Fe;for(W.push(0),ue.push(1),Re.push("_S"),Ie=k[H],Fe=O[H++];;)switch(Ye=W[W.length-1],x.actionTable[Ye].charAt(Ie-1)){case x.SHIFT:ue.push(-Ie),Re.push(Fe),W.push(x.actionTableNumber[Ye].charCodeAt(Ie-1)-32),Ie=k[H],Fe=O[H++];break;case x.REDUCE:for(var pn=x.productions[x.actionTableNumber[Ye].charCodeAt(Ie-1)-32][1],Es=[],Bs=0;Bs<pn;Bs++)ue.pop(),Es.unshift(Re.pop()),W.pop();var bs=W[W.length-1];ue.push(x.productions[x.actionTableNumber[Ye].charCodeAt(Ie-1)-32][0]),this.reduceActions[x.actionTableNumber[Ye].charCodeAt(Ie-1)-32]==null?Re.push(Es[0]):Re.push(this.reduceActions[x.actionTableNumber[Ye].charCodeAt(Ie-1)-32](Es)),W.push(x.gotoTable[bs].charCodeAt(x.productions[x.actionTableNumber[Ye].charCodeAt(Ie-1)-32][0]-2)-33);break;case x.ACCEPT:return new _(Re.pop());default:throw new Error("XPath parse error")}}},_.prototype=new Object,_.prototype.constructor=_,_.superclass=Object.prototype;function _(A){this.expression=A}_.prototype.toString=function(){return this.expression.toString()};function R(A,k,O){k in A||(A[k]=O)}_.prototype.evaluate=function(A){var k=A.expressionContextNode;if(!(t(k)||n(k)))throw new Error("Context node does not appear to be a valid DOM node.");return A.contextNode=A.expressionContextNode,A.contextSize=1,A.contextPosition=1,A.isHtml&&(R(A,"caseInsensitive",!0),R(A,"allowAnyNamespaceForNoPrefix",!0)),R(A,"caseInsensitive",!1),this.expression.evaluate(A)},_.XML_NAMESPACE_URI="http://www.w3.org/XML/1998/namespace",_.XMLNS_NAMESPACE_URI="http://www.w3.org/2000/xmlns/",U.prototype=new Object,U.prototype.constructor=U,U.superclass=Object.prototype;function U(){}U.prototype.init=function(){},U.prototype.toString=function(){return"<Expression>"},U.prototype.evaluate=function(A){throw new Error("Could not evaluate expression.")},T.prototype=new U,T.prototype.constructor=T,T.superclass=U.prototype;function T(A){arguments.length>0&&this.init(A)}T.prototype.init=function(A){this.rhs=A},D.prototype=new T,D.prototype.constructor=D,D.superclass=T.prototype;function D(A){arguments.length>0&&this.init(A)}D.prototype.init=function(A){D.superclass.init.call(this,A)},D.prototype.evaluate=function(A){return this.rhs.evaluate(A).number().negate()},D.prototype.toString=function(){return"-"+this.rhs.toString()},B.prototype=new U,B.prototype.constructor=B,B.superclass=U.prototype;function B(A,k){arguments.length>0&&this.init(A,k)}B.prototype.init=function(A,k){this.lhs=A,this.rhs=k},Q.prototype=new B,Q.prototype.constructor=Q,Q.superclass=B.prototype;function Q(A,k){arguments.length>0&&this.init(A,k)}Q.prototype.init=function(A,k){Q.superclass.init.call(this,A,k)},Q.prototype.toString=function(){return"("+this.lhs.toString()+" or "+this.rhs.toString()+")"},Q.prototype.evaluate=function(A){var k=this.lhs.evaluate(A).bool();return k.booleanValue()?k:this.rhs.evaluate(A).bool()},v.prototype=new B,v.prototype.constructor=v,v.superclass=B.prototype;function v(A,k){arguments.length>0&&this.init(A,k)}v.prototype.init=function(A,k){v.superclass.init.call(this,A,k)},v.prototype.toString=function(){return"("+this.lhs.toString()+" and "+this.rhs.toString()+")"},v.prototype.evaluate=function(A){var k=this.lhs.evaluate(A).bool();return k.booleanValue()?this.rhs.evaluate(A).bool():k},E.prototype=new B,E.prototype.constructor=E,E.superclass=B.prototype;function E(A,k){arguments.length>0&&this.init(A,k)}E.prototype.init=function(A,k){E.superclass.init.call(this,A,k)},E.prototype.toString=function(){return"("+this.lhs.toString()+" = "+this.rhs.toString()+")"},E.prototype.evaluate=function(A){return this.lhs.evaluate(A).equals(this.rhs.evaluate(A))},P.prototype=new B,P.prototype.constructor=P,P.superclass=B.prototype;function P(A,k){arguments.length>0&&this.init(A,k)}P.prototype.init=function(A,k){P.superclass.init.call(this,A,k)},P.prototype.toString=function(){return"("+this.lhs.toString()+" != "+this.rhs.toString()+")"},P.prototype.evaluate=function(A){return this.lhs.evaluate(A).notequal(this.rhs.evaluate(A))},N.prototype=new B,N.prototype.constructor=N,N.superclass=B.prototype;function N(A,k){arguments.length>0&&this.init(A,k)}N.prototype.init=function(A,k){N.superclass.init.call(this,A,k)},N.prototype.evaluate=function(A){return this.lhs.evaluate(A).lessthan(this.rhs.evaluate(A))},N.prototype.toString=function(){return"("+this.lhs.toString()+" < "+this.rhs.toString()+")"},J.prototype=new B,J.prototype.constructor=J,J.superclass=B.prototype;function J(A,k){arguments.length>0&&this.init(A,k)}J.prototype.init=function(A,k){J.superclass.init.call(this,A,k)},J.prototype.evaluate=function(A){return this.lhs.evaluate(A).greaterthan(this.rhs.evaluate(A))},J.prototype.toString=function(){return"("+this.lhs.toString()+" > "+this.rhs.toString()+")"},z.prototype=new B,z.prototype.constructor=z,z.superclass=B.prototype;function z(A,k){arguments.length>0&&this.init(A,k)}z.prototype.init=function(A,k){z.superclass.init.call(this,A,k)},z.prototype.evaluate=function(A){return this.lhs.evaluate(A).lessthanorequal(this.rhs.evaluate(A))},z.prototype.toString=function(){return"("+this.lhs.toString()+" <= "+this.rhs.toString()+")"},L.prototype=new B,L.prototype.constructor=L,L.superclass=B.prototype;function L(A,k){arguments.length>0&&this.init(A,k)}L.prototype.init=function(A,k){L.superclass.init.call(this,A,k)},L.prototype.evaluate=function(A){return this.lhs.evaluate(A).greaterthanorequal(this.rhs.evaluate(A))},L.prototype.toString=function(){return"("+this.lhs.toString()+" >= "+this.rhs.toString()+")"},G.prototype=new B,G.prototype.constructor=G,G.superclass=B.prototype;function G(A,k){arguments.length>0&&this.init(A,k)}G.prototype.init=function(A,k){G.superclass.init.call(this,A,k)},G.prototype.evaluate=function(A){return this.lhs.evaluate(A).number().plus(this.rhs.evaluate(A).number())},G.prototype.toString=function(){return"("+this.lhs.toString()+" + "+this.rhs.toString()+")"},K.prototype=new B,K.prototype.constructor=K,K.superclass=B.prototype;function K(A,k){arguments.length>0&&this.init(A,k)}K.prototype.init=function(A,k){K.superclass.init.call(this,A,k)},K.prototype.evaluate=function(A){return this.lhs.evaluate(A).number().minus(this.rhs.evaluate(A).number())},K.prototype.toString=function(){return"("+this.lhs.toString()+" - "+this.rhs.toString()+")"},j.prototype=new B,j.prototype.constructor=j,j.superclass=B.prototype;function j(A,k){arguments.length>0&&this.init(A,k)}j.prototype.init=function(A,k){j.superclass.init.call(this,A,k)},j.prototype.evaluate=function(A){return this.lhs.evaluate(A).number().multiply(this.rhs.evaluate(A).number())},j.prototype.toString=function(){return"("+this.lhs.toString()+" * "+this.rhs.toString()+")"},te.prototype=new B,te.prototype.constructor=te,te.superclass=B.prototype;function te(A,k){arguments.length>0&&this.init(A,k)}te.prototype.init=function(A,k){te.superclass.init.call(this,A,k)},te.prototype.evaluate=function(A){return this.lhs.evaluate(A).number().div(this.rhs.evaluate(A).number())},te.prototype.toString=function(){return"("+this.lhs.toString()+" div "+this.rhs.toString()+")"},re.prototype=new B,re.prototype.constructor=re,re.superclass=B.prototype;function re(A,k){arguments.length>0&&this.init(A,k)}re.prototype.init=function(A,k){re.superclass.init.call(this,A,k)},re.prototype.evaluate=function(A){return this.lhs.evaluate(A).number().mod(this.rhs.evaluate(A).number())},re.prototype.toString=function(){return"("+this.lhs.toString()+" mod "+this.rhs.toString()+")"},ee.prototype=new B,ee.prototype.constructor=ee,ee.superclass=B.prototype;function ee(A,k){arguments.length>0&&this.init(A,k)}ee.prototype.init=function(A,k){ee.superclass.init.call(this,A,k)},ee.prototype.evaluate=function(A){return this.lhs.evaluate(A).nodeset().union(this.rhs.evaluate(A).nodeset())},ee.prototype.toString=function(){return c(f,[this.lhs,this.rhs]).join(" | ")},Z.prototype=new U,Z.prototype.constructor=Z,Z.superclass=U.prototype;function Z(A,k,O){arguments.length>0&&this.init(A,k,O)}Z.prototype.init=function(A,k,O){Z.superclass.init.call(this),this.filter=A,this.filterPredicates=k,this.locationPath=O};function me(A){for(;A&&A.parentNode;)A=A.parentNode;return A}var le=function(A,k,O,$){if(A.length===0)return O;var H=k.extend({});return a(function(W,ue){return H.contextSize=W.length,l(function(Re,Ye){return H.contextNode=Re,H.contextPosition=Ye+1,Z.predicateMatches(ue,H)},W)},I(O,$),A)};Z.getRoot=function(A,k){var O=k[0];if(O&&O.nodeType===b.DOCUMENT_NODE)return O;if(A.virtualRoot)return A.virtualRoot;if(!O)throw new Error("Context node not found when determining document root.");var $=O.ownerDocument;if($)return $;for(var H=O;H.parentNode!=null;)H=H.parentNode;return H};var Ae=function(A){var k=String(A.name);return k==="xmlns"?"":k.substring(0,6)==="xmlns:"?k.substring(6,k.length):null};Z.applyStep=function(A,k,O){if(!O)throw new Error("Context node not found when evaluating XPath step: "+A);var $=[];switch(k.contextNode=O,A.axis){case se.ANCESTOR:if(k.contextNode===k.virtualRoot)break;var H;for(k.contextNode.nodeType==b.ATTRIBUTE_NODE?H=Z.getOwnerElement(k.contextNode):H=k.contextNode.parentNode;H!=null&&(A.nodeTest.matches(H,k)&&$.push(H),H!==k.virtualRoot);)H=H.parentNode;break;case se.ANCESTORORSELF:for(var H=k.contextNode;H!=null&&(A.nodeTest.matches(H,k)&&$.push(H),H!==k.virtualRoot);H=H.nodeType==b.ATTRIBUTE_NODE?Z.getOwnerElement(H):H.parentNode);break;case se.ATTRIBUTE:var W=k.contextNode.attributes;if(W!=null)for(var ue=0;ue<W.length;ue++){var H=W.item(ue);A.nodeTest.matches(H,k)&&$.push(H)}break;case se.CHILD:for(var H=k.contextNode.firstChild;H!=null;H=H.nextSibling)A.nodeTest.matches(H,k)&&$.push(H);break;case se.DESCENDANT:for(var Fe=[k.contextNode.firstChild];Fe.length>0;)for(var H=Fe.pop();H!=null;)A.nodeTest.matches(H,k)&&$.push(H),H.firstChild!=null?(Fe.push(H.nextSibling),H=H.firstChild):H=H.nextSibling;break;case se.DESCENDANTORSELF:A.nodeTest.matches(k.contextNode,k)&&$.push(k.contextNode);for(var Fe=[k.contextNode.firstChild];Fe.length>0;)for(var H=Fe.pop();H!=null;)A.nodeTest.matches(H,k)&&$.push(H),H.firstChild!=null?(Fe.push(H.nextSibling),H=H.firstChild):H=H.nextSibling;break;case se.FOLLOWING:if(k.contextNode===k.virtualRoot)break;var Fe=[];k.contextNode.firstChild!=null?Fe.unshift(k.contextNode.firstChild):Fe.unshift(k.contextNode.nextSibling);for(var H=k.contextNode.parentNode;H!=null&&H.nodeType!=b.DOCUMENT_NODE&&H!==k.virtualRoot;H=H.parentNode)Fe.unshift(H.nextSibling);do for(var H=Fe.pop();H!=null;)A.nodeTest.matches(H,k)&&$.push(H),H.firstChild!=null?(Fe.push(H.nextSibling),H=H.firstChild):H=H.nextSibling;while(Fe.length>0);break;case se.FOLLOWINGSIBLING:if(k.contextNode===k.virtualRoot)break;for(var H=k.contextNode.nextSibling;H!=null;H=H.nextSibling)A.nodeTest.matches(H,k)&&$.push(H);break;case se.NAMESPACE:var Re={};if(k.contextNode.nodeType==b.ELEMENT_NODE){Re.xml=new Gi("xml",null,_.XML_NAMESPACE_URI,k.contextNode);for(var H=k.contextNode;H!=null&&H.nodeType==b.ELEMENT_NODE;H=H.parentNode)for(var ue=0;ue<H.attributes.length;ue++){var Ye=H.attributes.item(ue),Ie=Ae(Ye);Ie!=null&&Re[Ie]==null&&(Re[Ie]=new Gi(Ie,Ye,Ye.value,k.contextNode))}for(var Ie in Re){var O=Re[Ie];A.nodeTest.matches(O,k)&&$.push(O)}}break;case se.PARENT:H=null,k.contextNode!==k.virtualRoot&&(k.contextNode.nodeType==b.ATTRIBUTE_NODE?H=Z.getOwnerElement(k.contextNode):H=k.contextNode.parentNode),H!=null&&A.nodeTest.matches(H,k)&&$.push(H);break;case se.PRECEDING:var Fe;k.virtualRoot!=null?Fe=[k.virtualRoot]:Fe=[me(k.contextNode)];e:for(;Fe.length>0;)for(var H=Fe.pop();H!=null;){if(H==k.contextNode)break e;A.nodeTest.matches(H,k)&&$.unshift(H),H.firstChild!=null?(Fe.push(H.nextSibling),H=H.firstChild):H=H.nextSibling}break;case se.PRECEDINGSIBLING:if(k.contextNode===k.virtualRoot)break;for(var H=k.contextNode.previousSibling;H!=null;H=H.previousSibling)A.nodeTest.matches(H,k)&&$.push(H);break;case se.SELF:A.nodeTest.matches(k.contextNode,k)&&$.push(k.contextNode);break;default:}return $};function ve(A,k,O){return le(A.predicates,k,Z.applyStep(A,k,O),d(it,A.axis))}function qe(A,k,O){return w(c(ve.bind(null,O,A),k))}Z.applySteps=function(A,k,O){return a(qe.bind(null,k),O,A)},Z.prototype.applyFilter=function(A,k){if(!this.filter)return{nodes:[A.contextNode]};var O=this.filter.evaluate(A);if(!be.instance_of(O,Ce)){if(this.filterPredicates!=null&&this.filterPredicates.length>0||this.locationPath!=null)throw new Error("Path expression filter must evaluate to a nodeset if predicates or location path are used");return{nonNodes:O}}return{nodes:le(this.filterPredicates||[],k,O.toUnsortedArray(),!1)}},Z.applyLocationPath=function(A,k,O){if(!A)return O;var $=A.absolute?[Z.getRoot(k,O)]:O;return Z.applySteps(A.steps,k,$)},Z.prototype.evaluate=function(A){var k=C(new ri,A),O=this.applyFilter(A,k);if("nonNodes"in O)return O.nonNodes;var $=new Ce;return $.addArray(Z.applyLocationPath(this.locationPath,k,O.nodes)),$},Z.predicateMatches=function(A,k){var O=A.evaluate(k);return be.instance_of(O,Ee)?k.contextPosition===O.numberValue():O.booleanValue()},Z.predicateString=function(A){return g("[","]",A.toString())},Z.predicatesString=function(A){return h("",c(Z.predicateString,A))},Z.prototype.toString=function(){if(this.filter!=null){var A=f(this.filter);return be.instance_of(this.filter,we)?g("'","'",A):this.filterPredicates!=null&&this.filterPredicates.length?g("(",")",A)+Z.predicatesString(this.filterPredicates):this.locationPath!=null?A+(this.locationPath.absolute?"":"/")+f(this.locationPath):A}return f(this.locationPath)},Z.getOwnerElement=function(A){if(A.ownerElement)return A.ownerElement;try{if(A.selectSingleNode)return A.selectSingleNode("..")}catch{}for(var k=A.nodeType==b.DOCUMENT_NODE?A:A.ownerDocument,O=k.getElementsByTagName("*"),$=0;$<O.length;$++)for(var H=O.item($),W=H.attributes,ue=0;ue<W.length;ue++){var Re=W.item(ue);if(Re===A)return H}return null},_e.prototype=new Object,_e.prototype.constructor=_e,_e.superclass=Object.prototype;function _e(A,k){arguments.length>0&&this.init(A,k)}_e.prototype.init=function(A,k){this.absolute=A,this.steps=k},_e.prototype.toString=function(){return(this.absolute?"/":"")+c(f,this.steps).join("/")},se.prototype=new Object,se.prototype.constructor=se,se.superclass=Object.prototype;function se(A,k,O){arguments.length>0&&this.init(A,k,O)}se.prototype.init=function(A,k,O){this.axis=A,this.nodeTest=k,this.predicates=O},se.prototype.toString=function(){return se.STEPNAMES[this.axis]+"::"+this.nodeTest.toString()+Z.predicatesString(this.predicates)},se.ANCESTOR=0,se.ANCESTORORSELF=1,se.ATTRIBUTE=2,se.CHILD=3,se.DESCENDANT=4,se.DESCENDANTORSELF=5,se.FOLLOWING=6,se.FOLLOWINGSIBLING=7,se.NAMESPACE=8,se.PARENT=9,se.PRECEDING=10,se.PRECEDINGSIBLING=11,se.SELF=12,se.STEPNAMES=a(function(A,k){return A[k[0]]=k[1],A},{},[[se.ANCESTOR,"ancestor"],[se.ANCESTORORSELF,"ancestor-or-self"],[se.ATTRIBUTE,"attribute"],[se.CHILD,"child"],[se.DESCENDANT,"descendant"],[se.DESCENDANTORSELF,"descendant-or-self"],[se.FOLLOWING,"following"],[se.FOLLOWINGSIBLING,"following-sibling"],[se.NAMESPACE,"namespace"],[se.PARENT,"parent"],[se.PRECEDING,"preceding"],[se.PRECEDINGSIBLING,"preceding-sibling"],[se.SELF,"self"]]);var it=[se.ANCESTOR,se.ANCESTORORSELF,se.PARENT,se.PRECEDING,se.PRECEDINGSIBLING];ce.prototype=new Object,ce.prototype.constructor=ce,ce.superclass=Object.prototype;function ce(A,k){arguments.length>0&&this.init(A,k)}ce.prototype.init=function(A,k){this.type=A,this.value=k},ce.prototype.toString=function(){return"<unknown nodetest type>"},ce.prototype.matches=function(A,k){console.warn("unknown node test type")},ce.NAMETESTANY=0,ce.NAMETESTPREFIXANY=1,ce.NAMETESTQNAME=2,ce.COMMENT=3,ce.TEXT=4,ce.PI=5,ce.NODE=6,ce.isNodeType=function(A){return function(k){return d(A,k.nodeType)}},ce.makeNodeTestType=function(A,k,O){var $=O||function(){};return $.prototype=new ce(A),$.prototype.constructor=$,C($.prototype,k),$},ce.makeNodeTypeTest=function(A,k,O){return new(ce.makeNodeTestType(A,{matches:ce.isNodeType(k),toString:u(O)}))},ce.hasPrefix=function(A){return A.prefix||(A.nodeName||A.tagName).indexOf(":")!==-1},ce.isElementOrAttribute=ce.isNodeType([1,2]),ce.nameSpaceMatches=function(A,k,O){var $=O.namespaceURI||"";if(!A)return!$||k.allowAnyNamespaceForNoPrefix&&!ce.hasPrefix(O);var H=k.namespaceResolver.getNamespace(A,k.expressionContextNode);if(H==null)throw new Error("Cannot resolve QName "+A);return H===$},ce.localNameMatches=function(A,k,O){var $=O.localName||O.nodeName;return k.caseInsensitive?A.toLowerCase()===$.toLowerCase():A===$},ce.NameTestPrefixAny=ce.makeNodeTestType(ce.NAMETESTPREFIXANY,{matches:function(A,k){return ce.isElementOrAttribute(A)&&ce.nameSpaceMatches(this.prefix,k,A)},toString:function(){return this.prefix+":*"}},function(k){this.prefix=k}),ce.NameTestQName=ce.makeNodeTestType(ce.NAMETESTQNAME,{matches:function(A,k){return ce.isNodeType([b.ELEMENT_NODE,b.ATTRIBUTE_NODE,b.NAMESPACE_NODE])(A)&&ce.nameSpaceMatches(this.prefix,k,A)&&ce.localNameMatches(this.localName,k,A)},toString:function(){return this.name}},function(k){var O=k.split(":");this.name=k,this.prefix=O.length>1?O[0]:null,this.localName=O[O.length>1?1:0]}),ce.PITest=ce.makeNodeTestType(ce.PI,{matches:function(A,k){return ce.isNodeType([b.PROCESSING_INSTRUCTION_NODE])(A)&&(A.target||A.nodeName)===this.name},toString:function(){return g('processing-instruction("','")',this.name)}},function(A){this.name=A}),ce.nameTestAny=ce.makeNodeTypeTest(ce.NAMETESTANY,[b.ELEMENT_NODE,b.ATTRIBUTE_NODE,b.NAMESPACE_NODE],"*"),ce.textTest=ce.makeNodeTypeTest(ce.TEXT,[b.TEXT_NODE,b.CDATA_SECTION_NODE],"text()"),ce.commentTest=ce.makeNodeTypeTest(ce.COMMENT,[b.COMMENT_NODE],"comment()"),ce.nodeTest=ce.makeNodeTypeTest(ce.NODE,[b.ELEMENT_NODE,b.ATTRIBUTE_NODE,b.TEXT_NODE,b.CDATA_SECTION_NODE,b.PROCESSING_INSTRUCTION_NODE,b.COMMENT_NODE,b.DOCUMENT_NODE],"node()"),ce.anyPiTest=ce.makeNodeTypeTest(ce.PI,[b.PROCESSING_INSTRUCTION_NODE],"processing-instruction()"),dr.prototype=new U,dr.prototype.constructor=dr,dr.superclass=U.prototype;function dr(A){arguments.length>0&&this.init(A)}dr.prototype.init=function(A){this.variable=A},dr.prototype.toString=function(){return"$"+this.variable},dr.prototype.evaluate=function(A){var k=be.resolveQName(this.variable,A.namespaceResolver,A.contextNode,!1);if(k[0]==null)throw new Error("Cannot resolve QName "+fn);var O=A.variableResolver.getVariable(k[1],k[0]);if(!O)throw fi.fromMessage("Undeclared variable: "+this.toString());return O},qr.prototype=new U,qr.prototype.constructor=qr,qr.superclass=U.prototype;function qr(A,k){arguments.length>0&&this.init(A,k)}qr.prototype.init=function(A,k){this.functionName=A,this.arguments=k},qr.prototype.toString=function(){for(var A=this.functionName+"(",k=0;k<this.arguments.length;k++)k>0&&(A+=", "),A+=this.arguments[k].toString();return A+")"},qr.prototype.evaluate=function(A){var k=tr.getFunctionFromContext(this.functionName,A);if(!k)throw new Error("Unknown function "+this.functionName);var O=[A].concat(this.arguments);return k.apply(A.functionResolver.thisArg,O)};var ct=new Object;ct.equals=function(A,k){return A.equals(k)},ct.notequal=function(A,k){return A.notequal(k)},ct.lessthan=function(A,k){return A.lessthan(k)},ct.greaterthan=function(A,k){return A.greaterthan(k)},ct.lessthanorequal=function(A,k){return A.lessthanorequal(k)},ct.greaterthanorequal=function(A,k){return A.greaterthanorequal(k)},we.prototype=new U,we.prototype.constructor=we,we.superclass=U.prototype;function we(A){arguments.length>0&&this.init(A)}we.prototype.init=function(A){this.str=String(A)},we.prototype.toString=function(){return this.str},we.prototype.evaluate=function(A){return this},we.prototype.string=function(){return this},we.prototype.number=function(){return new Ee(this.str)},we.prototype.bool=function(){return new Se(this.str)},we.prototype.nodeset=function(){throw new Error("Cannot convert string to nodeset")},we.prototype.stringValue=function(){return this.str},we.prototype.numberValue=function(){return this.number().numberValue()},we.prototype.booleanValue=function(){return this.bool().booleanValue()},we.prototype.equals=function(A){return be.instance_of(A,Se)?this.bool().equals(A):be.instance_of(A,Ee)?this.number().equals(A):be.instance_of(A,Ce)?A.compareWithString(this,ct.equals):new Se(this.str==A.str)},we.prototype.notequal=function(A){return be.instance_of(A,Se)?this.bool().notequal(A):be.instance_of(A,Ee)?this.number().notequal(A):be.instance_of(A,Ce)?A.compareWithString(this,ct.notequal):new Se(this.str!=A.str)},we.prototype.lessthan=function(A){return this.number().lessthan(A)},we.prototype.greaterthan=function(A){return this.number().greaterthan(A)},we.prototype.lessthanorequal=function(A){return this.number().lessthanorequal(A)},we.prototype.greaterthanorequal=function(A){return this.number().greaterthanorequal(A)},Ee.prototype=new U,Ee.prototype.constructor=Ee,Ee.superclass=U.prototype;function Ee(A){arguments.length>0&&this.init(A)}Ee.prototype.init=function(A){this.num=typeof A=="string"?this.parse(A):Number(A)},Ee.prototype.numberFormat=/^\s*-?[0-9]*\.?[0-9]+\s*$/,Ee.prototype.parse=function(A){return this.numberFormat.test(A)?parseFloat(A):Number.NaN};function Ki(A){for(var k=A.split("e-"),O=k[0].replace(".",""),$=Number(k[1]),H=0;H<$-1;H+=1)O="0"+O;return"0."+O}function wo(A){for(var k=A.split("e"),O=k[0].replace(".",""),$=Number(k[1]),H=$+1-O.length,W=0;W<H;W+=1)O+="0";return O}Ee.prototype.toString=function(){var A=this.num.toString();return A.indexOf("e-")!==-1?Ki(A):A.indexOf("e")!==-1?wo(A):A},Ee.prototype.evaluate=function(A){return this},Ee.prototype.string=function(){return new we(this.toString())},Ee.prototype.number=function(){return this},Ee.prototype.bool=function(){return new Se(this.num)},Ee.prototype.nodeset=function(){throw new Error("Cannot convert number to nodeset")},Ee.prototype.stringValue=function(){return this.string().stringValue()},Ee.prototype.numberValue=function(){return this.num},Ee.prototype.booleanValue=function(){return this.bool().booleanValue()},Ee.prototype.negate=function(){return new Ee(-this.num)},Ee.prototype.equals=function(A){return be.instance_of(A,Se)?this.bool().equals(A):be.instance_of(A,we)?this.equals(A.number()):be.instance_of(A,Ce)?A.compareWithNumber(this,ct.equals):new Se(this.num==A.num)},Ee.prototype.notequal=function(A){return be.instance_of(A,Se)?this.bool().notequal(A):be.instance_of(A,we)?this.notequal(A.number()):be.instance_of(A,Ce)?A.compareWithNumber(this,ct.notequal):new Se(this.num!=A.num)},Ee.prototype.lessthan=function(A){return be.instance_of(A,Ce)?A.compareWithNumber(this,ct.greaterthan):be.instance_of(A,Se)||be.instance_of(A,we)?this.lessthan(A.number()):new Se(this.num<A.num)},Ee.prototype.greaterthan=function(A){return be.instance_of(A,Ce)?A.compareWithNumber(this,ct.lessthan):be.instance_of(A,Se)||be.instance_of(A,we)?this.greaterthan(A.number()):new Se(this.num>A.num)},Ee.prototype.lessthanorequal=function(A){return be.instance_of(A,Ce)?A.compareWithNumber(this,ct.greaterthanorequal):be.instance_of(A,Se)||be.instance_of(A,we)?this.lessthanorequal(A.number()):new Se(this.num<=A.num)},Ee.prototype.greaterthanorequal=function(A){return be.instance_of(A,Ce)?A.compareWithNumber(this,ct.lessthanorequal):be.instance_of(A,Se)||be.instance_of(A,we)?this.greaterthanorequal(A.number()):new Se(this.num>=A.num)},Ee.prototype.plus=function(A){return new Ee(this.num+A.num)},Ee.prototype.minus=function(A){return new Ee(this.num-A.num)},Ee.prototype.multiply=function(A){return new Ee(this.num*A.num)},Ee.prototype.div=function(A){return new Ee(this.num/A.num)},Ee.prototype.mod=function(A){return new Ee(this.num%A.num)},Se.prototype=new U,Se.prototype.constructor=Se,Se.superclass=U.prototype;function Se(A){arguments.length>0&&this.init(A)}Se.prototype.init=function(A){this.b=!!A},Se.prototype.toString=function(){return this.b.toString()},Se.prototype.evaluate=function(A){return this},Se.prototype.string=function(){return new we(this.b)},Se.prototype.number=function(){return new Ee(this.b)},Se.prototype.bool=function(){return this},Se.prototype.nodeset=function(){throw new Error("Cannot convert boolean to nodeset")},Se.prototype.stringValue=function(){return this.string().stringValue()},Se.prototype.numberValue=function(){return this.number().numberValue()},Se.prototype.booleanValue=function(){return this.b},Se.prototype.not=function(){return new Se(!this.b)},Se.prototype.equals=function(A){return be.instance_of(A,we)||be.instance_of(A,Ee)?this.equals(A.bool()):be.instance_of(A,Ce)?A.compareWithBoolean(this,ct.equals):new Se(this.b==A.b)},Se.prototype.notequal=function(A){return be.instance_of(A,we)||be.instance_of(A,Ee)?this.notequal(A.bool()):be.instance_of(A,Ce)?A.compareWithBoolean(this,ct.notequal):new Se(this.b!=A.b)},Se.prototype.lessthan=function(A){return this.number().lessthan(A)},Se.prototype.greaterthan=function(A){return this.number().greaterthan(A)},Se.prototype.lessthanorequal=function(A){return this.number().lessthanorequal(A)},Se.prototype.greaterthanorequal=function(A){return this.number().greaterthanorequal(A)},Se.true_=new Se(!0),Se.false_=new Se(!1),Dt.prototype=new Object,Dt.prototype.constructor=Dt,Dt.superclass=Object.prototype;function Dt(A){this.init(A)}Dt.prototype.init=function(A){this.left=null,this.right=null,this.node=A,this.depth=1},Dt.prototype.balance=function(){var A=this.left==null?0:this.left.depth,k=this.right==null?0:this.right.depth;if(A>k+1){var O=this.left.left==null?0:this.left.left.depth,$=this.left.right==null?0:this.left.right.depth;O<$&&this.left.rotateRR(),this.rotateLL()}else if(A+1<k){var H=this.right.right==null?0:this.right.right.depth,W=this.right.left==null?0:this.right.left.depth;W>H&&this.right.rotateLL(),this.rotateRR()}},Dt.prototype.rotateLL=function(){var A=this.node,k=this.right;this.node=this.left.node,this.right=this.left,this.left=this.left.left,this.right.left=this.right.right,this.right.right=k,this.right.node=A,this.right.updateInNewLocation(),this.updateInNewLocation()},Dt.prototype.rotateRR=function(){var A=this.node,k=this.left;this.node=this.right.node,this.left=this.right,this.right=this.right.right,this.left.right=this.left.left,this.left.left=k,this.left.node=A,this.left.updateInNewLocation(),this.updateInNewLocation()},Dt.prototype.updateInNewLocation=function(){this.getDepthFromChildren()},Dt.prototype.getDepthFromChildren=function(){this.depth=this.node==null?0:1,this.left!=null&&(this.depth=this.left.depth+1),this.right!=null&&this.depth<=this.right.depth&&(this.depth=this.right.depth+1)};function Cs(A,k){if(A===k)return 0;if(A.compareDocumentPosition){var O=A.compareDocumentPosition(k);return O&1||O&10?1:O&20?-1:0}for(var $=0,H=0,W=A;W!=null;W=W.parentNode||W.ownerElement)$++;for(var ue=k;ue!=null;ue=ue.parentNode||ue.ownerElement)H++;if($>H){for(;$>H;)A=A.parentNode||A.ownerElement,$--;if(A===k)return 1}else if(H>$){for(;H>$;)k=k.parentNode||k.ownerElement,H--;if(A===k)return-1}for(var Re=A.parentNode||A.ownerElement,Ye=k.parentNode||k.ownerElement;Re!==Ye;)A=Re,k=Ye,Re=A.parentNode||A.ownerElement,Ye=k.parentNode||k.ownerElement;var Ie=cl(A),Fe=cl(k);if(Ie&&!Fe)return-1;if(!Ie&&Fe)return 1;if(A.isXPathNamespace){if(A.nodeValue===_.XML_NAMESPACE_URI||!k.isXPathNamespace)return-1;if(k.nodeValue===_.XML_NAMESPACE_URI)return 1}else if(k.isXPathNamespace)return 1;if(Re)for(var pn=Ie?Re.attributes:Re.childNodes,Es=pn.length,Bs=A.baseNode||A,bs=k.baseNode||k,Ji=0;Ji<Es;Ji+=1){var Nn=pn[Ji];if(Nn===Bs)return-1;if(Nn===bs)return 1}throw new Error("Unexpected: could not determine node order")}Dt.prototype.add=function(A){if(A===this.node)return!1;var k=Cs(A,this.node),O=!1;return k==-1?this.left==null?(this.left=new Dt(A),O=!0):(O=this.left.add(A),O&&this.balance()):k==1&&(this.right==null?(this.right=new Dt(A),O=!0):(O=this.right.add(A),O&&this.balance())),O&&this.getDepthFromChildren(),O},Ce.prototype=new U,Ce.prototype.constructor=Ce,Ce.superclass=U.prototype;function Ce(){this.init()}Ce.prototype.init=function(){this.tree=null,this.nodes=[],this.size=0},Ce.prototype.toString=function(){var A=this.first();return A==null?"":this.stringForNode(A)},Ce.prototype.evaluate=function(A){return this},Ce.prototype.string=function(){return new we(this.toString())},Ce.prototype.stringValue=function(){return this.toString()},Ce.prototype.number=function(){return new Ee(this.string())},Ce.prototype.numberValue=function(){return Number(this.string())},Ce.prototype.bool=function(){return new Se(this.booleanValue())},Ce.prototype.booleanValue=function(){return!!this.size},Ce.prototype.nodeset=function(){return this},Ce.prototype.stringForNode=function(A){return A.nodeType==b.DOCUMENT_NODE||A.nodeType==b.ELEMENT_NODE||A.nodeType===b.DOCUMENT_FRAGMENT_NODE?this.stringForContainerNode(A):A.nodeType===b.ATTRIBUTE_NODE?A.value||A.nodeValue:A.isNamespaceNode?A.namespace:A.nodeValue},Ce.prototype.stringForContainerNode=function(A){for(var k="",O=A.firstChild;O!=null;O=O.nextSibling){var $=O.nodeType;($===1||$===3||$===4||$===9||$===11)&&(k+=this.stringForNode(O))}return k},Ce.prototype.buildTree=function(){if(!this.tree&&this.nodes.length){this.tree=new Dt(this.nodes[0]);for(var A=1;A<this.nodes.length;A+=1)this.tree.add(this.nodes[A])}return this.tree},Ce.prototype.first=function(){var A=this.buildTree();if(A==null)return null;for(;A.left!=null;)A=A.left;return A.node},Ce.prototype.add=function(A){for(var k=0;k<this.nodes.length;k+=1)if(A===this.nodes[k])return;this.tree=null,this.nodes.push(A),this.size+=1},Ce.prototype.addArray=function(A){var k=this;o(function(O){k.add(O)},A)},Ce.prototype.toArray=function(){var A=[];return this.toArrayRec(this.buildTree(),A),A},Ce.prototype.toArrayRec=function(A,k){A!=null&&(this.toArrayRec(A.left,k),k.push(A.node),this.toArrayRec(A.right,k))},Ce.prototype.toUnsortedArray=function(){return this.nodes.slice()},Ce.prototype.compareWithString=function(A,k){for(var O=this.toUnsortedArray(),$=0;$<O.length;$++){var H=O[$],W=new we(this.stringForNode(H)),ue=k(W,A);if(ue.booleanValue())return ue}return new Se(!1)},Ce.prototype.compareWithNumber=function(A,k){for(var O=this.toUnsortedArray(),$=0;$<O.length;$++){var H=O[$],W=new Ee(this.stringForNode(H)),ue=k(W,A);if(ue.booleanValue())return ue}return new Se(!1)},Ce.prototype.compareWithBoolean=function(A,k){return k(this.bool(),A)},Ce.prototype.compareWithNodeSet=function(A,k){for(var O=this.toUnsortedArray(),$=function(Re,Ye){return k(Ye,Re)},H=0;H<O.length;H++){var W=new we(this.stringForNode(O[H])),ue=A.compareWithString(W,$);if(ue.booleanValue())return ue}return new Se(!1)},Ce.compareWith=s(function(A,k){return be.instance_of(k,we)?this.compareWithString(k,A):be.instance_of(k,Ee)?this.compareWithNumber(k,A):be.instance_of(k,Se)?this.compareWithBoolean(k,A):this.compareWithNodeSet(k,A)}),Ce.prototype.equals=Ce.compareWith(ct.equals),Ce.prototype.notequal=Ce.compareWith(ct.notequal),Ce.prototype.lessthan=Ce.compareWith(ct.lessthan),Ce.prototype.greaterthan=Ce.compareWith(ct.greaterthan),Ce.prototype.lessthanorequal=Ce.compareWith(ct.lessthanorequal),Ce.prototype.greaterthanorequal=Ce.compareWith(ct.greaterthanorequal),Ce.prototype.union=function(A){var k=new Ce;return k.addArray(this.toUnsortedArray()),k.addArray(A.toUnsortedArray()),k},Gi.prototype=new Object,Gi.prototype.constructor=Gi,Gi.superclass=Object.prototype;function Gi(A,k,O,$){this.isXPathNamespace=!0,this.baseNode=k,this.ownerDocument=$.ownerDocument,this.nodeName=A,this.prefix=A,this.localName=A,this.namespaceURI=null,this.nodeValue=O,this.ownerElement=$,this.nodeType=b.NAMESPACE_NODE}Gi.prototype.toString=function(){return'{ "'+this.prefix+'", "'+this.namespaceURI+'" }'},ri.prototype=new Object,ri.prototype.constructor=ri,ri.superclass=Object.prototype;function ri(A,k,O){this.variableResolver=A??new Ir,this.namespaceResolver=k??new ur,this.functionResolver=O??new tr}ri.prototype.extend=function(A){return C(new ri,this,A)},Ir.prototype=new Object,Ir.prototype.constructor=Ir,Ir.superclass=Object.prototype;function Ir(){}Ir.prototype.getVariable=function(A,k){return null},tr.prototype=new Object,tr.prototype.constructor=tr,tr.superclass=Object.prototype;function tr(A){this.thisArg=A??Qe,this.functions=new Object,this.addStandardFunctions()}tr.prototype.addStandardFunctions=function(){this.functions["{}last"]=Qe.last,this.functions["{}position"]=Qe.position,this.functions["{}count"]=Qe.count,this.functions["{}id"]=Qe.id,this.functions["{}local-name"]=Qe.localName,this.functions["{}namespace-uri"]=Qe.namespaceURI,this.functions["{}name"]=Qe.name,this.functions["{}string"]=Qe.string,this.functions["{}concat"]=Qe.concat,this.functions["{}starts-with"]=Qe.startsWith,this.functions["{}contains"]=Qe.contains,this.functions["{}substring-before"]=Qe.substringBefore,this.functions["{}substring-after"]=Qe.substringAfter,this.functions["{}substring"]=Qe.substring,this.functions["{}string-length"]=Qe.stringLength,this.functions["{}normalize-space"]=Qe.normalizeSpace,this.functions["{}translate"]=Qe.translate,this.functions["{}boolean"]=Qe.boolean_,this.functions["{}not"]=Qe.not,this.functions["{}true"]=Qe.true_,this.functions["{}false"]=Qe.false_,this.functions["{}lang"]=Qe.lang,this.functions["{}number"]=Qe.number,this.functions["{}sum"]=Qe.sum,this.functions["{}floor"]=Qe.floor,this.functions["{}ceiling"]=Qe.ceiling,this.functions["{}round"]=Qe.round},tr.prototype.addFunction=function(A,k,O){this.functions["{"+A+"}"+k]=O},tr.getFunctionFromContext=function(A,k){var O=be.resolveQName(A,k.namespaceResolver,k.contextNode,!1);if(O[0]===null)throw new Error("Cannot resolve QName "+name);return k.functionResolver.getFunction(O[1],O[0])},tr.prototype.getFunction=function(A,k){return this.functions["{"+k+"}"+A]},ur.prototype=new Object,ur.prototype.constructor=ur,ur.superclass=Object.prototype;function ur(){}ur.prototype.getNamespace=function(A,k){if(A=="xml")return _.XML_NAMESPACE_URI;if(A=="xmlns")return _.XMLNS_NAMESPACE_URI;for(k.nodeType==b.DOCUMENT_NODE?k=k.documentElement:k.nodeType==b.ATTRIBUTE_NODE?k=Z.getOwnerElement(k):k.nodeType!=b.ELEMENT_NODE&&(k=k.parentNode);k!=null&&k.nodeType==b.ELEMENT_NODE;){for(var O=k.attributes,$=0;$<O.length;$++){var H=O.item($),W=H.name||H.nodeName;if(W==="xmlns"&&A===""||W==="xmlns:"+A)return String(H.value||H.nodeValue)}k=k.parentNode}return null};var Qe=new Object;Qe.last=function(A){if(arguments.length!=1)throw new Error("Function last expects ()");return new Ee(A.contextSize)},Qe.position=function(A){if(arguments.length!=1)throw new Error("Function position expects ()");return new Ee(A.contextPosition)},Qe.count=function(){var A=arguments[0],k;if(arguments.length!=2||!be.instance_of(k=arguments[1].evaluate(A),Ce))throw new Error("Function count expects (node-set)");return new Ee(k.size)},Qe.id=function(){var A=arguments[0],k;if(arguments.length!=2)throw new Error("Function id expects (object)");k=arguments[1].evaluate(A),be.instance_of(k,Ce)?k=k.toArray().join(" "):k=k.stringValue();for(var O=k.split(/[\x0d\x0a\x09\x20]+/),$=0,H=new Ce,W=A.contextNode.nodeType==b.DOCUMENT_NODE?A.contextNode:A.contextNode.ownerDocument,ue=0;ue<O.length;ue++){var Re;W.getElementById?Re=W.getElementById(O[ue]):Re=be.getElementById(W,O[ue]),Re!=null&&(H.add(Re),$++)}return H},Qe.localName=function(A,k){var O;if(arguments.length==1)O=A.contextNode;else if(arguments.length==2)O=k.evaluate(A).first();else throw new Error("Function local-name expects (node-set?)");return O==null?new we(""):new we(O.localName||O.baseName||O.target||O.nodeName||"")},Qe.namespaceURI=function(){var A=arguments[0],k;if(arguments.length==1)k=A.contextNode;else if(arguments.length==2)k=arguments[1].evaluate(A).first();else throw new Error("Function namespace-uri expects (node-set?)");return k==null?new we(""):new we(k.namespaceURI||"")},Qe.name=function(){var A=arguments[0],k;if(arguments.length==1)k=A.contextNode;else if(arguments.length==2)k=arguments[1].evaluate(A).first();else throw new Error("Function name expects (node-set?)");return k==null?new we(""):k.nodeType==b.ELEMENT_NODE?new we(k.nodeName):k.nodeType==b.ATTRIBUTE_NODE?new we(k.name||k.nodeName):k.nodeType===b.PROCESSING_INSTRUCTION_NODE?new we(k.target||k.nodeName):k.localName==null?new we(""):new we(k.localName)},Qe.string=function(){var A=arguments[0];if(arguments.length==1)return new we(Ce.prototype.stringForNode(A.contextNode));if(arguments.length==2)return arguments[1].evaluate(A).string();throw new Error("Function string expects (object?)")},Qe.concat=function(A){if(arguments.length<3)throw new Error("Function concat expects (string, string[, string]*)");for(var k="",O=1;O<arguments.length;O++)k+=arguments[O].evaluate(A).stringValue();return new we(k)},Qe.startsWith=function(){var A=arguments[0];if(arguments.length!=3)throw new Error("Function startsWith expects (string, string)");var k=arguments[1].evaluate(A).stringValue(),O=arguments[2].evaluate(A).stringValue();return new Se(k.substring(0,O.length)==O)},Qe.contains=function(){var A=arguments[0];if(arguments.length!=3)throw new Error("Function contains expects (string, string)");var k=arguments[1].evaluate(A).stringValue(),O=arguments[2].evaluate(A).stringValue();return new Se(k.indexOf(O)!==-1)},Qe.substringBefore=function(){var A=arguments[0];if(arguments.length!=3)throw new Error("Function substring-before expects (string, string)");var k=arguments[1].evaluate(A).stringValue(),O=arguments[2].evaluate(A).stringValue();return new we(k.substring(0,k.indexOf(O)))},Qe.substringAfter=function(){var A=arguments[0];if(arguments.length!=3)throw new Error("Function substring-after expects (string, string)");var k=arguments[1].evaluate(A).stringValue(),O=arguments[2].evaluate(A).stringValue();if(O.length==0)return new we(k);var $=k.indexOf(O);return $==-1?new we(""):new we(k.substring($+O.length))},Qe.substring=function(){var A=arguments[0];if(!(arguments.length==3||arguments.length==4))throw new Error("Function substring expects (string, number, number?)");var k=arguments[1].evaluate(A).stringValue(),O=Math.round(arguments[2].evaluate(A).numberValue())-1,$=arguments.length==4?O+Math.round(arguments[3].evaluate(A).numberValue()):void 0;return new we(k.substring(O,$))},Qe.stringLength=function(){var A=arguments[0],k;if(arguments.length==1)k=Ce.prototype.stringForNode(A.contextNode);else if(arguments.length==2)k=arguments[1].evaluate(A).stringValue();else throw new Error("Function string-length expects (string?)");return new Ee(k.length)},Qe.normalizeSpace=function(){var A=arguments[0],k;if(arguments.length==1)k=Ce.prototype.stringForNode(A.contextNode);else if(arguments.length==2)k=arguments[1].evaluate(A).stringValue();else throw new Error("Function normalize-space expects (string?)");for(var O=0,$=k.length-1;be.isSpace(k.charCodeAt($));)$--;for(var H="";O<=$&&be.isSpace(k.charCodeAt(O));)O++;for(;O<=$;)if(be.isSpace(k.charCodeAt(O)))for(H+=" ";O<=$&&be.isSpace(k.charCodeAt(O));)O++;else H+=k.charAt(O),O++;return new we(H)},Qe.translate=function(A,k,O,$){if(arguments.length!=4)throw new Error("Function translate expects (string, string, string)");var H=k.evaluate(A).stringValue(),W=O.evaluate(A).stringValue(),ue=$.evaluate(A).stringValue(),Re=a(function(Ie,Fe,pn){return Fe in Ie||(Ie[Fe]=pn>ue.length?"":ue[pn]),Ie},{},W),Ye=h("",c(function(Ie){return Ie in Re?Re[Ie]:Ie},H));return new we(Ye)},Qe.boolean_=function(){var A=arguments[0];if(arguments.length!=2)throw new Error("Function boolean expects (object)");return arguments[1].evaluate(A).bool()},Qe.not=function(A,k){if(arguments.length!=2)throw new Error("Function not expects (object)");return k.evaluate(A).bool().not()},Qe.true_=function(){if(arguments.length!=1)throw new Error("Function true expects ()");return Se.true_},Qe.false_=function(){if(arguments.length!=1)throw new Error("Function false expects ()");return Se.false_},Qe.lang=function(){var A=arguments[0];if(arguments.length!=2)throw new Error("Function lang expects (string)");for(var k,O=A.contextNode;O!=null&&O.nodeType!=b.DOCUMENT_NODE;O=O.parentNode){var $=O.getAttributeNS(_.XML_NAMESPACE_URI,"lang");if($!=null){k=String($);break}}if(k==null)return Se.false_;var H=arguments[1].evaluate(A).stringValue();return new Se(k.substring(0,H.length)==H&&(k.length==H.length||k.charAt(H.length)=="-"))},Qe.number=function(){var A=arguments[0];if(!(arguments.length==1||arguments.length==2))throw new Error("Function number expects (object?)");return arguments.length==1?new Ee(Ce.prototype.stringForNode(A.contextNode)):arguments[1].evaluate(A).number()},Qe.sum=function(){var A=arguments[0],k;if(arguments.length!=2||!be.instance_of(k=arguments[1].evaluate(A),Ce))throw new Error("Function sum expects (node-set)");k=k.toUnsortedArray();for(var O=0,$=0;$<k.length;$++)O+=new Ee(Ce.prototype.stringForNode(k[$])).numberValue();return new Ee(O)},Qe.floor=function(){var A=arguments[0];if(arguments.length!=2)throw new Error("Function floor expects (number)");return new Ee(Math.floor(arguments[1].evaluate(A).numberValue()))},Qe.ceiling=function(){var A=arguments[0];if(arguments.length!=2)throw new Error("Function ceiling expects (number)");return new Ee(Math.ceil(arguments[1].evaluate(A).numberValue()))},Qe.round=function(){var A=arguments[0];if(arguments.length!=2)throw new Error("Function round expects (number)");return new Ee(Math.round(arguments[1].evaluate(A).numberValue()))};var be=new Object,cl=function(A){return A&&(A.nodeType===b.ATTRIBUTE_NODE||A.ownerElement||A.isXPathNamespace)};be.splitQName=function(A){var k=A.indexOf(":");return k==-1?[null,A]:[A.substring(0,k),A.substring(k+1)]},be.resolveQName=function(A,k,O,$){var H=be.splitQName(A);return H[0]!=null?H[0]=k.getNamespace(H[0],O):$?(H[0]=k.getNamespace("",O),H[0]==null&&(H[0]="")):H[0]="",H},be.isSpace=function(A){return A==9||A==13||A==10||A==32},be.isLetter=function(A){return A>=65&&A<=90||A>=97&&A<=122||A>=192&&A<=214||A>=216&&A<=246||A>=248&&A<=255||A>=256&&A<=305||A>=308&&A<=318||A>=321&&A<=328||A>=330&&A<=382||A>=384&&A<=451||A>=461&&A<=496||A>=500&&A<=501||A>=506&&A<=535||A>=592&&A<=680||A>=699&&A<=705||A==902||A>=904&&A<=906||A==908||A>=910&&A<=929||A>=931&&A<=974||A>=976&&A<=982||A==986||A==988||A==990||A==992||A>=994&&A<=1011||A>=1025&&A<=1036||A>=1038&&A<=1103||A>=1105&&A<=1116||A>=1118&&A<=1153||A>=1168&&A<=1220||A>=1223&&A<=1224||A>=1227&&A<=1228||A>=1232&&A<=1259||A>=1262&&A<=1269||A>=1272&&A<=1273||A>=1329&&A<=1366||A==1369||A>=1377&&A<=1414||A>=1488&&A<=1514||A>=1520&&A<=1522||A>=1569&&A<=1594||A>=1601&&A<=1610||A>=1649&&A<=1719||A>=1722&&A<=1726||A>=1728&&A<=1742||A>=1744&&A<=1747||A==1749||A>=1765&&A<=1766||A>=2309&&A<=2361||A==2365||A>=2392&&A<=2401||A>=2437&&A<=2444||A>=2447&&A<=2448||A>=2451&&A<=2472||A>=2474&&A<=2480||A==2482||A>=2486&&A<=2489||A>=2524&&A<=2525||A>=2527&&A<=2529||A>=2544&&A<=2545||A>=2565&&A<=2570||A>=2575&&A<=2576||A>=2579&&A<=2600||A>=2602&&A<=2608||A>=2610&&A<=2611||A>=2613&&A<=2614||A>=2616&&A<=2617||A>=2649&&A<=2652||A==2654||A>=2674&&A<=2676||A>=2693&&A<=2699||A==2701||A>=2703&&A<=2705||A>=2707&&A<=2728||A>=2730&&A<=2736||A>=2738&&A<=2739||A>=2741&&A<=2745||A==2749||A==2784||A>=2821&&A<=2828||A>=2831&&A<=2832||A>=2835&&A<=2856||A>=2858&&A<=2864||A>=2866&&A<=2867||A>=2870&&A<=2873||A==2877||A>=2908&&A<=2909||A>=2911&&A<=2913||A>=2949&&A<=2954||A>=2958&&A<=2960||A>=2962&&A<=2965||A>=2969&&A<=2970||A==2972||A>=2974&&A<=2975||A>=2979&&A<=2980||A>=2984&&A<=2986||A>=2990&&A<=2997||A>=2999&&A<=3001||A>=3077&&A<=3084||A>=3086&&A<=3088||A>=3090&&A<=3112||A>=3114&&A<=3123||A>=3125&&A<=3129||A>=3168&&A<=3169||A>=3205&&A<=3212||A>=3214&&A<=3216||A>=3218&&A<=3240||A>=3242&&A<=3251||A>=3253&&A<=3257||A==3294||A>=3296&&A<=3297||A>=3333&&A<=3340||A>=3342&&A<=3344||A>=3346&&A<=3368||A>=3370&&A<=3385||A>=3424&&A<=3425||A>=3585&&A<=3630||A==3632||A>=3634&&A<=3635||A>=3648&&A<=3653||A>=3713&&A<=3714||A==3716||A>=3719&&A<=3720||A==3722||A==3725||A>=3732&&A<=3735||A>=3737&&A<=3743||A>=3745&&A<=3747||A==3749||A==3751||A>=3754&&A<=3755||A>=3757&&A<=3758||A==3760||A>=3762&&A<=3763||A==3773||A>=3776&&A<=3780||A>=3904&&A<=3911||A>=3913&&A<=3945||A>=4256&&A<=4293||A>=4304&&A<=4342||A==4352||A>=4354&&A<=4355||A>=4357&&A<=4359||A==4361||A>=4363&&A<=4364||A>=4366&&A<=4370||A==4412||A==4414||A==4416||A==4428||A==4430||A==4432||A>=4436&&A<=4437||A==4441||A>=4447&&A<=4449||A==4451||A==4453||A==4455||A==4457||A>=4461&&A<=4462||A>=4466&&A<=4467||A==4469||A==4510||A==4520||A==4523||A>=4526&&A<=4527||A>=4535&&A<=4536||A==4538||A>=4540&&A<=4546||A==4587||A==4592||A==4601||A>=7680&&A<=7835||A>=7840&&A<=7929||A>=7936&&A<=7957||A>=7960&&A<=7965||A>=7968&&A<=8005||A>=8008&&A<=8013||A>=8016&&A<=8023||A==8025||A==8027||A==8029||A>=8031&&A<=8061||A>=8064&&A<=8116||A>=8118&&A<=8124||A==8126||A>=8130&&A<=8132||A>=8134&&A<=8140||A>=8144&&A<=8147||A>=8150&&A<=8155||A>=8160&&A<=8172||A>=8178&&A<=8180||A>=8182&&A<=8188||A==8486||A>=8490&&A<=8491||A==8494||A>=8576&&A<=8578||A>=12353&&A<=12436||A>=12449&&A<=12538||A>=12549&&A<=12588||A>=44032&&A<=55203||A>=19968&&A<=40869||A==12295||A>=12321&&A<=12329},be.isNCNameChar=function(A){return A>=48&&A<=57||A>=1632&&A<=1641||A>=1776&&A<=1785||A>=2406&&A<=2415||A>=2534&&A<=2543||A>=2662&&A<=2671||A>=2790&&A<=2799||A>=2918&&A<=2927||A>=3047&&A<=3055||A>=3174&&A<=3183||A>=3302&&A<=3311||A>=3430&&A<=3439||A>=3664&&A<=3673||A>=3792&&A<=3801||A>=3872&&A<=3881||A==46||A==45||A==95||be.isLetter(A)||A>=768&&A<=837||A>=864&&A<=865||A>=1155&&A<=1158||A>=1425&&A<=1441||A>=1443&&A<=1465||A>=1467&&A<=1469||A==1471||A>=1473&&A<=1474||A==1476||A>=1611&&A<=1618||A==1648||A>=1750&&A<=1756||A>=1757&&A<=1759||A>=1760&&A<=1764||A>=1767&&A<=1768||A>=1770&&A<=1773||A>=2305&&A<=2307||A==2364||A>=2366&&A<=2380||A==2381||A>=2385&&A<=2388||A>=2402&&A<=2403||A>=2433&&A<=2435||A==2492||A==2494||A==2495||A>=2496&&A<=2500||A>=2503&&A<=2504||A>=2507&&A<=2509||A==2519||A>=2530&&A<=2531||A==2562||A==2620||A==2622||A==2623||A>=2624&&A<=2626||A>=2631&&A<=2632||A>=2635&&A<=2637||A>=2672&&A<=2673||A>=2689&&A<=2691||A==2748||A>=2750&&A<=2757||A>=2759&&A<=2761||A>=2763&&A<=2765||A>=2817&&A<=2819||A==2876||A>=2878&&A<=2883||A>=2887&&A<=2888||A>=2891&&A<=2893||A>=2902&&A<=2903||A>=2946&&A<=2947||A>=3006&&A<=3010||A>=3014&&A<=3016||A>=3018&&A<=3021||A==3031||A>=3073&&A<=3075||A>=3134&&A<=3140||A>=3142&&A<=3144||A>=3146&&A<=3149||A>=3157&&A<=3158||A>=3202&&A<=3203||A>=3262&&A<=3268||A>=3270&&A<=3272||A>=3274&&A<=3277||A>=3285&&A<=3286||A>=3330&&A<=3331||A>=3390&&A<=3395||A>=3398&&A<=3400||A>=3402&&A<=3405||A==3415||A==3633||A>=3636&&A<=3642||A>=3655&&A<=3662||A==3761||A>=3764&&A<=3769||A>=3771&&A<=3772||A>=3784&&A<=3789||A>=3864&&A<=3865||A==3893||A==3895||A==3897||A==3902||A==3903||A>=3953&&A<=3972||A>=3974&&A<=3979||A>=3984&&A<=3989||A==3991||A>=3993&&A<=4013||A>=4017&&A<=4023||A==4025||A>=8400&&A<=8412||A==8417||A>=12330&&A<=12335||A==12441||A==12442||A==183||A==720||A==721||A==903||A==1600||A==3654||A==3782||A==12293||A>=12337&&A<=12341||A>=12445&&A<=12446||A>=12540&&A<=12542},be.coalesceText=function(A){for(var k=A.firstChild;k!=null;k=k.nextSibling)if(k.nodeType==b.TEXT_NODE||k.nodeType==b.CDATA_SECTION_NODE){var O=k.nodeValue,$=k;for(k=k.nextSibling;k!=null&&(k.nodeType==b.TEXT_NODE||k.nodeType==b.CDATA_SECTION_NODE);){O+=k.nodeValue;var H=k;k=k.nextSibling,H.parentNode.removeChild(H)}if($.nodeType==b.CDATA_SECTION_NODE){var W=$.parentNode;if($.nextSibling==null)W.removeChild($),W.appendChild(W.ownerDocument.createTextNode(O));else{var ue=$.nextSibling;W.removeChild($),W.insertBefore(W.ownerDocument.createTextNode(O),ue)}}else $.nodeValue=O;if(k==null)break}else k.nodeType==b.ELEMENT_NODE&&be.coalesceText(k)},be.instance_of=function(A,k){for(;A!=null;){if(A.constructor===k)return!0;if(A===Object)return!1;A=A.constructor.superclass}return!1},be.getElementById=function(A,k){if(A.nodeType==b.ELEMENT_NODE&&(A.getAttribute("id")==k||A.getAttributeNS(null,"id")==k))return A;for(var O=A.firstChild;O!=null;O=O.nextSibling){var $=be.getElementById(O,k);if($!=null)return $}return null};var fi=(function(){function A(O,$){var H=$?": "+$.toString():"";switch(O){case k.INVALID_EXPRESSION_ERR:return"Invalid expression"+H;case k.TYPE_ERR:return"Type error"+H}return null}function k(O,$,H){var W=Error.call(this,A(O,$)||H);return W.code=O,W.exception=$,W}return k.prototype=Object.create(Error.prototype),k.prototype.constructor=k,k.superclass=Error,k.prototype.toString=function(){return this.message},k.fromMessage=function(O,$){return new k(null,$,O)},k.INVALID_EXPRESSION_ERR=51,k.TYPE_ERR=52,k})();Or.prototype={},Or.prototype.constructor=Or,Or.superclass=Object.prototype;function Or(A,k,O){this.xpath=O.parse(A),this.context=new ri,this.context.namespaceResolver=new Rn(k)}Or.getOwnerDocument=function(A){return A.nodeType===b.DOCUMENT_NODE?A:A.ownerDocument},Or.detectHtmlDom=function(A){if(!A)return!1;var k=Or.getOwnerDocument(A);try{return k.implementation.hasFeature("HTML","2.0")}catch{return!0}},Or.prototype.evaluate=function(A,k,O){this.context.expressionContextNode=A,this.context.caseInsensitive=Or.detectHtmlDom(A);var $=this.xpath.evaluate(this.context);return new Le($,k)},Rn.prototype={},Rn.prototype.constructor=Rn,Rn.superclass=Object.prototype;function Rn(A){this.xpathNSResolver=A}Rn.prototype.getNamespace=function(A,k){return this.xpathNSResolver==null?null:this.xpathNSResolver.lookupNamespaceURI(A)},gn.prototype={},gn.prototype.constructor=gn,gn.superclass=Object.prototype;function gn(A){this.node=A,this.namespaceResolver=new ur}gn.prototype.lookupNamespaceURI=function(A){return this.namespaceResolver.getNamespace(A,this.node)},Le.prototype={},Le.prototype.constructor=Le,Le.superclass=Object.prototype;function Le(A,k){switch(k==Le.ANY_TYPE&&(A.constructor===we?k=Le.STRING_TYPE:A.constructor===Ee?k=Le.NUMBER_TYPE:A.constructor===Se?k=Le.BOOLEAN_TYPE:A.constructor===Ce&&(k=Le.UNORDERED_NODE_ITERATOR_TYPE)),this.resultType=k,k){case Le.NUMBER_TYPE:this.numberValue=A.numberValue();return;case Le.STRING_TYPE:this.stringValue=A.stringValue();return;case Le.BOOLEAN_TYPE:this.booleanValue=A.booleanValue();return;case Le.ANY_UNORDERED_NODE_TYPE:case Le.FIRST_ORDERED_NODE_TYPE:if(A.constructor===Ce){this.singleNodeValue=A.first();return}break;case Le.UNORDERED_NODE_ITERATOR_TYPE:case Le.ORDERED_NODE_ITERATOR_TYPE:if(A.constructor===Ce){this.invalidIteratorState=!1,this.nodes=A.toArray(),this.iteratorIndex=0;return}break;case Le.UNORDERED_NODE_SNAPSHOT_TYPE:case Le.ORDERED_NODE_SNAPSHOT_TYPE:if(A.constructor===Ce){this.nodes=A.toArray(),this.snapshotLength=this.nodes.length;return}break}throw new fi(fi.TYPE_ERR)}Le.prototype.iterateNext=function(){if(this.resultType!=Le.UNORDERED_NODE_ITERATOR_TYPE&&this.resultType!=Le.ORDERED_NODE_ITERATOR_TYPE)throw new fi(fi.TYPE_ERR);return this.nodes[this.iteratorIndex++]},Le.prototype.snapshotItem=function(A){if(this.resultType!=Le.UNORDERED_NODE_SNAPSHOT_TYPE&&this.resultType!=Le.ORDERED_NODE_SNAPSHOT_TYPE)throw new fi(fi.TYPE_ERR);return this.nodes[A]},Le.ANY_TYPE=0,Le.NUMBER_TYPE=1,Le.STRING_TYPE=2,Le.BOOLEAN_TYPE=3,Le.UNORDERED_NODE_ITERATOR_TYPE=4,Le.ORDERED_NODE_ITERATOR_TYPE=5,Le.UNORDERED_NODE_SNAPSHOT_TYPE=6,Le.ORDERED_NODE_SNAPSHOT_TYPE=7,Le.ANY_UNORDERED_NODE_TYPE=8,Le.FIRST_ORDERED_NODE_TYPE=9;function za(A,k){A.createExpression=function(O,$){try{return new Or(O,$,k)}catch(H){throw new fi(fi.INVALID_EXPRESSION_ERR,H)}},A.createNSResolver=function(O){return new gn(O)},A.evaluate=function(O,$,H,W,ue){if(W<0||W>9)throw{code:0,toString:function(){return"Request type not supported"}};return A.createExpression(O,H,k).evaluate($,W,ue)}}try{var zi=!0;try{document.implementation&&document.implementation.hasFeature&&document.implementation.hasFeature("XPath",null)&&(zi=!1)}catch{}zi&&za(document,new x)}catch{}za(r,new x),(function(){var A=new x,k=new ur,O=new tr,$=new Ir;function H(he){return{getNamespace:function(Ze,Mr){var mn=he(Ze,Mr);return mn||k.getNamespace(Ze,Mr)}}}function W(he){return H(he.getNamespace.bind(he))}function ue(he){return H(function(Ze){return he[Ze]})}function Re(he){return he&&typeof he.getNamespace=="function"?W(he):typeof he=="function"?H(he):typeof he=="object"?ue(he):k}function Ye(he){if(he===null||typeof he>"u"||he instanceof we||he instanceof Se||he instanceof Ee||he instanceof Ce)return he;switch(typeof he){case"string":return new we(he);case"boolean":return new Se(he);case"number":return new Ee(he)}var Ze=new Ce;return Ze.addArray([].concat(he)),Ze}function Ie(he){return function(Ze){var Mr=Array.prototype.slice.call(arguments,1).map(function(Lw){return Lw.evaluate(Ze)}),mn=he.apply(this,[].concat(Ze,Mr));return Ye(mn)}}function Fe(he){return{getFunction:function(Ze,Mr){var mn=he(Ze,Mr);return mn?Ie(mn):O.getFunction(Ze,Mr)}}}function pn(he){return Fe(he.getFunction.bind(he))}function Es(he){return Fe(function(Ze){return he[Ze]})}function Bs(he){return he&&typeof he.getFunction=="function"?pn(he):typeof he=="function"?Fe(he):typeof he=="object"?Es(he):O}function bs(he){return{getVariable:function(Ze,Mr){var mn=he(Ze,Mr);return Ye(mn)}}}function Ji(he){if(he){if(typeof he.getVariable=="function")return bs(he.getVariable.bind(he));if(typeof he=="function")return bs(he);if(typeof he=="object")return bs(function(Ze){return he[Ze]})}return $}function Nn(he,Ze,Mr){he in Mr&&(Ze[he]=Mr[he])}function t0(he){var Ze=new ri;return he?(Ze.namespaceResolver=Re(he.namespaces),Ze.functionResolver=Bs(he.functions),Ze.variableResolver=Ji(he.variables),Ze.expressionContextNode=he.node,Nn("allowAnyNamespaceForNoPrefix",Ze,he),Nn("isHtml",Ze,he)):Ze.namespaceResolver=k,Ze}function ou(he,Ze){var Mr=t0(Ze);return he.evaluate(Mr)}var Ow={evaluate:function(he){return ou(this.expression,he)},evaluateNumber:function(he){return this.evaluate(he).numberValue()},evaluateString:function(he){return this.evaluate(he).stringValue()},evaluateBoolean:function(he){return this.evaluate(he).booleanValue()},evaluateNodeSet:function(he){return this.evaluate(he).nodeset()},select:function(he){return this.evaluateNodeSet(he).toArray()},select1:function(he){return this.select(he)[0]}};function Mw(he){var Ze=A.parse(he);return Object.create(Ow,{expression:{value:Ze}})}r.parse=Mw})(),C(r,{XPath:_,XPathParser:x,XPathResult:Le,Step:se,PathExpr:Z,NodeTest:ce,LocationPath:_e,OrOperation:Q,AndOperation:v,BarOperation:ee,EqualsOperation:E,NotEqualOperation:P,LessThanOperation:N,GreaterThanOperation:J,LessThanOrEqualOperation:z,GreaterThanOrEqualOperation:L,PlusOperation:G,MinusOperation:K,MultiplyOperation:j,DivOperation:te,ModOperation:re,UnaryMinusOperation:D,FunctionCall:qr,VariableReference:dr,XPathContext:ri,XNodeSet:Ce,XBoolean:Se,XString:we,XNumber:Ee,NamespaceResolver:ur,FunctionResolver:tr,VariableResolver:Ir,Utilities:be}),r.select=function(A,k,O){return r.selectWithResolver(A,k,null,O)},r.useNamespaces=function(A){var k={mappings:A||{},lookupNamespaceURI:function(O){return this.mappings[O]}};return function(O,$,H){return r.selectWithResolver(O,$,k,H)}},r.selectWithResolver=function(A,k,O,$){var H=new Or(A,O,new x),W=Le.ANY_TYPE,ue=H.evaluate(k,W,null);return ue.resultType==Le.STRING_TYPE?ue=ue.stringValue:ue.resultType==Le.NUMBER_TYPE?ue=ue.numberValue:ue.resultType==Le.BOOLEAN_TYPE?ue=ue.booleanValue:(ue=ue.nodes,$&&(ue=ue[0])),ue},r.select1=function(A,k){return r.select(A,k,!0)};var xo=function(A){return Array.isArray(A)&&A.every(n)},Pi=function(A){return function(k){return n(k)&&k.nodeType===A}};C(r,{isNodeLike:n,isArrayOfNodes:xo,isElement:Pi(b.ELEMENT_NODE),isAttribute:Pi(b.ATTRIBUTE_NODE),isTextNode:Pi(b.TEXT_NODE),isCDATASection:Pi(b.CDATA_SECTION_NODE),isProcessingInstruction:Pi(b.PROCESSING_INSTRUCTION_NODE),isComment:Pi(b.COMMENT_NODE),isDocumentNode:Pi(b.DOCUMENT_NODE),isDocumentTypeNode:Pi(b.DOCUMENT_TYPE_NODE),isDocumentFragment:Pi(b.DOCUMENT_FRAGMENT_NODE)})})(SJ)});var yc=oe(_r=>{"use strict";function DJ(r,e,t){if(t===void 0&&(t=Array.prototype),r&&typeof t.find=="function")return t.find.call(r,e);for(var i=0;i<r.length;i++)if(mc(r,i)){var n=r[i];if(e.call(void 0,n,i,r))return n}}function Rl(r,e){return e===void 0&&(e=Object),e&&typeof e.getOwnPropertyDescriptors=="function"&&(r=e.create(null,e.getOwnPropertyDescriptors(r))),e&&typeof e.freeze=="function"?e.freeze(r):r}function mc(r,e){return Object.prototype.hasOwnProperty.call(r,e)}function QJ(r,e){if(r===null||typeof r!="object")throw new TypeError("target is not an object");for(var t in e)mc(e,t)&&(r[t]=e[t]);return r}var W4=Rl({allowfullscreen:!0,async:!0,autofocus:!0,autoplay:!0,checked:!0,controls:!0,default:!0,defer:!0,disabled:!0,formnovalidate:!0,hidden:!0,ismap:!0,itemscope:!0,loop:!0,multiple:!0,muted:!0,nomodule:!0,novalidate:!0,open:!0,playsinline:!0,readonly:!0,required:!0,reversed:!0,selected:!0});function _J(r){return mc(W4,r.toLowerCase())}var X4=Rl({area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function FJ(r){return mc(X4,r.toLowerCase())}var $u=Rl({script:!1,style:!1,textarea:!0,title:!0});function PJ(r){var e=r.toLowerCase();return mc($u,e)&&!$u[e]}function TJ(r){var e=r.toLowerCase();return mc($u,e)&&$u[e]}function Z4(r){return r===Vu.HTML}function UJ(r){return Z4(r)||r===Vu.XML_XHTML_APPLICATION}var Vu=Rl({HTML:"text/html",XML_APPLICATION:"application/xml",XML_TEXT:"text/xml",XML_XHTML_APPLICATION:"application/xhtml+xml",XML_SVG_IMAGE:"image/svg+xml"}),RJ=Object.keys(Vu).map(function(r){return Vu[r]});function NJ(r){return RJ.indexOf(r)>-1}var qJ=Rl({HTML:"http://www.w3.org/1999/xhtml",SVG:"http://www.w3.org/2000/svg",XML:"http://www.w3.org/XML/1998/namespace",XMLNS:"http://www.w3.org/2000/xmlns/"});_r.assign=QJ;_r.find=DJ;_r.freeze=Rl;_r.HTML_BOOLEAN_ATTRIBUTES=W4;_r.HTML_RAW_TEXT_ELEMENTS=$u;_r.HTML_VOID_ELEMENTS=X4;_r.hasDefaultHTMLNamespace=UJ;_r.hasOwn=mc;_r.isHTMLBooleanAttribute=_J;_r.isHTMLRawTextElement=PJ;_r.isHTMLEscapableRawTextElement=TJ;_r.isHTMLMimeType=Z4;_r.isHTMLVoidElement=FJ;_r.isValidMimeType=NJ;_r.MIME_TYPE=Vu;_r.NAMESPACE=qJ});var ef=oe(Zu=>{"use strict";var OJ=yc();function tF(r,e){r.prototype=Object.create(Error.prototype,{constructor:{value:r},name:{value:r.name,enumerable:!0,writable:e}})}var Wu=OJ.freeze({Error:"Error",IndexSizeError:"IndexSizeError",DomstringSizeError:"DomstringSizeError",HierarchyRequestError:"HierarchyRequestError",WrongDocumentError:"WrongDocumentError",InvalidCharacterError:"InvalidCharacterError",NoDataAllowedError:"NoDataAllowedError",NoModificationAllowedError:"NoModificationAllowedError",NotFoundError:"NotFoundError",NotSupportedError:"NotSupportedError",InUseAttributeError:"InUseAttributeError",InvalidStateError:"InvalidStateError",SyntaxError:"SyntaxError",InvalidModificationError:"InvalidModificationError",NamespaceError:"NamespaceError",InvalidAccessError:"InvalidAccessError",ValidationError:"ValidationError",TypeMismatchError:"TypeMismatchError",SecurityError:"SecurityError",NetworkError:"NetworkError",AbortError:"AbortError",URLMismatchError:"URLMismatchError",QuotaExceededError:"QuotaExceededError",TimeoutError:"TimeoutError",InvalidNodeTypeError:"InvalidNodeTypeError",DataCloneError:"DataCloneError",EncodingError:"EncodingError",NotReadableError:"NotReadableError",UnknownError:"UnknownError",ConstraintError:"ConstraintError",DataError:"DataError",TransactionInactiveError:"TransactionInactiveError",ReadOnlyError:"ReadOnlyError",VersionError:"VersionError",OperationError:"OperationError",NotAllowedError:"NotAllowedError",OptOutError:"OptOutError"}),rF=Object.keys(Wu);function iF(r){return typeof r=="number"&&r>=1&&r<=25}function MJ(r){return typeof r=="string"&&r.substring(r.length-Wu.Error.length)===Wu.Error}function Xu(r,e){iF(r)?(this.name=rF[r],this.message=e||""):(this.message=r,this.name=MJ(e)?e:Wu.Error),Error.captureStackTrace&&Error.captureStackTrace(this,Xu)}tF(Xu,!0);Object.defineProperties(Xu.prototype,{code:{enumerable:!0,get:function(){var r=rF.indexOf(this.name);return iF(r)?r:0}}});var nF={INDEX_SIZE_ERR:1,DOMSTRING_SIZE_ERR:2,HIERARCHY_REQUEST_ERR:3,WRONG_DOCUMENT_ERR:4,INVALID_CHARACTER_ERR:5,NO_DATA_ALLOWED_ERR:6,NO_MODIFICATION_ALLOWED_ERR:7,NOT_FOUND_ERR:8,NOT_SUPPORTED_ERR:9,INUSE_ATTRIBUTE_ERR:10,INVALID_STATE_ERR:11,SYNTAX_ERR:12,INVALID_MODIFICATION_ERR:13,NAMESPACE_ERR:14,INVALID_ACCESS_ERR:15,VALIDATION_ERR:16,TYPE_MISMATCH_ERR:17,SECURITY_ERR:18,NETWORK_ERR:19,ABORT_ERR:20,URL_MISMATCH_ERR:21,QUOTA_EXCEEDED_ERR:22,TIMEOUT_ERR:23,INVALID_NODE_TYPE_ERR:24,DATA_CLONE_ERR:25},VC=Object.entries(nF);for(Yu=0;Yu<VC.length;Yu++)eF=VC[Yu][0],Xu[eF]=VC[Yu][1];var eF,Yu;function YC(r,e,t){this.message=r,this.locator=e,this.cause=t,Error.captureStackTrace&&Error.captureStackTrace(this,YC)}tF(YC);Zu.DOMException=Xu;Zu.DOMExceptionName=Wu;Zu.ExceptionCode=nF;Zu.ParseError=YC});var iE=oe(Ke=>{"use strict";function dF(r){try{typeof r!="function"&&(r=RegExp);var e=new r("\u{1D306}","u").exec("\u{1D306}");return!!e&&e[0].length===2}catch{}return!1}var Ol=dF();function Yo(r){if(r.source[0]!=="[")throw new Error(r+" can not be used with chars");return r.source.slice(1,r.source.lastIndexOf("]"))}function Nl(r,e){if(r.source[0]!=="[")throw new Error("/"+r.source+"/ can not be used with chars_without");if(!e||typeof e!="string")throw new Error(JSON.stringify(e)+" is not a valid search");if(r.source.indexOf(e)===-1)throw new Error('"'+e+'" is not is /'+r.source+"/");if(e==="-"&&r.source.indexOf(e)!==1)throw new Error('"'+e+'" is not at the first postion of /'+r.source+"/");return new RegExp(r.source.replace(e,""),Ol?"u":"")}function $e(r){var e=this;return new RegExp(Array.prototype.slice.call(arguments).map(function(t){var i=typeof t=="string";if(i&&e===void 0&&t==="|")throw new Error("use regg instead of reg to wrap expressions with `|`!");return i?t:t.source}).join(""),Ol?"u":"")}function Oe(r){if(arguments.length===0)throw new Error("no parameters provided");return $e.apply(Oe,["(?:"].concat(Array.prototype.slice.call(arguments),[")"]))}var LJ="\uFFFD",Wo=/[-\x09\x0A\x0D\x20-\x2C\x2E-\uD7FF\uE000-\uFFFD]/;Ol&&(Wo=$e("[",Yo(Wo),"\\u{10000}-\\u{10FFFF}","]"));var HJ=new RegExp("[^"+Yo(Wo)+"]",Ol?"u":""),Um=/[\x20\x09\x0D\x0A]/,KJ=Yo(Um),gt=$e(Um,"+"),Qt=$e(Um,"*"),tf=/[:_a-zA-Z\xC0-\xD6\xD8-\xF6\xF8-\u02FF\u0370-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]/;Ol&&(tf=$e("[",Yo(tf),"\\u{10000}-\\u{10FFFF}","]"));var GJ=Yo(tf),ZC=$e("[",GJ,Yo(/[-.0-9\xB7]/),Yo(/[\u0300-\u036F\u203F-\u2040]/),"]"),qi=$e(tf,ZC,"*"),zJ=$e("^",qi,"$"),sF=$e(ZC,"+"),JJ=$e("&",qi,";"),jJ=Oe(/&#[0-9]+;|&#x[0-9a-fA-F]+;/),rf=Oe(JJ,"|",jJ),nf=$e("%",qi,";"),eE=Oe($e('"',Oe(/[^%&"]/,"|",nf,"|",rf),"*",'"'),"|",$e("'",Oe(/[^%&']/,"|",nf,"|",rf),"*","'")),$J=Oe('"',Oe(/[^<&"]/,"|",rf),"*",'"',"|","'",Oe(/[^<&']/,"|",rf),"*","'"),VJ=Nl(tf,":"),YJ=Nl(ZC,":"),WC=$e(VJ,YJ,"*"),WJ=$e("^",WC,"$"),sf=$e(WC,Oe(":",WC),"?"),XJ=$e("^",sf,"$"),ZJ=$e("(",sf,")"),ql=Oe(/"[^"]*"|'[^']*'/),ej=$e(/^<\?/,"(",qi,")",Oe(gt,"(?!",Um,")(",Wo,"*?)"),"?",/\?>/),oF=/[\x20\x0D\x0Aa-zA-Z0-9-'()+,./:=?;!*#@$_%]/,of=Oe('"',oF,'*"',"|","'",Nl(oF,"'"),"*'"),uF="<!--",fF="-->",tj=$e(uF,Oe(Nl(Wo,"-"),"|",$e("-",Nl(Wo,"-"))),"*",fF),aF="#PCDATA",rj=Oe($e(/\(/,Qt,aF,Oe(Qt,/\|/,Qt,sf),"*",Qt,/\)\*/),"|",$e(/\(/,Qt,aF,Qt,/\)/)),ij=/[?*+]?/,nj=$e(/\([^>]+\)/,ij),sj=Oe("EMPTY","|","ANY","|",rj,"|",nj),oj="<!ELEMENT",aj=$e(oj,gt,Oe(sf,"|",nf),gt,Oe(sj,"|",nf),Qt,">"),cj=$e("NOTATION",gt,/\(/,Qt,qi,Oe(Qt,/\|/,Qt,qi),"*",Qt,/\)/),lj=$e(/\(/,Qt,sF,Oe(Qt,/\|/,Qt,sF),"*",Qt,/\)/),dj=Oe(cj,"|",lj),uj=Oe(/CDATA|ID|IDREF|IDREFS|ENTITY|ENTITIES|NMTOKEN|NMTOKENS/,"|",dj),fj=Oe(/#REQUIRED|#IMPLIED/,"|",Oe(Oe("#FIXED",gt),"?",$J)),Aj=Oe(gt,qi,gt,uj,gt,fj),hj="<!ATTLIST",gj=$e(hj,gt,qi,Aj,"*",Qt,">"),XC="about:legacy-compat",pj=Oe('"'+XC+'"',"|","'"+XC+"'"),tE="SYSTEM",Rm="PUBLIC",Nm=Oe(Oe(tE,gt,ql),"|",Oe(Rm,gt,of,gt,ql)),mj=$e("^",Oe(Oe(tE,gt,"(?<SystemLiteralOnly>",ql,")"),"|",Oe(Rm,gt,"(?<PubidLiteral>",of,")",gt,"(?<SystemLiteral>",ql,")"))),yj=$e("^",of,"$"),Ij=$e("^",ql,"$"),wj=Oe(gt,"NDATA",gt,qi),xj=Oe(eE,"|",Oe(Nm,wj,"?")),AF="<!ENTITY",Cj=$e(AF,gt,qi,gt,xj,Qt,">"),Ej=Oe(eE,"|",Nm),Bj=$e(AF,gt,"%",gt,qi,gt,Ej,Qt,">"),bj=Oe(Cj,"|",Bj),vj=$e(Rm,gt,of),kj=$e("<!NOTATION",gt,qi,gt,Oe(Nm,"|",vj),Qt,">"),rE=$e(Qt,"=",Qt),cF=/1[.]\d+/,Sj=$e(gt,"version",rE,Oe("'",cF,"'","|",'"',cF,'"')),lF=/[A-Za-z][-A-Za-z0-9._]*/,Dj=Oe(gt,"encoding",rE,Oe('"',lF,'"',"|","'",lF,"'")),Qj=Oe(gt,"standalone",rE,Oe("'",Oe("yes","|","no"),"'","|",'"',Oe("yes","|","no"),'"')),_j=$e(/^<\?xml/,Sj,Dj,"?",Qj,"?",Qt,/\?>/),Fj="<!DOCTYPE",Pj="<![CDATA[",Tj="]]>",Uj=/<!\[CDATA\[/,Rj=/\]\]>/,Nj=$e(Wo,"*?",Rj),qj=$e(Uj,Nj);Ke.chars=Yo;Ke.chars_without=Nl;Ke.detectUnicodeSupport=dF;Ke.reg=$e;Ke.regg=Oe;Ke.ABOUT_LEGACY_COMPAT=XC;Ke.ABOUT_LEGACY_COMPAT_SystemLiteral=pj;Ke.AttlistDecl=gj;Ke.CDATA_START=Pj;Ke.CDATA_END=Tj;Ke.CDSect=qj;Ke.Char=Wo;Ke.Comment=tj;Ke.COMMENT_START=uF;Ke.COMMENT_END=fF;Ke.DOCTYPE_DECL_START=Fj;Ke.elementdecl=aj;Ke.EntityDecl=bj;Ke.EntityValue=eE;Ke.ExternalID=Nm;Ke.ExternalID_match=mj;Ke.Name=qi;Ke.Name_exact=zJ;Ke.NCName_exact=WJ;Ke.NotationDecl=kj;Ke.Reference=rf;Ke.PEReference=nf;Ke.PI=ej;Ke.PUBLIC=Rm;Ke.PubidLiteral=of;Ke.PubidLiteral_match=yj;Ke.QName=sf;Ke.QName_exact=XJ;Ke.QName_group=ZJ;Ke.S=gt;Ke.SChar_s=KJ;Ke.S_OPT=Qt;Ke.SYSTEM=tE;Ke.SystemLiteral=ql;Ke.SystemLiteral_match=Ij;Ke.InvalidChar=HJ;Ke.UNICODE_REPLACEMENT_CHARACTER=LJ;Ke.UNICODE_SUPPORT=Ol;Ke.XMLDecl=_j});var AE=oe(Ht=>{"use strict";var Zi=yc(),$n=Zi.find,Oj=Zi.hasDefaultHTMLNamespace,Ll=Zi.hasOwn,Mj=Zi.isHTMLMimeType,Lj=Zi.isHTMLRawTextElement,Hj=Zi.isHTMLVoidElement,af=Zi.MIME_TYPE,Vn=Zi.NAMESPACE,ai=Symbol(),wF=ef(),ke=wF.DOMException,Jr=wF.DOMExceptionName,Lt=iE();function hi(r){if(r!==ai)throw new TypeError("Illegal constructor")}function Kj(r){return r!==""}function Gj(r){return r?r.split(/[\t\n\f\r ]+/).filter(Kj):[]}function zj(r,e){return Ll(r,e)||(r[e]=!0),r}function hF(r){if(!r)return[];var e=Gj(r);return Object.keys(e.reduce(zj,{}))}function Jj(r){return function(e){return r&&r.indexOf(e)!==-1}}function xF(r){if(!Lt.QName_exact.test(r))throw new ke(ke.INVALID_CHARACTER_ERR,'invalid character in qualified name "'+r+'"')}function sE(r,e){xF(e),r=r||null;var t=null,i=e;if(e.indexOf(":")>=0){var n=e.split(":");t=n[0],i=n[1]}if(t!==null&&r===null)throw new ke(ke.NAMESPACE_ERR,"prefix is non-null and namespace is null");if(t==="xml"&&r!==Zi.NAMESPACE.XML)throw new ke(ke.NAMESPACE_ERR,'prefix is "xml" and namespace is not the XML namespace');if((t==="xmlns"||e==="xmlns")&&r!==Zi.NAMESPACE.XMLNS)throw new ke(ke.NAMESPACE_ERR,'either qualifiedName or prefix is "xmlns" and namespace is not the XMLNS namespace');if(r===Zi.NAMESPACE.XMLNS&&t!=="xmlns"&&e!=="xmlns")throw new ke(ke.NAMESPACE_ERR,'namespace is the XMLNS namespace and neither qualifiedName nor prefix is "xmlns"');return[r,t,i]}function Gl(r,e){for(var t in r)Ll(r,t)&&(e[t]=r[t])}function gi(r,e){var t=r.prototype;if(!(t instanceof e)){let i=function(){};i.prototype=e.prototype,i=new i,Gl(t,i),r.prototype=t=i}t.constructor!=r&&(typeof r!="function"&&console.error("unknown Class:"+r),t.constructor=r)}var pi={},Xi=pi.ELEMENT_NODE=1,Hl=pi.ATTRIBUTE_NODE=2,cf=pi.TEXT_NODE=3,CF=pi.CDATA_SECTION_NODE=4,EF=pi.ENTITY_REFERENCE_NODE=5,jj=pi.ENTITY_NODE=6,oE=pi.PROCESSING_INSTRUCTION_NODE=7,aE=pi.COMMENT_NODE=8,Ml=pi.DOCUMENT_NODE=9,BF=pi.DOCUMENT_TYPE_NODE=10,Xo=pi.DOCUMENT_FRAGMENT_NODE=11,$j=pi.NOTATION_NODE=12,Mt=Zi.freeze({DOCUMENT_POSITION_DISCONNECTED:1,DOCUMENT_POSITION_PRECEDING:2,DOCUMENT_POSITION_FOLLOWING:4,DOCUMENT_POSITION_CONTAINS:8,DOCUMENT_POSITION_CONTAINED_BY:16,DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC:32});function bF(r,e){if(e.length<r.length)return bF(e,r);var t=null;for(var i in r){if(r[i]!==e[i])return t;t=r[i]}return t}function gF(r){return r.guid||(r.guid=Math.random()),r.guid}function Ar(){}Ar.prototype={length:0,item:function(r){return r>=0&&r<this.length?this[r]:null},toString:function(r){var e;typeof r=="function"?e={requireWellFormed:!1,splitCDATASections:!0,nodeFilter:r}:r?e={requireWellFormed:!!r.requireWellFormed,splitCDATASections:r.splitCDATASections!==!1,nodeFilter:r.nodeFilter||null}:e={requireWellFormed:!1,splitCDATASections:!0,nodeFilter:null};for(var t=[],i=0;i<this.length;i++)fE(this[i],t,null,e);return t.join("")},filter:function(r){return Array.prototype.filter.call(this,r)},indexOf:function(r){return Array.prototype.indexOf.call(this,r)}};Ar.prototype[Symbol.iterator]=function(){var r=this,e=0;return{next:function(){return e<r.length?{value:r[e++],done:!1}:{done:!0}},return:function(){return{done:!0}}}};function jn(r,e){this._node=r,this._refresh=e,Lm(this)}function Lm(r){var e=r._node._inc||r._node.ownerDocument._inc;if(r._inc!==e){var t=r._refresh(r._node);if(RF(r,"length",t.length),!r.$$length||t.length<r.$$length)for(var i=t.length;i in r;i++)Ll(r,i)&&delete r[i];Gl(t,r),r._inc=e}}jn.prototype.item=function(r){return Lm(this),this[r]||null};gi(jn,Ar);function Kl(){this._nsIndex=Object.create(null),this._noNsIndex=Object.create(null)}function vF(r,e){for(var t=0;t<r.length;){if(r[t]===e)return t;t++}}function cE(r,e,t){if(!e)return r._noNsIndex;var i=r._nsIndex[e];return!i&&t&&(i=r._nsIndex[e]=Object.create(null)),i}function Vj(r,e,t){var i=cE(r,e,!1),n=i&&i[t];return n||null}function Yj(r,e){cE(r,e.namespaceURI,!0)[e.localName]=e}function Wj(r,e){var t=cE(r,e.namespaceURI,!1);t&&delete t[e.localName]}function Xj(r,e,t,i){if(i?e[vF(e,i)]=t:(e[e.length]=t,e.length++),Yj(e,t),r){t.ownerElement=r;var n=r.ownerDocument;n&&(i&&DF(n,r,i),Zj(n,r,t))}}function pF(r,e,t){var i=vF(e,t);if(i>=0){for(var n=e.length-1;i<=n;)e[i]=e[++i];if(e.length=n,Wj(e,t),r){var s=r.ownerDocument;s&&DF(s,r,t),t.ownerElement=null}}}Kl.prototype={length:0,item:Ar.prototype.item,getNamedItem:function(r){this._ownerElement&&this._ownerElement._isInHTMLDocumentAndNamespace()&&(r=r.toLowerCase());for(var e=0;e<this.length;){var t=this[e];if(t.nodeName===r)return t;e++}return null},setNamedItem:function(r){var e=r.ownerElement;if(e&&e!==this._ownerElement)throw new ke(ke.INUSE_ATTRIBUTE_ERR);var t=Vj(this,r.namespaceURI,r.localName);return t===r?r:(Xj(this._ownerElement,this,r,t),t)},setNamedItemNS:function(r){return this.setNamedItem(r)},removeNamedItem:function(r){var e=this.getNamedItem(r);if(!e)throw new ke(ke.NOT_FOUND_ERR,r);return pF(this._ownerElement,this,e),e},removeNamedItemNS:function(r,e){var t=this.getNamedItemNS(r,e);if(!t)throw new ke(ke.NOT_FOUND_ERR,r?r+" : "+e:e);return pF(this._ownerElement,this,t),t},getNamedItemNS:function(r,e){r||(r=null);for(var t=0;t<this.length;){var i=this[t];if(i.localName===e&&i.namespaceURI===r)return i;t++}return null}};Kl.prototype[Symbol.iterator]=function(){var r=this,e=0;return{next:function(){return e<r.length?{value:r[e++],done:!1}:{done:!0}},return:function(){return{done:!0}}}};function kF(){}kF.prototype={hasFeature:function(r,e){return!0},createDocument:function(r,e,t){var i=af.XML_APPLICATION;r===Vn.HTML?i=af.XML_XHTML_APPLICATION:r===Vn.SVG&&(i=af.XML_SVG_IMAGE);var n=new Ls(ai,{contentType:i});if(n.implementation=this,n.childNodes=new Ar,n.doctype=t||null,t&&n.appendChild(t),e){var s=n.createElementNS(r,e);n.appendChild(s)}return n},createDocumentType:function(r,e,t,i){xF(r);var n=new Gm(ai);return n.name=r,n.nodeName=r,n.publicId=e||"",n.systemId=t||"",n.internalSubset=i||"",n.childNodes=new Ar,n},createHTMLDocument:function(r){var e=new Ls(ai,{contentType:af.HTML});if(e.implementation=this,e.childNodes=new Ar,r!==!1){e.doctype=this.createDocumentType("html"),e.doctype.ownerDocument=e,e.appendChild(e.doctype);var t=e.createElement("html");e.appendChild(t);var i=e.createElement("head");if(t.appendChild(i),typeof r=="string"){var n=e.createElement("title");n.appendChild(e.createTextNode(r)),i.appendChild(n)}t.appendChild(e.createElement("body"))}return e}};function st(r){hi(r)}st.prototype={firstChild:null,lastChild:null,previousSibling:null,nextSibling:null,parentNode:null,get parentElement(){return this.parentNode&&this.parentNode.nodeType===this.ELEMENT_NODE?this.parentNode:null},childNodes:null,ownerDocument:null,nodeValue:null,namespaceURI:null,prefix:null,localName:null,baseURI:"about:blank",get isConnected(){var r=this.getRootNode();return r&&r.nodeType===r.DOCUMENT_NODE},contains:function(r){if(!r)return!1;var e=r;do{if(this===e)return!0;e=e.parentNode}while(e);return!1},getRootNode:function(r){var e=this;do{if(!e.parentNode)return e;e=e.parentNode}while(e)},isEqualNode:function(r){if(!r)return!1;for(var e=[{node:this,other:r}];e.length>0;){var t=e.pop(),i=t.node,n=t.other;if(i.nodeType!==n.nodeType)return!1;switch(i.nodeType){case i.DOCUMENT_TYPE_NODE:if(i.name!==n.name||i.publicId!==n.publicId||i.systemId!==n.systemId)return!1;break;case i.ELEMENT_NODE:if(i.namespaceURI!==n.namespaceURI||i.prefix!==n.prefix||i.localName!==n.localName||i.attributes.length!==n.attributes.length)return!1;for(var s=0;s<i.attributes.length;s++){var o=i.attributes.item(s),a=n.getAttributeNodeNS(o.namespaceURI,o.localName);if(!a)return!1;e.push({node:o,other:a})}break;case i.ATTRIBUTE_NODE:if(i.namespaceURI!==n.namespaceURI||i.localName!==n.localName||i.value!==n.value)return!1;break;case i.PROCESSING_INSTRUCTION_NODE:if(i.target!==n.target||i.data!==n.data)return!1;break;case i.TEXT_NODE:case i.CDATA_SECTION_NODE:case i.COMMENT_NODE:if(i.data!==n.data)return!1;break}if(i.childNodes.length!==n.childNodes.length)return!1;for(var s=i.childNodes.length-1;s>=0;s--)e.push({node:i.childNodes[s],other:n.childNodes[s]})}return!0},isSameNode:function(r){return this===r},insertBefore:function(r,e){return Mm(this,r,e)},replaceChild:function(r,e){Mm(this,r,e,FF),e&&this.removeChild(e)},removeChild:function(r){return QF(this,r)},appendChild:function(r){return this.insertBefore(r,null)},hasChildNodes:function(){return this.firstChild!=null},cloneNode:function(r){return UF(this.ownerDocument||this,this,r)},normalize:function(){Fr(this,null,{enter:function(r){for(var e=r.firstChild;e;){var t=e.nextSibling;if(t!==null&&t.nodeType===cf&&e.nodeType===cf){for(var i=[],n=t;n!==null&&n.nodeType===cf;)i.push(n.data),n=n.nextSibling;for(var s=e.nextSibling;s!==n;){var o=s.nextSibling;s.parentNode=null,s.previousSibling=null,s.nextSibling=null,s=o}e.nextSibling=n,n!==null?n.previousSibling=e:r.lastChild=e,e.appendData(i.join("")),lE(r.ownerDocument,r),e=n}else e=t}return!0}})},isSupported:function(r,e){return this.ownerDocument.implementation.hasFeature(r,e)},lookupPrefix:function(r){for(var e=this;e;){var t=e._nsMap;if(t){for(var i in t)if(Ll(t,i)&&t[i]===r)return i}e=e.nodeType==Hl?e.ownerDocument:e.parentNode}return null},lookupNamespaceURI:function(r){for(var e=this;e;){var t=e._nsMap;if(t&&Ll(t,r))return t[r];e=e.nodeType==Hl?e.ownerDocument:e.parentNode}return null},isDefaultNamespace:function(r){var e=this.lookupPrefix(r);return e==null},compareDocumentPosition:function(r){if(this===r)return 0;var e=r,t=this,i=null,n=null;if(e instanceof Ic&&(i=e,e=i.ownerElement),t instanceof Ic&&(n=t,t=n.ownerElement,i&&e&&t===e))for(var s=0,o;o=t.attributes[s];s++){if(o===i)return Mt.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC+Mt.DOCUMENT_POSITION_PRECEDING;if(o===n)return Mt.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC+Mt.DOCUMENT_POSITION_FOLLOWING}if(!e||!t||t.ownerDocument!==e.ownerDocument)return Mt.DOCUMENT_POSITION_DISCONNECTED+Mt.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC+(gF(t.ownerDocument)>gF(e.ownerDocument)?Mt.DOCUMENT_POSITION_FOLLOWING:Mt.DOCUMENT_POSITION_PRECEDING);if(n&&e===t)return Mt.DOCUMENT_POSITION_CONTAINS+Mt.DOCUMENT_POSITION_PRECEDING;if(i&&e===t)return Mt.DOCUMENT_POSITION_CONTAINED_BY+Mt.DOCUMENT_POSITION_FOLLOWING;for(var a=[],c=e.parentNode;c;){if(!n&&c===t)return Mt.DOCUMENT_POSITION_CONTAINED_BY+Mt.DOCUMENT_POSITION_FOLLOWING;a.push(c),c=c.parentNode}a.reverse();for(var l=[],d=t.parentNode;d;){if(!i&&d===e)return Mt.DOCUMENT_POSITION_CONTAINS+Mt.DOCUMENT_POSITION_PRECEDING;l.push(d),d=d.parentNode}l.reverse();var u=bF(a,l);for(var f in u.childNodes){var h=u.childNodes[f];if(h===t)return Mt.DOCUMENT_POSITION_FOLLOWING;if(h===e)return Mt.DOCUMENT_POSITION_PRECEDING;if(l.indexOf(h)>=0)return Mt.DOCUMENT_POSITION_FOLLOWING;if(a.indexOf(h)>=0)return Mt.DOCUMENT_POSITION_PRECEDING}return 0}};function SF(r){return r=="<"&&"<"||r==">"&&">"||r=="&"&&"&"||r=='"'&&"""||"&#"+r.charCodeAt()+";"}Gl(pi,st);Gl(pi,st.prototype);Gl(Mt,st);Gl(Mt,st.prototype);function Om(r,e){Fr(r,null,{enter:function(t){return e(t)?Fr.STOP:!0}})}function Fr(r,e,t){for(var i=[{node:r,context:e,phase:Fr.ENTER}];i.length>0;){var n=i.pop();if(n.phase===Fr.ENTER){var s=t.enter(n.node,n.context);if(s===Fr.STOP)return Fr.STOP;if(i.push({node:n.node,context:s,phase:Fr.EXIT}),s==null)continue;for(var o=n.node.lastChild;o;)i.push({node:o,context:s,phase:Fr.ENTER}),o=o.previousSibling}else t.exit&&t.exit(n.node,n.context)}}Fr.STOP=Symbol("walkDOM.STOP");Fr.ENTER=0;Fr.EXIT=1;function Ls(r,e){hi(r);var t=e||{};this.ownerDocument=this,this.contentType=t.contentType||af.XML_APPLICATION,this.type=Mj(this.contentType)?"html":"xml"}function Zj(r,e,t){r&&r._inc++;var i=t.namespaceURI;i===Vn.XMLNS&&(e._nsMap[t.prefix?t.localName:""]=t.value)}function DF(r,e,t,i){r&&r._inc++;var n=t.namespaceURI;n===Vn.XMLNS&&delete e._nsMap[t.prefix?t.localName:""]}function lE(r,e,t){if(r&&r._inc){r._inc++;var i=e.childNodes;if(t&&!t.nextSibling)i[i.length++]=t;else{for(var n=e.firstChild,s=0;n;)i[s++]=n,n=n.nextSibling;i.length=s,delete i[i.length]}}}function QF(r,e){if(r!==e.parentNode)throw new ke(ke.NOT_FOUND_ERR,"child's parent is not parent");var t=e.previousSibling,i=e.nextSibling;return t?t.nextSibling=i:r.firstChild=i,i?i.previousSibling=t:r.lastChild=t,lE(r.ownerDocument,r),e.parentNode=null,e.previousSibling=null,e.nextSibling=null,e}function e$(r){return r&&(r.nodeType===st.DOCUMENT_NODE||r.nodeType===st.DOCUMENT_FRAGMENT_NODE||r.nodeType===st.ELEMENT_NODE)}function t$(r){return r&&(r.nodeType===st.CDATA_SECTION_NODE||r.nodeType===st.COMMENT_NODE||r.nodeType===st.DOCUMENT_FRAGMENT_NODE||r.nodeType===st.DOCUMENT_TYPE_NODE||r.nodeType===st.ELEMENT_NODE||r.nodeType===st.PROCESSING_INSTRUCTION_NODE||r.nodeType===st.TEXT_NODE)}function Zo(r){return r&&r.nodeType===st.DOCUMENT_TYPE_NODE}function Ms(r){return r&&r.nodeType===st.ELEMENT_NODE}function _F(r){return r&&r.nodeType===st.TEXT_NODE}function mF(r,e){var t=r.childNodes||[];if($n(t,Ms)||Zo(e))return!1;var i=$n(t,Zo);return!(e&&i&&t.indexOf(i)>t.indexOf(e))}function yF(r,e){var t=r.childNodes||[];function i(s){return Ms(s)&&s!==e}if($n(t,i))return!1;var n=$n(t,Zo);return!(e&&n&&t.indexOf(n)>t.indexOf(e))}function r$(r,e,t){if(!e$(r))throw new ke(ke.HIERARCHY_REQUEST_ERR,"Unexpected parent node type "+r.nodeType);if(t&&t.parentNode!==r)throw new ke(ke.NOT_FOUND_ERR,"child not in parent");if(!t$(e)||Zo(e)&&r.nodeType!==st.DOCUMENT_NODE)throw new ke(ke.HIERARCHY_REQUEST_ERR,"Unexpected node type "+e.nodeType+" for parent node type "+r.nodeType)}function i$(r,e,t){var i=r.childNodes||[],n=e.childNodes||[];if(e.nodeType===st.DOCUMENT_FRAGMENT_NODE){var s=n.filter(Ms);if(s.length>1||$n(n,_F))throw new ke(ke.HIERARCHY_REQUEST_ERR,"More than one element or text in fragment");if(s.length===1&&!mF(r,t))throw new ke(ke.HIERARCHY_REQUEST_ERR,"Element in fragment can not be inserted before doctype")}if(Ms(e)&&!mF(r,t))throw new ke(ke.HIERARCHY_REQUEST_ERR,"Only one element can be added and only after doctype");if(Zo(e)){if($n(i,Zo))throw new ke(ke.HIERARCHY_REQUEST_ERR,"Only one doctype is allowed");var o=$n(i,Ms);if(t&&i.indexOf(o)<i.indexOf(t))throw new ke(ke.HIERARCHY_REQUEST_ERR,"Doctype can only be inserted before an element");if(!t&&o)throw new ke(ke.HIERARCHY_REQUEST_ERR,"Doctype can not be appended since element is present")}}function FF(r,e,t){var i=r.childNodes||[],n=e.childNodes||[];if(e.nodeType===st.DOCUMENT_FRAGMENT_NODE){var s=n.filter(Ms);if(s.length>1||$n(n,_F))throw new ke(ke.HIERARCHY_REQUEST_ERR,"More than one element or text in fragment");if(s.length===1&&!yF(r,t))throw new ke(ke.HIERARCHY_REQUEST_ERR,"Element in fragment can not be inserted before doctype")}if(Ms(e)&&!yF(r,t))throw new ke(ke.HIERARCHY_REQUEST_ERR,"Only one element can be added and only after doctype");if(Zo(e)){if($n(i,function(c){return Zo(c)&&c!==t}))throw new ke(ke.HIERARCHY_REQUEST_ERR,"Only one doctype is allowed");var o=$n(i,Ms);if(t&&i.indexOf(o)<i.indexOf(t))throw new ke(ke.HIERARCHY_REQUEST_ERR,"Doctype can only be inserted before an element")}}function Mm(r,e,t,i){r$(r,e,t),r.nodeType===st.DOCUMENT_NODE&&(i||i$)(r,e,t);var n=e.parentNode;if(n&&n.removeChild(e),e.nodeType===Xo){var s=e.firstChild;if(s==null)return e;var o=e.lastChild}else s=o=e;var a=t?t.previousSibling:r.lastChild;s.previousSibling=a,o.nextSibling=t,a?a.nextSibling=s:r.firstChild=s,t==null?r.lastChild=o:t.previousSibling=o;do s.parentNode=r;while(s!==o&&(s=s.nextSibling));return lE(r.ownerDocument||r,r,e),e.nodeType==Xo&&(e.firstChild=e.lastChild=null),e}Ls.prototype={implementation:null,nodeName:"#document",nodeType:Ml,doctype:null,documentElement:null,_inc:1,insertBefore:function(r,e){if(r.nodeType===Xo){for(var t=r.firstChild;t;){var i=t.nextSibling;this.insertBefore(t,e),t=i}return r}return Mm(this,r,e),r.ownerDocument=this,this.documentElement===null&&r.nodeType===Xi&&(this.documentElement=r),r},removeChild:function(r){var e=QF(this,r);return e===this.documentElement&&(this.documentElement=null),e},replaceChild:function(r,e){Mm(this,r,e,FF),r.ownerDocument=this,e&&this.removeChild(e),Ms(r)&&(this.documentElement=r)},importNode:function(r,e){return n$(this,r,e)},getElementById:function(r){var e=null;return Om(this.documentElement,function(t){if(t.nodeType==Xi&&t.getAttribute("id")==r)return e=t,!0}),e},createElement:function(r){var e=new Hs(ai);e.ownerDocument=this,this.type==="html"&&(r=r.toLowerCase()),Oj(this.contentType)&&(e.namespaceURI=Vn.HTML),e.nodeName=r,e.tagName=r,e.localName=r,e.childNodes=new Ar;var t=e.attributes=new Kl;return t._ownerElement=e,e},createDocumentFragment:function(){var r=new zl(ai);return r.ownerDocument=this,r.childNodes=new Ar,r},createTextNode:function(r){var e=new lf(ai);return e.ownerDocument=this,e.childNodes=new Ar,e.appendData(r),e},createComment:function(r){var e=new Hm(ai);return e.ownerDocument=this,e.childNodes=new Ar,e.appendData(r),e},createCDATASection:function(r){if(r.indexOf("]]>")!==-1)throw new ke(ke.INVALID_CHARACTER_ERR,'data contains "]]>"');var e=new Km(ai);return e.ownerDocument=this,e.childNodes=new Ar,e.appendData(r),e},createProcessingInstruction:function(r,e){var t=new Jm(ai);return t.ownerDocument=this,t.childNodes=new Ar,t.nodeName=t.target=r,t.nodeValue=t.data=e,t},createAttribute:function(r){if(!Lt.QName_exact.test(r))throw new ke(ke.INVALID_CHARACTER_ERR,'invalid character in name "'+r+'"');return this.type==="html"&&(r=r.toLowerCase()),this._createAttribute(r)},_createAttribute:function(r){var e=new Ic(ai);return e.ownerDocument=this,e.childNodes=new Ar,e.name=r,e.nodeName=r,e.localName=r,e.specified=!0,e},createEntityReference:function(r){if(!Lt.Name_exact.test(r))throw new ke(ke.INVALID_CHARACTER_ERR,'not a valid xml name "'+r+'"');if(this.type==="html")throw new ke("document is an html document",Jr.NotSupportedError);var e=new zm(ai);return e.ownerDocument=this,e.childNodes=new Ar,e.nodeName=r,e},createElementNS:function(r,e){var t=sE(r,e),i=new Hs(ai),n=i.attributes=new Kl;return i.childNodes=new Ar,i.ownerDocument=this,i.nodeName=e,i.tagName=e,i.namespaceURI=t[0],i.prefix=t[1],i.localName=t[2],n._ownerElement=i,i},createAttributeNS:function(r,e){var t=sE(r,e),i=new Ic(ai);return i.ownerDocument=this,i.childNodes=new Ar,i.nodeName=e,i.name=e,i.specified=!0,i.namespaceURI=t[0],i.prefix=t[1],i.localName=t[2],i}};gi(Ls,st);function Hs(r){hi(r),this._nsMap=Object.create(null)}Hs.prototype={nodeType:Xi,attributes:null,getQualifiedName:function(){return this.prefix?this.prefix+":"+this.localName:this.localName},_isInHTMLDocumentAndNamespace:function(){return this.ownerDocument.type==="html"&&this.namespaceURI===Vn.HTML},hasAttributes:function(){return!!(this.attributes&&this.attributes.length)},hasAttribute:function(r){return!!this.getAttributeNode(r)},getAttribute:function(r){var e=this.getAttributeNode(r);return e?e.value:null},getAttributeNode:function(r){return this._isInHTMLDocumentAndNamespace()&&(r=r.toLowerCase()),this.attributes.getNamedItem(r)},setAttribute:function(r,e){this._isInHTMLDocumentAndNamespace()&&(r=r.toLowerCase());var t=this.getAttributeNode(r);t?t.value=t.nodeValue=""+e:(t=this.ownerDocument._createAttribute(r),t.value=t.nodeValue=""+e,this.setAttributeNode(t))},removeAttribute:function(r){var e=this.getAttributeNode(r);e&&this.removeAttributeNode(e)},setAttributeNode:function(r){return this.attributes.setNamedItem(r)},setAttributeNodeNS:function(r){return this.attributes.setNamedItemNS(r)},removeAttributeNode:function(r){return this.attributes.removeNamedItem(r.nodeName)},removeAttributeNS:function(r,e){var t=this.getAttributeNodeNS(r,e);t&&this.removeAttributeNode(t)},hasAttributeNS:function(r,e){return this.getAttributeNodeNS(r,e)!=null},getAttributeNS:function(r,e){var t=this.getAttributeNodeNS(r,e);return t?t.value:null},setAttributeNS:function(r,e,t){var i=sE(r,e),n=i[2],s=this.getAttributeNodeNS(r,n);s?s.value=s.nodeValue=""+t:(s=this.ownerDocument.createAttributeNS(r,e),s.value=s.nodeValue=""+t,this.setAttributeNode(s))},getAttributeNodeNS:function(r,e){return this.attributes.getNamedItemNS(r,e)},getElementsByClassName:function(r){var e=hF(r);return new jn(this,function(t){var i=[];return e.length>0&&Om(t,function(n){if(n!==t&&n.nodeType===Xi){var s=n.getAttribute("class");if(s){var o=r===s;if(!o){var a=hF(s);o=e.every(Jj(a))}o&&i.push(n)}}}),i})},getElementsByTagName:function(r){var e=(this.nodeType===Ml?this:this.ownerDocument).type==="html",t=r.toLowerCase();return new jn(this,function(i){var n=[];return Om(i,function(s){if(!(s===i||s.nodeType!==Xi))if(r==="*")n.push(s);else{var o=s.getQualifiedName(),a=e&&s.namespaceURI===Vn.HTML?t:r;o===a&&n.push(s)}}),n})},getElementsByTagNameNS:function(r,e){return new jn(this,function(t){var i=[];return Om(t,function(n){n!==t&&n.nodeType===Xi&&(r==="*"||n.namespaceURI===r)&&(e==="*"||n.localName==e)&&i.push(n)}),i})}};Ls.prototype.getElementsByClassName=Hs.prototype.getElementsByClassName;Ls.prototype.getElementsByTagName=Hs.prototype.getElementsByTagName;Ls.prototype.getElementsByTagNameNS=Hs.prototype.getElementsByTagNameNS;gi(Hs,st);function Ic(r){hi(r),this.namespaceURI=null,this.prefix=null,this.ownerElement=null}Ic.prototype.nodeType=Hl;gi(Ic,st);function ea(r){hi(r)}ea.prototype={data:"",substringData:function(r,e){return this.data.substring(r,r+e)},appendData:function(r){r=this.data+r,this.nodeValue=this.data=r,this.length=r.length},insertData:function(r,e){this.replaceData(r,0,e)},deleteData:function(r,e){this.replaceData(r,e,"")},replaceData:function(r,e,t){var i=this.data.substring(0,r),n=this.data.substring(r+e);t=i+t+n,this.nodeValue=this.data=t,this.length=t.length}};gi(ea,st);function lf(r){hi(r)}lf.prototype={nodeName:"#text",nodeType:cf,splitText:function(r){var e=this.data,t=e.substring(r);e=e.substring(0,r),this.data=this.nodeValue=e,this.length=e.length;var i=this.ownerDocument.createTextNode(t);return this.parentNode&&this.parentNode.insertBefore(i,this.nextSibling),i}};gi(lf,ea);function Hm(r){hi(r)}Hm.prototype={nodeName:"#comment",nodeType:aE};gi(Hm,ea);function Km(r){hi(r)}Km.prototype={nodeName:"#cdata-section",nodeType:CF};gi(Km,lf);function Gm(r){hi(r)}Gm.prototype.nodeType=BF;gi(Gm,st);function dE(r){hi(r)}dE.prototype.nodeType=$j;gi(dE,st);function uE(r){hi(r)}uE.prototype.nodeType=jj;gi(uE,st);function zm(r){hi(r)}zm.prototype.nodeType=EF;gi(zm,st);function zl(r){hi(r)}zl.prototype.nodeName="#document-fragment";zl.prototype.nodeType=Xo;gi(zl,st);function Jm(r){hi(r)}Jm.prototype.nodeType=oE;gi(Jm,ea);function PF(){}PF.prototype.serializeToString=function(r,e){return TF.call(r,e)};st.prototype.toString=TF;function TF(r){var e;typeof r=="function"?e={requireWellFormed:!1,splitCDATASections:!0,nodeFilter:r}:r!=null?e={requireWellFormed:!!r.requireWellFormed,splitCDATASections:r.splitCDATASections!==!1,nodeFilter:r.nodeFilter||null}:e={requireWellFormed:!1,splitCDATASections:!0,nodeFilter:null};var t=[],i=this.nodeType===Ml&&this.documentElement||this,n=i.prefix,s=i.namespaceURI;if(s&&n==null){var n=i.lookupPrefix(s);if(n==null)var o=[{namespace:s,prefix:null}]}return fE(this,t,o,e),t.join("")}function IF(r,e,t){var i=r.prefix||"",n=r.namespaceURI;if(!n||i==="xml"&&n===Vn.XML||n===Vn.XMLNS)return!1;for(var s=t.length;s--;){var o=t[s];if(o.prefix===i)return o.namespace!==n}return!0}function qm(r,e,t,i){if(i&&!Lt.QName_exact.test(e))throw new ke('The attribute name "'+e+'" is not a valid XML QName',Jr.InvalidStateError);r.push(" ",e,'="',t.replace(/[<>&"\t\n\r]/g,SF),'"')}function fE(r,e,t,i){t||(t=[]);var n=i.nodeFilter,s=i.requireWellFormed,o=i.splitCDATASections,a=r.nodeType===Ml?r:r.ownerDocument,c=a.type==="html";Fr(r,{ns:t},{enter:function(l,d){var u=d.ns;if(n)if(l=n(l),l){if(typeof l=="string")return e.push(l),null}else return null;switch(l.nodeType){case Xi:var f=l.attributes,h=f.length,g=l.tagName,p=g;if(!c&&!l.prefix&&l.namespaceURI){for(var I,y=0;y<f.length;y++)if(f.item(y).name==="xmlns"){I=f.item(y).value;break}if(!I)for(var w=u.length-1;w>=0;w--){var C=u[w];if(C.prefix===""&&C.namespace===l.namespaceURI){I=C.namespace;break}}if(I!==l.namespaceURI)for(var w=u.length-1;w>=0;w--){var C=u[w];if(C.namespace===l.namespaceURI){C.prefix&&(p=C.prefix+":"+g);break}}}if(s&&!Lt.QName_exact.test(p))throw new ke('The element name "'+p+'" is not a valid XML QName',Jr.InvalidStateError);e.push("<",p);for(var b=u.slice(),x=0;x<h;x++){var _=f.item(x);_.prefix=="xmlns"?b.push({prefix:_.localName,namespace:_.value}):_.nodeName=="xmlns"&&b.push({prefix:"",namespace:_.value})}for(var x=0;x<h;x++){var _=f.item(x);if(IF(_,c,b)){var R=_.prefix||"",U=_.namespaceURI;qm(e,R?"xmlns:"+R:"xmlns",U,s),b.push({prefix:R,namespace:U})}var T=n?n(_):_;T&&(typeof T=="string"?e.push(T):qm(e,T.name,T.value,s))}if(g===p&&IF(l,c,b)){var D=l.prefix||"",U=l.namespaceURI;qm(e,D?"xmlns:"+D:"xmlns",U,s),b.push({prefix:D,namespace:U})}var B=!l.firstChild;if(B&&(c||l.namespaceURI===Vn.HTML)&&(B=Hj(g)),B)return e.push("/>"),null;if(e.push(">"),c&&Lj(g)){for(var Q=l.firstChild;Q;)Q.data?e.push(Q.data):fE(Q,e,b.slice(),i),Q=Q.nextSibling;return e.push("</",p,">"),null}return{ns:b,tag:p};case Ml:case Xo:if(s&&l.nodeType===Ml&&l.documentElement==null)throw new ke("The Document has no documentElement",Jr.InvalidStateError);return{ns:u};case Hl:return qm(e,l.name,l.value,s),null;case cf:if(s&&Lt.InvalidChar.test(l.data))throw new ke("The Text node data contains characters outside the XML Char production",Jr.InvalidStateError);return e.push(l.data.replace(/[<&>]/g,SF)),null;case CF:if(s&&l.data.indexOf("]]>")!==-1)throw new ke('The CDATASection data contains "]]>"',Jr.InvalidStateError);return o?e.push(Lt.CDATA_START,l.data.replace(/]]>/g,"]]]]><![CDATA[>"),Lt.CDATA_END):e.push(Lt.CDATA_START,l.data,Lt.CDATA_END),null;case aE:if(s){if(Lt.InvalidChar.test(l.data))throw new ke("The comment node data contains characters outside the XML Char production",Jr.InvalidStateError);if(l.data.indexOf("--")!==-1||l.data[l.data.length-1]==="-")throw new ke('The comment node data contains "--" or ends with "-"',Jr.InvalidStateError)}return e.push(Lt.COMMENT_START,l.data,Lt.COMMENT_END),null;case BF:var v=l.publicId,E=l.systemId;if(s){if(!Lt.Name_exact.test(l.name))throw new ke('The doctype name "'+l.name+'" is not a valid XML Name',Jr.InvalidStateError);if(v&&!Lt.PubidLiteral_match.test(v))throw new ke("DocumentType publicId is not a valid PubidLiteral",Jr.InvalidStateError);if(E&&E!=="."&&!Lt.SystemLiteral_match.test(E))throw new ke("DocumentType systemId is not a valid SystemLiteral",Jr.InvalidStateError);if(l.internalSubset&&l.internalSubset.indexOf("]>")!==-1)throw new ke('DocumentType internalSubset contains "]>"',Jr.InvalidStateError)}return e.push(Lt.DOCTYPE_DECL_START," ",l.name),v?(e.push(" ",Lt.PUBLIC," ",v),E&&E!=="."&&e.push(" ",E)):E&&E!=="."&&e.push(" ",Lt.SYSTEM," ",E),l.internalSubset&&e.push(" [",l.internalSubset,"]"),e.push(">"),null;case oE:if(s){if(!Lt.NCName_exact.test(l.target)||l.target.toLowerCase()==="xml")throw new ke('The processing instruction target "'+l.target+'" is not a valid XML NCName or is reserved',Jr.InvalidStateError);if(Lt.InvalidChar.test(l.data))throw new ke("The ProcessingInstruction data contains characters outside the XML Char production",Jr.InvalidStateError);if(l.data.indexOf("?>")!==-1)throw new ke('The ProcessingInstruction data contains "?>"',Jr.InvalidStateError)}return e.push("<?",l.target," ",l.data,"?>"),null;case EF:if(s&&!Lt.Name_exact.test(l.nodeName))throw new ke('The entity reference name "'+l.nodeName+'" is not a valid XML Name',Jr.InvalidStateError);return e.push("&",l.nodeName,";"),null;default:return e.push("??",l.nodeName),null}},exit:function(l,d){d&&d.tag&&e.push("</",d.tag,">")}})}function n$(r,e,t){var i;return Fr(e,null,{enter:function(n,s){var o=n.cloneNode(!1);o.ownerDocument=r,o.parentNode=null,s===null?i=o:s.appendChild(o);var a=n.nodeType===Hl||t;return a?o:null}}),i}function UF(r,e,t){var i;return Fr(e,null,{enter:function(n,s){var o=new n.constructor(ai);for(var a in n)if(Ll(n,a)){var c=n[a];typeof c!="object"&&c!=o[a]&&(o[a]=c)}n.childNodes&&(o.childNodes=new Ar),o.ownerDocument=r;var l=t;switch(o.nodeType){case Xi:var d=n.attributes,u=o.attributes=new Kl,f=d.length;u._ownerElement=o;for(var h=0;h<f;h++)o.setAttributeNode(UF(r,d.item(h),!0));break;case Hl:l=!0}return s!==null?s.appendChild(o):i=o,l?o:null}}),i}function RF(r,e,t){r[e]=t}function nE(r){for(var e=[],t=r.firstChild;t;)t.nodeType===Xi&&e.push(t),t=t.nextSibling;return e}try{Object.defineProperty&&(Object.defineProperty(jn.prototype,"length",{get:function(){return Lm(this),this.$$length}}),Object.defineProperty(st.prototype,"textContent",{get:function(){if(this.nodeType===Xi||this.nodeType===Xo){var r=[];return Fr(this,null,{enter:function(e){if(e.nodeType===Xi||e.nodeType===Xo)return!0;if(e.nodeType===oE||e.nodeType===aE)return null;r.push(e.nodeValue)}}),r.join("")}return this.nodeValue},set:function(r){switch(this.nodeType){case Xi:case Xo:for(;this.firstChild;)this.removeChild(this.firstChild);(r||String(r))&&this.appendChild(this.ownerDocument.createTextNode(r));break;default:this.data=r,this.value=r,this.nodeValue=r}}}),Object.defineProperty(ea.prototype,"data",{get:function(){return this._data!=null?this._data:""},set:function(r){this._data=r,this.length=typeof r=="string"?r.length:0}}),Object.defineProperty(ea.prototype,"nodeValue",{get:function(){return this.data},set:function(r){this.data=r},enumerable:!0,configurable:!0}),Object.defineProperty(Hs.prototype,"children",{get:function(){return new jn(this,nE)}}),Object.defineProperty(Ls.prototype,"children",{get:function(){return new jn(this,nE)}}),Object.defineProperty(zl.prototype,"children",{get:function(){return new jn(this,nE)}}),RF=function(r,e,t){r["$$"+e]=t})}catch{}Ht._updateLiveList=Lm;Ht.Attr=Ic;Ht.CDATASection=Km;Ht.CharacterData=ea;Ht.Comment=Hm;Ht.Document=Ls;Ht.DocumentFragment=zl;Ht.DocumentType=Gm;Ht.DOMImplementation=kF;Ht.Element=Hs;Ht.Entity=uE;Ht.EntityReference=zm;Ht.LiveNodeList=jn;Ht.NamedNodeMap=Kl;Ht.Node=st;Ht.NodeList=Ar;Ht.Notation=dE;Ht.Text=lf;Ht.ProcessingInstruction=Jm;Ht.walkDOM=Fr;Ht.XMLSerializer=PF});var qF=oe(df=>{"use strict";var NF=yc().freeze;df.XML_ENTITIES=NF({amp:"&",apos:"'",gt:">",lt:"<",quot:'"'});df.HTML_ENTITIES=NF({Aacute:"\xC1",aacute:"\xE1",Abreve:"\u0102",abreve:"\u0103",ac:"\u223E",acd:"\u223F",acE:"\u223E\u0333",Acirc:"\xC2",acirc:"\xE2",acute:"\xB4",Acy:"\u0410",acy:"\u0430",AElig:"\xC6",aelig:"\xE6",af:"\u2061",Afr:"\u{1D504}",afr:"\u{1D51E}",Agrave:"\xC0",agrave:"\xE0",alefsym:"\u2135",aleph:"\u2135",Alpha:"\u0391",alpha:"\u03B1",Amacr:"\u0100",amacr:"\u0101",amalg:"\u2A3F",AMP:"&",amp:"&",And:"\u2A53",and:"\u2227",andand:"\u2A55",andd:"\u2A5C",andslope:"\u2A58",andv:"\u2A5A",ang:"\u2220",ange:"\u29A4",angle:"\u2220",angmsd:"\u2221",angmsdaa:"\u29A8",angmsdab:"\u29A9",angmsdac:"\u29AA",angmsdad:"\u29AB",angmsdae:"\u29AC",angmsdaf:"\u29AD",angmsdag:"\u29AE",angmsdah:"\u29AF",angrt:"\u221F",angrtvb:"\u22BE",angrtvbd:"\u299D",angsph:"\u2222",angst:"\xC5",angzarr:"\u237C",Aogon:"\u0104",aogon:"\u0105",Aopf:"\u{1D538}",aopf:"\u{1D552}",ap:"\u2248",apacir:"\u2A6F",apE:"\u2A70",ape:"\u224A",apid:"\u224B",apos:"'",ApplyFunction:"\u2061",approx:"\u2248",approxeq:"\u224A",Aring:"\xC5",aring:"\xE5",Ascr:"\u{1D49C}",ascr:"\u{1D4B6}",Assign:"\u2254",ast:"*",asymp:"\u2248",asympeq:"\u224D",Atilde:"\xC3",atilde:"\xE3",Auml:"\xC4",auml:"\xE4",awconint:"\u2233",awint:"\u2A11",backcong:"\u224C",backepsilon:"\u03F6",backprime:"\u2035",backsim:"\u223D",backsimeq:"\u22CD",Backslash:"\u2216",Barv:"\u2AE7",barvee:"\u22BD",Barwed:"\u2306",barwed:"\u2305",barwedge:"\u2305",bbrk:"\u23B5",bbrktbrk:"\u23B6",bcong:"\u224C",Bcy:"\u0411",bcy:"\u0431",bdquo:"\u201E",becaus:"\u2235",Because:"\u2235",because:"\u2235",bemptyv:"\u29B0",bepsi:"\u03F6",bernou:"\u212C",Bernoullis:"\u212C",Beta:"\u0392",beta:"\u03B2",beth:"\u2136",between:"\u226C",Bfr:"\u{1D505}",bfr:"\u{1D51F}",bigcap:"\u22C2",bigcirc:"\u25EF",bigcup:"\u22C3",bigodot:"\u2A00",bigoplus:"\u2A01",bigotimes:"\u2A02",bigsqcup:"\u2A06",bigstar:"\u2605",bigtriangledown:"\u25BD",bigtriangleup:"\u25B3",biguplus:"\u2A04",bigvee:"\u22C1",bigwedge:"\u22C0",bkarow:"\u290D",blacklozenge:"\u29EB",blacksquare:"\u25AA",blacktriangle:"\u25B4",blacktriangledown:"\u25BE",blacktriangleleft:"\u25C2",blacktriangleright:"\u25B8",blank:"\u2423",blk12:"\u2592",blk14:"\u2591",blk34:"\u2593",block:"\u2588",bne:"=\u20E5",bnequiv:"\u2261\u20E5",bNot:"\u2AED",bnot:"\u2310",Bopf:"\u{1D539}",bopf:"\u{1D553}",bot:"\u22A5",bottom:"\u22A5",bowtie:"\u22C8",boxbox:"\u29C9",boxDL:"\u2557",boxDl:"\u2556",boxdL:"\u2555",boxdl:"\u2510",boxDR:"\u2554",boxDr:"\u2553",boxdR:"\u2552",boxdr:"\u250C",boxH:"\u2550",boxh:"\u2500",boxHD:"\u2566",boxHd:"\u2564",boxhD:"\u2565",boxhd:"\u252C",boxHU:"\u2569",boxHu:"\u2567",boxhU:"\u2568",boxhu:"\u2534",boxminus:"\u229F",boxplus:"\u229E",boxtimes:"\u22A0",boxUL:"\u255D",boxUl:"\u255C",boxuL:"\u255B",boxul:"\u2518",boxUR:"\u255A",boxUr:"\u2559",boxuR:"\u2558",boxur:"\u2514",boxV:"\u2551",boxv:"\u2502",boxVH:"\u256C",boxVh:"\u256B",boxvH:"\u256A",boxvh:"\u253C",boxVL:"\u2563",boxVl:"\u2562",boxvL:"\u2561",boxvl:"\u2524",boxVR:"\u2560",boxVr:"\u255F",boxvR:"\u255E",boxvr:"\u251C",bprime:"\u2035",Breve:"\u02D8",breve:"\u02D8",brvbar:"\xA6",Bscr:"\u212C",bscr:"\u{1D4B7}",bsemi:"\u204F",bsim:"\u223D",bsime:"\u22CD",bsol:"\\",bsolb:"\u29C5",bsolhsub:"\u27C8",bull:"\u2022",bullet:"\u2022",bump:"\u224E",bumpE:"\u2AAE",bumpe:"\u224F",Bumpeq:"\u224E",bumpeq:"\u224F",Cacute:"\u0106",cacute:"\u0107",Cap:"\u22D2",cap:"\u2229",capand:"\u2A44",capbrcup:"\u2A49",capcap:"\u2A4B",capcup:"\u2A47",capdot:"\u2A40",CapitalDifferentialD:"\u2145",caps:"\u2229\uFE00",caret:"\u2041",caron:"\u02C7",Cayleys:"\u212D",ccaps:"\u2A4D",Ccaron:"\u010C",ccaron:"\u010D",Ccedil:"\xC7",ccedil:"\xE7",Ccirc:"\u0108",ccirc:"\u0109",Cconint:"\u2230",ccups:"\u2A4C",ccupssm:"\u2A50",Cdot:"\u010A",cdot:"\u010B",cedil:"\xB8",Cedilla:"\xB8",cemptyv:"\u29B2",cent:"\xA2",CenterDot:"\xB7",centerdot:"\xB7",Cfr:"\u212D",cfr:"\u{1D520}",CHcy:"\u0427",chcy:"\u0447",check:"\u2713",checkmark:"\u2713",Chi:"\u03A7",chi:"\u03C7",cir:"\u25CB",circ:"\u02C6",circeq:"\u2257",circlearrowleft:"\u21BA",circlearrowright:"\u21BB",circledast:"\u229B",circledcirc:"\u229A",circleddash:"\u229D",CircleDot:"\u2299",circledR:"\xAE",circledS:"\u24C8",CircleMinus:"\u2296",CirclePlus:"\u2295",CircleTimes:"\u2297",cirE:"\u29C3",cire:"\u2257",cirfnint:"\u2A10",cirmid:"\u2AEF",cirscir:"\u29C2",ClockwiseContourIntegral:"\u2232",CloseCurlyDoubleQuote:"\u201D",CloseCurlyQuote:"\u2019",clubs:"\u2663",clubsuit:"\u2663",Colon:"\u2237",colon:":",Colone:"\u2A74",colone:"\u2254",coloneq:"\u2254",comma:",",commat:"@",comp:"\u2201",compfn:"\u2218",complement:"\u2201",complexes:"\u2102",cong:"\u2245",congdot:"\u2A6D",Congruent:"\u2261",Conint:"\u222F",conint:"\u222E",ContourIntegral:"\u222E",Copf:"\u2102",copf:"\u{1D554}",coprod:"\u2210",Coproduct:"\u2210",COPY:"\xA9",copy:"\xA9",copysr:"\u2117",CounterClockwiseContourIntegral:"\u2233",crarr:"\u21B5",Cross:"\u2A2F",cross:"\u2717",Cscr:"\u{1D49E}",cscr:"\u{1D4B8}",csub:"\u2ACF",csube:"\u2AD1",csup:"\u2AD0",csupe:"\u2AD2",ctdot:"\u22EF",cudarrl:"\u2938",cudarrr:"\u2935",cuepr:"\u22DE",cuesc:"\u22DF",cularr:"\u21B6",cularrp:"\u293D",Cup:"\u22D3",cup:"\u222A",cupbrcap:"\u2A48",CupCap:"\u224D",cupcap:"\u2A46",cupcup:"\u2A4A",cupdot:"\u228D",cupor:"\u2A45",cups:"\u222A\uFE00",curarr:"\u21B7",curarrm:"\u293C",curlyeqprec:"\u22DE",curlyeqsucc:"\u22DF",curlyvee:"\u22CE",curlywedge:"\u22CF",curren:"\xA4",curvearrowleft:"\u21B6",curvearrowright:"\u21B7",cuvee:"\u22CE",cuwed:"\u22CF",cwconint:"\u2232",cwint:"\u2231",cylcty:"\u232D",Dagger:"\u2021",dagger:"\u2020",daleth:"\u2138",Darr:"\u21A1",dArr:"\u21D3",darr:"\u2193",dash:"\u2010",Dashv:"\u2AE4",dashv:"\u22A3",dbkarow:"\u290F",dblac:"\u02DD",Dcaron:"\u010E",dcaron:"\u010F",Dcy:"\u0414",dcy:"\u0434",DD:"\u2145",dd:"\u2146",ddagger:"\u2021",ddarr:"\u21CA",DDotrahd:"\u2911",ddotseq:"\u2A77",deg:"\xB0",Del:"\u2207",Delta:"\u0394",delta:"\u03B4",demptyv:"\u29B1",dfisht:"\u297F",Dfr:"\u{1D507}",dfr:"\u{1D521}",dHar:"\u2965",dharl:"\u21C3",dharr:"\u21C2",DiacriticalAcute:"\xB4",DiacriticalDot:"\u02D9",DiacriticalDoubleAcute:"\u02DD",DiacriticalGrave:"`",DiacriticalTilde:"\u02DC",diam:"\u22C4",Diamond:"\u22C4",diamond:"\u22C4",diamondsuit:"\u2666",diams:"\u2666",die:"\xA8",DifferentialD:"\u2146",digamma:"\u03DD",disin:"\u22F2",div:"\xF7",divide:"\xF7",divideontimes:"\u22C7",divonx:"\u22C7",DJcy:"\u0402",djcy:"\u0452",dlcorn:"\u231E",dlcrop:"\u230D",dollar:"$",Dopf:"\u{1D53B}",dopf:"\u{1D555}",Dot:"\xA8",dot:"\u02D9",DotDot:"\u20DC",doteq:"\u2250",doteqdot:"\u2251",DotEqual:"\u2250",dotminus:"\u2238",dotplus:"\u2214",dotsquare:"\u22A1",doublebarwedge:"\u2306",DoubleContourIntegral:"\u222F",DoubleDot:"\xA8",DoubleDownArrow:"\u21D3",DoubleLeftArrow:"\u21D0",DoubleLeftRightArrow:"\u21D4",DoubleLeftTee:"\u2AE4",DoubleLongLeftArrow:"\u27F8",DoubleLongLeftRightArrow:"\u27FA",DoubleLongRightArrow:"\u27F9",DoubleRightArrow:"\u21D2",DoubleRightTee:"\u22A8",DoubleUpArrow:"\u21D1",DoubleUpDownArrow:"\u21D5",DoubleVerticalBar:"\u2225",DownArrow:"\u2193",Downarrow:"\u21D3",downarrow:"\u2193",DownArrowBar:"\u2913",DownArrowUpArrow:"\u21F5",DownBreve:"\u0311",downdownarrows:"\u21CA",downharpoonleft:"\u21C3",downharpoonright:"\u21C2",DownLeftRightVector:"\u2950",DownLeftTeeVector:"\u295E",DownLeftVector:"\u21BD",DownLeftVectorBar:"\u2956",DownRightTeeVector:"\u295F",DownRightVector:"\u21C1",DownRightVectorBar:"\u2957",DownTee:"\u22A4",DownTeeArrow:"\u21A7",drbkarow:"\u2910",drcorn:"\u231F",drcrop:"\u230C",Dscr:"\u{1D49F}",dscr:"\u{1D4B9}",DScy:"\u0405",dscy:"\u0455",dsol:"\u29F6",Dstrok:"\u0110",dstrok:"\u0111",dtdot:"\u22F1",dtri:"\u25BF",dtrif:"\u25BE",duarr:"\u21F5",duhar:"\u296F",dwangle:"\u29A6",DZcy:"\u040F",dzcy:"\u045F",dzigrarr:"\u27FF",Eacute:"\xC9",eacute:"\xE9",easter:"\u2A6E",Ecaron:"\u011A",ecaron:"\u011B",ecir:"\u2256",Ecirc:"\xCA",ecirc:"\xEA",ecolon:"\u2255",Ecy:"\u042D",ecy:"\u044D",eDDot:"\u2A77",Edot:"\u0116",eDot:"\u2251",edot:"\u0117",ee:"\u2147",efDot:"\u2252",Efr:"\u{1D508}",efr:"\u{1D522}",eg:"\u2A9A",Egrave:"\xC8",egrave:"\xE8",egs:"\u2A96",egsdot:"\u2A98",el:"\u2A99",Element:"\u2208",elinters:"\u23E7",ell:"\u2113",els:"\u2A95",elsdot:"\u2A97",Emacr:"\u0112",emacr:"\u0113",empty:"\u2205",emptyset:"\u2205",EmptySmallSquare:"\u25FB",emptyv:"\u2205",EmptyVerySmallSquare:"\u25AB",emsp:"\u2003",emsp13:"\u2004",emsp14:"\u2005",ENG:"\u014A",eng:"\u014B",ensp:"\u2002",Eogon:"\u0118",eogon:"\u0119",Eopf:"\u{1D53C}",eopf:"\u{1D556}",epar:"\u22D5",eparsl:"\u29E3",eplus:"\u2A71",epsi:"\u03B5",Epsilon:"\u0395",epsilon:"\u03B5",epsiv:"\u03F5",eqcirc:"\u2256",eqcolon:"\u2255",eqsim:"\u2242",eqslantgtr:"\u2A96",eqslantless:"\u2A95",Equal:"\u2A75",equals:"=",EqualTilde:"\u2242",equest:"\u225F",Equilibrium:"\u21CC",equiv:"\u2261",equivDD:"\u2A78",eqvparsl:"\u29E5",erarr:"\u2971",erDot:"\u2253",Escr:"\u2130",escr:"\u212F",esdot:"\u2250",Esim:"\u2A73",esim:"\u2242",Eta:"\u0397",eta:"\u03B7",ETH:"\xD0",eth:"\xF0",Euml:"\xCB",euml:"\xEB",euro:"\u20AC",excl:"!",exist:"\u2203",Exists:"\u2203",expectation:"\u2130",ExponentialE:"\u2147",exponentiale:"\u2147",fallingdotseq:"\u2252",Fcy:"\u0424",fcy:"\u0444",female:"\u2640",ffilig:"\uFB03",fflig:"\uFB00",ffllig:"\uFB04",Ffr:"\u{1D509}",ffr:"\u{1D523}",filig:"\uFB01",FilledSmallSquare:"\u25FC",FilledVerySmallSquare:"\u25AA",fjlig:"fj",flat:"\u266D",fllig:"\uFB02",fltns:"\u25B1",fnof:"\u0192",Fopf:"\u{1D53D}",fopf:"\u{1D557}",ForAll:"\u2200",forall:"\u2200",fork:"\u22D4",forkv:"\u2AD9",Fouriertrf:"\u2131",fpartint:"\u2A0D",frac12:"\xBD",frac13:"\u2153",frac14:"\xBC",frac15:"\u2155",frac16:"\u2159",frac18:"\u215B",frac23:"\u2154",frac25:"\u2156",frac34:"\xBE",frac35:"\u2157",frac38:"\u215C",frac45:"\u2158",frac56:"\u215A",frac58:"\u215D",frac78:"\u215E",frasl:"\u2044",frown:"\u2322",Fscr:"\u2131",fscr:"\u{1D4BB}",gacute:"\u01F5",Gamma:"\u0393",gamma:"\u03B3",Gammad:"\u03DC",gammad:"\u03DD",gap:"\u2A86",Gbreve:"\u011E",gbreve:"\u011F",Gcedil:"\u0122",Gcirc:"\u011C",gcirc:"\u011D",Gcy:"\u0413",gcy:"\u0433",Gdot:"\u0120",gdot:"\u0121",gE:"\u2267",ge:"\u2265",gEl:"\u2A8C",gel:"\u22DB",geq:"\u2265",geqq:"\u2267",geqslant:"\u2A7E",ges:"\u2A7E",gescc:"\u2AA9",gesdot:"\u2A80",gesdoto:"\u2A82",gesdotol:"\u2A84",gesl:"\u22DB\uFE00",gesles:"\u2A94",Gfr:"\u{1D50A}",gfr:"\u{1D524}",Gg:"\u22D9",gg:"\u226B",ggg:"\u22D9",gimel:"\u2137",GJcy:"\u0403",gjcy:"\u0453",gl:"\u2277",gla:"\u2AA5",glE:"\u2A92",glj:"\u2AA4",gnap:"\u2A8A",gnapprox:"\u2A8A",gnE:"\u2269",gne:"\u2A88",gneq:"\u2A88",gneqq:"\u2269",gnsim:"\u22E7",Gopf:"\u{1D53E}",gopf:"\u{1D558}",grave:"`",GreaterEqual:"\u2265",GreaterEqualLess:"\u22DB",GreaterFullEqual:"\u2267",GreaterGreater:"\u2AA2",GreaterLess:"\u2277",GreaterSlantEqual:"\u2A7E",GreaterTilde:"\u2273",Gscr:"\u{1D4A2}",gscr:"\u210A",gsim:"\u2273",gsime:"\u2A8E",gsiml:"\u2A90",Gt:"\u226B",GT:">",gt:">",gtcc:"\u2AA7",gtcir:"\u2A7A",gtdot:"\u22D7",gtlPar:"\u2995",gtquest:"\u2A7C",gtrapprox:"\u2A86",gtrarr:"\u2978",gtrdot:"\u22D7",gtreqless:"\u22DB",gtreqqless:"\u2A8C",gtrless:"\u2277",gtrsim:"\u2273",gvertneqq:"\u2269\uFE00",gvnE:"\u2269\uFE00",Hacek:"\u02C7",hairsp:"\u200A",half:"\xBD",hamilt:"\u210B",HARDcy:"\u042A",hardcy:"\u044A",hArr:"\u21D4",harr:"\u2194",harrcir:"\u2948",harrw:"\u21AD",Hat:"^",hbar:"\u210F",Hcirc:"\u0124",hcirc:"\u0125",hearts:"\u2665",heartsuit:"\u2665",hellip:"\u2026",hercon:"\u22B9",Hfr:"\u210C",hfr:"\u{1D525}",HilbertSpace:"\u210B",hksearow:"\u2925",hkswarow:"\u2926",hoarr:"\u21FF",homtht:"\u223B",hookleftarrow:"\u21A9",hookrightarrow:"\u21AA",Hopf:"\u210D",hopf:"\u{1D559}",horbar:"\u2015",HorizontalLine:"\u2500",Hscr:"\u210B",hscr:"\u{1D4BD}",hslash:"\u210F",Hstrok:"\u0126",hstrok:"\u0127",HumpDownHump:"\u224E",HumpEqual:"\u224F",hybull:"\u2043",hyphen:"\u2010",Iacute:"\xCD",iacute:"\xED",ic:"\u2063",Icirc:"\xCE",icirc:"\xEE",Icy:"\u0418",icy:"\u0438",Idot:"\u0130",IEcy:"\u0415",iecy:"\u0435",iexcl:"\xA1",iff:"\u21D4",Ifr:"\u2111",ifr:"\u{1D526}",Igrave:"\xCC",igrave:"\xEC",ii:"\u2148",iiiint:"\u2A0C",iiint:"\u222D",iinfin:"\u29DC",iiota:"\u2129",IJlig:"\u0132",ijlig:"\u0133",Im:"\u2111",Imacr:"\u012A",imacr:"\u012B",image:"\u2111",ImaginaryI:"\u2148",imagline:"\u2110",imagpart:"\u2111",imath:"\u0131",imof:"\u22B7",imped:"\u01B5",Implies:"\u21D2",in:"\u2208",incare:"\u2105",infin:"\u221E",infintie:"\u29DD",inodot:"\u0131",Int:"\u222C",int:"\u222B",intcal:"\u22BA",integers:"\u2124",Integral:"\u222B",intercal:"\u22BA",Intersection:"\u22C2",intlarhk:"\u2A17",intprod:"\u2A3C",InvisibleComma:"\u2063",InvisibleTimes:"\u2062",IOcy:"\u0401",iocy:"\u0451",Iogon:"\u012E",iogon:"\u012F",Iopf:"\u{1D540}",iopf:"\u{1D55A}",Iota:"\u0399",iota:"\u03B9",iprod:"\u2A3C",iquest:"\xBF",Iscr:"\u2110",iscr:"\u{1D4BE}",isin:"\u2208",isindot:"\u22F5",isinE:"\u22F9",isins:"\u22F4",isinsv:"\u22F3",isinv:"\u2208",it:"\u2062",Itilde:"\u0128",itilde:"\u0129",Iukcy:"\u0406",iukcy:"\u0456",Iuml:"\xCF",iuml:"\xEF",Jcirc:"\u0134",jcirc:"\u0135",Jcy:"\u0419",jcy:"\u0439",Jfr:"\u{1D50D}",jfr:"\u{1D527}",jmath:"\u0237",Jopf:"\u{1D541}",jopf:"\u{1D55B}",Jscr:"\u{1D4A5}",jscr:"\u{1D4BF}",Jsercy:"\u0408",jsercy:"\u0458",Jukcy:"\u0404",jukcy:"\u0454",Kappa:"\u039A",kappa:"\u03BA",kappav:"\u03F0",Kcedil:"\u0136",kcedil:"\u0137",Kcy:"\u041A",kcy:"\u043A",Kfr:"\u{1D50E}",kfr:"\u{1D528}",kgreen:"\u0138",KHcy:"\u0425",khcy:"\u0445",KJcy:"\u040C",kjcy:"\u045C",Kopf:"\u{1D542}",kopf:"\u{1D55C}",Kscr:"\u{1D4A6}",kscr:"\u{1D4C0}",lAarr:"\u21DA",Lacute:"\u0139",lacute:"\u013A",laemptyv:"\u29B4",lagran:"\u2112",Lambda:"\u039B",lambda:"\u03BB",Lang:"\u27EA",lang:"\u27E8",langd:"\u2991",langle:"\u27E8",lap:"\u2A85",Laplacetrf:"\u2112",laquo:"\xAB",Larr:"\u219E",lArr:"\u21D0",larr:"\u2190",larrb:"\u21E4",larrbfs:"\u291F",larrfs:"\u291D",larrhk:"\u21A9",larrlp:"\u21AB",larrpl:"\u2939",larrsim:"\u2973",larrtl:"\u21A2",lat:"\u2AAB",lAtail:"\u291B",latail:"\u2919",late:"\u2AAD",lates:"\u2AAD\uFE00",lBarr:"\u290E",lbarr:"\u290C",lbbrk:"\u2772",lbrace:"{",lbrack:"[",lbrke:"\u298B",lbrksld:"\u298F",lbrkslu:"\u298D",Lcaron:"\u013D",lcaron:"\u013E",Lcedil:"\u013B",lcedil:"\u013C",lceil:"\u2308",lcub:"{",Lcy:"\u041B",lcy:"\u043B",ldca:"\u2936",ldquo:"\u201C",ldquor:"\u201E",ldrdhar:"\u2967",ldrushar:"\u294B",ldsh:"\u21B2",lE:"\u2266",le:"\u2264",LeftAngleBracket:"\u27E8",LeftArrow:"\u2190",Leftarrow:"\u21D0",leftarrow:"\u2190",LeftArrowBar:"\u21E4",LeftArrowRightArrow:"\u21C6",leftarrowtail:"\u21A2",LeftCeiling:"\u2308",LeftDoubleBracket:"\u27E6",LeftDownTeeVector:"\u2961",LeftDownVector:"\u21C3",LeftDownVectorBar:"\u2959",LeftFloor:"\u230A",leftharpoondown:"\u21BD",leftharpoonup:"\u21BC",leftleftarrows:"\u21C7",LeftRightArrow:"\u2194",Leftrightarrow:"\u21D4",leftrightarrow:"\u2194",leftrightarrows:"\u21C6",leftrightharpoons:"\u21CB",leftrightsquigarrow:"\u21AD",LeftRightVector:"\u294E",LeftTee:"\u22A3",LeftTeeArrow:"\u21A4",LeftTeeVector:"\u295A",leftthreetimes:"\u22CB",LeftTriangle:"\u22B2",LeftTriangleBar:"\u29CF",LeftTriangleEqual:"\u22B4",LeftUpDownVector:"\u2951",LeftUpTeeVector:"\u2960",LeftUpVector:"\u21BF",LeftUpVectorBar:"\u2958",LeftVector:"\u21BC",LeftVectorBar:"\u2952",lEg:"\u2A8B",leg:"\u22DA",leq:"\u2264",leqq:"\u2266",leqslant:"\u2A7D",les:"\u2A7D",lescc:"\u2AA8",lesdot:"\u2A7F",lesdoto:"\u2A81",lesdotor:"\u2A83",lesg:"\u22DA\uFE00",lesges:"\u2A93",lessapprox:"\u2A85",lessdot:"\u22D6",lesseqgtr:"\u22DA",lesseqqgtr:"\u2A8B",LessEqualGreater:"\u22DA",LessFullEqual:"\u2266",LessGreater:"\u2276",lessgtr:"\u2276",LessLess:"\u2AA1",lesssim:"\u2272",LessSlantEqual:"\u2A7D",LessTilde:"\u2272",lfisht:"\u297C",lfloor:"\u230A",Lfr:"\u{1D50F}",lfr:"\u{1D529}",lg:"\u2276",lgE:"\u2A91",lHar:"\u2962",lhard:"\u21BD",lharu:"\u21BC",lharul:"\u296A",lhblk:"\u2584",LJcy:"\u0409",ljcy:"\u0459",Ll:"\u22D8",ll:"\u226A",llarr:"\u21C7",llcorner:"\u231E",Lleftarrow:"\u21DA",llhard:"\u296B",lltri:"\u25FA",Lmidot:"\u013F",lmidot:"\u0140",lmoust:"\u23B0",lmoustache:"\u23B0",lnap:"\u2A89",lnapprox:"\u2A89",lnE:"\u2268",lne:"\u2A87",lneq:"\u2A87",lneqq:"\u2268",lnsim:"\u22E6",loang:"\u27EC",loarr:"\u21FD",lobrk:"\u27E6",LongLeftArrow:"\u27F5",Longleftarrow:"\u27F8",longleftarrow:"\u27F5",LongLeftRightArrow:"\u27F7",Longleftrightarrow:"\u27FA",longleftrightarrow:"\u27F7",longmapsto:"\u27FC",LongRightArrow:"\u27F6",Longrightarrow:"\u27F9",longrightarrow:"\u27F6",looparrowleft:"\u21AB",looparrowright:"\u21AC",lopar:"\u2985",Lopf:"\u{1D543}",lopf:"\u{1D55D}",loplus:"\u2A2D",lotimes:"\u2A34",lowast:"\u2217",lowbar:"_",LowerLeftArrow:"\u2199",LowerRightArrow:"\u2198",loz:"\u25CA",lozenge:"\u25CA",lozf:"\u29EB",lpar:"(",lparlt:"\u2993",lrarr:"\u21C6",lrcorner:"\u231F",lrhar:"\u21CB",lrhard:"\u296D",lrm:"\u200E",lrtri:"\u22BF",lsaquo:"\u2039",Lscr:"\u2112",lscr:"\u{1D4C1}",Lsh:"\u21B0",lsh:"\u21B0",lsim:"\u2272",lsime:"\u2A8D",lsimg:"\u2A8F",lsqb:"[",lsquo:"\u2018",lsquor:"\u201A",Lstrok:"\u0141",lstrok:"\u0142",Lt:"\u226A",LT:"<",lt:"<",ltcc:"\u2AA6",ltcir:"\u2A79",ltdot:"\u22D6",lthree:"\u22CB",ltimes:"\u22C9",ltlarr:"\u2976",ltquest:"\u2A7B",ltri:"\u25C3",ltrie:"\u22B4",ltrif:"\u25C2",ltrPar:"\u2996",lurdshar:"\u294A",luruhar:"\u2966",lvertneqq:"\u2268\uFE00",lvnE:"\u2268\uFE00",macr:"\xAF",male:"\u2642",malt:"\u2720",maltese:"\u2720",Map:"\u2905",map:"\u21A6",mapsto:"\u21A6",mapstodown:"\u21A7",mapstoleft:"\u21A4",mapstoup:"\u21A5",marker:"\u25AE",mcomma:"\u2A29",Mcy:"\u041C",mcy:"\u043C",mdash:"\u2014",mDDot:"\u223A",measuredangle:"\u2221",MediumSpace:"\u205F",Mellintrf:"\u2133",Mfr:"\u{1D510}",mfr:"\u{1D52A}",mho:"\u2127",micro:"\xB5",mid:"\u2223",midast:"*",midcir:"\u2AF0",middot:"\xB7",minus:"\u2212",minusb:"\u229F",minusd:"\u2238",minusdu:"\u2A2A",MinusPlus:"\u2213",mlcp:"\u2ADB",mldr:"\u2026",mnplus:"\u2213",models:"\u22A7",Mopf:"\u{1D544}",mopf:"\u{1D55E}",mp:"\u2213",Mscr:"\u2133",mscr:"\u{1D4C2}",mstpos:"\u223E",Mu:"\u039C",mu:"\u03BC",multimap:"\u22B8",mumap:"\u22B8",nabla:"\u2207",Nacute:"\u0143",nacute:"\u0144",nang:"\u2220\u20D2",nap:"\u2249",napE:"\u2A70\u0338",napid:"\u224B\u0338",napos:"\u0149",napprox:"\u2249",natur:"\u266E",natural:"\u266E",naturals:"\u2115",nbsp:"\xA0",nbump:"\u224E\u0338",nbumpe:"\u224F\u0338",ncap:"\u2A43",Ncaron:"\u0147",ncaron:"\u0148",Ncedil:"\u0145",ncedil:"\u0146",ncong:"\u2247",ncongdot:"\u2A6D\u0338",ncup:"\u2A42",Ncy:"\u041D",ncy:"\u043D",ndash:"\u2013",ne:"\u2260",nearhk:"\u2924",neArr:"\u21D7",nearr:"\u2197",nearrow:"\u2197",nedot:"\u2250\u0338",NegativeMediumSpace:"\u200B",NegativeThickSpace:"\u200B",NegativeThinSpace:"\u200B",NegativeVeryThinSpace:"\u200B",nequiv:"\u2262",nesear:"\u2928",nesim:"\u2242\u0338",NestedGreaterGreater:"\u226B",NestedLessLess:"\u226A",NewLine:` -`,nexist:"\u2204",nexists:"\u2204",Nfr:"\u{1D511}",nfr:"\u{1D52B}",ngE:"\u2267\u0338",nge:"\u2271",ngeq:"\u2271",ngeqq:"\u2267\u0338",ngeqslant:"\u2A7E\u0338",nges:"\u2A7E\u0338",nGg:"\u22D9\u0338",ngsim:"\u2275",nGt:"\u226B\u20D2",ngt:"\u226F",ngtr:"\u226F",nGtv:"\u226B\u0338",nhArr:"\u21CE",nharr:"\u21AE",nhpar:"\u2AF2",ni:"\u220B",nis:"\u22FC",nisd:"\u22FA",niv:"\u220B",NJcy:"\u040A",njcy:"\u045A",nlArr:"\u21CD",nlarr:"\u219A",nldr:"\u2025",nlE:"\u2266\u0338",nle:"\u2270",nLeftarrow:"\u21CD",nleftarrow:"\u219A",nLeftrightarrow:"\u21CE",nleftrightarrow:"\u21AE",nleq:"\u2270",nleqq:"\u2266\u0338",nleqslant:"\u2A7D\u0338",nles:"\u2A7D\u0338",nless:"\u226E",nLl:"\u22D8\u0338",nlsim:"\u2274",nLt:"\u226A\u20D2",nlt:"\u226E",nltri:"\u22EA",nltrie:"\u22EC",nLtv:"\u226A\u0338",nmid:"\u2224",NoBreak:"\u2060",NonBreakingSpace:"\xA0",Nopf:"\u2115",nopf:"\u{1D55F}",Not:"\u2AEC",not:"\xAC",NotCongruent:"\u2262",NotCupCap:"\u226D",NotDoubleVerticalBar:"\u2226",NotElement:"\u2209",NotEqual:"\u2260",NotEqualTilde:"\u2242\u0338",NotExists:"\u2204",NotGreater:"\u226F",NotGreaterEqual:"\u2271",NotGreaterFullEqual:"\u2267\u0338",NotGreaterGreater:"\u226B\u0338",NotGreaterLess:"\u2279",NotGreaterSlantEqual:"\u2A7E\u0338",NotGreaterTilde:"\u2275",NotHumpDownHump:"\u224E\u0338",NotHumpEqual:"\u224F\u0338",notin:"\u2209",notindot:"\u22F5\u0338",notinE:"\u22F9\u0338",notinva:"\u2209",notinvb:"\u22F7",notinvc:"\u22F6",NotLeftTriangle:"\u22EA",NotLeftTriangleBar:"\u29CF\u0338",NotLeftTriangleEqual:"\u22EC",NotLess:"\u226E",NotLessEqual:"\u2270",NotLessGreater:"\u2278",NotLessLess:"\u226A\u0338",NotLessSlantEqual:"\u2A7D\u0338",NotLessTilde:"\u2274",NotNestedGreaterGreater:"\u2AA2\u0338",NotNestedLessLess:"\u2AA1\u0338",notni:"\u220C",notniva:"\u220C",notnivb:"\u22FE",notnivc:"\u22FD",NotPrecedes:"\u2280",NotPrecedesEqual:"\u2AAF\u0338",NotPrecedesSlantEqual:"\u22E0",NotReverseElement:"\u220C",NotRightTriangle:"\u22EB",NotRightTriangleBar:"\u29D0\u0338",NotRightTriangleEqual:"\u22ED",NotSquareSubset:"\u228F\u0338",NotSquareSubsetEqual:"\u22E2",NotSquareSuperset:"\u2290\u0338",NotSquareSupersetEqual:"\u22E3",NotSubset:"\u2282\u20D2",NotSubsetEqual:"\u2288",NotSucceeds:"\u2281",NotSucceedsEqual:"\u2AB0\u0338",NotSucceedsSlantEqual:"\u22E1",NotSucceedsTilde:"\u227F\u0338",NotSuperset:"\u2283\u20D2",NotSupersetEqual:"\u2289",NotTilde:"\u2241",NotTildeEqual:"\u2244",NotTildeFullEqual:"\u2247",NotTildeTilde:"\u2249",NotVerticalBar:"\u2224",npar:"\u2226",nparallel:"\u2226",nparsl:"\u2AFD\u20E5",npart:"\u2202\u0338",npolint:"\u2A14",npr:"\u2280",nprcue:"\u22E0",npre:"\u2AAF\u0338",nprec:"\u2280",npreceq:"\u2AAF\u0338",nrArr:"\u21CF",nrarr:"\u219B",nrarrc:"\u2933\u0338",nrarrw:"\u219D\u0338",nRightarrow:"\u21CF",nrightarrow:"\u219B",nrtri:"\u22EB",nrtrie:"\u22ED",nsc:"\u2281",nsccue:"\u22E1",nsce:"\u2AB0\u0338",Nscr:"\u{1D4A9}",nscr:"\u{1D4C3}",nshortmid:"\u2224",nshortparallel:"\u2226",nsim:"\u2241",nsime:"\u2244",nsimeq:"\u2244",nsmid:"\u2224",nspar:"\u2226",nsqsube:"\u22E2",nsqsupe:"\u22E3",nsub:"\u2284",nsubE:"\u2AC5\u0338",nsube:"\u2288",nsubset:"\u2282\u20D2",nsubseteq:"\u2288",nsubseteqq:"\u2AC5\u0338",nsucc:"\u2281",nsucceq:"\u2AB0\u0338",nsup:"\u2285",nsupE:"\u2AC6\u0338",nsupe:"\u2289",nsupset:"\u2283\u20D2",nsupseteq:"\u2289",nsupseteqq:"\u2AC6\u0338",ntgl:"\u2279",Ntilde:"\xD1",ntilde:"\xF1",ntlg:"\u2278",ntriangleleft:"\u22EA",ntrianglelefteq:"\u22EC",ntriangleright:"\u22EB",ntrianglerighteq:"\u22ED",Nu:"\u039D",nu:"\u03BD",num:"#",numero:"\u2116",numsp:"\u2007",nvap:"\u224D\u20D2",nVDash:"\u22AF",nVdash:"\u22AE",nvDash:"\u22AD",nvdash:"\u22AC",nvge:"\u2265\u20D2",nvgt:">\u20D2",nvHarr:"\u2904",nvinfin:"\u29DE",nvlArr:"\u2902",nvle:"\u2264\u20D2",nvlt:"<\u20D2",nvltrie:"\u22B4\u20D2",nvrArr:"\u2903",nvrtrie:"\u22B5\u20D2",nvsim:"\u223C\u20D2",nwarhk:"\u2923",nwArr:"\u21D6",nwarr:"\u2196",nwarrow:"\u2196",nwnear:"\u2927",Oacute:"\xD3",oacute:"\xF3",oast:"\u229B",ocir:"\u229A",Ocirc:"\xD4",ocirc:"\xF4",Ocy:"\u041E",ocy:"\u043E",odash:"\u229D",Odblac:"\u0150",odblac:"\u0151",odiv:"\u2A38",odot:"\u2299",odsold:"\u29BC",OElig:"\u0152",oelig:"\u0153",ofcir:"\u29BF",Ofr:"\u{1D512}",ofr:"\u{1D52C}",ogon:"\u02DB",Ograve:"\xD2",ograve:"\xF2",ogt:"\u29C1",ohbar:"\u29B5",ohm:"\u03A9",oint:"\u222E",olarr:"\u21BA",olcir:"\u29BE",olcross:"\u29BB",oline:"\u203E",olt:"\u29C0",Omacr:"\u014C",omacr:"\u014D",Omega:"\u03A9",omega:"\u03C9",Omicron:"\u039F",omicron:"\u03BF",omid:"\u29B6",ominus:"\u2296",Oopf:"\u{1D546}",oopf:"\u{1D560}",opar:"\u29B7",OpenCurlyDoubleQuote:"\u201C",OpenCurlyQuote:"\u2018",operp:"\u29B9",oplus:"\u2295",Or:"\u2A54",or:"\u2228",orarr:"\u21BB",ord:"\u2A5D",order:"\u2134",orderof:"\u2134",ordf:"\xAA",ordm:"\xBA",origof:"\u22B6",oror:"\u2A56",orslope:"\u2A57",orv:"\u2A5B",oS:"\u24C8",Oscr:"\u{1D4AA}",oscr:"\u2134",Oslash:"\xD8",oslash:"\xF8",osol:"\u2298",Otilde:"\xD5",otilde:"\xF5",Otimes:"\u2A37",otimes:"\u2297",otimesas:"\u2A36",Ouml:"\xD6",ouml:"\xF6",ovbar:"\u233D",OverBar:"\u203E",OverBrace:"\u23DE",OverBracket:"\u23B4",OverParenthesis:"\u23DC",par:"\u2225",para:"\xB6",parallel:"\u2225",parsim:"\u2AF3",parsl:"\u2AFD",part:"\u2202",PartialD:"\u2202",Pcy:"\u041F",pcy:"\u043F",percnt:"%",period:".",permil:"\u2030",perp:"\u22A5",pertenk:"\u2031",Pfr:"\u{1D513}",pfr:"\u{1D52D}",Phi:"\u03A6",phi:"\u03C6",phiv:"\u03D5",phmmat:"\u2133",phone:"\u260E",Pi:"\u03A0",pi:"\u03C0",pitchfork:"\u22D4",piv:"\u03D6",planck:"\u210F",planckh:"\u210E",plankv:"\u210F",plus:"+",plusacir:"\u2A23",plusb:"\u229E",pluscir:"\u2A22",plusdo:"\u2214",plusdu:"\u2A25",pluse:"\u2A72",PlusMinus:"\xB1",plusmn:"\xB1",plussim:"\u2A26",plustwo:"\u2A27",pm:"\xB1",Poincareplane:"\u210C",pointint:"\u2A15",Popf:"\u2119",popf:"\u{1D561}",pound:"\xA3",Pr:"\u2ABB",pr:"\u227A",prap:"\u2AB7",prcue:"\u227C",prE:"\u2AB3",pre:"\u2AAF",prec:"\u227A",precapprox:"\u2AB7",preccurlyeq:"\u227C",Precedes:"\u227A",PrecedesEqual:"\u2AAF",PrecedesSlantEqual:"\u227C",PrecedesTilde:"\u227E",preceq:"\u2AAF",precnapprox:"\u2AB9",precneqq:"\u2AB5",precnsim:"\u22E8",precsim:"\u227E",Prime:"\u2033",prime:"\u2032",primes:"\u2119",prnap:"\u2AB9",prnE:"\u2AB5",prnsim:"\u22E8",prod:"\u220F",Product:"\u220F",profalar:"\u232E",profline:"\u2312",profsurf:"\u2313",prop:"\u221D",Proportion:"\u2237",Proportional:"\u221D",propto:"\u221D",prsim:"\u227E",prurel:"\u22B0",Pscr:"\u{1D4AB}",pscr:"\u{1D4C5}",Psi:"\u03A8",psi:"\u03C8",puncsp:"\u2008",Qfr:"\u{1D514}",qfr:"\u{1D52E}",qint:"\u2A0C",Qopf:"\u211A",qopf:"\u{1D562}",qprime:"\u2057",Qscr:"\u{1D4AC}",qscr:"\u{1D4C6}",quaternions:"\u210D",quatint:"\u2A16",quest:"?",questeq:"\u225F",QUOT:'"',quot:'"',rAarr:"\u21DB",race:"\u223D\u0331",Racute:"\u0154",racute:"\u0155",radic:"\u221A",raemptyv:"\u29B3",Rang:"\u27EB",rang:"\u27E9",rangd:"\u2992",range:"\u29A5",rangle:"\u27E9",raquo:"\xBB",Rarr:"\u21A0",rArr:"\u21D2",rarr:"\u2192",rarrap:"\u2975",rarrb:"\u21E5",rarrbfs:"\u2920",rarrc:"\u2933",rarrfs:"\u291E",rarrhk:"\u21AA",rarrlp:"\u21AC",rarrpl:"\u2945",rarrsim:"\u2974",Rarrtl:"\u2916",rarrtl:"\u21A3",rarrw:"\u219D",rAtail:"\u291C",ratail:"\u291A",ratio:"\u2236",rationals:"\u211A",RBarr:"\u2910",rBarr:"\u290F",rbarr:"\u290D",rbbrk:"\u2773",rbrace:"}",rbrack:"]",rbrke:"\u298C",rbrksld:"\u298E",rbrkslu:"\u2990",Rcaron:"\u0158",rcaron:"\u0159",Rcedil:"\u0156",rcedil:"\u0157",rceil:"\u2309",rcub:"}",Rcy:"\u0420",rcy:"\u0440",rdca:"\u2937",rdldhar:"\u2969",rdquo:"\u201D",rdquor:"\u201D",rdsh:"\u21B3",Re:"\u211C",real:"\u211C",realine:"\u211B",realpart:"\u211C",reals:"\u211D",rect:"\u25AD",REG:"\xAE",reg:"\xAE",ReverseElement:"\u220B",ReverseEquilibrium:"\u21CB",ReverseUpEquilibrium:"\u296F",rfisht:"\u297D",rfloor:"\u230B",Rfr:"\u211C",rfr:"\u{1D52F}",rHar:"\u2964",rhard:"\u21C1",rharu:"\u21C0",rharul:"\u296C",Rho:"\u03A1",rho:"\u03C1",rhov:"\u03F1",RightAngleBracket:"\u27E9",RightArrow:"\u2192",Rightarrow:"\u21D2",rightarrow:"\u2192",RightArrowBar:"\u21E5",RightArrowLeftArrow:"\u21C4",rightarrowtail:"\u21A3",RightCeiling:"\u2309",RightDoubleBracket:"\u27E7",RightDownTeeVector:"\u295D",RightDownVector:"\u21C2",RightDownVectorBar:"\u2955",RightFloor:"\u230B",rightharpoondown:"\u21C1",rightharpoonup:"\u21C0",rightleftarrows:"\u21C4",rightleftharpoons:"\u21CC",rightrightarrows:"\u21C9",rightsquigarrow:"\u219D",RightTee:"\u22A2",RightTeeArrow:"\u21A6",RightTeeVector:"\u295B",rightthreetimes:"\u22CC",RightTriangle:"\u22B3",RightTriangleBar:"\u29D0",RightTriangleEqual:"\u22B5",RightUpDownVector:"\u294F",RightUpTeeVector:"\u295C",RightUpVector:"\u21BE",RightUpVectorBar:"\u2954",RightVector:"\u21C0",RightVectorBar:"\u2953",ring:"\u02DA",risingdotseq:"\u2253",rlarr:"\u21C4",rlhar:"\u21CC",rlm:"\u200F",rmoust:"\u23B1",rmoustache:"\u23B1",rnmid:"\u2AEE",roang:"\u27ED",roarr:"\u21FE",robrk:"\u27E7",ropar:"\u2986",Ropf:"\u211D",ropf:"\u{1D563}",roplus:"\u2A2E",rotimes:"\u2A35",RoundImplies:"\u2970",rpar:")",rpargt:"\u2994",rppolint:"\u2A12",rrarr:"\u21C9",Rrightarrow:"\u21DB",rsaquo:"\u203A",Rscr:"\u211B",rscr:"\u{1D4C7}",Rsh:"\u21B1",rsh:"\u21B1",rsqb:"]",rsquo:"\u2019",rsquor:"\u2019",rthree:"\u22CC",rtimes:"\u22CA",rtri:"\u25B9",rtrie:"\u22B5",rtrif:"\u25B8",rtriltri:"\u29CE",RuleDelayed:"\u29F4",ruluhar:"\u2968",rx:"\u211E",Sacute:"\u015A",sacute:"\u015B",sbquo:"\u201A",Sc:"\u2ABC",sc:"\u227B",scap:"\u2AB8",Scaron:"\u0160",scaron:"\u0161",sccue:"\u227D",scE:"\u2AB4",sce:"\u2AB0",Scedil:"\u015E",scedil:"\u015F",Scirc:"\u015C",scirc:"\u015D",scnap:"\u2ABA",scnE:"\u2AB6",scnsim:"\u22E9",scpolint:"\u2A13",scsim:"\u227F",Scy:"\u0421",scy:"\u0441",sdot:"\u22C5",sdotb:"\u22A1",sdote:"\u2A66",searhk:"\u2925",seArr:"\u21D8",searr:"\u2198",searrow:"\u2198",sect:"\xA7",semi:";",seswar:"\u2929",setminus:"\u2216",setmn:"\u2216",sext:"\u2736",Sfr:"\u{1D516}",sfr:"\u{1D530}",sfrown:"\u2322",sharp:"\u266F",SHCHcy:"\u0429",shchcy:"\u0449",SHcy:"\u0428",shcy:"\u0448",ShortDownArrow:"\u2193",ShortLeftArrow:"\u2190",shortmid:"\u2223",shortparallel:"\u2225",ShortRightArrow:"\u2192",ShortUpArrow:"\u2191",shy:"\xAD",Sigma:"\u03A3",sigma:"\u03C3",sigmaf:"\u03C2",sigmav:"\u03C2",sim:"\u223C",simdot:"\u2A6A",sime:"\u2243",simeq:"\u2243",simg:"\u2A9E",simgE:"\u2AA0",siml:"\u2A9D",simlE:"\u2A9F",simne:"\u2246",simplus:"\u2A24",simrarr:"\u2972",slarr:"\u2190",SmallCircle:"\u2218",smallsetminus:"\u2216",smashp:"\u2A33",smeparsl:"\u29E4",smid:"\u2223",smile:"\u2323",smt:"\u2AAA",smte:"\u2AAC",smtes:"\u2AAC\uFE00",SOFTcy:"\u042C",softcy:"\u044C",sol:"/",solb:"\u29C4",solbar:"\u233F",Sopf:"\u{1D54A}",sopf:"\u{1D564}",spades:"\u2660",spadesuit:"\u2660",spar:"\u2225",sqcap:"\u2293",sqcaps:"\u2293\uFE00",sqcup:"\u2294",sqcups:"\u2294\uFE00",Sqrt:"\u221A",sqsub:"\u228F",sqsube:"\u2291",sqsubset:"\u228F",sqsubseteq:"\u2291",sqsup:"\u2290",sqsupe:"\u2292",sqsupset:"\u2290",sqsupseteq:"\u2292",squ:"\u25A1",Square:"\u25A1",square:"\u25A1",SquareIntersection:"\u2293",SquareSubset:"\u228F",SquareSubsetEqual:"\u2291",SquareSuperset:"\u2290",SquareSupersetEqual:"\u2292",SquareUnion:"\u2294",squarf:"\u25AA",squf:"\u25AA",srarr:"\u2192",Sscr:"\u{1D4AE}",sscr:"\u{1D4C8}",ssetmn:"\u2216",ssmile:"\u2323",sstarf:"\u22C6",Star:"\u22C6",star:"\u2606",starf:"\u2605",straightepsilon:"\u03F5",straightphi:"\u03D5",strns:"\xAF",Sub:"\u22D0",sub:"\u2282",subdot:"\u2ABD",subE:"\u2AC5",sube:"\u2286",subedot:"\u2AC3",submult:"\u2AC1",subnE:"\u2ACB",subne:"\u228A",subplus:"\u2ABF",subrarr:"\u2979",Subset:"\u22D0",subset:"\u2282",subseteq:"\u2286",subseteqq:"\u2AC5",SubsetEqual:"\u2286",subsetneq:"\u228A",subsetneqq:"\u2ACB",subsim:"\u2AC7",subsub:"\u2AD5",subsup:"\u2AD3",succ:"\u227B",succapprox:"\u2AB8",succcurlyeq:"\u227D",Succeeds:"\u227B",SucceedsEqual:"\u2AB0",SucceedsSlantEqual:"\u227D",SucceedsTilde:"\u227F",succeq:"\u2AB0",succnapprox:"\u2ABA",succneqq:"\u2AB6",succnsim:"\u22E9",succsim:"\u227F",SuchThat:"\u220B",Sum:"\u2211",sum:"\u2211",sung:"\u266A",Sup:"\u22D1",sup:"\u2283",sup1:"\xB9",sup2:"\xB2",sup3:"\xB3",supdot:"\u2ABE",supdsub:"\u2AD8",supE:"\u2AC6",supe:"\u2287",supedot:"\u2AC4",Superset:"\u2283",SupersetEqual:"\u2287",suphsol:"\u27C9",suphsub:"\u2AD7",suplarr:"\u297B",supmult:"\u2AC2",supnE:"\u2ACC",supne:"\u228B",supplus:"\u2AC0",Supset:"\u22D1",supset:"\u2283",supseteq:"\u2287",supseteqq:"\u2AC6",supsetneq:"\u228B",supsetneqq:"\u2ACC",supsim:"\u2AC8",supsub:"\u2AD4",supsup:"\u2AD6",swarhk:"\u2926",swArr:"\u21D9",swarr:"\u2199",swarrow:"\u2199",swnwar:"\u292A",szlig:"\xDF",Tab:" ",target:"\u2316",Tau:"\u03A4",tau:"\u03C4",tbrk:"\u23B4",Tcaron:"\u0164",tcaron:"\u0165",Tcedil:"\u0162",tcedil:"\u0163",Tcy:"\u0422",tcy:"\u0442",tdot:"\u20DB",telrec:"\u2315",Tfr:"\u{1D517}",tfr:"\u{1D531}",there4:"\u2234",Therefore:"\u2234",therefore:"\u2234",Theta:"\u0398",theta:"\u03B8",thetasym:"\u03D1",thetav:"\u03D1",thickapprox:"\u2248",thicksim:"\u223C",ThickSpace:"\u205F\u200A",thinsp:"\u2009",ThinSpace:"\u2009",thkap:"\u2248",thksim:"\u223C",THORN:"\xDE",thorn:"\xFE",Tilde:"\u223C",tilde:"\u02DC",TildeEqual:"\u2243",TildeFullEqual:"\u2245",TildeTilde:"\u2248",times:"\xD7",timesb:"\u22A0",timesbar:"\u2A31",timesd:"\u2A30",tint:"\u222D",toea:"\u2928",top:"\u22A4",topbot:"\u2336",topcir:"\u2AF1",Topf:"\u{1D54B}",topf:"\u{1D565}",topfork:"\u2ADA",tosa:"\u2929",tprime:"\u2034",TRADE:"\u2122",trade:"\u2122",triangle:"\u25B5",triangledown:"\u25BF",triangleleft:"\u25C3",trianglelefteq:"\u22B4",triangleq:"\u225C",triangleright:"\u25B9",trianglerighteq:"\u22B5",tridot:"\u25EC",trie:"\u225C",triminus:"\u2A3A",TripleDot:"\u20DB",triplus:"\u2A39",trisb:"\u29CD",tritime:"\u2A3B",trpezium:"\u23E2",Tscr:"\u{1D4AF}",tscr:"\u{1D4C9}",TScy:"\u0426",tscy:"\u0446",TSHcy:"\u040B",tshcy:"\u045B",Tstrok:"\u0166",tstrok:"\u0167",twixt:"\u226C",twoheadleftarrow:"\u219E",twoheadrightarrow:"\u21A0",Uacute:"\xDA",uacute:"\xFA",Uarr:"\u219F",uArr:"\u21D1",uarr:"\u2191",Uarrocir:"\u2949",Ubrcy:"\u040E",ubrcy:"\u045E",Ubreve:"\u016C",ubreve:"\u016D",Ucirc:"\xDB",ucirc:"\xFB",Ucy:"\u0423",ucy:"\u0443",udarr:"\u21C5",Udblac:"\u0170",udblac:"\u0171",udhar:"\u296E",ufisht:"\u297E",Ufr:"\u{1D518}",ufr:"\u{1D532}",Ugrave:"\xD9",ugrave:"\xF9",uHar:"\u2963",uharl:"\u21BF",uharr:"\u21BE",uhblk:"\u2580",ulcorn:"\u231C",ulcorner:"\u231C",ulcrop:"\u230F",ultri:"\u25F8",Umacr:"\u016A",umacr:"\u016B",uml:"\xA8",UnderBar:"_",UnderBrace:"\u23DF",UnderBracket:"\u23B5",UnderParenthesis:"\u23DD",Union:"\u22C3",UnionPlus:"\u228E",Uogon:"\u0172",uogon:"\u0173",Uopf:"\u{1D54C}",uopf:"\u{1D566}",UpArrow:"\u2191",Uparrow:"\u21D1",uparrow:"\u2191",UpArrowBar:"\u2912",UpArrowDownArrow:"\u21C5",UpDownArrow:"\u2195",Updownarrow:"\u21D5",updownarrow:"\u2195",UpEquilibrium:"\u296E",upharpoonleft:"\u21BF",upharpoonright:"\u21BE",uplus:"\u228E",UpperLeftArrow:"\u2196",UpperRightArrow:"\u2197",Upsi:"\u03D2",upsi:"\u03C5",upsih:"\u03D2",Upsilon:"\u03A5",upsilon:"\u03C5",UpTee:"\u22A5",UpTeeArrow:"\u21A5",upuparrows:"\u21C8",urcorn:"\u231D",urcorner:"\u231D",urcrop:"\u230E",Uring:"\u016E",uring:"\u016F",urtri:"\u25F9",Uscr:"\u{1D4B0}",uscr:"\u{1D4CA}",utdot:"\u22F0",Utilde:"\u0168",utilde:"\u0169",utri:"\u25B5",utrif:"\u25B4",uuarr:"\u21C8",Uuml:"\xDC",uuml:"\xFC",uwangle:"\u29A7",vangrt:"\u299C",varepsilon:"\u03F5",varkappa:"\u03F0",varnothing:"\u2205",varphi:"\u03D5",varpi:"\u03D6",varpropto:"\u221D",vArr:"\u21D5",varr:"\u2195",varrho:"\u03F1",varsigma:"\u03C2",varsubsetneq:"\u228A\uFE00",varsubsetneqq:"\u2ACB\uFE00",varsupsetneq:"\u228B\uFE00",varsupsetneqq:"\u2ACC\uFE00",vartheta:"\u03D1",vartriangleleft:"\u22B2",vartriangleright:"\u22B3",Vbar:"\u2AEB",vBar:"\u2AE8",vBarv:"\u2AE9",Vcy:"\u0412",vcy:"\u0432",VDash:"\u22AB",Vdash:"\u22A9",vDash:"\u22A8",vdash:"\u22A2",Vdashl:"\u2AE6",Vee:"\u22C1",vee:"\u2228",veebar:"\u22BB",veeeq:"\u225A",vellip:"\u22EE",Verbar:"\u2016",verbar:"|",Vert:"\u2016",vert:"|",VerticalBar:"\u2223",VerticalLine:"|",VerticalSeparator:"\u2758",VerticalTilde:"\u2240",VeryThinSpace:"\u200A",Vfr:"\u{1D519}",vfr:"\u{1D533}",vltri:"\u22B2",vnsub:"\u2282\u20D2",vnsup:"\u2283\u20D2",Vopf:"\u{1D54D}",vopf:"\u{1D567}",vprop:"\u221D",vrtri:"\u22B3",Vscr:"\u{1D4B1}",vscr:"\u{1D4CB}",vsubnE:"\u2ACB\uFE00",vsubne:"\u228A\uFE00",vsupnE:"\u2ACC\uFE00",vsupne:"\u228B\uFE00",Vvdash:"\u22AA",vzigzag:"\u299A",Wcirc:"\u0174",wcirc:"\u0175",wedbar:"\u2A5F",Wedge:"\u22C0",wedge:"\u2227",wedgeq:"\u2259",weierp:"\u2118",Wfr:"\u{1D51A}",wfr:"\u{1D534}",Wopf:"\u{1D54E}",wopf:"\u{1D568}",wp:"\u2118",wr:"\u2240",wreath:"\u2240",Wscr:"\u{1D4B2}",wscr:"\u{1D4CC}",xcap:"\u22C2",xcirc:"\u25EF",xcup:"\u22C3",xdtri:"\u25BD",Xfr:"\u{1D51B}",xfr:"\u{1D535}",xhArr:"\u27FA",xharr:"\u27F7",Xi:"\u039E",xi:"\u03BE",xlArr:"\u27F8",xlarr:"\u27F5",xmap:"\u27FC",xnis:"\u22FB",xodot:"\u2A00",Xopf:"\u{1D54F}",xopf:"\u{1D569}",xoplus:"\u2A01",xotime:"\u2A02",xrArr:"\u27F9",xrarr:"\u27F6",Xscr:"\u{1D4B3}",xscr:"\u{1D4CD}",xsqcup:"\u2A06",xuplus:"\u2A04",xutri:"\u25B3",xvee:"\u22C1",xwedge:"\u22C0",Yacute:"\xDD",yacute:"\xFD",YAcy:"\u042F",yacy:"\u044F",Ycirc:"\u0176",ycirc:"\u0177",Ycy:"\u042B",ycy:"\u044B",yen:"\xA5",Yfr:"\u{1D51C}",yfr:"\u{1D536}",YIcy:"\u0407",yicy:"\u0457",Yopf:"\u{1D550}",yopf:"\u{1D56A}",Yscr:"\u{1D4B4}",yscr:"\u{1D4CE}",YUcy:"\u042E",yucy:"\u044E",Yuml:"\u0178",yuml:"\xFF",Zacute:"\u0179",zacute:"\u017A",Zcaron:"\u017D",zcaron:"\u017E",Zcy:"\u0417",zcy:"\u0437",Zdot:"\u017B",zdot:"\u017C",zeetrf:"\u2128",ZeroWidthSpace:"\u200B",Zeta:"\u0396",zeta:"\u03B6",Zfr:"\u2128",zfr:"\u{1D537}",ZHcy:"\u0416",zhcy:"\u0436",zigrarr:"\u21DD",Zopf:"\u2124",zopf:"\u{1D56B}",Zscr:"\u{1D4B5}",zscr:"\u{1D4CF}",zwj:"\u200D",zwnj:"\u200C"});df.entityMap=df.HTML_ENTITIES});var jF=oe($m=>{"use strict";var Yl=yc(),Ge=iE(),HF=ef(),s$=Yl.isHTMLEscapableRawTextElement,o$=Yl.isHTMLMimeType,a$=Yl.isHTMLRawTextElement,Af=Yl.hasOwn,OF=Yl.NAMESPACE,c$=HF.ParseError,l$=HF.DOMException,Jl=0,ta=1,jl=2,uf=3,$l=4,Vl=5,ff=6,jm=7;function KF(){}KF.prototype={parse:function(r,e,t){var i=this.domBuilder;i.startDocument(),A$(e,e=Object.create(null)),d$(r,e,t,i,this.errorHandler),i.endDocument()}};var hE=/&#?\w+;?/g;function d$(r,e,t,i,n){var s=o$(i.mimeType);r.indexOf(Ge.UNICODE_REPLACEMENT_CHARACTER)>=0&&n.warning("Unicode replacement character detected, source encoding issues?");function o(K){if(K>65535){K-=65536;var j=55296+(K>>10),te=56320+(K&1023);return String.fromCharCode(j,te)}else return String.fromCharCode(K)}function a(K){var j=K[K.length-1]===";"?K:K+";";if(!s&&j!==K)return n.error("EntityRef: expecting ;"),K;var te=Ge.Reference.exec(j);if(!te||te[0].length!==j.length)return n.error("entity not matching Reference production: "+K),K;var re=j.slice(1,-1);return Af(t,re)?t[re]:re.charAt(0)==="#"?o(parseInt(re.substring(1).replace("x","0x"))):(n.error("entity not found:"+K),K)}function c(K){if(K>I){var j=r.substring(I,K).replace(hE,a);f&&h(I),i.characters(j,0,K-I),I=K}}var l=0,d=0,u=/\r\n?|\n|$/g,f=i.locator;function h(K,j){for(;K>=d&&(j=u.exec(r));)l=d,d=j.index+j[0].length,f.lineNumber++;f.columnNumber=K-l+1}for(var g=[{currentNSMap:e}],p=[],I=0;;){try{var y=r.indexOf("<",I);if(y<0){if(!s&&p.length>0)return n.fatalError("unclosed xml tag(s): "+p.join(", "));if(!r.substring(I).match(/^\s*$/)){var w=i.doc,C=w.createTextNode(r.substring(I));if(w.documentElement)return n.error("Extra content at the end of the document");w.appendChild(C),i.currentElement=C}return}if(y>I){var b=r.substring(I,y);!s&&p.length===0&&(b=b.replace(new RegExp(Ge.S_OPT.source,"g"),""),b&&n.error("Unexpected content outside root element: '"+b+"'")),c(y)}switch(r.charAt(y+1)){case"/":var N=r.indexOf(">",y+2),x=r.substring(y+2,N>0?N:void 0);if(!x)return n.fatalError("end tag name missing");var _=Ge.reg("^",Ge.QName_group,Ge.S_OPT,"$"),R=N>0&&_.exec(x);if(!R){var U=N>0&&Ge.reg("^",Ge.QName_group).exec(x);if(s&&U)n.warning('end tag name contains invalid trailing characters: "'+x+'"'),R=U;else if(U&&new RegExp(_.source,_.flags+"m").test(x))n.error('end tag name is followed by a line break and trailing content: "'+x+'"'),R=U;else return n.fatalError('end tag name contains invalid characters: "'+x+'"')}if(!i.currentElement&&!i.doc.documentElement)return;var T=p[p.length-1]||i.currentElement.tagName||i.doc.documentElement.tagName||"";if(T!==R[1]){var D=R[1].toLowerCase();if(!s||T.toLowerCase()!==D)return n.fatalError('Opening and ending tag mismatch: "'+T+'" != "'+x+'"')}var B=g.pop();p.pop();var Q=B.localNSMap;if(i.endElement(B.uri,B.localName,T),Q)for(var v in Q)Af(Q,v)&&i.endPrefixMapping(v);N++;break;case"?":f&&h(y),N=g$(r,y,i,n);break;case"!":f&&h(y),N=zF(r,y,i,n,s);break;default:f&&h(y);var E=new JF,P=g[g.length-1].currentNSMap,N=u$(r,y,E,P,a,n,s),J=E.length;if(E.closed||(s&&Yl.isHTMLVoidElement(E.tagName)?E.closed=!0:p.push(E.tagName)),f&&J){for(var z=MF(f,{}),L=0;L<J;L++){var G=E[L];h(G.offset),G.locator=MF(f,{})}i.locator=z,LF(E,i,P)&&g.push(E),i.locator=f}else LF(E,i,P)&&g.push(E);s&&!E.closed?N=f$(r,N,E.tagName,a,i):N++}}catch(K){if(K instanceof c$)throw K;if(K instanceof l$)return n.fatalError("Error constructing the DOM: "+K.name+": "+K.message,K);n.error("element parse error: "+K),N=-1}N>I?I=N:c(Math.max(y,I)+1)}}function MF(r,e){return e.lineNumber=r.lineNumber,e.columnNumber=r.columnNumber,e}function u$(r,e,t,i,n,s,o){function a(h,g,p){if(Af(t.attributeNames,h))return s.fatalError("Attribute "+h+" redefined");if(!o&&g.indexOf("<")>=0)return s.fatalError("Unescaped '<' not allowed in attributes values");t.addValue(h,g.replace(/[\t\n\r]/g," ").replace(hE,n),p)}for(var c,l,d=++e,u=Jl;;){var f=r.charAt(d);if(u===Jl&&f==="<")throw new Error("unexpected < in tag name: "+r.slice(e,d));switch(f){case"=":if(u===ta)c=r.slice(e,d),u=uf;else if(u===jl)u=uf;else throw new Error("attribute equal must after attrName");break;case"'":case'"':if(u===uf||u===ta)if(u===ta&&(s.warning('attribute value must after "="'),c=r.slice(e,d)),e=d+1,d=r.indexOf(f,e),d>0)l=r.slice(e,d),a(c,l,e-1),u=Vl;else throw new Error("attribute value no end '"+f+"' match");else if(u==$l)l=r.slice(e,d),a(c,l,e),s.warning('attribute "'+c+'" missed start quot('+f+")!!"),e=d+1,u=Vl;else throw new Error('attribute value must after "="');break;case"/":switch(u){case Jl:t.setTagName(r.slice(e,d));case Vl:case ff:case jm:u=jm,t.closed=!0;case $l:case ta:break;case jl:t.closed=!0;break;default:throw new Error("attribute invalid close char('/')")}break;case"":return s.error("unexpected end of input"),u==Jl&&t.setTagName(r.slice(e,d)),d;case">":switch(u){case Jl:t.setTagName(r.slice(e,d));case Vl:case ff:case jm:break;case $l:case ta:l=r.slice(e,d),l.slice(-1)==="/"&&(t.closed=!0,l=l.slice(0,-1));case jl:u===jl&&(l=c),u==$l?(s.warning('attribute "'+l+'" missed quot(")!'),a(c,l,e)):(o||s.warning('attribute "'+l+'" missed value!! "'+l+'" instead!!'),a(l,l,e));break;case uf:if(!o)return s.fatalError(`AttValue: ' or " expected`)}return d;case"\x80":f=" ";default:if(f<=" ")switch(u){case Jl:t.setTagName(r.slice(e,d)),u=ff;break;case ta:c=r.slice(e,d),u=jl;break;case $l:var l=r.slice(e,d);s.warning('attribute "'+l+'" missed quot(")!!'),a(c,l,e);case Vl:u=ff;break}else switch(u){case jl:o||s.warning('attribute "'+c+'" missed value!! "'+c+'" instead2!!'),a(c,c,e),e=d,u=ta;break;case Vl:s.warning('attribute space is required"'+c+'"!!');case ff:u=ta,e=d;break;case uf:u=$l,e=d;break;case jm:throw new Error("elements closed character '/' and '>' must be connected to")}}d++}}function LF(r,e,t){for(var i=r.tagName,n=null,u=r.length;u--;){var s=r[u],o=s.qName,a=s.value,f=o.indexOf(":");if(f>0)var c=s.prefix=o.slice(0,f),l=o.slice(f+1),d=c==="xmlns"&&l;else l=o,c=null,d=o==="xmlns"&&"";s.localName=l,d!==!1&&(n==null&&(n=Object.create(null),t=Object.create(t)),t[d]=n[d]=a,s.uri=OF.XMLNS,e.startPrefixMapping(d,a))}for(var u=r.length;u--;)s=r[u],s.prefix&&(s.prefix==="xml"&&(s.uri=OF.XML),s.prefix!=="xmlns"&&(s.uri=t[s.prefix]));var f=i.indexOf(":");f>0?(c=r.prefix=i.slice(0,f),l=r.localName=i.slice(f+1)):(c=null,l=r.localName=i);var h=r.uri=t[c||""];if(e.startElement(h,l,i,r),r.closed){if(e.endElement(h,l,i),n)for(c in n)Af(n,c)&&e.endPrefixMapping(c)}else return r.currentNSMap=t,r.localNSMap=n,!0}function f$(r,e,t,i,n){var s=s$(t);if(s||a$(t)){var o=new RegExp("</"+t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")+">","ig");o.lastIndex=e;var a=o.exec(r),c=a?a.index:-1;if(c<0)return e+1;var l=r.substring(e+1,c);return s&&(l=l.replace(hE,i)),n.characters(l,0,l.length),c}return e+1}function A$(r,e){for(var t in r)Af(r,t)&&(e[t]=r[t])}function GF(r,e){var t=e;function i(d){return d=d||0,r.charAt(t+d)}function n(d){d=d||1,t+=d}function s(){for(var d=0;t<r.length;){var u=i();if(u!==" "&&u!==` -`&&u!==" "&&u!=="\r")return d;d++,n()}return-1}function o(){return r.substring(t)}function a(d){return r.substring(t,t+d.length)===d}function c(d){return r.substring(t,t+d.length).toUpperCase()===d.toUpperCase()}function l(d){var u=Ge.reg("^",d),f=u.exec(o());return f?(n(f[0].length),f[0]):null}return{char:i,getIndex:function(){return t},getMatch:l,getSource:function(){return r},skip:n,skipBlanks:s,substringFromIndex:o,substringStartsWith:a,substringStartsWithCaseInsensitive:c}}function h$(r,e){function t(a,c){var l=Ge.PI.exec(a.substringFromIndex());return l?l[1].toLowerCase()==="xml"?c.fatalError("xml declaration is only allowed at the start of the document, but found at position "+a.getIndex()):(a.skip(l[0].length),l[0]):c.fatalError("processing instruction is not well-formed at position "+a.getIndex())}var i=r.getSource();if(r.char()==="["){r.skip(1);for(var n=r.getIndex();r.getIndex()<i.length;){if(r.skipBlanks(),r.char()==="]"){var s=i.substring(n,r.getIndex());return r.skip(1),s}var o=null;if(r.char()==="<"&&r.char(1)==="!")switch(r.char(2)){case"E":r.char(3)==="L"?o=r.getMatch(Ge.elementdecl):r.char(3)==="N"&&(o=r.getMatch(Ge.EntityDecl));break;case"A":o=r.getMatch(Ge.AttlistDecl);break;case"N":o=r.getMatch(Ge.NotationDecl);break;case"-":o=r.getMatch(Ge.Comment);break}else if(r.char()==="<"&&r.char(1)==="?")o=t(r,e);else if(r.char()==="%")o=r.getMatch(Ge.PEReference);else return e.fatalError("Error detected in Markup declaration");if(!o)return e.fatalError("Error in internal subset at position "+r.getIndex())}return e.fatalError("doctype internal subset is not well-formed, missing ]")}}function zF(r,e,t,i,n){var s=GF(r,e);switch(n?s.char(2).toUpperCase():s.char(2)){case"-":var o=s.getMatch(Ge.Comment);return o?(t.comment(o,Ge.COMMENT_START.length,o.length-Ge.COMMENT_START.length-Ge.COMMENT_END.length),s.getIndex()):i.fatalError("comment is not well-formed at position "+s.getIndex());case"[":var a=s.getMatch(Ge.CDSect);return a?!n&&!t.currentElement?i.fatalError("CDATA outside of element"):(t.startCDATA(),t.characters(a,Ge.CDATA_START.length,a.length-Ge.CDATA_START.length-Ge.CDATA_END.length),t.endCDATA(),s.getIndex()):i.fatalError("Invalid CDATA starting at position "+e);case"D":{if(t.doc&&t.doc.documentElement)return i.fatalError("Doctype not allowed inside or after documentElement at position "+s.getIndex());if(n?!s.substringStartsWithCaseInsensitive(Ge.DOCTYPE_DECL_START):!s.substringStartsWith(Ge.DOCTYPE_DECL_START))return i.fatalError("Expected "+Ge.DOCTYPE_DECL_START+" at position "+s.getIndex());if(s.skip(Ge.DOCTYPE_DECL_START.length),s.skipBlanks()<1)return i.fatalError("Expected whitespace after "+Ge.DOCTYPE_DECL_START+" at position "+s.getIndex());var c={name:void 0,publicId:void 0,systemId:void 0,internalSubset:void 0};if(c.name=s.getMatch(Ge.Name),!c.name)return i.fatalError("doctype name missing or contains unexpected characters at position "+s.getIndex());if(n&&c.name.toLowerCase()!=="html"&&i.warning("Unexpected DOCTYPE in HTML document at position "+s.getIndex()),s.skipBlanks(),s.substringStartsWith(Ge.PUBLIC)||s.substringStartsWith(Ge.SYSTEM)){var l=Ge.ExternalID_match.exec(s.substringFromIndex());if(!l)return i.fatalError("doctype external id is not well-formed at position "+s.getIndex());l.groups.SystemLiteralOnly!==void 0?c.systemId=l.groups.SystemLiteralOnly:(c.systemId=l.groups.SystemLiteral,c.publicId=l.groups.PubidLiteral),s.skip(l[0].length)}else if(n&&s.substringStartsWithCaseInsensitive(Ge.SYSTEM)){if(s.skip(Ge.SYSTEM.length),s.skipBlanks()<1)return i.fatalError("Expected whitespace after "+Ge.SYSTEM+" at position "+s.getIndex());if(c.systemId=s.getMatch(Ge.ABOUT_LEGACY_COMPAT_SystemLiteral),!c.systemId)return i.fatalError("Expected "+Ge.ABOUT_LEGACY_COMPAT+" in single or double quotes after "+Ge.SYSTEM+" at position "+s.getIndex())}return n&&c.systemId&&!Ge.ABOUT_LEGACY_COMPAT_SystemLiteral.test(c.systemId)&&i.warning("Unexpected doctype.systemId in HTML document at position "+s.getIndex()),n||(s.skipBlanks(),c.internalSubset=h$(s,i)),s.skipBlanks(),s.char()!==">"?i.fatalError("doctype not terminated with > at position "+s.getIndex()):(s.skip(1),t.startDTD(c.name,c.publicId,c.systemId,c.internalSubset),t.endDTD(),s.getIndex())}default:return i.fatalError('Not well-formed XML starting with "<!" at position '+e)}}function g$(r,e,t,i){var n=r.substring(e).match(Ge.PI);if(!n)return i.fatalError("Invalid processing instruction starting at position "+e);if(n[1].toLowerCase()==="xml"){if(e>0)return i.fatalError("processing instruction at position "+e+" is an xml declaration which is only at the start of the document");if(!Ge.XMLDecl.test(r.substring(e)))return i.fatalError("xml declaration is not well-formed")}return t.processingInstruction(n[1],n[2]),e+n[0].length}function JF(){this.attributeNames=Object.create(null)}JF.prototype={setTagName:function(r){if(!Ge.QName_exact.test(r))throw new Error("invalid tagName:"+r);this.tagName=r},addValue:function(r,e,t){if(!Ge.QName_exact.test(r))throw new Error("invalid attribute:"+r);this.attributeNames[r]=this.length,this[this.length++]={qName:r,value:e,offset:t}},length:0,getLocalName:function(r){return this[r].localName},getLocator:function(r){return this[r].locator},getQName:function(r){return this[r].qName},getURI:function(r){return this[r].uri},getValue:function(r){return this[r].value}};$m.XMLReader=KF;$m.parseUtils=GF;$m.parseDoctypeCommentOrCData=zF});var eP=oe(Xl=>{"use strict";var wc=yc(),p$=AE(),m$=ef(),$F=qF(),y$=jF(),I$=p$.DOMImplementation,w$=wc.hasDefaultHTMLNamespace,x$=wc.isHTMLMimeType,C$=wc.isValidMimeType,WF=wc.MIME_TYPE,gE=wc.NAMESPACE,VF=m$.ParseError,E$=y$.XMLReader;function XF(r){return r.replace(/\r[\n\u0085]/g,` +${y}${w}`,b=await Bu(C,d.secretAccessKey),x=`OSS ${d.accessKeyID}:${b}`,_={"Content-Type":I,Date:p,Authorization:x};d.sessionToken&&(_["x-oss-security-token"]=d.sessionToken);let R=await fetch(g,{method:"PUT",headers:_,body:c});if(!R.ok)throw new Error(`OSS upload failed: ${R.status} ${await R.text()}`);f&&await this.client.waitUploadTaskInfo(f)}}});var kF=oe(fE=>{var mj=typeof fE>"u"?{}:fE;(function(r){"use strict";var e="__namespace",t=function(A){return A==null},i=function(A){return A===e||Number.isInteger(A)&&A>=1&&A<=11},n=function(A){return A&&i(A.nodeType)&&typeof A.nodeName=="string"};function s(A){var k=Array.prototype.slice,O=A.length,V=function(W,ue){return function(){return ue.apply(this,W.concat(k.call(arguments)))}},H=function(){var W=k.call(arguments);return W.length<O?V(W,H):A.apply(this,k.apply(arguments,[0,O]))};return H}var o=function(A,k){for(var O=0;O<k.length;O+=1)A(k[O],O,k)},a=function(A,k,O){var V=k;return o(function(H,W){V=A(V,H,W)},O),V},c=function(A,k){var O=new Array(k.length);return o(function(V,H){O[H]=A(V)},k),O},l=function(A,k){var O=[];return o(function(V,H){A(V,H)&&O.push(V)},k),O},d=function(A,k){for(var O=0;O<A.length;O+=1)if(A[O]===k)return!0;return!1};function u(A){return function(){return A}}function f(A){return A.toString()}var h=function(A,k){return k.join(A)},g=function(A,k,O){return A+O+k},p=Array.prototype.concat,I=function(A,k){var O=new Ce;O.addArray(A);var V=O.toArray();return k?V.reverse():V},y=32767;function w(A){for(var k=[],O=0;O<A.length;O+=y){var V=A.slice(O,O+y);k=p.apply(k,V)}return k}function C(A,k){for(var O=Object(A),V=1;V<arguments.length;V++){var H=arguments[V];if(H!=null)for(var W in H)Object.prototype.hasOwnProperty.call(H,W)&&(O[W]=H[W])}return O}var b={ELEMENT_NODE:1,ATTRIBUTE_NODE:2,TEXT_NODE:3,CDATA_SECTION_NODE:4,PROCESSING_INSTRUCTION_NODE:7,COMMENT_NODE:8,DOCUMENT_NODE:9,DOCUMENT_TYPE_NODE:10,DOCUMENT_FRAGMENT_NODE:11,NAMESPACE_NODE:e};x.prototype=new Object,x.prototype.constructor=x,x.superclass=Object.prototype;function x(){this.init()}x.prototype.init=function(){this.reduceActions=[],this.reduceActions[3]=function(A){return new Q(A[0],A[2])},this.reduceActions[5]=function(A){return new v(A[0],A[2])},this.reduceActions[7]=function(A){return new E(A[0],A[2])},this.reduceActions[8]=function(A){return new P(A[0],A[2])},this.reduceActions[10]=function(A){return new N(A[0],A[2])},this.reduceActions[11]=function(A){return new J(A[0],A[2])},this.reduceActions[12]=function(A){return new z(A[0],A[2])},this.reduceActions[13]=function(A){return new L(A[0],A[2])},this.reduceActions[15]=function(A){return new G(A[0],A[2])},this.reduceActions[16]=function(A){return new K(A[0],A[2])},this.reduceActions[18]=function(A){return new $(A[0],A[2])},this.reduceActions[19]=function(A){return new te(A[0],A[2])},this.reduceActions[20]=function(A){return new re(A[0],A[2])},this.reduceActions[22]=function(A){return new D(A[1])},this.reduceActions[24]=function(A){return new ee(A[0],A[2])},this.reduceActions[25]=function(A){return new Z(void 0,void 0,A[0])},this.reduceActions[27]=function(A){return A[0].locationPath=A[2],A[0]},this.reduceActions[28]=function(A){return A[0].locationPath=A[2],A[0].locationPath.steps.unshift(new se(se.DESCENDANTORSELF,ce.nodeTest,[])),A[0]},this.reduceActions[29]=function(A){return new Z(A[0],[],void 0)},this.reduceActions[30]=function(A){return be.instance_of(A[0],Z)?(A[0].filterPredicates==null&&(A[0].filterPredicates=[]),A[0].filterPredicates.push(A[1]),A[0]):new Z(A[0],[A[1]],void 0)},this.reduceActions[32]=function(A){return A[1]},this.reduceActions[33]=function(A){return new we(A[0])},this.reduceActions[34]=function(A){return new Ee(A[0])},this.reduceActions[36]=function(A){return new Or(A[0],[])},this.reduceActions[37]=function(A){return new Or(A[0],A[2])},this.reduceActions[38]=function(A){return[A[0]]},this.reduceActions[39]=function(A){return A[2].unshift(A[0]),A[2]},this.reduceActions[43]=function(A){return new _e(!0,[])},this.reduceActions[44]=function(A){return A[1].absolute=!0,A[1]},this.reduceActions[46]=function(A){return new _e(!1,[A[0]])},this.reduceActions[47]=function(A){return A[0].steps.push(A[2]),A[0]},this.reduceActions[49]=function(A){return new se(A[0],A[1],[])},this.reduceActions[50]=function(A){return new se(se.CHILD,A[0],[])},this.reduceActions[51]=function(A){return new se(A[0],A[1],A[2])},this.reduceActions[52]=function(A){return new se(se.CHILD,A[0],A[1])},this.reduceActions[54]=function(A){return[A[0]]},this.reduceActions[55]=function(A){return A[1].unshift(A[0]),A[1]},this.reduceActions[56]=function(A){return A[0]=="ancestor"?se.ANCESTOR:A[0]=="ancestor-or-self"?se.ANCESTORORSELF:A[0]=="attribute"?se.ATTRIBUTE:A[0]=="child"?se.CHILD:A[0]=="descendant"?se.DESCENDANT:A[0]=="descendant-or-self"?se.DESCENDANTORSELF:A[0]=="following"?se.FOLLOWING:A[0]=="following-sibling"?se.FOLLOWINGSIBLING:A[0]=="namespace"?se.NAMESPACE:A[0]=="parent"?se.PARENT:A[0]=="preceding"?se.PRECEDING:A[0]=="preceding-sibling"?se.PRECEDINGSIBLING:A[0]=="self"?se.SELF:-1},this.reduceActions[57]=function(A){return se.ATTRIBUTE},this.reduceActions[59]=function(A){return A[0]=="comment"?ce.commentTest:A[0]=="text"?ce.textTest:A[0]=="processing-instruction"?ce.anyPiTest:A[0]=="node"?ce.nodeTest:new ce(-1,void 0)},this.reduceActions[60]=function(A){return new ce.PITest(A[2])},this.reduceActions[61]=function(A){return A[1]},this.reduceActions[63]=function(A){return A[1].absolute=!0,A[1].steps.unshift(new se(se.DESCENDANTORSELF,ce.nodeTest,[])),A[1]},this.reduceActions[64]=function(A){return A[0].steps.push(new se(se.DESCENDANTORSELF,ce.nodeTest,[])),A[0].steps.push(A[2]),A[0]},this.reduceActions[65]=function(A){return new se(se.SELF,ce.nodeTest,[])},this.reduceActions[66]=function(A){return new se(se.PARENT,ce.nodeTest,[])},this.reduceActions[67]=function(A){return new dr(A[1])},this.reduceActions[68]=function(A){return ce.nameTestAny},this.reduceActions[69]=function(A){return new ce.NameTestPrefixAny(A[0].split(":")[0])},this.reduceActions[70]=function(A){return new ce.NameTestQName(A[0])}},x.actionTable=[" s s sssssssss s ss s ss"," s ","r rrrrrrrrr rrrrrrr rr r "," rrrrr "," s s sssssssss s ss s ss","rs rrrrrrrr s sssssrrrrrr rrs rs "," s s sssssssss s ss s ss"," s "," s ","r rrrrrrrrr rrrrrrr rr rr ","r rrrrrrrrr rrrrrrr rr rr ","r rrrrrrrrr rrrrrrr rr rr ","r rrrrrrrrr rrrrrrr rr rr ","r rrrrrrrrr rrrrrrr rr rr "," s "," s "," s s sssss s s ","r rrrrrrrrr rrrrrrr rr r ","a ","r s rr r ","r sr rr r ","r s rr s rr r ","r rssrr rss rr r ","r rrrrr rrrss rr r ","r rrrrrsss rrrrr rr r ","r rrrrrrrr rrrrr rr r ","r rrrrrrrr rrrrrs rr r ","r rrrrrrrr rrrrrr rr r ","r rrrrrrrr rrrrrr rr r ","r srrrrrrrr rrrrrrs rr sr ","r srrrrrrrr rrrrrrs rr r ","r rrrrrrrrr rrrrrrr rr rr ","r rrrrrrrrr rrrrrrr rr rr ","r rrrrrrrrr rrrrrrr rr rr ","r rrrrrrrr rrrrrr rr r ","r rrrrrrrr rrrrrr rr r ","r rrrrrrrrr rrrrrrr rr r ","r rrrrrrrrr rrrrrrr rr r "," sssss ","r rrrrrrrrr rrrrrrr rr sr ","r rrrrrrrrr rrrrrrr rr r ","r rrrrrrrrr rrrrrrr rr rr ","r rrrrrrrrr rrrrrrr rr rr "," s ","r srrrrrrrr rrrrrrs rr r ","r rrrrrrrr rrrrr rr r "," s "," s "," rrrrr "," s s sssssssss s sss s ss","r srrrrrrrr rrrrrrs rr r "," s s sssssssss s ss s ss"," s s sssssssss s ss s ss"," s s sssssssss s ss s ss"," s s sssssssss s ss s ss"," s s sssssssss s ss s ss"," s s sssssssss s ss s ss"," s s sssssssss s ss s ss"," s s sssssssss s ss s ss"," s s sssssssss s ss s ss"," s s sssssssss s ss s ss"," s s sssssssss s ss s ss"," s s sssssssss s ss s ss"," s s sssssssss s ss s ss"," s s sssssssss ss s ss"," s s sssssssss s ss s ss"," s s sssss s s "," s s sssss s s ","r rrrrrrrrr rrrrrrr rr rr "," s s sssss s s "," s s sssss s s ","r rrrrrrrrr rrrrrrr rr sr ","r rrrrrrrrr rrrrrrr rr sr ","r rrrrrrrrr rrrrrrr rr r ","r rrrrrrrrr rrrrrrr rr rr "," s ","r rrrrrrrrr rrrrrrr rr rr ","r rrrrrrrrr rrrrrrr rr rr "," rr "," s "," rs ","r sr rr r ","r s rr s rr r ","r rssrr rss rr r ","r rssrr rss rr r ","r rrrrr rrrss rr r ","r rrrrr rrrss rr r ","r rrrrr rrrss rr r ","r rrrrr rrrss rr r ","r rrrrrsss rrrrr rr r ","r rrrrrsss rrrrr rr r ","r rrrrrrrr rrrrr rr r ","r rrrrrrrr rrrrr rr r ","r rrrrrrrr rrrrr rr r ","r rrrrrrrr rrrrrr rr r "," r "," s ","r srrrrrrrr rrrrrrs rr r ","r srrrrrrrr rrrrrrs rr r ","r rrrrrrrrr rrrrrrr rr r ","r rrrrrrrrr rrrrrrr rr r ","r rrrrrrrrr rrrrrrr rr r ","r rrrrrrrrr rrrrrrr rr r ","r rrrrrrrrr rrrrrrr rr rr ","r rrrrrrrrr rrrrrrr rr rr "," s s sssssssss s ss s ss","r rrrrrrrrr rrrrrrr rr rr "," r "],x.actionTableNumber=[` 1 0 /.-,+*)(' & %$ # "!`," J ","a aaaaaaaaa aaaaaaa aa a "," YYYYY ",` 1 0 /.-,+*)(' & %$ # "!`,`K1 KKKKKKKK . +*)('KKKKKK KK# K" `,` 1 0 /.-,+*)(' & %$ # "!`," N "," O ","e eeeeeeeee eeeeeee ee ee ","f fffffffff fffffff ff ff ","d ddddddddd ddddddd dd dd ","B BBBBBBBBB BBBBBBB BB BB ","A AAAAAAAAA AAAAAAA AA AA "," P "," Q ",` 1 . +*)(' # " `,"b bbbbbbbbb bbbbbbb bb b "," ","! S !! ! ",'" T" "" " ',"$ V $$ U $$ $ ","& &ZY&& &XW && & ",") ))))) )))\\[ )) ) ",". ....._^] ..... .. . ","1 11111111 11111 11 1 ","5 55555555 55555` 55 5 ","7 77777777 777777 77 7 ","9 99999999 999999 99 9 ",": c:::::::: ::::::b :: a: ","I fIIIIIIII IIIIIIe II I ","= ========= ======= == == ","? ????????? ??????? ?? ?? ","C CCCCCCCCC CCCCCCC CC CC ","J JJJJJJJJ JJJJJJ JJ J ","M MMMMMMMM MMMMMM MM M ","N NNNNNNNNN NNNNNNN NN N ","P PPPPPPPPP PPPPPPP PP P "," +*)(' ","R RRRRRRRRR RRRRRRR RR aR ","U UUUUUUUUU UUUUUUU UU U ","Z ZZZZZZZZZ ZZZZZZZ ZZ ZZ ","c ccccccccc ccccccc cc cc "," j ","L fLLLLLLLL LLLLLLe LL L ","6 66666666 66666 66 6 "," k "," l "," XXXXX ",` 1 0 /.-,+*)(' & %$m # "!`,"_ f________ ______e __ _ ",` 1 0 /.-,+*)(' & %$ # "!`,` 1 0 /.-,+*)(' & %$ # "!`,` 1 0 /.-,+*)(' & %$ # "!`,` 1 0 /.-,+*)(' & %$ # "!`,` 1 0 /.-,+*)(' & %$ # "!`,` 1 0 /.-,+*)(' & %$ # "!`,` 1 0 /.-,+*)(' & %$ # "!`,` 1 0 /.-,+*)(' & %$ # "!`,` 1 0 /.-,+*)(' & %$ # "!`,` 1 0 /.-,+*)(' & %$ # "!`,` 1 0 /.-,+*)(' & %$ # "!`,` 1 0 /.-,+*)(' & %$ # "!`,` 1 0 /.-,+*)(' & %$ # "!`,` 1 0 /.-,+*)(' %$ # "!`,` 1 0 /.-,+*)(' & %$ # "!`,` 1 . +*)(' # " `,` 1 . +*)(' # " `,"> >>>>>>>>> >>>>>>> >> >> ",` 1 . +*)(' # " `,` 1 . +*)(' # " `,"Q QQQQQQQQQ QQQQQQQ QQ aQ ","V VVVVVVVVV VVVVVVV VV aV ","T TTTTTTTTT TTTTTTT TT T ","@ @@@@@@@@@ @@@@@@@ @@ @@ "," \x87 ","[ [[[[[[[[[ [[[[[[[ [[ [[ ","D DDDDDDDDD DDDDDDD DD DD "," HH "," \x88 "," F\x89 ","# T# ## # ","% V %% U %% % ","' 'ZY'' 'XW '' ' ","( (ZY(( (XW (( ( ","+ +++++ +++\\[ ++ + ","* ***** ***\\[ ** * ","- ----- ---\\[ -- - ",", ,,,,, ,,,\\[ ,, , ","0 00000_^] 00000 00 0 ","/ /////_^] ///// // / ","2 22222222 22222 22 2 ","3 33333333 33333 33 3 ","4 44444444 44444 44 4 ","8 88888888 888888 88 8 "," ^ "," \x8A ","; f;;;;;;;; ;;;;;;e ;; ; ","< f<<<<<<<< <<<<<<e << < ","O OOOOOOOOO OOOOOOO OO O ","` ````````` ``````` `` ` ","S SSSSSSSSS SSSSSSS SS S ","W WWWWWWWWW WWWWWWW WW W ","\\ \\\\\\\\\\\\\\\\\\ \\\\\\\\\\\\\\ \\\\ \\\\ ","E EEEEEEEEE EEEEEEE EE EE ",` 1 0 /.-,+*)(' & %$ # "!`,"] ]]]]]]]]] ]]]]]]] ]] ]] "," G "],x.gotoTable=["3456789:;<=>?@ AB CDEFGH IJ "," "," "," ","L456789:;<=>?@ AB CDEFGH IJ "," M EFGH IJ "," N;<=>?@ AB CDEFGH IJ "," "," "," "," "," "," "," "," "," "," S EFGH IJ "," "," "," "," "," "," "," "," "," "," "," "," "," e "," "," "," "," "," "," "," "," "," h J "," i j "," "," "," "," "," "," "," "," "," ","o456789:;<=>?@ ABpqCDEFGH IJ "," "," r6789:;<=>?@ AB CDEFGH IJ "," s789:;<=>?@ AB CDEFGH IJ "," t89:;<=>?@ AB CDEFGH IJ "," u89:;<=>?@ AB CDEFGH IJ "," v9:;<=>?@ AB CDEFGH IJ "," w9:;<=>?@ AB CDEFGH IJ "," x9:;<=>?@ AB CDEFGH IJ "," y9:;<=>?@ AB CDEFGH IJ "," z:;<=>?@ AB CDEFGH IJ "," {:;<=>?@ AB CDEFGH IJ "," |;<=>?@ AB CDEFGH IJ "," };<=>?@ AB CDEFGH IJ "," ~;<=>?@ AB CDEFGH IJ "," \x7F=>?@ AB CDEFGH IJ ","\x80456789:;<=>?@ AB CDEFGH IJ\x81"," \x82 EFGH IJ "," \x83 EFGH IJ "," "," \x84 GH IJ "," \x85 GH IJ "," i \x86 "," i \x87 "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," "," ","o456789:;<=>?@ AB\x8CqCDEFGH IJ "," "," "],x.productions=[[1,1,2],[2,1,3],[3,1,4],[3,3,3,-9,4],[4,1,5],[4,3,4,-8,5],[5,1,6],[5,3,5,-22,6],[5,3,5,-5,6],[6,1,7],[6,3,6,-23,7],[6,3,6,-24,7],[6,3,6,-6,7],[6,3,6,-7,7],[7,1,8],[7,3,7,-25,8],[7,3,7,-26,8],[8,1,9],[8,3,8,-12,9],[8,3,8,-11,9],[8,3,8,-10,9],[9,1,10],[9,2,-26,9],[10,1,11],[10,3,10,-27,11],[11,1,12],[11,1,13],[11,3,13,-28,14],[11,3,13,-4,14],[13,1,15],[13,2,13,16],[15,1,17],[15,3,-29,2,-30],[15,1,-15],[15,1,-16],[15,1,18],[18,3,-13,-29,-30],[18,4,-13,-29,19,-30],[19,1,20],[19,3,20,-31,19],[20,1,2],[12,1,14],[12,1,21],[21,1,-28],[21,2,-28,14],[21,1,22],[14,1,23],[14,3,14,-28,23],[14,1,24],[23,2,25,26],[23,1,26],[23,3,25,26,27],[23,2,26,27],[23,1,28],[27,1,16],[27,2,16,27],[25,2,-14,-3],[25,1,-32],[26,1,29],[26,3,-20,-29,-30],[26,4,-21,-29,-15,-30],[16,3,-33,30,-34],[30,1,2],[22,2,-4,14],[24,3,14,-4,23],[28,1,-35],[28,1,-2],[17,2,-36,-18],[29,1,-17],[29,1,-19],[29,1,-18]],x.DOUBLEDOT=2,x.DOUBLECOLON=3,x.DOUBLESLASH=4,x.NOTEQUAL=5,x.LESSTHANOREQUAL=6,x.GREATERTHANOREQUAL=7,x.AND=8,x.OR=9,x.MOD=10,x.DIV=11,x.MULTIPLYOPERATOR=12,x.FUNCTIONNAME=13,x.AXISNAME=14,x.LITERAL=15,x.NUMBER=16,x.ASTERISKNAMETEST=17,x.QNAME=18,x.NCNAMECOLONASTERISK=19,x.NODETYPE=20,x.PROCESSINGINSTRUCTIONWITHLITERAL=21,x.EQUALS=22,x.LESSTHAN=23,x.GREATERTHAN=24,x.PLUS=25,x.MINUS=26,x.BAR=27,x.SLASH=28,x.LEFTPARENTHESIS=29,x.RIGHTPARENTHESIS=30,x.COMMA=31,x.AT=32,x.LEFTBRACKET=33,x.RIGHTBRACKET=34,x.DOT=35,x.DOLLAR=36,x.prototype.tokenize=function(A){for(var k=[],O=[],V=A+"\0",H=0,W=V.charAt(H++);;){for(;W==" "||W==" "||W=="\r"||W==` +`;)W=V.charAt(H++);if(W=="\0"||H>=V.length)break;if(W=="("){k.push(x.LEFTPARENTHESIS),O.push(W),W=V.charAt(H++);continue}if(W==")"){k.push(x.RIGHTPARENTHESIS),O.push(W),W=V.charAt(H++);continue}if(W=="["){k.push(x.LEFTBRACKET),O.push(W),W=V.charAt(H++);continue}if(W=="]"){k.push(x.RIGHTBRACKET),O.push(W),W=V.charAt(H++);continue}if(W=="@"){k.push(x.AT),O.push(W),W=V.charAt(H++);continue}if(W==","){k.push(x.COMMA),O.push(W),W=V.charAt(H++);continue}if(W=="|"){k.push(x.BAR),O.push(W),W=V.charAt(H++);continue}if(W=="+"){k.push(x.PLUS),O.push(W),W=V.charAt(H++);continue}if(W=="-"){k.push(x.MINUS),O.push(W),W=V.charAt(H++);continue}if(W=="="){k.push(x.EQUALS),O.push(W),W=V.charAt(H++);continue}if(W=="$"){k.push(x.DOLLAR),O.push(W),W=V.charAt(H++);continue}if(W=="."){if(W=V.charAt(H++),W=="."){k.push(x.DOUBLEDOT),O.push(".."),W=V.charAt(H++);continue}if(W>="0"&&W<="9"){var ue="."+W;for(W=V.charAt(H++);W>="0"&&W<="9";)ue+=W,W=V.charAt(H++);k.push(x.NUMBER),O.push(ue);continue}k.push(x.DOT),O.push(".");continue}if(W=="'"||W=='"'){for(var Re=W,Ye="";H<V.length&&(W=V.charAt(H))!==Re;)Ye+=W,H+=1;if(W!==Re)throw Ai.fromMessage("Unterminated string literal: "+Re+Ye);H+=1,k.push(x.LITERAL),O.push(Ye),W=V.charAt(H++);continue}if(W>="0"&&W<="9"){var ue=W;for(W=V.charAt(H++);W>="0"&&W<="9";)ue+=W,W=V.charAt(H++);if(W=="."&&V.charAt(H)>="0"&&V.charAt(H)<="9")for(ue+=W,ue+=V.charAt(H++),W=V.charAt(H++);W>="0"&&W<="9";)ue+=W,W=V.charAt(H++);k.push(x.NUMBER),O.push(ue);continue}if(W=="*"){if(k.length>0){var Ie=k[k.length-1];if(Ie!=x.AT&&Ie!=x.DOUBLECOLON&&Ie!=x.LEFTPARENTHESIS&&Ie!=x.LEFTBRACKET&&Ie!=x.AND&&Ie!=x.OR&&Ie!=x.MOD&&Ie!=x.DIV&&Ie!=x.MULTIPLYOPERATOR&&Ie!=x.SLASH&&Ie!=x.DOUBLESLASH&&Ie!=x.BAR&&Ie!=x.PLUS&&Ie!=x.MINUS&&Ie!=x.EQUALS&&Ie!=x.NOTEQUAL&&Ie!=x.LESSTHAN&&Ie!=x.LESSTHANOREQUAL&&Ie!=x.GREATERTHAN&&Ie!=x.GREATERTHANOREQUAL){k.push(x.MULTIPLYOPERATOR),O.push(W),W=V.charAt(H++);continue}}k.push(x.ASTERISKNAMETEST),O.push(W),W=V.charAt(H++);continue}if(W==":"&&V.charAt(H)==":"){k.push(x.DOUBLECOLON),O.push("::"),H++,W=V.charAt(H++);continue}if(W=="/"){if(W=V.charAt(H++),W=="/"){k.push(x.DOUBLESLASH),O.push("//"),W=V.charAt(H++);continue}k.push(x.SLASH),O.push("/");continue}if(W=="!"&&V.charAt(H)=="="){k.push(x.NOTEQUAL),O.push("!="),H++,W=V.charAt(H++);continue}if(W=="<"){if(V.charAt(H)=="="){k.push(x.LESSTHANOREQUAL),O.push("<="),H++,W=V.charAt(H++);continue}k.push(x.LESSTHAN),O.push("<"),W=V.charAt(H++);continue}if(W==">"){if(V.charAt(H)=="="){k.push(x.GREATERTHANOREQUAL),O.push(">="),H++,W=V.charAt(H++);continue}k.push(x.GREATERTHAN),O.push(">"),W=V.charAt(H++);continue}if(W=="_"||be.isLetter(W.charCodeAt(0))){var Fe=W;for(W=V.charAt(H++);be.isNCNameChar(W.charCodeAt(0));)Fe+=W,W=V.charAt(H++);if(k.length>0){var Ie=k[k.length-1];if(Ie!=x.AT&&Ie!=x.DOUBLECOLON&&Ie!=x.LEFTPARENTHESIS&&Ie!=x.LEFTBRACKET&&Ie!=x.AND&&Ie!=x.OR&&Ie!=x.MOD&&Ie!=x.DIV&&Ie!=x.MULTIPLYOPERATOR&&Ie!=x.SLASH&&Ie!=x.DOUBLESLASH&&Ie!=x.BAR&&Ie!=x.PLUS&&Ie!=x.MINUS&&Ie!=x.EQUALS&&Ie!=x.NOTEQUAL&&Ie!=x.LESSTHAN&&Ie!=x.LESSTHANOREQUAL&&Ie!=x.GREATERTHAN&&Ie!=x.GREATERTHANOREQUAL){if(Fe=="and"){k.push(x.AND),O.push(Fe);continue}if(Fe=="or"){k.push(x.OR),O.push(Fe);continue}if(Fe=="mod"){k.push(x.MOD),O.push(Fe);continue}if(Fe=="div"){k.push(x.DIV),O.push(Fe);continue}}}if(W==":"){if(V.charAt(H)=="*"){k.push(x.NCNAMECOLONASTERISK),O.push(Fe+":*"),H++,W=V.charAt(H++);continue}if(V.charAt(H)=="_"||be.isLetter(V.charCodeAt(H))){for(Fe+=":",W=V.charAt(H++);be.isNCNameChar(W.charCodeAt(0));)Fe+=W,W=V.charAt(H++);if(W=="("){k.push(x.FUNCTIONNAME),O.push(Fe);continue}k.push(x.QNAME),O.push(Fe);continue}if(V.charAt(H)==":"){k.push(x.AXISNAME),O.push(Fe);continue}}if(W=="("){if(Fe=="comment"||Fe=="text"||Fe=="node"){k.push(x.NODETYPE),O.push(Fe);continue}if(Fe=="processing-instruction"){V.charAt(H)==")"?k.push(x.NODETYPE):k.push(x.PROCESSINGINSTRUCTIONWITHLITERAL),O.push(Fe);continue}k.push(x.FUNCTIONNAME),O.push(Fe);continue}k.push(x.QNAME),O.push(Fe);continue}throw new Error("Unexpected character "+W)}return k.push(1),O.push("[EOF]"),[k,O]},x.SHIFT="s",x.REDUCE="r",x.ACCEPT="a",x.prototype.parse=function(Ye){if(!Ye)throw new Error("XPath expression unspecified.");if(typeof Ye!="string")throw new Error("XPath expression must be a string.");var k,O,V=this.tokenize(Ye);if(V!=null){k=V[0],O=V[1];var H=0,W=[],ue=[],Re=[],Ye,Ie,Fe;for(W.push(0),ue.push(1),Re.push("_S"),Ie=k[H],Fe=O[H++];;)switch(Ye=W[W.length-1],x.actionTable[Ye].charAt(Ie-1)){case x.SHIFT:ue.push(-Ie),Re.push(Fe),W.push(x.actionTableNumber[Ye].charCodeAt(Ie-1)-32),Ie=k[H],Fe=O[H++];break;case x.REDUCE:for(var yn=x.productions[x.actionTableNumber[Ye].charCodeAt(Ie-1)-32][1],bs=[],vs=0;vs<yn;vs++)ue.pop(),bs.unshift(Re.pop()),W.pop();var ks=W[W.length-1];ue.push(x.productions[x.actionTableNumber[Ye].charCodeAt(Ie-1)-32][0]),this.reduceActions[x.actionTableNumber[Ye].charCodeAt(Ie-1)-32]==null?Re.push(bs[0]):Re.push(this.reduceActions[x.actionTableNumber[Ye].charCodeAt(Ie-1)-32](bs)),W.push(x.gotoTable[ks].charCodeAt(x.productions[x.actionTableNumber[Ye].charCodeAt(Ie-1)-32][0]-2)-33);break;case x.ACCEPT:return new _(Re.pop());default:throw new Error("XPath parse error")}}},_.prototype=new Object,_.prototype.constructor=_,_.superclass=Object.prototype;function _(A){this.expression=A}_.prototype.toString=function(){return this.expression.toString()};function R(A,k,O){k in A||(A[k]=O)}_.prototype.evaluate=function(A){var k=A.expressionContextNode;if(!(t(k)||n(k)))throw new Error("Context node does not appear to be a valid DOM node.");return A.contextNode=A.expressionContextNode,A.contextSize=1,A.contextPosition=1,A.isHtml&&(R(A,"caseInsensitive",!0),R(A,"allowAnyNamespaceForNoPrefix",!0)),R(A,"caseInsensitive",!1),this.expression.evaluate(A)},_.XML_NAMESPACE_URI="http://www.w3.org/XML/1998/namespace",_.XMLNS_NAMESPACE_URI="http://www.w3.org/2000/xmlns/",U.prototype=new Object,U.prototype.constructor=U,U.superclass=Object.prototype;function U(){}U.prototype.init=function(){},U.prototype.toString=function(){return"<Expression>"},U.prototype.evaluate=function(A){throw new Error("Could not evaluate expression.")},T.prototype=new U,T.prototype.constructor=T,T.superclass=U.prototype;function T(A){arguments.length>0&&this.init(A)}T.prototype.init=function(A){this.rhs=A},D.prototype=new T,D.prototype.constructor=D,D.superclass=T.prototype;function D(A){arguments.length>0&&this.init(A)}D.prototype.init=function(A){D.superclass.init.call(this,A)},D.prototype.evaluate=function(A){return this.rhs.evaluate(A).number().negate()},D.prototype.toString=function(){return"-"+this.rhs.toString()},B.prototype=new U,B.prototype.constructor=B,B.superclass=U.prototype;function B(A,k){arguments.length>0&&this.init(A,k)}B.prototype.init=function(A,k){this.lhs=A,this.rhs=k},Q.prototype=new B,Q.prototype.constructor=Q,Q.superclass=B.prototype;function Q(A,k){arguments.length>0&&this.init(A,k)}Q.prototype.init=function(A,k){Q.superclass.init.call(this,A,k)},Q.prototype.toString=function(){return"("+this.lhs.toString()+" or "+this.rhs.toString()+")"},Q.prototype.evaluate=function(A){var k=this.lhs.evaluate(A).bool();return k.booleanValue()?k:this.rhs.evaluate(A).bool()},v.prototype=new B,v.prototype.constructor=v,v.superclass=B.prototype;function v(A,k){arguments.length>0&&this.init(A,k)}v.prototype.init=function(A,k){v.superclass.init.call(this,A,k)},v.prototype.toString=function(){return"("+this.lhs.toString()+" and "+this.rhs.toString()+")"},v.prototype.evaluate=function(A){var k=this.lhs.evaluate(A).bool();return k.booleanValue()?this.rhs.evaluate(A).bool():k},E.prototype=new B,E.prototype.constructor=E,E.superclass=B.prototype;function E(A,k){arguments.length>0&&this.init(A,k)}E.prototype.init=function(A,k){E.superclass.init.call(this,A,k)},E.prototype.toString=function(){return"("+this.lhs.toString()+" = "+this.rhs.toString()+")"},E.prototype.evaluate=function(A){return this.lhs.evaluate(A).equals(this.rhs.evaluate(A))},P.prototype=new B,P.prototype.constructor=P,P.superclass=B.prototype;function P(A,k){arguments.length>0&&this.init(A,k)}P.prototype.init=function(A,k){P.superclass.init.call(this,A,k)},P.prototype.toString=function(){return"("+this.lhs.toString()+" != "+this.rhs.toString()+")"},P.prototype.evaluate=function(A){return this.lhs.evaluate(A).notequal(this.rhs.evaluate(A))},N.prototype=new B,N.prototype.constructor=N,N.superclass=B.prototype;function N(A,k){arguments.length>0&&this.init(A,k)}N.prototype.init=function(A,k){N.superclass.init.call(this,A,k)},N.prototype.evaluate=function(A){return this.lhs.evaluate(A).lessthan(this.rhs.evaluate(A))},N.prototype.toString=function(){return"("+this.lhs.toString()+" < "+this.rhs.toString()+")"},J.prototype=new B,J.prototype.constructor=J,J.superclass=B.prototype;function J(A,k){arguments.length>0&&this.init(A,k)}J.prototype.init=function(A,k){J.superclass.init.call(this,A,k)},J.prototype.evaluate=function(A){return this.lhs.evaluate(A).greaterthan(this.rhs.evaluate(A))},J.prototype.toString=function(){return"("+this.lhs.toString()+" > "+this.rhs.toString()+")"},z.prototype=new B,z.prototype.constructor=z,z.superclass=B.prototype;function z(A,k){arguments.length>0&&this.init(A,k)}z.prototype.init=function(A,k){z.superclass.init.call(this,A,k)},z.prototype.evaluate=function(A){return this.lhs.evaluate(A).lessthanorequal(this.rhs.evaluate(A))},z.prototype.toString=function(){return"("+this.lhs.toString()+" <= "+this.rhs.toString()+")"},L.prototype=new B,L.prototype.constructor=L,L.superclass=B.prototype;function L(A,k){arguments.length>0&&this.init(A,k)}L.prototype.init=function(A,k){L.superclass.init.call(this,A,k)},L.prototype.evaluate=function(A){return this.lhs.evaluate(A).greaterthanorequal(this.rhs.evaluate(A))},L.prototype.toString=function(){return"("+this.lhs.toString()+" >= "+this.rhs.toString()+")"},G.prototype=new B,G.prototype.constructor=G,G.superclass=B.prototype;function G(A,k){arguments.length>0&&this.init(A,k)}G.prototype.init=function(A,k){G.superclass.init.call(this,A,k)},G.prototype.evaluate=function(A){return this.lhs.evaluate(A).number().plus(this.rhs.evaluate(A).number())},G.prototype.toString=function(){return"("+this.lhs.toString()+" + "+this.rhs.toString()+")"},K.prototype=new B,K.prototype.constructor=K,K.superclass=B.prototype;function K(A,k){arguments.length>0&&this.init(A,k)}K.prototype.init=function(A,k){K.superclass.init.call(this,A,k)},K.prototype.evaluate=function(A){return this.lhs.evaluate(A).number().minus(this.rhs.evaluate(A).number())},K.prototype.toString=function(){return"("+this.lhs.toString()+" - "+this.rhs.toString()+")"},$.prototype=new B,$.prototype.constructor=$,$.superclass=B.prototype;function $(A,k){arguments.length>0&&this.init(A,k)}$.prototype.init=function(A,k){$.superclass.init.call(this,A,k)},$.prototype.evaluate=function(A){return this.lhs.evaluate(A).number().multiply(this.rhs.evaluate(A).number())},$.prototype.toString=function(){return"("+this.lhs.toString()+" * "+this.rhs.toString()+")"},te.prototype=new B,te.prototype.constructor=te,te.superclass=B.prototype;function te(A,k){arguments.length>0&&this.init(A,k)}te.prototype.init=function(A,k){te.superclass.init.call(this,A,k)},te.prototype.evaluate=function(A){return this.lhs.evaluate(A).number().div(this.rhs.evaluate(A).number())},te.prototype.toString=function(){return"("+this.lhs.toString()+" div "+this.rhs.toString()+")"},re.prototype=new B,re.prototype.constructor=re,re.superclass=B.prototype;function re(A,k){arguments.length>0&&this.init(A,k)}re.prototype.init=function(A,k){re.superclass.init.call(this,A,k)},re.prototype.evaluate=function(A){return this.lhs.evaluate(A).number().mod(this.rhs.evaluate(A).number())},re.prototype.toString=function(){return"("+this.lhs.toString()+" mod "+this.rhs.toString()+")"},ee.prototype=new B,ee.prototype.constructor=ee,ee.superclass=B.prototype;function ee(A,k){arguments.length>0&&this.init(A,k)}ee.prototype.init=function(A,k){ee.superclass.init.call(this,A,k)},ee.prototype.evaluate=function(A){return this.lhs.evaluate(A).nodeset().union(this.rhs.evaluate(A).nodeset())},ee.prototype.toString=function(){return c(f,[this.lhs,this.rhs]).join(" | ")},Z.prototype=new U,Z.prototype.constructor=Z,Z.superclass=U.prototype;function Z(A,k,O){arguments.length>0&&this.init(A,k,O)}Z.prototype.init=function(A,k,O){Z.superclass.init.call(this),this.filter=A,this.filterPredicates=k,this.locationPath=O};function me(A){for(;A&&A.parentNode;)A=A.parentNode;return A}var le=function(A,k,O,V){if(A.length===0)return O;var H=k.extend({});return a(function(W,ue){return H.contextSize=W.length,l(function(Re,Ye){return H.contextNode=Re,H.contextPosition=Ye+1,Z.predicateMatches(ue,H)},W)},I(O,V),A)};Z.getRoot=function(A,k){var O=k[0];if(O&&O.nodeType===b.DOCUMENT_NODE)return O;if(A.virtualRoot)return A.virtualRoot;if(!O)throw new Error("Context node not found when determining document root.");var V=O.ownerDocument;if(V)return V;for(var H=O;H.parentNode!=null;)H=H.parentNode;return H};var Ae=function(A){var k=String(A.name);return k==="xmlns"?"":k.substring(0,6)==="xmlns:"?k.substring(6,k.length):null};Z.applyStep=function(A,k,O){if(!O)throw new Error("Context node not found when evaluating XPath step: "+A);var V=[];switch(k.contextNode=O,A.axis){case se.ANCESTOR:if(k.contextNode===k.virtualRoot)break;var H;for(k.contextNode.nodeType==b.ATTRIBUTE_NODE?H=Z.getOwnerElement(k.contextNode):H=k.contextNode.parentNode;H!=null&&(A.nodeTest.matches(H,k)&&V.push(H),H!==k.virtualRoot);)H=H.parentNode;break;case se.ANCESTORORSELF:for(var H=k.contextNode;H!=null&&(A.nodeTest.matches(H,k)&&V.push(H),H!==k.virtualRoot);H=H.nodeType==b.ATTRIBUTE_NODE?Z.getOwnerElement(H):H.parentNode);break;case se.ATTRIBUTE:var W=k.contextNode.attributes;if(W!=null)for(var ue=0;ue<W.length;ue++){var H=W.item(ue);A.nodeTest.matches(H,k)&&V.push(H)}break;case se.CHILD:for(var H=k.contextNode.firstChild;H!=null;H=H.nextSibling)A.nodeTest.matches(H,k)&&V.push(H);break;case se.DESCENDANT:for(var Fe=[k.contextNode.firstChild];Fe.length>0;)for(var H=Fe.pop();H!=null;)A.nodeTest.matches(H,k)&&V.push(H),H.firstChild!=null?(Fe.push(H.nextSibling),H=H.firstChild):H=H.nextSibling;break;case se.DESCENDANTORSELF:A.nodeTest.matches(k.contextNode,k)&&V.push(k.contextNode);for(var Fe=[k.contextNode.firstChild];Fe.length>0;)for(var H=Fe.pop();H!=null;)A.nodeTest.matches(H,k)&&V.push(H),H.firstChild!=null?(Fe.push(H.nextSibling),H=H.firstChild):H=H.nextSibling;break;case se.FOLLOWING:if(k.contextNode===k.virtualRoot)break;var Fe=[];k.contextNode.firstChild!=null?Fe.unshift(k.contextNode.firstChild):Fe.unshift(k.contextNode.nextSibling);for(var H=k.contextNode.parentNode;H!=null&&H.nodeType!=b.DOCUMENT_NODE&&H!==k.virtualRoot;H=H.parentNode)Fe.unshift(H.nextSibling);do for(var H=Fe.pop();H!=null;)A.nodeTest.matches(H,k)&&V.push(H),H.firstChild!=null?(Fe.push(H.nextSibling),H=H.firstChild):H=H.nextSibling;while(Fe.length>0);break;case se.FOLLOWINGSIBLING:if(k.contextNode===k.virtualRoot)break;for(var H=k.contextNode.nextSibling;H!=null;H=H.nextSibling)A.nodeTest.matches(H,k)&&V.push(H);break;case se.NAMESPACE:var Re={};if(k.contextNode.nodeType==b.ELEMENT_NODE){Re.xml=new zi("xml",null,_.XML_NAMESPACE_URI,k.contextNode);for(var H=k.contextNode;H!=null&&H.nodeType==b.ELEMENT_NODE;H=H.parentNode)for(var ue=0;ue<H.attributes.length;ue++){var Ye=H.attributes.item(ue),Ie=Ae(Ye);Ie!=null&&Re[Ie]==null&&(Re[Ie]=new zi(Ie,Ye,Ye.value,k.contextNode))}for(var Ie in Re){var O=Re[Ie];A.nodeTest.matches(O,k)&&V.push(O)}}break;case se.PARENT:H=null,k.contextNode!==k.virtualRoot&&(k.contextNode.nodeType==b.ATTRIBUTE_NODE?H=Z.getOwnerElement(k.contextNode):H=k.contextNode.parentNode),H!=null&&A.nodeTest.matches(H,k)&&V.push(H);break;case se.PRECEDING:var Fe;k.virtualRoot!=null?Fe=[k.virtualRoot]:Fe=[me(k.contextNode)];e:for(;Fe.length>0;)for(var H=Fe.pop();H!=null;){if(H==k.contextNode)break e;A.nodeTest.matches(H,k)&&V.unshift(H),H.firstChild!=null?(Fe.push(H.nextSibling),H=H.firstChild):H=H.nextSibling}break;case se.PRECEDINGSIBLING:if(k.contextNode===k.virtualRoot)break;for(var H=k.contextNode.previousSibling;H!=null;H=H.previousSibling)A.nodeTest.matches(H,k)&&V.push(H);break;case se.SELF:A.nodeTest.matches(k.contextNode,k)&&V.push(k.contextNode);break;default:}return V};function ve(A,k,O){return le(A.predicates,k,Z.applyStep(A,k,O),d(it,A.axis))}function qe(A,k,O){return w(c(ve.bind(null,O,A),k))}Z.applySteps=function(A,k,O){return a(qe.bind(null,k),O,A)},Z.prototype.applyFilter=function(A,k){if(!this.filter)return{nodes:[A.contextNode]};var O=this.filter.evaluate(A);if(!be.instance_of(O,Ce)){if(this.filterPredicates!=null&&this.filterPredicates.length>0||this.locationPath!=null)throw new Error("Path expression filter must evaluate to a nodeset if predicates or location path are used");return{nonNodes:O}}return{nodes:le(this.filterPredicates||[],k,O.toUnsortedArray(),!1)}},Z.applyLocationPath=function(A,k,O){if(!A)return O;var V=A.absolute?[Z.getRoot(k,O)]:O;return Z.applySteps(A.steps,k,V)},Z.prototype.evaluate=function(A){var k=C(new ii,A),O=this.applyFilter(A,k);if("nonNodes"in O)return O.nonNodes;var V=new Ce;return V.addArray(Z.applyLocationPath(this.locationPath,k,O.nodes)),V},Z.predicateMatches=function(A,k){var O=A.evaluate(k);return be.instance_of(O,Ee)?k.contextPosition===O.numberValue():O.booleanValue()},Z.predicateString=function(A){return g("[","]",A.toString())},Z.predicatesString=function(A){return h("",c(Z.predicateString,A))},Z.prototype.toString=function(){if(this.filter!=null){var A=f(this.filter);return be.instance_of(this.filter,we)?g("'","'",A):this.filterPredicates!=null&&this.filterPredicates.length?g("(",")",A)+Z.predicatesString(this.filterPredicates):this.locationPath!=null?A+(this.locationPath.absolute?"":"/")+f(this.locationPath):A}return f(this.locationPath)},Z.getOwnerElement=function(A){if(A.ownerElement)return A.ownerElement;try{if(A.selectSingleNode)return A.selectSingleNode("..")}catch{}for(var k=A.nodeType==b.DOCUMENT_NODE?A:A.ownerDocument,O=k.getElementsByTagName("*"),V=0;V<O.length;V++)for(var H=O.item(V),W=H.attributes,ue=0;ue<W.length;ue++){var Re=W.item(ue);if(Re===A)return H}return null},_e.prototype=new Object,_e.prototype.constructor=_e,_e.superclass=Object.prototype;function _e(A,k){arguments.length>0&&this.init(A,k)}_e.prototype.init=function(A,k){this.absolute=A,this.steps=k},_e.prototype.toString=function(){return(this.absolute?"/":"")+c(f,this.steps).join("/")},se.prototype=new Object,se.prototype.constructor=se,se.superclass=Object.prototype;function se(A,k,O){arguments.length>0&&this.init(A,k,O)}se.prototype.init=function(A,k,O){this.axis=A,this.nodeTest=k,this.predicates=O},se.prototype.toString=function(){return se.STEPNAMES[this.axis]+"::"+this.nodeTest.toString()+Z.predicatesString(this.predicates)},se.ANCESTOR=0,se.ANCESTORORSELF=1,se.ATTRIBUTE=2,se.CHILD=3,se.DESCENDANT=4,se.DESCENDANTORSELF=5,se.FOLLOWING=6,se.FOLLOWINGSIBLING=7,se.NAMESPACE=8,se.PARENT=9,se.PRECEDING=10,se.PRECEDINGSIBLING=11,se.SELF=12,se.STEPNAMES=a(function(A,k){return A[k[0]]=k[1],A},{},[[se.ANCESTOR,"ancestor"],[se.ANCESTORORSELF,"ancestor-or-self"],[se.ATTRIBUTE,"attribute"],[se.CHILD,"child"],[se.DESCENDANT,"descendant"],[se.DESCENDANTORSELF,"descendant-or-self"],[se.FOLLOWING,"following"],[se.FOLLOWINGSIBLING,"following-sibling"],[se.NAMESPACE,"namespace"],[se.PARENT,"parent"],[se.PRECEDING,"preceding"],[se.PRECEDINGSIBLING,"preceding-sibling"],[se.SELF,"self"]]);var it=[se.ANCESTOR,se.ANCESTORORSELF,se.PARENT,se.PRECEDING,se.PRECEDINGSIBLING];ce.prototype=new Object,ce.prototype.constructor=ce,ce.superclass=Object.prototype;function ce(A,k){arguments.length>0&&this.init(A,k)}ce.prototype.init=function(A,k){this.type=A,this.value=k},ce.prototype.toString=function(){return"<unknown nodetest type>"},ce.prototype.matches=function(A,k){console.warn("unknown node test type")},ce.NAMETESTANY=0,ce.NAMETESTPREFIXANY=1,ce.NAMETESTQNAME=2,ce.COMMENT=3,ce.TEXT=4,ce.PI=5,ce.NODE=6,ce.isNodeType=function(A){return function(k){return d(A,k.nodeType)}},ce.makeNodeTestType=function(A,k,O){var V=O||function(){};return V.prototype=new ce(A),V.prototype.constructor=V,C(V.prototype,k),V},ce.makeNodeTypeTest=function(A,k,O){return new(ce.makeNodeTestType(A,{matches:ce.isNodeType(k),toString:u(O)}))},ce.hasPrefix=function(A){return A.prefix||(A.nodeName||A.tagName).indexOf(":")!==-1},ce.isElementOrAttribute=ce.isNodeType([1,2]),ce.nameSpaceMatches=function(A,k,O){var V=O.namespaceURI||"";if(!A)return!V||k.allowAnyNamespaceForNoPrefix&&!ce.hasPrefix(O);var H=k.namespaceResolver.getNamespace(A,k.expressionContextNode);if(H==null)throw new Error("Cannot resolve QName "+A);return H===V},ce.localNameMatches=function(A,k,O){var V=O.localName||O.nodeName;return k.caseInsensitive?A.toLowerCase()===V.toLowerCase():A===V},ce.NameTestPrefixAny=ce.makeNodeTestType(ce.NAMETESTPREFIXANY,{matches:function(A,k){return ce.isElementOrAttribute(A)&&ce.nameSpaceMatches(this.prefix,k,A)},toString:function(){return this.prefix+":*"}},function(k){this.prefix=k}),ce.NameTestQName=ce.makeNodeTestType(ce.NAMETESTQNAME,{matches:function(A,k){return ce.isNodeType([b.ELEMENT_NODE,b.ATTRIBUTE_NODE,b.NAMESPACE_NODE])(A)&&ce.nameSpaceMatches(this.prefix,k,A)&&ce.localNameMatches(this.localName,k,A)},toString:function(){return this.name}},function(k){var O=k.split(":");this.name=k,this.prefix=O.length>1?O[0]:null,this.localName=O[O.length>1?1:0]}),ce.PITest=ce.makeNodeTestType(ce.PI,{matches:function(A,k){return ce.isNodeType([b.PROCESSING_INSTRUCTION_NODE])(A)&&(A.target||A.nodeName)===this.name},toString:function(){return g('processing-instruction("','")',this.name)}},function(A){this.name=A}),ce.nameTestAny=ce.makeNodeTypeTest(ce.NAMETESTANY,[b.ELEMENT_NODE,b.ATTRIBUTE_NODE,b.NAMESPACE_NODE],"*"),ce.textTest=ce.makeNodeTypeTest(ce.TEXT,[b.TEXT_NODE,b.CDATA_SECTION_NODE],"text()"),ce.commentTest=ce.makeNodeTypeTest(ce.COMMENT,[b.COMMENT_NODE],"comment()"),ce.nodeTest=ce.makeNodeTypeTest(ce.NODE,[b.ELEMENT_NODE,b.ATTRIBUTE_NODE,b.TEXT_NODE,b.CDATA_SECTION_NODE,b.PROCESSING_INSTRUCTION_NODE,b.COMMENT_NODE,b.DOCUMENT_NODE],"node()"),ce.anyPiTest=ce.makeNodeTypeTest(ce.PI,[b.PROCESSING_INSTRUCTION_NODE],"processing-instruction()"),dr.prototype=new U,dr.prototype.constructor=dr,dr.superclass=U.prototype;function dr(A){arguments.length>0&&this.init(A)}dr.prototype.init=function(A){this.variable=A},dr.prototype.toString=function(){return"$"+this.variable},dr.prototype.evaluate=function(A){var k=be.resolveQName(this.variable,A.namespaceResolver,A.contextNode,!1);if(k[0]==null)throw new Error("Cannot resolve QName "+fn);var O=A.variableResolver.getVariable(k[1],k[0]);if(!O)throw Ai.fromMessage("Undeclared variable: "+this.toString());return O},Or.prototype=new U,Or.prototype.constructor=Or,Or.superclass=U.prototype;function Or(A,k){arguments.length>0&&this.init(A,k)}Or.prototype.init=function(A,k){this.functionName=A,this.arguments=k},Or.prototype.toString=function(){for(var A=this.functionName+"(",k=0;k<this.arguments.length;k++)k>0&&(A+=", "),A+=this.arguments[k].toString();return A+")"},Or.prototype.evaluate=function(A){var k=tr.getFunctionFromContext(this.functionName,A);if(!k)throw new Error("Unknown function "+this.functionName);var O=[A].concat(this.arguments);return k.apply(A.functionResolver.thisArg,O)};var ct=new Object;ct.equals=function(A,k){return A.equals(k)},ct.notequal=function(A,k){return A.notequal(k)},ct.lessthan=function(A,k){return A.lessthan(k)},ct.greaterthan=function(A,k){return A.greaterthan(k)},ct.lessthanorequal=function(A,k){return A.lessthanorequal(k)},ct.greaterthanorequal=function(A,k){return A.greaterthanorequal(k)},we.prototype=new U,we.prototype.constructor=we,we.superclass=U.prototype;function we(A){arguments.length>0&&this.init(A)}we.prototype.init=function(A){this.str=String(A)},we.prototype.toString=function(){return this.str},we.prototype.evaluate=function(A){return this},we.prototype.string=function(){return this},we.prototype.number=function(){return new Ee(this.str)},we.prototype.bool=function(){return new Se(this.str)},we.prototype.nodeset=function(){throw new Error("Cannot convert string to nodeset")},we.prototype.stringValue=function(){return this.str},we.prototype.numberValue=function(){return this.number().numberValue()},we.prototype.booleanValue=function(){return this.bool().booleanValue()},we.prototype.equals=function(A){return be.instance_of(A,Se)?this.bool().equals(A):be.instance_of(A,Ee)?this.number().equals(A):be.instance_of(A,Ce)?A.compareWithString(this,ct.equals):new Se(this.str==A.str)},we.prototype.notequal=function(A){return be.instance_of(A,Se)?this.bool().notequal(A):be.instance_of(A,Ee)?this.number().notequal(A):be.instance_of(A,Ce)?A.compareWithString(this,ct.notequal):new Se(this.str!=A.str)},we.prototype.lessthan=function(A){return this.number().lessthan(A)},we.prototype.greaterthan=function(A){return this.number().greaterthan(A)},we.prototype.lessthanorequal=function(A){return this.number().lessthanorequal(A)},we.prototype.greaterthanorequal=function(A){return this.number().greaterthanorequal(A)},Ee.prototype=new U,Ee.prototype.constructor=Ee,Ee.superclass=U.prototype;function Ee(A){arguments.length>0&&this.init(A)}Ee.prototype.init=function(A){this.num=typeof A=="string"?this.parse(A):Number(A)},Ee.prototype.numberFormat=/^\s*-?[0-9]*\.?[0-9]+\s*$/,Ee.prototype.parse=function(A){return this.numberFormat.test(A)?parseFloat(A):Number.NaN};function Gi(A){for(var k=A.split("e-"),O=k[0].replace(".",""),V=Number(k[1]),H=0;H<V-1;H+=1)O="0"+O;return"0."+O}function xo(A){for(var k=A.split("e"),O=k[0].replace(".",""),V=Number(k[1]),H=V+1-O.length,W=0;W<H;W+=1)O+="0";return O}Ee.prototype.toString=function(){var A=this.num.toString();return A.indexOf("e-")!==-1?Gi(A):A.indexOf("e")!==-1?xo(A):A},Ee.prototype.evaluate=function(A){return this},Ee.prototype.string=function(){return new we(this.toString())},Ee.prototype.number=function(){return this},Ee.prototype.bool=function(){return new Se(this.num)},Ee.prototype.nodeset=function(){throw new Error("Cannot convert number to nodeset")},Ee.prototype.stringValue=function(){return this.string().stringValue()},Ee.prototype.numberValue=function(){return this.num},Ee.prototype.booleanValue=function(){return this.bool().booleanValue()},Ee.prototype.negate=function(){return new Ee(-this.num)},Ee.prototype.equals=function(A){return be.instance_of(A,Se)?this.bool().equals(A):be.instance_of(A,we)?this.equals(A.number()):be.instance_of(A,Ce)?A.compareWithNumber(this,ct.equals):new Se(this.num==A.num)},Ee.prototype.notequal=function(A){return be.instance_of(A,Se)?this.bool().notequal(A):be.instance_of(A,we)?this.notequal(A.number()):be.instance_of(A,Ce)?A.compareWithNumber(this,ct.notequal):new Se(this.num!=A.num)},Ee.prototype.lessthan=function(A){return be.instance_of(A,Ce)?A.compareWithNumber(this,ct.greaterthan):be.instance_of(A,Se)||be.instance_of(A,we)?this.lessthan(A.number()):new Se(this.num<A.num)},Ee.prototype.greaterthan=function(A){return be.instance_of(A,Ce)?A.compareWithNumber(this,ct.lessthan):be.instance_of(A,Se)||be.instance_of(A,we)?this.greaterthan(A.number()):new Se(this.num>A.num)},Ee.prototype.lessthanorequal=function(A){return be.instance_of(A,Ce)?A.compareWithNumber(this,ct.greaterthanorequal):be.instance_of(A,Se)||be.instance_of(A,we)?this.lessthanorequal(A.number()):new Se(this.num<=A.num)},Ee.prototype.greaterthanorequal=function(A){return be.instance_of(A,Ce)?A.compareWithNumber(this,ct.lessthanorequal):be.instance_of(A,Se)||be.instance_of(A,we)?this.greaterthanorequal(A.number()):new Se(this.num>=A.num)},Ee.prototype.plus=function(A){return new Ee(this.num+A.num)},Ee.prototype.minus=function(A){return new Ee(this.num-A.num)},Ee.prototype.multiply=function(A){return new Ee(this.num*A.num)},Ee.prototype.div=function(A){return new Ee(this.num/A.num)},Ee.prototype.mod=function(A){return new Ee(this.num%A.num)},Se.prototype=new U,Se.prototype.constructor=Se,Se.superclass=U.prototype;function Se(A){arguments.length>0&&this.init(A)}Se.prototype.init=function(A){this.b=!!A},Se.prototype.toString=function(){return this.b.toString()},Se.prototype.evaluate=function(A){return this},Se.prototype.string=function(){return new we(this.b)},Se.prototype.number=function(){return new Ee(this.b)},Se.prototype.bool=function(){return this},Se.prototype.nodeset=function(){throw new Error("Cannot convert boolean to nodeset")},Se.prototype.stringValue=function(){return this.string().stringValue()},Se.prototype.numberValue=function(){return this.number().numberValue()},Se.prototype.booleanValue=function(){return this.b},Se.prototype.not=function(){return new Se(!this.b)},Se.prototype.equals=function(A){return be.instance_of(A,we)||be.instance_of(A,Ee)?this.equals(A.bool()):be.instance_of(A,Ce)?A.compareWithBoolean(this,ct.equals):new Se(this.b==A.b)},Se.prototype.notequal=function(A){return be.instance_of(A,we)||be.instance_of(A,Ee)?this.notequal(A.bool()):be.instance_of(A,Ce)?A.compareWithBoolean(this,ct.notequal):new Se(this.b!=A.b)},Se.prototype.lessthan=function(A){return this.number().lessthan(A)},Se.prototype.greaterthan=function(A){return this.number().greaterthan(A)},Se.prototype.lessthanorequal=function(A){return this.number().lessthanorequal(A)},Se.prototype.greaterthanorequal=function(A){return this.number().greaterthanorequal(A)},Se.true_=new Se(!0),Se.false_=new Se(!1),Dt.prototype=new Object,Dt.prototype.constructor=Dt,Dt.superclass=Object.prototype;function Dt(A){this.init(A)}Dt.prototype.init=function(A){this.left=null,this.right=null,this.node=A,this.depth=1},Dt.prototype.balance=function(){var A=this.left==null?0:this.left.depth,k=this.right==null?0:this.right.depth;if(A>k+1){var O=this.left.left==null?0:this.left.left.depth,V=this.left.right==null?0:this.left.right.depth;O<V&&this.left.rotateRR(),this.rotateLL()}else if(A+1<k){var H=this.right.right==null?0:this.right.right.depth,W=this.right.left==null?0:this.right.left.depth;W>H&&this.right.rotateLL(),this.rotateRR()}},Dt.prototype.rotateLL=function(){var A=this.node,k=this.right;this.node=this.left.node,this.right=this.left,this.left=this.left.left,this.right.left=this.right.right,this.right.right=k,this.right.node=A,this.right.updateInNewLocation(),this.updateInNewLocation()},Dt.prototype.rotateRR=function(){var A=this.node,k=this.left;this.node=this.right.node,this.left=this.right,this.right=this.right.right,this.left.right=this.left.left,this.left.left=k,this.left.node=A,this.left.updateInNewLocation(),this.updateInNewLocation()},Dt.prototype.updateInNewLocation=function(){this.getDepthFromChildren()},Dt.prototype.getDepthFromChildren=function(){this.depth=this.node==null?0:1,this.left!=null&&(this.depth=this.left.depth+1),this.right!=null&&this.depth<=this.right.depth&&(this.depth=this.right.depth+1)};function Bs(A,k){if(A===k)return 0;if(A.compareDocumentPosition){var O=A.compareDocumentPosition(k);return O&1||O&10?1:O&20?-1:0}for(var V=0,H=0,W=A;W!=null;W=W.parentNode||W.ownerElement)V++;for(var ue=k;ue!=null;ue=ue.parentNode||ue.ownerElement)H++;if(V>H){for(;V>H;)A=A.parentNode||A.ownerElement,V--;if(A===k)return 1}else if(H>V){for(;H>V;)k=k.parentNode||k.ownerElement,H--;if(A===k)return-1}for(var Re=A.parentNode||A.ownerElement,Ye=k.parentNode||k.ownerElement;Re!==Ye;)A=Re,k=Ye,Re=A.parentNode||A.ownerElement,Ye=k.parentNode||k.ownerElement;var Ie=Al(A),Fe=Al(k);if(Ie&&!Fe)return-1;if(!Ie&&Fe)return 1;if(A.isXPathNamespace){if(A.nodeValue===_.XML_NAMESPACE_URI||!k.isXPathNamespace)return-1;if(k.nodeValue===_.XML_NAMESPACE_URI)return 1}else if(k.isXPathNamespace)return 1;if(Re)for(var yn=Ie?Re.attributes:Re.childNodes,bs=yn.length,vs=A.baseNode||A,ks=k.baseNode||k,ji=0;ji<bs;ji+=1){var Ln=yn[ji];if(Ln===vs)return-1;if(Ln===ks)return 1}throw new Error("Unexpected: could not determine node order")}Dt.prototype.add=function(A){if(A===this.node)return!1;var k=Bs(A,this.node),O=!1;return k==-1?this.left==null?(this.left=new Dt(A),O=!0):(O=this.left.add(A),O&&this.balance()):k==1&&(this.right==null?(this.right=new Dt(A),O=!0):(O=this.right.add(A),O&&this.balance())),O&&this.getDepthFromChildren(),O},Ce.prototype=new U,Ce.prototype.constructor=Ce,Ce.superclass=U.prototype;function Ce(){this.init()}Ce.prototype.init=function(){this.tree=null,this.nodes=[],this.size=0},Ce.prototype.toString=function(){var A=this.first();return A==null?"":this.stringForNode(A)},Ce.prototype.evaluate=function(A){return this},Ce.prototype.string=function(){return new we(this.toString())},Ce.prototype.stringValue=function(){return this.toString()},Ce.prototype.number=function(){return new Ee(this.string())},Ce.prototype.numberValue=function(){return Number(this.string())},Ce.prototype.bool=function(){return new Se(this.booleanValue())},Ce.prototype.booleanValue=function(){return!!this.size},Ce.prototype.nodeset=function(){return this},Ce.prototype.stringForNode=function(A){return A.nodeType==b.DOCUMENT_NODE||A.nodeType==b.ELEMENT_NODE||A.nodeType===b.DOCUMENT_FRAGMENT_NODE?this.stringForContainerNode(A):A.nodeType===b.ATTRIBUTE_NODE?A.value||A.nodeValue:A.isNamespaceNode?A.namespace:A.nodeValue},Ce.prototype.stringForContainerNode=function(A){for(var k="",O=A.firstChild;O!=null;O=O.nextSibling){var V=O.nodeType;(V===1||V===3||V===4||V===9||V===11)&&(k+=this.stringForNode(O))}return k},Ce.prototype.buildTree=function(){if(!this.tree&&this.nodes.length){this.tree=new Dt(this.nodes[0]);for(var A=1;A<this.nodes.length;A+=1)this.tree.add(this.nodes[A])}return this.tree},Ce.prototype.first=function(){var A=this.buildTree();if(A==null)return null;for(;A.left!=null;)A=A.left;return A.node},Ce.prototype.add=function(A){for(var k=0;k<this.nodes.length;k+=1)if(A===this.nodes[k])return;this.tree=null,this.nodes.push(A),this.size+=1},Ce.prototype.addArray=function(A){var k=this;o(function(O){k.add(O)},A)},Ce.prototype.toArray=function(){var A=[];return this.toArrayRec(this.buildTree(),A),A},Ce.prototype.toArrayRec=function(A,k){A!=null&&(this.toArrayRec(A.left,k),k.push(A.node),this.toArrayRec(A.right,k))},Ce.prototype.toUnsortedArray=function(){return this.nodes.slice()},Ce.prototype.compareWithString=function(A,k){for(var O=this.toUnsortedArray(),V=0;V<O.length;V++){var H=O[V],W=new we(this.stringForNode(H)),ue=k(W,A);if(ue.booleanValue())return ue}return new Se(!1)},Ce.prototype.compareWithNumber=function(A,k){for(var O=this.toUnsortedArray(),V=0;V<O.length;V++){var H=O[V],W=new Ee(this.stringForNode(H)),ue=k(W,A);if(ue.booleanValue())return ue}return new Se(!1)},Ce.prototype.compareWithBoolean=function(A,k){return k(this.bool(),A)},Ce.prototype.compareWithNodeSet=function(A,k){for(var O=this.toUnsortedArray(),V=function(Re,Ye){return k(Ye,Re)},H=0;H<O.length;H++){var W=new we(this.stringForNode(O[H])),ue=A.compareWithString(W,V);if(ue.booleanValue())return ue}return new Se(!1)},Ce.compareWith=s(function(A,k){return be.instance_of(k,we)?this.compareWithString(k,A):be.instance_of(k,Ee)?this.compareWithNumber(k,A):be.instance_of(k,Se)?this.compareWithBoolean(k,A):this.compareWithNodeSet(k,A)}),Ce.prototype.equals=Ce.compareWith(ct.equals),Ce.prototype.notequal=Ce.compareWith(ct.notequal),Ce.prototype.lessthan=Ce.compareWith(ct.lessthan),Ce.prototype.greaterthan=Ce.compareWith(ct.greaterthan),Ce.prototype.lessthanorequal=Ce.compareWith(ct.lessthanorequal),Ce.prototype.greaterthanorequal=Ce.compareWith(ct.greaterthanorequal),Ce.prototype.union=function(A){var k=new Ce;return k.addArray(this.toUnsortedArray()),k.addArray(A.toUnsortedArray()),k},zi.prototype=new Object,zi.prototype.constructor=zi,zi.superclass=Object.prototype;function zi(A,k,O,V){this.isXPathNamespace=!0,this.baseNode=k,this.ownerDocument=V.ownerDocument,this.nodeName=A,this.prefix=A,this.localName=A,this.namespaceURI=null,this.nodeValue=O,this.ownerElement=V,this.nodeType=b.NAMESPACE_NODE}zi.prototype.toString=function(){return'{ "'+this.prefix+'", "'+this.namespaceURI+'" }'},ii.prototype=new Object,ii.prototype.constructor=ii,ii.superclass=Object.prototype;function ii(A,k,O){this.variableResolver=A??new Ir,this.namespaceResolver=k??new ur,this.functionResolver=O??new tr}ii.prototype.extend=function(A){return C(new ii,this,A)},Ir.prototype=new Object,Ir.prototype.constructor=Ir,Ir.superclass=Object.prototype;function Ir(){}Ir.prototype.getVariable=function(A,k){return null},tr.prototype=new Object,tr.prototype.constructor=tr,tr.superclass=Object.prototype;function tr(A){this.thisArg=A??Qe,this.functions=new Object,this.addStandardFunctions()}tr.prototype.addStandardFunctions=function(){this.functions["{}last"]=Qe.last,this.functions["{}position"]=Qe.position,this.functions["{}count"]=Qe.count,this.functions["{}id"]=Qe.id,this.functions["{}local-name"]=Qe.localName,this.functions["{}namespace-uri"]=Qe.namespaceURI,this.functions["{}name"]=Qe.name,this.functions["{}string"]=Qe.string,this.functions["{}concat"]=Qe.concat,this.functions["{}starts-with"]=Qe.startsWith,this.functions["{}contains"]=Qe.contains,this.functions["{}substring-before"]=Qe.substringBefore,this.functions["{}substring-after"]=Qe.substringAfter,this.functions["{}substring"]=Qe.substring,this.functions["{}string-length"]=Qe.stringLength,this.functions["{}normalize-space"]=Qe.normalizeSpace,this.functions["{}translate"]=Qe.translate,this.functions["{}boolean"]=Qe.boolean_,this.functions["{}not"]=Qe.not,this.functions["{}true"]=Qe.true_,this.functions["{}false"]=Qe.false_,this.functions["{}lang"]=Qe.lang,this.functions["{}number"]=Qe.number,this.functions["{}sum"]=Qe.sum,this.functions["{}floor"]=Qe.floor,this.functions["{}ceiling"]=Qe.ceiling,this.functions["{}round"]=Qe.round},tr.prototype.addFunction=function(A,k,O){this.functions["{"+A+"}"+k]=O},tr.getFunctionFromContext=function(A,k){var O=be.resolveQName(A,k.namespaceResolver,k.contextNode,!1);if(O[0]===null)throw new Error("Cannot resolve QName "+name);return k.functionResolver.getFunction(O[1],O[0])},tr.prototype.getFunction=function(A,k){return this.functions["{"+k+"}"+A]},ur.prototype=new Object,ur.prototype.constructor=ur,ur.superclass=Object.prototype;function ur(){}ur.prototype.getNamespace=function(A,k){if(A=="xml")return _.XML_NAMESPACE_URI;if(A=="xmlns")return _.XMLNS_NAMESPACE_URI;for(k.nodeType==b.DOCUMENT_NODE?k=k.documentElement:k.nodeType==b.ATTRIBUTE_NODE?k=Z.getOwnerElement(k):k.nodeType!=b.ELEMENT_NODE&&(k=k.parentNode);k!=null&&k.nodeType==b.ELEMENT_NODE;){for(var O=k.attributes,V=0;V<O.length;V++){var H=O.item(V),W=H.name||H.nodeName;if(W==="xmlns"&&A===""||W==="xmlns:"+A)return String(H.value||H.nodeValue)}k=k.parentNode}return null};var Qe=new Object;Qe.last=function(A){if(arguments.length!=1)throw new Error("Function last expects ()");return new Ee(A.contextSize)},Qe.position=function(A){if(arguments.length!=1)throw new Error("Function position expects ()");return new Ee(A.contextPosition)},Qe.count=function(){var A=arguments[0],k;if(arguments.length!=2||!be.instance_of(k=arguments[1].evaluate(A),Ce))throw new Error("Function count expects (node-set)");return new Ee(k.size)},Qe.id=function(){var A=arguments[0],k;if(arguments.length!=2)throw new Error("Function id expects (object)");k=arguments[1].evaluate(A),be.instance_of(k,Ce)?k=k.toArray().join(" "):k=k.stringValue();for(var O=k.split(/[\x0d\x0a\x09\x20]+/),V=0,H=new Ce,W=A.contextNode.nodeType==b.DOCUMENT_NODE?A.contextNode:A.contextNode.ownerDocument,ue=0;ue<O.length;ue++){var Re;W.getElementById?Re=W.getElementById(O[ue]):Re=be.getElementById(W,O[ue]),Re!=null&&(H.add(Re),V++)}return H},Qe.localName=function(A,k){var O;if(arguments.length==1)O=A.contextNode;else if(arguments.length==2)O=k.evaluate(A).first();else throw new Error("Function local-name expects (node-set?)");return O==null?new we(""):new we(O.localName||O.baseName||O.target||O.nodeName||"")},Qe.namespaceURI=function(){var A=arguments[0],k;if(arguments.length==1)k=A.contextNode;else if(arguments.length==2)k=arguments[1].evaluate(A).first();else throw new Error("Function namespace-uri expects (node-set?)");return k==null?new we(""):new we(k.namespaceURI||"")},Qe.name=function(){var A=arguments[0],k;if(arguments.length==1)k=A.contextNode;else if(arguments.length==2)k=arguments[1].evaluate(A).first();else throw new Error("Function name expects (node-set?)");return k==null?new we(""):k.nodeType==b.ELEMENT_NODE?new we(k.nodeName):k.nodeType==b.ATTRIBUTE_NODE?new we(k.name||k.nodeName):k.nodeType===b.PROCESSING_INSTRUCTION_NODE?new we(k.target||k.nodeName):k.localName==null?new we(""):new we(k.localName)},Qe.string=function(){var A=arguments[0];if(arguments.length==1)return new we(Ce.prototype.stringForNode(A.contextNode));if(arguments.length==2)return arguments[1].evaluate(A).string();throw new Error("Function string expects (object?)")},Qe.concat=function(A){if(arguments.length<3)throw new Error("Function concat expects (string, string[, string]*)");for(var k="",O=1;O<arguments.length;O++)k+=arguments[O].evaluate(A).stringValue();return new we(k)},Qe.startsWith=function(){var A=arguments[0];if(arguments.length!=3)throw new Error("Function startsWith expects (string, string)");var k=arguments[1].evaluate(A).stringValue(),O=arguments[2].evaluate(A).stringValue();return new Se(k.substring(0,O.length)==O)},Qe.contains=function(){var A=arguments[0];if(arguments.length!=3)throw new Error("Function contains expects (string, string)");var k=arguments[1].evaluate(A).stringValue(),O=arguments[2].evaluate(A).stringValue();return new Se(k.indexOf(O)!==-1)},Qe.substringBefore=function(){var A=arguments[0];if(arguments.length!=3)throw new Error("Function substring-before expects (string, string)");var k=arguments[1].evaluate(A).stringValue(),O=arguments[2].evaluate(A).stringValue();return new we(k.substring(0,k.indexOf(O)))},Qe.substringAfter=function(){var A=arguments[0];if(arguments.length!=3)throw new Error("Function substring-after expects (string, string)");var k=arguments[1].evaluate(A).stringValue(),O=arguments[2].evaluate(A).stringValue();if(O.length==0)return new we(k);var V=k.indexOf(O);return V==-1?new we(""):new we(k.substring(V+O.length))},Qe.substring=function(){var A=arguments[0];if(!(arguments.length==3||arguments.length==4))throw new Error("Function substring expects (string, number, number?)");var k=arguments[1].evaluate(A).stringValue(),O=Math.round(arguments[2].evaluate(A).numberValue())-1,V=arguments.length==4?O+Math.round(arguments[3].evaluate(A).numberValue()):void 0;return new we(k.substring(O,V))},Qe.stringLength=function(){var A=arguments[0],k;if(arguments.length==1)k=Ce.prototype.stringForNode(A.contextNode);else if(arguments.length==2)k=arguments[1].evaluate(A).stringValue();else throw new Error("Function string-length expects (string?)");return new Ee(k.length)},Qe.normalizeSpace=function(){var A=arguments[0],k;if(arguments.length==1)k=Ce.prototype.stringForNode(A.contextNode);else if(arguments.length==2)k=arguments[1].evaluate(A).stringValue();else throw new Error("Function normalize-space expects (string?)");for(var O=0,V=k.length-1;be.isSpace(k.charCodeAt(V));)V--;for(var H="";O<=V&&be.isSpace(k.charCodeAt(O));)O++;for(;O<=V;)if(be.isSpace(k.charCodeAt(O)))for(H+=" ";O<=V&&be.isSpace(k.charCodeAt(O));)O++;else H+=k.charAt(O),O++;return new we(H)},Qe.translate=function(A,k,O,V){if(arguments.length!=4)throw new Error("Function translate expects (string, string, string)");var H=k.evaluate(A).stringValue(),W=O.evaluate(A).stringValue(),ue=V.evaluate(A).stringValue(),Re=a(function(Ie,Fe,yn){return Fe in Ie||(Ie[Fe]=yn>ue.length?"":ue[yn]),Ie},{},W),Ye=h("",c(function(Ie){return Ie in Re?Re[Ie]:Ie},H));return new we(Ye)},Qe.boolean_=function(){var A=arguments[0];if(arguments.length!=2)throw new Error("Function boolean expects (object)");return arguments[1].evaluate(A).bool()},Qe.not=function(A,k){if(arguments.length!=2)throw new Error("Function not expects (object)");return k.evaluate(A).bool().not()},Qe.true_=function(){if(arguments.length!=1)throw new Error("Function true expects ()");return Se.true_},Qe.false_=function(){if(arguments.length!=1)throw new Error("Function false expects ()");return Se.false_},Qe.lang=function(){var A=arguments[0];if(arguments.length!=2)throw new Error("Function lang expects (string)");for(var k,O=A.contextNode;O!=null&&O.nodeType!=b.DOCUMENT_NODE;O=O.parentNode){var V=O.getAttributeNS(_.XML_NAMESPACE_URI,"lang");if(V!=null){k=String(V);break}}if(k==null)return Se.false_;var H=arguments[1].evaluate(A).stringValue();return new Se(k.substring(0,H.length)==H&&(k.length==H.length||k.charAt(H.length)=="-"))},Qe.number=function(){var A=arguments[0];if(!(arguments.length==1||arguments.length==2))throw new Error("Function number expects (object?)");return arguments.length==1?new Ee(Ce.prototype.stringForNode(A.contextNode)):arguments[1].evaluate(A).number()},Qe.sum=function(){var A=arguments[0],k;if(arguments.length!=2||!be.instance_of(k=arguments[1].evaluate(A),Ce))throw new Error("Function sum expects (node-set)");k=k.toUnsortedArray();for(var O=0,V=0;V<k.length;V++)O+=new Ee(Ce.prototype.stringForNode(k[V])).numberValue();return new Ee(O)},Qe.floor=function(){var A=arguments[0];if(arguments.length!=2)throw new Error("Function floor expects (number)");return new Ee(Math.floor(arguments[1].evaluate(A).numberValue()))},Qe.ceiling=function(){var A=arguments[0];if(arguments.length!=2)throw new Error("Function ceiling expects (number)");return new Ee(Math.ceil(arguments[1].evaluate(A).numberValue()))},Qe.round=function(){var A=arguments[0];if(arguments.length!=2)throw new Error("Function round expects (number)");return new Ee(Math.round(arguments[1].evaluate(A).numberValue()))};var be=new Object,Al=function(A){return A&&(A.nodeType===b.ATTRIBUTE_NODE||A.ownerElement||A.isXPathNamespace)};be.splitQName=function(A){var k=A.indexOf(":");return k==-1?[null,A]:[A.substring(0,k),A.substring(k+1)]},be.resolveQName=function(A,k,O,V){var H=be.splitQName(A);return H[0]!=null?H[0]=k.getNamespace(H[0],O):V?(H[0]=k.getNamespace("",O),H[0]==null&&(H[0]="")):H[0]="",H},be.isSpace=function(A){return A==9||A==13||A==10||A==32},be.isLetter=function(A){return A>=65&&A<=90||A>=97&&A<=122||A>=192&&A<=214||A>=216&&A<=246||A>=248&&A<=255||A>=256&&A<=305||A>=308&&A<=318||A>=321&&A<=328||A>=330&&A<=382||A>=384&&A<=451||A>=461&&A<=496||A>=500&&A<=501||A>=506&&A<=535||A>=592&&A<=680||A>=699&&A<=705||A==902||A>=904&&A<=906||A==908||A>=910&&A<=929||A>=931&&A<=974||A>=976&&A<=982||A==986||A==988||A==990||A==992||A>=994&&A<=1011||A>=1025&&A<=1036||A>=1038&&A<=1103||A>=1105&&A<=1116||A>=1118&&A<=1153||A>=1168&&A<=1220||A>=1223&&A<=1224||A>=1227&&A<=1228||A>=1232&&A<=1259||A>=1262&&A<=1269||A>=1272&&A<=1273||A>=1329&&A<=1366||A==1369||A>=1377&&A<=1414||A>=1488&&A<=1514||A>=1520&&A<=1522||A>=1569&&A<=1594||A>=1601&&A<=1610||A>=1649&&A<=1719||A>=1722&&A<=1726||A>=1728&&A<=1742||A>=1744&&A<=1747||A==1749||A>=1765&&A<=1766||A>=2309&&A<=2361||A==2365||A>=2392&&A<=2401||A>=2437&&A<=2444||A>=2447&&A<=2448||A>=2451&&A<=2472||A>=2474&&A<=2480||A==2482||A>=2486&&A<=2489||A>=2524&&A<=2525||A>=2527&&A<=2529||A>=2544&&A<=2545||A>=2565&&A<=2570||A>=2575&&A<=2576||A>=2579&&A<=2600||A>=2602&&A<=2608||A>=2610&&A<=2611||A>=2613&&A<=2614||A>=2616&&A<=2617||A>=2649&&A<=2652||A==2654||A>=2674&&A<=2676||A>=2693&&A<=2699||A==2701||A>=2703&&A<=2705||A>=2707&&A<=2728||A>=2730&&A<=2736||A>=2738&&A<=2739||A>=2741&&A<=2745||A==2749||A==2784||A>=2821&&A<=2828||A>=2831&&A<=2832||A>=2835&&A<=2856||A>=2858&&A<=2864||A>=2866&&A<=2867||A>=2870&&A<=2873||A==2877||A>=2908&&A<=2909||A>=2911&&A<=2913||A>=2949&&A<=2954||A>=2958&&A<=2960||A>=2962&&A<=2965||A>=2969&&A<=2970||A==2972||A>=2974&&A<=2975||A>=2979&&A<=2980||A>=2984&&A<=2986||A>=2990&&A<=2997||A>=2999&&A<=3001||A>=3077&&A<=3084||A>=3086&&A<=3088||A>=3090&&A<=3112||A>=3114&&A<=3123||A>=3125&&A<=3129||A>=3168&&A<=3169||A>=3205&&A<=3212||A>=3214&&A<=3216||A>=3218&&A<=3240||A>=3242&&A<=3251||A>=3253&&A<=3257||A==3294||A>=3296&&A<=3297||A>=3333&&A<=3340||A>=3342&&A<=3344||A>=3346&&A<=3368||A>=3370&&A<=3385||A>=3424&&A<=3425||A>=3585&&A<=3630||A==3632||A>=3634&&A<=3635||A>=3648&&A<=3653||A>=3713&&A<=3714||A==3716||A>=3719&&A<=3720||A==3722||A==3725||A>=3732&&A<=3735||A>=3737&&A<=3743||A>=3745&&A<=3747||A==3749||A==3751||A>=3754&&A<=3755||A>=3757&&A<=3758||A==3760||A>=3762&&A<=3763||A==3773||A>=3776&&A<=3780||A>=3904&&A<=3911||A>=3913&&A<=3945||A>=4256&&A<=4293||A>=4304&&A<=4342||A==4352||A>=4354&&A<=4355||A>=4357&&A<=4359||A==4361||A>=4363&&A<=4364||A>=4366&&A<=4370||A==4412||A==4414||A==4416||A==4428||A==4430||A==4432||A>=4436&&A<=4437||A==4441||A>=4447&&A<=4449||A==4451||A==4453||A==4455||A==4457||A>=4461&&A<=4462||A>=4466&&A<=4467||A==4469||A==4510||A==4520||A==4523||A>=4526&&A<=4527||A>=4535&&A<=4536||A==4538||A>=4540&&A<=4546||A==4587||A==4592||A==4601||A>=7680&&A<=7835||A>=7840&&A<=7929||A>=7936&&A<=7957||A>=7960&&A<=7965||A>=7968&&A<=8005||A>=8008&&A<=8013||A>=8016&&A<=8023||A==8025||A==8027||A==8029||A>=8031&&A<=8061||A>=8064&&A<=8116||A>=8118&&A<=8124||A==8126||A>=8130&&A<=8132||A>=8134&&A<=8140||A>=8144&&A<=8147||A>=8150&&A<=8155||A>=8160&&A<=8172||A>=8178&&A<=8180||A>=8182&&A<=8188||A==8486||A>=8490&&A<=8491||A==8494||A>=8576&&A<=8578||A>=12353&&A<=12436||A>=12449&&A<=12538||A>=12549&&A<=12588||A>=44032&&A<=55203||A>=19968&&A<=40869||A==12295||A>=12321&&A<=12329},be.isNCNameChar=function(A){return A>=48&&A<=57||A>=1632&&A<=1641||A>=1776&&A<=1785||A>=2406&&A<=2415||A>=2534&&A<=2543||A>=2662&&A<=2671||A>=2790&&A<=2799||A>=2918&&A<=2927||A>=3047&&A<=3055||A>=3174&&A<=3183||A>=3302&&A<=3311||A>=3430&&A<=3439||A>=3664&&A<=3673||A>=3792&&A<=3801||A>=3872&&A<=3881||A==46||A==45||A==95||be.isLetter(A)||A>=768&&A<=837||A>=864&&A<=865||A>=1155&&A<=1158||A>=1425&&A<=1441||A>=1443&&A<=1465||A>=1467&&A<=1469||A==1471||A>=1473&&A<=1474||A==1476||A>=1611&&A<=1618||A==1648||A>=1750&&A<=1756||A>=1757&&A<=1759||A>=1760&&A<=1764||A>=1767&&A<=1768||A>=1770&&A<=1773||A>=2305&&A<=2307||A==2364||A>=2366&&A<=2380||A==2381||A>=2385&&A<=2388||A>=2402&&A<=2403||A>=2433&&A<=2435||A==2492||A==2494||A==2495||A>=2496&&A<=2500||A>=2503&&A<=2504||A>=2507&&A<=2509||A==2519||A>=2530&&A<=2531||A==2562||A==2620||A==2622||A==2623||A>=2624&&A<=2626||A>=2631&&A<=2632||A>=2635&&A<=2637||A>=2672&&A<=2673||A>=2689&&A<=2691||A==2748||A>=2750&&A<=2757||A>=2759&&A<=2761||A>=2763&&A<=2765||A>=2817&&A<=2819||A==2876||A>=2878&&A<=2883||A>=2887&&A<=2888||A>=2891&&A<=2893||A>=2902&&A<=2903||A>=2946&&A<=2947||A>=3006&&A<=3010||A>=3014&&A<=3016||A>=3018&&A<=3021||A==3031||A>=3073&&A<=3075||A>=3134&&A<=3140||A>=3142&&A<=3144||A>=3146&&A<=3149||A>=3157&&A<=3158||A>=3202&&A<=3203||A>=3262&&A<=3268||A>=3270&&A<=3272||A>=3274&&A<=3277||A>=3285&&A<=3286||A>=3330&&A<=3331||A>=3390&&A<=3395||A>=3398&&A<=3400||A>=3402&&A<=3405||A==3415||A==3633||A>=3636&&A<=3642||A>=3655&&A<=3662||A==3761||A>=3764&&A<=3769||A>=3771&&A<=3772||A>=3784&&A<=3789||A>=3864&&A<=3865||A==3893||A==3895||A==3897||A==3902||A==3903||A>=3953&&A<=3972||A>=3974&&A<=3979||A>=3984&&A<=3989||A==3991||A>=3993&&A<=4013||A>=4017&&A<=4023||A==4025||A>=8400&&A<=8412||A==8417||A>=12330&&A<=12335||A==12441||A==12442||A==183||A==720||A==721||A==903||A==1600||A==3654||A==3782||A==12293||A>=12337&&A<=12341||A>=12445&&A<=12446||A>=12540&&A<=12542},be.coalesceText=function(A){for(var k=A.firstChild;k!=null;k=k.nextSibling)if(k.nodeType==b.TEXT_NODE||k.nodeType==b.CDATA_SECTION_NODE){var O=k.nodeValue,V=k;for(k=k.nextSibling;k!=null&&(k.nodeType==b.TEXT_NODE||k.nodeType==b.CDATA_SECTION_NODE);){O+=k.nodeValue;var H=k;k=k.nextSibling,H.parentNode.removeChild(H)}if(V.nodeType==b.CDATA_SECTION_NODE){var W=V.parentNode;if(V.nextSibling==null)W.removeChild(V),W.appendChild(W.ownerDocument.createTextNode(O));else{var ue=V.nextSibling;W.removeChild(V),W.insertBefore(W.ownerDocument.createTextNode(O),ue)}}else V.nodeValue=O;if(k==null)break}else k.nodeType==b.ELEMENT_NODE&&be.coalesceText(k)},be.instance_of=function(A,k){for(;A!=null;){if(A.constructor===k)return!0;if(A===Object)return!1;A=A.constructor.superclass}return!1},be.getElementById=function(A,k){if(A.nodeType==b.ELEMENT_NODE&&(A.getAttribute("id")==k||A.getAttributeNS(null,"id")==k))return A;for(var O=A.firstChild;O!=null;O=O.nextSibling){var V=be.getElementById(O,k);if(V!=null)return V}return null};var Ai=(function(){function A(O,V){var H=V?": "+V.toString():"";switch(O){case k.INVALID_EXPRESSION_ERR:return"Invalid expression"+H;case k.TYPE_ERR:return"Type error"+H}return null}function k(O,V,H){var W=Error.call(this,A(O,V)||H);return W.code=O,W.exception=V,W}return k.prototype=Object.create(Error.prototype),k.prototype.constructor=k,k.superclass=Error,k.prototype.toString=function(){return this.message},k.fromMessage=function(O,V){return new k(null,V,O)},k.INVALID_EXPRESSION_ERR=51,k.TYPE_ERR=52,k})();Mr.prototype={},Mr.prototype.constructor=Mr,Mr.superclass=Object.prototype;function Mr(A,k,O){this.xpath=O.parse(A),this.context=new ii,this.context.namespaceResolver=new Mn(k)}Mr.getOwnerDocument=function(A){return A.nodeType===b.DOCUMENT_NODE?A:A.ownerDocument},Mr.detectHtmlDom=function(A){if(!A)return!1;var k=Mr.getOwnerDocument(A);try{return k.implementation.hasFeature("HTML","2.0")}catch{return!0}},Mr.prototype.evaluate=function(A,k,O){this.context.expressionContextNode=A,this.context.caseInsensitive=Mr.detectHtmlDom(A);var V=this.xpath.evaluate(this.context);return new Le(V,k)},Mn.prototype={},Mn.prototype.constructor=Mn,Mn.superclass=Object.prototype;function Mn(A){this.xpathNSResolver=A}Mn.prototype.getNamespace=function(A,k){return this.xpathNSResolver==null?null:this.xpathNSResolver.lookupNamespaceURI(A)},mn.prototype={},mn.prototype.constructor=mn,mn.superclass=Object.prototype;function mn(A){this.node=A,this.namespaceResolver=new ur}mn.prototype.lookupNamespaceURI=function(A){return this.namespaceResolver.getNamespace(A,this.node)},Le.prototype={},Le.prototype.constructor=Le,Le.superclass=Object.prototype;function Le(A,k){switch(k==Le.ANY_TYPE&&(A.constructor===we?k=Le.STRING_TYPE:A.constructor===Ee?k=Le.NUMBER_TYPE:A.constructor===Se?k=Le.BOOLEAN_TYPE:A.constructor===Ce&&(k=Le.UNORDERED_NODE_ITERATOR_TYPE)),this.resultType=k,k){case Le.NUMBER_TYPE:this.numberValue=A.numberValue();return;case Le.STRING_TYPE:this.stringValue=A.stringValue();return;case Le.BOOLEAN_TYPE:this.booleanValue=A.booleanValue();return;case Le.ANY_UNORDERED_NODE_TYPE:case Le.FIRST_ORDERED_NODE_TYPE:if(A.constructor===Ce){this.singleNodeValue=A.first();return}break;case Le.UNORDERED_NODE_ITERATOR_TYPE:case Le.ORDERED_NODE_ITERATOR_TYPE:if(A.constructor===Ce){this.invalidIteratorState=!1,this.nodes=A.toArray(),this.iteratorIndex=0;return}break;case Le.UNORDERED_NODE_SNAPSHOT_TYPE:case Le.ORDERED_NODE_SNAPSHOT_TYPE:if(A.constructor===Ce){this.nodes=A.toArray(),this.snapshotLength=this.nodes.length;return}break}throw new Ai(Ai.TYPE_ERR)}Le.prototype.iterateNext=function(){if(this.resultType!=Le.UNORDERED_NODE_ITERATOR_TYPE&&this.resultType!=Le.ORDERED_NODE_ITERATOR_TYPE)throw new Ai(Ai.TYPE_ERR);return this.nodes[this.iteratorIndex++]},Le.prototype.snapshotItem=function(A){if(this.resultType!=Le.UNORDERED_NODE_SNAPSHOT_TYPE&&this.resultType!=Le.ORDERED_NODE_SNAPSHOT_TYPE)throw new Ai(Ai.TYPE_ERR);return this.nodes[A]},Le.ANY_TYPE=0,Le.NUMBER_TYPE=1,Le.STRING_TYPE=2,Le.BOOLEAN_TYPE=3,Le.UNORDERED_NODE_ITERATOR_TYPE=4,Le.ORDERED_NODE_ITERATOR_TYPE=5,Le.UNORDERED_NODE_SNAPSHOT_TYPE=6,Le.ORDERED_NODE_SNAPSHOT_TYPE=7,Le.ANY_UNORDERED_NODE_TYPE=8,Le.FIRST_ORDERED_NODE_TYPE=9;function Ja(A,k){A.createExpression=function(O,V){try{return new Mr(O,V,k)}catch(H){throw new Ai(Ai.INVALID_EXPRESSION_ERR,H)}},A.createNSResolver=function(O){return new mn(O)},A.evaluate=function(O,V,H,W,ue){if(W<0||W>9)throw{code:0,toString:function(){return"Request type not supported"}};return A.createExpression(O,H,k).evaluate(V,W,ue)}}try{var Ji=!0;try{document.implementation&&document.implementation.hasFeature&&document.implementation.hasFeature("XPath",null)&&(Ji=!1)}catch{}Ji&&Ja(document,new x)}catch{}Ja(r,new x),(function(){var A=new x,k=new ur,O=new tr,V=new Ir;function H(he){return{getNamespace:function(Ze,Lr){var In=he(Ze,Lr);return In||k.getNamespace(Ze,Lr)}}}function W(he){return H(he.getNamespace.bind(he))}function ue(he){return H(function(Ze){return he[Ze]})}function Re(he){return he&&typeof he.getNamespace=="function"?W(he):typeof he=="function"?H(he):typeof he=="object"?ue(he):k}function Ye(he){if(he===null||typeof he>"u"||he instanceof we||he instanceof Se||he instanceof Ee||he instanceof Ce)return he;switch(typeof he){case"string":return new we(he);case"boolean":return new Se(he);case"number":return new Ee(he)}var Ze=new Ce;return Ze.addArray([].concat(he)),Ze}function Ie(he){return function(Ze){var Lr=Array.prototype.slice.call(arguments,1).map(function(ex){return ex.evaluate(Ze)}),In=he.apply(this,[].concat(Ze,Lr));return Ye(In)}}function Fe(he){return{getFunction:function(Ze,Lr){var In=he(Ze,Lr);return In?Ie(In):O.getFunction(Ze,Lr)}}}function yn(he){return Fe(he.getFunction.bind(he))}function bs(he){return Fe(function(Ze){return he[Ze]})}function vs(he){return he&&typeof he.getFunction=="function"?yn(he):typeof he=="function"?Fe(he):typeof he=="object"?bs(he):O}function ks(he){return{getVariable:function(Ze,Lr){var In=he(Ze,Lr);return Ye(In)}}}function ji(he){if(he){if(typeof he.getVariable=="function")return ks(he.getVariable.bind(he));if(typeof he=="function")return ks(he);if(typeof he=="object")return ks(function(Ze){return he[Ze]})}return V}function Ln(he,Ze,Lr){he in Lr&&(Ze[he]=Lr[he])}function f0(he){var Ze=new ii;return he?(Ze.namespaceResolver=Re(he.namespaces),Ze.functionResolver=vs(he.functions),Ze.variableResolver=ji(he.variables),Ze.expressionContextNode=he.node,Ln("allowAnyNamespaceForNoPrefix",Ze,he),Ln("isHtml",Ze,he)):Ze.namespaceResolver=k,Ze}function pu(he,Ze){var Lr=f0(Ze);return he.evaluate(Lr)}var Xw={evaluate:function(he){return pu(this.expression,he)},evaluateNumber:function(he){return this.evaluate(he).numberValue()},evaluateString:function(he){return this.evaluate(he).stringValue()},evaluateBoolean:function(he){return this.evaluate(he).booleanValue()},evaluateNodeSet:function(he){return this.evaluate(he).nodeset()},select:function(he){return this.evaluateNodeSet(he).toArray()},select1:function(he){return this.select(he)[0]}};function Zw(he){var Ze=A.parse(he);return Object.create(Xw,{expression:{value:Ze}})}r.parse=Zw})(),C(r,{XPath:_,XPathParser:x,XPathResult:Le,Step:se,PathExpr:Z,NodeTest:ce,LocationPath:_e,OrOperation:Q,AndOperation:v,BarOperation:ee,EqualsOperation:E,NotEqualOperation:P,LessThanOperation:N,GreaterThanOperation:J,LessThanOrEqualOperation:z,GreaterThanOrEqualOperation:L,PlusOperation:G,MinusOperation:K,MultiplyOperation:$,DivOperation:te,ModOperation:re,UnaryMinusOperation:D,FunctionCall:Or,VariableReference:dr,XPathContext:ii,XNodeSet:Ce,XBoolean:Se,XString:we,XNumber:Ee,NamespaceResolver:ur,FunctionResolver:tr,VariableResolver:Ir,Utilities:be}),r.select=function(A,k,O){return r.selectWithResolver(A,k,null,O)},r.useNamespaces=function(A){var k={mappings:A||{},lookupNamespaceURI:function(O){return this.mappings[O]}};return function(O,V,H){return r.selectWithResolver(O,V,k,H)}},r.selectWithResolver=function(A,k,O,V){var H=new Mr(A,O,new x),W=Le.ANY_TYPE,ue=H.evaluate(k,W,null);return ue.resultType==Le.STRING_TYPE?ue=ue.stringValue:ue.resultType==Le.NUMBER_TYPE?ue=ue.numberValue:ue.resultType==Le.BOOLEAN_TYPE?ue=ue.booleanValue:(ue=ue.nodes,V&&(ue=ue[0])),ue},r.select1=function(A,k){return r.select(A,k,!0)};var Co=function(A){return Array.isArray(A)&&A.every(n)},Ti=function(A){return function(k){return n(k)&&k.nodeType===A}};C(r,{isNodeLike:n,isArrayOfNodes:Co,isElement:Ti(b.ELEMENT_NODE),isAttribute:Ti(b.ATTRIBUTE_NODE),isTextNode:Ti(b.TEXT_NODE),isCDATASection:Ti(b.CDATA_SECTION_NODE),isProcessingInstruction:Ti(b.PROCESSING_INSTRUCTION_NODE),isComment:Ti(b.COMMENT_NODE),isDocumentNode:Ti(b.DOCUMENT_NODE),isDocumentTypeNode:Ti(b.DOCUMENT_TYPE_NODE),isDocumentFragment:Ti(b.DOCUMENT_FRAGMENT_NODE)})})(mj)});var xc=oe(Fr=>{"use strict";function yj(r,e,t){if(t===void 0&&(t=Array.prototype),r&&typeof t.find=="function")return t.find.call(r,e);for(var i=0;i<r.length;i++)if(wc(r,i)){var n=r[i];if(e.call(void 0,n,i,r))return n}}function Ll(r,e){return e===void 0&&(e=Object),e&&typeof e.getOwnPropertyDescriptors=="function"&&(r=e.create(null,e.getOwnPropertyDescriptors(r))),e&&typeof e.freeze=="function"?e.freeze(r):r}function wc(r,e){return Object.prototype.hasOwnProperty.call(r,e)}function Ij(r,e){if(r===null||typeof r!="object")throw new TypeError("target is not an object");for(var t in e)wc(e,t)&&(r[t]=e[t]);return r}var SF=Ll({allowfullscreen:!0,async:!0,autofocus:!0,autoplay:!0,checked:!0,controls:!0,default:!0,defer:!0,disabled:!0,formnovalidate:!0,hidden:!0,ismap:!0,itemscope:!0,loop:!0,multiple:!0,muted:!0,nomodule:!0,novalidate:!0,open:!0,playsinline:!0,readonly:!0,required:!0,reversed:!0,selected:!0});function wj(r){return wc(SF,r.toLowerCase())}var DF=Ll({area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function xj(r){return wc(DF,r.toLowerCase())}var of=Ll({script:!1,style:!1,textarea:!0,title:!0});function Cj(r){var e=r.toLowerCase();return wc(of,e)&&!of[e]}function Ej(r){var e=r.toLowerCase();return wc(of,e)&&of[e]}function QF(r){return r===af.HTML}function Bj(r){return QF(r)||r===af.XML_XHTML_APPLICATION}var af=Ll({HTML:"text/html",XML_APPLICATION:"application/xml",XML_TEXT:"text/xml",XML_XHTML_APPLICATION:"application/xhtml+xml",XML_SVG_IMAGE:"image/svg+xml"}),bj=Object.keys(af).map(function(r){return af[r]});function vj(r){return bj.indexOf(r)>-1}var kj=Ll({HTML:"http://www.w3.org/1999/xhtml",SVG:"http://www.w3.org/2000/svg",XML:"http://www.w3.org/XML/1998/namespace",XMLNS:"http://www.w3.org/2000/xmlns/"});Fr.assign=Ij;Fr.find=yj;Fr.freeze=Ll;Fr.HTML_BOOLEAN_ATTRIBUTES=SF;Fr.HTML_RAW_TEXT_ELEMENTS=of;Fr.HTML_VOID_ELEMENTS=DF;Fr.hasDefaultHTMLNamespace=Bj;Fr.hasOwn=wc;Fr.isHTMLBooleanAttribute=wj;Fr.isHTMLRawTextElement=Cj;Fr.isHTMLEscapableRawTextElement=Ej;Fr.isHTMLMimeType=QF;Fr.isHTMLVoidElement=xj;Fr.isValidMimeType=vj;Fr.MIME_TYPE=af;Fr.NAMESPACE=kj});var ff=oe(uf=>{"use strict";var Sj=xc();function FF(r,e){r.prototype=Object.create(Error.prototype,{constructor:{value:r},name:{value:r.name,enumerable:!0,writable:e}})}var lf=Sj.freeze({Error:"Error",IndexSizeError:"IndexSizeError",DomstringSizeError:"DomstringSizeError",HierarchyRequestError:"HierarchyRequestError",WrongDocumentError:"WrongDocumentError",InvalidCharacterError:"InvalidCharacterError",NoDataAllowedError:"NoDataAllowedError",NoModificationAllowedError:"NoModificationAllowedError",NotFoundError:"NotFoundError",NotSupportedError:"NotSupportedError",InUseAttributeError:"InUseAttributeError",InvalidStateError:"InvalidStateError",SyntaxError:"SyntaxError",InvalidModificationError:"InvalidModificationError",NamespaceError:"NamespaceError",InvalidAccessError:"InvalidAccessError",ValidationError:"ValidationError",TypeMismatchError:"TypeMismatchError",SecurityError:"SecurityError",NetworkError:"NetworkError",AbortError:"AbortError",URLMismatchError:"URLMismatchError",QuotaExceededError:"QuotaExceededError",TimeoutError:"TimeoutError",InvalidNodeTypeError:"InvalidNodeTypeError",DataCloneError:"DataCloneError",EncodingError:"EncodingError",NotReadableError:"NotReadableError",UnknownError:"UnknownError",ConstraintError:"ConstraintError",DataError:"DataError",TransactionInactiveError:"TransactionInactiveError",ReadOnlyError:"ReadOnlyError",VersionError:"VersionError",OperationError:"OperationError",NotAllowedError:"NotAllowedError",OptOutError:"OptOutError"}),PF=Object.keys(lf);function TF(r){return typeof r=="number"&&r>=1&&r<=25}function Dj(r){return typeof r=="string"&&r.substring(r.length-lf.Error.length)===lf.Error}function df(r,e){TF(r)?(this.name=PF[r],this.message=e||""):(this.message=r,this.name=Dj(e)?e:lf.Error),Error.captureStackTrace&&Error.captureStackTrace(this,df)}FF(df,!0);Object.defineProperties(df.prototype,{code:{enumerable:!0,get:function(){var r=PF.indexOf(this.name);return TF(r)?r:0}}});var UF={INDEX_SIZE_ERR:1,DOMSTRING_SIZE_ERR:2,HIERARCHY_REQUEST_ERR:3,WRONG_DOCUMENT_ERR:4,INVALID_CHARACTER_ERR:5,NO_DATA_ALLOWED_ERR:6,NO_MODIFICATION_ALLOWED_ERR:7,NOT_FOUND_ERR:8,NOT_SUPPORTED_ERR:9,INUSE_ATTRIBUTE_ERR:10,INVALID_STATE_ERR:11,SYNTAX_ERR:12,INVALID_MODIFICATION_ERR:13,NAMESPACE_ERR:14,INVALID_ACCESS_ERR:15,VALIDATION_ERR:16,TYPE_MISMATCH_ERR:17,SECURITY_ERR:18,NETWORK_ERR:19,ABORT_ERR:20,URL_MISMATCH_ERR:21,QUOTA_EXCEEDED_ERR:22,TIMEOUT_ERR:23,INVALID_NODE_TYPE_ERR:24,DATA_CLONE_ERR:25},AE=Object.entries(UF);for(cf=0;cf<AE.length;cf++)_F=AE[cf][0],df[_F]=AE[cf][1];var _F,cf;function hE(r,e,t){this.message=r,this.locator=e,this.cause=t,Error.captureStackTrace&&Error.captureStackTrace(this,hE)}FF(hE);uf.DOMException=df;uf.DOMExceptionName=lf;uf.ExceptionCode=UF;uf.ParseError=hE});var xE=oe(Ke=>{"use strict";function LF(r){try{typeof r!="function"&&(r=RegExp);var e=new r("\u{1D306}","u").exec("\u{1D306}");return!!e&&e[0].length===2}catch{}return!1}var Gl=LF();function Wo(r){if(r.source[0]!=="[")throw new Error(r+" can not be used with chars");return r.source.slice(1,r.source.lastIndexOf("]"))}function Hl(r,e){if(r.source[0]!=="[")throw new Error("/"+r.source+"/ can not be used with chars_without");if(!e||typeof e!="string")throw new Error(JSON.stringify(e)+" is not a valid search");if(r.source.indexOf(e)===-1)throw new Error('"'+e+'" is not is /'+r.source+"/");if(e==="-"&&r.source.indexOf(e)!==1)throw new Error('"'+e+'" is not at the first postion of /'+r.source+"/");return new RegExp(r.source.replace(e,""),Gl?"u":"")}function $e(r){var e=this;return new RegExp(Array.prototype.slice.call(arguments).map(function(t){var i=typeof t=="string";if(i&&e===void 0&&t==="|")throw new Error("use regg instead of reg to wrap expressions with `|`!");return i?t:t.source}).join(""),Gl?"u":"")}function Oe(r){if(arguments.length===0)throw new Error("no parameters provided");return $e.apply(Oe,["(?:"].concat(Array.prototype.slice.call(arguments),[")"]))}var Qj="\uFFFD",Xo=/[-\x09\x0A\x0D\x20-\x2C\x2E-\uD7FF\uE000-\uFFFD]/;Gl&&(Xo=$e("[",Wo(Xo),"\\u{10000}-\\u{10FFFF}","]"));var _j=new RegExp("[^"+Wo(Xo)+"]",Gl?"u":""),jm=/[\x20\x09\x0D\x0A]/,Fj=Wo(jm),gt=$e(jm,"+"),Qt=$e(jm,"*"),Af=/[:_a-zA-Z\xC0-\xD6\xD8-\xF6\xF8-\u02FF\u0370-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]/;Gl&&(Af=$e("[",Wo(Af),"\\u{10000}-\\u{10FFFF}","]"));var Pj=Wo(Af),mE=$e("[",Pj,Wo(/[-.0-9\xB7]/),Wo(/[\u0300-\u036F\u203F-\u2040]/),"]"),Oi=$e(Af,mE,"*"),Tj=$e("^",Oi,"$"),RF=$e(mE,"+"),Uj=$e("&",Oi,";"),Rj=Oe(/&#[0-9]+;|&#x[0-9a-fA-F]+;/),hf=Oe(Uj,"|",Rj),gf=$e("%",Oi,";"),yE=Oe($e('"',Oe(/[^%&"]/,"|",gf,"|",hf),"*",'"'),"|",$e("'",Oe(/[^%&']/,"|",gf,"|",hf),"*","'")),Nj=Oe('"',Oe(/[^<&"]/,"|",hf),"*",'"',"|","'",Oe(/[^<&']/,"|",hf),"*","'"),qj=Hl(Af,":"),Oj=Hl(mE,":"),gE=$e(qj,Oj,"*"),Mj=$e("^",gE,"$"),pf=$e(gE,Oe(":",gE),"?"),Lj=$e("^",pf,"$"),Hj=$e("(",pf,")"),Kl=Oe(/"[^"]*"|'[^']*'/),Kj=$e(/^<\?/,"(",Oi,")",Oe(gt,"(?!",jm,")(",Xo,"*?)"),"?",/\?>/),NF=/[\x20\x0D\x0Aa-zA-Z0-9-'()+,./:=?;!*#@$_%]/,mf=Oe('"',NF,'*"',"|","'",Hl(NF,"'"),"*'"),HF="<!--",KF="-->",Gj=$e(HF,Oe(Hl(Xo,"-"),"|",$e("-",Hl(Xo,"-"))),"*",KF),qF="#PCDATA",zj=Oe($e(/\(/,Qt,qF,Oe(Qt,/\|/,Qt,pf),"*",Qt,/\)\*/),"|",$e(/\(/,Qt,qF,Qt,/\)/)),Jj=/[?*+]?/,jj=$e(/\([^>]+\)/,Jj),$j=Oe("EMPTY","|","ANY","|",zj,"|",jj),Vj="<!ELEMENT",Yj=$e(Vj,gt,Oe(pf,"|",gf),gt,Oe($j,"|",gf),Qt,">"),Wj=$e("NOTATION",gt,/\(/,Qt,Oi,Oe(Qt,/\|/,Qt,Oi),"*",Qt,/\)/),Xj=$e(/\(/,Qt,RF,Oe(Qt,/\|/,Qt,RF),"*",Qt,/\)/),Zj=Oe(Wj,"|",Xj),e$=Oe(/CDATA|ID|IDREF|IDREFS|ENTITY|ENTITIES|NMTOKEN|NMTOKENS/,"|",Zj),t$=Oe(/#REQUIRED|#IMPLIED/,"|",Oe(Oe("#FIXED",gt),"?",Nj)),r$=Oe(gt,Oi,gt,e$,gt,t$),i$="<!ATTLIST",n$=$e(i$,gt,Oi,r$,"*",Qt,">"),pE="about:legacy-compat",s$=Oe('"'+pE+'"',"|","'"+pE+"'"),IE="SYSTEM",$m="PUBLIC",Vm=Oe(Oe(IE,gt,Kl),"|",Oe($m,gt,mf,gt,Kl)),o$=$e("^",Oe(Oe(IE,gt,"(?<SystemLiteralOnly>",Kl,")"),"|",Oe($m,gt,"(?<PubidLiteral>",mf,")",gt,"(?<SystemLiteral>",Kl,")"))),a$=$e("^",mf,"$"),c$=$e("^",Kl,"$"),l$=Oe(gt,"NDATA",gt,Oi),d$=Oe(yE,"|",Oe(Vm,l$,"?")),GF="<!ENTITY",u$=$e(GF,gt,Oi,gt,d$,Qt,">"),f$=Oe(yE,"|",Vm),A$=$e(GF,gt,"%",gt,Oi,gt,f$,Qt,">"),h$=Oe(u$,"|",A$),g$=$e($m,gt,mf),p$=$e("<!NOTATION",gt,Oi,gt,Oe(Vm,"|",g$),Qt,">"),wE=$e(Qt,"=",Qt),OF=/1[.]\d+/,m$=$e(gt,"version",wE,Oe("'",OF,"'","|",'"',OF,'"')),MF=/[A-Za-z][-A-Za-z0-9._]*/,y$=Oe(gt,"encoding",wE,Oe('"',MF,'"',"|","'",MF,"'")),I$=Oe(gt,"standalone",wE,Oe("'",Oe("yes","|","no"),"'","|",'"',Oe("yes","|","no"),'"')),w$=$e(/^<\?xml/,m$,y$,"?",I$,"?",Qt,/\?>/),x$="<!DOCTYPE",C$="<![CDATA[",E$="]]>",B$=/<!\[CDATA\[/,b$=/\]\]>/,v$=$e(Xo,"*?",b$),k$=$e(B$,v$);Ke.chars=Wo;Ke.chars_without=Hl;Ke.detectUnicodeSupport=LF;Ke.reg=$e;Ke.regg=Oe;Ke.ABOUT_LEGACY_COMPAT=pE;Ke.ABOUT_LEGACY_COMPAT_SystemLiteral=s$;Ke.AttlistDecl=n$;Ke.CDATA_START=C$;Ke.CDATA_END=E$;Ke.CDSect=k$;Ke.Char=Xo;Ke.Comment=Gj;Ke.COMMENT_START=HF;Ke.COMMENT_END=KF;Ke.DOCTYPE_DECL_START=x$;Ke.elementdecl=Yj;Ke.EntityDecl=h$;Ke.EntityValue=yE;Ke.ExternalID=Vm;Ke.ExternalID_match=o$;Ke.Name=Oi;Ke.Name_exact=Tj;Ke.NCName_exact=Mj;Ke.NotationDecl=p$;Ke.Reference=hf;Ke.PEReference=gf;Ke.PI=Kj;Ke.PUBLIC=$m;Ke.PubidLiteral=mf;Ke.PubidLiteral_match=a$;Ke.QName=pf;Ke.QName_exact=Lj;Ke.QName_group=Hj;Ke.S=gt;Ke.SChar_s=Fj;Ke.S_OPT=Qt;Ke.SYSTEM=IE;Ke.SystemLiteral=Kl;Ke.SystemLiteral_match=c$;Ke.InvalidChar=_j;Ke.UNICODE_REPLACEMENT_CHARACTER=Qj;Ke.UNICODE_SUPPORT=Gl;Ke.XMLDecl=w$});var _E=oe(Ht=>{"use strict";var en=xc(),Xn=en.find,S$=en.hasDefaultHTMLNamespace,Jl=en.hasOwn,D$=en.isHTMLMimeType,Q$=en.isHTMLRawTextElement,_$=en.isHTMLVoidElement,yf=en.MIME_TYPE,Zn=en.NAMESPACE,ci=Symbol(),WF=ff(),ke=WF.DOMException,jr=WF.DOMExceptionName,Lt=xE();function gi(r){if(r!==ci)throw new TypeError("Illegal constructor")}function F$(r){return r!==""}function P$(r){return r?r.split(/[\t\n\f\r ]+/).filter(F$):[]}function T$(r,e){return Jl(r,e)||(r[e]=!0),r}function zF(r){if(!r)return[];var e=P$(r);return Object.keys(e.reduce(T$,{}))}function U$(r){return function(e){return r&&r.indexOf(e)!==-1}}function XF(r){if(!Lt.QName_exact.test(r))throw new ke(ke.INVALID_CHARACTER_ERR,'invalid character in qualified name "'+r+'"')}function EE(r,e){XF(e),r=r||null;var t=null,i=e;if(e.indexOf(":")>=0){var n=e.split(":");t=n[0],i=n[1]}if(t!==null&&r===null)throw new ke(ke.NAMESPACE_ERR,"prefix is non-null and namespace is null");if(t==="xml"&&r!==en.NAMESPACE.XML)throw new ke(ke.NAMESPACE_ERR,'prefix is "xml" and namespace is not the XML namespace');if((t==="xmlns"||e==="xmlns")&&r!==en.NAMESPACE.XMLNS)throw new ke(ke.NAMESPACE_ERR,'either qualifiedName or prefix is "xmlns" and namespace is not the XMLNS namespace');if(r===en.NAMESPACE.XMLNS&&t!=="xmlns"&&e!=="xmlns")throw new ke(ke.NAMESPACE_ERR,'namespace is the XMLNS namespace and neither qualifiedName nor prefix is "xmlns"');return[r,t,i]}function Vl(r,e){for(var t in r)Jl(r,t)&&(e[t]=r[t])}function pi(r,e){var t=r.prototype;if(!(t instanceof e)){let i=function(){};i.prototype=e.prototype,i=new i,Vl(t,i),r.prototype=t=i}t.constructor!=r&&(typeof r!="function"&&console.error("unknown Class:"+r),t.constructor=r)}var mi={},Zi=mi.ELEMENT_NODE=1,jl=mi.ATTRIBUTE_NODE=2,If=mi.TEXT_NODE=3,ZF=mi.CDATA_SECTION_NODE=4,eP=mi.ENTITY_REFERENCE_NODE=5,R$=mi.ENTITY_NODE=6,BE=mi.PROCESSING_INSTRUCTION_NODE=7,bE=mi.COMMENT_NODE=8,zl=mi.DOCUMENT_NODE=9,tP=mi.DOCUMENT_TYPE_NODE=10,Zo=mi.DOCUMENT_FRAGMENT_NODE=11,N$=mi.NOTATION_NODE=12,Mt=en.freeze({DOCUMENT_POSITION_DISCONNECTED:1,DOCUMENT_POSITION_PRECEDING:2,DOCUMENT_POSITION_FOLLOWING:4,DOCUMENT_POSITION_CONTAINS:8,DOCUMENT_POSITION_CONTAINED_BY:16,DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC:32});function rP(r,e){if(e.length<r.length)return rP(e,r);var t=null;for(var i in r){if(r[i]!==e[i])return t;t=r[i]}return t}function JF(r){return r.guid||(r.guid=Math.random()),r.guid}function Ar(){}Ar.prototype={length:0,item:function(r){return r>=0&&r<this.length?this[r]:null},toString:function(r){var e;typeof r=="function"?e={requireWellFormed:!1,splitCDATASections:!0,nodeFilter:r}:r?e={requireWellFormed:!!r.requireWellFormed,splitCDATASections:r.splitCDATASections!==!1,nodeFilter:r.nodeFilter||null}:e={requireWellFormed:!1,splitCDATASections:!0,nodeFilter:null};for(var t=[],i=0;i<this.length;i++)QE(this[i],t,null,e);return t.join("")},filter:function(r){return Array.prototype.filter.call(this,r)},indexOf:function(r){return Array.prototype.indexOf.call(this,r)}};Ar.prototype[Symbol.iterator]=function(){var r=this,e=0;return{next:function(){return e<r.length?{value:r[e++],done:!1}:{done:!0}},return:function(){return{done:!0}}}};function Wn(r,e){this._node=r,this._refresh=e,Zm(this)}function Zm(r){var e=r._node._inc||r._node.ownerDocument._inc;if(r._inc!==e){var t=r._refresh(r._node);if(AP(r,"length",t.length),!r.$$length||t.length<r.$$length)for(var i=t.length;i in r;i++)Jl(r,i)&&delete r[i];Vl(t,r),r._inc=e}}Wn.prototype.item=function(r){return Zm(this),this[r]||null};pi(Wn,Ar);function $l(){this._nsIndex=Object.create(null),this._noNsIndex=Object.create(null)}function iP(r,e){for(var t=0;t<r.length;){if(r[t]===e)return t;t++}}function vE(r,e,t){if(!e)return r._noNsIndex;var i=r._nsIndex[e];return!i&&t&&(i=r._nsIndex[e]=Object.create(null)),i}function q$(r,e,t){var i=vE(r,e,!1),n=i&&i[t];return n||null}function O$(r,e){vE(r,e.namespaceURI,!0)[e.localName]=e}function M$(r,e){var t=vE(r,e.namespaceURI,!1);t&&delete t[e.localName]}function L$(r,e,t,i){if(i?e[iP(e,i)]=t:(e[e.length]=t,e.length++),O$(e,t),r){t.ownerElement=r;var n=r.ownerDocument;n&&(i&&oP(n,r,i),H$(n,r,t))}}function jF(r,e,t){var i=iP(e,t);if(i>=0){for(var n=e.length-1;i<=n;)e[i]=e[++i];if(e.length=n,M$(e,t),r){var s=r.ownerDocument;s&&oP(s,r,t),t.ownerElement=null}}}$l.prototype={length:0,item:Ar.prototype.item,getNamedItem:function(r){this._ownerElement&&this._ownerElement._isInHTMLDocumentAndNamespace()&&(r=r.toLowerCase());for(var e=0;e<this.length;){var t=this[e];if(t.nodeName===r)return t;e++}return null},setNamedItem:function(r){var e=r.ownerElement;if(e&&e!==this._ownerElement)throw new ke(ke.INUSE_ATTRIBUTE_ERR);var t=q$(this,r.namespaceURI,r.localName);return t===r?r:(L$(this._ownerElement,this,r,t),t)},setNamedItemNS:function(r){return this.setNamedItem(r)},removeNamedItem:function(r){var e=this.getNamedItem(r);if(!e)throw new ke(ke.NOT_FOUND_ERR,r);return jF(this._ownerElement,this,e),e},removeNamedItemNS:function(r,e){var t=this.getNamedItemNS(r,e);if(!t)throw new ke(ke.NOT_FOUND_ERR,r?r+" : "+e:e);return jF(this._ownerElement,this,t),t},getNamedItemNS:function(r,e){r||(r=null);for(var t=0;t<this.length;){var i=this[t];if(i.localName===e&&i.namespaceURI===r)return i;t++}return null}};$l.prototype[Symbol.iterator]=function(){var r=this,e=0;return{next:function(){return e<r.length?{value:r[e++],done:!1}:{done:!0}},return:function(){return{done:!0}}}};function nP(){}nP.prototype={hasFeature:function(r,e){return!0},createDocument:function(r,e,t){var i=yf.XML_APPLICATION;r===Zn.HTML?i=yf.XML_XHTML_APPLICATION:r===Zn.SVG&&(i=yf.XML_SVG_IMAGE);var n=new Hs(ci,{contentType:i});if(n.implementation=this,n.childNodes=new Ar,n.doctype=t||null,t&&n.appendChild(t),e){var s=n.createElementNS(r,e);n.appendChild(s)}return n},createDocumentType:function(r,e,t,i){XF(r);var n=new ry(ci);return n.name=r,n.nodeName=r,n.publicId=e||"",n.systemId=t||"",n.internalSubset=i||"",n.childNodes=new Ar,n},createHTMLDocument:function(r){var e=new Hs(ci,{contentType:yf.HTML});if(e.implementation=this,e.childNodes=new Ar,r!==!1){e.doctype=this.createDocumentType("html"),e.doctype.ownerDocument=e,e.appendChild(e.doctype);var t=e.createElement("html");e.appendChild(t);var i=e.createElement("head");if(t.appendChild(i),typeof r=="string"){var n=e.createElement("title");n.appendChild(e.createTextNode(r)),i.appendChild(n)}t.appendChild(e.createElement("body"))}return e}};function st(r){gi(r)}st.prototype={firstChild:null,lastChild:null,previousSibling:null,nextSibling:null,parentNode:null,get parentElement(){return this.parentNode&&this.parentNode.nodeType===this.ELEMENT_NODE?this.parentNode:null},childNodes:null,ownerDocument:null,nodeValue:null,namespaceURI:null,prefix:null,localName:null,baseURI:"about:blank",get isConnected(){var r=this.getRootNode();return r&&r.nodeType===r.DOCUMENT_NODE},contains:function(r){if(!r)return!1;var e=r;do{if(this===e)return!0;e=e.parentNode}while(e);return!1},getRootNode:function(r){var e=this;do{if(!e.parentNode)return e;e=e.parentNode}while(e)},isEqualNode:function(r){if(!r)return!1;for(var e=[{node:this,other:r}];e.length>0;){var t=e.pop(),i=t.node,n=t.other;if(i.nodeType!==n.nodeType)return!1;switch(i.nodeType){case i.DOCUMENT_TYPE_NODE:if(i.name!==n.name||i.publicId!==n.publicId||i.systemId!==n.systemId)return!1;break;case i.ELEMENT_NODE:if(i.namespaceURI!==n.namespaceURI||i.prefix!==n.prefix||i.localName!==n.localName||i.attributes.length!==n.attributes.length)return!1;for(var s=0;s<i.attributes.length;s++){var o=i.attributes.item(s),a=n.getAttributeNodeNS(o.namespaceURI,o.localName);if(!a)return!1;e.push({node:o,other:a})}break;case i.ATTRIBUTE_NODE:if(i.namespaceURI!==n.namespaceURI||i.localName!==n.localName||i.value!==n.value)return!1;break;case i.PROCESSING_INSTRUCTION_NODE:if(i.target!==n.target||i.data!==n.data)return!1;break;case i.TEXT_NODE:case i.CDATA_SECTION_NODE:case i.COMMENT_NODE:if(i.data!==n.data)return!1;break}if(i.childNodes.length!==n.childNodes.length)return!1;for(var s=i.childNodes.length-1;s>=0;s--)e.push({node:i.childNodes[s],other:n.childNodes[s]})}return!0},isSameNode:function(r){return this===r},insertBefore:function(r,e){return Xm(this,r,e)},replaceChild:function(r,e){Xm(this,r,e,lP),e&&this.removeChild(e)},removeChild:function(r){return aP(this,r)},appendChild:function(r){return this.insertBefore(r,null)},hasChildNodes:function(){return this.firstChild!=null},cloneNode:function(r){return fP(this.ownerDocument||this,this,r)},normalize:function(){Pr(this,null,{enter:function(r){for(var e=r.firstChild;e;){var t=e.nextSibling;if(t!==null&&t.nodeType===If&&e.nodeType===If){for(var i=[],n=t;n!==null&&n.nodeType===If;)i.push(n.data),n=n.nextSibling;for(var s=e.nextSibling;s!==n;){var o=s.nextSibling;s.parentNode=null,s.previousSibling=null,s.nextSibling=null,s=o}e.nextSibling=n,n!==null?n.previousSibling=e:r.lastChild=e,e.appendData(i.join("")),kE(r.ownerDocument,r),e=n}else e=t}return!0}})},isSupported:function(r,e){return this.ownerDocument.implementation.hasFeature(r,e)},lookupPrefix:function(r){for(var e=this;e;){var t=e._nsMap;if(t){for(var i in t)if(Jl(t,i)&&t[i]===r)return i}e=e.nodeType==jl?e.ownerDocument:e.parentNode}return null},lookupNamespaceURI:function(r){for(var e=this;e;){var t=e._nsMap;if(t&&Jl(t,r))return t[r];e=e.nodeType==jl?e.ownerDocument:e.parentNode}return null},isDefaultNamespace:function(r){var e=this.lookupPrefix(r);return e==null},compareDocumentPosition:function(r){if(this===r)return 0;var e=r,t=this,i=null,n=null;if(e instanceof Cc&&(i=e,e=i.ownerElement),t instanceof Cc&&(n=t,t=n.ownerElement,i&&e&&t===e))for(var s=0,o;o=t.attributes[s];s++){if(o===i)return Mt.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC+Mt.DOCUMENT_POSITION_PRECEDING;if(o===n)return Mt.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC+Mt.DOCUMENT_POSITION_FOLLOWING}if(!e||!t||t.ownerDocument!==e.ownerDocument)return Mt.DOCUMENT_POSITION_DISCONNECTED+Mt.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC+(JF(t.ownerDocument)>JF(e.ownerDocument)?Mt.DOCUMENT_POSITION_FOLLOWING:Mt.DOCUMENT_POSITION_PRECEDING);if(n&&e===t)return Mt.DOCUMENT_POSITION_CONTAINS+Mt.DOCUMENT_POSITION_PRECEDING;if(i&&e===t)return Mt.DOCUMENT_POSITION_CONTAINED_BY+Mt.DOCUMENT_POSITION_FOLLOWING;for(var a=[],c=e.parentNode;c;){if(!n&&c===t)return Mt.DOCUMENT_POSITION_CONTAINED_BY+Mt.DOCUMENT_POSITION_FOLLOWING;a.push(c),c=c.parentNode}a.reverse();for(var l=[],d=t.parentNode;d;){if(!i&&d===e)return Mt.DOCUMENT_POSITION_CONTAINS+Mt.DOCUMENT_POSITION_PRECEDING;l.push(d),d=d.parentNode}l.reverse();var u=rP(a,l);for(var f in u.childNodes){var h=u.childNodes[f];if(h===t)return Mt.DOCUMENT_POSITION_FOLLOWING;if(h===e)return Mt.DOCUMENT_POSITION_PRECEDING;if(l.indexOf(h)>=0)return Mt.DOCUMENT_POSITION_FOLLOWING;if(a.indexOf(h)>=0)return Mt.DOCUMENT_POSITION_PRECEDING}return 0}};function sP(r){return r=="<"&&"<"||r==">"&&">"||r=="&"&&"&"||r=='"'&&"""||"&#"+r.charCodeAt()+";"}Vl(mi,st);Vl(mi,st.prototype);Vl(Mt,st);Vl(Mt,st.prototype);function Wm(r,e){Pr(r,null,{enter:function(t){return e(t)?Pr.STOP:!0}})}function Pr(r,e,t){for(var i=[{node:r,context:e,phase:Pr.ENTER}];i.length>0;){var n=i.pop();if(n.phase===Pr.ENTER){var s=t.enter(n.node,n.context);if(s===Pr.STOP)return Pr.STOP;if(i.push({node:n.node,context:s,phase:Pr.EXIT}),s==null)continue;for(var o=n.node.lastChild;o;)i.push({node:o,context:s,phase:Pr.ENTER}),o=o.previousSibling}else t.exit&&t.exit(n.node,n.context)}}Pr.STOP=Symbol("walkDOM.STOP");Pr.ENTER=0;Pr.EXIT=1;function Hs(r,e){gi(r);var t=e||{};this.ownerDocument=this,this.contentType=t.contentType||yf.XML_APPLICATION,this.type=D$(this.contentType)?"html":"xml"}function H$(r,e,t){r&&r._inc++;var i=t.namespaceURI;i===Zn.XMLNS&&(e._nsMap[t.prefix?t.localName:""]=t.value)}function oP(r,e,t,i){r&&r._inc++;var n=t.namespaceURI;n===Zn.XMLNS&&delete e._nsMap[t.prefix?t.localName:""]}function kE(r,e,t){if(r&&r._inc){r._inc++;var i=e.childNodes;if(t&&!t.nextSibling)i[i.length++]=t;else{for(var n=e.firstChild,s=0;n;)i[s++]=n,n=n.nextSibling;i.length=s,delete i[i.length]}}}function aP(r,e){if(r!==e.parentNode)throw new ke(ke.NOT_FOUND_ERR,"child's parent is not parent");var t=e.previousSibling,i=e.nextSibling;return t?t.nextSibling=i:r.firstChild=i,i?i.previousSibling=t:r.lastChild=t,kE(r.ownerDocument,r),e.parentNode=null,e.previousSibling=null,e.nextSibling=null,e}function K$(r){return r&&(r.nodeType===st.DOCUMENT_NODE||r.nodeType===st.DOCUMENT_FRAGMENT_NODE||r.nodeType===st.ELEMENT_NODE)}function G$(r){return r&&(r.nodeType===st.CDATA_SECTION_NODE||r.nodeType===st.COMMENT_NODE||r.nodeType===st.DOCUMENT_FRAGMENT_NODE||r.nodeType===st.DOCUMENT_TYPE_NODE||r.nodeType===st.ELEMENT_NODE||r.nodeType===st.PROCESSING_INSTRUCTION_NODE||r.nodeType===st.TEXT_NODE)}function ea(r){return r&&r.nodeType===st.DOCUMENT_TYPE_NODE}function Ls(r){return r&&r.nodeType===st.ELEMENT_NODE}function cP(r){return r&&r.nodeType===st.TEXT_NODE}function $F(r,e){var t=r.childNodes||[];if(Xn(t,Ls)||ea(e))return!1;var i=Xn(t,ea);return!(e&&i&&t.indexOf(i)>t.indexOf(e))}function VF(r,e){var t=r.childNodes||[];function i(s){return Ls(s)&&s!==e}if(Xn(t,i))return!1;var n=Xn(t,ea);return!(e&&n&&t.indexOf(n)>t.indexOf(e))}function z$(r,e,t){if(!K$(r))throw new ke(ke.HIERARCHY_REQUEST_ERR,"Unexpected parent node type "+r.nodeType);if(t&&t.parentNode!==r)throw new ke(ke.NOT_FOUND_ERR,"child not in parent");if(!G$(e)||ea(e)&&r.nodeType!==st.DOCUMENT_NODE)throw new ke(ke.HIERARCHY_REQUEST_ERR,"Unexpected node type "+e.nodeType+" for parent node type "+r.nodeType)}function J$(r,e,t){var i=r.childNodes||[],n=e.childNodes||[];if(e.nodeType===st.DOCUMENT_FRAGMENT_NODE){var s=n.filter(Ls);if(s.length>1||Xn(n,cP))throw new ke(ke.HIERARCHY_REQUEST_ERR,"More than one element or text in fragment");if(s.length===1&&!$F(r,t))throw new ke(ke.HIERARCHY_REQUEST_ERR,"Element in fragment can not be inserted before doctype")}if(Ls(e)&&!$F(r,t))throw new ke(ke.HIERARCHY_REQUEST_ERR,"Only one element can be added and only after doctype");if(ea(e)){if(Xn(i,ea))throw new ke(ke.HIERARCHY_REQUEST_ERR,"Only one doctype is allowed");var o=Xn(i,Ls);if(t&&i.indexOf(o)<i.indexOf(t))throw new ke(ke.HIERARCHY_REQUEST_ERR,"Doctype can only be inserted before an element");if(!t&&o)throw new ke(ke.HIERARCHY_REQUEST_ERR,"Doctype can not be appended since element is present")}}function lP(r,e,t){var i=r.childNodes||[],n=e.childNodes||[];if(e.nodeType===st.DOCUMENT_FRAGMENT_NODE){var s=n.filter(Ls);if(s.length>1||Xn(n,cP))throw new ke(ke.HIERARCHY_REQUEST_ERR,"More than one element or text in fragment");if(s.length===1&&!VF(r,t))throw new ke(ke.HIERARCHY_REQUEST_ERR,"Element in fragment can not be inserted before doctype")}if(Ls(e)&&!VF(r,t))throw new ke(ke.HIERARCHY_REQUEST_ERR,"Only one element can be added and only after doctype");if(ea(e)){if(Xn(i,function(c){return ea(c)&&c!==t}))throw new ke(ke.HIERARCHY_REQUEST_ERR,"Only one doctype is allowed");var o=Xn(i,Ls);if(t&&i.indexOf(o)<i.indexOf(t))throw new ke(ke.HIERARCHY_REQUEST_ERR,"Doctype can only be inserted before an element")}}function Xm(r,e,t,i){z$(r,e,t),r.nodeType===st.DOCUMENT_NODE&&(i||J$)(r,e,t);var n=e.parentNode;if(n&&n.removeChild(e),e.nodeType===Zo){var s=e.firstChild;if(s==null)return e;var o=e.lastChild}else s=o=e;var a=t?t.previousSibling:r.lastChild;s.previousSibling=a,o.nextSibling=t,a?a.nextSibling=s:r.firstChild=s,t==null?r.lastChild=o:t.previousSibling=o;do s.parentNode=r;while(s!==o&&(s=s.nextSibling));return kE(r.ownerDocument||r,r,e),e.nodeType==Zo&&(e.firstChild=e.lastChild=null),e}Hs.prototype={implementation:null,nodeName:"#document",nodeType:zl,doctype:null,documentElement:null,_inc:1,insertBefore:function(r,e){if(r.nodeType===Zo){for(var t=r.firstChild;t;){var i=t.nextSibling;this.insertBefore(t,e),t=i}return r}return Xm(this,r,e),r.ownerDocument=this,this.documentElement===null&&r.nodeType===Zi&&(this.documentElement=r),r},removeChild:function(r){var e=aP(this,r);return e===this.documentElement&&(this.documentElement=null),e},replaceChild:function(r,e){Xm(this,r,e,lP),r.ownerDocument=this,e&&this.removeChild(e),Ls(r)&&(this.documentElement=r)},importNode:function(r,e){return j$(this,r,e)},getElementById:function(r){var e=null;return Wm(this.documentElement,function(t){if(t.nodeType==Zi&&t.getAttribute("id")==r)return e=t,!0}),e},createElement:function(r){var e=new Ks(ci);e.ownerDocument=this,this.type==="html"&&(r=r.toLowerCase()),S$(this.contentType)&&(e.namespaceURI=Zn.HTML),e.nodeName=r,e.tagName=r,e.localName=r,e.childNodes=new Ar;var t=e.attributes=new $l;return t._ownerElement=e,e},createDocumentFragment:function(){var r=new Yl(ci);return r.ownerDocument=this,r.childNodes=new Ar,r},createTextNode:function(r){var e=new wf(ci);return e.ownerDocument=this,e.childNodes=new Ar,e.appendData(r),e},createComment:function(r){var e=new ey(ci);return e.ownerDocument=this,e.childNodes=new Ar,e.appendData(r),e},createCDATASection:function(r){if(r.indexOf("]]>")!==-1)throw new ke(ke.INVALID_CHARACTER_ERR,'data contains "]]>"');var e=new ty(ci);return e.ownerDocument=this,e.childNodes=new Ar,e.appendData(r),e},createProcessingInstruction:function(r,e){var t=new ny(ci);return t.ownerDocument=this,t.childNodes=new Ar,t.nodeName=t.target=r,t.nodeValue=t.data=e,t},createAttribute:function(r){if(!Lt.QName_exact.test(r))throw new ke(ke.INVALID_CHARACTER_ERR,'invalid character in name "'+r+'"');return this.type==="html"&&(r=r.toLowerCase()),this._createAttribute(r)},_createAttribute:function(r){var e=new Cc(ci);return e.ownerDocument=this,e.childNodes=new Ar,e.name=r,e.nodeName=r,e.localName=r,e.specified=!0,e},createEntityReference:function(r){if(!Lt.Name_exact.test(r))throw new ke(ke.INVALID_CHARACTER_ERR,'not a valid xml name "'+r+'"');if(this.type==="html")throw new ke("document is an html document",jr.NotSupportedError);var e=new iy(ci);return e.ownerDocument=this,e.childNodes=new Ar,e.nodeName=r,e},createElementNS:function(r,e){var t=EE(r,e),i=new Ks(ci),n=i.attributes=new $l;return i.childNodes=new Ar,i.ownerDocument=this,i.nodeName=e,i.tagName=e,i.namespaceURI=t[0],i.prefix=t[1],i.localName=t[2],n._ownerElement=i,i},createAttributeNS:function(r,e){var t=EE(r,e),i=new Cc(ci);return i.ownerDocument=this,i.childNodes=new Ar,i.nodeName=e,i.name=e,i.specified=!0,i.namespaceURI=t[0],i.prefix=t[1],i.localName=t[2],i}};pi(Hs,st);function Ks(r){gi(r),this._nsMap=Object.create(null)}Ks.prototype={nodeType:Zi,attributes:null,getQualifiedName:function(){return this.prefix?this.prefix+":"+this.localName:this.localName},_isInHTMLDocumentAndNamespace:function(){return this.ownerDocument.type==="html"&&this.namespaceURI===Zn.HTML},hasAttributes:function(){return!!(this.attributes&&this.attributes.length)},hasAttribute:function(r){return!!this.getAttributeNode(r)},getAttribute:function(r){var e=this.getAttributeNode(r);return e?e.value:null},getAttributeNode:function(r){return this._isInHTMLDocumentAndNamespace()&&(r=r.toLowerCase()),this.attributes.getNamedItem(r)},setAttribute:function(r,e){this._isInHTMLDocumentAndNamespace()&&(r=r.toLowerCase());var t=this.getAttributeNode(r);t?t.value=t.nodeValue=""+e:(t=this.ownerDocument._createAttribute(r),t.value=t.nodeValue=""+e,this.setAttributeNode(t))},removeAttribute:function(r){var e=this.getAttributeNode(r);e&&this.removeAttributeNode(e)},setAttributeNode:function(r){return this.attributes.setNamedItem(r)},setAttributeNodeNS:function(r){return this.attributes.setNamedItemNS(r)},removeAttributeNode:function(r){return this.attributes.removeNamedItem(r.nodeName)},removeAttributeNS:function(r,e){var t=this.getAttributeNodeNS(r,e);t&&this.removeAttributeNode(t)},hasAttributeNS:function(r,e){return this.getAttributeNodeNS(r,e)!=null},getAttributeNS:function(r,e){var t=this.getAttributeNodeNS(r,e);return t?t.value:null},setAttributeNS:function(r,e,t){var i=EE(r,e),n=i[2],s=this.getAttributeNodeNS(r,n);s?s.value=s.nodeValue=""+t:(s=this.ownerDocument.createAttributeNS(r,e),s.value=s.nodeValue=""+t,this.setAttributeNode(s))},getAttributeNodeNS:function(r,e){return this.attributes.getNamedItemNS(r,e)},getElementsByClassName:function(r){var e=zF(r);return new Wn(this,function(t){var i=[];return e.length>0&&Wm(t,function(n){if(n!==t&&n.nodeType===Zi){var s=n.getAttribute("class");if(s){var o=r===s;if(!o){var a=zF(s);o=e.every(U$(a))}o&&i.push(n)}}}),i})},getElementsByTagName:function(r){var e=(this.nodeType===zl?this:this.ownerDocument).type==="html",t=r.toLowerCase();return new Wn(this,function(i){var n=[];return Wm(i,function(s){if(!(s===i||s.nodeType!==Zi))if(r==="*")n.push(s);else{var o=s.getQualifiedName(),a=e&&s.namespaceURI===Zn.HTML?t:r;o===a&&n.push(s)}}),n})},getElementsByTagNameNS:function(r,e){return new Wn(this,function(t){var i=[];return Wm(t,function(n){n!==t&&n.nodeType===Zi&&(r==="*"||n.namespaceURI===r)&&(e==="*"||n.localName==e)&&i.push(n)}),i})}};Hs.prototype.getElementsByClassName=Ks.prototype.getElementsByClassName;Hs.prototype.getElementsByTagName=Ks.prototype.getElementsByTagName;Hs.prototype.getElementsByTagNameNS=Ks.prototype.getElementsByTagNameNS;pi(Ks,st);function Cc(r){gi(r),this.namespaceURI=null,this.prefix=null,this.ownerElement=null}Cc.prototype.nodeType=jl;pi(Cc,st);function ta(r){gi(r)}ta.prototype={data:"",substringData:function(r,e){return this.data.substring(r,r+e)},appendData:function(r){r=this.data+r,this.nodeValue=this.data=r,this.length=r.length},insertData:function(r,e){this.replaceData(r,0,e)},deleteData:function(r,e){this.replaceData(r,e,"")},replaceData:function(r,e,t){var i=this.data.substring(0,r),n=this.data.substring(r+e);t=i+t+n,this.nodeValue=this.data=t,this.length=t.length}};pi(ta,st);function wf(r){gi(r)}wf.prototype={nodeName:"#text",nodeType:If,splitText:function(r){var e=this.data,t=e.substring(r);e=e.substring(0,r),this.data=this.nodeValue=e,this.length=e.length;var i=this.ownerDocument.createTextNode(t);return this.parentNode&&this.parentNode.insertBefore(i,this.nextSibling),i}};pi(wf,ta);function ey(r){gi(r)}ey.prototype={nodeName:"#comment",nodeType:bE};pi(ey,ta);function ty(r){gi(r)}ty.prototype={nodeName:"#cdata-section",nodeType:ZF};pi(ty,wf);function ry(r){gi(r)}ry.prototype.nodeType=tP;pi(ry,st);function SE(r){gi(r)}SE.prototype.nodeType=N$;pi(SE,st);function DE(r){gi(r)}DE.prototype.nodeType=R$;pi(DE,st);function iy(r){gi(r)}iy.prototype.nodeType=eP;pi(iy,st);function Yl(r){gi(r)}Yl.prototype.nodeName="#document-fragment";Yl.prototype.nodeType=Zo;pi(Yl,st);function ny(r){gi(r)}ny.prototype.nodeType=BE;pi(ny,ta);function dP(){}dP.prototype.serializeToString=function(r,e){return uP.call(r,e)};st.prototype.toString=uP;function uP(r){var e;typeof r=="function"?e={requireWellFormed:!1,splitCDATASections:!0,nodeFilter:r}:r!=null?e={requireWellFormed:!!r.requireWellFormed,splitCDATASections:r.splitCDATASections!==!1,nodeFilter:r.nodeFilter||null}:e={requireWellFormed:!1,splitCDATASections:!0,nodeFilter:null};var t=[],i=this.nodeType===zl&&this.documentElement||this,n=i.prefix,s=i.namespaceURI;if(s&&n==null){var n=i.lookupPrefix(s);if(n==null)var o=[{namespace:s,prefix:null}]}return QE(this,t,o,e),t.join("")}function YF(r,e,t){var i=r.prefix||"",n=r.namespaceURI;if(!n||i==="xml"&&n===Zn.XML||n===Zn.XMLNS)return!1;for(var s=t.length;s--;){var o=t[s];if(o.prefix===i)return o.namespace!==n}return!0}function Ym(r,e,t,i){if(i&&!Lt.QName_exact.test(e))throw new ke('The attribute name "'+e+'" is not a valid XML QName',jr.InvalidStateError);r.push(" ",e,'="',t.replace(/[<>&"\t\n\r]/g,sP),'"')}function QE(r,e,t,i){t||(t=[]);var n=i.nodeFilter,s=i.requireWellFormed,o=i.splitCDATASections,a=r.nodeType===zl?r:r.ownerDocument,c=a.type==="html";Pr(r,{ns:t},{enter:function(l,d){var u=d.ns;if(n)if(l=n(l),l){if(typeof l=="string")return e.push(l),null}else return null;switch(l.nodeType){case Zi:var f=l.attributes,h=f.length,g=l.tagName,p=g;if(!c&&!l.prefix&&l.namespaceURI){for(var I,y=0;y<f.length;y++)if(f.item(y).name==="xmlns"){I=f.item(y).value;break}if(!I)for(var w=u.length-1;w>=0;w--){var C=u[w];if(C.prefix===""&&C.namespace===l.namespaceURI){I=C.namespace;break}}if(I!==l.namespaceURI)for(var w=u.length-1;w>=0;w--){var C=u[w];if(C.namespace===l.namespaceURI){C.prefix&&(p=C.prefix+":"+g);break}}}if(s&&!Lt.QName_exact.test(p))throw new ke('The element name "'+p+'" is not a valid XML QName',jr.InvalidStateError);e.push("<",p);for(var b=u.slice(),x=0;x<h;x++){var _=f.item(x);_.prefix=="xmlns"?b.push({prefix:_.localName,namespace:_.value}):_.nodeName=="xmlns"&&b.push({prefix:"",namespace:_.value})}for(var x=0;x<h;x++){var _=f.item(x);if(YF(_,c,b)){var R=_.prefix||"",U=_.namespaceURI;Ym(e,R?"xmlns:"+R:"xmlns",U,s),b.push({prefix:R,namespace:U})}var T=n?n(_):_;T&&(typeof T=="string"?e.push(T):Ym(e,T.name,T.value,s))}if(g===p&&YF(l,c,b)){var D=l.prefix||"",U=l.namespaceURI;Ym(e,D?"xmlns:"+D:"xmlns",U,s),b.push({prefix:D,namespace:U})}var B=!l.firstChild;if(B&&(c||l.namespaceURI===Zn.HTML)&&(B=_$(g)),B)return e.push("/>"),null;if(e.push(">"),c&&Q$(g)){for(var Q=l.firstChild;Q;)Q.data?e.push(Q.data):QE(Q,e,b.slice(),i),Q=Q.nextSibling;return e.push("</",p,">"),null}return{ns:b,tag:p};case zl:case Zo:if(s&&l.nodeType===zl&&l.documentElement==null)throw new ke("The Document has no documentElement",jr.InvalidStateError);return{ns:u};case jl:return Ym(e,l.name,l.value,s),null;case If:if(s&&Lt.InvalidChar.test(l.data))throw new ke("The Text node data contains characters outside the XML Char production",jr.InvalidStateError);return e.push(l.data.replace(/[<&>]/g,sP)),null;case ZF:if(s&&l.data.indexOf("]]>")!==-1)throw new ke('The CDATASection data contains "]]>"',jr.InvalidStateError);return o?e.push(Lt.CDATA_START,l.data.replace(/]]>/g,"]]]]><![CDATA[>"),Lt.CDATA_END):e.push(Lt.CDATA_START,l.data,Lt.CDATA_END),null;case bE:if(s){if(Lt.InvalidChar.test(l.data))throw new ke("The comment node data contains characters outside the XML Char production",jr.InvalidStateError);if(l.data.indexOf("--")!==-1||l.data[l.data.length-1]==="-")throw new ke('The comment node data contains "--" or ends with "-"',jr.InvalidStateError)}return e.push(Lt.COMMENT_START,l.data,Lt.COMMENT_END),null;case tP:var v=l.publicId,E=l.systemId;if(s){if(!Lt.Name_exact.test(l.name))throw new ke('The doctype name "'+l.name+'" is not a valid XML Name',jr.InvalidStateError);if(v&&!Lt.PubidLiteral_match.test(v))throw new ke("DocumentType publicId is not a valid PubidLiteral",jr.InvalidStateError);if(E&&E!=="."&&!Lt.SystemLiteral_match.test(E))throw new ke("DocumentType systemId is not a valid SystemLiteral",jr.InvalidStateError);if(l.internalSubset&&l.internalSubset.indexOf("]>")!==-1)throw new ke('DocumentType internalSubset contains "]>"',jr.InvalidStateError)}return e.push(Lt.DOCTYPE_DECL_START," ",l.name),v?(e.push(" ",Lt.PUBLIC," ",v),E&&E!=="."&&e.push(" ",E)):E&&E!=="."&&e.push(" ",Lt.SYSTEM," ",E),l.internalSubset&&e.push(" [",l.internalSubset,"]"),e.push(">"),null;case BE:if(s){if(!Lt.NCName_exact.test(l.target)||l.target.toLowerCase()==="xml")throw new ke('The processing instruction target "'+l.target+'" is not a valid XML NCName or is reserved',jr.InvalidStateError);if(Lt.InvalidChar.test(l.data))throw new ke("The ProcessingInstruction data contains characters outside the XML Char production",jr.InvalidStateError);if(l.data.indexOf("?>")!==-1)throw new ke('The ProcessingInstruction data contains "?>"',jr.InvalidStateError)}return e.push("<?",l.target," ",l.data,"?>"),null;case eP:if(s&&!Lt.Name_exact.test(l.nodeName))throw new ke('The entity reference name "'+l.nodeName+'" is not a valid XML Name',jr.InvalidStateError);return e.push("&",l.nodeName,";"),null;default:return e.push("??",l.nodeName),null}},exit:function(l,d){d&&d.tag&&e.push("</",d.tag,">")}})}function j$(r,e,t){var i;return Pr(e,null,{enter:function(n,s){var o=n.cloneNode(!1);o.ownerDocument=r,o.parentNode=null,s===null?i=o:s.appendChild(o);var a=n.nodeType===jl||t;return a?o:null}}),i}function fP(r,e,t){var i;return Pr(e,null,{enter:function(n,s){var o=new n.constructor(ci);for(var a in n)if(Jl(n,a)){var c=n[a];typeof c!="object"&&c!=o[a]&&(o[a]=c)}n.childNodes&&(o.childNodes=new Ar),o.ownerDocument=r;var l=t;switch(o.nodeType){case Zi:var d=n.attributes,u=o.attributes=new $l,f=d.length;u._ownerElement=o;for(var h=0;h<f;h++)o.setAttributeNode(fP(r,d.item(h),!0));break;case jl:l=!0}return s!==null?s.appendChild(o):i=o,l?o:null}}),i}function AP(r,e,t){r[e]=t}function CE(r){for(var e=[],t=r.firstChild;t;)t.nodeType===Zi&&e.push(t),t=t.nextSibling;return e}try{Object.defineProperty&&(Object.defineProperty(Wn.prototype,"length",{get:function(){return Zm(this),this.$$length}}),Object.defineProperty(st.prototype,"textContent",{get:function(){if(this.nodeType===Zi||this.nodeType===Zo){var r=[];return Pr(this,null,{enter:function(e){if(e.nodeType===Zi||e.nodeType===Zo)return!0;if(e.nodeType===BE||e.nodeType===bE)return null;r.push(e.nodeValue)}}),r.join("")}return this.nodeValue},set:function(r){switch(this.nodeType){case Zi:case Zo:for(;this.firstChild;)this.removeChild(this.firstChild);(r||String(r))&&this.appendChild(this.ownerDocument.createTextNode(r));break;default:this.data=r,this.value=r,this.nodeValue=r}}}),Object.defineProperty(ta.prototype,"data",{get:function(){return this._data!=null?this._data:""},set:function(r){this._data=r,this.length=typeof r=="string"?r.length:0}}),Object.defineProperty(ta.prototype,"nodeValue",{get:function(){return this.data},set:function(r){this.data=r},enumerable:!0,configurable:!0}),Object.defineProperty(Ks.prototype,"children",{get:function(){return new Wn(this,CE)}}),Object.defineProperty(Hs.prototype,"children",{get:function(){return new Wn(this,CE)}}),Object.defineProperty(Yl.prototype,"children",{get:function(){return new Wn(this,CE)}}),AP=function(r,e,t){r["$$"+e]=t})}catch{}Ht._updateLiveList=Zm;Ht.Attr=Cc;Ht.CDATASection=ty;Ht.CharacterData=ta;Ht.Comment=ey;Ht.Document=Hs;Ht.DocumentFragment=Yl;Ht.DocumentType=ry;Ht.DOMImplementation=nP;Ht.Element=Ks;Ht.Entity=DE;Ht.EntityReference=iy;Ht.LiveNodeList=Wn;Ht.NamedNodeMap=$l;Ht.Node=st;Ht.NodeList=Ar;Ht.Notation=SE;Ht.Text=wf;Ht.ProcessingInstruction=ny;Ht.walkDOM=Pr;Ht.XMLSerializer=dP});var gP=oe(xf=>{"use strict";var hP=xc().freeze;xf.XML_ENTITIES=hP({amp:"&",apos:"'",gt:">",lt:"<",quot:'"'});xf.HTML_ENTITIES=hP({Aacute:"\xC1",aacute:"\xE1",Abreve:"\u0102",abreve:"\u0103",ac:"\u223E",acd:"\u223F",acE:"\u223E\u0333",Acirc:"\xC2",acirc:"\xE2",acute:"\xB4",Acy:"\u0410",acy:"\u0430",AElig:"\xC6",aelig:"\xE6",af:"\u2061",Afr:"\u{1D504}",afr:"\u{1D51E}",Agrave:"\xC0",agrave:"\xE0",alefsym:"\u2135",aleph:"\u2135",Alpha:"\u0391",alpha:"\u03B1",Amacr:"\u0100",amacr:"\u0101",amalg:"\u2A3F",AMP:"&",amp:"&",And:"\u2A53",and:"\u2227",andand:"\u2A55",andd:"\u2A5C",andslope:"\u2A58",andv:"\u2A5A",ang:"\u2220",ange:"\u29A4",angle:"\u2220",angmsd:"\u2221",angmsdaa:"\u29A8",angmsdab:"\u29A9",angmsdac:"\u29AA",angmsdad:"\u29AB",angmsdae:"\u29AC",angmsdaf:"\u29AD",angmsdag:"\u29AE",angmsdah:"\u29AF",angrt:"\u221F",angrtvb:"\u22BE",angrtvbd:"\u299D",angsph:"\u2222",angst:"\xC5",angzarr:"\u237C",Aogon:"\u0104",aogon:"\u0105",Aopf:"\u{1D538}",aopf:"\u{1D552}",ap:"\u2248",apacir:"\u2A6F",apE:"\u2A70",ape:"\u224A",apid:"\u224B",apos:"'",ApplyFunction:"\u2061",approx:"\u2248",approxeq:"\u224A",Aring:"\xC5",aring:"\xE5",Ascr:"\u{1D49C}",ascr:"\u{1D4B6}",Assign:"\u2254",ast:"*",asymp:"\u2248",asympeq:"\u224D",Atilde:"\xC3",atilde:"\xE3",Auml:"\xC4",auml:"\xE4",awconint:"\u2233",awint:"\u2A11",backcong:"\u224C",backepsilon:"\u03F6",backprime:"\u2035",backsim:"\u223D",backsimeq:"\u22CD",Backslash:"\u2216",Barv:"\u2AE7",barvee:"\u22BD",Barwed:"\u2306",barwed:"\u2305",barwedge:"\u2305",bbrk:"\u23B5",bbrktbrk:"\u23B6",bcong:"\u224C",Bcy:"\u0411",bcy:"\u0431",bdquo:"\u201E",becaus:"\u2235",Because:"\u2235",because:"\u2235",bemptyv:"\u29B0",bepsi:"\u03F6",bernou:"\u212C",Bernoullis:"\u212C",Beta:"\u0392",beta:"\u03B2",beth:"\u2136",between:"\u226C",Bfr:"\u{1D505}",bfr:"\u{1D51F}",bigcap:"\u22C2",bigcirc:"\u25EF",bigcup:"\u22C3",bigodot:"\u2A00",bigoplus:"\u2A01",bigotimes:"\u2A02",bigsqcup:"\u2A06",bigstar:"\u2605",bigtriangledown:"\u25BD",bigtriangleup:"\u25B3",biguplus:"\u2A04",bigvee:"\u22C1",bigwedge:"\u22C0",bkarow:"\u290D",blacklozenge:"\u29EB",blacksquare:"\u25AA",blacktriangle:"\u25B4",blacktriangledown:"\u25BE",blacktriangleleft:"\u25C2",blacktriangleright:"\u25B8",blank:"\u2423",blk12:"\u2592",blk14:"\u2591",blk34:"\u2593",block:"\u2588",bne:"=\u20E5",bnequiv:"\u2261\u20E5",bNot:"\u2AED",bnot:"\u2310",Bopf:"\u{1D539}",bopf:"\u{1D553}",bot:"\u22A5",bottom:"\u22A5",bowtie:"\u22C8",boxbox:"\u29C9",boxDL:"\u2557",boxDl:"\u2556",boxdL:"\u2555",boxdl:"\u2510",boxDR:"\u2554",boxDr:"\u2553",boxdR:"\u2552",boxdr:"\u250C",boxH:"\u2550",boxh:"\u2500",boxHD:"\u2566",boxHd:"\u2564",boxhD:"\u2565",boxhd:"\u252C",boxHU:"\u2569",boxHu:"\u2567",boxhU:"\u2568",boxhu:"\u2534",boxminus:"\u229F",boxplus:"\u229E",boxtimes:"\u22A0",boxUL:"\u255D",boxUl:"\u255C",boxuL:"\u255B",boxul:"\u2518",boxUR:"\u255A",boxUr:"\u2559",boxuR:"\u2558",boxur:"\u2514",boxV:"\u2551",boxv:"\u2502",boxVH:"\u256C",boxVh:"\u256B",boxvH:"\u256A",boxvh:"\u253C",boxVL:"\u2563",boxVl:"\u2562",boxvL:"\u2561",boxvl:"\u2524",boxVR:"\u2560",boxVr:"\u255F",boxvR:"\u255E",boxvr:"\u251C",bprime:"\u2035",Breve:"\u02D8",breve:"\u02D8",brvbar:"\xA6",Bscr:"\u212C",bscr:"\u{1D4B7}",bsemi:"\u204F",bsim:"\u223D",bsime:"\u22CD",bsol:"\\",bsolb:"\u29C5",bsolhsub:"\u27C8",bull:"\u2022",bullet:"\u2022",bump:"\u224E",bumpE:"\u2AAE",bumpe:"\u224F",Bumpeq:"\u224E",bumpeq:"\u224F",Cacute:"\u0106",cacute:"\u0107",Cap:"\u22D2",cap:"\u2229",capand:"\u2A44",capbrcup:"\u2A49",capcap:"\u2A4B",capcup:"\u2A47",capdot:"\u2A40",CapitalDifferentialD:"\u2145",caps:"\u2229\uFE00",caret:"\u2041",caron:"\u02C7",Cayleys:"\u212D",ccaps:"\u2A4D",Ccaron:"\u010C",ccaron:"\u010D",Ccedil:"\xC7",ccedil:"\xE7",Ccirc:"\u0108",ccirc:"\u0109",Cconint:"\u2230",ccups:"\u2A4C",ccupssm:"\u2A50",Cdot:"\u010A",cdot:"\u010B",cedil:"\xB8",Cedilla:"\xB8",cemptyv:"\u29B2",cent:"\xA2",CenterDot:"\xB7",centerdot:"\xB7",Cfr:"\u212D",cfr:"\u{1D520}",CHcy:"\u0427",chcy:"\u0447",check:"\u2713",checkmark:"\u2713",Chi:"\u03A7",chi:"\u03C7",cir:"\u25CB",circ:"\u02C6",circeq:"\u2257",circlearrowleft:"\u21BA",circlearrowright:"\u21BB",circledast:"\u229B",circledcirc:"\u229A",circleddash:"\u229D",CircleDot:"\u2299",circledR:"\xAE",circledS:"\u24C8",CircleMinus:"\u2296",CirclePlus:"\u2295",CircleTimes:"\u2297",cirE:"\u29C3",cire:"\u2257",cirfnint:"\u2A10",cirmid:"\u2AEF",cirscir:"\u29C2",ClockwiseContourIntegral:"\u2232",CloseCurlyDoubleQuote:"\u201D",CloseCurlyQuote:"\u2019",clubs:"\u2663",clubsuit:"\u2663",Colon:"\u2237",colon:":",Colone:"\u2A74",colone:"\u2254",coloneq:"\u2254",comma:",",commat:"@",comp:"\u2201",compfn:"\u2218",complement:"\u2201",complexes:"\u2102",cong:"\u2245",congdot:"\u2A6D",Congruent:"\u2261",Conint:"\u222F",conint:"\u222E",ContourIntegral:"\u222E",Copf:"\u2102",copf:"\u{1D554}",coprod:"\u2210",Coproduct:"\u2210",COPY:"\xA9",copy:"\xA9",copysr:"\u2117",CounterClockwiseContourIntegral:"\u2233",crarr:"\u21B5",Cross:"\u2A2F",cross:"\u2717",Cscr:"\u{1D49E}",cscr:"\u{1D4B8}",csub:"\u2ACF",csube:"\u2AD1",csup:"\u2AD0",csupe:"\u2AD2",ctdot:"\u22EF",cudarrl:"\u2938",cudarrr:"\u2935",cuepr:"\u22DE",cuesc:"\u22DF",cularr:"\u21B6",cularrp:"\u293D",Cup:"\u22D3",cup:"\u222A",cupbrcap:"\u2A48",CupCap:"\u224D",cupcap:"\u2A46",cupcup:"\u2A4A",cupdot:"\u228D",cupor:"\u2A45",cups:"\u222A\uFE00",curarr:"\u21B7",curarrm:"\u293C",curlyeqprec:"\u22DE",curlyeqsucc:"\u22DF",curlyvee:"\u22CE",curlywedge:"\u22CF",curren:"\xA4",curvearrowleft:"\u21B6",curvearrowright:"\u21B7",cuvee:"\u22CE",cuwed:"\u22CF",cwconint:"\u2232",cwint:"\u2231",cylcty:"\u232D",Dagger:"\u2021",dagger:"\u2020",daleth:"\u2138",Darr:"\u21A1",dArr:"\u21D3",darr:"\u2193",dash:"\u2010",Dashv:"\u2AE4",dashv:"\u22A3",dbkarow:"\u290F",dblac:"\u02DD",Dcaron:"\u010E",dcaron:"\u010F",Dcy:"\u0414",dcy:"\u0434",DD:"\u2145",dd:"\u2146",ddagger:"\u2021",ddarr:"\u21CA",DDotrahd:"\u2911",ddotseq:"\u2A77",deg:"\xB0",Del:"\u2207",Delta:"\u0394",delta:"\u03B4",demptyv:"\u29B1",dfisht:"\u297F",Dfr:"\u{1D507}",dfr:"\u{1D521}",dHar:"\u2965",dharl:"\u21C3",dharr:"\u21C2",DiacriticalAcute:"\xB4",DiacriticalDot:"\u02D9",DiacriticalDoubleAcute:"\u02DD",DiacriticalGrave:"`",DiacriticalTilde:"\u02DC",diam:"\u22C4",Diamond:"\u22C4",diamond:"\u22C4",diamondsuit:"\u2666",diams:"\u2666",die:"\xA8",DifferentialD:"\u2146",digamma:"\u03DD",disin:"\u22F2",div:"\xF7",divide:"\xF7",divideontimes:"\u22C7",divonx:"\u22C7",DJcy:"\u0402",djcy:"\u0452",dlcorn:"\u231E",dlcrop:"\u230D",dollar:"$",Dopf:"\u{1D53B}",dopf:"\u{1D555}",Dot:"\xA8",dot:"\u02D9",DotDot:"\u20DC",doteq:"\u2250",doteqdot:"\u2251",DotEqual:"\u2250",dotminus:"\u2238",dotplus:"\u2214",dotsquare:"\u22A1",doublebarwedge:"\u2306",DoubleContourIntegral:"\u222F",DoubleDot:"\xA8",DoubleDownArrow:"\u21D3",DoubleLeftArrow:"\u21D0",DoubleLeftRightArrow:"\u21D4",DoubleLeftTee:"\u2AE4",DoubleLongLeftArrow:"\u27F8",DoubleLongLeftRightArrow:"\u27FA",DoubleLongRightArrow:"\u27F9",DoubleRightArrow:"\u21D2",DoubleRightTee:"\u22A8",DoubleUpArrow:"\u21D1",DoubleUpDownArrow:"\u21D5",DoubleVerticalBar:"\u2225",DownArrow:"\u2193",Downarrow:"\u21D3",downarrow:"\u2193",DownArrowBar:"\u2913",DownArrowUpArrow:"\u21F5",DownBreve:"\u0311",downdownarrows:"\u21CA",downharpoonleft:"\u21C3",downharpoonright:"\u21C2",DownLeftRightVector:"\u2950",DownLeftTeeVector:"\u295E",DownLeftVector:"\u21BD",DownLeftVectorBar:"\u2956",DownRightTeeVector:"\u295F",DownRightVector:"\u21C1",DownRightVectorBar:"\u2957",DownTee:"\u22A4",DownTeeArrow:"\u21A7",drbkarow:"\u2910",drcorn:"\u231F",drcrop:"\u230C",Dscr:"\u{1D49F}",dscr:"\u{1D4B9}",DScy:"\u0405",dscy:"\u0455",dsol:"\u29F6",Dstrok:"\u0110",dstrok:"\u0111",dtdot:"\u22F1",dtri:"\u25BF",dtrif:"\u25BE",duarr:"\u21F5",duhar:"\u296F",dwangle:"\u29A6",DZcy:"\u040F",dzcy:"\u045F",dzigrarr:"\u27FF",Eacute:"\xC9",eacute:"\xE9",easter:"\u2A6E",Ecaron:"\u011A",ecaron:"\u011B",ecir:"\u2256",Ecirc:"\xCA",ecirc:"\xEA",ecolon:"\u2255",Ecy:"\u042D",ecy:"\u044D",eDDot:"\u2A77",Edot:"\u0116",eDot:"\u2251",edot:"\u0117",ee:"\u2147",efDot:"\u2252",Efr:"\u{1D508}",efr:"\u{1D522}",eg:"\u2A9A",Egrave:"\xC8",egrave:"\xE8",egs:"\u2A96",egsdot:"\u2A98",el:"\u2A99",Element:"\u2208",elinters:"\u23E7",ell:"\u2113",els:"\u2A95",elsdot:"\u2A97",Emacr:"\u0112",emacr:"\u0113",empty:"\u2205",emptyset:"\u2205",EmptySmallSquare:"\u25FB",emptyv:"\u2205",EmptyVerySmallSquare:"\u25AB",emsp:"\u2003",emsp13:"\u2004",emsp14:"\u2005",ENG:"\u014A",eng:"\u014B",ensp:"\u2002",Eogon:"\u0118",eogon:"\u0119",Eopf:"\u{1D53C}",eopf:"\u{1D556}",epar:"\u22D5",eparsl:"\u29E3",eplus:"\u2A71",epsi:"\u03B5",Epsilon:"\u0395",epsilon:"\u03B5",epsiv:"\u03F5",eqcirc:"\u2256",eqcolon:"\u2255",eqsim:"\u2242",eqslantgtr:"\u2A96",eqslantless:"\u2A95",Equal:"\u2A75",equals:"=",EqualTilde:"\u2242",equest:"\u225F",Equilibrium:"\u21CC",equiv:"\u2261",equivDD:"\u2A78",eqvparsl:"\u29E5",erarr:"\u2971",erDot:"\u2253",Escr:"\u2130",escr:"\u212F",esdot:"\u2250",Esim:"\u2A73",esim:"\u2242",Eta:"\u0397",eta:"\u03B7",ETH:"\xD0",eth:"\xF0",Euml:"\xCB",euml:"\xEB",euro:"\u20AC",excl:"!",exist:"\u2203",Exists:"\u2203",expectation:"\u2130",ExponentialE:"\u2147",exponentiale:"\u2147",fallingdotseq:"\u2252",Fcy:"\u0424",fcy:"\u0444",female:"\u2640",ffilig:"\uFB03",fflig:"\uFB00",ffllig:"\uFB04",Ffr:"\u{1D509}",ffr:"\u{1D523}",filig:"\uFB01",FilledSmallSquare:"\u25FC",FilledVerySmallSquare:"\u25AA",fjlig:"fj",flat:"\u266D",fllig:"\uFB02",fltns:"\u25B1",fnof:"\u0192",Fopf:"\u{1D53D}",fopf:"\u{1D557}",ForAll:"\u2200",forall:"\u2200",fork:"\u22D4",forkv:"\u2AD9",Fouriertrf:"\u2131",fpartint:"\u2A0D",frac12:"\xBD",frac13:"\u2153",frac14:"\xBC",frac15:"\u2155",frac16:"\u2159",frac18:"\u215B",frac23:"\u2154",frac25:"\u2156",frac34:"\xBE",frac35:"\u2157",frac38:"\u215C",frac45:"\u2158",frac56:"\u215A",frac58:"\u215D",frac78:"\u215E",frasl:"\u2044",frown:"\u2322",Fscr:"\u2131",fscr:"\u{1D4BB}",gacute:"\u01F5",Gamma:"\u0393",gamma:"\u03B3",Gammad:"\u03DC",gammad:"\u03DD",gap:"\u2A86",Gbreve:"\u011E",gbreve:"\u011F",Gcedil:"\u0122",Gcirc:"\u011C",gcirc:"\u011D",Gcy:"\u0413",gcy:"\u0433",Gdot:"\u0120",gdot:"\u0121",gE:"\u2267",ge:"\u2265",gEl:"\u2A8C",gel:"\u22DB",geq:"\u2265",geqq:"\u2267",geqslant:"\u2A7E",ges:"\u2A7E",gescc:"\u2AA9",gesdot:"\u2A80",gesdoto:"\u2A82",gesdotol:"\u2A84",gesl:"\u22DB\uFE00",gesles:"\u2A94",Gfr:"\u{1D50A}",gfr:"\u{1D524}",Gg:"\u22D9",gg:"\u226B",ggg:"\u22D9",gimel:"\u2137",GJcy:"\u0403",gjcy:"\u0453",gl:"\u2277",gla:"\u2AA5",glE:"\u2A92",glj:"\u2AA4",gnap:"\u2A8A",gnapprox:"\u2A8A",gnE:"\u2269",gne:"\u2A88",gneq:"\u2A88",gneqq:"\u2269",gnsim:"\u22E7",Gopf:"\u{1D53E}",gopf:"\u{1D558}",grave:"`",GreaterEqual:"\u2265",GreaterEqualLess:"\u22DB",GreaterFullEqual:"\u2267",GreaterGreater:"\u2AA2",GreaterLess:"\u2277",GreaterSlantEqual:"\u2A7E",GreaterTilde:"\u2273",Gscr:"\u{1D4A2}",gscr:"\u210A",gsim:"\u2273",gsime:"\u2A8E",gsiml:"\u2A90",Gt:"\u226B",GT:">",gt:">",gtcc:"\u2AA7",gtcir:"\u2A7A",gtdot:"\u22D7",gtlPar:"\u2995",gtquest:"\u2A7C",gtrapprox:"\u2A86",gtrarr:"\u2978",gtrdot:"\u22D7",gtreqless:"\u22DB",gtreqqless:"\u2A8C",gtrless:"\u2277",gtrsim:"\u2273",gvertneqq:"\u2269\uFE00",gvnE:"\u2269\uFE00",Hacek:"\u02C7",hairsp:"\u200A",half:"\xBD",hamilt:"\u210B",HARDcy:"\u042A",hardcy:"\u044A",hArr:"\u21D4",harr:"\u2194",harrcir:"\u2948",harrw:"\u21AD",Hat:"^",hbar:"\u210F",Hcirc:"\u0124",hcirc:"\u0125",hearts:"\u2665",heartsuit:"\u2665",hellip:"\u2026",hercon:"\u22B9",Hfr:"\u210C",hfr:"\u{1D525}",HilbertSpace:"\u210B",hksearow:"\u2925",hkswarow:"\u2926",hoarr:"\u21FF",homtht:"\u223B",hookleftarrow:"\u21A9",hookrightarrow:"\u21AA",Hopf:"\u210D",hopf:"\u{1D559}",horbar:"\u2015",HorizontalLine:"\u2500",Hscr:"\u210B",hscr:"\u{1D4BD}",hslash:"\u210F",Hstrok:"\u0126",hstrok:"\u0127",HumpDownHump:"\u224E",HumpEqual:"\u224F",hybull:"\u2043",hyphen:"\u2010",Iacute:"\xCD",iacute:"\xED",ic:"\u2063",Icirc:"\xCE",icirc:"\xEE",Icy:"\u0418",icy:"\u0438",Idot:"\u0130",IEcy:"\u0415",iecy:"\u0435",iexcl:"\xA1",iff:"\u21D4",Ifr:"\u2111",ifr:"\u{1D526}",Igrave:"\xCC",igrave:"\xEC",ii:"\u2148",iiiint:"\u2A0C",iiint:"\u222D",iinfin:"\u29DC",iiota:"\u2129",IJlig:"\u0132",ijlig:"\u0133",Im:"\u2111",Imacr:"\u012A",imacr:"\u012B",image:"\u2111",ImaginaryI:"\u2148",imagline:"\u2110",imagpart:"\u2111",imath:"\u0131",imof:"\u22B7",imped:"\u01B5",Implies:"\u21D2",in:"\u2208",incare:"\u2105",infin:"\u221E",infintie:"\u29DD",inodot:"\u0131",Int:"\u222C",int:"\u222B",intcal:"\u22BA",integers:"\u2124",Integral:"\u222B",intercal:"\u22BA",Intersection:"\u22C2",intlarhk:"\u2A17",intprod:"\u2A3C",InvisibleComma:"\u2063",InvisibleTimes:"\u2062",IOcy:"\u0401",iocy:"\u0451",Iogon:"\u012E",iogon:"\u012F",Iopf:"\u{1D540}",iopf:"\u{1D55A}",Iota:"\u0399",iota:"\u03B9",iprod:"\u2A3C",iquest:"\xBF",Iscr:"\u2110",iscr:"\u{1D4BE}",isin:"\u2208",isindot:"\u22F5",isinE:"\u22F9",isins:"\u22F4",isinsv:"\u22F3",isinv:"\u2208",it:"\u2062",Itilde:"\u0128",itilde:"\u0129",Iukcy:"\u0406",iukcy:"\u0456",Iuml:"\xCF",iuml:"\xEF",Jcirc:"\u0134",jcirc:"\u0135",Jcy:"\u0419",jcy:"\u0439",Jfr:"\u{1D50D}",jfr:"\u{1D527}",jmath:"\u0237",Jopf:"\u{1D541}",jopf:"\u{1D55B}",Jscr:"\u{1D4A5}",jscr:"\u{1D4BF}",Jsercy:"\u0408",jsercy:"\u0458",Jukcy:"\u0404",jukcy:"\u0454",Kappa:"\u039A",kappa:"\u03BA",kappav:"\u03F0",Kcedil:"\u0136",kcedil:"\u0137",Kcy:"\u041A",kcy:"\u043A",Kfr:"\u{1D50E}",kfr:"\u{1D528}",kgreen:"\u0138",KHcy:"\u0425",khcy:"\u0445",KJcy:"\u040C",kjcy:"\u045C",Kopf:"\u{1D542}",kopf:"\u{1D55C}",Kscr:"\u{1D4A6}",kscr:"\u{1D4C0}",lAarr:"\u21DA",Lacute:"\u0139",lacute:"\u013A",laemptyv:"\u29B4",lagran:"\u2112",Lambda:"\u039B",lambda:"\u03BB",Lang:"\u27EA",lang:"\u27E8",langd:"\u2991",langle:"\u27E8",lap:"\u2A85",Laplacetrf:"\u2112",laquo:"\xAB",Larr:"\u219E",lArr:"\u21D0",larr:"\u2190",larrb:"\u21E4",larrbfs:"\u291F",larrfs:"\u291D",larrhk:"\u21A9",larrlp:"\u21AB",larrpl:"\u2939",larrsim:"\u2973",larrtl:"\u21A2",lat:"\u2AAB",lAtail:"\u291B",latail:"\u2919",late:"\u2AAD",lates:"\u2AAD\uFE00",lBarr:"\u290E",lbarr:"\u290C",lbbrk:"\u2772",lbrace:"{",lbrack:"[",lbrke:"\u298B",lbrksld:"\u298F",lbrkslu:"\u298D",Lcaron:"\u013D",lcaron:"\u013E",Lcedil:"\u013B",lcedil:"\u013C",lceil:"\u2308",lcub:"{",Lcy:"\u041B",lcy:"\u043B",ldca:"\u2936",ldquo:"\u201C",ldquor:"\u201E",ldrdhar:"\u2967",ldrushar:"\u294B",ldsh:"\u21B2",lE:"\u2266",le:"\u2264",LeftAngleBracket:"\u27E8",LeftArrow:"\u2190",Leftarrow:"\u21D0",leftarrow:"\u2190",LeftArrowBar:"\u21E4",LeftArrowRightArrow:"\u21C6",leftarrowtail:"\u21A2",LeftCeiling:"\u2308",LeftDoubleBracket:"\u27E6",LeftDownTeeVector:"\u2961",LeftDownVector:"\u21C3",LeftDownVectorBar:"\u2959",LeftFloor:"\u230A",leftharpoondown:"\u21BD",leftharpoonup:"\u21BC",leftleftarrows:"\u21C7",LeftRightArrow:"\u2194",Leftrightarrow:"\u21D4",leftrightarrow:"\u2194",leftrightarrows:"\u21C6",leftrightharpoons:"\u21CB",leftrightsquigarrow:"\u21AD",LeftRightVector:"\u294E",LeftTee:"\u22A3",LeftTeeArrow:"\u21A4",LeftTeeVector:"\u295A",leftthreetimes:"\u22CB",LeftTriangle:"\u22B2",LeftTriangleBar:"\u29CF",LeftTriangleEqual:"\u22B4",LeftUpDownVector:"\u2951",LeftUpTeeVector:"\u2960",LeftUpVector:"\u21BF",LeftUpVectorBar:"\u2958",LeftVector:"\u21BC",LeftVectorBar:"\u2952",lEg:"\u2A8B",leg:"\u22DA",leq:"\u2264",leqq:"\u2266",leqslant:"\u2A7D",les:"\u2A7D",lescc:"\u2AA8",lesdot:"\u2A7F",lesdoto:"\u2A81",lesdotor:"\u2A83",lesg:"\u22DA\uFE00",lesges:"\u2A93",lessapprox:"\u2A85",lessdot:"\u22D6",lesseqgtr:"\u22DA",lesseqqgtr:"\u2A8B",LessEqualGreater:"\u22DA",LessFullEqual:"\u2266",LessGreater:"\u2276",lessgtr:"\u2276",LessLess:"\u2AA1",lesssim:"\u2272",LessSlantEqual:"\u2A7D",LessTilde:"\u2272",lfisht:"\u297C",lfloor:"\u230A",Lfr:"\u{1D50F}",lfr:"\u{1D529}",lg:"\u2276",lgE:"\u2A91",lHar:"\u2962",lhard:"\u21BD",lharu:"\u21BC",lharul:"\u296A",lhblk:"\u2584",LJcy:"\u0409",ljcy:"\u0459",Ll:"\u22D8",ll:"\u226A",llarr:"\u21C7",llcorner:"\u231E",Lleftarrow:"\u21DA",llhard:"\u296B",lltri:"\u25FA",Lmidot:"\u013F",lmidot:"\u0140",lmoust:"\u23B0",lmoustache:"\u23B0",lnap:"\u2A89",lnapprox:"\u2A89",lnE:"\u2268",lne:"\u2A87",lneq:"\u2A87",lneqq:"\u2268",lnsim:"\u22E6",loang:"\u27EC",loarr:"\u21FD",lobrk:"\u27E6",LongLeftArrow:"\u27F5",Longleftarrow:"\u27F8",longleftarrow:"\u27F5",LongLeftRightArrow:"\u27F7",Longleftrightarrow:"\u27FA",longleftrightarrow:"\u27F7",longmapsto:"\u27FC",LongRightArrow:"\u27F6",Longrightarrow:"\u27F9",longrightarrow:"\u27F6",looparrowleft:"\u21AB",looparrowright:"\u21AC",lopar:"\u2985",Lopf:"\u{1D543}",lopf:"\u{1D55D}",loplus:"\u2A2D",lotimes:"\u2A34",lowast:"\u2217",lowbar:"_",LowerLeftArrow:"\u2199",LowerRightArrow:"\u2198",loz:"\u25CA",lozenge:"\u25CA",lozf:"\u29EB",lpar:"(",lparlt:"\u2993",lrarr:"\u21C6",lrcorner:"\u231F",lrhar:"\u21CB",lrhard:"\u296D",lrm:"\u200E",lrtri:"\u22BF",lsaquo:"\u2039",Lscr:"\u2112",lscr:"\u{1D4C1}",Lsh:"\u21B0",lsh:"\u21B0",lsim:"\u2272",lsime:"\u2A8D",lsimg:"\u2A8F",lsqb:"[",lsquo:"\u2018",lsquor:"\u201A",Lstrok:"\u0141",lstrok:"\u0142",Lt:"\u226A",LT:"<",lt:"<",ltcc:"\u2AA6",ltcir:"\u2A79",ltdot:"\u22D6",lthree:"\u22CB",ltimes:"\u22C9",ltlarr:"\u2976",ltquest:"\u2A7B",ltri:"\u25C3",ltrie:"\u22B4",ltrif:"\u25C2",ltrPar:"\u2996",lurdshar:"\u294A",luruhar:"\u2966",lvertneqq:"\u2268\uFE00",lvnE:"\u2268\uFE00",macr:"\xAF",male:"\u2642",malt:"\u2720",maltese:"\u2720",Map:"\u2905",map:"\u21A6",mapsto:"\u21A6",mapstodown:"\u21A7",mapstoleft:"\u21A4",mapstoup:"\u21A5",marker:"\u25AE",mcomma:"\u2A29",Mcy:"\u041C",mcy:"\u043C",mdash:"\u2014",mDDot:"\u223A",measuredangle:"\u2221",MediumSpace:"\u205F",Mellintrf:"\u2133",Mfr:"\u{1D510}",mfr:"\u{1D52A}",mho:"\u2127",micro:"\xB5",mid:"\u2223",midast:"*",midcir:"\u2AF0",middot:"\xB7",minus:"\u2212",minusb:"\u229F",minusd:"\u2238",minusdu:"\u2A2A",MinusPlus:"\u2213",mlcp:"\u2ADB",mldr:"\u2026",mnplus:"\u2213",models:"\u22A7",Mopf:"\u{1D544}",mopf:"\u{1D55E}",mp:"\u2213",Mscr:"\u2133",mscr:"\u{1D4C2}",mstpos:"\u223E",Mu:"\u039C",mu:"\u03BC",multimap:"\u22B8",mumap:"\u22B8",nabla:"\u2207",Nacute:"\u0143",nacute:"\u0144",nang:"\u2220\u20D2",nap:"\u2249",napE:"\u2A70\u0338",napid:"\u224B\u0338",napos:"\u0149",napprox:"\u2249",natur:"\u266E",natural:"\u266E",naturals:"\u2115",nbsp:"\xA0",nbump:"\u224E\u0338",nbumpe:"\u224F\u0338",ncap:"\u2A43",Ncaron:"\u0147",ncaron:"\u0148",Ncedil:"\u0145",ncedil:"\u0146",ncong:"\u2247",ncongdot:"\u2A6D\u0338",ncup:"\u2A42",Ncy:"\u041D",ncy:"\u043D",ndash:"\u2013",ne:"\u2260",nearhk:"\u2924",neArr:"\u21D7",nearr:"\u2197",nearrow:"\u2197",nedot:"\u2250\u0338",NegativeMediumSpace:"\u200B",NegativeThickSpace:"\u200B",NegativeThinSpace:"\u200B",NegativeVeryThinSpace:"\u200B",nequiv:"\u2262",nesear:"\u2928",nesim:"\u2242\u0338",NestedGreaterGreater:"\u226B",NestedLessLess:"\u226A",NewLine:` +`,nexist:"\u2204",nexists:"\u2204",Nfr:"\u{1D511}",nfr:"\u{1D52B}",ngE:"\u2267\u0338",nge:"\u2271",ngeq:"\u2271",ngeqq:"\u2267\u0338",ngeqslant:"\u2A7E\u0338",nges:"\u2A7E\u0338",nGg:"\u22D9\u0338",ngsim:"\u2275",nGt:"\u226B\u20D2",ngt:"\u226F",ngtr:"\u226F",nGtv:"\u226B\u0338",nhArr:"\u21CE",nharr:"\u21AE",nhpar:"\u2AF2",ni:"\u220B",nis:"\u22FC",nisd:"\u22FA",niv:"\u220B",NJcy:"\u040A",njcy:"\u045A",nlArr:"\u21CD",nlarr:"\u219A",nldr:"\u2025",nlE:"\u2266\u0338",nle:"\u2270",nLeftarrow:"\u21CD",nleftarrow:"\u219A",nLeftrightarrow:"\u21CE",nleftrightarrow:"\u21AE",nleq:"\u2270",nleqq:"\u2266\u0338",nleqslant:"\u2A7D\u0338",nles:"\u2A7D\u0338",nless:"\u226E",nLl:"\u22D8\u0338",nlsim:"\u2274",nLt:"\u226A\u20D2",nlt:"\u226E",nltri:"\u22EA",nltrie:"\u22EC",nLtv:"\u226A\u0338",nmid:"\u2224",NoBreak:"\u2060",NonBreakingSpace:"\xA0",Nopf:"\u2115",nopf:"\u{1D55F}",Not:"\u2AEC",not:"\xAC",NotCongruent:"\u2262",NotCupCap:"\u226D",NotDoubleVerticalBar:"\u2226",NotElement:"\u2209",NotEqual:"\u2260",NotEqualTilde:"\u2242\u0338",NotExists:"\u2204",NotGreater:"\u226F",NotGreaterEqual:"\u2271",NotGreaterFullEqual:"\u2267\u0338",NotGreaterGreater:"\u226B\u0338",NotGreaterLess:"\u2279",NotGreaterSlantEqual:"\u2A7E\u0338",NotGreaterTilde:"\u2275",NotHumpDownHump:"\u224E\u0338",NotHumpEqual:"\u224F\u0338",notin:"\u2209",notindot:"\u22F5\u0338",notinE:"\u22F9\u0338",notinva:"\u2209",notinvb:"\u22F7",notinvc:"\u22F6",NotLeftTriangle:"\u22EA",NotLeftTriangleBar:"\u29CF\u0338",NotLeftTriangleEqual:"\u22EC",NotLess:"\u226E",NotLessEqual:"\u2270",NotLessGreater:"\u2278",NotLessLess:"\u226A\u0338",NotLessSlantEqual:"\u2A7D\u0338",NotLessTilde:"\u2274",NotNestedGreaterGreater:"\u2AA2\u0338",NotNestedLessLess:"\u2AA1\u0338",notni:"\u220C",notniva:"\u220C",notnivb:"\u22FE",notnivc:"\u22FD",NotPrecedes:"\u2280",NotPrecedesEqual:"\u2AAF\u0338",NotPrecedesSlantEqual:"\u22E0",NotReverseElement:"\u220C",NotRightTriangle:"\u22EB",NotRightTriangleBar:"\u29D0\u0338",NotRightTriangleEqual:"\u22ED",NotSquareSubset:"\u228F\u0338",NotSquareSubsetEqual:"\u22E2",NotSquareSuperset:"\u2290\u0338",NotSquareSupersetEqual:"\u22E3",NotSubset:"\u2282\u20D2",NotSubsetEqual:"\u2288",NotSucceeds:"\u2281",NotSucceedsEqual:"\u2AB0\u0338",NotSucceedsSlantEqual:"\u22E1",NotSucceedsTilde:"\u227F\u0338",NotSuperset:"\u2283\u20D2",NotSupersetEqual:"\u2289",NotTilde:"\u2241",NotTildeEqual:"\u2244",NotTildeFullEqual:"\u2247",NotTildeTilde:"\u2249",NotVerticalBar:"\u2224",npar:"\u2226",nparallel:"\u2226",nparsl:"\u2AFD\u20E5",npart:"\u2202\u0338",npolint:"\u2A14",npr:"\u2280",nprcue:"\u22E0",npre:"\u2AAF\u0338",nprec:"\u2280",npreceq:"\u2AAF\u0338",nrArr:"\u21CF",nrarr:"\u219B",nrarrc:"\u2933\u0338",nrarrw:"\u219D\u0338",nRightarrow:"\u21CF",nrightarrow:"\u219B",nrtri:"\u22EB",nrtrie:"\u22ED",nsc:"\u2281",nsccue:"\u22E1",nsce:"\u2AB0\u0338",Nscr:"\u{1D4A9}",nscr:"\u{1D4C3}",nshortmid:"\u2224",nshortparallel:"\u2226",nsim:"\u2241",nsime:"\u2244",nsimeq:"\u2244",nsmid:"\u2224",nspar:"\u2226",nsqsube:"\u22E2",nsqsupe:"\u22E3",nsub:"\u2284",nsubE:"\u2AC5\u0338",nsube:"\u2288",nsubset:"\u2282\u20D2",nsubseteq:"\u2288",nsubseteqq:"\u2AC5\u0338",nsucc:"\u2281",nsucceq:"\u2AB0\u0338",nsup:"\u2285",nsupE:"\u2AC6\u0338",nsupe:"\u2289",nsupset:"\u2283\u20D2",nsupseteq:"\u2289",nsupseteqq:"\u2AC6\u0338",ntgl:"\u2279",Ntilde:"\xD1",ntilde:"\xF1",ntlg:"\u2278",ntriangleleft:"\u22EA",ntrianglelefteq:"\u22EC",ntriangleright:"\u22EB",ntrianglerighteq:"\u22ED",Nu:"\u039D",nu:"\u03BD",num:"#",numero:"\u2116",numsp:"\u2007",nvap:"\u224D\u20D2",nVDash:"\u22AF",nVdash:"\u22AE",nvDash:"\u22AD",nvdash:"\u22AC",nvge:"\u2265\u20D2",nvgt:">\u20D2",nvHarr:"\u2904",nvinfin:"\u29DE",nvlArr:"\u2902",nvle:"\u2264\u20D2",nvlt:"<\u20D2",nvltrie:"\u22B4\u20D2",nvrArr:"\u2903",nvrtrie:"\u22B5\u20D2",nvsim:"\u223C\u20D2",nwarhk:"\u2923",nwArr:"\u21D6",nwarr:"\u2196",nwarrow:"\u2196",nwnear:"\u2927",Oacute:"\xD3",oacute:"\xF3",oast:"\u229B",ocir:"\u229A",Ocirc:"\xD4",ocirc:"\xF4",Ocy:"\u041E",ocy:"\u043E",odash:"\u229D",Odblac:"\u0150",odblac:"\u0151",odiv:"\u2A38",odot:"\u2299",odsold:"\u29BC",OElig:"\u0152",oelig:"\u0153",ofcir:"\u29BF",Ofr:"\u{1D512}",ofr:"\u{1D52C}",ogon:"\u02DB",Ograve:"\xD2",ograve:"\xF2",ogt:"\u29C1",ohbar:"\u29B5",ohm:"\u03A9",oint:"\u222E",olarr:"\u21BA",olcir:"\u29BE",olcross:"\u29BB",oline:"\u203E",olt:"\u29C0",Omacr:"\u014C",omacr:"\u014D",Omega:"\u03A9",omega:"\u03C9",Omicron:"\u039F",omicron:"\u03BF",omid:"\u29B6",ominus:"\u2296",Oopf:"\u{1D546}",oopf:"\u{1D560}",opar:"\u29B7",OpenCurlyDoubleQuote:"\u201C",OpenCurlyQuote:"\u2018",operp:"\u29B9",oplus:"\u2295",Or:"\u2A54",or:"\u2228",orarr:"\u21BB",ord:"\u2A5D",order:"\u2134",orderof:"\u2134",ordf:"\xAA",ordm:"\xBA",origof:"\u22B6",oror:"\u2A56",orslope:"\u2A57",orv:"\u2A5B",oS:"\u24C8",Oscr:"\u{1D4AA}",oscr:"\u2134",Oslash:"\xD8",oslash:"\xF8",osol:"\u2298",Otilde:"\xD5",otilde:"\xF5",Otimes:"\u2A37",otimes:"\u2297",otimesas:"\u2A36",Ouml:"\xD6",ouml:"\xF6",ovbar:"\u233D",OverBar:"\u203E",OverBrace:"\u23DE",OverBracket:"\u23B4",OverParenthesis:"\u23DC",par:"\u2225",para:"\xB6",parallel:"\u2225",parsim:"\u2AF3",parsl:"\u2AFD",part:"\u2202",PartialD:"\u2202",Pcy:"\u041F",pcy:"\u043F",percnt:"%",period:".",permil:"\u2030",perp:"\u22A5",pertenk:"\u2031",Pfr:"\u{1D513}",pfr:"\u{1D52D}",Phi:"\u03A6",phi:"\u03C6",phiv:"\u03D5",phmmat:"\u2133",phone:"\u260E",Pi:"\u03A0",pi:"\u03C0",pitchfork:"\u22D4",piv:"\u03D6",planck:"\u210F",planckh:"\u210E",plankv:"\u210F",plus:"+",plusacir:"\u2A23",plusb:"\u229E",pluscir:"\u2A22",plusdo:"\u2214",plusdu:"\u2A25",pluse:"\u2A72",PlusMinus:"\xB1",plusmn:"\xB1",plussim:"\u2A26",plustwo:"\u2A27",pm:"\xB1",Poincareplane:"\u210C",pointint:"\u2A15",Popf:"\u2119",popf:"\u{1D561}",pound:"\xA3",Pr:"\u2ABB",pr:"\u227A",prap:"\u2AB7",prcue:"\u227C",prE:"\u2AB3",pre:"\u2AAF",prec:"\u227A",precapprox:"\u2AB7",preccurlyeq:"\u227C",Precedes:"\u227A",PrecedesEqual:"\u2AAF",PrecedesSlantEqual:"\u227C",PrecedesTilde:"\u227E",preceq:"\u2AAF",precnapprox:"\u2AB9",precneqq:"\u2AB5",precnsim:"\u22E8",precsim:"\u227E",Prime:"\u2033",prime:"\u2032",primes:"\u2119",prnap:"\u2AB9",prnE:"\u2AB5",prnsim:"\u22E8",prod:"\u220F",Product:"\u220F",profalar:"\u232E",profline:"\u2312",profsurf:"\u2313",prop:"\u221D",Proportion:"\u2237",Proportional:"\u221D",propto:"\u221D",prsim:"\u227E",prurel:"\u22B0",Pscr:"\u{1D4AB}",pscr:"\u{1D4C5}",Psi:"\u03A8",psi:"\u03C8",puncsp:"\u2008",Qfr:"\u{1D514}",qfr:"\u{1D52E}",qint:"\u2A0C",Qopf:"\u211A",qopf:"\u{1D562}",qprime:"\u2057",Qscr:"\u{1D4AC}",qscr:"\u{1D4C6}",quaternions:"\u210D",quatint:"\u2A16",quest:"?",questeq:"\u225F",QUOT:'"',quot:'"',rAarr:"\u21DB",race:"\u223D\u0331",Racute:"\u0154",racute:"\u0155",radic:"\u221A",raemptyv:"\u29B3",Rang:"\u27EB",rang:"\u27E9",rangd:"\u2992",range:"\u29A5",rangle:"\u27E9",raquo:"\xBB",Rarr:"\u21A0",rArr:"\u21D2",rarr:"\u2192",rarrap:"\u2975",rarrb:"\u21E5",rarrbfs:"\u2920",rarrc:"\u2933",rarrfs:"\u291E",rarrhk:"\u21AA",rarrlp:"\u21AC",rarrpl:"\u2945",rarrsim:"\u2974",Rarrtl:"\u2916",rarrtl:"\u21A3",rarrw:"\u219D",rAtail:"\u291C",ratail:"\u291A",ratio:"\u2236",rationals:"\u211A",RBarr:"\u2910",rBarr:"\u290F",rbarr:"\u290D",rbbrk:"\u2773",rbrace:"}",rbrack:"]",rbrke:"\u298C",rbrksld:"\u298E",rbrkslu:"\u2990",Rcaron:"\u0158",rcaron:"\u0159",Rcedil:"\u0156",rcedil:"\u0157",rceil:"\u2309",rcub:"}",Rcy:"\u0420",rcy:"\u0440",rdca:"\u2937",rdldhar:"\u2969",rdquo:"\u201D",rdquor:"\u201D",rdsh:"\u21B3",Re:"\u211C",real:"\u211C",realine:"\u211B",realpart:"\u211C",reals:"\u211D",rect:"\u25AD",REG:"\xAE",reg:"\xAE",ReverseElement:"\u220B",ReverseEquilibrium:"\u21CB",ReverseUpEquilibrium:"\u296F",rfisht:"\u297D",rfloor:"\u230B",Rfr:"\u211C",rfr:"\u{1D52F}",rHar:"\u2964",rhard:"\u21C1",rharu:"\u21C0",rharul:"\u296C",Rho:"\u03A1",rho:"\u03C1",rhov:"\u03F1",RightAngleBracket:"\u27E9",RightArrow:"\u2192",Rightarrow:"\u21D2",rightarrow:"\u2192",RightArrowBar:"\u21E5",RightArrowLeftArrow:"\u21C4",rightarrowtail:"\u21A3",RightCeiling:"\u2309",RightDoubleBracket:"\u27E7",RightDownTeeVector:"\u295D",RightDownVector:"\u21C2",RightDownVectorBar:"\u2955",RightFloor:"\u230B",rightharpoondown:"\u21C1",rightharpoonup:"\u21C0",rightleftarrows:"\u21C4",rightleftharpoons:"\u21CC",rightrightarrows:"\u21C9",rightsquigarrow:"\u219D",RightTee:"\u22A2",RightTeeArrow:"\u21A6",RightTeeVector:"\u295B",rightthreetimes:"\u22CC",RightTriangle:"\u22B3",RightTriangleBar:"\u29D0",RightTriangleEqual:"\u22B5",RightUpDownVector:"\u294F",RightUpTeeVector:"\u295C",RightUpVector:"\u21BE",RightUpVectorBar:"\u2954",RightVector:"\u21C0",RightVectorBar:"\u2953",ring:"\u02DA",risingdotseq:"\u2253",rlarr:"\u21C4",rlhar:"\u21CC",rlm:"\u200F",rmoust:"\u23B1",rmoustache:"\u23B1",rnmid:"\u2AEE",roang:"\u27ED",roarr:"\u21FE",robrk:"\u27E7",ropar:"\u2986",Ropf:"\u211D",ropf:"\u{1D563}",roplus:"\u2A2E",rotimes:"\u2A35",RoundImplies:"\u2970",rpar:")",rpargt:"\u2994",rppolint:"\u2A12",rrarr:"\u21C9",Rrightarrow:"\u21DB",rsaquo:"\u203A",Rscr:"\u211B",rscr:"\u{1D4C7}",Rsh:"\u21B1",rsh:"\u21B1",rsqb:"]",rsquo:"\u2019",rsquor:"\u2019",rthree:"\u22CC",rtimes:"\u22CA",rtri:"\u25B9",rtrie:"\u22B5",rtrif:"\u25B8",rtriltri:"\u29CE",RuleDelayed:"\u29F4",ruluhar:"\u2968",rx:"\u211E",Sacute:"\u015A",sacute:"\u015B",sbquo:"\u201A",Sc:"\u2ABC",sc:"\u227B",scap:"\u2AB8",Scaron:"\u0160",scaron:"\u0161",sccue:"\u227D",scE:"\u2AB4",sce:"\u2AB0",Scedil:"\u015E",scedil:"\u015F",Scirc:"\u015C",scirc:"\u015D",scnap:"\u2ABA",scnE:"\u2AB6",scnsim:"\u22E9",scpolint:"\u2A13",scsim:"\u227F",Scy:"\u0421",scy:"\u0441",sdot:"\u22C5",sdotb:"\u22A1",sdote:"\u2A66",searhk:"\u2925",seArr:"\u21D8",searr:"\u2198",searrow:"\u2198",sect:"\xA7",semi:";",seswar:"\u2929",setminus:"\u2216",setmn:"\u2216",sext:"\u2736",Sfr:"\u{1D516}",sfr:"\u{1D530}",sfrown:"\u2322",sharp:"\u266F",SHCHcy:"\u0429",shchcy:"\u0449",SHcy:"\u0428",shcy:"\u0448",ShortDownArrow:"\u2193",ShortLeftArrow:"\u2190",shortmid:"\u2223",shortparallel:"\u2225",ShortRightArrow:"\u2192",ShortUpArrow:"\u2191",shy:"\xAD",Sigma:"\u03A3",sigma:"\u03C3",sigmaf:"\u03C2",sigmav:"\u03C2",sim:"\u223C",simdot:"\u2A6A",sime:"\u2243",simeq:"\u2243",simg:"\u2A9E",simgE:"\u2AA0",siml:"\u2A9D",simlE:"\u2A9F",simne:"\u2246",simplus:"\u2A24",simrarr:"\u2972",slarr:"\u2190",SmallCircle:"\u2218",smallsetminus:"\u2216",smashp:"\u2A33",smeparsl:"\u29E4",smid:"\u2223",smile:"\u2323",smt:"\u2AAA",smte:"\u2AAC",smtes:"\u2AAC\uFE00",SOFTcy:"\u042C",softcy:"\u044C",sol:"/",solb:"\u29C4",solbar:"\u233F",Sopf:"\u{1D54A}",sopf:"\u{1D564}",spades:"\u2660",spadesuit:"\u2660",spar:"\u2225",sqcap:"\u2293",sqcaps:"\u2293\uFE00",sqcup:"\u2294",sqcups:"\u2294\uFE00",Sqrt:"\u221A",sqsub:"\u228F",sqsube:"\u2291",sqsubset:"\u228F",sqsubseteq:"\u2291",sqsup:"\u2290",sqsupe:"\u2292",sqsupset:"\u2290",sqsupseteq:"\u2292",squ:"\u25A1",Square:"\u25A1",square:"\u25A1",SquareIntersection:"\u2293",SquareSubset:"\u228F",SquareSubsetEqual:"\u2291",SquareSuperset:"\u2290",SquareSupersetEqual:"\u2292",SquareUnion:"\u2294",squarf:"\u25AA",squf:"\u25AA",srarr:"\u2192",Sscr:"\u{1D4AE}",sscr:"\u{1D4C8}",ssetmn:"\u2216",ssmile:"\u2323",sstarf:"\u22C6",Star:"\u22C6",star:"\u2606",starf:"\u2605",straightepsilon:"\u03F5",straightphi:"\u03D5",strns:"\xAF",Sub:"\u22D0",sub:"\u2282",subdot:"\u2ABD",subE:"\u2AC5",sube:"\u2286",subedot:"\u2AC3",submult:"\u2AC1",subnE:"\u2ACB",subne:"\u228A",subplus:"\u2ABF",subrarr:"\u2979",Subset:"\u22D0",subset:"\u2282",subseteq:"\u2286",subseteqq:"\u2AC5",SubsetEqual:"\u2286",subsetneq:"\u228A",subsetneqq:"\u2ACB",subsim:"\u2AC7",subsub:"\u2AD5",subsup:"\u2AD3",succ:"\u227B",succapprox:"\u2AB8",succcurlyeq:"\u227D",Succeeds:"\u227B",SucceedsEqual:"\u2AB0",SucceedsSlantEqual:"\u227D",SucceedsTilde:"\u227F",succeq:"\u2AB0",succnapprox:"\u2ABA",succneqq:"\u2AB6",succnsim:"\u22E9",succsim:"\u227F",SuchThat:"\u220B",Sum:"\u2211",sum:"\u2211",sung:"\u266A",Sup:"\u22D1",sup:"\u2283",sup1:"\xB9",sup2:"\xB2",sup3:"\xB3",supdot:"\u2ABE",supdsub:"\u2AD8",supE:"\u2AC6",supe:"\u2287",supedot:"\u2AC4",Superset:"\u2283",SupersetEqual:"\u2287",suphsol:"\u27C9",suphsub:"\u2AD7",suplarr:"\u297B",supmult:"\u2AC2",supnE:"\u2ACC",supne:"\u228B",supplus:"\u2AC0",Supset:"\u22D1",supset:"\u2283",supseteq:"\u2287",supseteqq:"\u2AC6",supsetneq:"\u228B",supsetneqq:"\u2ACC",supsim:"\u2AC8",supsub:"\u2AD4",supsup:"\u2AD6",swarhk:"\u2926",swArr:"\u21D9",swarr:"\u2199",swarrow:"\u2199",swnwar:"\u292A",szlig:"\xDF",Tab:" ",target:"\u2316",Tau:"\u03A4",tau:"\u03C4",tbrk:"\u23B4",Tcaron:"\u0164",tcaron:"\u0165",Tcedil:"\u0162",tcedil:"\u0163",Tcy:"\u0422",tcy:"\u0442",tdot:"\u20DB",telrec:"\u2315",Tfr:"\u{1D517}",tfr:"\u{1D531}",there4:"\u2234",Therefore:"\u2234",therefore:"\u2234",Theta:"\u0398",theta:"\u03B8",thetasym:"\u03D1",thetav:"\u03D1",thickapprox:"\u2248",thicksim:"\u223C",ThickSpace:"\u205F\u200A",thinsp:"\u2009",ThinSpace:"\u2009",thkap:"\u2248",thksim:"\u223C",THORN:"\xDE",thorn:"\xFE",Tilde:"\u223C",tilde:"\u02DC",TildeEqual:"\u2243",TildeFullEqual:"\u2245",TildeTilde:"\u2248",times:"\xD7",timesb:"\u22A0",timesbar:"\u2A31",timesd:"\u2A30",tint:"\u222D",toea:"\u2928",top:"\u22A4",topbot:"\u2336",topcir:"\u2AF1",Topf:"\u{1D54B}",topf:"\u{1D565}",topfork:"\u2ADA",tosa:"\u2929",tprime:"\u2034",TRADE:"\u2122",trade:"\u2122",triangle:"\u25B5",triangledown:"\u25BF",triangleleft:"\u25C3",trianglelefteq:"\u22B4",triangleq:"\u225C",triangleright:"\u25B9",trianglerighteq:"\u22B5",tridot:"\u25EC",trie:"\u225C",triminus:"\u2A3A",TripleDot:"\u20DB",triplus:"\u2A39",trisb:"\u29CD",tritime:"\u2A3B",trpezium:"\u23E2",Tscr:"\u{1D4AF}",tscr:"\u{1D4C9}",TScy:"\u0426",tscy:"\u0446",TSHcy:"\u040B",tshcy:"\u045B",Tstrok:"\u0166",tstrok:"\u0167",twixt:"\u226C",twoheadleftarrow:"\u219E",twoheadrightarrow:"\u21A0",Uacute:"\xDA",uacute:"\xFA",Uarr:"\u219F",uArr:"\u21D1",uarr:"\u2191",Uarrocir:"\u2949",Ubrcy:"\u040E",ubrcy:"\u045E",Ubreve:"\u016C",ubreve:"\u016D",Ucirc:"\xDB",ucirc:"\xFB",Ucy:"\u0423",ucy:"\u0443",udarr:"\u21C5",Udblac:"\u0170",udblac:"\u0171",udhar:"\u296E",ufisht:"\u297E",Ufr:"\u{1D518}",ufr:"\u{1D532}",Ugrave:"\xD9",ugrave:"\xF9",uHar:"\u2963",uharl:"\u21BF",uharr:"\u21BE",uhblk:"\u2580",ulcorn:"\u231C",ulcorner:"\u231C",ulcrop:"\u230F",ultri:"\u25F8",Umacr:"\u016A",umacr:"\u016B",uml:"\xA8",UnderBar:"_",UnderBrace:"\u23DF",UnderBracket:"\u23B5",UnderParenthesis:"\u23DD",Union:"\u22C3",UnionPlus:"\u228E",Uogon:"\u0172",uogon:"\u0173",Uopf:"\u{1D54C}",uopf:"\u{1D566}",UpArrow:"\u2191",Uparrow:"\u21D1",uparrow:"\u2191",UpArrowBar:"\u2912",UpArrowDownArrow:"\u21C5",UpDownArrow:"\u2195",Updownarrow:"\u21D5",updownarrow:"\u2195",UpEquilibrium:"\u296E",upharpoonleft:"\u21BF",upharpoonright:"\u21BE",uplus:"\u228E",UpperLeftArrow:"\u2196",UpperRightArrow:"\u2197",Upsi:"\u03D2",upsi:"\u03C5",upsih:"\u03D2",Upsilon:"\u03A5",upsilon:"\u03C5",UpTee:"\u22A5",UpTeeArrow:"\u21A5",upuparrows:"\u21C8",urcorn:"\u231D",urcorner:"\u231D",urcrop:"\u230E",Uring:"\u016E",uring:"\u016F",urtri:"\u25F9",Uscr:"\u{1D4B0}",uscr:"\u{1D4CA}",utdot:"\u22F0",Utilde:"\u0168",utilde:"\u0169",utri:"\u25B5",utrif:"\u25B4",uuarr:"\u21C8",Uuml:"\xDC",uuml:"\xFC",uwangle:"\u29A7",vangrt:"\u299C",varepsilon:"\u03F5",varkappa:"\u03F0",varnothing:"\u2205",varphi:"\u03D5",varpi:"\u03D6",varpropto:"\u221D",vArr:"\u21D5",varr:"\u2195",varrho:"\u03F1",varsigma:"\u03C2",varsubsetneq:"\u228A\uFE00",varsubsetneqq:"\u2ACB\uFE00",varsupsetneq:"\u228B\uFE00",varsupsetneqq:"\u2ACC\uFE00",vartheta:"\u03D1",vartriangleleft:"\u22B2",vartriangleright:"\u22B3",Vbar:"\u2AEB",vBar:"\u2AE8",vBarv:"\u2AE9",Vcy:"\u0412",vcy:"\u0432",VDash:"\u22AB",Vdash:"\u22A9",vDash:"\u22A8",vdash:"\u22A2",Vdashl:"\u2AE6",Vee:"\u22C1",vee:"\u2228",veebar:"\u22BB",veeeq:"\u225A",vellip:"\u22EE",Verbar:"\u2016",verbar:"|",Vert:"\u2016",vert:"|",VerticalBar:"\u2223",VerticalLine:"|",VerticalSeparator:"\u2758",VerticalTilde:"\u2240",VeryThinSpace:"\u200A",Vfr:"\u{1D519}",vfr:"\u{1D533}",vltri:"\u22B2",vnsub:"\u2282\u20D2",vnsup:"\u2283\u20D2",Vopf:"\u{1D54D}",vopf:"\u{1D567}",vprop:"\u221D",vrtri:"\u22B3",Vscr:"\u{1D4B1}",vscr:"\u{1D4CB}",vsubnE:"\u2ACB\uFE00",vsubne:"\u228A\uFE00",vsupnE:"\u2ACC\uFE00",vsupne:"\u228B\uFE00",Vvdash:"\u22AA",vzigzag:"\u299A",Wcirc:"\u0174",wcirc:"\u0175",wedbar:"\u2A5F",Wedge:"\u22C0",wedge:"\u2227",wedgeq:"\u2259",weierp:"\u2118",Wfr:"\u{1D51A}",wfr:"\u{1D534}",Wopf:"\u{1D54E}",wopf:"\u{1D568}",wp:"\u2118",wr:"\u2240",wreath:"\u2240",Wscr:"\u{1D4B2}",wscr:"\u{1D4CC}",xcap:"\u22C2",xcirc:"\u25EF",xcup:"\u22C3",xdtri:"\u25BD",Xfr:"\u{1D51B}",xfr:"\u{1D535}",xhArr:"\u27FA",xharr:"\u27F7",Xi:"\u039E",xi:"\u03BE",xlArr:"\u27F8",xlarr:"\u27F5",xmap:"\u27FC",xnis:"\u22FB",xodot:"\u2A00",Xopf:"\u{1D54F}",xopf:"\u{1D569}",xoplus:"\u2A01",xotime:"\u2A02",xrArr:"\u27F9",xrarr:"\u27F6",Xscr:"\u{1D4B3}",xscr:"\u{1D4CD}",xsqcup:"\u2A06",xuplus:"\u2A04",xutri:"\u25B3",xvee:"\u22C1",xwedge:"\u22C0",Yacute:"\xDD",yacute:"\xFD",YAcy:"\u042F",yacy:"\u044F",Ycirc:"\u0176",ycirc:"\u0177",Ycy:"\u042B",ycy:"\u044B",yen:"\xA5",Yfr:"\u{1D51C}",yfr:"\u{1D536}",YIcy:"\u0407",yicy:"\u0457",Yopf:"\u{1D550}",yopf:"\u{1D56A}",Yscr:"\u{1D4B4}",yscr:"\u{1D4CE}",YUcy:"\u042E",yucy:"\u044E",Yuml:"\u0178",yuml:"\xFF",Zacute:"\u0179",zacute:"\u017A",Zcaron:"\u017D",zcaron:"\u017E",Zcy:"\u0417",zcy:"\u0437",Zdot:"\u017B",zdot:"\u017C",zeetrf:"\u2128",ZeroWidthSpace:"\u200B",Zeta:"\u0396",zeta:"\u03B6",Zfr:"\u2128",zfr:"\u{1D537}",ZHcy:"\u0416",zhcy:"\u0436",zigrarr:"\u21DD",Zopf:"\u2124",zopf:"\u{1D56B}",Zscr:"\u{1D4B5}",zscr:"\u{1D4CF}",zwj:"\u200D",zwnj:"\u200C"});xf.entityMap=xf.HTML_ENTITIES});var BP=oe(oy=>{"use strict";var td=xc(),Ge=xE(),IP=ff(),$$=td.isHTMLEscapableRawTextElement,V$=td.isHTMLMimeType,Y$=td.isHTMLRawTextElement,Bf=td.hasOwn,pP=td.NAMESPACE,W$=IP.ParseError,X$=IP.DOMException,Wl=0,ra=1,Xl=2,Cf=3,Zl=4,ed=5,Ef=6,sy=7;function wP(){}wP.prototype={parse:function(r,e,t){var i=this.domBuilder;i.startDocument(),rV(e,e=Object.create(null)),Z$(r,e,t,i,this.errorHandler),i.endDocument()}};var FE=/&#?\w+;?/g;function Z$(r,e,t,i,n){var s=V$(i.mimeType);r.indexOf(Ge.UNICODE_REPLACEMENT_CHARACTER)>=0&&n.warning("Unicode replacement character detected, source encoding issues?");function o(K){if(K>65535){K-=65536;var $=55296+(K>>10),te=56320+(K&1023);return String.fromCharCode($,te)}else return String.fromCharCode(K)}function a(K){var $=K[K.length-1]===";"?K:K+";";if(!s&&$!==K)return n.error("EntityRef: expecting ;"),K;var te=Ge.Reference.exec($);if(!te||te[0].length!==$.length)return n.error("entity not matching Reference production: "+K),K;var re=$.slice(1,-1);return Bf(t,re)?t[re]:re.charAt(0)==="#"?o(parseInt(re.substring(1).replace("x","0x"))):(n.error("entity not found:"+K),K)}function c(K){if(K>I){var $=r.substring(I,K).replace(FE,a);f&&h(I),i.characters($,0,K-I),I=K}}var l=0,d=0,u=/\r\n?|\n|$/g,f=i.locator;function h(K,$){for(;K>=d&&($=u.exec(r));)l=d,d=$.index+$[0].length,f.lineNumber++;f.columnNumber=K-l+1}for(var g=[{currentNSMap:e}],p=[],I=0;;){try{var y=r.indexOf("<",I);if(y<0){if(!s&&p.length>0)return n.fatalError("unclosed xml tag(s): "+p.join(", "));if(!r.substring(I).match(/^\s*$/)){var w=i.doc,C=w.createTextNode(r.substring(I));if(w.documentElement)return n.error("Extra content at the end of the document");w.appendChild(C),i.currentElement=C}return}if(y>I){var b=r.substring(I,y);!s&&p.length===0&&(b=b.replace(new RegExp(Ge.S_OPT.source,"g"),""),b&&n.error("Unexpected content outside root element: '"+b+"'")),c(y)}switch(r.charAt(y+1)){case"/":var N=r.indexOf(">",y+2),x=r.substring(y+2,N>0?N:void 0);if(!x)return n.fatalError("end tag name missing");var _=Ge.reg("^",Ge.QName_group,Ge.S_OPT,"$"),R=N>0&&_.exec(x);if(!R){var U=N>0&&Ge.reg("^",Ge.QName_group).exec(x);if(s&&U)n.warning('end tag name contains invalid trailing characters: "'+x+'"'),R=U;else if(U&&new RegExp(_.source,_.flags+"m").test(x))n.error('end tag name is followed by a line break and trailing content: "'+x+'"'),R=U;else return n.fatalError('end tag name contains invalid characters: "'+x+'"')}if(!i.currentElement&&!i.doc.documentElement)return;var T=p[p.length-1]||i.currentElement.tagName||i.doc.documentElement.tagName||"";if(T!==R[1]){var D=R[1].toLowerCase();if(!s||T.toLowerCase()!==D)return n.fatalError('Opening and ending tag mismatch: "'+T+'" != "'+x+'"')}var B=g.pop();p.pop();var Q=B.localNSMap;if(i.endElement(B.uri,B.localName,T),Q)for(var v in Q)Bf(Q,v)&&i.endPrefixMapping(v);N++;break;case"?":f&&h(y),N=nV(r,y,i,n);break;case"!":f&&h(y),N=CP(r,y,i,n,s);break;default:f&&h(y);var E=new EP,P=g[g.length-1].currentNSMap,N=eV(r,y,E,P,a,n,s),J=E.length;if(E.closed||(s&&td.isHTMLVoidElement(E.tagName)?E.closed=!0:p.push(E.tagName)),f&&J){for(var z=mP(f,{}),L=0;L<J;L++){var G=E[L];h(G.offset),G.locator=mP(f,{})}i.locator=z,yP(E,i,P)&&g.push(E),i.locator=f}else yP(E,i,P)&&g.push(E);s&&!E.closed?N=tV(r,N,E.tagName,a,i):N++}}catch(K){if(K instanceof W$)throw K;if(K instanceof X$)return n.fatalError("Error constructing the DOM: "+K.name+": "+K.message,K);n.error("element parse error: "+K),N=-1}N>I?I=N:c(Math.max(y,I)+1)}}function mP(r,e){return e.lineNumber=r.lineNumber,e.columnNumber=r.columnNumber,e}function eV(r,e,t,i,n,s,o){function a(h,g,p){if(Bf(t.attributeNames,h))return s.fatalError("Attribute "+h+" redefined");if(!o&&g.indexOf("<")>=0)return s.fatalError("Unescaped '<' not allowed in attributes values");t.addValue(h,g.replace(/[\t\n\r]/g," ").replace(FE,n),p)}for(var c,l,d=++e,u=Wl;;){var f=r.charAt(d);if(u===Wl&&f==="<")throw new Error("unexpected < in tag name: "+r.slice(e,d));switch(f){case"=":if(u===ra)c=r.slice(e,d),u=Cf;else if(u===Xl)u=Cf;else throw new Error("attribute equal must after attrName");break;case"'":case'"':if(u===Cf||u===ra)if(u===ra&&(s.warning('attribute value must after "="'),c=r.slice(e,d)),e=d+1,d=r.indexOf(f,e),d>0)l=r.slice(e,d),a(c,l,e-1),u=ed;else throw new Error("attribute value no end '"+f+"' match");else if(u==Zl)l=r.slice(e,d),a(c,l,e),s.warning('attribute "'+c+'" missed start quot('+f+")!!"),e=d+1,u=ed;else throw new Error('attribute value must after "="');break;case"/":switch(u){case Wl:t.setTagName(r.slice(e,d));case ed:case Ef:case sy:u=sy,t.closed=!0;case Zl:case ra:break;case Xl:t.closed=!0;break;default:throw new Error("attribute invalid close char('/')")}break;case"":return s.error("unexpected end of input"),u==Wl&&t.setTagName(r.slice(e,d)),d;case">":switch(u){case Wl:t.setTagName(r.slice(e,d));case ed:case Ef:case sy:break;case Zl:case ra:l=r.slice(e,d),l.slice(-1)==="/"&&(t.closed=!0,l=l.slice(0,-1));case Xl:u===Xl&&(l=c),u==Zl?(s.warning('attribute "'+l+'" missed quot(")!'),a(c,l,e)):(o||s.warning('attribute "'+l+'" missed value!! "'+l+'" instead!!'),a(l,l,e));break;case Cf:if(!o)return s.fatalError(`AttValue: ' or " expected`)}return d;case"\x80":f=" ";default:if(f<=" ")switch(u){case Wl:t.setTagName(r.slice(e,d)),u=Ef;break;case ra:c=r.slice(e,d),u=Xl;break;case Zl:var l=r.slice(e,d);s.warning('attribute "'+l+'" missed quot(")!!'),a(c,l,e);case ed:u=Ef;break}else switch(u){case Xl:o||s.warning('attribute "'+c+'" missed value!! "'+c+'" instead2!!'),a(c,c,e),e=d,u=ra;break;case ed:s.warning('attribute space is required"'+c+'"!!');case Ef:u=ra,e=d;break;case Cf:u=Zl,e=d;break;case sy:throw new Error("elements closed character '/' and '>' must be connected to")}}d++}}function yP(r,e,t){for(var i=r.tagName,n=null,u=r.length;u--;){var s=r[u],o=s.qName,a=s.value,f=o.indexOf(":");if(f>0)var c=s.prefix=o.slice(0,f),l=o.slice(f+1),d=c==="xmlns"&&l;else l=o,c=null,d=o==="xmlns"&&"";s.localName=l,d!==!1&&(n==null&&(n=Object.create(null),t=Object.create(t)),t[d]=n[d]=a,s.uri=pP.XMLNS,e.startPrefixMapping(d,a))}for(var u=r.length;u--;)s=r[u],s.prefix&&(s.prefix==="xml"&&(s.uri=pP.XML),s.prefix!=="xmlns"&&(s.uri=t[s.prefix]));var f=i.indexOf(":");f>0?(c=r.prefix=i.slice(0,f),l=r.localName=i.slice(f+1)):(c=null,l=r.localName=i);var h=r.uri=t[c||""];if(e.startElement(h,l,i,r),r.closed){if(e.endElement(h,l,i),n)for(c in n)Bf(n,c)&&e.endPrefixMapping(c)}else return r.currentNSMap=t,r.localNSMap=n,!0}function tV(r,e,t,i,n){var s=$$(t);if(s||Y$(t)){var o=new RegExp("</"+t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")+">","ig");o.lastIndex=e;var a=o.exec(r),c=a?a.index:-1;if(c<0)return e+1;var l=r.substring(e+1,c);return s&&(l=l.replace(FE,i)),n.characters(l,0,l.length),c}return e+1}function rV(r,e){for(var t in r)Bf(r,t)&&(e[t]=r[t])}function xP(r,e){var t=e;function i(d){return d=d||0,r.charAt(t+d)}function n(d){d=d||1,t+=d}function s(){for(var d=0;t<r.length;){var u=i();if(u!==" "&&u!==` +`&&u!==" "&&u!=="\r")return d;d++,n()}return-1}function o(){return r.substring(t)}function a(d){return r.substring(t,t+d.length)===d}function c(d){return r.substring(t,t+d.length).toUpperCase()===d.toUpperCase()}function l(d){var u=Ge.reg("^",d),f=u.exec(o());return f?(n(f[0].length),f[0]):null}return{char:i,getIndex:function(){return t},getMatch:l,getSource:function(){return r},skip:n,skipBlanks:s,substringFromIndex:o,substringStartsWith:a,substringStartsWithCaseInsensitive:c}}function iV(r,e){function t(a,c){var l=Ge.PI.exec(a.substringFromIndex());return l?l[1].toLowerCase()==="xml"?c.fatalError("xml declaration is only allowed at the start of the document, but found at position "+a.getIndex()):(a.skip(l[0].length),l[0]):c.fatalError("processing instruction is not well-formed at position "+a.getIndex())}var i=r.getSource();if(r.char()==="["){r.skip(1);for(var n=r.getIndex();r.getIndex()<i.length;){if(r.skipBlanks(),r.char()==="]"){var s=i.substring(n,r.getIndex());return r.skip(1),s}var o=null;if(r.char()==="<"&&r.char(1)==="!")switch(r.char(2)){case"E":r.char(3)==="L"?o=r.getMatch(Ge.elementdecl):r.char(3)==="N"&&(o=r.getMatch(Ge.EntityDecl));break;case"A":o=r.getMatch(Ge.AttlistDecl);break;case"N":o=r.getMatch(Ge.NotationDecl);break;case"-":o=r.getMatch(Ge.Comment);break}else if(r.char()==="<"&&r.char(1)==="?")o=t(r,e);else if(r.char()==="%")o=r.getMatch(Ge.PEReference);else return e.fatalError("Error detected in Markup declaration");if(!o)return e.fatalError("Error in internal subset at position "+r.getIndex())}return e.fatalError("doctype internal subset is not well-formed, missing ]")}}function CP(r,e,t,i,n){var s=xP(r,e);switch(n?s.char(2).toUpperCase():s.char(2)){case"-":var o=s.getMatch(Ge.Comment);return o?(t.comment(o,Ge.COMMENT_START.length,o.length-Ge.COMMENT_START.length-Ge.COMMENT_END.length),s.getIndex()):i.fatalError("comment is not well-formed at position "+s.getIndex());case"[":var a=s.getMatch(Ge.CDSect);return a?!n&&!t.currentElement?i.fatalError("CDATA outside of element"):(t.startCDATA(),t.characters(a,Ge.CDATA_START.length,a.length-Ge.CDATA_START.length-Ge.CDATA_END.length),t.endCDATA(),s.getIndex()):i.fatalError("Invalid CDATA starting at position "+e);case"D":{if(t.doc&&t.doc.documentElement)return i.fatalError("Doctype not allowed inside or after documentElement at position "+s.getIndex());if(n?!s.substringStartsWithCaseInsensitive(Ge.DOCTYPE_DECL_START):!s.substringStartsWith(Ge.DOCTYPE_DECL_START))return i.fatalError("Expected "+Ge.DOCTYPE_DECL_START+" at position "+s.getIndex());if(s.skip(Ge.DOCTYPE_DECL_START.length),s.skipBlanks()<1)return i.fatalError("Expected whitespace after "+Ge.DOCTYPE_DECL_START+" at position "+s.getIndex());var c={name:void 0,publicId:void 0,systemId:void 0,internalSubset:void 0};if(c.name=s.getMatch(Ge.Name),!c.name)return i.fatalError("doctype name missing or contains unexpected characters at position "+s.getIndex());if(n&&c.name.toLowerCase()!=="html"&&i.warning("Unexpected DOCTYPE in HTML document at position "+s.getIndex()),s.skipBlanks(),s.substringStartsWith(Ge.PUBLIC)||s.substringStartsWith(Ge.SYSTEM)){var l=Ge.ExternalID_match.exec(s.substringFromIndex());if(!l)return i.fatalError("doctype external id is not well-formed at position "+s.getIndex());l.groups.SystemLiteralOnly!==void 0?c.systemId=l.groups.SystemLiteralOnly:(c.systemId=l.groups.SystemLiteral,c.publicId=l.groups.PubidLiteral),s.skip(l[0].length)}else if(n&&s.substringStartsWithCaseInsensitive(Ge.SYSTEM)){if(s.skip(Ge.SYSTEM.length),s.skipBlanks()<1)return i.fatalError("Expected whitespace after "+Ge.SYSTEM+" at position "+s.getIndex());if(c.systemId=s.getMatch(Ge.ABOUT_LEGACY_COMPAT_SystemLiteral),!c.systemId)return i.fatalError("Expected "+Ge.ABOUT_LEGACY_COMPAT+" in single or double quotes after "+Ge.SYSTEM+" at position "+s.getIndex())}return n&&c.systemId&&!Ge.ABOUT_LEGACY_COMPAT_SystemLiteral.test(c.systemId)&&i.warning("Unexpected doctype.systemId in HTML document at position "+s.getIndex()),n||(s.skipBlanks(),c.internalSubset=iV(s,i)),s.skipBlanks(),s.char()!==">"?i.fatalError("doctype not terminated with > at position "+s.getIndex()):(s.skip(1),t.startDTD(c.name,c.publicId,c.systemId,c.internalSubset),t.endDTD(),s.getIndex())}default:return i.fatalError('Not well-formed XML starting with "<!" at position '+e)}}function nV(r,e,t,i){var n=r.substring(e).match(Ge.PI);if(!n)return i.fatalError("Invalid processing instruction starting at position "+e);if(n[1].toLowerCase()==="xml"){if(e>0)return i.fatalError("processing instruction at position "+e+" is an xml declaration which is only at the start of the document");if(!Ge.XMLDecl.test(r.substring(e)))return i.fatalError("xml declaration is not well-formed")}return t.processingInstruction(n[1],n[2]),e+n[0].length}function EP(){this.attributeNames=Object.create(null)}EP.prototype={setTagName:function(r){if(!Ge.QName_exact.test(r))throw new Error("invalid tagName:"+r);this.tagName=r},addValue:function(r,e,t){if(!Ge.QName_exact.test(r))throw new Error("invalid attribute:"+r);this.attributeNames[r]=this.length,this[this.length++]={qName:r,value:e,offset:t}},length:0,getLocalName:function(r){return this[r].localName},getLocator:function(r){return this[r].locator},getQName:function(r){return this[r].qName},getURI:function(r){return this[r].uri},getValue:function(r){return this[r].value}};oy.XMLReader=wP;oy.parseUtils=xP;oy.parseDoctypeCommentOrCData=CP});var _P=oe(id=>{"use strict";var Ec=xc(),sV=_E(),oV=ff(),bP=gP(),aV=BP(),cV=sV.DOMImplementation,lV=Ec.hasDefaultHTMLNamespace,dV=Ec.isHTMLMimeType,uV=Ec.isValidMimeType,SP=Ec.MIME_TYPE,PE=Ec.NAMESPACE,vP=oV.ParseError,fV=aV.XMLReader;function DP(r){return r.replace(/\r[\n\u0085]/g,` `).replace(/[\r\u0085\u2028\u2029]/g,` -`)}function ZF(r){if(r=r||{},r.locator===void 0&&(r.locator=!0),this.assign=r.assign||wc.assign,this.domHandler=r.domHandler||Ym,this.onError=r.onError||r.errorHandler,r.errorHandler&&typeof r.errorHandler!="function")throw new TypeError("errorHandler object is no longer supported, switch to onError!");r.errorHandler&&r.errorHandler("warning","The `errorHandler` option has been deprecated, use `onError` instead!",this),this.normalizeLineEndings=r.normalizeLineEndings||XF,this.locator=!!r.locator,this.xmlns=this.assign(Object.create(null),r.xmlns)}ZF.prototype.parseFromString=function(r,e){if(!C$(e))throw new TypeError('DOMParser.parseFromString: the provided mimeType "'+e+'" is not valid.');var t=this.assign(Object.create(null),this.xmlns),i=$F.XML_ENTITIES,n=t[""]||null;w$(e)?(i=$F.HTML_ENTITIES,n=gE.HTML):e===WF.XML_SVG_IMAGE&&(n=gE.SVG),t[""]=n,t.xml=t.xml||gE.XML;var s=new this.domHandler({mimeType:e,defaultNamespace:n,onError:this.onError}),o=this.locator?{}:void 0;this.locator&&s.setDocumentLocator(o);var a=new E$;a.errorHandler=s,a.domBuilder=s;var c=!wc.isHTMLMimeType(e);return c&&typeof r!="string"&&a.errorHandler.fatalError("source is not a string"),a.parse(this.normalizeLineEndings(String(r)),t,i),s.doc.documentElement||a.errorHandler.fatalError("missing root element"),s.doc};function Ym(r){var e=r||{};this.mimeType=e.mimeType||WF.XML_APPLICATION,this.defaultNamespace=e.defaultNamespace||null,this.cdata=!1,this.currentElement=void 0,this.doc=void 0,this.locator=void 0,this.onError=e.onError}function Wl(r,e){e.lineNumber=r.lineNumber,e.columnNumber=r.columnNumber}Ym.prototype={startDocument:function(){var r=new I$;this.doc=x$(this.mimeType)?r.createHTMLDocument(!1):r.createDocument(this.defaultNamespace,"")},startElement:function(r,e,t,i){var n=this.doc,s=n.createElementNS(r,t||e),o=i.length;Vm(this,s),this.currentElement=s,this.locator&&Wl(this.locator,s);for(var a=0;a<o;a++){var r=i.getURI(a),c=i.getValue(a),t=i.getQName(a),l=n.createAttributeNS(r,t);this.locator&&Wl(i.getLocator(a),l),l.value=l.nodeValue=c,s.setAttributeNode(l)}},endElement:function(r,e,t){this.currentElement=this.currentElement.parentNode},startPrefixMapping:function(r,e){},endPrefixMapping:function(r){},processingInstruction:function(r,e){var t=this.doc.createProcessingInstruction(r,e);this.locator&&Wl(this.locator,t),Vm(this,t)},ignorableWhitespace:function(r,e,t){},characters:function(r,e,t){if(r=YF.apply(this,arguments),r){if(this.cdata)var i=this.doc.createCDATASection(r);else var i=this.doc.createTextNode(r);this.currentElement?this.currentElement.appendChild(i):/^\s*$/.test(r)&&this.doc.appendChild(i),this.locator&&Wl(this.locator,i)}},skippedEntity:function(r){},endDocument:function(){this.doc.normalize()},setDocumentLocator:function(r){r&&(r.lineNumber=0),this.locator=r},comment:function(r,e,t){r=YF.apply(this,arguments);var i=this.doc.createComment(r);this.locator&&Wl(this.locator,i),Vm(this,i)},startCDATA:function(){this.cdata=!0},endCDATA:function(){this.cdata=!1},startDTD:function(r,e,t,i){var n=this.doc.implementation;if(n&&n.createDocumentType){var s=n.createDocumentType(r,e,t,i);this.locator&&Wl(this.locator,s),Vm(this,s),this.doc.doctype=s}},reportError:function(r,e){if(typeof this.onError=="function")try{this.onError(r,e,this)}catch(t){throw new VF("Reporting "+r+' "'+e+'" caused '+t,this.locator)}else console.error("[xmldom "+r+"] "+e,B$(this.locator))},warning:function(r){this.reportError("warning",r)},error:function(r){this.reportError("error",r)},fatalError:function(r,e){throw this.reportError("fatalError",r),new VF(r,this.locator,e)}};function B$(r){if(r)return` -@#[line:`+r.lineNumber+",col:"+r.columnNumber+"]"}function YF(r,e,t){return typeof r=="string"?r.substr(e,t):r.length>=e+t||e?new java.lang.String(r,e,t)+"":r}"endDTD,startEntity,endEntity,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,resolveEntity,getExternalSubset,notationDecl,unparsedEntityDecl".replace(/\w+/g,function(r){Ym.prototype[r]=function(){return null}});function Vm(r,e){r.currentElement?r.currentElement.appendChild(e):r.doc.appendChild(e)}function b$(r){if(r==="error")throw"onErrorStopParsing"}function v$(){throw"onWarningStopParsing"}Xl.__DOMHandler=Ym;Xl.DOMParser=ZF;Xl.normalizeLineEndings=XF;Xl.onErrorStopParsing=b$;Xl.onWarningStopParsing=v$});var tP=oe(ot=>{"use strict";var Zl=yc();ot.assign=Zl.assign;ot.hasDefaultHTMLNamespace=Zl.hasDefaultHTMLNamespace;ot.isHTMLMimeType=Zl.isHTMLMimeType;ot.isValidMimeType=Zl.isValidMimeType;ot.MIME_TYPE=Zl.MIME_TYPE;ot.NAMESPACE=Zl.NAMESPACE;var Wm=ef();ot.DOMException=Wm.DOMException;ot.DOMExceptionName=Wm.DOMExceptionName;ot.ExceptionCode=Wm.ExceptionCode;ot.ParseError=Wm.ParseError;var hr=AE();ot.Attr=hr.Attr;ot.CDATASection=hr.CDATASection;ot.CharacterData=hr.CharacterData;ot.Comment=hr.Comment;ot.Document=hr.Document;ot.DocumentFragment=hr.DocumentFragment;ot.DocumentType=hr.DocumentType;ot.DOMImplementation=hr.DOMImplementation;ot.Element=hr.Element;ot.Entity=hr.Entity;ot.EntityReference=hr.EntityReference;ot.LiveNodeList=hr.LiveNodeList;ot.NamedNodeMap=hr.NamedNodeMap;ot.Node=hr.Node;ot.NodeList=hr.NodeList;ot.Notation=hr.Notation;ot.ProcessingInstruction=hr.ProcessingInstruction;ot.Text=hr.Text;ot.XMLSerializer=hr.XMLSerializer;var Xm=eP();ot.DOMParser=Xm.DOMParser;ot.normalizeLineEndings=Xm.normalizeLineEndings;ot.onErrorStopParsing=Xm.onErrorStopParsing;ot.onWarningStopParsing=Xm.onWarningStopParsing});function rP(r){if(typeof r=="string")return r.trim()||void 0;if(typeof r=="number"||typeof r=="boolean")return String(r);if(Array.isArray(r)&&r.length>0){let e=r[0];return(e?.nodeValue??e?.textContent??"").trim()||void 0}}function S$(r){let e=r;return e=e.replace(/<!DOCTYPE[^>]*>/gi,""),e=e.replace(/<!--[\s\S]*?-->/g,""),e=e.replace(new RegExp(`<(${k$})([^>]*?)/?>`,"gi"),"<$1$2/>"),e}function nP(r,e,t,i,n,s){let o=new iP.DOMParser({onError:()=>{}}).parseFromString(S$(r),"text/xml"),a=hf.select(e,o),c=[];for(let l of a)try{let d=hf.select(t,l);if(d.length===0)continue;let u=d[0],f="",h="";if(u.nodeType===1){let y=u;f=y.textContent?.trim()||"",h=y.getAttribute("href")||""}else if(u.nodeType===2){let y=u;f=y.value.trim(),h=y.value}else f=u.textContent?.trim()||"";let g=f.endsWith("/");if(g&&(f=f.slice(0,-1)),!f||s.includes(f))continue;let p=rP(hf.select(i,l)),I=rP(hf.select(n,l));c.push({name:f,url:h,isDir:g,size:p,modified:I})}catch{}return c}function Q$(r){for(let e=r.length-1;e>=0;e--)if(r[e]>="0"&&r[e]<="9")return[r.slice(0,e+1).trim(),r.slice(e+1).trim()];return["",r]}function sP(r){if(!r||r.trim()==="-")return 0;let e=r.trim(),[t,i]=Q$(e),n=i.toLowerCase(),s=D$[n]??1,o=parseFloat(t);return isNaN(o)?0:Math.round(o*s)}function oP(r,e){if(!r)return new Date().toISOString();try{let t=r.match(/(\d{4})-(\d{2})-(\d{2})\s+(\d{2}):(\d{2})/);if(t){let[,n,s,o,a,c]=t;return new Date(`${n}-${s}-${o}T${a}:${c}:00`).toISOString()}let i=new Date(r);if(!isNaN(i.getTime()))return i.toISOString()}catch{}return new Date().toISOString()}var hf,iP,k$,D$,aP=V(()=>{"use strict";hf=Dr(Y4(),1),iP=Dr(tP(),1);k$="area|base|br|col|embed|hr|img|input|link|meta|param|source|track|wbr";D$={"":1,b:1,byte:1,bytes:1,k:1024,kb:1024,kib:1024,m:1<<20,mb:1<<20,mib:1<<20,g:1<<30,gb:1<<30,gib:1<<30,t:256,tb:256,tib:256,p:1<<50,pb:1<<50,pib:1<<50}});function _$(r){let e={...r||{}};return e.url=(e.url||"").trim(),e.url&&!/:\/\//.test(e.url)&&(e.url="https://"+e.url),e.url&&!e.url.endsWith("/")&&(e.url+="/"),e.item_xpath=e.item_xpath||cP,e.name_xpath=e.name_xpath||lP,e.size_xpath=e.size_xpath||dP,e.modified_xpath=e.modified_xpath||uP,e.modified_time_format=e.modified_time_format||"",e.ignore_file_names=e.ignore_file_names||"",e}var cP,lP,dP,uP,Zm,fP=V(()=>{"use strict";Be();He();aP();cP="//pre/a",lP="@href",dP="string(following-sibling::text()[1])",uP="string(following-sibling::text()[2])";Zm=class{addition;ignoreNames=[];constructor(e){this.addition=_$(e),this.addition.ignore_file_names&&(this.ignoreNames=this.addition.ignore_file_names.split(/\r?\n|,/).map(t=>t.trim()).filter(t=>t))}async init(){if(!this.addition.url)throw new Error("url is required")}cleanRel(e){return(e||"").split("/").filter(Boolean).join("/")}buildDirURL(e){let t=this.cleanRel(e);return this.addition.url+t+(t?"/":"")}nodeToFileItem(e,t){let i=new URL(e.url,t).toString(),n=e.isDir;return{name:e.name,size:e.size?sP(e.size):0,is_dir:n,modified:e.modified?oP(e.modified,this.addition.modified_time_format||""):new Date().toISOString(),sign:"",type:X(e.name,n),raw_url:n?"":i}}async list(e,t){let i=this.buildDirURL(t),n=await fetch(i);if(!n.ok)throw new Error(`Failed to fetch ${i}: HTTP ${n.status}`);let s=await n.text(),a=nP(s,this.addition.item_xpath||cP,this.addition.name_xpath||lP,this.addition.size_xpath||dP,this.addition.modified_xpath||uP,this.ignoreNames).filter(c=>c.name!==".."&&c.name!==".").map(c=>this.nodeToFileItem(c,i));return de(a,"name","asc")}async get(e,t){let i=this.cleanRel(t),n=i.split("/").filter(Boolean).pop()||"root";if(!i)return{name:"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:this.addition.url,type:1};let s=this.addition.url+i;return{name:n,size:0,is_dir:!1,modified:new Date().toISOString(),sign:s,type:X(n,!1),raw_url:s}}async mkdir(e,t){throw new Error("AutoIndex is read-only")}async rename(e,t,i){throw new Error("AutoIndex is read-only")}async remove(e,t,i){throw new Error("AutoIndex is read-only")}async move(e,t,i,n,s){throw new Error("AutoIndex is read-only")}async copy(e,t,i,n,s){throw new Error("AutoIndex is read-only")}async put(e,t,i){throw new Error("AutoIndex is read-only")}}});var ra,AP,hP,gP,pP,mP,yP,Yme,IP,Wme,wP,xP,CP,EP,Xme,BP,pE=V(()=>{"use strict";ra="https://drive.proton.me/api",AP="https://account.proton.me/api/auth/info",hP="https://account.proton.me/api/auth/v4",gP="https://account.proton.me/api/auth/v4/2fa",pP="https://account.proton.me/api/auth/v4/refresh",mP=ra+"/core/v4/keys/salts",yP=ra+"/core/v4/users",Yme=ra+"/core/v4/addresses",IP=ra+"/drive/shares",Wme=ra+"/drive/volumes",wP="application/vnd.protonmail.v1+json",xP="js@0.3.0",CP="ProtonDrive/v1.70.0 (Windows NT 10.0.22000; Win64; x64)",EP="web-drive@5.2.0+0f69f7a8",Xme=4*1024*1024,BP=1});var vP=oe((bP,ia)=>{(function(r,e){typeof define=="function"&&define.amd?define([],e):typeof wt=="function"&&typeof ia=="object"&&ia&&ia.exports?ia.exports=e():(r.dcodeIO=r.dcodeIO||{}).bcrypt=e()})(bP,function(){"use strict";var r={},e=null;function t(D){if(typeof ia<"u"&&ia&&ia.exports)try{return wt("crypto").randomBytes(D)}catch{}try{var B;return(self.crypto||self.msCrypto).getRandomValues(B=new Uint32Array(D)),Array.prototype.slice.call(B)}catch{}if(!e)throw Error("Neither WebCryptoAPI nor a crypto module is available. Use bcrypt.setRandomFallback to set an alternative");return e(D)}var i=!1;try{t(1),i=!0}catch{}e=null,r.setRandomFallback=function(D){e=D},r.genSaltSync=function(D,B){if(D=D||g,typeof D!="number")throw Error("Illegal arguments: "+typeof D+", "+typeof B);D<4?D=4:D>31&&(D=31);var Q=[];return Q.push("$2a$"),D<10&&Q.push("0"),Q.push(D.toString()),Q.push("$"),Q.push(d(t(h),h)),Q.join("")},r.genSalt=function(D,B,Q){if(typeof B=="function"&&(Q=B,B=void 0),typeof D=="function"&&(Q=D,D=void 0),typeof D>"u")D=g;else if(typeof D!="number")throw Error("illegal arguments: "+typeof D);function v(E){s(function(){try{E(null,r.genSaltSync(D))}catch(P){E(P)}})}if(Q){if(typeof Q!="function")throw Error("Illegal callback: "+typeof Q);v(Q)}else return new Promise(function(E,P){v(function(N,J){if(N){P(N);return}E(J)})})},r.hashSync=function(D,B){if(typeof B>"u"&&(B=g),typeof B=="number"&&(B=r.genSaltSync(B)),typeof D!="string"||typeof B!="string")throw Error("Illegal arguments: "+typeof D+", "+typeof B);return T(D,B)},r.hash=function(D,B,Q,v){function E(P){typeof D=="string"&&typeof B=="number"?r.genSalt(B,function(N,J){T(D,J,P,v)}):typeof D=="string"&&typeof B=="string"?T(D,B,P,v):s(P.bind(this,Error("Illegal arguments: "+typeof D+", "+typeof B)))}if(Q){if(typeof Q!="function")throw Error("Illegal callback: "+typeof Q);E(Q)}else return new Promise(function(P,N){E(function(J,z){if(J){N(J);return}P(z)})})};function n(D,B){for(var Q=0,v=0,E=0,P=D.length;E<P;++E)D.charCodeAt(E)===B.charCodeAt(E)?++Q:++v;return Q<0?!1:v===0}r.compareSync=function(D,B){if(typeof D!="string"||typeof B!="string")throw Error("Illegal arguments: "+typeof D+", "+typeof B);return B.length!==60?!1:n(r.hashSync(D,B.substr(0,B.length-31)),B)},r.compare=function(D,B,Q,v){function E(P){if(typeof D!="string"||typeof B!="string"){s(P.bind(this,Error("Illegal arguments: "+typeof D+", "+typeof B)));return}if(B.length!==60){s(P.bind(this,null,!1));return}r.hash(D,B.substr(0,29),function(N,J){N?P(N):P(null,n(J,B))},v)}if(Q){if(typeof Q!="function")throw Error("Illegal callback: "+typeof Q);E(Q)}else return new Promise(function(P,N){E(function(J,z){if(J){N(J);return}P(z)})})},r.getRounds=function(D){if(typeof D!="string")throw Error("Illegal arguments: "+typeof D);return parseInt(D.split("$")[2],10)},r.getSalt=function(D){if(typeof D!="string")throw Error("Illegal arguments: "+typeof D);if(D.length!==60)throw Error("Illegal hash length: "+D.length+" != 60");return D.substring(0,29)};var s=typeof process<"u"&&process&&typeof process.nextTick=="function"?typeof setImmediate=="function"?setImmediate:process.nextTick:setTimeout;function o(D){var B=[],Q=0;return f.encodeUTF16toUTF8(function(){return Q>=D.length?null:D.charCodeAt(Q++)},function(v){B.push(v)}),B}var a="./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".split(""),c=[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,1,54,55,56,57,58,59,60,61,62,63,-1,-1,-1,-1,-1,-1,-1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,-1,-1,-1,-1,-1,-1,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,-1,-1,-1,-1,-1],l=String.fromCharCode;function d(D,B){var Q=0,v=[],E,P;if(B<=0||B>D.length)throw Error("Illegal len: "+B);for(;Q<B;){if(E=D[Q++]&255,v.push(a[E>>2&63]),E=(E&3)<<4,Q>=B){v.push(a[E&63]);break}if(P=D[Q++]&255,E|=P>>4&15,v.push(a[E&63]),E=(P&15)<<2,Q>=B){v.push(a[E&63]);break}P=D[Q++]&255,E|=P>>6&3,v.push(a[E&63]),v.push(a[P&63])}return v.join("")}function u(D,B){var Q=0,v=D.length,E=0,P=[],N,J,z,L,G,K;if(B<=0)throw Error("Illegal len: "+B);for(;Q<v-1&&E<B&&(K=D.charCodeAt(Q++),N=K<c.length?c[K]:-1,K=D.charCodeAt(Q++),J=K<c.length?c[K]:-1,!(N==-1||J==-1||(G=N<<2>>>0,G|=(J&48)>>4,P.push(l(G)),++E>=B||Q>=v)||(K=D.charCodeAt(Q++),z=K<c.length?c[K]:-1,z==-1)||(G=(J&15)<<4>>>0,G|=(z&60)>>2,P.push(l(G)),++E>=B||Q>=v)));)K=D.charCodeAt(Q++),L=K<c.length?c[K]:-1,G=(z&3)<<6>>>0,G|=L,P.push(l(G)),++E;var j=[];for(Q=0;Q<E;Q++)j.push(P[Q].charCodeAt(0));return j}var f=(function(){"use strict";var D={};return D.MAX_CODEPOINT=1114111,D.encodeUTF8=function(B,Q){var v=null;for(typeof B=="number"&&(v=B,B=function(){return null});v!==null||(v=B())!==null;)v<128?Q(v&127):v<2048?(Q(v>>6&31|192),Q(v&63|128)):v<65536?(Q(v>>12&15|224),Q(v>>6&63|128),Q(v&63|128)):(Q(v>>18&7|240),Q(v>>12&63|128),Q(v>>6&63|128),Q(v&63|128)),v=null},D.decodeUTF8=function(B,Q){for(var v,E,P,N,J=function(z){z=z.slice(0,z.indexOf(null));var L=Error(z.toString());throw L.name="TruncatedError",L.bytes=z,L};(v=B())!==null;)if((v&128)===0)Q(v);else if((v&224)===192)(E=B())===null&&J([v,E]),Q((v&31)<<6|E&63);else if((v&240)===224)((E=B())===null||(P=B())===null)&&J([v,E,P]),Q((v&15)<<12|(E&63)<<6|P&63);else if((v&248)===240)((E=B())===null||(P=B())===null||(N=B())===null)&&J([v,E,P,N]),Q((v&7)<<18|(E&63)<<12|(P&63)<<6|N&63);else throw RangeError("Illegal starting byte: "+v)},D.UTF16toUTF8=function(B,Q){for(var v,E=null;(v=E!==null?E:B())!==null;){if(v>=55296&&v<=57343&&(E=B())!==null&&E>=56320&&E<=57343){Q((v-55296)*1024+E-56320+65536),E=null;continue}Q(v)}E!==null&&Q(E)},D.UTF8toUTF16=function(B,Q){var v=null;for(typeof B=="number"&&(v=B,B=function(){return null});v!==null||(v=B())!==null;)v<=65535?Q(v):(v-=65536,Q((v>>10)+55296),Q(v%1024+56320)),v=null},D.encodeUTF16toUTF8=function(B,Q){D.UTF16toUTF8(B,function(v){D.encodeUTF8(v,Q)})},D.decodeUTF8toUTF16=function(B,Q){D.decodeUTF8(B,function(v){D.UTF8toUTF16(v,Q)})},D.calculateCodePoint=function(B){return B<128?1:B<2048?2:B<65536?3:4},D.calculateUTF8=function(B){for(var Q,v=0;(Q=B())!==null;)v+=D.calculateCodePoint(Q);return v},D.calculateUTF16asUTF8=function(B){var Q=0,v=0;return D.UTF16toUTF8(B,function(E){++Q,v+=D.calculateCodePoint(E)}),[Q,v]},D})();Date.now=Date.now||function(){return+new Date};var h=16,g=10,p=16,I=100,y=[608135816,2242054355,320440878,57701188,2752067618,698298832,137296536,3964562569,1160258022,953160567,3193202383,887688300,3232508343,3380367581,1065670069,3041331479,2450970073,2306472731],w=[3509652390,2564797868,805139163,3491422135,3101798381,1780907670,3128725573,4046225305,614570311,3012652279,134345442,2240740374,1667834072,1901547113,2757295779,4103290238,227898511,1921955416,1904987480,2182433518,2069144605,3260701109,2620446009,720527379,3318853667,677414384,3393288472,3101374703,2390351024,1614419982,1822297739,2954791486,3608508353,3174124327,2024746970,1432378464,3864339955,2857741204,1464375394,1676153920,1439316330,715854006,3033291828,289532110,2706671279,2087905683,3018724369,1668267050,732546397,1947742710,3462151702,2609353502,2950085171,1814351708,2050118529,680887927,999245976,1800124847,3300911131,1713906067,1641548236,4213287313,1216130144,1575780402,4018429277,3917837745,3693486850,3949271944,596196993,3549867205,258830323,2213823033,772490370,2760122372,1774776394,2652871518,566650946,4142492826,1728879713,2882767088,1783734482,3629395816,2517608232,2874225571,1861159788,326777828,3124490320,2130389656,2716951837,967770486,1724537150,2185432712,2364442137,1164943284,2105845187,998989502,3765401048,2244026483,1075463327,1455516326,1322494562,910128902,469688178,1117454909,936433444,3490320968,3675253459,1240580251,122909385,2157517691,634681816,4142456567,3825094682,3061402683,2540495037,79693498,3249098678,1084186820,1583128258,426386531,1761308591,1047286709,322548459,995290223,1845252383,2603652396,3431023940,2942221577,3202600964,3727903485,1712269319,422464435,3234572375,1170764815,3523960633,3117677531,1434042557,442511882,3600875718,1076654713,1738483198,4213154764,2393238008,3677496056,1014306527,4251020053,793779912,2902807211,842905082,4246964064,1395751752,1040244610,2656851899,3396308128,445077038,3742853595,3577915638,679411651,2892444358,2354009459,1767581616,3150600392,3791627101,3102740896,284835224,4246832056,1258075500,768725851,2589189241,3069724005,3532540348,1274779536,3789419226,2764799539,1660621633,3471099624,4011903706,913787905,3497959166,737222580,2514213453,2928710040,3937242737,1804850592,3499020752,2949064160,2386320175,2390070455,2415321851,4061277028,2290661394,2416832540,1336762016,1754252060,3520065937,3014181293,791618072,3188594551,3933548030,2332172193,3852520463,3043980520,413987798,3465142937,3030929376,4245938359,2093235073,3534596313,375366246,2157278981,2479649556,555357303,3870105701,2008414854,3344188149,4221384143,3956125452,2067696032,3594591187,2921233993,2428461,544322398,577241275,1471733935,610547355,4027169054,1432588573,1507829418,2025931657,3646575487,545086370,48609733,2200306550,1653985193,298326376,1316178497,3007786442,2064951626,458293330,2589141269,3591329599,3164325604,727753846,2179363840,146436021,1461446943,4069977195,705550613,3059967265,3887724982,4281599278,3313849956,1404054877,2845806497,146425753,1854211946,1266315497,3048417604,3681880366,3289982499,290971e4,1235738493,2632868024,2414719590,3970600049,1771706367,1449415276,3266420449,422970021,1963543593,2690192192,3826793022,1062508698,1531092325,1804592342,2583117782,2714934279,4024971509,1294809318,4028980673,1289560198,2221992742,1669523910,35572830,157838143,1052438473,1016535060,1802137761,1753167236,1386275462,3080475397,2857371447,1040679964,2145300060,2390574316,1461121720,2956646967,4031777805,4028374788,33600511,2920084762,1018524850,629373528,3691585981,3515945977,2091462646,2486323059,586499841,988145025,935516892,3367335476,2599673255,2839830854,265290510,3972581182,2759138881,3795373465,1005194799,847297441,406762289,1314163512,1332590856,1866599683,4127851711,750260880,613907577,1450815602,3165620655,3734664991,3650291728,3012275730,3704569646,1427272223,778793252,1343938022,2676280711,2052605720,1946737175,3164576444,3914038668,3967478842,3682934266,1661551462,3294938066,4011595847,840292616,3712170807,616741398,312560963,711312465,1351876610,322626781,1910503582,271666773,2175563734,1594956187,70604529,3617834859,1007753275,1495573769,4069517037,2549218298,2663038764,504708206,2263041392,3941167025,2249088522,1514023603,1998579484,1312622330,694541497,2582060303,2151582166,1382467621,776784248,2618340202,3323268794,2497899128,2784771155,503983604,4076293799,907881277,423175695,432175456,1378068232,4145222326,3954048622,3938656102,3820766613,2793130115,2977904593,26017576,3274890735,3194772133,1700274565,1756076034,4006520079,3677328699,720338349,1533947780,354530856,688349552,3973924725,1637815568,332179504,3949051286,53804574,2852348879,3044236432,1282449977,3583942155,3416972820,4006381244,1617046695,2628476075,3002303598,1686838959,431878346,2686675385,1700445008,1080580658,1009431731,832498133,3223435511,2605976345,2271191193,2516031870,1648197032,4164389018,2548247927,300782431,375919233,238389289,3353747414,2531188641,2019080857,1475708069,455242339,2609103871,448939670,3451063019,1395535956,2413381860,1841049896,1491858159,885456874,4264095073,4001119347,1565136089,3898914787,1108368660,540939232,1173283510,2745871338,3681308437,4207628240,3343053890,4016749493,1699691293,1103962373,3625875870,2256883143,3830138730,1031889488,3479347698,1535977030,4236805024,3251091107,2132092099,1774941330,1199868427,1452454533,157007616,2904115357,342012276,595725824,1480756522,206960106,497939518,591360097,863170706,2375253569,3596610801,1814182875,2094937945,3421402208,1082520231,3463918190,2785509508,435703966,3908032597,1641649973,2842273706,3305899714,1510255612,2148256476,2655287854,3276092548,4258621189,236887753,3681803219,274041037,1734335097,3815195456,3317970021,1899903192,1026095262,4050517792,356393447,2410691914,3873677099,3682840055,3913112168,2491498743,4132185628,2489919796,1091903735,1979897079,3170134830,3567386728,3557303409,857797738,1136121015,1342202287,507115054,2535736646,337727348,3213592640,1301675037,2528481711,1895095763,1721773893,3216771564,62756741,2142006736,835421444,2531993523,1442658625,3659876326,2882144922,676362277,1392781812,170690266,3921047035,1759253602,3611846912,1745797284,664899054,1329594018,3901205900,3045908486,2062866102,2865634940,3543621612,3464012697,1080764994,553557557,3656615353,3996768171,991055499,499776247,1265440854,648242737,3940784050,980351604,3713745714,1749149687,3396870395,4211799374,3640570775,1161844396,3125318951,1431517754,545492359,4268468663,3499529547,1437099964,2702547544,3433638243,2581715763,2787789398,1060185593,1593081372,2418618748,4260947970,69676912,2159744348,86519011,2512459080,3838209314,1220612927,3339683548,133810670,1090789135,1078426020,1569222167,845107691,3583754449,4072456591,1091646820,628848692,1613405280,3757631651,526609435,236106946,48312990,2942717905,3402727701,1797494240,859738849,992217954,4005476642,2243076622,3870952857,3732016268,765654824,3490871365,2511836413,1685915746,3888969200,1414112111,2273134842,3281911079,4080962846,172450625,2569994100,980381355,4109958455,2819808352,2716589560,2568741196,3681446669,3329971472,1835478071,660984891,3704678404,4045999559,3422617507,3040415634,1762651403,1719377915,3470491036,2693910283,3642056355,3138596744,1364962596,2073328063,1983633131,926494387,3423689081,2150032023,4096667949,1749200295,3328846651,309677260,2016342300,1779581495,3079819751,111262694,1274766160,443224088,298511866,1025883608,3806446537,1145181785,168956806,3641502830,3584813610,1689216846,3666258015,3200248200,1692713982,2646376535,4042768518,1618508792,1610833997,3523052358,4130873264,2001055236,3610705100,2202168115,4028541809,2961195399,1006657119,2006996926,3186142756,1430667929,3210227297,1314452623,4074634658,4101304120,2273951170,1399257539,3367210612,3027628629,1190975929,2062231137,2333990788,2221543033,2438960610,1181637006,548689776,2362791313,3372408396,3104550113,3145860560,296247880,1970579870,3078560182,3769228297,1714227617,3291629107,3898220290,166772364,1251581989,493813264,448347421,195405023,2709975567,677966185,3703036547,1463355134,2715995803,1338867538,1343315457,2802222074,2684532164,233230375,2599980071,2000651841,3277868038,1638401717,4028070440,3237316320,6314154,819756386,300326615,590932579,1405279636,3267499572,3150704214,2428286686,3959192993,3461946742,1862657033,1266418056,963775037,2089974820,2263052895,1917689273,448879540,3550394620,3981727096,150775221,3627908307,1303187396,508620638,2975983352,2726630617,1817252668,1876281319,1457606340,908771278,3720792119,3617206836,2455994898,1729034894,1080033504,976866871,3556439503,2881648439,1522871579,1555064734,1336096578,3548522304,2579274686,3574697629,3205460757,3593280638,3338716283,3079412587,564236357,2993598910,1781952180,1464380207,3163844217,3332601554,1699332808,1393555694,1183702653,3581086237,1288719814,691649499,2847557200,2895455976,3193889540,2717570544,1781354906,1676643554,2592534050,3230253752,1126444790,2770207658,2633158820,2210423226,2615765581,2414155088,3127139286,673620729,2805611233,1269405062,4015350505,3341807571,4149409754,1057255273,2012875353,2162469141,2276492801,2601117357,993977747,3918593370,2654263191,753973209,36408145,2530585658,25011837,3520020182,2088578344,530523599,2918365339,1524020338,1518925132,3760827505,3759777254,1202760957,3985898139,3906192525,674977740,4174734889,2031300136,2019492241,3983892565,4153806404,3822280332,352677332,2297720250,60907813,90501309,3286998549,1016092578,2535922412,2839152426,457141659,509813237,4120667899,652014361,1966332200,2975202805,55981186,2327461051,676427537,3255491064,2882294119,3433927263,1307055953,942726286,933058658,2468411793,3933900994,4215176142,1361170020,2001714738,2830558078,3274259782,1222529897,1679025792,2729314320,3714953764,1770335741,151462246,3013232138,1682292957,1483529935,471910574,1539241949,458788160,3436315007,1807016891,3718408830,978976581,1043663428,3165965781,1927990952,4200891579,2372276910,3208408903,3533431907,1412390302,2931980059,4132332400,1947078029,3881505623,4168226417,2941484381,1077988104,1320477388,886195818,18198404,3786409e3,2509781533,112762804,3463356488,1866414978,891333506,18488651,661792760,1628790961,3885187036,3141171499,876946877,2693282273,1372485963,791857591,2686433993,3759982718,3167212022,3472953795,2716379847,445679433,3561995674,3504004811,3574258232,54117162,3331405415,2381918588,3769707343,4154350007,1140177722,4074052095,668550556,3214352940,367459370,261225585,2610173221,4209349473,3468074219,3265815641,314222801,3066103646,3808782860,282218597,3406013506,3773591054,379116347,1285071038,846784868,2669647154,3771962079,3550491691,2305946142,453669953,1268987020,3317592352,3279303384,3744833421,2610507566,3859509063,266596637,3847019092,517658769,3462560207,3443424879,370717030,4247526661,2224018117,4143653529,4112773975,2788324899,2477274417,1456262402,2901442914,1517677493,1846949527,2295493580,3734397586,2176403920,1280348187,1908823572,3871786941,846861322,1172426758,3287448474,3383383037,1655181056,3139813346,901632758,1897031941,2986607138,3066810236,3447102507,1393639104,373351379,950779232,625454576,3124240540,4148612726,2007998917,544563296,2244738638,2330496472,2058025392,1291430526,424198748,50039436,29584100,3605783033,2429876329,2791104160,1057563949,3255363231,3075367218,3463963227,1469046755,985887462],C=[1332899944,1700884034,1701343084,1684370003,1668446532,1869963892];function b(D,B,Q,v){var E,P=D[B],N=D[B+1];return P^=Q[0],E=v[P>>>24],E+=v[256|P>>16&255],E^=v[512|P>>8&255],E+=v[768|P&255],N^=E^Q[1],E=v[N>>>24],E+=v[256|N>>16&255],E^=v[512|N>>8&255],E+=v[768|N&255],P^=E^Q[2],E=v[P>>>24],E+=v[256|P>>16&255],E^=v[512|P>>8&255],E+=v[768|P&255],N^=E^Q[3],E=v[N>>>24],E+=v[256|N>>16&255],E^=v[512|N>>8&255],E+=v[768|N&255],P^=E^Q[4],E=v[P>>>24],E+=v[256|P>>16&255],E^=v[512|P>>8&255],E+=v[768|P&255],N^=E^Q[5],E=v[N>>>24],E+=v[256|N>>16&255],E^=v[512|N>>8&255],E+=v[768|N&255],P^=E^Q[6],E=v[P>>>24],E+=v[256|P>>16&255],E^=v[512|P>>8&255],E+=v[768|P&255],N^=E^Q[7],E=v[N>>>24],E+=v[256|N>>16&255],E^=v[512|N>>8&255],E+=v[768|N&255],P^=E^Q[8],E=v[P>>>24],E+=v[256|P>>16&255],E^=v[512|P>>8&255],E+=v[768|P&255],N^=E^Q[9],E=v[N>>>24],E+=v[256|N>>16&255],E^=v[512|N>>8&255],E+=v[768|N&255],P^=E^Q[10],E=v[P>>>24],E+=v[256|P>>16&255],E^=v[512|P>>8&255],E+=v[768|P&255],N^=E^Q[11],E=v[N>>>24],E+=v[256|N>>16&255],E^=v[512|N>>8&255],E+=v[768|N&255],P^=E^Q[12],E=v[P>>>24],E+=v[256|P>>16&255],E^=v[512|P>>8&255],E+=v[768|P&255],N^=E^Q[13],E=v[N>>>24],E+=v[256|N>>16&255],E^=v[512|N>>8&255],E+=v[768|N&255],P^=E^Q[14],E=v[P>>>24],E+=v[256|P>>16&255],E^=v[512|P>>8&255],E+=v[768|P&255],N^=E^Q[15],E=v[N>>>24],E+=v[256|N>>16&255],E^=v[512|N>>8&255],E+=v[768|N&255],P^=E^Q[16],D[B]=N^Q[p+1],D[B+1]=P,D}function x(D,B){for(var Q=0,v=0;Q<4;++Q)v=v<<8|D[B]&255,B=(B+1)%D.length;return{key:v,offp:B}}function _(D,B,Q){for(var v=0,E=[0,0],P=B.length,N=Q.length,J,z=0;z<P;z++)J=x(D,v),v=J.offp,B[z]=B[z]^J.key;for(z=0;z<P;z+=2)E=b(E,0,B,Q),B[z]=E[0],B[z+1]=E[1];for(z=0;z<N;z+=2)E=b(E,0,B,Q),Q[z]=E[0],Q[z+1]=E[1]}function R(D,B,Q,v){for(var E=0,P=[0,0],N=Q.length,J=v.length,z,L=0;L<N;L++)z=x(B,E),E=z.offp,Q[L]=Q[L]^z.key;for(E=0,L=0;L<N;L+=2)z=x(D,E),E=z.offp,P[0]^=z.key,z=x(D,E),E=z.offp,P[1]^=z.key,P=b(P,0,Q,v),Q[L]=P[0],Q[L+1]=P[1];for(L=0;L<J;L+=2)z=x(D,E),E=z.offp,P[0]^=z.key,z=x(D,E),E=z.offp,P[1]^=z.key,P=b(P,0,Q,v),v[L]=P[0],v[L+1]=P[1]}function U(D,B,Q,v,E){var P=C.slice(),N=P.length,J;if(Q<4||Q>31)if(J=Error("Illegal number of rounds (4-31): "+Q),v){s(v.bind(this,J));return}else throw J;if(B.length!==h)if(J=Error("Illegal salt length: "+B.length+" != "+h),v){s(v.bind(this,J));return}else throw J;Q=1<<Q>>>0;var z,L,G=0,K;Int32Array?(z=new Int32Array(y),L=new Int32Array(w)):(z=y.slice(),L=w.slice()),R(B,D,z,L);function j(){if(E&&E(G/Q),G<Q)for(var re=Date.now();G<Q&&(G=G+1,_(D,z,L),_(B,z,L),!(Date.now()-re>I)););else{for(G=0;G<64;G++)for(K=0;K<N>>1;K++)b(P,K<<1,z,L);var ee=[];for(G=0;G<N;G++)ee.push((P[G]>>24&255)>>>0),ee.push((P[G]>>16&255)>>>0),ee.push((P[G]>>8&255)>>>0),ee.push((P[G]&255)>>>0);if(v){v(null,ee);return}else return ee}v&&s(j)}if(typeof v<"u")j();else for(var te;;)if(typeof(te=j())<"u")return te||[]}function T(D,B,Q,v){var E;if(typeof D!="string"||typeof B!="string")if(E=Error("Invalid string / salt: Not a string"),Q){s(Q.bind(this,E));return}else throw E;var P,N;if(B.charAt(0)!=="$"||B.charAt(1)!=="2")if(E=Error("Invalid salt version: "+B.substring(0,2)),Q){s(Q.bind(this,E));return}else throw E;if(B.charAt(2)==="$")P="\0",N=3;else{if(P=B.charAt(2),P!=="a"&&P!=="b"&&P!=="y"||B.charAt(3)!=="$")if(E=Error("Invalid salt revision: "+B.substring(2,4)),Q){s(Q.bind(this,E));return}else throw E;N=4}if(B.charAt(N+2)>"$")if(E=Error("Missing salt rounds"),Q){s(Q.bind(this,E));return}else throw E;var J=parseInt(B.substring(N,N+1),10)*10,z=parseInt(B.substring(N+1,N+2),10),L=J+z,G=B.substring(N+3,N+25);D+=P>="a"?"\0":"";var K=o(D),j=u(G,h);function te(re){var ee=[];return ee.push("$2"),P>="a"&&ee.push(P),ee.push("$"),L<10&&ee.push("0"),ee.push(L.toString()),ee.push("$"),ee.push(d(j,j.length)),ee.push(d(re,C.length*4-1)),ee.join("")}if(typeof Q>"u")return te(U(K,j,L));U(K,j,L,function(re,ee){re?Q(re,null):Q(null,te(ee))},v)}return r.encodeBase64=d,r.decodeBase64=u,r})});var mE=oe((tye,kP)=>{kP.exports=vP()});function ed(r){let e="0x";for(let t of r)e+=t.toString(16).padStart(2,"0");return BigInt(e)}function gf(r,e){let t=r.toString(16);t.length%2!==0&&(t="0"+t);let i=new Uint8Array(t.length/2);for(let n=0;n<i.length;n++)i[n]=parseInt(t.slice(n*2,n*2+2),16);if(e!==void 0&&i.length<e){let n=new Uint8Array(e);return n.set(i,e-i.length),n}return i}function F$(...r){let e=r.reduce((n,s)=>n+s.length,0),t=new Uint8Array(e),i=0;for(let n of r)t.set(n,i),i+=n.length;return t}function P$(r,e){let t=Math.max(r.length,e.length),i=new Uint8Array(t);for(let n=0;n<t;n++)i[n]=(r[n]||0)^(e[n]||0);return i}async function xc(...r){let e=r.length===1?r[0]:F$(...r),t=await crypto.subtle.digest("SHA-256",e);return new Uint8Array(t)}function yE(r){let e=atob(r),t=new Uint8Array(e.length);for(let i=0;i<e.length;i++)t[i]=e.charCodeAt(i);return t}function SP(r){let e="";for(let t of r)e+=String.fromCharCode(t);return btoa(e)}function T$(r){return r.length>1&&r[0]===0?r.slice(1):r}function IE(r,e,t){if(t===1n)return 0n;let i=1n,n=r%t,s=e;for(;s>0n;)s&1n&&(i=i*n%t),n=n*n%t,s>>=1n;return i}function U$(r){let e="",t=0,i=0;for(let n of r)for(i=i<<8|n,t+=8;t>=6;)t-=6,e+=wE[i>>t&63];return t>0&&(e+=wE[i<<6-t&63]),e}function R$(r,e,t){if(r<2)return new TextEncoder().encode(e);let n=`$2a$10$${U$(t).padEnd(22,".")}`,o=DP.default.hashSync(e,n).slice(n.length);return N$(o)}function N$(r){let e=[],t=0,i=0;for(let n of r){let s=wE.indexOf(n);s<0||(t=t<<6|s,i+=6,i>=8&&(i-=8,e.push(t>>i&255)))}return new Uint8Array(e)}async function QP(r,e,t){let i=t.Version??4,n=T$(yE(t.Modulus)),s=ed(n),o=ed(yE(t.ServerEphemeral)),a=yE(t.Salt);if(o%s===0n)throw new Error("invalid server ephemeral (B % N == 0)");let c=R$(i,e,a),l=await xc(a,c),d=ed(l),u=crypto.getRandomValues(new Uint8Array(32)),f=ed(u),h=IE(ey,f,s),g=gf(h,n.length),p=0n;if(i>=2){let v=gf(ey,n.length),E=await xc(n,v);p=ed(E)}let I=gf(o,n.length),y=await xc(g,I),w=ed(y),C=IE(ey,d,s),b=(o-p*C%s)%s;b<0n&&(b+=s);let x=f+w*d,_=IE(b,x,s),R=gf(_,n.length),U=await xc(n),T=await xc(gf(ey)),D=await xc(new TextEncoder().encode(r)),B=P$(U,T),Q=await xc(B,D,a,g,I,R);return{ClientEphemeral:SP(g),ClientProof:SP(Q),SRPSession:t.SRPSession}}var DP,ey,wE,_P=V(()=>{"use strict";DP=Dr(mE(),1),ey=2n;wE="./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"});import{createRequire as W5}from"module";import*as Oi from"node:crypto";function q$(r,e){return e.forEach(function(t){t&&typeof t!="string"&&!Array.isArray(t)&&Object.keys(t).forEach(function(i){if(i!=="default"&&!(i in r)){var n=Object.getOwnPropertyDescriptor(t,i);Object.defineProperty(r,i,n.get?n:{enumerable:!0,get:function(){return t[i]}})}})}),Object.freeze(r)}function St(r){return r&&r.getReader&&Array.isArray(r)}function Wf(r){if(!St(r)){let e=r.getWriter(),t=e.releaseLock;return e.releaseLock=()=>{e.closed.catch(function(){}),t.call(e)},e}this.stream=r}function or(r){if(St(r))return"array";if(Zs.ReadableStream&&Zs.ReadableStream.prototype.isPrototypeOf(r))return"web";if(r&&!(Zs.ReadableStream&&r instanceof Zs.ReadableStream)&&typeof r._read=="function"&&typeof r._readableState=="object")throw new Error("Native Node streams are no longer supported: please manually convert the stream to a WebStream, using e.g. `stream.Readable.toWeb`");return r&&r.getReader?"web-like":!1}function oI(r){return Uint8Array.prototype.isPrototypeOf(r)}function e6(r){if(r.length===1)return r[0];let e=0;for(let n=0;n<r.length;n++){if(!oI(r[n]))throw new Error("concatUint8Array: Data must be in the form of a Uint8Array");e+=r[n].length}let t=new Uint8Array(e),i=0;return r.forEach(function(n){t.set(n,i),i+=n.length}),t}function us(r){if(this.stream=r,r[xt]&&(this[xt]=r[xt].slice()),St(r)){let i=r.getReader();this._read=i.read.bind(i),this._releaseLock=()=>{},this._cancel=()=>{};return}if(or(r)){let i=r.getReader();this._read=i.read.bind(i),this._releaseLock=()=>{i.closed.catch(function(){}),i.releaseLock()},this._cancel=i.cancel.bind(i);return}let t=!1;this._read=async()=>t||FP.has(r)?{value:void 0,done:!0}:(t=!0,{value:r,done:!1}),this._releaseLock=()=>{if(t)try{FP.add(r)}catch{}}}function Xf(r){return or(r)?r:new ReadableStream({start(e){e.enqueue(r),e.close()}})}function t6(r){let e=or(r);if(e){if(e!=="array")throw new Error("Can't convert Stream to ArrayStream here, call `readToEnd` first");return r}let t=new sn;return(async()=>{let i=Li(t);await i.write(r),await i.close()})(),t}function li(r){return r.some(e=>or(e)&&!St(e))?O$(r):r.some(e=>St(e))?M$(r):typeof r[0]=="string"?r.join(""):e6(r)}function O$(r){let e=r.map(Xf),t=r6(async function(s){await Promise.all(n.map(o=>XE(o,s)))}),i=Promise.resolve(),n=e.map((s,o)=>Ea(s,(a,c)=>(i=i.then(()=>Sd(a,t.writable,{preventClose:o!==e.length-1})),i)));return t.readable}function M$(r){let e=new sn,t=Promise.resolve();return r.forEach((i,n)=>(t=t.then(()=>Sd(i,e,{preventClose:n!==r.length-1})),t)),e}async function Sd(r,e,{preventClose:t=!1,preventAbort:i=!1,preventCancel:n=!1}={}){if(or(r)&&!St(r)&&!St(e)){r=Xf(r);try{if(r[xt]){let a=Li(e);for(let c=0;c<r[xt].length;c++)await a.ready,await a.write(r[xt][c]);a.releaseLock()}await r.pipeTo(e,{preventClose:t,preventAbort:i,preventCancel:n})}catch{}return}or(r)||(r=t6(r));let s=Sn(r),o=Li(e);try{for(;;){await o.ready;let{done:a,value:c}=await s.read();if(a){t||await o.close();break}await o.write(c)}}catch(a){i||await o.abort(a)}finally{s.releaseLock(),o.releaseLock()}}function r6(r){let e=!1,t=!1,i,n,s;return{readable:new ReadableStream({start(o){s=o},pull(){i?i():e=!0},async cancel(o){t=!0,r&&await r(o),n&&n(o)}},{highWaterMark:0}),writable:new WritableStream({write:async function(o){if(t)throw new Error("Stream is cancelled");s.enqueue(o),e?e=!1:(await new Promise((a,c)=>{i=a,n=c}),i=null,n=null)},close:s.close.bind(s),abort:s.error.bind(s)})}}function sr(r,e=()=>{},t=()=>{},i={highWaterMark:0}){if(or(r))return i6(r,e,t,i);let n=e(r),s=t();return n!==void 0&&s!==void 0?li([n,s]):n!==void 0?n:s}async function WE(r,e=async()=>{},t=async()=>{},i={highWaterMark:1}){if(or(r))return i6(r,e,t,i);let n=await e(r),s=await t();return n!==void 0&&s!==void 0?li([n,s]):n!==void 0?n:s}function i6(r,e,t,i){if(St(r)){let n=new sn;return(async()=>{let s=Li(n);try{let o=await Xt(r),a=await e(o),c=await t(),l;a!==void 0&&c!==void 0?l=li([a,c]):l=a!==void 0?a:c,await s.write(l),await s.close()}catch(o){await s.abort(o)}})(),n}if(or(r)){let n,s=!1;return new ReadableStream({start(){n=r.getReader()},async pull(o){if(s){o.close(),r.releaseLock();return}try{for(;;){let{value:a,done:c}=await n.read();s=c;let l=await(c?t:e)(a);if(l!==void 0){o.enqueue(l);return}if(c){o.close(),r.releaseLock();return}}}catch(a){o.error(a)}},async cancel(o){await n.cancel(o)}},i)}throw new Error("Unreachable")}function Ea(r,e){if(or(r)&&!St(r)){let i,n=new TransformStream({start(a){i=a}}),s=Sd(r,n.writable),o=r6(async function(a){i.error(a),await s,await new Promise(c=>setTimeout(c))});return e(n.readable,o.writable),o.readable}r=t6(r);let t=new sn;return e(r,t),t}function aI(r,e){let t,i=Ea(r,(n,s)=>{let o=Sn(n);o.remainder=()=>(o.releaseLock(),Sd(n,s),i),t=e(o)});return t}function L$(r){if(St(r))throw new Error("ArrayStream cannot be tee()d, use clone() instead");if(or(r)){let e=Xf(r).tee();return e[0][xt]=e[1][xt]=r[xt],e}return[Tr(r),Tr(r)]}function Fc(r){if(St(r))return r.clone();if(or(r)){let e=L$(r);return n6(r,e[0]),e[1]}return Tr(r)}function Df(r){return St(r)?Fc(r):or(r)?new ReadableStream({start(e){let t=Ea(r,async(i,n)=>{let s=Sn(i),o=Li(n);try{for(;;){await o.ready;let{done:a,value:c}=await s.read();if(a){try{e.close()}catch{}await o.close();return}try{e.enqueue(c)}catch{}await o.write(c)}}catch(a){e.error(a),await o.abort(a)}});n6(r,t)}}):Tr(r)}function n6(r,e){Object.entries(Object.getOwnPropertyDescriptors(r.constructor.prototype)).forEach(([t,i])=>{t!=="constructor"&&(i.value?i.value=i.value.bind(e):i.get=i.get.bind(e),Object.defineProperty(r,t,i))})}function Tr(r,e=0,t=1/0){if(St(r))throw new Error("Not implemented");if(or(r)){if(e>=0&&t>=0){let i,n=0;return new ReadableStream({start(){i=r.getReader()},async pull(s){try{for(;;)if(n<t){let{value:o,done:a}=await i.read();if(a){s.close(),r.releaseLock();return}let c;if(n+o.length>=e&&(c=Tr(o,Math.max(e-n,0),t-n)),n+=o.length,c){s.enqueue(c);return}}else{s.close(),r.releaseLock();return}}catch(o){s.error(o)}},async cancel(s){await i.cancel(s)}},{highWaterMark:0})}if(e<0&&(t<0||t===1/0)){let i=[];return sr(r,n=>{n.length>=-e?i=[n]:i.push(n)},()=>Tr(li(i),e,t))}if(e===0&&t<0){let i;return sr(r,n=>{let s=i?li([i,n]):n;if(s.length>=-t)return i=Tr(s,t),Tr(s,e,t);i=s})}return console.warn(`stream.slice(input, ${e}, ${t}) not implemented efficiently.`),Oc(async()=>Tr(await Xt(r),e,t))}return r[xt]&&(r=li(r[xt].concat([r]))),oI(r)?r.subarray(e,t===1/0?r.length:t):r.slice(e,t)}async function Xt(r,e=li){return St(r)?r.readToEnd(e):or(r)?Sn(r).readToEnd(e):r}async function XE(r,e){if(or(r)){if(r.cancel){let t=await r.cancel(e);return await new Promise(i=>setTimeout(i)),t}if(r.destroy)return r.destroy(e),await new Promise(t=>setTimeout(t)),e}}function Oc(r){let e=new sn;return(async()=>{let t=Li(e);try{await t.write(await r()),await t.close()}catch(i){await t.abort(i)}})(),e}function Sn(r){return new us(r)}function Li(r){return new Wf(r)}function Ys(r){let e=new Uint8Array;return sr(r,t=>{e=F.concatUint8Array([e,t]);let i=[],n=45,s=Math.floor(e.length/n),o=s*n,a=Ey(e.subarray(0,o));for(let c=0;c<s;c++)i.push(a.substr(c*60,60)),i.push(` -`);return e=e.subarray(o),i.join("")},()=>e.length?Ey(e)+` -`:"")}function s6(r){let e="";return sr(r,t=>{e+=t;let i=0,n=[" "," ","\r",` -`];for(let a=0;a<n.length;a++){let c=n[a];for(let l=e.indexOf(c);l!==-1;l=e.indexOf(c,l+1))i++}let s=e.length;for(;s>0&&(s-i)%4!==0;s--)n.includes(e[s])&&i--;let o=By(e.substr(0,s));return e=e.substr(s),o},()=>By(e))}function Ii(r){return s6(r.replace(/-/g,"+").replace(/_/g,"/"))}function Pr(r,e){let t=Ys(r).replace(/[\r\n]/g,"");return t=t.replace(/[+]/g,"-").replace(/[/]/g,"_").replace(/[=]/g,""),t}function H$(r){let e=/^-----BEGIN PGP (MESSAGE, PART \d+\/\d+|MESSAGE, PART \d+|SIGNED MESSAGE|MESSAGE|PUBLIC KEY BLOCK|PRIVATE KEY BLOCK|SIGNATURE)-----$/m,t=r.match(e);if(!t)throw new Error("Unknown ASCII armor type");if(/MESSAGE, PART \d+\/\d+/.test(t[1]))return m.armor.multipartSection;if(/MESSAGE, PART \d+/.test(t[1]))return m.armor.multipartLast;if(/SIGNED MESSAGE/.test(t[1]))return m.armor.signed;if(/MESSAGE/.test(t[1]))return m.armor.message;if(/PUBLIC KEY BLOCK/.test(t[1]))return m.armor.publicKey;if(/PRIVATE KEY BLOCK/.test(t[1]))return m.armor.privateKey;if(/SIGNATURE/.test(t[1]))return m.armor.signature}function Cc(r,e){let t="";return e.showVersion&&(t+="Version: "+e.versionString+` +`)}function QP(r){if(r=r||{},r.locator===void 0&&(r.locator=!0),this.assign=r.assign||Ec.assign,this.domHandler=r.domHandler||cy,this.onError=r.onError||r.errorHandler,r.errorHandler&&typeof r.errorHandler!="function")throw new TypeError("errorHandler object is no longer supported, switch to onError!");r.errorHandler&&r.errorHandler("warning","The `errorHandler` option has been deprecated, use `onError` instead!",this),this.normalizeLineEndings=r.normalizeLineEndings||DP,this.locator=!!r.locator,this.xmlns=this.assign(Object.create(null),r.xmlns)}QP.prototype.parseFromString=function(r,e){if(!uV(e))throw new TypeError('DOMParser.parseFromString: the provided mimeType "'+e+'" is not valid.');var t=this.assign(Object.create(null),this.xmlns),i=bP.XML_ENTITIES,n=t[""]||null;lV(e)?(i=bP.HTML_ENTITIES,n=PE.HTML):e===SP.XML_SVG_IMAGE&&(n=PE.SVG),t[""]=n,t.xml=t.xml||PE.XML;var s=new this.domHandler({mimeType:e,defaultNamespace:n,onError:this.onError}),o=this.locator?{}:void 0;this.locator&&s.setDocumentLocator(o);var a=new fV;a.errorHandler=s,a.domBuilder=s;var c=!Ec.isHTMLMimeType(e);return c&&typeof r!="string"&&a.errorHandler.fatalError("source is not a string"),a.parse(this.normalizeLineEndings(String(r)),t,i),s.doc.documentElement||a.errorHandler.fatalError("missing root element"),s.doc};function cy(r){var e=r||{};this.mimeType=e.mimeType||SP.XML_APPLICATION,this.defaultNamespace=e.defaultNamespace||null,this.cdata=!1,this.currentElement=void 0,this.doc=void 0,this.locator=void 0,this.onError=e.onError}function rd(r,e){e.lineNumber=r.lineNumber,e.columnNumber=r.columnNumber}cy.prototype={startDocument:function(){var r=new cV;this.doc=dV(this.mimeType)?r.createHTMLDocument(!1):r.createDocument(this.defaultNamespace,"")},startElement:function(r,e,t,i){var n=this.doc,s=n.createElementNS(r,t||e),o=i.length;ay(this,s),this.currentElement=s,this.locator&&rd(this.locator,s);for(var a=0;a<o;a++){var r=i.getURI(a),c=i.getValue(a),t=i.getQName(a),l=n.createAttributeNS(r,t);this.locator&&rd(i.getLocator(a),l),l.value=l.nodeValue=c,s.setAttributeNode(l)}},endElement:function(r,e,t){this.currentElement=this.currentElement.parentNode},startPrefixMapping:function(r,e){},endPrefixMapping:function(r){},processingInstruction:function(r,e){var t=this.doc.createProcessingInstruction(r,e);this.locator&&rd(this.locator,t),ay(this,t)},ignorableWhitespace:function(r,e,t){},characters:function(r,e,t){if(r=kP.apply(this,arguments),r){if(this.cdata)var i=this.doc.createCDATASection(r);else var i=this.doc.createTextNode(r);this.currentElement?this.currentElement.appendChild(i):/^\s*$/.test(r)&&this.doc.appendChild(i),this.locator&&rd(this.locator,i)}},skippedEntity:function(r){},endDocument:function(){this.doc.normalize()},setDocumentLocator:function(r){r&&(r.lineNumber=0),this.locator=r},comment:function(r,e,t){r=kP.apply(this,arguments);var i=this.doc.createComment(r);this.locator&&rd(this.locator,i),ay(this,i)},startCDATA:function(){this.cdata=!0},endCDATA:function(){this.cdata=!1},startDTD:function(r,e,t,i){var n=this.doc.implementation;if(n&&n.createDocumentType){var s=n.createDocumentType(r,e,t,i);this.locator&&rd(this.locator,s),ay(this,s),this.doc.doctype=s}},reportError:function(r,e){if(typeof this.onError=="function")try{this.onError(r,e,this)}catch(t){throw new vP("Reporting "+r+' "'+e+'" caused '+t,this.locator)}else console.error("[xmldom "+r+"] "+e,AV(this.locator))},warning:function(r){this.reportError("warning",r)},error:function(r){this.reportError("error",r)},fatalError:function(r,e){throw this.reportError("fatalError",r),new vP(r,this.locator,e)}};function AV(r){if(r)return` +@#[line:`+r.lineNumber+",col:"+r.columnNumber+"]"}function kP(r,e,t){return typeof r=="string"?r.substr(e,t):r.length>=e+t||e?new java.lang.String(r,e,t)+"":r}"endDTD,startEntity,endEntity,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,resolveEntity,getExternalSubset,notationDecl,unparsedEntityDecl".replace(/\w+/g,function(r){cy.prototype[r]=function(){return null}});function ay(r,e){r.currentElement?r.currentElement.appendChild(e):r.doc.appendChild(e)}function hV(r){if(r==="error")throw"onErrorStopParsing"}function gV(){throw"onWarningStopParsing"}id.__DOMHandler=cy;id.DOMParser=QP;id.normalizeLineEndings=DP;id.onErrorStopParsing=hV;id.onWarningStopParsing=gV});var FP=oe(ot=>{"use strict";var nd=xc();ot.assign=nd.assign;ot.hasDefaultHTMLNamespace=nd.hasDefaultHTMLNamespace;ot.isHTMLMimeType=nd.isHTMLMimeType;ot.isValidMimeType=nd.isValidMimeType;ot.MIME_TYPE=nd.MIME_TYPE;ot.NAMESPACE=nd.NAMESPACE;var ly=ff();ot.DOMException=ly.DOMException;ot.DOMExceptionName=ly.DOMExceptionName;ot.ExceptionCode=ly.ExceptionCode;ot.ParseError=ly.ParseError;var hr=_E();ot.Attr=hr.Attr;ot.CDATASection=hr.CDATASection;ot.CharacterData=hr.CharacterData;ot.Comment=hr.Comment;ot.Document=hr.Document;ot.DocumentFragment=hr.DocumentFragment;ot.DocumentType=hr.DocumentType;ot.DOMImplementation=hr.DOMImplementation;ot.Element=hr.Element;ot.Entity=hr.Entity;ot.EntityReference=hr.EntityReference;ot.LiveNodeList=hr.LiveNodeList;ot.NamedNodeMap=hr.NamedNodeMap;ot.Node=hr.Node;ot.NodeList=hr.NodeList;ot.Notation=hr.Notation;ot.ProcessingInstruction=hr.ProcessingInstruction;ot.Text=hr.Text;ot.XMLSerializer=hr.XMLSerializer;var dy=_P();ot.DOMParser=dy.DOMParser;ot.normalizeLineEndings=dy.normalizeLineEndings;ot.onErrorStopParsing=dy.onErrorStopParsing;ot.onWarningStopParsing=dy.onWarningStopParsing});function PP(r){if(typeof r=="string")return r.trim()||void 0;if(typeof r=="number"||typeof r=="boolean")return String(r);if(Array.isArray(r)&&r.length>0){let e=r[0];return(e?.nodeValue??e?.textContent??"").trim()||void 0}}function mV(r){let e=r;return e=e.replace(/<!DOCTYPE[^>]*>/gi,""),e=e.replace(/<!--[\s\S]*?-->/g,""),e=e.replace(new RegExp(`<(${pV})([^>]*?)/?>`,"gi"),"<$1$2/>"),e}function UP(r,e,t,i,n,s){let o=new TP.DOMParser({onError:()=>{}}).parseFromString(mV(r),"text/xml"),a=bf.select(e,o),c=[];for(let l of a)try{let d=bf.select(t,l);if(d.length===0)continue;let u=d[0],f="",h="";if(u.nodeType===1){let y=u;f=y.textContent?.trim()||"",h=y.getAttribute("href")||""}else if(u.nodeType===2){let y=u;f=y.value.trim(),h=y.value}else f=u.textContent?.trim()||"";let g=f.endsWith("/");if(g&&(f=f.slice(0,-1)),!f||s.includes(f))continue;let p=PP(bf.select(i,l)),I=PP(bf.select(n,l));c.push({name:f,url:h,isDir:g,size:p,modified:I})}catch{}return c}function IV(r){for(let e=r.length-1;e>=0;e--)if(r[e]>="0"&&r[e]<="9")return[r.slice(0,e+1).trim(),r.slice(e+1).trim()];return["",r]}function RP(r){if(!r||r.trim()==="-")return 0;let e=r.trim(),[t,i]=IV(e),n=i.toLowerCase(),s=yV[n]??1,o=parseFloat(t);return isNaN(o)?0:Math.round(o*s)}function NP(r,e){if(!r)return new Date().toISOString();try{let t=r.match(/(\d{4})-(\d{2})-(\d{2})\s+(\d{2}):(\d{2})/);if(t){let[,n,s,o,a,c]=t;return new Date(`${n}-${s}-${o}T${a}:${c}:00`).toISOString()}let i=new Date(r);if(!isNaN(i.getTime()))return i.toISOString()}catch{}return new Date().toISOString()}var bf,TP,pV,yV,qP=j(()=>{"use strict";bf=Qr(kF(),1),TP=Qr(FP(),1);pV="area|base|br|col|embed|hr|img|input|link|meta|param|source|track|wbr";yV={"":1,b:1,byte:1,bytes:1,k:1024,kb:1024,kib:1024,m:1<<20,mb:1<<20,mib:1<<20,g:1<<30,gb:1<<30,gib:1<<30,t:256,tb:256,tib:256,p:1<<50,pb:1<<50,pib:1<<50}});function wV(r){let e={...r||{}};return e.url=(e.url||"").trim(),e.url&&!/:\/\//.test(e.url)&&(e.url="https://"+e.url),e.url&&!e.url.endsWith("/")&&(e.url+="/"),e.item_xpath=e.item_xpath||OP,e.name_xpath=e.name_xpath||MP,e.size_xpath=e.size_xpath||LP,e.modified_xpath=e.modified_xpath||HP,e.modified_time_format=e.modified_time_format||"",e.ignore_file_names=e.ignore_file_names||"",e}var OP,MP,LP,HP,uy,KP=j(()=>{"use strict";Be();He();qP();OP="//pre/a",MP="@href",LP="string(following-sibling::text()[1])",HP="string(following-sibling::text()[2])";uy=class{addition;ignoreNames=[];constructor(e){this.addition=wV(e),this.addition.ignore_file_names&&(this.ignoreNames=this.addition.ignore_file_names.split(/\r?\n|,/).map(t=>t.trim()).filter(t=>t))}async init(){if(!this.addition.url)throw new Error("url is required")}cleanRel(e){return(e||"").split("/").filter(Boolean).join("/")}buildDirURL(e){let t=this.cleanRel(e);return this.addition.url+t+(t?"/":"")}nodeToFileItem(e,t){let i=new URL(e.url,t).toString(),n=e.isDir;return{name:e.name,size:e.size?RP(e.size):0,is_dir:n,modified:e.modified?NP(e.modified,this.addition.modified_time_format||""):new Date().toISOString(),sign:"",type:X(e.name,n),raw_url:n?"":i}}async list(e,t){let i=this.buildDirURL(t),n=await fetch(i);if(!n.ok)throw new Error(`Failed to fetch ${i}: HTTP ${n.status}`);let s=await n.text(),a=UP(s,this.addition.item_xpath||OP,this.addition.name_xpath||MP,this.addition.size_xpath||LP,this.addition.modified_xpath||HP,this.ignoreNames).filter(c=>c.name!==".."&&c.name!==".").map(c=>this.nodeToFileItem(c,i));return de(a,"name","asc")}async get(e,t){let i=this.cleanRel(t),n=i.split("/").filter(Boolean).pop()||"root";if(!i)return{name:"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:this.addition.url,type:1};let s=this.addition.url+i;return{name:n,size:0,is_dir:!1,modified:new Date().toISOString(),sign:s,type:X(n,!1),raw_url:s}}async mkdir(e,t){throw new Error("AutoIndex is read-only")}async rename(e,t,i){throw new Error("AutoIndex is read-only")}async remove(e,t,i){throw new Error("AutoIndex is read-only")}async move(e,t,i,n,s){throw new Error("AutoIndex is read-only")}async copy(e,t,i,n,s){throw new Error("AutoIndex is read-only")}async put(e,t,i){throw new Error("AutoIndex is read-only")}}});var ia,GP,zP,JP,jP,$P,VP,Hye,YP,Kye,WP,XP,ZP,e5,Gye,t5,TE=j(()=>{"use strict";ia="https://drive.proton.me/api",GP="https://account.proton.me/api/auth/info",zP="https://account.proton.me/api/auth/v4",JP="https://account.proton.me/api/auth/v4/2fa",jP="https://account.proton.me/api/auth/v4/refresh",$P=ia+"/core/v4/keys/salts",VP=ia+"/core/v4/users",Hye=ia+"/core/v4/addresses",YP=ia+"/drive/shares",Kye=ia+"/drive/volumes",WP="application/vnd.protonmail.v1+json",XP="js@0.3.0",ZP="ProtonDrive/v1.70.0 (Windows NT 10.0.22000; Win64; x64)",e5="web-drive@5.2.0+0f69f7a8",Gye=4*1024*1024,t5=1});var i5=oe((r5,na)=>{(function(r,e){typeof define=="function"&&define.amd?define([],e):typeof wt=="function"&&typeof na=="object"&&na&&na.exports?na.exports=e():(r.dcodeIO=r.dcodeIO||{}).bcrypt=e()})(r5,function(){"use strict";var r={},e=null;function t(D){if(typeof na<"u"&&na&&na.exports)try{return wt("crypto").randomBytes(D)}catch{}try{var B;return(self.crypto||self.msCrypto).getRandomValues(B=new Uint32Array(D)),Array.prototype.slice.call(B)}catch{}if(!e)throw Error("Neither WebCryptoAPI nor a crypto module is available. Use bcrypt.setRandomFallback to set an alternative");return e(D)}var i=!1;try{t(1),i=!0}catch{}e=null,r.setRandomFallback=function(D){e=D},r.genSaltSync=function(D,B){if(D=D||g,typeof D!="number")throw Error("Illegal arguments: "+typeof D+", "+typeof B);D<4?D=4:D>31&&(D=31);var Q=[];return Q.push("$2a$"),D<10&&Q.push("0"),Q.push(D.toString()),Q.push("$"),Q.push(d(t(h),h)),Q.join("")},r.genSalt=function(D,B,Q){if(typeof B=="function"&&(Q=B,B=void 0),typeof D=="function"&&(Q=D,D=void 0),typeof D>"u")D=g;else if(typeof D!="number")throw Error("illegal arguments: "+typeof D);function v(E){s(function(){try{E(null,r.genSaltSync(D))}catch(P){E(P)}})}if(Q){if(typeof Q!="function")throw Error("Illegal callback: "+typeof Q);v(Q)}else return new Promise(function(E,P){v(function(N,J){if(N){P(N);return}E(J)})})},r.hashSync=function(D,B){if(typeof B>"u"&&(B=g),typeof B=="number"&&(B=r.genSaltSync(B)),typeof D!="string"||typeof B!="string")throw Error("Illegal arguments: "+typeof D+", "+typeof B);return T(D,B)},r.hash=function(D,B,Q,v){function E(P){typeof D=="string"&&typeof B=="number"?r.genSalt(B,function(N,J){T(D,J,P,v)}):typeof D=="string"&&typeof B=="string"?T(D,B,P,v):s(P.bind(this,Error("Illegal arguments: "+typeof D+", "+typeof B)))}if(Q){if(typeof Q!="function")throw Error("Illegal callback: "+typeof Q);E(Q)}else return new Promise(function(P,N){E(function(J,z){if(J){N(J);return}P(z)})})};function n(D,B){for(var Q=0,v=0,E=0,P=D.length;E<P;++E)D.charCodeAt(E)===B.charCodeAt(E)?++Q:++v;return Q<0?!1:v===0}r.compareSync=function(D,B){if(typeof D!="string"||typeof B!="string")throw Error("Illegal arguments: "+typeof D+", "+typeof B);return B.length!==60?!1:n(r.hashSync(D,B.substr(0,B.length-31)),B)},r.compare=function(D,B,Q,v){function E(P){if(typeof D!="string"||typeof B!="string"){s(P.bind(this,Error("Illegal arguments: "+typeof D+", "+typeof B)));return}if(B.length!==60){s(P.bind(this,null,!1));return}r.hash(D,B.substr(0,29),function(N,J){N?P(N):P(null,n(J,B))},v)}if(Q){if(typeof Q!="function")throw Error("Illegal callback: "+typeof Q);E(Q)}else return new Promise(function(P,N){E(function(J,z){if(J){N(J);return}P(z)})})},r.getRounds=function(D){if(typeof D!="string")throw Error("Illegal arguments: "+typeof D);return parseInt(D.split("$")[2],10)},r.getSalt=function(D){if(typeof D!="string")throw Error("Illegal arguments: "+typeof D);if(D.length!==60)throw Error("Illegal hash length: "+D.length+" != 60");return D.substring(0,29)};var s=typeof process<"u"&&process&&typeof process.nextTick=="function"?typeof setImmediate=="function"?setImmediate:process.nextTick:setTimeout;function o(D){var B=[],Q=0;return f.encodeUTF16toUTF8(function(){return Q>=D.length?null:D.charCodeAt(Q++)},function(v){B.push(v)}),B}var a="./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".split(""),c=[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,1,54,55,56,57,58,59,60,61,62,63,-1,-1,-1,-1,-1,-1,-1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,-1,-1,-1,-1,-1,-1,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,-1,-1,-1,-1,-1],l=String.fromCharCode;function d(D,B){var Q=0,v=[],E,P;if(B<=0||B>D.length)throw Error("Illegal len: "+B);for(;Q<B;){if(E=D[Q++]&255,v.push(a[E>>2&63]),E=(E&3)<<4,Q>=B){v.push(a[E&63]);break}if(P=D[Q++]&255,E|=P>>4&15,v.push(a[E&63]),E=(P&15)<<2,Q>=B){v.push(a[E&63]);break}P=D[Q++]&255,E|=P>>6&3,v.push(a[E&63]),v.push(a[P&63])}return v.join("")}function u(D,B){var Q=0,v=D.length,E=0,P=[],N,J,z,L,G,K;if(B<=0)throw Error("Illegal len: "+B);for(;Q<v-1&&E<B&&(K=D.charCodeAt(Q++),N=K<c.length?c[K]:-1,K=D.charCodeAt(Q++),J=K<c.length?c[K]:-1,!(N==-1||J==-1||(G=N<<2>>>0,G|=(J&48)>>4,P.push(l(G)),++E>=B||Q>=v)||(K=D.charCodeAt(Q++),z=K<c.length?c[K]:-1,z==-1)||(G=(J&15)<<4>>>0,G|=(z&60)>>2,P.push(l(G)),++E>=B||Q>=v)));)K=D.charCodeAt(Q++),L=K<c.length?c[K]:-1,G=(z&3)<<6>>>0,G|=L,P.push(l(G)),++E;var $=[];for(Q=0;Q<E;Q++)$.push(P[Q].charCodeAt(0));return $}var f=(function(){"use strict";var D={};return D.MAX_CODEPOINT=1114111,D.encodeUTF8=function(B,Q){var v=null;for(typeof B=="number"&&(v=B,B=function(){return null});v!==null||(v=B())!==null;)v<128?Q(v&127):v<2048?(Q(v>>6&31|192),Q(v&63|128)):v<65536?(Q(v>>12&15|224),Q(v>>6&63|128),Q(v&63|128)):(Q(v>>18&7|240),Q(v>>12&63|128),Q(v>>6&63|128),Q(v&63|128)),v=null},D.decodeUTF8=function(B,Q){for(var v,E,P,N,J=function(z){z=z.slice(0,z.indexOf(null));var L=Error(z.toString());throw L.name="TruncatedError",L.bytes=z,L};(v=B())!==null;)if((v&128)===0)Q(v);else if((v&224)===192)(E=B())===null&&J([v,E]),Q((v&31)<<6|E&63);else if((v&240)===224)((E=B())===null||(P=B())===null)&&J([v,E,P]),Q((v&15)<<12|(E&63)<<6|P&63);else if((v&248)===240)((E=B())===null||(P=B())===null||(N=B())===null)&&J([v,E,P,N]),Q((v&7)<<18|(E&63)<<12|(P&63)<<6|N&63);else throw RangeError("Illegal starting byte: "+v)},D.UTF16toUTF8=function(B,Q){for(var v,E=null;(v=E!==null?E:B())!==null;){if(v>=55296&&v<=57343&&(E=B())!==null&&E>=56320&&E<=57343){Q((v-55296)*1024+E-56320+65536),E=null;continue}Q(v)}E!==null&&Q(E)},D.UTF8toUTF16=function(B,Q){var v=null;for(typeof B=="number"&&(v=B,B=function(){return null});v!==null||(v=B())!==null;)v<=65535?Q(v):(v-=65536,Q((v>>10)+55296),Q(v%1024+56320)),v=null},D.encodeUTF16toUTF8=function(B,Q){D.UTF16toUTF8(B,function(v){D.encodeUTF8(v,Q)})},D.decodeUTF8toUTF16=function(B,Q){D.decodeUTF8(B,function(v){D.UTF8toUTF16(v,Q)})},D.calculateCodePoint=function(B){return B<128?1:B<2048?2:B<65536?3:4},D.calculateUTF8=function(B){for(var Q,v=0;(Q=B())!==null;)v+=D.calculateCodePoint(Q);return v},D.calculateUTF16asUTF8=function(B){var Q=0,v=0;return D.UTF16toUTF8(B,function(E){++Q,v+=D.calculateCodePoint(E)}),[Q,v]},D})();Date.now=Date.now||function(){return+new Date};var h=16,g=10,p=16,I=100,y=[608135816,2242054355,320440878,57701188,2752067618,698298832,137296536,3964562569,1160258022,953160567,3193202383,887688300,3232508343,3380367581,1065670069,3041331479,2450970073,2306472731],w=[3509652390,2564797868,805139163,3491422135,3101798381,1780907670,3128725573,4046225305,614570311,3012652279,134345442,2240740374,1667834072,1901547113,2757295779,4103290238,227898511,1921955416,1904987480,2182433518,2069144605,3260701109,2620446009,720527379,3318853667,677414384,3393288472,3101374703,2390351024,1614419982,1822297739,2954791486,3608508353,3174124327,2024746970,1432378464,3864339955,2857741204,1464375394,1676153920,1439316330,715854006,3033291828,289532110,2706671279,2087905683,3018724369,1668267050,732546397,1947742710,3462151702,2609353502,2950085171,1814351708,2050118529,680887927,999245976,1800124847,3300911131,1713906067,1641548236,4213287313,1216130144,1575780402,4018429277,3917837745,3693486850,3949271944,596196993,3549867205,258830323,2213823033,772490370,2760122372,1774776394,2652871518,566650946,4142492826,1728879713,2882767088,1783734482,3629395816,2517608232,2874225571,1861159788,326777828,3124490320,2130389656,2716951837,967770486,1724537150,2185432712,2364442137,1164943284,2105845187,998989502,3765401048,2244026483,1075463327,1455516326,1322494562,910128902,469688178,1117454909,936433444,3490320968,3675253459,1240580251,122909385,2157517691,634681816,4142456567,3825094682,3061402683,2540495037,79693498,3249098678,1084186820,1583128258,426386531,1761308591,1047286709,322548459,995290223,1845252383,2603652396,3431023940,2942221577,3202600964,3727903485,1712269319,422464435,3234572375,1170764815,3523960633,3117677531,1434042557,442511882,3600875718,1076654713,1738483198,4213154764,2393238008,3677496056,1014306527,4251020053,793779912,2902807211,842905082,4246964064,1395751752,1040244610,2656851899,3396308128,445077038,3742853595,3577915638,679411651,2892444358,2354009459,1767581616,3150600392,3791627101,3102740896,284835224,4246832056,1258075500,768725851,2589189241,3069724005,3532540348,1274779536,3789419226,2764799539,1660621633,3471099624,4011903706,913787905,3497959166,737222580,2514213453,2928710040,3937242737,1804850592,3499020752,2949064160,2386320175,2390070455,2415321851,4061277028,2290661394,2416832540,1336762016,1754252060,3520065937,3014181293,791618072,3188594551,3933548030,2332172193,3852520463,3043980520,413987798,3465142937,3030929376,4245938359,2093235073,3534596313,375366246,2157278981,2479649556,555357303,3870105701,2008414854,3344188149,4221384143,3956125452,2067696032,3594591187,2921233993,2428461,544322398,577241275,1471733935,610547355,4027169054,1432588573,1507829418,2025931657,3646575487,545086370,48609733,2200306550,1653985193,298326376,1316178497,3007786442,2064951626,458293330,2589141269,3591329599,3164325604,727753846,2179363840,146436021,1461446943,4069977195,705550613,3059967265,3887724982,4281599278,3313849956,1404054877,2845806497,146425753,1854211946,1266315497,3048417604,3681880366,3289982499,290971e4,1235738493,2632868024,2414719590,3970600049,1771706367,1449415276,3266420449,422970021,1963543593,2690192192,3826793022,1062508698,1531092325,1804592342,2583117782,2714934279,4024971509,1294809318,4028980673,1289560198,2221992742,1669523910,35572830,157838143,1052438473,1016535060,1802137761,1753167236,1386275462,3080475397,2857371447,1040679964,2145300060,2390574316,1461121720,2956646967,4031777805,4028374788,33600511,2920084762,1018524850,629373528,3691585981,3515945977,2091462646,2486323059,586499841,988145025,935516892,3367335476,2599673255,2839830854,265290510,3972581182,2759138881,3795373465,1005194799,847297441,406762289,1314163512,1332590856,1866599683,4127851711,750260880,613907577,1450815602,3165620655,3734664991,3650291728,3012275730,3704569646,1427272223,778793252,1343938022,2676280711,2052605720,1946737175,3164576444,3914038668,3967478842,3682934266,1661551462,3294938066,4011595847,840292616,3712170807,616741398,312560963,711312465,1351876610,322626781,1910503582,271666773,2175563734,1594956187,70604529,3617834859,1007753275,1495573769,4069517037,2549218298,2663038764,504708206,2263041392,3941167025,2249088522,1514023603,1998579484,1312622330,694541497,2582060303,2151582166,1382467621,776784248,2618340202,3323268794,2497899128,2784771155,503983604,4076293799,907881277,423175695,432175456,1378068232,4145222326,3954048622,3938656102,3820766613,2793130115,2977904593,26017576,3274890735,3194772133,1700274565,1756076034,4006520079,3677328699,720338349,1533947780,354530856,688349552,3973924725,1637815568,332179504,3949051286,53804574,2852348879,3044236432,1282449977,3583942155,3416972820,4006381244,1617046695,2628476075,3002303598,1686838959,431878346,2686675385,1700445008,1080580658,1009431731,832498133,3223435511,2605976345,2271191193,2516031870,1648197032,4164389018,2548247927,300782431,375919233,238389289,3353747414,2531188641,2019080857,1475708069,455242339,2609103871,448939670,3451063019,1395535956,2413381860,1841049896,1491858159,885456874,4264095073,4001119347,1565136089,3898914787,1108368660,540939232,1173283510,2745871338,3681308437,4207628240,3343053890,4016749493,1699691293,1103962373,3625875870,2256883143,3830138730,1031889488,3479347698,1535977030,4236805024,3251091107,2132092099,1774941330,1199868427,1452454533,157007616,2904115357,342012276,595725824,1480756522,206960106,497939518,591360097,863170706,2375253569,3596610801,1814182875,2094937945,3421402208,1082520231,3463918190,2785509508,435703966,3908032597,1641649973,2842273706,3305899714,1510255612,2148256476,2655287854,3276092548,4258621189,236887753,3681803219,274041037,1734335097,3815195456,3317970021,1899903192,1026095262,4050517792,356393447,2410691914,3873677099,3682840055,3913112168,2491498743,4132185628,2489919796,1091903735,1979897079,3170134830,3567386728,3557303409,857797738,1136121015,1342202287,507115054,2535736646,337727348,3213592640,1301675037,2528481711,1895095763,1721773893,3216771564,62756741,2142006736,835421444,2531993523,1442658625,3659876326,2882144922,676362277,1392781812,170690266,3921047035,1759253602,3611846912,1745797284,664899054,1329594018,3901205900,3045908486,2062866102,2865634940,3543621612,3464012697,1080764994,553557557,3656615353,3996768171,991055499,499776247,1265440854,648242737,3940784050,980351604,3713745714,1749149687,3396870395,4211799374,3640570775,1161844396,3125318951,1431517754,545492359,4268468663,3499529547,1437099964,2702547544,3433638243,2581715763,2787789398,1060185593,1593081372,2418618748,4260947970,69676912,2159744348,86519011,2512459080,3838209314,1220612927,3339683548,133810670,1090789135,1078426020,1569222167,845107691,3583754449,4072456591,1091646820,628848692,1613405280,3757631651,526609435,236106946,48312990,2942717905,3402727701,1797494240,859738849,992217954,4005476642,2243076622,3870952857,3732016268,765654824,3490871365,2511836413,1685915746,3888969200,1414112111,2273134842,3281911079,4080962846,172450625,2569994100,980381355,4109958455,2819808352,2716589560,2568741196,3681446669,3329971472,1835478071,660984891,3704678404,4045999559,3422617507,3040415634,1762651403,1719377915,3470491036,2693910283,3642056355,3138596744,1364962596,2073328063,1983633131,926494387,3423689081,2150032023,4096667949,1749200295,3328846651,309677260,2016342300,1779581495,3079819751,111262694,1274766160,443224088,298511866,1025883608,3806446537,1145181785,168956806,3641502830,3584813610,1689216846,3666258015,3200248200,1692713982,2646376535,4042768518,1618508792,1610833997,3523052358,4130873264,2001055236,3610705100,2202168115,4028541809,2961195399,1006657119,2006996926,3186142756,1430667929,3210227297,1314452623,4074634658,4101304120,2273951170,1399257539,3367210612,3027628629,1190975929,2062231137,2333990788,2221543033,2438960610,1181637006,548689776,2362791313,3372408396,3104550113,3145860560,296247880,1970579870,3078560182,3769228297,1714227617,3291629107,3898220290,166772364,1251581989,493813264,448347421,195405023,2709975567,677966185,3703036547,1463355134,2715995803,1338867538,1343315457,2802222074,2684532164,233230375,2599980071,2000651841,3277868038,1638401717,4028070440,3237316320,6314154,819756386,300326615,590932579,1405279636,3267499572,3150704214,2428286686,3959192993,3461946742,1862657033,1266418056,963775037,2089974820,2263052895,1917689273,448879540,3550394620,3981727096,150775221,3627908307,1303187396,508620638,2975983352,2726630617,1817252668,1876281319,1457606340,908771278,3720792119,3617206836,2455994898,1729034894,1080033504,976866871,3556439503,2881648439,1522871579,1555064734,1336096578,3548522304,2579274686,3574697629,3205460757,3593280638,3338716283,3079412587,564236357,2993598910,1781952180,1464380207,3163844217,3332601554,1699332808,1393555694,1183702653,3581086237,1288719814,691649499,2847557200,2895455976,3193889540,2717570544,1781354906,1676643554,2592534050,3230253752,1126444790,2770207658,2633158820,2210423226,2615765581,2414155088,3127139286,673620729,2805611233,1269405062,4015350505,3341807571,4149409754,1057255273,2012875353,2162469141,2276492801,2601117357,993977747,3918593370,2654263191,753973209,36408145,2530585658,25011837,3520020182,2088578344,530523599,2918365339,1524020338,1518925132,3760827505,3759777254,1202760957,3985898139,3906192525,674977740,4174734889,2031300136,2019492241,3983892565,4153806404,3822280332,352677332,2297720250,60907813,90501309,3286998549,1016092578,2535922412,2839152426,457141659,509813237,4120667899,652014361,1966332200,2975202805,55981186,2327461051,676427537,3255491064,2882294119,3433927263,1307055953,942726286,933058658,2468411793,3933900994,4215176142,1361170020,2001714738,2830558078,3274259782,1222529897,1679025792,2729314320,3714953764,1770335741,151462246,3013232138,1682292957,1483529935,471910574,1539241949,458788160,3436315007,1807016891,3718408830,978976581,1043663428,3165965781,1927990952,4200891579,2372276910,3208408903,3533431907,1412390302,2931980059,4132332400,1947078029,3881505623,4168226417,2941484381,1077988104,1320477388,886195818,18198404,3786409e3,2509781533,112762804,3463356488,1866414978,891333506,18488651,661792760,1628790961,3885187036,3141171499,876946877,2693282273,1372485963,791857591,2686433993,3759982718,3167212022,3472953795,2716379847,445679433,3561995674,3504004811,3574258232,54117162,3331405415,2381918588,3769707343,4154350007,1140177722,4074052095,668550556,3214352940,367459370,261225585,2610173221,4209349473,3468074219,3265815641,314222801,3066103646,3808782860,282218597,3406013506,3773591054,379116347,1285071038,846784868,2669647154,3771962079,3550491691,2305946142,453669953,1268987020,3317592352,3279303384,3744833421,2610507566,3859509063,266596637,3847019092,517658769,3462560207,3443424879,370717030,4247526661,2224018117,4143653529,4112773975,2788324899,2477274417,1456262402,2901442914,1517677493,1846949527,2295493580,3734397586,2176403920,1280348187,1908823572,3871786941,846861322,1172426758,3287448474,3383383037,1655181056,3139813346,901632758,1897031941,2986607138,3066810236,3447102507,1393639104,373351379,950779232,625454576,3124240540,4148612726,2007998917,544563296,2244738638,2330496472,2058025392,1291430526,424198748,50039436,29584100,3605783033,2429876329,2791104160,1057563949,3255363231,3075367218,3463963227,1469046755,985887462],C=[1332899944,1700884034,1701343084,1684370003,1668446532,1869963892];function b(D,B,Q,v){var E,P=D[B],N=D[B+1];return P^=Q[0],E=v[P>>>24],E+=v[256|P>>16&255],E^=v[512|P>>8&255],E+=v[768|P&255],N^=E^Q[1],E=v[N>>>24],E+=v[256|N>>16&255],E^=v[512|N>>8&255],E+=v[768|N&255],P^=E^Q[2],E=v[P>>>24],E+=v[256|P>>16&255],E^=v[512|P>>8&255],E+=v[768|P&255],N^=E^Q[3],E=v[N>>>24],E+=v[256|N>>16&255],E^=v[512|N>>8&255],E+=v[768|N&255],P^=E^Q[4],E=v[P>>>24],E+=v[256|P>>16&255],E^=v[512|P>>8&255],E+=v[768|P&255],N^=E^Q[5],E=v[N>>>24],E+=v[256|N>>16&255],E^=v[512|N>>8&255],E+=v[768|N&255],P^=E^Q[6],E=v[P>>>24],E+=v[256|P>>16&255],E^=v[512|P>>8&255],E+=v[768|P&255],N^=E^Q[7],E=v[N>>>24],E+=v[256|N>>16&255],E^=v[512|N>>8&255],E+=v[768|N&255],P^=E^Q[8],E=v[P>>>24],E+=v[256|P>>16&255],E^=v[512|P>>8&255],E+=v[768|P&255],N^=E^Q[9],E=v[N>>>24],E+=v[256|N>>16&255],E^=v[512|N>>8&255],E+=v[768|N&255],P^=E^Q[10],E=v[P>>>24],E+=v[256|P>>16&255],E^=v[512|P>>8&255],E+=v[768|P&255],N^=E^Q[11],E=v[N>>>24],E+=v[256|N>>16&255],E^=v[512|N>>8&255],E+=v[768|N&255],P^=E^Q[12],E=v[P>>>24],E+=v[256|P>>16&255],E^=v[512|P>>8&255],E+=v[768|P&255],N^=E^Q[13],E=v[N>>>24],E+=v[256|N>>16&255],E^=v[512|N>>8&255],E+=v[768|N&255],P^=E^Q[14],E=v[P>>>24],E+=v[256|P>>16&255],E^=v[512|P>>8&255],E+=v[768|P&255],N^=E^Q[15],E=v[N>>>24],E+=v[256|N>>16&255],E^=v[512|N>>8&255],E+=v[768|N&255],P^=E^Q[16],D[B]=N^Q[p+1],D[B+1]=P,D}function x(D,B){for(var Q=0,v=0;Q<4;++Q)v=v<<8|D[B]&255,B=(B+1)%D.length;return{key:v,offp:B}}function _(D,B,Q){for(var v=0,E=[0,0],P=B.length,N=Q.length,J,z=0;z<P;z++)J=x(D,v),v=J.offp,B[z]=B[z]^J.key;for(z=0;z<P;z+=2)E=b(E,0,B,Q),B[z]=E[0],B[z+1]=E[1];for(z=0;z<N;z+=2)E=b(E,0,B,Q),Q[z]=E[0],Q[z+1]=E[1]}function R(D,B,Q,v){for(var E=0,P=[0,0],N=Q.length,J=v.length,z,L=0;L<N;L++)z=x(B,E),E=z.offp,Q[L]=Q[L]^z.key;for(E=0,L=0;L<N;L+=2)z=x(D,E),E=z.offp,P[0]^=z.key,z=x(D,E),E=z.offp,P[1]^=z.key,P=b(P,0,Q,v),Q[L]=P[0],Q[L+1]=P[1];for(L=0;L<J;L+=2)z=x(D,E),E=z.offp,P[0]^=z.key,z=x(D,E),E=z.offp,P[1]^=z.key,P=b(P,0,Q,v),v[L]=P[0],v[L+1]=P[1]}function U(D,B,Q,v,E){var P=C.slice(),N=P.length,J;if(Q<4||Q>31)if(J=Error("Illegal number of rounds (4-31): "+Q),v){s(v.bind(this,J));return}else throw J;if(B.length!==h)if(J=Error("Illegal salt length: "+B.length+" != "+h),v){s(v.bind(this,J));return}else throw J;Q=1<<Q>>>0;var z,L,G=0,K;Int32Array?(z=new Int32Array(y),L=new Int32Array(w)):(z=y.slice(),L=w.slice()),R(B,D,z,L);function $(){if(E&&E(G/Q),G<Q)for(var re=Date.now();G<Q&&(G=G+1,_(D,z,L),_(B,z,L),!(Date.now()-re>I)););else{for(G=0;G<64;G++)for(K=0;K<N>>1;K++)b(P,K<<1,z,L);var ee=[];for(G=0;G<N;G++)ee.push((P[G]>>24&255)>>>0),ee.push((P[G]>>16&255)>>>0),ee.push((P[G]>>8&255)>>>0),ee.push((P[G]&255)>>>0);if(v){v(null,ee);return}else return ee}v&&s($)}if(typeof v<"u")$();else for(var te;;)if(typeof(te=$())<"u")return te||[]}function T(D,B,Q,v){var E;if(typeof D!="string"||typeof B!="string")if(E=Error("Invalid string / salt: Not a string"),Q){s(Q.bind(this,E));return}else throw E;var P,N;if(B.charAt(0)!=="$"||B.charAt(1)!=="2")if(E=Error("Invalid salt version: "+B.substring(0,2)),Q){s(Q.bind(this,E));return}else throw E;if(B.charAt(2)==="$")P="\0",N=3;else{if(P=B.charAt(2),P!=="a"&&P!=="b"&&P!=="y"||B.charAt(3)!=="$")if(E=Error("Invalid salt revision: "+B.substring(2,4)),Q){s(Q.bind(this,E));return}else throw E;N=4}if(B.charAt(N+2)>"$")if(E=Error("Missing salt rounds"),Q){s(Q.bind(this,E));return}else throw E;var J=parseInt(B.substring(N,N+1),10)*10,z=parseInt(B.substring(N+1,N+2),10),L=J+z,G=B.substring(N+3,N+25);D+=P>="a"?"\0":"";var K=o(D),$=u(G,h);function te(re){var ee=[];return ee.push("$2"),P>="a"&&ee.push(P),ee.push("$"),L<10&&ee.push("0"),ee.push(L.toString()),ee.push("$"),ee.push(d($,$.length)),ee.push(d(re,C.length*4-1)),ee.join("")}if(typeof Q>"u")return te(U(K,$,L));U(K,$,L,function(re,ee){re?Q(re,null):Q(null,te(ee))},v)}return r.encodeBase64=d,r.decodeBase64=u,r})});var UE=oe((jye,n5)=>{n5.exports=i5()});function sd(r){let e="0x";for(let t of r)e+=t.toString(16).padStart(2,"0");return BigInt(e)}function vf(r,e){let t=r.toString(16);t.length%2!==0&&(t="0"+t);let i=new Uint8Array(t.length/2);for(let n=0;n<i.length;n++)i[n]=parseInt(t.slice(n*2,n*2+2),16);if(e!==void 0&&i.length<e){let n=new Uint8Array(e);return n.set(i,e-i.length),n}return i}function xV(...r){let e=r.reduce((n,s)=>n+s.length,0),t=new Uint8Array(e),i=0;for(let n of r)t.set(n,i),i+=n.length;return t}function CV(r,e){let t=Math.max(r.length,e.length),i=new Uint8Array(t);for(let n=0;n<t;n++)i[n]=(r[n]||0)^(e[n]||0);return i}async function Bc(...r){let e=r.length===1?r[0]:xV(...r),t=await crypto.subtle.digest("SHA-256",e);return new Uint8Array(t)}function RE(r){let e=atob(r),t=new Uint8Array(e.length);for(let i=0;i<e.length;i++)t[i]=e.charCodeAt(i);return t}function s5(r){let e="";for(let t of r)e+=String.fromCharCode(t);return btoa(e)}function EV(r){return r.length>1&&r[0]===0?r.slice(1):r}function NE(r,e,t){if(t===1n)return 0n;let i=1n,n=r%t,s=e;for(;s>0n;)s&1n&&(i=i*n%t),n=n*n%t,s>>=1n;return i}function BV(r){let e="",t=0,i=0;for(let n of r)for(i=i<<8|n,t+=8;t>=6;)t-=6,e+=qE[i>>t&63];return t>0&&(e+=qE[i<<6-t&63]),e}function bV(r,e,t){if(r<2)return new TextEncoder().encode(e);let n=`$2a$10$${BV(t).padEnd(22,".")}`,o=o5.default.hashSync(e,n).slice(n.length);return vV(o)}function vV(r){let e=[],t=0,i=0;for(let n of r){let s=qE.indexOf(n);s<0||(t=t<<6|s,i+=6,i>=8&&(i-=8,e.push(t>>i&255)))}return new Uint8Array(e)}async function a5(r,e,t){let i=t.Version??4,n=EV(RE(t.Modulus)),s=sd(n),o=sd(RE(t.ServerEphemeral)),a=RE(t.Salt);if(o%s===0n)throw new Error("invalid server ephemeral (B % N == 0)");let c=bV(i,e,a),l=await Bc(a,c),d=sd(l),u=crypto.getRandomValues(new Uint8Array(32)),f=sd(u),h=NE(fy,f,s),g=vf(h,n.length),p=0n;if(i>=2){let v=vf(fy,n.length),E=await Bc(n,v);p=sd(E)}let I=vf(o,n.length),y=await Bc(g,I),w=sd(y),C=NE(fy,d,s),b=(o-p*C%s)%s;b<0n&&(b+=s);let x=f+w*d,_=NE(b,x,s),R=vf(_,n.length),U=await Bc(n),T=await Bc(vf(fy)),D=await Bc(new TextEncoder().encode(r)),B=CV(U,T),Q=await Bc(B,D,a,g,I,R);return{ClientEphemeral:s5(g),ClientProof:s5(Q),SRPSession:t.SRPSession}}var o5,fy,qE,c5=j(()=>{"use strict";o5=Qr(UE(),1),fy=2n;qE="./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"});import{createRequire as S6}from"module";import*as Mi from"node:crypto";function kV(r,e){return e.forEach(function(t){t&&typeof t!="string"&&!Array.isArray(t)&&Object.keys(t).forEach(function(i){if(i!=="default"&&!(i in r)){var n=Object.getOwnPropertyDescriptor(t,i);Object.defineProperty(r,i,n.get?n:{enumerable:!0,get:function(){return t[i]}})}})}),Object.freeze(r)}function St(r){return r&&r.getReader&&Array.isArray(r)}function cA(r){if(!St(r)){let e=r.getWriter(),t=e.releaseLock;return e.releaseLock=()=>{e.closed.catch(function(){}),t.call(e)},e}this.stream=r}function or(r){if(St(r))return"array";if(eo.ReadableStream&&eo.ReadableStream.prototype.isPrototypeOf(r))return"web";if(r&&!(eo.ReadableStream&&r instanceof eo.ReadableStream)&&typeof r._read=="function"&&typeof r._readableState=="object")throw new Error("Native Node streams are no longer supported: please manually convert the stream to a WebStream, using e.g. `stream.Readable.toWeb`");return r&&r.getReader?"web-like":!1}function yI(r){return Uint8Array.prototype.isPrototypeOf(r)}function _6(r){if(r.length===1)return r[0];let e=0;for(let n=0;n<r.length;n++){if(!yI(r[n]))throw new Error("concatUint8Array: Data must be in the form of a Uint8Array");e+=r[n].length}let t=new Uint8Array(e),i=0;return r.forEach(function(n){t.set(n,i),i+=n.length}),t}function gs(r){if(this.stream=r,r[xt]&&(this[xt]=r[xt].slice()),St(r)){let i=r.getReader();this._read=i.read.bind(i),this._releaseLock=()=>{},this._cancel=()=>{};return}if(or(r)){let i=r.getReader();this._read=i.read.bind(i),this._releaseLock=()=>{i.closed.catch(function(){}),i.releaseLock()},this._cancel=i.cancel.bind(i);return}let t=!1;this._read=async()=>t||l5.has(r)?{value:void 0,done:!0}:(t=!0,{value:r,done:!1}),this._releaseLock=()=>{if(t)try{l5.add(r)}catch{}}}function lA(r){return or(r)?r:new ReadableStream({start(e){e.enqueue(r),e.close()}})}function F6(r){let e=or(r);if(e){if(e!=="array")throw new Error("Can't convert Stream to ArrayStream here, call `readToEnd` first");return r}let t=new on;return(async()=>{let i=Hi(t);await i.write(r),await i.close()})(),t}function di(r){return r.some(e=>or(e)&&!St(e))?SV(r):r.some(e=>St(e))?DV(r):typeof r[0]=="string"?r.join(""):_6(r)}function SV(r){let e=r.map(lA),t=P6(async function(s){await Promise.all(n.map(o=>pB(o,s)))}),i=Promise.resolve(),n=e.map((s,o)=>Ba(s,(a,c)=>(i=i.then(()=>Pd(a,t.writable,{preventClose:o!==e.length-1})),i)));return t.readable}function DV(r){let e=new on,t=Promise.resolve();return r.forEach((i,n)=>(t=t.then(()=>Pd(i,e,{preventClose:n!==r.length-1})),t)),e}async function Pd(r,e,{preventClose:t=!1,preventAbort:i=!1,preventCancel:n=!1}={}){if(or(r)&&!St(r)&&!St(e)){r=lA(r);try{if(r[xt]){let a=Hi(e);for(let c=0;c<r[xt].length;c++)await a.ready,await a.write(r[xt][c]);a.releaseLock()}await r.pipeTo(e,{preventClose:t,preventAbort:i,preventCancel:n})}catch{}return}or(r)||(r=F6(r));let s=_n(r),o=Hi(e);try{for(;;){await o.ready;let{done:a,value:c}=await s.read();if(a){t||await o.close();break}await o.write(c)}}catch(a){i||await o.abort(a)}finally{s.releaseLock(),o.releaseLock()}}function P6(r){let e=!1,t=!1,i,n,s;return{readable:new ReadableStream({start(o){s=o},pull(){i?i():e=!0},async cancel(o){t=!0,r&&await r(o),n&&n(o)}},{highWaterMark:0}),writable:new WritableStream({write:async function(o){if(t)throw new Error("Stream is cancelled");s.enqueue(o),e?e=!1:(await new Promise((a,c)=>{i=a,n=c}),i=null,n=null)},close:s.close.bind(s),abort:s.error.bind(s)})}}function sr(r,e=()=>{},t=()=>{},i={highWaterMark:0}){if(or(r))return T6(r,e,t,i);let n=e(r),s=t();return n!==void 0&&s!==void 0?di([n,s]):n!==void 0?n:s}async function gB(r,e=async()=>{},t=async()=>{},i={highWaterMark:1}){if(or(r))return T6(r,e,t,i);let n=await e(r),s=await t();return n!==void 0&&s!==void 0?di([n,s]):n!==void 0?n:s}function T6(r,e,t,i){if(St(r)){let n=new on;return(async()=>{let s=Hi(n);try{let o=await Xt(r),a=await e(o),c=await t(),l;a!==void 0&&c!==void 0?l=di([a,c]):l=a!==void 0?a:c,await s.write(l),await s.close()}catch(o){await s.abort(o)}})(),n}if(or(r)){let n,s=!1;return new ReadableStream({start(){n=r.getReader()},async pull(o){if(s){o.close(),r.releaseLock();return}try{for(;;){let{value:a,done:c}=await n.read();s=c;let l=await(c?t:e)(a);if(l!==void 0){o.enqueue(l);return}if(c){o.close(),r.releaseLock();return}}}catch(a){o.error(a)}},async cancel(o){await n.cancel(o)}},i)}throw new Error("Unreachable")}function Ba(r,e){if(or(r)&&!St(r)){let i,n=new TransformStream({start(a){i=a}}),s=Pd(r,n.writable),o=P6(async function(a){i.error(a),await s,await new Promise(c=>setTimeout(c))});return e(n.readable,o.writable),o.readable}r=F6(r);let t=new on;return e(r,t),t}function II(r,e){let t,i=Ba(r,(n,s)=>{let o=_n(n);o.remainder=()=>(o.releaseLock(),Pd(n,s),i),t=e(o)});return t}function QV(r){if(St(r))throw new Error("ArrayStream cannot be tee()d, use clone() instead");if(or(r)){let e=lA(r).tee();return e[0][xt]=e[1][xt]=r[xt],e}return[Ur(r),Ur(r)]}function Uc(r){if(St(r))return r.clone();if(or(r)){let e=QV(r);return U6(r,e[0]),e[1]}return Ur(r)}function Mf(r){return St(r)?Uc(r):or(r)?new ReadableStream({start(e){let t=Ba(r,async(i,n)=>{let s=_n(i),o=Hi(n);try{for(;;){await o.ready;let{done:a,value:c}=await s.read();if(a){try{e.close()}catch{}await o.close();return}try{e.enqueue(c)}catch{}await o.write(c)}}catch(a){e.error(a),await o.abort(a)}});U6(r,t)}}):Ur(r)}function U6(r,e){Object.entries(Object.getOwnPropertyDescriptors(r.constructor.prototype)).forEach(([t,i])=>{t!=="constructor"&&(i.value?i.value=i.value.bind(e):i.get=i.get.bind(e),Object.defineProperty(r,t,i))})}function Ur(r,e=0,t=1/0){if(St(r))throw new Error("Not implemented");if(or(r)){if(e>=0&&t>=0){let i,n=0;return new ReadableStream({start(){i=r.getReader()},async pull(s){try{for(;;)if(n<t){let{value:o,done:a}=await i.read();if(a){s.close(),r.releaseLock();return}let c;if(n+o.length>=e&&(c=Ur(o,Math.max(e-n,0),t-n)),n+=o.length,c){s.enqueue(c);return}}else{s.close(),r.releaseLock();return}}catch(o){s.error(o)}},async cancel(s){await i.cancel(s)}},{highWaterMark:0})}if(e<0&&(t<0||t===1/0)){let i=[];return sr(r,n=>{n.length>=-e?i=[n]:i.push(n)},()=>Ur(di(i),e,t))}if(e===0&&t<0){let i;return sr(r,n=>{let s=i?di([i,n]):n;if(s.length>=-t)return i=Ur(s,t),Ur(s,e,t);i=s})}return console.warn(`stream.slice(input, ${e}, ${t}) not implemented efficiently.`),Hc(async()=>Ur(await Xt(r),e,t))}return r[xt]&&(r=di(r[xt].concat([r]))),yI(r)?r.subarray(e,t===1/0?r.length:t):r.slice(e,t)}async function Xt(r,e=di){return St(r)?r.readToEnd(e):or(r)?_n(r).readToEnd(e):r}async function pB(r,e){if(or(r)){if(r.cancel){let t=await r.cancel(e);return await new Promise(i=>setTimeout(i)),t}if(r.destroy)return r.destroy(e),await new Promise(t=>setTimeout(t)),e}}function Hc(r){let e=new on;return(async()=>{let t=Hi(e);try{await t.write(await r()),await t.close()}catch(i){await t.abort(i)}})(),e}function _n(r){return new gs(r)}function Hi(r){return new cA(r)}function Ws(r){let e=new Uint8Array;return sr(r,t=>{e=F.concatUint8Array([e,t]);let i=[],n=45,s=Math.floor(e.length/n),o=s*n,a=Uy(e.subarray(0,o));for(let c=0;c<s;c++)i.push(a.substr(c*60,60)),i.push(` +`);return e=e.subarray(o),i.join("")},()=>e.length?Uy(e)+` +`:"")}function R6(r){let e="";return sr(r,t=>{e+=t;let i=0,n=[" "," ","\r",` +`];for(let a=0;a<n.length;a++){let c=n[a];for(let l=e.indexOf(c);l!==-1;l=e.indexOf(c,l+1))i++}let s=e.length;for(;s>0&&(s-i)%4!==0;s--)n.includes(e[s])&&i--;let o=Ry(e.substr(0,s));return e=e.substr(s),o},()=>Ry(e))}function wi(r){return R6(r.replace(/-/g,"+").replace(/_/g,"/"))}function Tr(r,e){let t=Ws(r).replace(/[\r\n]/g,"");return t=t.replace(/[+]/g,"-").replace(/[/]/g,"_").replace(/[=]/g,""),t}function _V(r){let e=/^-----BEGIN PGP (MESSAGE, PART \d+\/\d+|MESSAGE, PART \d+|SIGNED MESSAGE|MESSAGE|PUBLIC KEY BLOCK|PRIVATE KEY BLOCK|SIGNATURE)-----$/m,t=r.match(e);if(!t)throw new Error("Unknown ASCII armor type");if(/MESSAGE, PART \d+\/\d+/.test(t[1]))return m.armor.multipartSection;if(/MESSAGE, PART \d+/.test(t[1]))return m.armor.multipartLast;if(/SIGNED MESSAGE/.test(t[1]))return m.armor.signed;if(/MESSAGE/.test(t[1]))return m.armor.message;if(/PUBLIC KEY BLOCK/.test(t[1]))return m.armor.publicKey;if(/PRIVATE KEY BLOCK/.test(t[1]))return m.armor.privateKey;if(/SIGNATURE/.test(t[1]))return m.armor.signature}function bc(r,e){let t="";return e.showVersion&&(t+="Version: "+e.versionString+` `),e.showComment&&(t+="Comment: "+e.commentString+` `),r&&(t+="Comment: "+r+` `),t+=` -`,t}function Ec(r){let e=G$(r);return Ys(e)}function G$(r){let e=13501623;return sr(r,t=>{let i=K$?Math.floor(t.length/4):0,n=new Uint32Array(t.buffer,t.byteOffset,i);for(let s=0;s<i;s++)e^=n[s],e=Br[0][e>>24&255]^Br[1][e>>16&255]^Br[2][e>>8&255]^Br[3][e>>0&255];for(let s=i*4;s<t.length;s++)e=e>>8^Br[0][e&255^t[s]]},()=>new Uint8Array([e,e>>8,e>>16]))}function TP(r){for(let e=0;e<r.length;e++)/^([^\s:]|[^\s:][^:]*[^\s:]): .+$/.test(r[e])||F.printDebugError(new Error("Improperly formatted armor header: "+r[e])),/^(Version|Comment|MessageID|Hash|Charset): .+$/.test(r[e])||F.printDebugError(new Error("Unknown header: "+r[e]))}function z$(r){let e=r,t=r.lastIndexOf("=");return t>=0&&t!==r.length-1&&(e=r.slice(0,t)),e}function cI(r){return new Promise((e,t)=>{try{let i=/^-----[^-]+-----$/m,n=/^[ \f\r\t\u00a0\u2000-\u200a\u202f\u205f\u3000]*$/,s,o=[],a=o,c,l=[],d,u=s6(Ea(r,async(f,h)=>{let g=Sn(f);try{for(;;){let I=await g.readLine();if(I===void 0)throw new Error("Misformed armored text");if(I=F.removeTrailingSpaces(I.replace(/[\r\n]/g,"")),!s)i.test(I)&&(s=H$(I));else if(c)!d&&s===m.armor.signed&&(i.test(I)?(l=l.join(`\r -`),d=!0,TP(a),a=[],c=!1):l.push(I.replace(/^- /,"")));else if(i.test(I)&&t(new Error("Mandatory blank line missing between armor headers and armor data")),!n.test(I))a.push(I);else if(TP(a),c=!0,d||s!==m.armor.signed){e({text:l,data:u,headers:o,type:s});break}}}catch(I){t(I);return}let p=Li(h);try{for(;;){await p.ready;let{done:I,value:y}=await g.read();if(I)throw new Error("Misformed armored text");let w=y+"";if(w.indexOf("=")===-1&&w.indexOf("-")===-1)await p.write(w);else{let C=await g.readToEnd();C.length||(C=""),C=w+C,C=F.removeTrailingSpaces(C.replace(/\r/g,""));let b=C.split(i);if(b.length===1)throw new Error("Misformed armored text");let x=z$(b[0].slice(0,-1));await p.write(x);break}}await p.ready,await p.close()}catch(I){await p.abort(I)}}))}catch(i){t(i)}}).then(async e=>(St(e.data)&&(e.data=await Xt(e.data)),e))}function Zf(r,e,t,i,n,s=!1,o=pe){let a,c;r===m.armor.signed&&(a=e.text,c=e.hash,e=e.data);let l=s&&Df(e),d=[];switch(r){case m.armor.multipartSection:d.push("-----BEGIN PGP MESSAGE, PART "+t+"/"+i+`----- -`),d.push(Cc(n,o)),d.push(Ys(e)),l&&d.push("=",Ec(l)),d.push("-----END PGP MESSAGE, PART "+t+"/"+i+`----- +`,t}function vc(r){let e=PV(r);return Ws(e)}function PV(r){let e=13501623;return sr(r,t=>{let i=FV?Math.floor(t.length/4):0,n=new Uint32Array(t.buffer,t.byteOffset,i);for(let s=0;s<i;s++)e^=n[s],e=br[0][e>>24&255]^br[1][e>>16&255]^br[2][e>>8&255]^br[3][e>>0&255];for(let s=i*4;s<t.length;s++)e=e>>8^br[0][e&255^t[s]]},()=>new Uint8Array([e,e>>8,e>>16]))}function u5(r){for(let e=0;e<r.length;e++)/^([^\s:]|[^\s:][^:]*[^\s:]): .+$/.test(r[e])||F.printDebugError(new Error("Improperly formatted armor header: "+r[e])),/^(Version|Comment|MessageID|Hash|Charset): .+$/.test(r[e])||F.printDebugError(new Error("Unknown header: "+r[e]))}function TV(r){let e=r,t=r.lastIndexOf("=");return t>=0&&t!==r.length-1&&(e=r.slice(0,t)),e}function wI(r){return new Promise((e,t)=>{try{let i=/^-----[^-]+-----$/m,n=/^[ \f\r\t\u00a0\u2000-\u200a\u202f\u205f\u3000]*$/,s,o=[],a=o,c,l=[],d,u=R6(Ba(r,async(f,h)=>{let g=_n(f);try{for(;;){let I=await g.readLine();if(I===void 0)throw new Error("Misformed armored text");if(I=F.removeTrailingSpaces(I.replace(/[\r\n]/g,"")),!s)i.test(I)&&(s=_V(I));else if(c)!d&&s===m.armor.signed&&(i.test(I)?(l=l.join(`\r +`),d=!0,u5(a),a=[],c=!1):l.push(I.replace(/^- /,"")));else if(i.test(I)&&t(new Error("Mandatory blank line missing between armor headers and armor data")),!n.test(I))a.push(I);else if(u5(a),c=!0,d||s!==m.armor.signed){e({text:l,data:u,headers:o,type:s});break}}}catch(I){t(I);return}let p=Hi(h);try{for(;;){await p.ready;let{done:I,value:y}=await g.read();if(I)throw new Error("Misformed armored text");let w=y+"";if(w.indexOf("=")===-1&&w.indexOf("-")===-1)await p.write(w);else{let C=await g.readToEnd();C.length||(C=""),C=w+C,C=F.removeTrailingSpaces(C.replace(/\r/g,""));let b=C.split(i);if(b.length===1)throw new Error("Misformed armored text");let x=TV(b[0].slice(0,-1));await p.write(x);break}}await p.ready,await p.close()}catch(I){await p.abort(I)}}))}catch(i){t(i)}}).then(async e=>(St(e.data)&&(e.data=await Xt(e.data)),e))}function dA(r,e,t,i,n,s=!1,o=pe){let a,c;r===m.armor.signed&&(a=e.text,c=e.hash,e=e.data);let l=s&&Mf(e),d=[];switch(r){case m.armor.multipartSection:d.push("-----BEGIN PGP MESSAGE, PART "+t+"/"+i+`----- +`),d.push(bc(n,o)),d.push(Ws(e)),l&&d.push("=",vc(l)),d.push("-----END PGP MESSAGE, PART "+t+"/"+i+`----- `);break;case m.armor.multipartLast:d.push("-----BEGIN PGP MESSAGE, PART "+t+`----- -`),d.push(Cc(n,o)),d.push(Ys(e)),l&&d.push("=",Ec(l)),d.push("-----END PGP MESSAGE, PART "+t+`----- +`),d.push(bc(n,o)),d.push(Ws(e)),l&&d.push("=",vc(l)),d.push("-----END PGP MESSAGE, PART "+t+`----- `);break;case m.armor.signed:d.push(`-----BEGIN PGP SIGNED MESSAGE----- `),d.push(c?`Hash: ${c} `:` `),d.push(a.replace(/^-/mg,"- -")),d.push(` -----BEGIN PGP SIGNATURE----- -`),d.push(Cc(n,o)),d.push(Ys(e)),l&&d.push("=",Ec(l)),d.push(`-----END PGP SIGNATURE----- +`),d.push(bc(n,o)),d.push(Ws(e)),l&&d.push("=",vc(l)),d.push(`-----END PGP SIGNATURE----- `);break;case m.armor.message:d.push(`-----BEGIN PGP MESSAGE----- -`),d.push(Cc(n,o)),d.push(Ys(e)),l&&d.push("=",Ec(l)),d.push(`-----END PGP MESSAGE----- +`),d.push(bc(n,o)),d.push(Ws(e)),l&&d.push("=",vc(l)),d.push(`-----END PGP MESSAGE----- `);break;case m.armor.publicKey:d.push(`-----BEGIN PGP PUBLIC KEY BLOCK----- -`),d.push(Cc(n,o)),d.push(Ys(e)),l&&d.push("=",Ec(l)),d.push(`-----END PGP PUBLIC KEY BLOCK----- +`),d.push(bc(n,o)),d.push(Ws(e)),l&&d.push("=",vc(l)),d.push(`-----END PGP PUBLIC KEY BLOCK----- `);break;case m.armor.privateKey:d.push(`-----BEGIN PGP PRIVATE KEY BLOCK----- -`),d.push(Cc(n,o)),d.push(Ys(e)),l&&d.push("=",Ec(l)),d.push(`-----END PGP PRIVATE KEY BLOCK----- +`),d.push(bc(n,o)),d.push(Ws(e)),l&&d.push("=",vc(l)),d.push(`-----END PGP PRIVATE KEY BLOCK----- `);break;case m.armor.signature:d.push(`-----BEGIN PGP SIGNATURE----- -`),d.push(Cc(n,o)),d.push(Ys(e)),l&&d.push("=",Ec(l)),d.push(`-----END PGP SIGNATURE----- -`);break}return F.concat(d)}function Te(r){let e="0123456789ABCDEF",t="";return r.forEach(i=>{t+=e[i>>4]+e[i&15]}),BigInt("0x0"+t)}function rt(r,e){let t=r%e;return t<xi?t+e:t}function J$(r,e,t){let i=-r;return e&i|t&~i}function br(r,e,t){if(t===xi)throw Error("Modulo cannot be zero");if(t===fd)return BigInt(0);if(e<xi)throw Error("Unsopported negative exponent");let i=e,n=r;n%=t;let s=BigInt(1);for(;i>xi;){let o=i&fd;i>>=fd;let a=s*n%t;s=J$(o,a,s),n=n*n%t}return s}function UP(r){return r>=xi?r:-r}function j$(r,e){let t=BigInt(0),i=BigInt(1),n=BigInt(1),s=BigInt(0),o=UP(r),a=UP(e),c=r<xi,l=e<xi;for(;a!==xi;){let d=o/a,u=t;t=n-d*t,n=u,u=i,i=s-d*i,s=u,u=a,a=o%a,o=u}return{x:c?-n:n,y:l?-s:s,gcd:o}}function Id(r,e){let{gcd:t,x:i}=j$(r,e);if(t!==fd)throw new Error("Inverse does not exist");return rt(i+e,e)}function $$(r,e){let t=r,i=e;for(;i!==xi;){let n=i;i=t%i,t=n}return t}function ZE(r){let e=Number(r);if(e>Number.MAX_SAFE_INTEGER)throw new Error("Number can only safely store up to 53 bits");return e}function V$(r,e){return(r>>BigInt(e)&fd)===xi?0:1}function Dd(r){let e=r<xi?BigInt(-1):xi,t=1,i=r;for(;(i>>=fd)!==e;)t++;return t}function Ci(r){let e=r<xi?BigInt(-1):xi,t=BigInt(8),i=1,n=r;for(;(n>>=t)!==e;)i++;return i}function Wt(r,e="be",t){let i=r.toString(16);i.length%2===1&&(i="0"+i);let n=i.length/2,s=new Uint8Array(t||n),o=t?t-n:0,a=0;for(;a<n;)s[a+o]=parseInt(i.slice(2*a,2*a+2),16),a++;return e!=="be"&&s.reverse(),s}function Ur(r){let e=typeof crypto<"u"?crypto:Y$?.webcrypto;if(e?.getRandomValues){let t=new Uint8Array(r);return e.getRandomValues(t)}else throw new Error("No secure random number generator available.")}function Ba(r,e){if(e<r)throw new Error("Illegal parameter value: max <= min");let t=e-r,i=Ci(t),n=Te(Ur(i+8));return rt(n,t)+r}function RP(r,e,t){let i=BigInt(30),n=ns<<BigInt(r-1),s=[1,6,5,4,3,2,1,4,3,2,1,2,1,4,3,2,1,2,1,4,3,2,1,6,5,4,3,2,1,2],o=Ba(n,n<<ns),a=ZE(rt(o,i));do o+=BigInt(s[a]),a=(a+s[a])%s.length,Dd(o)>r&&(o=rt(o,n<<ns),o+=n,a=ZE(rt(o,i)));while(!o6(o,e,t));return o}function o6(r,e,t){return!(e&&$$(r-ns,e)!==ns||!X$(r)||!W$(r)||!eV(r,t))}function W$(r,e=BigInt(2)){return br(e,r-ns,r)===ns}function X$(r){let e=BigInt(0);return Z$.every(t=>rt(r,t)!==e)}function eV(r,e,t){let i=Dd(r);e||(e=Math.max(1,i/48|0));let n=r-ns,s=0;for(;!V$(n,s);)s++;let o=r>>BigInt(s);for(;e>0;e--){let a=Ba(BigInt(2),n),c=br(a,o,r);if(c===ns||c===n)continue;let l;for(l=1;l<s;l++){if(c=rt(c*c,r),c===ns)return!1;if(c===n)break}if(l===s)return!1}return!0}function so(r){if(!(!by||!tV.includes(r)))return async function(e){let t=by.createHash(r);return sr(e,i=>{t.update(i)},()=>new Uint8Array(t.digest()))}}function oo(r,e){let t=async()=>{let{nobleHashes:i}=await Promise.resolve().then(function(){return nee}),n=i.get(r);if(!n)throw new Error("Unsupported hash");return n};return async function(i){if(St(i)&&(i=await Xt(i)),F.isStream(i)){let s=(await t()).create();return sr(i,o=>{s.update(o)},()=>s.digest())}else return NP&&e?new Uint8Array(await NP.digest(e,i)):(await t())(i)}}function cs(r,e){switch(r){case m.hash.md5:return rV(e);case m.hash.sha1:return iV(e);case m.hash.ripemd:return cV(e);case m.hash.sha256:return sV(e);case m.hash.sha384:return oV(e);case m.hash.sha512:return aV(e);case m.hash.sha224:return nV(e);case m.hash.sha3_256:return lV(e);case m.hash.sha3_512:return dV(e);default:throw new Error("Unsupported hash function")}}function gr(r){switch(r){case m.hash.md5:return 16;case m.hash.sha1:case m.hash.ripemd:return 20;case m.hash.sha256:return 32;case m.hash.sha384:return 48;case m.hash.sha512:return 64;case m.hash.sha224:return 28;case m.hash.sha3_256:return 32;case m.hash.sha3_512:return 64;default:throw new Error("Invalid hash algorithm.")}}function uV(r){let e=new Uint8Array(r),t=0;for(;t<r;){let i=Ur(r-t);for(let n=0;n<i.length;n++)i[n]!==0&&(e[t++]=i[n])}return e}function a6(r,e){let t=r.length;if(t>e-11)throw new Error("Message too long");let i=uV(e-t-3),n=new Uint8Array(e);return n[1]=2,n.set(i,2),n.set(r,e-t),n}function c6(r,e){let t=2,i=1;for(let a=t;a<r.length;a++)i&=r[a]!==0,t+=i;let n=t-2,s=r.subarray(t+1),o=r[0]===0&r[1]===2&n>=8&!i;if(e)return F.selectUint8Array(o,s,e);if(o)return s;throw new Error("Decryption error")}function l6(r,e,t){let i;if(e.length!==gr(r))throw new Error("Invalid hash length");let n=new Uint8Array(rn[r].length);for(i=0;i<rn[r].length;i++)n[i]=rn[r][i];let s=n.length+e.length;if(t<s+11)throw new Error("Intended encoded message length too short");let o=new Uint8Array(t-s-3).fill(255),a=new Uint8Array(t);return a[1]=1,a.set(o,2),a.set(n,t-s),a.set(e,t-e.length),a}async function fV(r,e,t,i,n,s,o,a,c){if(gr(r)>=t.length)throw new Error("Digest size cannot exceed key modulus size");if(e&&!F.isStream(e)){if(F.getWebCrypto())try{return await IV(m.read(m.webHash,r),e,t,i,n,s,o,a)}catch(l){F.printDebugError(l)}else if(F.getNodeCrypto())return wV(r,e,t,i,n,s,o,a)}return yV(r,t,n,c)}async function AV(r,e,t,i,n,s){if(e&&!F.isStream(e)){if(F.getWebCrypto())try{return await CV(m.read(m.webHash,r),e,t,i,n)}catch(o){F.printDebugError(o)}else if(F.getNodeCrypto())return EV(r,e,t,i,n)}return xV(r,t,i,n,s)}async function hV(r,e,t){return F.getNodeCrypto()?BV(r,e,t):bV(r,e,t)}async function gV(r,e,t,i,n,s,o,a){if(F.getNodeCrypto()&&!a)try{return vV(r,e,t,i,n,s,o)}catch(c){F.printDebugError(c)}return kV(r,e,t,i,n,s,o,a)}async function pV(r,e){if(e=BigInt(e),F.getWebCrypto()){let o={name:"RSASSA-PKCS1-v1_5",modulusLength:r,publicExponent:Wt(e),hash:{name:"SHA-1"}},a=await wd.generateKey(o,!0,["sign","verify"]),c=await wd.exportKey("jwk",a.privateKey);return qP(c,e)}else if(F.getNodeCrypto()){let o={modulusLength:r,publicExponent:ZE(e),publicKeyEncoding:{type:"pkcs1",format:"jwk"},privateKeyEncoding:{type:"pkcs1",format:"jwk"}},a=await new Promise((c,l)=>{Pc.generateKeyPair("rsa",o,(d,u,f)=>{d?l(d):c(f)})});return qP(a,e)}let t,i,n;do i=RP(r-(r>>1),e,40),t=RP(r>>1,e,40),n=t*i;while(Dd(n)!==r);let s=(t-Ia)*(i-Ia);return i<t&&([t,i]=[i,t]),{n:Wt(n),e:Wt(e),d:Wt(Id(e,s)),p:Wt(t),q:Wt(i),u:Wt(Id(t,i))}}async function mV(r,e,t,i,n,s){if(r=Te(r),i=Te(i),n=Te(n),i*n!==r)return!1;let o=BigInt(2);if(s=Te(s),rt(i*s,n)!==BigInt(1))return!1;e=Te(e),t=Te(t);let a=BigInt(Math.floor(Dd(r)/3)),c=Ba(o,o<<a),l=c*t*e;return rt(l,i-Ia)===c&&rt(l,n-Ia)===c}function yV(r,e,t,i){e=Te(e);let n=Te(l6(r,i,Ci(e)));return t=Te(t),Wt(br(n,t,e),"be",Ci(e))}async function IV(r,e,t,i,n,s,o,a){let c=RB(t,i,n,s,o,a),l={name:"RSASSA-PKCS1-v1_5",hash:{name:r}},d=await wd.importKey("jwk",c,l,!1,["sign"]);return new Uint8Array(await wd.sign("RSASSA-PKCS1-v1_5",d,e))}function wV(r,e,t,i,n,s,o,a){let c=Pc.createSign(m.read(m.hash,r));c.write(e),c.end();let l=RB(t,i,n,s,o,a);return new Uint8Array(c.sign({key:l,format:"jwk",type:"pkcs1"}))}function xV(r,e,t,i,n){if(t=Te(t),e=Te(e),i=Te(i),e>=t)throw new Error("Signature size cannot exceed modulus size");let s=Wt(br(e,i,t),"be",Ci(t)),o=l6(r,n,Ci(t));return F.equalsUint8Array(s,o)}async function CV(r,e,t,i,n){let s=NB(i,n),o=await wd.importKey("jwk",s,{name:"RSASSA-PKCS1-v1_5",hash:{name:r}},!1,["verify"]);return wd.verify("RSASSA-PKCS1-v1_5",o,t,e)}function EV(r,e,t,i,n){let o={key:NB(i,n),format:"jwk",type:"pkcs1"},a=Pc.createVerify(m.read(m.hash,r));a.write(e),a.end();try{return a.verify(o,t)}catch{return!1}}function BV(r,e,t){let n={key:NB(e,t),format:"jwk",type:"pkcs1",padding:Pc.constants.RSA_PKCS1_PADDING};return new Uint8Array(Pc.publicEncrypt(n,r))}function bV(r,e,t){if(e=Te(e),r=Te(a6(r,Ci(e))),t=Te(t),r>=e)throw new Error("Message size cannot exceed modulus size");return Wt(br(r,t,e),"be",Ci(e))}function vV(r,e,t,i,n,s,o){let c={key:RB(e,t,i,n,s,o),format:"jwk",type:"pkcs1",padding:Pc.constants.RSA_PKCS1_PADDING};try{return new Uint8Array(Pc.privateDecrypt(c,r))}catch{throw new Error("Decryption error")}}function kV(r,e,t,i,n,s,o,a){if(r=Te(r),e=Te(e),t=Te(t),i=Te(i),n=Te(n),s=Te(s),o=Te(o),r>=e)throw new Error("Data too large.");let c=rt(i,s-Ia),l=rt(i,n-Ia),d=Ba(BigInt(2),e),u=br(Id(d,e),t,e);r=rt(r*u,e);let f=br(r,l,n),h=br(r,c,s),p=rt(o*(h-f),s)*n+f;return p=rt(p*d,e),c6(Wt(p,"be",Ci(e)),a)}function RB(r,e,t,i,n,s){let o=Te(i),a=Te(n),c=Te(t),l=rt(c,a-Ia),d=rt(c,o-Ia);return d=Wt(d),l=Wt(l),{kty:"RSA",n:Pr(r),e:Pr(e),d:Pr(t),p:Pr(n),q:Pr(i),dp:Pr(l),dq:Pr(d),qi:Pr(s),ext:!0}}function NB(r,e){return{kty:"RSA",n:Pr(r),e:Pr(e),ext:!0}}function qP(r,e){return{n:Ii(r.n),e:Wt(e),d:Ii(r.d),p:Ii(r.q),q:Ii(r.p),u:Ii(r.qi)}}async function SV(r,e,t,i){e=Te(e),t=Te(t),i=Te(i);let n=a6(r,Ci(e)),s=Te(n),o=Ba(ha,e-ha);return{c1:Wt(br(t,o,e)),c2:Wt(rt(br(i,o,e)*s,e))}}async function DV(r,e,t,i,n){r=Te(r),e=Te(e),t=Te(t),i=Te(i);let s=rt(Id(br(r,i,t),t)*e,t);return c6(Wt(s,"be",Ci(t)),n)}async function QV(r,e,t,i){let n=Te(r),s=Te(e),o=Te(t);if(s<=ha||s>=n)return!1;let a=BigInt(Dd(n)),c=BigInt(1023);if(a<c||br(s,n-ha,n)!==ha)return!1;let l=s,d=BigInt(1),u=BigInt(2),f=u<<BigInt(17);for(;d<f;){if(l=rt(l*s,n),l===ha)return!1;d++}let h=Te(i),g=Ba(u<<a-ha,u<<a),p=(n-ha)*g+h;return o===br(s,p,n)}function d6(r){let e=0,t,i=r[0];return i<192?([e]=r,t=1):i<255?(e=(r[0]-192<<8)+r[1]+192,t=2):i===255&&(e=F.readNumber(r.subarray(1,5)),t=5),{len:e,offset:t}}function lI(r){return r<192?new Uint8Array([r]):r>191&&r<8384?new Uint8Array([(r-192>>8)+192,r-192&255]):F.concatUint8Array([new Uint8Array([255]),F.writeNumber(r,4)])}function FV(r){if(r<0||r>30)throw new Error("Partial Length power must be between 1 and 30");return new Uint8Array([224+r])}function vy(r){return new Uint8Array([192|r])}function OP(r,e){return F.concatUint8Array([vy(r),lI(e)])}function gy(r){return[m.packet.literalData,m.packet.compressedData,m.packet.symmetricallyEncryptedData,m.packet.symEncryptedIntegrityProtectedData,m.packet.aeadEncryptedData].includes(r)}async function PV(r,e,t){let i,n;try{let s=await r.peekBytes(2);if(!s||s.length<2||(s[0]&128)===0)throw new Error("Error during parsing. This message / key probably does not conform to a valid OpenPGP format.");let o=await r.readByte(),a=-1,c=-1,l;c=0,(o&64)!==0&&(c=1);let d;c?a=o&63:(a=(o&63)>>2,d=o&3);let u=gy(a),f=null;if(e&&u){if(e==="array"){let g=new sn;i=Li(g),f=g}else{let g=new TransformStream;i=Li(g.writable),f=g.readable}n=t({tag:a,packet:f})}else f=[];let h;do{if(c){let g=await r.readByte();if(h=!1,g<192)l=g;else if(g>=192&&g<224)l=(g-192<<8)+await r.readByte()+192;else if(g>223&&g<255){if(l=1<<(g&31),h=!0,!u)throw new TypeError("This packet type does not support partial lengths.")}else l=await r.readByte()<<24|await r.readByte()<<16|await r.readByte()<<8|await r.readByte()}else switch(d){case 0:l=await r.readByte();break;case 1:l=await r.readByte()<<8|await r.readByte();break;case 2:l=await r.readByte()<<24|await r.readByte()<<16|await r.readByte()<<8|await r.readByte();break;default:l=1/0;break}if(l>0){let g=0;for(;;){i&&await i.ready;let{done:p,value:I}=await r.read();if(p){if(l===1/0)break;throw new Error("Unexpected end of packet")}let y=l===1/0?I:I.subarray(0,l-g);if(i?await i.write(y):f.push(y),g+=I.length,g>=l){r.unshift(I.subarray(l-g+I.length));break}}}}while(h);i?(await i.ready,await i.close()):(f=F.concatUint8Array(f),await t({tag:a,packet:f}))}catch(s){if(i)return await i.abort(s),!0;throw s}finally{i&&await n}}async function qB(r){switch(r){case m.publicKey.ed25519:try{let e=F.getWebCrypto(),t=await e.generateKey("Ed25519",!0,["sign","verify"]).catch(s=>{if(s.name==="OperationError"){let o=new Error("Unexpected key generation issue");throw o.name="NotSupportedError",o}throw s}),i=await e.exportKey("jwk",t.privateKey),n=await e.exportKey("jwk",t.publicKey);return{A:new Uint8Array(Ii(n.x)),seed:Ii(i.d,!0)}}catch(e){if(e.name!=="NotSupportedError")throw e;let{default:t}=await Promise.resolve().then(function(){return Kc}),i=Ur(dI(r)),{publicKey:n}=t.sign.keyPair.fromSeed(i);return{A:n,seed:i}}case m.publicKey.ed448:{let e=await F.getNobleCurve(m.publicKey.ed448),{secretKey:t,publicKey:i}=e.keygen();return{A:i,seed:t}}default:throw new Error("Unsupported EdDSA algorithm")}}async function OB(r,e,t,i,n,s){if(gr(e)<gr(uI(r)))throw new Error("Hash algorithm too weak for EdDSA.");switch(r){case m.publicKey.ed25519:try{let o=F.getWebCrypto(),a=u6(r,i,n),c=await o.importKey("jwk",a,"Ed25519",!1,["sign"]);return{RS:new Uint8Array(await o.sign("Ed25519",c,s))}}catch(o){if(o.name!=="NotSupportedError")throw o;let{default:a}=await Promise.resolve().then(function(){return Kc}),c=F.concatUint8Array([n,i]);return{RS:a.sign.detached(s,c)}}case m.publicKey.ed448:return{RS:(await F.getNobleCurve(m.publicKey.ed448)).sign(s,n)};default:throw new Error("Unsupported EdDSA algorithm")}}async function MB(r,e,{RS:t},i,n,s){if(gr(e)<gr(uI(r)))throw new Error("Hash algorithm too weak for EdDSA.");switch(r){case m.publicKey.ed25519:try{let o=F.getWebCrypto(),a=HB(r,n),c=await o.importKey("jwk",a,"Ed25519",!1,["verify"]);return await o.verify("Ed25519",c,t,s)}catch(o){if(o.name!=="NotSupportedError")throw o;let{default:a}=await Promise.resolve().then(function(){return Kc});return a.sign.detached.verify(s,t,n)}case m.publicKey.ed448:return(await F.getNobleCurve(m.publicKey.ed448)).verify(t,s,n);default:throw new Error("Unsupported EdDSA algorithm")}}async function LB(r,e,t){switch(r){case m.publicKey.ed25519:try{let i=F.getWebCrypto(),n=u6(r,e,t),s=HB(r,e),o=await i.importKey("jwk",n,"Ed25519",!1,["sign"]),a=await i.importKey("jwk",s,"Ed25519",!1,["verify"]),c=Ur(8),l=new Uint8Array(await i.sign("Ed25519",o,c));return await i.verify("Ed25519",a,l,c)}catch(i){if(i.name!=="NotSupportedError")return!1;let{default:n}=await Promise.resolve().then(function(){return Kc}),{publicKey:s}=n.sign.keyPair.fromSeed(t);return F.equalsUint8Array(e,s)}case m.publicKey.ed448:{let n=(await F.getNobleCurve(m.publicKey.ed448)).getPublicKey(t);return F.equalsUint8Array(e,n)}default:return!1}}function dI(r){switch(r){case m.publicKey.ed25519:return 32;case m.publicKey.ed448:return 57;default:throw new Error("Unsupported EdDSA algorithm")}}function uI(r){switch(r){case m.publicKey.ed25519:return m.hash.sha256;case m.publicKey.ed448:return m.hash.sha512;default:throw new Error("Unknown EdDSA algo")}}function f6(r){return r instanceof Uint8Array||ArrayBuffer.isView(r)&&r.constructor.name==="Uint8Array"}function kt(r,...e){if(!f6(r))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(r.length))throw new Error("Uint8Array expected of length "+e+", got length="+r.length)}function ky(r,e=!0){if(r.destroyed)throw new Error("Hash instance has been destroyed");if(e&&r.finished)throw new Error("Hash#digest() has already been called")}function A6(r,e){kt(r);let t=e.outputLen;if(r.length<t)throw new Error("digestInto() expects output buffer of length at least "+t)}function KB(r){return new Uint8Array(r.buffer,r.byteOffset,r.byteLength)}function Et(r){return new Uint32Array(r.buffer,r.byteOffset,Math.floor(r.byteLength/4))}function Wr(...r){for(let e=0;e<r.length;e++)r[e].fill(0)}function fI(r){return new DataView(r.buffer,r.byteOffset,r.byteLength)}function RV(r){if(typeof r!="string")throw new Error("string expected");return new Uint8Array(new TextEncoder().encode(r))}function Tf(r){if(typeof r=="string")r=RV(r);else if(f6(r))r=Ei(r);else throw new Error("Uint8Array expected, got "+typeof r);return r}function h6(r,e){return r.buffer===e.buffer&&r.byteOffset<e.byteOffset+e.byteLength&&e.byteOffset<r.byteOffset+r.byteLength}function GB(r,e){if(h6(r,e)&&r.byteOffset<e.byteOffset)throw new Error("complex overlap of input and output is not supported")}function NV(...r){let e=0;for(let i=0;i<r.length;i++){let n=r[i];kt(n),e+=n.length}let t=new Uint8Array(e);for(let i=0,n=0;i<r.length;i++){let s=r[i];t.set(s,n),n+=s.length}return t}function g6(r,e){if(r.length!==e.length)return!1;let t=0;for(let i=0;i<r.length;i++)t|=r[i]^e[i];return t===0}function tA(r,e,t=!0){if(e===void 0)return new Uint8Array(r);if(e.length!==r)throw new Error("invalid output length, expected "+r+", got: "+e.length);if(t&&!nn(e))throw new Error("invalid output, must be aligned");return e}function eB(r,e,t,i){if(typeof r.setBigUint64=="function")return r.setBigUint64(e,t,i);let n=BigInt(32),s=BigInt(4294967295),o=Number(t>>n&s),a=Number(t&s),c=0,l=4;r.setUint32(e+c,o,i),r.setUint32(e+l,a,i)}function qV(r,e,t){let i=new Uint8Array(16),n=fI(i);return eB(n,0,BigInt(e),t),eB(n,8,BigInt(r),t),i}function nn(r){return r.byteOffset%4===0}function Ei(r){return Uint8Array.from(r)}function LV(r){r.reverse();let e=r[15]&1,t=0;for(let i=0;i<r.length;i++){let n=r[i];r[i]=n>>>1|t,t=(n&1)<<7}return r[0]^=-e&225,r}function p6(r){let e=(i,n)=>r(n,i.length).update(Tf(i)).digest(),t=r(new Uint8Array(16),0);return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=(i,n)=>r(i,n),e}function jB(r){return r<<1^KV&-(r>>7)}function cd(r,e){let t=0;for(;e>0;e>>=1)t^=r&-(e&1),r=jB(r);return t}function m6(r,e){if(r.length!==256)throw new Error("Wrong sbox length");let t=new Uint32Array(256).map((l,d)=>e(r[d])),i=t.map(CE),n=i.map(CE),s=n.map(CE),o=new Uint32Array(256*256),a=new Uint32Array(256*256),c=new Uint16Array(256*256);for(let l=0;l<256;l++)for(let d=0;d<256;d++){let u=l*256+d;o[u]=t[l]^i[d],a[u]=n[l]^s[d],c[u]=r[l]<<8|r[d]}return{sbox:r,sbox2:c,T0:t,T1:i,T2:n,T3:s,T01:o,T23:a}}function Mc(r){kt(r);let e=r.length;if(![16,24,32].includes(e))throw new Error("aes: invalid key size, should be 16, 24 or 32, got "+e);let{sbox2:t}=$B,i=[];nn(r)||i.push(r=Ei(r));let n=Et(r),s=n.length,o=c=>rs(t,c,c,c,c),a=new Uint32Array(e+28);a.set(n);for(let c=s;c<a.length;c++){let l=a[c-1];c%s===0?l=o(zV(l))^JV[c/s-1]:s>6&&c%s===4&&(l=o(l)),a[c]=a[c-s]^l}return Wr(...i),a}function VB(r){let e=Mc(r),t=e.slice(),i=e.length,{sbox2:n}=$B,{T0:s,T1:o,T2:a,T3:c}=y6;for(let l=0;l<i;l+=4)for(let d=0;d<4;d++)t[l+d]=e[i-l-4+d];Wr(e);for(let l=4;l<i-4;l++){let d=t[l],u=rs(n,d,d,d,d);t[l]=s[u&255]^o[u>>>8&255]^a[u>>>16&255]^c[u>>>24]}return t}function pa(r,e,t,i,n,s){return r[t<<8&65280|i>>>8&255]^e[n>>>8&65280|s>>>24&255]}function rs(r,e,t,i,n){return r[e&255|t&65280]|r[i>>>16&255|n>>>16&65280]<<16}function Dn(r,e,t,i,n){let{sbox2:s,T01:o,T23:a}=$B,c=0;e^=r[c++],t^=r[c++],i^=r[c++],n^=r[c++];let l=r.length/4-2;for(let g=0;g<l;g++){let p=r[c++]^pa(o,a,e,t,i,n),I=r[c++]^pa(o,a,t,i,n,e),y=r[c++]^pa(o,a,i,n,e,t),w=r[c++]^pa(o,a,n,e,t,i);e=p,t=I,i=y,n=w}let d=r[c++]^rs(s,e,t,i,n),u=r[c++]^rs(s,t,i,n,e),f=r[c++]^rs(s,i,n,e,t),h=r[c++]^rs(s,n,e,t,i);return{s0:d,s1:u,s2:f,s3:h}}function AI(r,e,t,i,n){let{sbox2:s,T01:o,T23:a}=y6,c=0;e^=r[c++],t^=r[c++],i^=r[c++],n^=r[c++];let l=r.length/4-2;for(let g=0;g<l;g++){let p=r[c++]^pa(o,a,e,n,i,t),I=r[c++]^pa(o,a,t,e,n,i),y=r[c++]^pa(o,a,i,t,e,n),w=r[c++]^pa(o,a,n,i,t,e);e=p,t=I,i=y,n=w}let d=r[c++]^rs(s,e,n,i,t),u=r[c++]^rs(s,t,e,n,i),f=r[c++]^rs(s,i,t,e,n),h=r[c++]^rs(s,n,i,t,e);return{s0:d,s1:u,s2:f,s3:h}}function I6(r,e,t,i){kt(e,Bi),kt(t);let n=t.length;i=tA(n,i),GB(t,i);let s=e,o=Et(s),{s0:a,s1:c,s2:l,s3:d}=Dn(r,o[0],o[1],o[2],o[3]),u=Et(t),f=Et(i);for(let g=0;g+4<=u.length;g+=4){f[g+0]=u[g+0]^a,f[g+1]=u[g+1]^c,f[g+2]=u[g+2]^l,f[g+3]=u[g+3]^d;let p=1;for(let I=s.length-1;I>=0;I--)p=p+(s[I]&255)|0,s[I]=p&255,p>>>=8;({s0:a,s1:c,s2:l,s3:d}=Dn(r,o[0],o[1],o[2],o[3]))}let h=Bi*Math.floor(u.length/JB);if(h<n){let g=new Uint32Array([a,c,l,d]),p=KB(g);for(let I=h,y=0;I<n;I++,y++)i[I]=t[I]^p[y];Wr(g)}return i}function kf(r,e,t,i,n){kt(t,Bi),kt(i),n=tA(i.length,n);let s=t,o=Et(s),a=fI(s),c=Et(i),l=Et(n),d=e?0:12,u=i.length,f=a.getUint32(d,e),{s0:h,s1:g,s2:p,s3:I}=Dn(r,o[0],o[1],o[2],o[3]);for(let w=0;w+4<=c.length;w+=4)l[w+0]=c[w+0]^h,l[w+1]=c[w+1]^g,l[w+2]=c[w+2]^p,l[w+3]=c[w+3]^I,f=f+1>>>0,a.setUint32(d,f,e),{s0:h,s1:g,s2:p,s3:I}=Dn(r,o[0],o[1],o[2],o[3]);let y=Bi*Math.floor(c.length/JB);if(y<u){let w=new Uint32Array([h,g,p,I]),C=KB(w);for(let b=y,x=0;b<u;b++,x++)n[b]=i[b]^C[x];Wr(w)}return n}function $V(r){if(kt(r),r.length%Bi!==0)throw new Error("aes-(cbc/ecb).decrypt ciphertext should consist of blocks with size "+Bi)}function VV(r,e,t){kt(r);let i=r.length,n=i%Bi;if(!e&&n!==0)throw new Error("aec/(cbc-ecb): unpadded plaintext with disabled padding");nn(r)||(r=Ei(r));let s=Et(r);if(e){let a=Bi-n;a||(a=Bi),i=i+a}t=tA(i,t),GB(r,t);let o=Et(t);return{b:s,o,out:t}}function YV(r,e){if(!e)return r;let t=r.length;if(!t)throw new Error("aes/pcks5: empty ciphertext not allowed");let i=r[t-1];if(i<=0||i>16)throw new Error("aes/pcks5: wrong padding");let n=r.subarray(0,-i);for(let s=0;s<i;s++)if(r[t-s-1]!==i)throw new Error("aes/pcks5: wrong padding");return n}function WV(r){let e=new Uint8Array(16),t=Et(e);e.set(r);let i=Bi-r.length;for(let n=Bi-i;n<Bi;n++)e[n]=i;return t}function XV(r,e,t,i,n){let s=n?n.length:0,o=r.create(t,i.length+s);n&&o.update(n);let a=qV(8*i.length,8*s,e);o.update(i),o.update(a);let c=o.digest();return Wr(a),c}function x6(r){return r instanceof Uint32Array||ArrayBuffer.isView(r)&&r.constructor.name==="Uint32Array"}function C6(r,e){if(kt(e,16),!x6(r))throw new Error("_encryptBlock accepts result of expandKeyLE");let t=Et(e),{s0:i,s1:n,s2:s,s3:o}=Dn(r,t[0],t[1],t[2],t[3]);return t[0]=i,t[1]=n,t[2]=s,t[3]=o,e}function E6(r,e){if(kt(e,16),!x6(r))throw new Error("_decryptBlock accepts result of expandKeyLE");let t=Et(e),{s0:i,s1:n,s2:s,s3:o}=AI(r,t[0],t[1],t[2],t[3]);return t[0]=i,t[1]=n,t[2]=s,t[3]=o,e}async function b6(r){switch(r){case m.symmetric.aes128:case m.symmetric.aes192:case m.symmetric.aes256:throw new Error("Not a legacy cipher");case m.symmetric.cast5:case m.symmetric.blowfish:case m.symmetric.twofish:case m.symmetric.tripledes:{let{legacyCiphers:e}=await Promise.resolve().then(function(){return Eee}),t=m.read(m.symmetric,r),i=e.get(t);if(!i)throw new Error("Unsupported cipher algorithm");return i}default:throw new Error("Unsupported cipher algorithm")}}function ZV(r){switch(r){case m.symmetric.aes128:case m.symmetric.aes192:case m.symmetric.aes256:case m.symmetric.twofish:return 16;case m.symmetric.blowfish:case m.symmetric.cast5:case m.symmetric.tripledes:return 8;default:throw new Error("Unsupported cipher")}}function eY(r){switch(r){case m.symmetric.aes128:case m.symmetric.blowfish:case m.symmetric.cast5:return 16;case m.symmetric.aes192:case m.symmetric.tripledes:return 24;case m.symmetric.aes256:case m.symmetric.twofish:return 32;default:throw new Error("Unsupported cipher")}}function It(r){return{keySize:eY(r),blockSize:ZV(r)}}async function nB(r,e,t){let{keySize:i}=It(r);if(!F.isAES(r)||e.length!==i)throw new Error("Unexpected algorithm or key size");try{let n=await hd.importKey("raw",e,{name:"AES-KW"},!1,["wrapKey"]),s=await hd.importKey("raw",t,{name:"HMAC",hash:"SHA-256"},!0,["sign"]),o=await hd.wrapKey("raw",s,n,{name:"AES-KW"});return new Uint8Array(o)}catch(n){if(n.name!=="NotSupportedError"&&!(e.length===24&&n.name==="OperationError"))throw n;F.printDebugError("Browser did not support operation: "+n.message)}return B6(e).encrypt(t)}async function sB(r,e,t){let{keySize:i}=It(r);if(!F.isAES(r)||e.length!==i)throw new Error("Unexpected algorithm or key size");let n;try{n=await hd.importKey("raw",e,{name:"AES-KW"},!1,["unwrapKey"])}catch(s){if(s.name!=="NotSupportedError"&&!(e.length===24&&s.name==="OperationError"))throw s;return F.printDebugError("Browser did not support operation: "+s.message),B6(e).decrypt(t)}try{let s=await hd.unwrapKey("raw",t,n,{name:"AES-KW"},{name:"HMAC",hash:"SHA-256"},!0,["sign"]);return new Uint8Array(await hd.exportKey("raw",s))}catch(s){throw s.name==="OperationError"?new Error("Key Data Integrity failed"):s}}async function wa(r,e,t,i,n){let s=F.getWebCrypto(),o=m.read(m.webHash,r);if(!o)throw new Error("Hash algo not supported with HKDF");let a=await s.importKey("raw",e,"HKDF",!1,["deriveBits"]),c=await s.deriveBits({name:"HKDF",hash:o,salt:t,info:i},a,n*8);return new Uint8Array(c)}async function YB(r){switch(r){case m.publicKey.x25519:try{let e=F.getWebCrypto(),t=await e.generateKey("X25519",!0,["deriveKey","deriveBits"]).catch(s=>{if(s.name==="OperationError"){let o=new Error("Unexpected key generation issue");throw o.name="NotSupportedError",o}throw s}),i=await e.exportKey("jwk",t.privateKey),n=await e.exportKey("jwk",t.publicKey);if(i.x!==n.x){let s=new Error("Unexpected mismatching public point");throw s.name="NotSupportedError",s}return{A:new Uint8Array(Ii(n.x)),k:Ii(i.d)}}catch(e){if(e.name!=="NotSupportedError")throw e;let{default:t}=await Promise.resolve().then(function(){return Kc}),{secretKey:i,publicKey:n}=t.box.keyPair();return{A:n,k:i}}case m.publicKey.x448:{let e=await F.getNobleCurve(m.publicKey.x448),{secretKey:t,publicKey:i}=e.keygen();return{A:i,k:t}}default:throw new Error("Unsupported ECDH algorithm")}}async function WB(r,e,t){switch(r){case m.publicKey.x25519:try{let{ephemeralPublicKey:i,sharedSecret:n}=await gI(r,e),s=await pI(r,i,e,t);return F.equalsUint8Array(n,s)}catch{return!1}case m.publicKey.x448:{let n=(await F.getNobleCurve(m.publicKey.x448)).getPublicKey(t);return F.equalsUint8Array(e,n)}default:return!1}}async function v6(r,e,t){let{ephemeralPublicKey:i,sharedSecret:n}=await gI(r,t),s=F.concatUint8Array([i,t,n]);switch(r){case m.publicKey.x25519:{let o=m.symmetric.aes128,{keySize:a}=It(o),c=await wa(m.hash.sha256,s,new Uint8Array,Dy.x25519,a),l=await nB(o,c,e);return{ephemeralPublicKey:i,wrappedKey:l}}case m.publicKey.x448:{let o=m.symmetric.aes256,{keySize:a}=It(m.symmetric.aes256),c=await wa(m.hash.sha512,s,new Uint8Array,Dy.x448,a),l=await nB(o,c,e);return{ephemeralPublicKey:i,wrappedKey:l}}default:throw new Error("Unsupported ECDH algorithm")}}async function k6(r,e,t,i,n){let s=await pI(r,e,i,n),o=F.concatUint8Array([e,i,s]);switch(r){case m.publicKey.x25519:{let a=m.symmetric.aes128,{keySize:c}=It(a),l=await wa(m.hash.sha256,o,new Uint8Array,Dy.x25519,c);return sB(a,l,t)}case m.publicKey.x448:{let a=m.symmetric.aes256,{keySize:c}=It(m.symmetric.aes256),l=await wa(m.hash.sha512,o,new Uint8Array,Dy.x448,c);return sB(a,l,t)}default:throw new Error("Unsupported ECDH algorithm")}}function hI(r){switch(r){case m.publicKey.x25519:return 32;case m.publicKey.x448:return 56;default:throw new Error("Unsupported ECDH algorithm")}}async function gI(r,e){switch(r){case m.publicKey.x25519:try{let t=F.getWebCrypto(),i=await t.generateKey("X25519",!0,["deriveKey","deriveBits"]).catch(l=>{if(l.name==="OperationError"){let d=new Error("Unexpected key generation issue");throw d.name="NotSupportedError",d}throw l}),n=await t.exportKey("jwk",i.publicKey);if((await t.exportKey("jwk",i.privateKey)).x!==n.x){let l=new Error("Unexpected mismatching public point");throw l.name="NotSupportedError",l}let o=XB(r,e),a=await t.importKey("jwk",o,"X25519",!1,[]),c=await t.deriveBits({name:"X25519",public:a},i.privateKey,hI(r)*8);return{sharedSecret:new Uint8Array(c),ephemeralPublicKey:new Uint8Array(Ii(n.x))}}catch(t){if(t.name!=="NotSupportedError")throw t;let{default:i}=await Promise.resolve().then(function(){return Kc}),{secretKey:n,publicKey:s}=i.box.keyPair(),o=i.scalarMult(n,e);return Qy(o),{ephemeralPublicKey:s,sharedSecret:o}}case m.publicKey.x448:{let t=await F.getNobleCurve(m.publicKey.x448),{secretKey:i,publicKey:n}=t.keygen(),s=t.getSharedSecret(i,e);return Qy(s),{ephemeralPublicKey:n,sharedSecret:s}}default:throw new Error("Unsupported ECDH algorithm")}}async function pI(r,e,t,i){switch(r){case m.publicKey.x25519:try{let n=F.getWebCrypto(),s=tY(r,t,i),o=XB(r,e),a=await n.importKey("jwk",s,"X25519",!1,["deriveKey","deriveBits"]),c=await n.importKey("jwk",o,"X25519",!1,[]),l=await n.deriveBits({name:"X25519",public:c},a,hI(r)*8);return new Uint8Array(l)}catch(n){if(n.name!=="NotSupportedError")throw n;let{default:s}=await Promise.resolve().then(function(){return Kc}),o=s.scalarMult(i,e);return Qy(o),o}case m.publicKey.x448:{let s=(await F.getNobleCurve(m.publicKey.x448)).getSharedSecret(i,e);return Qy(s),s}default:throw new Error("Unsupported ECDH algorithm")}}function Qy(r){let e=0;for(let t=0;t<r.length;t++)e|=r[t];if(e===0)throw new Error("Unexpected low order point")}function XB(r,e){if(r===m.publicKey.x25519)return{kty:"OKP",crv:"X25519",x:Pr(e),ext:!0};throw new Error("Unsupported ECDH algorithm")}function tY(r,e,t){if(r===m.publicKey.x25519){let i=XB(r,e);return i.d=Pr(t),i}else throw new Error("Unsupported ECDH algorithm")}async function py(r){let e=new bi(r),{oid:t,hash:i,cipher:n}=e,s=await e.genKeyPair();return{oid:t,Q:s.publicKey,secret:F.leftPad(s.privateKey,e.payloadSize),hash:i,cipher:n}}function D6(r){return S6[r.getName()].hash}async function Q6(r,e,t,i){let n={[m.curve.nistP256]:!0,[m.curve.nistP384]:!0,[m.curve.nistP521]:!0,[m.curve.secp256k1]:!0,[m.curve.curve25519Legacy]:r===m.publicKey.ecdh,[m.curve.brainpoolP256r1]:!0,[m.curve.brainpoolP384r1]:!0,[m.curve.brainpoolP512r1]:!0},s=e.getName();if(!n[s])return!1;if(s===m.curve.curve25519Legacy){let c=i.slice().reverse();return t.length<1||t[0]!==64?!1:WB(m.publicKey.x25519,t.subarray(1),c)}let a=(await F.getNobleCurve(m.publicKey.ecdsa,s)).getPublicKey(i,!1);return!!F.equalsUint8Array(a,t)}function Tc(r,e){let{payloadSize:t,wireFormatLeadingByte:i,name:n}=r,s=n===m.curve.curve25519Legacy||n===m.curve.ed25519Legacy?t:t*2;if(e[0]!==i||e.length!==s+1)throw new Error("Invalid point encoding")}async function zP(r){let e=await F.getNobleCurve(m.publicKey.ecdsa,r),{secretKey:t}=e.keygen();return{publicKey:e.getPublicKey(t,!1),privateKey:t}}async function iY(r,e){let t=await EE.generateKey({name:"ECDSA",namedCurve:ss[r]},!0,["sign","verify"]),i=await EE.exportKey("jwk",t.privateKey),n=await EE.exportKey("jwk",t.publicKey);return{publicKey:_6(n,e),privateKey:Ii(i.d)}}function nY(r){let e=_y.createECDH(Zn[r]);return e.generateKeys(),{publicKey:new Uint8Array(e.getPublicKey()),privateKey:new Uint8Array(e.getPrivateKey())}}function _6(r,e){let t=Ii(r.x),i=Ii(r.y),n=new Uint8Array(t.length+i.length+1);return n[0]=e,n.set(t,1),n.set(i,t.length+1),n}function mI(r,e,t){let i=r,n=t.slice(1,i+1),s=t.slice(i+1,i*2+1);return{kty:"EC",crv:e,x:Pr(n),y:Pr(s),ext:!0}}function F6(r,e,t,i){let n=mI(r,e,t);return n.d=Pr(i),n}async function ZB(r,e,t,i,n,s){let o=new bi(r);if(Tc(o,i),t&&!F.isStream(t)){let l={publicKey:i,privateKey:n};switch(o.type){case"web":try{return await oY(o,e,t,l)}catch(d){if(o.name!=="nistP521"&&(d.name==="DataError"||d.name==="OperationError"))throw d;F.printDebugError("Browser did not support signing: "+d.message)}break;case"node":return cY(o,e,t,n)}}let c=(await F.getNobleCurve(m.publicKey.ecdsa,o.name)).sign(s,n,{lowS:!1});return{r:Wt(c.r,"be",o.payloadSize),s:Wt(c.s,"be",o.payloadSize)}}async function e1(r,e,t,i,n,s){let o=new bi(r);Tc(o,n);let a=async()=>s[0]===0?JP(o,t,s.subarray(1),n):!1;if(i&&!F.isStream(i))switch(o.type){case"web":try{return await aY(o,e,t,i,n)||a()}catch(l){if(o.name!=="nistP521"&&(l.name==="DataError"||l.name==="OperationError"))throw l;F.printDebugError("Browser did not support verifying: "+l.message)}break;case"node":return lY(o,e,t,i,n)||a()}return await JP(o,t,s,n)||a()}async function sY(r,e,t){let i=new bi(r);if(i.keyType!==m.publicKey.ecdsa)return!1;switch(i.type){case"web":case"node":{let n=Ur(8),s=m.hash.sha256,o=await cs(s,n);try{let a=await ZB(r,s,n,e,t,o);return await e1(r,s,a,n,e,o)}catch{return!1}}default:return Q6(m.publicKey.ecdsa,r,e,t)}}async function JP(r,e,t,i){return(await F.getNobleCurve(m.publicKey.ecdsa,r.name)).verify(F.concatUint8Array([e.r,e.s]),t,i,{lowS:!1})}async function oY(r,e,t,i){let n=r.payloadSize,s=F6(r.payloadSize,ss[r.name],i.publicKey,i.privateKey),o=await Fy.importKey("jwk",s,{name:"ECDSA",namedCurve:ss[r.name],hash:{name:m.read(m.webHash,r.hash)}},!1,["sign"]),a=new Uint8Array(await Fy.sign({name:"ECDSA",namedCurve:ss[r.name],hash:{name:m.read(m.webHash,e)}},o,t));return{r:a.slice(0,n),s:a.slice(n,n<<1)}}async function aY(r,e,{r:t,s:i},n,s){let o=mI(r.payloadSize,ss[r.name],s),a=await Fy.importKey("jwk",o,{name:"ECDSA",namedCurve:ss[r.name],hash:{name:m.read(m.webHash,r.hash)}},!1,["verify"]),c=F.concatUint8Array([t,i]).buffer;return Fy.verify({name:"ECDSA",namedCurve:ss[r.name],hash:{name:m.read(m.webHash,e)}},a,c,n)}function cY(r,e,t,i){let n=F.nodeRequire("eckey-utils"),s=F.getNodeBuffer(),{privateKey:o}=n.generateDer({curveName:Zn[r.name],privateKey:s.from(i)}),a=P6.createSign(m.read(m.hash,e));a.write(t),a.end();let c=new Uint8Array(a.sign({key:o,format:"der",type:"sec1",dsaEncoding:"ieee-p1363"})),l=r.payloadSize;return{r:c.subarray(0,l),s:c.subarray(l,l<<1)}}function lY(r,e,{r:t,s:i},n,s){let o=F.nodeRequire("eckey-utils"),a=F.getNodeBuffer(),{publicKey:c}=o.generateDer({curveName:Zn[r.name],publicKey:a.from(s)}),l=P6.createVerify(m.read(m.hash,e));l.write(n),l.end();let d=F.concatUint8Array([t,i]);try{return l.verify({key:c,format:"der",type:"spki",dsaEncoding:"ieee-p1363"},d)}catch{return!1}}async function T6(r,e,t,i,n,s){let o=new bi(r);if(Tc(o,i),gr(e)<gr(m.hash.sha256))throw new Error("Hash algorithm too weak for EdDSA.");let{RS:a}=await OB(m.publicKey.ed25519,e,t,i.subarray(1),n,s);return{r:a.subarray(0,32),s:a.subarray(32)}}async function U6(r,e,{r:t,s:i},n,s,o){let a=new bi(r);if(Tc(a,s),gr(e)<gr(m.hash.sha256))throw new Error("Hash algorithm too weak for EdDSA.");let c=F.concatUint8Array([t,i]);return MB(m.publicKey.ed25519,e,{RS:c},n,s.subarray(1),o)}async function R6(r,e,t){return r.getName()!==m.curve.ed25519Legacy||e.length<1||e[0]!==64?!1:LB(m.publicKey.ed25519,e.subarray(1),t)}function fY(r){let e=8-r.length%8,t=new Uint8Array(r.length+e).fill(e);return t.set(r),t}function AY(r){let e=r.length;if(e>0){let t=r[e-1];if(t>=1){let i=r.subarray(e-t),n=new Uint8Array(t).fill(t);if(F.equalsUint8Array(i,n))return r.subarray(0,e-t)}}throw new Error("Invalid padding")}async function hY(r,e,t){return Q6(m.publicKey.ecdh,r,e,t)}function N6(r,e,t,i){return F.concatUint8Array([e.write(),new Uint8Array([r]),t.write(),F.stringToUint8Array("Anonymous Sender "),i])}async function q6(r,e,t,i,n=!1,s=!1){let o;if(n){for(o=0;o<e.length&&e[o]===0;o++);e=e.subarray(o)}if(s){for(o=e.length-1;o>=0&&e[o]===0;o--);e=e.subarray(0,o+1)}return(await cs(r,F.concatUint8Array([new Uint8Array([0,0,0,1]),e,i]))).subarray(0,t)}async function gY(r,e){switch(r.type){case"curve25519Legacy":{let{sharedSecret:t,ephemeralPublicKey:i}=await gI(m.publicKey.x25519,e.subarray(1));return{publicKey:F.concatUint8Array([new Uint8Array([r.wireFormatLeadingByte]),i]),sharedKey:t}}case"web":if(r.web&&F.getWebCrypto())try{return await yY(r,e)}catch(t){return F.printDebugError(t),$P(r,e)}break;case"node":return wY(r,e);default:return $P(r,e)}}async function O6(r,e,t,i,n){let s=fY(t),o=new bi(r);Tc(o,i);let{publicKey:a,sharedKey:c}=await gY(o,i),l=N6(m.publicKey.ecdh,r,e,n),{keySize:d}=It(e.cipher),u=await q6(e.hash,c,d,l),f=await nB(e.cipher,u,s);return{publicKey:a,wrappedKey:f}}async function pY(r,e,t,i){if(i.length!==r.payloadSize){let n=new Uint8Array(r.payloadSize);n.set(i,r.payloadSize-i.length),i=n}switch(r.type){case"curve25519Legacy":{let n=i.slice().reverse(),s=await pI(m.publicKey.x25519,e.subarray(1),t.subarray(1),n);return{secretKey:n,sharedKey:s}}case"web":if(r.web&&F.getWebCrypto())try{return await mY(r,e,t,i)}catch(n){return F.printDebugError(n),jP(r,e,i)}break;case"node":return IY(r,e,i);default:return jP(r,e,i)}}async function M6(r,e,t,i,n,s,o){let a=new bi(r);Tc(a,n),Tc(a,t);let{sharedKey:c}=await pY(a,t,n,s),l=N6(m.publicKey.ecdh,r,e,o),{keySize:d}=It(e.cipher),u;for(let f=0;f<3;f++)try{let h=await q6(e.hash,c,d,l,f===1,f===2);return AY(await sB(e.cipher,h,i))}catch(h){u=h}throw u}async function jP(r,e,t){let s=(await F.getNobleCurve(m.publicKey.ecdh,r.name)).getSharedSecret(t,e).subarray(1);return{secretKey:t,sharedKey:s}}async function $P(r,e){let t=await F.getNobleCurve(m.publicKey.ecdh,r.name),{publicKey:i,privateKey:n}=await r.genKeyPair(),o=t.getSharedSecret(n,e).subarray(1);return{publicKey:i,sharedKey:o}}async function mY(r,e,t,i){let n=F.getWebCrypto(),s=F6(r.payloadSize,r.web,t,i),o=n.importKey("jwk",s,{name:"ECDH",namedCurve:r.web},!0,["deriveKey","deriveBits"]),a=mI(r.payloadSize,r.web,e),c=n.importKey("jwk",a,{name:"ECDH",namedCurve:r.web},!0,[]);[o,c]=await Promise.all([o,c]);let l=n.deriveBits({name:"ECDH",namedCurve:r.web,public:c},o,r.sharedSize),d=n.exportKey("jwk",o);[l,d]=await Promise.all([l,d]);let u=new Uint8Array(l);return{secretKey:Ii(d.d),sharedKey:u}}async function yY(r,e){let t=F.getWebCrypto(),i=mI(r.payloadSize,r.web,e),n=t.generateKey({name:"ECDH",namedCurve:r.web},!0,["deriveKey","deriveBits"]),s=t.importKey("jwk",i,{name:"ECDH",namedCurve:r.web},!1,[]);[n,s]=await Promise.all([n,s]);let o=t.deriveBits({name:"ECDH",namedCurve:r.web,public:s},n.privateKey,r.sharedSize),a=t.exportKey("jwk",n.publicKey);[o,a]=await Promise.all([o,a]);let c=new Uint8Array(o);return{publicKey:new Uint8Array(_6(a,r.wireFormatLeadingByte)),sharedKey:c}}function IY(r,e,t){let n=F.getNodeCrypto().createECDH(r.node);n.setPrivateKey(t);let s=new Uint8Array(n.computeSecret(e));return{secretKey:new Uint8Array(n.getPrivateKey()),sharedKey:s}}function wY(r,e){let i=F.getNodeCrypto().createECDH(r.node);i.generateKeys();let n=new Uint8Array(i.computeSecret(e));return{publicKey:new Uint8Array(i.getPublicKey()),sharedKey:n}}async function EY(r,e,t,i,n,s){let o=BigInt(0);i=Te(i),n=Te(n),t=Te(t),s=Te(s);let a,c,l,d;t=rt(t,i),s=rt(s,n);let u=rt(Te(e.subarray(0,Ci(n))),n);for(;;){if(a=Ba(Sf,n),c=rt(br(t,a,i),n),c===o)continue;let f=rt(s*c,n);if(d=rt(u+f,n),l=rt(Id(a,n)*d,n),l!==o)break}return{r:Wt(c,"be",Ci(i)),s:Wt(l,"be",Ci(i))}}async function BY(r,e,t,i,n,s,o,a){if(e=Te(e),t=Te(t),s=Te(s),o=Te(o),n=Te(n),a=Te(a),e<=my||e>=o||t<=my||t>=o)return F.printDebug("invalid DSA Signature"),!1;let c=rt(Te(i.subarray(0,Ci(o))),o),l=Id(t,o);if(l===my)return F.printDebug("invalid DSA Signature"),!1;n=rt(n,s),a=rt(a,s);let d=rt(c*l,o),u=rt(e*l,o),f=br(n,d,s),h=br(a,u,s);return rt(rt(f*h,s),o)===e}async function bY(r,e,t,i,n){let s=Te(r),o=Te(e),a=Te(t),c=Te(i);if(a<=Sf||a>=s||rt(s-Sf,o)!==my||br(a,o,s)!==Sf)return!1;let l=BigInt(Dd(o)),d=BigInt(150);if(l<d||!o6(o,null,32))return!1;let u=Te(n),f=BigInt(2),h=Ba(f<<l-Sf,f<<l),g=o*h+u;return c===br(a,g,s)}async function vY(r,e,t,i,n){switch(r){case m.publicKey.rsaEncrypt:case m.publicKey.rsaEncryptSign:{let{n:s,e:o}=t;return{c:await hV(i,s,o)}}case m.publicKey.elgamal:{let{p:s,g:o,y:a}=t;return SV(i,s,o,a)}case m.publicKey.ecdh:{let{oid:s,Q:o,kdfParams:a}=t,{publicKey:c,wrappedKey:l}=await O6(s,a,i,o,n);return{V:c,C:new Py(l)}}case m.publicKey.x25519:case m.publicKey.x448:{if(e&&!F.isAES(e))throw new Error("X25519 and X448 keys can only encrypt AES session keys");let{A:s}=t,{ephemeralPublicKey:o,wrappedKey:a}=await v6(r,i,s),c=Uy.fromObject({algorithm:e,wrappedKey:a});return{ephemeralPublicKey:o,C:c}}default:return[]}}async function kY(r,e,t,i,n,s){switch(r){case m.publicKey.rsaEncryptSign:case m.publicKey.rsaEncrypt:{let{c:o}=i,{n:a,e:c}=e,{d:l,p:d,q:u,u:f}=t;return gV(o,a,c,l,d,u,f,s)}case m.publicKey.elgamal:{let{c1:o,c2:a}=i,c=e.p,l=t.x;return DV(o,a,c,l,s)}case m.publicKey.ecdh:{let{oid:o,Q:a,kdfParams:c}=e,{d:l}=t,{V:d,C:u}=i;return M6(o,c,d,u.data,a,l,n)}case m.publicKey.x25519:case m.publicKey.x448:{let{A:o}=e,{k:a}=t,{ephemeralPublicKey:c,C:l}=i;if(l.algorithm!==null&&!F.isAES(l.algorithm))throw new Error("AES session key expected");return k6(r,c,l.wrappedKey,o,a)}default:throw new Error("Unknown public key encryption algorithm.")}}function SY(r,e){let t=0;switch(r){case m.publicKey.rsaEncrypt:case m.publicKey.rsaEncryptSign:case m.publicKey.rsaSign:{let i=F.readMPI(e.subarray(t));t+=i.length+2;let n=F.readMPI(e.subarray(t));return t+=n.length+2,{read:t,publicParams:{n:i,e:n}}}case m.publicKey.dsa:{let i=F.readMPI(e.subarray(t));t+=i.length+2;let n=F.readMPI(e.subarray(t));t+=n.length+2;let s=F.readMPI(e.subarray(t));t+=s.length+2;let o=F.readMPI(e.subarray(t));return t+=o.length+2,{read:t,publicParams:{p:i,q:n,g:s,y:o}}}case m.publicKey.elgamal:{let i=F.readMPI(e.subarray(t));t+=i.length+2;let n=F.readMPI(e.subarray(t));t+=n.length+2;let s=F.readMPI(e.subarray(t));return t+=s.length+2,{read:t,publicParams:{p:i,g:n,y:s}}}case m.publicKey.ecdsa:{let i=new to;t+=i.read(e),BE(i);let n=F.readMPI(e.subarray(t));return t+=n.length+2,{read:t,publicParams:{oid:i,Q:n}}}case m.publicKey.eddsaLegacy:{let i=new to;if(t+=i.read(e),BE(i),i.getName()!==m.curve.ed25519Legacy)throw new Error("Unexpected OID for eddsaLegacy");let n=F.readMPI(e.subarray(t));return t+=n.length+2,n=F.leftPad(n,33),{read:t,publicParams:{oid:i,Q:n}}}case m.publicKey.ecdh:{let i=new to;t+=i.read(e),BE(i);let n=F.readMPI(e.subarray(t));t+=n.length+2;let s=new Ty;return t+=s.read(e.subarray(t)),{read:t,publicParams:{oid:i,Q:n,kdfParams:s}}}case m.publicKey.ed25519:case m.publicKey.ed448:case m.publicKey.x25519:case m.publicKey.x448:{let i=F.readExactSubarray(e,t,t+ld(r));return t+=i.length,{read:t,publicParams:{A:i}}}default:throw new ft("Unknown public key encryption algorithm.")}}function VP(r,e,t){let i=0;switch(r){case m.publicKey.rsaEncrypt:case m.publicKey.rsaEncryptSign:case m.publicKey.rsaSign:{let n=F.readMPI(e.subarray(i));i+=n.length+2;let s=F.readMPI(e.subarray(i));i+=s.length+2;let o=F.readMPI(e.subarray(i));i+=o.length+2;let a=F.readMPI(e.subarray(i));return i+=a.length+2,{read:i,privateParams:{d:n,p:s,q:o,u:a}}}case m.publicKey.dsa:case m.publicKey.elgamal:{let n=F.readMPI(e.subarray(i));return i+=n.length+2,{read:i,privateParams:{x:n}}}case m.publicKey.ecdsa:case m.publicKey.ecdh:{let n=ld(r,t.oid),s=F.readMPI(e.subarray(i));return i+=s.length+2,s=F.leftPad(s,n),{read:i,privateParams:{d:s}}}case m.publicKey.eddsaLegacy:{let n=ld(r,t.oid);if(t.oid.getName()!==m.curve.ed25519Legacy)throw new Error("Unexpected OID for eddsaLegacy");let s=F.readMPI(e.subarray(i));return i+=s.length+2,s=F.leftPad(s,n),{read:i,privateParams:{seed:s}}}case m.publicKey.ed25519:case m.publicKey.ed448:{let n=ld(r),s=F.readExactSubarray(e,i,i+n);return i+=s.length,{read:i,privateParams:{seed:s}}}case m.publicKey.x25519:case m.publicKey.x448:{let n=ld(r),s=F.readExactSubarray(e,i,i+n);return i+=s.length,{read:i,privateParams:{k:s}}}default:throw new ft("Unknown public key encryption algorithm.")}}function DY(r,e){let t=0;switch(r){case m.publicKey.rsaEncrypt:case m.publicKey.rsaEncryptSign:return{c:F.readMPI(e.subarray(t))};case m.publicKey.elgamal:{let i=F.readMPI(e.subarray(t));t+=i.length+2;let n=F.readMPI(e.subarray(t));return{c1:i,c2:n}}case m.publicKey.ecdh:{let i=F.readMPI(e.subarray(t));t+=i.length+2;let n=new Py;return n.read(e.subarray(t)),{V:i,C:n}}case m.publicKey.x25519:case m.publicKey.x448:{let i=ld(r),n=F.readExactSubarray(e,t,t+i);t+=n.length;let s=new Uy;return s.read(e.subarray(t)),{ephemeralPublicKey:n,C:s}}default:throw new ft("Unknown public key encryption algorithm.")}}function xd(r,e){let t=new Set([m.publicKey.ed25519,m.publicKey.x25519,m.publicKey.ed448,m.publicKey.x448]),i=Object.keys(e).map(n=>{let s=e[n];return F.isUint8Array(s)?t.has(r)?s:F.uint8ArrayToMPI(s):s.write()});return F.concatUint8Array(i)}function QY(r,e,t){switch(r){case m.publicKey.rsaEncrypt:case m.publicKey.rsaEncryptSign:case m.publicKey.rsaSign:return pV(e,65537).then(({n:i,e:n,d:s,p:o,q:a,u:c})=>({privateParams:{d:s,p:o,q:a,u:c},publicParams:{n:i,e:n}}));case m.publicKey.ecdsa:return py(t).then(({oid:i,Q:n,secret:s})=>({privateParams:{d:s},publicParams:{oid:new to(i),Q:n}}));case m.publicKey.eddsaLegacy:return py(t).then(({oid:i,Q:n,secret:s})=>({privateParams:{seed:s},publicParams:{oid:new to(i),Q:n}}));case m.publicKey.ecdh:return py(t).then(({oid:i,Q:n,secret:s,hash:o,cipher:a})=>({privateParams:{d:s},publicParams:{oid:new to(i),Q:n,kdfParams:new Ty({hash:o,cipher:a})}}));case m.publicKey.ed25519:case m.publicKey.ed448:return qB(r).then(({A:i,seed:n})=>({privateParams:{seed:n},publicParams:{A:i}}));case m.publicKey.x25519:case m.publicKey.x448:return YB(r).then(({A:i,k:n})=>({privateParams:{k:n},publicParams:{A:i}}));case m.publicKey.dsa:case m.publicKey.elgamal:throw new Error("Unsupported algorithm for key generation.");default:throw new Error("Unknown public key algorithm.")}}async function _Y(r,e,t){if(!e||!t)throw new Error("Missing key parameters");switch(r){case m.publicKey.rsaEncrypt:case m.publicKey.rsaEncryptSign:case m.publicKey.rsaSign:{let{n:i,e:n}=e,{d:s,p:o,q:a,u:c}=t;return mV(i,n,s,o,a,c)}case m.publicKey.dsa:{let{p:i,q:n,g:s,y:o}=e,{x:a}=t;return bY(i,n,s,o,a)}case m.publicKey.elgamal:{let{p:i,g:n,y:s}=e,{x:o}=t;return QV(i,n,s,o)}case m.publicKey.ecdsa:case m.publicKey.ecdh:{let i=CY[m.read(m.publicKey,r)],{oid:n,Q:s}=e,{d:o}=t;return i.validateParams(n,s,o)}case m.publicKey.eddsaLegacy:{let{Q:i,oid:n}=e,{seed:s}=t;return R6(n,i,s)}case m.publicKey.ed25519:case m.publicKey.ed448:{let{A:i}=e,{seed:n}=t;return LB(r,i,n)}case m.publicKey.x25519:case m.publicKey.x448:{let{A:i}=e,{k:n}=t;return WB(r,i,n)}default:throw new Error("Unknown public key algorithm.")}}function oB(r){let{keySize:e}=It(r);return Ur(e)}function BE(r){try{r.getName()}catch{throw new ft("Unknown curve OID")}}function ld(r,e){switch(r){case m.publicKey.ecdsa:case m.publicKey.ecdh:case m.publicKey.eddsaLegacy:return new bi(e).payloadSize;case m.publicKey.ed25519:case m.publicKey.ed448:return dI(r);case m.publicKey.x25519:case m.publicKey.x448:return hI(r);default:throw new Error("Unknown elliptic algo")}}function FY(r,e){switch(r){case m.publicKey.ecdsa:case m.publicKey.eddsaLegacy:return D6(e);case m.publicKey.ed25519:case m.publicKey.ed448:return uI(r);default:throw new Error("Unknown elliptic signing algo")}}function L6(r){let{blockSize:e}=It(r),t=Ur(e),i=new Uint8Array([t[t.length-2],t[t.length-1]]);return F.concat([t,i])}async function Rf(r,e,t,i,n){let s=m.read(m.symmetric,r);if(F.getNodeCrypto()&&yI[s])return UY(r,e,t,i);if(F.isAES(r))return PY(r,e,t,i);let o=await b6(r),a=new o(e),c=a.blockSize,l=i.slice(),d=new Uint8Array,u=f=>{f&&(d=F.concatUint8Array([d,f]));let h=new Uint8Array(d.length),g,p=0;for(;f?d.length>=c:d.length;){let I=a.encrypt(l);for(g=0;g<c;g++)l[g]=d[g]^I[g],h[p++]=l[g];d=d.subarray(c)}return h.subarray(0,p)};return sr(t,u,u)}async function II(r,e,t,i){let n=m.read(m.symmetric,r);if(Uf&&yI[n])return RY(r,e,t,i);if(F.isAES(r))return TY(r,e,t,i);let s=await b6(r),o=new s(e),a=o.blockSize,c=i,l=new Uint8Array,d=u=>{u&&(l=F.concatUint8Array([l,u]));let f=new Uint8Array(l.length),h,g=0;for(;u?l.length>=a:l.length;){let p=o.encrypt(c);for(c=l.subarray(0,a),h=0;h<a;h++)f[g++]=c[h]^p[h];l=l.subarray(a)}return f.subarray(0,g)};return sr(t,d,d)}async function PY(r,e,t,i){if(yy&&await Ry.isSupported(r)){let n=new Ry(r,e,i);return F.isStream(t)?WE(t,s=>n.encryptChunk(s),()=>n.finish()):n.encrypt(t)}else if(F.isStream(t)){let n=new Ny(!0,r,e,i);return WE(t,s=>n.processChunk(s),()=>n.finish())}return w6(e,i).encrypt(t)}function TY(r,e,t,i){if(F.isStream(t)){let n=new Ny(!1,r,e,i);return WE(t,s=>n.processChunk(s),()=>n.finish())}return w6(e,i).decrypt(t)}function iy(r,e){let t=Math.min(r.length,e.length);for(let i=0;i<t;i++)r[i]=r[i]^e[i]}function UY(r,e,t,i){let n=m.read(m.symmetric,r),s=new Uf.createCipheriv(yI[n],e,i);return sr(t,o=>new Uint8Array(s.update(o)))}function RY(r,e,t,i){let n=m.read(m.symmetric,r),s=new Uf.createDecipheriv(yI[n],e,i);return sr(t,o=>new Uint8Array(s.update(o)))}function WP(r,e){let t=r.length-ro;for(let i=0;i<ro;i++)r[i+t]^=e[i];return r}function qY(r,e,t){if(r.length&&r.length%ro===0)return WP(r,e);let i=new Uint8Array(r.length+(ro-r.length%ro));return i.set(r),i[r.length]=128,WP(i,t)}async function OY(r){let e=await MY(r),t=F.double(await e(Iy)),i=F.double(t);return async function(n){return(await e(qY(n,t,i))).subarray(-ro)}}async function MY(r){if(F.getNodeCrypto())return async function(e){let i=new NY.createCipheriv("aes-"+r.length*8+"-cbc",r,Iy).update(e);return new Uint8Array(i)};if(F.getWebCrypto())try{return r=await YP.importKey("raw",r,{name:"AES-CBC",length:r.length*8},!1,["encrypt"]),async function(e){let t=await YP.encrypt({name:"AES-CBC",iv:Iy,length:ro*8},r,e);return new Uint8Array(t).subarray(0,t.byteLength-ro)}}catch(e){if(e.name!=="NotSupportedError"&&!(r.length===24&&e.name==="OperationError"))throw e;F.printDebugError("Browser did not support operation: "+e.message)}return async function(e){return iB(r,Iy,{disablePadding:!0}).encrypt(e)}}async function GY(r){let e=await OY(r);return function(t,i){return e(F.concatUint8Array([t,i]))}}async function zY(r){if(F.getNodeCrypto())return async function(e,t){let i=new LY.createCipheriv("aes-"+r.length*8+"-ctr",r,t),n=HY.concat([i.update(e),i.final()]);return new Uint8Array(n)};if(F.getWebCrypto())try{let e=await XP.importKey("raw",r,{name:"AES-CTR",length:r.length*8},!1,["encrypt"]);return async function(t,i){let n=await XP.encrypt({name:"AES-CTR",counter:i,length:ao*8},e,t);return new Uint8Array(n)}}catch(e){if(e.name!=="NotSupportedError"&&!(r.length===24&&e.name==="OperationError"))throw e;F.printDebugError("Browser did not support operation: "+e.message)}return async function(e,t){return jV(r,t).encrypt(e)}}async function rA(r,e){if(r!==m.symmetric.aes128&&r!==m.symmetric.aes192&&r!==m.symmetric.aes256)throw new Error("EAX mode supports only AES cipher");let[t,i]=await Promise.all([GY(e),zY(e)]);return{encrypt:async function(n,s,o){let[a,c]=await Promise.all([t(ZP,s),t(aB,o)]),l=await i(n,a),u=await t(cB,l);for(let f=0;f<od;f++)u[f]^=c[f]^a[f];return F.concatUint8Array([l,u])},decrypt:async function(n,s,o){if(n.length<od)throw new Error("Invalid EAX ciphertext");let a=n.subarray(0,-od),c=n.subarray(-od),[l,d,u]=await Promise.all([t(ZP,s),t(aB,o),t(cB,a)]),f=u;for(let g=0;g<od;g++)f[g]^=d[g]^l[g];if(!F.equalsUint8Array(c,f))throw new Error("Authentication tag mismatch");return await i(a,l)}}}function e5(r){let e=0;for(let t=1;(r&t)===0;t<<=1)e++;return e}function mi(r,e){for(let t=0;t<r.length;t++)r[t]^=e[t];return r}function ny(r,e){return mi(r.slice(),e)}async function iA(r,e){let{keySize:t}=It(r);if(!F.isAES(r)||e.length!==t)throw new Error("Unexpected algorithm or key size");let i=0,n=u=>iB(e,mf,{disablePadding:!0}).encrypt(u),s=u=>iB(e,mf,{disablePadding:!0}).decrypt(u),o;a();function a(){let u=n(mf),f=F.double(u);o=[],o[0]=F.double(f),o.x=u,o.$=f}function c(u,f){let h=F.nbits(Math.max(u.length,f.length)/ci|0)-1;for(let g=i+1;g<=h;g++)o[g]=F.double(o[g-1]);i=h}function l(u){if(!u.length)return mf;let f=u.length/ci|0,h=new Uint8Array(ci),g=new Uint8Array(ci);for(let p=0;p<f;p++)mi(h,o[e5(p+1)]),mi(g,n(ny(h,u))),u=u.subarray(ci);if(u.length){mi(h,o.x);let p=new Uint8Array(ci);p.set(u,0),p[u.length]=128,mi(p,h),mi(g,n(p))}return g}function d(u,f,h,g){let p=f.length/ci|0;c(f,g);let I=F.concatUint8Array([mf.subarray(0,H6-h.length),JY,h]),y=I[ci-1]&63;I[ci-1]&=192;let w=n(I),C=F.concatUint8Array([w,ny(w.subarray(0,8),w.subarray(1,9))]),b=F.shiftRight(C.subarray(0+(y>>3),17+(y>>3)),8-(y&7)).subarray(1),x=new Uint8Array(ci),_=new Uint8Array(f.length+Aa),R,U=0;for(R=0;R<p;R++)mi(b,o[e5(R+1)]),_.set(mi(u(ny(b,f)),b),U),mi(x,u===n?f:_.subarray(U)),f=f.subarray(ci),U+=ci;if(f.length){mi(b,o.x);let D=n(b);_.set(ny(f,D),U);let B=new Uint8Array(ci);B.set(u===n?f:_.subarray(U,-Aa),0),B[f.length]=128,mi(x,B),U+=f.length}let T=mi(n(mi(mi(x,b),o.$)),l(g));return _.set(T,U),_}return{encrypt:async function(u,f,h){return d(n,u,f,h)},decrypt:async function(u,f,h){if(u.length<Aa)throw new Error("Invalid OCB ciphertext");let g=u.subarray(-Aa);u=u.subarray(0,-Aa);let p=d(s,u,f,h);if(F.equalsUint8Array(g,p.subarray(-Aa)))return p.subarray(0,-Aa);throw new Error("Authentication tag mismatch")}}}async function Cd(r,e){if(r!==m.symmetric.aes128&&r!==m.symmetric.aes192&&r!==m.symmetric.aes256)throw new Error("GCM mode supports only AES cipher");if(F.getNodeCrypto())return{encrypt:async function(t,i,n=new Uint8Array){let s=new t5.createCipheriv("aes-"+e.length*8+"-gcm",e,i);s.setAAD(n);let o=r5.concat([s.update(t),s.final(),s.getAuthTag()]);return new Uint8Array(o)},decrypt:async function(t,i,n=new Uint8Array){let s=new t5.createDecipheriv("aes-"+e.length*8+"-gcm",e,i);s.setAAD(n),s.setAuthTag(t.slice(t.length-ad,t.length));let o=r5.concat([s.update(t.slice(0,t.length-ad)),s.final()]);return new Uint8Array(o)}};if(F.getWebCrypto())try{let t=await vE.importKey("raw",e,{name:kE},!1,["encrypt","decrypt"]),i=navigator.userAgent.match(/Version\/13\.\d(\.\d)* Safari/)||navigator.userAgent.match(/Version\/(13|14)\.\d(\.\d)* Mobile\/\S* Safari/);return{encrypt:async function(n,s,o=new Uint8Array){if(i&&!n.length)return ry(e,s,o).encrypt(n);let a=await vE.encrypt({name:kE,iv:s,additionalData:o,tagLength:ad*8},t,n);return new Uint8Array(a)},decrypt:async function(n,s,o=new Uint8Array){if(i&&n.length===ad)return ry(e,s,o).decrypt(n);try{let a=await vE.decrypt({name:kE,iv:s,additionalData:o,tagLength:ad*8},t,n);return new Uint8Array(a)}catch(a){if(a.name==="OperationError")throw new Error("Authentication tag mismatch")}}}}catch(t){if(t.name!=="NotSupportedError"&&!(e.length===24&&t.name==="OperationError"))throw t;F.printDebugError("Browser did not support operation: "+t.message)}return{encrypt:async function(t,i,n){return ry(e,i,n).encrypt(t)},decrypt:async function(t,i,n){return ry(e,i,n).decrypt(t)}}}function io(r,e=!1){switch(r){case m.aead.eax:return rA;case m.aead.ocb:return iA;case m.aead.gcm:return Cd;case m.aead.experimentalGCM:if(!e)throw new Error("Unexpected non-standard `experimentalGCM` AEAD algorithm provided in `config.preferredAEADAlgorithm`: use `gcm` instead");return Cd;default:throw new Error("Unsupported AEAD mode")}}function VY(r,e){let t=0;switch(r){case m.publicKey.rsaEncryptSign:case m.publicKey.rsaEncrypt:case m.publicKey.rsaSign:{let i=F.readMPI(e.subarray(t));return t+=i.length+2,{read:t,signatureParams:{s:i}}}case m.publicKey.dsa:case m.publicKey.ecdsa:{let i=F.readMPI(e.subarray(t));t+=i.length+2;let n=F.readMPI(e.subarray(t));return t+=n.length+2,{read:t,signatureParams:{r:i,s:n}}}case m.publicKey.eddsaLegacy:{let i=F.readMPI(e.subarray(t));t+=i.length+2;let n=F.readMPI(e.subarray(t));return t+=n.length+2,{read:t,signatureParams:{r:i,s:n}}}case m.publicKey.ed25519:case m.publicKey.ed448:{let i=2*dI(r),n=F.readExactSubarray(e,t,t+i);return t+=n.length,{read:t,signatureParams:{RS:n}}}default:throw new ft("Unknown signature algorithm.")}}async function YY(r,e,t,i,n,s){switch(r){case m.publicKey.rsaEncryptSign:case m.publicKey.rsaEncrypt:case m.publicKey.rsaSign:{let{n:o,e:a}=i,c=F.leftPad(t.s,o.length);return AV(e,n,c,o,a,s)}case m.publicKey.dsa:{let{g:o,p:a,q:c,y:l}=i,{r:d,s:u}=t;return BY(e,d,u,s,o,a,c,l)}case m.publicKey.ecdsa:{let{oid:o,Q:a}=i,c=new bi(o).payloadSize,l=F.leftPad(t.r,c),d=F.leftPad(t.s,c);return e1(o,e,{r:l,s:d},n,a,s)}case m.publicKey.eddsaLegacy:{let{oid:o,Q:a}=i,c=new bi(o).payloadSize,l=F.leftPad(t.r,c),d=F.leftPad(t.s,c);return U6(o,e,{r:l,s:d},n,a,s)}case m.publicKey.ed25519:case m.publicKey.ed448:{let{A:o}=i;return MB(r,e,t,n,o,s)}default:throw new Error("Unknown signature algorithm.")}}async function WY(r,e,t,i,n,s){if(!t||!i)throw new Error("Missing key parameters");switch(r){case m.publicKey.rsaEncryptSign:case m.publicKey.rsaEncrypt:case m.publicKey.rsaSign:{let{n:o,e:a}=t,{d:c,p:l,q:d,u}=i;return{s:await fV(e,n,o,a,c,l,d,u,s)}}case m.publicKey.dsa:{let{g:o,p:a,q:c}=t,{x:l}=i;return EY(e,s,o,a,c,l)}case m.publicKey.elgamal:throw new Error("Signing with Elgamal is not defined in the OpenPGP standard.");case m.publicKey.ecdsa:{let{oid:o,Q:a}=t,{d:c}=i;return ZB(o,e,n,a,c,s)}case m.publicKey.eddsaLegacy:{let{oid:o,Q:a}=t,{seed:c}=i;return T6(o,e,n,a,c,s)}case m.publicKey.ed25519:case m.publicKey.ed448:{let{A:o}=t,{seed:a}=i;return OB(r,e,n,o,a,s)}default:throw new Error("Unknown signature algorithm.")}}function qy(r,e=pe){switch(r){case m.s2k.argon2:return new lB(e);case m.s2k.iterated:case m.s2k.gnu:case m.s2k.salted:case m.s2k.simple:return new dB(r,e);default:throw new ft("Unsupported S2K type")}}function K6(r){let{s2kType:e}=r;if(!rW.has(e))throw new Error("The provided `config.s2kType` value is not allowed");return qy(e,r)}function yt(r,e,t){let i=[];return i.push(lI(t.length+1)),i.push(new Uint8Array([(e?128:0)|r])),i.push(t),F.concat(i)}function _E(r){switch(r){case m.hash.sha256:return 16;case m.hash.sha384:return 24;case m.hash.sha512:return 32;case m.hash.sha224:return 16;case m.hash.sha3_256:return 16;case m.hash.sha3_512:return 32;default:throw new Error("Unsupported hash function")}}function CW(r,e){if(!e[r]){let t;try{t=m.read(m.packet,r)}catch{throw new Ad(`Unknown packet type with tag: ${r}`)}throw new Error(`Packet not allowed in this context: ${t}`)}return new e[r]}function BW(r){let t=Sn(r);return new ReadableStream({async pull(i){try{let{value:n,done:s}=await t.read();if(s){i.close();return}for(let o=0;o<=n.length;o+=65536)(!o||o<n.length)&&i.enqueue(n.subarray(o,o+65536))}catch(n){i.error(n)}}},{highWaterMark:0})}function My(r,e){return t=>{let i;if(St(t)?i=new ReadableStream({async start(c){try{c.enqueue(await Xt(t)),c.close()}catch(l){c.error(l)}}}):or(t)?i=t:i=Xf(t),i=BW(i),r)try{let c=r();return i.pipeThrough(c)}catch(c){if(c.name!=="TypeError")throw c}let n=Sn(i),s=new e,o=!1,a=!1;return new ReadableStream({start(c){s.ondata=(l,d)=>{c.enqueue(l),o=!0,d&&(c.close(),a=!0)}},async pull(){for(o=!1;!o&&!a;){let{done:c,value:l}=await n.read();if(c){s.push(new Uint8Array,!0);return}else l.length&&s.push(l)}}},{highWaterMark:0})}}function bW(){return async function(r){let{default:e}=await Promise.resolve().then(function(){return ete});return e(Xf(r))}}async function Hy(r,e,t,i){let n=r instanceof Bd&&r.version===2,s=!n&&r.constructor.tag===m.packet.aeadEncryptedData;if(!n&&!s)throw new Error("Unexpected packet type");let o=io(r.aeadAlgorithm,s),a=e==="decrypt"?o.tagLength:0,c=e==="encrypt"?o.tagLength:0,l=2**(r.chunkSizeByte+6)+a,d=s?8:0,u=new ArrayBuffer(13+d),f=new Uint8Array(u,0,5+d),h=new Uint8Array(u),g=new DataView(u),p=new Uint8Array(u,5,8);f.set([192|r.constructor.tag,r.version,r.cipherAlgorithm,r.aeadAlgorithm,r.chunkSizeByte],0);let I=0,y=Promise.resolve(),w=0,C=0,b,x;if(n){let{keySize:R}=It(r.cipherAlgorithm),{ivLength:U}=o,T=new Uint8Array(u,0,5),D=await wa(m.hash.sha256,t,r.salt,T,R+U);t=D.subarray(0,R),b=D.subarray(R),b.fill(0,b.length-8),x=new DataView(b.buffer,b.byteOffset,b.byteLength)}else b=r.iv;let _=await o(r.cipherAlgorithm,t);return Ea(i,async(R,U)=>{if(F.isStream(R)!=="array"){let B=new TransformStream({},{highWaterMark:F.getHardwareConcurrency()*2**(r.chunkSizeByte+6),size:Q=>Q.length});Sd(B.readable,U),U=B.writable}let T=Sn(R),D=Li(U);try{for(;;){let B=await T.readBytes(l+a)||new Uint8Array,Q=B.subarray(B.length-a);B=B.subarray(0,B.length-a);let v,E,P;if(n)P=b;else{P=b.slice();for(let N=0;N<8;N++)P[b.length-8+N]^=p[N]}if(!I||B.length?(T.unshift(Q),v=_[e](B,P,f),v.catch(()=>{}),C+=B.length-a+c):(g.setInt32(5+d+4,w),v=_[e](Q,P,h),v.catch(()=>{}),C+=c,E=!0),w+=B.length-a,y=y.then(()=>v).then(async N=>{await D.ready,await D.write(N),C-=N.length}).catch(N=>D.abort(N)),(E||C>D.desiredSize)&&await y,!E)n?x.setInt32(b.length-4,++I):g.setInt32(9,++I);else{await D.close();break}}}catch(B){await D.ready.catch(()=>{}),await D.abort(B)}})}function l5(r,e,t,i){switch(e){case m.publicKey.rsaEncrypt:case m.publicKey.rsaEncryptSign:case m.publicKey.elgamal:case m.publicKey.ecdh:return F.concatUint8Array([new Uint8Array(r===6?[]:[t]),i,F.writeChecksum(i.subarray(i.length%8))]);case m.publicKey.x25519:case m.publicKey.x448:return i;default:throw new Error("Unsupported public key algorithm")}}function QW(r,e,t,i){switch(e){case m.publicKey.rsaEncrypt:case m.publicKey.rsaEncryptSign:case m.publicKey.elgamal:case m.publicKey.ecdh:{let n=t.subarray(0,t.length-2),s=t.subarray(t.length-2),o=F.writeChecksum(n.subarray(n.length%8)),a=o[0]===s[0]&o[1]===s[1],c=r===6?{sessionKeyAlgorithm:null,sessionKey:n}:{sessionKeyAlgorithm:n[0],sessionKey:n.subarray(1)};if(i){let l=a&c.sessionKeyAlgorithm===i.sessionKeyAlgorithm&c.sessionKey.length===i.sessionKey.length;return{sessionKey:F.selectUint8Array(l,c.sessionKey,i.sessionKey),sessionKeyAlgorithm:r===6?null:F.selectUint8(l,c.sessionKeyAlgorithm,i.sessionKeyAlgorithm)}}else{if(a&&(r===6||m.read(m.symmetric,c.sessionKeyAlgorithm)))return c;throw new Error("Decryption error")}}case m.publicKey.x25519:case m.publicKey.x448:return{sessionKeyAlgorithm:null,sessionKey:t};default:throw new Error("Unsupported public key algorithm")}}async function FE(r,e,t,i,n,s,o,a){if(e.type==="argon2"&&!n)throw new Error("Using Argon2 S2K without AEAD is not allowed");if(e.type==="simple"&&r===6)throw new Error("Using Simple S2K with version 6 keys is not allowed");let{keySize:c}=It(i),l=await e.produceKey(t,c,a);if(!n||r===5||o)return l;let d=F.concatUint8Array([s,new Uint8Array([r,i,n])]);return wa(m.hash.sha256,l,new Uint8Array,d,c)}async function Y6(r,e){let t=new zy(r.date,e);return t.packets=null,t.algorithm=m.write(m.publicKey,r.algorithm),await t.generate(r.rsaBits,r.curve),await t.computeFingerprintAndKeyID(),t}async function FW(r,e){let t=new Mf(r.date,e);return t.packets=null,t.algorithm=m.write(m.publicKey,r.algorithm),await t.generate(r.rsaBits,r.curve,r.config),await t.computeFingerprintAndKeyID(),t}async function Bn(r,e,t,i,n=new Date,s){let o,a;for(let c=r.length-1;c>=0;c--)try{(!o||r[c].created>=o.created)&&(await r[c].verify(e,t,i,n,void 0,s),o=r[c])}catch(l){a=l}if(!o)throw F.wrapError(`Could not find valid ${m.read(m.signature,t)} signature in key ${e.getKeyID().toHex()}`.replace("certGeneric ","self-").replace(/([a-z])([A-Z])/g,(c,l,d)=>l+" "+d.toLowerCase()),a);return o}function yB(r,e,t=new Date){let i=F.normalizeDate(t);if(i!==null){let n=jy(r,e);return!(r.created<=i&&i<n)}return!1}async function W6(r,e,t,i){let n={};n.key=e,n.bind=r;let s={signatureType:m.signature.subkeyBinding};return t.sign?(s.keyFlags=[m.keyFlags.signData],s.embeddedSignature=await as(n,[],r,{signatureType:m.signature.keyBinding},t.date,void 0,void 0,void 0,i)):s.keyFlags=[m.keyFlags.encryptCommunication|m.keyFlags.encryptStorage],t.keyExpirationTime>0&&(s.keyExpirationTime=t.keyExpirationTime,s.keyNeverExpires=!1),await as(n,[],e,s,t.date,void 0,void 0,void 0,i)}async function PW(r,e,t=new Date,i=[],n){let s=m.hash.sha256,o=n.preferredHashAlgorithm,a=await Promise.all(r.map(async(f,h)=>(await f.getPrimarySelfSignature(t,i[h],n)).preferredHashAlgorithms||[])),c=new Map;for(let f of a)for(let h of f)try{let g=m.write(m.hash,h);c.set(g,c.has(g)?c.get(g)+1:1)}catch{}let l=f=>r.length===0||c.get(f)===r.length||f===s,d=()=>{if(c.size===0)return s;let h=Array.from(c.keys()).filter(g=>l(g)).sort((g,p)=>gr(g)-gr(p))[0];return gr(h)>=gr(s)?h:s};if(new Set([m.publicKey.ecdsa,m.publicKey.eddsaLegacy,m.publicKey.ed25519,m.publicKey.ed448]).has(e.algorithm)){let f=FY(e.algorithm,e.publicParams.oid),h=l(o),g=gr(o)>=gr(f);if(h&&g)return o;{let p=d();return gr(p)>=gr(f)?p:f}}return l(o)?o:d()}async function TW(r=[],e=new Date,t=[],i=pe){let n=m.compression.uncompressed,s=i.preferredCompressionAlgorithm;return(await Promise.all(r.map(async function(a,c){let d=(await a.getPrimarySelfSignature(e,t[c],i)).preferredCompressionAlgorithms;return!!d&&d.indexOf(s)>=0}))).every(Boolean)?s:n}async function UW(r=[],e=new Date,t=[],i=pe){let n=await Promise.all(r.map((c,l)=>c.getPrimarySelfSignature(e,t[l],i)));if(r.length?n.every(c=>c.features&&c.features[0]&m.features.seipdv2):i.aeadProtect){let c={symmetricAlgo:m.symmetric.aes128,aeadAlgo:m.aead.ocb},l=[{symmetricAlgo:i.preferredSymmetricAlgorithm,aeadAlgo:i.preferredAEADAlgorithm},{symmetricAlgo:i.preferredSymmetricAlgorithm,aeadAlgo:m.aead.ocb},{symmetricAlgo:m.symmetric.aes128,aeadAlgo:i.preferredAEADAlgorithm}];for(let d of l)if(n.every(u=>u.preferredCipherSuites&&u.preferredCipherSuites.some(f=>f[0]===d.symmetricAlgo&&f[1]===d.aeadAlgo)))return d;return c}let o=m.symmetric.aes128,a=i.preferredSymmetricAlgorithm;return{symmetricAlgo:n.every(c=>c.preferredSymmetricAlgorithms&&c.preferredSymmetricAlgorithms.includes(a))?a:o,aeadAlgo:void 0}}async function as(r,e,t,i,n,s,o=[],a=!1,c){if(t.isDummy())throw new Error("Cannot sign with a gnu-dummy key.");if(!t.isDecrypted())throw new Error("Signing key is not decrypted.");let l=new Rr;return Object.assign(l,i),l.publicKeyAlgorithm=t.algorithm,l.hashAlgorithm=await PW(e,t,n,s,c),l.rawNotations=[...o],await l.sign(t,r,n,a,c),l}async function Qc(r,e,t,i=new Date,n){r=r[t],r&&(e[t].length?await Promise.all(r.map(async function(s){!s.isExpired(i)&&(!n||await n(s))&&!e[t].some(function(o){return F.equalsUint8Array(o.writeParams(),s.writeParams())})&&e[t].push(s)})):e[t]=r)}async function bd(r,e,t,i,n,s,o=new Date,a){s=s||r;let c=[];return await Promise.all(i.map(async function(l){try{if(!n||l.issuerKeyID.equals(n.issuerKeyID)){let d=![m.reasonForRevocation.keyRetired,m.reasonForRevocation.keySuperseded,m.reasonForRevocation.userIDInvalid].includes(l.reasonForRevocationFlag);await l.verify(s,e,t,d?null:o,!1,a),c.push(l.issuerKeyID)}}catch{}})),n?(n.revoked=c.some(l=>l.equals(n.issuerKeyID))?!0:n.revoked||!1,n.revoked):c.length>0}function jy(r,e){let t;return e.keyNeverExpires===!1&&(t=r.created.getTime()+e.keyExpirationTime*1e3),t?new Date(t):1/0}function IB(r,e={}){switch(r.type=r.type||e.type,r.curve=r.curve||e.curve,r.rsaBits=r.rsaBits||e.rsaBits,r.keyExpirationTime=r.keyExpirationTime!==void 0?r.keyExpirationTime:e.keyExpirationTime,r.passphrase=F.isString(r.passphrase)?r.passphrase:e.passphrase,r.date=r.date||e.date,r.sign=r.sign||!1,r.type){case"ecc":try{r.curve=m.write(m.curve,r.curve)}catch{throw new Error("Unknown curve")}(r.curve===m.curve.ed25519Legacy||r.curve===m.curve.curve25519Legacy||r.curve==="ed25519"||r.curve==="curve25519")&&(r.curve=r.sign?m.curve.ed25519Legacy:m.curve.curve25519Legacy),r.sign?r.algorithm=r.curve===m.curve.ed25519Legacy?m.publicKey.eddsaLegacy:m.publicKey.ecdsa:r.algorithm=m.publicKey.ecdh;break;case"curve25519":r.algorithm=r.sign?m.publicKey.ed25519:m.publicKey.x25519;break;case"curve448":r.algorithm=r.sign?m.publicKey.ed448:m.publicKey.x448;break;case"rsa":r.algorithm=m.publicKey.rsaEncryptSign;break;default:throw new Error(`Unsupported key type ${r.type}`)}return r}function d5(r,e,t){switch(r.algorithm){case m.publicKey.rsaEncryptSign:case m.publicKey.rsaSign:case m.publicKey.dsa:case m.publicKey.ecdsa:case m.publicKey.eddsaLegacy:case m.publicKey.ed25519:case m.publicKey.ed448:if(!e.keyFlags&&!t.allowMissingKeyFlags)throw new Error("None of the key flags is set: consider passing `config.allowMissingKeyFlags`");return!e.keyFlags||(e.keyFlags[0]&m.keyFlags.signData)!==0;default:return!1}}function u5(r,e,t){switch(r.algorithm){case m.publicKey.rsaEncryptSign:case m.publicKey.rsaEncrypt:case m.publicKey.elgamal:case m.publicKey.ecdh:case m.publicKey.x25519:case m.publicKey.x448:if(!e.keyFlags&&!t.allowMissingKeyFlags)throw new Error("None of the key flags is set: consider passing `config.allowMissingKeyFlags`");return!e.keyFlags||(e.keyFlags[0]&m.keyFlags.encryptCommunication)!==0||(e.keyFlags[0]&m.keyFlags.encryptStorage)!==0;default:return!1}}function f5(r,e,t){if(!e.keyFlags&&!t.allowMissingKeyFlags)throw new Error("None of the key flags is set: consider passing `config.allowMissingKeyFlags`");switch(r.algorithm){case m.publicKey.rsaEncryptSign:case m.publicKey.rsaEncrypt:case m.publicKey.elgamal:case m.publicKey.ecdh:case m.publicKey.x25519:case m.publicKey.x448:return(!e.keyFlags||(e.keyFlags[0]&m.keyFlags.signData)!==0)&&t.allowInsecureDecryptionWithSigningKeys?!0:!e.keyFlags||(e.keyFlags[0]&m.keyFlags.encryptCommunication)!==0||(e.keyFlags[0]&m.keyFlags.encryptStorage)!==0;default:return!1}}function ga(r,e){let t=m.write(m.publicKey,r.algorithm),i=r.getAlgorithmInfo();if(e.rejectPublicKeyAlgorithms.has(t))throw new Error(`${i.algorithm} keys are considered too weak.`);switch(t){case m.publicKey.rsaEncryptSign:case m.publicKey.rsaSign:case m.publicKey.rsaEncrypt:if(i.bits<e.minRSABits)throw new Error(`RSA keys shorter than ${e.minRSABits} bits are considered too weak.`);break;case m.publicKey.ecdsa:case m.publicKey.eddsaLegacy:case m.publicKey.ecdh:if(e.rejectCurves.has(i.curve))throw new Error(`Support for ${i.algorithm} keys using curve ${i.curve} is disabled.`);break}}function NW(r){switch(m.write(m.publicKey,r)){case m.publicKey.rsaEncrypt:case m.publicKey.rsaEncryptSign:case m.publicKey.rsaSign:case m.publicKey.dsa:return"rsa";case m.publicKey.ecdsa:case m.publicKey.eddsaLegacy:return"ecc";case m.publicKey.ed25519:return"curve25519";case m.publicKey.ed448:return"curve448";default:throw new Error("Unsupported algorithm")}}async function OW(r,e){r.sign=!0,r=IB(r),r.subkeys=r.subkeys.map((o,a)=>IB(r.subkeys[a],r));let t=[FW(r,e)];t=t.concat(r.subkeys.map(o=>Y6(o,e)));let i=await Promise.all(t),n=await MW(i[0],i.slice(1),r,e),s=await n.getRevocationCertificate(r.date,e);return n.revocationSignatures=[],{key:n,revocationCertificate:s}}async function MW(r,e,t,i){t.passphrase&&await r.encrypt(t.passphrase,i),await Promise.all(e.map(async function(c,l){let d=t.subkeys[l].passphrase;d&&await c.encrypt(d,i)}));let n=new Ct;n.push(r);function s(c,l){return[l,...c.filter(d=>d!==l)]}function o(){let c={};c.keyFlags=[m.keyFlags.certifyKeys|m.keyFlags.signData];let l=s([m.symmetric.aes256,m.symmetric.aes128],i.preferredSymmetricAlgorithm);if(c.preferredSymmetricAlgorithms=l,i.aeadProtect){let d=s([m.aead.gcm,m.aead.eax,m.aead.ocb],i.preferredAEADAlgorithm);c.preferredCipherSuites=d.flatMap(u=>l.map(f=>[f,u]))}return c.preferredHashAlgorithms=s([m.hash.sha512,m.hash.sha256,m.hash.sha3_512,m.hash.sha3_256],i.preferredHashAlgorithm),c.preferredCompressionAlgorithms=s([m.compression.uncompressed,m.compression.zlib,m.compression.zip],i.preferredCompressionAlgorithm),c.features=[0],c.features[0]|=m.features.modificationDetection,i.aeadProtect&&(c.features[0]|=m.features.seipdv2),t.keyExpirationTime>0&&(c.keyExpirationTime=t.keyExpirationTime,c.keyNeverExpires=!1),c}if(r.version===6){let c={key:r},l=o();l.signatureType=m.signature.key;let d=await as(c,[],r,l,t.date,void 0,t.signatureNotations,void 0,i);n.push(d)}await Promise.all(t.userIDs.map(async function(c,l){let d=Gy.fromObject(c),u={userID:d,key:r},f=r.version!==6?o():{};f.signatureType=m.signature.certPositive,l===0&&(f.isPrimaryUserID=!0);let h=await as(u,[],r,f,t.date,void 0,t.signatureNotations,void 0,i);return{userIDPacket:d,signaturePacket:h}})).then(c=>{c.forEach(({userIDPacket:l,signaturePacket:d})=>{n.push(l),n.push(d)})}),await Promise.all(e.map(async function(c,l){let d=t.subkeys[l],u=await W6(c,r,d,i);return{secretSubkeyPacket:c,subkeySignaturePacket:u}})).then(c=>{c.forEach(({secretSubkeyPacket:l,subkeySignaturePacket:d})=>{n.push(l),n.push(d)})});let a={key:r};return n.push(await as(a,[],r,{signatureType:m.signature.keyRevocation,reasonForRevocationFlag:m.reasonForRevocation.noReason,reasonForRevocationString:""},t.date,void 0,void 0,void 0,i)),t.passphrase&&r.clearPrivateParams(),e.map(function(c,l){t.subkeys[l].passphrase&&c.clearPrivateParams()}),new Yy(n)}async function CI({armoredKey:r,binaryKey:e,config:t,...i}){if(t={...pe,...t},!r&&!e)throw new Error("readPrivateKey: must pass options object containing `armoredKey` or `binaryKey`");if(r&&!F.isString(r))throw new Error("readPrivateKey: options.armoredKey must be a string");if(e&&!F.isUint8Array(e))throw new Error("readPrivateKey: options.binaryKey must be a Uint8Array");let n=Object.keys(i);if(n.length>0)throw new Error(`Unknown option: ${n.join(", ")}`);let s;if(r){let{type:c,data:l}=await cI(r);if(c!==m.armor.privateKey)throw new Error("Armored text not of type private key");s=l}else s=e;let o=await Ct.fromBinary(s,qW,t),a=o.indexOfTag(m.packet.publicKey,m.packet.secretKey);for(let c=0;c<a.length;c++){if(o[a[c]].constructor.tag===m.packet.publicKey)continue;let l=o.slice(a[c],a[c+1]);return new Yy(l)}throw new Error("No secret key packet found")}async function g5(r,e,t=[],i=null,n=[],s=new Date,o=[],a=[],c=[],l=!1,d=pe){let u=new Ct,f=r.text===null?m.signature.binary:m.signature.text;if(await Promise.all(e.map(async(h,g)=>{let p=o[g];if(!h.isPrivate())throw new Error("Need private key for signing");let I=await h.getSigningKey(n[g],s,p,d);return as(r,t.length?t:[h],I.keyPacket,{signatureType:f},s,a,c,l,d)})).then(h=>{u.push(...h)}),i){let h=i.packets.filterByTag(m.packet.signature);u.push(...h)}return u}function GW(r,e,t,i=new Date,n=!1,s=pe){let o,a;for(let u of t){let f=u.getKeys(r.issuerKeyID);if(f.length>0){o=u,a=f[0];break}}let l=r instanceof on?r.correspondingSig:r,d={keyID:r.issuerKeyID,verified:(async()=>{if(!a)throw new Error(`Could not find signing key with key ID ${r.issuerKeyID.toHex()}`);await r.verify(a.keyPacket,r.signatureType,e[0],i,n,s);let u=await l;if(a.getCreationTime()>u.created)throw new Error("Key is newer than the signature");try{await o.getSigningKey(a.getKeyID(),u.created,void 0,s)}catch(f){if(s.allowInsecureVerificationWithReformattedKeys&&f.message.match(/Signature creation time is in the future/))await o.getSigningKey(a.getKeyID(),i,void 0,s);else throw f}return!0})(),signature:(async()=>{let u=await l,f=new Ct;return u&&f.push(u),new Jy(f)})()};return d.signature.catch(()=>{}),d.verified.catch(()=>{}),d}function PE(r,e,t,i=new Date,n=!1,s=pe){return r.filter(o=>["text","binary"].includes(m.read(m.signature,o.signatureType))).map(o=>GW(o,e,t,i,n,s))}async function nA({armoredMessage:r,binaryMessage:e,config:t,...i}){t={...pe,...t};let n=r||e;if(!n)throw new Error("readMessage: must pass options object containing `armoredMessage` or `binaryMessage`");if(r&&!F.isString(r)&&!F.isStream(r))throw new Error("readMessage: options.armoredMessage must be a string or stream");if(e&&!F.isUint8Array(e)&&!F.isStream(e))throw new Error("readMessage: options.binaryMessage must be a Uint8Array or stream");let s=Object.keys(i);if(s.length>0)throw new Error(`Unknown option: ${s.join(", ")}`);let o=F.isStream(n);if(r){let{type:l,data:d}=await cI(n);if(l!==m.armor.message)throw new Error("Armored text not of type message");n=d}let a=await Ct.fromBinary(n,LW,t,new Ed),c=new Hf(a);return c.fromStream=o,c}async function X6({text:r,binary:e,filename:t,date:i=new Date,format:n=r!==void 0?"utf8":"binary",...s}){let o=r!==void 0?r:e;if(o===void 0)throw new Error("createMessage: must pass options object containing `text` or `binary`");if(r&&!F.isString(r)&&!F.isStream(r))throw new Error("createMessage: options.text must be a string or stream");if(e&&!F.isUint8Array(e)&&!F.isStream(e))throw new Error("createMessage: options.binary must be a Uint8Array or stream");let a=Object.keys(s);if(a.length>0)throw new Error(`Unknown option: ${a.join(", ")}`);let c=F.isStream(o),l=new Ca(i);r!==void 0?l.setText(o,m.write(m.literal,n)):l.setBytes(o,m.write(m.literal,n)),t!==void 0&&l.setFilename(t);let d=new Ct;d.push(l);let u=new Hf(d);return u.fromStream=c,u}async function n1({userIDs:r=[],passphrase:e,type:t,curve:i,rsaBits:n=4096,keyExpirationTime:s=0,date:o=new Date,subkeys:a=[{}],format:c="armored",signatureNotations:l=[],config:d,...u}){d={...pe,...d},sA(d),!t&&!i?(t=d.v6Keys?"curve25519":"ecc",i="curve25519Legacy"):(t=t||"ecc",i=i||"curve25519Legacy"),r=Yr(r),l=Yr(l);let f=Object.keys(u);if(f.length>0)throw new Error(`Unknown option: ${f.join(", ")}`);if(r.length===0&&!d.v6Keys)throw new Error("UserIDs are required for V4 keys");if(t==="rsa"&&n<d.minRSABits)throw new Error(`rsaBits should be at least ${d.minRSABits}, got: ${n}`);let h={userIDs:r,passphrase:e,type:t,rsaBits:n,curve:i,keyExpirationTime:s,date:o,subkeys:a,signatureNotations:l};try{let{key:g,revocationCertificate:p}=await OW(h,d);return g.getKeys().forEach(({keyPacket:I})=>ga(I,d)),{privateKey:p5(g,c,d),publicKey:p5(g.toPublic(),c,d),revocationCertificate:p}}catch(g){throw F.wrapError("Error generating keypair",g)}}async function EI({privateKey:r,passphrase:e,config:t,...i}){t={...pe,...t},sA(t);let n=Object.keys(i);if(n.length>0)throw new Error(`Unknown option: ${n.join(", ")}`);if(!r.isPrivate())throw new Error("Cannot decrypt a public key");let s=r.clone(!0),o=F.isArray(e)?e:[e];try{return await Promise.all(s.getKeys().map(a=>F.anyPromise(o.map(c=>a.keyPacket.decrypt(c,t))))),await s.validate(t),s}catch(a){throw s.clearPrivateParams(),F.wrapError("Error decrypting private key",a)}}async function Z6({message:r,encryptionKeys:e,signingKeys:t,passwords:i,sessionKey:n,format:s="armored",signature:o=null,wildcard:a=!1,signingKeyIDs:c=[],encryptionKeyIDs:l=[],date:d=new Date,signingUserIDs:u=[],encryptionUserIDs:f=[],signatureNotations:h=[],config:g,...p}){if(g={...pe,...g},sA(g),s1(r),zW(s),e=Yr(e),t=Yr(t),i=Yr(i),c=Yr(c),l=Yr(l),u=Yr(u),f=Yr(f),h=Yr(h),p.detached)throw new Error("The `detached` option has been removed from openpgp.encrypt, separately call openpgp.sign instead. Don't forget to remove the `privateKeys` option as well.");if(p.publicKeys)throw new Error("The `publicKeys` option has been removed from openpgp.encrypt, pass `encryptionKeys` instead");if(p.privateKeys)throw new Error("The `privateKeys` option has been removed from openpgp.encrypt, pass `signingKeys` instead");if(p.armor!==void 0)throw new Error("The `armor` option has been removed from openpgp.encrypt, pass `format` instead.");let I=Object.keys(p);if(I.length>0)throw new Error(`Unknown option: ${I.join(", ")}`);t||(t=[]);try{if((t.length||o)&&(r=await r.sign(t,e,o,c,d,u,l,h,g)),r=r.compress(await TW(e,d,f,g),g),r=await r.encrypt(e,i,n,a,l,d,f,g),s==="object")return r;let w=s==="armored"?r.armor(g):r.write();return await tT(w)}catch(y){throw F.wrapError("Error encrypting message",y)}}async function BI({message:r,decryptionKeys:e,passwords:t,sessionKeys:i,verificationKeys:n,expectSigned:s=!1,format:o="utf8",signature:a=null,date:c=new Date,config:l,...d}){if(l={...pe,...l},sA(l),s1(r),n=Yr(n),e=Yr(e),t=Yr(t),i=Yr(i),d.privateKeys)throw new Error("The `privateKeys` option has been removed from openpgp.decrypt, pass `decryptionKeys` instead");if(d.publicKeys)throw new Error("The `publicKeys` option has been removed from openpgp.decrypt, pass `verificationKeys` instead");let u=Object.keys(d);if(u.length>0)throw new Error(`Unknown option: ${u.join(", ")}`);try{let f=await r.decrypt(e,t,i,c,l);n||(n=[]);let h={};if(h.signatures=a?await f.verifyDetached(a,n,c,l):await f.verify(n,c,l),h.data=o==="binary"?f.getLiteralData():f.getText(),h.filename=f.getFilename(),jW(h,r,...new Set([f,f.unwrapCompressed()])),s){if(n.length===0)throw new Error("Verification keys are required to verify message signatures");if(h.signatures.length===0)throw new Error("Message is not signed");h.data=li([h.data,Oc(async()=>(await F.anyPromise(h.signatures.map(g=>g.verified)),o==="binary"?new Uint8Array:""))])}return h.data=await tT(h.data),h}catch(f){throw F.wrapError("Error decrypting message",f)}}async function eT({message:r,decryptionKeys:e,passwords:t,date:i=new Date,config:n,...s}){if(n={...pe,...n},sA(n),s1(r),e=Yr(e),t=Yr(t),s.privateKeys)throw new Error("The `privateKeys` option has been removed from openpgp.decryptSessionKeys, pass `decryptionKeys` instead");let o=Object.keys(s);if(o.length>0)throw new Error(`Unknown option: ${o.join(", ")}`);try{return await r.decryptSessionKeys(e,t,void 0,i,n)}catch(a){throw F.wrapError("Error decrypting session keys",a)}}function s1(r){if(!(r instanceof Hf))throw new Error("Parameter [message] needs to be of type Message")}function zW(r){if(r!=="armored"&&r!=="binary"&&r!=="object")throw new Error(`Unsupported format ${r}`)}function sA(r){let e=Object.keys(r);if(e.length!==JW){for(let t of e)if(pe[t]===void 0)throw new Error(`Unknown config property: ${t}`)}}function Yr(r){return r&&!F.isArray(r)&&(r=[r]),r}async function tT(r){return F.isStream(r)==="array"?Xt(r):r}function jW(r,e,...t){r.data=Ea(e.packets.stream,async(i,n)=>{await Sd(r.data,n,{preventClose:!0});let s=Li(n);try{await Xt(i,o=>o),await Promise.all(t.map(o=>Xt(o.packets.stream,a=>a))),await s.close()}catch(o){await s.abort(o)}})}function p5(r,e,t){switch(e){case"object":return r;case"armored":return r.armor(t);case"binary":return r.write();default:throw new Error(`Unsupported format ${e}`)}}function oA(r){return r instanceof Uint8Array||ArrayBuffer.isView(r)&&r.constructor.name==="Uint8Array"}function Kf(r){if(!Number.isSafeInteger(r)||r<0)throw new Error("positive integer expected, got "+r)}function ds(r,...e){if(!oA(r))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(r.length))throw new Error("Uint8Array expected of length "+e+", got length="+r.length)}function rT(r){if(typeof r!="function"||typeof r.create!="function")throw new Error("Hash should be wrapped by utils.createHasher");Kf(r.outputLen),Kf(r.blockLen)}function vd(r,e=!0){if(r.destroyed)throw new Error("Hash instance has been destroyed");if(e&&r.finished)throw new Error("Hash#digest() has already been called")}function iT(r,e){ds(r);let t=e.outputLen;if(r.length<t)throw new Error("digestInto() expects output buffer of length at least "+t)}function $W(r){return new Uint32Array(r.buffer,r.byteOffset,Math.floor(r.byteLength/4))}function an(...r){for(let e=0;e<r.length;e++)r[e].fill(0)}function TE(r){return new DataView(r.buffer,r.byteOffset,r.byteLength)}function Yn(r,e){return r<<32-e|r>>>e}function ma(r,e){return r<<e|r>>>32-e>>>0}function YW(r){return r<<24&4278190080|r<<8&16711680|r>>>8&65280|r>>>24&255}function WW(r){for(let e=0;e<r.length;e++)r[e]=YW(r[e]);return r}function _c(r){if(ds(r),nT)return r.toHex();let e="";for(let t=0;t<r.length;t++)e+=XW[r[t]];return e}function y5(r){if(r>=Js._0&&r<=Js._9)return r-Js._0;if(r>=Js.A&&r<=Js.F)return r-(Js.A-10);if(r>=Js.a&&r<=Js.f)return r-(Js.a-10)}function Wy(r){if(typeof r!="string")throw new Error("hex string expected, got "+typeof r);if(nT)return Uint8Array.fromHex(r);let e=r.length,t=e/2;if(e%2)throw new Error("hex string expected, got unpadded hex of length "+e);let i=new Uint8Array(t);for(let n=0,s=0;n<t;n++,s+=2){let o=y5(r.charCodeAt(s)),a=y5(r.charCodeAt(s+1));if(o===void 0||a===void 0){let c=r[s]+r[s+1];throw new Error('hex string expected, got non-hex character "'+c+'" at index '+s)}i[n]=o*16+a}return i}function ZW(r){if(typeof r!="string")throw new Error("string expected");return new Uint8Array(new TextEncoder().encode(r))}function aA(r){return typeof r=="string"&&(r=ZW(r)),ds(r),r}function bn(...r){let e=0;for(let i=0;i<r.length;i++){let n=r[i];ds(n),e+=n.length}let t=new Uint8Array(e);for(let i=0,n=0;i<r.length;i++){let s=r[i];t.set(s,n),n+=s.length}return t}function co(r){let e=i=>r().update(aA(i)).digest(),t=r();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>r(),e}function eX(r){let e=(i,n)=>r(n).update(aA(i)).digest(),t=r({});return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=i=>r(i),e}function bI(r=32){if(td&&typeof td.getRandomValues=="function")return td.getRandomValues(new Uint8Array(r));if(td&&typeof td.randomBytes=="function")return Uint8Array.from(td.randomBytes(r));throw new Error("crypto.getRandomValues must be defined")}function Rc(r,e=""){if(typeof r!="boolean"){let t=e&&`"${e}"`;throw new Error(t+"expected boolean, got type="+typeof r)}return r}function kn(r,e,t=""){let i=oA(r),n=r?.length,s=e!==void 0;if(!i||s&&n!==e){let o=t&&`"${t}" `,a=s?` of length ${e}`:"",c=i?`length=${n}`:`type=${typeof r}`;throw new Error(o+"expected Uint8Array"+a+", got "+c)}return r}function oy(r){let e=r.toString(16);return e.length&1?"0"+e:e}function sT(r){if(typeof r!="string")throw new Error("hex string expected, got "+typeof r);return r===""?o1:BigInt("0x"+r)}function vI(r){return sT(_c(r))}function Nc(r){return ds(r),sT(_c(Uint8Array.from(r).reverse()))}function a1(r,e){return Wy(r.toString(16).padStart(e*2,"0"))}function c1(r,e){return a1(r,e).reverse()}function vt(r,e,t){let i;if(typeof e=="string")try{i=Wy(e)}catch(s){throw new Error(r+" must be hex string or Uint8Array, cause: "+s)}else if(oA(e))i=Uint8Array.from(e);else throw new Error(r+" must be hex string or Uint8Array");let n=i.length;if(typeof t=="number"&&n!==t)throw new Error(r+" of length "+t+" expected, got "+n);return i}function I5(r){return Uint8Array.from(r)}function rX(r){return Uint8Array.from(r,(e,t)=>{let i=e.charCodeAt(0);if(e.length!==1||i>127)throw new Error(`string contains non-ASCII character "${r[t]}" with code ${i} at position ${t}`);return i})}function iX(r,e,t){return UE(r)&&UE(e)&&UE(t)&&e<=r&&r<t}function zf(r,e,t,i){if(!iX(e,t,i))throw new Error("expected valid "+r+": "+t+" <= n < "+i+", got "+e)}function oT(r){let e;for(e=0;r>o1;r>>=xB,e+=1);return e}function nX(r,e,t){if(typeof r!="number"||r<2)throw new Error("hashLen must be a number");if(typeof e!="number"||e<2)throw new Error("qByteLen must be a number");if(typeof t!="function")throw new Error("hmacFn must be a function");let i=h=>new Uint8Array(h),n=h=>Uint8Array.of(h),s=i(r),o=i(r),a=0,c=()=>{s.fill(1),o.fill(0),a=0},l=(...h)=>t(o,s,...h),d=(h=i(0))=>{o=l(n(0),h),s=l(),h.length!==0&&(o=l(n(1),h),s=l())},u=()=>{if(a++>=1e3)throw new Error("drbg: tried 1000 values");let h=0,g=[];for(;h<e;){s=l();let p=s.slice();g.push(p),h+=s.length}return bn(...g)};return(h,g)=>{c(),d(h);let p;for(;!(p=g(u()));)d();return c(),p}}function Qd(r,e,t={}){if(!r||typeof r!="object")throw new Error("expected valid options object");function i(n,s,o){let a=r[n];if(o&&a===void 0)return;let c=typeof a;if(c!==s||a===null)throw new Error(`param "${n}" is invalid: expected ${s}, got ${c}`)}Object.entries(e).forEach(([n,s])=>i(n,s,!1)),Object.entries(t).forEach(([n,s])=>i(n,s,!0))}function Xy(r){let e=new WeakMap;return(t,...i)=>{let n=e.get(t);if(n!==void 0)return n;let s=r(t,...i);return e.set(t,s),s}}function pr(r,e){let t=r%e;return t>=wi?t:e+t}function bt(r,e,t){let i=r;for(;e-- >wi;)i*=i,i%=t;return i}function w5(r,e){if(r===wi)throw new Error("invert: expected non-zero number");if(e<=wi)throw new Error("invert: expected positive modulus, got "+e);let t=pr(r,e),i=e,n=wi,s=di;for(;t!==wi;){let a=i/t,c=i%t,l=n-s*a;i=t,t=c,n=s,s=l}if(i!==di)throw new Error("invert: does not exist");return pr(n,e)}function l1(r,e,t){if(!r.eql(r.sqr(e),t))throw new Error("Cannot find square root")}function fT(r,e){let t=(r.ORDER+di)/cT,i=r.pow(e,t);return l1(r,i,e),i}function aX(r,e){let t=(r.ORDER-lT)/dT,i=r.mul(e,kc),n=r.pow(i,t),s=r.mul(e,n),o=r.mul(r.mul(s,kc),n),a=r.mul(s,r.sub(o,r.ONE));return l1(r,a,e),a}function cX(r){let e=ki(r),t=AT(r),i=t(e,e.neg(e.ONE)),n=t(e,i),s=t(e,e.neg(i)),o=(r+sX)/uT;return(a,c)=>{let l=a.pow(c,o),d=a.mul(l,i),u=a.mul(l,n),f=a.mul(l,s),h=a.eql(a.sqr(d),c),g=a.eql(a.sqr(u),c);l=a.cmov(l,d,h),d=a.cmov(f,u,g);let p=a.eql(a.sqr(d),c),I=a.cmov(l,d,p);return l1(a,I,c),I}}function AT(r){if(r<aT)throw new Error("sqrt is not defined for small field");let e=r-di,t=0;for(;e%kc===wi;)e/=kc,t++;let i=kc,n=ki(r);for(;x5(n,i)===1;)if(i++>1e3)throw new Error("Cannot find square root: probably non-prime P");if(t===1)return fT;let s=n.pow(i,e),o=(e+di)/kc;return function(c,l){if(c.is0(l))return l;if(x5(c,l)!==1)throw new Error("Cannot find square root");let d=t,u=c.mul(c.ONE,s),f=c.pow(l,e),h=c.pow(l,o);for(;!c.eql(f,c.ONE);){if(c.is0(f))return c.ZERO;let g=1,p=c.sqr(f);for(;!c.eql(p,c.ONE);)if(g++,p=c.sqr(p),g===d)throw new Error("Cannot find square root");let I=di<<BigInt(d-g-1),y=c.pow(u,I);d=g,u=c.sqr(y),f=c.mul(f,u),h=c.mul(h,y)}return h}}function lX(r){return r%cT===aT?fT:r%dT===lT?aX:r%uT===oX?cX(r):AT(r)}function uX(r){let e={ORDER:"bigint",MASK:"bigint",BYTES:"number",BITS:"number"},t=dX.reduce((i,n)=>(i[n]="function",i),e);return Qd(r,t),r}function fX(r,e,t){if(t<wi)throw new Error("invalid exponent, negatives unsupported");if(t===wi)return r.ONE;if(t===di)return e;let i=r.ONE,n=e;for(;t>wi;)t&di&&(i=r.mul(i,n)),n=r.sqr(n),t>>=di;return i}function hT(r,e,t=!1){let i=new Array(e.length).fill(t?r.ZERO:void 0),n=e.reduce((o,a,c)=>r.is0(a)?o:(i[c]=o,r.mul(o,a)),r.ONE),s=r.inv(n);return e.reduceRight((o,a,c)=>r.is0(a)?o:(i[c]=r.mul(o,i[c]),r.mul(o,a)),s),i}function x5(r,e){let t=(r.ORDER-di)/kc,i=r.pow(e,t),n=r.eql(i,r.ONE),s=r.eql(i,r.ZERO),o=r.eql(i,r.neg(r.ONE));if(!n&&!s&&!o)throw new Error("invalid Legendre symbol result");return n?1:s?0:-1}function gT(r,e){e!==void 0&&Kf(e);let t=e!==void 0?e:r.toString(2).length,i=Math.ceil(t/8);return{nBitLength:t,nByteLength:i}}function ki(r,e,t=!1,i={}){if(r<=wi)throw new Error("invalid field: expected ORDER > 0, got "+r);let n,s,o=!1,a;if(typeof e=="object"&&e!=null){if(i.sqrt||t)throw new Error("cannot specify opts in two arguments");let f=e;f.BITS&&(n=f.BITS),f.sqrt&&(s=f.sqrt),typeof f.isLE=="boolean"&&(t=f.isLE),typeof f.modFromBytes=="boolean"&&(o=f.modFromBytes),a=f.allowedLengths}else typeof e=="number"&&(n=e),i.sqrt&&(s=i.sqrt);let{nBitLength:c,nByteLength:l}=gT(r,n);if(l>2048)throw new Error("invalid field: expected ORDER of <= 2048 bytes");let d,u=Object.freeze({ORDER:r,isLE:t,BITS:c,BYTES:l,MASK:cA(c),ZERO:wi,ONE:di,allowedLengths:a,create:f=>pr(f,r),isValid:f=>{if(typeof f!="bigint")throw new Error("invalid field element: expected bigint, got "+typeof f);return wi<=f&&f<r},is0:f=>f===wi,isValidNot0:f=>!u.is0(f)&&u.isValid(f),isOdd:f=>(f&di)===di,neg:f=>pr(-f,r),eql:(f,h)=>f===h,sqr:f=>pr(f*f,r),add:(f,h)=>pr(f+h,r),sub:(f,h)=>pr(f-h,r),mul:(f,h)=>pr(f*h,r),pow:(f,h)=>fX(u,f,h),div:(f,h)=>pr(f*w5(h,r),r),sqrN:f=>f*f,addN:(f,h)=>f+h,subN:(f,h)=>f-h,mulN:(f,h)=>f*h,inv:f=>w5(f,r),sqrt:s||(f=>(d||(d=lX(r)),d(u,f))),toBytes:f=>t?c1(f,l):a1(f,l),fromBytes:(f,h=!0)=>{if(a){if(!a.includes(f.length)||f.length>l)throw new Error("Field.fromBytes: expected "+a+" bytes, got "+f.length);let p=new Uint8Array(l);p.set(f,t?0:p.length-f.length),f=p}if(f.length!==l)throw new Error("Field.fromBytes: expected "+l+" bytes, got "+f.length);let g=t?Nc(f):vI(f);if(o&&(g=pr(g,r)),!h&&!u.isValid(g))throw new Error("invalid field element: outside of range 0..ORDER");return g},invertBatch:f=>hT(u,f),cmov:(f,h,g)=>g?h:f});return Object.freeze(u)}function pT(r){if(typeof r!="bigint")throw new Error("field order must be bigint");let e=r.toString(2).length;return Math.ceil(e/8)}function mT(r){let e=pT(r);return e+Math.ceil(e/2)}function AX(r,e,t=!1){let i=r.length,n=pT(e),s=mT(e);if(i<16||i<s||i>1024)throw new Error("expected "+s+"-1024 bytes of input, got "+i);let o=t?Nc(r):vI(r),a=pr(o,e-di)+di;return t?c1(a,n):a1(a,n)}function hX(r,e,t,i){if(typeof r.setBigUint64=="function")return r.setBigUint64(e,t,i);let n=BigInt(32),s=BigInt(4294967295),o=Number(t>>n&s),a=Number(t&s),c=i?4:0,l=i?0:4;r.setUint32(e+c,o,i),r.setUint32(e+l,a,i)}function yT(r,e,t){return r&e^~r&t}function IT(r,e,t){return r&e^r&t^e&t}function gX(r,e=!1){return e?{h:Number(r&ay),l:Number(r>>C5&ay)}:{h:Number(r>>C5&ay)|0,l:Number(r&ay)|0}}function wT(r,e=!1){let t=r.length,i=new Uint32Array(t),n=new Uint32Array(t);for(let s=0;s<t;s++){let{h:o,l:a}=gX(r[s],e);[i[s],n[s]]=[o,a]}return[i,n]}function js(r,e,t,i){let n=(e>>>0)+(i>>>0);return{h:r+t+(n/2**32|0)|0,l:n|0}}function rI(r,e){let t=e.negate();return r?t:e}function Dc(r,e){let t=hT(r.Fp,e.map(i=>i.Z));return e.map((i,n)=>r.fromAffine(i.toAffine(t[n])))}function bT(r,e){if(!Number.isSafeInteger(r)||r<=0||r>e)throw new Error("invalid window size, expected [1.."+e+"], got W="+r)}function RE(r,e){bT(r,e);let t=Math.ceil(e/r)+1,i=2**(r-1),n=2**r,s=cA(r),o=BigInt(r);return{windows:t,windowSize:i,mask:s,maxNumber:n,shiftBy:o}}function b5(r,e,t){let{windowSize:i,mask:n,maxNumber:s,shiftBy:o}=t,a=Number(r&n),c=r>>o;a>i&&(a-=s,c+=Sc);let l=e*i,d=l+Math.abs(a)-1,u=a===0,f=a<0,h=e%2!==0;return{nextN:c,offset:d,isZero:u,isNeg:f,isNegF:h,offsetF:l}}function QX(r,e){if(!Array.isArray(r))throw new Error("array expected");r.forEach((t,i)=>{if(!(t instanceof e))throw new Error("invalid point at index "+i)})}function _X(r,e){if(!Array.isArray(r))throw new Error("array of scalars expected");r.forEach((t,i)=>{if(!e.isValid(t))throw new Error("invalid scalar at index "+i)})}function qE(r){return vT.get(r)||1}function v5(r){if(r!==kd)throw new Error("invalid wNAF")}function FX(r,e,t,i){let n=e,s=r.ZERO,o=r.ZERO;for(;t>kd||i>kd;)t&Sc&&(s=s.add(n)),i&Sc&&(o=o.add(n)),n=n.double(),t>>=Sc,i>>=Sc;return{p1:s,p2:o}}function kT(r,e,t,i){QX(t,r),_X(i,e);let n=t.length,s=i.length;if(n!==s)throw new Error("arrays of points and scalars must have equal length");let o=r.ZERO,a=oT(BigInt(n)),c=1;a>12?c=a-3:a>4?c=a-2:a>0&&(c=2);let l=cA(c),d=new Array(Number(l)+1).fill(o),u=Math.floor((e.BITS-1)/c)*c,f=o;for(let h=u;h>=0;h-=c){d.fill(o);for(let p=0;p<s;p++){let I=i[p],y=Number(I>>BigInt(h)&l);d[y]=d[y].add(t[p])}let g=o;for(let p=d.length-1,I=o;p>0;p--)I=I.add(d[p]),g=g.add(I);if(f=f.add(g),h!==0)for(let p=0;p<c;p++)f=f.double()}return f}function k5(r,e,t){if(e){if(e.ORDER!==r)throw new Error("Field.ORDER must match order: Fp == p, Fn == n");return uX(e),e}else return ki(r,{isLE:t})}function ST(r,e,t={},i){if(i===void 0&&(i=r==="edwards"),!e||typeof e!="object")throw new Error(`expected valid ${r} CURVE object`);for(let c of["p","n","h"]){let l=e[c];if(!(typeof l=="bigint"&&l>kd))throw new Error(`CURVE.${c} must be positive bigint`)}let n=k5(e.p,t.Fp,i),s=k5(e.n,t.Fn,i),a=["Gx","Gy","a",r==="weierstrass"?"b":"d"];for(let c of a)if(!n.isValid(e[c]))throw new Error(`CURVE.${c} must be valid field element of CURVE.Fp`);return e=Object.freeze(Object.assign({},e)),{CURVE:e,Fp:n,Fn:s}}function PX(r,e,t){let[[i,n],[s,o]]=e,a=S5(o*r,t),c=S5(-n*r,t),l=r-a*i-c*s,d=-a*n-c*o,u=l<eo,f=d<eo;u&&(l=-l),f&&(d=-d);let h=cA(Math.ceil(oT(t)/2))+md;if(l<eo||l>=h||d<eo||d>=h)throw new Error("splitScalar (endomorphism): failed, k="+r);return{k1neg:u,k1:l,k2neg:f,k2:d}}function BB(r){if(!["compact","recovered","der"].includes(r))throw new Error('Signature format must be "compact", "recovered", or "der"');return r}function OE(r,e){let t={};for(let i of Object.keys(e))t[i]=r[i]===void 0?e[i]:r[i];return Rc(t.lowS,"lowS"),Rc(t.prehash,"prehash"),t.format!==void 0&&BB(t.format),t}function dd(r,e){let{BYTES:t}=r,i;if(typeof e=="bigint")i=e;else{let n=vt("private key",e);try{i=r.fromBytes(n)}catch{throw new Error(`invalid private key: expected ui8a of size ${t}, got ${typeof e}`)}}if(!r.isValidNot0(i))throw new Error("invalid private key: out of range [1..N-1]");return i}function UX(r,e={}){let t=ST("weierstrass",r,e),{Fp:i,Fn:n}=t,s=t.CURVE,{h:o,n:a}=s;Qd(e,{},{allowInfinityPoint:"boolean",clearCofactor:"function",isTorsionFree:"function",fromBytes:"function",toBytes:"function",endo:"object",wrapPrivateKey:"boolean"});let{endo:c}=e;if(c&&(!i.is0(s.a)||typeof c.beta!="bigint"||!Array.isArray(c.basises)))throw new Error('invalid endo: expected "beta": bigint and "basises": array');let l=_T(i,n);function d(){if(!i.isOdd)throw new Error("compression is not supported: Field does not have .isOdd()")}function u(Q,v,E){let{x:P,y:N}=v.toAffine(),J=i.toBytes(P);if(Rc(E,"isCompressed"),E){d();let z=!i.isOdd(N);return bn(QT(z),J)}else return bn(Uint8Array.of(4),J,i.toBytes(N))}function f(Q){kn(Q,void 0,"Point");let{publicKey:v,publicKeyUncompressed:E}=l,P=Q.length,N=Q[0],J=Q.subarray(1);if(P===v&&(N===2||N===3)){let z=i.fromBytes(J);if(!i.isValid(z))throw new Error("bad point: is not on curve, wrong x");let L=p(z),G;try{G=i.sqrt(L)}catch(te){let re=te instanceof Error?": "+te.message:"";throw new Error("bad point: is not on curve, sqrt error"+re)}d();let K=i.isOdd(G);return(N&1)===1!==K&&(G=i.neg(G)),{x:z,y:G}}else if(P===E&&N===4){let z=i.BYTES,L=i.fromBytes(J.subarray(0,z)),G=i.fromBytes(J.subarray(z,z*2));if(!I(L,G))throw new Error("bad point: is not on curve");return{x:L,y:G}}else throw new Error(`bad point: got length ${P}, expected compressed=${v} or uncompressed=${E}`)}let h=e.toBytes||u,g=e.fromBytes||f;function p(Q){let v=i.sqr(Q),E=i.mul(v,Q);return i.add(i.add(E,i.mul(Q,s.a)),s.b)}function I(Q,v){let E=i.sqr(v),P=p(Q);return i.eql(E,P)}if(!I(s.Gx,s.Gy))throw new Error("bad curve params: generator point");let y=i.mul(i.pow(s.a,dy),TX),w=i.mul(i.sqr(s.b),BigInt(27));if(i.is0(i.add(y,w)))throw new Error("bad curve params: a or b");function C(Q,v,E=!1){if(!i.isValid(v)||E&&i.is0(v))throw new Error(`bad point coordinate ${Q}`);return v}function b(Q){if(!(Q instanceof T))throw new Error("ProjectivePoint expected")}function x(Q){if(!c||!c.basises)throw new Error("no endo");return PX(Q,c.basises,n.ORDER)}let _=Xy((Q,v)=>{let{X:E,Y:P,Z:N}=Q;if(i.eql(N,i.ONE))return{x:E,y:P};let J=Q.is0();v==null&&(v=J?i.ONE:i.inv(N));let z=i.mul(E,v),L=i.mul(P,v),G=i.mul(N,v);if(J)return{x:i.ZERO,y:i.ZERO};if(!i.eql(G,i.ONE))throw new Error("invZ was invalid");return{x:z,y:L}}),R=Xy(Q=>{if(Q.is0()){if(e.allowInfinityPoint&&!i.is0(Q.Y))return;throw new Error("bad point: ZERO")}let{x:v,y:E}=Q.toAffine();if(!i.isValid(v)||!i.isValid(E))throw new Error("bad point: x or y not field elements");if(!I(v,E))throw new Error("bad point: equation left != right");if(!Q.isTorsionFree())throw new Error("bad point: not in prime-order subgroup");return!0});function U(Q,v,E,P,N){return E=new T(i.mul(E.X,Q),E.Y,E.Z),v=rI(P,v),E=rI(N,E),v.add(E)}class T{constructor(v,E,P){this.X=C("x",v),this.Y=C("y",E,!0),this.Z=C("z",P),Object.freeze(this)}static CURVE(){return s}static fromAffine(v){let{x:E,y:P}=v||{};if(!v||!i.isValid(E)||!i.isValid(P))throw new Error("invalid affine point");if(v instanceof T)throw new Error("projective point not allowed");return i.is0(E)&&i.is0(P)?T.ZERO:new T(E,P,i.ONE)}static fromBytes(v){let E=T.fromAffine(g(kn(v,void 0,"point")));return E.assertValidity(),E}static fromHex(v){return T.fromBytes(vt("pointHex",v))}get x(){return this.toAffine().x}get y(){return this.toAffine().y}precompute(v=8,E=!0){return B.createCache(this,v),E||this.multiply(dy),this}assertValidity(){R(this)}hasEvenY(){let{y:v}=this.toAffine();if(!i.isOdd)throw new Error("Field doesn't support isOdd");return!i.isOdd(v)}equals(v){b(v);let{X:E,Y:P,Z:N}=this,{X:J,Y:z,Z:L}=v,G=i.eql(i.mul(E,L),i.mul(J,N)),K=i.eql(i.mul(P,L),i.mul(z,N));return G&&K}negate(){return new T(this.X,i.neg(this.Y),this.Z)}double(){let{a:v,b:E}=s,P=i.mul(E,dy),{X:N,Y:J,Z:z}=this,L=i.ZERO,G=i.ZERO,K=i.ZERO,j=i.mul(N,N),te=i.mul(J,J),re=i.mul(z,z),ee=i.mul(N,J);return ee=i.add(ee,ee),K=i.mul(N,z),K=i.add(K,K),L=i.mul(v,K),G=i.mul(P,re),G=i.add(L,G),L=i.sub(te,G),G=i.add(te,G),G=i.mul(L,G),L=i.mul(ee,L),K=i.mul(P,K),re=i.mul(v,re),ee=i.sub(j,re),ee=i.mul(v,ee),ee=i.add(ee,K),K=i.add(j,j),j=i.add(K,j),j=i.add(j,re),j=i.mul(j,ee),G=i.add(G,j),re=i.mul(J,z),re=i.add(re,re),j=i.mul(re,ee),L=i.sub(L,j),K=i.mul(re,te),K=i.add(K,K),K=i.add(K,K),new T(L,G,K)}add(v){b(v);let{X:E,Y:P,Z:N}=this,{X:J,Y:z,Z:L}=v,G=i.ZERO,K=i.ZERO,j=i.ZERO,te=s.a,re=i.mul(s.b,dy),ee=i.mul(E,J),Z=i.mul(P,z),me=i.mul(N,L),le=i.add(E,P),Ae=i.add(J,z);le=i.mul(le,Ae),Ae=i.add(ee,Z),le=i.sub(le,Ae),Ae=i.add(E,N);let ve=i.add(J,L);return Ae=i.mul(Ae,ve),ve=i.add(ee,me),Ae=i.sub(Ae,ve),ve=i.add(P,N),G=i.add(z,L),ve=i.mul(ve,G),G=i.add(Z,me),ve=i.sub(ve,G),j=i.mul(te,Ae),G=i.mul(re,me),j=i.add(G,j),G=i.sub(Z,j),j=i.add(Z,j),K=i.mul(G,j),Z=i.add(ee,ee),Z=i.add(Z,ee),me=i.mul(te,me),Ae=i.mul(re,Ae),Z=i.add(Z,me),me=i.sub(ee,me),me=i.mul(te,me),Ae=i.add(Ae,me),ee=i.mul(Z,Ae),K=i.add(K,ee),ee=i.mul(ve,Ae),G=i.mul(le,G),G=i.sub(G,ee),ee=i.mul(le,Z),j=i.mul(ve,j),j=i.add(j,ee),new T(G,K,j)}subtract(v){return this.add(v.negate())}is0(){return this.equals(T.ZERO)}multiply(v){let{endo:E}=e;if(!n.isValidNot0(v))throw new Error("invalid scalar: out of range");let P,N,J=z=>B.cached(this,z,L=>Dc(T,L));if(E){let{k1neg:z,k1:L,k2neg:G,k2:K}=x(v),{p:j,f:te}=J(L),{p:re,f:ee}=J(K);N=te.add(ee),P=U(E.beta,j,re,z,G)}else{let{p:z,f:L}=J(v);P=z,N=L}return Dc(T,[P,N])[0]}multiplyUnsafe(v){let{endo:E}=e,P=this;if(!n.isValid(v))throw new Error("invalid scalar: out of range");if(v===eo||P.is0())return T.ZERO;if(v===md)return P;if(B.hasCache(this))return this.multiply(v);if(E){let{k1neg:N,k1:J,k2neg:z,k2:L}=x(v),{p1:G,p2:K}=FX(T,P,J,L);return U(E.beta,G,K,N,z)}else return B.unsafe(P,v)}multiplyAndAddUnsafe(v,E,P){let N=this.multiplyUnsafe(E).add(v.multiplyUnsafe(P));return N.is0()?void 0:N}toAffine(v){return _(this,v)}isTorsionFree(){let{isTorsionFree:v}=e;return o===md?!0:v?v(T,this):B.unsafe(this,a).is0()}clearCofactor(){let{clearCofactor:v}=e;return o===md?this:v?v(T,this):this.multiplyUnsafe(o)}isSmallOrder(){return this.multiplyUnsafe(o).is0()}toBytes(v=!0){return Rc(v,"isCompressed"),this.assertValidity(),h(T,this,v)}toHex(v=!0){return _c(this.toBytes(v))}toString(){return`<Point ${this.is0()?"ZERO":this.toHex()}>`}get px(){return this.X}get py(){return this.X}get pz(){return this.Z}toRawBytes(v=!0){return this.toBytes(v)}_setWindowSize(v){this.precompute(v)}static normalizeZ(v){return Dc(T,v)}static msm(v,E){return kT(T,n,v,E)}static fromPrivateKey(v){return T.BASE.multiply(dd(n,v))}}T.BASE=new T(s.Gx,s.Gy,i.ONE),T.ZERO=new T(i.ZERO,i.ONE,i.ZERO),T.Fp=i,T.Fn=n;let D=n.BITS,B=new iI(T,e.endo?Math.ceil(D/2):D);return T.BASE.precompute(8),T}function QT(r){return Uint8Array.of(r?2:3)}function _T(r,e){return{secretKey:e.BYTES,publicKey:1+r.BYTES,publicKeyUncompressed:1+2*r.BYTES,publicKeyHasPrefix:!0,signature:2*e.BYTES}}function RX(r,e={}){let{Fn:t}=r,i=e.randomBytes||bI,n=Object.assign(_T(r.Fp,t),{seed:mT(t.ORDER)});function s(h){try{return!!dd(t,h)}catch{return!1}}function o(h,g){let{publicKey:p,publicKeyUncompressed:I}=n;try{let y=h.length;return g===!0&&y!==p||g===!1&&y!==I?!1:!!r.fromBytes(h)}catch{return!1}}function a(h=i(n.seed)){return AX(kn(h,n.seed,"seed"),t.ORDER)}function c(h,g=!0){return r.BASE.multiply(dd(t,h)).toBytes(g)}function l(h){let g=a(h);return{secretKey:g,publicKey:c(g)}}function d(h){if(typeof h=="bigint")return!1;if(h instanceof r)return!0;let{secretKey:g,publicKey:p,publicKeyUncompressed:I}=n;if(t.allowedLengths||g===p)return;let y=vt("key",h).length;return y===p||y===I}function u(h,g,p=!0){if(d(h)===!0)throw new Error("first arg must be private key");if(d(g)===!1)throw new Error("second arg must be public key");let I=dd(t,h);return r.fromHex(g).multiply(I).toBytes(p)}return Object.freeze({getPublicKey:c,getSharedSecret:u,keygen:l,Point:r,utils:{isValidSecretKey:s,isValidPublicKey:o,randomSecretKey:a,isValidPrivateKey:s,randomPrivateKey:a,normPrivateKeyToScalar:h=>dd(t,h),precompute(h=8,g=r.BASE){return g.precompute(h,!1)}},lengths:n})}function NX(r,e,t={}){rT(e),Qd(t,{},{hmac:"function",lowS:"boolean",randomBytes:"function",bits2int:"function",bits2int_modN:"function"});let i=t.randomBytes||bI,n=t.hmac||((E,...P)=>BT(e,E,bn(...P))),{Fp:s,Fn:o}=r,{ORDER:a,BITS:c}=o,{keygen:l,getPublicKey:d,getSharedSecret:u,utils:f,lengths:h}=RX(r,t),g={prehash:!1,lowS:typeof t.lowS=="boolean"?t.lowS:!1,format:void 0,extraEntropy:!1},p="compact";function I(E){let P=a>>md;return E>P}function y(E,P){if(!o.isValidNot0(P))throw new Error(`invalid signature ${E}: out of range 1..Point.Fn.ORDER`);return P}function w(E,P){BB(P);let N=h.signature,J=P==="compact"?N:P==="recovered"?N+1:void 0;return kn(E,J,`${P} signature`)}class C{constructor(P,N,J){this.r=y("r",P),this.s=y("s",N),J!=null&&(this.recovery=J),Object.freeze(this)}static fromBytes(P,N=p){w(P,N);let J;if(N==="der"){let{r:K,s:j}=Xs.toSig(kn(P));return new C(K,j)}N==="recovered"&&(J=P[0],N="compact",P=P.subarray(1));let z=o.BYTES,L=P.subarray(0,z),G=P.subarray(z,z*2);return new C(o.fromBytes(L),o.fromBytes(G),J)}static fromHex(P,N){return this.fromBytes(Wy(P),N)}addRecoveryBit(P){return new C(this.r,this.s,P)}recoverPublicKey(P){let N=s.ORDER,{r:J,s:z,recovery:L}=this;if(L==null||![0,1,2,3].includes(L))throw new Error("recovery id invalid");if(a*DT<N&&L>1)throw new Error("recovery id is ambiguous for h>1 curve");let K=L===2||L===3?J+a:J;if(!s.isValid(K))throw new Error("recovery id 2 or 3 invalid");let j=s.toBytes(K),te=r.fromBytes(bn(QT((L&1)===0),j)),re=o.inv(K),ee=x(vt("msgHash",P)),Z=o.create(-ee*re),me=o.create(z*re),le=r.BASE.multiplyUnsafe(Z).add(te.multiplyUnsafe(me));if(le.is0())throw new Error("point at infinify");return le.assertValidity(),le}hasHighS(){return I(this.s)}toBytes(P=p){if(BB(P),P==="der")return Wy(Xs.hexFromSig(this));let N=o.toBytes(this.r),J=o.toBytes(this.s);if(P==="recovered"){if(this.recovery==null)throw new Error("recovery bit must be present");return bn(Uint8Array.of(this.recovery),N,J)}return bn(N,J)}toHex(P){return _c(this.toBytes(P))}assertValidity(){}static fromCompact(P){return C.fromBytes(vt("sig",P),"compact")}static fromDER(P){return C.fromBytes(vt("sig",P),"der")}normalizeS(){return this.hasHighS()?new C(this.r,o.neg(this.s),this.recovery):this}toDERRawBytes(){return this.toBytes("der")}toDERHex(){return _c(this.toBytes("der"))}toCompactRawBytes(){return this.toBytes("compact")}toCompactHex(){return _c(this.toBytes("compact"))}}let b=t.bits2int||function(P){if(P.length>8192)throw new Error("input is too large");let N=vI(P),J=P.length*8-c;return J>0?N>>BigInt(J):N},x=t.bits2int_modN||function(P){return o.create(b(P))},_=cA(c);function R(E){return zf("num < 2^"+c,E,eo,_),o.toBytes(E)}function U(E,P){return kn(E,void 0,"message"),P?kn(e(E),void 0,"prehashed message"):E}function T(E,P,N){if(["recovered","canonical"].some(Z=>Z in N))throw new Error("sign() legacy options not supported");let{lowS:J,prehash:z,extraEntropy:L}=OE(N,g);E=U(E,z);let G=x(E),K=dd(o,P),j=[R(K),R(G)];if(L!=null&&L!==!1){let Z=L===!0?i(h.secretKey):L;j.push(vt("extraEntropy",Z))}let te=bn(...j),re=G;function ee(Z){let me=b(Z);if(!o.isValidNot0(me))return;let le=o.inv(me),Ae=r.BASE.multiply(me).toAffine(),ve=o.create(Ae.x);if(ve===eo)return;let qe=o.create(le*o.create(re+ve*K));if(qe===eo)return;let _e=(Ae.x===ve?0:2)|Number(Ae.y&md),se=qe;return J&&I(qe)&&(se=o.neg(qe),_e^=1),new C(ve,se,_e)}return{seed:te,k2sig:ee}}function D(E,P,N={}){E=vt("message",E);let{seed:J,k2sig:z}=T(E,P,N);return nX(e.outputLen,o.BYTES,n)(J,z)}function B(E){let P,N=typeof E=="string"||oA(E),J=!N&&E!==null&&typeof E=="object"&&typeof E.r=="bigint"&&typeof E.s=="bigint";if(!N&&!J)throw new Error("invalid signature, expected Uint8Array, hex string or Signature instance");if(J)P=new C(E.r,E.s);else if(N){try{P=C.fromBytes(vt("sig",E),"der")}catch(z){if(!(z instanceof Xs.Err))throw z}if(!P)try{P=C.fromBytes(vt("sig",E),"compact")}catch{return!1}}return P||!1}function Q(E,P,N,J={}){let{lowS:z,prehash:L,format:G}=OE(J,g);if(N=vt("publicKey",N),P=U(vt("message",P),L),"strict"in J)throw new Error("options.strict was renamed to lowS");let K=G===void 0?B(E):C.fromBytes(vt("sig",E),G);if(K===!1)return!1;try{let j=r.fromBytes(N);if(z&&K.hasHighS())return!1;let{r:te,s:re}=K,ee=x(P),Z=o.inv(re),me=o.create(ee*Z),le=o.create(te*Z),Ae=r.BASE.multiplyUnsafe(me).add(j.multiplyUnsafe(le));return Ae.is0()?!1:o.create(Ae.x)===te}catch{return!1}}function v(E,P,N={}){let{prehash:J}=OE(N,g);return P=U(P,J),C.fromBytes(E,"recovered").recoverPublicKey(P).toBytes()}return Object.freeze({keygen:l,getPublicKey:d,getSharedSecret:u,utils:f,lengths:h,Point:r,sign:D,verify:Q,recoverPublicKey:v,Signature:C,hash:e})}function qX(r){let e={a:r.a,b:r.b,p:r.Fp.ORDER,n:r.n,h:r.h,Gx:r.Gx,Gy:r.Gy},t=r.Fp,i=r.allowedPrivateKeyLengths?Array.from(new Set(r.allowedPrivateKeyLengths.map(o=>Math.ceil(o/2)))):void 0,n=ki(e.n,{BITS:r.nBitLength,allowedLengths:i,modFromBytes:r.wrapPrivateKey}),s={Fp:t,Fn:n,allowInfinityPoint:r.allowInfinityPoint,endo:r.endo,isTorsionFree:r.isTorsionFree,clearCofactor:r.clearCofactor,fromBytes:r.fromBytes,toBytes:r.toBytes};return{CURVE:e,curveOpts:s}}function OX(r){let{CURVE:e,curveOpts:t}=qX(r),i={hmac:r.hmac,randomBytes:r.randomBytes,lowS:r.lowS,bits2int:r.bits2int,bits2int_modN:r.bits2int_modN};return{CURVE:e,curveOpts:t,hash:r.hash,ecdsaOpts:i}}function MX(r,e){let t=e.Point;return Object.assign({},e,{ProjectivePoint:t,CURVE:Object.assign({},r,gT(t.Fn.ORDER,t.Fn.BITS))})}function LX(r){let{CURVE:e,curveOpts:t,hash:i,ecdsaOpts:n}=OX(r),s=UX(e,t),o=NX(s,i,n);return MX(r,o)}function Lc(r,e){let t=i=>LX({...r,hash:i});return{...t(e),create:t}}function nZ(r,e=24){let t=new Uint32Array(10);for(let i=24-e;i<24;i++){for(let o=0;o<10;o++)t[o]=r[o]^r[o+10]^r[o+20]^r[o+30]^r[o+40];for(let o=0;o<10;o+=2){let a=(o+8)%10,c=(o+2)%10,l=t[c],d=t[c+1],u=D5(l,d,1)^t[a],f=Q5(l,d,1)^t[a+1];for(let h=0;h<50;h+=10)r[o+h]^=u,r[o+h+1]^=f}let n=r[2],s=r[3];for(let o=0;o<24;o++){let a=RT[o],c=D5(n,s,a),l=Q5(n,s,a),d=UT[o];n=r[d],s=r[d+1],r[d]=c,r[d+1]=l}for(let o=0;o<50;o+=10){for(let a=0;a<10;a++)t[a]=r[o+a];for(let a=0;a<10;a++)r[o+a]^=~t[(a+2)%10]&t[(a+4)%10]}r[0]^=rZ[i],r[1]^=iZ[i]}an(t)}function dZ(r,e,t,i){let n=r.sqr(t),s=r.sqr(i),o=r.add(r.mul(e.a,n),s),a=r.add(r.ONE,r.mul(e.d,r.mul(n,s)));return r.eql(o,a)}function MT(r,e={}){let t=ST("edwards",r,e,e.FpFnLE),{Fp:i,Fn:n}=t,s=t.CURVE,{h:o}=s;Qd(e,{},{uvRatio:"function"});let a=ME<<BigInt(n.BYTES*8)-Cr,c=I=>i.create(I),l=e.uvRatio||((I,y)=>{try{return{isValid:!0,value:i.sqrt(i.div(I,y))}}catch{return{isValid:!1,value:la}}});if(!dZ(i,s,s.Gx,s.Gy))throw new Error("bad curve params: generator point");function d(I,y,w=!1){let C=w?Cr:la;return zf("coordinate "+I,y,C,a),y}function u(I){if(!(I instanceof g))throw new Error("ExtendedPoint expected")}let f=Xy((I,y)=>{let{X:w,Y:C,Z:b}=I,x=I.is0();y==null&&(y=x?lZ:i.inv(b));let _=c(w*y),R=c(C*y),U=i.mul(b,y);if(x)return{x:la,y:Cr};if(U!==Cr)throw new Error("invZ was invalid");return{x:_,y:R}}),h=Xy(I=>{let{a:y,d:w}=s;if(I.is0())throw new Error("bad point: ZERO");let{X:C,Y:b,Z:x,T:_}=I,R=c(C*C),U=c(b*b),T=c(x*x),D=c(T*T),B=c(R*y),Q=c(T*c(B+U)),v=c(D+c(w*c(R*U)));if(Q!==v)throw new Error("bad point: equation left != right (1)");let E=c(C*b),P=c(x*_);if(E!==P)throw new Error("bad point: equation left != right (2)");return!0});class g{constructor(y,w,C,b){this.X=d("x",y),this.Y=d("y",w),this.Z=d("z",C,!0),this.T=d("t",b),Object.freeze(this)}static CURVE(){return s}static fromAffine(y){if(y instanceof g)throw new Error("extended point not allowed");let{x:w,y:C}=y||{};return d("x",w),d("y",C),new g(w,C,Cr,c(w*C))}static fromBytes(y,w=!1){let C=i.BYTES,{a:b,d:x}=s;y=I5(kn(y,C,"point")),Rc(w,"zip215");let _=I5(y),R=y[C-1];_[C-1]=R&-129;let U=Nc(_),T=w?a:i.ORDER;zf("point.y",U,la,T);let D=c(U*U),B=c(D-Cr),Q=c(x*D-b),{isValid:v,value:E}=l(B,Q);if(!v)throw new Error("bad point: invalid y coordinate");let P=(E&Cr)===Cr,N=(R&128)!==0;if(!w&&E===la&&N)throw new Error("bad point: x=0 and x_0=1");return N!==P&&(E=c(-E)),g.fromAffine({x:E,y:U})}static fromHex(y,w=!1){return g.fromBytes(vt("point",y),w)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}precompute(y=8,w=!0){return p.createCache(this,y),w||this.multiply(ME),this}assertValidity(){h(this)}equals(y){u(y);let{X:w,Y:C,Z:b}=this,{X:x,Y:_,Z:R}=y,U=c(w*R),T=c(x*b),D=c(C*R),B=c(_*b);return U===T&&D===B}is0(){return this.equals(g.ZERO)}negate(){return new g(c(-this.X),this.Y,this.Z,c(-this.T))}double(){let{a:y}=s,{X:w,Y:C,Z:b}=this,x=c(w*w),_=c(C*C),R=c(ME*c(b*b)),U=c(y*x),T=w+C,D=c(c(T*T)-x-_),B=U+_,Q=B-R,v=U-_,E=c(D*Q),P=c(B*v),N=c(D*v),J=c(Q*B);return new g(E,P,J,N)}add(y){u(y);let{a:w,d:C}=s,{X:b,Y:x,Z:_,T:R}=this,{X:U,Y:T,Z:D,T:B}=y,Q=c(b*U),v=c(x*T),E=c(R*C*B),P=c(_*D),N=c((b+x)*(U+T)-Q-v),J=P-E,z=P+E,L=c(v-w*Q),G=c(N*J),K=c(z*L),j=c(N*L),te=c(J*z);return new g(G,K,te,j)}subtract(y){return this.add(y.negate())}multiply(y){if(!n.isValidNot0(y))throw new Error("invalid scalar: expected 1 <= sc < curve.n");let{p:w,f:C}=p.cached(this,y,b=>Dc(g,b));return Dc(g,[w,C])[0]}multiplyUnsafe(y,w=g.ZERO){if(!n.isValid(y))throw new Error("invalid scalar: expected 0 <= sc < curve.n");return y===la?g.ZERO:this.is0()||y===Cr?this:p.unsafe(this,y,C=>Dc(g,C),w)}isSmallOrder(){return this.multiplyUnsafe(o).is0()}isTorsionFree(){return p.unsafe(this,s.n).is0()}toAffine(y){return f(this,y)}clearCofactor(){return o===Cr?this:this.multiplyUnsafe(o)}toBytes(){let{x:y,y:w}=this.toAffine(),C=i.toBytes(w);return C[C.length-1]|=y&Cr?128:0,C}toHex(){return _c(this.toBytes())}toString(){return`<Point ${this.is0()?"ZERO":this.toHex()}>`}get ex(){return this.X}get ey(){return this.Y}get ez(){return this.Z}get et(){return this.T}static normalizeZ(y){return Dc(g,y)}static msm(y,w){return kT(g,n,y,w)}_setWindowSize(y){this.precompute(y)}toRawBytes(){return this.toBytes()}}g.BASE=new g(s.Gx,s.Gy,Cr,c(s.Gx*s.Gy)),g.ZERO=new g(la,Cr,Cr,la),g.Fp=i,g.Fn=n;let p=new iI(g,n.BITS);return g.BASE.precompute(8),g}function uZ(r,e,t={}){if(typeof e!="function")throw new Error('"hash" function param is required');Qd(t,{},{adjustScalarBytes:"function",randomBytes:"function",domain:"function",prehash:"function",mapToCurve:"function"});let{prehash:i}=t,{BASE:n,Fp:s,Fn:o}=r,a=t.randomBytes||bI,c=t.adjustScalarBytes||(T=>T),l=t.domain||((T,D,B)=>{if(Rc(B,"phflag"),D.length||B)throw new Error("Contexts/pre-hash are not supported");return T});function d(T){return o.create(Nc(T))}function u(T){let D=C.secretKey;T=vt("private key",T,D);let B=vt("hashed private key",e(T),2*D),Q=c(B.slice(0,D)),v=B.slice(D,2*D),E=d(Q);return{head:Q,prefix:v,scalar:E}}function f(T){let{head:D,prefix:B,scalar:Q}=u(T),v=n.multiply(Q),E=v.toBytes();return{head:D,prefix:B,scalar:Q,point:v,pointBytes:E}}function h(T){return f(T).pointBytes}function g(T=Uint8Array.of(),...D){let B=bn(...D);return d(e(l(B,vt("context",T),!!i)))}function p(T,D,B={}){T=vt("message",T),i&&(T=i(T));let{prefix:Q,scalar:v,pointBytes:E}=f(D),P=g(B.context,Q,T),N=n.multiply(P).toBytes(),J=g(B.context,N,E,T),z=o.create(P+J*v);if(!o.isValid(z))throw new Error("sign failed: invalid s");let L=bn(N,o.toBytes(z));return kn(L,C.signature,"result")}let I={zip215:!0};function y(T,D,B,Q=I){let{context:v,zip215:E}=Q,P=C.signature;T=vt("signature",T,P),D=vt("message",D),B=vt("publicKey",B,C.publicKey),E!==void 0&&Rc(E,"zip215"),i&&(D=i(D));let N=P/2,J=T.subarray(0,N),z=Nc(T.subarray(N,P)),L,G,K;try{L=r.fromBytes(B,E),G=r.fromBytes(J,E),K=n.multiplyUnsafe(z)}catch{return!1}if(!E&&L.isSmallOrder())return!1;let j=g(v,G.toBytes(),L.toBytes(),D);return G.add(L.multiplyUnsafe(j)).subtract(K).clearCofactor().is0()}let w=s.BYTES,C={secretKey:w,publicKey:w,signature:2*w,seed:w};function b(T=a(C.seed)){return kn(T,C.seed,"seed")}function x(T){let D=U.randomSecretKey(T);return{secretKey:D,publicKey:h(D)}}function _(T){return oA(T)&&T.length===o.BYTES}function R(T,D){try{return!!r.fromBytes(T,D)}catch{return!1}}let U={getExtendedPublicKey:f,randomSecretKey:b,isValidSecretKey:_,isValidPublicKey:R,toMontgomery(T){let{y:D}=r.fromBytes(T),B=C.publicKey,Q=B===32;if(!Q&&B!==57)throw new Error("only defined for 25519 and 448");let v=Q?s.div(Cr+D,Cr-D):s.div(D-Cr,D+Cr);return s.toBytes(v)},toMontgomerySecret(T){let D=C.secretKey;kn(T,D);let B=e(T.subarray(0,D));return c(B).subarray(0,D)},randomPrivateKey:b,precompute(T=8,D=r.BASE){return D.precompute(T,!1)}};return Object.freeze({keygen:x,getPublicKey:h,sign:p,verify:y,utils:U,Point:r,lengths:C})}function fZ(r){let e={a:r.a,d:r.d,p:r.Fp.ORDER,n:r.n,h:r.h,Gx:r.Gx,Gy:r.Gy},t=r.Fp,i=ki(e.n,r.nBitLength,!0),n={Fp:t,Fn:i,uvRatio:r.uvRatio},s={randomBytes:r.randomBytes,adjustScalarBytes:r.adjustScalarBytes,domain:r.domain,prehash:r.prehash,mapToCurve:r.mapToCurve};return{CURVE:e,curveOpts:n,hash:r.hash,eddsaOpts:s}}function AZ(r,e){let t=e.Point;return Object.assign({},e,{ExtendedPoint:t,CURVE:r,nBitLength:t.Fn.BITS,nByteLength:t.Fn.BYTES})}function hZ(r){let{CURVE:e,curveOpts:t,hash:i,eddsaOpts:n}=fZ(r),s=MT(e,t),o=uZ(s,i,n);return AZ(r,o)}function gZ(r){return Qd(r,{adjustScalarBytes:"function",powPminus2:"function"}),Object.freeze({...r})}function pZ(r){let e=gZ(r),{P:t,type:i,adjustScalarBytes:n,powPminus2:s,randomBytes:o}=e,a=i==="x25519";if(!a&&i!=="x448")throw new Error("invalid type");let c=o||bI,l=a?255:448,d=a?32:56,u=BigInt(a?9:5),f=BigInt(a?121665:39081),h=a?uy**BigInt(254):uy**BigInt(447),g=a?BigInt(8)*uy**BigInt(251)-nd:BigInt(4)*uy**BigInt(445)-nd,p=h+g+nd,I=v=>pr(v,t),y=w(u);function w(v){return c1(I(v),d)}function C(v){let E=vt("u coordinate",v,d);return a&&(E[31]&=127),I(Nc(E))}function b(v){return Nc(n(vt("scalar",v,d)))}function x(v,E){let P=U(C(E),b(v));if(P===Ef)throw new Error("invalid private or public key received");return w(P)}function _(v){return x(v,y)}function R(v,E,P){let N=I(v*(E-P));return E=I(E-N),P=I(P+N),{x_2:E,x_3:P}}function U(v,E){zf("u",v,Ef,t),zf("scalar",E,h,p);let P=E,N=v,J=nd,z=Ef,L=v,G=nd,K=Ef;for(let te=BigInt(l-1);te>=Ef;te--){let re=P>>te&nd;K^=re,{x_2:J,x_3:L}=R(K,J,L),{x_2:z,x_3:G}=R(K,z,G),K=re;let ee=J+z,Z=I(ee*ee),me=J-z,le=I(me*me),Ae=Z-le,ve=L+G,qe=L-G,_e=I(qe*ee),se=I(ve*me),it=_e+se,ce=_e-se;L=I(it*it),G=I(N*I(ce*ce)),J=I(Z*le),z=I(Ae*(Z+I(f*Ae)))}({x_2:J,x_3:L}=R(K,J,L)),{x_2:z,x_3:G}=R(K,z,G);let j=s(z);return I(J*j)}let T={secretKey:d,publicKey:d,seed:d},D=(v=c(d))=>(ds(v,T.seed),v);function B(v){let E=D(v);return{secretKey:E,publicKey:_(E)}}return{keygen:B,getSharedSecret:(v,E)=>x(v,E),getPublicKey:v=>_(v),scalarMult:x,scalarMultBase:_,utils:{randomSecretKey:D,randomPrivateKey:D},GuBytes:y.slice(),lengths:T}}function LT(r){let e=Hc.p,t=r*r*r%e,i=t*t*r%e,n=bt(i,_5,e)*i%e,s=bt(n,_5,e)*i%e,o=bt(s,vB,e)*t%e,a=bt(o,wZ,e)*o%e,c=bt(a,xZ,e)*a%e,l=bt(c,F5,e)*c%e,d=bt(l,CZ,e)*l%e,u=bt(d,F5,e)*c%e,f=bt(u,vB,e)*t%e,h=bt(f,IZ,e)*r%e;return bt(h,EZ,e)*f%e}function HT(r){return r[0]&=252,r[55]|=128,r[56]=0,r}function BZ(r,e){let t=Hc.p,i=pr(r*r*e,t),n=pr(i*r,t),s=pr(n*i*e,t),o=LT(s),a=pr(n*o,t),c=pr(a*a,t);return{isValid:pr(c*e,t)===r,value:a}}function vZ(r,e,t){if(e.length>255)throw new Error("context must be smaller than 255, got: "+e.length);return bn(rX("SigEd448"),new Uint8Array([t?1:0,e.length]),e,r)}function _Z(r){let e=u1.p,t=BigInt(3),i=BigInt(6),n=BigInt(11),s=BigInt(22),o=BigInt(23),a=BigInt(44),c=BigInt(88),l=r*r*r%e,d=l*l*r%e,u=bt(d,t,e)*d%e,f=bt(u,t,e)*d%e,h=bt(f,T5,e)*l%e,g=bt(h,n,e)*h%e,p=bt(g,s,e)*g%e,I=bt(p,a,e)*p%e,y=bt(I,c,e)*I%e,w=bt(y,a,e)*p%e,C=bt(w,t,e)*d%e,b=bt(C,o,e)*g%e,x=bt(b,i,e)*l%e,_=bt(x,T5,e);if(!kB.eql(kB.sqr(_),r))throw new Error("Cannot find square root");return _}function U5(r,e,t,i){return r===0?e^t^i:r===1?e&t|~e&i:r===2?(e|~t)^i:r===3?e&i|t&~i:e^(t|~i)}function O5(r,e,t,i){r[e]=t>>24&255,r[e+1]=t>>16&255,r[e+2]=t>>8&255,r[e+3]=t&255,r[e+4]=i>>24&255,r[e+5]=i>>16&255,r[e+6]=i>>8&255,r[e+7]=i&255}function lee(r,e,t,i,n){var s,o=0;for(s=0;s<n;s++)o|=r[e+s]^t[i+s];return(1&o-1>>>8)-1}function tU(r,e,t,i){return lee(r,e,t,i,32)}function ya(r,e){var t;for(t=0;t<16;t++)r[t]=e[t]|0}function KE(r){var e,t,i=1;for(e=0;e<16;e++)t=r[e]+i+65535,i=Math.floor(t/65536),r[e]=t-i*65536;r[0]+=i-1+37*(i-1)}function ud(r,e,t){for(var i,n=~(t-1),s=0;s<16;s++)i=n&(r[s]^e[s]),r[s]^=i,e[s]^=i}function Jf(r,e){var t,i,n,s=Pe(),o=Pe();for(t=0;t<16;t++)o[t]=e[t];for(KE(o),KE(o),KE(o),i=0;i<2;i++){for(s[0]=o[0]-65517,t=1;t<15;t++)s[t]=o[t]-65535-(s[t-1]>>16&1),s[t-1]&=65535;s[15]=o[15]-32767-(s[14]>>16&1),n=s[15]>>16&1,s[14]&=65535,ud(o,s,1-n)}for(t=0;t<16;t++)r[2*t]=o[t]&255,r[2*t+1]=o[t]>>8}function M5(r,e){var t=new Uint8Array(32),i=new Uint8Array(32);return Jf(t,r),Jf(i,e),tU(t,0,i,0)}function rU(r){var e=new Uint8Array(32);return Jf(e,r),e[0]&1}function iU(r,e){var t;for(t=0;t<16;t++)r[t]=e[2*t]+(e[2*t+1]<<8);r[15]&=32767}function ts(r,e,t){for(var i=0;i<16;i++)r[i]=e[i]+t[i]}function is(r,e,t){for(var i=0;i<16;i++)r[i]=e[i]-t[i]}function at(r,e,t){var i,n,s=0,o=0,a=0,c=0,l=0,d=0,u=0,f=0,h=0,g=0,p=0,I=0,y=0,w=0,C=0,b=0,x=0,_=0,R=0,U=0,T=0,D=0,B=0,Q=0,v=0,E=0,P=0,N=0,J=0,z=0,L=0,G=t[0],K=t[1],j=t[2],te=t[3],re=t[4],ee=t[5],Z=t[6],me=t[7],le=t[8],Ae=t[9],ve=t[10],qe=t[11],_e=t[12],se=t[13],it=t[14],ce=t[15];i=e[0],s+=i*G,o+=i*K,a+=i*j,c+=i*te,l+=i*re,d+=i*ee,u+=i*Z,f+=i*me,h+=i*le,g+=i*Ae,p+=i*ve,I+=i*qe,y+=i*_e,w+=i*se,C+=i*it,b+=i*ce,i=e[1],o+=i*G,a+=i*K,c+=i*j,l+=i*te,d+=i*re,u+=i*ee,f+=i*Z,h+=i*me,g+=i*le,p+=i*Ae,I+=i*ve,y+=i*qe,w+=i*_e,C+=i*se,b+=i*it,x+=i*ce,i=e[2],a+=i*G,c+=i*K,l+=i*j,d+=i*te,u+=i*re,f+=i*ee,h+=i*Z,g+=i*me,p+=i*le,I+=i*Ae,y+=i*ve,w+=i*qe,C+=i*_e,b+=i*se,x+=i*it,_+=i*ce,i=e[3],c+=i*G,l+=i*K,d+=i*j,u+=i*te,f+=i*re,h+=i*ee,g+=i*Z,p+=i*me,I+=i*le,y+=i*Ae,w+=i*ve,C+=i*qe,b+=i*_e,x+=i*se,_+=i*it,R+=i*ce,i=e[4],l+=i*G,d+=i*K,u+=i*j,f+=i*te,h+=i*re,g+=i*ee,p+=i*Z,I+=i*me,y+=i*le,w+=i*Ae,C+=i*ve,b+=i*qe,x+=i*_e,_+=i*se,R+=i*it,U+=i*ce,i=e[5],d+=i*G,u+=i*K,f+=i*j,h+=i*te,g+=i*re,p+=i*ee,I+=i*Z,y+=i*me,w+=i*le,C+=i*Ae,b+=i*ve,x+=i*qe,_+=i*_e,R+=i*se,U+=i*it,T+=i*ce,i=e[6],u+=i*G,f+=i*K,h+=i*j,g+=i*te,p+=i*re,I+=i*ee,y+=i*Z,w+=i*me,C+=i*le,b+=i*Ae,x+=i*ve,_+=i*qe,R+=i*_e,U+=i*se,T+=i*it,D+=i*ce,i=e[7],f+=i*G,h+=i*K,g+=i*j,p+=i*te,I+=i*re,y+=i*ee,w+=i*Z,C+=i*me,b+=i*le,x+=i*Ae,_+=i*ve,R+=i*qe,U+=i*_e,T+=i*se,D+=i*it,B+=i*ce,i=e[8],h+=i*G,g+=i*K,p+=i*j,I+=i*te,y+=i*re,w+=i*ee,C+=i*Z,b+=i*me,x+=i*le,_+=i*Ae,R+=i*ve,U+=i*qe,T+=i*_e,D+=i*se,B+=i*it,Q+=i*ce,i=e[9],g+=i*G,p+=i*K,I+=i*j,y+=i*te,w+=i*re,C+=i*ee,b+=i*Z,x+=i*me,_+=i*le,R+=i*Ae,U+=i*ve,T+=i*qe,D+=i*_e,B+=i*se,Q+=i*it,v+=i*ce,i=e[10],p+=i*G,I+=i*K,y+=i*j,w+=i*te,C+=i*re,b+=i*ee,x+=i*Z,_+=i*me,R+=i*le,U+=i*Ae,T+=i*ve,D+=i*qe,B+=i*_e,Q+=i*se,v+=i*it,E+=i*ce,i=e[11],I+=i*G,y+=i*K,w+=i*j,C+=i*te,b+=i*re,x+=i*ee,_+=i*Z,R+=i*me,U+=i*le,T+=i*Ae,D+=i*ve,B+=i*qe,Q+=i*_e,v+=i*se,E+=i*it,P+=i*ce,i=e[12],y+=i*G,w+=i*K,C+=i*j,b+=i*te,x+=i*re,_+=i*ee,R+=i*Z,U+=i*me,T+=i*le,D+=i*Ae,B+=i*ve,Q+=i*qe,v+=i*_e,E+=i*se,P+=i*it,N+=i*ce,i=e[13],w+=i*G,C+=i*K,b+=i*j,x+=i*te,_+=i*re,R+=i*ee,U+=i*Z,T+=i*me,D+=i*le,B+=i*Ae,Q+=i*ve,v+=i*qe,E+=i*_e,P+=i*se,N+=i*it,J+=i*ce,i=e[14],C+=i*G,b+=i*K,x+=i*j,_+=i*te,R+=i*re,U+=i*ee,T+=i*Z,D+=i*me,B+=i*le,Q+=i*Ae,v+=i*ve,E+=i*qe,P+=i*_e,N+=i*se,J+=i*it,z+=i*ce,i=e[15],b+=i*G,x+=i*K,_+=i*j,R+=i*te,U+=i*re,T+=i*ee,D+=i*Z,B+=i*me,Q+=i*le,v+=i*Ae,E+=i*ve,P+=i*qe,N+=i*_e,J+=i*se,z+=i*it,L+=i*ce,s+=38*x,o+=38*_,a+=38*R,c+=38*U,l+=38*T,d+=38*D,u+=38*B,f+=38*Q,h+=38*v,g+=38*E,p+=38*P,I+=38*N,y+=38*J,w+=38*z,C+=38*L,n=1,i=s+n+65535,n=Math.floor(i/65536),s=i-n*65536,i=o+n+65535,n=Math.floor(i/65536),o=i-n*65536,i=a+n+65535,n=Math.floor(i/65536),a=i-n*65536,i=c+n+65535,n=Math.floor(i/65536),c=i-n*65536,i=l+n+65535,n=Math.floor(i/65536),l=i-n*65536,i=d+n+65535,n=Math.floor(i/65536),d=i-n*65536,i=u+n+65535,n=Math.floor(i/65536),u=i-n*65536,i=f+n+65535,n=Math.floor(i/65536),f=i-n*65536,i=h+n+65535,n=Math.floor(i/65536),h=i-n*65536,i=g+n+65535,n=Math.floor(i/65536),g=i-n*65536,i=p+n+65535,n=Math.floor(i/65536),p=i-n*65536,i=I+n+65535,n=Math.floor(i/65536),I=i-n*65536,i=y+n+65535,n=Math.floor(i/65536),y=i-n*65536,i=w+n+65535,n=Math.floor(i/65536),w=i-n*65536,i=C+n+65535,n=Math.floor(i/65536),C=i-n*65536,i=b+n+65535,n=Math.floor(i/65536),b=i-n*65536,s+=n-1+37*(n-1),n=1,i=s+n+65535,n=Math.floor(i/65536),s=i-n*65536,i=o+n+65535,n=Math.floor(i/65536),o=i-n*65536,i=a+n+65535,n=Math.floor(i/65536),a=i-n*65536,i=c+n+65535,n=Math.floor(i/65536),c=i-n*65536,i=l+n+65535,n=Math.floor(i/65536),l=i-n*65536,i=d+n+65535,n=Math.floor(i/65536),d=i-n*65536,i=u+n+65535,n=Math.floor(i/65536),u=i-n*65536,i=f+n+65535,n=Math.floor(i/65536),f=i-n*65536,i=h+n+65535,n=Math.floor(i/65536),h=i-n*65536,i=g+n+65535,n=Math.floor(i/65536),g=i-n*65536,i=p+n+65535,n=Math.floor(i/65536),p=i-n*65536,i=I+n+65535,n=Math.floor(i/65536),I=i-n*65536,i=y+n+65535,n=Math.floor(i/65536),y=i-n*65536,i=w+n+65535,n=Math.floor(i/65536),w=i-n*65536,i=C+n+65535,n=Math.floor(i/65536),C=i-n*65536,i=b+n+65535,n=Math.floor(i/65536),b=i-n*65536,s+=n-1+37*(n-1),r[0]=s,r[1]=o,r[2]=a,r[3]=c,r[4]=l,r[5]=d,r[6]=u,r[7]=f,r[8]=h,r[9]=g,r[10]=p,r[11]=I,r[12]=y,r[13]=w,r[14]=C,r[15]=b}function vn(r,e){at(r,e,e)}function nU(r,e){var t=Pe(),i;for(i=0;i<16;i++)t[i]=e[i];for(i=253;i>=0;i--)vn(t,t),i!==2&&i!==4&&at(t,t,e);for(i=0;i<16;i++)r[i]=t[i]}function dee(r,e){var t=Pe(),i;for(i=0;i<16;i++)t[i]=e[i];for(i=250;i>=0;i--)vn(t,t),i!==1&&at(t,t,e);for(i=0;i<16;i++)r[i]=t[i]}function sU(r,e,t){var i=new Uint8Array(32),n=new Float64Array(80),s,o,a=Pe(),c=Pe(),l=Pe(),d=Pe(),u=Pe(),f=Pe();for(o=0;o<31;o++)i[o]=e[o];for(i[31]=e[31]&127|64,i[0]&=248,iU(n,t),o=0;o<16;o++)c[o]=n[o],d[o]=a[o]=l[o]=0;for(a[0]=d[0]=1,o=254;o>=0;--o)s=i[o>>>3]>>>(o&7)&1,ud(a,c,s),ud(l,d,s),ts(u,a,l),is(a,a,l),ts(l,c,d),is(c,c,d),vn(d,u),vn(f,a),at(a,l,a),at(l,c,u),ts(u,a,l),is(a,a,l),vn(c,a),is(l,d,f),at(a,l,see),ts(a,a,d),at(l,l,a),at(a,d,f),at(d,c,n),vn(c,u),ud(a,c,s),ud(l,d,s);for(o=0;o<16;o++)n[o+16]=a[o],n[o+32]=l[o],n[o+48]=c[o],n[o+64]=d[o];var h=n.subarray(32),g=n.subarray(16);return nU(h,h),at(g,g,h),Jf(r,g),0}function oU(r,e){return sU(r,e,eU)}function uee(r,e){return f1(e,32),oU(r,e)}function H5(r,e,t,i){for(var n=new Int32Array(16),s=new Int32Array(16),o,a,c,l,d,u,f,h,g,p,I,y,w,C,b,x,_,R,U,T,D,B,Q,v,E,P,N=r[0],J=r[1],z=r[2],L=r[3],G=r[4],K=r[5],j=r[6],te=r[7],re=e[0],ee=e[1],Z=e[2],me=e[3],le=e[4],Ae=e[5],ve=e[6],qe=e[7],_e=0;i>=128;){for(U=0;U<16;U++)T=8*U+_e,n[U]=t[T+0]<<24|t[T+1]<<16|t[T+2]<<8|t[T+3],s[U]=t[T+4]<<24|t[T+5]<<16|t[T+6]<<8|t[T+7];for(U=0;U<80;U++)if(o=N,a=J,c=z,l=L,d=G,u=K,f=j,h=te,g=re,p=ee,I=Z,y=me,w=le,C=Ae,b=ve,x=qe,D=te,B=qe,Q=B&65535,v=B>>>16,E=D&65535,P=D>>>16,D=(G>>>14|le<<18)^(G>>>18|le<<14)^(le>>>9|G<<23),B=(le>>>14|G<<18)^(le>>>18|G<<14)^(G>>>9|le<<23),Q+=B&65535,v+=B>>>16,E+=D&65535,P+=D>>>16,D=G&K^~G&j,B=le&Ae^~le&ve,Q+=B&65535,v+=B>>>16,E+=D&65535,P+=D>>>16,D=L5[U*2],B=L5[U*2+1],Q+=B&65535,v+=B>>>16,E+=D&65535,P+=D>>>16,D=n[U%16],B=s[U%16],Q+=B&65535,v+=B>>>16,E+=D&65535,P+=D>>>16,v+=Q>>>16,E+=v>>>16,P+=E>>>16,_=E&65535|P<<16,R=Q&65535|v<<16,D=_,B=R,Q=B&65535,v=B>>>16,E=D&65535,P=D>>>16,D=(N>>>28|re<<4)^(re>>>2|N<<30)^(re>>>7|N<<25),B=(re>>>28|N<<4)^(N>>>2|re<<30)^(N>>>7|re<<25),Q+=B&65535,v+=B>>>16,E+=D&65535,P+=D>>>16,D=N&J^N&z^J&z,B=re&ee^re&Z^ee&Z,Q+=B&65535,v+=B>>>16,E+=D&65535,P+=D>>>16,v+=Q>>>16,E+=v>>>16,P+=E>>>16,h=E&65535|P<<16,x=Q&65535|v<<16,D=l,B=y,Q=B&65535,v=B>>>16,E=D&65535,P=D>>>16,D=_,B=R,Q+=B&65535,v+=B>>>16,E+=D&65535,P+=D>>>16,v+=Q>>>16,E+=v>>>16,P+=E>>>16,l=E&65535|P<<16,y=Q&65535|v<<16,J=o,z=a,L=c,G=l,K=d,j=u,te=f,N=h,ee=g,Z=p,me=I,le=y,Ae=w,ve=C,qe=b,re=x,U%16===15)for(T=0;T<16;T++)D=n[T],B=s[T],Q=B&65535,v=B>>>16,E=D&65535,P=D>>>16,D=n[(T+9)%16],B=s[(T+9)%16],Q+=B&65535,v+=B>>>16,E+=D&65535,P+=D>>>16,_=n[(T+1)%16],R=s[(T+1)%16],D=(_>>>1|R<<31)^(_>>>8|R<<24)^_>>>7,B=(R>>>1|_<<31)^(R>>>8|_<<24)^(R>>>7|_<<25),Q+=B&65535,v+=B>>>16,E+=D&65535,P+=D>>>16,_=n[(T+14)%16],R=s[(T+14)%16],D=(_>>>19|R<<13)^(R>>>29|_<<3)^_>>>6,B=(R>>>19|_<<13)^(_>>>29|R<<3)^(R>>>6|_<<26),Q+=B&65535,v+=B>>>16,E+=D&65535,P+=D>>>16,v+=Q>>>16,E+=v>>>16,P+=E>>>16,n[T]=E&65535|P<<16,s[T]=Q&65535|v<<16;D=N,B=re,Q=B&65535,v=B>>>16,E=D&65535,P=D>>>16,D=r[0],B=e[0],Q+=B&65535,v+=B>>>16,E+=D&65535,P+=D>>>16,v+=Q>>>16,E+=v>>>16,P+=E>>>16,r[0]=N=E&65535|P<<16,e[0]=re=Q&65535|v<<16,D=J,B=ee,Q=B&65535,v=B>>>16,E=D&65535,P=D>>>16,D=r[1],B=e[1],Q+=B&65535,v+=B>>>16,E+=D&65535,P+=D>>>16,v+=Q>>>16,E+=v>>>16,P+=E>>>16,r[1]=J=E&65535|P<<16,e[1]=ee=Q&65535|v<<16,D=z,B=Z,Q=B&65535,v=B>>>16,E=D&65535,P=D>>>16,D=r[2],B=e[2],Q+=B&65535,v+=B>>>16,E+=D&65535,P+=D>>>16,v+=Q>>>16,E+=v>>>16,P+=E>>>16,r[2]=z=E&65535|P<<16,e[2]=Z=Q&65535|v<<16,D=L,B=me,Q=B&65535,v=B>>>16,E=D&65535,P=D>>>16,D=r[3],B=e[3],Q+=B&65535,v+=B>>>16,E+=D&65535,P+=D>>>16,v+=Q>>>16,E+=v>>>16,P+=E>>>16,r[3]=L=E&65535|P<<16,e[3]=me=Q&65535|v<<16,D=G,B=le,Q=B&65535,v=B>>>16,E=D&65535,P=D>>>16,D=r[4],B=e[4],Q+=B&65535,v+=B>>>16,E+=D&65535,P+=D>>>16,v+=Q>>>16,E+=v>>>16,P+=E>>>16,r[4]=G=E&65535|P<<16,e[4]=le=Q&65535|v<<16,D=K,B=Ae,Q=B&65535,v=B>>>16,E=D&65535,P=D>>>16,D=r[5],B=e[5],Q+=B&65535,v+=B>>>16,E+=D&65535,P+=D>>>16,v+=Q>>>16,E+=v>>>16,P+=E>>>16,r[5]=K=E&65535|P<<16,e[5]=Ae=Q&65535|v<<16,D=j,B=ve,Q=B&65535,v=B>>>16,E=D&65535,P=D>>>16,D=r[6],B=e[6],Q+=B&65535,v+=B>>>16,E+=D&65535,P+=D>>>16,v+=Q>>>16,E+=v>>>16,P+=E>>>16,r[6]=j=E&65535|P<<16,e[6]=ve=Q&65535|v<<16,D=te,B=qe,Q=B&65535,v=B>>>16,E=D&65535,P=D>>>16,D=r[7],B=e[7],Q+=B&65535,v+=B>>>16,E+=D&65535,P+=D>>>16,v+=Q>>>16,E+=v>>>16,P+=E>>>16,r[7]=te=E&65535|P<<16,e[7]=qe=Q&65535|v<<16,_e+=128,i-=128}return i}function Ff(r,e,t){var i=new Int32Array(8),n=new Int32Array(8),s=new Uint8Array(256),o,a=t;for(i[0]=1779033703,i[1]=3144134277,i[2]=1013904242,i[3]=2773480762,i[4]=1359893119,i[5]=2600822924,i[6]=528734635,i[7]=1541459225,n[0]=4089235720,n[1]=2227873595,n[2]=4271175723,n[3]=1595750129,n[4]=2917565137,n[5]=725511199,n[6]=4215389547,n[7]=327033209,H5(i,n,e,t),t%=128,o=0;o<t;o++)s[o]=e[a-t+o];for(s[t]=128,t=256-128*(t<112?1:0),s[t-9]=0,O5(s,t-8,a/536870912|0,a<<3),H5(i,n,s,t),o=0;o<8;o++)O5(r,8*o,i[o],n[o]);return 0}function FB(r,e){var t=Pe(),i=Pe(),n=Pe(),s=Pe(),o=Pe(),a=Pe(),c=Pe(),l=Pe(),d=Pe();is(t,r[1],r[0]),is(d,e[1],e[0]),at(t,t,d),ts(i,r[0],r[1]),ts(d,e[0],e[1]),at(i,i,d),at(n,r[3],e[3]),at(n,n,aee),at(s,r[2],e[2]),ts(s,s,s),is(o,i,t),is(a,s,n),ts(c,s,n),ts(l,i,t),at(r[0],o,a),at(r[1],l,c),at(r[2],c,a),at(r[3],o,l)}function K5(r,e,t){var i;for(i=0;i<4;i++)ud(r[i],e[i],t)}function A1(r,e){var t=Pe(),i=Pe(),n=Pe();nU(n,e[2]),at(t,e[0],n),at(i,e[1],n),Jf(r,i),r[31]^=rU(t)<<7}function aU(r,e,t){var i,n;for(ya(r[0],_B),ya(r[1],sI),ya(r[2],sI),ya(r[3],_B),n=255;n>=0;--n)i=t[n/8|0]>>(n&7)&1,K5(r,e,i),FB(e,r),FB(r,r),K5(r,e,i)}function h1(r,e){var t=[Pe(),Pe(),Pe(),Pe()];ya(t[0],N5),ya(t[1],q5),ya(t[2],sI),at(t[3],N5,q5),aU(r,t,e)}function cU(r,e,t){var i=new Uint8Array(64),n=[Pe(),Pe(),Pe(),Pe()],s;for(t||f1(e,32),Ff(i,e,32),i[0]&=248,i[31]&=127,i[31]|=64,h1(n,i),A1(r,n),s=0;s<32;s++)e[s+32]=r[s];return 0}function lU(r,e){var t,i,n,s;for(i=63;i>=32;--i){for(t=0,n=i-32,s=i-12;n<s;++n)e[n]+=t-16*e[i]*GE[n-(i-32)],t=Math.floor((e[n]+128)/256),e[n]-=t*256;e[n]+=t,e[i]=0}for(t=0,n=0;n<32;n++)e[n]+=t-(e[31]>>4)*GE[n],t=e[n]>>8,e[n]&=255;for(n=0;n<32;n++)e[n]-=t*GE[n];for(i=0;i<32;i++)e[i+1]+=e[i]>>8,r[i]=e[i]&255}function PB(r){var e=new Float64Array(64),t;for(t=0;t<64;t++)e[t]=r[t];for(t=0;t<64;t++)r[t]=0;lU(r,e)}function fee(r,e,t,i){var n=new Uint8Array(64),s=new Uint8Array(64),o=new Uint8Array(64),a,c,l=new Float64Array(64),d=[Pe(),Pe(),Pe(),Pe()];Ff(n,i,32),n[0]&=248,n[31]&=127,n[31]|=64;var u=t+64;for(a=0;a<t;a++)r[64+a]=e[a];for(a=0;a<32;a++)r[32+a]=n[32+a];for(Ff(o,r.subarray(32),t+32),PB(o),h1(d,o),A1(r,d),a=32;a<64;a++)r[a]=i[a];for(Ff(s,r,t+64),PB(s),a=0;a<64;a++)l[a]=0;for(a=0;a<32;a++)l[a]=o[a];for(a=0;a<32;a++)for(c=0;c<32;c++)l[a+c]+=s[a]*n[c];return lU(r.subarray(32),l),u}function Aee(r,e){var t=Pe(),i=Pe(),n=Pe(),s=Pe(),o=Pe(),a=Pe(),c=Pe();return ya(r[2],sI),iU(r[1],e),vn(n,r[1]),at(s,n,oee),is(n,n,r[2]),ts(s,r[2],s),vn(o,s),vn(a,o),at(c,a,o),at(t,c,n),at(t,t,s),dee(t,t),at(t,t,n),at(t,t,s),at(t,t,s),at(r[0],t,s),vn(i,r[0]),at(i,i,s),M5(i,n)&&at(r[0],r[0],cee),vn(i,r[0]),at(i,i,s),M5(i,n)?-1:(rU(r[0])===e[31]>>7&&is(r[0],_B,r[0]),at(r[3],r[0],r[1]),0)}function hee(r,e,t,i){var n,s=new Uint8Array(32),o=new Uint8Array(64),a=[Pe(),Pe(),Pe(),Pe()],c=[Pe(),Pe(),Pe(),Pe()];if(t<64||Aee(c,i))return-1;for(n=0;n<t;n++)r[n]=e[n];for(n=0;n<32;n++)r[n+32]=i[n];if(Ff(o,r,t),PB(o),aU(a,c,o),h1(c,e.subarray(32)),FB(a,c),A1(s,a),t-=64,tU(e,0,s,0)){for(n=0;n<t;n++)r[n]=0;return-1}for(n=0;n<t;n++)r[n]=e[n+64];return t}function _d(){for(var r=0;r<arguments.length;r++)if(!(arguments[r]instanceof Uint8Array))throw new TypeError("unexpected type, use Uint8Array")}function mee(r){for(var e=0;e<r.length;e++)r[e]=0}function zE(r,e,t,i,n,s){let o=[16843776,0,65536,16843780,16842756,66564,4,65536,1024,16843776,16843780,1024,16778244,16842756,16777216,4,1028,16778240,16778240,66560,66560,16842752,16842752,16778244,65540,16777220,16777220,65540,0,1028,66564,16777216,65536,16843780,4,16842752,16843776,16777216,16777216,1024,16842756,65536,66560,16777220,1024,4,16778244,66564,16843780,65540,16842752,16778244,16777220,1028,66564,16843776,1028,16778240,16778240,0,65540,66560,0,16842756],a=[-2146402272,-2147450880,32768,1081376,1048576,32,-2146435040,-2147450848,-2147483616,-2146402272,-2146402304,-2147483648,-2147450880,1048576,32,-2146435040,1081344,1048608,-2147450848,0,-2147483648,32768,1081376,-2146435072,1048608,-2147483616,0,1081344,32800,-2146402304,-2146435072,32800,0,1081376,-2146435040,1048576,-2147450848,-2146435072,-2146402304,32768,-2146435072,-2147450880,32,-2146402272,1081376,32,32768,-2147483648,32800,-2146402304,1048576,-2147483616,1048608,-2147450848,-2147483616,1048608,1081344,0,-2147450880,32800,-2147483648,-2146435040,-2146402272,1081344],c=[520,134349312,0,134348808,134218240,0,131592,134218240,131080,134217736,134217736,131072,134349320,131080,134348800,520,134217728,8,134349312,512,131584,134348800,134348808,131592,134218248,131584,131072,134218248,8,134349320,512,134217728,134349312,134217728,131080,520,131072,134349312,134218240,0,512,131080,134349320,134218240,134217736,512,0,134348808,134218248,131072,134217728,134349320,8,131592,131584,134217736,134348800,134218248,520,134348800,131592,8,134348808,131584],l=[8396801,8321,8321,128,8396928,8388737,8388609,8193,0,8396800,8396800,8396929,129,0,8388736,8388609,1,8192,8388608,8396801,128,8388608,8193,8320,8388737,1,8320,8388736,8192,8396928,8396929,129,8388736,8388609,8396800,8396929,129,0,0,8396800,8320,8388736,8388737,1,8396801,8321,8321,128,8396929,129,1,8192,8388609,8193,8396928,8388737,8193,8320,8388608,8396801,128,8388608,8192,8396928],d=[256,34078976,34078720,1107296512,524288,256,1073741824,34078720,1074266368,524288,33554688,1074266368,1107296512,1107820544,524544,1073741824,33554432,1074266112,1074266112,0,1073742080,1107820800,1107820800,33554688,1107820544,1073742080,0,1107296256,34078976,33554432,1107296256,524544,524288,1107296512,256,33554432,1073741824,34078720,1107296512,1074266368,33554688,1073741824,1107820544,34078976,1074266368,256,33554432,1107820544,1107820800,524544,1107296256,1107820800,34078720,0,1074266112,1107296256,524544,33554688,1073742080,524288,0,1074266112,34078976,1073742080],u=[536870928,541065216,16384,541081616,541065216,16,541081616,4194304,536887296,4210704,4194304,536870928,4194320,536887296,536870912,16400,0,4194320,536887312,16384,4210688,536887312,16,541065232,541065232,0,4210704,541081600,16400,4210688,541081600,536870912,536887296,16,541065232,4210688,541081616,4194304,16400,536870928,4194304,536887296,536870912,16400,536870928,541081616,4210688,541065216,4210704,541081600,0,541065232,16,16384,541065216,4210704,16384,4194320,536887312,0,541081600,536870912,4194320,536887312],f=[2097152,69206018,67110914,0,2048,67110914,2099202,69208064,69208066,2097152,0,67108866,2,67108864,69206018,2050,67110912,2099202,2097154,67110912,67108866,69206016,69208064,2097154,69206016,2048,2050,69208066,2099200,2,67108864,2099200,67108864,2099200,2097152,67110914,67110914,69206018,69206018,2,2097154,67108864,67110912,2097152,69208064,2050,2099202,69208064,2050,67108866,69208066,69206016,2099200,0,2,69208066,0,2099202,69206016,2048,67108866,67110912,2048,2097154],h=[268439616,4096,262144,268701760,268435456,268439616,64,268435456,262208,268697600,268701760,266240,268701696,266304,4096,64,268697600,268435520,268439552,4160,266240,262208,268697664,268701696,4160,0,0,268697664,268435520,268439552,266304,262144,266304,262144,268701696,4096,64,268697664,4096,266304,268439552,64,268435520,268697600,268697664,268435456,262144,268439616,0,268701760,262208,268435520,268697600,268439552,268439616,0,268701760,266240,266240,4160,4160,262208,268435456,268701696],g=0,p,I,y,w,C,b,x,_,R,U,T=e.length,D=r.length===32?3:9;D===3?_=t?[0,32,2]:[30,-2,-2]:_=t?[0,32,2,62,30,-2,64,96,2]:[94,62,-2,32,64,2,30,-2,-2],t&&(e=yee(e),T=e.length);let B=new Uint8Array(T),Q=0;for(;g<T;){for(b=e[g++]<<24|e[g++]<<16|e[g++]<<8|e[g++],x=e[g++]<<24|e[g++]<<16|e[g++]<<8|e[g++],y=(b>>>4^x)&252645135,x^=y,b^=y<<4,y=(b>>>16^x)&65535,x^=y,b^=y<<16,y=(x>>>2^b)&858993459,b^=y,x^=y<<2,y=(x>>>8^b)&16711935,b^=y,x^=y<<8,y=(b>>>1^x)&1431655765,x^=y,b^=y<<1,b=b<<1|b>>>31,x=x<<1|x>>>31,I=0;I<D;I+=3){for(R=_[I+1],U=_[I+2],p=_[I];p!==R;p+=U)w=x^r[p],C=(x>>>4|x<<28)^r[p+1],y=b,b=x,x=y^(a[w>>>24&63]|l[w>>>16&63]|u[w>>>8&63]|h[w&63]|o[C>>>24&63]|c[C>>>16&63]|d[C>>>8&63]|f[C&63]);y=b,b=x,x=y}b=b>>>1|b<<31,x=x>>>1|x<<31,y=(b>>>1^x)&1431655765,x^=y,b^=y<<1,y=(x>>>8^b)&16711935,b^=y,x^=y<<8,y=(x>>>2^b)&858993459,b^=y,x^=y<<2,y=(b>>>16^x)&65535,x^=y,b^=y<<16,y=(b>>>4^x)&252645135,x^=y,b^=y<<4,B[Q++]=b>>>24,B[Q++]=b>>>16&255,B[Q++]=b>>>8&255,B[Q++]=b&255,B[Q++]=x>>>24,B[Q++]=x>>>16&255,B[Q++]=x>>>8&255,B[Q++]=x&255}return t||(B=Iee(B)),B}function JE(r){let e=[0,4,536870912,536870916,65536,65540,536936448,536936452,512,516,536871424,536871428,66048,66052,536936960,536936964],t=[0,1,1048576,1048577,67108864,67108865,68157440,68157441,256,257,1048832,1048833,67109120,67109121,68157696,68157697],i=[0,8,2048,2056,16777216,16777224,16779264,16779272,0,8,2048,2056,16777216,16777224,16779264,16779272],n=[0,2097152,134217728,136314880,8192,2105344,134225920,136323072,131072,2228224,134348800,136445952,139264,2236416,134356992,136454144],s=[0,262144,16,262160,0,262144,16,262160,4096,266240,4112,266256,4096,266240,4112,266256],o=[0,1024,32,1056,0,1024,32,1056,33554432,33555456,33554464,33555488,33554432,33555456,33554464,33555488],a=[0,268435456,524288,268959744,2,268435458,524290,268959746,0,268435456,524288,268959744,2,268435458,524290,268959746],c=[0,65536,2048,67584,536870912,536936448,536872960,536938496,131072,196608,133120,198656,537001984,537067520,537004032,537069568],l=[0,262144,0,262144,2,262146,2,262146,33554432,33816576,33554432,33816576,33554434,33816578,33554434,33816578],d=[0,268435456,8,268435464,0,268435456,8,268435464,1024,268436480,1032,268436488,1024,268436480,1032,268436488],u=[0,32,0,32,1048576,1048608,1048576,1048608,8192,8224,8192,8224,1056768,1056800,1056768,1056800],f=[0,16777216,512,16777728,2097152,18874368,2097664,18874880,67108864,83886080,67109376,83886592,69206016,85983232,69206528,85983744],h=[0,4096,134217728,134221824,524288,528384,134742016,134746112,16,4112,134217744,134221840,524304,528400,134742032,134746128],g=[0,4,256,260,0,4,256,260,1,5,257,261,1,5,257,261],p=r.length>8?3:1,I=new Array(32*p),y=[0,0,1,1,1,1,1,1,0,1,1,1,1,1,1,0],w,C,b=0,x=0,_;for(let R=0;R<p;R++){let U=r[b++]<<24|r[b++]<<16|r[b++]<<8|r[b++],T=r[b++]<<24|r[b++]<<16|r[b++]<<8|r[b++];_=(U>>>4^T)&252645135,T^=_,U^=_<<4,_=(T>>>-16^U)&65535,U^=_,T^=_<<-16,_=(U>>>2^T)&858993459,T^=_,U^=_<<2,_=(T>>>-16^U)&65535,U^=_,T^=_<<-16,_=(U>>>1^T)&1431655765,T^=_,U^=_<<1,_=(T>>>8^U)&16711935,U^=_,T^=_<<8,_=(U>>>1^T)&1431655765,T^=_,U^=_<<1,_=U<<8|T>>>20&240,U=T<<24|T<<8&16711680|T>>>8&65280|T>>>24&240,T=_;for(let D=0;D<y.length;D++)y[D]?(U=U<<2|U>>>26,T=T<<2|T>>>26):(U=U<<1|U>>>27,T=T<<1|T>>>27),U&=-15,T&=-15,w=e[U>>>28]|t[U>>>24&15]|i[U>>>20&15]|n[U>>>16&15]|s[U>>>12&15]|o[U>>>8&15]|a[U>>>4&15],C=c[T>>>28]|l[T>>>24&15]|d[T>>>20&15]|u[T>>>16&15]|f[T>>>12&15]|h[T>>>8&15]|g[T>>>4&15],_=(C>>>16^w)&65535,I[x++]=w^_,I[x++]=C^_<<16}return I}function yee(r,e){let t=8-r.length%8,i;if(t<8)i=0;else{if(t===8)return r;throw new Error("des: invalid padding")}let n=new Uint8Array(r.length+t);for(let s=0;s<r.length;s++)n[s]=r[s];for(let s=0;s<t;s++)n[r.length+s]=i;return n}function Iee(r,e){let t=null,i;if(i=0,!t){for(t=1;r[r.length-t]===i;)t++;t--}return r.subarray(0,r.length-t)}function jf(r){this.key=[];for(let e=0;e<3;e++)this.key.push(new Uint8Array(r.subarray(e*8,e*8+8)));this.encrypt=function(e){return zE(JE(this.key[2]),zE(JE(this.key[1]),zE(JE(this.key[0]),e,!0,0,null,null),!1,0,null,null),!0)}}function wee(){this.BlockSize=8,this.KeySize=16,this.setKey=function(o){if(this.masking=new Array(16),this.rotate=new Array(16),this.reset(),o.length===this.KeySize)this.keySchedule(o);else throw new Error("CAST-128: keys must be 16 bytes");return!0},this.reset=function(){for(let o=0;o<16;o++)this.masking[o]=0,this.rotate[o]=0},this.getBlockSize=function(){return this.BlockSize},this.encrypt=function(o){let a=new Array(o.length);for(let c=0;c<o.length;c+=8){let l=o[c]<<24|o[c+1]<<16|o[c+2]<<8|o[c+3],d=o[c+4]<<24|o[c+5]<<16|o[c+6]<<8|o[c+7],u;u=d,d=l^t(d,this.masking[0],this.rotate[0]),l=u,u=d,d=l^i(d,this.masking[1],this.rotate[1]),l=u,u=d,d=l^n(d,this.masking[2],this.rotate[2]),l=u,u=d,d=l^t(d,this.masking[3],this.rotate[3]),l=u,u=d,d=l^i(d,this.masking[4],this.rotate[4]),l=u,u=d,d=l^n(d,this.masking[5],this.rotate[5]),l=u,u=d,d=l^t(d,this.masking[6],this.rotate[6]),l=u,u=d,d=l^i(d,this.masking[7],this.rotate[7]),l=u,u=d,d=l^n(d,this.masking[8],this.rotate[8]),l=u,u=d,d=l^t(d,this.masking[9],this.rotate[9]),l=u,u=d,d=l^i(d,this.masking[10],this.rotate[10]),l=u,u=d,d=l^n(d,this.masking[11],this.rotate[11]),l=u,u=d,d=l^t(d,this.masking[12],this.rotate[12]),l=u,u=d,d=l^i(d,this.masking[13],this.rotate[13]),l=u,u=d,d=l^n(d,this.masking[14],this.rotate[14]),l=u,u=d,d=l^t(d,this.masking[15],this.rotate[15]),l=u,a[c]=d>>>24&255,a[c+1]=d>>>16&255,a[c+2]=d>>>8&255,a[c+3]=d&255,a[c+4]=l>>>24&255,a[c+5]=l>>>16&255,a[c+6]=l>>>8&255,a[c+7]=l&255}return a},this.decrypt=function(o){let a=new Array(o.length);for(let c=0;c<o.length;c+=8){let l=o[c]<<24|o[c+1]<<16|o[c+2]<<8|o[c+3],d=o[c+4]<<24|o[c+5]<<16|o[c+6]<<8|o[c+7],u;u=d,d=l^t(d,this.masking[15],this.rotate[15]),l=u,u=d,d=l^n(d,this.masking[14],this.rotate[14]),l=u,u=d,d=l^i(d,this.masking[13],this.rotate[13]),l=u,u=d,d=l^t(d,this.masking[12],this.rotate[12]),l=u,u=d,d=l^n(d,this.masking[11],this.rotate[11]),l=u,u=d,d=l^i(d,this.masking[10],this.rotate[10]),l=u,u=d,d=l^t(d,this.masking[9],this.rotate[9]),l=u,u=d,d=l^n(d,this.masking[8],this.rotate[8]),l=u,u=d,d=l^i(d,this.masking[7],this.rotate[7]),l=u,u=d,d=l^t(d,this.masking[6],this.rotate[6]),l=u,u=d,d=l^n(d,this.masking[5],this.rotate[5]),l=u,u=d,d=l^i(d,this.masking[4],this.rotate[4]),l=u,u=d,d=l^t(d,this.masking[3],this.rotate[3]),l=u,u=d,d=l^n(d,this.masking[2],this.rotate[2]),l=u,u=d,d=l^i(d,this.masking[1],this.rotate[1]),l=u,u=d,d=l^t(d,this.masking[0],this.rotate[0]),l=u,a[c]=d>>>24&255,a[c+1]=d>>>16&255,a[c+2]=d>>>8&255,a[c+3]=d&255,a[c+4]=l>>>24&255,a[c+5]=l>>16&255,a[c+6]=l>>8&255,a[c+7]=l&255}return a};let r=new Array(4);r[0]=new Array(4),r[0][0]=[4,0,13,15,12,14,8],r[0][1]=[5,2,16,18,17,19,10],r[0][2]=[6,3,23,22,21,20,9],r[0][3]=[7,1,26,25,27,24,11],r[1]=new Array(4),r[1][0]=[0,6,21,23,20,22,16],r[1][1]=[1,4,0,2,1,3,18],r[1][2]=[2,5,7,6,5,4,17],r[1][3]=[3,7,10,9,11,8,19],r[2]=new Array(4),r[2][0]=[4,0,13,15,12,14,8],r[2][1]=[5,2,16,18,17,19,10],r[2][2]=[6,3,23,22,21,20,9],r[2][3]=[7,1,26,25,27,24,11],r[3]=new Array(4),r[3][0]=[0,6,21,23,20,22,16],r[3][1]=[1,4,0,2,1,3,18],r[3][2]=[2,5,7,6,5,4,17],r[3][3]=[3,7,10,9,11,8,19];let e=new Array(4);e[0]=new Array(4),e[0][0]=[24,25,23,22,18],e[0][1]=[26,27,21,20,22],e[0][2]=[28,29,19,18,25],e[0][3]=[30,31,17,16,28],e[1]=new Array(4),e[1][0]=[3,2,12,13,8],e[1][1]=[1,0,14,15,13],e[1][2]=[7,6,8,9,3],e[1][3]=[5,4,10,11,7],e[2]=new Array(4),e[2][0]=[19,18,28,29,25],e[2][1]=[17,16,30,31,28],e[2][2]=[23,22,24,25,18],e[2][3]=[21,20,26,27,22],e[3]=new Array(4),e[3][0]=[8,9,7,6,3],e[3][1]=[10,11,5,4,7],e[3][2]=[12,13,3,2,8],e[3][3]=[14,15,1,0,13],this.keySchedule=function(o){let a=new Array(8),c=new Array(32),l;for(let h=0;h<4;h++)l=h*4,a[h]=o[l]<<24|o[l+1]<<16|o[l+2]<<8|o[l+3];let d=[6,7,4,5],u=0,f;for(let h=0;h<2;h++)for(let g=0;g<4;g++){for(l=0;l<4;l++){let p=r[g][l];f=a[p[1]],f^=s[4][a[p[2]>>>2]>>>24-8*(p[2]&3)&255],f^=s[5][a[p[3]>>>2]>>>24-8*(p[3]&3)&255],f^=s[6][a[p[4]>>>2]>>>24-8*(p[4]&3)&255],f^=s[7][a[p[5]>>>2]>>>24-8*(p[5]&3)&255],f^=s[d[l]][a[p[6]>>>2]>>>24-8*(p[6]&3)&255],a[p[0]]=f}for(l=0;l<4;l++){let p=e[g][l];f=s[4][a[p[0]>>>2]>>>24-8*(p[0]&3)&255],f^=s[5][a[p[1]>>>2]>>>24-8*(p[1]&3)&255],f^=s[6][a[p[2]>>>2]>>>24-8*(p[2]&3)&255],f^=s[7][a[p[3]>>>2]>>>24-8*(p[3]&3)&255],f^=s[4+l][a[p[4]>>>2]>>>24-8*(p[4]&3)&255],c[u]=f,u++}}for(let h=0;h<16;h++)this.masking[h]=c[h],this.rotate[h]=c[16+h]&31};function t(o,a,c){let l=a+o,d=l<<c|l>>>32-c;return(s[0][d>>>24]^s[1][d>>>16&255])-s[2][d>>>8&255]+s[3][d&255]}function i(o,a,c){let l=a^o,d=l<<c|l>>>32-c;return s[0][d>>>24]-s[1][d>>>16&255]+s[2][d>>>8&255]^s[3][d&255]}function n(o,a,c){let l=a-o,d=l<<c|l>>>32-c;return(s[0][d>>>24]+s[1][d>>>16&255]^s[2][d>>>8&255])-s[3][d&255]}let s=new Array(8);s[0]=[821772500,2678128395,1810681135,1059425402,505495343,2617265619,1610868032,3483355465,3218386727,2294005173,3791863952,2563806837,1852023008,365126098,3269944861,584384398,677919599,3229601881,4280515016,2002735330,1136869587,3744433750,2289869850,2731719981,2714362070,879511577,1639411079,575934255,717107937,2857637483,576097850,2731753936,1725645e3,2810460463,5111599,767152862,2543075244,1251459544,1383482551,3052681127,3089939183,3612463449,1878520045,1510570527,2189125840,2431448366,582008916,3163445557,1265446783,1354458274,3529918736,3202711853,3073581712,3912963487,3029263377,1275016285,4249207360,2905708351,3304509486,1442611557,3585198765,2712415662,2731849581,3248163920,2283946226,208555832,2766454743,1331405426,1447828783,3315356441,3108627284,2957404670,2981538698,3339933917,1669711173,286233437,1465092821,1782121619,3862771680,710211251,980974943,1651941557,430374111,2051154026,704238805,4128970897,3144820574,2857402727,948965521,3333752299,2227686284,718756367,2269778983,2731643755,718440111,2857816721,3616097120,1113355533,2478022182,410092745,1811985197,1944238868,2696854588,1415722873,1682284203,1060277122,1998114690,1503841958,82706478,2315155686,1068173648,845149890,2167947013,1768146376,1993038550,3566826697,3390574031,940016341,3355073782,2328040721,904371731,1205506512,4094660742,2816623006,825647681,85914773,2857843460,1249926541,1417871568,3287612,3211054559,3126306446,1975924523,1353700161,2814456437,2438597621,1800716203,722146342,2873936343,1151126914,4160483941,2877670899,458611604,2866078500,3483680063,770352098,2652916994,3367839148,3940505011,3585973912,3809620402,718646636,2504206814,2914927912,3631288169,2857486607,2860018678,575749918,2857478043,718488780,2069512688,3548183469,453416197,1106044049,3032691430,52586708,3378514636,3459808877,3211506028,1785789304,218356169,3571399134,3759170522,1194783844,1523787992,3007827094,1975193539,2555452411,1341901877,3045838698,3776907964,3217423946,2802510864,2889438986,1057244207,1636348243,3761863214,1462225785,2632663439,481089165,718503062,24497053,3332243209,3344655856,3655024856,3960371065,1195698900,2971415156,3710176158,2115785917,4027663609,3525578417,2524296189,2745972565,3564906415,1372086093,1452307862,2780501478,1476592880,3389271281,18495466,2378148571,901398090,891748256,3279637769,3157290713,2560960102,1447622437,4284372637,216884176,2086908623,1879786977,3588903153,2242455666,2938092967,3559082096,2810645491,758861177,1121993112,215018983,642190776,4169236812,1196255959,2081185372,3508738393,941322904,4124243163,2877523539,1848581667,2205260958,3180453958,2589345134,3694731276,550028657,2519456284,3789985535,2973870856,2093648313,443148163,46942275,2734146937,1117713533,1115362972,1523183689,3717140224,1551984063],s[1]=[522195092,4010518363,1776537470,960447360,4267822970,4005896314,1435016340,1929119313,2913464185,1310552629,3579470798,3724818106,2579771631,1594623892,417127293,2715217907,2696228731,1508390405,3994398868,3925858569,3695444102,4019471449,3129199795,3770928635,3520741761,990456497,4187484609,2783367035,21106139,3840405339,631373633,3783325702,532942976,396095098,3548038825,4267192484,2564721535,2011709262,2039648873,620404603,3776170075,2898526339,3612357925,4159332703,1645490516,223693667,1567101217,3362177881,1029951347,3470931136,3570957959,1550265121,119497089,972513919,907948164,3840628539,1613718692,3594177948,465323573,2659255085,654439692,2575596212,2699288441,3127702412,277098644,624404830,4100943870,2717858591,546110314,2403699828,3655377447,1321679412,4236791657,1045293279,4010672264,895050893,2319792268,494945126,1914543101,2777056443,3894764339,2219737618,311263384,4275257268,3458730721,669096869,3584475730,3835122877,3319158237,3949359204,2005142349,2713102337,2228954793,3769984788,569394103,3855636576,1425027204,108000370,2736431443,3671869269,3043122623,1750473702,2211081108,762237499,3972989403,2798899386,3061857628,2943854345,867476300,964413654,1591880597,1594774276,2179821409,552026980,3026064248,3726140315,2283577634,3110545105,2152310760,582474363,1582640421,1383256631,2043843868,3322775884,1217180674,463797851,2763038571,480777679,2718707717,2289164131,3118346187,214354409,200212307,3810608407,3025414197,2674075964,3997296425,1847405948,1342460550,510035443,4080271814,815934613,833030224,1620250387,1945732119,2703661145,3966000196,1388869545,3456054182,2687178561,2092620194,562037615,1356438536,3409922145,3261847397,1688467115,2150901366,631725691,3840332284,549916902,3455104640,394546491,837744717,2114462948,751520235,2221554606,2415360136,3999097078,2063029875,803036379,2702586305,821456707,3019566164,360699898,4018502092,3511869016,3677355358,2402471449,812317050,49299192,2570164949,3259169295,2816732080,3331213574,3101303564,2156015656,3705598920,3546263921,143268808,3200304480,1638124008,3165189453,3341807610,578956953,2193977524,3638120073,2333881532,807278310,658237817,2969561766,1641658566,11683945,3086995007,148645947,1138423386,4158756760,1981396783,2401016740,3699783584,380097457,2680394679,2803068651,3334260286,441530178,4016580796,1375954390,761952171,891809099,2183123478,157052462,3683840763,1592404427,341349109,2438483839,1417898363,644327628,2233032776,2353769706,2201510100,220455161,1815641738,182899273,2995019788,3627381533,3702638151,2890684138,1052606899,588164016,1681439879,4038439418,2405343923,4229449282,167996282,1336969661,1688053129,2739224926,1543734051,1046297529,1138201970,2121126012,115334942,1819067631,1902159161,1941945968,2206692869,1159982321],s[2]=[2381300288,637164959,3952098751,3893414151,1197506559,916448331,2350892612,2932787856,3199334847,4009478890,3905886544,1373570990,2450425862,4037870920,3778841987,2456817877,286293407,124026297,3001279700,1028597854,3115296800,4208886496,2691114635,2188540206,1430237888,1218109995,3572471700,308166588,570424558,2187009021,2455094765,307733056,1310360322,3135275007,1384269543,2388071438,863238079,2359263624,2801553128,3380786597,2831162807,1470087780,1728663345,4072488799,1090516929,532123132,2389430977,1132193179,2578464191,3051079243,1670234342,1434557849,2711078940,1241591150,3314043432,3435360113,3091448339,1812415473,2198440252,267246943,796911696,3619716990,38830015,1526438404,2806502096,374413614,2943401790,1489179520,1603809326,1920779204,168801282,260042626,2358705581,1563175598,2397674057,1356499128,2217211040,514611088,2037363785,2186468373,4022173083,2792511869,2913485016,1173701892,4200428547,3896427269,1334932762,2455136706,602925377,2835607854,1613172210,41346230,2499634548,2457437618,2188827595,41386358,4172255629,1313404830,2405527007,3801973774,2217704835,873260488,2528884354,2478092616,4012915883,2555359016,2006953883,2463913485,575479328,2218240648,2099895446,660001756,2341502190,3038761536,3888151779,3848713377,3286851934,1022894237,1620365795,3449594689,1551255054,15374395,3570825345,4249311020,4151111129,3181912732,310226346,1133119310,530038928,136043402,2476768958,3107506709,2544909567,1036173560,2367337196,1681395281,1758231547,3641649032,306774401,1575354324,3716085866,1990386196,3114533736,2455606671,1262092282,3124342505,2768229131,4210529083,1833535011,423410938,660763973,2187129978,1639812e3,3508421329,3467445492,310289298,272797111,2188552562,2456863912,310240523,677093832,1013118031,901835429,3892695601,1116285435,3036471170,1337354835,243122523,520626091,277223598,4244441197,4194248841,1766575121,594173102,316590669,742362309,3536858622,4176435350,3838792410,2501204839,1229605004,3115755532,1552908988,2312334149,979407927,3959474601,1148277331,176638793,3614686272,2083809052,40992502,1340822838,2731552767,3535757508,3560899520,1354035053,122129617,7215240,2732932949,3118912700,2718203926,2539075635,3609230695,3725561661,1928887091,2882293555,1988674909,2063640240,2491088897,1459647954,4189817080,2302804382,1113892351,2237858528,1927010603,4002880361,1856122846,1594404395,2944033133,3855189863,3474975698,1643104450,4054590833,3431086530,1730235576,2984608721,3084664418,2131803598,4178205752,267404349,1617849798,1616132681,1462223176,736725533,2327058232,551665188,2945899023,1749386277,2575514597,1611482493,674206544,2201269090,3642560800,728599968,1680547377,2620414464,1388111496,453204106,4156223445,1094905244,2754698257,2201108165,3757000246,2704524545,3922940700,3996465027],s[3]=[2645754912,532081118,2814278639,3530793624,1246723035,1689095255,2236679235,4194438865,2116582143,3859789411,157234593,2045505824,4245003587,1687664561,4083425123,605965023,672431967,1336064205,3376611392,214114848,4258466608,3232053071,489488601,605322005,3998028058,264917351,1912574028,756637694,436560991,202637054,135989450,85393697,2152923392,3896401662,2895836408,2145855233,3535335007,115294817,3147733898,1922296357,3464822751,4117858305,1037454084,2725193275,2127856640,1417604070,1148013728,1827919605,642362335,2929772533,909348033,1346338451,3547799649,297154785,1917849091,4161712827,2883604526,3968694238,1469521537,3780077382,3375584256,1763717519,136166297,4290970789,1295325189,2134727907,2798151366,1566297257,3672928234,2677174161,2672173615,965822077,2780786062,289653839,1133871874,3491843819,35685304,1068898316,418943774,672553190,642281022,2346158704,1954014401,3037126780,4079815205,2030668546,3840588673,672283427,1776201016,359975446,3750173538,555499703,2769985273,1324923,69110472,152125443,3176785106,3822147285,1340634837,798073664,1434183902,15393959,216384236,1303690150,3881221631,3711134124,3960975413,106373927,2578434224,1455997841,1801814300,1578393881,1854262133,3188178946,3258078583,2302670060,1539295533,3505142565,3078625975,2372746020,549938159,3278284284,2620926080,181285381,2865321098,3970029511,68876850,488006234,1728155692,2608167508,836007927,2435231793,919367643,3339422534,3655756360,1457871481,40520939,1380155135,797931188,234455205,2255801827,3990488299,397000196,739833055,3077865373,2871719860,4022553888,772369276,390177364,3853951029,557662966,740064294,1640166671,1699928825,3535942136,622006121,3625353122,68743880,1742502,219489963,1664179233,1577743084,1236991741,410585305,2366487942,823226535,1050371084,3426619607,3586839478,212779912,4147118561,1819446015,1911218849,530248558,3486241071,3252585495,2886188651,3410272728,2342195030,20547779,2982490058,3032363469,3631753222,312714466,1870521650,1493008054,3491686656,615382978,4103671749,2534517445,1932181,2196105170,278426614,6369430,3274544417,2913018367,697336853,2143000447,2946413531,701099306,1558357093,2805003052,3500818408,2321334417,3567135975,216290473,3591032198,23009561,1996984579,3735042806,2024298078,3739440863,569400510,2339758983,3016033873,3097871343,3639523026,3844324983,3256173865,795471839,2951117563,4101031090,4091603803,3603732598,971261452,534414648,428311343,3389027175,2844869880,694888862,1227866773,2456207019,3043454569,2614353370,3749578031,3676663836,459166190,4132644070,1794958188,51825668,2252611902,3084671440,2036672799,3436641603,1099053433,2469121526,3059204941,1323291266,2061838604,1018778475,2233344254,2553501054,334295216,3556750194,1065731521,183467730],s[4]=[2127105028,745436345,2601412319,2788391185,3093987327,500390133,1155374404,389092991,150729210,3891597772,3523549952,1935325696,716645080,946045387,2901812282,1774124410,3869435775,4039581901,3293136918,3438657920,948246080,363898952,3867875531,1286266623,1598556673,68334250,630723836,1104211938,1312863373,613332731,2377784574,1101634306,441780740,3129959883,1917973735,2510624549,3238456535,2544211978,3308894634,1299840618,4076074851,1756332096,3977027158,297047435,3790297736,2265573040,3621810518,1311375015,1667687725,47300608,3299642885,2474112369,201668394,1468347890,576830978,3594690761,3742605952,1958042578,1747032512,3558991340,1408974056,3366841779,682131401,1033214337,1545599232,4265137049,206503691,103024618,2855227313,1337551222,2428998917,2963842932,4015366655,3852247746,2796956967,3865723491,3747938335,247794022,3755824572,702416469,2434691994,397379957,851939612,2314769512,218229120,1380406772,62274761,214451378,3170103466,2276210409,3845813286,28563499,446592073,1693330814,3453727194,29968656,3093872512,220656637,2470637031,77972100,1667708854,1358280214,4064765667,2395616961,325977563,4277240721,4220025399,3605526484,3355147721,811859167,3069544926,3962126810,652502677,3075892249,4132761541,3498924215,1217549313,3250244479,3858715919,3053989961,1538642152,2279026266,2875879137,574252750,3324769229,2651358713,1758150215,141295887,2719868960,3515574750,4093007735,4194485238,1082055363,3417560400,395511885,2966884026,179534037,3646028556,3738688086,1092926436,2496269142,257381841,3772900718,1636087230,1477059743,2499234752,3811018894,2675660129,3285975680,90732309,1684827095,1150307763,1723134115,3237045386,1769919919,1240018934,815675215,750138730,2239792499,1234303040,1995484674,138143821,675421338,1145607174,1936608440,3238603024,2345230278,2105974004,323969391,779555213,3004902369,2861610098,1017501463,2098600890,2628620304,2940611490,2682542546,1171473753,3656571411,3687208071,4091869518,393037935,159126506,1662887367,1147106178,391545844,3452332695,1891500680,3016609650,1851642611,546529401,1167818917,3194020571,2848076033,3953471836,575554290,475796850,4134673196,450035699,2351251534,844027695,1080539133,86184846,1554234488,3692025454,1972511363,2018339607,1491841390,1141460869,1061690759,4244549243,2008416118,2351104703,2868147542,1598468138,722020353,1027143159,212344630,1387219594,1725294528,3745187956,2500153616,458938280,4129215917,1828119673,544571780,3503225445,2297937496,1241802790,267843827,2694610800,1397140384,1558801448,3782667683,1806446719,929573330,2234912681,400817706,616011623,4121520928,3603768725,1761550015,1968522284,4053731006,4192232858,4005120285,872482584,3140537016,3894607381,2287405443,1963876937,3663887957,1584857e3,2975024454,1833426440,4025083860],s[5]=[4143615901,749497569,1285769319,3795025788,2514159847,23610292,3974978748,844452780,3214870880,3751928557,2213566365,1676510905,448177848,3730751033,4086298418,2307502392,871450977,3222878141,4110862042,3831651966,2735270553,1310974780,2043402188,1218528103,2736035353,4274605013,2702448458,3936360550,2693061421,162023535,2827510090,687910808,23484817,3784910947,3371371616,779677500,3503626546,3473927188,4157212626,3500679282,4248902014,2466621104,3899384794,1958663117,925738300,1283408968,3669349440,1840910019,137959847,2679828185,1239142320,1315376211,1547541505,1690155329,739140458,3128809933,3933172616,3876308834,905091803,1548541325,4040461708,3095483362,144808038,451078856,676114313,2861728291,2469707347,993665471,373509091,2599041286,4025009006,4170239449,2149739950,3275793571,3749616649,2794760199,1534877388,572371878,2590613551,1753320020,3467782511,1405125690,4270405205,633333386,3026356924,3475123903,632057672,2846462855,1404951397,3882875879,3915906424,195638627,2385783745,3902872553,1233155085,3355999740,2380578713,2702246304,2144565621,3663341248,3894384975,2502479241,4248018925,3094885567,1594115437,572884632,3385116731,767645374,1331858858,1475698373,3793881790,3532746431,1321687957,619889600,1121017241,3440213920,2070816767,2833025776,1933951238,4095615791,890643334,3874130214,859025556,360630002,925594799,1764062180,3920222280,4078305929,979562269,2810700344,4087740022,1949714515,546639971,1165388173,3069891591,1495988560,922170659,1291546247,2107952832,1813327274,3406010024,3306028637,4241950635,153207855,2313154747,1608695416,1150242611,1967526857,721801357,1220138373,3691287617,3356069787,2112743302,3281662835,1111556101,1778980689,250857638,2298507990,673216130,2846488510,3207751581,3562756981,3008625920,3417367384,2198807050,529510932,3547516680,3426503187,2364944742,102533054,2294910856,1617093527,1204784762,3066581635,1019391227,1069574518,1317995090,1691889997,3661132003,510022745,3238594800,1362108837,1817929911,2184153760,805817662,1953603311,3699844737,120799444,2118332377,207536705,2282301548,4120041617,145305846,2508124933,3086745533,3261524335,1877257368,2977164480,3160454186,2503252186,4221677074,759945014,254147243,2767453419,3801518371,629083197,2471014217,907280572,3900796746,940896768,2751021123,2625262786,3161476951,3661752313,3260732218,1425318020,2977912069,1496677566,3988592072,2140652971,3126511541,3069632175,977771578,1392695845,1698528874,1411812681,1369733098,1343739227,3620887944,1142123638,67414216,3102056737,3088749194,1626167401,2546293654,3941374235,697522451,33404913,143560186,2595682037,994885535,1247667115,3859094837,2699155541,3547024625,4114935275,2968073508,3199963069,2732024527,1237921620,951448369,1898488916,1211705605,2790989240,2233243581,3598044975],s[6]=[2246066201,858518887,1714274303,3485882003,713916271,2879113490,3730835617,539548191,36158695,1298409750,419087104,1358007170,749914897,2989680476,1261868530,2995193822,2690628854,3443622377,3780124940,3796824509,2976433025,4259637129,1551479e3,512490819,1296650241,951993153,2436689437,2460458047,144139966,3136204276,310820559,3068840729,643875328,1969602020,1680088954,2185813161,3283332454,672358534,198762408,896343282,276269502,3014846926,84060815,197145886,376173866,3943890818,3813173521,3545068822,1316698879,1598252827,2633424951,1233235075,859989710,2358460855,3503838400,3409603720,1203513385,1193654839,2792018475,2060853022,207403770,1144516871,3068631394,1121114134,177607304,3785736302,326409831,1929119770,2983279095,4183308101,3474579288,3200513878,3228482096,119610148,1170376745,3378393471,3163473169,951863017,3337026068,3135789130,2907618374,1183797387,2015970143,4045674555,2182986399,2952138740,3928772205,384012900,2454997643,10178499,2879818989,2596892536,111523738,2995089006,451689641,3196290696,235406569,1441906262,3890558523,3013735005,4158569349,1644036924,376726067,1006849064,3664579700,2041234796,1021632941,1374734338,2566452058,371631263,4007144233,490221539,206551450,3140638584,1053219195,1853335209,3412429660,3562156231,735133835,1623211703,3104214392,2738312436,4096837757,3366392578,3110964274,3956598718,3196820781,2038037254,3877786376,2339753847,300912036,3766732888,2372630639,1516443558,4200396704,1574567987,4069441456,4122592016,2699739776,146372218,2748961456,2043888151,35287437,2596680554,655490400,1132482787,110692520,1031794116,2188192751,1324057718,1217253157,919197030,686247489,3261139658,1028237775,3135486431,3059715558,2460921700,986174950,2661811465,4062904701,2752986992,3709736643,367056889,1353824391,731860949,1650113154,1778481506,784341916,357075625,3608602432,1074092588,2480052770,3811426202,92751289,877911070,3600361838,1231880047,480201094,3756190983,3094495953,434011822,87971354,363687820,1717726236,1901380172,3926403882,2481662265,400339184,1490350766,2661455099,1389319756,2558787174,784598401,1983468483,30828846,3550527752,2716276238,3841122214,1765724805,1955612312,1277890269,1333098070,1564029816,2704417615,1026694237,3287671188,1260819201,3349086767,1016692350,1582273796,1073413053,1995943182,694588404,1025494639,3323872702,3551898420,4146854327,453260480,1316140391,1435673405,3038941953,3486689407,1622062951,403978347,817677117,950059133,4246079218,3278066075,1486738320,1417279718,481875527,2549965225,3933690356,760697757,1452955855,3897451437,1177426808,1702951038,4085348628,2447005172,1084371187,3516436277,3068336338,1073369276,1027665953,3284188590,1230553676,1368340146,2226246512,267243139,2274220762,4070734279,2497715176,2423353163,2504755875],s[7]=[3793104909,3151888380,2817252029,895778965,2005530807,3871412763,237245952,86829237,296341424,3851759377,3974600970,2475086196,709006108,1994621201,2972577594,937287164,3734691505,168608556,3189338153,2225080640,3139713551,3033610191,3025041904,77524477,185966941,1208824168,2344345178,1721625922,3354191921,1066374631,1927223579,1971335949,2483503697,1551748602,2881383779,2856329572,3003241482,48746954,1398218158,2050065058,313056748,4255789917,393167848,1912293076,940740642,3465845460,3091687853,2522601570,2197016661,1727764327,364383054,492521376,1291706479,3264136376,1474851438,1685747964,2575719748,1619776915,1814040067,970743798,1561002147,2925768690,2123093554,1880132620,3151188041,697884420,2550985770,2607674513,2659114323,110200136,1489731079,997519150,1378877361,3527870668,478029773,2766872923,1022481122,431258168,1112503832,897933369,2635587303,669726182,3383752315,918222264,163866573,3246985393,3776823163,114105080,1903216136,761148244,3571337562,1690750982,3166750252,1037045171,1888456500,2010454850,642736655,616092351,365016990,1185228132,4174898510,1043824992,2023083429,2241598885,3863320456,3279669087,3674716684,108438443,2132974366,830746235,606445527,4173263986,2204105912,1844756978,2532684181,4245352700,2969441100,3796921661,1335562986,4061524517,2720232303,2679424040,634407289,885462008,3294724487,3933892248,2094100220,339117932,4048830727,3202280980,1458155303,2689246273,1022871705,2464987878,3714515309,353796843,2822958815,4256850100,4052777845,551748367,618185374,3778635579,4020649912,1904685140,3069366075,2670879810,3407193292,2954511620,4058283405,2219449317,3135758300,1120655984,3447565834,1474845562,3577699062,550456716,3466908712,2043752612,881257467,869518812,2005220179,938474677,3305539448,3850417126,1315485940,3318264702,226533026,965733244,321539988,1136104718,804158748,573969341,3708209826,937399083,3290727049,2901666755,1461057207,4013193437,4066861423,3242773476,2421326174,1581322155,3028952165,786071460,3900391652,3918438532,1485433313,4023619836,3708277595,3678951060,953673138,1467089153,1930354364,1533292819,2492563023,1346121658,1685000834,1965281866,3765933717,4190206607,2052792609,3515332758,690371149,3125873887,2180283551,2903598061,3933952357,436236910,289419410,14314871,1242357089,2904507907,1616633776,2666382180,585885352,3471299210,2699507360,1432659641,277164553,3354103607,770115018,2303809295,3741942315,3177781868,2853364978,2269453327,3774259834,987383833,1290892879,225909803,1741533526,890078084,1496906255,1111072499,916028167,243534141,1252605537,2204162171,531204876,290011180,3916834213,102027703,237315147,209093447,1486785922,220223953,2758195998,4175039106,82940208,3127791296,2569425252,518464269,1353887104,3941492737,2377294467,3935040926]}function $f(r){this.cast5=new wee,this.cast5.setKey(r),this.encrypt=function(e){return this.cast5.encrypt(e)}}function Wn(r,e){return(r<<e|r>>>32-e)&en}function $s(r,e){return r[e]|r[e+1]<<8|r[e+2]<<16|r[e+3]<<24}function ua(r,e,t){r.splice(e,4,t&255,t>>>8&255,t>>>16&255,t>>>24&255)}function ze(r,e){return r>>>e*8&255}function xee(){let r=null,e=null,t=-1,i=[],n=[[],[],[],[]];function s(g){r=g;let p,I,y,w,C,b=[],x=[],_=[],R,U=[],T,D,B,Q=[[8,1,7,13,6,15,3,2,0,11,5,9,14,12,10,4],[2,8,11,13,15,7,6,14,3,1,9,4,0,10,12,5]],v=[[14,12,11,8,1,2,3,5,15,4,10,6,7,0,9,13],[1,14,2,11,4,12,3,7,6,13,10,5,15,9,0,8]],E=[[11,10,5,14,6,13,9,0,12,8,15,3,2,4,7,1],[4,12,7,5,1,6,9,10,0,14,13,8,2,11,3,15]],P=[[13,7,15,4,1,2,6,14,9,11,3,0,8,5,12,10],[11,9,5,1,12,3,13,14,6,4,7,15,2,0,8,10]],N=[0,8,1,9,2,10,3,11,4,12,5,13,6,14,7,15],J=[0,9,2,11,4,13,6,15,8,1,10,3,12,5,14,7],z=[[],[]],L=[[],[],[],[]];function G(ee){return ee^ee>>2^[0,90,180,238][ee&3]}function K(ee){return ee^ee>>1^ee>>2^[0,238,180,90][ee&3]}function j(ee,Z){let me,le,Ae;for(me=0;me<8;me++)le=Z>>>24,Z=Z<<8&en|ee>>>24,ee=ee<<8&en,Ae=le<<1,le&128&&(Ae^=333),Z^=le^Ae<<16,Ae^=le>>>1,le&1&&(Ae^=166),Z^=Ae<<24|Ae<<8;return Z}function te(ee,Z){let me=Z>>4,le=Z&15,Ae=Q[ee][me^le],ve=v[ee][N[le]^J[me]];return P[ee][N[ve]^J[Ae]]<<4|E[ee][Ae^ve]}function re(ee,Z){let me=ze(ee,0),le=ze(ee,1),Ae=ze(ee,2),ve=ze(ee,3);switch(R){case 4:me=z[1][me]^ze(Z[3],0),le=z[0][le]^ze(Z[3],1),Ae=z[0][Ae]^ze(Z[3],2),ve=z[1][ve]^ze(Z[3],3);case 3:me=z[1][me]^ze(Z[2],0),le=z[1][le]^ze(Z[2],1),Ae=z[0][Ae]^ze(Z[2],2),ve=z[0][ve]^ze(Z[2],3);case 2:me=z[0][z[0][me]^ze(Z[1],0)]^ze(Z[0],0),le=z[0][z[1][le]^ze(Z[1],1)]^ze(Z[0],1),Ae=z[1][z[0][Ae]^ze(Z[1],2)]^ze(Z[0],2),ve=z[1][z[1][ve]^ze(Z[1],3)]^ze(Z[0],3)}return L[0][me]^L[1][le]^L[2][Ae]^L[3][ve]}for(r=r.slice(0,32),p=r.length;p!==16&&p!==24&&p!==32;)r[p++]=0;for(p=0;p<r.length;p+=4)_[p>>2]=$s(r,p);for(p=0;p<256;p++)z[0][p]=te(0,p),z[1][p]=te(1,p);for(p=0;p<256;p++)T=z[1][p],D=G(T),B=K(T),L[0][p]=T+(D<<8)+(B<<16)+(B<<24),L[2][p]=D+(B<<8)+(T<<16)+(B<<24),T=z[0][p],D=G(T),B=K(T),L[1][p]=B+(B<<8)+(D<<16)+(T<<24),L[3][p]=D+(T<<8)+(B<<16)+(D<<24);for(R=_.length/2,p=0;p<R;p++)I=_[p+p],b[p]=I,y=_[p+p+1],x[p]=y,U[R-p-1]=j(I,y);for(p=0;p<40;p+=2)I=16843009*p,y=I+16843009,I=re(I,b),y=Wn(re(y,x),8),i[p]=I+y&en,i[p+1]=Wn(I+2*y,9);for(p=0;p<256;p++)switch(I=y=w=C=p,R){case 4:I=z[1][I]^ze(U[3],0),y=z[0][y]^ze(U[3],1),w=z[0][w]^ze(U[3],2),C=z[1][C]^ze(U[3],3);case 3:I=z[1][I]^ze(U[2],0),y=z[1][y]^ze(U[2],1),w=z[0][w]^ze(U[2],2),C=z[0][C]^ze(U[2],3);case 2:n[0][p]=L[0][z[0][z[0][I]^ze(U[1],0)]^ze(U[0],0)],n[1][p]=L[1][z[0][z[1][y]^ze(U[1],1)]^ze(U[0],1)],n[2][p]=L[2][z[1][z[0][w]^ze(U[1],2)]^ze(U[0],2)],n[3][p]=L[3][z[1][z[1][C]^ze(U[1],3)]^ze(U[0],3)]}}function o(g){return n[0][ze(g,0)]^n[1][ze(g,1)]^n[2][ze(g,2)]^n[3][ze(g,3)]}function a(g){return n[0][ze(g,3)]^n[1][ze(g,0)]^n[2][ze(g,1)]^n[3][ze(g,2)]}function c(g,p){let I=o(p[0]),y=a(p[1]);p[2]=Wn(p[2]^I+y+i[4*g+8]&en,31),p[3]=Wn(p[3],1)^I+2*y+i[4*g+9]&en,I=o(p[2]),y=a(p[3]),p[0]=Wn(p[0]^I+y+i[4*g+10]&en,31),p[1]=Wn(p[1],1)^I+2*y+i[4*g+11]&en}function l(g,p){let I=o(p[0]),y=a(p[1]);p[2]=Wn(p[2],1)^I+y+i[4*g+10]&en,p[3]=Wn(p[3]^I+2*y+i[4*g+11]&en,31),I=o(p[2]),y=a(p[3]),p[0]=Wn(p[0],1)^I+y+i[4*g+8]&en,p[1]=Wn(p[1]^I+2*y+i[4*g+9]&en,31)}function d(){i=[],n=[[],[],[],[]]}function u(g,p){e=g,t=p;let I=[$s(e,t)^i[0],$s(e,t+4)^i[1],$s(e,t+8)^i[2],$s(e,t+12)^i[3]];for(let y=0;y<8;y++)c(y,I);return ua(e,t,I[2]^i[4]),ua(e,t+4,I[3]^i[5]),ua(e,t+8,I[0]^i[6]),ua(e,t+12,I[1]^i[7]),t+=16,e}function f(g,p){e=g,t=p;let I=[$s(e,t)^i[4],$s(e,t+4)^i[5],$s(e,t+8)^i[6],$s(e,t+12)^i[7]];for(let y=7;y>=0;y--)l(y,I);ua(e,t,I[2]^i[0]),ua(e,t+4,I[3]^i[1]),ua(e,t+8,I[0]^i[2]),ua(e,t+12,I[1]^i[3]),t+=16}function h(){return e}return{name:"twofish",blocksize:128/8,open:s,close:d,encrypt:u,decrypt:f,finalize:h}}function Vf(r){this.tf=xee(),this.tf.open(Array.from(r),0),this.encrypt=function(e){return this.tf.encrypt(Array.from(e),0)}}function Qn(){}function Yf(r){this.bf=new Qn,this.bf.init(r),this.encrypt=function(e){return this.bf.encryptBlock(e)}}function sd(r,e,t,i){r[e]+=t[i],r[e+1]+=t[i+1]+(r[e]<t[i])}function z5(r,e){r[0]+=e,r[1]+=r[0]<e}function fa(r,e,t,i,n,s,o,a){sd(r,t,r,i),sd(r,t,e,o);let c=r[s]^r[t],l=r[s+1]^r[t+1];r[s]=l,r[s+1]=c,sd(r,n,r,s),c=r[i]^r[n],l=r[i+1]^r[n+1],r[i]=c>>>24^l<<8,r[i+1]=l>>>24^c<<8,sd(r,t,r,i),sd(r,t,e,a),c=r[s]^r[t],l=r[s+1]^r[t+1],r[s]=c>>>16^l<<16,r[s+1]=l>>>16^c<<16,sd(r,n,r,s),c=r[i]^r[n],l=r[i+1]^r[n+1],r[i]=l>>>31^c<<1,r[i+1]=c>>>31^l<<1}function J5(r,e){let t=new Uint32Array(32),i=new Uint32Array(r.b.buffer,r.b.byteOffset,32);for(let s=0;s<16;s++)t[s]=r.h[s],t[s+16]=fU[s];t[24]^=r.t0[0],t[25]^=r.t0[1];let n=e?4294967295:0;t[28]^=n,t[29]^=n;for(let s=0;s<12;s++){let o=s<<4;fa(t,i,0,8,16,24,Vr[o+0],Vr[o+1]),fa(t,i,2,10,18,26,Vr[o+2],Vr[o+3]),fa(t,i,4,12,20,28,Vr[o+4],Vr[o+5]),fa(t,i,6,14,22,30,Vr[o+6],Vr[o+7]),fa(t,i,0,10,20,30,Vr[o+8],Vr[o+9]),fa(t,i,2,12,22,24,Vr[o+10],Vr[o+11]),fa(t,i,4,14,16,26,Vr[o+12],Vr[o+13]),fa(t,i,6,8,18,28,Vr[o+14],Vr[o+15])}for(let s=0;s<16;s++)r.h[s]^=t[s]^t[s+16]}function Cy(r,e,t,i){if(r>UB)throw new Error(`outlen must be at most ${UB} (given: ${r})`);return new TB(r,e,t,i)}function yi(r,e,t){return r[t+0]=e,r[t+1]=e>>8,r[t+2]=e>>16,r[t+3]=e>>24,r}function bc(r,e,t){if(e>Number.MAX_SAFE_INTEGER)throw new Error("LE64: large numbers unsupported");let i=e;for(let n=t;n<t+7;n++)r[n]=i,i=(i-r[n])/256;return r}function jE(r,e,t){let i=new Uint8Array(64),n=new Uint8Array(4+e.length);if(yi(n,r,0),n.set(e,4),r<=64)return Cy(r).update(n).digest(t),t;let s=Math.ceil(r/32)-2;for(let a=0;a<s;a++)Cy(64).update(a===0?n:i).digest(i),t.set(i.subarray(0,32),a*32);let o=new Uint8Array(Cy(r-32*s).update(i).digest());return t.set(o,s*32),t}function j5(r,e,t,i){return r.fn.XOR(e.byteOffset,t.byteOffset,i.byteOffset),e}function Uee(r,e,t,i){return r.fn.G(e.byteOffset,t.byteOffset,i.byteOffset,r.refs.gZ.byteOffset),i}function Ree(r,e,t,i){return r.fn.G2(e.byteOffset,t.byteOffset,i.byteOffset,r.refs.gZ.byteOffset),i}function*Nee(r,e,t,i,n,s,o,a){r.refs.prngTmp.fill(0);let c=r.refs.prngTmp.subarray(0,48);bc(c,e,0),bc(c,t,8),bc(c,i,16),bc(c,n,24),bc(c,s,32),bc(c,g1,40);for(let l=1;l<=o;l++){bc(r.refs.prngTmp,l,c.length);let d=Ree(r,r.refs.ZERO1024,r.refs.prngTmp,r.refs.prngR);for(let u=l===1?a*8:0;u<d.length;u+=8)yield d.subarray(u,u+8)}return[]}function qee({type:r,version:e,tagLength:t,password:i,salt:n,ad:s,secret:o,parallelism:a,memorySize:c,passes:l}){let d=(u,f,h,g)=>{if(f<h||f>g)throw new Error(`${u} size should be between ${h} and ${g} bytes`)};if(r!==g1||e!==AU)throw new Error("Unsupported type or version");return d("password",i,Dee,See),d("salt",n,kee,vee),d("tag",t,bee,Bee),d("memory",c,8*a,Qee),s&&d("associated data",s,0,_ee),o&&d("secret",o,0,Fee),{type:r,version:e,tagLength:t,password:i,salt:n,ad:s,secret:o,lanes:a,memorySize:c,passes:l}}function Mee(r,{memory:e,instance:t}){if(!Tee)throw new Error("BigEndian system not supported");let i=qee({type:g1,version:AU,...r}),{G:n,G2:s,xor:o,getLZ:a}=t.exports,c={},l={};l.G=n,l.G2=s,l.XOR=o;let d=4*i.lanes*Math.floor(i.memorySize/(4*i.lanes)),u=d*Vs+10*hU;if(e.buffer.byteLength<u){let D=Math.ceil((u-e.buffer.byteLength)/Oee);e.grow(D)}let f=0;c.gZ=new Uint8Array(e.buffer,f,Vs),f+=c.gZ.length,c.prngR=new Uint8Array(e.buffer,f,Vs),f+=c.prngR.length,c.prngTmp=new Uint8Array(e.buffer,f,Vs),f+=c.prngTmp.length,c.ZERO1024=new Uint8Array(e.buffer,f,1024),f+=c.ZERO1024.length;let h=new Uint32Array(e.buffer,f,2);f+=h.length*Uint32Array.BYTES_PER_ELEMENT;let g={fn:l,refs:c},p=new Uint8Array(e.buffer,f,Vs);f+=p.length;let I=new Uint8Array(e.buffer,f,i.memorySize*Vs),y=new Uint8Array(e.buffer,0,f),w=Lee(i),C=d/i.lanes,b=new Array(i.lanes).fill(null).map(()=>new Array(C)),x=(D,B)=>(b[D][B]=I.subarray(D*C*1024+B*1024,D*C*1024+B*1024+Vs),b[D][B]);for(let D=0;D<i.lanes;D++){let B=new Uint8Array(w.length+8);B.set(w),yi(B,0,w.length),yi(B,D,w.length+4),jE(Vs,B,x(D,0)),yi(B,1,w.length),jE(Vs,B,x(D,1))}let _=4,R=C/_;for(let D=0;D<i.passes;D++)for(let B=0;B<_;B++){let Q=D===0&&B<=1;for(let v=0;v<i.lanes;v++){let E=B===0&&D===0?2:0,P=Q?Nee(g,D,v,B,d,i.passes,R,E):null;for(E;E<R;E++){let N=B*R+E,J=N>0?b[v][N-1]:b[v][C-1],z=Q?P.next().value:J;a(h.byteOffset,z.byteOffset,v,i.lanes,D,B,E,_,R);let L=h[0],G=h[1];D===0&&x(v,N),Uee(g,J,b[L][G],D>0?p:b[v][N]),D>0&&j5(g,b[v][N],p,b[v][N])}}}let U=b[0][C-1];for(let D=1;D<i.lanes;D++)j5(g,U,U,b[D][C-1]);let T=jE(i.tagLength,U,new Uint8Array(i.tagLength));return y.fill(0),e.grow(0),T}function Lee(r){let e=Cy(Pee),t=new Uint8Array(4),i=new Uint8Array(24);yi(i,r.lanes,0),yi(i,r.tagLength,4),yi(i,r.memorySize,8),yi(i,r.passes,12),yi(i,r.version,16),yi(i,r.type,20);let n=[i];r.password?(n.push(yi(new Uint8Array(4),r.password.length,0)),n.push(r.password)):n.push(t),r.salt?(n.push(yi(new Uint8Array(4),r.salt.length,0)),n.push(r.salt)):n.push(t),r.secret?(n.push(yi(new Uint8Array(4),r.secret.length,0)),n.push(r.secret)):n.push(t),r.ad?(n.push(yi(new Uint8Array(4),r.ad.length,0)),n.push(r.ad)):n.push(t),e.update(Hee(n));let s=e.digest();return new Uint8Array(s)}function Hee(r){if(r.length===1)return r[0];let e=0;for(let n=0;n<r.length;n++){if(!(r[n]instanceof Uint8Array))throw new Error("concatArrays: Data must be in the form of a Uint8Array");e+=r[n].length}let t=new Uint8Array(e),i=0;return r.forEach(n=>{t.set(n,i),i+=n.length}),t}async function Kee(r,e,t){let i={env:{memory:r}};if(hy===void 0)try{let s=await e(i);return hy=!0,s}catch{hy=!1}return(hy?e:t)(i)}async function Gee(r,e){let t=new WebAssembly.Memory({initial:1040,maximum:65536}),i=await Kee(t,r,e);return s=>Mee(s,{instance:i.instance,memory:t})}function gU(r,e,t,i){function n(o,a,c){var l=c?WebAssembly.instantiateStreaming:WebAssembly.instantiate,d=c?WebAssembly.compileStreaming:WebAssembly.compile;return a?l(o,a):d(o)}var s=null;return s=Buffer.from(t,"base64"),n(s,i,!1)}function zee(r){return gU(0,null,"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",r)}function Jee(r){return gU(0,null,"AGFzbQEAAAABPwhgBH9/f38AYAABf2AAAGADf39/AGARf39/f39/f39/f39/f39/f38AYAl/f39/f39/f38Bf2ABfwBgAX8BfwITAQNlbnYGbWVtb3J5AgGQCICABAMLCgIDBAAABQEGBwEEBQFwAQICBgkBfwFBkIjAAgsHfQoDeG9yAAEBRwADAkcyAAQFZ2V0TFoABRlfX2luZGlyZWN0X2Z1bmN0aW9uX3RhYmxlAQALX2luaXRpYWxpemUAABBfX2Vycm5vX2xvY2F0aW9uAAkJc3RhY2tTYXZlAAYMc3RhY2tSZXN0b3JlAAcKc3RhY2tBbGxvYwAICQcBAEEBCwEACssaCgMAAQtQAQJ/A0AgACAEQQN0IgNqIAIgA2opAwAgASADaikDAIU3AwAgACADQQhyIgNqIAIgA2opAwAgASADaikDAIU3AwAgBEECaiIEQYABRw0ACwveDwICfgF/IAAgAUEDdGoiEyATKQMAIhEgACAFQQN0aiIBKQMAIhJ8IBFCAYZC/v///x+DIBJC/////w+DfnwiETcDACAAIA1BA3RqIgUgESAFKQMAhUIgiSIRNwMAIAAgCUEDdGoiCSARIAkpAwAiEnwgEUL/////D4MgEkIBhkL+////H4N+fCIRNwMAIAEgESABKQMAhUIoiSIRNwMAIBMgESATKQMAIhJ8IBFC/////w+DIBJCAYZC/v///x+DfnwiETcDACAFIBEgBSkDAIVCMIkiETcDACAJIBEgCSkDACISfCARQv////8PgyASQgGGQv7///8fg358IhE3AwAgASARIAEpAwCFQgGJNwMAIAAgAkEDdGoiDSANKQMAIhEgACAGQQN0aiICKQMAIhJ8IBFCAYZC/v///x+DIBJC/////w+DfnwiETcDACAAIA5BA3RqIgYgESAGKQMAhUIgiSIRNwMAIAAgCkEDdGoiCiARIAopAwAiEnwgEUL/////D4MgEkIBhkL+////H4N+fCIRNwMAIAIgESACKQMAhUIoiSIRNwMAIA0gESANKQMAIhJ8IBFC/////w+DIBJCAYZC/v///x+DfnwiETcDACAGIBEgBikDAIVCMIkiETcDACAKIBEgCikDACISfCARQv////8PgyASQgGGQv7///8fg358IhE3AwAgAiARIAIpAwCFQgGJNwMAIAAgA0EDdGoiDiAOKQMAIhEgACAHQQN0aiIDKQMAIhJ8IBFCAYZC/v///x+DIBJC/////w+DfnwiETcDACAAIA9BA3RqIgcgESAHKQMAhUIgiSIRNwMAIAAgC0EDdGoiCyARIAspAwAiEnwgEUL/////D4MgEkIBhkL+////H4N+fCIRNwMAIAMgESADKQMAhUIoiSIRNwMAIA4gESAOKQMAIhJ8IBFC/////w+DIBJCAYZC/v///x+DfnwiETcDACAHIBEgBykDAIVCMIkiETcDACALIBEgCykDACISfCARQv////8PgyASQgGGQv7///8fg358IhE3AwAgAyARIAMpAwCFQgGJNwMAIAAgBEEDdGoiDyAPKQMAIhEgACAIQQN0aiIEKQMAIhJ8IBFCAYZC/v///x+DIBJC/////w+DfnwiETcDACAAIBBBA3RqIgggESAIKQMAhUIgiSIRNwMAIAAgDEEDdGoiACARIAApAwAiEnwgEUL/////D4MgEkIBhkL+////H4N+fCIRNwMAIAQgESAEKQMAhUIoiSIRNwMAIA8gESAPKQMAIhJ8IBFC/////w+DIBJCAYZC/v///x+DfnwiETcDACAIIBEgCCkDAIVCMIkiETcDACAAIBEgACkDACISfCARQv////8PgyASQgGGQv7///8fg358IhE3AwAgBCARIAQpAwCFQgGJNwMAIBMgEykDACIRIAIpAwAiEnwgEUIBhkL+////H4MgEkL/////D4N+fCIRNwMAIAggESAIKQMAhUIgiSIRNwMAIAsgESALKQMAIhJ8IBFC/////w+DIBJCAYZC/v///x+DfnwiETcDACACIBEgAikDAIVCKIkiETcDACATIBEgEykDACISfCARQv////8PgyASQgGGQv7///8fg358IhE3AwAgCCARIAgpAwCFQjCJIhE3AwAgCyARIAspAwAiEnwgEUL/////D4MgEkIBhkL+////H4N+fCIRNwMAIAIgESACKQMAhUIBiTcDACANIA0pAwAiESADKQMAIhJ8IBFCAYZC/v///x+DIBJC/////w+DfnwiETcDACAFIBEgBSkDAIVCIIkiETcDACAAIBEgACkDACISfCARQv////8PgyASQgGGQv7///8fg358IhE3AwAgAyARIAMpAwCFQiiJIhE3AwAgDSARIA0pAwAiEnwgEUL/////D4MgEkIBhkL+////H4N+fCIRNwMAIAUgESAFKQMAhUIwiSIRNwMAIAAgESAAKQMAIhJ8IBFC/////w+DIBJCAYZC/v///x+DfnwiETcDACADIBEgAykDAIVCAYk3AwAgDiAOKQMAIhEgBCkDACISfCARQgGGQv7///8fgyASQv////8Pg358IhE3AwAgBiARIAYpAwCFQiCJIhE3AwAgCSARIAkpAwAiEnwgEUL/////D4MgEkIBhkL+////H4N+fCIRNwMAIAQgESAEKQMAhUIoiSIRNwMAIA4gESAOKQMAIhJ8IBFC/////w+DIBJCAYZC/v///x+DfnwiETcDACAGIBEgBikDAIVCMIkiETcDACAJIBEgCSkDACISfCARQv////8PgyASQgGGQv7///8fg358IhE3AwAgBCARIAQpAwCFQgGJNwMAIA8gDykDACIRIAEpAwAiEnwgEUIBhkL+////H4MgEkL/////D4N+fCIRNwMAIAcgESAHKQMAhUIgiSIRNwMAIAogESAKKQMAIhJ8IBFC/////w+DIBJCAYZC/v///x+DfnwiETcDACABIBEgASkDAIVCKIkiETcDACAPIBEgDykDACISfCARQv////8PgyASQgGGQv7///8fg358IhE3AwAgByARIAcpAwCFQjCJIhE3AwAgCiARIAopAwAiEnwgEUL/////D4MgEkIBhkL+////H4N+fCIRNwMAIAEgESABKQMAhUIBiTcDAAvdCAEPfwNAIAIgBUEDdCIGaiABIAZqKQMAIAAgBmopAwCFNwMAIAIgBkEIciIGaiABIAZqKQMAIAAgBmopAwCFNwMAIAVBAmoiBUGAAUcNAAsDQCADIARBA3QiAGogACACaikDADcDACADIARBAXIiAEEDdCIBaiABIAJqKQMANwMAIAMgBEECciIBQQN0IgVqIAIgBWopAwA3AwAgAyAEQQNyIgVBA3QiBmogAiAGaikDADcDACADIARBBHIiBkEDdCIHaiACIAdqKQMANwMAIAMgBEEFciIHQQN0IghqIAIgCGopAwA3AwAgAyAEQQZyIghBA3QiCWogAiAJaikDADcDACADIARBB3IiCUEDdCIKaiACIApqKQMANwMAIAMgBEEIciIKQQN0IgtqIAIgC2opAwA3AwAgAyAEQQlyIgtBA3QiDGogAiAMaikDADcDACADIARBCnIiDEEDdCINaiACIA1qKQMANwMAIAMgBEELciINQQN0Ig5qIAIgDmopAwA3AwAgAyAEQQxyIg5BA3QiD2ogAiAPaikDADcDACADIARBDXIiD0EDdCIQaiACIBBqKQMANwMAIAMgBEEOciIQQQN0IhFqIAIgEWopAwA3AwAgAyAEQQ9yIhFBA3QiEmogAiASaikDADcDACADIARB//8DcSAAQf//A3EgAUH//wNxIAVB//8DcSAGQf//A3EgB0H//wNxIAhB//8DcSAJQf//A3EgCkH//wNxIAtB//8DcSAMQf//A3EgDUH//wNxIA5B//8DcSAPQf//A3EgEEH//wNxIBFB//8DcRACIARB8ABJIQAgBEEQaiEEIAANAAtBACEBIANBAEEBQRBBEUEgQSFBMEExQcAAQcEAQdAAQdEAQeAAQeEAQfAAQfEAEAIgA0ECQQNBEkETQSJBI0EyQTNBwgBBwwBB0gBB0wBB4gBB4wBB8gBB8wAQAiADQQRBBUEUQRVBJEElQTRBNUHEAEHFAEHUAEHVAEHkAEHlAEH0AEH1ABACIANBBkEHQRZBF0EmQSdBNkE3QcYAQccAQdYAQdcAQeYAQecAQfYAQfcAEAIgA0EIQQlBGEEZQShBKUE4QTlByABByQBB2ABB2QBB6ABB6QBB+ABB+QAQAiADQQpBC0EaQRtBKkErQTpBO0HKAEHLAEHaAEHbAEHqAEHrAEH6AEH7ABACIANBDEENQRxBHUEsQS1BPEE9QcwAQc0AQdwAQd0AQewAQe0AQfwAQf0AEAIgA0EOQQ9BHkEfQS5BL0E+QT9BzgBBzwBB3gBB3wBB7gBB7wBB/gBB/wAQAgNAIAIgAUEDdCIAaiIEIAAgA2opAwAgBCkDAIU3AwAgAiAAQQhyIgRqIgUgAyAEaikDACAFKQMAhTcDACACIABBEHIiBGoiBSADIARqKQMAIAUpAwCFNwMAIAIgAEEYciIAaiIEIAAgA2opAwAgBCkDAIU3AwAgAUEEaiIBQYABRw0ACwsWACAAIAEgAiADEAMgACACIAIgAxADC3sCAX8BfiACIQkgATUCACEKIAQgBXIEQCABKAIEIANwIQkLIAAgCTYCACAAIAdBAWsgBSAEGyAIbCAGQQFrQQBBfyAGGyACIAlGG2oiASAFQQFqIAhsQQAgBBtqIAGtIAogCn5CIIh+QiCIp0F/c2ogByAIbHA2AgQgAAsEACMACwYAIAAkAAsQACMAIABrQXBxIgAkACAACwUAQYAICw==",r)}function Vee(r){return r&&r.__esModule&&Object.prototype.hasOwnProperty.call(r,"default")?r.default:r}function Yee(){if($5)return $E;$5=1;function r(i){this.name="Bzip2Error",this.message=i,this.stack=new Error().stack}r.prototype=new Error;var e={Error:function(i){throw new r(i)}},t={};return t.Bzip2Error=r,t.crcTable=[0,79764919,159529838,222504665,319059676,398814059,445009330,507990021,638119352,583659535,797628118,726387553,890018660,835552979,1015980042,944750013,1276238704,1221641927,1167319070,1095957929,1595256236,1540665371,1452775106,1381403509,1780037320,1859660671,1671105958,1733955601,2031960084,2111593891,1889500026,1952343757,2552477408,2632100695,2443283854,2506133561,2334638140,2414271883,2191915858,2254759653,3190512472,3135915759,3081330742,3009969537,2905550212,2850959411,2762807018,2691435357,3560074640,3505614887,3719321342,3648080713,3342211916,3287746299,3467911202,3396681109,4063920168,4143685023,4223187782,4286162673,3779000052,3858754371,3904687514,3967668269,881225847,809987520,1023691545,969234094,662832811,591600412,771767749,717299826,311336399,374308984,453813921,533576470,25881363,88864420,134795389,214552010,2023205639,2086057648,1897238633,1976864222,1804852699,1867694188,1645340341,1724971778,1587496639,1516133128,1461550545,1406951526,1302016099,1230646740,1142491917,1087903418,2896545431,2825181984,2770861561,2716262478,3215044683,3143675388,3055782693,3001194130,2326604591,2389456536,2200899649,2280525302,2578013683,2640855108,2418763421,2498394922,3769900519,3832873040,3912640137,3992402750,4088425275,4151408268,4197601365,4277358050,3334271071,3263032808,3476998961,3422541446,3585640067,3514407732,3694837229,3640369242,1762451694,1842216281,1619975040,1682949687,2047383090,2127137669,1938468188,2001449195,1325665622,1271206113,1183200824,1111960463,1543535498,1489069629,1434599652,1363369299,622672798,568075817,748617968,677256519,907627842,853037301,1067152940,995781531,51762726,131386257,177728840,240578815,269590778,349224269,429104020,491947555,4046411278,4126034873,4172115296,4234965207,3794477266,3874110821,3953728444,4016571915,3609705398,3555108353,3735388376,3664026991,3290680682,3236090077,3449943556,3378572211,3174993278,3120533705,3032266256,2961025959,2923101090,2868635157,2813903052,2742672763,2604032198,2683796849,2461293480,2524268063,2284983834,2364738477,2175806836,2238787779,1569362073,1498123566,1409854455,1355396672,1317987909,1246755826,1192025387,1137557660,2072149281,2135122070,1912620623,1992383480,1753615357,1816598090,1627664531,1707420964,295390185,358241886,404320391,483945776,43990325,106832002,186451547,266083308,932423249,861060070,1041341759,986742920,613929101,542559546,756411363,701822548,3316196985,3244833742,3425377559,3370778784,3601682597,3530312978,3744426955,3689838204,3819031489,3881883254,3928223919,4007849240,4037393693,4100235434,4180117107,4259748804,2310601993,2373574846,2151335527,2231098320,2596047829,2659030626,2470359227,2550115596,2947551409,2876312838,2788305887,2733848168,3165939309,3094707162,3040238851,2985771188],t.array=function(i){var n=0,s=0,o=[0,1,3,7,15,31,63,127,255];return function(a){for(var c=0;a>0;){var l=8-n;a>=l?(c<<=l,c|=o[l]&i[s++],n=0,a-=l):(c<<=a,c|=(i[s]&o[a]<<8-a-n)>>8-a-n,n+=a,a=0)}return c}},t.simple=function(i,n){var s=t.array(i),o=t.header(s),a=!1,c=1e5*o,l=new Int32Array(c);do a=t.decompress(s,n,l,c);while(!a)},t.header=function(i){this.byteCount=new Int32Array(256),this.symToByte=new Uint8Array(256),this.mtfSymbol=new Int32Array(256),this.selectors=new Uint8Array(32768),i(24)!=4348520&&e.Error("No magic number found");var n=i(8)-48;return(n<1||n>9)&&e.Error("Not a BZIP archive"),n},t.decompress=function(i,n,s,o,a){for(var c=20,l=258,d=0,u=1,f=50,h=-1,g="",p=0;p<6;p++)g+=i(8).toString(16);if(g=="177245385090"){var I=i(32)|0;return I!==a&&e.Error("Error in bzip2: crc32 do not match"),i(null),null}g!="314159265359"&&e.Error("Invalid bzip data");var y=i(32)|0;i(1)&&e.Error("unsupported obsolete version");var w=i(24);w>o&&e.Error("Initial position larger than buffer size");var C=i(16),b=0;for(p=0;p<16;p++)if(C&1<<15-p){var x=i(16);for(te=0;te<16;te++)x&1<<15-te&&(this.symToByte[b++]=16*p+te)}var _=i(3);(_<2||_>6)&&e.Error("Invalid bzip data");var R=i(15);R==0&&e.Error("Invalid bzip data");for(var p=0;p<_;p++)this.mtfSymbol[p]=p;for(var p=0;p<R;p++){for(var te=0;i(1);te++)te>=_&&e.Error("Invalid bzip data");for(var U=this.mtfSymbol[te],x=te-1;x>=0;x--)this.mtfSymbol[x+1]=this.mtfSymbol[x];this.mtfSymbol[0]=U,this.selectors[p]=U}for(var G=b+2,T=[],D=new Uint8Array(l),B=new Uint16Array(c+1),Q,te=0;te<_;te++){C=i(5);for(var p=0;p<G;p++){for(;(C<1||C>c)&&e.Error("Invalid bzip data"),!!i(1);)i(1)?C--:C++;D[p]=C}var v,E;v=E=D[0];for(var p=1;p<G;p++)D[p]>E?E=D[p]:D[p]<v&&(v=D[p]);Q=T[te]={},Q.permute=new Int32Array(l),Q.limit=new Int32Array(c+1),Q.base=new Int32Array(c+1),Q.minLen=v,Q.maxLen=E;for(var P=Q.base,N=Q.limit,J=0,p=v;p<=E;p++)for(var C=0;C<G;C++)D[C]==p&&(Q.permute[J++]=C);for(p=v;p<=E;p++)B[p]=N[p]=0;for(p=0;p<G;p++)B[D[p]]++;for(J=C=0,p=v;p<E;p++)J+=B[p],N[p]=J-1,J<<=1,P[p+1]=J-(C+=B[p]);N[E]=J+B[E]-1,P[v]=0}for(var p=0;p<256;p++)this.mtfSymbol[p]=p,this.byteCount[p]=0;var z,L,G,K;for(z=L=G=K=0;;){for(G--||(G=f-1,K>=R&&e.Error("Invalid bzip data"),Q=T[this.selectors[K++]],P=Q.base,N=Q.limit),p=Q.minLen,te=i(p);p>Q.maxLen&&e.Error("Invalid bzip data"),!(te<=N[p]);)p++,te=te<<1|i(1);te-=P[p],(te<0||te>=l)&&e.Error("Invalid bzip data");var j=Q.permute[te];if(j==d||j==u){z||(z=1,C=0),j==d?C+=z:C+=2*z,z<<=1;continue}if(z)for(z=0,L+C>o&&e.Error("Invalid bzip data"),U=this.symToByte[this.mtfSymbol[0]],this.byteCount[U]+=C;C--;)s[L++]=U;if(j>b)break;L>=o&&e.Error("Invalid bzip data"),p=j-1,U=this.mtfSymbol[p];for(var x=p-1;x>=0;x--)this.mtfSymbol[x+1]=this.mtfSymbol[x];this.mtfSymbol[0]=U,U=this.symToByte[U],this.byteCount[U]++,s[L++]=U}(w<0||w>=L)&&e.Error("Invalid bzip data");for(var te=0,p=0;p<256;p++)x=te+this.byteCount[p],this.byteCount[p]=te,te=x;for(var p=0;p<L;p++)U=s[p]&255,s[this.byteCount[U]]|=p<<8,this.byteCount[U]++;var re=0,ee=0,Z=0;L&&(re=s[w],ee=re&255,re>>=8,Z=-1),L=L;for(var me,le,Ae;L;){for(L--,le=ee,re=s[re],ee=re&255,re>>=8,Z++==3?(me=ee,Ae=le,ee=-1):(me=1,Ae=ee);me--;)h=(h<<8^this.crcTable[(h>>24^Ae)&255])&4294967295,n(Ae);ee!=le&&(Z=0)}return h=(h^-1)>>>0,(h|0)!=(y|0)&&e.Error("Error in bzip2: crc32 do not match"),a=(h^(a<<1|a>>>31))&4294967295,a},$E=t,$E}function Wee(){if(V5)return VE;V5=1;var r=[0,1,3,7,15,31,63,127,255];return VE=function(t){var i=0,n=0,s=t(),o=function(a){if(a===null&&i!=0){i=0,n++;return}for(var c=0;a>0;){n>=s.length&&(n=0,s=t());var l=8-i;i===0&&a>0&&o.bytesRead++,a>=l?(c<<=l,c|=r[l]&s[n++],i=0,a-=l):(c<<=a,c|=(s[n]&r[a]<<8-a-i)>>8-a-i,i+=a,a=0)}return c};return o.bytesRead=0,o},VE}function Xee(){if(Y5)return YE;Y5=1;let r=Yee(),e=Wee();YE=t;function t(i){let n=[],s=0,o=0,a=!1,c=!1,l=null,d=null;function u(p){if(o){let I=1e5*o,y=new Int32Array(I),w=[],C=function(b){w.push(b)};return d=r.decompress(l,C,y,I,d),d===null?(o=0,!1):(p(new Uint8Array(w)),!0)}else return o=r.header(l),d=0,!1}let f=0;function h(p){if(!a)try{return u(function(I){p.enqueue(I),I!==null&&(f+=I.length)})}catch(I){return p.error(I),a=!0,!0}}let g;return new ReadableStream({start(){g=i.getReader()},async pull(p){try{for(;;){for(;!(c||l&&s-l.bytesRead+1>=25e3+1e5*(o||4));){let{value:I,done:y}=await g.read();y?c=!0:(n.push(I),s+=I.length,l===null&&(l=e(function(){return n.shift()})))}for(;c?l&&s>l.bytesRead:l&&s-l.bytesRead+1>=25e3+1e5*(o||4);)if(h(p))return;if(c&&!a&&(!l||s<=l.bytesRead)){d===null?p.close():p.error(new Error("input stream ended prematurely"));return}}}catch(I){p.error(I)}},async cancel(p){await g.abort(p)}},{highWaterMark:0})}return YE}var Zs,yd,X5,Z5,vf,sn,FP,xt,pf,m,pe,PP,F,xE,Ey,By,Br,K$,xi,fd,Y$,ns,Z$,NP,by,tV,rV,iV,nV,sV,oV,aV,cV,lV,dV,rn,wd,Pc,Ia,ha,_V,to,ft,Ad,Qf,Pf,HB,u6,TV,UV,eA,Ws,zB,es,OV,MV,tn,HV,Sy,tB,MP,Bi,JB,ty,KV,rB,GV,zV,CE,LP,$B,y6,JV,jV,iB,w6,ry,HP,KP,B6,GP,hd,Dy,rY,EE,_y,ss,Ks,Zn,S6,bi,Fy,P6,dY,uY,xY,CY,my,Sf,Py,Ty,Uy,yy,Uf,Bc,yI,Ry,Ny,bE,YP,NY,ro,Iy,XP,LY,HY,ao,KY,od,ZP,aB,cB,ci,H6,Aa,mf,JY,vE,t5,r5,jY,$Y,ad,kE,XY,ZY,eW,i5,gd,sy,yf,tW,lB,dB,rW,iW,pd,nW,sW,Gt,Mi,t1,wI,xI,uB,G6,pd,z6,fB,J6,oW,n5,AB,Gs,ut,os,xa,ut,ut,ut,ut,Nf,ut,aW,cW,lW,dW,SE,En,DE,r1,_f,uW,Er,fW,zs,If,QE,hB,s5,wf,i1,o5,AW,Oy,hW,j6,$6,V6,gW,pW,wy,xy,mW,yW,IW,wW,Ca,no,xf,a5,xW,Rr,on,Ct,Xn,Kt,Ed,EW,Uc,Ly,vW,kW,SW,Bd,DW,c5,gB,qf,Of,ls,_W,pB,Ky,mB,Mf,Gy,zy,Jy,wB,Lf,RW,A5,h5,$y,Vy,Yy,qW,LW,HW,KW,Hf,JW,td,VW,m5,nT,XW,Js,Gf,tX,o1,xB,UE,cA,wi,di,kc,aT,cT,lT,sX,dT,oX,uT,dX,qc,na,sa,jr,$r,ay,C5,E5,B5,rd,id,cy,ly,pX,mX,yX,IX,wX,xX,CX,EX,BX,bX,vX,oa,Zy,CB,xT,kX,SX,aa,ca,eI,EB,d1,DX,CT,ET,tI,BT,kd,Sc,NE,vT,iI,S5,bB,Xs,eo,md,DT,dy,TX,FT,PT,TT,HX,KX,GX,zX,JX,jX,$X,VX,YX,WX,Cf,XX,ZX,eZ,tZ,UT,RT,NT,qT,rZ,iZ,D5,Q5,nI,OT,sZ,oZ,aZ,cZ,la,Cr,ME,lZ,Ef,nd,uy,Hc,mZ,yZ,IZ,vB,_5,wZ,xZ,F5,CZ,EZ,bZ,P5,kZ,SZ,DZ,u1,QZ,T5,kB,FZ,KT,PZ,GT,TZ,UZ,RZ,zT,JT,jT,NZ,qZ,OZ,$T,MZ,LZ,HZ,KZ,GZ,Bf,da,SB,zZ,JZ,VT,jZ,YT,WT,XT,ZT,$Z,VZ,YZ,WZ,fy,DB,XZ,ZZ,eee,tee,R5,Ay,LE,QB,ree,iee,nee,HE,vi,Pe,f1,eU,_B,sI,see,oee,aee,N5,q5,cee,L5,GE,G5,gee,dU,uU,vc,kI,SI,pee,Kc,en,Cee,Eee,fU,Vr,TB,UB,bf,g1,AU,Bee,bee,vee,kee,See,Dee,Qee,_ee,Fee,Vs,Pee,Tee,hU,Oee,hy,jee,$ee,$E,$5,VE,V5,YE,Y5,pU,Zee,ete,p1=V(()=>{Zs=typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};yd=Symbol("doneWritingPromise"),X5=Symbol("doneWritingResolve"),Z5=Symbol("doneWritingReject"),vf=Symbol("readingIndex"),sn=class r extends Array{constructor(){super(),Object.setPrototypeOf(this,r.prototype),this[yd]=new Promise((e,t)=>{this[X5]=e,this[Z5]=t}),this[yd].catch(()=>{})}};sn.prototype.getReader=function(){return this[vf]===void 0&&(this[vf]=0),{read:async()=>(await this[yd],this[vf]===this.length?{value:void 0,done:!0}:{value:this[this[vf]++],done:!1})}};sn.prototype.readToEnd=async function(r){await this[yd];let e=r(this.slice(this[vf]));return this.length=0,e};sn.prototype.clone=function(){let r=new sn;return r[yd]=this[yd].then(()=>{r.push(...this)}),r};Wf.prototype.write=async function(r){this.stream.push(r)};Wf.prototype.close=async function(){this.stream[X5]()};Wf.prototype.abort=async function(r){return this.stream[Z5](r),r};Wf.prototype.releaseLock=function(){};typeof Zs.process=="object"&&Zs.process.versions;FP=new WeakSet,xt=Symbol("externalBuffer");us.prototype.read=async function(){return this[xt]&&this[xt].length?{done:!1,value:this[xt].shift()}:this._read()};us.prototype.releaseLock=function(){this[xt]&&(this.stream[xt]=this[xt]),this._releaseLock()};us.prototype.cancel=function(r){return this._cancel(r)};us.prototype.readLine=async function(){let r=[],e;for(;!e;){let{done:t,value:i}=await this.read();if(i+="",t)return r.length?li(r):void 0;let n=i.indexOf(` -`)+1;n&&(e=li(r.concat(i.substr(0,n))),r=[]),n!==i.length&&r.push(i.substr(n))}return this.unshift(...r),e};us.prototype.readByte=async function(){let{done:r,value:e}=await this.read();if(r)return;let t=e[0];return this.unshift(Tr(e,1)),t};us.prototype.readBytes=async function(r){let e=[],t=0;for(;;){let{done:i,value:n}=await this.read();if(i)return e.length?li(e):void 0;if(e.push(n),t+=n.length,t>=r){let s=li(e);return this.unshift(Tr(s,r)),Tr(s,0,r)}}};us.prototype.peekBytes=async function(r){let e=await this.readBytes(r);return this.unshift(e),e};us.prototype.unshift=function(...r){if(this[xt]||(this[xt]=[]),r.length===1&&oI(r[0])&&this[xt].length&&r[0].length&&this[xt][0].byteOffset>=r[0].length){this[xt][0]=new Uint8Array(this[xt][0].buffer,this[xt][0].byteOffset-r[0].length,this[xt][0].byteLength+r[0].length);return}this[xt].unshift(...r.filter(e=>e&&e.length))};us.prototype.readToEnd=async function(r=li){let e=[];for(;;){let{done:t,value:i}=await this.read();if(t)break;e.push(i)}return r(e)};pf=Symbol("byValue"),m={curve:{nistP256:"nistP256",p256:"nistP256",nistP384:"nistP384",p384:"nistP384",nistP521:"nistP521",p521:"nistP521",secp256k1:"secp256k1",ed25519Legacy:"ed25519Legacy",ed25519:"ed25519Legacy",curve25519Legacy:"curve25519Legacy",curve25519:"curve25519Legacy",brainpoolP256r1:"brainpoolP256r1",brainpoolP384r1:"brainpoolP384r1",brainpoolP512r1:"brainpoolP512r1"},s2k:{simple:0,salted:1,iterated:3,argon2:4,gnu:101},publicKey:{rsaEncryptSign:1,rsaEncrypt:2,rsaSign:3,elgamal:16,dsa:17,ecdh:18,ecdsa:19,eddsaLegacy:22,aedh:23,aedsa:24,x25519:25,x448:26,ed25519:27,ed448:28},symmetric:{idea:1,tripledes:2,cast5:3,blowfish:4,aes128:7,aes192:8,aes256:9,twofish:10},compression:{uncompressed:0,zip:1,zlib:2,bzip2:3},hash:{md5:1,sha1:2,ripemd:3,sha256:8,sha384:9,sha512:10,sha224:11,sha3_256:12,sha3_512:14},webHash:{"SHA-1":2,"SHA-256":8,"SHA-384":9,"SHA-512":10},aead:{eax:1,ocb:2,gcm:3,experimentalGCM:100},packet:{publicKeyEncryptedSessionKey:1,signature:2,symEncryptedSessionKey:3,onePassSignature:4,secretKey:5,publicKey:6,secretSubkey:7,compressedData:8,symmetricallyEncryptedData:9,marker:10,literalData:11,trust:12,userID:13,publicSubkey:14,userAttribute:17,symEncryptedIntegrityProtectedData:18,modificationDetectionCode:19,aeadEncryptedData:20,padding:21},literal:{binary:98,text:116,utf8:117,mime:109},signature:{binary:0,text:1,standalone:2,certGeneric:16,certPersona:17,certCasual:18,certPositive:19,certRevocation:48,subkeyBinding:24,keyBinding:25,key:31,keyRevocation:32,subkeyRevocation:40,timestamp:64,thirdParty:80},signatureSubpacket:{signatureCreationTime:2,signatureExpirationTime:3,exportableCertification:4,trustSignature:5,regularExpression:6,revocable:7,keyExpirationTime:9,placeholderBackwardsCompatibility:10,preferredSymmetricAlgorithms:11,revocationKey:12,issuerKeyID:16,notationData:20,preferredHashAlgorithms:21,preferredCompressionAlgorithms:22,keyServerPreferences:23,preferredKeyServer:24,primaryUserID:25,policyURI:26,keyFlags:27,signersUserID:28,reasonForRevocation:29,features:30,signatureTarget:31,embeddedSignature:32,issuerFingerprint:33,preferredAEADAlgorithms:34,preferredCipherSuites:39},keyFlags:{certifyKeys:1,signData:2,encryptCommunication:4,encryptStorage:8,splitPrivateKey:16,authentication:32,sharedPrivateKey:128},armor:{multipartSection:0,multipartLast:1,signed:2,message:3,publicKey:4,privateKey:5,signature:6},reasonForRevocation:{noReason:0,keySuperseded:1,keyCompromised:2,keyRetired:3,userIDInvalid:32},features:{modificationDetection:1,aead:2,v5Keys:4,seipdv2:8},write:function(r,e){if(typeof e=="number"&&(e=this.read(r,e)),r[e]!==void 0)return r[e];throw new Error("Invalid enum value.")},read:function(r,e){if(r[pf]||(r[pf]=[],Object.entries(r).forEach(([t,i])=>{r[pf][i]=t})),r[pf][e]!==void 0)return r[pf][e];throw new Error("Invalid enum value.")}},pe={preferredHashAlgorithm:m.hash.sha512,preferredSymmetricAlgorithm:m.symmetric.aes256,preferredCompressionAlgorithm:m.compression.uncompressed,aeadProtect:!1,parseAEADEncryptedV4KeysAsLegacy:!1,preferredAEADAlgorithm:m.aead.gcm,aeadChunkSizeByte:12,v6Keys:!1,enableParsingV5Entities:!1,s2kType:m.s2k.iterated,s2kIterationCountByte:224,s2kArgon2Params:{passes:3,parallelism:4,memoryExponent:16},maxArgon2MemoryExponent:30,allowUnauthenticatedMessages:!1,allowUnauthenticatedStream:!1,minRSABits:2047,passwordCollisionCheck:!1,allowInsecureDecryptionWithSigningKeys:!1,allowInsecureVerificationWithReformattedKeys:!1,allowMissingKeyFlags:!1,constantTimePKCS1Decryption:!1,constantTimePKCS1DecryptionSupportedSymmetricAlgorithms:new Set([m.symmetric.aes128,m.symmetric.aes192,m.symmetric.aes256]),ignoreUnsupportedPackets:!0,ignoreMalformedPackets:!1,enforceGrammar:!0,additionalAllowedPackets:[],showVersion:!1,showComment:!1,versionString:"OpenPGP.js 6.3.1",commentString:"https://openpgpjs.org",maxUserIDLength:1024*5,maxDecompressedMessageSize:1/0,knownNotations:[],nonDeterministicSignaturesViaNotation:!0,useEllipticFallback:!0,rejectHashAlgorithms:new Set([m.hash.md5,m.hash.ripemd]),rejectMessageHashAlgorithms:new Set([m.hash.md5,m.hash.ripemd,m.hash.sha1]),rejectPublicKeyAlgorithms:new Set([m.publicKey.elgamal,m.publicKey.dsa]),rejectCurves:new Set([m.curve.secp256k1])},PP=(()=>{try{return process.env.NODE_ENV==="development"}catch{}return!1})(),F={isString:function(r){return typeof r=="string"||r instanceof String},nodeRequire:W5(import.meta.url),isArray:function(r){return r instanceof Array},isUint8Array:oI,isStream:or,getNobleCurve:async(r,e)=>{if(!pe.useEllipticFallback)throw new Error("This curve is only supported in the full build of OpenPGP.js");let{nobleCurves:t}=await Promise.resolve().then(function(){return GZ});switch(r){case m.publicKey.ecdh:case m.publicKey.ecdsa:{let i=t.get(e);if(!i)throw new Error("Unsupported curve");return i}case m.publicKey.x448:return t.get("x448");case m.publicKey.ed448:return t.get("ed448");default:throw new Error("Unsupported curve")}},readNumber:function(r){let e=0;for(let t=0;t<r.length;t++)e+=256**t*r[r.length-1-t];return e},writeNumber:function(r,e){let t=new Uint8Array(e);for(let i=0;i<e;i++)t[i]=r>>8*(e-i-1)&255;return t},readDate:function(r){let e=F.readNumber(r);return new Date(e*1e3)},writeDate:function(r){let e=Math.floor(r.getTime()/1e3);return F.writeNumber(e,4)},normalizeDate:function(r=Date.now()){return r===null||r===1/0?r:new Date(Math.floor(+r/1e3)*1e3)},readMPI:function(r){let t=(r[0]<<8|r[1])+7>>>3;return F.readExactSubarray(r,2,2+t)},readExactSubarray:function(r,e,t){if(r.length<t)throw new Error("Input array too short");return r.subarray(e,t)},leftPad(r,e){if(r.length>e)throw new Error("Input array too long");let t=new Uint8Array(e),i=e-r.length;return t.set(r,i),t},uint8ArrayToMPI:function(r){let e=F.uint8ArrayBitLength(r);if(e===0)throw new Error("Zero MPI");let t=r.subarray(r.length-Math.ceil(e/8)),i=new Uint8Array([(e&65280)>>8,e&255]);return F.concatUint8Array([i,t])},uint8ArrayBitLength:function(r){let e;for(e=0;e<r.length&&r[e]===0;e++);if(e===r.length)return 0;let t=r.subarray(e);return(t.length-1)*8+F.nbits(t[0])},hexToUint8Array:function(r){let e=new Uint8Array(r.length>>1);for(let t=0;t<r.length>>1;t++)e[t]=parseInt(r.substr(t<<1,2),16);return e},uint8ArrayToHex:function(r){let e="0123456789abcdef",t="";return r.forEach(i=>{t+=e[i>>4]+e[i&15]}),t},stringToUint8Array:function(r){return sr(r,e=>{if(!F.isString(e))throw new Error("stringToUint8Array: Data must be in the form of a string");let t=new Uint8Array(e.length);for(let i=0;i<e.length;i++)t[i]=e.charCodeAt(i);return t})},uint8ArrayToString:function(r){r=new Uint8Array(r);let e=[],t=16384,i=r.length;for(let n=0;n<i;n+=t)e.push(String.fromCharCode.apply(String,r.subarray(n,n+t<i?n+t:i)));return e.join("")},encodeUTF8:function(r){let e=new TextEncoder("utf-8");function t(i,n=!1){return e.encode(i,{stream:!n})}return sr(r,t,()=>t("",!0))},decodeUTF8:function(r){let e=new TextDecoder("utf-8");function t(i,n=!1){return e.decode(i,{stream:!n})}return sr(r,t,()=>t(new Uint8Array,!0))},concat:li,concatUint8Array:e6,equalsUint8Array:function(r,e){if(!F.isUint8Array(r)||!F.isUint8Array(e))throw new Error("Data must be in the form of a Uint8Array");if(r.length!==e.length)return!1;for(let t=0;t<r.length;t++)if(r[t]!==e[t])return!1;return!0},findLastIndex:function(r,e){for(let t=r.length;t>=0;t--)if(e(r[t],t,r))return t;return-1},writeChecksum:function(r){let e=0;for(let t=0;t<r.length;t++)e=e+r[t]&65535;return F.writeNumber(e,2)},printDebug:function(r){PP&&console.log("[OpenPGP.js debug]",r)},printDebugError:function(r){PP&&console.error("[OpenPGP.js debug]",r)},nbits:function(r){let e=1,t=r>>>16;return t!==0&&(r=t,e+=16),t=r>>8,t!==0&&(r=t,e+=8),t=r>>4,t!==0&&(r=t,e+=4),t=r>>2,t!==0&&(r=t,e+=2),t=r>>1,t!==0&&(r=t,e+=1),e},double:function(r){let e=new Uint8Array(r.length),t=r.length-1;for(let i=0;i<t;i++)e[i]=r[i]<<1^r[i+1]>>7;return e[t]=r[t]<<1^(r[0]>>7)*135,e},shiftRight:function(r,e){if(e)for(let t=r.length-1;t>=0;t--)r[t]>>=e,t>0&&(r[t]|=r[t-1]<<8-e);return r},getWebCrypto:function(){let e=typeof Zs<"u"&&Zs.crypto&&Zs.crypto.subtle||this.getNodeCrypto()?.webcrypto.subtle;if(!e)throw new Error("The WebCrypto API is not available");return e},getNodeCrypto:function(){return this.nodeRequire("crypto")},getNodeZlib:function(){return this.nodeRequire("zlib")},getNodeBuffer:function(){return(this.nodeRequire("buffer")||{}).Buffer},getHardwareConcurrency:function(){return typeof navigator<"u"?navigator.hardwareConcurrency||1:this.nodeRequire("os").cpus().length},isEmailAddress:function(r){return F.isString(r)?/^[^\p{C}\p{Z}@<>\\]+@[^\p{C}\p{Z}@<>\\]+[^\p{C}\p{Z}\p{P}]$/u.test(r):!1},canonicalizeEOL:function(r){let i=!1;return sr(r,n=>{i&&(n=F.concatUint8Array([new Uint8Array([13]),n])),n[n.length-1]===13?(i=!0,n=n.subarray(0,-1)):i=!1;let s,o=[];for(let l=0;s=n.indexOf(10,l)+1,s;l=s)n[s-2]!==13&&o.push(s);if(!o.length)return n;let a=new Uint8Array(n.length+o.length),c=0;for(let l=0;l<o.length;l++){let d=n.subarray(o[l-1]||0,o[l]);a.set(d,c),c+=d.length,a[c-1]=13,a[c]=10,c++}return a.set(n.subarray(o[o.length-1]||0),c),a},()=>i?new Uint8Array([13]):void 0)},nativeEOL:function(r){let i=!1;return sr(r,n=>{i&&n[0]!==10?n=F.concatUint8Array([new Uint8Array([13]),n]):n=new Uint8Array(n),n[n.length-1]===13?(i=!0,n=n.subarray(0,-1)):i=!1;let s,o=0;for(let a=0;a!==n.length;a=s){s=n.indexOf(13,a)+1,s||(s=n.length);let c=s-(n[s]===10?1:0);a&&n.copyWithin(o,a,c),o+=c-a}return n.subarray(0,o)},()=>i?new Uint8Array([13]):void 0)},removeTrailingSpaces:function(r){return r.split(` +`),d.push(bc(n,o)),d.push(Ws(e)),l&&d.push("=",vc(l)),d.push(`-----END PGP SIGNATURE----- +`);break}return F.concat(d)}function Te(r){let e="0123456789ABCDEF",t="";return r.forEach(i=>{t+=e[i>>4]+e[i&15]}),BigInt("0x0"+t)}function rt(r,e){let t=r%e;return t<Ci?t+e:t}function UV(r,e,t){let i=-r;return e&i|t&~i}function vr(r,e,t){if(t===Ci)throw Error("Modulo cannot be zero");if(t===md)return BigInt(0);if(e<Ci)throw Error("Unsopported negative exponent");let i=e,n=r;n%=t;let s=BigInt(1);for(;i>Ci;){let o=i&md;i>>=md;let a=s*n%t;s=UV(o,a,s),n=n*n%t}return s}function f5(r){return r>=Ci?r:-r}function RV(r,e){let t=BigInt(0),i=BigInt(1),n=BigInt(1),s=BigInt(0),o=f5(r),a=f5(e),c=r<Ci,l=e<Ci;for(;a!==Ci;){let d=o/a,u=t;t=n-d*t,n=u,u=i,i=s-d*i,s=u,u=a,a=o%a,o=u}return{x:c?-n:n,y:l?-s:s,gcd:o}}function Bd(r,e){let{gcd:t,x:i}=RV(r,e);if(t!==md)throw new Error("Inverse does not exist");return rt(i+e,e)}function NV(r,e){let t=r,i=e;for(;i!==Ci;){let n=i;i=t%i,t=n}return t}function mB(r){let e=Number(r);if(e>Number.MAX_SAFE_INTEGER)throw new Error("Number can only safely store up to 53 bits");return e}function qV(r,e){return(r>>BigInt(e)&md)===Ci?0:1}function Td(r){let e=r<Ci?BigInt(-1):Ci,t=1,i=r;for(;(i>>=md)!==e;)t++;return t}function Ei(r){let e=r<Ci?BigInt(-1):Ci,t=BigInt(8),i=1,n=r;for(;(n>>=t)!==e;)i++;return i}function Wt(r,e="be",t){let i=r.toString(16);i.length%2===1&&(i="0"+i);let n=i.length/2,s=new Uint8Array(t||n),o=t?t-n:0,a=0;for(;a<n;)s[a+o]=parseInt(i.slice(2*a,2*a+2),16),a++;return e!=="be"&&s.reverse(),s}function Rr(r){let e=typeof crypto<"u"?crypto:OV?.webcrypto;if(e?.getRandomValues){let t=new Uint8Array(r);return e.getRandomValues(t)}else throw new Error("No secure random number generator available.")}function ba(r,e){if(e<r)throw new Error("Illegal parameter value: max <= min");let t=e-r,i=Ei(t),n=Te(Rr(i+8));return rt(n,t)+r}function A5(r,e,t){let i=BigInt(30),n=cs<<BigInt(r-1),s=[1,6,5,4,3,2,1,4,3,2,1,2,1,4,3,2,1,2,1,4,3,2,1,6,5,4,3,2,1,2],o=ba(n,n<<cs),a=mB(rt(o,i));do o+=BigInt(s[a]),a=(a+s[a])%s.length,Td(o)>r&&(o=rt(o,n<<cs),o+=n,a=mB(rt(o,i)));while(!N6(o,e,t));return o}function N6(r,e,t){return!(e&&NV(r-cs,e)!==cs||!LV(r)||!MV(r)||!KV(r,t))}function MV(r,e=BigInt(2)){return vr(e,r-cs,r)===cs}function LV(r){let e=BigInt(0);return HV.every(t=>rt(r,t)!==e)}function KV(r,e,t){let i=Td(r);e||(e=Math.max(1,i/48|0));let n=r-cs,s=0;for(;!qV(n,s);)s++;let o=r>>BigInt(s);for(;e>0;e--){let a=ba(BigInt(2),n),c=vr(a,o,r);if(c===cs||c===n)continue;let l;for(l=1;l<s;l++){if(c=rt(c*c,r),c===cs)return!1;if(c===n)break}if(l===s)return!1}return!0}function oo(r){if(!(!Ny||!GV.includes(r)))return async function(e){let t=Ny.createHash(r);return sr(e,i=>{t.update(i)},()=>new Uint8Array(t.digest()))}}function ao(r,e){let t=async()=>{let{nobleHashes:i}=await Promise.resolve().then(function(){return jee}),n=i.get(r);if(!n)throw new Error("Unsupported hash");return n};return async function(i){if(St(i)&&(i=await Xt(i)),F.isStream(i)){let s=(await t()).create();return sr(i,o=>{s.update(o)},()=>s.digest())}else return h5&&e?new Uint8Array(await h5.digest(e,i)):(await t())(i)}}function fs(r,e){switch(r){case m.hash.md5:return zV(e);case m.hash.sha1:return JV(e);case m.hash.ripemd:return WV(e);case m.hash.sha256:return $V(e);case m.hash.sha384:return VV(e);case m.hash.sha512:return YV(e);case m.hash.sha224:return jV(e);case m.hash.sha3_256:return XV(e);case m.hash.sha3_512:return ZV(e);default:throw new Error("Unsupported hash function")}}function gr(r){switch(r){case m.hash.md5:return 16;case m.hash.sha1:case m.hash.ripemd:return 20;case m.hash.sha256:return 32;case m.hash.sha384:return 48;case m.hash.sha512:return 64;case m.hash.sha224:return 28;case m.hash.sha3_256:return 32;case m.hash.sha3_512:return 64;default:throw new Error("Invalid hash algorithm.")}}function eY(r){let e=new Uint8Array(r),t=0;for(;t<r;){let i=Rr(r-t);for(let n=0;n<i.length;n++)i[n]!==0&&(e[t++]=i[n])}return e}function q6(r,e){let t=r.length;if(t>e-11)throw new Error("Message too long");let i=eY(e-t-3),n=new Uint8Array(e);return n[1]=2,n.set(i,2),n.set(r,e-t),n}function O6(r,e){let t=2,i=1;for(let a=t;a<r.length;a++)i&=r[a]!==0,t+=i;let n=t-2,s=r.subarray(t+1),o=r[0]===0&r[1]===2&n>=8&!i;if(e)return F.selectUint8Array(o,s,e);if(o)return s;throw new Error("Decryption error")}function M6(r,e,t){let i;if(e.length!==gr(r))throw new Error("Invalid hash length");let n=new Uint8Array(nn[r].length);for(i=0;i<nn[r].length;i++)n[i]=nn[r][i];let s=n.length+e.length;if(t<s+11)throw new Error("Intended encoded message length too short");let o=new Uint8Array(t-s-3).fill(255),a=new Uint8Array(t);return a[1]=1,a.set(o,2),a.set(n,t-s),a.set(e,t-e.length),a}async function tY(r,e,t,i,n,s,o,a,c){if(gr(r)>=t.length)throw new Error("Digest size cannot exceed key modulus size");if(e&&!F.isStream(e)){if(F.getWebCrypto())try{return await cY(m.read(m.webHash,r),e,t,i,n,s,o,a)}catch(l){F.printDebugError(l)}else if(F.getNodeCrypto())return lY(r,e,t,i,n,s,o,a)}return aY(r,t,n,c)}async function rY(r,e,t,i,n,s){if(e&&!F.isStream(e)){if(F.getWebCrypto())try{return await uY(m.read(m.webHash,r),e,t,i,n)}catch(o){F.printDebugError(o)}else if(F.getNodeCrypto())return fY(r,e,t,i,n)}return dY(r,t,i,n,s)}async function iY(r,e,t){return F.getNodeCrypto()?AY(r,e,t):hY(r,e,t)}async function nY(r,e,t,i,n,s,o,a){if(F.getNodeCrypto()&&!a)try{return gY(r,e,t,i,n,s,o)}catch(c){F.printDebugError(c)}return pY(r,e,t,i,n,s,o,a)}async function sY(r,e){if(e=BigInt(e),F.getWebCrypto()){let o={name:"RSASSA-PKCS1-v1_5",modulusLength:r,publicExponent:Wt(e),hash:{name:"SHA-1"}},a=await bd.generateKey(o,!0,["sign","verify"]),c=await bd.exportKey("jwk",a.privateKey);return g5(c,e)}else if(F.getNodeCrypto()){let o={modulusLength:r,publicExponent:mB(e),publicKeyEncoding:{type:"pkcs1",format:"jwk"},privateKeyEncoding:{type:"pkcs1",format:"jwk"}},a=await new Promise((c,l)=>{Rc.generateKeyPair("rsa",o,(d,u,f)=>{d?l(d):c(f)})});return g5(a,e)}let t,i,n;do i=A5(r-(r>>1),e,40),t=A5(r>>1,e,40),n=t*i;while(Td(n)!==r);let s=(t-wa)*(i-wa);return i<t&&([t,i]=[i,t]),{n:Wt(n),e:Wt(e),d:Wt(Bd(e,s)),p:Wt(t),q:Wt(i),u:Wt(Bd(t,i))}}async function oY(r,e,t,i,n,s){if(r=Te(r),i=Te(i),n=Te(n),i*n!==r)return!1;let o=BigInt(2);if(s=Te(s),rt(i*s,n)!==BigInt(1))return!1;e=Te(e),t=Te(t);let a=BigInt(Math.floor(Td(r)/3)),c=ba(o,o<<a),l=c*t*e;return rt(l,i-wa)===c&&rt(l,n-wa)===c}function aY(r,e,t,i){e=Te(e);let n=Te(M6(r,i,Ei(e)));return t=Te(t),Wt(vr(n,t,e),"be",Ei(e))}async function cY(r,e,t,i,n,s,o,a){let c=e1(t,i,n,s,o,a),l={name:"RSASSA-PKCS1-v1_5",hash:{name:r}},d=await bd.importKey("jwk",c,l,!1,["sign"]);return new Uint8Array(await bd.sign("RSASSA-PKCS1-v1_5",d,e))}function lY(r,e,t,i,n,s,o,a){let c=Rc.createSign(m.read(m.hash,r));c.write(e),c.end();let l=e1(t,i,n,s,o,a);return new Uint8Array(c.sign({key:l,format:"jwk",type:"pkcs1"}))}function dY(r,e,t,i,n){if(t=Te(t),e=Te(e),i=Te(i),e>=t)throw new Error("Signature size cannot exceed modulus size");let s=Wt(vr(e,i,t),"be",Ei(t)),o=M6(r,n,Ei(t));return F.equalsUint8Array(s,o)}async function uY(r,e,t,i,n){let s=t1(i,n),o=await bd.importKey("jwk",s,{name:"RSASSA-PKCS1-v1_5",hash:{name:r}},!1,["verify"]);return bd.verify("RSASSA-PKCS1-v1_5",o,t,e)}function fY(r,e,t,i,n){let o={key:t1(i,n),format:"jwk",type:"pkcs1"},a=Rc.createVerify(m.read(m.hash,r));a.write(e),a.end();try{return a.verify(o,t)}catch{return!1}}function AY(r,e,t){let n={key:t1(e,t),format:"jwk",type:"pkcs1",padding:Rc.constants.RSA_PKCS1_PADDING};return new Uint8Array(Rc.publicEncrypt(n,r))}function hY(r,e,t){if(e=Te(e),r=Te(q6(r,Ei(e))),t=Te(t),r>=e)throw new Error("Message size cannot exceed modulus size");return Wt(vr(r,t,e),"be",Ei(e))}function gY(r,e,t,i,n,s,o){let c={key:e1(e,t,i,n,s,o),format:"jwk",type:"pkcs1",padding:Rc.constants.RSA_PKCS1_PADDING};try{return new Uint8Array(Rc.privateDecrypt(c,r))}catch{throw new Error("Decryption error")}}function pY(r,e,t,i,n,s,o,a){if(r=Te(r),e=Te(e),t=Te(t),i=Te(i),n=Te(n),s=Te(s),o=Te(o),r>=e)throw new Error("Data too large.");let c=rt(i,s-wa),l=rt(i,n-wa),d=ba(BigInt(2),e),u=vr(Bd(d,e),t,e);r=rt(r*u,e);let f=vr(r,l,n),h=vr(r,c,s),p=rt(o*(h-f),s)*n+f;return p=rt(p*d,e),O6(Wt(p,"be",Ei(e)),a)}function e1(r,e,t,i,n,s){let o=Te(i),a=Te(n),c=Te(t),l=rt(c,a-wa),d=rt(c,o-wa);return d=Wt(d),l=Wt(l),{kty:"RSA",n:Tr(r),e:Tr(e),d:Tr(t),p:Tr(n),q:Tr(i),dp:Tr(l),dq:Tr(d),qi:Tr(s),ext:!0}}function t1(r,e){return{kty:"RSA",n:Tr(r),e:Tr(e),ext:!0}}function g5(r,e){return{n:wi(r.n),e:Wt(e),d:wi(r.d),p:wi(r.q),q:wi(r.p),u:wi(r.qi)}}async function mY(r,e,t,i){e=Te(e),t=Te(t),i=Te(i);let n=q6(r,Ei(e)),s=Te(n),o=ba(ga,e-ga);return{c1:Wt(vr(t,o,e)),c2:Wt(rt(vr(i,o,e)*s,e))}}async function yY(r,e,t,i,n){r=Te(r),e=Te(e),t=Te(t),i=Te(i);let s=rt(Bd(vr(r,i,t),t)*e,t);return O6(Wt(s,"be",Ei(t)),n)}async function IY(r,e,t,i){let n=Te(r),s=Te(e),o=Te(t);if(s<=ga||s>=n)return!1;let a=BigInt(Td(n)),c=BigInt(1023);if(a<c||vr(s,n-ga,n)!==ga)return!1;let l=s,d=BigInt(1),u=BigInt(2),f=u<<BigInt(17);for(;d<f;){if(l=rt(l*s,n),l===ga)return!1;d++}let h=Te(i),g=ba(u<<a-ga,u<<a),p=(n-ga)*g+h;return o===vr(s,p,n)}function L6(r){let e=0,t,i=r[0];return i<192?([e]=r,t=1):i<255?(e=(r[0]-192<<8)+r[1]+192,t=2):i===255&&(e=F.readNumber(r.subarray(1,5)),t=5),{len:e,offset:t}}function xI(r){return r<192?new Uint8Array([r]):r>191&&r<8384?new Uint8Array([(r-192>>8)+192,r-192&255]):F.concatUint8Array([new Uint8Array([255]),F.writeNumber(r,4)])}function xY(r){if(r<0||r>30)throw new Error("Partial Length power must be between 1 and 30");return new Uint8Array([224+r])}function qy(r){return new Uint8Array([192|r])}function p5(r,e){return F.concatUint8Array([qy(r),xI(e)])}function ky(r){return[m.packet.literalData,m.packet.compressedData,m.packet.symmetricallyEncryptedData,m.packet.symEncryptedIntegrityProtectedData,m.packet.aeadEncryptedData].includes(r)}async function CY(r,e,t){let i,n;try{let s=await r.peekBytes(2);if(!s||s.length<2||(s[0]&128)===0)throw new Error("Error during parsing. This message / key probably does not conform to a valid OpenPGP format.");let o=await r.readByte(),a=-1,c=-1,l;c=0,(o&64)!==0&&(c=1);let d;c?a=o&63:(a=(o&63)>>2,d=o&3);let u=ky(a),f=null;if(e&&u){if(e==="array"){let g=new on;i=Hi(g),f=g}else{let g=new TransformStream;i=Hi(g.writable),f=g.readable}n=t({tag:a,packet:f})}else f=[];let h;do{if(c){let g=await r.readByte();if(h=!1,g<192)l=g;else if(g>=192&&g<224)l=(g-192<<8)+await r.readByte()+192;else if(g>223&&g<255){if(l=1<<(g&31),h=!0,!u)throw new TypeError("This packet type does not support partial lengths.")}else l=await r.readByte()<<24|await r.readByte()<<16|await r.readByte()<<8|await r.readByte()}else switch(d){case 0:l=await r.readByte();break;case 1:l=await r.readByte()<<8|await r.readByte();break;case 2:l=await r.readByte()<<24|await r.readByte()<<16|await r.readByte()<<8|await r.readByte();break;default:l=1/0;break}if(l>0){let g=0;for(;;){i&&await i.ready;let{done:p,value:I}=await r.read();if(p){if(l===1/0)break;throw new Error("Unexpected end of packet")}let y=l===1/0?I:I.subarray(0,l-g);if(i?await i.write(y):f.push(y),g+=I.length,g>=l){r.unshift(I.subarray(l-g+I.length));break}}}}while(h);i?(await i.ready,await i.close()):(f=F.concatUint8Array(f),await t({tag:a,packet:f}))}catch(s){if(i)return await i.abort(s),!0;throw s}finally{i&&await n}}async function r1(r){switch(r){case m.publicKey.ed25519:try{let e=F.getWebCrypto(),t=await e.generateKey("Ed25519",!0,["sign","verify"]).catch(s=>{if(s.name==="OperationError"){let o=new Error("Unexpected key generation issue");throw o.name="NotSupportedError",o}throw s}),i=await e.exportKey("jwk",t.privateKey),n=await e.exportKey("jwk",t.publicKey);return{A:new Uint8Array(wi(n.x)),seed:wi(i.d,!0)}}catch(e){if(e.name!=="NotSupportedError")throw e;let{default:t}=await Promise.resolve().then(function(){return Jc}),i=Rr(CI(r)),{publicKey:n}=t.sign.keyPair.fromSeed(i);return{A:n,seed:i}}case m.publicKey.ed448:{let e=await F.getNobleCurve(m.publicKey.ed448),{secretKey:t,publicKey:i}=e.keygen();return{A:i,seed:t}}default:throw new Error("Unsupported EdDSA algorithm")}}async function i1(r,e,t,i,n,s){if(gr(e)<gr(EI(r)))throw new Error("Hash algorithm too weak for EdDSA.");switch(r){case m.publicKey.ed25519:try{let o=F.getWebCrypto(),a=H6(r,i,n),c=await o.importKey("jwk",a,"Ed25519",!1,["sign"]);return{RS:new Uint8Array(await o.sign("Ed25519",c,s))}}catch(o){if(o.name!=="NotSupportedError")throw o;let{default:a}=await Promise.resolve().then(function(){return Jc}),c=F.concatUint8Array([n,i]);return{RS:a.sign.detached(s,c)}}case m.publicKey.ed448:return{RS:(await F.getNobleCurve(m.publicKey.ed448)).sign(s,n)};default:throw new Error("Unsupported EdDSA algorithm")}}async function n1(r,e,{RS:t},i,n,s){if(gr(e)<gr(EI(r)))throw new Error("Hash algorithm too weak for EdDSA.");switch(r){case m.publicKey.ed25519:try{let o=F.getWebCrypto(),a=o1(r,n),c=await o.importKey("jwk",a,"Ed25519",!1,["verify"]);return await o.verify("Ed25519",c,t,s)}catch(o){if(o.name!=="NotSupportedError")throw o;let{default:a}=await Promise.resolve().then(function(){return Jc});return a.sign.detached.verify(s,t,n)}case m.publicKey.ed448:return(await F.getNobleCurve(m.publicKey.ed448)).verify(t,s,n);default:throw new Error("Unsupported EdDSA algorithm")}}async function s1(r,e,t){switch(r){case m.publicKey.ed25519:try{let i=F.getWebCrypto(),n=H6(r,e,t),s=o1(r,e),o=await i.importKey("jwk",n,"Ed25519",!1,["sign"]),a=await i.importKey("jwk",s,"Ed25519",!1,["verify"]),c=Rr(8),l=new Uint8Array(await i.sign("Ed25519",o,c));return await i.verify("Ed25519",a,l,c)}catch(i){if(i.name!=="NotSupportedError")return!1;let{default:n}=await Promise.resolve().then(function(){return Jc}),{publicKey:s}=n.sign.keyPair.fromSeed(t);return F.equalsUint8Array(e,s)}case m.publicKey.ed448:{let n=(await F.getNobleCurve(m.publicKey.ed448)).getPublicKey(t);return F.equalsUint8Array(e,n)}default:return!1}}function CI(r){switch(r){case m.publicKey.ed25519:return 32;case m.publicKey.ed448:return 57;default:throw new Error("Unsupported EdDSA algorithm")}}function EI(r){switch(r){case m.publicKey.ed25519:return m.hash.sha256;case m.publicKey.ed448:return m.hash.sha512;default:throw new Error("Unknown EdDSA algo")}}function K6(r){return r instanceof Uint8Array||ArrayBuffer.isView(r)&&r.constructor.name==="Uint8Array"}function kt(r,...e){if(!K6(r))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(r.length))throw new Error("Uint8Array expected of length "+e+", got length="+r.length)}function Oy(r,e=!0){if(r.destroyed)throw new Error("Hash instance has been destroyed");if(e&&r.finished)throw new Error("Hash#digest() has already been called")}function G6(r,e){kt(r);let t=e.outputLen;if(r.length<t)throw new Error("digestInto() expects output buffer of length at least "+t)}function a1(r){return new Uint8Array(r.buffer,r.byteOffset,r.byteLength)}function Et(r){return new Uint32Array(r.buffer,r.byteOffset,Math.floor(r.byteLength/4))}function Xr(...r){for(let e=0;e<r.length;e++)r[e].fill(0)}function BI(r){return new DataView(r.buffer,r.byteOffset,r.byteLength)}function bY(r){if(typeof r!="string")throw new Error("string expected");return new Uint8Array(new TextEncoder().encode(r))}function zf(r){if(typeof r=="string")r=bY(r);else if(K6(r))r=Bi(r);else throw new Error("Uint8Array expected, got "+typeof r);return r}function z6(r,e){return r.buffer===e.buffer&&r.byteOffset<e.byteOffset+e.byteLength&&e.byteOffset<r.byteOffset+r.byteLength}function c1(r,e){if(z6(r,e)&&r.byteOffset<e.byteOffset)throw new Error("complex overlap of input and output is not supported")}function vY(...r){let e=0;for(let i=0;i<r.length;i++){let n=r[i];kt(n),e+=n.length}let t=new Uint8Array(e);for(let i=0,n=0;i<r.length;i++){let s=r[i];t.set(s,n),n+=s.length}return t}function J6(r,e){if(r.length!==e.length)return!1;let t=0;for(let i=0;i<r.length;i++)t|=r[i]^e[i];return t===0}function fA(r,e,t=!0){if(e===void 0)return new Uint8Array(r);if(e.length!==r)throw new Error("invalid output length, expected "+r+", got: "+e.length);if(t&&!sn(e))throw new Error("invalid output, must be aligned");return e}function yB(r,e,t,i){if(typeof r.setBigUint64=="function")return r.setBigUint64(e,t,i);let n=BigInt(32),s=BigInt(4294967295),o=Number(t>>n&s),a=Number(t&s),c=0,l=4;r.setUint32(e+c,o,i),r.setUint32(e+l,a,i)}function kY(r,e,t){let i=new Uint8Array(16),n=BI(i);return yB(n,0,BigInt(e),t),yB(n,8,BigInt(r),t),i}function sn(r){return r.byteOffset%4===0}function Bi(r){return Uint8Array.from(r)}function QY(r){r.reverse();let e=r[15]&1,t=0;for(let i=0;i<r.length;i++){let n=r[i];r[i]=n>>>1|t,t=(n&1)<<7}return r[0]^=-e&225,r}function j6(r){let e=(i,n)=>r(n,i.length).update(zf(i)).digest(),t=r(new Uint8Array(16),0);return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=(i,n)=>r(i,n),e}function u1(r){return r<<1^FY&-(r>>7)}function Ad(r,e){let t=0;for(;e>0;e>>=1)t^=r&-(e&1),r=u1(r);return t}function $6(r,e){if(r.length!==256)throw new Error("Wrong sbox length");let t=new Uint32Array(256).map((l,d)=>e(r[d])),i=t.map(ME),n=i.map(ME),s=n.map(ME),o=new Uint32Array(256*256),a=new Uint32Array(256*256),c=new Uint16Array(256*256);for(let l=0;l<256;l++)for(let d=0;d<256;d++){let u=l*256+d;o[u]=t[l]^i[d],a[u]=n[l]^s[d],c[u]=r[l]<<8|r[d]}return{sbox:r,sbox2:c,T0:t,T1:i,T2:n,T3:s,T01:o,T23:a}}function Kc(r){kt(r);let e=r.length;if(![16,24,32].includes(e))throw new Error("aes: invalid key size, should be 16, 24 or 32, got "+e);let{sbox2:t}=f1,i=[];sn(r)||i.push(r=Bi(r));let n=Et(r),s=n.length,o=c=>os(t,c,c,c,c),a=new Uint32Array(e+28);a.set(n);for(let c=s;c<a.length;c++){let l=a[c-1];c%s===0?l=o(TY(l))^UY[c/s-1]:s>6&&c%s===4&&(l=o(l)),a[c]=a[c-s]^l}return Xr(...i),a}function A1(r){let e=Kc(r),t=e.slice(),i=e.length,{sbox2:n}=f1,{T0:s,T1:o,T2:a,T3:c}=V6;for(let l=0;l<i;l+=4)for(let d=0;d<4;d++)t[l+d]=e[i-l-4+d];Xr(e);for(let l=4;l<i-4;l++){let d=t[l],u=os(n,d,d,d,d);t[l]=s[u&255]^o[u>>>8&255]^a[u>>>16&255]^c[u>>>24]}return t}function ma(r,e,t,i,n,s){return r[t<<8&65280|i>>>8&255]^e[n>>>8&65280|s>>>24&255]}function os(r,e,t,i,n){return r[e&255|t&65280]|r[i>>>16&255|n>>>16&65280]<<16}function Fn(r,e,t,i,n){let{sbox2:s,T01:o,T23:a}=f1,c=0;e^=r[c++],t^=r[c++],i^=r[c++],n^=r[c++];let l=r.length/4-2;for(let g=0;g<l;g++){let p=r[c++]^ma(o,a,e,t,i,n),I=r[c++]^ma(o,a,t,i,n,e),y=r[c++]^ma(o,a,i,n,e,t),w=r[c++]^ma(o,a,n,e,t,i);e=p,t=I,i=y,n=w}let d=r[c++]^os(s,e,t,i,n),u=r[c++]^os(s,t,i,n,e),f=r[c++]^os(s,i,n,e,t),h=r[c++]^os(s,n,e,t,i);return{s0:d,s1:u,s2:f,s3:h}}function bI(r,e,t,i,n){let{sbox2:s,T01:o,T23:a}=V6,c=0;e^=r[c++],t^=r[c++],i^=r[c++],n^=r[c++];let l=r.length/4-2;for(let g=0;g<l;g++){let p=r[c++]^ma(o,a,e,n,i,t),I=r[c++]^ma(o,a,t,e,n,i),y=r[c++]^ma(o,a,i,t,e,n),w=r[c++]^ma(o,a,n,i,t,e);e=p,t=I,i=y,n=w}let d=r[c++]^os(s,e,n,i,t),u=r[c++]^os(s,t,e,n,i),f=r[c++]^os(s,i,t,e,n),h=r[c++]^os(s,n,i,t,e);return{s0:d,s1:u,s2:f,s3:h}}function Y6(r,e,t,i){kt(e,bi),kt(t);let n=t.length;i=fA(n,i),c1(t,i);let s=e,o=Et(s),{s0:a,s1:c,s2:l,s3:d}=Fn(r,o[0],o[1],o[2],o[3]),u=Et(t),f=Et(i);for(let g=0;g+4<=u.length;g+=4){f[g+0]=u[g+0]^a,f[g+1]=u[g+1]^c,f[g+2]=u[g+2]^l,f[g+3]=u[g+3]^d;let p=1;for(let I=s.length-1;I>=0;I--)p=p+(s[I]&255)|0,s[I]=p&255,p>>>=8;({s0:a,s1:c,s2:l,s3:d}=Fn(r,o[0],o[1],o[2],o[3]))}let h=bi*Math.floor(u.length/d1);if(h<n){let g=new Uint32Array([a,c,l,d]),p=a1(g);for(let I=h,y=0;I<n;I++,y++)i[I]=t[I]^p[y];Xr(g)}return i}function qf(r,e,t,i,n){kt(t,bi),kt(i),n=fA(i.length,n);let s=t,o=Et(s),a=BI(s),c=Et(i),l=Et(n),d=e?0:12,u=i.length,f=a.getUint32(d,e),{s0:h,s1:g,s2:p,s3:I}=Fn(r,o[0],o[1],o[2],o[3]);for(let w=0;w+4<=c.length;w+=4)l[w+0]=c[w+0]^h,l[w+1]=c[w+1]^g,l[w+2]=c[w+2]^p,l[w+3]=c[w+3]^I,f=f+1>>>0,a.setUint32(d,f,e),{s0:h,s1:g,s2:p,s3:I}=Fn(r,o[0],o[1],o[2],o[3]);let y=bi*Math.floor(c.length/d1);if(y<u){let w=new Uint32Array([h,g,p,I]),C=a1(w);for(let b=y,x=0;b<u;b++,x++)n[b]=i[b]^C[x];Xr(w)}return n}function NY(r){if(kt(r),r.length%bi!==0)throw new Error("aes-(cbc/ecb).decrypt ciphertext should consist of blocks with size "+bi)}function qY(r,e,t){kt(r);let i=r.length,n=i%bi;if(!e&&n!==0)throw new Error("aec/(cbc-ecb): unpadded plaintext with disabled padding");sn(r)||(r=Bi(r));let s=Et(r);if(e){let a=bi-n;a||(a=bi),i=i+a}t=fA(i,t),c1(r,t);let o=Et(t);return{b:s,o,out:t}}function OY(r,e){if(!e)return r;let t=r.length;if(!t)throw new Error("aes/pcks5: empty ciphertext not allowed");let i=r[t-1];if(i<=0||i>16)throw new Error("aes/pcks5: wrong padding");let n=r.subarray(0,-i);for(let s=0;s<i;s++)if(r[t-s-1]!==i)throw new Error("aes/pcks5: wrong padding");return n}function MY(r){let e=new Uint8Array(16),t=Et(e);e.set(r);let i=bi-r.length;for(let n=bi-i;n<bi;n++)e[n]=i;return t}function LY(r,e,t,i,n){let s=n?n.length:0,o=r.create(t,i.length+s);n&&o.update(n);let a=kY(8*i.length,8*s,e);o.update(i),o.update(a);let c=o.digest();return Xr(a),c}function X6(r){return r instanceof Uint32Array||ArrayBuffer.isView(r)&&r.constructor.name==="Uint32Array"}function Z6(r,e){if(kt(e,16),!X6(r))throw new Error("_encryptBlock accepts result of expandKeyLE");let t=Et(e),{s0:i,s1:n,s2:s,s3:o}=Fn(r,t[0],t[1],t[2],t[3]);return t[0]=i,t[1]=n,t[2]=s,t[3]=o,e}function eT(r,e){if(kt(e,16),!X6(r))throw new Error("_decryptBlock accepts result of expandKeyLE");let t=Et(e),{s0:i,s1:n,s2:s,s3:o}=bI(r,t[0],t[1],t[2],t[3]);return t[0]=i,t[1]=n,t[2]=s,t[3]=o,e}async function rT(r){switch(r){case m.symmetric.aes128:case m.symmetric.aes192:case m.symmetric.aes256:throw new Error("Not a legacy cipher");case m.symmetric.cast5:case m.symmetric.blowfish:case m.symmetric.twofish:case m.symmetric.tripledes:{let{legacyCiphers:e}=await Promise.resolve().then(function(){return fte}),t=m.read(m.symmetric,r),i=e.get(t);if(!i)throw new Error("Unsupported cipher algorithm");return i}default:throw new Error("Unsupported cipher algorithm")}}function HY(r){switch(r){case m.symmetric.aes128:case m.symmetric.aes192:case m.symmetric.aes256:case m.symmetric.twofish:return 16;case m.symmetric.blowfish:case m.symmetric.cast5:case m.symmetric.tripledes:return 8;default:throw new Error("Unsupported cipher")}}function KY(r){switch(r){case m.symmetric.aes128:case m.symmetric.blowfish:case m.symmetric.cast5:return 16;case m.symmetric.aes192:case m.symmetric.tripledes:return 24;case m.symmetric.aes256:case m.symmetric.twofish:return 32;default:throw new Error("Unsupported cipher")}}function It(r){return{keySize:KY(r),blockSize:HY(r)}}async function CB(r,e,t){let{keySize:i}=It(r);if(!F.isAES(r)||e.length!==i)throw new Error("Unexpected algorithm or key size");try{let n=await Id.importKey("raw",e,{name:"AES-KW"},!1,["wrapKey"]),s=await Id.importKey("raw",t,{name:"HMAC",hash:"SHA-256"},!0,["sign"]),o=await Id.wrapKey("raw",s,n,{name:"AES-KW"});return new Uint8Array(o)}catch(n){if(n.name!=="NotSupportedError"&&!(e.length===24&&n.name==="OperationError"))throw n;F.printDebugError("Browser did not support operation: "+n.message)}return tT(e).encrypt(t)}async function EB(r,e,t){let{keySize:i}=It(r);if(!F.isAES(r)||e.length!==i)throw new Error("Unexpected algorithm or key size");let n;try{n=await Id.importKey("raw",e,{name:"AES-KW"},!1,["unwrapKey"])}catch(s){if(s.name!=="NotSupportedError"&&!(e.length===24&&s.name==="OperationError"))throw s;return F.printDebugError("Browser did not support operation: "+s.message),tT(e).decrypt(t)}try{let s=await Id.unwrapKey("raw",t,n,{name:"AES-KW"},{name:"HMAC",hash:"SHA-256"},!0,["sign"]);return new Uint8Array(await Id.exportKey("raw",s))}catch(s){throw s.name==="OperationError"?new Error("Key Data Integrity failed"):s}}async function xa(r,e,t,i,n){let s=F.getWebCrypto(),o=m.read(m.webHash,r);if(!o)throw new Error("Hash algo not supported with HKDF");let a=await s.importKey("raw",e,"HKDF",!1,["deriveBits"]),c=await s.deriveBits({name:"HKDF",hash:o,salt:t,info:i},a,n*8);return new Uint8Array(c)}async function h1(r){switch(r){case m.publicKey.x25519:try{let e=F.getWebCrypto(),t=await e.generateKey("X25519",!0,["deriveKey","deriveBits"]).catch(s=>{if(s.name==="OperationError"){let o=new Error("Unexpected key generation issue");throw o.name="NotSupportedError",o}throw s}),i=await e.exportKey("jwk",t.privateKey),n=await e.exportKey("jwk",t.publicKey);if(i.x!==n.x){let s=new Error("Unexpected mismatching public point");throw s.name="NotSupportedError",s}return{A:new Uint8Array(wi(n.x)),k:wi(i.d)}}catch(e){if(e.name!=="NotSupportedError")throw e;let{default:t}=await Promise.resolve().then(function(){return Jc}),{secretKey:i,publicKey:n}=t.box.keyPair();return{A:n,k:i}}case m.publicKey.x448:{let e=await F.getNobleCurve(m.publicKey.x448),{secretKey:t,publicKey:i}=e.keygen();return{A:i,k:t}}default:throw new Error("Unsupported ECDH algorithm")}}async function g1(r,e,t){switch(r){case m.publicKey.x25519:try{let{ephemeralPublicKey:i,sharedSecret:n}=await kI(r,e),s=await SI(r,i,e,t);return F.equalsUint8Array(n,s)}catch{return!1}case m.publicKey.x448:{let n=(await F.getNobleCurve(m.publicKey.x448)).getPublicKey(t);return F.equalsUint8Array(e,n)}default:return!1}}async function iT(r,e,t){let{ephemeralPublicKey:i,sharedSecret:n}=await kI(r,t),s=F.concatUint8Array([i,t,n]);switch(r){case m.publicKey.x25519:{let o=m.symmetric.aes128,{keySize:a}=It(o),c=await xa(m.hash.sha256,s,new Uint8Array,Ly.x25519,a),l=await CB(o,c,e);return{ephemeralPublicKey:i,wrappedKey:l}}case m.publicKey.x448:{let o=m.symmetric.aes256,{keySize:a}=It(m.symmetric.aes256),c=await xa(m.hash.sha512,s,new Uint8Array,Ly.x448,a),l=await CB(o,c,e);return{ephemeralPublicKey:i,wrappedKey:l}}default:throw new Error("Unsupported ECDH algorithm")}}async function nT(r,e,t,i,n){let s=await SI(r,e,i,n),o=F.concatUint8Array([e,i,s]);switch(r){case m.publicKey.x25519:{let a=m.symmetric.aes128,{keySize:c}=It(a),l=await xa(m.hash.sha256,o,new Uint8Array,Ly.x25519,c);return EB(a,l,t)}case m.publicKey.x448:{let a=m.symmetric.aes256,{keySize:c}=It(m.symmetric.aes256),l=await xa(m.hash.sha512,o,new Uint8Array,Ly.x448,c);return EB(a,l,t)}default:throw new Error("Unsupported ECDH algorithm")}}function vI(r){switch(r){case m.publicKey.x25519:return 32;case m.publicKey.x448:return 56;default:throw new Error("Unsupported ECDH algorithm")}}async function kI(r,e){switch(r){case m.publicKey.x25519:try{let t=F.getWebCrypto(),i=await t.generateKey("X25519",!0,["deriveKey","deriveBits"]).catch(l=>{if(l.name==="OperationError"){let d=new Error("Unexpected key generation issue");throw d.name="NotSupportedError",d}throw l}),n=await t.exportKey("jwk",i.publicKey);if((await t.exportKey("jwk",i.privateKey)).x!==n.x){let l=new Error("Unexpected mismatching public point");throw l.name="NotSupportedError",l}let o=p1(r,e),a=await t.importKey("jwk",o,"X25519",!1,[]),c=await t.deriveBits({name:"X25519",public:a},i.privateKey,vI(r)*8);return{sharedSecret:new Uint8Array(c),ephemeralPublicKey:new Uint8Array(wi(n.x))}}catch(t){if(t.name!=="NotSupportedError")throw t;let{default:i}=await Promise.resolve().then(function(){return Jc}),{secretKey:n,publicKey:s}=i.box.keyPair(),o=i.scalarMult(n,e);return Hy(o),{ephemeralPublicKey:s,sharedSecret:o}}case m.publicKey.x448:{let t=await F.getNobleCurve(m.publicKey.x448),{secretKey:i,publicKey:n}=t.keygen(),s=t.getSharedSecret(i,e);return Hy(s),{ephemeralPublicKey:n,sharedSecret:s}}default:throw new Error("Unsupported ECDH algorithm")}}async function SI(r,e,t,i){switch(r){case m.publicKey.x25519:try{let n=F.getWebCrypto(),s=GY(r,t,i),o=p1(r,e),a=await n.importKey("jwk",s,"X25519",!1,["deriveKey","deriveBits"]),c=await n.importKey("jwk",o,"X25519",!1,[]),l=await n.deriveBits({name:"X25519",public:c},a,vI(r)*8);return new Uint8Array(l)}catch(n){if(n.name!=="NotSupportedError")throw n;let{default:s}=await Promise.resolve().then(function(){return Jc}),o=s.scalarMult(i,e);return Hy(o),o}case m.publicKey.x448:{let s=(await F.getNobleCurve(m.publicKey.x448)).getSharedSecret(i,e);return Hy(s),s}default:throw new Error("Unsupported ECDH algorithm")}}function Hy(r){let e=0;for(let t=0;t<r.length;t++)e|=r[t];if(e===0)throw new Error("Unexpected low order point")}function p1(r,e){if(r===m.publicKey.x25519)return{kty:"OKP",crv:"X25519",x:Tr(e),ext:!0};throw new Error("Unsupported ECDH algorithm")}function GY(r,e,t){if(r===m.publicKey.x25519){let i=p1(r,e);return i.d=Tr(t),i}else throw new Error("Unsupported ECDH algorithm")}async function Sy(r){let e=new vi(r),{oid:t,hash:i,cipher:n}=e,s=await e.genKeyPair();return{oid:t,Q:s.publicKey,secret:F.leftPad(s.privateKey,e.payloadSize),hash:i,cipher:n}}function oT(r){return sT[r.getName()].hash}async function aT(r,e,t,i){let n={[m.curve.nistP256]:!0,[m.curve.nistP384]:!0,[m.curve.nistP521]:!0,[m.curve.secp256k1]:!0,[m.curve.curve25519Legacy]:r===m.publicKey.ecdh,[m.curve.brainpoolP256r1]:!0,[m.curve.brainpoolP384r1]:!0,[m.curve.brainpoolP512r1]:!0},s=e.getName();if(!n[s])return!1;if(s===m.curve.curve25519Legacy){let c=i.slice().reverse();return t.length<1||t[0]!==64?!1:g1(m.publicKey.x25519,t.subarray(1),c)}let a=(await F.getNobleCurve(m.publicKey.ecdsa,s)).getPublicKey(i,!1);return!!F.equalsUint8Array(a,t)}function Nc(r,e){let{payloadSize:t,wireFormatLeadingByte:i,name:n}=r,s=n===m.curve.curve25519Legacy||n===m.curve.ed25519Legacy?t:t*2;if(e[0]!==i||e.length!==s+1)throw new Error("Invalid point encoding")}async function C5(r){let e=await F.getNobleCurve(m.publicKey.ecdsa,r),{secretKey:t}=e.keygen();return{publicKey:e.getPublicKey(t,!1),privateKey:t}}async function JY(r,e){let t=await LE.generateKey({name:"ECDSA",namedCurve:ls[r]},!0,["sign","verify"]),i=await LE.exportKey("jwk",t.privateKey),n=await LE.exportKey("jwk",t.publicKey);return{publicKey:cT(n,e),privateKey:wi(i.d)}}function jY(r){let e=Ky.createECDH(is[r]);return e.generateKeys(),{publicKey:new Uint8Array(e.getPublicKey()),privateKey:new Uint8Array(e.getPrivateKey())}}function cT(r,e){let t=wi(r.x),i=wi(r.y),n=new Uint8Array(t.length+i.length+1);return n[0]=e,n.set(t,1),n.set(i,t.length+1),n}function DI(r,e,t){let i=r,n=t.slice(1,i+1),s=t.slice(i+1,i*2+1);return{kty:"EC",crv:e,x:Tr(n),y:Tr(s),ext:!0}}function lT(r,e,t,i){let n=DI(r,e,t);return n.d=Tr(i),n}async function m1(r,e,t,i,n,s){let o=new vi(r);if(Nc(o,i),t&&!F.isStream(t)){let l={publicKey:i,privateKey:n};switch(o.type){case"web":try{return await VY(o,e,t,l)}catch(d){if(o.name!=="nistP521"&&(d.name==="DataError"||d.name==="OperationError"))throw d;F.printDebugError("Browser did not support signing: "+d.message)}break;case"node":return WY(o,e,t,n)}}let c=(await F.getNobleCurve(m.publicKey.ecdsa,o.name)).sign(s,n,{lowS:!1});return{r:Wt(c.r,"be",o.payloadSize),s:Wt(c.s,"be",o.payloadSize)}}async function y1(r,e,t,i,n,s){let o=new vi(r);Nc(o,n);let a=async()=>s[0]===0?E5(o,t,s.subarray(1),n):!1;if(i&&!F.isStream(i))switch(o.type){case"web":try{return await YY(o,e,t,i,n)||a()}catch(l){if(o.name!=="nistP521"&&(l.name==="DataError"||l.name==="OperationError"))throw l;F.printDebugError("Browser did not support verifying: "+l.message)}break;case"node":return XY(o,e,t,i,n)||a()}return await E5(o,t,s,n)||a()}async function $Y(r,e,t){let i=new vi(r);if(i.keyType!==m.publicKey.ecdsa)return!1;switch(i.type){case"web":case"node":{let n=Rr(8),s=m.hash.sha256,o=await fs(s,n);try{let a=await m1(r,s,n,e,t,o);return await y1(r,s,a,n,e,o)}catch{return!1}}default:return aT(m.publicKey.ecdsa,r,e,t)}}async function E5(r,e,t,i){return(await F.getNobleCurve(m.publicKey.ecdsa,r.name)).verify(F.concatUint8Array([e.r,e.s]),t,i,{lowS:!1})}async function VY(r,e,t,i){let n=r.payloadSize,s=lT(r.payloadSize,ls[r.name],i.publicKey,i.privateKey),o=await Gy.importKey("jwk",s,{name:"ECDSA",namedCurve:ls[r.name],hash:{name:m.read(m.webHash,r.hash)}},!1,["sign"]),a=new Uint8Array(await Gy.sign({name:"ECDSA",namedCurve:ls[r.name],hash:{name:m.read(m.webHash,e)}},o,t));return{r:a.slice(0,n),s:a.slice(n,n<<1)}}async function YY(r,e,{r:t,s:i},n,s){let o=DI(r.payloadSize,ls[r.name],s),a=await Gy.importKey("jwk",o,{name:"ECDSA",namedCurve:ls[r.name],hash:{name:m.read(m.webHash,r.hash)}},!1,["verify"]),c=F.concatUint8Array([t,i]).buffer;return Gy.verify({name:"ECDSA",namedCurve:ls[r.name],hash:{name:m.read(m.webHash,e)}},a,c,n)}function WY(r,e,t,i){let n=F.nodeRequire("eckey-utils"),s=F.getNodeBuffer(),{privateKey:o}=n.generateDer({curveName:is[r.name],privateKey:s.from(i)}),a=dT.createSign(m.read(m.hash,e));a.write(t),a.end();let c=new Uint8Array(a.sign({key:o,format:"der",type:"sec1",dsaEncoding:"ieee-p1363"})),l=r.payloadSize;return{r:c.subarray(0,l),s:c.subarray(l,l<<1)}}function XY(r,e,{r:t,s:i},n,s){let o=F.nodeRequire("eckey-utils"),a=F.getNodeBuffer(),{publicKey:c}=o.generateDer({curveName:is[r.name],publicKey:a.from(s)}),l=dT.createVerify(m.read(m.hash,e));l.write(n),l.end();let d=F.concatUint8Array([t,i]);try{return l.verify({key:c,format:"der",type:"spki",dsaEncoding:"ieee-p1363"},d)}catch{return!1}}async function uT(r,e,t,i,n,s){let o=new vi(r);if(Nc(o,i),gr(e)<gr(m.hash.sha256))throw new Error("Hash algorithm too weak for EdDSA.");let{RS:a}=await i1(m.publicKey.ed25519,e,t,i.subarray(1),n,s);return{r:a.subarray(0,32),s:a.subarray(32)}}async function fT(r,e,{r:t,s:i},n,s,o){let a=new vi(r);if(Nc(a,s),gr(e)<gr(m.hash.sha256))throw new Error("Hash algorithm too weak for EdDSA.");let c=F.concatUint8Array([t,i]);return n1(m.publicKey.ed25519,e,{RS:c},n,s.subarray(1),o)}async function AT(r,e,t){return r.getName()!==m.curve.ed25519Legacy||e.length<1||e[0]!==64?!1:s1(m.publicKey.ed25519,e.subarray(1),t)}function tW(r){let e=8-r.length%8,t=new Uint8Array(r.length+e).fill(e);return t.set(r),t}function rW(r){let e=r.length;if(e>0){let t=r[e-1];if(t>=1){let i=r.subarray(e-t),n=new Uint8Array(t).fill(t);if(F.equalsUint8Array(i,n))return r.subarray(0,e-t)}}throw new Error("Invalid padding")}async function iW(r,e,t){return aT(m.publicKey.ecdh,r,e,t)}function hT(r,e,t,i){return F.concatUint8Array([e.write(),new Uint8Array([r]),t.write(),F.stringToUint8Array("Anonymous Sender "),i])}async function gT(r,e,t,i,n=!1,s=!1){let o;if(n){for(o=0;o<e.length&&e[o]===0;o++);e=e.subarray(o)}if(s){for(o=e.length-1;o>=0&&e[o]===0;o--);e=e.subarray(0,o+1)}return(await fs(r,F.concatUint8Array([new Uint8Array([0,0,0,1]),e,i]))).subarray(0,t)}async function nW(r,e){switch(r.type){case"curve25519Legacy":{let{sharedSecret:t,ephemeralPublicKey:i}=await kI(m.publicKey.x25519,e.subarray(1));return{publicKey:F.concatUint8Array([new Uint8Array([r.wireFormatLeadingByte]),i]),sharedKey:t}}case"web":if(r.web&&F.getWebCrypto())try{return await aW(r,e)}catch(t){return F.printDebugError(t),b5(r,e)}break;case"node":return lW(r,e);default:return b5(r,e)}}async function pT(r,e,t,i,n){let s=tW(t),o=new vi(r);Nc(o,i);let{publicKey:a,sharedKey:c}=await nW(o,i),l=hT(m.publicKey.ecdh,r,e,n),{keySize:d}=It(e.cipher),u=await gT(e.hash,c,d,l),f=await CB(e.cipher,u,s);return{publicKey:a,wrappedKey:f}}async function sW(r,e,t,i){if(i.length!==r.payloadSize){let n=new Uint8Array(r.payloadSize);n.set(i,r.payloadSize-i.length),i=n}switch(r.type){case"curve25519Legacy":{let n=i.slice().reverse(),s=await SI(m.publicKey.x25519,e.subarray(1),t.subarray(1),n);return{secretKey:n,sharedKey:s}}case"web":if(r.web&&F.getWebCrypto())try{return await oW(r,e,t,i)}catch(n){return F.printDebugError(n),B5(r,e,i)}break;case"node":return cW(r,e,i);default:return B5(r,e,i)}}async function mT(r,e,t,i,n,s,o){let a=new vi(r);Nc(a,n),Nc(a,t);let{sharedKey:c}=await sW(a,t,n,s),l=hT(m.publicKey.ecdh,r,e,o),{keySize:d}=It(e.cipher),u;for(let f=0;f<3;f++)try{let h=await gT(e.hash,c,d,l,f===1,f===2);return rW(await EB(e.cipher,h,i))}catch(h){u=h}throw u}async function B5(r,e,t){let s=(await F.getNobleCurve(m.publicKey.ecdh,r.name)).getSharedSecret(t,e).subarray(1);return{secretKey:t,sharedKey:s}}async function b5(r,e){let t=await F.getNobleCurve(m.publicKey.ecdh,r.name),{publicKey:i,privateKey:n}=await r.genKeyPair(),o=t.getSharedSecret(n,e).subarray(1);return{publicKey:i,sharedKey:o}}async function oW(r,e,t,i){let n=F.getWebCrypto(),s=lT(r.payloadSize,r.web,t,i),o=n.importKey("jwk",s,{name:"ECDH",namedCurve:r.web},!0,["deriveKey","deriveBits"]),a=DI(r.payloadSize,r.web,e),c=n.importKey("jwk",a,{name:"ECDH",namedCurve:r.web},!0,[]);[o,c]=await Promise.all([o,c]);let l=n.deriveBits({name:"ECDH",namedCurve:r.web,public:c},o,r.sharedSize),d=n.exportKey("jwk",o);[l,d]=await Promise.all([l,d]);let u=new Uint8Array(l);return{secretKey:wi(d.d),sharedKey:u}}async function aW(r,e){let t=F.getWebCrypto(),i=DI(r.payloadSize,r.web,e),n=t.generateKey({name:"ECDH",namedCurve:r.web},!0,["deriveKey","deriveBits"]),s=t.importKey("jwk",i,{name:"ECDH",namedCurve:r.web},!1,[]);[n,s]=await Promise.all([n,s]);let o=t.deriveBits({name:"ECDH",namedCurve:r.web,public:s},n.privateKey,r.sharedSize),a=t.exportKey("jwk",n.publicKey);[o,a]=await Promise.all([o,a]);let c=new Uint8Array(o);return{publicKey:new Uint8Array(cT(a,r.wireFormatLeadingByte)),sharedKey:c}}function cW(r,e,t){let n=F.getNodeCrypto().createECDH(r.node);n.setPrivateKey(t);let s=new Uint8Array(n.computeSecret(e));return{secretKey:new Uint8Array(n.getPrivateKey()),sharedKey:s}}function lW(r,e){let i=F.getNodeCrypto().createECDH(r.node);i.generateKeys();let n=new Uint8Array(i.computeSecret(e));return{publicKey:new Uint8Array(i.getPublicKey()),sharedKey:n}}async function fW(r,e,t,i,n,s){let o=BigInt(0);i=Te(i),n=Te(n),t=Te(t),s=Te(s);let a,c,l,d;t=rt(t,i),s=rt(s,n);let u=rt(Te(e.subarray(0,Ei(n))),n);for(;;){if(a=ba(Of,n),c=rt(vr(t,a,i),n),c===o)continue;let f=rt(s*c,n);if(d=rt(u+f,n),l=rt(Bd(a,n)*d,n),l!==o)break}return{r:Wt(c,"be",Ei(i)),s:Wt(l,"be",Ei(i))}}async function AW(r,e,t,i,n,s,o,a){if(e=Te(e),t=Te(t),s=Te(s),o=Te(o),n=Te(n),a=Te(a),e<=Dy||e>=o||t<=Dy||t>=o)return F.printDebug("invalid DSA Signature"),!1;let c=rt(Te(i.subarray(0,Ei(o))),o),l=Bd(t,o);if(l===Dy)return F.printDebug("invalid DSA Signature"),!1;n=rt(n,s),a=rt(a,s);let d=rt(c*l,o),u=rt(e*l,o),f=vr(n,d,s),h=vr(a,u,s);return rt(rt(f*h,s),o)===e}async function hW(r,e,t,i,n){let s=Te(r),o=Te(e),a=Te(t),c=Te(i);if(a<=Of||a>=s||rt(s-Of,o)!==Dy||vr(a,o,s)!==Of)return!1;let l=BigInt(Td(o)),d=BigInt(150);if(l<d||!N6(o,null,32))return!1;let u=Te(n),f=BigInt(2),h=ba(f<<l-Of,f<<l),g=o*h+u;return c===vr(a,g,s)}async function gW(r,e,t,i,n){switch(r){case m.publicKey.rsaEncrypt:case m.publicKey.rsaEncryptSign:{let{n:s,e:o}=t;return{c:await iY(i,s,o)}}case m.publicKey.elgamal:{let{p:s,g:o,y:a}=t;return mY(i,s,o,a)}case m.publicKey.ecdh:{let{oid:s,Q:o,kdfParams:a}=t,{publicKey:c,wrappedKey:l}=await pT(s,a,i,o,n);return{V:c,C:new zy(l)}}case m.publicKey.x25519:case m.publicKey.x448:{if(e&&!F.isAES(e))throw new Error("X25519 and X448 keys can only encrypt AES session keys");let{A:s}=t,{ephemeralPublicKey:o,wrappedKey:a}=await iT(r,i,s),c=jy.fromObject({algorithm:e,wrappedKey:a});return{ephemeralPublicKey:o,C:c}}default:return[]}}async function pW(r,e,t,i,n,s){switch(r){case m.publicKey.rsaEncryptSign:case m.publicKey.rsaEncrypt:{let{c:o}=i,{n:a,e:c}=e,{d:l,p:d,q:u,u:f}=t;return nY(o,a,c,l,d,u,f,s)}case m.publicKey.elgamal:{let{c1:o,c2:a}=i,c=e.p,l=t.x;return yY(o,a,c,l,s)}case m.publicKey.ecdh:{let{oid:o,Q:a,kdfParams:c}=e,{d:l}=t,{V:d,C:u}=i;return mT(o,c,d,u.data,a,l,n)}case m.publicKey.x25519:case m.publicKey.x448:{let{A:o}=e,{k:a}=t,{ephemeralPublicKey:c,C:l}=i;if(l.algorithm!==null&&!F.isAES(l.algorithm))throw new Error("AES session key expected");return nT(r,c,l.wrappedKey,o,a)}default:throw new Error("Unknown public key encryption algorithm.")}}function mW(r,e){let t=0;switch(r){case m.publicKey.rsaEncrypt:case m.publicKey.rsaEncryptSign:case m.publicKey.rsaSign:{let i=F.readMPI(e.subarray(t));t+=i.length+2;let n=F.readMPI(e.subarray(t));return t+=n.length+2,{read:t,publicParams:{n:i,e:n}}}case m.publicKey.dsa:{let i=F.readMPI(e.subarray(t));t+=i.length+2;let n=F.readMPI(e.subarray(t));t+=n.length+2;let s=F.readMPI(e.subarray(t));t+=s.length+2;let o=F.readMPI(e.subarray(t));return t+=o.length+2,{read:t,publicParams:{p:i,q:n,g:s,y:o}}}case m.publicKey.elgamal:{let i=F.readMPI(e.subarray(t));t+=i.length+2;let n=F.readMPI(e.subarray(t));t+=n.length+2;let s=F.readMPI(e.subarray(t));return t+=s.length+2,{read:t,publicParams:{p:i,g:n,y:s}}}case m.publicKey.ecdsa:{let i=new ro;t+=i.read(e),HE(i);let n=F.readMPI(e.subarray(t));return t+=n.length+2,{read:t,publicParams:{oid:i,Q:n}}}case m.publicKey.eddsaLegacy:{let i=new ro;if(t+=i.read(e),HE(i),i.getName()!==m.curve.ed25519Legacy)throw new Error("Unexpected OID for eddsaLegacy");let n=F.readMPI(e.subarray(t));return t+=n.length+2,n=F.leftPad(n,33),{read:t,publicParams:{oid:i,Q:n}}}case m.publicKey.ecdh:{let i=new ro;t+=i.read(e),HE(i);let n=F.readMPI(e.subarray(t));t+=n.length+2;let s=new Jy;return t+=s.read(e.subarray(t)),{read:t,publicParams:{oid:i,Q:n,kdfParams:s}}}case m.publicKey.ed25519:case m.publicKey.ed448:case m.publicKey.x25519:case m.publicKey.x448:{let i=F.readExactSubarray(e,t,t+hd(r));return t+=i.length,{read:t,publicParams:{A:i}}}default:throw new ft("Unknown public key encryption algorithm.")}}function v5(r,e,t){let i=0;switch(r){case m.publicKey.rsaEncrypt:case m.publicKey.rsaEncryptSign:case m.publicKey.rsaSign:{let n=F.readMPI(e.subarray(i));i+=n.length+2;let s=F.readMPI(e.subarray(i));i+=s.length+2;let o=F.readMPI(e.subarray(i));i+=o.length+2;let a=F.readMPI(e.subarray(i));return i+=a.length+2,{read:i,privateParams:{d:n,p:s,q:o,u:a}}}case m.publicKey.dsa:case m.publicKey.elgamal:{let n=F.readMPI(e.subarray(i));return i+=n.length+2,{read:i,privateParams:{x:n}}}case m.publicKey.ecdsa:case m.publicKey.ecdh:{let n=hd(r,t.oid),s=F.readMPI(e.subarray(i));return i+=s.length+2,s=F.leftPad(s,n),{read:i,privateParams:{d:s}}}case m.publicKey.eddsaLegacy:{let n=hd(r,t.oid);if(t.oid.getName()!==m.curve.ed25519Legacy)throw new Error("Unexpected OID for eddsaLegacy");let s=F.readMPI(e.subarray(i));return i+=s.length+2,s=F.leftPad(s,n),{read:i,privateParams:{seed:s}}}case m.publicKey.ed25519:case m.publicKey.ed448:{let n=hd(r),s=F.readExactSubarray(e,i,i+n);return i+=s.length,{read:i,privateParams:{seed:s}}}case m.publicKey.x25519:case m.publicKey.x448:{let n=hd(r),s=F.readExactSubarray(e,i,i+n);return i+=s.length,{read:i,privateParams:{k:s}}}default:throw new ft("Unknown public key encryption algorithm.")}}function yW(r,e){let t=0;switch(r){case m.publicKey.rsaEncrypt:case m.publicKey.rsaEncryptSign:return{c:F.readMPI(e.subarray(t))};case m.publicKey.elgamal:{let i=F.readMPI(e.subarray(t));t+=i.length+2;let n=F.readMPI(e.subarray(t));return{c1:i,c2:n}}case m.publicKey.ecdh:{let i=F.readMPI(e.subarray(t));t+=i.length+2;let n=new zy;return n.read(e.subarray(t)),{V:i,C:n}}case m.publicKey.x25519:case m.publicKey.x448:{let i=hd(r),n=F.readExactSubarray(e,t,t+i);t+=n.length;let s=new jy;return s.read(e.subarray(t)),{ephemeralPublicKey:n,C:s}}default:throw new ft("Unknown public key encryption algorithm.")}}function vd(r,e){let t=new Set([m.publicKey.ed25519,m.publicKey.x25519,m.publicKey.ed448,m.publicKey.x448]),i=Object.keys(e).map(n=>{let s=e[n];return F.isUint8Array(s)?t.has(r)?s:F.uint8ArrayToMPI(s):s.write()});return F.concatUint8Array(i)}function IW(r,e,t){switch(r){case m.publicKey.rsaEncrypt:case m.publicKey.rsaEncryptSign:case m.publicKey.rsaSign:return sY(e,65537).then(({n:i,e:n,d:s,p:o,q:a,u:c})=>({privateParams:{d:s,p:o,q:a,u:c},publicParams:{n:i,e:n}}));case m.publicKey.ecdsa:return Sy(t).then(({oid:i,Q:n,secret:s})=>({privateParams:{d:s},publicParams:{oid:new ro(i),Q:n}}));case m.publicKey.eddsaLegacy:return Sy(t).then(({oid:i,Q:n,secret:s})=>({privateParams:{seed:s},publicParams:{oid:new ro(i),Q:n}}));case m.publicKey.ecdh:return Sy(t).then(({oid:i,Q:n,secret:s,hash:o,cipher:a})=>({privateParams:{d:s},publicParams:{oid:new ro(i),Q:n,kdfParams:new Jy({hash:o,cipher:a})}}));case m.publicKey.ed25519:case m.publicKey.ed448:return r1(r).then(({A:i,seed:n})=>({privateParams:{seed:n},publicParams:{A:i}}));case m.publicKey.x25519:case m.publicKey.x448:return h1(r).then(({A:i,k:n})=>({privateParams:{k:n},publicParams:{A:i}}));case m.publicKey.dsa:case m.publicKey.elgamal:throw new Error("Unsupported algorithm for key generation.");default:throw new Error("Unknown public key algorithm.")}}async function wW(r,e,t){if(!e||!t)throw new Error("Missing key parameters");switch(r){case m.publicKey.rsaEncrypt:case m.publicKey.rsaEncryptSign:case m.publicKey.rsaSign:{let{n:i,e:n}=e,{d:s,p:o,q:a,u:c}=t;return oY(i,n,s,o,a,c)}case m.publicKey.dsa:{let{p:i,q:n,g:s,y:o}=e,{x:a}=t;return hW(i,n,s,o,a)}case m.publicKey.elgamal:{let{p:i,g:n,y:s}=e,{x:o}=t;return IY(i,n,s,o)}case m.publicKey.ecdsa:case m.publicKey.ecdh:{let i=uW[m.read(m.publicKey,r)],{oid:n,Q:s}=e,{d:o}=t;return i.validateParams(n,s,o)}case m.publicKey.eddsaLegacy:{let{Q:i,oid:n}=e,{seed:s}=t;return AT(n,i,s)}case m.publicKey.ed25519:case m.publicKey.ed448:{let{A:i}=e,{seed:n}=t;return s1(r,i,n)}case m.publicKey.x25519:case m.publicKey.x448:{let{A:i}=e,{k:n}=t;return g1(r,i,n)}default:throw new Error("Unknown public key algorithm.")}}function BB(r){let{keySize:e}=It(r);return Rr(e)}function HE(r){try{r.getName()}catch{throw new ft("Unknown curve OID")}}function hd(r,e){switch(r){case m.publicKey.ecdsa:case m.publicKey.ecdh:case m.publicKey.eddsaLegacy:return new vi(e).payloadSize;case m.publicKey.ed25519:case m.publicKey.ed448:return CI(r);case m.publicKey.x25519:case m.publicKey.x448:return vI(r);default:throw new Error("Unknown elliptic algo")}}function xW(r,e){switch(r){case m.publicKey.ecdsa:case m.publicKey.eddsaLegacy:return oT(e);case m.publicKey.ed25519:case m.publicKey.ed448:return EI(r);default:throw new Error("Unknown elliptic signing algo")}}function yT(r){let{blockSize:e}=It(r),t=Rr(e),i=new Uint8Array([t[t.length-2],t[t.length-1]]);return F.concat([t,i])}async function jf(r,e,t,i,n){let s=m.read(m.symmetric,r);if(F.getNodeCrypto()&&QI[s])return BW(r,e,t,i);if(F.isAES(r))return CW(r,e,t,i);let o=await rT(r),a=new o(e),c=a.blockSize,l=i.slice(),d=new Uint8Array,u=f=>{f&&(d=F.concatUint8Array([d,f]));let h=new Uint8Array(d.length),g,p=0;for(;f?d.length>=c:d.length;){let I=a.encrypt(l);for(g=0;g<c;g++)l[g]=d[g]^I[g],h[p++]=l[g];d=d.subarray(c)}return h.subarray(0,p)};return sr(t,u,u)}async function _I(r,e,t,i){let n=m.read(m.symmetric,r);if(Jf&&QI[n])return bW(r,e,t,i);if(F.isAES(r))return EW(r,e,t,i);let s=await rT(r),o=new s(e),a=o.blockSize,c=i,l=new Uint8Array,d=u=>{u&&(l=F.concatUint8Array([l,u]));let f=new Uint8Array(l.length),h,g=0;for(;u?l.length>=a:l.length;){let p=o.encrypt(c);for(c=l.subarray(0,a),h=0;h<a;h++)f[g++]=c[h]^p[h];l=l.subarray(a)}return f.subarray(0,g)};return sr(t,d,d)}async function CW(r,e,t,i){if(Qy&&await $y.isSupported(r)){let n=new $y(r,e,i);return F.isStream(t)?gB(t,s=>n.encryptChunk(s),()=>n.finish()):n.encrypt(t)}else if(F.isStream(t)){let n=new Vy(!0,r,e,i);return gB(t,s=>n.processChunk(s),()=>n.finish())}return W6(e,i).encrypt(t)}function EW(r,e,t,i){if(F.isStream(t)){let n=new Vy(!1,r,e,i);return gB(t,s=>n.processChunk(s),()=>n.finish())}return W6(e,i).decrypt(t)}function gy(r,e){let t=Math.min(r.length,e.length);for(let i=0;i<t;i++)r[i]=r[i]^e[i]}function BW(r,e,t,i){let n=m.read(m.symmetric,r),s=new Jf.createCipheriv(QI[n],e,i);return sr(t,o=>new Uint8Array(s.update(o)))}function bW(r,e,t,i){let n=m.read(m.symmetric,r),s=new Jf.createDecipheriv(QI[n],e,i);return sr(t,o=>new Uint8Array(s.update(o)))}function S5(r,e){let t=r.length-io;for(let i=0;i<io;i++)r[i+t]^=e[i];return r}function kW(r,e,t){if(r.length&&r.length%io===0)return S5(r,e);let i=new Uint8Array(r.length+(io-r.length%io));return i.set(r),i[r.length]=128,S5(i,t)}async function SW(r){let e=await DW(r),t=F.double(await e(_y)),i=F.double(t);return async function(n){return(await e(kW(n,t,i))).subarray(-io)}}async function DW(r){if(F.getNodeCrypto())return async function(e){let i=new vW.createCipheriv("aes-"+r.length*8+"-cbc",r,_y).update(e);return new Uint8Array(i)};if(F.getWebCrypto())try{return r=await k5.importKey("raw",r,{name:"AES-CBC",length:r.length*8},!1,["encrypt"]),async function(e){let t=await k5.encrypt({name:"AES-CBC",iv:_y,length:io*8},r,e);return new Uint8Array(t).subarray(0,t.byteLength-io)}}catch(e){if(e.name!=="NotSupportedError"&&!(r.length===24&&e.name==="OperationError"))throw e;F.printDebugError("Browser did not support operation: "+e.message)}return async function(e){return xB(r,_y,{disablePadding:!0}).encrypt(e)}}async function PW(r){let e=await SW(r);return function(t,i){return e(F.concatUint8Array([t,i]))}}async function TW(r){if(F.getNodeCrypto())return async function(e,t){let i=new QW.createCipheriv("aes-"+r.length*8+"-ctr",r,t),n=_W.concat([i.update(e),i.final()]);return new Uint8Array(n)};if(F.getWebCrypto())try{let e=await D5.importKey("raw",r,{name:"AES-CTR",length:r.length*8},!1,["encrypt"]);return async function(t,i){let n=await D5.encrypt({name:"AES-CTR",counter:i,length:co*8},e,t);return new Uint8Array(n)}}catch(e){if(e.name!=="NotSupportedError"&&!(r.length===24&&e.name==="OperationError"))throw e;F.printDebugError("Browser did not support operation: "+e.message)}return async function(e,t){return RY(r,t).encrypt(e)}}async function AA(r,e){if(r!==m.symmetric.aes128&&r!==m.symmetric.aes192&&r!==m.symmetric.aes256)throw new Error("EAX mode supports only AES cipher");let[t,i]=await Promise.all([PW(e),TW(e)]);return{encrypt:async function(n,s,o){let[a,c]=await Promise.all([t(Q5,s),t(bB,o)]),l=await i(n,a),u=await t(vB,l);for(let f=0;f<ud;f++)u[f]^=c[f]^a[f];return F.concatUint8Array([l,u])},decrypt:async function(n,s,o){if(n.length<ud)throw new Error("Invalid EAX ciphertext");let a=n.subarray(0,-ud),c=n.subarray(-ud),[l,d,u]=await Promise.all([t(Q5,s),t(bB,o),t(vB,a)]),f=u;for(let g=0;g<ud;g++)f[g]^=d[g]^l[g];if(!F.equalsUint8Array(c,f))throw new Error("Authentication tag mismatch");return await i(a,l)}}}function _5(r){let e=0;for(let t=1;(r&t)===0;t<<=1)e++;return e}function yi(r,e){for(let t=0;t<r.length;t++)r[t]^=e[t];return r}function py(r,e){return yi(r.slice(),e)}async function hA(r,e){let{keySize:t}=It(r);if(!F.isAES(r)||e.length!==t)throw new Error("Unexpected algorithm or key size");let i=0,n=u=>xB(e,Sf,{disablePadding:!0}).encrypt(u),s=u=>xB(e,Sf,{disablePadding:!0}).decrypt(u),o;a();function a(){let u=n(Sf),f=F.double(u);o=[],o[0]=F.double(f),o.x=u,o.$=f}function c(u,f){let h=F.nbits(Math.max(u.length,f.length)/li|0)-1;for(let g=i+1;g<=h;g++)o[g]=F.double(o[g-1]);i=h}function l(u){if(!u.length)return Sf;let f=u.length/li|0,h=new Uint8Array(li),g=new Uint8Array(li);for(let p=0;p<f;p++)yi(h,o[_5(p+1)]),yi(g,n(py(h,u))),u=u.subarray(li);if(u.length){yi(h,o.x);let p=new Uint8Array(li);p.set(u,0),p[u.length]=128,yi(p,h),yi(g,n(p))}return g}function d(u,f,h,g){let p=f.length/li|0;c(f,g);let I=F.concatUint8Array([Sf.subarray(0,IT-h.length),UW,h]),y=I[li-1]&63;I[li-1]&=192;let w=n(I),C=F.concatUint8Array([w,py(w.subarray(0,8),w.subarray(1,9))]),b=F.shiftRight(C.subarray(0+(y>>3),17+(y>>3)),8-(y&7)).subarray(1),x=new Uint8Array(li),_=new Uint8Array(f.length+ha),R,U=0;for(R=0;R<p;R++)yi(b,o[_5(R+1)]),_.set(yi(u(py(b,f)),b),U),yi(x,u===n?f:_.subarray(U)),f=f.subarray(li),U+=li;if(f.length){yi(b,o.x);let D=n(b);_.set(py(f,D),U);let B=new Uint8Array(li);B.set(u===n?f:_.subarray(U,-ha),0),B[f.length]=128,yi(x,B),U+=f.length}let T=yi(n(yi(yi(x,b),o.$)),l(g));return _.set(T,U),_}return{encrypt:async function(u,f,h){return d(n,u,f,h)},decrypt:async function(u,f,h){if(u.length<ha)throw new Error("Invalid OCB ciphertext");let g=u.subarray(-ha);u=u.subarray(0,-ha);let p=d(s,u,f,h);if(F.equalsUint8Array(g,p.subarray(-ha)))return p.subarray(0,-ha);throw new Error("Authentication tag mismatch")}}}async function kd(r,e){if(r!==m.symmetric.aes128&&r!==m.symmetric.aes192&&r!==m.symmetric.aes256)throw new Error("GCM mode supports only AES cipher");if(F.getNodeCrypto())return{encrypt:async function(t,i,n=new Uint8Array){let s=new F5.createCipheriv("aes-"+e.length*8+"-gcm",e,i);s.setAAD(n);let o=P5.concat([s.update(t),s.final(),s.getAuthTag()]);return new Uint8Array(o)},decrypt:async function(t,i,n=new Uint8Array){let s=new F5.createDecipheriv("aes-"+e.length*8+"-gcm",e,i);s.setAAD(n),s.setAuthTag(t.slice(t.length-fd,t.length));let o=P5.concat([s.update(t.slice(0,t.length-fd)),s.final()]);return new Uint8Array(o)}};if(F.getWebCrypto())try{let t=await GE.importKey("raw",e,{name:zE},!1,["encrypt","decrypt"]),i=navigator.userAgent.match(/Version\/13\.\d(\.\d)* Safari/)||navigator.userAgent.match(/Version\/(13|14)\.\d(\.\d)* Mobile\/\S* Safari/);return{encrypt:async function(n,s,o=new Uint8Array){if(i&&!n.length)return hy(e,s,o).encrypt(n);let a=await GE.encrypt({name:zE,iv:s,additionalData:o,tagLength:fd*8},t,n);return new Uint8Array(a)},decrypt:async function(n,s,o=new Uint8Array){if(i&&n.length===fd)return hy(e,s,o).decrypt(n);try{let a=await GE.decrypt({name:zE,iv:s,additionalData:o,tagLength:fd*8},t,n);return new Uint8Array(a)}catch(a){if(a.name==="OperationError")throw new Error("Authentication tag mismatch")}}}}catch(t){if(t.name!=="NotSupportedError"&&!(e.length===24&&t.name==="OperationError"))throw t;F.printDebugError("Browser did not support operation: "+t.message)}return{encrypt:async function(t,i,n){return hy(e,i,n).encrypt(t)},decrypt:async function(t,i,n){return hy(e,i,n).decrypt(t)}}}function no(r,e=!1){switch(r){case m.aead.eax:return AA;case m.aead.ocb:return hA;case m.aead.gcm:return kd;case m.aead.experimentalGCM:if(!e)throw new Error("Unexpected non-standard `experimentalGCM` AEAD algorithm provided in `config.preferredAEADAlgorithm`: use `gcm` instead");return kd;default:throw new Error("Unsupported AEAD mode")}}function qW(r,e){let t=0;switch(r){case m.publicKey.rsaEncryptSign:case m.publicKey.rsaEncrypt:case m.publicKey.rsaSign:{let i=F.readMPI(e.subarray(t));return t+=i.length+2,{read:t,signatureParams:{s:i}}}case m.publicKey.dsa:case m.publicKey.ecdsa:{let i=F.readMPI(e.subarray(t));t+=i.length+2;let n=F.readMPI(e.subarray(t));return t+=n.length+2,{read:t,signatureParams:{r:i,s:n}}}case m.publicKey.eddsaLegacy:{let i=F.readMPI(e.subarray(t));t+=i.length+2;let n=F.readMPI(e.subarray(t));return t+=n.length+2,{read:t,signatureParams:{r:i,s:n}}}case m.publicKey.ed25519:case m.publicKey.ed448:{let i=2*CI(r),n=F.readExactSubarray(e,t,t+i);return t+=n.length,{read:t,signatureParams:{RS:n}}}default:throw new ft("Unknown signature algorithm.")}}async function OW(r,e,t,i,n,s){switch(r){case m.publicKey.rsaEncryptSign:case m.publicKey.rsaEncrypt:case m.publicKey.rsaSign:{let{n:o,e:a}=i,c=F.leftPad(t.s,o.length);return rY(e,n,c,o,a,s)}case m.publicKey.dsa:{let{g:o,p:a,q:c,y:l}=i,{r:d,s:u}=t;return AW(e,d,u,s,o,a,c,l)}case m.publicKey.ecdsa:{let{oid:o,Q:a}=i,c=new vi(o).payloadSize,l=F.leftPad(t.r,c),d=F.leftPad(t.s,c);return y1(o,e,{r:l,s:d},n,a,s)}case m.publicKey.eddsaLegacy:{let{oid:o,Q:a}=i,c=new vi(o).payloadSize,l=F.leftPad(t.r,c),d=F.leftPad(t.s,c);return fT(o,e,{r:l,s:d},n,a,s)}case m.publicKey.ed25519:case m.publicKey.ed448:{let{A:o}=i;return n1(r,e,t,n,o,s)}default:throw new Error("Unknown signature algorithm.")}}async function MW(r,e,t,i,n,s){if(!t||!i)throw new Error("Missing key parameters");switch(r){case m.publicKey.rsaEncryptSign:case m.publicKey.rsaEncrypt:case m.publicKey.rsaSign:{let{n:o,e:a}=t,{d:c,p:l,q:d,u}=i;return{s:await tY(e,n,o,a,c,l,d,u,s)}}case m.publicKey.dsa:{let{g:o,p:a,q:c}=t,{x:l}=i;return fW(e,s,o,a,c,l)}case m.publicKey.elgamal:throw new Error("Signing with Elgamal is not defined in the OpenPGP standard.");case m.publicKey.ecdsa:{let{oid:o,Q:a}=t,{d:c}=i;return m1(o,e,n,a,c,s)}case m.publicKey.eddsaLegacy:{let{oid:o,Q:a}=t,{seed:c}=i;return uT(o,e,n,a,c,s)}case m.publicKey.ed25519:case m.publicKey.ed448:{let{A:o}=t,{seed:a}=i;return i1(r,e,n,o,a,s)}default:throw new Error("Unknown signature algorithm.")}}function Yy(r,e=pe){switch(r){case m.s2k.argon2:return new kB(e);case m.s2k.iterated:case m.s2k.gnu:case m.s2k.salted:case m.s2k.simple:return new SB(r,e);default:throw new ft("Unsupported S2K type")}}function wT(r){let{s2kType:e}=r;if(!zW.has(e))throw new Error("The provided `config.s2kType` value is not allowed");return Yy(e,r)}function yt(r,e,t){let i=[];return i.push(xI(t.length+1)),i.push(new Uint8Array([(e?128:0)|r])),i.push(t),F.concat(i)}function VE(r){switch(r){case m.hash.sha256:return 16;case m.hash.sha384:return 24;case m.hash.sha512:return 32;case m.hash.sha224:return 16;case m.hash.sha3_256:return 16;case m.hash.sha3_512:return 32;default:throw new Error("Unsupported hash function")}}function uX(r,e){if(!e[r]){let t;try{t=m.read(m.packet,r)}catch{throw new yd(`Unknown packet type with tag: ${r}`)}throw new Error(`Packet not allowed in this context: ${t}`)}return new e[r]}function AX(r){let t=_n(r);return new ReadableStream({async pull(i){try{let{value:n,done:s}=await t.read();if(s){i.close();return}for(let o=0;o<=n.length;o+=65536)(!o||o<n.length)&&i.enqueue(n.subarray(o,o+65536))}catch(n){i.error(n)}}},{highWaterMark:0})}function Xy(r,e){return t=>{let i;if(St(t)?i=new ReadableStream({async start(c){try{c.enqueue(await Xt(t)),c.close()}catch(l){c.error(l)}}}):or(t)?i=t:i=lA(t),i=AX(i),r)try{let c=r();return i.pipeThrough(c)}catch(c){if(c.name!=="TypeError")throw c}let n=_n(i),s=new e,o=!1,a=!1;return new ReadableStream({start(c){s.ondata=(l,d)=>{c.enqueue(l),o=!0,d&&(c.close(),a=!0)}},async pull(){for(o=!1;!o&&!a;){let{done:c,value:l}=await n.read();if(c){s.push(new Uint8Array,!0);return}else l.length&&s.push(l)}}},{highWaterMark:0})}}function hX(){return async function(r){let{default:e}=await Promise.resolve().then(function(){return Kte});return e(lA(r))}}async function eI(r,e,t,i){let n=r instanceof Dd&&r.version===2,s=!n&&r.constructor.tag===m.packet.aeadEncryptedData;if(!n&&!s)throw new Error("Unexpected packet type");let o=no(r.aeadAlgorithm,s),a=e==="decrypt"?o.tagLength:0,c=e==="encrypt"?o.tagLength:0,l=2**(r.chunkSizeByte+6)+a,d=s?8:0,u=new ArrayBuffer(13+d),f=new Uint8Array(u,0,5+d),h=new Uint8Array(u),g=new DataView(u),p=new Uint8Array(u,5,8);f.set([192|r.constructor.tag,r.version,r.cipherAlgorithm,r.aeadAlgorithm,r.chunkSizeByte],0);let I=0,y=Promise.resolve(),w=0,C=0,b,x;if(n){let{keySize:R}=It(r.cipherAlgorithm),{ivLength:U}=o,T=new Uint8Array(u,0,5),D=await xa(m.hash.sha256,t,r.salt,T,R+U);t=D.subarray(0,R),b=D.subarray(R),b.fill(0,b.length-8),x=new DataView(b.buffer,b.byteOffset,b.byteLength)}else b=r.iv;let _=await o(r.cipherAlgorithm,t);return Ba(i,async(R,U)=>{if(F.isStream(R)!=="array"){let B=new TransformStream({},{highWaterMark:F.getHardwareConcurrency()*2**(r.chunkSizeByte+6),size:Q=>Q.length});Pd(B.readable,U),U=B.writable}let T=_n(R),D=Hi(U);try{for(;;){let B=await T.readBytes(l+a)||new Uint8Array,Q=B.subarray(B.length-a);B=B.subarray(0,B.length-a);let v,E,P;if(n)P=b;else{P=b.slice();for(let N=0;N<8;N++)P[b.length-8+N]^=p[N]}if(!I||B.length?(T.unshift(Q),v=_[e](B,P,f),v.catch(()=>{}),C+=B.length-a+c):(g.setInt32(5+d+4,w),v=_[e](Q,P,h),v.catch(()=>{}),C+=c,E=!0),w+=B.length-a,y=y.then(()=>v).then(async N=>{await D.ready,await D.write(N),C-=N.length}).catch(N=>D.abort(N)),(E||C>D.desiredSize)&&await y,!E)n?x.setInt32(b.length-4,++I):g.setInt32(9,++I);else{await D.close();break}}}catch(B){await D.ready.catch(()=>{}),await D.abort(B)}})}function M5(r,e,t,i){switch(e){case m.publicKey.rsaEncrypt:case m.publicKey.rsaEncryptSign:case m.publicKey.elgamal:case m.publicKey.ecdh:return F.concatUint8Array([new Uint8Array(r===6?[]:[t]),i,F.writeChecksum(i.subarray(i.length%8))]);case m.publicKey.x25519:case m.publicKey.x448:return i;default:throw new Error("Unsupported public key algorithm")}}function IX(r,e,t,i){switch(e){case m.publicKey.rsaEncrypt:case m.publicKey.rsaEncryptSign:case m.publicKey.elgamal:case m.publicKey.ecdh:{let n=t.subarray(0,t.length-2),s=t.subarray(t.length-2),o=F.writeChecksum(n.subarray(n.length%8)),a=o[0]===s[0]&o[1]===s[1],c=r===6?{sessionKeyAlgorithm:null,sessionKey:n}:{sessionKeyAlgorithm:n[0],sessionKey:n.subarray(1)};if(i){let l=a&c.sessionKeyAlgorithm===i.sessionKeyAlgorithm&c.sessionKey.length===i.sessionKey.length;return{sessionKey:F.selectUint8Array(l,c.sessionKey,i.sessionKey),sessionKeyAlgorithm:r===6?null:F.selectUint8(l,c.sessionKeyAlgorithm,i.sessionKeyAlgorithm)}}else{if(a&&(r===6||m.read(m.symmetric,c.sessionKeyAlgorithm)))return c;throw new Error("Decryption error")}}case m.publicKey.x25519:case m.publicKey.x448:return{sessionKeyAlgorithm:null,sessionKey:t};default:throw new Error("Unsupported public key algorithm")}}async function YE(r,e,t,i,n,s,o,a){if(e.type==="argon2"&&!n)throw new Error("Using Argon2 S2K without AEAD is not allowed");if(e.type==="simple"&&r===6)throw new Error("Using Simple S2K with version 6 keys is not allowed");let{keySize:c}=It(i),l=await e.produceKey(t,c,a);if(!n||r===5||o)return l;let d=F.concatUint8Array([s,new Uint8Array([r,i,n])]);return xa(m.hash.sha256,l,new Uint8Array,d,c)}async function kT(r,e){let t=new iI(r.date,e);return t.packets=null,t.algorithm=m.write(m.publicKey,r.algorithm),await t.generate(r.rsaBits,r.curve),await t.computeFingerprintAndKeyID(),t}async function xX(r,e){let t=new Wf(r.date,e);return t.packets=null,t.algorithm=m.write(m.publicKey,r.algorithm),await t.generate(r.rsaBits,r.curve,r.config),await t.computeFingerprintAndKeyID(),t}async function kn(r,e,t,i,n=new Date,s){let o,a;for(let c=r.length-1;c>=0;c--)try{(!o||r[c].created>=o.created)&&(await r[c].verify(e,t,i,n,void 0,s),o=r[c])}catch(l){a=l}if(!o)throw F.wrapError(`Could not find valid ${m.read(m.signature,t)} signature in key ${e.getKeyID().toHex()}`.replace("certGeneric ","self-").replace(/([a-z])([A-Z])/g,(c,l,d)=>l+" "+d.toLowerCase()),a);return o}function RB(r,e,t=new Date){let i=F.normalizeDate(t);if(i!==null){let n=sI(r,e);return!(r.created<=i&&i<n)}return!1}async function ST(r,e,t,i){let n={};n.key=e,n.bind=r;let s={signatureType:m.signature.subkeyBinding};return t.sign?(s.keyFlags=[m.keyFlags.signData],s.embeddedSignature=await us(n,[],r,{signatureType:m.signature.keyBinding},t.date,void 0,void 0,void 0,i)):s.keyFlags=[m.keyFlags.encryptCommunication|m.keyFlags.encryptStorage],t.keyExpirationTime>0&&(s.keyExpirationTime=t.keyExpirationTime,s.keyNeverExpires=!1),await us(n,[],e,s,t.date,void 0,void 0,void 0,i)}async function CX(r,e,t=new Date,i=[],n){let s=m.hash.sha256,o=n.preferredHashAlgorithm,a=await Promise.all(r.map(async(f,h)=>(await f.getPrimarySelfSignature(t,i[h],n)).preferredHashAlgorithms||[])),c=new Map;for(let f of a)for(let h of f)try{let g=m.write(m.hash,h);c.set(g,c.has(g)?c.get(g)+1:1)}catch{}let l=f=>r.length===0||c.get(f)===r.length||f===s,d=()=>{if(c.size===0)return s;let h=Array.from(c.keys()).filter(g=>l(g)).sort((g,p)=>gr(g)-gr(p))[0];return gr(h)>=gr(s)?h:s};if(new Set([m.publicKey.ecdsa,m.publicKey.eddsaLegacy,m.publicKey.ed25519,m.publicKey.ed448]).has(e.algorithm)){let f=xW(e.algorithm,e.publicParams.oid),h=l(o),g=gr(o)>=gr(f);if(h&&g)return o;{let p=d();return gr(p)>=gr(f)?p:f}}return l(o)?o:d()}async function EX(r=[],e=new Date,t=[],i=pe){let n=m.compression.uncompressed,s=i.preferredCompressionAlgorithm;return(await Promise.all(r.map(async function(a,c){let d=(await a.getPrimarySelfSignature(e,t[c],i)).preferredCompressionAlgorithms;return!!d&&d.indexOf(s)>=0}))).every(Boolean)?s:n}async function BX(r=[],e=new Date,t=[],i=pe){let n=await Promise.all(r.map((c,l)=>c.getPrimarySelfSignature(e,t[l],i)));if(r.length?n.every(c=>c.features&&c.features[0]&m.features.seipdv2):i.aeadProtect){let c={symmetricAlgo:m.symmetric.aes128,aeadAlgo:m.aead.ocb},l=[{symmetricAlgo:i.preferredSymmetricAlgorithm,aeadAlgo:i.preferredAEADAlgorithm},{symmetricAlgo:i.preferredSymmetricAlgorithm,aeadAlgo:m.aead.ocb},{symmetricAlgo:m.symmetric.aes128,aeadAlgo:i.preferredAEADAlgorithm}];for(let d of l)if(n.every(u=>u.preferredCipherSuites&&u.preferredCipherSuites.some(f=>f[0]===d.symmetricAlgo&&f[1]===d.aeadAlgo)))return d;return c}let o=m.symmetric.aes128,a=i.preferredSymmetricAlgorithm;return{symmetricAlgo:n.every(c=>c.preferredSymmetricAlgorithms&&c.preferredSymmetricAlgorithms.includes(a))?a:o,aeadAlgo:void 0}}async function us(r,e,t,i,n,s,o=[],a=!1,c){if(t.isDummy())throw new Error("Cannot sign with a gnu-dummy key.");if(!t.isDecrypted())throw new Error("Signing key is not decrypted.");let l=new Nr;return Object.assign(l,i),l.publicKeyAlgorithm=t.algorithm,l.hashAlgorithm=await CX(e,t,n,s,c),l.rawNotations=[...o],await l.sign(t,r,n,a,c),l}async function Pc(r,e,t,i=new Date,n){r=r[t],r&&(e[t].length?await Promise.all(r.map(async function(s){!s.isExpired(i)&&(!n||await n(s))&&!e[t].some(function(o){return F.equalsUint8Array(o.writeParams(),s.writeParams())})&&e[t].push(s)})):e[t]=r)}async function Qd(r,e,t,i,n,s,o=new Date,a){s=s||r;let c=[];return await Promise.all(i.map(async function(l){try{if(!n||l.issuerKeyID.equals(n.issuerKeyID)){let d=![m.reasonForRevocation.keyRetired,m.reasonForRevocation.keySuperseded,m.reasonForRevocation.userIDInvalid].includes(l.reasonForRevocationFlag);await l.verify(s,e,t,d?null:o,!1,a),c.push(l.issuerKeyID)}}catch{}})),n?(n.revoked=c.some(l=>l.equals(n.issuerKeyID))?!0:n.revoked||!1,n.revoked):c.length>0}function sI(r,e){let t;return e.keyNeverExpires===!1&&(t=r.created.getTime()+e.keyExpirationTime*1e3),t?new Date(t):1/0}function NB(r,e={}){switch(r.type=r.type||e.type,r.curve=r.curve||e.curve,r.rsaBits=r.rsaBits||e.rsaBits,r.keyExpirationTime=r.keyExpirationTime!==void 0?r.keyExpirationTime:e.keyExpirationTime,r.passphrase=F.isString(r.passphrase)?r.passphrase:e.passphrase,r.date=r.date||e.date,r.sign=r.sign||!1,r.type){case"ecc":try{r.curve=m.write(m.curve,r.curve)}catch{throw new Error("Unknown curve")}(r.curve===m.curve.ed25519Legacy||r.curve===m.curve.curve25519Legacy||r.curve==="ed25519"||r.curve==="curve25519")&&(r.curve=r.sign?m.curve.ed25519Legacy:m.curve.curve25519Legacy),r.sign?r.algorithm=r.curve===m.curve.ed25519Legacy?m.publicKey.eddsaLegacy:m.publicKey.ecdsa:r.algorithm=m.publicKey.ecdh;break;case"curve25519":r.algorithm=r.sign?m.publicKey.ed25519:m.publicKey.x25519;break;case"curve448":r.algorithm=r.sign?m.publicKey.ed448:m.publicKey.x448;break;case"rsa":r.algorithm=m.publicKey.rsaEncryptSign;break;default:throw new Error(`Unsupported key type ${r.type}`)}return r}function L5(r,e,t){switch(r.algorithm){case m.publicKey.rsaEncryptSign:case m.publicKey.rsaSign:case m.publicKey.dsa:case m.publicKey.ecdsa:case m.publicKey.eddsaLegacy:case m.publicKey.ed25519:case m.publicKey.ed448:if(!e.keyFlags&&!t.allowMissingKeyFlags)throw new Error("None of the key flags is set: consider passing `config.allowMissingKeyFlags`");return!e.keyFlags||(e.keyFlags[0]&m.keyFlags.signData)!==0;default:return!1}}function H5(r,e,t){switch(r.algorithm){case m.publicKey.rsaEncryptSign:case m.publicKey.rsaEncrypt:case m.publicKey.elgamal:case m.publicKey.ecdh:case m.publicKey.x25519:case m.publicKey.x448:if(!e.keyFlags&&!t.allowMissingKeyFlags)throw new Error("None of the key flags is set: consider passing `config.allowMissingKeyFlags`");return!e.keyFlags||(e.keyFlags[0]&m.keyFlags.encryptCommunication)!==0||(e.keyFlags[0]&m.keyFlags.encryptStorage)!==0;default:return!1}}function K5(r,e,t){if(!e.keyFlags&&!t.allowMissingKeyFlags)throw new Error("None of the key flags is set: consider passing `config.allowMissingKeyFlags`");switch(r.algorithm){case m.publicKey.rsaEncryptSign:case m.publicKey.rsaEncrypt:case m.publicKey.elgamal:case m.publicKey.ecdh:case m.publicKey.x25519:case m.publicKey.x448:return(!e.keyFlags||(e.keyFlags[0]&m.keyFlags.signData)!==0)&&t.allowInsecureDecryptionWithSigningKeys?!0:!e.keyFlags||(e.keyFlags[0]&m.keyFlags.encryptCommunication)!==0||(e.keyFlags[0]&m.keyFlags.encryptStorage)!==0;default:return!1}}function pa(r,e){let t=m.write(m.publicKey,r.algorithm),i=r.getAlgorithmInfo();if(e.rejectPublicKeyAlgorithms.has(t))throw new Error(`${i.algorithm} keys are considered too weak.`);switch(t){case m.publicKey.rsaEncryptSign:case m.publicKey.rsaSign:case m.publicKey.rsaEncrypt:if(i.bits<e.minRSABits)throw new Error(`RSA keys shorter than ${e.minRSABits} bits are considered too weak.`);break;case m.publicKey.ecdsa:case m.publicKey.eddsaLegacy:case m.publicKey.ecdh:if(e.rejectCurves.has(i.curve))throw new Error(`Support for ${i.algorithm} keys using curve ${i.curve} is disabled.`);break}}function vX(r){switch(m.write(m.publicKey,r)){case m.publicKey.rsaEncrypt:case m.publicKey.rsaEncryptSign:case m.publicKey.rsaSign:case m.publicKey.dsa:return"rsa";case m.publicKey.ecdsa:case m.publicKey.eddsaLegacy:return"ecc";case m.publicKey.ed25519:return"curve25519";case m.publicKey.ed448:return"curve448";default:throw new Error("Unsupported algorithm")}}async function SX(r,e){r.sign=!0,r=NB(r),r.subkeys=r.subkeys.map((o,a)=>NB(r.subkeys[a],r));let t=[xX(r,e)];t=t.concat(r.subkeys.map(o=>kT(o,e)));let i=await Promise.all(t),n=await DX(i[0],i.slice(1),r,e),s=await n.getRevocationCertificate(r.date,e);return n.revocationSignatures=[],{key:n,revocationCertificate:s}}async function DX(r,e,t,i){t.passphrase&&await r.encrypt(t.passphrase,i),await Promise.all(e.map(async function(c,l){let d=t.subkeys[l].passphrase;d&&await c.encrypt(d,i)}));let n=new Ct;n.push(r);function s(c,l){return[l,...c.filter(d=>d!==l)]}function o(){let c={};c.keyFlags=[m.keyFlags.certifyKeys|m.keyFlags.signData];let l=s([m.symmetric.aes256,m.symmetric.aes128],i.preferredSymmetricAlgorithm);if(c.preferredSymmetricAlgorithms=l,i.aeadProtect){let d=s([m.aead.gcm,m.aead.eax,m.aead.ocb],i.preferredAEADAlgorithm);c.preferredCipherSuites=d.flatMap(u=>l.map(f=>[f,u]))}return c.preferredHashAlgorithms=s([m.hash.sha512,m.hash.sha256,m.hash.sha3_512,m.hash.sha3_256],i.preferredHashAlgorithm),c.preferredCompressionAlgorithms=s([m.compression.uncompressed,m.compression.zlib,m.compression.zip],i.preferredCompressionAlgorithm),c.features=[0],c.features[0]|=m.features.modificationDetection,i.aeadProtect&&(c.features[0]|=m.features.seipdv2),t.keyExpirationTime>0&&(c.keyExpirationTime=t.keyExpirationTime,c.keyNeverExpires=!1),c}if(r.version===6){let c={key:r},l=o();l.signatureType=m.signature.key;let d=await us(c,[],r,l,t.date,void 0,t.signatureNotations,void 0,i);n.push(d)}await Promise.all(t.userIDs.map(async function(c,l){let d=rI.fromObject(c),u={userID:d,key:r},f=r.version!==6?o():{};f.signatureType=m.signature.certPositive,l===0&&(f.isPrimaryUserID=!0);let h=await us(u,[],r,f,t.date,void 0,t.signatureNotations,void 0,i);return{userIDPacket:d,signaturePacket:h}})).then(c=>{c.forEach(({userIDPacket:l,signaturePacket:d})=>{n.push(l),n.push(d)})}),await Promise.all(e.map(async function(c,l){let d=t.subkeys[l],u=await ST(c,r,d,i);return{secretSubkeyPacket:c,subkeySignaturePacket:u}})).then(c=>{c.forEach(({secretSubkeyPacket:l,subkeySignaturePacket:d})=>{n.push(l),n.push(d)})});let a={key:r};return n.push(await us(a,[],r,{signatureType:m.signature.keyRevocation,reasonForRevocationFlag:m.reasonForRevocation.noReason,reasonForRevocationString:""},t.date,void 0,void 0,void 0,i)),t.passphrase&&r.clearPrivateParams(),e.map(function(c,l){t.subkeys[l].passphrase&&c.clearPrivateParams()}),new cI(n)}async function TI({armoredKey:r,binaryKey:e,config:t,...i}){if(t={...pe,...t},!r&&!e)throw new Error("readPrivateKey: must pass options object containing `armoredKey` or `binaryKey`");if(r&&!F.isString(r))throw new Error("readPrivateKey: options.armoredKey must be a string");if(e&&!F.isUint8Array(e))throw new Error("readPrivateKey: options.binaryKey must be a Uint8Array");let n=Object.keys(i);if(n.length>0)throw new Error(`Unknown option: ${n.join(", ")}`);let s;if(r){let{type:c,data:l}=await wI(r);if(c!==m.armor.privateKey)throw new Error("Armored text not of type private key");s=l}else s=e;let o=await Ct.fromBinary(s,kX,t),a=o.indexOfTag(m.packet.publicKey,m.packet.secretKey);for(let c=0;c<a.length;c++){if(o[a[c]].constructor.tag===m.packet.publicKey)continue;let l=o.slice(a[c],a[c+1]);return new cI(l)}throw new Error("No secret key packet found")}async function J5(r,e,t=[],i=null,n=[],s=new Date,o=[],a=[],c=[],l=!1,d=pe){let u=new Ct,f=r.text===null?m.signature.binary:m.signature.text;if(await Promise.all(e.map(async(h,g)=>{let p=o[g];if(!h.isPrivate())throw new Error("Need private key for signing");let I=await h.getSigningKey(n[g],s,p,d);return us(r,t.length?t:[h],I.keyPacket,{signatureType:f},s,a,c,l,d)})).then(h=>{u.push(...h)}),i){let h=i.packets.filterByTag(m.packet.signature);u.push(...h)}return u}function PX(r,e,t,i=new Date,n=!1,s=pe){let o,a;for(let u of t){let f=u.getKeys(r.issuerKeyID);if(f.length>0){o=u,a=f[0];break}}let l=r instanceof an?r.correspondingSig:r,d={keyID:r.issuerKeyID,verified:(async()=>{if(!a)throw new Error(`Could not find signing key with key ID ${r.issuerKeyID.toHex()}`);await r.verify(a.keyPacket,r.signatureType,e[0],i,n,s);let u=await l;if(a.getCreationTime()>u.created)throw new Error("Key is newer than the signature");try{await o.getSigningKey(a.getKeyID(),u.created,void 0,s)}catch(f){if(s.allowInsecureVerificationWithReformattedKeys&&f.message.match(/Signature creation time is in the future/))await o.getSigningKey(a.getKeyID(),i,void 0,s);else throw f}return!0})(),signature:(async()=>{let u=await l,f=new Ct;return u&&f.push(u),new nI(f)})()};return d.signature.catch(()=>{}),d.verified.catch(()=>{}),d}function WE(r,e,t,i=new Date,n=!1,s=pe){return r.filter(o=>["text","binary"].includes(m.read(m.signature,o.signatureType))).map(o=>PX(o,e,t,i,n,s))}async function gA({armoredMessage:r,binaryMessage:e,config:t,...i}){t={...pe,...t};let n=r||e;if(!n)throw new Error("readMessage: must pass options object containing `armoredMessage` or `binaryMessage`");if(r&&!F.isString(r)&&!F.isStream(r))throw new Error("readMessage: options.armoredMessage must be a string or stream");if(e&&!F.isUint8Array(e)&&!F.isStream(e))throw new Error("readMessage: options.binaryMessage must be a Uint8Array or stream");let s=Object.keys(i);if(s.length>0)throw new Error(`Unknown option: ${s.join(", ")}`);let o=F.isStream(n);if(r){let{type:l,data:d}=await wI(n);if(l!==m.armor.message)throw new Error("Armored text not of type message");n=d}let a=await Ct.fromBinary(n,QX,t,new Sd),c=new Zf(a);return c.fromStream=o,c}async function DT({text:r,binary:e,filename:t,date:i=new Date,format:n=r!==void 0?"utf8":"binary",...s}){let o=r!==void 0?r:e;if(o===void 0)throw new Error("createMessage: must pass options object containing `text` or `binary`");if(r&&!F.isString(r)&&!F.isStream(r))throw new Error("createMessage: options.text must be a string or stream");if(e&&!F.isUint8Array(e)&&!F.isStream(e))throw new Error("createMessage: options.binary must be a Uint8Array or stream");let a=Object.keys(s);if(a.length>0)throw new Error(`Unknown option: ${a.join(", ")}`);let c=F.isStream(o),l=new Ea(i);r!==void 0?l.setText(o,m.write(m.literal,n)):l.setBytes(o,m.write(m.literal,n)),t!==void 0&&l.setFilename(t);let d=new Ct;d.push(l);let u=new Zf(d);return u.fromStream=c,u}async function C1({userIDs:r=[],passphrase:e,type:t,curve:i,rsaBits:n=4096,keyExpirationTime:s=0,date:o=new Date,subkeys:a=[{}],format:c="armored",signatureNotations:l=[],config:d,...u}){d={...pe,...d},pA(d),!t&&!i?(t=d.v6Keys?"curve25519":"ecc",i="curve25519Legacy"):(t=t||"ecc",i=i||"curve25519Legacy"),r=Wr(r),l=Wr(l);let f=Object.keys(u);if(f.length>0)throw new Error(`Unknown option: ${f.join(", ")}`);if(r.length===0&&!d.v6Keys)throw new Error("UserIDs are required for V4 keys");if(t==="rsa"&&n<d.minRSABits)throw new Error(`rsaBits should be at least ${d.minRSABits}, got: ${n}`);let h={userIDs:r,passphrase:e,type:t,rsaBits:n,curve:i,keyExpirationTime:s,date:o,subkeys:a,signatureNotations:l};try{let{key:g,revocationCertificate:p}=await SX(h,d);return g.getKeys().forEach(({keyPacket:I})=>pa(I,d)),{privateKey:j5(g,c,d),publicKey:j5(g.toPublic(),c,d),revocationCertificate:p}}catch(g){throw F.wrapError("Error generating keypair",g)}}async function UI({privateKey:r,passphrase:e,config:t,...i}){t={...pe,...t},pA(t);let n=Object.keys(i);if(n.length>0)throw new Error(`Unknown option: ${n.join(", ")}`);if(!r.isPrivate())throw new Error("Cannot decrypt a public key");let s=r.clone(!0),o=F.isArray(e)?e:[e];try{return await Promise.all(s.getKeys().map(a=>F.anyPromise(o.map(c=>a.keyPacket.decrypt(c,t))))),await s.validate(t),s}catch(a){throw s.clearPrivateParams(),F.wrapError("Error decrypting private key",a)}}async function QT({message:r,encryptionKeys:e,signingKeys:t,passwords:i,sessionKey:n,format:s="armored",signature:o=null,wildcard:a=!1,signingKeyIDs:c=[],encryptionKeyIDs:l=[],date:d=new Date,signingUserIDs:u=[],encryptionUserIDs:f=[],signatureNotations:h=[],config:g,...p}){if(g={...pe,...g},pA(g),E1(r),TX(s),e=Wr(e),t=Wr(t),i=Wr(i),c=Wr(c),l=Wr(l),u=Wr(u),f=Wr(f),h=Wr(h),p.detached)throw new Error("The `detached` option has been removed from openpgp.encrypt, separately call openpgp.sign instead. Don't forget to remove the `privateKeys` option as well.");if(p.publicKeys)throw new Error("The `publicKeys` option has been removed from openpgp.encrypt, pass `encryptionKeys` instead");if(p.privateKeys)throw new Error("The `privateKeys` option has been removed from openpgp.encrypt, pass `signingKeys` instead");if(p.armor!==void 0)throw new Error("The `armor` option has been removed from openpgp.encrypt, pass `format` instead.");let I=Object.keys(p);if(I.length>0)throw new Error(`Unknown option: ${I.join(", ")}`);t||(t=[]);try{if((t.length||o)&&(r=await r.sign(t,e,o,c,d,u,l,h,g)),r=r.compress(await EX(e,d,f,g),g),r=await r.encrypt(e,i,n,a,l,d,f,g),s==="object")return r;let w=s==="armored"?r.armor(g):r.write();return await FT(w)}catch(y){throw F.wrapError("Error encrypting message",y)}}async function RI({message:r,decryptionKeys:e,passwords:t,sessionKeys:i,verificationKeys:n,expectSigned:s=!1,format:o="utf8",signature:a=null,date:c=new Date,config:l,...d}){if(l={...pe,...l},pA(l),E1(r),n=Wr(n),e=Wr(e),t=Wr(t),i=Wr(i),d.privateKeys)throw new Error("The `privateKeys` option has been removed from openpgp.decrypt, pass `decryptionKeys` instead");if(d.publicKeys)throw new Error("The `publicKeys` option has been removed from openpgp.decrypt, pass `verificationKeys` instead");let u=Object.keys(d);if(u.length>0)throw new Error(`Unknown option: ${u.join(", ")}`);try{let f=await r.decrypt(e,t,i,c,l);n||(n=[]);let h={};if(h.signatures=a?await f.verifyDetached(a,n,c,l):await f.verify(n,c,l),h.data=o==="binary"?f.getLiteralData():f.getText(),h.filename=f.getFilename(),RX(h,r,...new Set([f,f.unwrapCompressed()])),s){if(n.length===0)throw new Error("Verification keys are required to verify message signatures");if(h.signatures.length===0)throw new Error("Message is not signed");h.data=di([h.data,Hc(async()=>(await F.anyPromise(h.signatures.map(g=>g.verified)),o==="binary"?new Uint8Array:""))])}return h.data=await FT(h.data),h}catch(f){throw F.wrapError("Error decrypting message",f)}}async function _T({message:r,decryptionKeys:e,passwords:t,date:i=new Date,config:n,...s}){if(n={...pe,...n},pA(n),E1(r),e=Wr(e),t=Wr(t),s.privateKeys)throw new Error("The `privateKeys` option has been removed from openpgp.decryptSessionKeys, pass `decryptionKeys` instead");let o=Object.keys(s);if(o.length>0)throw new Error(`Unknown option: ${o.join(", ")}`);try{return await r.decryptSessionKeys(e,t,void 0,i,n)}catch(a){throw F.wrapError("Error decrypting session keys",a)}}function E1(r){if(!(r instanceof Zf))throw new Error("Parameter [message] needs to be of type Message")}function TX(r){if(r!=="armored"&&r!=="binary"&&r!=="object")throw new Error(`Unsupported format ${r}`)}function pA(r){let e=Object.keys(r);if(e.length!==UX){for(let t of e)if(pe[t]===void 0)throw new Error(`Unknown config property: ${t}`)}}function Wr(r){return r&&!F.isArray(r)&&(r=[r]),r}async function FT(r){return F.isStream(r)==="array"?Xt(r):r}function RX(r,e,...t){r.data=Ba(e.packets.stream,async(i,n)=>{await Pd(r.data,n,{preventClose:!0});let s=Hi(n);try{await Xt(i,o=>o),await Promise.all(t.map(o=>Xt(o.packets.stream,a=>a))),await s.close()}catch(o){await s.abort(o)}})}function j5(r,e,t){switch(e){case"object":return r;case"armored":return r.armor(t);case"binary":return r.write();default:throw new Error(`Unsupported format ${e}`)}}function mA(r){return r instanceof Uint8Array||ArrayBuffer.isView(r)&&r.constructor.name==="Uint8Array"}function eA(r){if(!Number.isSafeInteger(r)||r<0)throw new Error("positive integer expected, got "+r)}function hs(r,...e){if(!mA(r))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(r.length))throw new Error("Uint8Array expected of length "+e+", got length="+r.length)}function PT(r){if(typeof r!="function"||typeof r.create!="function")throw new Error("Hash should be wrapped by utils.createHasher");eA(r.outputLen),eA(r.blockLen)}function _d(r,e=!0){if(r.destroyed)throw new Error("Hash instance has been destroyed");if(e&&r.finished)throw new Error("Hash#digest() has already been called")}function TT(r,e){hs(r);let t=e.outputLen;if(r.length<t)throw new Error("digestInto() expects output buffer of length at least "+t)}function NX(r){return new Uint32Array(r.buffer,r.byteOffset,Math.floor(r.byteLength/4))}function cn(...r){for(let e=0;e<r.length;e++)r[e].fill(0)}function XE(r){return new DataView(r.buffer,r.byteOffset,r.byteLength)}function es(r,e){return r<<32-e|r>>>e}function ya(r,e){return r<<e|r>>>32-e>>>0}function OX(r){return r<<24&4278190080|r<<8&16711680|r>>>8&65280|r>>>24&255}function MX(r){for(let e=0;e<r.length;e++)r[e]=OX(r[e]);return r}function Tc(r){if(hs(r),UT)return r.toHex();let e="";for(let t=0;t<r.length;t++)e+=LX[r[t]];return e}function V5(r){if(r>=js._0&&r<=js._9)return r-js._0;if(r>=js.A&&r<=js.F)return r-(js.A-10);if(r>=js.a&&r<=js.f)return r-(js.a-10)}function lI(r){if(typeof r!="string")throw new Error("hex string expected, got "+typeof r);if(UT)return Uint8Array.fromHex(r);let e=r.length,t=e/2;if(e%2)throw new Error("hex string expected, got unpadded hex of length "+e);let i=new Uint8Array(t);for(let n=0,s=0;n<t;n++,s+=2){let o=V5(r.charCodeAt(s)),a=V5(r.charCodeAt(s+1));if(o===void 0||a===void 0){let c=r[s]+r[s+1];throw new Error('hex string expected, got non-hex character "'+c+'" at index '+s)}i[n]=o*16+a}return i}function HX(r){if(typeof r!="string")throw new Error("string expected");return new Uint8Array(new TextEncoder().encode(r))}function yA(r){return typeof r=="string"&&(r=HX(r)),hs(r),r}function Sn(...r){let e=0;for(let i=0;i<r.length;i++){let n=r[i];hs(n),e+=n.length}let t=new Uint8Array(e);for(let i=0,n=0;i<r.length;i++){let s=r[i];t.set(s,n),n+=s.length}return t}function lo(r){let e=i=>r().update(yA(i)).digest(),t=r();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>r(),e}function KX(r){let e=(i,n)=>r(n).update(yA(i)).digest(),t=r({});return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=i=>r(i),e}function NI(r=32){if(od&&typeof od.getRandomValues=="function")return od.getRandomValues(new Uint8Array(r));if(od&&typeof od.randomBytes=="function")return Uint8Array.from(od.randomBytes(r));throw new Error("crypto.getRandomValues must be defined")}function Oc(r,e=""){if(typeof r!="boolean"){let t=e&&`"${e}"`;throw new Error(t+"expected boolean, got type="+typeof r)}return r}function Qn(r,e,t=""){let i=mA(r),n=r?.length,s=e!==void 0;if(!i||s&&n!==e){let o=t&&`"${t}" `,a=s?` of length ${e}`:"",c=i?`length=${n}`:`type=${typeof r}`;throw new Error(o+"expected Uint8Array"+a+", got "+c)}return r}function yy(r){let e=r.toString(16);return e.length&1?"0"+e:e}function RT(r){if(typeof r!="string")throw new Error("hex string expected, got "+typeof r);return r===""?B1:BigInt("0x"+r)}function qI(r){return RT(Tc(r))}function Mc(r){return hs(r),RT(Tc(Uint8Array.from(r).reverse()))}function b1(r,e){return lI(r.toString(16).padStart(e*2,"0"))}function v1(r,e){return b1(r,e).reverse()}function vt(r,e,t){let i;if(typeof e=="string")try{i=lI(e)}catch(s){throw new Error(r+" must be hex string or Uint8Array, cause: "+s)}else if(mA(e))i=Uint8Array.from(e);else throw new Error(r+" must be hex string or Uint8Array");let n=i.length;if(typeof t=="number"&&n!==t)throw new Error(r+" of length "+t+" expected, got "+n);return i}function Y5(r){return Uint8Array.from(r)}function zX(r){return Uint8Array.from(r,(e,t)=>{let i=e.charCodeAt(0);if(e.length!==1||i>127)throw new Error(`string contains non-ASCII character "${r[t]}" with code ${i} at position ${t}`);return i})}function JX(r,e,t){return ZE(r)&&ZE(e)&&ZE(t)&&e<=r&&r<t}function rA(r,e,t,i){if(!JX(e,t,i))throw new Error("expected valid "+r+": "+t+" <= n < "+i+", got "+e)}function NT(r){let e;for(e=0;r>B1;r>>=OB,e+=1);return e}function jX(r,e,t){if(typeof r!="number"||r<2)throw new Error("hashLen must be a number");if(typeof e!="number"||e<2)throw new Error("qByteLen must be a number");if(typeof t!="function")throw new Error("hmacFn must be a function");let i=h=>new Uint8Array(h),n=h=>Uint8Array.of(h),s=i(r),o=i(r),a=0,c=()=>{s.fill(1),o.fill(0),a=0},l=(...h)=>t(o,s,...h),d=(h=i(0))=>{o=l(n(0),h),s=l(),h.length!==0&&(o=l(n(1),h),s=l())},u=()=>{if(a++>=1e3)throw new Error("drbg: tried 1000 values");let h=0,g=[];for(;h<e;){s=l();let p=s.slice();g.push(p),h+=s.length}return Sn(...g)};return(h,g)=>{c(),d(h);let p;for(;!(p=g(u()));)d();return c(),p}}function Ud(r,e,t={}){if(!r||typeof r!="object")throw new Error("expected valid options object");function i(n,s,o){let a=r[n];if(o&&a===void 0)return;let c=typeof a;if(c!==s||a===null)throw new Error(`param "${n}" is invalid: expected ${s}, got ${c}`)}Object.entries(e).forEach(([n,s])=>i(n,s,!1)),Object.entries(t).forEach(([n,s])=>i(n,s,!0))}function dI(r){let e=new WeakMap;return(t,...i)=>{let n=e.get(t);if(n!==void 0)return n;let s=r(t,...i);return e.set(t,s),s}}function pr(r,e){let t=r%e;return t>=xi?t:e+t}function bt(r,e,t){let i=r;for(;e-- >xi;)i*=i,i%=t;return i}function W5(r,e){if(r===xi)throw new Error("invert: expected non-zero number");if(e<=xi)throw new Error("invert: expected positive modulus, got "+e);let t=pr(r,e),i=e,n=xi,s=ui;for(;t!==xi;){let a=i/t,c=i%t,l=n-s*a;i=t,t=c,n=s,s=l}if(i!==ui)throw new Error("invert: does not exist");return pr(n,e)}function k1(r,e,t){if(!r.eql(r.sqr(e),t))throw new Error("Cannot find square root")}function KT(r,e){let t=(r.ORDER+ui)/OT,i=r.pow(e,t);return k1(r,i,e),i}function YX(r,e){let t=(r.ORDER-MT)/LT,i=r.mul(e,Qc),n=r.pow(i,t),s=r.mul(e,n),o=r.mul(r.mul(s,Qc),n),a=r.mul(s,r.sub(o,r.ONE));return k1(r,a,e),a}function WX(r){let e=Si(r),t=GT(r),i=t(e,e.neg(e.ONE)),n=t(e,i),s=t(e,e.neg(i)),o=(r+$X)/HT;return(a,c)=>{let l=a.pow(c,o),d=a.mul(l,i),u=a.mul(l,n),f=a.mul(l,s),h=a.eql(a.sqr(d),c),g=a.eql(a.sqr(u),c);l=a.cmov(l,d,h),d=a.cmov(f,u,g);let p=a.eql(a.sqr(d),c),I=a.cmov(l,d,p);return k1(a,I,c),I}}function GT(r){if(r<qT)throw new Error("sqrt is not defined for small field");let e=r-ui,t=0;for(;e%Qc===xi;)e/=Qc,t++;let i=Qc,n=Si(r);for(;X5(n,i)===1;)if(i++>1e3)throw new Error("Cannot find square root: probably non-prime P");if(t===1)return KT;let s=n.pow(i,e),o=(e+ui)/Qc;return function(c,l){if(c.is0(l))return l;if(X5(c,l)!==1)throw new Error("Cannot find square root");let d=t,u=c.mul(c.ONE,s),f=c.pow(l,e),h=c.pow(l,o);for(;!c.eql(f,c.ONE);){if(c.is0(f))return c.ZERO;let g=1,p=c.sqr(f);for(;!c.eql(p,c.ONE);)if(g++,p=c.sqr(p),g===d)throw new Error("Cannot find square root");let I=ui<<BigInt(d-g-1),y=c.pow(u,I);d=g,u=c.sqr(y),f=c.mul(f,u),h=c.mul(h,y)}return h}}function XX(r){return r%OT===qT?KT:r%LT===MT?YX:r%HT===VX?WX(r):GT(r)}function eZ(r){let e={ORDER:"bigint",MASK:"bigint",BYTES:"number",BITS:"number"},t=ZX.reduce((i,n)=>(i[n]="function",i),e);return Ud(r,t),r}function tZ(r,e,t){if(t<xi)throw new Error("invalid exponent, negatives unsupported");if(t===xi)return r.ONE;if(t===ui)return e;let i=r.ONE,n=e;for(;t>xi;)t&ui&&(i=r.mul(i,n)),n=r.sqr(n),t>>=ui;return i}function zT(r,e,t=!1){let i=new Array(e.length).fill(t?r.ZERO:void 0),n=e.reduce((o,a,c)=>r.is0(a)?o:(i[c]=o,r.mul(o,a)),r.ONE),s=r.inv(n);return e.reduceRight((o,a,c)=>r.is0(a)?o:(i[c]=r.mul(o,i[c]),r.mul(o,a)),s),i}function X5(r,e){let t=(r.ORDER-ui)/Qc,i=r.pow(e,t),n=r.eql(i,r.ONE),s=r.eql(i,r.ZERO),o=r.eql(i,r.neg(r.ONE));if(!n&&!s&&!o)throw new Error("invalid Legendre symbol result");return n?1:s?0:-1}function JT(r,e){e!==void 0&&eA(e);let t=e!==void 0?e:r.toString(2).length,i=Math.ceil(t/8);return{nBitLength:t,nByteLength:i}}function Si(r,e,t=!1,i={}){if(r<=xi)throw new Error("invalid field: expected ORDER > 0, got "+r);let n,s,o=!1,a;if(typeof e=="object"&&e!=null){if(i.sqrt||t)throw new Error("cannot specify opts in two arguments");let f=e;f.BITS&&(n=f.BITS),f.sqrt&&(s=f.sqrt),typeof f.isLE=="boolean"&&(t=f.isLE),typeof f.modFromBytes=="boolean"&&(o=f.modFromBytes),a=f.allowedLengths}else typeof e=="number"&&(n=e),i.sqrt&&(s=i.sqrt);let{nBitLength:c,nByteLength:l}=JT(r,n);if(l>2048)throw new Error("invalid field: expected ORDER of <= 2048 bytes");let d,u=Object.freeze({ORDER:r,isLE:t,BITS:c,BYTES:l,MASK:IA(c),ZERO:xi,ONE:ui,allowedLengths:a,create:f=>pr(f,r),isValid:f=>{if(typeof f!="bigint")throw new Error("invalid field element: expected bigint, got "+typeof f);return xi<=f&&f<r},is0:f=>f===xi,isValidNot0:f=>!u.is0(f)&&u.isValid(f),isOdd:f=>(f&ui)===ui,neg:f=>pr(-f,r),eql:(f,h)=>f===h,sqr:f=>pr(f*f,r),add:(f,h)=>pr(f+h,r),sub:(f,h)=>pr(f-h,r),mul:(f,h)=>pr(f*h,r),pow:(f,h)=>tZ(u,f,h),div:(f,h)=>pr(f*W5(h,r),r),sqrN:f=>f*f,addN:(f,h)=>f+h,subN:(f,h)=>f-h,mulN:(f,h)=>f*h,inv:f=>W5(f,r),sqrt:s||(f=>(d||(d=XX(r)),d(u,f))),toBytes:f=>t?v1(f,l):b1(f,l),fromBytes:(f,h=!0)=>{if(a){if(!a.includes(f.length)||f.length>l)throw new Error("Field.fromBytes: expected "+a+" bytes, got "+f.length);let p=new Uint8Array(l);p.set(f,t?0:p.length-f.length),f=p}if(f.length!==l)throw new Error("Field.fromBytes: expected "+l+" bytes, got "+f.length);let g=t?Mc(f):qI(f);if(o&&(g=pr(g,r)),!h&&!u.isValid(g))throw new Error("invalid field element: outside of range 0..ORDER");return g},invertBatch:f=>zT(u,f),cmov:(f,h,g)=>g?h:f});return Object.freeze(u)}function jT(r){if(typeof r!="bigint")throw new Error("field order must be bigint");let e=r.toString(2).length;return Math.ceil(e/8)}function $T(r){let e=jT(r);return e+Math.ceil(e/2)}function rZ(r,e,t=!1){let i=r.length,n=jT(e),s=$T(e);if(i<16||i<s||i>1024)throw new Error("expected "+s+"-1024 bytes of input, got "+i);let o=t?Mc(r):qI(r),a=pr(o,e-ui)+ui;return t?v1(a,n):b1(a,n)}function iZ(r,e,t,i){if(typeof r.setBigUint64=="function")return r.setBigUint64(e,t,i);let n=BigInt(32),s=BigInt(4294967295),o=Number(t>>n&s),a=Number(t&s),c=i?4:0,l=i?0:4;r.setUint32(e+c,o,i),r.setUint32(e+l,a,i)}function VT(r,e,t){return r&e^~r&t}function YT(r,e,t){return r&e^r&t^e&t}function nZ(r,e=!1){return e?{h:Number(r&Iy),l:Number(r>>Z5&Iy)}:{h:Number(r>>Z5&Iy)|0,l:Number(r&Iy)|0}}function WT(r,e=!1){let t=r.length,i=new Uint32Array(t),n=new Uint32Array(t);for(let s=0;s<t;s++){let{h:o,l:a}=nZ(r[s],e);[i[s],n[s]]=[o,a]}return[i,n]}function $s(r,e,t,i){let n=(e>>>0)+(i>>>0);return{h:r+t+(n/2**32|0)|0,l:n|0}}function hI(r,e){let t=e.negate();return r?t:e}function Fc(r,e){let t=zT(r.Fp,e.map(i=>i.Z));return e.map((i,n)=>r.fromAffine(i.toAffine(t[n])))}function rU(r,e){if(!Number.isSafeInteger(r)||r<=0||r>e)throw new Error("invalid window size, expected [1.."+e+"], got W="+r)}function eB(r,e){rU(r,e);let t=Math.ceil(e/r)+1,i=2**(r-1),n=2**r,s=IA(r),o=BigInt(r);return{windows:t,windowSize:i,mask:s,maxNumber:n,shiftBy:o}}function r6(r,e,t){let{windowSize:i,mask:n,maxNumber:s,shiftBy:o}=t,a=Number(r&n),c=r>>o;a>i&&(a-=s,c+=_c);let l=e*i,d=l+Math.abs(a)-1,u=a===0,f=a<0,h=e%2!==0;return{nextN:c,offset:d,isZero:u,isNeg:f,isNegF:h,offsetF:l}}function IZ(r,e){if(!Array.isArray(r))throw new Error("array expected");r.forEach((t,i)=>{if(!(t instanceof e))throw new Error("invalid point at index "+i)})}function wZ(r,e){if(!Array.isArray(r))throw new Error("array of scalars expected");r.forEach((t,i)=>{if(!e.isValid(t))throw new Error("invalid scalar at index "+i)})}function rB(r){return iU.get(r)||1}function i6(r){if(r!==Fd)throw new Error("invalid wNAF")}function xZ(r,e,t,i){let n=e,s=r.ZERO,o=r.ZERO;for(;t>Fd||i>Fd;)t&_c&&(s=s.add(n)),i&_c&&(o=o.add(n)),n=n.double(),t>>=_c,i>>=_c;return{p1:s,p2:o}}function nU(r,e,t,i){IZ(t,r),wZ(i,e);let n=t.length,s=i.length;if(n!==s)throw new Error("arrays of points and scalars must have equal length");let o=r.ZERO,a=NT(BigInt(n)),c=1;a>12?c=a-3:a>4?c=a-2:a>0&&(c=2);let l=IA(c),d=new Array(Number(l)+1).fill(o),u=Math.floor((e.BITS-1)/c)*c,f=o;for(let h=u;h>=0;h-=c){d.fill(o);for(let p=0;p<s;p++){let I=i[p],y=Number(I>>BigInt(h)&l);d[y]=d[y].add(t[p])}let g=o;for(let p=d.length-1,I=o;p>0;p--)I=I.add(d[p]),g=g.add(I);if(f=f.add(g),h!==0)for(let p=0;p<c;p++)f=f.double()}return f}function n6(r,e,t){if(e){if(e.ORDER!==r)throw new Error("Field.ORDER must match order: Fp == p, Fn == n");return eZ(e),e}else return Si(r,{isLE:t})}function sU(r,e,t={},i){if(i===void 0&&(i=r==="edwards"),!e||typeof e!="object")throw new Error(`expected valid ${r} CURVE object`);for(let c of["p","n","h"]){let l=e[c];if(!(typeof l=="bigint"&&l>Fd))throw new Error(`CURVE.${c} must be positive bigint`)}let n=n6(e.p,t.Fp,i),s=n6(e.n,t.Fn,i),a=["Gx","Gy","a",r==="weierstrass"?"b":"d"];for(let c of a)if(!n.isValid(e[c]))throw new Error(`CURVE.${c} must be valid field element of CURVE.Fp`);return e=Object.freeze(Object.assign({},e)),{CURVE:e,Fp:n,Fn:s}}function CZ(r,e,t){let[[i,n],[s,o]]=e,a=s6(o*r,t),c=s6(-n*r,t),l=r-a*i-c*s,d=-a*n-c*o,u=l<to,f=d<to;u&&(l=-l),f&&(d=-d);let h=IA(Math.ceil(NT(t)/2))+Cd;if(l<to||l>=h||d<to||d>=h)throw new Error("splitScalar (endomorphism): failed, k="+r);return{k1neg:u,k1:l,k2neg:f,k2:d}}function HB(r){if(!["compact","recovered","der"].includes(r))throw new Error('Signature format must be "compact", "recovered", or "der"');return r}function iB(r,e){let t={};for(let i of Object.keys(e))t[i]=r[i]===void 0?e[i]:r[i];return Oc(t.lowS,"lowS"),Oc(t.prehash,"prehash"),t.format!==void 0&&HB(t.format),t}function gd(r,e){let{BYTES:t}=r,i;if(typeof e=="bigint")i=e;else{let n=vt("private key",e);try{i=r.fromBytes(n)}catch{throw new Error(`invalid private key: expected ui8a of size ${t}, got ${typeof e}`)}}if(!r.isValidNot0(i))throw new Error("invalid private key: out of range [1..N-1]");return i}function BZ(r,e={}){let t=sU("weierstrass",r,e),{Fp:i,Fn:n}=t,s=t.CURVE,{h:o,n:a}=s;Ud(e,{},{allowInfinityPoint:"boolean",clearCofactor:"function",isTorsionFree:"function",fromBytes:"function",toBytes:"function",endo:"object",wrapPrivateKey:"boolean"});let{endo:c}=e;if(c&&(!i.is0(s.a)||typeof c.beta!="bigint"||!Array.isArray(c.basises)))throw new Error('invalid endo: expected "beta": bigint and "basises": array');let l=cU(i,n);function d(){if(!i.isOdd)throw new Error("compression is not supported: Field does not have .isOdd()")}function u(Q,v,E){let{x:P,y:N}=v.toAffine(),J=i.toBytes(P);if(Oc(E,"isCompressed"),E){d();let z=!i.isOdd(N);return Sn(aU(z),J)}else return Sn(Uint8Array.of(4),J,i.toBytes(N))}function f(Q){Qn(Q,void 0,"Point");let{publicKey:v,publicKeyUncompressed:E}=l,P=Q.length,N=Q[0],J=Q.subarray(1);if(P===v&&(N===2||N===3)){let z=i.fromBytes(J);if(!i.isValid(z))throw new Error("bad point: is not on curve, wrong x");let L=p(z),G;try{G=i.sqrt(L)}catch(te){let re=te instanceof Error?": "+te.message:"";throw new Error("bad point: is not on curve, sqrt error"+re)}d();let K=i.isOdd(G);return(N&1)===1!==K&&(G=i.neg(G)),{x:z,y:G}}else if(P===E&&N===4){let z=i.BYTES,L=i.fromBytes(J.subarray(0,z)),G=i.fromBytes(J.subarray(z,z*2));if(!I(L,G))throw new Error("bad point: is not on curve");return{x:L,y:G}}else throw new Error(`bad point: got length ${P}, expected compressed=${v} or uncompressed=${E}`)}let h=e.toBytes||u,g=e.fromBytes||f;function p(Q){let v=i.sqr(Q),E=i.mul(v,Q);return i.add(i.add(E,i.mul(Q,s.a)),s.b)}function I(Q,v){let E=i.sqr(v),P=p(Q);return i.eql(E,P)}if(!I(s.Gx,s.Gy))throw new Error("bad curve params: generator point");let y=i.mul(i.pow(s.a,Cy),EZ),w=i.mul(i.sqr(s.b),BigInt(27));if(i.is0(i.add(y,w)))throw new Error("bad curve params: a or b");function C(Q,v,E=!1){if(!i.isValid(v)||E&&i.is0(v))throw new Error(`bad point coordinate ${Q}`);return v}function b(Q){if(!(Q instanceof T))throw new Error("ProjectivePoint expected")}function x(Q){if(!c||!c.basises)throw new Error("no endo");return CZ(Q,c.basises,n.ORDER)}let _=dI((Q,v)=>{let{X:E,Y:P,Z:N}=Q;if(i.eql(N,i.ONE))return{x:E,y:P};let J=Q.is0();v==null&&(v=J?i.ONE:i.inv(N));let z=i.mul(E,v),L=i.mul(P,v),G=i.mul(N,v);if(J)return{x:i.ZERO,y:i.ZERO};if(!i.eql(G,i.ONE))throw new Error("invZ was invalid");return{x:z,y:L}}),R=dI(Q=>{if(Q.is0()){if(e.allowInfinityPoint&&!i.is0(Q.Y))return;throw new Error("bad point: ZERO")}let{x:v,y:E}=Q.toAffine();if(!i.isValid(v)||!i.isValid(E))throw new Error("bad point: x or y not field elements");if(!I(v,E))throw new Error("bad point: equation left != right");if(!Q.isTorsionFree())throw new Error("bad point: not in prime-order subgroup");return!0});function U(Q,v,E,P,N){return E=new T(i.mul(E.X,Q),E.Y,E.Z),v=hI(P,v),E=hI(N,E),v.add(E)}class T{constructor(v,E,P){this.X=C("x",v),this.Y=C("y",E,!0),this.Z=C("z",P),Object.freeze(this)}static CURVE(){return s}static fromAffine(v){let{x:E,y:P}=v||{};if(!v||!i.isValid(E)||!i.isValid(P))throw new Error("invalid affine point");if(v instanceof T)throw new Error("projective point not allowed");return i.is0(E)&&i.is0(P)?T.ZERO:new T(E,P,i.ONE)}static fromBytes(v){let E=T.fromAffine(g(Qn(v,void 0,"point")));return E.assertValidity(),E}static fromHex(v){return T.fromBytes(vt("pointHex",v))}get x(){return this.toAffine().x}get y(){return this.toAffine().y}precompute(v=8,E=!0){return B.createCache(this,v),E||this.multiply(Cy),this}assertValidity(){R(this)}hasEvenY(){let{y:v}=this.toAffine();if(!i.isOdd)throw new Error("Field doesn't support isOdd");return!i.isOdd(v)}equals(v){b(v);let{X:E,Y:P,Z:N}=this,{X:J,Y:z,Z:L}=v,G=i.eql(i.mul(E,L),i.mul(J,N)),K=i.eql(i.mul(P,L),i.mul(z,N));return G&&K}negate(){return new T(this.X,i.neg(this.Y),this.Z)}double(){let{a:v,b:E}=s,P=i.mul(E,Cy),{X:N,Y:J,Z:z}=this,L=i.ZERO,G=i.ZERO,K=i.ZERO,$=i.mul(N,N),te=i.mul(J,J),re=i.mul(z,z),ee=i.mul(N,J);return ee=i.add(ee,ee),K=i.mul(N,z),K=i.add(K,K),L=i.mul(v,K),G=i.mul(P,re),G=i.add(L,G),L=i.sub(te,G),G=i.add(te,G),G=i.mul(L,G),L=i.mul(ee,L),K=i.mul(P,K),re=i.mul(v,re),ee=i.sub($,re),ee=i.mul(v,ee),ee=i.add(ee,K),K=i.add($,$),$=i.add(K,$),$=i.add($,re),$=i.mul($,ee),G=i.add(G,$),re=i.mul(J,z),re=i.add(re,re),$=i.mul(re,ee),L=i.sub(L,$),K=i.mul(re,te),K=i.add(K,K),K=i.add(K,K),new T(L,G,K)}add(v){b(v);let{X:E,Y:P,Z:N}=this,{X:J,Y:z,Z:L}=v,G=i.ZERO,K=i.ZERO,$=i.ZERO,te=s.a,re=i.mul(s.b,Cy),ee=i.mul(E,J),Z=i.mul(P,z),me=i.mul(N,L),le=i.add(E,P),Ae=i.add(J,z);le=i.mul(le,Ae),Ae=i.add(ee,Z),le=i.sub(le,Ae),Ae=i.add(E,N);let ve=i.add(J,L);return Ae=i.mul(Ae,ve),ve=i.add(ee,me),Ae=i.sub(Ae,ve),ve=i.add(P,N),G=i.add(z,L),ve=i.mul(ve,G),G=i.add(Z,me),ve=i.sub(ve,G),$=i.mul(te,Ae),G=i.mul(re,me),$=i.add(G,$),G=i.sub(Z,$),$=i.add(Z,$),K=i.mul(G,$),Z=i.add(ee,ee),Z=i.add(Z,ee),me=i.mul(te,me),Ae=i.mul(re,Ae),Z=i.add(Z,me),me=i.sub(ee,me),me=i.mul(te,me),Ae=i.add(Ae,me),ee=i.mul(Z,Ae),K=i.add(K,ee),ee=i.mul(ve,Ae),G=i.mul(le,G),G=i.sub(G,ee),ee=i.mul(le,Z),$=i.mul(ve,$),$=i.add($,ee),new T(G,K,$)}subtract(v){return this.add(v.negate())}is0(){return this.equals(T.ZERO)}multiply(v){let{endo:E}=e;if(!n.isValidNot0(v))throw new Error("invalid scalar: out of range");let P,N,J=z=>B.cached(this,z,L=>Fc(T,L));if(E){let{k1neg:z,k1:L,k2neg:G,k2:K}=x(v),{p:$,f:te}=J(L),{p:re,f:ee}=J(K);N=te.add(ee),P=U(E.beta,$,re,z,G)}else{let{p:z,f:L}=J(v);P=z,N=L}return Fc(T,[P,N])[0]}multiplyUnsafe(v){let{endo:E}=e,P=this;if(!n.isValid(v))throw new Error("invalid scalar: out of range");if(v===to||P.is0())return T.ZERO;if(v===Cd)return P;if(B.hasCache(this))return this.multiply(v);if(E){let{k1neg:N,k1:J,k2neg:z,k2:L}=x(v),{p1:G,p2:K}=xZ(T,P,J,L);return U(E.beta,G,K,N,z)}else return B.unsafe(P,v)}multiplyAndAddUnsafe(v,E,P){let N=this.multiplyUnsafe(E).add(v.multiplyUnsafe(P));return N.is0()?void 0:N}toAffine(v){return _(this,v)}isTorsionFree(){let{isTorsionFree:v}=e;return o===Cd?!0:v?v(T,this):B.unsafe(this,a).is0()}clearCofactor(){let{clearCofactor:v}=e;return o===Cd?this:v?v(T,this):this.multiplyUnsafe(o)}isSmallOrder(){return this.multiplyUnsafe(o).is0()}toBytes(v=!0){return Oc(v,"isCompressed"),this.assertValidity(),h(T,this,v)}toHex(v=!0){return Tc(this.toBytes(v))}toString(){return`<Point ${this.is0()?"ZERO":this.toHex()}>`}get px(){return this.X}get py(){return this.X}get pz(){return this.Z}toRawBytes(v=!0){return this.toBytes(v)}_setWindowSize(v){this.precompute(v)}static normalizeZ(v){return Fc(T,v)}static msm(v,E){return nU(T,n,v,E)}static fromPrivateKey(v){return T.BASE.multiply(gd(n,v))}}T.BASE=new T(s.Gx,s.Gy,i.ONE),T.ZERO=new T(i.ZERO,i.ONE,i.ZERO),T.Fp=i,T.Fn=n;let D=n.BITS,B=new gI(T,e.endo?Math.ceil(D/2):D);return T.BASE.precompute(8),T}function aU(r){return Uint8Array.of(r?2:3)}function cU(r,e){return{secretKey:e.BYTES,publicKey:1+r.BYTES,publicKeyUncompressed:1+2*r.BYTES,publicKeyHasPrefix:!0,signature:2*e.BYTES}}function bZ(r,e={}){let{Fn:t}=r,i=e.randomBytes||NI,n=Object.assign(cU(r.Fp,t),{seed:$T(t.ORDER)});function s(h){try{return!!gd(t,h)}catch{return!1}}function o(h,g){let{publicKey:p,publicKeyUncompressed:I}=n;try{let y=h.length;return g===!0&&y!==p||g===!1&&y!==I?!1:!!r.fromBytes(h)}catch{return!1}}function a(h=i(n.seed)){return rZ(Qn(h,n.seed,"seed"),t.ORDER)}function c(h,g=!0){return r.BASE.multiply(gd(t,h)).toBytes(g)}function l(h){let g=a(h);return{secretKey:g,publicKey:c(g)}}function d(h){if(typeof h=="bigint")return!1;if(h instanceof r)return!0;let{secretKey:g,publicKey:p,publicKeyUncompressed:I}=n;if(t.allowedLengths||g===p)return;let y=vt("key",h).length;return y===p||y===I}function u(h,g,p=!0){if(d(h)===!0)throw new Error("first arg must be private key");if(d(g)===!1)throw new Error("second arg must be public key");let I=gd(t,h);return r.fromHex(g).multiply(I).toBytes(p)}return Object.freeze({getPublicKey:c,getSharedSecret:u,keygen:l,Point:r,utils:{isValidSecretKey:s,isValidPublicKey:o,randomSecretKey:a,isValidPrivateKey:s,randomPrivateKey:a,normPrivateKeyToScalar:h=>gd(t,h),precompute(h=8,g=r.BASE){return g.precompute(h,!1)}},lengths:n})}function vZ(r,e,t={}){PT(e),Ud(t,{},{hmac:"function",lowS:"boolean",randomBytes:"function",bits2int:"function",bits2int_modN:"function"});let i=t.randomBytes||NI,n=t.hmac||((E,...P)=>tU(e,E,Sn(...P))),{Fp:s,Fn:o}=r,{ORDER:a,BITS:c}=o,{keygen:l,getPublicKey:d,getSharedSecret:u,utils:f,lengths:h}=bZ(r,t),g={prehash:!1,lowS:typeof t.lowS=="boolean"?t.lowS:!1,format:void 0,extraEntropy:!1},p="compact";function I(E){let P=a>>Cd;return E>P}function y(E,P){if(!o.isValidNot0(P))throw new Error(`invalid signature ${E}: out of range 1..Point.Fn.ORDER`);return P}function w(E,P){HB(P);let N=h.signature,J=P==="compact"?N:P==="recovered"?N+1:void 0;return Qn(E,J,`${P} signature`)}class C{constructor(P,N,J){this.r=y("r",P),this.s=y("s",N),J!=null&&(this.recovery=J),Object.freeze(this)}static fromBytes(P,N=p){w(P,N);let J;if(N==="der"){let{r:K,s:$}=Zs.toSig(Qn(P));return new C(K,$)}N==="recovered"&&(J=P[0],N="compact",P=P.subarray(1));let z=o.BYTES,L=P.subarray(0,z),G=P.subarray(z,z*2);return new C(o.fromBytes(L),o.fromBytes(G),J)}static fromHex(P,N){return this.fromBytes(lI(P),N)}addRecoveryBit(P){return new C(this.r,this.s,P)}recoverPublicKey(P){let N=s.ORDER,{r:J,s:z,recovery:L}=this;if(L==null||![0,1,2,3].includes(L))throw new Error("recovery id invalid");if(a*oU<N&&L>1)throw new Error("recovery id is ambiguous for h>1 curve");let K=L===2||L===3?J+a:J;if(!s.isValid(K))throw new Error("recovery id 2 or 3 invalid");let $=s.toBytes(K),te=r.fromBytes(Sn(aU((L&1)===0),$)),re=o.inv(K),ee=x(vt("msgHash",P)),Z=o.create(-ee*re),me=o.create(z*re),le=r.BASE.multiplyUnsafe(Z).add(te.multiplyUnsafe(me));if(le.is0())throw new Error("point at infinify");return le.assertValidity(),le}hasHighS(){return I(this.s)}toBytes(P=p){if(HB(P),P==="der")return lI(Zs.hexFromSig(this));let N=o.toBytes(this.r),J=o.toBytes(this.s);if(P==="recovered"){if(this.recovery==null)throw new Error("recovery bit must be present");return Sn(Uint8Array.of(this.recovery),N,J)}return Sn(N,J)}toHex(P){return Tc(this.toBytes(P))}assertValidity(){}static fromCompact(P){return C.fromBytes(vt("sig",P),"compact")}static fromDER(P){return C.fromBytes(vt("sig",P),"der")}normalizeS(){return this.hasHighS()?new C(this.r,o.neg(this.s),this.recovery):this}toDERRawBytes(){return this.toBytes("der")}toDERHex(){return Tc(this.toBytes("der"))}toCompactRawBytes(){return this.toBytes("compact")}toCompactHex(){return Tc(this.toBytes("compact"))}}let b=t.bits2int||function(P){if(P.length>8192)throw new Error("input is too large");let N=qI(P),J=P.length*8-c;return J>0?N>>BigInt(J):N},x=t.bits2int_modN||function(P){return o.create(b(P))},_=IA(c);function R(E){return rA("num < 2^"+c,E,to,_),o.toBytes(E)}function U(E,P){return Qn(E,void 0,"message"),P?Qn(e(E),void 0,"prehashed message"):E}function T(E,P,N){if(["recovered","canonical"].some(Z=>Z in N))throw new Error("sign() legacy options not supported");let{lowS:J,prehash:z,extraEntropy:L}=iB(N,g);E=U(E,z);let G=x(E),K=gd(o,P),$=[R(K),R(G)];if(L!=null&&L!==!1){let Z=L===!0?i(h.secretKey):L;$.push(vt("extraEntropy",Z))}let te=Sn(...$),re=G;function ee(Z){let me=b(Z);if(!o.isValidNot0(me))return;let le=o.inv(me),Ae=r.BASE.multiply(me).toAffine(),ve=o.create(Ae.x);if(ve===to)return;let qe=o.create(le*o.create(re+ve*K));if(qe===to)return;let _e=(Ae.x===ve?0:2)|Number(Ae.y&Cd),se=qe;return J&&I(qe)&&(se=o.neg(qe),_e^=1),new C(ve,se,_e)}return{seed:te,k2sig:ee}}function D(E,P,N={}){E=vt("message",E);let{seed:J,k2sig:z}=T(E,P,N);return jX(e.outputLen,o.BYTES,n)(J,z)}function B(E){let P,N=typeof E=="string"||mA(E),J=!N&&E!==null&&typeof E=="object"&&typeof E.r=="bigint"&&typeof E.s=="bigint";if(!N&&!J)throw new Error("invalid signature, expected Uint8Array, hex string or Signature instance");if(J)P=new C(E.r,E.s);else if(N){try{P=C.fromBytes(vt("sig",E),"der")}catch(z){if(!(z instanceof Zs.Err))throw z}if(!P)try{P=C.fromBytes(vt("sig",E),"compact")}catch{return!1}}return P||!1}function Q(E,P,N,J={}){let{lowS:z,prehash:L,format:G}=iB(J,g);if(N=vt("publicKey",N),P=U(vt("message",P),L),"strict"in J)throw new Error("options.strict was renamed to lowS");let K=G===void 0?B(E):C.fromBytes(vt("sig",E),G);if(K===!1)return!1;try{let $=r.fromBytes(N);if(z&&K.hasHighS())return!1;let{r:te,s:re}=K,ee=x(P),Z=o.inv(re),me=o.create(ee*Z),le=o.create(te*Z),Ae=r.BASE.multiplyUnsafe(me).add($.multiplyUnsafe(le));return Ae.is0()?!1:o.create(Ae.x)===te}catch{return!1}}function v(E,P,N={}){let{prehash:J}=iB(N,g);return P=U(P,J),C.fromBytes(E,"recovered").recoverPublicKey(P).toBytes()}return Object.freeze({keygen:l,getPublicKey:d,getSharedSecret:u,utils:f,lengths:h,Point:r,sign:D,verify:Q,recoverPublicKey:v,Signature:C,hash:e})}function kZ(r){let e={a:r.a,b:r.b,p:r.Fp.ORDER,n:r.n,h:r.h,Gx:r.Gx,Gy:r.Gy},t=r.Fp,i=r.allowedPrivateKeyLengths?Array.from(new Set(r.allowedPrivateKeyLengths.map(o=>Math.ceil(o/2)))):void 0,n=Si(e.n,{BITS:r.nBitLength,allowedLengths:i,modFromBytes:r.wrapPrivateKey}),s={Fp:t,Fn:n,allowInfinityPoint:r.allowInfinityPoint,endo:r.endo,isTorsionFree:r.isTorsionFree,clearCofactor:r.clearCofactor,fromBytes:r.fromBytes,toBytes:r.toBytes};return{CURVE:e,curveOpts:s}}function SZ(r){let{CURVE:e,curveOpts:t}=kZ(r),i={hmac:r.hmac,randomBytes:r.randomBytes,lowS:r.lowS,bits2int:r.bits2int,bits2int_modN:r.bits2int_modN};return{CURVE:e,curveOpts:t,hash:r.hash,ecdsaOpts:i}}function DZ(r,e){let t=e.Point;return Object.assign({},e,{ProjectivePoint:t,CURVE:Object.assign({},r,JT(t.Fn.ORDER,t.Fn.BITS))})}function QZ(r){let{CURVE:e,curveOpts:t,hash:i,ecdsaOpts:n}=SZ(r),s=BZ(e,t),o=vZ(s,i,n);return DZ(r,o)}function Gc(r,e){let t=i=>QZ({...r,hash:i});return{...t(e),create:t}}function jZ(r,e=24){let t=new Uint32Array(10);for(let i=24-e;i<24;i++){for(let o=0;o<10;o++)t[o]=r[o]^r[o+10]^r[o+20]^r[o+30]^r[o+40];for(let o=0;o<10;o+=2){let a=(o+8)%10,c=(o+2)%10,l=t[c],d=t[c+1],u=o6(l,d,1)^t[a],f=a6(l,d,1)^t[a+1];for(let h=0;h<50;h+=10)r[o+h]^=u,r[o+h+1]^=f}let n=r[2],s=r[3];for(let o=0;o<24;o++){let a=AU[o],c=o6(n,s,a),l=a6(n,s,a),d=fU[o];n=r[d],s=r[d+1],r[d]=c,r[d+1]=l}for(let o=0;o<50;o+=10){for(let a=0;a<10;a++)t[a]=r[o+a];for(let a=0;a<10;a++)r[o+a]^=~t[(a+2)%10]&t[(a+4)%10]}r[0]^=zZ[i],r[1]^=JZ[i]}cn(t)}function ZZ(r,e,t,i){let n=r.sqr(t),s=r.sqr(i),o=r.add(r.mul(e.a,n),s),a=r.add(r.ONE,r.mul(e.d,r.mul(n,s)));return r.eql(o,a)}function mU(r,e={}){let t=sU("edwards",r,e,e.FpFnLE),{Fp:i,Fn:n}=t,s=t.CURVE,{h:o}=s;Ud(e,{},{uvRatio:"function"});let a=nB<<BigInt(n.BYTES*8)-Er,c=I=>i.create(I),l=e.uvRatio||((I,y)=>{try{return{isValid:!0,value:i.sqrt(i.div(I,y))}}catch{return{isValid:!1,value:da}}});if(!ZZ(i,s,s.Gx,s.Gy))throw new Error("bad curve params: generator point");function d(I,y,w=!1){let C=w?Er:da;return rA("coordinate "+I,y,C,a),y}function u(I){if(!(I instanceof g))throw new Error("ExtendedPoint expected")}let f=dI((I,y)=>{let{X:w,Y:C,Z:b}=I,x=I.is0();y==null&&(y=x?XZ:i.inv(b));let _=c(w*y),R=c(C*y),U=i.mul(b,y);if(x)return{x:da,y:Er};if(U!==Er)throw new Error("invZ was invalid");return{x:_,y:R}}),h=dI(I=>{let{a:y,d:w}=s;if(I.is0())throw new Error("bad point: ZERO");let{X:C,Y:b,Z:x,T:_}=I,R=c(C*C),U=c(b*b),T=c(x*x),D=c(T*T),B=c(R*y),Q=c(T*c(B+U)),v=c(D+c(w*c(R*U)));if(Q!==v)throw new Error("bad point: equation left != right (1)");let E=c(C*b),P=c(x*_);if(E!==P)throw new Error("bad point: equation left != right (2)");return!0});class g{constructor(y,w,C,b){this.X=d("x",y),this.Y=d("y",w),this.Z=d("z",C,!0),this.T=d("t",b),Object.freeze(this)}static CURVE(){return s}static fromAffine(y){if(y instanceof g)throw new Error("extended point not allowed");let{x:w,y:C}=y||{};return d("x",w),d("y",C),new g(w,C,Er,c(w*C))}static fromBytes(y,w=!1){let C=i.BYTES,{a:b,d:x}=s;y=Y5(Qn(y,C,"point")),Oc(w,"zip215");let _=Y5(y),R=y[C-1];_[C-1]=R&-129;let U=Mc(_),T=w?a:i.ORDER;rA("point.y",U,da,T);let D=c(U*U),B=c(D-Er),Q=c(x*D-b),{isValid:v,value:E}=l(B,Q);if(!v)throw new Error("bad point: invalid y coordinate");let P=(E&Er)===Er,N=(R&128)!==0;if(!w&&E===da&&N)throw new Error("bad point: x=0 and x_0=1");return N!==P&&(E=c(-E)),g.fromAffine({x:E,y:U})}static fromHex(y,w=!1){return g.fromBytes(vt("point",y),w)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}precompute(y=8,w=!0){return p.createCache(this,y),w||this.multiply(nB),this}assertValidity(){h(this)}equals(y){u(y);let{X:w,Y:C,Z:b}=this,{X:x,Y:_,Z:R}=y,U=c(w*R),T=c(x*b),D=c(C*R),B=c(_*b);return U===T&&D===B}is0(){return this.equals(g.ZERO)}negate(){return new g(c(-this.X),this.Y,this.Z,c(-this.T))}double(){let{a:y}=s,{X:w,Y:C,Z:b}=this,x=c(w*w),_=c(C*C),R=c(nB*c(b*b)),U=c(y*x),T=w+C,D=c(c(T*T)-x-_),B=U+_,Q=B-R,v=U-_,E=c(D*Q),P=c(B*v),N=c(D*v),J=c(Q*B);return new g(E,P,J,N)}add(y){u(y);let{a:w,d:C}=s,{X:b,Y:x,Z:_,T:R}=this,{X:U,Y:T,Z:D,T:B}=y,Q=c(b*U),v=c(x*T),E=c(R*C*B),P=c(_*D),N=c((b+x)*(U+T)-Q-v),J=P-E,z=P+E,L=c(v-w*Q),G=c(N*J),K=c(z*L),$=c(N*L),te=c(J*z);return new g(G,K,te,$)}subtract(y){return this.add(y.negate())}multiply(y){if(!n.isValidNot0(y))throw new Error("invalid scalar: expected 1 <= sc < curve.n");let{p:w,f:C}=p.cached(this,y,b=>Fc(g,b));return Fc(g,[w,C])[0]}multiplyUnsafe(y,w=g.ZERO){if(!n.isValid(y))throw new Error("invalid scalar: expected 0 <= sc < curve.n");return y===da?g.ZERO:this.is0()||y===Er?this:p.unsafe(this,y,C=>Fc(g,C),w)}isSmallOrder(){return this.multiplyUnsafe(o).is0()}isTorsionFree(){return p.unsafe(this,s.n).is0()}toAffine(y){return f(this,y)}clearCofactor(){return o===Er?this:this.multiplyUnsafe(o)}toBytes(){let{x:y,y:w}=this.toAffine(),C=i.toBytes(w);return C[C.length-1]|=y&Er?128:0,C}toHex(){return Tc(this.toBytes())}toString(){return`<Point ${this.is0()?"ZERO":this.toHex()}>`}get ex(){return this.X}get ey(){return this.Y}get ez(){return this.Z}get et(){return this.T}static normalizeZ(y){return Fc(g,y)}static msm(y,w){return nU(g,n,y,w)}_setWindowSize(y){this.precompute(y)}toRawBytes(){return this.toBytes()}}g.BASE=new g(s.Gx,s.Gy,Er,c(s.Gx*s.Gy)),g.ZERO=new g(da,Er,Er,da),g.Fp=i,g.Fn=n;let p=new gI(g,n.BITS);return g.BASE.precompute(8),g}function eee(r,e,t={}){if(typeof e!="function")throw new Error('"hash" function param is required');Ud(t,{},{adjustScalarBytes:"function",randomBytes:"function",domain:"function",prehash:"function",mapToCurve:"function"});let{prehash:i}=t,{BASE:n,Fp:s,Fn:o}=r,a=t.randomBytes||NI,c=t.adjustScalarBytes||(T=>T),l=t.domain||((T,D,B)=>{if(Oc(B,"phflag"),D.length||B)throw new Error("Contexts/pre-hash are not supported");return T});function d(T){return o.create(Mc(T))}function u(T){let D=C.secretKey;T=vt("private key",T,D);let B=vt("hashed private key",e(T),2*D),Q=c(B.slice(0,D)),v=B.slice(D,2*D),E=d(Q);return{head:Q,prefix:v,scalar:E}}function f(T){let{head:D,prefix:B,scalar:Q}=u(T),v=n.multiply(Q),E=v.toBytes();return{head:D,prefix:B,scalar:Q,point:v,pointBytes:E}}function h(T){return f(T).pointBytes}function g(T=Uint8Array.of(),...D){let B=Sn(...D);return d(e(l(B,vt("context",T),!!i)))}function p(T,D,B={}){T=vt("message",T),i&&(T=i(T));let{prefix:Q,scalar:v,pointBytes:E}=f(D),P=g(B.context,Q,T),N=n.multiply(P).toBytes(),J=g(B.context,N,E,T),z=o.create(P+J*v);if(!o.isValid(z))throw new Error("sign failed: invalid s");let L=Sn(N,o.toBytes(z));return Qn(L,C.signature,"result")}let I={zip215:!0};function y(T,D,B,Q=I){let{context:v,zip215:E}=Q,P=C.signature;T=vt("signature",T,P),D=vt("message",D),B=vt("publicKey",B,C.publicKey),E!==void 0&&Oc(E,"zip215"),i&&(D=i(D));let N=P/2,J=T.subarray(0,N),z=Mc(T.subarray(N,P)),L,G,K;try{L=r.fromBytes(B,E),G=r.fromBytes(J,E),K=n.multiplyUnsafe(z)}catch{return!1}if(!E&&L.isSmallOrder())return!1;let $=g(v,G.toBytes(),L.toBytes(),D);return G.add(L.multiplyUnsafe($)).subtract(K).clearCofactor().is0()}let w=s.BYTES,C={secretKey:w,publicKey:w,signature:2*w,seed:w};function b(T=a(C.seed)){return Qn(T,C.seed,"seed")}function x(T){let D=U.randomSecretKey(T);return{secretKey:D,publicKey:h(D)}}function _(T){return mA(T)&&T.length===o.BYTES}function R(T,D){try{return!!r.fromBytes(T,D)}catch{return!1}}let U={getExtendedPublicKey:f,randomSecretKey:b,isValidSecretKey:_,isValidPublicKey:R,toMontgomery(T){let{y:D}=r.fromBytes(T),B=C.publicKey,Q=B===32;if(!Q&&B!==57)throw new Error("only defined for 25519 and 448");let v=Q?s.div(Er+D,Er-D):s.div(D-Er,D+Er);return s.toBytes(v)},toMontgomerySecret(T){let D=C.secretKey;Qn(T,D);let B=e(T.subarray(0,D));return c(B).subarray(0,D)},randomPrivateKey:b,precompute(T=8,D=r.BASE){return D.precompute(T,!1)}};return Object.freeze({keygen:x,getPublicKey:h,sign:p,verify:y,utils:U,Point:r,lengths:C})}function tee(r){let e={a:r.a,d:r.d,p:r.Fp.ORDER,n:r.n,h:r.h,Gx:r.Gx,Gy:r.Gy},t=r.Fp,i=Si(e.n,r.nBitLength,!0),n={Fp:t,Fn:i,uvRatio:r.uvRatio},s={randomBytes:r.randomBytes,adjustScalarBytes:r.adjustScalarBytes,domain:r.domain,prehash:r.prehash,mapToCurve:r.mapToCurve};return{CURVE:e,curveOpts:n,hash:r.hash,eddsaOpts:s}}function ree(r,e){let t=e.Point;return Object.assign({},e,{ExtendedPoint:t,CURVE:r,nBitLength:t.Fn.BITS,nByteLength:t.Fn.BYTES})}function iee(r){let{CURVE:e,curveOpts:t,hash:i,eddsaOpts:n}=tee(r),s=mU(e,t),o=eee(s,i,n);return ree(r,o)}function nee(r){return Ud(r,{adjustScalarBytes:"function",powPminus2:"function"}),Object.freeze({...r})}function see(r){let e=nee(r),{P:t,type:i,adjustScalarBytes:n,powPminus2:s,randomBytes:o}=e,a=i==="x25519";if(!a&&i!=="x448")throw new Error("invalid type");let c=o||NI,l=a?255:448,d=a?32:56,u=BigInt(a?9:5),f=BigInt(a?121665:39081),h=a?Ey**BigInt(254):Ey**BigInt(447),g=a?BigInt(8)*Ey**BigInt(251)-ld:BigInt(4)*Ey**BigInt(445)-ld,p=h+g+ld,I=v=>pr(v,t),y=w(u);function w(v){return v1(I(v),d)}function C(v){let E=vt("u coordinate",v,d);return a&&(E[31]&=127),I(Mc(E))}function b(v){return Mc(n(vt("scalar",v,d)))}function x(v,E){let P=U(C(E),b(v));if(P===Tf)throw new Error("invalid private or public key received");return w(P)}function _(v){return x(v,y)}function R(v,E,P){let N=I(v*(E-P));return E=I(E-N),P=I(P+N),{x_2:E,x_3:P}}function U(v,E){rA("u",v,Tf,t),rA("scalar",E,h,p);let P=E,N=v,J=ld,z=Tf,L=v,G=ld,K=Tf;for(let te=BigInt(l-1);te>=Tf;te--){let re=P>>te&ld;K^=re,{x_2:J,x_3:L}=R(K,J,L),{x_2:z,x_3:G}=R(K,z,G),K=re;let ee=J+z,Z=I(ee*ee),me=J-z,le=I(me*me),Ae=Z-le,ve=L+G,qe=L-G,_e=I(qe*ee),se=I(ve*me),it=_e+se,ce=_e-se;L=I(it*it),G=I(N*I(ce*ce)),J=I(Z*le),z=I(Ae*(Z+I(f*Ae)))}({x_2:J,x_3:L}=R(K,J,L)),{x_2:z,x_3:G}=R(K,z,G);let $=s(z);return I(J*$)}let T={secretKey:d,publicKey:d,seed:d},D=(v=c(d))=>(hs(v,T.seed),v);function B(v){let E=D(v);return{secretKey:E,publicKey:_(E)}}return{keygen:B,getSharedSecret:(v,E)=>x(v,E),getPublicKey:v=>_(v),scalarMult:x,scalarMultBase:_,utils:{randomSecretKey:D,randomPrivateKey:D},GuBytes:y.slice(),lengths:T}}function yU(r){let e=zc.p,t=r*r*r%e,i=t*t*r%e,n=bt(i,c6,e)*i%e,s=bt(n,c6,e)*i%e,o=bt(s,GB,e)*t%e,a=bt(o,lee,e)*o%e,c=bt(a,dee,e)*a%e,l=bt(c,l6,e)*c%e,d=bt(l,uee,e)*l%e,u=bt(d,l6,e)*c%e,f=bt(u,GB,e)*t%e,h=bt(f,cee,e)*r%e;return bt(h,fee,e)*f%e}function IU(r){return r[0]&=252,r[55]|=128,r[56]=0,r}function Aee(r,e){let t=zc.p,i=pr(r*r*e,t),n=pr(i*r,t),s=pr(n*i*e,t),o=yU(s),a=pr(n*o,t),c=pr(a*a,t);return{isValid:pr(c*e,t)===r,value:a}}function gee(r,e,t){if(e.length>255)throw new Error("context must be smaller than 255, got: "+e.length);return Sn(zX("SigEd448"),new Uint8Array([t?1:0,e.length]),e,r)}function wee(r){let e=D1.p,t=BigInt(3),i=BigInt(6),n=BigInt(11),s=BigInt(22),o=BigInt(23),a=BigInt(44),c=BigInt(88),l=r*r*r%e,d=l*l*r%e,u=bt(d,t,e)*d%e,f=bt(u,t,e)*d%e,h=bt(f,u6,e)*l%e,g=bt(h,n,e)*h%e,p=bt(g,s,e)*g%e,I=bt(p,a,e)*p%e,y=bt(I,c,e)*I%e,w=bt(y,a,e)*p%e,C=bt(w,t,e)*d%e,b=bt(C,o,e)*g%e,x=bt(b,i,e)*l%e,_=bt(x,u6,e);if(!zB.eql(zB.sqr(_),r))throw new Error("Cannot find square root");return _}function f6(r,e,t,i){return r===0?e^t^i:r===1?e&t|~e&i:r===2?(e|~t)^i:r===3?e&i|t&~i:e^(t|~i)}function p6(r,e,t,i){r[e]=t>>24&255,r[e+1]=t>>16&255,r[e+2]=t>>8&255,r[e+3]=t&255,r[e+4]=i>>24&255,r[e+5]=i>>16&255,r[e+6]=i>>8&255,r[e+7]=i&255}function Xee(r,e,t,i,n){var s,o=0;for(s=0;s<n;s++)o|=r[e+s]^t[i+s];return(1&o-1>>>8)-1}function FU(r,e,t,i){return Xee(r,e,t,i,32)}function Ia(r,e){var t;for(t=0;t<16;t++)r[t]=e[t]|0}function aB(r){var e,t,i=1;for(e=0;e<16;e++)t=r[e]+i+65535,i=Math.floor(t/65536),r[e]=t-i*65536;r[0]+=i-1+37*(i-1)}function pd(r,e,t){for(var i,n=~(t-1),s=0;s<16;s++)i=n&(r[s]^e[s]),r[s]^=i,e[s]^=i}function iA(r,e){var t,i,n,s=Pe(),o=Pe();for(t=0;t<16;t++)o[t]=e[t];for(aB(o),aB(o),aB(o),i=0;i<2;i++){for(s[0]=o[0]-65517,t=1;t<15;t++)s[t]=o[t]-65535-(s[t-1]>>16&1),s[t-1]&=65535;s[15]=o[15]-32767-(s[14]>>16&1),n=s[15]>>16&1,s[14]&=65535,pd(o,s,1-n)}for(t=0;t<16;t++)r[2*t]=o[t]&255,r[2*t+1]=o[t]>>8}function m6(r,e){var t=new Uint8Array(32),i=new Uint8Array(32);return iA(t,r),iA(i,e),FU(t,0,i,0)}function PU(r){var e=new Uint8Array(32);return iA(e,r),e[0]&1}function TU(r,e){var t;for(t=0;t<16;t++)r[t]=e[2*t]+(e[2*t+1]<<8);r[15]&=32767}function ss(r,e,t){for(var i=0;i<16;i++)r[i]=e[i]+t[i]}function as(r,e,t){for(var i=0;i<16;i++)r[i]=e[i]-t[i]}function at(r,e,t){var i,n,s=0,o=0,a=0,c=0,l=0,d=0,u=0,f=0,h=0,g=0,p=0,I=0,y=0,w=0,C=0,b=0,x=0,_=0,R=0,U=0,T=0,D=0,B=0,Q=0,v=0,E=0,P=0,N=0,J=0,z=0,L=0,G=t[0],K=t[1],$=t[2],te=t[3],re=t[4],ee=t[5],Z=t[6],me=t[7],le=t[8],Ae=t[9],ve=t[10],qe=t[11],_e=t[12],se=t[13],it=t[14],ce=t[15];i=e[0],s+=i*G,o+=i*K,a+=i*$,c+=i*te,l+=i*re,d+=i*ee,u+=i*Z,f+=i*me,h+=i*le,g+=i*Ae,p+=i*ve,I+=i*qe,y+=i*_e,w+=i*se,C+=i*it,b+=i*ce,i=e[1],o+=i*G,a+=i*K,c+=i*$,l+=i*te,d+=i*re,u+=i*ee,f+=i*Z,h+=i*me,g+=i*le,p+=i*Ae,I+=i*ve,y+=i*qe,w+=i*_e,C+=i*se,b+=i*it,x+=i*ce,i=e[2],a+=i*G,c+=i*K,l+=i*$,d+=i*te,u+=i*re,f+=i*ee,h+=i*Z,g+=i*me,p+=i*le,I+=i*Ae,y+=i*ve,w+=i*qe,C+=i*_e,b+=i*se,x+=i*it,_+=i*ce,i=e[3],c+=i*G,l+=i*K,d+=i*$,u+=i*te,f+=i*re,h+=i*ee,g+=i*Z,p+=i*me,I+=i*le,y+=i*Ae,w+=i*ve,C+=i*qe,b+=i*_e,x+=i*se,_+=i*it,R+=i*ce,i=e[4],l+=i*G,d+=i*K,u+=i*$,f+=i*te,h+=i*re,g+=i*ee,p+=i*Z,I+=i*me,y+=i*le,w+=i*Ae,C+=i*ve,b+=i*qe,x+=i*_e,_+=i*se,R+=i*it,U+=i*ce,i=e[5],d+=i*G,u+=i*K,f+=i*$,h+=i*te,g+=i*re,p+=i*ee,I+=i*Z,y+=i*me,w+=i*le,C+=i*Ae,b+=i*ve,x+=i*qe,_+=i*_e,R+=i*se,U+=i*it,T+=i*ce,i=e[6],u+=i*G,f+=i*K,h+=i*$,g+=i*te,p+=i*re,I+=i*ee,y+=i*Z,w+=i*me,C+=i*le,b+=i*Ae,x+=i*ve,_+=i*qe,R+=i*_e,U+=i*se,T+=i*it,D+=i*ce,i=e[7],f+=i*G,h+=i*K,g+=i*$,p+=i*te,I+=i*re,y+=i*ee,w+=i*Z,C+=i*me,b+=i*le,x+=i*Ae,_+=i*ve,R+=i*qe,U+=i*_e,T+=i*se,D+=i*it,B+=i*ce,i=e[8],h+=i*G,g+=i*K,p+=i*$,I+=i*te,y+=i*re,w+=i*ee,C+=i*Z,b+=i*me,x+=i*le,_+=i*Ae,R+=i*ve,U+=i*qe,T+=i*_e,D+=i*se,B+=i*it,Q+=i*ce,i=e[9],g+=i*G,p+=i*K,I+=i*$,y+=i*te,w+=i*re,C+=i*ee,b+=i*Z,x+=i*me,_+=i*le,R+=i*Ae,U+=i*ve,T+=i*qe,D+=i*_e,B+=i*se,Q+=i*it,v+=i*ce,i=e[10],p+=i*G,I+=i*K,y+=i*$,w+=i*te,C+=i*re,b+=i*ee,x+=i*Z,_+=i*me,R+=i*le,U+=i*Ae,T+=i*ve,D+=i*qe,B+=i*_e,Q+=i*se,v+=i*it,E+=i*ce,i=e[11],I+=i*G,y+=i*K,w+=i*$,C+=i*te,b+=i*re,x+=i*ee,_+=i*Z,R+=i*me,U+=i*le,T+=i*Ae,D+=i*ve,B+=i*qe,Q+=i*_e,v+=i*se,E+=i*it,P+=i*ce,i=e[12],y+=i*G,w+=i*K,C+=i*$,b+=i*te,x+=i*re,_+=i*ee,R+=i*Z,U+=i*me,T+=i*le,D+=i*Ae,B+=i*ve,Q+=i*qe,v+=i*_e,E+=i*se,P+=i*it,N+=i*ce,i=e[13],w+=i*G,C+=i*K,b+=i*$,x+=i*te,_+=i*re,R+=i*ee,U+=i*Z,T+=i*me,D+=i*le,B+=i*Ae,Q+=i*ve,v+=i*qe,E+=i*_e,P+=i*se,N+=i*it,J+=i*ce,i=e[14],C+=i*G,b+=i*K,x+=i*$,_+=i*te,R+=i*re,U+=i*ee,T+=i*Z,D+=i*me,B+=i*le,Q+=i*Ae,v+=i*ve,E+=i*qe,P+=i*_e,N+=i*se,J+=i*it,z+=i*ce,i=e[15],b+=i*G,x+=i*K,_+=i*$,R+=i*te,U+=i*re,T+=i*ee,D+=i*Z,B+=i*me,Q+=i*le,v+=i*Ae,E+=i*ve,P+=i*qe,N+=i*_e,J+=i*se,z+=i*it,L+=i*ce,s+=38*x,o+=38*_,a+=38*R,c+=38*U,l+=38*T,d+=38*D,u+=38*B,f+=38*Q,h+=38*v,g+=38*E,p+=38*P,I+=38*N,y+=38*J,w+=38*z,C+=38*L,n=1,i=s+n+65535,n=Math.floor(i/65536),s=i-n*65536,i=o+n+65535,n=Math.floor(i/65536),o=i-n*65536,i=a+n+65535,n=Math.floor(i/65536),a=i-n*65536,i=c+n+65535,n=Math.floor(i/65536),c=i-n*65536,i=l+n+65535,n=Math.floor(i/65536),l=i-n*65536,i=d+n+65535,n=Math.floor(i/65536),d=i-n*65536,i=u+n+65535,n=Math.floor(i/65536),u=i-n*65536,i=f+n+65535,n=Math.floor(i/65536),f=i-n*65536,i=h+n+65535,n=Math.floor(i/65536),h=i-n*65536,i=g+n+65535,n=Math.floor(i/65536),g=i-n*65536,i=p+n+65535,n=Math.floor(i/65536),p=i-n*65536,i=I+n+65535,n=Math.floor(i/65536),I=i-n*65536,i=y+n+65535,n=Math.floor(i/65536),y=i-n*65536,i=w+n+65535,n=Math.floor(i/65536),w=i-n*65536,i=C+n+65535,n=Math.floor(i/65536),C=i-n*65536,i=b+n+65535,n=Math.floor(i/65536),b=i-n*65536,s+=n-1+37*(n-1),n=1,i=s+n+65535,n=Math.floor(i/65536),s=i-n*65536,i=o+n+65535,n=Math.floor(i/65536),o=i-n*65536,i=a+n+65535,n=Math.floor(i/65536),a=i-n*65536,i=c+n+65535,n=Math.floor(i/65536),c=i-n*65536,i=l+n+65535,n=Math.floor(i/65536),l=i-n*65536,i=d+n+65535,n=Math.floor(i/65536),d=i-n*65536,i=u+n+65535,n=Math.floor(i/65536),u=i-n*65536,i=f+n+65535,n=Math.floor(i/65536),f=i-n*65536,i=h+n+65535,n=Math.floor(i/65536),h=i-n*65536,i=g+n+65535,n=Math.floor(i/65536),g=i-n*65536,i=p+n+65535,n=Math.floor(i/65536),p=i-n*65536,i=I+n+65535,n=Math.floor(i/65536),I=i-n*65536,i=y+n+65535,n=Math.floor(i/65536),y=i-n*65536,i=w+n+65535,n=Math.floor(i/65536),w=i-n*65536,i=C+n+65535,n=Math.floor(i/65536),C=i-n*65536,i=b+n+65535,n=Math.floor(i/65536),b=i-n*65536,s+=n-1+37*(n-1),r[0]=s,r[1]=o,r[2]=a,r[3]=c,r[4]=l,r[5]=d,r[6]=u,r[7]=f,r[8]=h,r[9]=g,r[10]=p,r[11]=I,r[12]=y,r[13]=w,r[14]=C,r[15]=b}function Dn(r,e){at(r,e,e)}function UU(r,e){var t=Pe(),i;for(i=0;i<16;i++)t[i]=e[i];for(i=253;i>=0;i--)Dn(t,t),i!==2&&i!==4&&at(t,t,e);for(i=0;i<16;i++)r[i]=t[i]}function Zee(r,e){var t=Pe(),i;for(i=0;i<16;i++)t[i]=e[i];for(i=250;i>=0;i--)Dn(t,t),i!==1&&at(t,t,e);for(i=0;i<16;i++)r[i]=t[i]}function RU(r,e,t){var i=new Uint8Array(32),n=new Float64Array(80),s,o,a=Pe(),c=Pe(),l=Pe(),d=Pe(),u=Pe(),f=Pe();for(o=0;o<31;o++)i[o]=e[o];for(i[31]=e[31]&127|64,i[0]&=248,TU(n,t),o=0;o<16;o++)c[o]=n[o],d[o]=a[o]=l[o]=0;for(a[0]=d[0]=1,o=254;o>=0;--o)s=i[o>>>3]>>>(o&7)&1,pd(a,c,s),pd(l,d,s),ss(u,a,l),as(a,a,l),ss(l,c,d),as(c,c,d),Dn(d,u),Dn(f,a),at(a,l,a),at(l,c,u),ss(u,a,l),as(a,a,l),Dn(c,a),as(l,d,f),at(a,l,$ee),ss(a,a,d),at(l,l,a),at(a,d,f),at(d,c,n),Dn(c,u),pd(a,c,s),pd(l,d,s);for(o=0;o<16;o++)n[o+16]=a[o],n[o+32]=l[o],n[o+48]=c[o],n[o+64]=d[o];var h=n.subarray(32),g=n.subarray(16);return UU(h,h),at(g,g,h),iA(r,g),0}function NU(r,e){return RU(r,e,_U)}function ete(r,e){return Q1(e,32),NU(r,e)}function I6(r,e,t,i){for(var n=new Int32Array(16),s=new Int32Array(16),o,a,c,l,d,u,f,h,g,p,I,y,w,C,b,x,_,R,U,T,D,B,Q,v,E,P,N=r[0],J=r[1],z=r[2],L=r[3],G=r[4],K=r[5],$=r[6],te=r[7],re=e[0],ee=e[1],Z=e[2],me=e[3],le=e[4],Ae=e[5],ve=e[6],qe=e[7],_e=0;i>=128;){for(U=0;U<16;U++)T=8*U+_e,n[U]=t[T+0]<<24|t[T+1]<<16|t[T+2]<<8|t[T+3],s[U]=t[T+4]<<24|t[T+5]<<16|t[T+6]<<8|t[T+7];for(U=0;U<80;U++)if(o=N,a=J,c=z,l=L,d=G,u=K,f=$,h=te,g=re,p=ee,I=Z,y=me,w=le,C=Ae,b=ve,x=qe,D=te,B=qe,Q=B&65535,v=B>>>16,E=D&65535,P=D>>>16,D=(G>>>14|le<<18)^(G>>>18|le<<14)^(le>>>9|G<<23),B=(le>>>14|G<<18)^(le>>>18|G<<14)^(G>>>9|le<<23),Q+=B&65535,v+=B>>>16,E+=D&65535,P+=D>>>16,D=G&K^~G&$,B=le&Ae^~le&ve,Q+=B&65535,v+=B>>>16,E+=D&65535,P+=D>>>16,D=y6[U*2],B=y6[U*2+1],Q+=B&65535,v+=B>>>16,E+=D&65535,P+=D>>>16,D=n[U%16],B=s[U%16],Q+=B&65535,v+=B>>>16,E+=D&65535,P+=D>>>16,v+=Q>>>16,E+=v>>>16,P+=E>>>16,_=E&65535|P<<16,R=Q&65535|v<<16,D=_,B=R,Q=B&65535,v=B>>>16,E=D&65535,P=D>>>16,D=(N>>>28|re<<4)^(re>>>2|N<<30)^(re>>>7|N<<25),B=(re>>>28|N<<4)^(N>>>2|re<<30)^(N>>>7|re<<25),Q+=B&65535,v+=B>>>16,E+=D&65535,P+=D>>>16,D=N&J^N&z^J&z,B=re&ee^re&Z^ee&Z,Q+=B&65535,v+=B>>>16,E+=D&65535,P+=D>>>16,v+=Q>>>16,E+=v>>>16,P+=E>>>16,h=E&65535|P<<16,x=Q&65535|v<<16,D=l,B=y,Q=B&65535,v=B>>>16,E=D&65535,P=D>>>16,D=_,B=R,Q+=B&65535,v+=B>>>16,E+=D&65535,P+=D>>>16,v+=Q>>>16,E+=v>>>16,P+=E>>>16,l=E&65535|P<<16,y=Q&65535|v<<16,J=o,z=a,L=c,G=l,K=d,$=u,te=f,N=h,ee=g,Z=p,me=I,le=y,Ae=w,ve=C,qe=b,re=x,U%16===15)for(T=0;T<16;T++)D=n[T],B=s[T],Q=B&65535,v=B>>>16,E=D&65535,P=D>>>16,D=n[(T+9)%16],B=s[(T+9)%16],Q+=B&65535,v+=B>>>16,E+=D&65535,P+=D>>>16,_=n[(T+1)%16],R=s[(T+1)%16],D=(_>>>1|R<<31)^(_>>>8|R<<24)^_>>>7,B=(R>>>1|_<<31)^(R>>>8|_<<24)^(R>>>7|_<<25),Q+=B&65535,v+=B>>>16,E+=D&65535,P+=D>>>16,_=n[(T+14)%16],R=s[(T+14)%16],D=(_>>>19|R<<13)^(R>>>29|_<<3)^_>>>6,B=(R>>>19|_<<13)^(_>>>29|R<<3)^(R>>>6|_<<26),Q+=B&65535,v+=B>>>16,E+=D&65535,P+=D>>>16,v+=Q>>>16,E+=v>>>16,P+=E>>>16,n[T]=E&65535|P<<16,s[T]=Q&65535|v<<16;D=N,B=re,Q=B&65535,v=B>>>16,E=D&65535,P=D>>>16,D=r[0],B=e[0],Q+=B&65535,v+=B>>>16,E+=D&65535,P+=D>>>16,v+=Q>>>16,E+=v>>>16,P+=E>>>16,r[0]=N=E&65535|P<<16,e[0]=re=Q&65535|v<<16,D=J,B=ee,Q=B&65535,v=B>>>16,E=D&65535,P=D>>>16,D=r[1],B=e[1],Q+=B&65535,v+=B>>>16,E+=D&65535,P+=D>>>16,v+=Q>>>16,E+=v>>>16,P+=E>>>16,r[1]=J=E&65535|P<<16,e[1]=ee=Q&65535|v<<16,D=z,B=Z,Q=B&65535,v=B>>>16,E=D&65535,P=D>>>16,D=r[2],B=e[2],Q+=B&65535,v+=B>>>16,E+=D&65535,P+=D>>>16,v+=Q>>>16,E+=v>>>16,P+=E>>>16,r[2]=z=E&65535|P<<16,e[2]=Z=Q&65535|v<<16,D=L,B=me,Q=B&65535,v=B>>>16,E=D&65535,P=D>>>16,D=r[3],B=e[3],Q+=B&65535,v+=B>>>16,E+=D&65535,P+=D>>>16,v+=Q>>>16,E+=v>>>16,P+=E>>>16,r[3]=L=E&65535|P<<16,e[3]=me=Q&65535|v<<16,D=G,B=le,Q=B&65535,v=B>>>16,E=D&65535,P=D>>>16,D=r[4],B=e[4],Q+=B&65535,v+=B>>>16,E+=D&65535,P+=D>>>16,v+=Q>>>16,E+=v>>>16,P+=E>>>16,r[4]=G=E&65535|P<<16,e[4]=le=Q&65535|v<<16,D=K,B=Ae,Q=B&65535,v=B>>>16,E=D&65535,P=D>>>16,D=r[5],B=e[5],Q+=B&65535,v+=B>>>16,E+=D&65535,P+=D>>>16,v+=Q>>>16,E+=v>>>16,P+=E>>>16,r[5]=K=E&65535|P<<16,e[5]=Ae=Q&65535|v<<16,D=$,B=ve,Q=B&65535,v=B>>>16,E=D&65535,P=D>>>16,D=r[6],B=e[6],Q+=B&65535,v+=B>>>16,E+=D&65535,P+=D>>>16,v+=Q>>>16,E+=v>>>16,P+=E>>>16,r[6]=$=E&65535|P<<16,e[6]=ve=Q&65535|v<<16,D=te,B=qe,Q=B&65535,v=B>>>16,E=D&65535,P=D>>>16,D=r[7],B=e[7],Q+=B&65535,v+=B>>>16,E+=D&65535,P+=D>>>16,v+=Q>>>16,E+=v>>>16,P+=E>>>16,r[7]=te=E&65535|P<<16,e[7]=qe=Q&65535|v<<16,_e+=128,i-=128}return i}function Kf(r,e,t){var i=new Int32Array(8),n=new Int32Array(8),s=new Uint8Array(256),o,a=t;for(i[0]=1779033703,i[1]=3144134277,i[2]=1013904242,i[3]=2773480762,i[4]=1359893119,i[5]=2600822924,i[6]=528734635,i[7]=1541459225,n[0]=4089235720,n[1]=2227873595,n[2]=4271175723,n[3]=1595750129,n[4]=2917565137,n[5]=725511199,n[6]=4215389547,n[7]=327033209,I6(i,n,e,t),t%=128,o=0;o<t;o++)s[o]=e[a-t+o];for(s[t]=128,t=256-128*(t<112?1:0),s[t-9]=0,p6(s,t-8,a/536870912|0,a<<3),I6(i,n,s,t),o=0;o<8;o++)p6(r,8*o,i[o],n[o]);return 0}function YB(r,e){var t=Pe(),i=Pe(),n=Pe(),s=Pe(),o=Pe(),a=Pe(),c=Pe(),l=Pe(),d=Pe();as(t,r[1],r[0]),as(d,e[1],e[0]),at(t,t,d),ss(i,r[0],r[1]),ss(d,e[0],e[1]),at(i,i,d),at(n,r[3],e[3]),at(n,n,Yee),at(s,r[2],e[2]),ss(s,s,s),as(o,i,t),as(a,s,n),ss(c,s,n),ss(l,i,t),at(r[0],o,a),at(r[1],l,c),at(r[2],c,a),at(r[3],o,l)}function w6(r,e,t){var i;for(i=0;i<4;i++)pd(r[i],e[i],t)}function _1(r,e){var t=Pe(),i=Pe(),n=Pe();UU(n,e[2]),at(t,e[0],n),at(i,e[1],n),iA(r,i),r[31]^=PU(t)<<7}function qU(r,e,t){var i,n;for(Ia(r[0],VB),Ia(r[1],mI),Ia(r[2],mI),Ia(r[3],VB),n=255;n>=0;--n)i=t[n/8|0]>>(n&7)&1,w6(r,e,i),YB(e,r),YB(r,r),w6(r,e,i)}function F1(r,e){var t=[Pe(),Pe(),Pe(),Pe()];Ia(t[0],h6),Ia(t[1],g6),Ia(t[2],mI),at(t[3],h6,g6),qU(r,t,e)}function OU(r,e,t){var i=new Uint8Array(64),n=[Pe(),Pe(),Pe(),Pe()],s;for(t||Q1(e,32),Kf(i,e,32),i[0]&=248,i[31]&=127,i[31]|=64,F1(n,i),_1(r,n),s=0;s<32;s++)e[s+32]=r[s];return 0}function MU(r,e){var t,i,n,s;for(i=63;i>=32;--i){for(t=0,n=i-32,s=i-12;n<s;++n)e[n]+=t-16*e[i]*cB[n-(i-32)],t=Math.floor((e[n]+128)/256),e[n]-=t*256;e[n]+=t,e[i]=0}for(t=0,n=0;n<32;n++)e[n]+=t-(e[31]>>4)*cB[n],t=e[n]>>8,e[n]&=255;for(n=0;n<32;n++)e[n]-=t*cB[n];for(i=0;i<32;i++)e[i+1]+=e[i]>>8,r[i]=e[i]&255}function WB(r){var e=new Float64Array(64),t;for(t=0;t<64;t++)e[t]=r[t];for(t=0;t<64;t++)r[t]=0;MU(r,e)}function tte(r,e,t,i){var n=new Uint8Array(64),s=new Uint8Array(64),o=new Uint8Array(64),a,c,l=new Float64Array(64),d=[Pe(),Pe(),Pe(),Pe()];Kf(n,i,32),n[0]&=248,n[31]&=127,n[31]|=64;var u=t+64;for(a=0;a<t;a++)r[64+a]=e[a];for(a=0;a<32;a++)r[32+a]=n[32+a];for(Kf(o,r.subarray(32),t+32),WB(o),F1(d,o),_1(r,d),a=32;a<64;a++)r[a]=i[a];for(Kf(s,r,t+64),WB(s),a=0;a<64;a++)l[a]=0;for(a=0;a<32;a++)l[a]=o[a];for(a=0;a<32;a++)for(c=0;c<32;c++)l[a+c]+=s[a]*n[c];return MU(r.subarray(32),l),u}function rte(r,e){var t=Pe(),i=Pe(),n=Pe(),s=Pe(),o=Pe(),a=Pe(),c=Pe();return Ia(r[2],mI),TU(r[1],e),Dn(n,r[1]),at(s,n,Vee),as(n,n,r[2]),ss(s,r[2],s),Dn(o,s),Dn(a,o),at(c,a,o),at(t,c,n),at(t,t,s),Zee(t,t),at(t,t,n),at(t,t,s),at(t,t,s),at(r[0],t,s),Dn(i,r[0]),at(i,i,s),m6(i,n)&&at(r[0],r[0],Wee),Dn(i,r[0]),at(i,i,s),m6(i,n)?-1:(PU(r[0])===e[31]>>7&&as(r[0],VB,r[0]),at(r[3],r[0],r[1]),0)}function ite(r,e,t,i){var n,s=new Uint8Array(32),o=new Uint8Array(64),a=[Pe(),Pe(),Pe(),Pe()],c=[Pe(),Pe(),Pe(),Pe()];if(t<64||rte(c,i))return-1;for(n=0;n<t;n++)r[n]=e[n];for(n=0;n<32;n++)r[n+32]=i[n];if(Kf(o,r,t),WB(o),qU(a,c,o),F1(c,e.subarray(32)),YB(a,c),_1(s,a),t-=64,FU(e,0,s,0)){for(n=0;n<t;n++)r[n]=0;return-1}for(n=0;n<t;n++)r[n]=e[n+64];return t}function Rd(){for(var r=0;r<arguments.length;r++)if(!(arguments[r]instanceof Uint8Array))throw new TypeError("unexpected type, use Uint8Array")}function ote(r){for(var e=0;e<r.length;e++)r[e]=0}function lB(r,e,t,i,n,s){let o=[16843776,0,65536,16843780,16842756,66564,4,65536,1024,16843776,16843780,1024,16778244,16842756,16777216,4,1028,16778240,16778240,66560,66560,16842752,16842752,16778244,65540,16777220,16777220,65540,0,1028,66564,16777216,65536,16843780,4,16842752,16843776,16777216,16777216,1024,16842756,65536,66560,16777220,1024,4,16778244,66564,16843780,65540,16842752,16778244,16777220,1028,66564,16843776,1028,16778240,16778240,0,65540,66560,0,16842756],a=[-2146402272,-2147450880,32768,1081376,1048576,32,-2146435040,-2147450848,-2147483616,-2146402272,-2146402304,-2147483648,-2147450880,1048576,32,-2146435040,1081344,1048608,-2147450848,0,-2147483648,32768,1081376,-2146435072,1048608,-2147483616,0,1081344,32800,-2146402304,-2146435072,32800,0,1081376,-2146435040,1048576,-2147450848,-2146435072,-2146402304,32768,-2146435072,-2147450880,32,-2146402272,1081376,32,32768,-2147483648,32800,-2146402304,1048576,-2147483616,1048608,-2147450848,-2147483616,1048608,1081344,0,-2147450880,32800,-2147483648,-2146435040,-2146402272,1081344],c=[520,134349312,0,134348808,134218240,0,131592,134218240,131080,134217736,134217736,131072,134349320,131080,134348800,520,134217728,8,134349312,512,131584,134348800,134348808,131592,134218248,131584,131072,134218248,8,134349320,512,134217728,134349312,134217728,131080,520,131072,134349312,134218240,0,512,131080,134349320,134218240,134217736,512,0,134348808,134218248,131072,134217728,134349320,8,131592,131584,134217736,134348800,134218248,520,134348800,131592,8,134348808,131584],l=[8396801,8321,8321,128,8396928,8388737,8388609,8193,0,8396800,8396800,8396929,129,0,8388736,8388609,1,8192,8388608,8396801,128,8388608,8193,8320,8388737,1,8320,8388736,8192,8396928,8396929,129,8388736,8388609,8396800,8396929,129,0,0,8396800,8320,8388736,8388737,1,8396801,8321,8321,128,8396929,129,1,8192,8388609,8193,8396928,8388737,8193,8320,8388608,8396801,128,8388608,8192,8396928],d=[256,34078976,34078720,1107296512,524288,256,1073741824,34078720,1074266368,524288,33554688,1074266368,1107296512,1107820544,524544,1073741824,33554432,1074266112,1074266112,0,1073742080,1107820800,1107820800,33554688,1107820544,1073742080,0,1107296256,34078976,33554432,1107296256,524544,524288,1107296512,256,33554432,1073741824,34078720,1107296512,1074266368,33554688,1073741824,1107820544,34078976,1074266368,256,33554432,1107820544,1107820800,524544,1107296256,1107820800,34078720,0,1074266112,1107296256,524544,33554688,1073742080,524288,0,1074266112,34078976,1073742080],u=[536870928,541065216,16384,541081616,541065216,16,541081616,4194304,536887296,4210704,4194304,536870928,4194320,536887296,536870912,16400,0,4194320,536887312,16384,4210688,536887312,16,541065232,541065232,0,4210704,541081600,16400,4210688,541081600,536870912,536887296,16,541065232,4210688,541081616,4194304,16400,536870928,4194304,536887296,536870912,16400,536870928,541081616,4210688,541065216,4210704,541081600,0,541065232,16,16384,541065216,4210704,16384,4194320,536887312,0,541081600,536870912,4194320,536887312],f=[2097152,69206018,67110914,0,2048,67110914,2099202,69208064,69208066,2097152,0,67108866,2,67108864,69206018,2050,67110912,2099202,2097154,67110912,67108866,69206016,69208064,2097154,69206016,2048,2050,69208066,2099200,2,67108864,2099200,67108864,2099200,2097152,67110914,67110914,69206018,69206018,2,2097154,67108864,67110912,2097152,69208064,2050,2099202,69208064,2050,67108866,69208066,69206016,2099200,0,2,69208066,0,2099202,69206016,2048,67108866,67110912,2048,2097154],h=[268439616,4096,262144,268701760,268435456,268439616,64,268435456,262208,268697600,268701760,266240,268701696,266304,4096,64,268697600,268435520,268439552,4160,266240,262208,268697664,268701696,4160,0,0,268697664,268435520,268439552,266304,262144,266304,262144,268701696,4096,64,268697664,4096,266304,268439552,64,268435520,268697600,268697664,268435456,262144,268439616,0,268701760,262208,268435520,268697600,268439552,268439616,0,268701760,266240,266240,4160,4160,262208,268435456,268701696],g=0,p,I,y,w,C,b,x,_,R,U,T=e.length,D=r.length===32?3:9;D===3?_=t?[0,32,2]:[30,-2,-2]:_=t?[0,32,2,62,30,-2,64,96,2]:[94,62,-2,32,64,2,30,-2,-2],t&&(e=ate(e),T=e.length);let B=new Uint8Array(T),Q=0;for(;g<T;){for(b=e[g++]<<24|e[g++]<<16|e[g++]<<8|e[g++],x=e[g++]<<24|e[g++]<<16|e[g++]<<8|e[g++],y=(b>>>4^x)&252645135,x^=y,b^=y<<4,y=(b>>>16^x)&65535,x^=y,b^=y<<16,y=(x>>>2^b)&858993459,b^=y,x^=y<<2,y=(x>>>8^b)&16711935,b^=y,x^=y<<8,y=(b>>>1^x)&1431655765,x^=y,b^=y<<1,b=b<<1|b>>>31,x=x<<1|x>>>31,I=0;I<D;I+=3){for(R=_[I+1],U=_[I+2],p=_[I];p!==R;p+=U)w=x^r[p],C=(x>>>4|x<<28)^r[p+1],y=b,b=x,x=y^(a[w>>>24&63]|l[w>>>16&63]|u[w>>>8&63]|h[w&63]|o[C>>>24&63]|c[C>>>16&63]|d[C>>>8&63]|f[C&63]);y=b,b=x,x=y}b=b>>>1|b<<31,x=x>>>1|x<<31,y=(b>>>1^x)&1431655765,x^=y,b^=y<<1,y=(x>>>8^b)&16711935,b^=y,x^=y<<8,y=(x>>>2^b)&858993459,b^=y,x^=y<<2,y=(b>>>16^x)&65535,x^=y,b^=y<<16,y=(b>>>4^x)&252645135,x^=y,b^=y<<4,B[Q++]=b>>>24,B[Q++]=b>>>16&255,B[Q++]=b>>>8&255,B[Q++]=b&255,B[Q++]=x>>>24,B[Q++]=x>>>16&255,B[Q++]=x>>>8&255,B[Q++]=x&255}return t||(B=cte(B)),B}function dB(r){let e=[0,4,536870912,536870916,65536,65540,536936448,536936452,512,516,536871424,536871428,66048,66052,536936960,536936964],t=[0,1,1048576,1048577,67108864,67108865,68157440,68157441,256,257,1048832,1048833,67109120,67109121,68157696,68157697],i=[0,8,2048,2056,16777216,16777224,16779264,16779272,0,8,2048,2056,16777216,16777224,16779264,16779272],n=[0,2097152,134217728,136314880,8192,2105344,134225920,136323072,131072,2228224,134348800,136445952,139264,2236416,134356992,136454144],s=[0,262144,16,262160,0,262144,16,262160,4096,266240,4112,266256,4096,266240,4112,266256],o=[0,1024,32,1056,0,1024,32,1056,33554432,33555456,33554464,33555488,33554432,33555456,33554464,33555488],a=[0,268435456,524288,268959744,2,268435458,524290,268959746,0,268435456,524288,268959744,2,268435458,524290,268959746],c=[0,65536,2048,67584,536870912,536936448,536872960,536938496,131072,196608,133120,198656,537001984,537067520,537004032,537069568],l=[0,262144,0,262144,2,262146,2,262146,33554432,33816576,33554432,33816576,33554434,33816578,33554434,33816578],d=[0,268435456,8,268435464,0,268435456,8,268435464,1024,268436480,1032,268436488,1024,268436480,1032,268436488],u=[0,32,0,32,1048576,1048608,1048576,1048608,8192,8224,8192,8224,1056768,1056800,1056768,1056800],f=[0,16777216,512,16777728,2097152,18874368,2097664,18874880,67108864,83886080,67109376,83886592,69206016,85983232,69206528,85983744],h=[0,4096,134217728,134221824,524288,528384,134742016,134746112,16,4112,134217744,134221840,524304,528400,134742032,134746128],g=[0,4,256,260,0,4,256,260,1,5,257,261,1,5,257,261],p=r.length>8?3:1,I=new Array(32*p),y=[0,0,1,1,1,1,1,1,0,1,1,1,1,1,1,0],w,C,b=0,x=0,_;for(let R=0;R<p;R++){let U=r[b++]<<24|r[b++]<<16|r[b++]<<8|r[b++],T=r[b++]<<24|r[b++]<<16|r[b++]<<8|r[b++];_=(U>>>4^T)&252645135,T^=_,U^=_<<4,_=(T>>>-16^U)&65535,U^=_,T^=_<<-16,_=(U>>>2^T)&858993459,T^=_,U^=_<<2,_=(T>>>-16^U)&65535,U^=_,T^=_<<-16,_=(U>>>1^T)&1431655765,T^=_,U^=_<<1,_=(T>>>8^U)&16711935,U^=_,T^=_<<8,_=(U>>>1^T)&1431655765,T^=_,U^=_<<1,_=U<<8|T>>>20&240,U=T<<24|T<<8&16711680|T>>>8&65280|T>>>24&240,T=_;for(let D=0;D<y.length;D++)y[D]?(U=U<<2|U>>>26,T=T<<2|T>>>26):(U=U<<1|U>>>27,T=T<<1|T>>>27),U&=-15,T&=-15,w=e[U>>>28]|t[U>>>24&15]|i[U>>>20&15]|n[U>>>16&15]|s[U>>>12&15]|o[U>>>8&15]|a[U>>>4&15],C=c[T>>>28]|l[T>>>24&15]|d[T>>>20&15]|u[T>>>16&15]|f[T>>>12&15]|h[T>>>8&15]|g[T>>>4&15],_=(C>>>16^w)&65535,I[x++]=w^_,I[x++]=C^_<<16}return I}function ate(r,e){let t=8-r.length%8,i;if(t<8)i=0;else{if(t===8)return r;throw new Error("des: invalid padding")}let n=new Uint8Array(r.length+t);for(let s=0;s<r.length;s++)n[s]=r[s];for(let s=0;s<t;s++)n[r.length+s]=i;return n}function cte(r,e){let t=null,i;if(i=0,!t){for(t=1;r[r.length-t]===i;)t++;t--}return r.subarray(0,r.length-t)}function nA(r){this.key=[];for(let e=0;e<3;e++)this.key.push(new Uint8Array(r.subarray(e*8,e*8+8)));this.encrypt=function(e){return lB(dB(this.key[2]),lB(dB(this.key[1]),lB(dB(this.key[0]),e,!0,0,null,null),!1,0,null,null),!0)}}function lte(){this.BlockSize=8,this.KeySize=16,this.setKey=function(o){if(this.masking=new Array(16),this.rotate=new Array(16),this.reset(),o.length===this.KeySize)this.keySchedule(o);else throw new Error("CAST-128: keys must be 16 bytes");return!0},this.reset=function(){for(let o=0;o<16;o++)this.masking[o]=0,this.rotate[o]=0},this.getBlockSize=function(){return this.BlockSize},this.encrypt=function(o){let a=new Array(o.length);for(let c=0;c<o.length;c+=8){let l=o[c]<<24|o[c+1]<<16|o[c+2]<<8|o[c+3],d=o[c+4]<<24|o[c+5]<<16|o[c+6]<<8|o[c+7],u;u=d,d=l^t(d,this.masking[0],this.rotate[0]),l=u,u=d,d=l^i(d,this.masking[1],this.rotate[1]),l=u,u=d,d=l^n(d,this.masking[2],this.rotate[2]),l=u,u=d,d=l^t(d,this.masking[3],this.rotate[3]),l=u,u=d,d=l^i(d,this.masking[4],this.rotate[4]),l=u,u=d,d=l^n(d,this.masking[5],this.rotate[5]),l=u,u=d,d=l^t(d,this.masking[6],this.rotate[6]),l=u,u=d,d=l^i(d,this.masking[7],this.rotate[7]),l=u,u=d,d=l^n(d,this.masking[8],this.rotate[8]),l=u,u=d,d=l^t(d,this.masking[9],this.rotate[9]),l=u,u=d,d=l^i(d,this.masking[10],this.rotate[10]),l=u,u=d,d=l^n(d,this.masking[11],this.rotate[11]),l=u,u=d,d=l^t(d,this.masking[12],this.rotate[12]),l=u,u=d,d=l^i(d,this.masking[13],this.rotate[13]),l=u,u=d,d=l^n(d,this.masking[14],this.rotate[14]),l=u,u=d,d=l^t(d,this.masking[15],this.rotate[15]),l=u,a[c]=d>>>24&255,a[c+1]=d>>>16&255,a[c+2]=d>>>8&255,a[c+3]=d&255,a[c+4]=l>>>24&255,a[c+5]=l>>>16&255,a[c+6]=l>>>8&255,a[c+7]=l&255}return a},this.decrypt=function(o){let a=new Array(o.length);for(let c=0;c<o.length;c+=8){let l=o[c]<<24|o[c+1]<<16|o[c+2]<<8|o[c+3],d=o[c+4]<<24|o[c+5]<<16|o[c+6]<<8|o[c+7],u;u=d,d=l^t(d,this.masking[15],this.rotate[15]),l=u,u=d,d=l^n(d,this.masking[14],this.rotate[14]),l=u,u=d,d=l^i(d,this.masking[13],this.rotate[13]),l=u,u=d,d=l^t(d,this.masking[12],this.rotate[12]),l=u,u=d,d=l^n(d,this.masking[11],this.rotate[11]),l=u,u=d,d=l^i(d,this.masking[10],this.rotate[10]),l=u,u=d,d=l^t(d,this.masking[9],this.rotate[9]),l=u,u=d,d=l^n(d,this.masking[8],this.rotate[8]),l=u,u=d,d=l^i(d,this.masking[7],this.rotate[7]),l=u,u=d,d=l^t(d,this.masking[6],this.rotate[6]),l=u,u=d,d=l^n(d,this.masking[5],this.rotate[5]),l=u,u=d,d=l^i(d,this.masking[4],this.rotate[4]),l=u,u=d,d=l^t(d,this.masking[3],this.rotate[3]),l=u,u=d,d=l^n(d,this.masking[2],this.rotate[2]),l=u,u=d,d=l^i(d,this.masking[1],this.rotate[1]),l=u,u=d,d=l^t(d,this.masking[0],this.rotate[0]),l=u,a[c]=d>>>24&255,a[c+1]=d>>>16&255,a[c+2]=d>>>8&255,a[c+3]=d&255,a[c+4]=l>>>24&255,a[c+5]=l>>16&255,a[c+6]=l>>8&255,a[c+7]=l&255}return a};let r=new Array(4);r[0]=new Array(4),r[0][0]=[4,0,13,15,12,14,8],r[0][1]=[5,2,16,18,17,19,10],r[0][2]=[6,3,23,22,21,20,9],r[0][3]=[7,1,26,25,27,24,11],r[1]=new Array(4),r[1][0]=[0,6,21,23,20,22,16],r[1][1]=[1,4,0,2,1,3,18],r[1][2]=[2,5,7,6,5,4,17],r[1][3]=[3,7,10,9,11,8,19],r[2]=new Array(4),r[2][0]=[4,0,13,15,12,14,8],r[2][1]=[5,2,16,18,17,19,10],r[2][2]=[6,3,23,22,21,20,9],r[2][3]=[7,1,26,25,27,24,11],r[3]=new Array(4),r[3][0]=[0,6,21,23,20,22,16],r[3][1]=[1,4,0,2,1,3,18],r[3][2]=[2,5,7,6,5,4,17],r[3][3]=[3,7,10,9,11,8,19];let e=new Array(4);e[0]=new Array(4),e[0][0]=[24,25,23,22,18],e[0][1]=[26,27,21,20,22],e[0][2]=[28,29,19,18,25],e[0][3]=[30,31,17,16,28],e[1]=new Array(4),e[1][0]=[3,2,12,13,8],e[1][1]=[1,0,14,15,13],e[1][2]=[7,6,8,9,3],e[1][3]=[5,4,10,11,7],e[2]=new Array(4),e[2][0]=[19,18,28,29,25],e[2][1]=[17,16,30,31,28],e[2][2]=[23,22,24,25,18],e[2][3]=[21,20,26,27,22],e[3]=new Array(4),e[3][0]=[8,9,7,6,3],e[3][1]=[10,11,5,4,7],e[3][2]=[12,13,3,2,8],e[3][3]=[14,15,1,0,13],this.keySchedule=function(o){let a=new Array(8),c=new Array(32),l;for(let h=0;h<4;h++)l=h*4,a[h]=o[l]<<24|o[l+1]<<16|o[l+2]<<8|o[l+3];let d=[6,7,4,5],u=0,f;for(let h=0;h<2;h++)for(let g=0;g<4;g++){for(l=0;l<4;l++){let p=r[g][l];f=a[p[1]],f^=s[4][a[p[2]>>>2]>>>24-8*(p[2]&3)&255],f^=s[5][a[p[3]>>>2]>>>24-8*(p[3]&3)&255],f^=s[6][a[p[4]>>>2]>>>24-8*(p[4]&3)&255],f^=s[7][a[p[5]>>>2]>>>24-8*(p[5]&3)&255],f^=s[d[l]][a[p[6]>>>2]>>>24-8*(p[6]&3)&255],a[p[0]]=f}for(l=0;l<4;l++){let p=e[g][l];f=s[4][a[p[0]>>>2]>>>24-8*(p[0]&3)&255],f^=s[5][a[p[1]>>>2]>>>24-8*(p[1]&3)&255],f^=s[6][a[p[2]>>>2]>>>24-8*(p[2]&3)&255],f^=s[7][a[p[3]>>>2]>>>24-8*(p[3]&3)&255],f^=s[4+l][a[p[4]>>>2]>>>24-8*(p[4]&3)&255],c[u]=f,u++}}for(let h=0;h<16;h++)this.masking[h]=c[h],this.rotate[h]=c[16+h]&31};function t(o,a,c){let l=a+o,d=l<<c|l>>>32-c;return(s[0][d>>>24]^s[1][d>>>16&255])-s[2][d>>>8&255]+s[3][d&255]}function i(o,a,c){let l=a^o,d=l<<c|l>>>32-c;return s[0][d>>>24]-s[1][d>>>16&255]+s[2][d>>>8&255]^s[3][d&255]}function n(o,a,c){let l=a-o,d=l<<c|l>>>32-c;return(s[0][d>>>24]+s[1][d>>>16&255]^s[2][d>>>8&255])-s[3][d&255]}let s=new Array(8);s[0]=[821772500,2678128395,1810681135,1059425402,505495343,2617265619,1610868032,3483355465,3218386727,2294005173,3791863952,2563806837,1852023008,365126098,3269944861,584384398,677919599,3229601881,4280515016,2002735330,1136869587,3744433750,2289869850,2731719981,2714362070,879511577,1639411079,575934255,717107937,2857637483,576097850,2731753936,1725645e3,2810460463,5111599,767152862,2543075244,1251459544,1383482551,3052681127,3089939183,3612463449,1878520045,1510570527,2189125840,2431448366,582008916,3163445557,1265446783,1354458274,3529918736,3202711853,3073581712,3912963487,3029263377,1275016285,4249207360,2905708351,3304509486,1442611557,3585198765,2712415662,2731849581,3248163920,2283946226,208555832,2766454743,1331405426,1447828783,3315356441,3108627284,2957404670,2981538698,3339933917,1669711173,286233437,1465092821,1782121619,3862771680,710211251,980974943,1651941557,430374111,2051154026,704238805,4128970897,3144820574,2857402727,948965521,3333752299,2227686284,718756367,2269778983,2731643755,718440111,2857816721,3616097120,1113355533,2478022182,410092745,1811985197,1944238868,2696854588,1415722873,1682284203,1060277122,1998114690,1503841958,82706478,2315155686,1068173648,845149890,2167947013,1768146376,1993038550,3566826697,3390574031,940016341,3355073782,2328040721,904371731,1205506512,4094660742,2816623006,825647681,85914773,2857843460,1249926541,1417871568,3287612,3211054559,3126306446,1975924523,1353700161,2814456437,2438597621,1800716203,722146342,2873936343,1151126914,4160483941,2877670899,458611604,2866078500,3483680063,770352098,2652916994,3367839148,3940505011,3585973912,3809620402,718646636,2504206814,2914927912,3631288169,2857486607,2860018678,575749918,2857478043,718488780,2069512688,3548183469,453416197,1106044049,3032691430,52586708,3378514636,3459808877,3211506028,1785789304,218356169,3571399134,3759170522,1194783844,1523787992,3007827094,1975193539,2555452411,1341901877,3045838698,3776907964,3217423946,2802510864,2889438986,1057244207,1636348243,3761863214,1462225785,2632663439,481089165,718503062,24497053,3332243209,3344655856,3655024856,3960371065,1195698900,2971415156,3710176158,2115785917,4027663609,3525578417,2524296189,2745972565,3564906415,1372086093,1452307862,2780501478,1476592880,3389271281,18495466,2378148571,901398090,891748256,3279637769,3157290713,2560960102,1447622437,4284372637,216884176,2086908623,1879786977,3588903153,2242455666,2938092967,3559082096,2810645491,758861177,1121993112,215018983,642190776,4169236812,1196255959,2081185372,3508738393,941322904,4124243163,2877523539,1848581667,2205260958,3180453958,2589345134,3694731276,550028657,2519456284,3789985535,2973870856,2093648313,443148163,46942275,2734146937,1117713533,1115362972,1523183689,3717140224,1551984063],s[1]=[522195092,4010518363,1776537470,960447360,4267822970,4005896314,1435016340,1929119313,2913464185,1310552629,3579470798,3724818106,2579771631,1594623892,417127293,2715217907,2696228731,1508390405,3994398868,3925858569,3695444102,4019471449,3129199795,3770928635,3520741761,990456497,4187484609,2783367035,21106139,3840405339,631373633,3783325702,532942976,396095098,3548038825,4267192484,2564721535,2011709262,2039648873,620404603,3776170075,2898526339,3612357925,4159332703,1645490516,223693667,1567101217,3362177881,1029951347,3470931136,3570957959,1550265121,119497089,972513919,907948164,3840628539,1613718692,3594177948,465323573,2659255085,654439692,2575596212,2699288441,3127702412,277098644,624404830,4100943870,2717858591,546110314,2403699828,3655377447,1321679412,4236791657,1045293279,4010672264,895050893,2319792268,494945126,1914543101,2777056443,3894764339,2219737618,311263384,4275257268,3458730721,669096869,3584475730,3835122877,3319158237,3949359204,2005142349,2713102337,2228954793,3769984788,569394103,3855636576,1425027204,108000370,2736431443,3671869269,3043122623,1750473702,2211081108,762237499,3972989403,2798899386,3061857628,2943854345,867476300,964413654,1591880597,1594774276,2179821409,552026980,3026064248,3726140315,2283577634,3110545105,2152310760,582474363,1582640421,1383256631,2043843868,3322775884,1217180674,463797851,2763038571,480777679,2718707717,2289164131,3118346187,214354409,200212307,3810608407,3025414197,2674075964,3997296425,1847405948,1342460550,510035443,4080271814,815934613,833030224,1620250387,1945732119,2703661145,3966000196,1388869545,3456054182,2687178561,2092620194,562037615,1356438536,3409922145,3261847397,1688467115,2150901366,631725691,3840332284,549916902,3455104640,394546491,837744717,2114462948,751520235,2221554606,2415360136,3999097078,2063029875,803036379,2702586305,821456707,3019566164,360699898,4018502092,3511869016,3677355358,2402471449,812317050,49299192,2570164949,3259169295,2816732080,3331213574,3101303564,2156015656,3705598920,3546263921,143268808,3200304480,1638124008,3165189453,3341807610,578956953,2193977524,3638120073,2333881532,807278310,658237817,2969561766,1641658566,11683945,3086995007,148645947,1138423386,4158756760,1981396783,2401016740,3699783584,380097457,2680394679,2803068651,3334260286,441530178,4016580796,1375954390,761952171,891809099,2183123478,157052462,3683840763,1592404427,341349109,2438483839,1417898363,644327628,2233032776,2353769706,2201510100,220455161,1815641738,182899273,2995019788,3627381533,3702638151,2890684138,1052606899,588164016,1681439879,4038439418,2405343923,4229449282,167996282,1336969661,1688053129,2739224926,1543734051,1046297529,1138201970,2121126012,115334942,1819067631,1902159161,1941945968,2206692869,1159982321],s[2]=[2381300288,637164959,3952098751,3893414151,1197506559,916448331,2350892612,2932787856,3199334847,4009478890,3905886544,1373570990,2450425862,4037870920,3778841987,2456817877,286293407,124026297,3001279700,1028597854,3115296800,4208886496,2691114635,2188540206,1430237888,1218109995,3572471700,308166588,570424558,2187009021,2455094765,307733056,1310360322,3135275007,1384269543,2388071438,863238079,2359263624,2801553128,3380786597,2831162807,1470087780,1728663345,4072488799,1090516929,532123132,2389430977,1132193179,2578464191,3051079243,1670234342,1434557849,2711078940,1241591150,3314043432,3435360113,3091448339,1812415473,2198440252,267246943,796911696,3619716990,38830015,1526438404,2806502096,374413614,2943401790,1489179520,1603809326,1920779204,168801282,260042626,2358705581,1563175598,2397674057,1356499128,2217211040,514611088,2037363785,2186468373,4022173083,2792511869,2913485016,1173701892,4200428547,3896427269,1334932762,2455136706,602925377,2835607854,1613172210,41346230,2499634548,2457437618,2188827595,41386358,4172255629,1313404830,2405527007,3801973774,2217704835,873260488,2528884354,2478092616,4012915883,2555359016,2006953883,2463913485,575479328,2218240648,2099895446,660001756,2341502190,3038761536,3888151779,3848713377,3286851934,1022894237,1620365795,3449594689,1551255054,15374395,3570825345,4249311020,4151111129,3181912732,310226346,1133119310,530038928,136043402,2476768958,3107506709,2544909567,1036173560,2367337196,1681395281,1758231547,3641649032,306774401,1575354324,3716085866,1990386196,3114533736,2455606671,1262092282,3124342505,2768229131,4210529083,1833535011,423410938,660763973,2187129978,1639812e3,3508421329,3467445492,310289298,272797111,2188552562,2456863912,310240523,677093832,1013118031,901835429,3892695601,1116285435,3036471170,1337354835,243122523,520626091,277223598,4244441197,4194248841,1766575121,594173102,316590669,742362309,3536858622,4176435350,3838792410,2501204839,1229605004,3115755532,1552908988,2312334149,979407927,3959474601,1148277331,176638793,3614686272,2083809052,40992502,1340822838,2731552767,3535757508,3560899520,1354035053,122129617,7215240,2732932949,3118912700,2718203926,2539075635,3609230695,3725561661,1928887091,2882293555,1988674909,2063640240,2491088897,1459647954,4189817080,2302804382,1113892351,2237858528,1927010603,4002880361,1856122846,1594404395,2944033133,3855189863,3474975698,1643104450,4054590833,3431086530,1730235576,2984608721,3084664418,2131803598,4178205752,267404349,1617849798,1616132681,1462223176,736725533,2327058232,551665188,2945899023,1749386277,2575514597,1611482493,674206544,2201269090,3642560800,728599968,1680547377,2620414464,1388111496,453204106,4156223445,1094905244,2754698257,2201108165,3757000246,2704524545,3922940700,3996465027],s[3]=[2645754912,532081118,2814278639,3530793624,1246723035,1689095255,2236679235,4194438865,2116582143,3859789411,157234593,2045505824,4245003587,1687664561,4083425123,605965023,672431967,1336064205,3376611392,214114848,4258466608,3232053071,489488601,605322005,3998028058,264917351,1912574028,756637694,436560991,202637054,135989450,85393697,2152923392,3896401662,2895836408,2145855233,3535335007,115294817,3147733898,1922296357,3464822751,4117858305,1037454084,2725193275,2127856640,1417604070,1148013728,1827919605,642362335,2929772533,909348033,1346338451,3547799649,297154785,1917849091,4161712827,2883604526,3968694238,1469521537,3780077382,3375584256,1763717519,136166297,4290970789,1295325189,2134727907,2798151366,1566297257,3672928234,2677174161,2672173615,965822077,2780786062,289653839,1133871874,3491843819,35685304,1068898316,418943774,672553190,642281022,2346158704,1954014401,3037126780,4079815205,2030668546,3840588673,672283427,1776201016,359975446,3750173538,555499703,2769985273,1324923,69110472,152125443,3176785106,3822147285,1340634837,798073664,1434183902,15393959,216384236,1303690150,3881221631,3711134124,3960975413,106373927,2578434224,1455997841,1801814300,1578393881,1854262133,3188178946,3258078583,2302670060,1539295533,3505142565,3078625975,2372746020,549938159,3278284284,2620926080,181285381,2865321098,3970029511,68876850,488006234,1728155692,2608167508,836007927,2435231793,919367643,3339422534,3655756360,1457871481,40520939,1380155135,797931188,234455205,2255801827,3990488299,397000196,739833055,3077865373,2871719860,4022553888,772369276,390177364,3853951029,557662966,740064294,1640166671,1699928825,3535942136,622006121,3625353122,68743880,1742502,219489963,1664179233,1577743084,1236991741,410585305,2366487942,823226535,1050371084,3426619607,3586839478,212779912,4147118561,1819446015,1911218849,530248558,3486241071,3252585495,2886188651,3410272728,2342195030,20547779,2982490058,3032363469,3631753222,312714466,1870521650,1493008054,3491686656,615382978,4103671749,2534517445,1932181,2196105170,278426614,6369430,3274544417,2913018367,697336853,2143000447,2946413531,701099306,1558357093,2805003052,3500818408,2321334417,3567135975,216290473,3591032198,23009561,1996984579,3735042806,2024298078,3739440863,569400510,2339758983,3016033873,3097871343,3639523026,3844324983,3256173865,795471839,2951117563,4101031090,4091603803,3603732598,971261452,534414648,428311343,3389027175,2844869880,694888862,1227866773,2456207019,3043454569,2614353370,3749578031,3676663836,459166190,4132644070,1794958188,51825668,2252611902,3084671440,2036672799,3436641603,1099053433,2469121526,3059204941,1323291266,2061838604,1018778475,2233344254,2553501054,334295216,3556750194,1065731521,183467730],s[4]=[2127105028,745436345,2601412319,2788391185,3093987327,500390133,1155374404,389092991,150729210,3891597772,3523549952,1935325696,716645080,946045387,2901812282,1774124410,3869435775,4039581901,3293136918,3438657920,948246080,363898952,3867875531,1286266623,1598556673,68334250,630723836,1104211938,1312863373,613332731,2377784574,1101634306,441780740,3129959883,1917973735,2510624549,3238456535,2544211978,3308894634,1299840618,4076074851,1756332096,3977027158,297047435,3790297736,2265573040,3621810518,1311375015,1667687725,47300608,3299642885,2474112369,201668394,1468347890,576830978,3594690761,3742605952,1958042578,1747032512,3558991340,1408974056,3366841779,682131401,1033214337,1545599232,4265137049,206503691,103024618,2855227313,1337551222,2428998917,2963842932,4015366655,3852247746,2796956967,3865723491,3747938335,247794022,3755824572,702416469,2434691994,397379957,851939612,2314769512,218229120,1380406772,62274761,214451378,3170103466,2276210409,3845813286,28563499,446592073,1693330814,3453727194,29968656,3093872512,220656637,2470637031,77972100,1667708854,1358280214,4064765667,2395616961,325977563,4277240721,4220025399,3605526484,3355147721,811859167,3069544926,3962126810,652502677,3075892249,4132761541,3498924215,1217549313,3250244479,3858715919,3053989961,1538642152,2279026266,2875879137,574252750,3324769229,2651358713,1758150215,141295887,2719868960,3515574750,4093007735,4194485238,1082055363,3417560400,395511885,2966884026,179534037,3646028556,3738688086,1092926436,2496269142,257381841,3772900718,1636087230,1477059743,2499234752,3811018894,2675660129,3285975680,90732309,1684827095,1150307763,1723134115,3237045386,1769919919,1240018934,815675215,750138730,2239792499,1234303040,1995484674,138143821,675421338,1145607174,1936608440,3238603024,2345230278,2105974004,323969391,779555213,3004902369,2861610098,1017501463,2098600890,2628620304,2940611490,2682542546,1171473753,3656571411,3687208071,4091869518,393037935,159126506,1662887367,1147106178,391545844,3452332695,1891500680,3016609650,1851642611,546529401,1167818917,3194020571,2848076033,3953471836,575554290,475796850,4134673196,450035699,2351251534,844027695,1080539133,86184846,1554234488,3692025454,1972511363,2018339607,1491841390,1141460869,1061690759,4244549243,2008416118,2351104703,2868147542,1598468138,722020353,1027143159,212344630,1387219594,1725294528,3745187956,2500153616,458938280,4129215917,1828119673,544571780,3503225445,2297937496,1241802790,267843827,2694610800,1397140384,1558801448,3782667683,1806446719,929573330,2234912681,400817706,616011623,4121520928,3603768725,1761550015,1968522284,4053731006,4192232858,4005120285,872482584,3140537016,3894607381,2287405443,1963876937,3663887957,1584857e3,2975024454,1833426440,4025083860],s[5]=[4143615901,749497569,1285769319,3795025788,2514159847,23610292,3974978748,844452780,3214870880,3751928557,2213566365,1676510905,448177848,3730751033,4086298418,2307502392,871450977,3222878141,4110862042,3831651966,2735270553,1310974780,2043402188,1218528103,2736035353,4274605013,2702448458,3936360550,2693061421,162023535,2827510090,687910808,23484817,3784910947,3371371616,779677500,3503626546,3473927188,4157212626,3500679282,4248902014,2466621104,3899384794,1958663117,925738300,1283408968,3669349440,1840910019,137959847,2679828185,1239142320,1315376211,1547541505,1690155329,739140458,3128809933,3933172616,3876308834,905091803,1548541325,4040461708,3095483362,144808038,451078856,676114313,2861728291,2469707347,993665471,373509091,2599041286,4025009006,4170239449,2149739950,3275793571,3749616649,2794760199,1534877388,572371878,2590613551,1753320020,3467782511,1405125690,4270405205,633333386,3026356924,3475123903,632057672,2846462855,1404951397,3882875879,3915906424,195638627,2385783745,3902872553,1233155085,3355999740,2380578713,2702246304,2144565621,3663341248,3894384975,2502479241,4248018925,3094885567,1594115437,572884632,3385116731,767645374,1331858858,1475698373,3793881790,3532746431,1321687957,619889600,1121017241,3440213920,2070816767,2833025776,1933951238,4095615791,890643334,3874130214,859025556,360630002,925594799,1764062180,3920222280,4078305929,979562269,2810700344,4087740022,1949714515,546639971,1165388173,3069891591,1495988560,922170659,1291546247,2107952832,1813327274,3406010024,3306028637,4241950635,153207855,2313154747,1608695416,1150242611,1967526857,721801357,1220138373,3691287617,3356069787,2112743302,3281662835,1111556101,1778980689,250857638,2298507990,673216130,2846488510,3207751581,3562756981,3008625920,3417367384,2198807050,529510932,3547516680,3426503187,2364944742,102533054,2294910856,1617093527,1204784762,3066581635,1019391227,1069574518,1317995090,1691889997,3661132003,510022745,3238594800,1362108837,1817929911,2184153760,805817662,1953603311,3699844737,120799444,2118332377,207536705,2282301548,4120041617,145305846,2508124933,3086745533,3261524335,1877257368,2977164480,3160454186,2503252186,4221677074,759945014,254147243,2767453419,3801518371,629083197,2471014217,907280572,3900796746,940896768,2751021123,2625262786,3161476951,3661752313,3260732218,1425318020,2977912069,1496677566,3988592072,2140652971,3126511541,3069632175,977771578,1392695845,1698528874,1411812681,1369733098,1343739227,3620887944,1142123638,67414216,3102056737,3088749194,1626167401,2546293654,3941374235,697522451,33404913,143560186,2595682037,994885535,1247667115,3859094837,2699155541,3547024625,4114935275,2968073508,3199963069,2732024527,1237921620,951448369,1898488916,1211705605,2790989240,2233243581,3598044975],s[6]=[2246066201,858518887,1714274303,3485882003,713916271,2879113490,3730835617,539548191,36158695,1298409750,419087104,1358007170,749914897,2989680476,1261868530,2995193822,2690628854,3443622377,3780124940,3796824509,2976433025,4259637129,1551479e3,512490819,1296650241,951993153,2436689437,2460458047,144139966,3136204276,310820559,3068840729,643875328,1969602020,1680088954,2185813161,3283332454,672358534,198762408,896343282,276269502,3014846926,84060815,197145886,376173866,3943890818,3813173521,3545068822,1316698879,1598252827,2633424951,1233235075,859989710,2358460855,3503838400,3409603720,1203513385,1193654839,2792018475,2060853022,207403770,1144516871,3068631394,1121114134,177607304,3785736302,326409831,1929119770,2983279095,4183308101,3474579288,3200513878,3228482096,119610148,1170376745,3378393471,3163473169,951863017,3337026068,3135789130,2907618374,1183797387,2015970143,4045674555,2182986399,2952138740,3928772205,384012900,2454997643,10178499,2879818989,2596892536,111523738,2995089006,451689641,3196290696,235406569,1441906262,3890558523,3013735005,4158569349,1644036924,376726067,1006849064,3664579700,2041234796,1021632941,1374734338,2566452058,371631263,4007144233,490221539,206551450,3140638584,1053219195,1853335209,3412429660,3562156231,735133835,1623211703,3104214392,2738312436,4096837757,3366392578,3110964274,3956598718,3196820781,2038037254,3877786376,2339753847,300912036,3766732888,2372630639,1516443558,4200396704,1574567987,4069441456,4122592016,2699739776,146372218,2748961456,2043888151,35287437,2596680554,655490400,1132482787,110692520,1031794116,2188192751,1324057718,1217253157,919197030,686247489,3261139658,1028237775,3135486431,3059715558,2460921700,986174950,2661811465,4062904701,2752986992,3709736643,367056889,1353824391,731860949,1650113154,1778481506,784341916,357075625,3608602432,1074092588,2480052770,3811426202,92751289,877911070,3600361838,1231880047,480201094,3756190983,3094495953,434011822,87971354,363687820,1717726236,1901380172,3926403882,2481662265,400339184,1490350766,2661455099,1389319756,2558787174,784598401,1983468483,30828846,3550527752,2716276238,3841122214,1765724805,1955612312,1277890269,1333098070,1564029816,2704417615,1026694237,3287671188,1260819201,3349086767,1016692350,1582273796,1073413053,1995943182,694588404,1025494639,3323872702,3551898420,4146854327,453260480,1316140391,1435673405,3038941953,3486689407,1622062951,403978347,817677117,950059133,4246079218,3278066075,1486738320,1417279718,481875527,2549965225,3933690356,760697757,1452955855,3897451437,1177426808,1702951038,4085348628,2447005172,1084371187,3516436277,3068336338,1073369276,1027665953,3284188590,1230553676,1368340146,2226246512,267243139,2274220762,4070734279,2497715176,2423353163,2504755875],s[7]=[3793104909,3151888380,2817252029,895778965,2005530807,3871412763,237245952,86829237,296341424,3851759377,3974600970,2475086196,709006108,1994621201,2972577594,937287164,3734691505,168608556,3189338153,2225080640,3139713551,3033610191,3025041904,77524477,185966941,1208824168,2344345178,1721625922,3354191921,1066374631,1927223579,1971335949,2483503697,1551748602,2881383779,2856329572,3003241482,48746954,1398218158,2050065058,313056748,4255789917,393167848,1912293076,940740642,3465845460,3091687853,2522601570,2197016661,1727764327,364383054,492521376,1291706479,3264136376,1474851438,1685747964,2575719748,1619776915,1814040067,970743798,1561002147,2925768690,2123093554,1880132620,3151188041,697884420,2550985770,2607674513,2659114323,110200136,1489731079,997519150,1378877361,3527870668,478029773,2766872923,1022481122,431258168,1112503832,897933369,2635587303,669726182,3383752315,918222264,163866573,3246985393,3776823163,114105080,1903216136,761148244,3571337562,1690750982,3166750252,1037045171,1888456500,2010454850,642736655,616092351,365016990,1185228132,4174898510,1043824992,2023083429,2241598885,3863320456,3279669087,3674716684,108438443,2132974366,830746235,606445527,4173263986,2204105912,1844756978,2532684181,4245352700,2969441100,3796921661,1335562986,4061524517,2720232303,2679424040,634407289,885462008,3294724487,3933892248,2094100220,339117932,4048830727,3202280980,1458155303,2689246273,1022871705,2464987878,3714515309,353796843,2822958815,4256850100,4052777845,551748367,618185374,3778635579,4020649912,1904685140,3069366075,2670879810,3407193292,2954511620,4058283405,2219449317,3135758300,1120655984,3447565834,1474845562,3577699062,550456716,3466908712,2043752612,881257467,869518812,2005220179,938474677,3305539448,3850417126,1315485940,3318264702,226533026,965733244,321539988,1136104718,804158748,573969341,3708209826,937399083,3290727049,2901666755,1461057207,4013193437,4066861423,3242773476,2421326174,1581322155,3028952165,786071460,3900391652,3918438532,1485433313,4023619836,3708277595,3678951060,953673138,1467089153,1930354364,1533292819,2492563023,1346121658,1685000834,1965281866,3765933717,4190206607,2052792609,3515332758,690371149,3125873887,2180283551,2903598061,3933952357,436236910,289419410,14314871,1242357089,2904507907,1616633776,2666382180,585885352,3471299210,2699507360,1432659641,277164553,3354103607,770115018,2303809295,3741942315,3177781868,2853364978,2269453327,3774259834,987383833,1290892879,225909803,1741533526,890078084,1496906255,1111072499,916028167,243534141,1252605537,2204162171,531204876,290011180,3916834213,102027703,237315147,209093447,1486785922,220223953,2758195998,4175039106,82940208,3127791296,2569425252,518464269,1353887104,3941492737,2377294467,3935040926]}function sA(r){this.cast5=new lte,this.cast5.setKey(r),this.encrypt=function(e){return this.cast5.encrypt(e)}}function ts(r,e){return(r<<e|r>>>32-e)&tn}function Vs(r,e){return r[e]|r[e+1]<<8|r[e+2]<<16|r[e+3]<<24}function fa(r,e,t){r.splice(e,4,t&255,t>>>8&255,t>>>16&255,t>>>24&255)}function ze(r,e){return r>>>e*8&255}function dte(){let r=null,e=null,t=-1,i=[],n=[[],[],[],[]];function s(g){r=g;let p,I,y,w,C,b=[],x=[],_=[],R,U=[],T,D,B,Q=[[8,1,7,13,6,15,3,2,0,11,5,9,14,12,10,4],[2,8,11,13,15,7,6,14,3,1,9,4,0,10,12,5]],v=[[14,12,11,8,1,2,3,5,15,4,10,6,7,0,9,13],[1,14,2,11,4,12,3,7,6,13,10,5,15,9,0,8]],E=[[11,10,5,14,6,13,9,0,12,8,15,3,2,4,7,1],[4,12,7,5,1,6,9,10,0,14,13,8,2,11,3,15]],P=[[13,7,15,4,1,2,6,14,9,11,3,0,8,5,12,10],[11,9,5,1,12,3,13,14,6,4,7,15,2,0,8,10]],N=[0,8,1,9,2,10,3,11,4,12,5,13,6,14,7,15],J=[0,9,2,11,4,13,6,15,8,1,10,3,12,5,14,7],z=[[],[]],L=[[],[],[],[]];function G(ee){return ee^ee>>2^[0,90,180,238][ee&3]}function K(ee){return ee^ee>>1^ee>>2^[0,238,180,90][ee&3]}function $(ee,Z){let me,le,Ae;for(me=0;me<8;me++)le=Z>>>24,Z=Z<<8&tn|ee>>>24,ee=ee<<8&tn,Ae=le<<1,le&128&&(Ae^=333),Z^=le^Ae<<16,Ae^=le>>>1,le&1&&(Ae^=166),Z^=Ae<<24|Ae<<8;return Z}function te(ee,Z){let me=Z>>4,le=Z&15,Ae=Q[ee][me^le],ve=v[ee][N[le]^J[me]];return P[ee][N[ve]^J[Ae]]<<4|E[ee][Ae^ve]}function re(ee,Z){let me=ze(ee,0),le=ze(ee,1),Ae=ze(ee,2),ve=ze(ee,3);switch(R){case 4:me=z[1][me]^ze(Z[3],0),le=z[0][le]^ze(Z[3],1),Ae=z[0][Ae]^ze(Z[3],2),ve=z[1][ve]^ze(Z[3],3);case 3:me=z[1][me]^ze(Z[2],0),le=z[1][le]^ze(Z[2],1),Ae=z[0][Ae]^ze(Z[2],2),ve=z[0][ve]^ze(Z[2],3);case 2:me=z[0][z[0][me]^ze(Z[1],0)]^ze(Z[0],0),le=z[0][z[1][le]^ze(Z[1],1)]^ze(Z[0],1),Ae=z[1][z[0][Ae]^ze(Z[1],2)]^ze(Z[0],2),ve=z[1][z[1][ve]^ze(Z[1],3)]^ze(Z[0],3)}return L[0][me]^L[1][le]^L[2][Ae]^L[3][ve]}for(r=r.slice(0,32),p=r.length;p!==16&&p!==24&&p!==32;)r[p++]=0;for(p=0;p<r.length;p+=4)_[p>>2]=Vs(r,p);for(p=0;p<256;p++)z[0][p]=te(0,p),z[1][p]=te(1,p);for(p=0;p<256;p++)T=z[1][p],D=G(T),B=K(T),L[0][p]=T+(D<<8)+(B<<16)+(B<<24),L[2][p]=D+(B<<8)+(T<<16)+(B<<24),T=z[0][p],D=G(T),B=K(T),L[1][p]=B+(B<<8)+(D<<16)+(T<<24),L[3][p]=D+(T<<8)+(B<<16)+(D<<24);for(R=_.length/2,p=0;p<R;p++)I=_[p+p],b[p]=I,y=_[p+p+1],x[p]=y,U[R-p-1]=$(I,y);for(p=0;p<40;p+=2)I=16843009*p,y=I+16843009,I=re(I,b),y=ts(re(y,x),8),i[p]=I+y&tn,i[p+1]=ts(I+2*y,9);for(p=0;p<256;p++)switch(I=y=w=C=p,R){case 4:I=z[1][I]^ze(U[3],0),y=z[0][y]^ze(U[3],1),w=z[0][w]^ze(U[3],2),C=z[1][C]^ze(U[3],3);case 3:I=z[1][I]^ze(U[2],0),y=z[1][y]^ze(U[2],1),w=z[0][w]^ze(U[2],2),C=z[0][C]^ze(U[2],3);case 2:n[0][p]=L[0][z[0][z[0][I]^ze(U[1],0)]^ze(U[0],0)],n[1][p]=L[1][z[0][z[1][y]^ze(U[1],1)]^ze(U[0],1)],n[2][p]=L[2][z[1][z[0][w]^ze(U[1],2)]^ze(U[0],2)],n[3][p]=L[3][z[1][z[1][C]^ze(U[1],3)]^ze(U[0],3)]}}function o(g){return n[0][ze(g,0)]^n[1][ze(g,1)]^n[2][ze(g,2)]^n[3][ze(g,3)]}function a(g){return n[0][ze(g,3)]^n[1][ze(g,0)]^n[2][ze(g,1)]^n[3][ze(g,2)]}function c(g,p){let I=o(p[0]),y=a(p[1]);p[2]=ts(p[2]^I+y+i[4*g+8]&tn,31),p[3]=ts(p[3],1)^I+2*y+i[4*g+9]&tn,I=o(p[2]),y=a(p[3]),p[0]=ts(p[0]^I+y+i[4*g+10]&tn,31),p[1]=ts(p[1],1)^I+2*y+i[4*g+11]&tn}function l(g,p){let I=o(p[0]),y=a(p[1]);p[2]=ts(p[2],1)^I+y+i[4*g+10]&tn,p[3]=ts(p[3]^I+2*y+i[4*g+11]&tn,31),I=o(p[2]),y=a(p[3]),p[0]=ts(p[0],1)^I+y+i[4*g+8]&tn,p[1]=ts(p[1]^I+2*y+i[4*g+9]&tn,31)}function d(){i=[],n=[[],[],[],[]]}function u(g,p){e=g,t=p;let I=[Vs(e,t)^i[0],Vs(e,t+4)^i[1],Vs(e,t+8)^i[2],Vs(e,t+12)^i[3]];for(let y=0;y<8;y++)c(y,I);return fa(e,t,I[2]^i[4]),fa(e,t+4,I[3]^i[5]),fa(e,t+8,I[0]^i[6]),fa(e,t+12,I[1]^i[7]),t+=16,e}function f(g,p){e=g,t=p;let I=[Vs(e,t)^i[4],Vs(e,t+4)^i[5],Vs(e,t+8)^i[6],Vs(e,t+12)^i[7]];for(let y=7;y>=0;y--)l(y,I);fa(e,t,I[2]^i[0]),fa(e,t+4,I[3]^i[1]),fa(e,t+8,I[0]^i[2]),fa(e,t+12,I[1]^i[3]),t+=16}function h(){return e}return{name:"twofish",blocksize:128/8,open:s,close:d,encrypt:u,decrypt:f,finalize:h}}function oA(r){this.tf=dte(),this.tf.open(Array.from(r),0),this.encrypt=function(e){return this.tf.encrypt(Array.from(e),0)}}function Pn(){}function aA(r){this.bf=new Pn,this.bf.init(r),this.encrypt=function(e){return this.bf.encryptBlock(e)}}function dd(r,e,t,i){r[e]+=t[i],r[e+1]+=t[i+1]+(r[e]<t[i])}function C6(r,e){r[0]+=e,r[1]+=r[0]<e}function Aa(r,e,t,i,n,s,o,a){dd(r,t,r,i),dd(r,t,e,o);let c=r[s]^r[t],l=r[s+1]^r[t+1];r[s]=l,r[s+1]=c,dd(r,n,r,s),c=r[i]^r[n],l=r[i+1]^r[n+1],r[i]=c>>>24^l<<8,r[i+1]=l>>>24^c<<8,dd(r,t,r,i),dd(r,t,e,a),c=r[s]^r[t],l=r[s+1]^r[t+1],r[s]=c>>>16^l<<16,r[s+1]=l>>>16^c<<16,dd(r,n,r,s),c=r[i]^r[n],l=r[i+1]^r[n+1],r[i]=l>>>31^c<<1,r[i+1]=c>>>31^l<<1}function E6(r,e){let t=new Uint32Array(32),i=new Uint32Array(r.b.buffer,r.b.byteOffset,32);for(let s=0;s<16;s++)t[s]=r.h[s],t[s+16]=KU[s];t[24]^=r.t0[0],t[25]^=r.t0[1];let n=e?4294967295:0;t[28]^=n,t[29]^=n;for(let s=0;s<12;s++){let o=s<<4;Aa(t,i,0,8,16,24,Yr[o+0],Yr[o+1]),Aa(t,i,2,10,18,26,Yr[o+2],Yr[o+3]),Aa(t,i,4,12,20,28,Yr[o+4],Yr[o+5]),Aa(t,i,6,14,22,30,Yr[o+6],Yr[o+7]),Aa(t,i,0,10,20,30,Yr[o+8],Yr[o+9]),Aa(t,i,2,12,22,24,Yr[o+10],Yr[o+11]),Aa(t,i,4,14,16,26,Yr[o+12],Yr[o+13]),Aa(t,i,6,8,18,28,Yr[o+14],Yr[o+15])}for(let s=0;s<16;s++)r.h[s]^=t[s]^t[s+16]}function Ty(r,e,t,i){if(r>ZB)throw new Error(`outlen must be at most ${ZB} (given: ${r})`);return new XB(r,e,t,i)}function Ii(r,e,t){return r[t+0]=e,r[t+1]=e>>8,r[t+2]=e>>16,r[t+3]=e>>24,r}function Sc(r,e,t){if(e>Number.MAX_SAFE_INTEGER)throw new Error("LE64: large numbers unsupported");let i=e;for(let n=t;n<t+7;n++)r[n]=i,i=(i-r[n])/256;return r}function uB(r,e,t){let i=new Uint8Array(64),n=new Uint8Array(4+e.length);if(Ii(n,r,0),n.set(e,4),r<=64)return Ty(r).update(n).digest(t),t;let s=Math.ceil(r/32)-2;for(let a=0;a<s;a++)Ty(64).update(a===0?n:i).digest(i),t.set(i.subarray(0,32),a*32);let o=new Uint8Array(Ty(r-32*s).update(i).digest());return t.set(o,s*32),t}function B6(r,e,t,i){return r.fn.XOR(e.byteOffset,t.byteOffset,i.byteOffset),e}function Bte(r,e,t,i){return r.fn.G(e.byteOffset,t.byteOffset,i.byteOffset,r.refs.gZ.byteOffset),i}function bte(r,e,t,i){return r.fn.G2(e.byteOffset,t.byteOffset,i.byteOffset,r.refs.gZ.byteOffset),i}function*vte(r,e,t,i,n,s,o,a){r.refs.prngTmp.fill(0);let c=r.refs.prngTmp.subarray(0,48);Sc(c,e,0),Sc(c,t,8),Sc(c,i,16),Sc(c,n,24),Sc(c,s,32),Sc(c,P1,40);for(let l=1;l<=o;l++){Sc(r.refs.prngTmp,l,c.length);let d=bte(r,r.refs.ZERO1024,r.refs.prngTmp,r.refs.prngR);for(let u=l===1?a*8:0;u<d.length;u+=8)yield d.subarray(u,u+8)}return[]}function kte({type:r,version:e,tagLength:t,password:i,salt:n,ad:s,secret:o,parallelism:a,memorySize:c,passes:l}){let d=(u,f,h,g)=>{if(f<h||f>g)throw new Error(`${u} size should be between ${h} and ${g} bytes`)};if(r!==P1||e!==GU)throw new Error("Unsupported type or version");return d("password",i,yte,mte),d("salt",n,pte,gte),d("tag",t,hte,Ate),d("memory",c,8*a,Ite),s&&d("associated data",s,0,wte),o&&d("secret",o,0,xte),{type:r,version:e,tagLength:t,password:i,salt:n,ad:s,secret:o,lanes:a,memorySize:c,passes:l}}function Dte(r,{memory:e,instance:t}){if(!Ete)throw new Error("BigEndian system not supported");let i=kte({type:P1,version:GU,...r}),{G:n,G2:s,xor:o,getLZ:a}=t.exports,c={},l={};l.G=n,l.G2=s,l.XOR=o;let d=4*i.lanes*Math.floor(i.memorySize/(4*i.lanes)),u=d*Ys+10*zU;if(e.buffer.byteLength<u){let D=Math.ceil((u-e.buffer.byteLength)/Ste);e.grow(D)}let f=0;c.gZ=new Uint8Array(e.buffer,f,Ys),f+=c.gZ.length,c.prngR=new Uint8Array(e.buffer,f,Ys),f+=c.prngR.length,c.prngTmp=new Uint8Array(e.buffer,f,Ys),f+=c.prngTmp.length,c.ZERO1024=new Uint8Array(e.buffer,f,1024),f+=c.ZERO1024.length;let h=new Uint32Array(e.buffer,f,2);f+=h.length*Uint32Array.BYTES_PER_ELEMENT;let g={fn:l,refs:c},p=new Uint8Array(e.buffer,f,Ys);f+=p.length;let I=new Uint8Array(e.buffer,f,i.memorySize*Ys),y=new Uint8Array(e.buffer,0,f),w=Qte(i),C=d/i.lanes,b=new Array(i.lanes).fill(null).map(()=>new Array(C)),x=(D,B)=>(b[D][B]=I.subarray(D*C*1024+B*1024,D*C*1024+B*1024+Ys),b[D][B]);for(let D=0;D<i.lanes;D++){let B=new Uint8Array(w.length+8);B.set(w),Ii(B,0,w.length),Ii(B,D,w.length+4),uB(Ys,B,x(D,0)),Ii(B,1,w.length),uB(Ys,B,x(D,1))}let _=4,R=C/_;for(let D=0;D<i.passes;D++)for(let B=0;B<_;B++){let Q=D===0&&B<=1;for(let v=0;v<i.lanes;v++){let E=B===0&&D===0?2:0,P=Q?vte(g,D,v,B,d,i.passes,R,E):null;for(E;E<R;E++){let N=B*R+E,J=N>0?b[v][N-1]:b[v][C-1],z=Q?P.next().value:J;a(h.byteOffset,z.byteOffset,v,i.lanes,D,B,E,_,R);let L=h[0],G=h[1];D===0&&x(v,N),Bte(g,J,b[L][G],D>0?p:b[v][N]),D>0&&B6(g,b[v][N],p,b[v][N])}}}let U=b[0][C-1];for(let D=1;D<i.lanes;D++)B6(g,U,U,b[D][C-1]);let T=uB(i.tagLength,U,new Uint8Array(i.tagLength));return y.fill(0),e.grow(0),T}function Qte(r){let e=Ty(Cte),t=new Uint8Array(4),i=new Uint8Array(24);Ii(i,r.lanes,0),Ii(i,r.tagLength,4),Ii(i,r.memorySize,8),Ii(i,r.passes,12),Ii(i,r.version,16),Ii(i,r.type,20);let n=[i];r.password?(n.push(Ii(new Uint8Array(4),r.password.length,0)),n.push(r.password)):n.push(t),r.salt?(n.push(Ii(new Uint8Array(4),r.salt.length,0)),n.push(r.salt)):n.push(t),r.secret?(n.push(Ii(new Uint8Array(4),r.secret.length,0)),n.push(r.secret)):n.push(t),r.ad?(n.push(Ii(new Uint8Array(4),r.ad.length,0)),n.push(r.ad)):n.push(t),e.update(_te(n));let s=e.digest();return new Uint8Array(s)}function _te(r){if(r.length===1)return r[0];let e=0;for(let n=0;n<r.length;n++){if(!(r[n]instanceof Uint8Array))throw new Error("concatArrays: Data must be in the form of a Uint8Array");e+=r[n].length}let t=new Uint8Array(e),i=0;return r.forEach(n=>{t.set(n,i),i+=n.length}),t}async function Fte(r,e,t){let i={env:{memory:r}};if(vy===void 0)try{let s=await e(i);return vy=!0,s}catch{vy=!1}return(vy?e:t)(i)}async function Pte(r,e){let t=new WebAssembly.Memory({initial:1040,maximum:65536}),i=await Fte(t,r,e);return s=>Dte(s,{instance:i.instance,memory:t})}function JU(r,e,t,i){function n(o,a,c){var l=c?WebAssembly.instantiateStreaming:WebAssembly.instantiate,d=c?WebAssembly.compileStreaming:WebAssembly.compile;return a?l(o,a):d(o)}var s=null;return s=Buffer.from(t,"base64"),n(s,i,!1)}function Tte(r){return JU(0,null,"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",r)}function Ute(r){return JU(0,null,"AGFzbQEAAAABPwhgBH9/f38AYAABf2AAAGADf39/AGARf39/f39/f39/f39/f39/f38AYAl/f39/f39/f38Bf2ABfwBgAX8BfwITAQNlbnYGbWVtb3J5AgGQCICABAMLCgIDBAAABQEGBwEEBQFwAQICBgkBfwFBkIjAAgsHfQoDeG9yAAEBRwADAkcyAAQFZ2V0TFoABRlfX2luZGlyZWN0X2Z1bmN0aW9uX3RhYmxlAQALX2luaXRpYWxpemUAABBfX2Vycm5vX2xvY2F0aW9uAAkJc3RhY2tTYXZlAAYMc3RhY2tSZXN0b3JlAAcKc3RhY2tBbGxvYwAICQcBAEEBCwEACssaCgMAAQtQAQJ/A0AgACAEQQN0IgNqIAIgA2opAwAgASADaikDAIU3AwAgACADQQhyIgNqIAIgA2opAwAgASADaikDAIU3AwAgBEECaiIEQYABRw0ACwveDwICfgF/IAAgAUEDdGoiEyATKQMAIhEgACAFQQN0aiIBKQMAIhJ8IBFCAYZC/v///x+DIBJC/////w+DfnwiETcDACAAIA1BA3RqIgUgESAFKQMAhUIgiSIRNwMAIAAgCUEDdGoiCSARIAkpAwAiEnwgEUL/////D4MgEkIBhkL+////H4N+fCIRNwMAIAEgESABKQMAhUIoiSIRNwMAIBMgESATKQMAIhJ8IBFC/////w+DIBJCAYZC/v///x+DfnwiETcDACAFIBEgBSkDAIVCMIkiETcDACAJIBEgCSkDACISfCARQv////8PgyASQgGGQv7///8fg358IhE3AwAgASARIAEpAwCFQgGJNwMAIAAgAkEDdGoiDSANKQMAIhEgACAGQQN0aiICKQMAIhJ8IBFCAYZC/v///x+DIBJC/////w+DfnwiETcDACAAIA5BA3RqIgYgESAGKQMAhUIgiSIRNwMAIAAgCkEDdGoiCiARIAopAwAiEnwgEUL/////D4MgEkIBhkL+////H4N+fCIRNwMAIAIgESACKQMAhUIoiSIRNwMAIA0gESANKQMAIhJ8IBFC/////w+DIBJCAYZC/v///x+DfnwiETcDACAGIBEgBikDAIVCMIkiETcDACAKIBEgCikDACISfCARQv////8PgyASQgGGQv7///8fg358IhE3AwAgAiARIAIpAwCFQgGJNwMAIAAgA0EDdGoiDiAOKQMAIhEgACAHQQN0aiIDKQMAIhJ8IBFCAYZC/v///x+DIBJC/////w+DfnwiETcDACAAIA9BA3RqIgcgESAHKQMAhUIgiSIRNwMAIAAgC0EDdGoiCyARIAspAwAiEnwgEUL/////D4MgEkIBhkL+////H4N+fCIRNwMAIAMgESADKQMAhUIoiSIRNwMAIA4gESAOKQMAIhJ8IBFC/////w+DIBJCAYZC/v///x+DfnwiETcDACAHIBEgBykDAIVCMIkiETcDACALIBEgCykDACISfCARQv////8PgyASQgGGQv7///8fg358IhE3AwAgAyARIAMpAwCFQgGJNwMAIAAgBEEDdGoiDyAPKQMAIhEgACAIQQN0aiIEKQMAIhJ8IBFCAYZC/v///x+DIBJC/////w+DfnwiETcDACAAIBBBA3RqIgggESAIKQMAhUIgiSIRNwMAIAAgDEEDdGoiACARIAApAwAiEnwgEUL/////D4MgEkIBhkL+////H4N+fCIRNwMAIAQgESAEKQMAhUIoiSIRNwMAIA8gESAPKQMAIhJ8IBFC/////w+DIBJCAYZC/v///x+DfnwiETcDACAIIBEgCCkDAIVCMIkiETcDACAAIBEgACkDACISfCARQv////8PgyASQgGGQv7///8fg358IhE3AwAgBCARIAQpAwCFQgGJNwMAIBMgEykDACIRIAIpAwAiEnwgEUIBhkL+////H4MgEkL/////D4N+fCIRNwMAIAggESAIKQMAhUIgiSIRNwMAIAsgESALKQMAIhJ8IBFC/////w+DIBJCAYZC/v///x+DfnwiETcDACACIBEgAikDAIVCKIkiETcDACATIBEgEykDACISfCARQv////8PgyASQgGGQv7///8fg358IhE3AwAgCCARIAgpAwCFQjCJIhE3AwAgCyARIAspAwAiEnwgEUL/////D4MgEkIBhkL+////H4N+fCIRNwMAIAIgESACKQMAhUIBiTcDACANIA0pAwAiESADKQMAIhJ8IBFCAYZC/v///x+DIBJC/////w+DfnwiETcDACAFIBEgBSkDAIVCIIkiETcDACAAIBEgACkDACISfCARQv////8PgyASQgGGQv7///8fg358IhE3AwAgAyARIAMpAwCFQiiJIhE3AwAgDSARIA0pAwAiEnwgEUL/////D4MgEkIBhkL+////H4N+fCIRNwMAIAUgESAFKQMAhUIwiSIRNwMAIAAgESAAKQMAIhJ8IBFC/////w+DIBJCAYZC/v///x+DfnwiETcDACADIBEgAykDAIVCAYk3AwAgDiAOKQMAIhEgBCkDACISfCARQgGGQv7///8fgyASQv////8Pg358IhE3AwAgBiARIAYpAwCFQiCJIhE3AwAgCSARIAkpAwAiEnwgEUL/////D4MgEkIBhkL+////H4N+fCIRNwMAIAQgESAEKQMAhUIoiSIRNwMAIA4gESAOKQMAIhJ8IBFC/////w+DIBJCAYZC/v///x+DfnwiETcDACAGIBEgBikDAIVCMIkiETcDACAJIBEgCSkDACISfCARQv////8PgyASQgGGQv7///8fg358IhE3AwAgBCARIAQpAwCFQgGJNwMAIA8gDykDACIRIAEpAwAiEnwgEUIBhkL+////H4MgEkL/////D4N+fCIRNwMAIAcgESAHKQMAhUIgiSIRNwMAIAogESAKKQMAIhJ8IBFC/////w+DIBJCAYZC/v///x+DfnwiETcDACABIBEgASkDAIVCKIkiETcDACAPIBEgDykDACISfCARQv////8PgyASQgGGQv7///8fg358IhE3AwAgByARIAcpAwCFQjCJIhE3AwAgCiARIAopAwAiEnwgEUL/////D4MgEkIBhkL+////H4N+fCIRNwMAIAEgESABKQMAhUIBiTcDAAvdCAEPfwNAIAIgBUEDdCIGaiABIAZqKQMAIAAgBmopAwCFNwMAIAIgBkEIciIGaiABIAZqKQMAIAAgBmopAwCFNwMAIAVBAmoiBUGAAUcNAAsDQCADIARBA3QiAGogACACaikDADcDACADIARBAXIiAEEDdCIBaiABIAJqKQMANwMAIAMgBEECciIBQQN0IgVqIAIgBWopAwA3AwAgAyAEQQNyIgVBA3QiBmogAiAGaikDADcDACADIARBBHIiBkEDdCIHaiACIAdqKQMANwMAIAMgBEEFciIHQQN0IghqIAIgCGopAwA3AwAgAyAEQQZyIghBA3QiCWogAiAJaikDADcDACADIARBB3IiCUEDdCIKaiACIApqKQMANwMAIAMgBEEIciIKQQN0IgtqIAIgC2opAwA3AwAgAyAEQQlyIgtBA3QiDGogAiAMaikDADcDACADIARBCnIiDEEDdCINaiACIA1qKQMANwMAIAMgBEELciINQQN0Ig5qIAIgDmopAwA3AwAgAyAEQQxyIg5BA3QiD2ogAiAPaikDADcDACADIARBDXIiD0EDdCIQaiACIBBqKQMANwMAIAMgBEEOciIQQQN0IhFqIAIgEWopAwA3AwAgAyAEQQ9yIhFBA3QiEmogAiASaikDADcDACADIARB//8DcSAAQf//A3EgAUH//wNxIAVB//8DcSAGQf//A3EgB0H//wNxIAhB//8DcSAJQf//A3EgCkH//wNxIAtB//8DcSAMQf//A3EgDUH//wNxIA5B//8DcSAPQf//A3EgEEH//wNxIBFB//8DcRACIARB8ABJIQAgBEEQaiEEIAANAAtBACEBIANBAEEBQRBBEUEgQSFBMEExQcAAQcEAQdAAQdEAQeAAQeEAQfAAQfEAEAIgA0ECQQNBEkETQSJBI0EyQTNBwgBBwwBB0gBB0wBB4gBB4wBB8gBB8wAQAiADQQRBBUEUQRVBJEElQTRBNUHEAEHFAEHUAEHVAEHkAEHlAEH0AEH1ABACIANBBkEHQRZBF0EmQSdBNkE3QcYAQccAQdYAQdcAQeYAQecAQfYAQfcAEAIgA0EIQQlBGEEZQShBKUE4QTlByABByQBB2ABB2QBB6ABB6QBB+ABB+QAQAiADQQpBC0EaQRtBKkErQTpBO0HKAEHLAEHaAEHbAEHqAEHrAEH6AEH7ABACIANBDEENQRxBHUEsQS1BPEE9QcwAQc0AQdwAQd0AQewAQe0AQfwAQf0AEAIgA0EOQQ9BHkEfQS5BL0E+QT9BzgBBzwBB3gBB3wBB7gBB7wBB/gBB/wAQAgNAIAIgAUEDdCIAaiIEIAAgA2opAwAgBCkDAIU3AwAgAiAAQQhyIgRqIgUgAyAEaikDACAFKQMAhTcDACACIABBEHIiBGoiBSADIARqKQMAIAUpAwCFNwMAIAIgAEEYciIAaiIEIAAgA2opAwAgBCkDAIU3AwAgAUEEaiIBQYABRw0ACwsWACAAIAEgAiADEAMgACACIAIgAxADC3sCAX8BfiACIQkgATUCACEKIAQgBXIEQCABKAIEIANwIQkLIAAgCTYCACAAIAdBAWsgBSAEGyAIbCAGQQFrQQBBfyAGGyACIAlGG2oiASAFQQFqIAhsQQAgBBtqIAGtIAogCn5CIIh+QiCIp0F/c2ogByAIbHA2AgQgAAsEACMACwYAIAAkAAsQACMAIABrQXBxIgAkACAACwUAQYAICw==",r)}function qte(r){return r&&r.__esModule&&Object.prototype.hasOwnProperty.call(r,"default")?r.default:r}function Ote(){if(b6)return fB;b6=1;function r(i){this.name="Bzip2Error",this.message=i,this.stack=new Error().stack}r.prototype=new Error;var e={Error:function(i){throw new r(i)}},t={};return t.Bzip2Error=r,t.crcTable=[0,79764919,159529838,222504665,319059676,398814059,445009330,507990021,638119352,583659535,797628118,726387553,890018660,835552979,1015980042,944750013,1276238704,1221641927,1167319070,1095957929,1595256236,1540665371,1452775106,1381403509,1780037320,1859660671,1671105958,1733955601,2031960084,2111593891,1889500026,1952343757,2552477408,2632100695,2443283854,2506133561,2334638140,2414271883,2191915858,2254759653,3190512472,3135915759,3081330742,3009969537,2905550212,2850959411,2762807018,2691435357,3560074640,3505614887,3719321342,3648080713,3342211916,3287746299,3467911202,3396681109,4063920168,4143685023,4223187782,4286162673,3779000052,3858754371,3904687514,3967668269,881225847,809987520,1023691545,969234094,662832811,591600412,771767749,717299826,311336399,374308984,453813921,533576470,25881363,88864420,134795389,214552010,2023205639,2086057648,1897238633,1976864222,1804852699,1867694188,1645340341,1724971778,1587496639,1516133128,1461550545,1406951526,1302016099,1230646740,1142491917,1087903418,2896545431,2825181984,2770861561,2716262478,3215044683,3143675388,3055782693,3001194130,2326604591,2389456536,2200899649,2280525302,2578013683,2640855108,2418763421,2498394922,3769900519,3832873040,3912640137,3992402750,4088425275,4151408268,4197601365,4277358050,3334271071,3263032808,3476998961,3422541446,3585640067,3514407732,3694837229,3640369242,1762451694,1842216281,1619975040,1682949687,2047383090,2127137669,1938468188,2001449195,1325665622,1271206113,1183200824,1111960463,1543535498,1489069629,1434599652,1363369299,622672798,568075817,748617968,677256519,907627842,853037301,1067152940,995781531,51762726,131386257,177728840,240578815,269590778,349224269,429104020,491947555,4046411278,4126034873,4172115296,4234965207,3794477266,3874110821,3953728444,4016571915,3609705398,3555108353,3735388376,3664026991,3290680682,3236090077,3449943556,3378572211,3174993278,3120533705,3032266256,2961025959,2923101090,2868635157,2813903052,2742672763,2604032198,2683796849,2461293480,2524268063,2284983834,2364738477,2175806836,2238787779,1569362073,1498123566,1409854455,1355396672,1317987909,1246755826,1192025387,1137557660,2072149281,2135122070,1912620623,1992383480,1753615357,1816598090,1627664531,1707420964,295390185,358241886,404320391,483945776,43990325,106832002,186451547,266083308,932423249,861060070,1041341759,986742920,613929101,542559546,756411363,701822548,3316196985,3244833742,3425377559,3370778784,3601682597,3530312978,3744426955,3689838204,3819031489,3881883254,3928223919,4007849240,4037393693,4100235434,4180117107,4259748804,2310601993,2373574846,2151335527,2231098320,2596047829,2659030626,2470359227,2550115596,2947551409,2876312838,2788305887,2733848168,3165939309,3094707162,3040238851,2985771188],t.array=function(i){var n=0,s=0,o=[0,1,3,7,15,31,63,127,255];return function(a){for(var c=0;a>0;){var l=8-n;a>=l?(c<<=l,c|=o[l]&i[s++],n=0,a-=l):(c<<=a,c|=(i[s]&o[a]<<8-a-n)>>8-a-n,n+=a,a=0)}return c}},t.simple=function(i,n){var s=t.array(i),o=t.header(s),a=!1,c=1e5*o,l=new Int32Array(c);do a=t.decompress(s,n,l,c);while(!a)},t.header=function(i){this.byteCount=new Int32Array(256),this.symToByte=new Uint8Array(256),this.mtfSymbol=new Int32Array(256),this.selectors=new Uint8Array(32768),i(24)!=4348520&&e.Error("No magic number found");var n=i(8)-48;return(n<1||n>9)&&e.Error("Not a BZIP archive"),n},t.decompress=function(i,n,s,o,a){for(var c=20,l=258,d=0,u=1,f=50,h=-1,g="",p=0;p<6;p++)g+=i(8).toString(16);if(g=="177245385090"){var I=i(32)|0;return I!==a&&e.Error("Error in bzip2: crc32 do not match"),i(null),null}g!="314159265359"&&e.Error("Invalid bzip data");var y=i(32)|0;i(1)&&e.Error("unsupported obsolete version");var w=i(24);w>o&&e.Error("Initial position larger than buffer size");var C=i(16),b=0;for(p=0;p<16;p++)if(C&1<<15-p){var x=i(16);for(te=0;te<16;te++)x&1<<15-te&&(this.symToByte[b++]=16*p+te)}var _=i(3);(_<2||_>6)&&e.Error("Invalid bzip data");var R=i(15);R==0&&e.Error("Invalid bzip data");for(var p=0;p<_;p++)this.mtfSymbol[p]=p;for(var p=0;p<R;p++){for(var te=0;i(1);te++)te>=_&&e.Error("Invalid bzip data");for(var U=this.mtfSymbol[te],x=te-1;x>=0;x--)this.mtfSymbol[x+1]=this.mtfSymbol[x];this.mtfSymbol[0]=U,this.selectors[p]=U}for(var G=b+2,T=[],D=new Uint8Array(l),B=new Uint16Array(c+1),Q,te=0;te<_;te++){C=i(5);for(var p=0;p<G;p++){for(;(C<1||C>c)&&e.Error("Invalid bzip data"),!!i(1);)i(1)?C--:C++;D[p]=C}var v,E;v=E=D[0];for(var p=1;p<G;p++)D[p]>E?E=D[p]:D[p]<v&&(v=D[p]);Q=T[te]={},Q.permute=new Int32Array(l),Q.limit=new Int32Array(c+1),Q.base=new Int32Array(c+1),Q.minLen=v,Q.maxLen=E;for(var P=Q.base,N=Q.limit,J=0,p=v;p<=E;p++)for(var C=0;C<G;C++)D[C]==p&&(Q.permute[J++]=C);for(p=v;p<=E;p++)B[p]=N[p]=0;for(p=0;p<G;p++)B[D[p]]++;for(J=C=0,p=v;p<E;p++)J+=B[p],N[p]=J-1,J<<=1,P[p+1]=J-(C+=B[p]);N[E]=J+B[E]-1,P[v]=0}for(var p=0;p<256;p++)this.mtfSymbol[p]=p,this.byteCount[p]=0;var z,L,G,K;for(z=L=G=K=0;;){for(G--||(G=f-1,K>=R&&e.Error("Invalid bzip data"),Q=T[this.selectors[K++]],P=Q.base,N=Q.limit),p=Q.minLen,te=i(p);p>Q.maxLen&&e.Error("Invalid bzip data"),!(te<=N[p]);)p++,te=te<<1|i(1);te-=P[p],(te<0||te>=l)&&e.Error("Invalid bzip data");var $=Q.permute[te];if($==d||$==u){z||(z=1,C=0),$==d?C+=z:C+=2*z,z<<=1;continue}if(z)for(z=0,L+C>o&&e.Error("Invalid bzip data"),U=this.symToByte[this.mtfSymbol[0]],this.byteCount[U]+=C;C--;)s[L++]=U;if($>b)break;L>=o&&e.Error("Invalid bzip data"),p=$-1,U=this.mtfSymbol[p];for(var x=p-1;x>=0;x--)this.mtfSymbol[x+1]=this.mtfSymbol[x];this.mtfSymbol[0]=U,U=this.symToByte[U],this.byteCount[U]++,s[L++]=U}(w<0||w>=L)&&e.Error("Invalid bzip data");for(var te=0,p=0;p<256;p++)x=te+this.byteCount[p],this.byteCount[p]=te,te=x;for(var p=0;p<L;p++)U=s[p]&255,s[this.byteCount[U]]|=p<<8,this.byteCount[U]++;var re=0,ee=0,Z=0;L&&(re=s[w],ee=re&255,re>>=8,Z=-1),L=L;for(var me,le,Ae;L;){for(L--,le=ee,re=s[re],ee=re&255,re>>=8,Z++==3?(me=ee,Ae=le,ee=-1):(me=1,Ae=ee);me--;)h=(h<<8^this.crcTable[(h>>24^Ae)&255])&4294967295,n(Ae);ee!=le&&(Z=0)}return h=(h^-1)>>>0,(h|0)!=(y|0)&&e.Error("Error in bzip2: crc32 do not match"),a=(h^(a<<1|a>>>31))&4294967295,a},fB=t,fB}function Mte(){if(v6)return AB;v6=1;var r=[0,1,3,7,15,31,63,127,255];return AB=function(t){var i=0,n=0,s=t(),o=function(a){if(a===null&&i!=0){i=0,n++;return}for(var c=0;a>0;){n>=s.length&&(n=0,s=t());var l=8-i;i===0&&a>0&&o.bytesRead++,a>=l?(c<<=l,c|=r[l]&s[n++],i=0,a-=l):(c<<=a,c|=(s[n]&r[a]<<8-a-i)>>8-a-i,i+=a,a=0)}return c};return o.bytesRead=0,o},AB}function Lte(){if(k6)return hB;k6=1;let r=Ote(),e=Mte();hB=t;function t(i){let n=[],s=0,o=0,a=!1,c=!1,l=null,d=null;function u(p){if(o){let I=1e5*o,y=new Int32Array(I),w=[],C=function(b){w.push(b)};return d=r.decompress(l,C,y,I,d),d===null?(o=0,!1):(p(new Uint8Array(w)),!0)}else return o=r.header(l),d=0,!1}let f=0;function h(p){if(!a)try{return u(function(I){p.enqueue(I),I!==null&&(f+=I.length)})}catch(I){return p.error(I),a=!0,!0}}let g;return new ReadableStream({start(){g=i.getReader()},async pull(p){try{for(;;){for(;!(c||l&&s-l.bytesRead+1>=25e3+1e5*(o||4));){let{value:I,done:y}=await g.read();y?c=!0:(n.push(I),s+=I.length,l===null&&(l=e(function(){return n.shift()})))}for(;c?l&&s>l.bytesRead:l&&s-l.bytesRead+1>=25e3+1e5*(o||4);)if(h(p))return;if(c&&!a&&(!l||s<=l.bytesRead)){d===null?p.close():p.error(new Error("input stream ended prematurely"));return}}}catch(I){p.error(I)}},async cancel(p){await g.abort(p)}},{highWaterMark:0})}return hB}var eo,Ed,D6,Q6,Nf,on,l5,xt,kf,m,pe,d5,F,OE,Uy,Ry,br,FV,Ci,md,OV,cs,HV,h5,Ny,GV,zV,JV,jV,$V,VV,YV,WV,XV,ZV,nn,bd,Rc,wa,ga,wY,ro,ft,yd,Lf,Gf,o1,H6,EY,BY,uA,Xs,l1,ns,SY,DY,rn,_Y,My,IB,m5,bi,d1,Ay,FY,wB,PY,TY,ME,y5,f1,V6,UY,RY,xB,W6,hy,I5,w5,tT,x5,Id,Ly,zY,LE,Ky,ls,Gs,is,sT,vi,Gy,dT,ZY,eW,dW,uW,Dy,Of,zy,Jy,jy,Qy,Jf,kc,QI,$y,Vy,KE,k5,vW,io,_y,D5,QW,_W,co,FW,ud,Q5,bB,vB,li,IT,ha,Sf,UW,GE,F5,P5,RW,NW,fd,zE,LW,HW,KW,T5,wd,my,Df,GW,kB,SB,zW,JW,xd,jW,$W,Gt,Li,I1,FI,PI,DB,xT,xd,CT,QB,ET,VW,U5,_B,zs,ut,ds,Ca,ut,ut,ut,ut,$f,ut,YW,WW,XW,ZW,JE,vn,jE,w1,Hf,eX,Br,tX,Js,Qf,$E,FB,R5,_f,x1,N5,rX,Wy,iX,BT,bT,vT,nX,sX,Fy,Py,oX,aX,cX,lX,Ea,so,Ff,q5,dX,Nr,an,Ct,rs,Kt,Sd,fX,qc,Zy,gX,pX,mX,Dd,yX,O5,PB,Vf,Yf,As,wX,TB,tI,UB,Wf,rI,iI,nI,qB,Xf,bX,G5,z5,oI,aI,cI,kX,QX,_X,FX,Zf,UX,od,qX,$5,UT,LX,js,tA,GX,B1,OB,ZE,IA,xi,ui,Qc,qT,OT,MT,$X,LT,VX,HT,ZX,Lc,sa,oa,$r,Vr,Iy,Z5,e6,t6,ad,cd,wy,xy,sZ,oZ,aZ,cZ,lZ,dZ,uZ,fZ,AZ,hZ,gZ,aa,uI,MB,XT,pZ,mZ,ca,la,fI,LB,S1,yZ,ZT,eU,AI,tU,Fd,_c,tB,iU,gI,s6,KB,Zs,to,Cd,oU,Cy,EZ,lU,dU,uU,_Z,FZ,PZ,TZ,UZ,RZ,NZ,qZ,OZ,MZ,Pf,LZ,HZ,KZ,GZ,fU,AU,hU,gU,zZ,JZ,o6,a6,pI,pU,$Z,VZ,YZ,WZ,da,Er,nB,XZ,Tf,ld,Ey,zc,oee,aee,cee,GB,c6,lee,dee,l6,uee,fee,hee,d6,pee,mee,yee,D1,Iee,u6,zB,xee,wU,Cee,xU,Eee,Bee,bee,CU,EU,BU,vee,kee,See,bU,Dee,Qee,_ee,Fee,Pee,Uf,ua,JB,Tee,Uee,vU,Ree,kU,SU,DU,QU,Nee,qee,Oee,Mee,By,jB,Lee,Hee,Kee,Gee,A6,by,sB,$B,zee,Jee,jee,oB,ki,Pe,Q1,_U,VB,mI,$ee,Vee,Yee,h6,g6,Wee,y6,cB,x6,nte,LU,HU,Dc,OI,MI,ste,Jc,tn,ute,fte,KU,Yr,XB,ZB,Rf,P1,GU,Ate,hte,gte,pte,mte,yte,Ite,wte,xte,Ys,Cte,Ete,zU,Ste,vy,Rte,Nte,fB,b6,AB,v6,hB,k6,jU,Hte,Kte,T1=j(()=>{eo=typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};Ed=Symbol("doneWritingPromise"),D6=Symbol("doneWritingResolve"),Q6=Symbol("doneWritingReject"),Nf=Symbol("readingIndex"),on=class r extends Array{constructor(){super(),Object.setPrototypeOf(this,r.prototype),this[Ed]=new Promise((e,t)=>{this[D6]=e,this[Q6]=t}),this[Ed].catch(()=>{})}};on.prototype.getReader=function(){return this[Nf]===void 0&&(this[Nf]=0),{read:async()=>(await this[Ed],this[Nf]===this.length?{value:void 0,done:!0}:{value:this[this[Nf]++],done:!1})}};on.prototype.readToEnd=async function(r){await this[Ed];let e=r(this.slice(this[Nf]));return this.length=0,e};on.prototype.clone=function(){let r=new on;return r[Ed]=this[Ed].then(()=>{r.push(...this)}),r};cA.prototype.write=async function(r){this.stream.push(r)};cA.prototype.close=async function(){this.stream[D6]()};cA.prototype.abort=async function(r){return this.stream[Q6](r),r};cA.prototype.releaseLock=function(){};typeof eo.process=="object"&&eo.process.versions;l5=new WeakSet,xt=Symbol("externalBuffer");gs.prototype.read=async function(){return this[xt]&&this[xt].length?{done:!1,value:this[xt].shift()}:this._read()};gs.prototype.releaseLock=function(){this[xt]&&(this.stream[xt]=this[xt]),this._releaseLock()};gs.prototype.cancel=function(r){return this._cancel(r)};gs.prototype.readLine=async function(){let r=[],e;for(;!e;){let{done:t,value:i}=await this.read();if(i+="",t)return r.length?di(r):void 0;let n=i.indexOf(` +`)+1;n&&(e=di(r.concat(i.substr(0,n))),r=[]),n!==i.length&&r.push(i.substr(n))}return this.unshift(...r),e};gs.prototype.readByte=async function(){let{done:r,value:e}=await this.read();if(r)return;let t=e[0];return this.unshift(Ur(e,1)),t};gs.prototype.readBytes=async function(r){let e=[],t=0;for(;;){let{done:i,value:n}=await this.read();if(i)return e.length?di(e):void 0;if(e.push(n),t+=n.length,t>=r){let s=di(e);return this.unshift(Ur(s,r)),Ur(s,0,r)}}};gs.prototype.peekBytes=async function(r){let e=await this.readBytes(r);return this.unshift(e),e};gs.prototype.unshift=function(...r){if(this[xt]||(this[xt]=[]),r.length===1&&yI(r[0])&&this[xt].length&&r[0].length&&this[xt][0].byteOffset>=r[0].length){this[xt][0]=new Uint8Array(this[xt][0].buffer,this[xt][0].byteOffset-r[0].length,this[xt][0].byteLength+r[0].length);return}this[xt].unshift(...r.filter(e=>e&&e.length))};gs.prototype.readToEnd=async function(r=di){let e=[];for(;;){let{done:t,value:i}=await this.read();if(t)break;e.push(i)}return r(e)};kf=Symbol("byValue"),m={curve:{nistP256:"nistP256",p256:"nistP256",nistP384:"nistP384",p384:"nistP384",nistP521:"nistP521",p521:"nistP521",secp256k1:"secp256k1",ed25519Legacy:"ed25519Legacy",ed25519:"ed25519Legacy",curve25519Legacy:"curve25519Legacy",curve25519:"curve25519Legacy",brainpoolP256r1:"brainpoolP256r1",brainpoolP384r1:"brainpoolP384r1",brainpoolP512r1:"brainpoolP512r1"},s2k:{simple:0,salted:1,iterated:3,argon2:4,gnu:101},publicKey:{rsaEncryptSign:1,rsaEncrypt:2,rsaSign:3,elgamal:16,dsa:17,ecdh:18,ecdsa:19,eddsaLegacy:22,aedh:23,aedsa:24,x25519:25,x448:26,ed25519:27,ed448:28},symmetric:{idea:1,tripledes:2,cast5:3,blowfish:4,aes128:7,aes192:8,aes256:9,twofish:10},compression:{uncompressed:0,zip:1,zlib:2,bzip2:3},hash:{md5:1,sha1:2,ripemd:3,sha256:8,sha384:9,sha512:10,sha224:11,sha3_256:12,sha3_512:14},webHash:{"SHA-1":2,"SHA-256":8,"SHA-384":9,"SHA-512":10},aead:{eax:1,ocb:2,gcm:3,experimentalGCM:100},packet:{publicKeyEncryptedSessionKey:1,signature:2,symEncryptedSessionKey:3,onePassSignature:4,secretKey:5,publicKey:6,secretSubkey:7,compressedData:8,symmetricallyEncryptedData:9,marker:10,literalData:11,trust:12,userID:13,publicSubkey:14,userAttribute:17,symEncryptedIntegrityProtectedData:18,modificationDetectionCode:19,aeadEncryptedData:20,padding:21},literal:{binary:98,text:116,utf8:117,mime:109},signature:{binary:0,text:1,standalone:2,certGeneric:16,certPersona:17,certCasual:18,certPositive:19,certRevocation:48,subkeyBinding:24,keyBinding:25,key:31,keyRevocation:32,subkeyRevocation:40,timestamp:64,thirdParty:80},signatureSubpacket:{signatureCreationTime:2,signatureExpirationTime:3,exportableCertification:4,trustSignature:5,regularExpression:6,revocable:7,keyExpirationTime:9,placeholderBackwardsCompatibility:10,preferredSymmetricAlgorithms:11,revocationKey:12,issuerKeyID:16,notationData:20,preferredHashAlgorithms:21,preferredCompressionAlgorithms:22,keyServerPreferences:23,preferredKeyServer:24,primaryUserID:25,policyURI:26,keyFlags:27,signersUserID:28,reasonForRevocation:29,features:30,signatureTarget:31,embeddedSignature:32,issuerFingerprint:33,preferredAEADAlgorithms:34,preferredCipherSuites:39},keyFlags:{certifyKeys:1,signData:2,encryptCommunication:4,encryptStorage:8,splitPrivateKey:16,authentication:32,sharedPrivateKey:128},armor:{multipartSection:0,multipartLast:1,signed:2,message:3,publicKey:4,privateKey:5,signature:6},reasonForRevocation:{noReason:0,keySuperseded:1,keyCompromised:2,keyRetired:3,userIDInvalid:32},features:{modificationDetection:1,aead:2,v5Keys:4,seipdv2:8},write:function(r,e){if(typeof e=="number"&&(e=this.read(r,e)),r[e]!==void 0)return r[e];throw new Error("Invalid enum value.")},read:function(r,e){if(r[kf]||(r[kf]=[],Object.entries(r).forEach(([t,i])=>{r[kf][i]=t})),r[kf][e]!==void 0)return r[kf][e];throw new Error("Invalid enum value.")}},pe={preferredHashAlgorithm:m.hash.sha512,preferredSymmetricAlgorithm:m.symmetric.aes256,preferredCompressionAlgorithm:m.compression.uncompressed,aeadProtect:!1,parseAEADEncryptedV4KeysAsLegacy:!1,preferredAEADAlgorithm:m.aead.gcm,aeadChunkSizeByte:12,v6Keys:!1,enableParsingV5Entities:!1,s2kType:m.s2k.iterated,s2kIterationCountByte:224,s2kArgon2Params:{passes:3,parallelism:4,memoryExponent:16},maxArgon2MemoryExponent:30,allowUnauthenticatedMessages:!1,allowUnauthenticatedStream:!1,minRSABits:2047,passwordCollisionCheck:!1,allowInsecureDecryptionWithSigningKeys:!1,allowInsecureVerificationWithReformattedKeys:!1,allowMissingKeyFlags:!1,constantTimePKCS1Decryption:!1,constantTimePKCS1DecryptionSupportedSymmetricAlgorithms:new Set([m.symmetric.aes128,m.symmetric.aes192,m.symmetric.aes256]),ignoreUnsupportedPackets:!0,ignoreMalformedPackets:!1,enforceGrammar:!0,additionalAllowedPackets:[],showVersion:!1,showComment:!1,versionString:"OpenPGP.js 6.3.1",commentString:"https://openpgpjs.org",maxUserIDLength:1024*5,maxDecompressedMessageSize:1/0,knownNotations:[],nonDeterministicSignaturesViaNotation:!0,useEllipticFallback:!0,rejectHashAlgorithms:new Set([m.hash.md5,m.hash.ripemd]),rejectMessageHashAlgorithms:new Set([m.hash.md5,m.hash.ripemd,m.hash.sha1]),rejectPublicKeyAlgorithms:new Set([m.publicKey.elgamal,m.publicKey.dsa]),rejectCurves:new Set([m.curve.secp256k1])},d5=(()=>{try{return process.env.NODE_ENV==="development"}catch{}return!1})(),F={isString:function(r){return typeof r=="string"||r instanceof String},nodeRequire:S6(import.meta.url),isArray:function(r){return r instanceof Array},isUint8Array:yI,isStream:or,getNobleCurve:async(r,e)=>{if(!pe.useEllipticFallback)throw new Error("This curve is only supported in the full build of OpenPGP.js");let{nobleCurves:t}=await Promise.resolve().then(function(){return Pee});switch(r){case m.publicKey.ecdh:case m.publicKey.ecdsa:{let i=t.get(e);if(!i)throw new Error("Unsupported curve");return i}case m.publicKey.x448:return t.get("x448");case m.publicKey.ed448:return t.get("ed448");default:throw new Error("Unsupported curve")}},readNumber:function(r){let e=0;for(let t=0;t<r.length;t++)e+=256**t*r[r.length-1-t];return e},writeNumber:function(r,e){let t=new Uint8Array(e);for(let i=0;i<e;i++)t[i]=r>>8*(e-i-1)&255;return t},readDate:function(r){let e=F.readNumber(r);return new Date(e*1e3)},writeDate:function(r){let e=Math.floor(r.getTime()/1e3);return F.writeNumber(e,4)},normalizeDate:function(r=Date.now()){return r===null||r===1/0?r:new Date(Math.floor(+r/1e3)*1e3)},readMPI:function(r){let t=(r[0]<<8|r[1])+7>>>3;return F.readExactSubarray(r,2,2+t)},readExactSubarray:function(r,e,t){if(r.length<t)throw new Error("Input array too short");return r.subarray(e,t)},leftPad(r,e){if(r.length>e)throw new Error("Input array too long");let t=new Uint8Array(e),i=e-r.length;return t.set(r,i),t},uint8ArrayToMPI:function(r){let e=F.uint8ArrayBitLength(r);if(e===0)throw new Error("Zero MPI");let t=r.subarray(r.length-Math.ceil(e/8)),i=new Uint8Array([(e&65280)>>8,e&255]);return F.concatUint8Array([i,t])},uint8ArrayBitLength:function(r){let e;for(e=0;e<r.length&&r[e]===0;e++);if(e===r.length)return 0;let t=r.subarray(e);return(t.length-1)*8+F.nbits(t[0])},hexToUint8Array:function(r){let e=new Uint8Array(r.length>>1);for(let t=0;t<r.length>>1;t++)e[t]=parseInt(r.substr(t<<1,2),16);return e},uint8ArrayToHex:function(r){let e="0123456789abcdef",t="";return r.forEach(i=>{t+=e[i>>4]+e[i&15]}),t},stringToUint8Array:function(r){return sr(r,e=>{if(!F.isString(e))throw new Error("stringToUint8Array: Data must be in the form of a string");let t=new Uint8Array(e.length);for(let i=0;i<e.length;i++)t[i]=e.charCodeAt(i);return t})},uint8ArrayToString:function(r){r=new Uint8Array(r);let e=[],t=16384,i=r.length;for(let n=0;n<i;n+=t)e.push(String.fromCharCode.apply(String,r.subarray(n,n+t<i?n+t:i)));return e.join("")},encodeUTF8:function(r){let e=new TextEncoder("utf-8");function t(i,n=!1){return e.encode(i,{stream:!n})}return sr(r,t,()=>t("",!0))},decodeUTF8:function(r){let e=new TextDecoder("utf-8");function t(i,n=!1){return e.decode(i,{stream:!n})}return sr(r,t,()=>t(new Uint8Array,!0))},concat:di,concatUint8Array:_6,equalsUint8Array:function(r,e){if(!F.isUint8Array(r)||!F.isUint8Array(e))throw new Error("Data must be in the form of a Uint8Array");if(r.length!==e.length)return!1;for(let t=0;t<r.length;t++)if(r[t]!==e[t])return!1;return!0},findLastIndex:function(r,e){for(let t=r.length;t>=0;t--)if(e(r[t],t,r))return t;return-1},writeChecksum:function(r){let e=0;for(let t=0;t<r.length;t++)e=e+r[t]&65535;return F.writeNumber(e,2)},printDebug:function(r){d5&&console.log("[OpenPGP.js debug]",r)},printDebugError:function(r){d5&&console.error("[OpenPGP.js debug]",r)},nbits:function(r){let e=1,t=r>>>16;return t!==0&&(r=t,e+=16),t=r>>8,t!==0&&(r=t,e+=8),t=r>>4,t!==0&&(r=t,e+=4),t=r>>2,t!==0&&(r=t,e+=2),t=r>>1,t!==0&&(r=t,e+=1),e},double:function(r){let e=new Uint8Array(r.length),t=r.length-1;for(let i=0;i<t;i++)e[i]=r[i]<<1^r[i+1]>>7;return e[t]=r[t]<<1^(r[0]>>7)*135,e},shiftRight:function(r,e){if(e)for(let t=r.length-1;t>=0;t--)r[t]>>=e,t>0&&(r[t]|=r[t-1]<<8-e);return r},getWebCrypto:function(){let e=typeof eo<"u"&&eo.crypto&&eo.crypto.subtle||this.getNodeCrypto()?.webcrypto.subtle;if(!e)throw new Error("The WebCrypto API is not available");return e},getNodeCrypto:function(){return this.nodeRequire("crypto")},getNodeZlib:function(){return this.nodeRequire("zlib")},getNodeBuffer:function(){return(this.nodeRequire("buffer")||{}).Buffer},getHardwareConcurrency:function(){return typeof navigator<"u"?navigator.hardwareConcurrency||1:this.nodeRequire("os").cpus().length},isEmailAddress:function(r){return F.isString(r)?/^[^\p{C}\p{Z}@<>\\]+@[^\p{C}\p{Z}@<>\\]+[^\p{C}\p{Z}\p{P}]$/u.test(r):!1},canonicalizeEOL:function(r){let i=!1;return sr(r,n=>{i&&(n=F.concatUint8Array([new Uint8Array([13]),n])),n[n.length-1]===13?(i=!0,n=n.subarray(0,-1)):i=!1;let s,o=[];for(let l=0;s=n.indexOf(10,l)+1,s;l=s)n[s-2]!==13&&o.push(s);if(!o.length)return n;let a=new Uint8Array(n.length+o.length),c=0;for(let l=0;l<o.length;l++){let d=n.subarray(o[l-1]||0,o[l]);a.set(d,c),c+=d.length,a[c-1]=13,a[c]=10,c++}return a.set(n.subarray(o[o.length-1]||0),c),a},()=>i?new Uint8Array([13]):void 0)},nativeEOL:function(r){let i=!1;return sr(r,n=>{i&&n[0]!==10?n=F.concatUint8Array([new Uint8Array([13]),n]):n=new Uint8Array(n),n[n.length-1]===13?(i=!0,n=n.subarray(0,-1)):i=!1;let s,o=0;for(let a=0;a!==n.length;a=s){s=n.indexOf(13,a)+1,s||(s=n.length);let c=s-(n[s]===10?1:0);a&&n.copyWithin(o,a,c),o+=c-a}return n.subarray(0,o)},()=>i?new Uint8Array([13]):void 0)},removeTrailingSpaces:function(r){return r.split(` `).map(e=>{let t=e.length-1;for(;t>=0&&(e[t]===" "||e[t]===" "||e[t]==="\r");t--);return e.substr(0,t+1)}).join(` -`)},wrapError:function(r,e){if(!e)return r instanceof Error?r:new Error(r);if(r instanceof Error){try{r.message+=": "+e.message,r.cause=e}catch{}return r}return new Error(r+": "+e.message,{cause:e})},constructAllowedPackets:function(r){let e={};return r.forEach(t=>{if(!t.tag)throw new Error("Invalid input: expected a packet class");e[t.tag]=t}),e},anyPromise:function(r){return new Promise((e,t)=>{let i;Promise.all(r.map(async n=>{try{e(await n)}catch(s){i=s}})).then(()=>{t(i)})})},selectUint8Array:function(r,e,t){let i=Math.max(e.length,t.length),n=new Uint8Array(i),s=0;for(let o=0;o<n.length;o++)n[o]=e[o]&256-r|t[o]&255+r,s+=r&o<e.length|1-r&o<t.length;return n.subarray(0,s)},selectUint8:function(r,e,t){return e&256-r|t&255+r},isAES:function(r){return r===m.symmetric.aes128||r===m.symmetric.aes192||r===m.symmetric.aes256}},xE=F.getNodeBuffer();xE?(Ey=r=>xE.from(r).toString("base64"),By=r=>{let e=xE.from(r,"base64");return new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}):(Ey=r=>btoa(F.uint8ArrayToString(r)),By=r=>F.stringToUint8Array(atob(r)));Br=[new Array(255),new Array(255),new Array(255),new Array(255)];for(let r=0;r<=255;r++){let e=r<<16;for(let t=0;t<8;t++)e=e<<1^((e&8388608)!==0?8801531:0);Br[0][r]=(e&16711680)>>16|e&65280|(e&255)<<16}for(let r=0;r<=255;r++)Br[1][r]=Br[0][r]>>8^Br[0][Br[0][r]&255];for(let r=0;r<=255;r++)Br[2][r]=Br[1][r]>>8^Br[0][Br[1][r]&255];for(let r=0;r<=255;r++)Br[3][r]=Br[2][r]>>8^Br[0][Br[2][r]&255];K$=(function(){let r=new ArrayBuffer(2);return new DataView(r).setInt16(0,255,!0),new Int16Array(r)[0]===255})();xi=BigInt(0),fd=BigInt(1);Y$=F.getNodeCrypto();ns=BigInt(1);Z$=[7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997,1009,1013,1019,1021,1031,1033,1039,1049,1051,1061,1063,1069,1087,1091,1093,1097,1103,1109,1117,1123,1129,1151,1153,1163,1171,1181,1187,1193,1201,1213,1217,1223,1229,1231,1237,1249,1259,1277,1279,1283,1289,1291,1297,1301,1303,1307,1319,1321,1327,1361,1367,1373,1381,1399,1409,1423,1427,1429,1433,1439,1447,1451,1453,1459,1471,1481,1483,1487,1489,1493,1499,1511,1523,1531,1543,1549,1553,1559,1567,1571,1579,1583,1597,1601,1607,1609,1613,1619,1621,1627,1637,1657,1663,1667,1669,1693,1697,1699,1709,1721,1723,1733,1741,1747,1753,1759,1777,1783,1787,1789,1801,1811,1823,1831,1847,1861,1867,1871,1873,1877,1879,1889,1901,1907,1913,1931,1933,1949,1951,1973,1979,1987,1993,1997,1999,2003,2011,2017,2027,2029,2039,2053,2063,2069,2081,2083,2087,2089,2099,2111,2113,2129,2131,2137,2141,2143,2153,2161,2179,2203,2207,2213,2221,2237,2239,2243,2251,2267,2269,2273,2281,2287,2293,2297,2309,2311,2333,2339,2341,2347,2351,2357,2371,2377,2381,2383,2389,2393,2399,2411,2417,2423,2437,2441,2447,2459,2467,2473,2477,2503,2521,2531,2539,2543,2549,2551,2557,2579,2591,2593,2609,2617,2621,2633,2647,2657,2659,2663,2671,2677,2683,2687,2689,2693,2699,2707,2711,2713,2719,2729,2731,2741,2749,2753,2767,2777,2789,2791,2797,2801,2803,2819,2833,2837,2843,2851,2857,2861,2879,2887,2897,2903,2909,2917,2927,2939,2953,2957,2963,2969,2971,2999,3001,3011,3019,3023,3037,3041,3049,3061,3067,3079,3083,3089,3109,3119,3121,3137,3163,3167,3169,3181,3187,3191,3203,3209,3217,3221,3229,3251,3253,3257,3259,3271,3299,3301,3307,3313,3319,3323,3329,3331,3343,3347,3359,3361,3371,3373,3389,3391,3407,3413,3433,3449,3457,3461,3463,3467,3469,3491,3499,3511,3517,3527,3529,3533,3539,3541,3547,3557,3559,3571,3581,3583,3593,3607,3613,3617,3623,3631,3637,3643,3659,3671,3673,3677,3691,3697,3701,3709,3719,3727,3733,3739,3761,3767,3769,3779,3793,3797,3803,3821,3823,3833,3847,3851,3853,3863,3877,3881,3889,3907,3911,3917,3919,3923,3929,3931,3943,3947,3967,3989,4001,4003,4007,4013,4019,4021,4027,4049,4051,4057,4073,4079,4091,4093,4099,4111,4127,4129,4133,4139,4153,4157,4159,4177,4201,4211,4217,4219,4229,4231,4241,4243,4253,4259,4261,4271,4273,4283,4289,4297,4327,4337,4339,4349,4357,4363,4373,4391,4397,4409,4421,4423,4441,4447,4451,4457,4463,4481,4483,4493,4507,4513,4517,4519,4523,4547,4549,4561,4567,4583,4591,4597,4603,4621,4637,4639,4643,4649,4651,4657,4663,4673,4679,4691,4703,4721,4723,4729,4733,4751,4759,4783,4787,4789,4793,4799,4801,4813,4817,4831,4861,4871,4877,4889,4903,4909,4919,4931,4933,4937,4943,4951,4957,4967,4969,4973,4987,4993,4999].map(r=>BigInt(r));NP=F.getWebCrypto(),by=F.getNodeCrypto(),tV=by&&by.getHashes();rV=so("md5")||oo("md5"),iV=so("sha1")||oo("sha1","SHA-1"),nV=so("sha224")||oo("sha224"),sV=so("sha256")||oo("sha256","SHA-256"),oV=so("sha384")||oo("sha384","SHA-384"),aV=so("sha512")||oo("sha512","SHA-512"),cV=so("ripemd160")||oo("ripemd160"),lV=so("sha3-256")||oo("sha3_256"),dV=so("sha3-512")||oo("sha3_512");rn=[];rn[1]=[48,32,48,12,6,8,42,134,72,134,247,13,2,5,5,0,4,16];rn[2]=[48,33,48,9,6,5,43,14,3,2,26,5,0,4,20];rn[3]=[48,33,48,9,6,5,43,36,3,2,1,5,0,4,20];rn[8]=[48,49,48,13,6,9,96,134,72,1,101,3,4,2,1,5,0,4,32];rn[9]=[48,65,48,13,6,9,96,134,72,1,101,3,4,2,2,5,0,4,48];rn[10]=[48,81,48,13,6,9,96,134,72,1,101,3,4,2,3,5,0,4,64];rn[11]=[48,45,48,13,6,9,96,134,72,1,101,3,4,2,4,5,0,4,28];rn[12]=[48,49,48,13,6,9,96,134,72,1,101,3,4,2,8,5,0,4,32];rn[14]=[48,81,48,13,6,9,96,134,72,1,101,3,4,2,10,5,0,4,64];wd=F.getWebCrypto(),Pc=F.getNodeCrypto(),Ia=BigInt(1);ha=BigInt(1);_V={"2a8648ce3d030107":m.curve.nistP256,"2b81040022":m.curve.nistP384,"2b81040023":m.curve.nistP521,"2b8104000a":m.curve.secp256k1,"2b06010401da470f01":m.curve.ed25519Legacy,"2b060104019755010501":m.curve.curve25519Legacy,"2b2403030208010107":m.curve.brainpoolP256r1,"2b240303020801010b":m.curve.brainpoolP384r1,"2b240303020801010d":m.curve.brainpoolP512r1},to=class r{constructor(e){if(e instanceof r)this.oid=e.oid;else if(F.isArray(e)||F.isUint8Array(e)){if(e=new Uint8Array(e),e[0]===6){if(e[1]!==e.length-2)throw new Error("Length mismatch in DER encoded oid");e=e.subarray(2)}this.oid=e}else this.oid=""}read(e){if(e.length>=1){let t=e[0];if(e.length>=1+t)return this.oid=e.subarray(1,1+t),1+this.oid.length}throw new Error("Invalid oid")}write(){return F.concatUint8Array([new Uint8Array([this.oid.length]),this.oid])}toHex(){return F.uint8ArrayToHex(this.oid)}getName(){let e=_V[this.toHex()];if(!e)throw new Error("Unknown curve object identifier.");return e}};ft=class r extends Error{constructor(...e){super(...e),Error.captureStackTrace&&Error.captureStackTrace(this,r),this.name="UnsupportedError"}},Ad=class extends ft{constructor(...e){super(...e),Error.captureStackTrace&&Error.captureStackTrace(this,ft),this.name="UnknownPacketError"}},Qf=class extends ft{constructor(...e){super(...e),Error.captureStackTrace&&Error.captureStackTrace(this,ft),this.name="MalformedPacketError"}},Pf=class{constructor(e,t){this.tag=e,this.rawContent=t}write(){return this.rawContent}};HB=(r,e)=>{if(r===m.publicKey.ed25519)return{kty:"OKP",crv:"Ed25519",x:Pr(e),ext:!0};throw new Error("Unsupported EdDSA algorithm")},u6=(r,e,t)=>{if(r===m.publicKey.ed25519){let i=HB(r,e);return i.d=Pr(t),i}else throw new Error("Unsupported EdDSA algorithm")},TV=Object.freeze({__proto__:null,generate:qB,getPayloadSize:dI,getPreferredHashAlgo:uI,sign:OB,validateParams:LB,verify:MB});UV=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;eA=(r,e)=>{function t(i,...n){if(kt(i),!UV)throw new Error("Non little-endian hardware is not yet supported");if(r.nonceLength!==void 0){let d=n[0];if(!d)throw new Error("nonce / iv required");r.varSizeNonce?kt(d):kt(d,r.nonceLength)}let s=r.tagLength;s&&n[1]!==void 0&&kt(n[1]);let o=e(i,...n),a=(d,u)=>{if(u!==void 0){if(d!==2)throw new Error("cipher output not supported");kt(u)}},c=!1;return{encrypt(d,u){if(c)throw new Error("cannot encrypt() twice with same key + nonce");return c=!0,kt(d),a(o.encrypt.length,u),o.encrypt(d,u)},decrypt(d,u){if(kt(d),s&&d.length<s)throw new Error("invalid ciphertext length: smaller than tagLength="+s);return a(o.decrypt.length,u),o.decrypt(d,u)}}}return Object.assign(t,r),t};Ws=16,zB=new Uint8Array(16),es=Et(zB),OV=225,MV=(r,e,t,i)=>{let n=i&1;return{s3:t<<31|i>>>1,s2:e<<31|t>>>1,s1:r<<31|e>>>1,s0:r>>>1^OV<<24&-(n&1)}},tn=r=>(r>>>0&255)<<24|(r>>>8&255)<<16|(r>>>16&255)<<8|r>>>24&255|0;HV=r=>r>64*1024?8:r>1024?4:2,Sy=class{constructor(e,t){this.blockLen=Ws,this.outputLen=Ws,this.s0=0,this.s1=0,this.s2=0,this.s3=0,this.finished=!1,e=Tf(e),kt(e,16);let i=fI(e),n=i.getUint32(0,!1),s=i.getUint32(4,!1),o=i.getUint32(8,!1),a=i.getUint32(12,!1),c=[];for(let g=0;g<128;g++)c.push({s0:tn(n),s1:tn(s),s2:tn(o),s3:tn(a)}),{s0:n,s1:s,s2:o,s3:a}=MV(n,s,o,a);let l=HV(t||1024);if(![1,2,4,8].includes(l))throw new Error("ghash: invalid window size, expected 2, 4 or 8");this.W=l;let u=128/l,f=this.windowSize=2**l,h=[];for(let g=0;g<u;g++)for(let p=0;p<f;p++){let I=0,y=0,w=0,C=0;for(let b=0;b<l;b++){if(!(p>>>l-b-1&1))continue;let{s0:_,s1:R,s2:U,s3:T}=c[l*g+b];I^=_,y^=R,w^=U,C^=T}h.push({s0:I,s1:y,s2:w,s3:C})}this.t=h}_updateBlock(e,t,i,n){e^=this.s0,t^=this.s1,i^=this.s2,n^=this.s3;let{W:s,t:o,windowSize:a}=this,c=0,l=0,d=0,u=0,f=(1<<s)-1,h=0;for(let g of[e,t,i,n])for(let p=0;p<4;p++){let I=g>>>8*p&255;for(let y=8/s-1;y>=0;y--){let w=I>>>s*y&f,{s0:C,s1:b,s2:x,s3:_}=o[h*a+w];c^=C,l^=b,d^=x,u^=_,h+=1}}this.s0=c,this.s1=l,this.s2=d,this.s3=u}update(e){ky(this),e=Tf(e),kt(e);let t=Et(e),i=Math.floor(e.length/Ws),n=e.length%Ws;for(let s=0;s<i;s++)this._updateBlock(t[s*4+0],t[s*4+1],t[s*4+2],t[s*4+3]);return n&&(zB.set(e.subarray(i*Ws)),this._updateBlock(es[0],es[1],es[2],es[3]),Wr(es)),this}destroy(){let{t:e}=this;for(let t of e)t.s0=0,t.s1=0,t.s2=0,t.s3=0}digestInto(e){ky(this),A6(e,this),this.finished=!0;let{s0:t,s1:i,s2:n,s3:s}=this,o=Et(e);return o[0]=t,o[1]=i,o[2]=n,o[3]=s,e}digest(){let e=new Uint8Array(Ws);return this.digestInto(e),this.destroy(),e}},tB=class extends Sy{constructor(e,t){e=Tf(e),kt(e);let i=LV(Ei(e));super(i,t),Wr(i)}update(e){e=Tf(e),ky(this);let t=Et(e),i=e.length%Ws,n=Math.floor(e.length/Ws);for(let s=0;s<n;s++)this._updateBlock(tn(t[s*4+3]),tn(t[s*4+2]),tn(t[s*4+1]),tn(t[s*4+0]));return i&&(zB.set(e.subarray(n*Ws)),this._updateBlock(tn(es[3]),tn(es[2]),tn(es[1]),tn(es[0])),Wr(es)),this}digestInto(e){ky(this),A6(e,this),this.finished=!0;let{s0:t,s1:i,s2:n,s3:s}=this,o=Et(e);return o[0]=t,o[1]=i,o[2]=n,o[3]=s,e.reverse()}};MP=p6((r,e)=>new Sy(r,e));p6((r,e)=>new tB(r,e));Bi=16,JB=4,ty=new Uint8Array(Bi),KV=283;rB=(()=>{let r=new Uint8Array(256);for(let t=0,i=1;t<256;t++,i^=jB(i))r[t]=i;let e=new Uint8Array(256);e[0]=99;for(let t=0;t<255;t++){let i=r[255-t];i|=i<<8,e[r[t]]=(i^i>>4^i>>5^i>>6^i>>7^99)&255}return Wr(r),e})(),GV=rB.map((r,e)=>rB.indexOf(e)),zV=r=>r<<24|r>>>8,CE=r=>r<<8|r>>>24,LP=r=>r<<24&4278190080|r<<8&16711680|r>>>8&65280|r>>>24&255;$B=m6(rB,r=>cd(r,3)<<24|r<<16|r<<8|cd(r,2)),y6=m6(GV,r=>cd(r,11)<<24|cd(r,13)<<16|cd(r,9)<<8|cd(r,14)),JV=(()=>{let r=new Uint8Array(16);for(let e=0,t=1;e<16;e++,t=jB(t))r[e]=t;return r})();jV=eA({blockSize:16,nonceLength:16},function(e,t){function i(n,s){if(kt(n),s!==void 0&&(kt(s),!nn(s)))throw new Error("unaligned destination");let o=Mc(e),a=Ei(t),c=[o,a];nn(n)||c.push(n=Ei(n));let l=I6(o,a,n,s);return Wr(...c),l}return{encrypt:(n,s)=>i(n,s),decrypt:(n,s)=>i(n,s)}});iB=eA({blockSize:16,nonceLength:16},function(e,t,i={}){let n=!i.disablePadding;return{encrypt(s,o){let a=Mc(e),{b:c,o:l,out:d}=VV(s,n,o),u=t,f=[a];nn(u)||f.push(u=Ei(u));let h=Et(u),g=h[0],p=h[1],I=h[2],y=h[3],w=0;for(;w+4<=c.length;)g^=c[w+0],p^=c[w+1],I^=c[w+2],y^=c[w+3],{s0:g,s1:p,s2:I,s3:y}=Dn(a,g,p,I,y),l[w++]=g,l[w++]=p,l[w++]=I,l[w++]=y;if(n){let C=WV(s.subarray(w*4));g^=C[0],p^=C[1],I^=C[2],y^=C[3],{s0:g,s1:p,s2:I,s3:y}=Dn(a,g,p,I,y),l[w++]=g,l[w++]=p,l[w++]=I,l[w++]=y}return Wr(...f),d},decrypt(s,o){$V(s);let a=VB(e),c=t,l=[a];nn(c)||l.push(c=Ei(c));let d=Et(c);o=tA(s.length,o),nn(s)||l.push(s=Ei(s)),GB(s,o);let u=Et(s),f=Et(o),h=d[0],g=d[1],p=d[2],I=d[3];for(let y=0;y+4<=u.length;){let w=h,C=g,b=p,x=I;h=u[y+0],g=u[y+1],p=u[y+2],I=u[y+3];let{s0:_,s1:R,s2:U,s3:T}=AI(a,h,g,p,I);f[y++]=_^w,f[y++]=R^C,f[y++]=U^b,f[y++]=T^x}return Wr(...l),YV(o,n)}}}),w6=eA({blockSize:16,nonceLength:16},function(e,t){function i(n,s,o){kt(n);let a=n.length;if(o=tA(a,o),h6(n,o))throw new Error("overlapping src and dst not supported.");let c=Mc(e),l=t,d=[c];nn(l)||d.push(l=Ei(l)),nn(n)||d.push(n=Ei(n));let u=Et(n),f=Et(o),h=s?f:u,g=Et(l),p=g[0],I=g[1],y=g[2],w=g[3];for(let b=0;b+4<=u.length;){let{s0:x,s1:_,s2:R,s3:U}=Dn(c,p,I,y,w);f[b+0]=u[b+0]^x,f[b+1]=u[b+1]^_,f[b+2]=u[b+2]^R,f[b+3]=u[b+3]^U,p=h[b++],I=h[b++],y=h[b++],w=h[b++]}let C=Bi*Math.floor(u.length/JB);if(C<a){({s0:p,s1:I,s2:y,s3:w}=Dn(c,p,I,y,w));let b=KB(new Uint32Array([p,I,y,w]));for(let x=C,_=0;x<a;x++,_++)o[x]=n[x]^b[_];Wr(b)}return Wr(...d),o}return{encrypt:(n,s)=>i(n,!0,s),decrypt:(n,s)=>i(n,!1,s)}});ry=eA({blockSize:16,nonceLength:12,tagLength:16,varSizeNonce:!0},function(e,t,i){if(t.length<8)throw new Error("aes/gcm: invalid nonce length");let n=16;function s(a,c,l){let d=XV(MP,!1,a,l,i);for(let u=0;u<c.length;u++)d[u]^=c[u];return d}function o(){let a=Mc(e),c=ty.slice(),l=ty.slice();if(kf(a,!1,l,l,c),t.length===12)l.set(t);else{let u=ty.slice(),f=fI(u);eB(f,8,BigInt(t.length*8),!1);let h=MP.create(c).update(t).update(u);h.digestInto(l),h.destroy()}let d=kf(a,!1,l,ty);return{xk:a,authKey:c,counter:l,tagMask:d}}return{encrypt(a){let{xk:c,authKey:l,counter:d,tagMask:u}=o(),f=new Uint8Array(a.length+n),h=[c,l,d,u];nn(a)||h.push(a=Ei(a)),kf(c,!1,d,a,f.subarray(0,a.length));let g=s(l,u,f.subarray(0,f.length-n));return h.push(g),f.set(g,a.length),Wr(...h),f},decrypt(a){let{xk:c,authKey:l,counter:d,tagMask:u}=o(),f=[c,l,u,d];nn(a)||f.push(a=Ei(a));let h=a.subarray(0,-n),g=a.subarray(-n),p=s(l,u,h);if(f.push(p),!g6(p,g))throw new Error("aes/gcm: invalid ghash tag");let I=kf(c,!1,d,h);return Wr(...f),I}}});HP={encrypt(r,e){if(e.length>=2**32)throw new Error("plaintext should be less than 4gb");let t=Mc(r);if(e.length===16)C6(t,e);else{let i=Et(e),n=i[0],s=i[1];for(let o=0,a=1;o<6;o++)for(let c=2;c<i.length;c+=2,a++){let{s0:l,s1:d,s2:u,s3:f}=Dn(t,n,s,i[c],i[c+1]);n=l,s=d^LP(a),i[c]=u,i[c+1]=f}i[0]=n,i[1]=s}t.fill(0)},decrypt(r,e){if(e.length-8>=2**32)throw new Error("ciphertext should be less than 4gb");let t=VB(r),i=e.length/8-1;if(i===1)E6(t,e);else{let n=Et(e),s=n[0],o=n[1];for(let a=0,c=i*6;a<6;a++)for(let l=i*2;l>=1;l-=2,c--){o^=LP(c);let{s0:d,s1:u,s2:f,s3:h}=AI(t,s,o,n[l],n[l+1]);s=d,o=u,n[l]=f,n[l+1]=h}n[0]=s,n[1]=o}t.fill(0)}},KP=new Uint8Array(8).fill(166),B6=eA({blockSize:8},r=>({encrypt(e){if(!e.length||e.length%8!==0)throw new Error("invalid plaintext length");if(e.length===8)throw new Error("8-byte keys not allowed in AESKW, use AESKWP instead");let t=NV(KP,e);return HP.encrypt(r,t),t},decrypt(e){if(e.length%8!==0||e.length<24)throw new Error("invalid ciphertext length");let t=Ei(e);if(HP.decrypt(r,t),!g6(t.subarray(0,8),KP))throw new Error("integrity check failed");return t.subarray(0,8).fill(0),t.subarray(8)}})),GP={expandKeyLE:Mc,expandKeyDecLE:VB,encrypt:Dn,decrypt:AI,encryptBlock:C6,decryptBlock:E6,ctrCounter:I6,ctr32:kf};hd=F.getWebCrypto();Dy={x25519:F.encodeUTF8("OpenPGP X25519"),x448:F.encodeUTF8("OpenPGP X448")};rY=Object.freeze({__proto__:null,decrypt:k6,encrypt:v6,generate:YB,generateEphemeralEncryptionMaterial:gI,getPayloadSize:hI,recomputeSharedSecret:pI,validateParams:WB}),EE=F.getWebCrypto(),_y=F.getNodeCrypto(),ss={[m.curve.nistP256]:"P-256",[m.curve.nistP384]:"P-384",[m.curve.nistP521]:"P-521"},Ks=_y?_y.getCurves():[],Zn=_y?{[m.curve.secp256k1]:Ks.includes("secp256k1")?"secp256k1":void 0,[m.curve.nistP256]:Ks.includes("prime256v1")?"prime256v1":void 0,[m.curve.nistP384]:Ks.includes("secp384r1")?"secp384r1":void 0,[m.curve.nistP521]:Ks.includes("secp521r1")?"secp521r1":void 0,[m.curve.ed25519Legacy]:Ks.includes("ED25519")?"ED25519":void 0,[m.curve.curve25519Legacy]:Ks.includes("X25519")?"X25519":void 0,[m.curve.brainpoolP256r1]:Ks.includes("brainpoolP256r1")?"brainpoolP256r1":void 0,[m.curve.brainpoolP384r1]:Ks.includes("brainpoolP384r1")?"brainpoolP384r1":void 0,[m.curve.brainpoolP512r1]:Ks.includes("brainpoolP512r1")?"brainpoolP512r1":void 0}:{},S6={[m.curve.nistP256]:{oid:[6,8,42,134,72,206,61,3,1,7],keyType:m.publicKey.ecdsa,hash:m.hash.sha256,cipher:m.symmetric.aes128,node:Zn[m.curve.nistP256],web:ss[m.curve.nistP256],payloadSize:32,sharedSize:256,wireFormatLeadingByte:4},[m.curve.nistP384]:{oid:[6,5,43,129,4,0,34],keyType:m.publicKey.ecdsa,hash:m.hash.sha384,cipher:m.symmetric.aes192,node:Zn[m.curve.nistP384],web:ss[m.curve.nistP384],payloadSize:48,sharedSize:384,wireFormatLeadingByte:4},[m.curve.nistP521]:{oid:[6,5,43,129,4,0,35],keyType:m.publicKey.ecdsa,hash:m.hash.sha512,cipher:m.symmetric.aes256,node:Zn[m.curve.nistP521],web:ss[m.curve.nistP521],payloadSize:66,sharedSize:528,wireFormatLeadingByte:4},[m.curve.secp256k1]:{oid:[6,5,43,129,4,0,10],keyType:m.publicKey.ecdsa,hash:m.hash.sha256,cipher:m.symmetric.aes128,node:Zn[m.curve.secp256k1],payloadSize:32,wireFormatLeadingByte:4},[m.curve.ed25519Legacy]:{oid:[6,9,43,6,1,4,1,218,71,15,1],keyType:m.publicKey.eddsaLegacy,hash:m.hash.sha512,node:!1,payloadSize:32,wireFormatLeadingByte:64},[m.curve.curve25519Legacy]:{oid:[6,10,43,6,1,4,1,151,85,1,5,1],keyType:m.publicKey.ecdh,hash:m.hash.sha256,cipher:m.symmetric.aes128,node:!1,payloadSize:32,wireFormatLeadingByte:64},[m.curve.brainpoolP256r1]:{oid:[6,9,43,36,3,3,2,8,1,1,7],keyType:m.publicKey.ecdsa,hash:m.hash.sha256,cipher:m.symmetric.aes128,node:Zn[m.curve.brainpoolP256r1],payloadSize:32,wireFormatLeadingByte:4},[m.curve.brainpoolP384r1]:{oid:[6,9,43,36,3,3,2,8,1,1,11],keyType:m.publicKey.ecdsa,hash:m.hash.sha384,cipher:m.symmetric.aes192,node:Zn[m.curve.brainpoolP384r1],payloadSize:48,wireFormatLeadingByte:4},[m.curve.brainpoolP512r1]:{oid:[6,9,43,36,3,3,2,8,1,1,13],keyType:m.publicKey.ecdsa,hash:m.hash.sha512,cipher:m.symmetric.aes256,node:Zn[m.curve.brainpoolP512r1],payloadSize:64,wireFormatLeadingByte:4}},bi=class{constructor(e){try{this.name=e instanceof to?e.getName():m.write(m.curve,e)}catch{throw new ft("Unknown curve")}let t=S6[this.name];this.keyType=t.keyType,this.oid=t.oid,this.hash=t.hash,this.cipher=t.cipher,this.node=t.node,this.web=t.web,this.payloadSize=t.payloadSize,this.sharedSize=t.sharedSize,this.wireFormatLeadingByte=t.wireFormatLeadingByte,this.web&&F.getWebCrypto()?this.type="web":this.node&&F.getNodeCrypto()?this.type="node":this.name===m.curve.curve25519Legacy?this.type="curve25519Legacy":this.name===m.curve.ed25519Legacy&&(this.type="ed25519Legacy")}async genKeyPair(){switch(this.type){case"web":try{return await iY(this.name,this.wireFormatLeadingByte)}catch(e){return F.printDebugError("Browser did not support generating ec key "+e.message),zP(this.name)}case"node":return nY(this.name);case"curve25519Legacy":{let{k:e,A:t}=await YB(m.publicKey.x25519),i=e.slice().reverse();return i[0]=i[0]&127|64,i[31]&=248,{publicKey:F.concatUint8Array([new Uint8Array([this.wireFormatLeadingByte]),t]),privateKey:i}}case"ed25519Legacy":{let{seed:e,A:t}=await qB(m.publicKey.ed25519);return{publicKey:F.concatUint8Array([new Uint8Array([this.wireFormatLeadingByte]),t]),privateKey:e}}default:return zP(this.name)}}};Fy=F.getWebCrypto(),P6=F.getNodeCrypto();dY=Object.freeze({__proto__:null,sign:ZB,validateParams:sY,verify:e1});uY=Object.freeze({__proto__:null,sign:T6,validateParams:R6,verify:U6});xY=Object.freeze({__proto__:null,decrypt:M6,encrypt:O6,validateParams:hY}),CY=Object.freeze({__proto__:null,CurveWithOID:bi,ecdh:xY,ecdhX:rY,ecdsa:dY,eddsa:TV,eddsaLegacy:uY,generate:py,getPreferredHashAlgo:D6}),my=BigInt(0),Sf=BigInt(1);Py=class{constructor(e){e&&(this.data=e)}read(e){if(e.length>=1){let t=e[0];if(e.length>=1+t)return this.data=e.subarray(1,1+t),1+this.data.length}throw new Error("Invalid symmetric key")}write(){return F.concatUint8Array([new Uint8Array([this.data.length]),this.data])}},Ty=class{constructor(e){if(e){let{hash:t,cipher:i}=e;this.hash=t,this.cipher=i}else this.hash=null,this.cipher=null}read(e){if(e.length<4||e[0]!==3||e[1]!==1)throw new ft("Cannot read KDFParams");return this.hash=e[2],this.cipher=e[3],4}write(){return new Uint8Array([3,1,this.hash,this.cipher])}},Uy=class r{static fromObject({wrappedKey:e,algorithm:t}){let i=new r;return i.wrappedKey=e,i.algorithm=t,i}read(e){let t=0,i=e[t++];this.algorithm=i%2?e[t++]:null,i-=i%2,this.wrappedKey=F.readExactSubarray(e,t,t+i),t+=i}write(){return F.concatUint8Array([this.algorithm?new Uint8Array([this.wrappedKey.length+1,this.algorithm]):new Uint8Array([this.wrappedKey.length]),this.wrappedKey])}};yy=F.getWebCrypto(),Uf=F.getNodeCrypto(),Bc=Uf?Uf.getCiphers():[],yI={idea:Bc.includes("idea-cfb")?"idea-cfb":void 0,tripledes:Bc.includes("des-ede3-cfb")?"des-ede3-cfb":void 0,cast5:Bc.includes("cast5-cfb")?"cast5-cfb":void 0,blowfish:Bc.includes("bf-cfb")?"bf-cfb":void 0,aes128:Bc.includes("aes-128-cfb")?"aes-128-cfb":void 0,aes192:Bc.includes("aes-192-cfb")?"aes-192-cfb":void 0,aes256:Bc.includes("aes-256-cfb")?"aes-256-cfb":void 0};Ry=class{constructor(e,t,i){let{blockSize:n}=It(e);this.key=t,this.iv=i,this.prevBlock=i.slice(),this.nextBlock=new Uint8Array(n),this.i=0,this.blockSize=n,this.zeroBlock=new Uint8Array(this.blockSize)}static isSupported(e){let{keySize:t}=It(e);return yy.importKey("raw",new Uint8Array(t),"aes-cbc",!1,["encrypt"]).then(()=>!0,()=>!1)}async _runCBC(e,t){let i="AES-CBC";this.keyRef=this.keyRef||await yy.importKey("raw",this.key,i,!1,["encrypt"]);let n=await yy.encrypt({name:i,iv:t||this.zeroBlock},this.keyRef,e);return new Uint8Array(n).subarray(0,e.length)}async encryptChunk(e){let t=this.nextBlock.length-this.i,i=e.subarray(0,t);if(this.nextBlock.set(i,this.i),this.i+e.length>=2*this.blockSize){let s=(e.length-t)%this.blockSize,o=F.concatUint8Array([this.nextBlock,e.subarray(t,e.length-s)]),a=F.concatUint8Array([this.prevBlock,o.subarray(0,o.length-this.blockSize)]),c=await this._runCBC(a);return iy(c,o),this.prevBlock=c.slice(-this.blockSize),s>0&&this.nextBlock.set(e.subarray(-s)),this.i=s,c}this.i+=i.length;let n;if(this.i===this.nextBlock.length){let s=this.nextBlock;n=await this._runCBC(this.prevBlock),iy(n,s),this.prevBlock=n.slice(),this.i=0;let o=e.subarray(i.length);this.nextBlock.set(o,this.i),this.i+=o.length}else n=new Uint8Array;return n}async finish(){let e;if(this.i===0)e=new Uint8Array;else{this.nextBlock=this.nextBlock.subarray(0,this.i);let t=this.nextBlock,i=await this._runCBC(this.prevBlock);iy(i,t),e=i.subarray(0,t.length)}return this.clearSensitiveData(),e}clearSensitiveData(){this.nextBlock.fill(0),this.prevBlock.fill(0),this.keyRef=null,this.key=null}async encrypt(e){let i=(await this._runCBC(F.concatUint8Array([new Uint8Array(this.blockSize),e]),this.iv)).subarray(0,e.length);return iy(i,e),this.clearSensitiveData(),i}},Ny=class{constructor(e,t,i,n){this.forEncryption=e;let{blockSize:s}=It(t);this.key=GP.expandKeyLE(i),n.byteOffset%4!==0&&(n=n.slice()),this.prevBlock=bE(n),this.nextBlock=new Uint8Array(s),this.i=0,this.blockSize=s}_runCFB(e){let t=bE(e),i=new Uint8Array(e.length),n=bE(i);for(let s=0;s+4<=n.length;s+=4){let{s0:o,s1:a,s2:c,s3:l}=GP.encrypt(this.key,this.prevBlock[0],this.prevBlock[1],this.prevBlock[2],this.prevBlock[3]);n[s+0]=t[s+0]^o,n[s+1]=t[s+1]^a,n[s+2]=t[s+2]^c,n[s+3]=t[s+3]^l,this.prevBlock=(this.forEncryption?n:t).slice(s,s+4)}return i}async processChunk(e){let t=this.nextBlock.length-this.i,i=e.subarray(0,t);if(this.nextBlock.set(i,this.i),this.i+e.length>=2*this.blockSize){let s=(e.length-t)%this.blockSize,o=F.concatUint8Array([this.nextBlock,e.subarray(t,e.length-s)]),a=this._runCFB(o);return s>0&&this.nextBlock.set(e.subarray(-s)),this.i=s,a}this.i+=i.length;let n;if(this.i===this.nextBlock.length){n=this._runCFB(this.nextBlock),this.i=0;let s=e.subarray(i.length);this.nextBlock.set(s,this.i),this.i+=s.length}else n=new Uint8Array;return n}async finish(){let e;return this.i===0?e=new Uint8Array:e=this._runCFB(this.nextBlock).subarray(0,this.i),this.clearSensitiveData(),e}clearSensitiveData(){this.nextBlock.fill(0),this.prevBlock.fill(0),this.key.fill(0)}};bE=r=>new Uint32Array(r.buffer,r.byteOffset,Math.floor(r.byteLength/4));YP=F.getWebCrypto(),NY=F.getNodeCrypto(),ro=16;Iy=new Uint8Array(ro);XP=F.getWebCrypto(),LY=F.getNodeCrypto(),HY=F.getNodeBuffer(),ao=16,KY=ao,od=ao,ZP=new Uint8Array(ao),aB=new Uint8Array(ao);aB[ao-1]=1;cB=new Uint8Array(ao);cB[ao-1]=2;rA.getNonce=function(r,e){let t=r.slice();for(let i=0;i<e.length;i++)t[8+i]^=e[i];return t};rA.blockLength=ao;rA.ivLength=KY;rA.tagLength=od;ci=16,H6=15,Aa=16;mf=new Uint8Array(ci),JY=new Uint8Array([1]);iA.getNonce=function(r,e){let t=r.slice();for(let i=0;i<e.length;i++)t[7+i]^=e[i];return t};iA.blockLength=ci;iA.ivLength=H6;iA.tagLength=Aa;vE=F.getWebCrypto(),t5=F.getNodeCrypto(),r5=F.getNodeBuffer(),jY=16,$Y=12,ad=16,kE="AES-GCM";Cd.getNonce=function(r,e){let t=r.slice();for(let i=0;i<e.length;i++)t[4+i]^=e[i];return t};Cd.blockLength=jY;Cd.ivLength=$Y;Cd.tagLength=ad;XY=2,ZY=19,eW=16,i5=30,gd=class r extends Error{constructor(...e){super(...e),Error.captureStackTrace&&Error.captureStackTrace(this,r),this.name="Argon2OutOfMemoryError"}},tW=2<<19,lB=class{constructor(e=pe){let{passes:t,parallelism:i,memoryExponent:n}=e.s2kArgon2Params;this.type="argon2",this.salt=null,this.t=t,this.p=i,this.encodedM=n}generateSalt(){this.salt=Ur(eW)}read(e){let t=0;return this.salt=e.subarray(t,t+16),t+=16,this.t=e[t++],this.p=e[t++],this.encodedM=e[t++],t}write(){let e=[new Uint8Array([m.write(m.s2k,this.type)]),this.salt,new Uint8Array([this.t,this.p,this.encodedM])];return F.concatUint8Array(e)}async produceKey(e,t,i){if(i.maxArgon2MemoryExponent>i5)throw new gd(`'config.maxArgon2MemoryExponent' exceeds the max allowed value of ${i5}`);if(this.encodedM>i.maxArgon2MemoryExponent)throw new gd("Argon2 required memory exceeds `config.maxArgon2MemoryExponent`");let n=1<<this.encodedM;try{sy=sy||(await Promise.resolve().then(function(){return $ee})).default,yf=yf||sy();let s=await yf,o=F.encodeUTF8(e),a=s({version:ZY,type:XY,password:o,salt:this.salt,tagLength:t,memorySize:n,parallelism:this.p,passes:this.t});return n>tW&&(yf=sy(),yf.catch(()=>{})),a}catch(s){throw s.message&&(s.message.includes("Unable to grow instance memory")||s.message.includes("failed to grow memory")||s.message.includes("WebAssembly.Memory.grow")||s.message.includes("Out of memory"))?new gd("Could not allocate required memory for Argon2"):s}}},dB=class{constructor(e,t=pe){this.algorithm=m.hash.sha256,this.type=m.read(m.s2k,e),this.c=t.s2kIterationCountByte,this.salt=null}generateSalt(){switch(this.type){case"salted":case"iterated":this.salt=Ur(8)}}getCount(){return 16+(this.c&15)<<(this.c>>4)+6}read(e){let t=0;switch(this.algorithm=e[t++],this.type){case"simple":break;case"salted":this.salt=e.subarray(t,t+8),t+=8;break;case"iterated":this.salt=e.subarray(t,t+8),t+=8,this.c=e[t++];break;case"gnu":if(F.uint8ArrayToString(e.subarray(t,t+3))==="GNU")if(t+=3,1e3+e[t++]===1001)this.type="gnu-dummy";else throw new ft("Unknown s2k gnu protection mode.");else throw new ft("Unknown s2k type.");break;default:throw new ft("Unknown s2k type.")}return t}write(){if(this.type==="gnu-dummy")return new Uint8Array([101,0,...F.stringToUint8Array("GNU"),1]);let e=[new Uint8Array([m.write(m.s2k,this.type),this.algorithm])];switch(this.type){case"simple":break;case"salted":e.push(this.salt);break;case"iterated":e.push(this.salt),e.push(new Uint8Array([this.c]));break;case"gnu":throw new Error("GNU s2k type not supported.");default:throw new Error("Unknown s2k type.")}return F.concatUint8Array(e)}async produceKey(e,t,i){e=F.encodeUTF8(e);let n=[],s=0,o=0;for(;s<t;){let a;switch(this.type){case"simple":a=F.concatUint8Array([new Uint8Array(o),e]);break;case"salted":a=F.concatUint8Array([new Uint8Array(o),this.salt,e]);break;case"iterated":{let l=F.concatUint8Array([this.salt,e]),d=l.length,u=Math.max(this.getCount(),d);a=new Uint8Array(o+u),a.set(l,o);for(let f=o+d;f<u;f+=d,d*=2)a.copyWithin(f,o,f);break}case"gnu":throw new Error("GNU s2k type not supported.");default:throw new Error("Unknown s2k type.")}let c=await cs(this.algorithm,a);n.push(c),s+=c.length,o++}return F.concatUint8Array(n).subarray(0,t)}},rW=new Set([m.s2k.argon2,m.s2k.iterated]);iW=W5("/");try{pd=iW("worker_threads"),nW=pd.Worker,sW=pd.isMarkedAsUntransferable}catch{}Gt=Uint8Array,Mi=Uint16Array,t1=Int32Array,wI=new Gt([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,0,0,0]),xI=new Gt([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,0,0]),uB=new Gt([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),G6=function(r,e){for(var t=new Mi(31),i=0;i<31;++i)t[i]=e+=1<<r[i-1];for(var n=new t1(t[30]),i=1;i<30;++i)for(var s=t[i];s<t[i+1];++s)n[s]=s-t[i]<<5|i;return{b:t,r:n}},pd=G6(wI,2),z6=pd.b,fB=pd.r;z6[28]=258,fB[258]=28;J6=G6(xI,0),oW=J6.b,n5=J6.r,AB=new Mi(32768);for(ut=0;ut<32768;++ut)Gs=(ut&43690)>>1|(ut&21845)<<1,Gs=(Gs&52428)>>2|(Gs&13107)<<2,Gs=(Gs&61680)>>4|(Gs&3855)<<4,AB[ut]=((Gs&65280)>>8|(Gs&255)<<8)>>1;os=(function(r,e,t){for(var i=r.length,n=0,s=new Mi(e);n<i;++n)r[n]&&++s[r[n]-1];var o=new Mi(e);for(n=1;n<e;++n)o[n]=o[n-1]+s[n-1]<<1;var a;if(t){a=new Mi(1<<e);var c=15-e;for(n=0;n<i;++n)if(r[n])for(var l=n<<4|r[n],d=e-r[n],u=o[r[n]-1]++<<d,f=u|(1<<d)-1;u<=f;++u)a[AB[u]>>c]=l}else for(a=new Mi(i),n=0;n<i;++n)r[n]&&(a[n]=AB[o[r[n]-1]++]>>15-r[n]);return a}),xa=new Gt(288);for(ut=0;ut<144;++ut)xa[ut]=8;for(ut=144;ut<256;++ut)xa[ut]=9;for(ut=256;ut<280;++ut)xa[ut]=7;for(ut=280;ut<288;++ut)xa[ut]=8;Nf=new Gt(32);for(ut=0;ut<32;++ut)Nf[ut]=5;aW=os(xa,9,0),cW=os(xa,9,1),lW=os(Nf,5,0),dW=os(Nf,5,1),SE=function(r){for(var e=r[0],t=1;t<r.length;++t)r[t]>e&&(e=r[t]);return e},En=function(r,e,t){var i=e/8|0;return(r[i]|r[i+1]<<8)>>(e&7)&t},DE=function(r,e){var t=e/8|0;return(r[t]|r[t+1]<<8|r[t+2]<<16)>>(e&7)},r1=function(r){return(r+7)/8|0},_f=function(r,e,t){return(e==null||e<0)&&(e=0),(t==null||t>r.length)&&(t=r.length),new Gt(r.subarray(e,t))},uW=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],Er=function(r,e,t){var i=new Error(e||uW[r]);if(i.code=r,Error.captureStackTrace&&Error.captureStackTrace(i,Er),!t)throw i;return i},fW=function(r,e,t,i){var n=r.length,s=0;if(!n||e.f&&!e.l)return t||new Gt(0);var o=!t,a=o||e.i!=2,c=e.i;o&&(t=new Gt(n*3));var l=function(qe){var _e=t.length;if(qe>_e){var se=new Gt(Math.max(_e*2,qe));se.set(t),t=se}},d=e.f||0,u=e.p||0,f=e.b||0,h=e.l,g=e.d,p=e.m,I=e.n,y=n*8;do{if(!h){d=En(r,u,1);var w=En(r,u+1,3);if(u+=3,w)if(w==1)h=cW,g=dW,p=9,I=5;else if(w==2){var _=En(r,u,31)+257,R=En(r,u+10,15)+4,U=_+En(r,u+5,31)+1;u+=14;for(var T=new Gt(U),D=new Gt(19),B=0;B<R;++B)D[uB[B]]=En(r,u+B*3,7);u+=R*3;for(var Q=SE(D),v=(1<<Q)-1,E=os(D,Q,1),B=0;B<U;){var P=E[En(r,u,v)];u+=P&15;var C=P>>4;if(C<16)T[B++]=C;else{var N=0,J=0;for(C==16?(J=3+En(r,u,3),u+=2,N=T[B-1]):C==17?(J=3+En(r,u,7),u+=3):C==18&&(J=11+En(r,u,127),u+=7);J--;)T[B++]=N}}var z=T.subarray(0,_),L=T.subarray(_);p=SE(z),I=SE(L),h=os(z,p,1),g=os(L,I,1)}else Er(1);else{var C=r1(u)+4,b=r[C-4]|r[C-3]<<8,x=C+b;if(x>n){c&&Er(0);break}a&&l(f+b),t.set(r.subarray(C,x),f),e.b=f+=b,e.p=u=x*8,e.f=d;continue}if(u>y){c&&Er(0);break}}a&&l(f+131072);for(var G=(1<<p)-1,K=(1<<I)-1,j=u;;j=u){var N=h[DE(r,u)&G],te=N>>4;if(u+=N&15,u>y){c&&Er(0);break}if(N||Er(2),te<256)t[f++]=te;else if(te==256){j=u,h=null;break}else{var re=te-254;if(te>264){var B=te-257,ee=wI[B];re=En(r,u,(1<<ee)-1)+z6[B],u+=ee}var Z=g[DE(r,u)&K],me=Z>>4;Z||Er(3),u+=Z&15;var L=oW[me];if(me>3){var ee=xI[me];L+=DE(r,u)&(1<<ee)-1,u+=ee}if(u>y){c&&Er(0);break}a&&l(f+131072);var le=f+re;if(f<L){var Ae=s-L,ve=Math.min(L,le);for(Ae+f<0&&Er(3);f<ve;++f)t[f]=i[Ae+f]}for(;f<le;++f)t[f]=t[f-L]}}e.l=h,e.p=j,e.b=f,e.f=d,h&&(d=1,e.m=p,e.d=g,e.n=I)}while(!d);return f!=t.length&&o?_f(t,0,f):t.subarray(0,f)},zs=function(r,e,t){t<<=e&7;var i=e/8|0;r[i]|=t,r[i+1]|=t>>8},If=function(r,e,t){t<<=e&7;var i=e/8|0;r[i]|=t,r[i+1]|=t>>8,r[i+2]|=t>>16},QE=function(r,e){for(var t=[],i=0;i<r.length;++i)r[i]&&t.push({s:i,f:r[i]});var n=t.length,s=t.slice();if(!n)return{t:Oy,l:0};if(n==1){var o=new Gt(t[0].s+1);return o[t[0].s]=1,{t:o,l:1}}t.sort(function(x,_){return x.f-_.f}),t.push({s:-1,f:25001});var a=t[0],c=t[1],l=0,d=1,u=2;for(t[0]={s:-1,f:a.f+c.f,l:a,r:c};d!=n-1;)a=t[t[l].f<t[u].f?l++:u++],c=t[l!=d&&t[l].f<t[u].f?l++:u++],t[d++]={s:-1,f:a.f+c.f,l:a,r:c};for(var f=s[0].s,i=1;i<n;++i)s[i].s>f&&(f=s[i].s);var h=new Mi(f+1),g=hB(t[d-1],h,0);if(g>e){var i=0,p=0,I=g-e,y=1<<I;for(s.sort(function(_,R){return h[R.s]-h[_.s]||_.f-R.f});i<n;++i){var w=s[i].s;if(h[w]>e)p+=y-(1<<g-h[w]),h[w]=e;else break}for(p>>=I;p>0;){var C=s[i].s;h[C]<e?p-=1<<e-h[C]++-1:++i}for(;i>=0&&p;--i){var b=s[i].s;h[b]==e&&(--h[b],++p)}g=e}return{t:new Gt(h),l:g}},hB=function(r,e,t){return r.s==-1?Math.max(hB(r.l,e,t+1),hB(r.r,e,t+1)):e[r.s]=t},s5=function(r){for(var e=r.length;e&&!r[--e];);for(var t=new Mi(++e),i=0,n=r[0],s=1,o=function(c){t[i++]=c},a=1;a<=e;++a)if(r[a]==n&&a!=e)++s;else{if(!n&&s>2){for(;s>138;s-=138)o(32754);s>2&&(o(s>10?s-11<<5|28690:s-3<<5|12305),s=0)}else if(s>3){for(o(n),--s;s>6;s-=6)o(8304);s>2&&(o(s-3<<5|8208),s=0)}for(;s--;)o(n);s=1,n=r[a]}return{c:t.subarray(0,i),n:e}},wf=function(r,e){for(var t=0,i=0;i<e.length;++i)t+=r[i]*e[i];return t},i1=function(r,e,t){var i=t.length,n=r1(e+2);r[n]=i&255,r[n+1]=i>>8,r[n+2]=r[n]^255,r[n+3]=r[n+1]^255;for(var s=0;s<i;++s)r[n+s+4]=t[s];return(n+4+i)*8},o5=function(r,e,t,i,n,s,o,a,c,l,d){zs(e,d++,t),++n[256];for(var u=QE(n,15),f=u.t,h=u.l,g=QE(s,15),p=g.t,I=g.l,y=s5(f),w=y.c,C=y.n,b=s5(p),x=b.c,_=b.n,R=new Mi(19),U=0;U<w.length;++U)++R[w[U]&31];for(var U=0;U<x.length;++U)++R[x[U]&31];for(var T=QE(R,7),D=T.t,B=T.l,Q=19;Q>4&&!D[uB[Q-1]];--Q);var v=l+5<<3,E=wf(n,xa)+wf(s,Nf)+o,P=wf(n,f)+wf(s,p)+o+14+3*Q+wf(R,D)+2*R[16]+3*R[17]+7*R[18];if(c>=0&&v<=E&&v<=P)return i1(e,d,r.subarray(c,c+l));var N,J,z,L;if(zs(e,d,1+(P<E)),d+=2,P<E){N=os(f,h,0),J=f,z=os(p,I,0),L=p;var G=os(D,B,0);zs(e,d,C-257),zs(e,d+5,_-1),zs(e,d+10,Q-4),d+=14;for(var U=0;U<Q;++U)zs(e,d+3*U,D[uB[U]]);d+=3*Q;for(var K=[w,x],j=0;j<2;++j)for(var te=K[j],U=0;U<te.length;++U){var re=te[U]&31;zs(e,d,G[re]),d+=D[re],re>15&&(zs(e,d,te[U]>>5&127),d+=te[U]>>12)}}else N=aW,J=xa,z=lW,L=Nf;for(var U=0;U<a;++U){var ee=i[U];if(ee>255){var re=ee>>18&31;If(e,d,N[re+257]),d+=J[re+257],re>7&&(zs(e,d,ee>>23&31),d+=wI[re]);var Z=ee&31;If(e,d,z[Z]),d+=L[Z],Z>3&&(If(e,d,ee>>5&8191),d+=xI[Z])}else If(e,d,N[ee]),d+=J[ee]}return If(e,d,N[256]),d+J[256]},AW=new t1([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),Oy=new Gt(0),hW=function(r,e,t,i,n,s){var o=s.z||r.length,a=new Gt(i+o+5*(1+Math.ceil(o/7e3))+n),c=a.subarray(i,a.length-n),l=s.l,d=(s.r||0)&7;if(e){d&&(c[0]=s.r>>3);for(var u=AW[e-1],f=u>>13,h=u&8191,g=(1<<t)-1,p=s.p||new Mi(32768),I=s.h||new Mi(g+1),y=Math.ceil(t/3),w=2*y,C=function(it){return(r[it]^r[it+1]<<y^r[it+2]<<w)&g},b=new t1(25e3),x=new Mi(288),_=new Mi(32),R=0,U=0,T=s.i||0,D=0,B=s.w||0,Q=0;T+2<o;++T){var v=C(T),E=T&32767,P=I[v];if(p[E]=P,I[v]=E,B<=T){var N=o-T;if((R>7e3||D>24576)&&(N>423||!l)){d=o5(r,c,0,b,x,_,U,D,Q,T-Q,d),D=R=U=0,Q=T;for(var J=0;J<286;++J)x[J]=0;for(var J=0;J<30;++J)_[J]=0}var z=2,L=0,G=h,K=E-P&32767;if(N>2&&v==C(T-K))for(var j=Math.min(f,N)-1,te=Math.min(32767,T),re=Math.min(258,N);K<=te&&--G&&E!=P;){if(r[T+z]==r[T+z-K]){for(var ee=0;ee<re&&r[T+ee]==r[T+ee-K];++ee);if(ee>z){if(z=ee,L=K,ee>j)break;for(var Z=Math.min(K,ee-2),me=0,J=0;J<Z;++J){var le=T-K+J&32767,Ae=p[le],ve=le-Ae&32767;ve>me&&(me=ve,P=le)}}}E=P,P=p[E],K+=E-P&32767}if(L){b[D++]=268435456|fB[z]<<18|n5[L];var qe=fB[z]&31,_e=n5[L]&31;U+=wI[qe]+xI[_e],++x[257+qe],++_[_e],B=T+z,++R}else b[D++]=r[T],++x[r[T]]}}for(T=Math.max(T,B);T<o;++T)b[D++]=r[T],++x[r[T]];d=o5(r,c,l,b,x,_,U,D,Q,T-Q,d),l||(s.r=d&7|c[d/8|0]<<3,d-=7,s.h=I,s.p=p,s.i=T,s.w=B)}else{for(var T=s.w||0;T<o+l;T+=65535){var se=T+65535;se>=o&&(c[d/8|0]=l,se=o),d=i1(c,d+1,r.subarray(T,se))}s.i=o}return _f(a,0,i+r1(d)+n)},j6=function(){var r=1,e=0;return{p:function(t){for(var i=r,n=e,s=t.length|0,o=0;o!=s;){for(var a=Math.min(o+2655,s);o<a;++o)n+=i+=t[o];i=(i&65535)+15*(i>>16),n=(n&65535)+15*(n>>16)}r=i,e=n},d:function(){return r%=65521,e%=65521,(r&255)<<24|(r&65280)<<8|(e&255)<<8|e>>8}}},$6=function(r,e,t,i,n){if(!n&&(n={l:1},e.dictionary)){var s=e.dictionary.subarray(-32768),o=new Gt(s.length+r.length);o.set(s),o.set(r,s.length),r=o,n.w=s.length}return hW(r,e.level==null?6:e.level,e.mem==null?n.l?Math.ceil(Math.max(8,Math.min(13,Math.log(r.length)))*1.5):20:12+e.mem,t,i,n)},V6=function(r,e,t){for(;t;++e)r[e]=t,t>>>=8},gW=function(r,e){var t=e.level,i=t==0?0:t<6?1:t==9?3:2;if(r[0]=120,r[1]=i<<6|(e.dictionary&&32),r[1]|=31-(r[0]<<8|r[1])%31,e.dictionary){var n=j6();n.p(e.dictionary),V6(r,2,n.d())}},pW=function(r,e){return((r[0]&15)!=8||r[0]>>4>7||(r[0]<<8|r[1])%31)&&Er(6,"invalid zlib data"),(r[1]>>5&1)==+!e&&Er(6,"invalid zlib data: "+(r[1]&32?"need":"unexpected")+" dictionary"),(r[1]>>3&4)+2},wy=(function(){function r(e,t){if(typeof e=="function"&&(t=e,e={}),this.ondata=t,this.o=e||{},this.s={l:0,i:32768,w:32768,z:32768},this.b=new Gt(98304),this.o.dictionary){var i=this.o.dictionary.subarray(-32768);this.b.set(i,32768-i.length),this.s.i=32768-i.length}}return r.prototype.p=function(e,t){this.ondata($6(e,this.o,0,0,this.s),t)},r.prototype.push=function(e,t){this.ondata||Er(5),this.s.l&&Er(4);var i=e.length+this.s.z;if(i>this.b.length){if(i>2*this.b.length-32768){var n=new Gt(i&-32768);n.set(this.b.subarray(0,this.s.z)),this.b=n}var s=this.b.length-this.s.z;this.b.set(e.subarray(0,s),this.s.z),this.s.z=this.b.length,this.p(this.b,!1),this.b.set(this.b.subarray(-32768)),this.b.set(e.subarray(s),32768),this.s.z=e.length-s+32768,this.s.i=32766,this.s.w=32768}else this.b.set(e,this.s.z),this.s.z+=e.length;this.s.l=t&1,(this.s.z>this.s.w+8191||t)&&(this.p(this.b,t||!1),this.s.w=this.s.i,this.s.i-=2),t&&(this.s=this.o={},this.b=Oy)},r.prototype.flush=function(e){if(this.ondata||Er(5),this.s.l&&Er(4),this.p(this.b,!1),this.s.w=this.s.i,this.s.i-=2,e){var t=new Gt(6);t[0]=this.s.r>>3;var i=i1(t,this.s.r,Oy);this.s.r=0,this.ondata(t.subarray(0,i>>3),!1)}},r})(),xy=(function(){function r(e,t){typeof e=="function"&&(t=e,e={}),this.ondata=t;var i=e&&e.dictionary&&e.dictionary.subarray(-32768);this.s={i:0,b:i?i.length:0},this.o=new Gt(32768),this.p=new Gt(0),i&&this.o.set(i)}return r.prototype.e=function(e){if(this.ondata||Er(5),this.d&&Er(4),!this.p.length)this.p=e;else if(e.length){var t=new Gt(this.p.length+e.length);t.set(this.p),t.set(e,this.p.length),this.p=t}},r.prototype.c=function(e){this.s.i=+(this.d=e||!1);var t=this.s.b,i=fW(this.p,this.s,this.o);this.ondata(_f(i,t,this.s.b),this.d),this.o=_f(i,this.s.b-32768),this.s.b=this.o.length,this.p=_f(this.p,this.s.p/8|0),this.s.p&=7},r.prototype.push=function(e,t){this.e(e),this.c(t)},r})(),mW=(function(){function r(e,t){this.c=j6(),this.v=1,wy.call(this,e,t)}return r.prototype.push=function(e,t){this.c.p(e),wy.prototype.push.call(this,e,t)},r.prototype.p=function(e,t){var i=$6(e,this.o,this.v&&(this.o.dictionary?6:2),t&&4,this.s);this.v&&(gW(i,this.o),this.v=0),t&&V6(i,i.length-4,this.c.d()),this.ondata(i,t)},r.prototype.flush=function(e){wy.prototype.flush.call(this,e)},r})(),yW=(function(){function r(e,t){xy.call(this,e,t),this.v=e&&e.dictionary?2:1}return r.prototype.push=function(e,t){if(xy.prototype.e.call(this,e),this.v){if(this.p.length<6&&!t)return;this.p=this.p.subarray(pW(this.p,this.v-1)),this.v=0}t&&(this.p.length<4&&Er(6,"invalid zlib data"),this.p=this.p.subarray(0,-4)),xy.prototype.c.call(this,t)},r})(),IW=typeof TextDecoder<"u"&&new TextDecoder,wW=0;try{IW.decode(Oy,{stream:!0}),wW=1}catch{}Ca=class{static get tag(){return m.packet.literalData}constructor(e=new Date){this.format=m.literal.utf8,this.date=F.normalizeDate(e),this.text=null,this.data=null,this.filename=""}setText(e,t=m.literal.utf8){this.format=t,this.text=e,this.data=null}getText(e=!1){return(this.text===null||F.isStream(this.text))&&(this.text=F.decodeUTF8(F.nativeEOL(this.getBytes(e)))),this.text}setBytes(e,t){this.format=t,this.data=e,this.text=null}getBytes(e=!1){return this.data===null&&(this.data=F.canonicalizeEOL(F.encodeUTF8(this.text))),e?Df(this.data):this.data}setFilename(e){this.filename=e}getFilename(){return this.filename}async read(e){await aI(e,async t=>{let i=await t.readByte(),n=await t.readByte();this.filename=F.decodeUTF8(await t.readBytes(n)),this.date=F.readDate(await t.readBytes(4));let s=t.remainder();St(s)&&(s=await Xt(s)),this.setBytes(s,i)})}writeHeader(){let e=F.encodeUTF8(this.filename),t=new Uint8Array([e.length]),i=new Uint8Array([this.format]),n=F.writeDate(this.date);return F.concatUint8Array([i,t,e,n])}write(){let e=this.writeHeader(),t=this.getBytes();return F.concat([e,t])}},no=class r{constructor(){this.bytes=""}read(e){return this.bytes=F.uint8ArrayToString(e.subarray(0,8)),this.bytes.length}write(){return F.stringToUint8Array(this.bytes)}toHex(){return F.uint8ArrayToHex(F.stringToUint8Array(this.bytes))}equals(e,t=!1){return t&&(e.isWildcard()||this.isWildcard())||this.bytes===e.bytes}isNull(){return this.bytes===""}isWildcard(){return/^0+$/.test(this.toHex())}static mapToHex(e){return e.toHex()}static fromID(e){let t=new r;return t.read(F.hexToUint8Array(e)),t}static wildcard(){let e=new r;return e.read(new Uint8Array(8)),e}},xf=Symbol("verified"),a5="salt@notations.openpgpjs.org",xW=new Set([m.signatureSubpacket.issuerKeyID,m.signatureSubpacket.issuerFingerprint,m.signatureSubpacket.embeddedSignature]),Rr=class r{static get tag(){return m.packet.signature}constructor(){this.version=null,this.signatureType=null,this.hashAlgorithm=null,this.publicKeyAlgorithm=null,this.signatureData=null,this.unhashedSubpackets=[],this.unknownSubpackets=[],this.signedHashValue=null,this.salt=null,this.created=null,this.signatureExpirationTime=null,this.signatureNeverExpires=!0,this.exportable=null,this.trustLevel=null,this.trustAmount=null,this.regularExpression=null,this.revocable=null,this.keyExpirationTime=null,this.keyNeverExpires=null,this.preferredSymmetricAlgorithms=null,this.revocationKeyClass=null,this.revocationKeyAlgorithm=null,this.revocationKeyFingerprint=null,this.issuerKeyID=new no,this.rawNotations=[],this.notations={},this.preferredHashAlgorithms=null,this.preferredCompressionAlgorithms=null,this.keyServerPreferences=null,this.preferredKeyServer=null,this.isPrimaryUserID=null,this.policyURI=null,this.keyFlags=null,this.signersUserID=null,this.reasonForRevocationFlag=null,this.reasonForRevocationString=null,this.features=null,this.signatureTargetPublicKeyAlgorithm=null,this.signatureTargetHashAlgorithm=null,this.signatureTargetHash=null,this.embeddedSignature=null,this.issuerKeyVersion=null,this.issuerFingerprint=null,this.preferredAEADAlgorithms=null,this.preferredCipherSuites=null,this.revoked=null,this[xf]=null}read(e,t=pe){let i=0;if(this.version=e[i++],this.version===5&&!t.enableParsingV5Entities)throw new ft("Support for v5 entities is disabled; turn on `config.enableParsingV5Entities` if needed");if(this.version!==4&&this.version!==5&&this.version!==6)throw new ft(`Version ${this.version} of the signature packet is unsupported.`);if(this.signatureType=e[i++],this.publicKeyAlgorithm=e[i++],this.hashAlgorithm=e[i++],i+=this.readSubPackets(e.subarray(i,e.length),!0),!this.created)throw new Error("Missing signature creation time subpacket.");if(this.signatureData=e.subarray(0,i),i+=this.readSubPackets(e.subarray(i,e.length),!1),this.signedHashValue=e.subarray(i,i+2),i+=2,this.version===6){let a=e[i++];this.salt=e.subarray(i,i+a),i+=a}let n=e.subarray(i,e.length),{read:s,signatureParams:o}=VY(this.publicKeyAlgorithm,n);if(s<n.length)throw new Error("Error reading MPIs");this.params=o}writeParams(){return this.params instanceof Promise?Oc(async()=>xd(this.publicKeyAlgorithm,await this.params)):xd(this.publicKeyAlgorithm,this.params)}write(){let e=[];return e.push(this.signatureData),e.push(this.writeUnhashedSubPackets()),e.push(this.signedHashValue),this.version===6&&(e.push(new Uint8Array([this.salt.length])),e.push(this.salt)),e.push(this.writeParams()),F.concat(e)}async sign(e,t,i=new Date,n=!1,s){this.version=e.version,this.created=F.normalizeDate(i),this.issuerKeyVersion=e.version,this.issuerFingerprint=e.getFingerprintBytes(),this.issuerKeyID=e.getKeyID();let o=[new Uint8Array([this.version,this.signatureType,this.publicKeyAlgorithm,this.hashAlgorithm])];if(this.version===6){let d=_E(this.hashAlgorithm);if(this.salt===null)this.salt=Ur(d);else if(d!==this.salt.length)throw new Error("Provided salt does not have the required length")}else if(s.nonDeterministicSignaturesViaNotation)if(this.rawNotations.filter(({name:u})=>u===a5).length===0){let u=Ur(_E(this.hashAlgorithm));this.rawNotations.push({name:a5,value:u,humanReadable:!1,critical:!1})}else throw new Error("Unexpected existing salt notation");o.push(this.writeHashedSubPackets()),this.unhashedSubpackets=[],this.signatureData=F.concat(o);let a=this.toHash(this.signatureType,t,n),c=await this.hash(this.signatureType,t,a,n);this.signedHashValue=Tr(Fc(c),0,2);let l=async()=>WY(this.publicKeyAlgorithm,this.hashAlgorithm,e.publicParams,e.privateParams,a,await Xt(c));F.isStream(c)?this.params=l():(this.params=await l(),this[xf]=!0)}writeHashedSubPackets(){let e=m.signatureSubpacket,t=[],i;if(this.created===null)throw new Error("Missing signature creation time");t.push(yt(e.signatureCreationTime,!0,F.writeDate(this.created))),this.signatureExpirationTime!==null&&t.push(yt(e.signatureExpirationTime,!0,F.writeNumber(this.signatureExpirationTime,4))),this.exportable!==null&&t.push(yt(e.exportableCertification,!0,new Uint8Array([this.exportable?1:0]))),this.trustLevel!==null&&(i=new Uint8Array([this.trustLevel,this.trustAmount]),t.push(yt(e.trustSignature,!0,i))),this.regularExpression!==null&&t.push(yt(e.regularExpression,!0,this.regularExpression)),this.revocable!==null&&t.push(yt(e.revocable,!0,new Uint8Array([this.revocable?1:0]))),this.keyExpirationTime!==null&&t.push(yt(e.keyExpirationTime,!0,F.writeNumber(this.keyExpirationTime,4))),this.preferredSymmetricAlgorithms!==null&&(i=F.stringToUint8Array(F.uint8ArrayToString(this.preferredSymmetricAlgorithms)),t.push(yt(e.preferredSymmetricAlgorithms,!1,i))),this.revocationKeyClass!==null&&(i=new Uint8Array([this.revocationKeyClass,this.revocationKeyAlgorithm]),i=F.concat([i,this.revocationKeyFingerprint]),t.push(yt(e.revocationKey,!1,i))),!this.issuerKeyID.isNull()&&this.issuerKeyVersion<5&&t.push(yt(e.issuerKeyID,!1,this.issuerKeyID.write())),this.rawNotations.forEach(({name:o,value:a,humanReadable:c,critical:l})=>{i=[new Uint8Array([c?128:0,0,0,0])];let d=F.encodeUTF8(o);i.push(F.writeNumber(d.length,2)),i.push(F.writeNumber(a.length,2)),i.push(d),i.push(a),i=F.concat(i),t.push(yt(e.notationData,l,i))}),this.preferredHashAlgorithms!==null&&(i=F.stringToUint8Array(F.uint8ArrayToString(this.preferredHashAlgorithms)),t.push(yt(e.preferredHashAlgorithms,!1,i))),this.preferredCompressionAlgorithms!==null&&(i=F.stringToUint8Array(F.uint8ArrayToString(this.preferredCompressionAlgorithms)),t.push(yt(e.preferredCompressionAlgorithms,!1,i))),this.keyServerPreferences!==null&&(i=F.stringToUint8Array(F.uint8ArrayToString(this.keyServerPreferences)),t.push(yt(e.keyServerPreferences,!1,i))),this.preferredKeyServer!==null&&t.push(yt(e.preferredKeyServer,!1,F.encodeUTF8(this.preferredKeyServer))),this.isPrimaryUserID!==null&&t.push(yt(e.primaryUserID,!1,new Uint8Array([this.isPrimaryUserID?1:0]))),this.policyURI!==null&&t.push(yt(e.policyURI,!1,F.encodeUTF8(this.policyURI))),this.keyFlags!==null&&(i=F.stringToUint8Array(F.uint8ArrayToString(this.keyFlags)),t.push(yt(e.keyFlags,!0,i))),this.signersUserID!==null&&t.push(yt(e.signersUserID,!1,F.encodeUTF8(this.signersUserID))),this.reasonForRevocationFlag!==null&&(i=F.stringToUint8Array(String.fromCharCode(this.reasonForRevocationFlag)+this.reasonForRevocationString),t.push(yt(e.reasonForRevocation,!0,i))),this.features!==null&&(i=F.stringToUint8Array(F.uint8ArrayToString(this.features)),t.push(yt(e.features,!1,i))),this.signatureTargetPublicKeyAlgorithm!==null&&(i=[new Uint8Array([this.signatureTargetPublicKeyAlgorithm,this.signatureTargetHashAlgorithm])],i.push(F.stringToUint8Array(this.signatureTargetHash)),i=F.concat(i),t.push(yt(e.signatureTarget,!0,i))),this.embeddedSignature!==null&&t.push(yt(e.embeddedSignature,!0,this.embeddedSignature.write())),this.issuerFingerprint!==null&&(i=[new Uint8Array([this.issuerKeyVersion]),this.issuerFingerprint],i=F.concat(i),t.push(yt(e.issuerFingerprint,this.version>=5,i))),this.preferredAEADAlgorithms!==null&&(i=F.stringToUint8Array(F.uint8ArrayToString(this.preferredAEADAlgorithms)),t.push(yt(e.preferredAEADAlgorithms,!1,i))),this.preferredCipherSuites!==null&&(i=new Uint8Array([].concat(...this.preferredCipherSuites)),t.push(yt(e.preferredCipherSuites,!1,i)));let n=F.concat(t),s=F.writeNumber(n.length,this.version===6?4:2);return F.concat([s,n])}writeUnhashedSubPackets(){let e=this.unhashedSubpackets.map(({type:n,critical:s,body:o})=>yt(n,s,o)),t=F.concat(e),i=F.writeNumber(t.length,this.version===6?4:2);return F.concat([i,t])}readSubPacket(e,t=!0){let i=0,n=!!(e[i]&128),s=e[i]&127;if(i++,!(!t&&(this.unhashedSubpackets.push({type:s,critical:n,body:e.subarray(i,e.length)}),!xW.has(s))))switch(s){case m.signatureSubpacket.signatureCreationTime:this.created=F.readDate(e.subarray(i,e.length));break;case m.signatureSubpacket.signatureExpirationTime:{let o=F.readNumber(e.subarray(i,e.length));this.signatureNeverExpires=o===0,this.signatureExpirationTime=o;break}case m.signatureSubpacket.exportableCertification:this.exportable=e[i++]===1;break;case m.signatureSubpacket.trustSignature:this.trustLevel=e[i++],this.trustAmount=e[i++];break;case m.signatureSubpacket.regularExpression:this.regularExpression=e[i];break;case m.signatureSubpacket.revocable:this.revocable=e[i++]===1;break;case m.signatureSubpacket.keyExpirationTime:{let o=F.readNumber(e.subarray(i,e.length));this.keyExpirationTime=o,this.keyNeverExpires=o===0;break}case m.signatureSubpacket.preferredSymmetricAlgorithms:this.preferredSymmetricAlgorithms=[...e.subarray(i,e.length)];break;case m.signatureSubpacket.revocationKey:this.revocationKeyClass=e[i++],this.revocationKeyAlgorithm=e[i++],this.revocationKeyFingerprint=e.subarray(i,i+20);break;case m.signatureSubpacket.issuerKeyID:if(this.version===4)this.issuerKeyID.read(e.subarray(i,e.length));else if(t)throw new Error("Unexpected Issuer Key ID subpacket");break;case m.signatureSubpacket.notationData:{let o=!!(e[i]&128);i+=4;let a=F.readNumber(e.subarray(i,i+2));i+=2;let c=F.readNumber(e.subarray(i,i+2));i+=2;let l=F.decodeUTF8(e.subarray(i,i+a)),d=e.subarray(i+a,i+a+c);this.rawNotations.push({name:l,humanReadable:o,value:d,critical:n}),o&&(this.notations[l]=F.decodeUTF8(d));break}case m.signatureSubpacket.preferredHashAlgorithms:this.preferredHashAlgorithms=[...e.subarray(i,e.length)];break;case m.signatureSubpacket.preferredCompressionAlgorithms:this.preferredCompressionAlgorithms=[...e.subarray(i,e.length)];break;case m.signatureSubpacket.keyServerPreferences:this.keyServerPreferences=[...e.subarray(i,e.length)];break;case m.signatureSubpacket.preferredKeyServer:this.preferredKeyServer=F.decodeUTF8(e.subarray(i,e.length));break;case m.signatureSubpacket.primaryUserID:this.isPrimaryUserID=e[i++]!==0;break;case m.signatureSubpacket.policyURI:this.policyURI=F.decodeUTF8(e.subarray(i,e.length));break;case m.signatureSubpacket.keyFlags:this.keyFlags=[...e.subarray(i,e.length)];break;case m.signatureSubpacket.signersUserID:this.signersUserID=F.decodeUTF8(e.subarray(i,e.length));break;case m.signatureSubpacket.reasonForRevocation:this.reasonForRevocationFlag=e[i++],this.reasonForRevocationString=F.decodeUTF8(e.subarray(i,e.length));break;case m.signatureSubpacket.features:this.features=[...e.subarray(i,e.length)];break;case m.signatureSubpacket.signatureTarget:{this.signatureTargetPublicKeyAlgorithm=e[i++],this.signatureTargetHashAlgorithm=e[i++];let o=gr(this.signatureTargetHashAlgorithm);this.signatureTargetHash=F.uint8ArrayToString(e.subarray(i,i+o));break}case m.signatureSubpacket.embeddedSignature:this.embeddedSignature=new r,this.embeddedSignature.read(e.subarray(i,e.length));break;case m.signatureSubpacket.issuerFingerprint:this.issuerKeyVersion=e[i++],this.issuerFingerprint=e.subarray(i,e.length),this.issuerKeyVersion>=5?this.issuerKeyID.read(this.issuerFingerprint):this.issuerKeyID.read(this.issuerFingerprint.subarray(-8));break;case m.signatureSubpacket.preferredAEADAlgorithms:this.preferredAEADAlgorithms=[...e.subarray(i,e.length)];break;case m.signatureSubpacket.preferredCipherSuites:this.preferredCipherSuites=[];for(let o=i;o<e.length;o+=2)this.preferredCipherSuites.push([e[o],e[o+1]]);break;default:this.unknownSubpackets.push({type:s,critical:n,body:e.subarray(i,e.length)});break}}readSubPackets(e,t=!0,i){let n=this.version===6?4:2,s=F.readNumber(e.subarray(0,n)),o=n;for(;o<2+s;){let a=d6(e.subarray(o,e.length));o+=a.offset,this.readSubPacket(e.subarray(o,o+a.len),t,i),o+=a.len}return o}toSign(e,t){let i=m.signature;switch(e){case i.binary:return t.text!==null?F.encodeUTF8(t.getText(!0)):t.getBytes(!0);case i.text:{let n=t.getBytes(!0);return F.canonicalizeEOL(n)}case i.standalone:return new Uint8Array(0);case i.certGeneric:case i.certPersona:case i.certCasual:case i.certPositive:case i.certRevocation:{let n,s;if(t.userID)s=180,n=t.userID;else if(t.userAttribute)s=209,n=t.userAttribute;else throw new Error("Either a userID or userAttribute packet needs to be supplied for certification.");let o=n.write();return F.concat([this.toSign(i.key,t),new Uint8Array([s]),F.writeNumber(o.length,4),o])}case i.subkeyBinding:case i.subkeyRevocation:case i.keyBinding:return F.concat([this.toSign(i.key,t),this.toSign(i.key,{key:t.bind})]);case i.key:if(t.key===void 0)throw new Error("Key packet is required for this signature.");return t.key.writeForHash(this.version);case i.keyRevocation:return this.toSign(i.key,t);case i.timestamp:return new Uint8Array(0);case i.thirdParty:throw new Error("Not implemented");default:throw new Error("Unknown signature type.")}}calculateTrailer(e,t){let i=0;return sr(Fc(this.signatureData),n=>{i+=n.length},()=>{let n=[];return this.version===5&&(this.signatureType===m.signature.binary||this.signatureType===m.signature.text)&&(t?n.push(new Uint8Array(6)):n.push(e.writeHeader())),n.push(new Uint8Array([this.version,255])),this.version===5&&n.push(new Uint8Array(4)),n.push(F.writeNumber(i,4)),F.concat(n)})}toHash(e,t,i=!1){let n=this.toSign(e,t);return F.concat([this.salt||new Uint8Array,n,this.signatureData,this.calculateTrailer(t,i)])}async hash(e,t,i,n=!1){if(this.version===6&&this.salt.length!==_E(this.hashAlgorithm))throw new Error("Signature salt does not have the expected length");return i||(i=this.toHash(e,t,n)),cs(this.hashAlgorithm,i)}async verify(e,t,i,n=new Date,s=!1,o=pe){if(!this.issuerKeyID.equals(e.getKeyID()))throw new Error("Signature was not issued by the given public key");if(this.publicKeyAlgorithm!==e.algorithm)throw new Error("Public key algorithm used to sign signature does not match issuer key algorithm.");let a=t===m.signature.binary||t===m.signature.text;if(!(this[xf]&&!a)){let d,u;if(this.hashed?u=await this.hashed:(d=this.toHash(t,i,s),u=await this.hash(t,i,d)),u=await Xt(u),this.signedHashValue[0]!==u[0]||this.signedHashValue[1]!==u[1])throw new Error("Signed digest did not match");if(this.params=await this.params,this[xf]=await YY(this.publicKeyAlgorithm,this.hashAlgorithm,this.params,e.publicParams,d,u),!this[xf])throw new Error("Signature verification failed")}let l=F.normalizeDate(n);if(l&&this.created>l)throw new Error("Signature creation time is in the future");if(l&&l>=this.getExpirationTime())throw new Error("Signature is expired");if(o.rejectHashAlgorithms.has(this.hashAlgorithm))throw new Error("Insecure hash algorithm: "+m.read(m.hash,this.hashAlgorithm).toUpperCase());if(o.rejectMessageHashAlgorithms.has(this.hashAlgorithm)&&[m.signature.binary,m.signature.text].includes(this.signatureType))throw new Error("Insecure message hash algorithm: "+m.read(m.hash,this.hashAlgorithm).toUpperCase());if(this.unknownSubpackets.forEach(({type:d,critical:u})=>{if(u)throw new Error(`Unknown critical signature subpacket type ${d}`)}),this.rawNotations.forEach(({name:d,critical:u})=>{if(u&&o.knownNotations.indexOf(d)<0)throw new Error(`Unknown critical notation: ${d}`)}),this.revocationKeyClass!==null)throw new Error("This key is intended to be revoked with an authorized key, which OpenPGP.js does not support.")}isExpired(e=new Date){let t=F.normalizeDate(e);return t!==null?!(this.created<=t&&t<this.getExpirationTime()):!1}getExpirationTime(){return this.signatureNeverExpires?1/0:new Date(this.created.getTime()+this.signatureExpirationTime*1e3)}};on=class r{static get tag(){return m.packet.onePassSignature}static fromSignaturePacket(e,t){let i=new r;return i.version=e.version===6?6:3,i.signatureType=e.signatureType,i.hashAlgorithm=e.hashAlgorithm,i.publicKeyAlgorithm=e.publicKeyAlgorithm,i.issuerKeyID=e.issuerKeyID,i.salt=e.salt,i.issuerFingerprint=e.issuerFingerprint,i.flags=t?1:0,i}constructor(){this.version=null,this.signatureType=null,this.hashAlgorithm=null,this.publicKeyAlgorithm=null,this.salt=null,this.issuerKeyID=null,this.issuerFingerprint=null,this.flags=null}read(e){let t=0;if(this.version=e[t++],this.version!==3&&this.version!==6)throw new ft(`Version ${this.version} of the one-pass signature packet is unsupported.`);if(this.signatureType=e[t++],this.hashAlgorithm=e[t++],this.publicKeyAlgorithm=e[t++],this.version===6){let i=e[t++];this.salt=e.subarray(t,t+i),t+=i,this.issuerFingerprint=e.subarray(t,t+32),t+=32,this.issuerKeyID=new no,this.issuerKeyID.read(this.issuerFingerprint)}else this.issuerKeyID=new no,this.issuerKeyID.read(e.subarray(t,t+8)),t+=8;return this.flags=e[t++],this}write(){let e=[new Uint8Array([this.version,this.signatureType,this.hashAlgorithm,this.publicKeyAlgorithm])];return this.version===6?e.push(new Uint8Array([this.salt.length]),this.salt,this.issuerFingerprint):e.push(this.issuerKeyID.write()),e.push(new Uint8Array([this.flags])),F.concatUint8Array(e)}calculateTrailer(...e){return Oc(async()=>Rr.prototype.calculateTrailer.apply(await this.correspondingSig,e))}async verify(){let e=await this.correspondingSig;if(!e||e.constructor.tag!==m.packet.signature)throw new Error("Corresponding signature packet missing");if(e.signatureType!==this.signatureType||e.hashAlgorithm!==this.hashAlgorithm||e.publicKeyAlgorithm!==this.publicKeyAlgorithm||!e.issuerKeyID.equals(this.issuerKeyID)||this.version===3&&e.version===6||this.version===6&&e.version!==6||this.version===6&&!F.equalsUint8Array(e.issuerFingerprint,this.issuerFingerprint)||this.version===6&&!F.equalsUint8Array(e.salt,this.salt))throw new Error("Corresponding signature packet does not match one-pass signature packet");return e.hashed=this.hashed,e.verify.apply(e,arguments)}};on.prototype.hash=Rr.prototype.hash;on.prototype.toHash=Rr.prototype.toHash;on.prototype.toSign=Rr.prototype.toSign;Ct=class r extends Array{static async fromBinary(e,t,i=pe,n=null,s=!1){let o=new r;return await o.read(e,t,i,n,s),o}async read(e,t,i=pe,n=null,s=!1){let o;i.additionalAllowedPackets.length&&(o=F.constructAllowedPackets(i.additionalAllowedPackets),t={...t,...o}),this.stream=Ea(e,async(c,l)=>{let d=Sn(c),u=Li(l);try{let f=F.isStream(c);for(;;){await u.ready;let h,g;if(await PV(d,f,async y=>{try{if(y.tag===m.packet.marker||y.tag===m.packet.trust||y.tag===m.packet.padding)return;let w=CW(y.tag,t);try{n?.recordPacket(y.tag,o)}catch(C){if(i.enforceGrammar)throw C;F.printDebugError(C)}w.packets=new r,w.fromStream=F.isStream(y.packet),g=w.fromStream;try{await w.read(y.packet,i)}catch(C){throw C instanceof ft?C:F.wrapError(new Qf(`Parsing ${w.constructor.name} failed`),C)}await u.write(w)}catch(w){let C=w instanceof Ad&&y.tag<=39,b=w instanceof ft&&!(w instanceof Ad)&&!i.ignoreUnsupportedPackets,x=w instanceof Qf&&!i.ignoreMalformedPackets,_=gy(y.tag),R=!(w instanceof Ad||w instanceof ft||w instanceof Qf);if(C||b||x||_||R)s?h=w:await u.abort(w);else{let U=new Pf(y.tag,y.packet);await u.write(U)}F.printDebugError(w)}}),g&&(f=null),h)throw await d.readToEnd(),h;let p=await d.peekBytes(2);if(!p||!p.length){try{n?.recordEnd()}catch(y){if(i.enforceGrammar)throw y;F.printDebugError(y)}await u.ready,await u.close();return}}}catch(f){await u.abort(f)}});let a=Sn(this.stream);for(;;){let{done:c,value:l}=await a.read();if(c?this.stream=null:this.push(l),c||gy(l.constructor.tag))break}a.releaseLock()}write(){let e=[];for(let t=0;t<this.length;t++){let i=this[t]instanceof Pf?this[t].tag:this[t].constructor.tag,n=this[t].write();if(F.isStream(n)&&gy(this[t].constructor.tag)){let s=[],o=0,a=512;e.push(vy(i)),e.push(sr(n,c=>{if(s.push(c),o+=c.length,o>=a){let l=Math.min(Math.log(o)/Math.LN2|0,30),d=2**l,u=F.concat([FV(l)].concat(s));return s=[u.subarray(1+d)],o=s[0].length,u.subarray(0,1+d)}},()=>F.concat([lI(o)].concat(s))))}else{if(F.isStream(n)){let s=0;e.push(sr(Fc(n),o=>{s+=o.length},()=>OP(i,s)))}else e.push(OP(i,n.length));e.push(n)}}return F.concat(e)}filterByTag(...e){let t=new r,i=n=>s=>n===s;for(let n=0;n<this.length;n++)e.some(i(this[n].constructor.tag))&&t.push(this[n]);return t}findPacket(e){return this.find(t=>t.constructor.tag===e)}indexOfTag(...e){let t=[],i=this,n=s=>o=>s===o;for(let s=0;s<this.length;s++)e.some(n(i[s].constructor.tag))&&t.push(s);return t}},Xn=class r extends Error{constructor(...e){super(...e),Error.captureStackTrace&&Error.captureStackTrace(this,r),this.name="GrammarError"}};(function(r){r[r.EmptyMessage=0]="EmptyMessage",r[r.PlaintextOrEncryptedData=1]="PlaintextOrEncryptedData",r[r.EncryptedSessionKeys=2]="EncryptedSessionKeys",r[r.StandaloneAdditionalAllowedData=3]="StandaloneAdditionalAllowedData"})(Kt||(Kt={}));Ed=class{constructor(){this.state=Kt.EmptyMessage,this.leadingOnePassSignatureCounter=0}recordPacket(e,t){switch(this.state){case Kt.EmptyMessage:case Kt.StandaloneAdditionalAllowedData:switch(e){case m.packet.literalData:case m.packet.compressedData:case m.packet.aeadEncryptedData:case m.packet.symEncryptedIntegrityProtectedData:case m.packet.symmetricallyEncryptedData:this.state=Kt.PlaintextOrEncryptedData;return;case m.packet.signature:if(this.state===Kt.StandaloneAdditionalAllowedData&&--this.leadingOnePassSignatureCounter<0)throw new Xn("Trailing signature packet without OPS");return;case m.packet.onePassSignature:if(this.state===Kt.StandaloneAdditionalAllowedData)throw new Xn("OPS following StandaloneAdditionalAllowedData");this.leadingOnePassSignatureCounter++;return;case m.packet.publicKeyEncryptedSessionKey:case m.packet.symEncryptedSessionKey:this.state=Kt.EncryptedSessionKeys;return;default:if(!t?.[e])throw new Xn(`Unexpected packet ${e} in state ${this.state}`);this.state=Kt.StandaloneAdditionalAllowedData;return}case Kt.PlaintextOrEncryptedData:switch(e){case m.packet.signature:if(--this.leadingOnePassSignatureCounter<0)throw new Xn("Trailing signature packet without OPS");this.state=Kt.PlaintextOrEncryptedData;return;default:if(!t?.[e])throw new Xn(`Unexpected packet ${e} in state ${this.state}`);this.state=Kt.PlaintextOrEncryptedData;return}case Kt.EncryptedSessionKeys:switch(e){case m.packet.publicKeyEncryptedSessionKey:case m.packet.symEncryptedSessionKey:this.state=Kt.EncryptedSessionKeys;return;case m.packet.symEncryptedIntegrityProtectedData:case m.packet.aeadEncryptedData:case m.packet.symmetricallyEncryptedData:this.state=Kt.PlaintextOrEncryptedData;return;case m.packet.signature:if(--this.leadingOnePassSignatureCounter<0)throw new Xn("Trailing signature packet without OPS");this.state=Kt.PlaintextOrEncryptedData;return;default:if(!t?.[e])throw new Xn(`Unexpected packet ${e} in state ${this.state}`);this.state=Kt.EncryptedSessionKeys}}}recordEnd(){switch(this.state){case Kt.EmptyMessage:case Kt.PlaintextOrEncryptedData:case Kt.EncryptedSessionKeys:case Kt.StandaloneAdditionalAllowedData:if(this.leadingOnePassSignatureCounter>0)throw new Xn("Missing trailing signature packets")}}},EW=F.constructAllowedPackets([Ca,on,Rr]),Uc=class{static get tag(){return m.packet.compressedData}constructor(e=pe){this.packets=null,this.algorithm=e.preferredCompressionAlgorithm,this.compressed=null}async read(e,t=pe){await aI(e,async i=>{this.algorithm=await i.readByte(),this.compressed=i.remainder(),await this.decompress(t)})}write(){return this.compressed===null&&this.compress(),F.concat([new Uint8Array([this.algorithm]),this.compressed])}async decompress(e=pe){let t=m.read(m.compression,this.algorithm),i=kW[t];if(!i)throw new Error(`${t} decompression not supported`);let n=await i(this.compressed);if(e.maxDecompressedMessageSize!==1/0){let s=0;n=sr(n,o=>{if(s+=o.length,s>e.maxDecompressedMessageSize)throw new Error("Maximum decompressed message size exceeded");return o})}(!or(this.compressed)||St(this.compressed))&&(n=await Xt(n)),this.packets=await Ct.fromBinary(n,EW,e,new Ed)}compress(){let e=m.read(m.compression,this.algorithm),t=vW[e];if(!t)throw new Error(`${e} compression not supported`);let i=this.packets.write(),n=t(i);(!or(i)||St(i))&&(n=Oc(()=>Xt(n))),this.compressed=n}};Ly=r=>({compressor:typeof CompressionStream<"u"&&(()=>new CompressionStream(r)),decompressor:typeof DecompressionStream<"u"&&(()=>new DecompressionStream(r))}),vW={zip:My(Ly("deflate-raw").compressor,wy),zlib:My(Ly("deflate").compressor,mW)},kW={uncompressed:r=>r,zip:My(Ly("deflate-raw").decompressor,xy),zlib:My(Ly("deflate").decompressor,yW),bzip2:bW()},SW=F.constructAllowedPackets([Ca,Uc,on,Rr]),Bd=class r{static get tag(){return m.packet.symEncryptedIntegrityProtectedData}static fromObject({version:e,aeadAlgorithm:t}){if(e!==1&&e!==2)throw new Error("Unsupported SEIPD version");let i=new r;return i.version=e,e===2&&(i.aeadAlgorithm=t),i}constructor(){this.version=null,this.cipherAlgorithm=null,this.aeadAlgorithm=null,this.chunkSizeByte=null,this.salt=null,this.encrypted=null,this.packets=null}async read(e){await aI(e,async t=>{if(this.version=await t.readByte(),this.version!==1&&this.version!==2)throw new ft(`Version ${this.version} of the SEIP packet is unsupported.`);this.version===2&&(this.cipherAlgorithm=await t.readByte(),this.aeadAlgorithm=await t.readByte(),this.chunkSizeByte=await t.readByte(),this.salt=await t.readBytes(32)),this.encrypted=t.remainder()})}write(){return this.version===2?F.concat([new Uint8Array([this.version,this.cipherAlgorithm,this.aeadAlgorithm,this.chunkSizeByte]),this.salt,this.encrypted]):F.concat([new Uint8Array([this.version]),this.encrypted])}async encrypt(e,t,i=pe){let{blockSize:n,keySize:s}=It(e);if(t.length!==s)throw new Error("Unexpected session key size");let o=this.packets.write();if(St(o)&&(o=await Xt(o)),this.version===2)this.cipherAlgorithm=e,this.salt=Ur(32),this.chunkSizeByte=i.aeadChunkSizeByte,this.encrypted=await Hy(this,"encrypt",t,o);else{let a=await L6(e),c=new Uint8Array([211,20]),l=F.concat([a,o,c]),d=await cs(m.hash.sha1,Df(l)),u=F.concat([l,d]);this.encrypted=await Rf(e,t,u,new Uint8Array(n))}return!0}async decrypt(e,t,i=pe){if(t.length!==It(e).keySize)throw new Error("Unexpected session key size");let n=Fc(this.encrypted);St(n)&&(n=await Xt(n));let s,o=!1;if(this.version===2){if(this.cipherAlgorithm!==e)throw new Error("Unexpected session key algorithm");s=await Hy(this,"decrypt",t,n)}else{let{blockSize:a}=It(e),c=await II(e,t,n,new Uint8Array(a)),l=Tr(Df(c),-20),d=Tr(c,0,-20),u=Promise.all([Xt(await cs(m.hash.sha1,Df(d))),Xt(l)]).then(([h,g])=>{if(!F.equalsUint8Array(h,g))throw new Error("Modification detected.");return new Uint8Array}),f=Tr(d,a+2);s=Tr(f,0,-2),s=li([s,Oc(()=>u)]),F.isStream(n)&&i.allowUnauthenticatedStream?o=!0:s=await Xt(s)}return this.packets=await Ct.fromBinary(s,SW,i,new Ed,o),!0}};DW=F.constructAllowedPackets([Ca,Uc,on,Rr]),c5=1,gB=class{static get tag(){return m.packet.aeadEncryptedData}constructor(){this.version=c5,this.cipherAlgorithm=null,this.aeadAlgorithm=m.aead.eax,this.chunkSizeByte=null,this.iv=null,this.encrypted=null,this.packets=null}async read(e){await aI(e,async t=>{let i=await t.readByte();if(i!==c5)throw new ft(`Version ${i} of the AEAD-encrypted data packet is not supported.`);this.cipherAlgorithm=await t.readByte(),this.aeadAlgorithm=await t.readByte(),this.chunkSizeByte=await t.readByte();let n=io(this.aeadAlgorithm,!0);this.iv=await t.readBytes(n.ivLength),this.encrypted=t.remainder()})}write(){return F.concat([new Uint8Array([this.version,this.cipherAlgorithm,this.aeadAlgorithm,this.chunkSizeByte]),this.iv,this.encrypted])}async decrypt(e,t,i=pe){this.packets=await Ct.fromBinary(await Hy(this,"decrypt",t,Fc(this.encrypted)),DW,i,new Ed)}async encrypt(e,t,i=pe){this.cipherAlgorithm=e;let{ivLength:n}=io(this.aeadAlgorithm,!0);this.iv=Ur(n),this.chunkSizeByte=i.aeadChunkSizeByte;let s=this.packets.write();this.encrypted=await Hy(this,"encrypt",t,s)}},qf=class r{static get tag(){return m.packet.publicKeyEncryptedSessionKey}constructor(){this.version=null,this.publicKeyID=new no,this.publicKeyVersion=null,this.publicKeyFingerprint=null,this.publicKeyAlgorithm=null,this.sessionKey=null,this.sessionKeyAlgorithm=null,this.encrypted={}}static fromObject({version:e,encryptionKeyPacket:t,anonymousRecipient:i,sessionKey:n,sessionKeyAlgorithm:s}){let o=new r;if(e!==3&&e!==6)throw new Error("Unsupported PKESK version");return o.version=e,e===6&&(o.publicKeyVersion=i?null:t.version,o.publicKeyFingerprint=i?null:t.getFingerprintBytes()),o.publicKeyID=i?no.wildcard():t.getKeyID(),o.publicKeyAlgorithm=t.algorithm,o.sessionKey=n,o.sessionKeyAlgorithm=s,o}read(e){let t=0;if(this.version=e[t++],this.version!==3&&this.version!==6)throw new ft(`Version ${this.version} of the PKESK packet is unsupported.`);if(this.version===6){let i=e[t++];if(i){this.publicKeyVersion=e[t++];let n=i-1;this.publicKeyFingerprint=e.subarray(t,t+n),t+=n,this.publicKeyVersion>=5?this.publicKeyID.read(this.publicKeyFingerprint):this.publicKeyID.read(this.publicKeyFingerprint.subarray(-8))}else this.publicKeyID=no.wildcard()}else t+=this.publicKeyID.read(e.subarray(t,t+8));if(this.publicKeyAlgorithm=e[t++],this.encrypted=DY(this.publicKeyAlgorithm,e.subarray(t)),this.publicKeyAlgorithm===m.publicKey.x25519||this.publicKeyAlgorithm===m.publicKey.x448){if(this.version===3)this.sessionKeyAlgorithm=m.write(m.symmetric,this.encrypted.C.algorithm);else if(this.encrypted.C.algorithm!==null)throw new Error("Unexpected cleartext symmetric algorithm")}}write(){let e=[new Uint8Array([this.version])];return this.version===6?this.publicKeyFingerprint!==null?(e.push(new Uint8Array([this.publicKeyFingerprint.length+1,this.publicKeyVersion])),e.push(this.publicKeyFingerprint)):e.push(new Uint8Array([0])):e.push(this.publicKeyID.write()),e.push(new Uint8Array([this.publicKeyAlgorithm]),xd(this.publicKeyAlgorithm,this.encrypted)),F.concatUint8Array(e)}async encrypt(e){let t=m.write(m.publicKey,this.publicKeyAlgorithm),i=this.version===3?this.sessionKeyAlgorithm:null,n=e.version===5?e.getFingerprintBytes().subarray(0,20):e.getFingerprintBytes(),s=l5(this.version,t,i,this.sessionKey);this.encrypted=await vY(t,i,e.publicParams,s,n)}async decrypt(e,t){if(this.publicKeyAlgorithm!==e.algorithm)throw new Error("Decryption error");let i=t?l5(this.version,this.publicKeyAlgorithm,t.sessionKeyAlgorithm,t.sessionKey):null,n=e.version===5?e.getFingerprintBytes().subarray(0,20):e.getFingerprintBytes(),s=await kY(this.publicKeyAlgorithm,e.publicParams,e.privateParams,this.encrypted,n,i),{sessionKey:o,sessionKeyAlgorithm:a}=QW(this.version,this.publicKeyAlgorithm,s,t);if(this.version===3){let c=this.publicKeyAlgorithm!==m.publicKey.x25519&&this.publicKeyAlgorithm!==m.publicKey.x448;if(this.sessionKeyAlgorithm=c?a:this.sessionKeyAlgorithm,o.length!==It(this.sessionKeyAlgorithm).keySize)throw new Error("Unexpected session key size")}this.sessionKey=o}};Of=class r{static get tag(){return m.packet.symEncryptedSessionKey}constructor(e=pe){this.version=e.aeadProtect?6:4,this.sessionKey=null,this.sessionKeyEncryptionAlgorithm=null,this.sessionKeyAlgorithm=null,this.aeadAlgorithm=m.write(m.aead,e.preferredAEADAlgorithm),this.encrypted=null,this.s2k=null,this.iv=null}read(e){let t=0;if(this.version=e[t++],this.version!==4&&this.version!==5&&this.version!==6)throw new ft(`Version ${this.version} of the SKESK packet is unsupported.`);this.version===6&&t++;let i=e[t++];this.version>=5&&(this.aeadAlgorithm=e[t++],this.version===6&&t++);let n=e[t++];if(this.s2k=qy(n),t+=this.s2k.read(e.subarray(t,e.length)),this.version>=5){let s=io(this.aeadAlgorithm,!0);this.iv=e.subarray(t,t+=s.ivLength)}this.version>=5||t<e.length?(this.encrypted=e.subarray(t,e.length),this.sessionKeyEncryptionAlgorithm=i):this.sessionKeyAlgorithm=i}write(){let e=this.encrypted===null?this.sessionKeyAlgorithm:this.sessionKeyEncryptionAlgorithm,t,i=this.s2k.write();if(this.version===6){let n=i.length,s=3+n+this.iv.length;t=F.concatUint8Array([new Uint8Array([this.version,s,e,this.aeadAlgorithm,n]),i,this.iv,this.encrypted])}else this.version===5?t=F.concatUint8Array([new Uint8Array([this.version,e,this.aeadAlgorithm]),i,this.iv,this.encrypted]):(t=F.concatUint8Array([new Uint8Array([this.version,e]),i]),this.encrypted!==null&&(t=F.concatUint8Array([t,this.encrypted])));return t}async decrypt(e,t=pe){let i=this.sessionKeyEncryptionAlgorithm!==null?this.sessionKeyEncryptionAlgorithm:this.sessionKeyAlgorithm,{blockSize:n,keySize:s}=It(i),o=await this.s2k.produceKey(e,s,t);if(this.version>=5){let a=io(this.aeadAlgorithm,!0),c=new Uint8Array([192|r.tag,this.version,this.sessionKeyEncryptionAlgorithm,this.aeadAlgorithm]),l=this.version===6?await wa(m.hash.sha256,o,new Uint8Array,c,s):o,d=await a(i,l);this.sessionKey=await d.decrypt(this.encrypted,this.iv,c)}else if(this.encrypted!==null){let a=await II(i,o,this.encrypted,new Uint8Array(n));if(this.sessionKeyAlgorithm=m.write(m.symmetric,a[0]),this.sessionKey=a.subarray(1,a.length),this.sessionKey.length!==It(this.sessionKeyAlgorithm).keySize)throw new Error("Unexpected session key size")}else this.sessionKey=o}async encrypt(e,t=pe){let i=this.sessionKeyEncryptionAlgorithm!==null?this.sessionKeyEncryptionAlgorithm:this.sessionKeyAlgorithm;this.sessionKeyEncryptionAlgorithm=i,this.s2k=K6(t),this.s2k.generateSalt();let{blockSize:n,keySize:s}=It(i),o=await this.s2k.produceKey(e,s,t);if(this.sessionKey===null&&(this.sessionKey=oB(this.sessionKeyAlgorithm)),this.version>=5){let a=io(this.aeadAlgorithm);this.iv=Ur(a.ivLength);let c=new Uint8Array([192|r.tag,this.version,this.sessionKeyEncryptionAlgorithm,this.aeadAlgorithm]),l=this.version===6?await wa(m.hash.sha256,o,new Uint8Array,c,s):o,d=await a(i,l);this.encrypted=await d.encrypt(this.sessionKey,this.iv,c)}else{let a=F.concatUint8Array([new Uint8Array([this.sessionKeyAlgorithm]),this.sessionKey]);this.encrypted=await Rf(i,o,a,new Uint8Array(n))}}},ls=class r{static get tag(){return m.packet.publicKey}constructor(e=new Date,t=pe){this.version=t.v6Keys?6:4,this.created=F.normalizeDate(e),this.algorithm=null,this.publicParams=null,this.expirationTimeV3=0,this.fingerprint=null,this.keyID=null}static fromSecretKeyPacket(e){let t=new r,{version:i,created:n,algorithm:s,publicParams:o,keyID:a,fingerprint:c}=e;return t.version=i,t.created=n,t.algorithm=s,t.publicParams=o,t.keyID=a,t.fingerprint=c,t}async read(e,t=pe){let i=0;if(this.version=e[i++],this.version===5&&!t.enableParsingV5Entities)throw new ft("Support for parsing v5 entities is disabled; turn on `config.enableParsingV5Entities` if needed");if(this.version===4||this.version===5||this.version===6){this.created=F.readDate(e.subarray(i,i+4)),i+=4,this.algorithm=e[i++],this.version>=5&&(i+=4);let{read:n,publicParams:s}=SY(this.algorithm,e.subarray(i));if(this.version===6&&s.oid&&(s.oid.getName()===m.curve.curve25519Legacy||s.oid.getName()===m.curve.ed25519Legacy))throw new Error("Legacy curve25519 cannot be used with v6 keys");return this.publicParams=s,i+=n,await this.computeFingerprintAndKeyID(),i}throw new ft(`Version ${this.version} of the key packet is unsupported.`)}write(){let e=[];e.push(new Uint8Array([this.version])),e.push(F.writeDate(this.created)),e.push(new Uint8Array([this.algorithm]));let t=xd(this.algorithm,this.publicParams);return this.version>=5&&e.push(F.writeNumber(t.length,4)),e.push(t),F.concatUint8Array(e)}writeForHash(e){let t=this.writePublicKey(),i=149+e,n=e>=5?4:2;return F.concatUint8Array([new Uint8Array([i]),F.writeNumber(t.length,n),t])}isDecrypted(){return null}getCreationTime(){return this.created}getKeyID(){return this.keyID}async computeFingerprintAndKeyID(){if(await this.computeFingerprint(),this.keyID=new no,this.version>=5)this.keyID.read(this.fingerprint.subarray(0,8));else if(this.version===4)this.keyID.read(this.fingerprint.subarray(12,20));else throw new Error("Unsupported key version")}async computeFingerprint(){let e=this.writeForHash(this.version);if(this.version>=5)this.fingerprint=await cs(m.hash.sha256,e);else if(this.version===4)this.fingerprint=await cs(m.hash.sha1,e);else throw new Error("Unsupported key version")}getFingerprintBytes(){return this.fingerprint}getFingerprint(){return F.uint8ArrayToHex(this.getFingerprintBytes())}hasSameFingerprintAs(e){return this.version===e.version&&F.equalsUint8Array(this.writePublicKey(),e.writePublicKey())}getAlgorithmInfo(){let e={};e.algorithm=m.read(m.publicKey,this.algorithm);let t=this.publicParams.n||this.publicParams.p;return t?e.bits=F.uint8ArrayBitLength(t):this.publicParams.oid&&(e.curve=this.publicParams.oid.getName()),e}};ls.prototype.readPublicKey=ls.prototype.read;ls.prototype.writePublicKey=ls.prototype.write;_W=F.constructAllowedPackets([Ca,Uc,on,Rr]),pB=class{static get tag(){return m.packet.symmetricallyEncryptedData}constructor(){this.encrypted=null,this.packets=null}read(e){this.encrypted=e}write(){return this.encrypted}async decrypt(e,t,i=pe){if(!i.allowUnauthenticatedMessages)throw new Error("Message is not authenticated.");let{blockSize:n}=It(e),s=await Xt(Fc(this.encrypted)),o=await II(e,t,s.subarray(n+2),s.subarray(2,n+2));this.packets=await Ct.fromBinary(o,_W,i)}async encrypt(e,t,i=pe){let n=this.packets.write(),{blockSize:s}=It(e),o=await L6(e),a=await Rf(e,t,o,new Uint8Array(s)),c=await Rf(e,t,n,a.subarray(2));this.encrypted=F.concat([a,c])}},Ky=class r extends ls{static get tag(){return m.packet.publicSubkey}constructor(e,t){super(e,t)}static fromSecretSubkeyPacket(e){let t=new r,{version:i,created:n,algorithm:s,publicParams:o,keyID:a,fingerprint:c}=e;return t.version=i,t.created=n,t.algorithm=s,t.publicParams=o,t.keyID=a,t.fingerprint=c,t}},mB=class r{static get tag(){return m.packet.userAttribute}constructor(){this.attributes=[]}read(e){let t=0;for(;t<e.length;){let i=d6(e.subarray(t,e.length));t+=i.offset,this.attributes.push(F.uint8ArrayToString(e.subarray(t,t+i.len))),t+=i.len}}write(){let e=[];for(let t=0;t<this.attributes.length;t++)e.push(lI(this.attributes[t].length)),e.push(F.stringToUint8Array(this.attributes[t]));return F.concatUint8Array(e)}equals(e){return!e||!(e instanceof r)?!1:this.attributes.every(function(t,i){return t===e.attributes[i]})}},Mf=class extends ls{static get tag(){return m.packet.secretKey}constructor(e=new Date,t=pe){super(e,t),this.keyMaterial=null,this.isEncrypted=null,this.s2kUsage=0,this.s2k=null,this.symmetric=null,this.aead=null,this.isLegacyAEAD=null,this.privateParams=null,this.usedModernAEAD=null}async read(e,t=pe){let i=await this.readPublicKey(e,t),n=i;this.s2kUsage=e[i++],this.version===5&&i++,this.version===6&&this.s2kUsage&&i++;try{if(this.s2kUsage===255||this.s2kUsage===254||this.s2kUsage===253){this.symmetric=e[i++],this.s2kUsage===253&&(this.aead=e[i++]),this.version===6&&i++;let s=e[i++];if(this.s2k=qy(s),i+=this.s2k.read(e.subarray(i,e.length)),this.s2k.type==="gnu-dummy")return}else this.s2kUsage&&(this.symmetric=this.s2kUsage);this.s2kUsage&&(this.isLegacyAEAD=this.s2kUsage===253&&(this.version===5||this.version===4&&t.parseAEADEncryptedV4KeysAsLegacy),this.s2kUsage!==253||this.isLegacyAEAD?(this.iv=e.subarray(i,i+It(this.symmetric).blockSize),this.usedModernAEAD=!1):(this.iv=e.subarray(i,i+io(this.aead).ivLength),this.usedModernAEAD=!0),i+=this.iv.length)}catch(s){if(!this.s2kUsage)throw s;this.unparseableKeyMaterial=e.subarray(n),this.isEncrypted=!0}if(this.version===5&&(i+=4),this.keyMaterial=e.subarray(i),this.isEncrypted=!!this.s2kUsage,!this.isEncrypted){let s;if(this.version===6)s=this.keyMaterial;else if(s=this.keyMaterial.subarray(0,-2),!F.equalsUint8Array(F.writeChecksum(s),this.keyMaterial.subarray(-2)))throw new Error("Key checksum mismatch");try{let{read:o,privateParams:a}=VP(this.algorithm,s,this.publicParams);if(o<s.length)throw new Error("Error reading MPIs");this.privateParams=a}catch(o){throw o instanceof ft?o:new Error("Error reading MPIs")}}}write(){let e=this.writePublicKey();if(this.unparseableKeyMaterial)return F.concatUint8Array([e,this.unparseableKeyMaterial]);let t=[e];t.push(new Uint8Array([this.s2kUsage]));let i=[];if(this.s2kUsage===255||this.s2kUsage===254||this.s2kUsage===253){i.push(this.symmetric),this.s2kUsage===253&&i.push(this.aead);let n=this.s2k.write();this.version===6&&i.push(n.length),i.push(...n)}return this.s2kUsage&&this.s2k.type!=="gnu-dummy"&&i.push(...this.iv),(this.version===5||this.version===6&&this.s2kUsage)&&t.push(new Uint8Array([i.length])),t.push(new Uint8Array(i)),this.isDummy()||(this.s2kUsage||(this.keyMaterial=xd(this.algorithm,this.privateParams)),this.version===5&&t.push(F.writeNumber(this.keyMaterial.length,4)),t.push(this.keyMaterial),!this.s2kUsage&&this.version!==6&&t.push(F.writeChecksum(this.keyMaterial))),F.concatUint8Array(t)}isDecrypted(){return this.isEncrypted===!1}isMissingSecretKeyMaterial(){return this.unparseableKeyMaterial!==void 0||this.isDummy()}isDummy(){return!!(this.s2k&&this.s2k.type==="gnu-dummy")}makeDummy(e=pe){this.isDummy()||(this.isDecrypted()&&this.clearPrivateParams(),delete this.unparseableKeyMaterial,this.isEncrypted=null,this.keyMaterial=null,this.s2k=qy(m.s2k.gnu,e),this.s2k.algorithm=0,this.s2k.c=0,this.s2k.type="gnu-dummy",this.s2kUsage=254,this.symmetric=m.symmetric.aes256,this.isLegacyAEAD=null,this.usedModernAEAD=null)}async encrypt(e,t=pe){if(this.isDummy())return;if(!this.isDecrypted())throw new Error("Key packet is already encrypted");if(!e)throw new Error("A non-empty passphrase is required for key encryption.");this.s2k=K6(t),this.s2k.generateSalt();let i=xd(this.algorithm,this.privateParams);this.symmetric=m.symmetric.aes256;let{blockSize:n}=It(this.symmetric);if(t.aeadProtect){this.s2kUsage=253,this.aead=t.preferredAEADAlgorithm;let s=io(this.aead);this.isLegacyAEAD=this.version===5,this.usedModernAEAD=!this.isLegacyAEAD;let o=vy(this.constructor.tag),a=await FE(this.version,this.s2k,e,this.symmetric,this.aead,o,this.isLegacyAEAD,t),c=await s(this.symmetric,a);this.iv=this.isLegacyAEAD?Ur(n):Ur(s.ivLength);let l=this.isLegacyAEAD?new Uint8Array:F.concatUint8Array([o,this.writePublicKey()]);this.keyMaterial=await c.encrypt(i,this.iv.subarray(0,s.ivLength),l)}else{this.s2kUsage=254,this.usedModernAEAD=!1;let s=await FE(this.version,this.s2k,e,this.symmetric,void 0,void 0,void 0,t);this.iv=Ur(n),this.keyMaterial=await Rf(this.symmetric,s,F.concatUint8Array([i,await cs(m.hash.sha1,i)]),this.iv)}}async decrypt(e,t=pe){if(this.isDummy())return!1;if(this.unparseableKeyMaterial)throw new Error("Key packet cannot be decrypted: unsupported S2K or cipher algo");if(this.isDecrypted())throw new Error("Key packet is already decrypted.");let i,n=vy(this.constructor.tag);if(this.s2kUsage===254||this.s2kUsage===253)i=await FE(this.version,this.s2k,e,this.symmetric,this.aead,n,this.isLegacyAEAD,t);else throw this.s2kUsage===255?new Error("Encrypted private key is authenticated using an insecure two-byte hash"):new Error("Private key is encrypted using an insecure S2K function: unsalted MD5");let s;if(this.s2kUsage===253){let o=io(this.aead,!0),a=await o(this.symmetric,i);try{let c=this.isLegacyAEAD?new Uint8Array:F.concatUint8Array([n,this.writePublicKey()]);s=await a.decrypt(this.keyMaterial,this.iv.subarray(0,o.ivLength),c)}catch(c){throw c.message==="Authentication tag mismatch"?new Error("Incorrect key passphrase: "+c.message):c}}else{let o=await II(this.symmetric,i,this.keyMaterial,this.iv);s=o.subarray(0,-20);let a=await cs(m.hash.sha1,s);if(!F.equalsUint8Array(a,o.subarray(-20)))throw new Error("Incorrect key passphrase")}try{let{privateParams:o}=VP(this.algorithm,s,this.publicParams);this.privateParams=o}catch{throw new Error("Error reading MPIs")}this.isEncrypted=!1,this.keyMaterial=null,this.s2kUsage=0,this.aead=null,this.symmetric=null,this.isLegacyAEAD=null}async validate(){if(this.isDummy())return;if(!this.isDecrypted())throw new Error("Key is not decrypted");if(this.usedModernAEAD)return;let e;try{e=await _Y(this.algorithm,this.publicParams,this.privateParams)}catch{e=!1}if(!e)throw new Error("Key is invalid")}async generate(e,t){if(this.version===6&&(this.algorithm===m.publicKey.ecdh&&t===m.curve.curve25519Legacy||this.algorithm===m.publicKey.eddsaLegacy))throw new Error(`Cannot generate v6 keys of type 'ecc' with curve ${t}. Generate a key of type 'curve25519' instead`);let{privateParams:i,publicParams:n}=await QY(this.algorithm,e,t);this.privateParams=i,this.publicParams=n,this.isEncrypted=!1}clearPrivateParams(){this.isMissingSecretKeyMaterial()||(Object.keys(this.privateParams).forEach(e=>{this.privateParams[e].fill(0),delete this.privateParams[e]}),this.privateParams=null,this.isEncrypted=!0)}};Gy=class r{static get tag(){return m.packet.userID}constructor(){this.userID="",this.name="",this.email="",this.comment=""}static fromObject(e){if(F.isString(e)||e.name&&!F.isString(e.name)||e.email&&!F.isEmailAddress(e.email)||e.comment&&!F.isString(e.comment))throw new Error("Invalid user ID format");let t=new r;Object.assign(t,e);let i=[];return t.name&&i.push(t.name),t.comment&&i.push(`(${t.comment})`),t.email&&i.push(`<${t.email}>`),t.userID=i.join(" "),t}read(e,t=pe){let i=F.decodeUTF8(e);if(i.length>t.maxUserIDLength)throw new Error("User ID string is too long");let n=a=>/^[^\s@]+@[^\s@]+$/.test(a),s=i.indexOf("<"),o=i.lastIndexOf(">");if(s!==-1&&o!==-1&&o>s){let a=i.substring(s+1,o);if(n(a)){this.email=a;let c=i.substring(0,s).trim(),l=c.indexOf("("),d=c.lastIndexOf(")");l!==-1&&d!==-1&&d>l?(this.comment=c.substring(l+1,d).trim(),this.name=c.substring(0,l).trim()):(this.name=c,this.comment="")}}else n(i.trim())&&(this.email=i.trim(),this.name="",this.comment="");this.userID=i}write(){return F.encodeUTF8(this.userID)}equals(e){return e&&e.userID===this.userID}},zy=class extends Mf{static get tag(){return m.packet.secretSubkey}constructor(e=new Date,t=pe){super(e,t)}},Jy=class{constructor(e){this.packets=e||new Ct}write(){return this.packets.write()}armor(e=pe){let t=this.packets.some(i=>i.constructor.tag===Rr.tag&&i.version!==6);return Zf(m.armor.signature,this.write(),void 0,void 0,void 0,t,e)}getSigningKeyIDs(){return this.packets.map(e=>e.issuerKeyID)}};wB=class r{constructor(e,t){this.userID=e.constructor.tag===m.packet.userID?e:null,this.userAttribute=e.constructor.tag===m.packet.userAttribute?e:null,this.selfCertifications=[],this.otherCertifications=[],this.revocationSignatures=[],this.mainKey=t}toPacketList(){let e=new Ct;return e.push(this.userID||this.userAttribute),e.push(...this.revocationSignatures),e.push(...this.selfCertifications),e.push(...this.otherCertifications),e}clone(){let e=new r(this.userID||this.userAttribute,this.mainKey);return e.selfCertifications=[...this.selfCertifications],e.otherCertifications=[...this.otherCertifications],e.revocationSignatures=[...this.revocationSignatures],e}async certify(e,t,i){let n=this.mainKey.keyPacket,s={userID:this.userID,userAttribute:this.userAttribute,key:n},o=new r(s.userID||s.userAttribute,this.mainKey);return o.otherCertifications=await Promise.all(e.map(async function(a){if(!a.isPrivate())throw new Error("Need private key for signing");if(a.hasSameFingerprintAs(n))throw new Error("The user's own key can only be used for self-certifications");let c=await a.getSigningKey(void 0,t,void 0,i);return as(s,[a],c.keyPacket,{signatureType:m.signature.certGeneric,keyFlags:[m.keyFlags.certifyKeys|m.keyFlags.signData]},t,void 0,void 0,void 0,i)})),await o.update(this,t,i),o}async isRevoked(e,t,i=new Date,n=pe){let s=this.mainKey.keyPacket;return bd(s,m.signature.certRevocation,{key:s,userID:this.userID,userAttribute:this.userAttribute},this.revocationSignatures,e,t,i,n)}async verifyCertificate(e,t,i=new Date,n){let s=this,o=this.mainKey.keyPacket,a={userID:this.userID,userAttribute:this.userAttribute,key:o},{issuerKeyID:c}=e,l=t.filter(d=>d.getKeys(c).length>0);return l.length===0?null:(await Promise.all(l.map(async d=>{let u=await d.getSigningKey(c,e.created,void 0,n);if(e.revoked||await s.isRevoked(e,u.keyPacket,i,n))throw new Error("User certificate is revoked");try{await e.verify(u.keyPacket,m.signature.certGeneric,a,i,void 0,n)}catch(f){throw F.wrapError("User certificate is invalid",f)}})),!0)}async verifyAllCertifications(e,t=new Date,i){let n=this,s=this.selfCertifications.concat(this.otherCertifications);return Promise.all(s.map(async o=>({keyID:o.issuerKeyID,valid:await n.verifyCertificate(o,e,t,i).catch(()=>!1)})))}async verify(e=new Date,t){if(!this.selfCertifications.length)throw new Error("No self-certifications found");let i=this,n=this.mainKey.keyPacket,s={userID:this.userID,userAttribute:this.userAttribute,key:n},o;for(let a=this.selfCertifications.length-1;a>=0;a--)try{let c=this.selfCertifications[a];if(c.revoked||await i.isRevoked(c,void 0,e,t))throw new Error("Self-certification is revoked");try{await c.verify(n,m.signature.certGeneric,s,e,void 0,t)}catch(l){throw F.wrapError("Self-certification is invalid",l)}return!0}catch(c){o=c}throw o}async update(e,t,i){let n=this.mainKey.keyPacket,s={userID:this.userID,userAttribute:this.userAttribute,key:n};await Qc(e,this,"selfCertifications",t,async function(o){try{return await o.verify(n,m.signature.certGeneric,s,t,!1,i),!0}catch{return!1}}),await Qc(e,this,"otherCertifications",t),await Qc(e,this,"revocationSignatures",t,function(o){return bd(n,m.signature.certRevocation,s,[o],void 0,void 0,t,i)})}async revoke(e,{flag:t=m.reasonForRevocation.noReason,string:i=""}={},n=new Date,s=pe){let o={userID:this.userID,userAttribute:this.userAttribute,key:e},a=new r(o.userID||o.userAttribute,this.mainKey);return a.revocationSignatures.push(await as(o,[],e,{signatureType:m.signature.certRevocation,reasonForRevocationFlag:m.write(m.reasonForRevocation,t),reasonForRevocationString:i},n,void 0,void 0,!1,s)),await a.update(this),a}},Lf=class r{constructor(e,t){this.keyPacket=e,this.bindingSignatures=[],this.revocationSignatures=[],this.mainKey=t}toPacketList(){let e=new Ct;return e.push(this.keyPacket),e.push(...this.revocationSignatures),e.push(...this.bindingSignatures),e}clone(){let e=new r(this.keyPacket,this.mainKey);return e.bindingSignatures=[...this.bindingSignatures],e.revocationSignatures=[...this.revocationSignatures],e}async isRevoked(e,t,i=new Date,n=pe){let s=this.mainKey.keyPacket;return bd(s,m.signature.subkeyRevocation,{key:s,bind:this.keyPacket},this.revocationSignatures,e,t,i,n)}async verify(e=new Date,t=pe){let i=this.mainKey.keyPacket,n={key:i,bind:this.keyPacket},s=await Bn(this.bindingSignatures,i,m.signature.subkeyBinding,n,e,t);if(s.revoked||await this.isRevoked(s,null,e,t))throw new Error("Subkey is revoked");if(yB(this.keyPacket,s,e))throw new Error("Subkey is expired");return s}async getExpirationTime(e=new Date,t=pe){let i=this.mainKey.keyPacket,n={key:i,bind:this.keyPacket},s;try{s=await Bn(this.bindingSignatures,i,m.signature.subkeyBinding,n,e,t)}catch{return null}let o=jy(this.keyPacket,s),a=s.getExpirationTime();return o<a?o:a}async update(e,t=new Date,i=pe){let n=this.mainKey.keyPacket;if(!this.hasSameFingerprintAs(e))throw new Error("Subkey update method: fingerprints of subkeys not equal");this.keyPacket.constructor.tag===m.packet.publicSubkey&&e.keyPacket.constructor.tag===m.packet.secretSubkey&&(this.keyPacket=e.keyPacket);let s=this,o={key:n,bind:s.keyPacket};await Qc(e,this,"bindingSignatures",t,async function(a){for(let c=0;c<s.bindingSignatures.length;c++)if(s.bindingSignatures[c].issuerKeyID.equals(a.issuerKeyID))return a.created>s.bindingSignatures[c].created&&(s.bindingSignatures[c]=a),!1;try{return await a.verify(n,m.signature.subkeyBinding,o,t,void 0,i),!0}catch{return!1}}),await Qc(e,this,"revocationSignatures",t,function(a){return bd(n,m.signature.subkeyRevocation,o,[a],void 0,void 0,t,i)})}async revoke(e,{flag:t=m.reasonForRevocation.noReason,string:i=""}={},n=new Date,s=pe){let o={key:e,bind:this.keyPacket},a=new r(this.keyPacket,this.mainKey);return a.revocationSignatures.push(await as(o,[],e,{signatureType:m.signature.subkeyRevocation,reasonForRevocationFlag:m.write(m.reasonForRevocation,t),reasonForRevocationString:i},n,void 0,void 0,!1,s)),await a.update(this),a}hasSameFingerprintAs(e){return this.keyPacket.hasSameFingerprintAs(e.keyPacket||e)}};["getKeyID","getFingerprint","getAlgorithmInfo","getCreationTime","isDecrypted"].forEach(r=>{Lf.prototype[r]=function(){return this.keyPacket[r]()}});RW=F.constructAllowedPackets([Rr]),A5=new Set([m.packet.publicKey,m.packet.privateKey]),h5=new Set([m.packet.publicKey,m.packet.privateKey,m.packet.publicSubkey,m.packet.privateSubkey]),$y=class{packetListToStructure(e,t=new Set){let i,n,s,o;for(let a of e){if(a instanceof Pf){h5.has(a.tag)&&!o&&(A5.has(a.tag)?o=A5:o=h5);continue}let c=a.constructor.tag;if(o){if(!o.has(c))continue;o=null}if(t.has(c))throw new Error(`Unexpected packet type: ${c}`);switch(c){case m.packet.publicKey:case m.packet.secretKey:if(this.keyPacket)throw new Error("Key block contains multiple keys");if(this.keyPacket=a,n=this.getKeyID(),!n)throw new Error("Missing Key ID");break;case m.packet.userID:case m.packet.userAttribute:i=new wB(a,this),this.users.push(i);break;case m.packet.publicSubkey:case m.packet.secretSubkey:i=null,s=new Lf(a,this),this.subkeys.push(s);break;case m.packet.signature:switch(a.signatureType){case m.signature.certGeneric:case m.signature.certPersona:case m.signature.certCasual:case m.signature.certPositive:if(!i){F.printDebug("Dropping certification signatures without preceding user packet");continue}a.issuerKeyID.equals(n)?i.selfCertifications.push(a):i.otherCertifications.push(a);break;case m.signature.certRevocation:i?i.revocationSignatures.push(a):this.directSignatures.push(a);break;case m.signature.key:this.directSignatures.push(a);break;case m.signature.subkeyBinding:if(!s){F.printDebug("Dropping subkey binding signature without preceding subkey packet");continue}s.bindingSignatures.push(a);break;case m.signature.keyRevocation:this.revocationSignatures.push(a);break;case m.signature.subkeyRevocation:if(!s){F.printDebug("Dropping subkey revocation signature without preceding subkey packet");continue}s.revocationSignatures.push(a);break}break}}}toPacketList(){let e=new Ct;return e.push(this.keyPacket),e.push(...this.revocationSignatures),e.push(...this.directSignatures),this.users.map(t=>e.push(...t.toPacketList())),this.subkeys.map(t=>e.push(...t.toPacketList())),e}clone(e=!1){let t=new this.constructor(this.toPacketList());return e&&t.getKeys().forEach(i=>{if(i.keyPacket=Object.create(Object.getPrototypeOf(i.keyPacket),Object.getOwnPropertyDescriptors(i.keyPacket)),!i.keyPacket.isDecrypted())return;let n={};Object.keys(i.keyPacket.privateParams).forEach(s=>{n[s]=new Uint8Array(i.keyPacket.privateParams[s])}),i.keyPacket.privateParams=n}),t}getSubkeys(e=null){return this.subkeys.filter(i=>!e||i.getKeyID().equals(e,!0))}getKeys(e=null){let t=[];return(!e||this.getKeyID().equals(e,!0))&&t.push(this),t.concat(this.getSubkeys(e))}getKeyIDs(){return this.getKeys().map(e=>e.getKeyID())}getUserIDs(){return this.users.map(e=>e.userID?e.userID.userID:null).filter(e=>e!==null)}write(){return this.toPacketList().write()}async getSigningKey(e=null,t=new Date,i={},n=pe){await this.verifyPrimaryKey(t,i,n);let s=this.keyPacket;try{ga(s,n)}catch(c){throw F.wrapError("Could not verify primary key",c)}let o=this.subkeys.slice().sort((c,l)=>l.keyPacket.created-c.keyPacket.created||l.keyPacket.algorithm-c.keyPacket.algorithm),a;for(let c of o)if(!e||c.getKeyID().equals(e))try{await c.verify(t,n);let l={key:s,bind:c.keyPacket},d=await Bn(c.bindingSignatures,s,m.signature.subkeyBinding,l,t,n);if(!d5(c.keyPacket,d,n))continue;if(!d.embeddedSignature)throw new Error("Missing embedded signature");return await Bn([d.embeddedSignature],c.keyPacket,m.signature.keyBinding,l,t,n),ga(c.keyPacket,n),c}catch(l){a=l}try{let c=await this.getPrimarySelfSignature(t,i,n);if((!e||s.getKeyID().equals(e))&&d5(s,c,n))return ga(s,n),this}catch(c){a=c}throw F.wrapError("Could not find valid signing key packet in key "+this.getKeyID().toHex(),a)}async getEncryptionKey(e,t=new Date,i={},n=pe){await this.verifyPrimaryKey(t,i,n);let s=this.keyPacket;try{ga(s,n)}catch(c){throw F.wrapError("Could not verify primary key",c)}let o=this.subkeys.slice().sort((c,l)=>l.keyPacket.created-c.keyPacket.created||l.keyPacket.algorithm-c.keyPacket.algorithm),a;for(let c of o)if(!e||c.getKeyID().equals(e))try{await c.verify(t,n);let l={key:s,bind:c.keyPacket},d=await Bn(c.bindingSignatures,s,m.signature.subkeyBinding,l,t,n);if(u5(c.keyPacket,d,n))return ga(c.keyPacket,n),c}catch(l){a=l}try{let c=await this.getPrimarySelfSignature(t,i,n);if((!e||s.getKeyID().equals(e))&&u5(s,c,n))return ga(s,n),this}catch(c){a=c}throw F.wrapError("Could not find valid encryption key packet in key "+this.getKeyID().toHex(),a)}async isRevoked(e,t,i=new Date,n=pe){return bd(this.keyPacket,m.signature.keyRevocation,{key:this.keyPacket},this.revocationSignatures,e,t,i,n)}async verifyPrimaryKey(e=new Date,t={},i=pe){let n=this.keyPacket;if(await this.isRevoked(null,null,e,i))throw new Error("Primary key is revoked");let s=await this.getPrimarySelfSignature(e,t,i);if(yB(n,s,e))throw new Error("Primary key is expired");if(n.version!==6){let o=await Bn(this.directSignatures,n,m.signature.key,{key:n},e,i).catch(()=>{});if(o&&yB(n,o,e))throw new Error("Primary key is expired")}}async getExpirationTime(e,t=pe){let i;try{let n=await this.getPrimarySelfSignature(null,e,t),s=jy(this.keyPacket,n),o=n.getExpirationTime(),a=this.keyPacket.version!==6&&await Bn(this.directSignatures,this.keyPacket,m.signature.key,{key:this.keyPacket},null,t).catch(()=>{});if(a){let c=jy(this.keyPacket,a);i=Math.min(s,o,c)}else i=s<o?s:o}catch{i=null}return F.normalizeDate(i)}async getPrimarySelfSignature(e=new Date,t={},i=pe){let n=this.keyPacket;if(n.version===6)return Bn(this.directSignatures,n,m.signature.key,{key:n},e,i);let{selfCertification:s}=await this.getPrimaryUser(e,t,i);return s}async getPrimaryUser(e=new Date,t={},i=pe){let n=this.keyPacket,s=[],o;for(let d=0;d<this.users.length;d++)try{let u=this.users[d];if(!u.userID)continue;if(t.name!==void 0&&u.userID.name!==t.name||t.email!==void 0&&u.userID.email!==t.email||t.comment!==void 0&&u.userID.comment!==t.comment)throw new Error("Could not find user that matches that user ID");let f={userID:u.userID,key:n},h=await Bn(u.selfCertifications,n,m.signature.certGeneric,f,e,i);s.push({index:d,user:u,selfCertification:h})}catch(u){o=u}if(!s.length)throw o||new Error("Could not find primary user");await Promise.all(s.map(async d=>{d.selfCertification.revoked||await d.user.isRevoked(d.selfCertification,null,e,i)}));let a=s.sort(function(d,u){let f=d.selfCertification,h=u.selfCertification;return h.revoked-f.revoked||f.isPrimaryUserID-h.isPrimaryUserID||f.created-h.created}).pop(),{user:c,selfCertification:l}=a;if(l.revoked||await c.isRevoked(l,null,e,i))throw new Error("Primary user is revoked");return a}async update(e,t=new Date,i=pe){if(!this.hasSameFingerprintAs(e))throw new Error("Primary key fingerprints must be equal to update the key");if(!this.isPrivate()&&e.isPrivate()){if(!(this.subkeys.length===e.subkeys.length&&this.subkeys.every(o=>e.subkeys.some(a=>o.hasSameFingerprintAs(a)))))throw new Error("Cannot update public key with private key if subkeys mismatch");return e.update(this,i)}let n=this.clone();return await Qc(e,n,"revocationSignatures",t,s=>bd(n.keyPacket,m.signature.keyRevocation,n,[s],null,e.keyPacket,t,i)),await Qc(e,n,"directSignatures",t),await Promise.all(e.users.map(async s=>{let o=n.users.filter(a=>s.userID&&s.userID.equals(a.userID)||s.userAttribute&&s.userAttribute.equals(a.userAttribute));if(o.length>0)await Promise.all(o.map(a=>a.update(s,t,i)));else{let a=s.clone();a.mainKey=n,n.users.push(a)}})),await Promise.all(e.subkeys.map(async s=>{let o=n.subkeys.filter(a=>a.hasSameFingerprintAs(s));if(o.length>0)await Promise.all(o.map(a=>a.update(s,t,i)));else{let a=s.clone();a.mainKey=n,n.subkeys.push(a)}})),n}async getRevocationCertificate(e=new Date,t=pe){let i={key:this.keyPacket},n=await Bn(this.revocationSignatures,this.keyPacket,m.signature.keyRevocation,i,e,t),s=new Ct;s.push(n);let o=this.keyPacket.version!==6;return Zf(m.armor.publicKey,s.write(),null,null,"This is a revocation certificate",o,t)}async applyRevocationCertificate(e,t=new Date,i=pe){let n=await cI(e),o=(await Ct.fromBinary(n.data,RW,i)).findPacket(m.packet.signature);if(!o||o.signatureType!==m.signature.keyRevocation)throw new Error("Could not find revocation signature packet");if(!o.issuerKeyID.equals(this.getKeyID()))throw new Error("Revocation signature does not match key");try{await o.verify(this.keyPacket,m.signature.keyRevocation,{key:this.keyPacket},t,void 0,i)}catch(c){throw F.wrapError("Could not verify revocation signature",c)}let a=this.clone();return a.revocationSignatures.push(o),a}async signPrimaryUser(e,t,i,n=pe){let{index:s,user:o}=await this.getPrimaryUser(t,i,n),a=await o.certify(e,t,n),c=this.clone();return c.users[s]=a,c}async signAllUsers(e,t=new Date,i=pe){let n=this.clone();return n.users=await Promise.all(this.users.map(function(s){return s.certify(e,t,i)})),n}async verifyPrimaryUser(e,t=new Date,i,n=pe){let s=this.keyPacket,{user:o}=await this.getPrimaryUser(t,i,n);return e?await o.verifyAllCertifications(e,t,n):[{keyID:s.getKeyID(),valid:await o.verify(t,n).catch(()=>!1)}]}async verifyAllUsers(e,t=new Date,i=pe){let n=this.keyPacket,s=[];return await Promise.all(this.users.map(async o=>{let a=e?await o.verifyAllCertifications(e,t,i):[{keyID:n.getKeyID(),valid:await o.verify(t,i).catch(()=>!1)}];s.push(...a.map(c=>({userID:o.userID?o.userID.userID:null,userAttribute:o.userAttribute,keyID:c.keyID,valid:c.valid})))})),s}};["getKeyID","getFingerprint","getAlgorithmInfo","getCreationTime","hasSameFingerprintAs"].forEach(r=>{$y.prototype[r]=Lf.prototype[r]});Vy=class extends $y{constructor(e){if(super(),this.keyPacket=null,this.revocationSignatures=[],this.directSignatures=[],this.users=[],this.subkeys=[],e&&(this.packetListToStructure(e,new Set([m.packet.secretKey,m.packet.secretSubkey])),!this.keyPacket))throw new Error("Invalid key: missing public-key packet")}isPrivate(){return!1}toPublic(){return this}armor(e=pe){let t=this.keyPacket.version!==6;return Zf(m.armor.publicKey,this.toPacketList().write(),void 0,void 0,void 0,t,e)}},Yy=class r extends Vy{constructor(e){if(super(),this.packetListToStructure(e,new Set([m.packet.publicKey,m.packet.publicSubkey])),!this.keyPacket)throw new Error("Invalid key: missing private-key packet")}isPrivate(){return!0}toPublic(){let e=new Ct,t=this.toPacketList();for(let i of t)switch(i.constructor.tag){case m.packet.secretKey:{let n=ls.fromSecretKeyPacket(i);e.push(n);break}case m.packet.secretSubkey:{let n=Ky.fromSecretSubkeyPacket(i);e.push(n);break}default:e.push(i)}return new Vy(e)}armor(e=pe){let t=this.keyPacket.version!==6;return Zf(m.armor.privateKey,this.toPacketList().write(),void 0,void 0,void 0,t,e)}async getDecryptionKeys(e,t=new Date,i={},n=pe){let s=this.keyPacket,o=[],a=null;for(let l=0;l<this.subkeys.length;l++)if(!e||this.subkeys[l].getKeyID().equals(e,!0)){if(this.subkeys[l].keyPacket.isDummy()){a=a||new Error("Gnu-dummy key packets cannot be used for decryption");continue}try{let d={key:s,bind:this.subkeys[l].keyPacket},u=await Bn(this.subkeys[l].bindingSignatures,s,m.signature.subkeyBinding,d,t,n);f5(this.subkeys[l].keyPacket,u,n)&&o.push(this.subkeys[l])}catch(d){a=d}}let c=await this.getPrimarySelfSignature(t,i,n);if((!e||s.getKeyID().equals(e,!0))&&f5(s,c,n)&&(s.isDummy()?a=a||new Error("Gnu-dummy key packets cannot be used for decryption"):o.push(this)),o.length===0)throw a||new Error("No decryption key packets found");return o}isDecrypted(){return this.getKeys().some(({keyPacket:e})=>e.isDecrypted())}async validate(e=pe){if(!this.isPrivate())throw new Error("Cannot validate a public key");let t;if(!this.keyPacket.isDummy())t=this.keyPacket;else{let i=await this.getSigningKey(null,null,void 0,{...e,rejectPublicKeyAlgorithms:new Set,minRSABits:0});i&&!i.keyPacket.isDummy()&&(t=i.keyPacket)}if(t)return t.validate();{let i=this.getKeys();if(i.map(s=>s.keyPacket.isDummy()).every(Boolean))throw new Error("Cannot validate an all-gnu-dummy key");return Promise.all(i.map(s=>s.keyPacket.validate()))}}clearPrivateParams(){this.getKeys().forEach(({keyPacket:e})=>{e.isDecrypted()&&e.clearPrivateParams()})}async revoke({flag:e=m.reasonForRevocation.noReason,string:t=""}={},i=new Date,n=pe){if(!this.isPrivate())throw new Error("Need private key for revoking");let s={key:this.keyPacket},o=this.clone();return o.revocationSignatures.push(await as(s,[],this.keyPacket,{signatureType:m.signature.keyRevocation,reasonForRevocationFlag:m.write(m.reasonForRevocation,e),reasonForRevocationString:t},i,void 0,void 0,void 0,n)),o}async addSubkey(e={}){let t={...pe,...e.config};if(e.passphrase)throw new Error("Subkey could not be encrypted here, please encrypt whole key");if(e.rsaBits<t.minRSABits)throw new Error(`rsaBits should be at least ${t.minRSABits}, got: ${e.rsaBits}`);let i=this.keyPacket;if(i.isDummy())throw new Error("Cannot add subkey to gnu-dummy primary key");if(!i.isDecrypted())throw new Error("Key is not decrypted");let n=i.getAlgorithmInfo();n.type=NW(n.algorithm),n.rsaBits=n.bits||4096,n.curve=n.curve||"curve25519Legacy",e=IB(e,n);let s=await Y6(e,{...t,v6Keys:this.keyPacket.version===6});ga(s,t);let o=await W6(s,i,e,t),a=this.toPacketList();return a.push(s,o),new r(a)}};qW=F.constructAllowedPackets([ls,Ky,Mf,zy,Gy,mB,Rr]);LW=F.constructAllowedPackets([Ca,Uc,gB,Bd,pB,qf,Of,on,Rr]),HW=F.constructAllowedPackets([Of]),KW=F.constructAllowedPackets([Rr]),Hf=class r{constructor(e){this.packets=e||new Ct}getEncryptionKeyIDs(){let e=[];return this.packets.filterByTag(m.packet.publicKeyEncryptedSessionKey).forEach(function(i){e.push(i.publicKeyID)}),e}getSigningKeyIDs(){let e=this.unwrapCompressed(),t=e.packets.filterByTag(m.packet.onePassSignature);return t.length>0?t.map(n=>n.issuerKeyID):e.packets.filterByTag(m.packet.signature).map(n=>n.issuerKeyID)}async decrypt(e,t,i,n=new Date,s=pe){let o=this.packets.filterByTag(m.packet.symmetricallyEncryptedData,m.packet.symEncryptedIntegrityProtectedData,m.packet.aeadEncryptedData);if(o.length===0)throw new Error("No encrypted data found");let a=o[0],c=a.cipherAlgorithm,l=i||await this.decryptSessionKeys(e,t,c,n,s),d=null,u=Promise.all(l.map(async({algorithm:h,data:g})=>{if(!F.isUint8Array(g)||!a.cipherAlgorithm&&!F.isString(h))throw new Error("Invalid session key for decryption.");try{let p=a.cipherAlgorithm||m.write(m.symmetric,h);await a.decrypt(p,g,s)}catch(p){F.printDebugError(p),d=p}}));if(XE(a.encrypted),a.encrypted=null,await u,!a.packets||!a.packets.length)throw d||new Error("Decryption failed.");let f=new r(a.packets);return a.packets=new Ct,f}async decryptSessionKeys(e,t,i,n=new Date,s=pe){let o=[],a;if(t){let c=this.packets.filterByTag(m.packet.symEncryptedSessionKey);if(c.length===0)throw new Error("No symmetrically encrypted session key packet found.");await Promise.all(t.map(async function(l,d){let u;d?u=await Ct.fromBinary(c.write(),HW,s):u=c,await Promise.all(u.map(async function(f){try{await f.decrypt(l,s),o.push(f)}catch(h){F.printDebugError(h),h instanceof gd&&(a=h)}}))}))}else if(e){let c=this.packets.filterByTag(m.packet.publicKeyEncryptedSessionKey);if(c.length===0)throw new Error("No public key encrypted session key packet found.");await Promise.all(c.map(async function(l){await Promise.all(e.map(async function(d){let u;try{u=(await d.getDecryptionKeys(l.publicKeyID,null,void 0,s)).map(h=>h.keyPacket)}catch(h){a=h;return}let f=[m.symmetric.aes256,m.symmetric.aes128,m.symmetric.tripledes,m.symmetric.cast5];try{let h=await d.getPrimarySelfSignature(n,void 0,s);h.preferredSymmetricAlgorithms&&(f=f.concat(h.preferredSymmetricAlgorithms))}catch{}await Promise.all(u.map(async function(h){if(!h.isDecrypted())throw new Error("Decryption key is not decrypted.");if(s.constantTimePKCS1Decryption&&(l.publicKeyAlgorithm===m.publicKey.rsaEncrypt||l.publicKeyAlgorithm===m.publicKey.rsaEncryptSign||l.publicKeyAlgorithm===m.publicKey.rsaSign||l.publicKeyAlgorithm===m.publicKey.elgamal)){let p=l.write();await Promise.all((i?[i]:Array.from(s.constantTimePKCS1DecryptionSupportedSymmetricAlgorithms)).map(async I=>{let y=new qf;y.read(p);let w={sessionKeyAlgorithm:I,sessionKey:oB(I)};try{await y.decrypt(h,w),o.push(y)}catch(C){F.printDebugError(C),a=C}}))}else try{await l.decrypt(h);let p=i||l.sessionKeyAlgorithm;if(p&&!f.includes(m.write(m.symmetric,p)))throw new Error("A non-preferred symmetric algorithm was used.");o.push(l)}catch(p){F.printDebugError(p),a=p}}))})),XE(l.encrypted),l.encrypted=null}))}else throw new Error("No key or password specified.");if(o.length>0){if(o.length>1){let c=new Set;o=o.filter(l=>{let d=l.sessionKeyAlgorithm+F.uint8ArrayToString(l.sessionKey);return c.has(d)?!1:(c.add(d),!0)})}return o.map(c=>({data:c.sessionKey,algorithm:c.sessionKeyAlgorithm&&m.read(m.symmetric,c.sessionKeyAlgorithm)}))}throw a||new Error("Session key decryption failed.")}getLiteralData(){let t=this.unwrapCompressed().packets.findPacket(m.packet.literalData);return t&&t.getBytes()||null}getFilename(){let t=this.unwrapCompressed().packets.findPacket(m.packet.literalData);return t&&t.getFilename()||null}getText(){let t=this.unwrapCompressed().packets.findPacket(m.packet.literalData);return t?t.getText():null}static async generateSessionKey(e=[],t=new Date,i=[],n=pe){let{symmetricAlgo:s,aeadAlgo:o}=await UW(e,t,i,n),a=m.read(m.symmetric,s),c=o?m.read(m.aead,o):void 0;return await Promise.all(e.map(d=>d.getEncryptionKey().catch(()=>null).then(u=>{if(u&&(u.keyPacket.algorithm===m.publicKey.x25519||u.keyPacket.algorithm===m.publicKey.x448)&&!c&&!F.isAES(s))throw new Error("Could not generate a session key compatible with the given `encryptionKeys`: X22519 and X448 keys can only be used to encrypt AES session keys; change `config.preferredSymmetricAlgorithm` accordingly.")}))),{data:oB(s),algorithm:a,aeadAlgorithm:c}}async encrypt(e,t,i,n=!1,s=[],o=new Date,a=[],c=pe){if(i){if(!F.isUint8Array(i.data)||!F.isString(i.algorithm))throw new Error("Invalid session key for encryption.")}else if(e&&e.length)i=await r.generateSessionKey(e,o,a,c);else if(t&&t.length)i=await r.generateSessionKey(void 0,void 0,void 0,c);else throw new Error("No keys, passwords, or session key provided.");let{data:l,algorithm:d,aeadAlgorithm:u}=i,f=await r.encryptSessionKey(l,d,u,e,t,n,s,o,a,c),h=Bd.fromObject({version:u?2:1,aeadAlgorithm:u?m.write(m.aead,u):null});h.packets=this.packets;let g=m.write(m.symmetric,d);return await h.encrypt(g,l,c),f.packets.push(h),h.packets=new Ct,f}static async encryptSessionKey(e,t,i,n,s,o=!1,a=[],c=new Date,l=[],d=pe){let u=new Ct,f=m.write(m.symmetric,t),h=i&&m.write(m.aead,i);if(n){let g=await Promise.all(n.map(async function(p,I){let y=await p.getEncryptionKey(a[I],c,l,d),w=qf.fromObject({version:h?6:3,encryptionKeyPacket:y.keyPacket,anonymousRecipient:o,sessionKey:e,sessionKeyAlgorithm:f});return await w.encrypt(y.keyPacket),delete w.sessionKey,w}));u.push(...g)}if(s){let g=async function(w,C){try{return await w.decrypt(C,d),1}catch{return 0}},p=(w,C)=>w+C,I=async function(w,C,b,x){let _=new Of(d);return _.sessionKey=w,_.sessionKeyAlgorithm=C,b&&(_.aeadAlgorithm=b),await _.encrypt(x,d),d.passwordCollisionCheck&&(await Promise.all(s.map(U=>g(_,U)))).reduce(p)!==1?I(w,C,x):(delete _.sessionKey,_)},y=await Promise.all(s.map(w=>I(e,f,h,w)));u.push(...y)}return new r(u)}async sign(e=[],t=[],i=null,n=[],s=new Date,o=[],a=[],c=[],l=pe){let d=new Ct,u=this.packets.findPacket(m.packet.literalData);if(!u)throw new Error("No literal data packet to sign.");let f=await g5(u,e,t,i,n,s,o,a,c,!1,l),h=f.map((g,p)=>on.fromSignaturePacket(g,p===0)).reverse();return d.push(...h),d.push(u),d.push(...f),new r(d)}compress(e,t=pe){if(e===m.compression.uncompressed)return this;let i=new Uc(t);i.algorithm=e,i.packets=this.packets;let n=new Ct;return n.push(i),new r(n)}async signDetached(e=[],t=[],i=null,n=[],s=[],o=new Date,a=[],c=[],l=pe){let d=this.packets.findPacket(m.packet.literalData);if(!d)throw new Error("No literal data packet to sign.");return new Jy(await g5(d,e,t,i,n,s,o,a,c,!0,l))}async verify(e,t=new Date,i=pe){let n=this.unwrapCompressed(),s=n.packets.filterByTag(m.packet.literalData);if(s.length!==1)throw new Error("Can only verify message with one literal data packet.");let o=n.packets;St(o.stream)&&(o=o.concat(await Xt(o.stream,l=>l||[])));let a=o.filterByTag(m.packet.onePassSignature).reverse(),c=o.filterByTag(m.packet.signature);return a.length&&!c.length&&F.isStream(o.stream)&&!St(o.stream)?(await Promise.all(a.map(async l=>{l.correspondingSig=new Promise((d,u)=>{l.correspondingSigResolve=d,l.correspondingSigReject=u}),l.signatureData=Oc(async()=>(await l.correspondingSig).signatureData),l.hashed=Xt(await l.hash(l.signatureType,s[0],void 0,!1)),l.hashed.catch(()=>{})})),o.stream=Ea(o.stream,async(l,d)=>{let u=Sn(l),f=Li(d);try{for(let h=0;h<a.length;h++){let{value:g}=await u.read();a[h].correspondingSigResolve(g)}await u.readToEnd(),await f.ready,await f.close()}catch(h){a.forEach(g=>{g.correspondingSigReject(h)}),await f.abort(h)}}),PE(a,s,e,t,!1,i)):PE(c,s,e,t,!1,i)}async verifyDetached(e,t,i=new Date,n=pe){let o=this.unwrapCompressed().packets.filterByTag(m.packet.literalData);if(o.length!==1)throw new Error("Can only verify message with one literal data packet.");let a=e.packets.filterByTag(m.packet.signature);return PE(a,o,t,i,!0,n)}unwrapCompressed(){let e=this.packets.filterByTag(m.packet.compressedData);return e.length?new r(e[0].packets):this}async appendSignature(e,t=pe){await this.packets.read(F.isUint8Array(e)?e:(await cI(e)).data,KW,t)}write(){return this.packets.write()}armor(e=pe){let t=this.packets[this.packets.length-1],i=t.constructor.tag===Bd.tag?t.version!==2:this.packets.some(n=>n.constructor.tag===Rr.tag&&n.version!==6);return Zf(m.armor.message,this.write(),null,null,null,i,e)}};JW=Object.keys(pe).length;td=Oi&&typeof Oi=="object"&&"webcrypto"in Oi?Oi.webcrypto:Oi&&typeof Oi=="object"&&"randomBytes"in Oi?Oi:void 0;VW=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;m5=VW?r=>r:WW,nT=typeof Uint8Array.from([]).toHex=="function"&&typeof Uint8Array.fromHex=="function",XW=Array.from({length:256},(r,e)=>e.toString(16).padStart(2,"0"));Js={_0:48,_9:57,A:65,F:70,a:97,f:102};Gf=class{};tX=co;o1=BigInt(0),xB=BigInt(1);UE=r=>typeof r=="bigint"&&o1<=r;cA=r=>(xB<<BigInt(r))-xB;wi=BigInt(0),di=BigInt(1),kc=BigInt(2),aT=BigInt(3),cT=BigInt(4),lT=BigInt(5),sX=BigInt(7),dT=BigInt(8),oX=BigInt(9),uT=BigInt(16);dX=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];qc=class extends Gf{constructor(e,t,i,n){super(),this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.blockLen=e,this.outputLen=t,this.padOffset=i,this.isLE=n,this.buffer=new Uint8Array(e),this.view=TE(this.buffer)}update(e){vd(this),e=aA(e),ds(e);let{view:t,buffer:i,blockLen:n}=this,s=e.length;for(let o=0;o<s;){let a=Math.min(n-this.pos,s-o);if(a===n){let c=TE(e);for(;n<=s-o;o+=n)this.process(c,o);continue}i.set(e.subarray(o,o+a),this.pos),this.pos+=a,o+=a,this.pos===n&&(this.process(t,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){vd(this),iT(e,this),this.finished=!0;let{buffer:t,view:i,blockLen:n,isLE:s}=this,{pos:o}=this;t[o++]=128,an(this.buffer.subarray(o)),this.padOffset>n-o&&(this.process(i,0),o=0);for(let u=o;u<n;u++)t[u]=0;hX(i,n-8,BigInt(this.length*8),s),this.process(i,0);let a=TE(e),c=this.outputLen;if(c%4)throw new Error("_sha2: outputLen should be aligned to 32bit");let l=c/4,d=this.get();if(l>d.length)throw new Error("_sha2: outputLen bigger than state");for(let u=0;u<l;u++)a.setUint32(4*u,d[u],s)}digest(){let{buffer:e,outputLen:t}=this;this.digestInto(e);let i=e.slice(0,t);return this.destroy(),i}_cloneInto(e){e||(e=new this.constructor),e.set(...this.get());let{blockLen:t,buffer:i,length:n,finished:s,destroyed:o,pos:a}=this;return e.destroyed=o,e.finished=s,e.length=n,e.pos=a,n%t&&e.buffer.set(i),e}clone(){return this._cloneInto()}},na=Uint32Array.from([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),sa=Uint32Array.from([3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428]),jr=Uint32Array.from([3418070365,3238371032,1654270250,914150663,2438529370,812702999,355462360,4144912697,1731405415,4290775857,2394180231,1750603025,3675008525,1694076839,1203062813,3204075428]),$r=Uint32Array.from([1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209]),ay=BigInt(2**32-1),C5=BigInt(32);E5=(r,e,t)=>r>>>t,B5=(r,e,t)=>r<<32-t|e>>>t,rd=(r,e,t)=>r>>>t|e<<32-t,id=(r,e,t)=>r<<32-t|e>>>t,cy=(r,e,t)=>r<<64-t|e>>>t-32,ly=(r,e,t)=>r>>>t-32|e<<64-t,pX=(r,e,t)=>r<<t|e>>>32-t,mX=(r,e,t)=>e<<t|r>>>32-t,yX=(r,e,t)=>e<<t-32|r>>>64-t,IX=(r,e,t)=>r<<t-32|e>>>64-t;wX=(r,e,t)=>(r>>>0)+(e>>>0)+(t>>>0),xX=(r,e,t,i)=>e+t+i+(r/2**32|0)|0,CX=(r,e,t,i)=>(r>>>0)+(e>>>0)+(t>>>0)+(i>>>0),EX=(r,e,t,i,n)=>e+t+i+n+(r/2**32|0)|0,BX=(r,e,t,i,n)=>(r>>>0)+(e>>>0)+(t>>>0)+(i>>>0)+(n>>>0),bX=(r,e,t,i,n,s)=>e+t+i+n+s+(r/2**32|0)|0,vX=Uint32Array.from([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),oa=new Uint32Array(64),Zy=class extends qc{constructor(e=32){super(64,e,8,!1),this.A=na[0]|0,this.B=na[1]|0,this.C=na[2]|0,this.D=na[3]|0,this.E=na[4]|0,this.F=na[5]|0,this.G=na[6]|0,this.H=na[7]|0}get(){let{A:e,B:t,C:i,D:n,E:s,F:o,G:a,H:c}=this;return[e,t,i,n,s,o,a,c]}set(e,t,i,n,s,o,a,c){this.A=e|0,this.B=t|0,this.C=i|0,this.D=n|0,this.E=s|0,this.F=o|0,this.G=a|0,this.H=c|0}process(e,t){for(let u=0;u<16;u++,t+=4)oa[u]=e.getUint32(t,!1);for(let u=16;u<64;u++){let f=oa[u-15],h=oa[u-2],g=Yn(f,7)^Yn(f,18)^f>>>3,p=Yn(h,17)^Yn(h,19)^h>>>10;oa[u]=p+oa[u-7]+g+oa[u-16]|0}let{A:i,B:n,C:s,D:o,E:a,F:c,G:l,H:d}=this;for(let u=0;u<64;u++){let f=Yn(a,6)^Yn(a,11)^Yn(a,25),h=d+f+yT(a,c,l)+vX[u]+oa[u]|0,p=(Yn(i,2)^Yn(i,13)^Yn(i,22))+IT(i,n,s)|0;d=l,l=c,c=a,a=o+h|0,o=s,s=n,n=i,i=h+p|0}i=i+this.A|0,n=n+this.B|0,s=s+this.C|0,o=o+this.D|0,a=a+this.E|0,c=c+this.F|0,l=l+this.G|0,d=d+this.H|0,this.set(i,n,s,o,a,c,l,d)}roundClean(){an(oa)}destroy(){this.set(0,0,0,0,0,0,0,0),an(this.buffer)}},CB=class extends Zy{constructor(){super(28),this.A=sa[0]|0,this.B=sa[1]|0,this.C=sa[2]|0,this.D=sa[3]|0,this.E=sa[4]|0,this.F=sa[5]|0,this.G=sa[6]|0,this.H=sa[7]|0}},xT=wT(["0x428a2f98d728ae22","0x7137449123ef65cd","0xb5c0fbcfec4d3b2f","0xe9b5dba58189dbbc","0x3956c25bf348b538","0x59f111f1b605d019","0x923f82a4af194f9b","0xab1c5ed5da6d8118","0xd807aa98a3030242","0x12835b0145706fbe","0x243185be4ee4b28c","0x550c7dc3d5ffb4e2","0x72be5d74f27b896f","0x80deb1fe3b1696b1","0x9bdc06a725c71235","0xc19bf174cf692694","0xe49b69c19ef14ad2","0xefbe4786384f25e3","0x0fc19dc68b8cd5b5","0x240ca1cc77ac9c65","0x2de92c6f592b0275","0x4a7484aa6ea6e483","0x5cb0a9dcbd41fbd4","0x76f988da831153b5","0x983e5152ee66dfab","0xa831c66d2db43210","0xb00327c898fb213f","0xbf597fc7beef0ee4","0xc6e00bf33da88fc2","0xd5a79147930aa725","0x06ca6351e003826f","0x142929670a0e6e70","0x27b70a8546d22ffc","0x2e1b21385c26c926","0x4d2c6dfc5ac42aed","0x53380d139d95b3df","0x650a73548baf63de","0x766a0abb3c77b2a8","0x81c2c92e47edaee6","0x92722c851482353b","0xa2bfe8a14cf10364","0xa81a664bbc423001","0xc24b8b70d0f89791","0xc76c51a30654be30","0xd192e819d6ef5218","0xd69906245565a910","0xf40e35855771202a","0x106aa07032bbd1b8","0x19a4c116b8d2d0c8","0x1e376c085141ab53","0x2748774cdf8eeb99","0x34b0bcb5e19b48a8","0x391c0cb3c5c95a63","0x4ed8aa4ae3418acb","0x5b9cca4f7763e373","0x682e6ff3d6b2b8a3","0x748f82ee5defb2fc","0x78a5636f43172f60","0x84c87814a1f0ab72","0x8cc702081a6439ec","0x90befffa23631e28","0xa4506cebde82bde9","0xbef9a3f7b2c67915","0xc67178f2e372532b","0xca273eceea26619c","0xd186b8c721c0c207","0xeada7dd6cde0eb1e","0xf57d4f7fee6ed178","0x06f067aa72176fba","0x0a637dc5a2c898a6","0x113f9804bef90dae","0x1b710b35131c471b","0x28db77f523047d84","0x32caab7b40c72493","0x3c9ebe0a15c9bebc","0x431d67c49c100d4c","0x4cc5d4becb3e42b6","0x597f299cfc657e2a","0x5fcb6fab3ad6faec","0x6c44198c4a475817"].map(r=>BigInt(r))),kX=xT[0],SX=xT[1],aa=new Uint32Array(80),ca=new Uint32Array(80),eI=class extends qc{constructor(e=64){super(128,e,16,!1),this.Ah=$r[0]|0,this.Al=$r[1]|0,this.Bh=$r[2]|0,this.Bl=$r[3]|0,this.Ch=$r[4]|0,this.Cl=$r[5]|0,this.Dh=$r[6]|0,this.Dl=$r[7]|0,this.Eh=$r[8]|0,this.El=$r[9]|0,this.Fh=$r[10]|0,this.Fl=$r[11]|0,this.Gh=$r[12]|0,this.Gl=$r[13]|0,this.Hh=$r[14]|0,this.Hl=$r[15]|0}get(){let{Ah:e,Al:t,Bh:i,Bl:n,Ch:s,Cl:o,Dh:a,Dl:c,Eh:l,El:d,Fh:u,Fl:f,Gh:h,Gl:g,Hh:p,Hl:I}=this;return[e,t,i,n,s,o,a,c,l,d,u,f,h,g,p,I]}set(e,t,i,n,s,o,a,c,l,d,u,f,h,g,p,I){this.Ah=e|0,this.Al=t|0,this.Bh=i|0,this.Bl=n|0,this.Ch=s|0,this.Cl=o|0,this.Dh=a|0,this.Dl=c|0,this.Eh=l|0,this.El=d|0,this.Fh=u|0,this.Fl=f|0,this.Gh=h|0,this.Gl=g|0,this.Hh=p|0,this.Hl=I|0}process(e,t){for(let C=0;C<16;C++,t+=4)aa[C]=e.getUint32(t),ca[C]=e.getUint32(t+=4);for(let C=16;C<80;C++){let b=aa[C-15]|0,x=ca[C-15]|0,_=rd(b,x,1)^rd(b,x,8)^E5(b,x,7),R=id(b,x,1)^id(b,x,8)^B5(b,x,7),U=aa[C-2]|0,T=ca[C-2]|0,D=rd(U,T,19)^cy(U,T,61)^E5(U,T,6),B=id(U,T,19)^ly(U,T,61)^B5(U,T,6),Q=CX(R,B,ca[C-7],ca[C-16]),v=EX(Q,_,D,aa[C-7],aa[C-16]);aa[C]=v|0,ca[C]=Q|0}let{Ah:i,Al:n,Bh:s,Bl:o,Ch:a,Cl:c,Dh:l,Dl:d,Eh:u,El:f,Fh:h,Fl:g,Gh:p,Gl:I,Hh:y,Hl:w}=this;for(let C=0;C<80;C++){let b=rd(u,f,14)^rd(u,f,18)^cy(u,f,41),x=id(u,f,14)^id(u,f,18)^ly(u,f,41),_=u&h^~u&p,R=f&g^~f&I,U=BX(w,x,R,SX[C],ca[C]),T=bX(U,y,b,_,kX[C],aa[C]),D=U|0,B=rd(i,n,28)^cy(i,n,34)^cy(i,n,39),Q=id(i,n,28)^ly(i,n,34)^ly(i,n,39),v=i&s^i&a^s&a,E=n&o^n&c^o&c;y=p|0,w=I|0,p=h|0,I=g|0,h=u|0,g=f|0,{h:u,l:f}=js(l|0,d|0,T|0,D|0),l=a|0,d=c|0,a=s|0,c=o|0,s=i|0,o=n|0;let P=wX(D,Q,E);i=xX(P,T,B,v),n=P|0}({h:i,l:n}=js(this.Ah|0,this.Al|0,i|0,n|0)),{h:s,l:o}=js(this.Bh|0,this.Bl|0,s|0,o|0),{h:a,l:c}=js(this.Ch|0,this.Cl|0,a|0,c|0),{h:l,l:d}=js(this.Dh|0,this.Dl|0,l|0,d|0),{h:u,l:f}=js(this.Eh|0,this.El|0,u|0,f|0),{h,l:g}=js(this.Fh|0,this.Fl|0,h|0,g|0),{h:p,l:I}=js(this.Gh|0,this.Gl|0,p|0,I|0),{h:y,l:w}=js(this.Hh|0,this.Hl|0,y|0,w|0),this.set(i,n,s,o,a,c,l,d,u,f,h,g,p,I,y,w)}roundClean(){an(aa,ca)}destroy(){an(this.buffer),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}},EB=class extends eI{constructor(){super(48),this.Ah=jr[0]|0,this.Al=jr[1]|0,this.Bh=jr[2]|0,this.Bl=jr[3]|0,this.Ch=jr[4]|0,this.Cl=jr[5]|0,this.Dh=jr[6]|0,this.Dl=jr[7]|0,this.Eh=jr[8]|0,this.El=jr[9]|0,this.Fh=jr[10]|0,this.Fl=jr[11]|0,this.Gh=jr[12]|0,this.Gl=jr[13]|0,this.Hh=jr[14]|0,this.Hl=jr[15]|0}},d1=co(()=>new Zy),DX=co(()=>new CB),CT=co(()=>new eI),ET=co(()=>new EB),tI=class extends Gf{constructor(e,t){super(),this.finished=!1,this.destroyed=!1,rT(e);let i=aA(t);if(this.iHash=e.create(),typeof this.iHash.update!="function")throw new Error("Expected instance of class which extends utils.Hash");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;let n=this.blockLen,s=new Uint8Array(n);s.set(i.length>n?e.create().update(i).digest():i);for(let o=0;o<s.length;o++)s[o]^=54;this.iHash.update(s),this.oHash=e.create();for(let o=0;o<s.length;o++)s[o]^=106;this.oHash.update(s),an(s)}update(e){return vd(this),this.iHash.update(e),this}digestInto(e){vd(this),ds(e,this.outputLen),this.finished=!0,this.iHash.digestInto(e),this.oHash.update(e),this.oHash.digestInto(e),this.destroy()}digest(){let e=new Uint8Array(this.oHash.outputLen);return this.digestInto(e),e}_cloneInto(e){e||(e=Object.create(Object.getPrototypeOf(this),{}));let{oHash:t,iHash:i,finished:n,destroyed:s,blockLen:o,outputLen:a}=this;return e=e,e.finished=n,e.destroyed=s,e.blockLen=o,e.outputLen=a,e.oHash=t._cloneInto(e.oHash),e.iHash=i._cloneInto(e.iHash),e}clone(){return this._cloneInto()}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}},BT=(r,e,t)=>new tI(r,e).update(t).digest();BT.create=(r,e)=>new tI(r,e);kd=BigInt(0),Sc=BigInt(1);NE=new WeakMap,vT=new WeakMap;iI=class{constructor(e,t){this.BASE=e.BASE,this.ZERO=e.ZERO,this.Fn=e.Fn,this.bits=t}_unsafeLadder(e,t,i=this.ZERO){let n=e;for(;t>kd;)t&Sc&&(i=i.add(n)),n=n.double(),t>>=Sc;return i}precomputeWindow(e,t){let{windows:i,windowSize:n}=RE(t,this.bits),s=[],o=e,a=o;for(let c=0;c<i;c++){a=o,s.push(a);for(let l=1;l<n;l++)a=a.add(o),s.push(a);o=a.double()}return s}wNAF(e,t,i){if(!this.Fn.isValid(i))throw new Error("invalid scalar");let n=this.ZERO,s=this.BASE,o=RE(e,this.bits);for(let a=0;a<o.windows;a++){let{nextN:c,offset:l,isZero:d,isNeg:u,isNegF:f,offsetF:h}=b5(i,a,o);i=c,d?s=s.add(rI(f,t[h])):n=n.add(rI(u,t[l]))}return v5(i),{p:n,f:s}}wNAFUnsafe(e,t,i,n=this.ZERO){let s=RE(e,this.bits);for(let o=0;o<s.windows&&i!==kd;o++){let{nextN:a,offset:c,isZero:l,isNeg:d}=b5(i,o,s);if(i=a,!l){let u=t[c];n=n.add(d?u.negate():u)}}return v5(i),n}getPrecomputes(e,t,i){let n=NE.get(t);return n||(n=this.precomputeWindow(t,e),e!==1&&(typeof i=="function"&&(n=i(n)),NE.set(t,n))),n}cached(e,t,i){let n=qE(e);return this.wNAF(n,this.getPrecomputes(n,e,i),t)}unsafe(e,t,i,n){let s=qE(e);return s===1?this._unsafeLadder(e,t,n):this.wNAFUnsafe(s,this.getPrecomputes(s,e,i),t,n)}createCache(e,t){bT(t,this.bits),vT.set(e,t),NE.delete(e)}hasCache(e){return qE(e)!==1}};S5=(r,e)=>(r+(r>=0?e:-e)/DT)/e;bB=class extends Error{constructor(e=""){super(e)}},Xs={Err:bB,_tlv:{encode:(r,e)=>{let{Err:t}=Xs;if(r<0||r>256)throw new t("tlv.encode: wrong tag");if(e.length&1)throw new t("tlv.encode: unpadded data");let i=e.length/2,n=oy(i);if(n.length/2&128)throw new t("tlv.encode: long form length too big");let s=i>127?oy(n.length/2|128):"";return oy(r)+s+n+e},decode(r,e){let{Err:t}=Xs,i=0;if(r<0||r>256)throw new t("tlv.encode: wrong tag");if(e.length<2||e[i++]!==r)throw new t("tlv.decode: wrong tlv");let n=e[i++],s=!!(n&128),o=0;if(!s)o=n;else{let c=n&127;if(!c)throw new t("tlv.decode(long): indefinite length not supported");if(c>4)throw new t("tlv.decode(long): byte length is too big");let l=e.subarray(i,i+c);if(l.length!==c)throw new t("tlv.decode: length bytes not complete");if(l[0]===0)throw new t("tlv.decode(long): zero leftmost byte");for(let d of l)o=o<<8|d;if(i+=c,o<128)throw new t("tlv.decode(long): not minimal encoding")}let a=e.subarray(i,i+o);if(a.length!==o)throw new t("tlv.decode: wrong value length");return{v:a,l:e.subarray(i+o)}}},_int:{encode(r){let{Err:e}=Xs;if(r<eo)throw new e("integer: negative integers are not allowed");let t=oy(r);if(Number.parseInt(t[0],16)&8&&(t="00"+t),t.length&1)throw new e("unexpected DER parsing assertion: unpadded hex");return t},decode(r){let{Err:e}=Xs;if(r[0]&128)throw new e("invalid signature integer: negative");if(r[0]===0&&!(r[1]&128))throw new e("invalid signature integer: unnecessary leading zero");return vI(r)}},toSig(r){let{Err:e,_int:t,_tlv:i}=Xs,n=vt("signature",r),{v:s,l:o}=i.decode(48,n);if(o.length)throw new e("invalid signature: left bytes after parsing");let{v:a,l:c}=i.decode(2,s),{v:l,l:d}=i.decode(2,c);if(d.length)throw new e("invalid signature: left bytes after parsing");return{r:t.decode(a),s:t.decode(l)}},hexFromSig(r){let{_tlv:e,_int:t}=Xs,i=e.encode(2,t.encode(r.r)),n=e.encode(2,t.encode(r.s)),s=i+n;return e.encode(48,s)}},eo=BigInt(0),md=BigInt(1),DT=BigInt(2),dy=BigInt(3),TX=BigInt(4);FT={p:BigInt("0xffffffff00000001000000000000000000000000ffffffffffffffffffffffff"),n:BigInt("0xffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551"),h:BigInt(1),a:BigInt("0xffffffff00000001000000000000000000000000fffffffffffffffffffffffc"),b:BigInt("0x5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604b"),Gx:BigInt("0x6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296"),Gy:BigInt("0x4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5")},PT={p:BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffff0000000000000000ffffffff"),n:BigInt("0xffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52973"),h:BigInt(1),a:BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffff0000000000000000fffffffc"),b:BigInt("0xb3312fa7e23ee7e4988e056be3f82d19181d9c6efe8141120314088f5013875ac656398d8a2ed19d2a85c8edd3ec2aef"),Gx:BigInt("0xaa87ca22be8b05378eb1c71ef320ad746e1d3b628ba79b9859f741e082542a385502f25dbf55296c3a545e3872760ab7"),Gy:BigInt("0x3617de4a96262c6f5d9e98bf9292dc29f8f41dbd289a147ce9da3113b5f0b8c00a60b1ce1d7e819d7a431d7c90ea0e5f")},TT={p:BigInt("0x1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"),n:BigInt("0x01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e91386409"),h:BigInt(1),a:BigInt("0x1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc"),b:BigInt("0x0051953eb9618e1c9a1f929a21a0b68540eea2da725b99b315f3b8b489918ef109e156193951ec7e937b1652c0bd3bb1bf073573df883d2c34f1ef451fd46b503f00"),Gx:BigInt("0x00c6858e06b70404e9cd9e3ecb662395b4429c648139053fb521f828af606b4d3dbaa14b5e77efe75928fe1dc127a2ffa8de3348b3c1856a429bf97e7e31c2e5bd66"),Gy:BigInt("0x011839296a789a3bc0045c8a5fb42c7d1bd998f54449579b446817afbd17273e662c97ee72995ef42640c550b9013fad0761353c7086a272c24088be94769fd16650")},HX=ki(FT.p),KX=ki(PT.p),GX=ki(TT.p),zX=Lc({...FT,Fp:HX,lowS:!1},d1),JX=Lc({...PT,Fp:KX,lowS:!1},ET),jX=Lc({...TT,Fp:GX,lowS:!1,allowedPrivateKeyLengths:[130,131,132]},CT);$X=zX;VX=JX;YX=jX,WX=BigInt(0),Cf=BigInt(1),XX=BigInt(2),ZX=BigInt(7),eZ=BigInt(256),tZ=BigInt(113),UT=[],RT=[],NT=[];for(let r=0,e=Cf,t=1,i=0;r<24;r++){[t,i]=[i,(2*t+3*i)%5],UT.push(2*(5*i+t)),RT.push((r+1)*(r+2)/2%64);let n=WX;for(let s=0;s<7;s++)e=(e<<Cf^(e>>ZX)*tZ)%eZ,e&XX&&(n^=Cf<<(Cf<<BigInt(s))-Cf);NT.push(n)}qT=wT(NT,!0),rZ=qT[0],iZ=qT[1],D5=(r,e,t)=>t>32?yX(r,e,t):pX(r,e,t),Q5=(r,e,t)=>t>32?IX(r,e,t):mX(r,e,t);nI=class r extends Gf{constructor(e,t,i,n=!1,s=24){if(super(),this.pos=0,this.posOut=0,this.finished=!1,this.destroyed=!1,this.enableXOF=!1,this.blockLen=e,this.suffix=t,this.outputLen=i,this.enableXOF=n,this.rounds=s,Kf(i),!(0<e&&e<200))throw new Error("only keccak-f1600 function is supported");this.state=new Uint8Array(200),this.state32=$W(this.state)}clone(){return this._cloneInto()}keccak(){m5(this.state32),nZ(this.state32,this.rounds),m5(this.state32),this.posOut=0,this.pos=0}update(e){vd(this),e=aA(e),ds(e);let{blockLen:t,state:i}=this,n=e.length;for(let s=0;s<n;){let o=Math.min(t-this.pos,n-s);for(let a=0;a<o;a++)i[this.pos++]^=e[s++];this.pos===t&&this.keccak()}return this}finish(){if(this.finished)return;this.finished=!0;let{state:e,suffix:t,pos:i,blockLen:n}=this;e[i]^=t,(t&128)!==0&&i===n-1&&this.keccak(),e[n-1]^=128,this.keccak()}writeInto(e){vd(this,!1),ds(e),this.finish();let t=this.state,{blockLen:i}=this;for(let n=0,s=e.length;n<s;){this.posOut>=i&&this.keccak();let o=Math.min(i-this.posOut,s-n);e.set(t.subarray(this.posOut,this.posOut+o),n),this.posOut+=o,n+=o}return e}xofInto(e){if(!this.enableXOF)throw new Error("XOF is not possible for this instance");return this.writeInto(e)}xof(e){return Kf(e),this.xofInto(new Uint8Array(e))}digestInto(e){if(iT(e,this),this.finished)throw new Error("digest() was already called");return this.writeInto(e),this.destroy(),e}digest(){return this.digestInto(new Uint8Array(this.outputLen))}destroy(){this.destroyed=!0,an(this.state)}_cloneInto(e){let{blockLen:t,suffix:i,outputLen:n,rounds:s,enableXOF:o}=this;return e||(e=new r(t,i,n,o,s)),e.state32.set(this.state32),e.pos=this.pos,e.posOut=this.posOut,e.finished=this.finished,e.rounds=s,e.suffix=i,e.outputLen=n,e.enableXOF=o,e.destroyed=this.destroyed,e}},OT=(r,e,t)=>co(()=>new nI(e,r,t)),sZ=OT(6,136,256/8),oZ=OT(6,72,512/8),aZ=(r,e,t)=>eX((i={})=>new nI(e,r,i.dkLen===void 0?t:i.dkLen,!0)),cZ=aZ(31,136,256/8);la=BigInt(0),Cr=BigInt(1),ME=BigInt(2),lZ=BigInt(8);Ef=BigInt(0),nd=BigInt(1),uy=BigInt(2);Hc={p:BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffff"),n:BigInt("0x3fffffffffffffffffffffffffffffffffffffffffffffffffffffff7cca23e9c44edb49aed63690216cc2728dc58f552378c292ab5844f3"),h:BigInt(4),a:BigInt(1),d:BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffffffffffffffffffffffffffffffffffff6756"),Gx:BigInt("0x4f1970c66bed0ded221d15a622bf36da9e146570470f1767ea6de324a3d3a46412ae1af72ab66511433b80e18b00938e2626a82bc70cc05e"),Gy:BigInt("0x693f46716eb6bc248876203756c9c7624bea73736ca3984087789c1e05a0c2d73ad3ff1ce67c39c4fdbd132c4ed7c8ad9808795bf230fa14")},mZ=Object.assign({},Hc,{d:BigInt("0xd78b4bdc7f0daf19f24f38c29373a2ccad46157242a50f37809b1da3412a12e79ccc9c81264cfe9ad080997058fb61c4243cc32dbaa156b9"),Gx:BigInt("0x79a70b2b70400553ae7c9df416c792c61128751ac92969240c25a07d728bdc93e21f7787ed6972249de732f38496cd11698713093e9c04fc"),Gy:BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000000000000000000000000000000000000000000000000001")}),yZ=co(()=>cZ.create({dkLen:114})),IZ=BigInt(1),vB=BigInt(2),_5=BigInt(3);BigInt(4);wZ=BigInt(11),xZ=BigInt(22),F5=BigInt(44),CZ=BigInt(88),EZ=BigInt(223);bZ=ki(Hc.p,{BITS:456,isLE:!0}),P5=ki(Hc.n,{BITS:456,isLE:!0});kZ={...Hc,Fp:bZ,Fn:P5,nBitLength:P5.BITS,hash:yZ,adjustScalarBytes:HT,domain:vZ,uvRatio:BZ},SZ=hZ(kZ);MT(mZ);DZ=(()=>{let r=Hc.p;return pZ({P:r,type:"x448",powPminus2:e=>{let t=LT(e),i=bt(t,vB,r);return pr(i*e,r)},adjustScalarBytes:HT})})();u1={p:BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),n:BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),h:BigInt(1),a:BigInt(0),b:BigInt(7),Gx:BigInt("0x79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798"),Gy:BigInt("0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8")},QZ={beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),basises:[[BigInt("0x3086d221a7d46bcde86c90e49284eb15"),-BigInt("0xe4437ed6010e88286f547fa90abfe4c3")],[BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),BigInt("0x3086d221a7d46bcde86c90e49284eb15")]]},T5=BigInt(2);kB=ki(u1.p,{sqrt:_Z}),FZ=Lc({...u1,Fp:kB,lowS:!0,endo:QZ},d1),KT=d1,PZ=DX,GT=ki(BigInt("0xa9fb57dba1eea9bc3e660a909d838d726e3bf623d52620282013481d1f6e5377")),TZ=GT.create(BigInt("0x7d5a0975fc2c3057eef67530417affe7fb8055c126dc5c6ce94a4b44f330b5d9")),UZ=BigInt("0x26dc5c6ce94a4b44f330b5d9bbd77cbf958416295cf7e1ce6bccdc18ff8c07b6"),RZ=Lc({a:TZ,b:UZ,Fp:GT,n:BigInt("0xa9fb57dba1eea9bc3e660a909d838d718c397aa3b561a6f7901e0e82974856a7"),Gx:BigInt("0x8bd2aeb9cb7e57cb2c4b482ffc81b7afb9de27e1e3bd23c23a4453bd9ace3262"),Gy:BigInt("0x547ef835c3dac4fd97f8461a14611dc9c27745132ded8e545c1d54c72f046997"),h:BigInt(1),lowS:!1},KT),zT=CT,JT=ET,jT=ki(BigInt("0x8cb91e82a3386d280f5d6f7e50e641df152f7109ed5456b412b1da197fb71123acd3a729901d1a71874700133107ec53")),NZ=jT.create(BigInt("0x7bc382c63d8c150c3c72080ace05afa0c2bea28e4fb22787139165efba91f90f8aa5814a503ad4eb04a8c7dd22ce2826")),qZ=BigInt("0x04a8c7dd22ce28268b39b55416f0447c2fb77de107dcd2a62e880ea53eeb62d57cb4390295dbc9943ab78696fa504c11"),OZ=Lc({a:NZ,b:qZ,Fp:jT,n:BigInt("0x8cb91e82a3386d280f5d6f7e50e641df152f7109ed5456b31f166e6cac0425a7cf3ab6af6b7fc3103b883202e9046565"),Gx:BigInt("0x1d1c64f068cf45ffa2a63a81b7c13f6b8847a3e77ef14fe3db7fcafe0cbd10e8e826e03436d646aaef87b2e247d4af1e"),Gy:BigInt("0x8abe1d7520f9c2a45cb1eb8e95cfd55262b70b29feec5864e19c054ff99129280e4646217791811142820341263c5315"),h:BigInt(1),lowS:!1},JT),$T=ki(BigInt("0xaadd9db8dbe9c48b3fd4e6ae33c9fc07cb308db3b3c9d20ed6639cca703308717d4d9b009bc66842aecda12ae6a380e62881ff2f2d82c68528aa6056583a48f3")),MZ=$T.create(BigInt("0x7830a3318b603b89e2327145ac234cc594cbdd8d3df91610a83441caea9863bc2ded5d5aa8253aa10a2ef1c98b9ac8b57f1117a72bf2c7b9e7c1ac4d77fc94ca")),LZ=BigInt("0x3df91610a83441caea9863bc2ded5d5aa8253aa10a2ef1c98b9ac8b57f1117a72bf2c7b9e7c1ac4d77fc94cadc083e67984050b75ebae5dd2809bd638016f723"),HZ=Lc({a:MZ,b:LZ,Fp:$T,n:BigInt("0xaadd9db8dbe9c48b3fd4e6ae33c9fc07cb308db3b3c9d20ed6639cca70330870553e5c414ca92619418661197fac10471db1d381085ddaddb58796829ca90069"),Gx:BigInt("0x81aee4bdd82ed9645a21322e9c4c6a9385ed9f70b5d916c1b43b62eef4d0098eff3b1f78e2d0d48d50d1687b93b97d5f7c6d5047406a5e688b352209bcb9f822"),Gy:BigInt("0x7dde385d566332ecc0eabfa9cf7822fdf209f70024a57b1aa000c55b881f8111b2dcde494a5f485e5bca4bd88a2763aed1ca2b2fa8f0540678cd1e0f3ad80892"),h:BigInt(1),lowS:!1},zT),KZ=new Map(Object.entries({nistP256:$X,nistP384:VX,nistP521:YX,brainpoolP256r1:RZ,brainpoolP384r1:OZ,brainpoolP512r1:HZ,secp256k1:FZ,x448:DZ,ed448:SZ})),GZ=Object.freeze({__proto__:null,nobleCurves:KZ}),Bf=Uint32Array.from([1732584193,4023233417,2562383102,271733878,3285377520]),da=new Uint32Array(80),SB=class extends qc{constructor(){super(64,20,8,!1),this.A=Bf[0]|0,this.B=Bf[1]|0,this.C=Bf[2]|0,this.D=Bf[3]|0,this.E=Bf[4]|0}get(){let{A:e,B:t,C:i,D:n,E:s}=this;return[e,t,i,n,s]}set(e,t,i,n,s){this.A=e|0,this.B=t|0,this.C=i|0,this.D=n|0,this.E=s|0}process(e,t){for(let c=0;c<16;c++,t+=4)da[c]=e.getUint32(t,!1);for(let c=16;c<80;c++)da[c]=ma(da[c-3]^da[c-8]^da[c-14]^da[c-16],1);let{A:i,B:n,C:s,D:o,E:a}=this;for(let c=0;c<80;c++){let l,d;c<20?(l=yT(n,s,o),d=1518500249):c<40?(l=n^s^o,d=1859775393):c<60?(l=IT(n,s,o),d=2400959708):(l=n^s^o,d=3395469782);let u=ma(i,5)+l+a+d+da[c]|0;a=o,o=s,s=ma(n,30),n=i,i=u}i=i+this.A|0,n=n+this.B|0,s=s+this.C|0,o=o+this.D|0,a=a+this.E|0,this.set(i,n,s,o,a)}roundClean(){an(da)}destroy(){this.set(0,0,0,0,0),an(this.buffer)}},zZ=co(()=>new SB),JZ=Uint8Array.from([7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8]),VT=Uint8Array.from(new Array(16).fill(0).map((r,e)=>e)),jZ=VT.map(r=>(9*r+5)%16),YT=(()=>{let t=[[VT],[jZ]];for(let i=0;i<4;i++)for(let n of t)n.push(n[i].map(s=>JZ[s]));return t})(),WT=YT[0],XT=YT[1],ZT=[[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8],[12,13,11,15,6,9,9,7,12,15,11,13,7,8,7,7],[13,15,14,11,7,7,6,8,13,14,13,12,5,5,6,9],[14,11,12,14,8,6,5,5,15,12,15,14,9,9,8,6],[15,12,13,13,9,5,8,6,14,11,12,11,8,6,5,5]].map(r=>Uint8Array.from(r)),$Z=WT.map((r,e)=>r.map(t=>ZT[e][t])),VZ=XT.map((r,e)=>r.map(t=>ZT[e][t])),YZ=Uint32Array.from([0,1518500249,1859775393,2400959708,2840853838]),WZ=Uint32Array.from([1352829926,1548603684,1836072691,2053994217,0]);fy=new Uint32Array(16),DB=class extends qc{constructor(){super(64,20,8,!0),this.h0=1732584193,this.h1=-271733879,this.h2=-1732584194,this.h3=271733878,this.h4=-1009589776}get(){let{h0:e,h1:t,h2:i,h3:n,h4:s}=this;return[e,t,i,n,s]}set(e,t,i,n,s){this.h0=e|0,this.h1=t|0,this.h2=i|0,this.h3=n|0,this.h4=s|0}process(e,t){for(let h=0;h<16;h++,t+=4)fy[h]=e.getUint32(t,!0);let i=this.h0|0,n=i,s=this.h1|0,o=s,a=this.h2|0,c=a,l=this.h3|0,d=l,u=this.h4|0,f=u;for(let h=0;h<5;h++){let g=4-h,p=YZ[h],I=WZ[h],y=WT[h],w=XT[h],C=$Z[h],b=VZ[h];for(let x=0;x<16;x++){let _=ma(i+U5(h,s,a,l)+fy[y[x]]+p,C[x])+u|0;i=u,u=l,l=ma(a,10)|0,a=s,s=_}for(let x=0;x<16;x++){let _=ma(n+U5(g,o,c,d)+fy[w[x]]+I,b[x])+f|0;n=f,f=d,d=ma(c,10)|0,c=o,o=_}}this.set(this.h1+a+d|0,this.h2+l+f|0,this.h3+u+n|0,this.h4+i+o|0,this.h0+s+c|0)}roundClean(){an(fy)}destroy(){this.destroyed=!0,an(this.buffer),this.set(0,0,0,0,0)}},XZ=co(()=>new DB),ZZ=zZ,eee=XZ,tee=Array.from({length:64},(r,e)=>Math.floor(2**32*Math.abs(Math.sin(e+1)))),R5=(r,e,t)=>r&e^~r&t,Ay=new Uint32Array([1732584193,4023233417,2562383102,271733878]),LE=new Uint32Array(16),QB=class extends qc{constructor(){super(64,16,8,!0),this.A=Ay[0]|0,this.B=Ay[1]|0,this.C=Ay[2]|0,this.D=Ay[3]|0}get(){let{A:e,B:t,C:i,D:n}=this;return[e,t,i,n]}set(e,t,i,n){this.A=e|0,this.B=t|0,this.C=i|0,this.D=n|0}process(e,t){for(let a=0;a<16;a++,t+=4)LE[a]=e.getUint32(t,!0);let{A:i,B:n,C:s,D:o}=this;for(let a=0;a<64;a++){let c,l,d;a<16?(c=R5(n,s,o),l=a,d=[7,12,17,22]):a<32?(c=R5(o,n,s),l=(5*a+1)%16,d=[5,9,14,20]):a<48?(c=n^s^o,l=(3*a+5)%16,d=[4,11,16,23]):(c=s^(n|~o),l=7*a%16,d=[6,10,15,21]),c=c+i+tee[a]+LE[l],i=o,o=s,s=n,n=n+ma(c,d[a%4])}i=i+this.A|0,n=n+this.B|0,s=s+this.C|0,o=o+this.D|0,this.set(i,n,s,o)}roundClean(){LE.fill(0)}destroy(){this.set(0,0,0,0),this.buffer.fill(0)}},ree=tX(()=>new QB),iee=new Map(Object.entries({md5:ree,sha1:ZZ,sha224:PZ,sha256:KT,sha384:JT,sha512:zT,sha3_256:sZ,sha3_512:oZ,ripemd160:eee})),nee=Object.freeze({__proto__:null,nobleHashes:iee}),HE=Oi&&typeof Oi=="object"&&"webcrypto"in Oi?Oi.webcrypto:void 0,vi={},Pe=function(r){var e,t=new Float64Array(16);if(r)for(e=0;e<r.length;e++)t[e]=r[e];return t},f1=function(){throw new Error("no PRNG")},eU=new Uint8Array(32);eU[0]=9;_B=Pe(),sI=Pe([1]),see=Pe([56129,1]),oee=Pe([30883,4953,19914,30187,55467,16705,2637,112,59544,30585,16505,36039,65139,11119,27886,20995]),aee=Pe([61785,9906,39828,60374,45398,33411,5274,224,53552,61171,33010,6542,64743,22239,55772,9222]),N5=Pe([54554,36645,11616,51542,42930,38181,51040,26924,56412,64982,57905,49316,21502,52590,14035,8553]),q5=Pe([26200,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214]),cee=Pe([41136,18958,6951,50414,58488,44335,6150,12099,55207,15867,153,11085,57099,20417,9344,11139]);L5=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591];GE=new Float64Array([237,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16]);G5=32,gee=32,dU=32,uU=32,vc=64,kI=32,SI=64,pee=32;vi.scalarMult=function(r,e){if(_d(r,e),r.length!==gee)throw new Error("bad n size");if(e.length!==G5)throw new Error("bad p size");var t=new Uint8Array(G5);return sU(t,r,e),t};vi.box={};vi.box.keyPair=function(){var r=new Uint8Array(dU),e=new Uint8Array(uU);return uee(r,e),{publicKey:r,secretKey:e}};vi.box.keyPair.fromSecretKey=function(r){if(_d(r),r.length!==uU)throw new Error("bad secret key size");var e=new Uint8Array(dU);return oU(e,r),{publicKey:e,secretKey:new Uint8Array(r)}};vi.sign=function(r,e){if(_d(r,e),e.length!==SI)throw new Error("bad secret key size");var t=new Uint8Array(vc+r.length);return fee(t,r,r.length,e),t};vi.sign.detached=function(r,e){for(var t=vi.sign(r,e),i=new Uint8Array(vc),n=0;n<i.length;n++)i[n]=t[n];return i};vi.sign.detached.verify=function(r,e,t){if(_d(r,e,t),e.length!==vc)throw new Error("bad signature size");if(t.length!==kI)throw new Error("bad public key size");var i=new Uint8Array(vc+r.length),n=new Uint8Array(vc+r.length),s;for(s=0;s<vc;s++)i[s]=e[s];for(s=0;s<r.length;s++)i[s+vc]=r[s];return hee(n,i,i.length,t)>=0};vi.sign.keyPair=function(){var r=new Uint8Array(kI),e=new Uint8Array(SI);return cU(r,e),{publicKey:r,secretKey:e}};vi.sign.keyPair.fromSecretKey=function(r){if(_d(r),r.length!==SI)throw new Error("bad secret key size");for(var e=new Uint8Array(kI),t=0;t<e.length;t++)e[t]=r[32+t];return{publicKey:e,secretKey:new Uint8Array(r)}};vi.sign.keyPair.fromSeed=function(r){if(_d(r),r.length!==pee)throw new Error("bad seed size");for(var e=new Uint8Array(kI),t=new Uint8Array(SI),i=0;i<32;i++)t[i]=r[i];return cU(e,t,!0),{publicKey:e,secretKey:t}};vi.setPRNG=function(r){f1=r};(function(){if(HE&&HE.getRandomValues){var r=65536;vi.setPRNG(function(e,t){var i,n=new Uint8Array(t);for(i=0;i<t;i+=r)HE.getRandomValues(n.subarray(i,i+Math.min(t-i,r)));for(i=0;i<t;i++)e[i]=n[i];mee(n)})}})();Kc=Object.freeze({__proto__:null,default:vi});jf.keySize=jf.prototype.keySize=24;jf.blockSize=jf.prototype.blockSize=8;$f.blockSize=$f.prototype.blockSize=8;$f.keySize=$f.prototype.keySize=16;en=4294967295;Vf.keySize=Vf.prototype.keySize=32;Vf.blockSize=Vf.prototype.blockSize=16;Qn.prototype.BLOCKSIZE=8;Qn.prototype.SBOXES=[[3509652390,2564797868,805139163,3491422135,3101798381,1780907670,3128725573,4046225305,614570311,3012652279,134345442,2240740374,1667834072,1901547113,2757295779,4103290238,227898511,1921955416,1904987480,2182433518,2069144605,3260701109,2620446009,720527379,3318853667,677414384,3393288472,3101374703,2390351024,1614419982,1822297739,2954791486,3608508353,3174124327,2024746970,1432378464,3864339955,2857741204,1464375394,1676153920,1439316330,715854006,3033291828,289532110,2706671279,2087905683,3018724369,1668267050,732546397,1947742710,3462151702,2609353502,2950085171,1814351708,2050118529,680887927,999245976,1800124847,3300911131,1713906067,1641548236,4213287313,1216130144,1575780402,4018429277,3917837745,3693486850,3949271944,596196993,3549867205,258830323,2213823033,772490370,2760122372,1774776394,2652871518,566650946,4142492826,1728879713,2882767088,1783734482,3629395816,2517608232,2874225571,1861159788,326777828,3124490320,2130389656,2716951837,967770486,1724537150,2185432712,2364442137,1164943284,2105845187,998989502,3765401048,2244026483,1075463327,1455516326,1322494562,910128902,469688178,1117454909,936433444,3490320968,3675253459,1240580251,122909385,2157517691,634681816,4142456567,3825094682,3061402683,2540495037,79693498,3249098678,1084186820,1583128258,426386531,1761308591,1047286709,322548459,995290223,1845252383,2603652396,3431023940,2942221577,3202600964,3727903485,1712269319,422464435,3234572375,1170764815,3523960633,3117677531,1434042557,442511882,3600875718,1076654713,1738483198,4213154764,2393238008,3677496056,1014306527,4251020053,793779912,2902807211,842905082,4246964064,1395751752,1040244610,2656851899,3396308128,445077038,3742853595,3577915638,679411651,2892444358,2354009459,1767581616,3150600392,3791627101,3102740896,284835224,4246832056,1258075500,768725851,2589189241,3069724005,3532540348,1274779536,3789419226,2764799539,1660621633,3471099624,4011903706,913787905,3497959166,737222580,2514213453,2928710040,3937242737,1804850592,3499020752,2949064160,2386320175,2390070455,2415321851,4061277028,2290661394,2416832540,1336762016,1754252060,3520065937,3014181293,791618072,3188594551,3933548030,2332172193,3852520463,3043980520,413987798,3465142937,3030929376,4245938359,2093235073,3534596313,375366246,2157278981,2479649556,555357303,3870105701,2008414854,3344188149,4221384143,3956125452,2067696032,3594591187,2921233993,2428461,544322398,577241275,1471733935,610547355,4027169054,1432588573,1507829418,2025931657,3646575487,545086370,48609733,2200306550,1653985193,298326376,1316178497,3007786442,2064951626,458293330,2589141269,3591329599,3164325604,727753846,2179363840,146436021,1461446943,4069977195,705550613,3059967265,3887724982,4281599278,3313849956,1404054877,2845806497,146425753,1854211946],[1266315497,3048417604,3681880366,3289982499,290971e4,1235738493,2632868024,2414719590,3970600049,1771706367,1449415276,3266420449,422970021,1963543593,2690192192,3826793022,1062508698,1531092325,1804592342,2583117782,2714934279,4024971509,1294809318,4028980673,1289560198,2221992742,1669523910,35572830,157838143,1052438473,1016535060,1802137761,1753167236,1386275462,3080475397,2857371447,1040679964,2145300060,2390574316,1461121720,2956646967,4031777805,4028374788,33600511,2920084762,1018524850,629373528,3691585981,3515945977,2091462646,2486323059,586499841,988145025,935516892,3367335476,2599673255,2839830854,265290510,3972581182,2759138881,3795373465,1005194799,847297441,406762289,1314163512,1332590856,1866599683,4127851711,750260880,613907577,1450815602,3165620655,3734664991,3650291728,3012275730,3704569646,1427272223,778793252,1343938022,2676280711,2052605720,1946737175,3164576444,3914038668,3967478842,3682934266,1661551462,3294938066,4011595847,840292616,3712170807,616741398,312560963,711312465,1351876610,322626781,1910503582,271666773,2175563734,1594956187,70604529,3617834859,1007753275,1495573769,4069517037,2549218298,2663038764,504708206,2263041392,3941167025,2249088522,1514023603,1998579484,1312622330,694541497,2582060303,2151582166,1382467621,776784248,2618340202,3323268794,2497899128,2784771155,503983604,4076293799,907881277,423175695,432175456,1378068232,4145222326,3954048622,3938656102,3820766613,2793130115,2977904593,26017576,3274890735,3194772133,1700274565,1756076034,4006520079,3677328699,720338349,1533947780,354530856,688349552,3973924725,1637815568,332179504,3949051286,53804574,2852348879,3044236432,1282449977,3583942155,3416972820,4006381244,1617046695,2628476075,3002303598,1686838959,431878346,2686675385,1700445008,1080580658,1009431731,832498133,3223435511,2605976345,2271191193,2516031870,1648197032,4164389018,2548247927,300782431,375919233,238389289,3353747414,2531188641,2019080857,1475708069,455242339,2609103871,448939670,3451063019,1395535956,2413381860,1841049896,1491858159,885456874,4264095073,4001119347,1565136089,3898914787,1108368660,540939232,1173283510,2745871338,3681308437,4207628240,3343053890,4016749493,1699691293,1103962373,3625875870,2256883143,3830138730,1031889488,3479347698,1535977030,4236805024,3251091107,2132092099,1774941330,1199868427,1452454533,157007616,2904115357,342012276,595725824,1480756522,206960106,497939518,591360097,863170706,2375253569,3596610801,1814182875,2094937945,3421402208,1082520231,3463918190,2785509508,435703966,3908032597,1641649973,2842273706,3305899714,1510255612,2148256476,2655287854,3276092548,4258621189,236887753,3681803219,274041037,1734335097,3815195456,3317970021,1899903192,1026095262,4050517792,356393447,2410691914,3873677099,3682840055],[3913112168,2491498743,4132185628,2489919796,1091903735,1979897079,3170134830,3567386728,3557303409,857797738,1136121015,1342202287,507115054,2535736646,337727348,3213592640,1301675037,2528481711,1895095763,1721773893,3216771564,62756741,2142006736,835421444,2531993523,1442658625,3659876326,2882144922,676362277,1392781812,170690266,3921047035,1759253602,3611846912,1745797284,664899054,1329594018,3901205900,3045908486,2062866102,2865634940,3543621612,3464012697,1080764994,553557557,3656615353,3996768171,991055499,499776247,1265440854,648242737,3940784050,980351604,3713745714,1749149687,3396870395,4211799374,3640570775,1161844396,3125318951,1431517754,545492359,4268468663,3499529547,1437099964,2702547544,3433638243,2581715763,2787789398,1060185593,1593081372,2418618748,4260947970,69676912,2159744348,86519011,2512459080,3838209314,1220612927,3339683548,133810670,1090789135,1078426020,1569222167,845107691,3583754449,4072456591,1091646820,628848692,1613405280,3757631651,526609435,236106946,48312990,2942717905,3402727701,1797494240,859738849,992217954,4005476642,2243076622,3870952857,3732016268,765654824,3490871365,2511836413,1685915746,3888969200,1414112111,2273134842,3281911079,4080962846,172450625,2569994100,980381355,4109958455,2819808352,2716589560,2568741196,3681446669,3329971472,1835478071,660984891,3704678404,4045999559,3422617507,3040415634,1762651403,1719377915,3470491036,2693910283,3642056355,3138596744,1364962596,2073328063,1983633131,926494387,3423689081,2150032023,4096667949,1749200295,3328846651,309677260,2016342300,1779581495,3079819751,111262694,1274766160,443224088,298511866,1025883608,3806446537,1145181785,168956806,3641502830,3584813610,1689216846,3666258015,3200248200,1692713982,2646376535,4042768518,1618508792,1610833997,3523052358,4130873264,2001055236,3610705100,2202168115,4028541809,2961195399,1006657119,2006996926,3186142756,1430667929,3210227297,1314452623,4074634658,4101304120,2273951170,1399257539,3367210612,3027628629,1190975929,2062231137,2333990788,2221543033,2438960610,1181637006,548689776,2362791313,3372408396,3104550113,3145860560,296247880,1970579870,3078560182,3769228297,1714227617,3291629107,3898220290,166772364,1251581989,493813264,448347421,195405023,2709975567,677966185,3703036547,1463355134,2715995803,1338867538,1343315457,2802222074,2684532164,233230375,2599980071,2000651841,3277868038,1638401717,4028070440,3237316320,6314154,819756386,300326615,590932579,1405279636,3267499572,3150704214,2428286686,3959192993,3461946742,1862657033,1266418056,963775037,2089974820,2263052895,1917689273,448879540,3550394620,3981727096,150775221,3627908307,1303187396,508620638,2975983352,2726630617,1817252668,1876281319,1457606340,908771278,3720792119,3617206836,2455994898,1729034894,1080033504],[976866871,3556439503,2881648439,1522871579,1555064734,1336096578,3548522304,2579274686,3574697629,3205460757,3593280638,3338716283,3079412587,564236357,2993598910,1781952180,1464380207,3163844217,3332601554,1699332808,1393555694,1183702653,3581086237,1288719814,691649499,2847557200,2895455976,3193889540,2717570544,1781354906,1676643554,2592534050,3230253752,1126444790,2770207658,2633158820,2210423226,2615765581,2414155088,3127139286,673620729,2805611233,1269405062,4015350505,3341807571,4149409754,1057255273,2012875353,2162469141,2276492801,2601117357,993977747,3918593370,2654263191,753973209,36408145,2530585658,25011837,3520020182,2088578344,530523599,2918365339,1524020338,1518925132,3760827505,3759777254,1202760957,3985898139,3906192525,674977740,4174734889,2031300136,2019492241,3983892565,4153806404,3822280332,352677332,2297720250,60907813,90501309,3286998549,1016092578,2535922412,2839152426,457141659,509813237,4120667899,652014361,1966332200,2975202805,55981186,2327461051,676427537,3255491064,2882294119,3433927263,1307055953,942726286,933058658,2468411793,3933900994,4215176142,1361170020,2001714738,2830558078,3274259782,1222529897,1679025792,2729314320,3714953764,1770335741,151462246,3013232138,1682292957,1483529935,471910574,1539241949,458788160,3436315007,1807016891,3718408830,978976581,1043663428,3165965781,1927990952,4200891579,2372276910,3208408903,3533431907,1412390302,2931980059,4132332400,1947078029,3881505623,4168226417,2941484381,1077988104,1320477388,886195818,18198404,3786409e3,2509781533,112762804,3463356488,1866414978,891333506,18488651,661792760,1628790961,3885187036,3141171499,876946877,2693282273,1372485963,791857591,2686433993,3759982718,3167212022,3472953795,2716379847,445679433,3561995674,3504004811,3574258232,54117162,3331405415,2381918588,3769707343,4154350007,1140177722,4074052095,668550556,3214352940,367459370,261225585,2610173221,4209349473,3468074219,3265815641,314222801,3066103646,3808782860,282218597,3406013506,3773591054,379116347,1285071038,846784868,2669647154,3771962079,3550491691,2305946142,453669953,1268987020,3317592352,3279303384,3744833421,2610507566,3859509063,266596637,3847019092,517658769,3462560207,3443424879,370717030,4247526661,2224018117,4143653529,4112773975,2788324899,2477274417,1456262402,2901442914,1517677493,1846949527,2295493580,3734397586,2176403920,1280348187,1908823572,3871786941,846861322,1172426758,3287448474,3383383037,1655181056,3139813346,901632758,1897031941,2986607138,3066810236,3447102507,1393639104,373351379,950779232,625454576,3124240540,4148612726,2007998917,544563296,2244738638,2330496472,2058025392,1291430526,424198748,50039436,29584100,3605783033,2429876329,2791104160,1057563949,3255363231,3075367218,3463963227,1469046755,985887462]];Qn.prototype.PARRAY=[608135816,2242054355,320440878,57701188,2752067618,698298832,137296536,3964562569,1160258022,953160567,3193202383,887688300,3232508343,3380367581,1065670069,3041331479,2450970073,2306472731];Qn.prototype.NN=16;Qn.prototype._clean=function(r){return r<0&&(r=(r&2147483647)+2147483648),r};Qn.prototype._F=function(r){let e,t=r&255;r>>>=8;let i=r&255;r>>>=8;let n=r&255;r>>>=8;let s=r&255;return e=this.sboxes[0][s]+this.sboxes[1][n],e^=this.sboxes[2][i],e+=this.sboxes[3][t],e};Qn.prototype._encryptBlock=function(r){let e=r[0],t=r[1],i;for(i=0;i<this.NN;++i){e^=this.parray[i],t=this._F(e)^t;let n=e;e=t,t=n}e^=this.parray[this.NN+0],t^=this.parray[this.NN+1],r[0]=this._clean(t),r[1]=this._clean(e)};Qn.prototype.encryptBlock=function(r){let e,t=[0,0],i=this.BLOCKSIZE/2;for(e=0;e<this.BLOCKSIZE/2;++e)t[0]=t[0]<<8|r[e+0]&255,t[1]=t[1]<<8|r[e+i]&255;this._encryptBlock(t);let n=[];for(e=0;e<this.BLOCKSIZE/2;++e)n[e+0]=t[0]>>>24-8*e&255,n[e+i]=t[1]>>>24-8*e&255;return n};Qn.prototype._decryptBlock=function(r){let e=r[0],t=r[1],i;for(i=this.NN+1;i>1;--i){e^=this.parray[i],t=this._F(e)^t;let n=e;e=t,t=n}e^=this.parray[1],t^=this.parray[0],r[0]=this._clean(t),r[1]=this._clean(e)};Qn.prototype.init=function(r){let e,t=0;for(this.parray=[],e=0;e<this.NN+2;++e){let n=0;for(let s=0;s<4;++s)n=n<<8|r[t]&255,++t>=r.length&&(t=0);this.parray[e]=this.PARRAY[e]^n}for(this.sboxes=[],e=0;e<4;++e)for(this.sboxes[e]=[],t=0;t<256;++t)this.sboxes[e][t]=this.SBOXES[e][t];let i=[0,0];for(e=0;e<this.NN+2;e+=2)this._encryptBlock(i),this.parray[e+0]=i[0],this.parray[e+1]=i[1];for(e=0;e<4;++e)for(t=0;t<256;t+=2)this._encryptBlock(i),this.sboxes[e][t+0]=i[0],this.sboxes[e][t+1]=i[1]};Yf.keySize=Yf.prototype.keySize=16;Yf.blockSize=Yf.prototype.blockSize=8;Cee=new Map(Object.entries({tripledes:jf,cast5:$f,twofish:Vf,blowfish:Yf})),Eee=Object.freeze({__proto__:null,legacyCiphers:Cee});fU=new Uint32Array([4089235720,1779033703,2227873595,3144134277,4271175723,1013904242,1595750129,2773480762,2917565137,1359893119,725511199,2600822924,4215389547,528734635,327033209,1541459225]),Vr=new Uint8Array([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3,11,8,12,0,5,2,15,13,10,14,3,6,7,1,9,4,7,9,3,1,13,12,11,14,2,6,5,10,4,0,15,8,9,0,5,7,2,4,10,15,14,1,11,12,6,8,3,13,2,12,6,10,0,11,8,3,4,13,7,5,15,14,1,9,12,5,1,15,14,13,4,10,0,7,6,3,9,2,8,11,13,11,7,14,12,1,3,9,5,0,15,4,8,6,2,10,6,15,14,9,11,3,0,8,12,2,13,7,1,4,10,5,10,2,8,4,7,6,1,5,15,11,9,14,3,12,13,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3].map(r=>r*2));TB=class{constructor(e,t,i,n){let s=new Uint8Array(64);this.S={b:new Uint8Array(bf),h:new Uint32Array(UB/4),t0:new Uint32Array(2),c:0,outlen:e},s[0]=e,t&&(s[1]=t.length),s[2]=1,s[3]=1,i&&s.set(i,32),n&&s.set(n,48);let o=new Uint32Array(s.buffer,s.byteOffset,s.length/Uint32Array.BYTES_PER_ELEMENT);for(let a=0;a<16;a++)this.S.h[a]=fU[a]^o[a];if(t){let a=new Uint8Array(bf);a.set(t),this.update(a)}}update(e){if(!(e instanceof Uint8Array))throw new Error("Input must be Uint8Array or Buffer");let t=0;for(;t<e.length;){this.S.c===bf&&(z5(this.S.t0,this.S.c),J5(this.S,!1),this.S.c=0);let i=bf-this.S.c;this.S.b.set(e.subarray(t,t+i),this.S.c);let n=Math.min(i,e.length-t);this.S.c+=n,t+=n}return this}digest(e){z5(this.S.t0,this.S.c),this.S.b.fill(0,this.S.c),this.S.c=bf,J5(this.S,!0);let t=e||new Uint8Array(this.S.outlen);for(let i=0;i<this.S.outlen;i++)t[i]=this.S.h[i>>2]>>8*(i&3);return this.S.h=null,t.buffer}};UB=64,bf=128,g1=2,AU=19,Bee=4294967295,bee=4,vee=4294967295,kee=8,See=4294967295,Dee=8,Qee=4294967295,_ee=4294967295,Fee=32,Vs=1024,Pee=64,Tee=new Uint8Array(new Uint16Array([43981]).buffer)[0]===205;hU=1024,Oee=64*hU;jee=async()=>Gee(r=>zee(r),r=>Jee(r)),$ee=Object.freeze({__proto__:null,default:jee});pU=Xee(),Zee=Vee(pU),ete=q$({__proto__:null,default:Zee},[pU])});function tte(r){let e="",t=0,i=0;for(let n of r)for(i=i<<8|n,t+=8;t>=6;)t-=6,e+=yU[i>>t&63];return t>0&&(e+=yU[i<<6-t&63]),e}function wU(r){let e=atob(r),t=new Uint8Array(e.length);for(let i=0;i<e.length;i++)t[i]=e.charCodeAt(i);return t}function rte(r){let e="";for(let t of r)e+=String.fromCharCode(t);return btoa(e)}async function ite(r){return new Uint8Array(await crypto.subtle.digest("SHA-256",r))}function xU(r,e){let t=wU(e),n=`$2a$10$${tte(t).padEnd(22,".")}`;return IU.default.hashSync(r,n).slice(n.length)}async function lA(r,e){let t=await CI({armoredKey:r});return EI({privateKey:t,passphrase:e})}async function Fd(r,e){let t=await nA({armoredMessage:r}),{data:i}=await BI({message:t,decryptionKeys:e,format:"utf8"});return i}async function DI(r,e,t){let i=await X6({text:r});return Z6({message:i,encryptionKeys:e,signingKeys:t?[t]:void 0,format:"armored"})}async function m1(r){let e=await ite(new TextEncoder().encode(r));return rte(e)}async function CU(r,e){let t=await nA({armoredMessage:r}),i=await eT({message:t,decryptionKeys:e});if(!i.length)throw new Error("failed to decrypt session key");return i[0]}async function EU(r,e){let t=await nA({binaryMessage:r}),{data:i}=await BI({message:t,sessionKeys:e,format:"binary"});return i}async function y1(r,e){if(!r)return 0;try{let t=wU(r),i=await nA({binaryMessage:t}),{data:n}=await BI({message:i,decryptionKeys:e,format:"binary"});return nte(n)}catch{return 0}}function nte(r){let e=0;for(;e<r.length;){let t=r[e++],i=t>>3,n=t&7;if(n===0){let s=0n,o=0n;for(;e<r.length;){let a=r[e++];if(s|=BigInt(a&127)<<o,(a&128)===0)break;o+=7n}if(i===1)return Number(s)}else if(n===2){let s=0,o=0;for(;e<r.length;){let a=r[e++];if(s|=(a&127)<<o,(a&128)===0)break;o+=7}e+=s}else if(n===1)e+=8;else if(n===5)e+=4;else break}return 0}var IU,yU,I1=V(()=>{"use strict";p1();IU=Dr(mE(),1),yU="./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"});async function BU(r,e,t){let i=r.find(a=>a.Primary===1)||r[0];if(!i)throw new Error("user has no keys");let n=t.find(a=>a.ID===i.ID);if(!n)throw new Error("no salt for user key");let s=xU(e,n.KeySalt),o=[];for(let a of r)try{o.push(await lA(a.PrivateKey,s))}catch{}if(o.length===0)throw new Error("failed to unlock user keys (wrong password?)");return{userKR:o,saltedKeyPass:s}}async function bU(r,e,t){let i=new Map;for(let n of r){let s=[];for(let o of n.Keys)try{if(o.Token){let a=await Fd(o.Token,e);s.push(await lA(o.PrivateKey,a))}else s.push(await lA(o.PrivateKey,t))}catch{}s.length>0&&i.set(n.ID,s)}return i}async function vU(r,e){let t=e.get(r.AddressID);if(!t)throw new Error("no address keyring for share");let i=await Fd(r.Passphrase,t),n=await lA(r.Key,i);return[...t,n]}var QI,kU=V(()=>{"use strict";pE();_P();I1();QI=class{constructor(e){this.addition=e}addition;accessToken="";refreshToken="";uid="";saltedKeyPass="";setAuth(e,t,i){this.accessToken=e,this.refreshToken=t,this.uid=i}getUID(){return this.uid}getSaltedKeyPass(){return this.saltedKeyPass}setSaltedKeyPass(e){this.saltedKeyPass=e}authHeaders(){let e={Accept:wP,"X-Pm-Appversion":EP,"X-Pm-Drive-Sdk-Version":xP,"User-Agent":CP};return this.accessToken&&(e.Authorization=`Bearer ${this.accessToken}`,e["X-Pm-Uid"]=this.uid),e}async request(e,t={}){let i=t.method||"GET",n=this.authHeaders(),s={method:i,headers:n};t.body!==void 0&&(s.body=JSON.stringify(t.body),n["Content-Type"]="application/json");let o=await fetch(e,s),a=await o.text(),c={};try{c=a?JSON.parse(a):{}}catch{c={}}if(!o.ok)throw new Error(`Proton request failed: ${o.status} ${(c.Error||a).slice(0,200)}`);return c}async requestAPI(e,t={}){let i=e.startsWith("http")?e:`${ra}${e}`;if(t.params){let n=new URLSearchParams(Object.entries(t.params).map(([s,o])=>[s,String(o)])).toString();i+=(i.includes("?")?"&":"?")+n}return this.request(i,{method:t.method,body:t.body})}async login(){let e=await this.request(AP,{method:"POST",body:{Username:this.addition.email}});if(!e.Modulus||!e.ServerEphemeral)throw new Error("invalid auth info response");let t=await QP(this.addition.email,this.addition.password,e),i=await this.request(hP,{method:"POST",body:{Username:this.addition.email,ClientEphemeral:t.ClientEphemeral,ClientProof:t.ClientProof,SRPSession:t.SRPSession}});if(i.Code===1001||i.TwoFactor?.Enabled){if(!this.addition.two_fa_code)throw new Error("2FA is enabled but no two_fa_code provided");i=await this.request(gP,{method:"POST",body:{TwoFactorCode:this.addition.two_fa_code,SRPSession:t.SRPSession}})}if(!i.AccessToken||!i.UID)throw new Error(`auth failed: code=${i.Code}`);this.setAuth(i.AccessToken,i.RefreshToken,i.UID)}async refresh(){if(!this.refreshToken)throw new Error("refresh token is empty");let e=await this.request(pP,{method:"POST",body:{RefreshToken:this.refreshToken,ResponseType:"token",GrantType:"refresh_token",RedirectURI:"https://drive.proton.me"}});if(!e.AccessToken)throw new Error("refresh token failed");this.setAuth(e.AccessToken,e.RefreshToken||this.refreshToken,e.UID||this.uid)}async requestWithRetry(e,t){try{return await this.request(e,t)}catch(i){if(String(i.message).includes("401")&&this.refreshToken)return await this.refresh(),this.request(e,t);throw i}}async getSalts(){return(await this.requestWithRetry(mP,{})).KeySalts||[]}async getUser(){return(await this.requestWithRetry(yP,{})).User}async getAddresses(){return(await this.requestWithRetry(`${ra}/core/v4/addresses`,{})).Addresses||[]}async getShares(){return(await this.requestWithRetry(IP,{})).Shares||[]}}});function DU(r){return r?new Date(r*1e3).toISOString():new Date().toISOString()}function ste(r){let e={...r||{}};return e.email=(e.email||"").trim(),e.password=(e.password||"").trim(),e.two_fa_code=(e.two_fa_code||"").trim(),e.root_folder_id=(e.root_folder_id||"").trim()||"root",e.use_reusable_login=!!e.use_reusable_login,e.chunk_size=e.chunk_size||"4",e.reusable_credential=(e.reusable_credential||"").trim(),e}function ote(){let r=crypto.getRandomValues(new Uint8Array(16));return btoa(String.fromCharCode(...r))}var SU,_I,QU=V(()=>{"use strict";Be();He();pE();kU();I1();p1();SU=150;_I=class{addition;client;mainShare=null;mainShareKR=[];userKR=[];addrKRs=new Map;defaultAddrKR=[];defaultAddrID="";idCache=new Map;linkCache=new Map;nodeKRcache=new Map;childrenCache=new Map;constructor(e){this.addition=ste(e),this.client=new QI(this.addition)}async init(){if(!this.addition.email)throw new Error("email is required");if(!this.addition.password)throw new Error("password is required");await this.client.login();let e=await this.client.getSalts(),t=await this.client.getUser(),i=await this.client.getAddresses(),{userKR:n,saltedKeyPass:s}=await BU(t.Keys,this.addition.password,e);if(this.userKR=n,this.client.setSaltedKeyPass(s),this.addrKRs=await bU(i,this.userKR,s),this.addrKRs.size===0)throw new Error("failed to unlock address keys");this.defaultAddrID=i[0]?.ID||"",this.defaultAddrKR=this.addrKRs.get(this.defaultAddrID)||[];let o=await this.client.getShares();if(this.mainShare=o.find(a=>a.Type===BP)||o[0],!this.mainShare)throw new Error("no shares found");this.mainShareKR=await vU(this.mainShare,this.addrKRs),await this.getLinkKR(this.getRootLinkID())}getShareID(){if(!this.mainShare)throw new Error("not initialized");return this.mainShare.ShareID}getVolumeID(){if(!this.mainShare)throw new Error("not initialized");return this.mainShare.VolumeID}getRootLinkID(){if(!this.mainShare)throw new Error("not initialized");return this.addition.root_folder_id&&this.addition.root_folder_id!=="root"?this.addition.root_folder_id:this.mainShare.RootLinkID}async fetchLink(e){let t=this.linkCache.get(e);if(t)return t;let i=await this.client.requestAPI(`/drive/volumes/${this.getVolumeID()}/links/${e}`);if(!i.Link)throw new Error(`link not found: ${e}`);return this.linkCache.set(e,i.Link),i.Link}async getLinkKR(e){let t=this.nodeKRcache.get(e);if(t)return t;let i=await this.fetchLink(e),n=i.ParentLinkID?await this.getLinkKR(i.ParentLinkID):this.mainShareKR,s=await Fd(i.NodePassphrase,n),o=await CI({armoredKey:i.NodeKey}),a=await EI({privateKey:o,passphrase:s}),c=[...n,a];return this.nodeKRcache.set(e,c),c}async decryptName(e){if(!e.Name)return"unnamed";let t=await this.getLinkKR(e.LinkID);try{return await Fd(e.Name,t)}catch{return"unnamed"}}cleanPath(e){let t="/"+(e||"").split("/").filter(Boolean).join("/");return t==="/"?"/":t}joinPath(e,t){return e==="/"?`/${t}`:`${e}/${t}`}async listChildren(e){let t=this.childrenCache.get(e);if(t)return t;let i=[];for(let n=0;n<1e3;n++){let o=(await this.client.requestAPI(`/drive/volumes/${this.getVolumeID()}/links/${e}`,{params:{Children:"1",Page:String(n),PageSize:String(SU),Thumbnail:"0"}})).Links||[];if(i.push(...o),o.length<SU)break}return this.childrenCache.set(e,i),i}async resolveId(e){let t=this.cleanPath(e);if(t==="/")return this.getRootLinkID();let i=this.idCache.get(t);if(i)return i;let n=t.split("/").filter(Boolean),s=this.getRootLinkID(),o="/";for(let a of n){let c=await this.listChildren(s),l=null;for(let d of c)if(await this.decryptName(d)===a){l=d;break}if(!l)throw new Error(`folder not found: ${a}`);s=l.LinkID,o=this.joinPath(o,a),this.idCache.set(o,s)}return s}async list(e,t){let i=await this.resolveId(t),n=await this.listChildren(i),s=this.cleanPath(t),o=[];for(let a of n){let c=await this.decryptName(a);this.idCache.set(this.joinPath(s,c),a.LinkID);let l=a.Type===2;o.push({name:c,size:l?0:a.Size||0,is_dir:l,modified:DU(a.ModifyTime||a.CreateTime),sign:a.LinkID,type:X(c,l)})}return de(o,"name","asc")}async get(e,t){let i=this.cleanPath(t);if(i==="/")return{name:"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:this.getRootLinkID(),type:1};let n=await this.resolveId(i),s=await this.fetchLink(n),o=await this.decryptName(s),a=s.Type===2,c=0;if(!a){let l=await this.getLinkKR(n);c=await y1(s.XAttr||"",l),c||(c=s.Size||0)}return{name:o,size:c,is_dir:a,modified:DU(s.ModifyTime||s.CreateTime),sign:n,type:X(o,a),raw_url:""}}async createReadStream(e,t){let i=await this.resolveId(e),n=await this.fetchLink(i);if(n.Type===2)throw new Error("cannot stream a directory");let s=await this.getLinkKR(i),o=n.FileProperties?.ContentKeyPacket;if(!o)throw new Error("file has no content key packet");let a=await CU(o,s),c=await this.client.requestAPI(`/drive/volumes/${this.getVolumeID()}/links/${i}/revisions`),l=c.Revisions?.find(I=>I.State===1)||c.Revisions?.[0];if(!l?.Blocks?.length)throw new Error("file has no blocks");let d=l.Blocks,u=await y1(n.XAttr||"",s)||l.Size||0,f=(parseInt(this.addition.chunk_size||"4")||4)*1024*1024,h=t?.start??0,g=t?.end??(u>0?u-1:Number.MAX_SAFE_INTEGER),p=this;return new ReadableStream({async pull(I){try{let y=h;for(let w of d){if(y>g)break;let C=await p.downloadBlock(w.BareURL,w.Token),b=await EU(C,[a]),x=w.Index*f,_=x+b.length-1,R=Math.max(h,x),U=Math.min(g,_);R<=U&&(I.enqueue(b.slice(R-x,U-x+1)),y=U+1)}I.close()}catch(y){I.error(y)}}})}async downloadBlock(e,t){let i=await fetch(e,{headers:{Authorization:`Bearer ${t}`}});if(!i.ok)throw new Error(`block download failed: ${i.status}`);return new Uint8Array(await i.arrayBuffer())}async mkdir(e,t){let i=this.cleanPath(t),n=i.split("/").slice(0,-1).join("/")||"/",s=i.split("/").pop()||"",o=await this.resolveId(n),a=await this.getLinkKR(o),c=await DI(s,a),l=await m1(s),{publicKey:d}=await n1({type:"ecc",curve:"curve25519Legacy",userIDs:[{name:s,email:this.mainShare?.Creator||""}]}),u=ote(),f=await DI(u,a);await this.client.requestAPI("/drive/shares/"+this.getShareID()+"/folders",{method:"POST",body:{ParentLinkID:o,Name:c,Hash:l,NodeKey:d,NodePassphrase:f,NodePassphraseSignature:"",SignatureAddress:this.defaultAddrID,NameSignatureEmail:this.mainShare?.Creator||""}})}async rename(e,t,i){let n=await this.resolveId(t),s=await this.fetchLink(n),o=await this.getLinkKR(s.ParentLinkID),a=await DI(i,o),c=await m1(i),l=s.Hash||"";await this.client.requestAPI(`/drive/volumes/${this.getVolumeID()}/links/${n}/rename`,{method:"PUT",body:{Name:a,NameSignatureEmail:this.mainShare?.Creator||"",Hash:c,OriginalHash:l}})}async remove(e,t,i){let n=await this.resolveId(t);await this.client.requestAPI(`/drive/volumes/${this.getVolumeID()}/links/${n}/trash`,{method:"POST"})}async move(e,t,i,n,s){throw new Error("ProtonDrive move is not supported yet")}async copy(e,t,i,n,s){throw new Error("ProtonDrive copy is not supported")}async put(e,t,i){throw new Error("ProtonDrive upload is not supported yet")}}});var _U={};qn(_U,{LocalDriver:()=>w1});async function ba(){if(typeof process<"u"&&process.release?.name==="node"&&!zt)try{zt=await import("fs/promises"),ar=await import("path")}catch{}}var zt,ar,w1,FU=V(()=>{"use strict";Be();zt=null,ar=null;w1=class{async list(e,t){if(await ba(),!zt||!ar)throw new Error("LocalDriver is not supported in Edge Runtime");let i=[];try{i=await zt.readdir(t,{withFileTypes:!0})}catch{return[]}return await Promise.all(i.map(async s=>{let o=s.isDirectory(),a=0,c=new Date;try{let l=await zt.stat(ar.join(t,s.name));a=l.size,c=l.mtime}catch{}return{name:s.name,size:o?0:a,is_dir:o,created:c.toISOString(),modified:c.toISOString(),sign:"",type:X(s.name,o)}}))}async get(e,t){if(await ba(),!zt||!ar)throw new Error("LocalDriver is not supported in Edge Runtime");let i=await zt.stat(t),n=i.isDirectory(),s=t.split(/[\\/]+/).filter(Boolean).pop()||"root";return{name:s,size:n?0:i.size,is_dir:n,created:i.ctime?.toISOString()||i.mtime.toISOString(),modified:i.mtime.toISOString(),sign:"",type:X(s,n)}}async mkdir(e,t){if(await ba(),!zt||!ar)throw new Error("LocalDriver is not supported in Edge Runtime");await zt.mkdir(t,{recursive:!0})}async rename(e,t,i){if(await ba(),!zt||!ar)throw new Error("LocalDriver is not supported in Edge Runtime");let n=ar.join(ar.dirname(t),i);await zt.rename(t,n)}async remove(e,t,i){if(await ba(),!zt||!ar)throw new Error("LocalDriver is not supported in Edge Runtime");for(let n of i){let s=ar.join(t,n);await zt.rm(s,{recursive:!0,force:!0})}}async move(e,t,i,n,s){if(await ba(),!zt||!ar)throw new Error("LocalDriver is not supported in Edge Runtime");for(let o of i){let a=ar.join(n,o),c=ar.join(s,o);await zt.mkdir(ar.dirname(c),{recursive:!0}),await zt.rename(a,c)}}async copy(e,t,i,n,s){if(await ba(),!zt||!ar)throw new Error("LocalDriver is not supported in Edge Runtime");for(let o of i){let a=ar.join(n,o),c=ar.join(s,o);await zt.mkdir(ar.dirname(c),{recursive:!0}),await zt.cp(a,c,{recursive:!0})}}async put(e,t,i){if(await ba(),!zt||!ar)throw new Error("LocalDriver is not supported in Edge Runtime");await zt.mkdir(ar.dirname(t),{recursive:!0}),await zt.writeFile(t,i)}}});var PU={};qn(PU,{Client:()=>fte,FTPDriver:()=>lte,SFTPClient:()=>dte,SFTPDriver:()=>ate,createPool:()=>Ate,default:()=>hte,normalizeSFTPAddition:()=>cte,parseAddress:()=>ute});var ate,cte,lte,dte,ute,fte,Ate,hte,TU=V(()=>{ate=class{constructor(){throw new Error("[Edge/Serverless] SFTP driver requires full Node.js runtime")}},cte=r=>r,lte=class{constructor(){throw new Error("[Edge/Serverless] FTP driver requires full Node.js runtime")}},dte=class{constructor(){throw new Error("[Edge/Serverless] SFTP client requires full Node.js runtime")}},ute=()=>({host:"127.0.0.1",port:22}),fte=class{constructor(){throw new Error("[Edge/Serverless] ssh2 is not available in edge/serverless runtime")}},Ate=()=>{throw new Error("[Edge/Serverless] mysql2 is not available in edge/serverless runtime")},hte={}});var UU={};qn(UU,{Client:()=>wte,FTPDriver:()=>mte,SFTPClient:()=>yte,SFTPDriver:()=>gte,createPool:()=>xte,default:()=>Cte,normalizeSFTPAddition:()=>pte,parseAddress:()=>Ite});var gte,pte,mte,yte,Ite,wte,xte,Cte,RU=V(()=>{gte=class{constructor(){throw new Error("[Edge/Serverless] SFTP driver requires full Node.js runtime")}},pte=r=>r,mte=class{constructor(){throw new Error("[Edge/Serverless] FTP driver requires full Node.js runtime")}},yte=class{constructor(){throw new Error("[Edge/Serverless] SFTP client requires full Node.js runtime")}},Ite=()=>({host:"127.0.0.1",port:22}),wte=class{constructor(){throw new Error("[Edge/Serverless] ssh2 is not available in edge/serverless runtime")}},xte=()=>{throw new Error("[Edge/Serverless] mysql2 is not available in edge/serverless runtime")},Cte={}});var Ni={};qn(Ni,{copyItems:()=>fA,flushPendingDriverState:()=>Jt,getDriver:()=>lt,getItem:()=>Si,getOrCreateDriver:()=>qU,listItems:()=>Zt,makeDirectory:()=>dA,moveItems:()=>Td,putItem:()=>_n,removeItems:()=>va,renameItem:()=>uA,scheduleStoragePersistence:()=>OU});async function Ete(){if(!x1){let{LocalDriver:r}=await Promise.resolve().then(()=>(FU(),_U));x1=new r}return x1}async function Bte(r){if(typeof process<"u"&&process.release?.name==="node"){let{SFTPDriver:e}=await Promise.resolve().then(()=>(TU(),PU)),t=new e(ye(r));return await t.init?.(),t}throw new Error("SFTP storage driver requires Node.js runtime (raw TCP sockets not available in Cloudflare Workers)")}async function bte(r){if(typeof process<"u"&&process.release?.name==="node"){let{FTPDriver:e}=await Promise.resolve().then(()=>(RU(),UU)),t=new e(ye(r));return await t.init?.(),t}throw new Error("FTP storage driver requires Node.js runtime (raw TCP sockets not available in Cloudflare Workers)")}function Ste(r,e){if(Pd.size>=kte){let t=Pd.keys().next().value;t!==void 0&&Pd.delete(t)}Pd.set(r,e)}async function qU(r,e,t){let i=r.get(e);if(i)return i;let n=t();r.set(e,n);try{return await n}catch(s){throw r.get(e)===n&&r.delete(e),s}}function ye(r){let e=r?.addition;return e?typeof e=="string"?JSON.parse(e||"{}"):e:{}}async function NU(r,e){let t=(r||"").toLowerCase().replace(/[^a-z0-9]/g,"");if(t==="local"){if(typeof process<"u"&&process.release?.name==="node")return Ete();throw new Error("Local storage driver requires Node.js runtime (not available in Cloudflare Workers)")}if(t==="sftp")return Bte(e);if(t==="ftp")return bte(e);if(!e)throw new Error("failed get driver: storage config not found for driver "+r);let i;if(t==="onedriveapp"){i=new sh(ye(e));try{await i.init?.()}catch(n){throw console.error("onedrive_app init failed:",n),n}}else if(t==="onedrive"||t==="onedrivesb"||t==="onedrivebusiness"||t==="onedrivesharepoint"||t.startsWith("onedrive")&&t!=="onedriveapp"){i=new nh(ye(e),async n=>{try{let s=await ne(),o=(s.storages||[]).find(c=>c.id===e?.id);if(!o)return;let a=typeof o.addition=="string"?JSON.parse(o.addition||"{}"):o.addition||{};a.refresh_token=n,o.addition=JSON.stringify(a),await fe(s)}catch(s){console.warn("[Onedrive] failed to persist refresh token:",s)}});try{await i.init?.()}catch(n){throw console.error("onedrive init failed:",n),n}}else if(t==="aliyundrive"||t==="aliyundriveopen"||t==="aliyundriveshare"||t==="aliyun"||t==="aliyundriveshare2open"||t==="aliyundriveoauth2"||t.includes("aliyun"))i=new ch(ye(e)),await i.init?.();else if(t==="googlephoto"||t==="googlephotos"||t==="gphoto"||t==="google_photo")i=new Xh(ye(e)),await i.init?.();else if(t==="googledrive"||t==="gdrive"||t==="google"||t.startsWith("google"))i=new dh(ye(e)),await i.init?.();else if(t==="quark"||t==="quarkuc"||t==="uc"||t==="quarkcookie")i=new fh(ye(e)),await i.init?.();else if(t==="115"||t==="115cloud"||t==="115open"||t==="115netdisk")i=new hh(ye(e)),await i.init?.();else if(t==="cloudreve"||t==="cloudrevev3"||t==="cloudreve_v3"){let n=ye(e);i=new yh(n,async s=>{try{let o=await ne(),a=(o.storages||[]).find(l=>l.id===e?.id);if(!a)return;let c=typeof a.addition=="string"?JSON.parse(a.addition||"{}"):a.addition||{};c.cookie=s,a.addition=JSON.stringify(c),await fe(o)}catch(o){console.warn("[cloudreve] failed to persist cookie:",o)}}),await i.init?.()}else if(t==="cloudrevev4"||t==="cloudreve_v4")i=new ph(ye(e)),await i.init?.();else if(t==="openlistshare"||t==="openlist_share")i=new Ch(ye(e)),await i.init?.();else if(t==="openlist")i=new wh(ye(e)),await i.init?.();else if(t==="teldrive")i=new Bh(ye(e)),await i.init?.();else if(t==="mediafire")i=new vh(ye(e)),await i.init?.();else if(t==="githubreleases"||t==="github_releases")i=new Sh(ye(e)),await i.init?.();else if(t==="cnbreleases"||t==="cnb_releases")i=new Qh(ye(e)),await i.init?.();else if(t==="kodbox"||t==="kodo")i=new Fh(ye(e)),await i.init?.();else if(t==="ipfs"||t==="ipfsapi"||t==="ipfs_api")i=new Th(ye(e)),await i.init?.();else if(t==="lenovonasshare"||t==="lenovonas_share")i=new Rh(ye(e)),await i.init?.();else if(t==="misskey")i=new qh(ye(e)),await i.init?.();else if(t==="doubao"||t==="doubaonew"||t==="doubao_new"||t==="doubaoshare"||t==="doubao_share")i=new Mh(ye(e)),await i.init?.();else if(t==="quarkopen"||t==="quark_open"||t==="quarkoa")i=new Hh(ye(e)),await i.init?.();else if(t==="quarktv"||t==="uctv"||t==="quark_uc_tv")i=new Gh(ye(e)),await i.init?.();else if(t==="123open"||t==="123_open"||t==="123cloudopen")i=new Jh(ye(e)),await i.init?.();else if(t==="teambition"||t==="tb")i=new $h(ye(e)),await i.init?.();else if(t==="neteasemusic"||t==="netease"||t==="neteasecloudmusic"||t==="netease_music")i=new ng(ye(e)),await i.init?.();else if(t==="halalcloudopen"||t==="halalcloud_open"||t==="halalcloudopenapi"){let n=ye(e);i=new ag(n,async s=>{try{let o=await ne(),a=(o.storages||[]).find(l=>l.id===e?.id);if(!a)return;let c=typeof a.addition=="string"?JSON.parse(a.addition||"{}"):a.addition||{};c.refresh_token=s,a.addition=JSON.stringify(c),await fe(o)}catch(o){console.warn("[HalalCloud] failed to persist refresh_token:",o)}}),await i.init?.()}else if(t==="degoo"){let n=ye(e);i=new rg(n,async s=>{try{let o=await ne(),a=(o.storages||[]).find(l=>l.id===e?.id);if(!a)return;let c=typeof a.addition=="string"?JSON.parse(a.addition||"{}"):a.addition||{};s.accessToken&&(c.access_token=s.accessToken),s.refreshToken&&(c.refresh_token=s.refreshToken),a.addition=JSON.stringify(c),await fe(o)}catch(o){console.warn("[degoo] failed to persist tokens:",o)}}),await i.init?.()}else if(t==="febbox"||t==="febboxpan"){let n=ye(e);i=new eg(n,async s=>{try{let o=await ne(),a=(o.storages||[]).find(l=>l.id===e?.id);if(!a)return;let c=typeof a.addition=="string"?JSON.parse(a.addition||"{}"):a.addition||{};c.refresh_token=s,a.addition=JSON.stringify(c),await fe(o)}catch(o){console.warn("[febbox] failed to persist refresh_token:",o)}}),await i.init?.()}else if(t==="chaoxing"||t==="chaoxinggroupdrive"||t==="chaoxinggroup"||t.startsWith("chaoxing")){let n=ye(e);i=new Yh(n,async s=>{try{let o=await ne(),a=(o.storages||[]).find(l=>l.id===e?.id);if(!a)return;let c=typeof a.addition=="string"?JSON.parse(a.addition||"{}"):a.addition||{};c.cookie=s,a.addition=JSON.stringify(c),await fe(o)}catch(o){console.warn("[chaoxing] failed to persist cookie:",o)}}),await i.init?.()}else if(t==="123pan"||t==="123"||t==="123panshare"||t.startsWith("123")){let n=ye(e);i=new lg(n,async s=>{try{let o=await ne(),a=(o.storages||[]).find(l=>l.id===e?.id);if(!a)return;let c=typeof a.addition=="string"?JSON.parse(a.addition||"{}"):a.addition||{};c.access_token=s,a.addition=JSON.stringify(c),await fe(o)}catch(o){console.warn("[123Pan] failed to persist access_token:",o)}}),await i.init?.()}else if(t==="baiduphoto"||t==="baidu_photo"||t==="baiduphotos")i=new gg(ye(e)),await i.init?.();else if(t==="baidunetdisk"||t==="baidu"||t==="baiduyun"||t==="baidushare"||t.startsWith("baidu")){let n=ye(e);i=new ug(n,async s=>{try{let o=await ne(),a=(o.storages||[]).find(l=>l.id===e?.id);if(!a)return;let c=typeof a.addition=="string"?JSON.parse(a.addition||"{}"):a.addition||{};c.access_token=s.access_token,c.refresh_token=s.refresh_token,a.addition=JSON.stringify(Sl(c)),await fe(o)}catch(o){console.warn("[baidu_netdisk] failed to persist token:",o)}}),await i.init?.()}else if(t==="115open"||t==="115"||t==="115pan"||t==="115cloud"||t.startsWith("115")){let n=ye(e);i=new yg(n,async s=>{try{let o=await ne(),a=(o.storages||[]).find(l=>l.id===e?.id);if(!a)return;let c=typeof a.addition=="string"?JSON.parse(a.addition||"{}"):a.addition||{};c.access_token=s.access_token,c.refresh_token=s.refresh_token,a.addition=JSON.stringify(c),await fe(o)}catch(o){console.warn("[115open] failed to persist token:",o)}}),await i.init?.()}else if(t==="github"||t==="githubapi"||t==="github_api"){let n=ye(e);i=new wg(n),await i.init?.()}else if(t==="thunderexpert"||t==="thunderbrowserexpert"||t==="thunderxexpert"||t.includes("thunder")&&t.includes("expert")||t.includes("xunlei")&&t.includes("expert")){let n=ye(e);i=new op(n,async s=>{try{s.device_id&&(n.device_id=s.device_id),s.refresh_token&&(n.refresh_token=s.refresh_token),s.captcha_token&&(n.captcha_token=s.captcha_token),e.addition=JSON.stringify(n);let o=await ne(),a=(o.storages||[]).find(c=>c.id===e?.id);if(a){let c=typeof a.addition=="string"?JSON.parse(a.addition||"{}"):a.addition||{};s.refresh_token&&(c.refresh_token=s.refresh_token),s.captcha_token&&(c.captcha_token=s.captcha_token),s.device_id&&(c.device_id=s.device_id),a.addition=JSON.stringify(c),await fe(o)}}catch(o){console.warn("[thunderexpert] failed to persist token:",o)}}),await i.init?.()}else if(t==="thunder"||t==="xunlei"||t==="thunderbrowser"||t==="thunderx"||t.includes("thunder")||t.includes("xunlei")){let n=ye(e);i=new Nu(n,async s=>{try{s.device_id&&(n.device_id=s.device_id),s.refresh_token&&(n.refresh_token=s.refresh_token),s.captcha_token&&(n.captcha_token=s.captcha_token),e.addition=JSON.stringify(n);let o=await ne(),a=(o.storages||[]).find(c=>c.id===e?.id);if(a){let c=typeof a.addition=="string"?JSON.parse(a.addition||"{}"):a.addition||{};s.refresh_token&&(c.refresh_token=s.refresh_token),s.captcha_token&&(c.captcha_token=s.captcha_token),s.device_id&&(c.device_id=s.device_id),a.addition=JSON.stringify(c),await fe(o)}}catch(o){console.warn("[thunder] failed to persist token:",o)}}),await i.init?.()}else if(t==="lanzou"||t==="lanzoupan"||t==="ilanzou"||t==="lanzoui"||t==="lanzous"){let n=ye(e);i=new fp(n,async s=>{try{let o=await ne(),a=(o.storages||[]).find(l=>l.id===e?.id);if(!a)return;let c=typeof a.addition=="string"?JSON.parse(a.addition||"{}"):a.addition||{};c.cookie=s,a.addition=JSON.stringify(c),await fe(o)}catch(o){console.warn("[Lanzou] failed to persist cookie:",o)}}),await i.init?.()}else if(t==="189tv"||t==="cloud189tv"||t==="189tvcloud"||t==="189_tv"){let n=ye(e);i=new yp(n,async s=>{try{let o=await ne(),a=(o.storages||[]).find(l=>l.id===e?.id);if(!a)return;let c=typeof a.addition=="string"?JSON.parse(a.addition||"{}"):a.addition||{};c.access_token=s,a.addition=JSON.stringify(c),await fe(o)}catch(o){console.warn("[189TV] failed to persist access_token:",o)}}),await i.init?.()}else if(t==="189"||t==="189cloud"||t==="cloud189"||t==="ctyun"||t==="189pan"||t==="189cloudpc"||t==="189cloudapp"||t.startsWith("189")||t.includes("cloud189")){let n=ye(e);i=new pp(n),await i.init?.()}else if(t==="webdav"||t==="webdavdriver"){let n=ye(e);i=new wp(n),await i.init?.()}else if(t==="s3"||t==="doge"||t==="dogecloud"||t==="minio"||t==="ceph"||t==="aws"||t==="r2"||t==="b2"||t==="cos"||t==="oss"||t==="kodo"){let n=ye(e);i=new Fp(n,e.driver||"S3"),await i.init?.()}else if(t==="wopan"||t==="unicom"||t==="unicomcloud"||t==="woyun"||t==="chinaunicom"){let n=ye(e);i=new bp(n,async(s,o)=>{try{let a=await ne(),c=(a.storages||[]).find(d=>d.id===e?.id);if(!c)return;let l=typeof c.addition=="string"?JSON.parse(c.addition||"{}"):c.addition||{};l.access_token=s,l.refresh_token=o,c.addition=JSON.stringify(QC(l)),await fe(a)}catch(a){console.warn("[WoPan] failed to persist tokens:",a)}}),await i.init?.()}else if(t==="weiyun"||t==="tencentweiyun"||t==="txweiyun"||t.includes("weiyun")){let n=ye(e);i=new Rp(n,async s=>{try{let o=await ne(),a=(o.storages||[]).find(l=>l.id===e?.id);if(!a)return;let c=typeof a.addition=="string"?JSON.parse(a.addition||"{}"):a.addition||{};c.cookies=s,a.addition=JSON.stringify(OC(c)),await fe(o)}catch(o){console.warn("[WeiYun] failed to persist cookies:",o)}}),await i.init?.()}else if(t==="pikpak"||t==="pikpakshare"||t.includes("pikpak")){let n=ye(e);i=new qp(n,async s=>{try{let o=await ne(),a=(o.storages||[]).find(l=>l.id===e?.id);if(!a)return;let c=typeof a.addition=="string"?JSON.parse(a.addition||"{}"):a.addition||{};c.refresh_token=s.refreshToken,s.captchaToken&&(c.captcha_token=s.captchaToken),a.addition=JSON.stringify(c),await fe(o)}catch(o){console.warn("[PikPak] failed to persist tokens:",o)}}),await i.init?.()}else if(t==="seafile"||t.includes("seafile")){let n=ye(e);i=new Mp(n,async s=>{try{let o=await ne(),a=(o.storages||[]).find(l=>l.id===e?.id);if(!a)return;let c=typeof a.addition=="string"?JSON.parse(a.addition||"{}"):a.addition||{};c.token=s,a.addition=JSON.stringify(c),await fe(o)}catch(o){console.warn("[Seafile] failed to persist token:",o)}}),await i.init?.()}else if(t==="yandex"||t==="yandexdisk"||t==="yandexdrive"||t.includes("yandex")){let n=ye(e);i=new Hp(n,async s=>{try{let o=await ne(),a=(o.storages||[]).find(l=>l.id===e?.id);if(!a)return;let c=typeof a.addition=="string"?JSON.parse(a.addition||"{}"):a.addition||{};c.refresh_token=s.refreshToken,a.addition=JSON.stringify(c),await fe(o)}catch(o){console.warn("[Yandex] failed to persist token:",o)}}),await i.init?.()}else if(t==="terabox"||t==="dubox"||t.includes("terabox")){let n=ye(e);i=new Gp(n),await i.init?.()}else if(t==="mediatrack"||t==="fenmiao"||t.includes("mediatrack")){let n=ye(e);i=new Jp(n),await i.init?.()}else if(t==="alias"||t.includes("alias")){let n=ye(e);i=new jp(n),await i.init?.()}else if(t==="dropbox"||t.includes("dropbox")){let n=ye(e);i=new Vp(n,async s=>{try{let o=await ne(),a=(o.storages||[]).find(l=>l.id===e?.id);if(!a)return;let c=typeof a.addition=="string"?JSON.parse(a.addition||"{}"):a.addition||{};c.access_token=s.accessToken,c.refresh_token=s.refreshToken,a.addition=JSON.stringify(c),await fe(o)}catch(o){console.warn("[Dropbox] failed to persist token:",o)}}),await i.init?.()}else if(t==="wps"||t.includes("wps")||t.includes("kdocs")){let n=ye(e);i=new Wp(n),await i.init?.()}else if(t==="mopan"||t==="mobilecloud"||t==="cmcc"||t==="chinamobile"||t.includes("mopan")){let n=ye(e);i=new Sp(n,async(s,o)=>{try{let a=await ne(),c=(a.storages||[]).find(u=>u.id===e?.id);if(!c)return;let l=typeof c.addition=="string"?JSON.parse(c.addition||"{}"):c.addition||{};l.device_info=s;let d=o.replace(/^Bearer\s+/i,"");l.token=d,c.addition=JSON.stringify(l),await fe(a)}catch(a){console.warn("[MoPan] failed to persist tokens:",a)}}),await i.init?.()}else if(t==="139"||t==="139yun"||t==="caiyun"||t==="hecaiyun"||t.includes("139")){let n=ye(e);i=new Zp(n),await i.init?.()}else if(t==="mega"||t==="meganz"||t.includes("mega")){let n=ye(e);i=new tm(n),await i.init?.()}else if(t==="115share"||t==="115sharelink"||t.includes("115")&&t.includes("share")){let n=ye(e);i=new im(n),await i.init?.()}else if(t==="123share"||t==="123panshare"||t==="123link"||t.includes("123")&&t.includes("share")){let n=ye(e);i=new sm(n),await i.init?.()}else if(t==="aliyundriveshare"||t==="aliyunshare"||t==="alishare"||t.includes("ali")&&t.includes("share")){let n=ye(e);i=new am(n),await i.init?.()}else if(t==="onedrivesharelink"||t==="onedriveshare"||t==="sharepointshare"||t.includes("onedrive")&&t.includes("share")){let n=ye(e);i=new lm(n),await i.init?.()}else if(t==="pikpakshare"||t.includes("pikpak")&&t.includes("share")){let n=ye(e);i=new um(n),await i.init?.()}else if(t==="smb"||t==="samba"||t==="cifs"||t.includes("smb")){let n=ye(e);i=new fm(n),await i.init?.()}else if(t==="crypt"){let n=ye(e);i=new pm(n),await i.init?.()}else if(t==="virtual"){let n=ye(e);i=new mm(n)}else if(t==="alistv3"||t==="alist"||t==="alistv2"){let n=ye(e);i=new ym(n,async s=>{try{let o=await ne(),a=(o.storages||[]).find(l=>l.id===e?.id);if(!a)return;let c=typeof a.addition=="string"?JSON.parse(a.addition||"{}"):a.addition||{};c.token=s,a.addition=JSON.stringify(c),await fe(o)}catch(o){console.warn("[alist_v3] failed to persist token:",o)}}),await i.init?.()}else if(t==="urltree"||t==="urlstree"){let n=ye(e);i=new Im(n,async s=>{try{let o=await ne(),a=(o.storages||[]).find(l=>l.id===e?.id);if(!a)return;let c=typeof a.addition=="string"?JSON.parse(a.addition||"{}"):a.addition||{};c.url_structure=s,a.addition=JSON.stringify(c),await fe(o)}catch(o){console.warn("[url_tree] failed to persist structure:",o)}}),await i.init?.()}else if(t==="strm"){let n=ye(e);i=new wm(n),await i.init?.()}else if(t==="chunk"){let n=ye(e);i=new xm(n),await i.init?.()}else if(t==="azureblob"||t==="azure"||t==="azblob"){let n=ye(e);i=new Cm(n),await i.init?.()}else if(t==="uss"||t==="upyun"){let n=ye(e);i=new Em(n),await i.init?.()}else if(t==="autoindex"||t==="nginxautoindex"){let n=ye(e);i=new Zm(n),await i.init?.()}else if(t==="protondrive"||t==="proton"){let n=ye(e);i=new _I(n),await i.init?.()}else if(t==="alidoc"||t==="dingtalkdoc"){let n=ye(e);i=new bm(n),await i.init?.()}else if(t==="emby"||t==="jellyfin"){let n=ye(e);i=new km(n),await i.init?.()}else if(t==="bunnystorage"||t==="bunnycdn"||t==="bunny"){let n=ye(e);i=new Qm(n),await i.init?.()}else if(t==="cloudflareimgbed"||t==="cfimgbed"||t==="cloudflareimage"){let n=ye(e);i=new Pm(n),await i.init?.()}else if(t==="guangyapan"||t==="guangya"){let n=ye(e);i=new Tm(n,async(s,o)=>{try{let a=await ne(),c=(a.storages||[]).find(d=>d.id===e?.id);if(!c)return;let l=typeof c.addition=="string"?JSON.parse(c.addition||"{}"):c.addition||{};l.access_token=s,o&&(l.refresh_token=o),c.addition=JSON.stringify(l),await fe(a)}catch(a){console.warn("[GuangYaPan] failed to persist tokens:",a)}}),await i.init?.()}else throw new Error("failed get driver: unsupported driver '"+r+"'");return i}async function lt(r,e){if((r||"").toLowerCase().replace(/[^a-z0-9]/g,"")==="local")return NU(r,e);if(!e)throw new Error("failed get driver: storage config not found for driver "+r);let i=`${e.id}_${e.modified}`,n=Pd.get(i);return n||qU(vte,i,async()=>{let s=Pd.get(i);if(s)return s;let o=await NU(r,e);return Ste(i,o),o})}function Dte(r){let e=(r||"").toLowerCase().replace(/[^a-z0-9]/g,"");return e==="189"||e==="189cloud"||e==="cloud189"||e==="ctyun"||e==="189pan"}async function OU(r,e){if(r)try{r(e);return}catch{}await e}async function Qte(r,e){let t=String(r?.id||"");if(!t)return;let n=(FI.get(t)||Promise.resolve()).catch(()=>{}).then(async()=>{let s=await ne(),o=(s.storages||[]).find(c=>String(c.id)===t);if(!o)return;let a=typeof o.addition=="string"?JSON.parse(o.addition||"{}"):o.addition||{};a.cookies!==void 0||MU(r?.driver)?a.cookies=e:a.cookie=e,o.addition=JSON.stringify(a),String(r?.id)===t&&(r.addition=o.addition),await fe(s)});FI.set(t,n);try{await n}finally{FI.get(t)===n&&FI.delete(t)}}function MU(r){let e=(r||"").toLowerCase().replace(/[^a-z0-9]/g,"");return e==="weiyun"||e==="tencentweiyun"||e==="txweiyun"||e.includes("weiyun")}async function Jt(r,e,t,i){if(!Dte(r)&&!MU(r))return;let s=t.consumePendingCookie?.call(t);if(!s)return;let o=Qte(e,s).catch(a=>{console.warn(`[${r}] failed to persist cookie:`,a)});await OU(i?.waitUntil,o)}async function Zt(r,e){let t=await tt(r,e?.env),i=[],n="Virtual";if(t.storage){n=t.storage.driver;try{let c=await lt(n,t.storage);try{i=await c.list(r,t.physical)}finally{await Jt(n,t.storage,c,e)}if(t.storage.status!=="work"){t.storage.status="work";let l=await ne(e?.env),d=(l.storages||[]).find(u=>u.id===t.storage?.id);d&&(d.status="work",await fe(l,e?.env))}}catch(c){try{let l=await ne(e?.env),d=(l.storages||[]).find(u=>u.id===t.storage?.id);d&&(d.status=c.message||String(c),await fe(l,e?.env))}catch(l){console.warn("Failed to persist storage status:",l)}throw c}}else if(!t.isVirtual)throw new Error("failed get storage: storage not found");let o=((await ne(e?.env)).storages||[]).filter(c=>!c.disabled),a=t.cleanPath;return o.forEach(c=>{let l="/"+(c.mount_path||"").split("/").filter(Boolean).join("/");if(l===a||l==="/")return;let d=a==="/"?"/":a+"/";if(l.startsWith(d)){let u=l.slice(d.length).split("/").filter(Boolean)[0];u&&!i.some(f=>f.name===u)&&i.push({name:u,size:0,is_dir:!0,modified:c.modified||new Date().toISOString(),sign:"",type:1})}}),i.forEach(c=>{c.type||(c.type=X(c.name,c.is_dir))}),{content:i,provider:n,storage:t.storage}}async function Si(r,e){let t=await tt(r,e?.env);if(t.isVirtual)return{item:{name:t.cleanPath.split("/").filter(Boolean).pop()||"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1},provider:"Virtual",rawUrl:""};if(t.storage&&t.relative==="/"){let o=t.cleanPath.split("/").filter(Boolean).pop()||"root",a=ye(t.storage);return{item:{name:o,size:0,is_dir:!0,modified:t.storage.modified||new Date().toISOString(),sign:String(a.root_folder_id||""),type:1,raw_url:""},provider:t.storage.driver,rawUrl:`/api/p${r.startsWith("/")?"":"/"}${r}`}}let i=t.storage?t.storage.driver:"Local",n=await lt(i,t.storage),s;try{s=await n.get(r,t.physical)}finally{await Jt(i,t.storage,n,e)}return s.type||(s.type=X(s.name,s.is_dir)),{item:s,provider:i,rawUrl:`/api/p${r.startsWith("/")?"":"/"}${r}`}}async function dA(r,e){let t=await tt(r,e?.env);if(t.isVirtual)throw new Error("failed get storage: storage not found");let i=await lt(t.storage.driver,t.storage);try{await i.mkdir(r,t.physical)}finally{await Jt(t.storage.driver,t.storage,i,e)}}async function uA(r,e,t){let i=await tt(r,t?.env);if(i.isVirtual)throw new Error("failed get storage: storage not found");let n=await lt(i.storage.driver,i.storage);try{await n.rename(r,i.physical,e)}finally{await Jt(i.storage.driver,i.storage,n,t)}}async function va(r,e,t){for(let i of e){let n=`${r}/${i}`,s=await tt(n,t?.env);if(s.isVirtual)throw new Error("failed get storage: storage not found");let o=await lt(s.storage.driver,s.storage);try{await o.remove(n,s.physical,[i])}finally{await Jt(s.storage.driver,s.storage,o,t)}}}async function Td(r,e,t,i){for(let n of t){let s=`${r}/${n}`,o=`${e}/${n}`,a=await tt(s,i?.env),c=await tt(o,i?.env);if(a.isVirtual||c.isVirtual)throw new Error("failed get storage: storage not found");let l=await lt(a.storage.driver,a.storage);try{await l.move(r,e,[n],a.physical,c.physical)}finally{await Jt(a.storage.driver,a.storage,l,i)}}}async function fA(r,e,t,i){for(let n of t){let s=`${r}/${n}`,o=`${e}/${n}`,a=await tt(s,i?.env),c=await tt(o,i?.env);if(a.isVirtual||c.isVirtual)throw new Error("failed get storage: storage not found");let l=await lt(a.storage.driver,a.storage);try{await l.copy(r,e,[n],a.physical,c.physical)}finally{await Jt(a.storage.driver,a.storage,l,i)}}}async function _n(r,e,t){let i=await tt(r,t?.env);if(i.isVirtual)throw new Error("failed get storage: storage not found");let n=await lt(i.storage.driver,i.storage);try{await n.put(r,i.physical,e)}finally{await Jt(i.storage.driver,i.storage,n,t)}}var x1,Pd,vte,FI,kte,Yt=V(()=>{"use strict";Ve();Be();gS();ES();kS();PS();qS();KS();JS();VS();WS();tD();nD();oD();cD();dD();fD();hD();pD();yD();CD();bD();SD();_D();PD();OD();HD();zD();$D();o3();m3();E3();D3();U3();O3();H3();o_();f_();C_();S_();F_();Z_();u8();I8();S8();_8();P8();U8();N8();O8();M8();H8();z8();j8();V8();W8();e4();r4();n4();o4();a4();u4();f4();A4();g4();I4();w4();E4();B4();k4();Q4();R4();L4();V4();fP();QU();x1=null;Pd=new Map,vte=new Map,FI=new Map,kte=100});var HU,_te,Fte,Pte,Tte,LU,PI,C1,KU=V(()=>{ja();HU={name:"HMAC",hash:"SHA-256"},_te=async r=>{let e=typeof r=="string"?new TextEncoder().encode(r):r;return await crypto.subtle.importKey("raw",e,HU,!1,["sign","verify"])},Fte=async(r,e,t)=>{try{let i=atob(r),n=new Uint8Array(i.length);for(let s=0,o=i.length;s<o;s++)n[s]=i.charCodeAt(s);return await crypto.subtle.verify(HU,t,n,new TextEncoder().encode(e))}catch{return!1}},Pte=/^[!#-:<>-[\]-~]+$/,Tte=/^[ !#-:<-[\]-~]*$/,LU=r=>{let e=0,t=r.length;for(;e<t;){let i=r.charCodeAt(e);if(i!==32&&i!==9)break;e++}for(;t>e;){let i=r.charCodeAt(t-1);if(i!==32&&i!==9)break;t--}return e===0&&t===r.length?r:r.slice(e,t)},PI=(r,e)=>{if(e&&r.indexOf(e)===-1)return{};let t=r.split(";"),i=Object.create(null);for(let n of t){let s=n.indexOf("=");if(s===-1)continue;let o=LU(n.substring(0,s));if(e&&e!==o||!Pte.test(o)||o in i)continue;let a=LU(n.substring(s+1));if(a.startsWith('"')&&a.endsWith('"')&&(a=a.slice(1,-1)),Tte.test(a)&&(i[o]=Al(a),e))break}return i},C1=async(r,e,t)=>{let i=Object.create(null),n=await _te(e);for(let[s,o]of Object.entries(PI(r,t))){let a=o.lastIndexOf(".");if(a<1)continue;let c=o.substring(0,a),l=o.substring(a+1);if(l.length!==44||!l.endsWith("="))continue;let d=await Fte(l,c,n);i[s]=d?c:!1}return i}});var TI,E1,GU=V(()=>{KU();TI=(r,e,t)=>{let i=r.req.raw.headers.get("Cookie");if(typeof e=="string"){if(!i)return;let s=e;return t==="secure"?s="__Secure-"+e:t==="host"&&(s="__Host-"+e),PI(i,s)[s]}return i?PI(i):{}},E1=async(r,e,t,i)=>{let n=r.req.raw.headers.get("Cookie");if(typeof t=="string"){if(!n)return;let o=t;return i==="secure"?o="__Secure-"+t:i==="host"&&(o="__Host-"+t),(await C1(n,e,o))[o]}return n?await C1(n,e):{}}});var B1,b1,Ute,v1,k1=V(()=>{B1=r=>v1(r.replace(/_|-/g,e=>({_:"/","-":"+"})[e]??e)),b1=r=>Ute(r).replace(/\/|\+/g,e=>({"/":"_","+":"-"})[e]??e),Ute=r=>{let e="",t=new Uint8Array(r);for(let i=0,n=t.length;i<n;i++)e+=String.fromCharCode(t[i]);return btoa(e)},v1=r=>{let e=atob(r),t=new Uint8Array(new ArrayBuffer(e.length)),i=e.length/2;for(let n=0,s=e.length-1;n<=i;n++,s--)t[n]=e.charCodeAt(n),t[s]=e.charCodeAt(s);return t}});var ka,S1=V(()=>{ka=(r=>(r.HS256="HS256",r.HS384="HS384",r.HS512="HS512",r.RS256="RS256",r.RS384="RS384",r.RS512="RS512",r.PS256="PS256",r.PS384="PS384",r.PS512="PS512",r.ES256="ES256",r.ES384="ES384",r.ES512="ES512",r.EdDSA="EdDSA",r))(ka||{})});var Rte,zU,Nte,JU=V(()=>{Rte={deno:"Deno",bun:"Bun",workerd:"Cloudflare-Workers",node:"Node.js"},zU=()=>{let r=globalThis;if(typeof navigator<"u"&&typeof navigator.userAgent=="string"){for(let[t,i]of Object.entries(Rte))if(Nte(i))return t}return typeof r?.EdgeRuntime=="string"?"edge-light":r?.fastly!==void 0?"fastly":r?.process?.release?.name==="node"?"node":"other"},Nte=r=>navigator.userAgent.startsWith(r)});var jU,D1,Q1,Gc,$U,VU,YU,UI,_1,WU,XU,ZU,eR,tR,rR,Rd,F1=V(()=>{jU=class extends Error{constructor(r){super(`${r} is not an implemented algorithm`),this.name="JwtAlgorithmNotImplemented"}},D1=class extends Error{constructor(){super('JWT verification requires "alg" option to be specified'),this.name="JwtAlgorithmRequired"}},Q1=class extends Error{constructor(r,e){super(`JWT algorithm mismatch: expected "${r}", got "${e}"`),this.name="JwtAlgorithmMismatch"}},Gc=class extends Error{constructor(r){super(`invalid JWT token: ${r}`),this.name="JwtTokenInvalid"}},$U=class extends Error{constructor(r){super(`token (${r}) is being used before it's valid`),this.name="JwtTokenNotBefore"}},VU=class extends Error{constructor(r){super(`token (${r}) expired`),this.name="JwtTokenExpired"}},YU=class extends Error{constructor(r,e){super(`Invalid "iat" claim, must be a valid number lower than "${r}" (iat: "${e}")`),this.name="JwtTokenIssuedAt"}},UI=class extends Error{constructor(r,e){super(`expected issuer "${r}", got ${e?`"${e}"`:"none"} `),this.name="JwtTokenIssuer"}},_1=class extends Error{constructor(r){super(`jwt header is invalid: ${JSON.stringify(r)}`),this.name="JwtHeaderInvalid"}},WU=class extends Error{constructor(r){super(`required "kid" in jwt header: ${JSON.stringify(r)}`),this.name="JwtHeaderRequiresKid"}},XU=class extends Error{constructor(r){super(`symmetric algorithm "${r}" is not allowed for JWK verification`),this.name="JwtSymmetricAlgorithmNotAllowed"}},ZU=class extends Error{constructor(r,e){super(`algorithm "${r}" is not in the allowed list: [${e.join(", ")}]`),this.name="JwtAlgorithmNotAllowed"}},eR=class extends Error{constructor(r){super(`token(${r}) signature mismatched`),this.name="JwtTokenSignatureMismatched"}},tR=class extends Error{constructor(r){super(`required "aud" in jwt payload: ${JSON.stringify(r)}`),this.name="JwtPayloadRequiresAud"}},rR=class extends Error{constructor(r,e){super(`expected audience "${Array.isArray(r)?r.join(", "):r}", got "${e}"`),this.name="JwtTokenAudience"}},Rd=(r=>(r.Encrypt="encrypt",r.Decrypt="decrypt",r.Sign="sign",r.Verify="verify",r.DeriveKey="deriveKey",r.DeriveBits="deriveBits",r.WrapKey="wrapKey",r.UnwrapKey="unwrapKey",r))(Rd||{})});var zc,iR,P1=V(()=>{zc=new TextEncoder,iR=new TextDecoder});async function sR(r,e,t){let i=aR(e),n=await qte(r,i);return await crypto.subtle.sign(i,n,t)}async function oR(r,e,t,i){let n=aR(e),s=await Ote(r,n);return await crypto.subtle.verify(n,s,t,i)}function T1(r){return v1(r.replace(/-+(BEGIN|END).*?-+/g,"").replace(/\s/g,""))}async function qte(r,e){if(!crypto.subtle||!crypto.subtle.importKey)throw new Error("`crypto.subtle.importKey` is undefined. JWT auth middleware requires it.");if(cR(r)){if(r.type!=="private"&&r.type!=="secret")throw new Error(`unexpected key type: CryptoKey.type is ${r.type}, expected private or secret`);return r}let t=[Rd.Sign];return typeof r=="object"?await crypto.subtle.importKey("jwk",r,e,!1,t):r.includes("PRIVATE")?await crypto.subtle.importKey("pkcs8",T1(r),e,!1,t):await crypto.subtle.importKey("raw",zc.encode(r),e,!1,t)}async function Ote(r,e){if(!crypto.subtle||!crypto.subtle.importKey)throw new Error("`crypto.subtle.importKey` is undefined. JWT auth middleware requires it.");if(cR(r)){if(r.type==="public"||r.type==="secret")return r;r=await nR(r)}if(typeof r=="string"&&r.includes("PRIVATE")){let i=await crypto.subtle.importKey("pkcs8",T1(r),e,!0,[Rd.Sign]);r=await nR(i)}let t=[Rd.Verify];return typeof r=="object"?await crypto.subtle.importKey("jwk",r,e,!1,t):r.includes("PUBLIC")?await crypto.subtle.importKey("spki",T1(r),e,!1,t):await crypto.subtle.importKey("raw",zc.encode(r),e,!1,t)}async function nR(r){if(r.type!=="private")throw new Error(`unexpected key type: ${r.type}`);if(!r.extractable)throw new Error("unexpected private key is unextractable");let e=await crypto.subtle.exportKey("jwk",r),{kty:t}=e,{alg:i,e:n,n:s}=e,{crv:o,x:a,y:c}=e;return{kty:t,alg:i,e:n,n:s,crv:o,x:a,y:c,key_ops:[Rd.Verify]}}function aR(r){switch(r){case"HS256":return{name:"HMAC",hash:{name:"SHA-256"}};case"HS384":return{name:"HMAC",hash:{name:"SHA-384"}};case"HS512":return{name:"HMAC",hash:{name:"SHA-512"}};case"RS256":return{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}};case"RS384":return{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-384"}};case"RS512":return{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-512"}};case"PS256":return{name:"RSA-PSS",hash:{name:"SHA-256"},saltLength:32};case"PS384":return{name:"RSA-PSS",hash:{name:"SHA-384"},saltLength:48};case"PS512":return{name:"RSA-PSS",hash:{name:"SHA-512"},saltLength:64};case"ES256":return{name:"ECDSA",hash:{name:"SHA-256"},namedCurve:"P-256"};case"ES384":return{name:"ECDSA",hash:{name:"SHA-384"},namedCurve:"P-384"};case"ES512":return{name:"ECDSA",hash:{name:"SHA-512"},namedCurve:"P-521"};case"EdDSA":return{name:"Ed25519",namedCurve:"Ed25519"};default:throw new jU(r)}}function cR(r){return zU()==="node"&&crypto.webcrypto?r instanceof crypto.webcrypto.CryptoKey:r instanceof CryptoKey}var lR=V(()=>{JU();k1();F1();P1()});function dR(r){if(typeof r=="object"&&r!==null){let e=r;return"alg"in e&&Object.values(ka).includes(e.alg)&&(!("typ"in e)||e.typ==="JWT")}return!1}var U1,Mte,R1,uR,N1,Lte,fR,q1,Hte,AR=V(()=>{k1();S1();lR();F1();P1();U1=r=>b1(zc.encode(JSON.stringify(r)).buffer).replace(/=/g,""),Mte=r=>b1(r).replace(/=/g,""),R1=r=>JSON.parse(iR.decode(B1(r)));uR=async(r,e,t="HS256")=>{let i=U1(r),n;typeof e=="object"&&"alg"in e?(t=e.alg,n=U1({alg:t,typ:"JWT",kid:e.kid})):n=U1({alg:t,typ:"JWT"});let s=`${n}.${i}`,o=await sR(e,t,zc.encode(s)),a=Mte(o);return`${s}.${a}`},N1=async(r,e,t)=>{if(!t)throw new D1;let{alg:i,iss:n,nbf:s=!0,exp:o=!0,iat:a=!0,aud:c}=typeof t=="string"?{alg:t}:t;if(!i)throw new D1;let l=r.split(".");if(l.length!==3)throw new Gc(r);let{header:d,payload:u}=q1(r);if(!dR(d))throw new _1(d);if(d.alg!==i)throw new Q1(i,d.alg);let f=Math.floor(Date.now()/1e3);if(s&&u.nbf!==void 0&&(typeof u.nbf!="number"||!Number.isFinite(u.nbf)||u.nbf>f))throw new $U(r);if(o&&u.exp!==void 0&&(typeof u.exp!="number"||!Number.isFinite(u.exp)||u.exp<=f))throw new VU(r);if(a&&u.iat!==void 0&&(typeof u.iat!="number"||!Number.isFinite(u.iat)||f<u.iat))throw new YU(f,u.iat);if(n){if(!u.iss)throw new UI(n,null);if(typeof n=="string"&&u.iss!==n)throw new UI(n,u.iss);if(n instanceof RegExp&&!n.test(u.iss))throw new UI(n,u.iss)}if(c){if(!u.aud)throw new tR(u);if(!(Array.isArray(u.aud)?u.aud:[u.aud]).some(y=>c instanceof RegExp?c.test(y):typeof c=="string"?y===c:Array.isArray(c)&&c.includes(y)))throw new rR(c,u.aud)}let h=r.substring(0,r.lastIndexOf("."));if(!await oR(e,i,B1(l[2]),zc.encode(h)))throw new eR(r);return u},Lte=[ka.HS256,ka.HS384,ka.HS512],fR=async(r,e,t)=>{let i=e.verification||{},n=Hte(r);if(!dR(n))throw new _1(n);if(!n.kid)throw new WU(n);if(Lte.includes(n.alg))throw new XU(n.alg);if(!e.allowedAlgorithms.includes(n.alg))throw new ZU(n.alg,e.allowedAlgorithms);let s=e.keys?[...e.keys]:void 0;if(e.jwks_uri){let a=await fetch(e.jwks_uri,t);if(!a.ok)throw new Error(`failed to fetch JWKS from ${e.jwks_uri}`);let c=await a.json();if(!c.keys)throw new Error('invalid JWKS response. "keys" field is missing');if(!Array.isArray(c.keys))throw new Error('invalid JWKS response. "keys" field is not an array');s??=[],s.push(...c.keys)}else if(!s)throw new Error('verifyWithJwks requires options for either "keys" or "jwks_uri" or both');let o=s.find(a=>a.kid===n.kid);if(!o)throw new Gc(r);if(o.alg&&o.alg!==n.alg)throw new Q1(o.alg,n.alg);return await N1(r,o,{alg:n.alg,...i})},q1=r=>{let e=r.split(".");if(e.length!==3)throw new Gc(r);try{let t=R1(e[0]),i=R1(e[1]);return{header:t,payload:i}}catch{throw new Gc(r)}},Hte=r=>{let e=r.split(".");if(e.length!==3)throw new Gc(r);try{return R1(e[0])}catch{throw new Gc(r)}}});var Nd,hR=V(()=>{AR();Nd={sign:uR,verify:N1,decode:q1,verifyWithJwks:fR}});function O1(r){let e=(r.realm??r.ctx.req.url).replace(/"/g,'\\"'),t=r.errDescription.replace(/"/g,'\\"');return new Response("Unauthorized",{status:401,statusText:r.statusText,headers:{"WWW-Authenticate":`Bearer realm="${e}",error="${r.error}",error_description="${t}"`}})}var gR,pR,lo,mR,uo,yR=V(()=>{GU();$w();hR();b0();gR=r=>{let e=r.verification||{};if(!r||!r.secret)throw new Error('JWT auth middleware requires options for "secret"');if(!r.alg)throw new Error('JWT auth middleware requires options for "alg"');if(!crypto.subtle||!crypto.subtle.importKey)throw new Error("`crypto.subtle.importKey` is undefined. JWT auth middleware requires it.");return async function(i,n){let s=r.headerName||"Authorization",o=i.req.raw.headers.get(s),a;if(o){let d=o.split(/\s+/);if(d.length!==2||d[0].toLowerCase()!=="bearer"){let u="invalid credentials structure";throw new uu(401,{message:u,res:O1({ctx:i,error:"invalid_request",errDescription:u,realm:r.realm})})}else a=d[1]}else r.cookie&&(typeof r.cookie=="string"?a=TI(i,r.cookie):r.cookie.secret?r.cookie.prefixOptions?a=await E1(i,r.cookie.secret,r.cookie.key,r.cookie.prefixOptions):a=await E1(i,r.cookie.secret,r.cookie.key):r.cookie.prefixOptions?a=TI(i,r.cookie.key,r.cookie.prefixOptions):a=TI(i,r.cookie.key));if(!a){let d="no authorization included in request";throw new uu(401,{message:d,res:O1({ctx:i,error:"invalid_request",errDescription:d,realm:r.realm})})}let c,l;try{c=await Nd.verify(a,r.secret,{alg:r.alg,...e})}catch(d){l=d}if(!c)throw new uu(401,{message:"Unauthorized",res:O1({ctx:i,error:"invalid_token",statusText:"Unauthorized",errDescription:"token verification failure",realm:r.realm}),cause:l});i.set("jwtPayload",c),await n()}};pR=Nd.verifyWithJwks,lo=Nd.verify,mR=Nd.decode,uo=Nd.sign});var RI={};qn(RI,{AlgorithmTypes:()=>ka,decode:()=>mR,jwt:()=>gR,sign:()=>uo,verify:()=>lo,verifyWithJwks:()=>pR});var fo=V(()=>{yR();S1()});function IR(r,e){let t=`<?xml version="1.0" encoding="utf-8" ?> +`)},wrapError:function(r,e){if(!e)return r instanceof Error?r:new Error(r);if(r instanceof Error){try{r.message+=": "+e.message,r.cause=e}catch{}return r}return new Error(r+": "+e.message,{cause:e})},constructAllowedPackets:function(r){let e={};return r.forEach(t=>{if(!t.tag)throw new Error("Invalid input: expected a packet class");e[t.tag]=t}),e},anyPromise:function(r){return new Promise((e,t)=>{let i;Promise.all(r.map(async n=>{try{e(await n)}catch(s){i=s}})).then(()=>{t(i)})})},selectUint8Array:function(r,e,t){let i=Math.max(e.length,t.length),n=new Uint8Array(i),s=0;for(let o=0;o<n.length;o++)n[o]=e[o]&256-r|t[o]&255+r,s+=r&o<e.length|1-r&o<t.length;return n.subarray(0,s)},selectUint8:function(r,e,t){return e&256-r|t&255+r},isAES:function(r){return r===m.symmetric.aes128||r===m.symmetric.aes192||r===m.symmetric.aes256}},OE=F.getNodeBuffer();OE?(Uy=r=>OE.from(r).toString("base64"),Ry=r=>{let e=OE.from(r,"base64");return new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}):(Uy=r=>btoa(F.uint8ArrayToString(r)),Ry=r=>F.stringToUint8Array(atob(r)));br=[new Array(255),new Array(255),new Array(255),new Array(255)];for(let r=0;r<=255;r++){let e=r<<16;for(let t=0;t<8;t++)e=e<<1^((e&8388608)!==0?8801531:0);br[0][r]=(e&16711680)>>16|e&65280|(e&255)<<16}for(let r=0;r<=255;r++)br[1][r]=br[0][r]>>8^br[0][br[0][r]&255];for(let r=0;r<=255;r++)br[2][r]=br[1][r]>>8^br[0][br[1][r]&255];for(let r=0;r<=255;r++)br[3][r]=br[2][r]>>8^br[0][br[2][r]&255];FV=(function(){let r=new ArrayBuffer(2);return new DataView(r).setInt16(0,255,!0),new Int16Array(r)[0]===255})();Ci=BigInt(0),md=BigInt(1);OV=F.getNodeCrypto();cs=BigInt(1);HV=[7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997,1009,1013,1019,1021,1031,1033,1039,1049,1051,1061,1063,1069,1087,1091,1093,1097,1103,1109,1117,1123,1129,1151,1153,1163,1171,1181,1187,1193,1201,1213,1217,1223,1229,1231,1237,1249,1259,1277,1279,1283,1289,1291,1297,1301,1303,1307,1319,1321,1327,1361,1367,1373,1381,1399,1409,1423,1427,1429,1433,1439,1447,1451,1453,1459,1471,1481,1483,1487,1489,1493,1499,1511,1523,1531,1543,1549,1553,1559,1567,1571,1579,1583,1597,1601,1607,1609,1613,1619,1621,1627,1637,1657,1663,1667,1669,1693,1697,1699,1709,1721,1723,1733,1741,1747,1753,1759,1777,1783,1787,1789,1801,1811,1823,1831,1847,1861,1867,1871,1873,1877,1879,1889,1901,1907,1913,1931,1933,1949,1951,1973,1979,1987,1993,1997,1999,2003,2011,2017,2027,2029,2039,2053,2063,2069,2081,2083,2087,2089,2099,2111,2113,2129,2131,2137,2141,2143,2153,2161,2179,2203,2207,2213,2221,2237,2239,2243,2251,2267,2269,2273,2281,2287,2293,2297,2309,2311,2333,2339,2341,2347,2351,2357,2371,2377,2381,2383,2389,2393,2399,2411,2417,2423,2437,2441,2447,2459,2467,2473,2477,2503,2521,2531,2539,2543,2549,2551,2557,2579,2591,2593,2609,2617,2621,2633,2647,2657,2659,2663,2671,2677,2683,2687,2689,2693,2699,2707,2711,2713,2719,2729,2731,2741,2749,2753,2767,2777,2789,2791,2797,2801,2803,2819,2833,2837,2843,2851,2857,2861,2879,2887,2897,2903,2909,2917,2927,2939,2953,2957,2963,2969,2971,2999,3001,3011,3019,3023,3037,3041,3049,3061,3067,3079,3083,3089,3109,3119,3121,3137,3163,3167,3169,3181,3187,3191,3203,3209,3217,3221,3229,3251,3253,3257,3259,3271,3299,3301,3307,3313,3319,3323,3329,3331,3343,3347,3359,3361,3371,3373,3389,3391,3407,3413,3433,3449,3457,3461,3463,3467,3469,3491,3499,3511,3517,3527,3529,3533,3539,3541,3547,3557,3559,3571,3581,3583,3593,3607,3613,3617,3623,3631,3637,3643,3659,3671,3673,3677,3691,3697,3701,3709,3719,3727,3733,3739,3761,3767,3769,3779,3793,3797,3803,3821,3823,3833,3847,3851,3853,3863,3877,3881,3889,3907,3911,3917,3919,3923,3929,3931,3943,3947,3967,3989,4001,4003,4007,4013,4019,4021,4027,4049,4051,4057,4073,4079,4091,4093,4099,4111,4127,4129,4133,4139,4153,4157,4159,4177,4201,4211,4217,4219,4229,4231,4241,4243,4253,4259,4261,4271,4273,4283,4289,4297,4327,4337,4339,4349,4357,4363,4373,4391,4397,4409,4421,4423,4441,4447,4451,4457,4463,4481,4483,4493,4507,4513,4517,4519,4523,4547,4549,4561,4567,4583,4591,4597,4603,4621,4637,4639,4643,4649,4651,4657,4663,4673,4679,4691,4703,4721,4723,4729,4733,4751,4759,4783,4787,4789,4793,4799,4801,4813,4817,4831,4861,4871,4877,4889,4903,4909,4919,4931,4933,4937,4943,4951,4957,4967,4969,4973,4987,4993,4999].map(r=>BigInt(r));h5=F.getWebCrypto(),Ny=F.getNodeCrypto(),GV=Ny&&Ny.getHashes();zV=oo("md5")||ao("md5"),JV=oo("sha1")||ao("sha1","SHA-1"),jV=oo("sha224")||ao("sha224"),$V=oo("sha256")||ao("sha256","SHA-256"),VV=oo("sha384")||ao("sha384","SHA-384"),YV=oo("sha512")||ao("sha512","SHA-512"),WV=oo("ripemd160")||ao("ripemd160"),XV=oo("sha3-256")||ao("sha3_256"),ZV=oo("sha3-512")||ao("sha3_512");nn=[];nn[1]=[48,32,48,12,6,8,42,134,72,134,247,13,2,5,5,0,4,16];nn[2]=[48,33,48,9,6,5,43,14,3,2,26,5,0,4,20];nn[3]=[48,33,48,9,6,5,43,36,3,2,1,5,0,4,20];nn[8]=[48,49,48,13,6,9,96,134,72,1,101,3,4,2,1,5,0,4,32];nn[9]=[48,65,48,13,6,9,96,134,72,1,101,3,4,2,2,5,0,4,48];nn[10]=[48,81,48,13,6,9,96,134,72,1,101,3,4,2,3,5,0,4,64];nn[11]=[48,45,48,13,6,9,96,134,72,1,101,3,4,2,4,5,0,4,28];nn[12]=[48,49,48,13,6,9,96,134,72,1,101,3,4,2,8,5,0,4,32];nn[14]=[48,81,48,13,6,9,96,134,72,1,101,3,4,2,10,5,0,4,64];bd=F.getWebCrypto(),Rc=F.getNodeCrypto(),wa=BigInt(1);ga=BigInt(1);wY={"2a8648ce3d030107":m.curve.nistP256,"2b81040022":m.curve.nistP384,"2b81040023":m.curve.nistP521,"2b8104000a":m.curve.secp256k1,"2b06010401da470f01":m.curve.ed25519Legacy,"2b060104019755010501":m.curve.curve25519Legacy,"2b2403030208010107":m.curve.brainpoolP256r1,"2b240303020801010b":m.curve.brainpoolP384r1,"2b240303020801010d":m.curve.brainpoolP512r1},ro=class r{constructor(e){if(e instanceof r)this.oid=e.oid;else if(F.isArray(e)||F.isUint8Array(e)){if(e=new Uint8Array(e),e[0]===6){if(e[1]!==e.length-2)throw new Error("Length mismatch in DER encoded oid");e=e.subarray(2)}this.oid=e}else this.oid=""}read(e){if(e.length>=1){let t=e[0];if(e.length>=1+t)return this.oid=e.subarray(1,1+t),1+this.oid.length}throw new Error("Invalid oid")}write(){return F.concatUint8Array([new Uint8Array([this.oid.length]),this.oid])}toHex(){return F.uint8ArrayToHex(this.oid)}getName(){let e=wY[this.toHex()];if(!e)throw new Error("Unknown curve object identifier.");return e}};ft=class r extends Error{constructor(...e){super(...e),Error.captureStackTrace&&Error.captureStackTrace(this,r),this.name="UnsupportedError"}},yd=class extends ft{constructor(...e){super(...e),Error.captureStackTrace&&Error.captureStackTrace(this,ft),this.name="UnknownPacketError"}},Lf=class extends ft{constructor(...e){super(...e),Error.captureStackTrace&&Error.captureStackTrace(this,ft),this.name="MalformedPacketError"}},Gf=class{constructor(e,t){this.tag=e,this.rawContent=t}write(){return this.rawContent}};o1=(r,e)=>{if(r===m.publicKey.ed25519)return{kty:"OKP",crv:"Ed25519",x:Tr(e),ext:!0};throw new Error("Unsupported EdDSA algorithm")},H6=(r,e,t)=>{if(r===m.publicKey.ed25519){let i=o1(r,e);return i.d=Tr(t),i}else throw new Error("Unsupported EdDSA algorithm")},EY=Object.freeze({__proto__:null,generate:r1,getPayloadSize:CI,getPreferredHashAlgo:EI,sign:i1,validateParams:s1,verify:n1});BY=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;uA=(r,e)=>{function t(i,...n){if(kt(i),!BY)throw new Error("Non little-endian hardware is not yet supported");if(r.nonceLength!==void 0){let d=n[0];if(!d)throw new Error("nonce / iv required");r.varSizeNonce?kt(d):kt(d,r.nonceLength)}let s=r.tagLength;s&&n[1]!==void 0&&kt(n[1]);let o=e(i,...n),a=(d,u)=>{if(u!==void 0){if(d!==2)throw new Error("cipher output not supported");kt(u)}},c=!1;return{encrypt(d,u){if(c)throw new Error("cannot encrypt() twice with same key + nonce");return c=!0,kt(d),a(o.encrypt.length,u),o.encrypt(d,u)},decrypt(d,u){if(kt(d),s&&d.length<s)throw new Error("invalid ciphertext length: smaller than tagLength="+s);return a(o.decrypt.length,u),o.decrypt(d,u)}}}return Object.assign(t,r),t};Xs=16,l1=new Uint8Array(16),ns=Et(l1),SY=225,DY=(r,e,t,i)=>{let n=i&1;return{s3:t<<31|i>>>1,s2:e<<31|t>>>1,s1:r<<31|e>>>1,s0:r>>>1^SY<<24&-(n&1)}},rn=r=>(r>>>0&255)<<24|(r>>>8&255)<<16|(r>>>16&255)<<8|r>>>24&255|0;_Y=r=>r>64*1024?8:r>1024?4:2,My=class{constructor(e,t){this.blockLen=Xs,this.outputLen=Xs,this.s0=0,this.s1=0,this.s2=0,this.s3=0,this.finished=!1,e=zf(e),kt(e,16);let i=BI(e),n=i.getUint32(0,!1),s=i.getUint32(4,!1),o=i.getUint32(8,!1),a=i.getUint32(12,!1),c=[];for(let g=0;g<128;g++)c.push({s0:rn(n),s1:rn(s),s2:rn(o),s3:rn(a)}),{s0:n,s1:s,s2:o,s3:a}=DY(n,s,o,a);let l=_Y(t||1024);if(![1,2,4,8].includes(l))throw new Error("ghash: invalid window size, expected 2, 4 or 8");this.W=l;let u=128/l,f=this.windowSize=2**l,h=[];for(let g=0;g<u;g++)for(let p=0;p<f;p++){let I=0,y=0,w=0,C=0;for(let b=0;b<l;b++){if(!(p>>>l-b-1&1))continue;let{s0:_,s1:R,s2:U,s3:T}=c[l*g+b];I^=_,y^=R,w^=U,C^=T}h.push({s0:I,s1:y,s2:w,s3:C})}this.t=h}_updateBlock(e,t,i,n){e^=this.s0,t^=this.s1,i^=this.s2,n^=this.s3;let{W:s,t:o,windowSize:a}=this,c=0,l=0,d=0,u=0,f=(1<<s)-1,h=0;for(let g of[e,t,i,n])for(let p=0;p<4;p++){let I=g>>>8*p&255;for(let y=8/s-1;y>=0;y--){let w=I>>>s*y&f,{s0:C,s1:b,s2:x,s3:_}=o[h*a+w];c^=C,l^=b,d^=x,u^=_,h+=1}}this.s0=c,this.s1=l,this.s2=d,this.s3=u}update(e){Oy(this),e=zf(e),kt(e);let t=Et(e),i=Math.floor(e.length/Xs),n=e.length%Xs;for(let s=0;s<i;s++)this._updateBlock(t[s*4+0],t[s*4+1],t[s*4+2],t[s*4+3]);return n&&(l1.set(e.subarray(i*Xs)),this._updateBlock(ns[0],ns[1],ns[2],ns[3]),Xr(ns)),this}destroy(){let{t:e}=this;for(let t of e)t.s0=0,t.s1=0,t.s2=0,t.s3=0}digestInto(e){Oy(this),G6(e,this),this.finished=!0;let{s0:t,s1:i,s2:n,s3:s}=this,o=Et(e);return o[0]=t,o[1]=i,o[2]=n,o[3]=s,e}digest(){let e=new Uint8Array(Xs);return this.digestInto(e),this.destroy(),e}},IB=class extends My{constructor(e,t){e=zf(e),kt(e);let i=QY(Bi(e));super(i,t),Xr(i)}update(e){e=zf(e),Oy(this);let t=Et(e),i=e.length%Xs,n=Math.floor(e.length/Xs);for(let s=0;s<n;s++)this._updateBlock(rn(t[s*4+3]),rn(t[s*4+2]),rn(t[s*4+1]),rn(t[s*4+0]));return i&&(l1.set(e.subarray(n*Xs)),this._updateBlock(rn(ns[3]),rn(ns[2]),rn(ns[1]),rn(ns[0])),Xr(ns)),this}digestInto(e){Oy(this),G6(e,this),this.finished=!0;let{s0:t,s1:i,s2:n,s3:s}=this,o=Et(e);return o[0]=t,o[1]=i,o[2]=n,o[3]=s,e.reverse()}};m5=j6((r,e)=>new My(r,e));j6((r,e)=>new IB(r,e));bi=16,d1=4,Ay=new Uint8Array(bi),FY=283;wB=(()=>{let r=new Uint8Array(256);for(let t=0,i=1;t<256;t++,i^=u1(i))r[t]=i;let e=new Uint8Array(256);e[0]=99;for(let t=0;t<255;t++){let i=r[255-t];i|=i<<8,e[r[t]]=(i^i>>4^i>>5^i>>6^i>>7^99)&255}return Xr(r),e})(),PY=wB.map((r,e)=>wB.indexOf(e)),TY=r=>r<<24|r>>>8,ME=r=>r<<8|r>>>24,y5=r=>r<<24&4278190080|r<<8&16711680|r>>>8&65280|r>>>24&255;f1=$6(wB,r=>Ad(r,3)<<24|r<<16|r<<8|Ad(r,2)),V6=$6(PY,r=>Ad(r,11)<<24|Ad(r,13)<<16|Ad(r,9)<<8|Ad(r,14)),UY=(()=>{let r=new Uint8Array(16);for(let e=0,t=1;e<16;e++,t=u1(t))r[e]=t;return r})();RY=uA({blockSize:16,nonceLength:16},function(e,t){function i(n,s){if(kt(n),s!==void 0&&(kt(s),!sn(s)))throw new Error("unaligned destination");let o=Kc(e),a=Bi(t),c=[o,a];sn(n)||c.push(n=Bi(n));let l=Y6(o,a,n,s);return Xr(...c),l}return{encrypt:(n,s)=>i(n,s),decrypt:(n,s)=>i(n,s)}});xB=uA({blockSize:16,nonceLength:16},function(e,t,i={}){let n=!i.disablePadding;return{encrypt(s,o){let a=Kc(e),{b:c,o:l,out:d}=qY(s,n,o),u=t,f=[a];sn(u)||f.push(u=Bi(u));let h=Et(u),g=h[0],p=h[1],I=h[2],y=h[3],w=0;for(;w+4<=c.length;)g^=c[w+0],p^=c[w+1],I^=c[w+2],y^=c[w+3],{s0:g,s1:p,s2:I,s3:y}=Fn(a,g,p,I,y),l[w++]=g,l[w++]=p,l[w++]=I,l[w++]=y;if(n){let C=MY(s.subarray(w*4));g^=C[0],p^=C[1],I^=C[2],y^=C[3],{s0:g,s1:p,s2:I,s3:y}=Fn(a,g,p,I,y),l[w++]=g,l[w++]=p,l[w++]=I,l[w++]=y}return Xr(...f),d},decrypt(s,o){NY(s);let a=A1(e),c=t,l=[a];sn(c)||l.push(c=Bi(c));let d=Et(c);o=fA(s.length,o),sn(s)||l.push(s=Bi(s)),c1(s,o);let u=Et(s),f=Et(o),h=d[0],g=d[1],p=d[2],I=d[3];for(let y=0;y+4<=u.length;){let w=h,C=g,b=p,x=I;h=u[y+0],g=u[y+1],p=u[y+2],I=u[y+3];let{s0:_,s1:R,s2:U,s3:T}=bI(a,h,g,p,I);f[y++]=_^w,f[y++]=R^C,f[y++]=U^b,f[y++]=T^x}return Xr(...l),OY(o,n)}}}),W6=uA({blockSize:16,nonceLength:16},function(e,t){function i(n,s,o){kt(n);let a=n.length;if(o=fA(a,o),z6(n,o))throw new Error("overlapping src and dst not supported.");let c=Kc(e),l=t,d=[c];sn(l)||d.push(l=Bi(l)),sn(n)||d.push(n=Bi(n));let u=Et(n),f=Et(o),h=s?f:u,g=Et(l),p=g[0],I=g[1],y=g[2],w=g[3];for(let b=0;b+4<=u.length;){let{s0:x,s1:_,s2:R,s3:U}=Fn(c,p,I,y,w);f[b+0]=u[b+0]^x,f[b+1]=u[b+1]^_,f[b+2]=u[b+2]^R,f[b+3]=u[b+3]^U,p=h[b++],I=h[b++],y=h[b++],w=h[b++]}let C=bi*Math.floor(u.length/d1);if(C<a){({s0:p,s1:I,s2:y,s3:w}=Fn(c,p,I,y,w));let b=a1(new Uint32Array([p,I,y,w]));for(let x=C,_=0;x<a;x++,_++)o[x]=n[x]^b[_];Xr(b)}return Xr(...d),o}return{encrypt:(n,s)=>i(n,!0,s),decrypt:(n,s)=>i(n,!1,s)}});hy=uA({blockSize:16,nonceLength:12,tagLength:16,varSizeNonce:!0},function(e,t,i){if(t.length<8)throw new Error("aes/gcm: invalid nonce length");let n=16;function s(a,c,l){let d=LY(m5,!1,a,l,i);for(let u=0;u<c.length;u++)d[u]^=c[u];return d}function o(){let a=Kc(e),c=Ay.slice(),l=Ay.slice();if(qf(a,!1,l,l,c),t.length===12)l.set(t);else{let u=Ay.slice(),f=BI(u);yB(f,8,BigInt(t.length*8),!1);let h=m5.create(c).update(t).update(u);h.digestInto(l),h.destroy()}let d=qf(a,!1,l,Ay);return{xk:a,authKey:c,counter:l,tagMask:d}}return{encrypt(a){let{xk:c,authKey:l,counter:d,tagMask:u}=o(),f=new Uint8Array(a.length+n),h=[c,l,d,u];sn(a)||h.push(a=Bi(a)),qf(c,!1,d,a,f.subarray(0,a.length));let g=s(l,u,f.subarray(0,f.length-n));return h.push(g),f.set(g,a.length),Xr(...h),f},decrypt(a){let{xk:c,authKey:l,counter:d,tagMask:u}=o(),f=[c,l,u,d];sn(a)||f.push(a=Bi(a));let h=a.subarray(0,-n),g=a.subarray(-n),p=s(l,u,h);if(f.push(p),!J6(p,g))throw new Error("aes/gcm: invalid ghash tag");let I=qf(c,!1,d,h);return Xr(...f),I}}});I5={encrypt(r,e){if(e.length>=2**32)throw new Error("plaintext should be less than 4gb");let t=Kc(r);if(e.length===16)Z6(t,e);else{let i=Et(e),n=i[0],s=i[1];for(let o=0,a=1;o<6;o++)for(let c=2;c<i.length;c+=2,a++){let{s0:l,s1:d,s2:u,s3:f}=Fn(t,n,s,i[c],i[c+1]);n=l,s=d^y5(a),i[c]=u,i[c+1]=f}i[0]=n,i[1]=s}t.fill(0)},decrypt(r,e){if(e.length-8>=2**32)throw new Error("ciphertext should be less than 4gb");let t=A1(r),i=e.length/8-1;if(i===1)eT(t,e);else{let n=Et(e),s=n[0],o=n[1];for(let a=0,c=i*6;a<6;a++)for(let l=i*2;l>=1;l-=2,c--){o^=y5(c);let{s0:d,s1:u,s2:f,s3:h}=bI(t,s,o,n[l],n[l+1]);s=d,o=u,n[l]=f,n[l+1]=h}n[0]=s,n[1]=o}t.fill(0)}},w5=new Uint8Array(8).fill(166),tT=uA({blockSize:8},r=>({encrypt(e){if(!e.length||e.length%8!==0)throw new Error("invalid plaintext length");if(e.length===8)throw new Error("8-byte keys not allowed in AESKW, use AESKWP instead");let t=vY(w5,e);return I5.encrypt(r,t),t},decrypt(e){if(e.length%8!==0||e.length<24)throw new Error("invalid ciphertext length");let t=Bi(e);if(I5.decrypt(r,t),!J6(t.subarray(0,8),w5))throw new Error("integrity check failed");return t.subarray(0,8).fill(0),t.subarray(8)}})),x5={expandKeyLE:Kc,expandKeyDecLE:A1,encrypt:Fn,decrypt:bI,encryptBlock:Z6,decryptBlock:eT,ctrCounter:Y6,ctr32:qf};Id=F.getWebCrypto();Ly={x25519:F.encodeUTF8("OpenPGP X25519"),x448:F.encodeUTF8("OpenPGP X448")};zY=Object.freeze({__proto__:null,decrypt:nT,encrypt:iT,generate:h1,generateEphemeralEncryptionMaterial:kI,getPayloadSize:vI,recomputeSharedSecret:SI,validateParams:g1}),LE=F.getWebCrypto(),Ky=F.getNodeCrypto(),ls={[m.curve.nistP256]:"P-256",[m.curve.nistP384]:"P-384",[m.curve.nistP521]:"P-521"},Gs=Ky?Ky.getCurves():[],is=Ky?{[m.curve.secp256k1]:Gs.includes("secp256k1")?"secp256k1":void 0,[m.curve.nistP256]:Gs.includes("prime256v1")?"prime256v1":void 0,[m.curve.nistP384]:Gs.includes("secp384r1")?"secp384r1":void 0,[m.curve.nistP521]:Gs.includes("secp521r1")?"secp521r1":void 0,[m.curve.ed25519Legacy]:Gs.includes("ED25519")?"ED25519":void 0,[m.curve.curve25519Legacy]:Gs.includes("X25519")?"X25519":void 0,[m.curve.brainpoolP256r1]:Gs.includes("brainpoolP256r1")?"brainpoolP256r1":void 0,[m.curve.brainpoolP384r1]:Gs.includes("brainpoolP384r1")?"brainpoolP384r1":void 0,[m.curve.brainpoolP512r1]:Gs.includes("brainpoolP512r1")?"brainpoolP512r1":void 0}:{},sT={[m.curve.nistP256]:{oid:[6,8,42,134,72,206,61,3,1,7],keyType:m.publicKey.ecdsa,hash:m.hash.sha256,cipher:m.symmetric.aes128,node:is[m.curve.nistP256],web:ls[m.curve.nistP256],payloadSize:32,sharedSize:256,wireFormatLeadingByte:4},[m.curve.nistP384]:{oid:[6,5,43,129,4,0,34],keyType:m.publicKey.ecdsa,hash:m.hash.sha384,cipher:m.symmetric.aes192,node:is[m.curve.nistP384],web:ls[m.curve.nistP384],payloadSize:48,sharedSize:384,wireFormatLeadingByte:4},[m.curve.nistP521]:{oid:[6,5,43,129,4,0,35],keyType:m.publicKey.ecdsa,hash:m.hash.sha512,cipher:m.symmetric.aes256,node:is[m.curve.nistP521],web:ls[m.curve.nistP521],payloadSize:66,sharedSize:528,wireFormatLeadingByte:4},[m.curve.secp256k1]:{oid:[6,5,43,129,4,0,10],keyType:m.publicKey.ecdsa,hash:m.hash.sha256,cipher:m.symmetric.aes128,node:is[m.curve.secp256k1],payloadSize:32,wireFormatLeadingByte:4},[m.curve.ed25519Legacy]:{oid:[6,9,43,6,1,4,1,218,71,15,1],keyType:m.publicKey.eddsaLegacy,hash:m.hash.sha512,node:!1,payloadSize:32,wireFormatLeadingByte:64},[m.curve.curve25519Legacy]:{oid:[6,10,43,6,1,4,1,151,85,1,5,1],keyType:m.publicKey.ecdh,hash:m.hash.sha256,cipher:m.symmetric.aes128,node:!1,payloadSize:32,wireFormatLeadingByte:64},[m.curve.brainpoolP256r1]:{oid:[6,9,43,36,3,3,2,8,1,1,7],keyType:m.publicKey.ecdsa,hash:m.hash.sha256,cipher:m.symmetric.aes128,node:is[m.curve.brainpoolP256r1],payloadSize:32,wireFormatLeadingByte:4},[m.curve.brainpoolP384r1]:{oid:[6,9,43,36,3,3,2,8,1,1,11],keyType:m.publicKey.ecdsa,hash:m.hash.sha384,cipher:m.symmetric.aes192,node:is[m.curve.brainpoolP384r1],payloadSize:48,wireFormatLeadingByte:4},[m.curve.brainpoolP512r1]:{oid:[6,9,43,36,3,3,2,8,1,1,13],keyType:m.publicKey.ecdsa,hash:m.hash.sha512,cipher:m.symmetric.aes256,node:is[m.curve.brainpoolP512r1],payloadSize:64,wireFormatLeadingByte:4}},vi=class{constructor(e){try{this.name=e instanceof ro?e.getName():m.write(m.curve,e)}catch{throw new ft("Unknown curve")}let t=sT[this.name];this.keyType=t.keyType,this.oid=t.oid,this.hash=t.hash,this.cipher=t.cipher,this.node=t.node,this.web=t.web,this.payloadSize=t.payloadSize,this.sharedSize=t.sharedSize,this.wireFormatLeadingByte=t.wireFormatLeadingByte,this.web&&F.getWebCrypto()?this.type="web":this.node&&F.getNodeCrypto()?this.type="node":this.name===m.curve.curve25519Legacy?this.type="curve25519Legacy":this.name===m.curve.ed25519Legacy&&(this.type="ed25519Legacy")}async genKeyPair(){switch(this.type){case"web":try{return await JY(this.name,this.wireFormatLeadingByte)}catch(e){return F.printDebugError("Browser did not support generating ec key "+e.message),C5(this.name)}case"node":return jY(this.name);case"curve25519Legacy":{let{k:e,A:t}=await h1(m.publicKey.x25519),i=e.slice().reverse();return i[0]=i[0]&127|64,i[31]&=248,{publicKey:F.concatUint8Array([new Uint8Array([this.wireFormatLeadingByte]),t]),privateKey:i}}case"ed25519Legacy":{let{seed:e,A:t}=await r1(m.publicKey.ed25519);return{publicKey:F.concatUint8Array([new Uint8Array([this.wireFormatLeadingByte]),t]),privateKey:e}}default:return C5(this.name)}}};Gy=F.getWebCrypto(),dT=F.getNodeCrypto();ZY=Object.freeze({__proto__:null,sign:m1,validateParams:$Y,verify:y1});eW=Object.freeze({__proto__:null,sign:uT,validateParams:AT,verify:fT});dW=Object.freeze({__proto__:null,decrypt:mT,encrypt:pT,validateParams:iW}),uW=Object.freeze({__proto__:null,CurveWithOID:vi,ecdh:dW,ecdhX:zY,ecdsa:ZY,eddsa:EY,eddsaLegacy:eW,generate:Sy,getPreferredHashAlgo:oT}),Dy=BigInt(0),Of=BigInt(1);zy=class{constructor(e){e&&(this.data=e)}read(e){if(e.length>=1){let t=e[0];if(e.length>=1+t)return this.data=e.subarray(1,1+t),1+this.data.length}throw new Error("Invalid symmetric key")}write(){return F.concatUint8Array([new Uint8Array([this.data.length]),this.data])}},Jy=class{constructor(e){if(e){let{hash:t,cipher:i}=e;this.hash=t,this.cipher=i}else this.hash=null,this.cipher=null}read(e){if(e.length<4||e[0]!==3||e[1]!==1)throw new ft("Cannot read KDFParams");return this.hash=e[2],this.cipher=e[3],4}write(){return new Uint8Array([3,1,this.hash,this.cipher])}},jy=class r{static fromObject({wrappedKey:e,algorithm:t}){let i=new r;return i.wrappedKey=e,i.algorithm=t,i}read(e){let t=0,i=e[t++];this.algorithm=i%2?e[t++]:null,i-=i%2,this.wrappedKey=F.readExactSubarray(e,t,t+i),t+=i}write(){return F.concatUint8Array([this.algorithm?new Uint8Array([this.wrappedKey.length+1,this.algorithm]):new Uint8Array([this.wrappedKey.length]),this.wrappedKey])}};Qy=F.getWebCrypto(),Jf=F.getNodeCrypto(),kc=Jf?Jf.getCiphers():[],QI={idea:kc.includes("idea-cfb")?"idea-cfb":void 0,tripledes:kc.includes("des-ede3-cfb")?"des-ede3-cfb":void 0,cast5:kc.includes("cast5-cfb")?"cast5-cfb":void 0,blowfish:kc.includes("bf-cfb")?"bf-cfb":void 0,aes128:kc.includes("aes-128-cfb")?"aes-128-cfb":void 0,aes192:kc.includes("aes-192-cfb")?"aes-192-cfb":void 0,aes256:kc.includes("aes-256-cfb")?"aes-256-cfb":void 0};$y=class{constructor(e,t,i){let{blockSize:n}=It(e);this.key=t,this.iv=i,this.prevBlock=i.slice(),this.nextBlock=new Uint8Array(n),this.i=0,this.blockSize=n,this.zeroBlock=new Uint8Array(this.blockSize)}static isSupported(e){let{keySize:t}=It(e);return Qy.importKey("raw",new Uint8Array(t),"aes-cbc",!1,["encrypt"]).then(()=>!0,()=>!1)}async _runCBC(e,t){let i="AES-CBC";this.keyRef=this.keyRef||await Qy.importKey("raw",this.key,i,!1,["encrypt"]);let n=await Qy.encrypt({name:i,iv:t||this.zeroBlock},this.keyRef,e);return new Uint8Array(n).subarray(0,e.length)}async encryptChunk(e){let t=this.nextBlock.length-this.i,i=e.subarray(0,t);if(this.nextBlock.set(i,this.i),this.i+e.length>=2*this.blockSize){let s=(e.length-t)%this.blockSize,o=F.concatUint8Array([this.nextBlock,e.subarray(t,e.length-s)]),a=F.concatUint8Array([this.prevBlock,o.subarray(0,o.length-this.blockSize)]),c=await this._runCBC(a);return gy(c,o),this.prevBlock=c.slice(-this.blockSize),s>0&&this.nextBlock.set(e.subarray(-s)),this.i=s,c}this.i+=i.length;let n;if(this.i===this.nextBlock.length){let s=this.nextBlock;n=await this._runCBC(this.prevBlock),gy(n,s),this.prevBlock=n.slice(),this.i=0;let o=e.subarray(i.length);this.nextBlock.set(o,this.i),this.i+=o.length}else n=new Uint8Array;return n}async finish(){let e;if(this.i===0)e=new Uint8Array;else{this.nextBlock=this.nextBlock.subarray(0,this.i);let t=this.nextBlock,i=await this._runCBC(this.prevBlock);gy(i,t),e=i.subarray(0,t.length)}return this.clearSensitiveData(),e}clearSensitiveData(){this.nextBlock.fill(0),this.prevBlock.fill(0),this.keyRef=null,this.key=null}async encrypt(e){let i=(await this._runCBC(F.concatUint8Array([new Uint8Array(this.blockSize),e]),this.iv)).subarray(0,e.length);return gy(i,e),this.clearSensitiveData(),i}},Vy=class{constructor(e,t,i,n){this.forEncryption=e;let{blockSize:s}=It(t);this.key=x5.expandKeyLE(i),n.byteOffset%4!==0&&(n=n.slice()),this.prevBlock=KE(n),this.nextBlock=new Uint8Array(s),this.i=0,this.blockSize=s}_runCFB(e){let t=KE(e),i=new Uint8Array(e.length),n=KE(i);for(let s=0;s+4<=n.length;s+=4){let{s0:o,s1:a,s2:c,s3:l}=x5.encrypt(this.key,this.prevBlock[0],this.prevBlock[1],this.prevBlock[2],this.prevBlock[3]);n[s+0]=t[s+0]^o,n[s+1]=t[s+1]^a,n[s+2]=t[s+2]^c,n[s+3]=t[s+3]^l,this.prevBlock=(this.forEncryption?n:t).slice(s,s+4)}return i}async processChunk(e){let t=this.nextBlock.length-this.i,i=e.subarray(0,t);if(this.nextBlock.set(i,this.i),this.i+e.length>=2*this.blockSize){let s=(e.length-t)%this.blockSize,o=F.concatUint8Array([this.nextBlock,e.subarray(t,e.length-s)]),a=this._runCFB(o);return s>0&&this.nextBlock.set(e.subarray(-s)),this.i=s,a}this.i+=i.length;let n;if(this.i===this.nextBlock.length){n=this._runCFB(this.nextBlock),this.i=0;let s=e.subarray(i.length);this.nextBlock.set(s,this.i),this.i+=s.length}else n=new Uint8Array;return n}async finish(){let e;return this.i===0?e=new Uint8Array:e=this._runCFB(this.nextBlock).subarray(0,this.i),this.clearSensitiveData(),e}clearSensitiveData(){this.nextBlock.fill(0),this.prevBlock.fill(0),this.key.fill(0)}};KE=r=>new Uint32Array(r.buffer,r.byteOffset,Math.floor(r.byteLength/4));k5=F.getWebCrypto(),vW=F.getNodeCrypto(),io=16;_y=new Uint8Array(io);D5=F.getWebCrypto(),QW=F.getNodeCrypto(),_W=F.getNodeBuffer(),co=16,FW=co,ud=co,Q5=new Uint8Array(co),bB=new Uint8Array(co);bB[co-1]=1;vB=new Uint8Array(co);vB[co-1]=2;AA.getNonce=function(r,e){let t=r.slice();for(let i=0;i<e.length;i++)t[8+i]^=e[i];return t};AA.blockLength=co;AA.ivLength=FW;AA.tagLength=ud;li=16,IT=15,ha=16;Sf=new Uint8Array(li),UW=new Uint8Array([1]);hA.getNonce=function(r,e){let t=r.slice();for(let i=0;i<e.length;i++)t[7+i]^=e[i];return t};hA.blockLength=li;hA.ivLength=IT;hA.tagLength=ha;GE=F.getWebCrypto(),F5=F.getNodeCrypto(),P5=F.getNodeBuffer(),RW=16,NW=12,fd=16,zE="AES-GCM";kd.getNonce=function(r,e){let t=r.slice();for(let i=0;i<e.length;i++)t[4+i]^=e[i];return t};kd.blockLength=RW;kd.ivLength=NW;kd.tagLength=fd;LW=2,HW=19,KW=16,T5=30,wd=class r extends Error{constructor(...e){super(...e),Error.captureStackTrace&&Error.captureStackTrace(this,r),this.name="Argon2OutOfMemoryError"}},GW=2<<19,kB=class{constructor(e=pe){let{passes:t,parallelism:i,memoryExponent:n}=e.s2kArgon2Params;this.type="argon2",this.salt=null,this.t=t,this.p=i,this.encodedM=n}generateSalt(){this.salt=Rr(KW)}read(e){let t=0;return this.salt=e.subarray(t,t+16),t+=16,this.t=e[t++],this.p=e[t++],this.encodedM=e[t++],t}write(){let e=[new Uint8Array([m.write(m.s2k,this.type)]),this.salt,new Uint8Array([this.t,this.p,this.encodedM])];return F.concatUint8Array(e)}async produceKey(e,t,i){if(i.maxArgon2MemoryExponent>T5)throw new wd(`'config.maxArgon2MemoryExponent' exceeds the max allowed value of ${T5}`);if(this.encodedM>i.maxArgon2MemoryExponent)throw new wd("Argon2 required memory exceeds `config.maxArgon2MemoryExponent`");let n=1<<this.encodedM;try{my=my||(await Promise.resolve().then(function(){return Nte})).default,Df=Df||my();let s=await Df,o=F.encodeUTF8(e),a=s({version:HW,type:LW,password:o,salt:this.salt,tagLength:t,memorySize:n,parallelism:this.p,passes:this.t});return n>GW&&(Df=my(),Df.catch(()=>{})),a}catch(s){throw s.message&&(s.message.includes("Unable to grow instance memory")||s.message.includes("failed to grow memory")||s.message.includes("WebAssembly.Memory.grow")||s.message.includes("Out of memory"))?new wd("Could not allocate required memory for Argon2"):s}}},SB=class{constructor(e,t=pe){this.algorithm=m.hash.sha256,this.type=m.read(m.s2k,e),this.c=t.s2kIterationCountByte,this.salt=null}generateSalt(){switch(this.type){case"salted":case"iterated":this.salt=Rr(8)}}getCount(){return 16+(this.c&15)<<(this.c>>4)+6}read(e){let t=0;switch(this.algorithm=e[t++],this.type){case"simple":break;case"salted":this.salt=e.subarray(t,t+8),t+=8;break;case"iterated":this.salt=e.subarray(t,t+8),t+=8,this.c=e[t++];break;case"gnu":if(F.uint8ArrayToString(e.subarray(t,t+3))==="GNU")if(t+=3,1e3+e[t++]===1001)this.type="gnu-dummy";else throw new ft("Unknown s2k gnu protection mode.");else throw new ft("Unknown s2k type.");break;default:throw new ft("Unknown s2k type.")}return t}write(){if(this.type==="gnu-dummy")return new Uint8Array([101,0,...F.stringToUint8Array("GNU"),1]);let e=[new Uint8Array([m.write(m.s2k,this.type),this.algorithm])];switch(this.type){case"simple":break;case"salted":e.push(this.salt);break;case"iterated":e.push(this.salt),e.push(new Uint8Array([this.c]));break;case"gnu":throw new Error("GNU s2k type not supported.");default:throw new Error("Unknown s2k type.")}return F.concatUint8Array(e)}async produceKey(e,t,i){e=F.encodeUTF8(e);let n=[],s=0,o=0;for(;s<t;){let a;switch(this.type){case"simple":a=F.concatUint8Array([new Uint8Array(o),e]);break;case"salted":a=F.concatUint8Array([new Uint8Array(o),this.salt,e]);break;case"iterated":{let l=F.concatUint8Array([this.salt,e]),d=l.length,u=Math.max(this.getCount(),d);a=new Uint8Array(o+u),a.set(l,o);for(let f=o+d;f<u;f+=d,d*=2)a.copyWithin(f,o,f);break}case"gnu":throw new Error("GNU s2k type not supported.");default:throw new Error("Unknown s2k type.")}let c=await fs(this.algorithm,a);n.push(c),s+=c.length,o++}return F.concatUint8Array(n).subarray(0,t)}},zW=new Set([m.s2k.argon2,m.s2k.iterated]);JW=S6("/");try{xd=JW("worker_threads"),jW=xd.Worker,$W=xd.isMarkedAsUntransferable}catch{}Gt=Uint8Array,Li=Uint16Array,I1=Int32Array,FI=new Gt([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,0,0,0]),PI=new Gt([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,0,0]),DB=new Gt([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),xT=function(r,e){for(var t=new Li(31),i=0;i<31;++i)t[i]=e+=1<<r[i-1];for(var n=new I1(t[30]),i=1;i<30;++i)for(var s=t[i];s<t[i+1];++s)n[s]=s-t[i]<<5|i;return{b:t,r:n}},xd=xT(FI,2),CT=xd.b,QB=xd.r;CT[28]=258,QB[258]=28;ET=xT(PI,0),VW=ET.b,U5=ET.r,_B=new Li(32768);for(ut=0;ut<32768;++ut)zs=(ut&43690)>>1|(ut&21845)<<1,zs=(zs&52428)>>2|(zs&13107)<<2,zs=(zs&61680)>>4|(zs&3855)<<4,_B[ut]=((zs&65280)>>8|(zs&255)<<8)>>1;ds=(function(r,e,t){for(var i=r.length,n=0,s=new Li(e);n<i;++n)r[n]&&++s[r[n]-1];var o=new Li(e);for(n=1;n<e;++n)o[n]=o[n-1]+s[n-1]<<1;var a;if(t){a=new Li(1<<e);var c=15-e;for(n=0;n<i;++n)if(r[n])for(var l=n<<4|r[n],d=e-r[n],u=o[r[n]-1]++<<d,f=u|(1<<d)-1;u<=f;++u)a[_B[u]>>c]=l}else for(a=new Li(i),n=0;n<i;++n)r[n]&&(a[n]=_B[o[r[n]-1]++]>>15-r[n]);return a}),Ca=new Gt(288);for(ut=0;ut<144;++ut)Ca[ut]=8;for(ut=144;ut<256;++ut)Ca[ut]=9;for(ut=256;ut<280;++ut)Ca[ut]=7;for(ut=280;ut<288;++ut)Ca[ut]=8;$f=new Gt(32);for(ut=0;ut<32;++ut)$f[ut]=5;YW=ds(Ca,9,0),WW=ds(Ca,9,1),XW=ds($f,5,0),ZW=ds($f,5,1),JE=function(r){for(var e=r[0],t=1;t<r.length;++t)r[t]>e&&(e=r[t]);return e},vn=function(r,e,t){var i=e/8|0;return(r[i]|r[i+1]<<8)>>(e&7)&t},jE=function(r,e){var t=e/8|0;return(r[t]|r[t+1]<<8|r[t+2]<<16)>>(e&7)},w1=function(r){return(r+7)/8|0},Hf=function(r,e,t){return(e==null||e<0)&&(e=0),(t==null||t>r.length)&&(t=r.length),new Gt(r.subarray(e,t))},eX=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],Br=function(r,e,t){var i=new Error(e||eX[r]);if(i.code=r,Error.captureStackTrace&&Error.captureStackTrace(i,Br),!t)throw i;return i},tX=function(r,e,t,i){var n=r.length,s=0;if(!n||e.f&&!e.l)return t||new Gt(0);var o=!t,a=o||e.i!=2,c=e.i;o&&(t=new Gt(n*3));var l=function(qe){var _e=t.length;if(qe>_e){var se=new Gt(Math.max(_e*2,qe));se.set(t),t=se}},d=e.f||0,u=e.p||0,f=e.b||0,h=e.l,g=e.d,p=e.m,I=e.n,y=n*8;do{if(!h){d=vn(r,u,1);var w=vn(r,u+1,3);if(u+=3,w)if(w==1)h=WW,g=ZW,p=9,I=5;else if(w==2){var _=vn(r,u,31)+257,R=vn(r,u+10,15)+4,U=_+vn(r,u+5,31)+1;u+=14;for(var T=new Gt(U),D=new Gt(19),B=0;B<R;++B)D[DB[B]]=vn(r,u+B*3,7);u+=R*3;for(var Q=JE(D),v=(1<<Q)-1,E=ds(D,Q,1),B=0;B<U;){var P=E[vn(r,u,v)];u+=P&15;var C=P>>4;if(C<16)T[B++]=C;else{var N=0,J=0;for(C==16?(J=3+vn(r,u,3),u+=2,N=T[B-1]):C==17?(J=3+vn(r,u,7),u+=3):C==18&&(J=11+vn(r,u,127),u+=7);J--;)T[B++]=N}}var z=T.subarray(0,_),L=T.subarray(_);p=JE(z),I=JE(L),h=ds(z,p,1),g=ds(L,I,1)}else Br(1);else{var C=w1(u)+4,b=r[C-4]|r[C-3]<<8,x=C+b;if(x>n){c&&Br(0);break}a&&l(f+b),t.set(r.subarray(C,x),f),e.b=f+=b,e.p=u=x*8,e.f=d;continue}if(u>y){c&&Br(0);break}}a&&l(f+131072);for(var G=(1<<p)-1,K=(1<<I)-1,$=u;;$=u){var N=h[jE(r,u)&G],te=N>>4;if(u+=N&15,u>y){c&&Br(0);break}if(N||Br(2),te<256)t[f++]=te;else if(te==256){$=u,h=null;break}else{var re=te-254;if(te>264){var B=te-257,ee=FI[B];re=vn(r,u,(1<<ee)-1)+CT[B],u+=ee}var Z=g[jE(r,u)&K],me=Z>>4;Z||Br(3),u+=Z&15;var L=VW[me];if(me>3){var ee=PI[me];L+=jE(r,u)&(1<<ee)-1,u+=ee}if(u>y){c&&Br(0);break}a&&l(f+131072);var le=f+re;if(f<L){var Ae=s-L,ve=Math.min(L,le);for(Ae+f<0&&Br(3);f<ve;++f)t[f]=i[Ae+f]}for(;f<le;++f)t[f]=t[f-L]}}e.l=h,e.p=$,e.b=f,e.f=d,h&&(d=1,e.m=p,e.d=g,e.n=I)}while(!d);return f!=t.length&&o?Hf(t,0,f):t.subarray(0,f)},Js=function(r,e,t){t<<=e&7;var i=e/8|0;r[i]|=t,r[i+1]|=t>>8},Qf=function(r,e,t){t<<=e&7;var i=e/8|0;r[i]|=t,r[i+1]|=t>>8,r[i+2]|=t>>16},$E=function(r,e){for(var t=[],i=0;i<r.length;++i)r[i]&&t.push({s:i,f:r[i]});var n=t.length,s=t.slice();if(!n)return{t:Wy,l:0};if(n==1){var o=new Gt(t[0].s+1);return o[t[0].s]=1,{t:o,l:1}}t.sort(function(x,_){return x.f-_.f}),t.push({s:-1,f:25001});var a=t[0],c=t[1],l=0,d=1,u=2;for(t[0]={s:-1,f:a.f+c.f,l:a,r:c};d!=n-1;)a=t[t[l].f<t[u].f?l++:u++],c=t[l!=d&&t[l].f<t[u].f?l++:u++],t[d++]={s:-1,f:a.f+c.f,l:a,r:c};for(var f=s[0].s,i=1;i<n;++i)s[i].s>f&&(f=s[i].s);var h=new Li(f+1),g=FB(t[d-1],h,0);if(g>e){var i=0,p=0,I=g-e,y=1<<I;for(s.sort(function(_,R){return h[R.s]-h[_.s]||_.f-R.f});i<n;++i){var w=s[i].s;if(h[w]>e)p+=y-(1<<g-h[w]),h[w]=e;else break}for(p>>=I;p>0;){var C=s[i].s;h[C]<e?p-=1<<e-h[C]++-1:++i}for(;i>=0&&p;--i){var b=s[i].s;h[b]==e&&(--h[b],++p)}g=e}return{t:new Gt(h),l:g}},FB=function(r,e,t){return r.s==-1?Math.max(FB(r.l,e,t+1),FB(r.r,e,t+1)):e[r.s]=t},R5=function(r){for(var e=r.length;e&&!r[--e];);for(var t=new Li(++e),i=0,n=r[0],s=1,o=function(c){t[i++]=c},a=1;a<=e;++a)if(r[a]==n&&a!=e)++s;else{if(!n&&s>2){for(;s>138;s-=138)o(32754);s>2&&(o(s>10?s-11<<5|28690:s-3<<5|12305),s=0)}else if(s>3){for(o(n),--s;s>6;s-=6)o(8304);s>2&&(o(s-3<<5|8208),s=0)}for(;s--;)o(n);s=1,n=r[a]}return{c:t.subarray(0,i),n:e}},_f=function(r,e){for(var t=0,i=0;i<e.length;++i)t+=r[i]*e[i];return t},x1=function(r,e,t){var i=t.length,n=w1(e+2);r[n]=i&255,r[n+1]=i>>8,r[n+2]=r[n]^255,r[n+3]=r[n+1]^255;for(var s=0;s<i;++s)r[n+s+4]=t[s];return(n+4+i)*8},N5=function(r,e,t,i,n,s,o,a,c,l,d){Js(e,d++,t),++n[256];for(var u=$E(n,15),f=u.t,h=u.l,g=$E(s,15),p=g.t,I=g.l,y=R5(f),w=y.c,C=y.n,b=R5(p),x=b.c,_=b.n,R=new Li(19),U=0;U<w.length;++U)++R[w[U]&31];for(var U=0;U<x.length;++U)++R[x[U]&31];for(var T=$E(R,7),D=T.t,B=T.l,Q=19;Q>4&&!D[DB[Q-1]];--Q);var v=l+5<<3,E=_f(n,Ca)+_f(s,$f)+o,P=_f(n,f)+_f(s,p)+o+14+3*Q+_f(R,D)+2*R[16]+3*R[17]+7*R[18];if(c>=0&&v<=E&&v<=P)return x1(e,d,r.subarray(c,c+l));var N,J,z,L;if(Js(e,d,1+(P<E)),d+=2,P<E){N=ds(f,h,0),J=f,z=ds(p,I,0),L=p;var G=ds(D,B,0);Js(e,d,C-257),Js(e,d+5,_-1),Js(e,d+10,Q-4),d+=14;for(var U=0;U<Q;++U)Js(e,d+3*U,D[DB[U]]);d+=3*Q;for(var K=[w,x],$=0;$<2;++$)for(var te=K[$],U=0;U<te.length;++U){var re=te[U]&31;Js(e,d,G[re]),d+=D[re],re>15&&(Js(e,d,te[U]>>5&127),d+=te[U]>>12)}}else N=YW,J=Ca,z=XW,L=$f;for(var U=0;U<a;++U){var ee=i[U];if(ee>255){var re=ee>>18&31;Qf(e,d,N[re+257]),d+=J[re+257],re>7&&(Js(e,d,ee>>23&31),d+=FI[re]);var Z=ee&31;Qf(e,d,z[Z]),d+=L[Z],Z>3&&(Qf(e,d,ee>>5&8191),d+=PI[Z])}else Qf(e,d,N[ee]),d+=J[ee]}return Qf(e,d,N[256]),d+J[256]},rX=new I1([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),Wy=new Gt(0),iX=function(r,e,t,i,n,s){var o=s.z||r.length,a=new Gt(i+o+5*(1+Math.ceil(o/7e3))+n),c=a.subarray(i,a.length-n),l=s.l,d=(s.r||0)&7;if(e){d&&(c[0]=s.r>>3);for(var u=rX[e-1],f=u>>13,h=u&8191,g=(1<<t)-1,p=s.p||new Li(32768),I=s.h||new Li(g+1),y=Math.ceil(t/3),w=2*y,C=function(it){return(r[it]^r[it+1]<<y^r[it+2]<<w)&g},b=new I1(25e3),x=new Li(288),_=new Li(32),R=0,U=0,T=s.i||0,D=0,B=s.w||0,Q=0;T+2<o;++T){var v=C(T),E=T&32767,P=I[v];if(p[E]=P,I[v]=E,B<=T){var N=o-T;if((R>7e3||D>24576)&&(N>423||!l)){d=N5(r,c,0,b,x,_,U,D,Q,T-Q,d),D=R=U=0,Q=T;for(var J=0;J<286;++J)x[J]=0;for(var J=0;J<30;++J)_[J]=0}var z=2,L=0,G=h,K=E-P&32767;if(N>2&&v==C(T-K))for(var $=Math.min(f,N)-1,te=Math.min(32767,T),re=Math.min(258,N);K<=te&&--G&&E!=P;){if(r[T+z]==r[T+z-K]){for(var ee=0;ee<re&&r[T+ee]==r[T+ee-K];++ee);if(ee>z){if(z=ee,L=K,ee>$)break;for(var Z=Math.min(K,ee-2),me=0,J=0;J<Z;++J){var le=T-K+J&32767,Ae=p[le],ve=le-Ae&32767;ve>me&&(me=ve,P=le)}}}E=P,P=p[E],K+=E-P&32767}if(L){b[D++]=268435456|QB[z]<<18|U5[L];var qe=QB[z]&31,_e=U5[L]&31;U+=FI[qe]+PI[_e],++x[257+qe],++_[_e],B=T+z,++R}else b[D++]=r[T],++x[r[T]]}}for(T=Math.max(T,B);T<o;++T)b[D++]=r[T],++x[r[T]];d=N5(r,c,l,b,x,_,U,D,Q,T-Q,d),l||(s.r=d&7|c[d/8|0]<<3,d-=7,s.h=I,s.p=p,s.i=T,s.w=B)}else{for(var T=s.w||0;T<o+l;T+=65535){var se=T+65535;se>=o&&(c[d/8|0]=l,se=o),d=x1(c,d+1,r.subarray(T,se))}s.i=o}return Hf(a,0,i+w1(d)+n)},BT=function(){var r=1,e=0;return{p:function(t){for(var i=r,n=e,s=t.length|0,o=0;o!=s;){for(var a=Math.min(o+2655,s);o<a;++o)n+=i+=t[o];i=(i&65535)+15*(i>>16),n=(n&65535)+15*(n>>16)}r=i,e=n},d:function(){return r%=65521,e%=65521,(r&255)<<24|(r&65280)<<8|(e&255)<<8|e>>8}}},bT=function(r,e,t,i,n){if(!n&&(n={l:1},e.dictionary)){var s=e.dictionary.subarray(-32768),o=new Gt(s.length+r.length);o.set(s),o.set(r,s.length),r=o,n.w=s.length}return iX(r,e.level==null?6:e.level,e.mem==null?n.l?Math.ceil(Math.max(8,Math.min(13,Math.log(r.length)))*1.5):20:12+e.mem,t,i,n)},vT=function(r,e,t){for(;t;++e)r[e]=t,t>>>=8},nX=function(r,e){var t=e.level,i=t==0?0:t<6?1:t==9?3:2;if(r[0]=120,r[1]=i<<6|(e.dictionary&&32),r[1]|=31-(r[0]<<8|r[1])%31,e.dictionary){var n=BT();n.p(e.dictionary),vT(r,2,n.d())}},sX=function(r,e){return((r[0]&15)!=8||r[0]>>4>7||(r[0]<<8|r[1])%31)&&Br(6,"invalid zlib data"),(r[1]>>5&1)==+!e&&Br(6,"invalid zlib data: "+(r[1]&32?"need":"unexpected")+" dictionary"),(r[1]>>3&4)+2},Fy=(function(){function r(e,t){if(typeof e=="function"&&(t=e,e={}),this.ondata=t,this.o=e||{},this.s={l:0,i:32768,w:32768,z:32768},this.b=new Gt(98304),this.o.dictionary){var i=this.o.dictionary.subarray(-32768);this.b.set(i,32768-i.length),this.s.i=32768-i.length}}return r.prototype.p=function(e,t){this.ondata(bT(e,this.o,0,0,this.s),t)},r.prototype.push=function(e,t){this.ondata||Br(5),this.s.l&&Br(4);var i=e.length+this.s.z;if(i>this.b.length){if(i>2*this.b.length-32768){var n=new Gt(i&-32768);n.set(this.b.subarray(0,this.s.z)),this.b=n}var s=this.b.length-this.s.z;this.b.set(e.subarray(0,s),this.s.z),this.s.z=this.b.length,this.p(this.b,!1),this.b.set(this.b.subarray(-32768)),this.b.set(e.subarray(s),32768),this.s.z=e.length-s+32768,this.s.i=32766,this.s.w=32768}else this.b.set(e,this.s.z),this.s.z+=e.length;this.s.l=t&1,(this.s.z>this.s.w+8191||t)&&(this.p(this.b,t||!1),this.s.w=this.s.i,this.s.i-=2),t&&(this.s=this.o={},this.b=Wy)},r.prototype.flush=function(e){if(this.ondata||Br(5),this.s.l&&Br(4),this.p(this.b,!1),this.s.w=this.s.i,this.s.i-=2,e){var t=new Gt(6);t[0]=this.s.r>>3;var i=x1(t,this.s.r,Wy);this.s.r=0,this.ondata(t.subarray(0,i>>3),!1)}},r})(),Py=(function(){function r(e,t){typeof e=="function"&&(t=e,e={}),this.ondata=t;var i=e&&e.dictionary&&e.dictionary.subarray(-32768);this.s={i:0,b:i?i.length:0},this.o=new Gt(32768),this.p=new Gt(0),i&&this.o.set(i)}return r.prototype.e=function(e){if(this.ondata||Br(5),this.d&&Br(4),!this.p.length)this.p=e;else if(e.length){var t=new Gt(this.p.length+e.length);t.set(this.p),t.set(e,this.p.length),this.p=t}},r.prototype.c=function(e){this.s.i=+(this.d=e||!1);var t=this.s.b,i=tX(this.p,this.s,this.o);this.ondata(Hf(i,t,this.s.b),this.d),this.o=Hf(i,this.s.b-32768),this.s.b=this.o.length,this.p=Hf(this.p,this.s.p/8|0),this.s.p&=7},r.prototype.push=function(e,t){this.e(e),this.c(t)},r})(),oX=(function(){function r(e,t){this.c=BT(),this.v=1,Fy.call(this,e,t)}return r.prototype.push=function(e,t){this.c.p(e),Fy.prototype.push.call(this,e,t)},r.prototype.p=function(e,t){var i=bT(e,this.o,this.v&&(this.o.dictionary?6:2),t&&4,this.s);this.v&&(nX(i,this.o),this.v=0),t&&vT(i,i.length-4,this.c.d()),this.ondata(i,t)},r.prototype.flush=function(e){Fy.prototype.flush.call(this,e)},r})(),aX=(function(){function r(e,t){Py.call(this,e,t),this.v=e&&e.dictionary?2:1}return r.prototype.push=function(e,t){if(Py.prototype.e.call(this,e),this.v){if(this.p.length<6&&!t)return;this.p=this.p.subarray(sX(this.p,this.v-1)),this.v=0}t&&(this.p.length<4&&Br(6,"invalid zlib data"),this.p=this.p.subarray(0,-4)),Py.prototype.c.call(this,t)},r})(),cX=typeof TextDecoder<"u"&&new TextDecoder,lX=0;try{cX.decode(Wy,{stream:!0}),lX=1}catch{}Ea=class{static get tag(){return m.packet.literalData}constructor(e=new Date){this.format=m.literal.utf8,this.date=F.normalizeDate(e),this.text=null,this.data=null,this.filename=""}setText(e,t=m.literal.utf8){this.format=t,this.text=e,this.data=null}getText(e=!1){return(this.text===null||F.isStream(this.text))&&(this.text=F.decodeUTF8(F.nativeEOL(this.getBytes(e)))),this.text}setBytes(e,t){this.format=t,this.data=e,this.text=null}getBytes(e=!1){return this.data===null&&(this.data=F.canonicalizeEOL(F.encodeUTF8(this.text))),e?Mf(this.data):this.data}setFilename(e){this.filename=e}getFilename(){return this.filename}async read(e){await II(e,async t=>{let i=await t.readByte(),n=await t.readByte();this.filename=F.decodeUTF8(await t.readBytes(n)),this.date=F.readDate(await t.readBytes(4));let s=t.remainder();St(s)&&(s=await Xt(s)),this.setBytes(s,i)})}writeHeader(){let e=F.encodeUTF8(this.filename),t=new Uint8Array([e.length]),i=new Uint8Array([this.format]),n=F.writeDate(this.date);return F.concatUint8Array([i,t,e,n])}write(){let e=this.writeHeader(),t=this.getBytes();return F.concat([e,t])}},so=class r{constructor(){this.bytes=""}read(e){return this.bytes=F.uint8ArrayToString(e.subarray(0,8)),this.bytes.length}write(){return F.stringToUint8Array(this.bytes)}toHex(){return F.uint8ArrayToHex(F.stringToUint8Array(this.bytes))}equals(e,t=!1){return t&&(e.isWildcard()||this.isWildcard())||this.bytes===e.bytes}isNull(){return this.bytes===""}isWildcard(){return/^0+$/.test(this.toHex())}static mapToHex(e){return e.toHex()}static fromID(e){let t=new r;return t.read(F.hexToUint8Array(e)),t}static wildcard(){let e=new r;return e.read(new Uint8Array(8)),e}},Ff=Symbol("verified"),q5="salt@notations.openpgpjs.org",dX=new Set([m.signatureSubpacket.issuerKeyID,m.signatureSubpacket.issuerFingerprint,m.signatureSubpacket.embeddedSignature]),Nr=class r{static get tag(){return m.packet.signature}constructor(){this.version=null,this.signatureType=null,this.hashAlgorithm=null,this.publicKeyAlgorithm=null,this.signatureData=null,this.unhashedSubpackets=[],this.unknownSubpackets=[],this.signedHashValue=null,this.salt=null,this.created=null,this.signatureExpirationTime=null,this.signatureNeverExpires=!0,this.exportable=null,this.trustLevel=null,this.trustAmount=null,this.regularExpression=null,this.revocable=null,this.keyExpirationTime=null,this.keyNeverExpires=null,this.preferredSymmetricAlgorithms=null,this.revocationKeyClass=null,this.revocationKeyAlgorithm=null,this.revocationKeyFingerprint=null,this.issuerKeyID=new so,this.rawNotations=[],this.notations={},this.preferredHashAlgorithms=null,this.preferredCompressionAlgorithms=null,this.keyServerPreferences=null,this.preferredKeyServer=null,this.isPrimaryUserID=null,this.policyURI=null,this.keyFlags=null,this.signersUserID=null,this.reasonForRevocationFlag=null,this.reasonForRevocationString=null,this.features=null,this.signatureTargetPublicKeyAlgorithm=null,this.signatureTargetHashAlgorithm=null,this.signatureTargetHash=null,this.embeddedSignature=null,this.issuerKeyVersion=null,this.issuerFingerprint=null,this.preferredAEADAlgorithms=null,this.preferredCipherSuites=null,this.revoked=null,this[Ff]=null}read(e,t=pe){let i=0;if(this.version=e[i++],this.version===5&&!t.enableParsingV5Entities)throw new ft("Support for v5 entities is disabled; turn on `config.enableParsingV5Entities` if needed");if(this.version!==4&&this.version!==5&&this.version!==6)throw new ft(`Version ${this.version} of the signature packet is unsupported.`);if(this.signatureType=e[i++],this.publicKeyAlgorithm=e[i++],this.hashAlgorithm=e[i++],i+=this.readSubPackets(e.subarray(i,e.length),!0),!this.created)throw new Error("Missing signature creation time subpacket.");if(this.signatureData=e.subarray(0,i),i+=this.readSubPackets(e.subarray(i,e.length),!1),this.signedHashValue=e.subarray(i,i+2),i+=2,this.version===6){let a=e[i++];this.salt=e.subarray(i,i+a),i+=a}let n=e.subarray(i,e.length),{read:s,signatureParams:o}=qW(this.publicKeyAlgorithm,n);if(s<n.length)throw new Error("Error reading MPIs");this.params=o}writeParams(){return this.params instanceof Promise?Hc(async()=>vd(this.publicKeyAlgorithm,await this.params)):vd(this.publicKeyAlgorithm,this.params)}write(){let e=[];return e.push(this.signatureData),e.push(this.writeUnhashedSubPackets()),e.push(this.signedHashValue),this.version===6&&(e.push(new Uint8Array([this.salt.length])),e.push(this.salt)),e.push(this.writeParams()),F.concat(e)}async sign(e,t,i=new Date,n=!1,s){this.version=e.version,this.created=F.normalizeDate(i),this.issuerKeyVersion=e.version,this.issuerFingerprint=e.getFingerprintBytes(),this.issuerKeyID=e.getKeyID();let o=[new Uint8Array([this.version,this.signatureType,this.publicKeyAlgorithm,this.hashAlgorithm])];if(this.version===6){let d=VE(this.hashAlgorithm);if(this.salt===null)this.salt=Rr(d);else if(d!==this.salt.length)throw new Error("Provided salt does not have the required length")}else if(s.nonDeterministicSignaturesViaNotation)if(this.rawNotations.filter(({name:u})=>u===q5).length===0){let u=Rr(VE(this.hashAlgorithm));this.rawNotations.push({name:q5,value:u,humanReadable:!1,critical:!1})}else throw new Error("Unexpected existing salt notation");o.push(this.writeHashedSubPackets()),this.unhashedSubpackets=[],this.signatureData=F.concat(o);let a=this.toHash(this.signatureType,t,n),c=await this.hash(this.signatureType,t,a,n);this.signedHashValue=Ur(Uc(c),0,2);let l=async()=>MW(this.publicKeyAlgorithm,this.hashAlgorithm,e.publicParams,e.privateParams,a,await Xt(c));F.isStream(c)?this.params=l():(this.params=await l(),this[Ff]=!0)}writeHashedSubPackets(){let e=m.signatureSubpacket,t=[],i;if(this.created===null)throw new Error("Missing signature creation time");t.push(yt(e.signatureCreationTime,!0,F.writeDate(this.created))),this.signatureExpirationTime!==null&&t.push(yt(e.signatureExpirationTime,!0,F.writeNumber(this.signatureExpirationTime,4))),this.exportable!==null&&t.push(yt(e.exportableCertification,!0,new Uint8Array([this.exportable?1:0]))),this.trustLevel!==null&&(i=new Uint8Array([this.trustLevel,this.trustAmount]),t.push(yt(e.trustSignature,!0,i))),this.regularExpression!==null&&t.push(yt(e.regularExpression,!0,this.regularExpression)),this.revocable!==null&&t.push(yt(e.revocable,!0,new Uint8Array([this.revocable?1:0]))),this.keyExpirationTime!==null&&t.push(yt(e.keyExpirationTime,!0,F.writeNumber(this.keyExpirationTime,4))),this.preferredSymmetricAlgorithms!==null&&(i=F.stringToUint8Array(F.uint8ArrayToString(this.preferredSymmetricAlgorithms)),t.push(yt(e.preferredSymmetricAlgorithms,!1,i))),this.revocationKeyClass!==null&&(i=new Uint8Array([this.revocationKeyClass,this.revocationKeyAlgorithm]),i=F.concat([i,this.revocationKeyFingerprint]),t.push(yt(e.revocationKey,!1,i))),!this.issuerKeyID.isNull()&&this.issuerKeyVersion<5&&t.push(yt(e.issuerKeyID,!1,this.issuerKeyID.write())),this.rawNotations.forEach(({name:o,value:a,humanReadable:c,critical:l})=>{i=[new Uint8Array([c?128:0,0,0,0])];let d=F.encodeUTF8(o);i.push(F.writeNumber(d.length,2)),i.push(F.writeNumber(a.length,2)),i.push(d),i.push(a),i=F.concat(i),t.push(yt(e.notationData,l,i))}),this.preferredHashAlgorithms!==null&&(i=F.stringToUint8Array(F.uint8ArrayToString(this.preferredHashAlgorithms)),t.push(yt(e.preferredHashAlgorithms,!1,i))),this.preferredCompressionAlgorithms!==null&&(i=F.stringToUint8Array(F.uint8ArrayToString(this.preferredCompressionAlgorithms)),t.push(yt(e.preferredCompressionAlgorithms,!1,i))),this.keyServerPreferences!==null&&(i=F.stringToUint8Array(F.uint8ArrayToString(this.keyServerPreferences)),t.push(yt(e.keyServerPreferences,!1,i))),this.preferredKeyServer!==null&&t.push(yt(e.preferredKeyServer,!1,F.encodeUTF8(this.preferredKeyServer))),this.isPrimaryUserID!==null&&t.push(yt(e.primaryUserID,!1,new Uint8Array([this.isPrimaryUserID?1:0]))),this.policyURI!==null&&t.push(yt(e.policyURI,!1,F.encodeUTF8(this.policyURI))),this.keyFlags!==null&&(i=F.stringToUint8Array(F.uint8ArrayToString(this.keyFlags)),t.push(yt(e.keyFlags,!0,i))),this.signersUserID!==null&&t.push(yt(e.signersUserID,!1,F.encodeUTF8(this.signersUserID))),this.reasonForRevocationFlag!==null&&(i=F.stringToUint8Array(String.fromCharCode(this.reasonForRevocationFlag)+this.reasonForRevocationString),t.push(yt(e.reasonForRevocation,!0,i))),this.features!==null&&(i=F.stringToUint8Array(F.uint8ArrayToString(this.features)),t.push(yt(e.features,!1,i))),this.signatureTargetPublicKeyAlgorithm!==null&&(i=[new Uint8Array([this.signatureTargetPublicKeyAlgorithm,this.signatureTargetHashAlgorithm])],i.push(F.stringToUint8Array(this.signatureTargetHash)),i=F.concat(i),t.push(yt(e.signatureTarget,!0,i))),this.embeddedSignature!==null&&t.push(yt(e.embeddedSignature,!0,this.embeddedSignature.write())),this.issuerFingerprint!==null&&(i=[new Uint8Array([this.issuerKeyVersion]),this.issuerFingerprint],i=F.concat(i),t.push(yt(e.issuerFingerprint,this.version>=5,i))),this.preferredAEADAlgorithms!==null&&(i=F.stringToUint8Array(F.uint8ArrayToString(this.preferredAEADAlgorithms)),t.push(yt(e.preferredAEADAlgorithms,!1,i))),this.preferredCipherSuites!==null&&(i=new Uint8Array([].concat(...this.preferredCipherSuites)),t.push(yt(e.preferredCipherSuites,!1,i)));let n=F.concat(t),s=F.writeNumber(n.length,this.version===6?4:2);return F.concat([s,n])}writeUnhashedSubPackets(){let e=this.unhashedSubpackets.map(({type:n,critical:s,body:o})=>yt(n,s,o)),t=F.concat(e),i=F.writeNumber(t.length,this.version===6?4:2);return F.concat([i,t])}readSubPacket(e,t=!0){let i=0,n=!!(e[i]&128),s=e[i]&127;if(i++,!(!t&&(this.unhashedSubpackets.push({type:s,critical:n,body:e.subarray(i,e.length)}),!dX.has(s))))switch(s){case m.signatureSubpacket.signatureCreationTime:this.created=F.readDate(e.subarray(i,e.length));break;case m.signatureSubpacket.signatureExpirationTime:{let o=F.readNumber(e.subarray(i,e.length));this.signatureNeverExpires=o===0,this.signatureExpirationTime=o;break}case m.signatureSubpacket.exportableCertification:this.exportable=e[i++]===1;break;case m.signatureSubpacket.trustSignature:this.trustLevel=e[i++],this.trustAmount=e[i++];break;case m.signatureSubpacket.regularExpression:this.regularExpression=e[i];break;case m.signatureSubpacket.revocable:this.revocable=e[i++]===1;break;case m.signatureSubpacket.keyExpirationTime:{let o=F.readNumber(e.subarray(i,e.length));this.keyExpirationTime=o,this.keyNeverExpires=o===0;break}case m.signatureSubpacket.preferredSymmetricAlgorithms:this.preferredSymmetricAlgorithms=[...e.subarray(i,e.length)];break;case m.signatureSubpacket.revocationKey:this.revocationKeyClass=e[i++],this.revocationKeyAlgorithm=e[i++],this.revocationKeyFingerprint=e.subarray(i,i+20);break;case m.signatureSubpacket.issuerKeyID:if(this.version===4)this.issuerKeyID.read(e.subarray(i,e.length));else if(t)throw new Error("Unexpected Issuer Key ID subpacket");break;case m.signatureSubpacket.notationData:{let o=!!(e[i]&128);i+=4;let a=F.readNumber(e.subarray(i,i+2));i+=2;let c=F.readNumber(e.subarray(i,i+2));i+=2;let l=F.decodeUTF8(e.subarray(i,i+a)),d=e.subarray(i+a,i+a+c);this.rawNotations.push({name:l,humanReadable:o,value:d,critical:n}),o&&(this.notations[l]=F.decodeUTF8(d));break}case m.signatureSubpacket.preferredHashAlgorithms:this.preferredHashAlgorithms=[...e.subarray(i,e.length)];break;case m.signatureSubpacket.preferredCompressionAlgorithms:this.preferredCompressionAlgorithms=[...e.subarray(i,e.length)];break;case m.signatureSubpacket.keyServerPreferences:this.keyServerPreferences=[...e.subarray(i,e.length)];break;case m.signatureSubpacket.preferredKeyServer:this.preferredKeyServer=F.decodeUTF8(e.subarray(i,e.length));break;case m.signatureSubpacket.primaryUserID:this.isPrimaryUserID=e[i++]!==0;break;case m.signatureSubpacket.policyURI:this.policyURI=F.decodeUTF8(e.subarray(i,e.length));break;case m.signatureSubpacket.keyFlags:this.keyFlags=[...e.subarray(i,e.length)];break;case m.signatureSubpacket.signersUserID:this.signersUserID=F.decodeUTF8(e.subarray(i,e.length));break;case m.signatureSubpacket.reasonForRevocation:this.reasonForRevocationFlag=e[i++],this.reasonForRevocationString=F.decodeUTF8(e.subarray(i,e.length));break;case m.signatureSubpacket.features:this.features=[...e.subarray(i,e.length)];break;case m.signatureSubpacket.signatureTarget:{this.signatureTargetPublicKeyAlgorithm=e[i++],this.signatureTargetHashAlgorithm=e[i++];let o=gr(this.signatureTargetHashAlgorithm);this.signatureTargetHash=F.uint8ArrayToString(e.subarray(i,i+o));break}case m.signatureSubpacket.embeddedSignature:this.embeddedSignature=new r,this.embeddedSignature.read(e.subarray(i,e.length));break;case m.signatureSubpacket.issuerFingerprint:this.issuerKeyVersion=e[i++],this.issuerFingerprint=e.subarray(i,e.length),this.issuerKeyVersion>=5?this.issuerKeyID.read(this.issuerFingerprint):this.issuerKeyID.read(this.issuerFingerprint.subarray(-8));break;case m.signatureSubpacket.preferredAEADAlgorithms:this.preferredAEADAlgorithms=[...e.subarray(i,e.length)];break;case m.signatureSubpacket.preferredCipherSuites:this.preferredCipherSuites=[];for(let o=i;o<e.length;o+=2)this.preferredCipherSuites.push([e[o],e[o+1]]);break;default:this.unknownSubpackets.push({type:s,critical:n,body:e.subarray(i,e.length)});break}}readSubPackets(e,t=!0,i){let n=this.version===6?4:2,s=F.readNumber(e.subarray(0,n)),o=n;for(;o<2+s;){let a=L6(e.subarray(o,e.length));o+=a.offset,this.readSubPacket(e.subarray(o,o+a.len),t,i),o+=a.len}return o}toSign(e,t){let i=m.signature;switch(e){case i.binary:return t.text!==null?F.encodeUTF8(t.getText(!0)):t.getBytes(!0);case i.text:{let n=t.getBytes(!0);return F.canonicalizeEOL(n)}case i.standalone:return new Uint8Array(0);case i.certGeneric:case i.certPersona:case i.certCasual:case i.certPositive:case i.certRevocation:{let n,s;if(t.userID)s=180,n=t.userID;else if(t.userAttribute)s=209,n=t.userAttribute;else throw new Error("Either a userID or userAttribute packet needs to be supplied for certification.");let o=n.write();return F.concat([this.toSign(i.key,t),new Uint8Array([s]),F.writeNumber(o.length,4),o])}case i.subkeyBinding:case i.subkeyRevocation:case i.keyBinding:return F.concat([this.toSign(i.key,t),this.toSign(i.key,{key:t.bind})]);case i.key:if(t.key===void 0)throw new Error("Key packet is required for this signature.");return t.key.writeForHash(this.version);case i.keyRevocation:return this.toSign(i.key,t);case i.timestamp:return new Uint8Array(0);case i.thirdParty:throw new Error("Not implemented");default:throw new Error("Unknown signature type.")}}calculateTrailer(e,t){let i=0;return sr(Uc(this.signatureData),n=>{i+=n.length},()=>{let n=[];return this.version===5&&(this.signatureType===m.signature.binary||this.signatureType===m.signature.text)&&(t?n.push(new Uint8Array(6)):n.push(e.writeHeader())),n.push(new Uint8Array([this.version,255])),this.version===5&&n.push(new Uint8Array(4)),n.push(F.writeNumber(i,4)),F.concat(n)})}toHash(e,t,i=!1){let n=this.toSign(e,t);return F.concat([this.salt||new Uint8Array,n,this.signatureData,this.calculateTrailer(t,i)])}async hash(e,t,i,n=!1){if(this.version===6&&this.salt.length!==VE(this.hashAlgorithm))throw new Error("Signature salt does not have the expected length");return i||(i=this.toHash(e,t,n)),fs(this.hashAlgorithm,i)}async verify(e,t,i,n=new Date,s=!1,o=pe){if(!this.issuerKeyID.equals(e.getKeyID()))throw new Error("Signature was not issued by the given public key");if(this.publicKeyAlgorithm!==e.algorithm)throw new Error("Public key algorithm used to sign signature does not match issuer key algorithm.");let a=t===m.signature.binary||t===m.signature.text;if(!(this[Ff]&&!a)){let d,u;if(this.hashed?u=await this.hashed:(d=this.toHash(t,i,s),u=await this.hash(t,i,d)),u=await Xt(u),this.signedHashValue[0]!==u[0]||this.signedHashValue[1]!==u[1])throw new Error("Signed digest did not match");if(this.params=await this.params,this[Ff]=await OW(this.publicKeyAlgorithm,this.hashAlgorithm,this.params,e.publicParams,d,u),!this[Ff])throw new Error("Signature verification failed")}let l=F.normalizeDate(n);if(l&&this.created>l)throw new Error("Signature creation time is in the future");if(l&&l>=this.getExpirationTime())throw new Error("Signature is expired");if(o.rejectHashAlgorithms.has(this.hashAlgorithm))throw new Error("Insecure hash algorithm: "+m.read(m.hash,this.hashAlgorithm).toUpperCase());if(o.rejectMessageHashAlgorithms.has(this.hashAlgorithm)&&[m.signature.binary,m.signature.text].includes(this.signatureType))throw new Error("Insecure message hash algorithm: "+m.read(m.hash,this.hashAlgorithm).toUpperCase());if(this.unknownSubpackets.forEach(({type:d,critical:u})=>{if(u)throw new Error(`Unknown critical signature subpacket type ${d}`)}),this.rawNotations.forEach(({name:d,critical:u})=>{if(u&&o.knownNotations.indexOf(d)<0)throw new Error(`Unknown critical notation: ${d}`)}),this.revocationKeyClass!==null)throw new Error("This key is intended to be revoked with an authorized key, which OpenPGP.js does not support.")}isExpired(e=new Date){let t=F.normalizeDate(e);return t!==null?!(this.created<=t&&t<this.getExpirationTime()):!1}getExpirationTime(){return this.signatureNeverExpires?1/0:new Date(this.created.getTime()+this.signatureExpirationTime*1e3)}};an=class r{static get tag(){return m.packet.onePassSignature}static fromSignaturePacket(e,t){let i=new r;return i.version=e.version===6?6:3,i.signatureType=e.signatureType,i.hashAlgorithm=e.hashAlgorithm,i.publicKeyAlgorithm=e.publicKeyAlgorithm,i.issuerKeyID=e.issuerKeyID,i.salt=e.salt,i.issuerFingerprint=e.issuerFingerprint,i.flags=t?1:0,i}constructor(){this.version=null,this.signatureType=null,this.hashAlgorithm=null,this.publicKeyAlgorithm=null,this.salt=null,this.issuerKeyID=null,this.issuerFingerprint=null,this.flags=null}read(e){let t=0;if(this.version=e[t++],this.version!==3&&this.version!==6)throw new ft(`Version ${this.version} of the one-pass signature packet is unsupported.`);if(this.signatureType=e[t++],this.hashAlgorithm=e[t++],this.publicKeyAlgorithm=e[t++],this.version===6){let i=e[t++];this.salt=e.subarray(t,t+i),t+=i,this.issuerFingerprint=e.subarray(t,t+32),t+=32,this.issuerKeyID=new so,this.issuerKeyID.read(this.issuerFingerprint)}else this.issuerKeyID=new so,this.issuerKeyID.read(e.subarray(t,t+8)),t+=8;return this.flags=e[t++],this}write(){let e=[new Uint8Array([this.version,this.signatureType,this.hashAlgorithm,this.publicKeyAlgorithm])];return this.version===6?e.push(new Uint8Array([this.salt.length]),this.salt,this.issuerFingerprint):e.push(this.issuerKeyID.write()),e.push(new Uint8Array([this.flags])),F.concatUint8Array(e)}calculateTrailer(...e){return Hc(async()=>Nr.prototype.calculateTrailer.apply(await this.correspondingSig,e))}async verify(){let e=await this.correspondingSig;if(!e||e.constructor.tag!==m.packet.signature)throw new Error("Corresponding signature packet missing");if(e.signatureType!==this.signatureType||e.hashAlgorithm!==this.hashAlgorithm||e.publicKeyAlgorithm!==this.publicKeyAlgorithm||!e.issuerKeyID.equals(this.issuerKeyID)||this.version===3&&e.version===6||this.version===6&&e.version!==6||this.version===6&&!F.equalsUint8Array(e.issuerFingerprint,this.issuerFingerprint)||this.version===6&&!F.equalsUint8Array(e.salt,this.salt))throw new Error("Corresponding signature packet does not match one-pass signature packet");return e.hashed=this.hashed,e.verify.apply(e,arguments)}};an.prototype.hash=Nr.prototype.hash;an.prototype.toHash=Nr.prototype.toHash;an.prototype.toSign=Nr.prototype.toSign;Ct=class r extends Array{static async fromBinary(e,t,i=pe,n=null,s=!1){let o=new r;return await o.read(e,t,i,n,s),o}async read(e,t,i=pe,n=null,s=!1){let o;i.additionalAllowedPackets.length&&(o=F.constructAllowedPackets(i.additionalAllowedPackets),t={...t,...o}),this.stream=Ba(e,async(c,l)=>{let d=_n(c),u=Hi(l);try{let f=F.isStream(c);for(;;){await u.ready;let h,g;if(await CY(d,f,async y=>{try{if(y.tag===m.packet.marker||y.tag===m.packet.trust||y.tag===m.packet.padding)return;let w=uX(y.tag,t);try{n?.recordPacket(y.tag,o)}catch(C){if(i.enforceGrammar)throw C;F.printDebugError(C)}w.packets=new r,w.fromStream=F.isStream(y.packet),g=w.fromStream;try{await w.read(y.packet,i)}catch(C){throw C instanceof ft?C:F.wrapError(new Lf(`Parsing ${w.constructor.name} failed`),C)}await u.write(w)}catch(w){let C=w instanceof yd&&y.tag<=39,b=w instanceof ft&&!(w instanceof yd)&&!i.ignoreUnsupportedPackets,x=w instanceof Lf&&!i.ignoreMalformedPackets,_=ky(y.tag),R=!(w instanceof yd||w instanceof ft||w instanceof Lf);if(C||b||x||_||R)s?h=w:await u.abort(w);else{let U=new Gf(y.tag,y.packet);await u.write(U)}F.printDebugError(w)}}),g&&(f=null),h)throw await d.readToEnd(),h;let p=await d.peekBytes(2);if(!p||!p.length){try{n?.recordEnd()}catch(y){if(i.enforceGrammar)throw y;F.printDebugError(y)}await u.ready,await u.close();return}}}catch(f){await u.abort(f)}});let a=_n(this.stream);for(;;){let{done:c,value:l}=await a.read();if(c?this.stream=null:this.push(l),c||ky(l.constructor.tag))break}a.releaseLock()}write(){let e=[];for(let t=0;t<this.length;t++){let i=this[t]instanceof Gf?this[t].tag:this[t].constructor.tag,n=this[t].write();if(F.isStream(n)&&ky(this[t].constructor.tag)){let s=[],o=0,a=512;e.push(qy(i)),e.push(sr(n,c=>{if(s.push(c),o+=c.length,o>=a){let l=Math.min(Math.log(o)/Math.LN2|0,30),d=2**l,u=F.concat([xY(l)].concat(s));return s=[u.subarray(1+d)],o=s[0].length,u.subarray(0,1+d)}},()=>F.concat([xI(o)].concat(s))))}else{if(F.isStream(n)){let s=0;e.push(sr(Uc(n),o=>{s+=o.length},()=>p5(i,s)))}else e.push(p5(i,n.length));e.push(n)}}return F.concat(e)}filterByTag(...e){let t=new r,i=n=>s=>n===s;for(let n=0;n<this.length;n++)e.some(i(this[n].constructor.tag))&&t.push(this[n]);return t}findPacket(e){return this.find(t=>t.constructor.tag===e)}indexOfTag(...e){let t=[],i=this,n=s=>o=>s===o;for(let s=0;s<this.length;s++)e.some(n(i[s].constructor.tag))&&t.push(s);return t}},rs=class r extends Error{constructor(...e){super(...e),Error.captureStackTrace&&Error.captureStackTrace(this,r),this.name="GrammarError"}};(function(r){r[r.EmptyMessage=0]="EmptyMessage",r[r.PlaintextOrEncryptedData=1]="PlaintextOrEncryptedData",r[r.EncryptedSessionKeys=2]="EncryptedSessionKeys",r[r.StandaloneAdditionalAllowedData=3]="StandaloneAdditionalAllowedData"})(Kt||(Kt={}));Sd=class{constructor(){this.state=Kt.EmptyMessage,this.leadingOnePassSignatureCounter=0}recordPacket(e,t){switch(this.state){case Kt.EmptyMessage:case Kt.StandaloneAdditionalAllowedData:switch(e){case m.packet.literalData:case m.packet.compressedData:case m.packet.aeadEncryptedData:case m.packet.symEncryptedIntegrityProtectedData:case m.packet.symmetricallyEncryptedData:this.state=Kt.PlaintextOrEncryptedData;return;case m.packet.signature:if(this.state===Kt.StandaloneAdditionalAllowedData&&--this.leadingOnePassSignatureCounter<0)throw new rs("Trailing signature packet without OPS");return;case m.packet.onePassSignature:if(this.state===Kt.StandaloneAdditionalAllowedData)throw new rs("OPS following StandaloneAdditionalAllowedData");this.leadingOnePassSignatureCounter++;return;case m.packet.publicKeyEncryptedSessionKey:case m.packet.symEncryptedSessionKey:this.state=Kt.EncryptedSessionKeys;return;default:if(!t?.[e])throw new rs(`Unexpected packet ${e} in state ${this.state}`);this.state=Kt.StandaloneAdditionalAllowedData;return}case Kt.PlaintextOrEncryptedData:switch(e){case m.packet.signature:if(--this.leadingOnePassSignatureCounter<0)throw new rs("Trailing signature packet without OPS");this.state=Kt.PlaintextOrEncryptedData;return;default:if(!t?.[e])throw new rs(`Unexpected packet ${e} in state ${this.state}`);this.state=Kt.PlaintextOrEncryptedData;return}case Kt.EncryptedSessionKeys:switch(e){case m.packet.publicKeyEncryptedSessionKey:case m.packet.symEncryptedSessionKey:this.state=Kt.EncryptedSessionKeys;return;case m.packet.symEncryptedIntegrityProtectedData:case m.packet.aeadEncryptedData:case m.packet.symmetricallyEncryptedData:this.state=Kt.PlaintextOrEncryptedData;return;case m.packet.signature:if(--this.leadingOnePassSignatureCounter<0)throw new rs("Trailing signature packet without OPS");this.state=Kt.PlaintextOrEncryptedData;return;default:if(!t?.[e])throw new rs(`Unexpected packet ${e} in state ${this.state}`);this.state=Kt.EncryptedSessionKeys}}}recordEnd(){switch(this.state){case Kt.EmptyMessage:case Kt.PlaintextOrEncryptedData:case Kt.EncryptedSessionKeys:case Kt.StandaloneAdditionalAllowedData:if(this.leadingOnePassSignatureCounter>0)throw new rs("Missing trailing signature packets")}}},fX=F.constructAllowedPackets([Ea,an,Nr]),qc=class{static get tag(){return m.packet.compressedData}constructor(e=pe){this.packets=null,this.algorithm=e.preferredCompressionAlgorithm,this.compressed=null}async read(e,t=pe){await II(e,async i=>{this.algorithm=await i.readByte(),this.compressed=i.remainder(),await this.decompress(t)})}write(){return this.compressed===null&&this.compress(),F.concat([new Uint8Array([this.algorithm]),this.compressed])}async decompress(e=pe){let t=m.read(m.compression,this.algorithm),i=pX[t];if(!i)throw new Error(`${t} decompression not supported`);let n=await i(this.compressed);if(e.maxDecompressedMessageSize!==1/0){let s=0;n=sr(n,o=>{if(s+=o.length,s>e.maxDecompressedMessageSize)throw new Error("Maximum decompressed message size exceeded");return o})}(!or(this.compressed)||St(this.compressed))&&(n=await Xt(n)),this.packets=await Ct.fromBinary(n,fX,e,new Sd)}compress(){let e=m.read(m.compression,this.algorithm),t=gX[e];if(!t)throw new Error(`${e} compression not supported`);let i=this.packets.write(),n=t(i);(!or(i)||St(i))&&(n=Hc(()=>Xt(n))),this.compressed=n}};Zy=r=>({compressor:typeof CompressionStream<"u"&&(()=>new CompressionStream(r)),decompressor:typeof DecompressionStream<"u"&&(()=>new DecompressionStream(r))}),gX={zip:Xy(Zy("deflate-raw").compressor,Fy),zlib:Xy(Zy("deflate").compressor,oX)},pX={uncompressed:r=>r,zip:Xy(Zy("deflate-raw").decompressor,Py),zlib:Xy(Zy("deflate").decompressor,aX),bzip2:hX()},mX=F.constructAllowedPackets([Ea,qc,an,Nr]),Dd=class r{static get tag(){return m.packet.symEncryptedIntegrityProtectedData}static fromObject({version:e,aeadAlgorithm:t}){if(e!==1&&e!==2)throw new Error("Unsupported SEIPD version");let i=new r;return i.version=e,e===2&&(i.aeadAlgorithm=t),i}constructor(){this.version=null,this.cipherAlgorithm=null,this.aeadAlgorithm=null,this.chunkSizeByte=null,this.salt=null,this.encrypted=null,this.packets=null}async read(e){await II(e,async t=>{if(this.version=await t.readByte(),this.version!==1&&this.version!==2)throw new ft(`Version ${this.version} of the SEIP packet is unsupported.`);this.version===2&&(this.cipherAlgorithm=await t.readByte(),this.aeadAlgorithm=await t.readByte(),this.chunkSizeByte=await t.readByte(),this.salt=await t.readBytes(32)),this.encrypted=t.remainder()})}write(){return this.version===2?F.concat([new Uint8Array([this.version,this.cipherAlgorithm,this.aeadAlgorithm,this.chunkSizeByte]),this.salt,this.encrypted]):F.concat([new Uint8Array([this.version]),this.encrypted])}async encrypt(e,t,i=pe){let{blockSize:n,keySize:s}=It(e);if(t.length!==s)throw new Error("Unexpected session key size");let o=this.packets.write();if(St(o)&&(o=await Xt(o)),this.version===2)this.cipherAlgorithm=e,this.salt=Rr(32),this.chunkSizeByte=i.aeadChunkSizeByte,this.encrypted=await eI(this,"encrypt",t,o);else{let a=await yT(e),c=new Uint8Array([211,20]),l=F.concat([a,o,c]),d=await fs(m.hash.sha1,Mf(l)),u=F.concat([l,d]);this.encrypted=await jf(e,t,u,new Uint8Array(n))}return!0}async decrypt(e,t,i=pe){if(t.length!==It(e).keySize)throw new Error("Unexpected session key size");let n=Uc(this.encrypted);St(n)&&(n=await Xt(n));let s,o=!1;if(this.version===2){if(this.cipherAlgorithm!==e)throw new Error("Unexpected session key algorithm");s=await eI(this,"decrypt",t,n)}else{let{blockSize:a}=It(e),c=await _I(e,t,n,new Uint8Array(a)),l=Ur(Mf(c),-20),d=Ur(c,0,-20),u=Promise.all([Xt(await fs(m.hash.sha1,Mf(d))),Xt(l)]).then(([h,g])=>{if(!F.equalsUint8Array(h,g))throw new Error("Modification detected.");return new Uint8Array}),f=Ur(d,a+2);s=Ur(f,0,-2),s=di([s,Hc(()=>u)]),F.isStream(n)&&i.allowUnauthenticatedStream?o=!0:s=await Xt(s)}return this.packets=await Ct.fromBinary(s,mX,i,new Sd,o),!0}};yX=F.constructAllowedPackets([Ea,qc,an,Nr]),O5=1,PB=class{static get tag(){return m.packet.aeadEncryptedData}constructor(){this.version=O5,this.cipherAlgorithm=null,this.aeadAlgorithm=m.aead.eax,this.chunkSizeByte=null,this.iv=null,this.encrypted=null,this.packets=null}async read(e){await II(e,async t=>{let i=await t.readByte();if(i!==O5)throw new ft(`Version ${i} of the AEAD-encrypted data packet is not supported.`);this.cipherAlgorithm=await t.readByte(),this.aeadAlgorithm=await t.readByte(),this.chunkSizeByte=await t.readByte();let n=no(this.aeadAlgorithm,!0);this.iv=await t.readBytes(n.ivLength),this.encrypted=t.remainder()})}write(){return F.concat([new Uint8Array([this.version,this.cipherAlgorithm,this.aeadAlgorithm,this.chunkSizeByte]),this.iv,this.encrypted])}async decrypt(e,t,i=pe){this.packets=await Ct.fromBinary(await eI(this,"decrypt",t,Uc(this.encrypted)),yX,i,new Sd)}async encrypt(e,t,i=pe){this.cipherAlgorithm=e;let{ivLength:n}=no(this.aeadAlgorithm,!0);this.iv=Rr(n),this.chunkSizeByte=i.aeadChunkSizeByte;let s=this.packets.write();this.encrypted=await eI(this,"encrypt",t,s)}},Vf=class r{static get tag(){return m.packet.publicKeyEncryptedSessionKey}constructor(){this.version=null,this.publicKeyID=new so,this.publicKeyVersion=null,this.publicKeyFingerprint=null,this.publicKeyAlgorithm=null,this.sessionKey=null,this.sessionKeyAlgorithm=null,this.encrypted={}}static fromObject({version:e,encryptionKeyPacket:t,anonymousRecipient:i,sessionKey:n,sessionKeyAlgorithm:s}){let o=new r;if(e!==3&&e!==6)throw new Error("Unsupported PKESK version");return o.version=e,e===6&&(o.publicKeyVersion=i?null:t.version,o.publicKeyFingerprint=i?null:t.getFingerprintBytes()),o.publicKeyID=i?so.wildcard():t.getKeyID(),o.publicKeyAlgorithm=t.algorithm,o.sessionKey=n,o.sessionKeyAlgorithm=s,o}read(e){let t=0;if(this.version=e[t++],this.version!==3&&this.version!==6)throw new ft(`Version ${this.version} of the PKESK packet is unsupported.`);if(this.version===6){let i=e[t++];if(i){this.publicKeyVersion=e[t++];let n=i-1;this.publicKeyFingerprint=e.subarray(t,t+n),t+=n,this.publicKeyVersion>=5?this.publicKeyID.read(this.publicKeyFingerprint):this.publicKeyID.read(this.publicKeyFingerprint.subarray(-8))}else this.publicKeyID=so.wildcard()}else t+=this.publicKeyID.read(e.subarray(t,t+8));if(this.publicKeyAlgorithm=e[t++],this.encrypted=yW(this.publicKeyAlgorithm,e.subarray(t)),this.publicKeyAlgorithm===m.publicKey.x25519||this.publicKeyAlgorithm===m.publicKey.x448){if(this.version===3)this.sessionKeyAlgorithm=m.write(m.symmetric,this.encrypted.C.algorithm);else if(this.encrypted.C.algorithm!==null)throw new Error("Unexpected cleartext symmetric algorithm")}}write(){let e=[new Uint8Array([this.version])];return this.version===6?this.publicKeyFingerprint!==null?(e.push(new Uint8Array([this.publicKeyFingerprint.length+1,this.publicKeyVersion])),e.push(this.publicKeyFingerprint)):e.push(new Uint8Array([0])):e.push(this.publicKeyID.write()),e.push(new Uint8Array([this.publicKeyAlgorithm]),vd(this.publicKeyAlgorithm,this.encrypted)),F.concatUint8Array(e)}async encrypt(e){let t=m.write(m.publicKey,this.publicKeyAlgorithm),i=this.version===3?this.sessionKeyAlgorithm:null,n=e.version===5?e.getFingerprintBytes().subarray(0,20):e.getFingerprintBytes(),s=M5(this.version,t,i,this.sessionKey);this.encrypted=await gW(t,i,e.publicParams,s,n)}async decrypt(e,t){if(this.publicKeyAlgorithm!==e.algorithm)throw new Error("Decryption error");let i=t?M5(this.version,this.publicKeyAlgorithm,t.sessionKeyAlgorithm,t.sessionKey):null,n=e.version===5?e.getFingerprintBytes().subarray(0,20):e.getFingerprintBytes(),s=await pW(this.publicKeyAlgorithm,e.publicParams,e.privateParams,this.encrypted,n,i),{sessionKey:o,sessionKeyAlgorithm:a}=IX(this.version,this.publicKeyAlgorithm,s,t);if(this.version===3){let c=this.publicKeyAlgorithm!==m.publicKey.x25519&&this.publicKeyAlgorithm!==m.publicKey.x448;if(this.sessionKeyAlgorithm=c?a:this.sessionKeyAlgorithm,o.length!==It(this.sessionKeyAlgorithm).keySize)throw new Error("Unexpected session key size")}this.sessionKey=o}};Yf=class r{static get tag(){return m.packet.symEncryptedSessionKey}constructor(e=pe){this.version=e.aeadProtect?6:4,this.sessionKey=null,this.sessionKeyEncryptionAlgorithm=null,this.sessionKeyAlgorithm=null,this.aeadAlgorithm=m.write(m.aead,e.preferredAEADAlgorithm),this.encrypted=null,this.s2k=null,this.iv=null}read(e){let t=0;if(this.version=e[t++],this.version!==4&&this.version!==5&&this.version!==6)throw new ft(`Version ${this.version} of the SKESK packet is unsupported.`);this.version===6&&t++;let i=e[t++];this.version>=5&&(this.aeadAlgorithm=e[t++],this.version===6&&t++);let n=e[t++];if(this.s2k=Yy(n),t+=this.s2k.read(e.subarray(t,e.length)),this.version>=5){let s=no(this.aeadAlgorithm,!0);this.iv=e.subarray(t,t+=s.ivLength)}this.version>=5||t<e.length?(this.encrypted=e.subarray(t,e.length),this.sessionKeyEncryptionAlgorithm=i):this.sessionKeyAlgorithm=i}write(){let e=this.encrypted===null?this.sessionKeyAlgorithm:this.sessionKeyEncryptionAlgorithm,t,i=this.s2k.write();if(this.version===6){let n=i.length,s=3+n+this.iv.length;t=F.concatUint8Array([new Uint8Array([this.version,s,e,this.aeadAlgorithm,n]),i,this.iv,this.encrypted])}else this.version===5?t=F.concatUint8Array([new Uint8Array([this.version,e,this.aeadAlgorithm]),i,this.iv,this.encrypted]):(t=F.concatUint8Array([new Uint8Array([this.version,e]),i]),this.encrypted!==null&&(t=F.concatUint8Array([t,this.encrypted])));return t}async decrypt(e,t=pe){let i=this.sessionKeyEncryptionAlgorithm!==null?this.sessionKeyEncryptionAlgorithm:this.sessionKeyAlgorithm,{blockSize:n,keySize:s}=It(i),o=await this.s2k.produceKey(e,s,t);if(this.version>=5){let a=no(this.aeadAlgorithm,!0),c=new Uint8Array([192|r.tag,this.version,this.sessionKeyEncryptionAlgorithm,this.aeadAlgorithm]),l=this.version===6?await xa(m.hash.sha256,o,new Uint8Array,c,s):o,d=await a(i,l);this.sessionKey=await d.decrypt(this.encrypted,this.iv,c)}else if(this.encrypted!==null){let a=await _I(i,o,this.encrypted,new Uint8Array(n));if(this.sessionKeyAlgorithm=m.write(m.symmetric,a[0]),this.sessionKey=a.subarray(1,a.length),this.sessionKey.length!==It(this.sessionKeyAlgorithm).keySize)throw new Error("Unexpected session key size")}else this.sessionKey=o}async encrypt(e,t=pe){let i=this.sessionKeyEncryptionAlgorithm!==null?this.sessionKeyEncryptionAlgorithm:this.sessionKeyAlgorithm;this.sessionKeyEncryptionAlgorithm=i,this.s2k=wT(t),this.s2k.generateSalt();let{blockSize:n,keySize:s}=It(i),o=await this.s2k.produceKey(e,s,t);if(this.sessionKey===null&&(this.sessionKey=BB(this.sessionKeyAlgorithm)),this.version>=5){let a=no(this.aeadAlgorithm);this.iv=Rr(a.ivLength);let c=new Uint8Array([192|r.tag,this.version,this.sessionKeyEncryptionAlgorithm,this.aeadAlgorithm]),l=this.version===6?await xa(m.hash.sha256,o,new Uint8Array,c,s):o,d=await a(i,l);this.encrypted=await d.encrypt(this.sessionKey,this.iv,c)}else{let a=F.concatUint8Array([new Uint8Array([this.sessionKeyAlgorithm]),this.sessionKey]);this.encrypted=await jf(i,o,a,new Uint8Array(n))}}},As=class r{static get tag(){return m.packet.publicKey}constructor(e=new Date,t=pe){this.version=t.v6Keys?6:4,this.created=F.normalizeDate(e),this.algorithm=null,this.publicParams=null,this.expirationTimeV3=0,this.fingerprint=null,this.keyID=null}static fromSecretKeyPacket(e){let t=new r,{version:i,created:n,algorithm:s,publicParams:o,keyID:a,fingerprint:c}=e;return t.version=i,t.created=n,t.algorithm=s,t.publicParams=o,t.keyID=a,t.fingerprint=c,t}async read(e,t=pe){let i=0;if(this.version=e[i++],this.version===5&&!t.enableParsingV5Entities)throw new ft("Support for parsing v5 entities is disabled; turn on `config.enableParsingV5Entities` if needed");if(this.version===4||this.version===5||this.version===6){this.created=F.readDate(e.subarray(i,i+4)),i+=4,this.algorithm=e[i++],this.version>=5&&(i+=4);let{read:n,publicParams:s}=mW(this.algorithm,e.subarray(i));if(this.version===6&&s.oid&&(s.oid.getName()===m.curve.curve25519Legacy||s.oid.getName()===m.curve.ed25519Legacy))throw new Error("Legacy curve25519 cannot be used with v6 keys");return this.publicParams=s,i+=n,await this.computeFingerprintAndKeyID(),i}throw new ft(`Version ${this.version} of the key packet is unsupported.`)}write(){let e=[];e.push(new Uint8Array([this.version])),e.push(F.writeDate(this.created)),e.push(new Uint8Array([this.algorithm]));let t=vd(this.algorithm,this.publicParams);return this.version>=5&&e.push(F.writeNumber(t.length,4)),e.push(t),F.concatUint8Array(e)}writeForHash(e){let t=this.writePublicKey(),i=149+e,n=e>=5?4:2;return F.concatUint8Array([new Uint8Array([i]),F.writeNumber(t.length,n),t])}isDecrypted(){return null}getCreationTime(){return this.created}getKeyID(){return this.keyID}async computeFingerprintAndKeyID(){if(await this.computeFingerprint(),this.keyID=new so,this.version>=5)this.keyID.read(this.fingerprint.subarray(0,8));else if(this.version===4)this.keyID.read(this.fingerprint.subarray(12,20));else throw new Error("Unsupported key version")}async computeFingerprint(){let e=this.writeForHash(this.version);if(this.version>=5)this.fingerprint=await fs(m.hash.sha256,e);else if(this.version===4)this.fingerprint=await fs(m.hash.sha1,e);else throw new Error("Unsupported key version")}getFingerprintBytes(){return this.fingerprint}getFingerprint(){return F.uint8ArrayToHex(this.getFingerprintBytes())}hasSameFingerprintAs(e){return this.version===e.version&&F.equalsUint8Array(this.writePublicKey(),e.writePublicKey())}getAlgorithmInfo(){let e={};e.algorithm=m.read(m.publicKey,this.algorithm);let t=this.publicParams.n||this.publicParams.p;return t?e.bits=F.uint8ArrayBitLength(t):this.publicParams.oid&&(e.curve=this.publicParams.oid.getName()),e}};As.prototype.readPublicKey=As.prototype.read;As.prototype.writePublicKey=As.prototype.write;wX=F.constructAllowedPackets([Ea,qc,an,Nr]),TB=class{static get tag(){return m.packet.symmetricallyEncryptedData}constructor(){this.encrypted=null,this.packets=null}read(e){this.encrypted=e}write(){return this.encrypted}async decrypt(e,t,i=pe){if(!i.allowUnauthenticatedMessages)throw new Error("Message is not authenticated.");let{blockSize:n}=It(e),s=await Xt(Uc(this.encrypted)),o=await _I(e,t,s.subarray(n+2),s.subarray(2,n+2));this.packets=await Ct.fromBinary(o,wX,i)}async encrypt(e,t,i=pe){let n=this.packets.write(),{blockSize:s}=It(e),o=await yT(e),a=await jf(e,t,o,new Uint8Array(s)),c=await jf(e,t,n,a.subarray(2));this.encrypted=F.concat([a,c])}},tI=class r extends As{static get tag(){return m.packet.publicSubkey}constructor(e,t){super(e,t)}static fromSecretSubkeyPacket(e){let t=new r,{version:i,created:n,algorithm:s,publicParams:o,keyID:a,fingerprint:c}=e;return t.version=i,t.created=n,t.algorithm=s,t.publicParams=o,t.keyID=a,t.fingerprint=c,t}},UB=class r{static get tag(){return m.packet.userAttribute}constructor(){this.attributes=[]}read(e){let t=0;for(;t<e.length;){let i=L6(e.subarray(t,e.length));t+=i.offset,this.attributes.push(F.uint8ArrayToString(e.subarray(t,t+i.len))),t+=i.len}}write(){let e=[];for(let t=0;t<this.attributes.length;t++)e.push(xI(this.attributes[t].length)),e.push(F.stringToUint8Array(this.attributes[t]));return F.concatUint8Array(e)}equals(e){return!e||!(e instanceof r)?!1:this.attributes.every(function(t,i){return t===e.attributes[i]})}},Wf=class extends As{static get tag(){return m.packet.secretKey}constructor(e=new Date,t=pe){super(e,t),this.keyMaterial=null,this.isEncrypted=null,this.s2kUsage=0,this.s2k=null,this.symmetric=null,this.aead=null,this.isLegacyAEAD=null,this.privateParams=null,this.usedModernAEAD=null}async read(e,t=pe){let i=await this.readPublicKey(e,t),n=i;this.s2kUsage=e[i++],this.version===5&&i++,this.version===6&&this.s2kUsage&&i++;try{if(this.s2kUsage===255||this.s2kUsage===254||this.s2kUsage===253){this.symmetric=e[i++],this.s2kUsage===253&&(this.aead=e[i++]),this.version===6&&i++;let s=e[i++];if(this.s2k=Yy(s),i+=this.s2k.read(e.subarray(i,e.length)),this.s2k.type==="gnu-dummy")return}else this.s2kUsage&&(this.symmetric=this.s2kUsage);this.s2kUsage&&(this.isLegacyAEAD=this.s2kUsage===253&&(this.version===5||this.version===4&&t.parseAEADEncryptedV4KeysAsLegacy),this.s2kUsage!==253||this.isLegacyAEAD?(this.iv=e.subarray(i,i+It(this.symmetric).blockSize),this.usedModernAEAD=!1):(this.iv=e.subarray(i,i+no(this.aead).ivLength),this.usedModernAEAD=!0),i+=this.iv.length)}catch(s){if(!this.s2kUsage)throw s;this.unparseableKeyMaterial=e.subarray(n),this.isEncrypted=!0}if(this.version===5&&(i+=4),this.keyMaterial=e.subarray(i),this.isEncrypted=!!this.s2kUsage,!this.isEncrypted){let s;if(this.version===6)s=this.keyMaterial;else if(s=this.keyMaterial.subarray(0,-2),!F.equalsUint8Array(F.writeChecksum(s),this.keyMaterial.subarray(-2)))throw new Error("Key checksum mismatch");try{let{read:o,privateParams:a}=v5(this.algorithm,s,this.publicParams);if(o<s.length)throw new Error("Error reading MPIs");this.privateParams=a}catch(o){throw o instanceof ft?o:new Error("Error reading MPIs")}}}write(){let e=this.writePublicKey();if(this.unparseableKeyMaterial)return F.concatUint8Array([e,this.unparseableKeyMaterial]);let t=[e];t.push(new Uint8Array([this.s2kUsage]));let i=[];if(this.s2kUsage===255||this.s2kUsage===254||this.s2kUsage===253){i.push(this.symmetric),this.s2kUsage===253&&i.push(this.aead);let n=this.s2k.write();this.version===6&&i.push(n.length),i.push(...n)}return this.s2kUsage&&this.s2k.type!=="gnu-dummy"&&i.push(...this.iv),(this.version===5||this.version===6&&this.s2kUsage)&&t.push(new Uint8Array([i.length])),t.push(new Uint8Array(i)),this.isDummy()||(this.s2kUsage||(this.keyMaterial=vd(this.algorithm,this.privateParams)),this.version===5&&t.push(F.writeNumber(this.keyMaterial.length,4)),t.push(this.keyMaterial),!this.s2kUsage&&this.version!==6&&t.push(F.writeChecksum(this.keyMaterial))),F.concatUint8Array(t)}isDecrypted(){return this.isEncrypted===!1}isMissingSecretKeyMaterial(){return this.unparseableKeyMaterial!==void 0||this.isDummy()}isDummy(){return!!(this.s2k&&this.s2k.type==="gnu-dummy")}makeDummy(e=pe){this.isDummy()||(this.isDecrypted()&&this.clearPrivateParams(),delete this.unparseableKeyMaterial,this.isEncrypted=null,this.keyMaterial=null,this.s2k=Yy(m.s2k.gnu,e),this.s2k.algorithm=0,this.s2k.c=0,this.s2k.type="gnu-dummy",this.s2kUsage=254,this.symmetric=m.symmetric.aes256,this.isLegacyAEAD=null,this.usedModernAEAD=null)}async encrypt(e,t=pe){if(this.isDummy())return;if(!this.isDecrypted())throw new Error("Key packet is already encrypted");if(!e)throw new Error("A non-empty passphrase is required for key encryption.");this.s2k=wT(t),this.s2k.generateSalt();let i=vd(this.algorithm,this.privateParams);this.symmetric=m.symmetric.aes256;let{blockSize:n}=It(this.symmetric);if(t.aeadProtect){this.s2kUsage=253,this.aead=t.preferredAEADAlgorithm;let s=no(this.aead);this.isLegacyAEAD=this.version===5,this.usedModernAEAD=!this.isLegacyAEAD;let o=qy(this.constructor.tag),a=await YE(this.version,this.s2k,e,this.symmetric,this.aead,o,this.isLegacyAEAD,t),c=await s(this.symmetric,a);this.iv=this.isLegacyAEAD?Rr(n):Rr(s.ivLength);let l=this.isLegacyAEAD?new Uint8Array:F.concatUint8Array([o,this.writePublicKey()]);this.keyMaterial=await c.encrypt(i,this.iv.subarray(0,s.ivLength),l)}else{this.s2kUsage=254,this.usedModernAEAD=!1;let s=await YE(this.version,this.s2k,e,this.symmetric,void 0,void 0,void 0,t);this.iv=Rr(n),this.keyMaterial=await jf(this.symmetric,s,F.concatUint8Array([i,await fs(m.hash.sha1,i)]),this.iv)}}async decrypt(e,t=pe){if(this.isDummy())return!1;if(this.unparseableKeyMaterial)throw new Error("Key packet cannot be decrypted: unsupported S2K or cipher algo");if(this.isDecrypted())throw new Error("Key packet is already decrypted.");let i,n=qy(this.constructor.tag);if(this.s2kUsage===254||this.s2kUsage===253)i=await YE(this.version,this.s2k,e,this.symmetric,this.aead,n,this.isLegacyAEAD,t);else throw this.s2kUsage===255?new Error("Encrypted private key is authenticated using an insecure two-byte hash"):new Error("Private key is encrypted using an insecure S2K function: unsalted MD5");let s;if(this.s2kUsage===253){let o=no(this.aead,!0),a=await o(this.symmetric,i);try{let c=this.isLegacyAEAD?new Uint8Array:F.concatUint8Array([n,this.writePublicKey()]);s=await a.decrypt(this.keyMaterial,this.iv.subarray(0,o.ivLength),c)}catch(c){throw c.message==="Authentication tag mismatch"?new Error("Incorrect key passphrase: "+c.message):c}}else{let o=await _I(this.symmetric,i,this.keyMaterial,this.iv);s=o.subarray(0,-20);let a=await fs(m.hash.sha1,s);if(!F.equalsUint8Array(a,o.subarray(-20)))throw new Error("Incorrect key passphrase")}try{let{privateParams:o}=v5(this.algorithm,s,this.publicParams);this.privateParams=o}catch{throw new Error("Error reading MPIs")}this.isEncrypted=!1,this.keyMaterial=null,this.s2kUsage=0,this.aead=null,this.symmetric=null,this.isLegacyAEAD=null}async validate(){if(this.isDummy())return;if(!this.isDecrypted())throw new Error("Key is not decrypted");if(this.usedModernAEAD)return;let e;try{e=await wW(this.algorithm,this.publicParams,this.privateParams)}catch{e=!1}if(!e)throw new Error("Key is invalid")}async generate(e,t){if(this.version===6&&(this.algorithm===m.publicKey.ecdh&&t===m.curve.curve25519Legacy||this.algorithm===m.publicKey.eddsaLegacy))throw new Error(`Cannot generate v6 keys of type 'ecc' with curve ${t}. Generate a key of type 'curve25519' instead`);let{privateParams:i,publicParams:n}=await IW(this.algorithm,e,t);this.privateParams=i,this.publicParams=n,this.isEncrypted=!1}clearPrivateParams(){this.isMissingSecretKeyMaterial()||(Object.keys(this.privateParams).forEach(e=>{this.privateParams[e].fill(0),delete this.privateParams[e]}),this.privateParams=null,this.isEncrypted=!0)}};rI=class r{static get tag(){return m.packet.userID}constructor(){this.userID="",this.name="",this.email="",this.comment=""}static fromObject(e){if(F.isString(e)||e.name&&!F.isString(e.name)||e.email&&!F.isEmailAddress(e.email)||e.comment&&!F.isString(e.comment))throw new Error("Invalid user ID format");let t=new r;Object.assign(t,e);let i=[];return t.name&&i.push(t.name),t.comment&&i.push(`(${t.comment})`),t.email&&i.push(`<${t.email}>`),t.userID=i.join(" "),t}read(e,t=pe){let i=F.decodeUTF8(e);if(i.length>t.maxUserIDLength)throw new Error("User ID string is too long");let n=a=>/^[^\s@]+@[^\s@]+$/.test(a),s=i.indexOf("<"),o=i.lastIndexOf(">");if(s!==-1&&o!==-1&&o>s){let a=i.substring(s+1,o);if(n(a)){this.email=a;let c=i.substring(0,s).trim(),l=c.indexOf("("),d=c.lastIndexOf(")");l!==-1&&d!==-1&&d>l?(this.comment=c.substring(l+1,d).trim(),this.name=c.substring(0,l).trim()):(this.name=c,this.comment="")}}else n(i.trim())&&(this.email=i.trim(),this.name="",this.comment="");this.userID=i}write(){return F.encodeUTF8(this.userID)}equals(e){return e&&e.userID===this.userID}},iI=class extends Wf{static get tag(){return m.packet.secretSubkey}constructor(e=new Date,t=pe){super(e,t)}},nI=class{constructor(e){this.packets=e||new Ct}write(){return this.packets.write()}armor(e=pe){let t=this.packets.some(i=>i.constructor.tag===Nr.tag&&i.version!==6);return dA(m.armor.signature,this.write(),void 0,void 0,void 0,t,e)}getSigningKeyIDs(){return this.packets.map(e=>e.issuerKeyID)}};qB=class r{constructor(e,t){this.userID=e.constructor.tag===m.packet.userID?e:null,this.userAttribute=e.constructor.tag===m.packet.userAttribute?e:null,this.selfCertifications=[],this.otherCertifications=[],this.revocationSignatures=[],this.mainKey=t}toPacketList(){let e=new Ct;return e.push(this.userID||this.userAttribute),e.push(...this.revocationSignatures),e.push(...this.selfCertifications),e.push(...this.otherCertifications),e}clone(){let e=new r(this.userID||this.userAttribute,this.mainKey);return e.selfCertifications=[...this.selfCertifications],e.otherCertifications=[...this.otherCertifications],e.revocationSignatures=[...this.revocationSignatures],e}async certify(e,t,i){let n=this.mainKey.keyPacket,s={userID:this.userID,userAttribute:this.userAttribute,key:n},o=new r(s.userID||s.userAttribute,this.mainKey);return o.otherCertifications=await Promise.all(e.map(async function(a){if(!a.isPrivate())throw new Error("Need private key for signing");if(a.hasSameFingerprintAs(n))throw new Error("The user's own key can only be used for self-certifications");let c=await a.getSigningKey(void 0,t,void 0,i);return us(s,[a],c.keyPacket,{signatureType:m.signature.certGeneric,keyFlags:[m.keyFlags.certifyKeys|m.keyFlags.signData]},t,void 0,void 0,void 0,i)})),await o.update(this,t,i),o}async isRevoked(e,t,i=new Date,n=pe){let s=this.mainKey.keyPacket;return Qd(s,m.signature.certRevocation,{key:s,userID:this.userID,userAttribute:this.userAttribute},this.revocationSignatures,e,t,i,n)}async verifyCertificate(e,t,i=new Date,n){let s=this,o=this.mainKey.keyPacket,a={userID:this.userID,userAttribute:this.userAttribute,key:o},{issuerKeyID:c}=e,l=t.filter(d=>d.getKeys(c).length>0);return l.length===0?null:(await Promise.all(l.map(async d=>{let u=await d.getSigningKey(c,e.created,void 0,n);if(e.revoked||await s.isRevoked(e,u.keyPacket,i,n))throw new Error("User certificate is revoked");try{await e.verify(u.keyPacket,m.signature.certGeneric,a,i,void 0,n)}catch(f){throw F.wrapError("User certificate is invalid",f)}})),!0)}async verifyAllCertifications(e,t=new Date,i){let n=this,s=this.selfCertifications.concat(this.otherCertifications);return Promise.all(s.map(async o=>({keyID:o.issuerKeyID,valid:await n.verifyCertificate(o,e,t,i).catch(()=>!1)})))}async verify(e=new Date,t){if(!this.selfCertifications.length)throw new Error("No self-certifications found");let i=this,n=this.mainKey.keyPacket,s={userID:this.userID,userAttribute:this.userAttribute,key:n},o;for(let a=this.selfCertifications.length-1;a>=0;a--)try{let c=this.selfCertifications[a];if(c.revoked||await i.isRevoked(c,void 0,e,t))throw new Error("Self-certification is revoked");try{await c.verify(n,m.signature.certGeneric,s,e,void 0,t)}catch(l){throw F.wrapError("Self-certification is invalid",l)}return!0}catch(c){o=c}throw o}async update(e,t,i){let n=this.mainKey.keyPacket,s={userID:this.userID,userAttribute:this.userAttribute,key:n};await Pc(e,this,"selfCertifications",t,async function(o){try{return await o.verify(n,m.signature.certGeneric,s,t,!1,i),!0}catch{return!1}}),await Pc(e,this,"otherCertifications",t),await Pc(e,this,"revocationSignatures",t,function(o){return Qd(n,m.signature.certRevocation,s,[o],void 0,void 0,t,i)})}async revoke(e,{flag:t=m.reasonForRevocation.noReason,string:i=""}={},n=new Date,s=pe){let o={userID:this.userID,userAttribute:this.userAttribute,key:e},a=new r(o.userID||o.userAttribute,this.mainKey);return a.revocationSignatures.push(await us(o,[],e,{signatureType:m.signature.certRevocation,reasonForRevocationFlag:m.write(m.reasonForRevocation,t),reasonForRevocationString:i},n,void 0,void 0,!1,s)),await a.update(this),a}},Xf=class r{constructor(e,t){this.keyPacket=e,this.bindingSignatures=[],this.revocationSignatures=[],this.mainKey=t}toPacketList(){let e=new Ct;return e.push(this.keyPacket),e.push(...this.revocationSignatures),e.push(...this.bindingSignatures),e}clone(){let e=new r(this.keyPacket,this.mainKey);return e.bindingSignatures=[...this.bindingSignatures],e.revocationSignatures=[...this.revocationSignatures],e}async isRevoked(e,t,i=new Date,n=pe){let s=this.mainKey.keyPacket;return Qd(s,m.signature.subkeyRevocation,{key:s,bind:this.keyPacket},this.revocationSignatures,e,t,i,n)}async verify(e=new Date,t=pe){let i=this.mainKey.keyPacket,n={key:i,bind:this.keyPacket},s=await kn(this.bindingSignatures,i,m.signature.subkeyBinding,n,e,t);if(s.revoked||await this.isRevoked(s,null,e,t))throw new Error("Subkey is revoked");if(RB(this.keyPacket,s,e))throw new Error("Subkey is expired");return s}async getExpirationTime(e=new Date,t=pe){let i=this.mainKey.keyPacket,n={key:i,bind:this.keyPacket},s;try{s=await kn(this.bindingSignatures,i,m.signature.subkeyBinding,n,e,t)}catch{return null}let o=sI(this.keyPacket,s),a=s.getExpirationTime();return o<a?o:a}async update(e,t=new Date,i=pe){let n=this.mainKey.keyPacket;if(!this.hasSameFingerprintAs(e))throw new Error("Subkey update method: fingerprints of subkeys not equal");this.keyPacket.constructor.tag===m.packet.publicSubkey&&e.keyPacket.constructor.tag===m.packet.secretSubkey&&(this.keyPacket=e.keyPacket);let s=this,o={key:n,bind:s.keyPacket};await Pc(e,this,"bindingSignatures",t,async function(a){for(let c=0;c<s.bindingSignatures.length;c++)if(s.bindingSignatures[c].issuerKeyID.equals(a.issuerKeyID))return a.created>s.bindingSignatures[c].created&&(s.bindingSignatures[c]=a),!1;try{return await a.verify(n,m.signature.subkeyBinding,o,t,void 0,i),!0}catch{return!1}}),await Pc(e,this,"revocationSignatures",t,function(a){return Qd(n,m.signature.subkeyRevocation,o,[a],void 0,void 0,t,i)})}async revoke(e,{flag:t=m.reasonForRevocation.noReason,string:i=""}={},n=new Date,s=pe){let o={key:e,bind:this.keyPacket},a=new r(this.keyPacket,this.mainKey);return a.revocationSignatures.push(await us(o,[],e,{signatureType:m.signature.subkeyRevocation,reasonForRevocationFlag:m.write(m.reasonForRevocation,t),reasonForRevocationString:i},n,void 0,void 0,!1,s)),await a.update(this),a}hasSameFingerprintAs(e){return this.keyPacket.hasSameFingerprintAs(e.keyPacket||e)}};["getKeyID","getFingerprint","getAlgorithmInfo","getCreationTime","isDecrypted"].forEach(r=>{Xf.prototype[r]=function(){return this.keyPacket[r]()}});bX=F.constructAllowedPackets([Nr]),G5=new Set([m.packet.publicKey,m.packet.privateKey]),z5=new Set([m.packet.publicKey,m.packet.privateKey,m.packet.publicSubkey,m.packet.privateSubkey]),oI=class{packetListToStructure(e,t=new Set){let i,n,s,o;for(let a of e){if(a instanceof Gf){z5.has(a.tag)&&!o&&(G5.has(a.tag)?o=G5:o=z5);continue}let c=a.constructor.tag;if(o){if(!o.has(c))continue;o=null}if(t.has(c))throw new Error(`Unexpected packet type: ${c}`);switch(c){case m.packet.publicKey:case m.packet.secretKey:if(this.keyPacket)throw new Error("Key block contains multiple keys");if(this.keyPacket=a,n=this.getKeyID(),!n)throw new Error("Missing Key ID");break;case m.packet.userID:case m.packet.userAttribute:i=new qB(a,this),this.users.push(i);break;case m.packet.publicSubkey:case m.packet.secretSubkey:i=null,s=new Xf(a,this),this.subkeys.push(s);break;case m.packet.signature:switch(a.signatureType){case m.signature.certGeneric:case m.signature.certPersona:case m.signature.certCasual:case m.signature.certPositive:if(!i){F.printDebug("Dropping certification signatures without preceding user packet");continue}a.issuerKeyID.equals(n)?i.selfCertifications.push(a):i.otherCertifications.push(a);break;case m.signature.certRevocation:i?i.revocationSignatures.push(a):this.directSignatures.push(a);break;case m.signature.key:this.directSignatures.push(a);break;case m.signature.subkeyBinding:if(!s){F.printDebug("Dropping subkey binding signature without preceding subkey packet");continue}s.bindingSignatures.push(a);break;case m.signature.keyRevocation:this.revocationSignatures.push(a);break;case m.signature.subkeyRevocation:if(!s){F.printDebug("Dropping subkey revocation signature without preceding subkey packet");continue}s.revocationSignatures.push(a);break}break}}}toPacketList(){let e=new Ct;return e.push(this.keyPacket),e.push(...this.revocationSignatures),e.push(...this.directSignatures),this.users.map(t=>e.push(...t.toPacketList())),this.subkeys.map(t=>e.push(...t.toPacketList())),e}clone(e=!1){let t=new this.constructor(this.toPacketList());return e&&t.getKeys().forEach(i=>{if(i.keyPacket=Object.create(Object.getPrototypeOf(i.keyPacket),Object.getOwnPropertyDescriptors(i.keyPacket)),!i.keyPacket.isDecrypted())return;let n={};Object.keys(i.keyPacket.privateParams).forEach(s=>{n[s]=new Uint8Array(i.keyPacket.privateParams[s])}),i.keyPacket.privateParams=n}),t}getSubkeys(e=null){return this.subkeys.filter(i=>!e||i.getKeyID().equals(e,!0))}getKeys(e=null){let t=[];return(!e||this.getKeyID().equals(e,!0))&&t.push(this),t.concat(this.getSubkeys(e))}getKeyIDs(){return this.getKeys().map(e=>e.getKeyID())}getUserIDs(){return this.users.map(e=>e.userID?e.userID.userID:null).filter(e=>e!==null)}write(){return this.toPacketList().write()}async getSigningKey(e=null,t=new Date,i={},n=pe){await this.verifyPrimaryKey(t,i,n);let s=this.keyPacket;try{pa(s,n)}catch(c){throw F.wrapError("Could not verify primary key",c)}let o=this.subkeys.slice().sort((c,l)=>l.keyPacket.created-c.keyPacket.created||l.keyPacket.algorithm-c.keyPacket.algorithm),a;for(let c of o)if(!e||c.getKeyID().equals(e))try{await c.verify(t,n);let l={key:s,bind:c.keyPacket},d=await kn(c.bindingSignatures,s,m.signature.subkeyBinding,l,t,n);if(!L5(c.keyPacket,d,n))continue;if(!d.embeddedSignature)throw new Error("Missing embedded signature");return await kn([d.embeddedSignature],c.keyPacket,m.signature.keyBinding,l,t,n),pa(c.keyPacket,n),c}catch(l){a=l}try{let c=await this.getPrimarySelfSignature(t,i,n);if((!e||s.getKeyID().equals(e))&&L5(s,c,n))return pa(s,n),this}catch(c){a=c}throw F.wrapError("Could not find valid signing key packet in key "+this.getKeyID().toHex(),a)}async getEncryptionKey(e,t=new Date,i={},n=pe){await this.verifyPrimaryKey(t,i,n);let s=this.keyPacket;try{pa(s,n)}catch(c){throw F.wrapError("Could not verify primary key",c)}let o=this.subkeys.slice().sort((c,l)=>l.keyPacket.created-c.keyPacket.created||l.keyPacket.algorithm-c.keyPacket.algorithm),a;for(let c of o)if(!e||c.getKeyID().equals(e))try{await c.verify(t,n);let l={key:s,bind:c.keyPacket},d=await kn(c.bindingSignatures,s,m.signature.subkeyBinding,l,t,n);if(H5(c.keyPacket,d,n))return pa(c.keyPacket,n),c}catch(l){a=l}try{let c=await this.getPrimarySelfSignature(t,i,n);if((!e||s.getKeyID().equals(e))&&H5(s,c,n))return pa(s,n),this}catch(c){a=c}throw F.wrapError("Could not find valid encryption key packet in key "+this.getKeyID().toHex(),a)}async isRevoked(e,t,i=new Date,n=pe){return Qd(this.keyPacket,m.signature.keyRevocation,{key:this.keyPacket},this.revocationSignatures,e,t,i,n)}async verifyPrimaryKey(e=new Date,t={},i=pe){let n=this.keyPacket;if(await this.isRevoked(null,null,e,i))throw new Error("Primary key is revoked");let s=await this.getPrimarySelfSignature(e,t,i);if(RB(n,s,e))throw new Error("Primary key is expired");if(n.version!==6){let o=await kn(this.directSignatures,n,m.signature.key,{key:n},e,i).catch(()=>{});if(o&&RB(n,o,e))throw new Error("Primary key is expired")}}async getExpirationTime(e,t=pe){let i;try{let n=await this.getPrimarySelfSignature(null,e,t),s=sI(this.keyPacket,n),o=n.getExpirationTime(),a=this.keyPacket.version!==6&&await kn(this.directSignatures,this.keyPacket,m.signature.key,{key:this.keyPacket},null,t).catch(()=>{});if(a){let c=sI(this.keyPacket,a);i=Math.min(s,o,c)}else i=s<o?s:o}catch{i=null}return F.normalizeDate(i)}async getPrimarySelfSignature(e=new Date,t={},i=pe){let n=this.keyPacket;if(n.version===6)return kn(this.directSignatures,n,m.signature.key,{key:n},e,i);let{selfCertification:s}=await this.getPrimaryUser(e,t,i);return s}async getPrimaryUser(e=new Date,t={},i=pe){let n=this.keyPacket,s=[],o;for(let d=0;d<this.users.length;d++)try{let u=this.users[d];if(!u.userID)continue;if(t.name!==void 0&&u.userID.name!==t.name||t.email!==void 0&&u.userID.email!==t.email||t.comment!==void 0&&u.userID.comment!==t.comment)throw new Error("Could not find user that matches that user ID");let f={userID:u.userID,key:n},h=await kn(u.selfCertifications,n,m.signature.certGeneric,f,e,i);s.push({index:d,user:u,selfCertification:h})}catch(u){o=u}if(!s.length)throw o||new Error("Could not find primary user");await Promise.all(s.map(async d=>{d.selfCertification.revoked||await d.user.isRevoked(d.selfCertification,null,e,i)}));let a=s.sort(function(d,u){let f=d.selfCertification,h=u.selfCertification;return h.revoked-f.revoked||f.isPrimaryUserID-h.isPrimaryUserID||f.created-h.created}).pop(),{user:c,selfCertification:l}=a;if(l.revoked||await c.isRevoked(l,null,e,i))throw new Error("Primary user is revoked");return a}async update(e,t=new Date,i=pe){if(!this.hasSameFingerprintAs(e))throw new Error("Primary key fingerprints must be equal to update the key");if(!this.isPrivate()&&e.isPrivate()){if(!(this.subkeys.length===e.subkeys.length&&this.subkeys.every(o=>e.subkeys.some(a=>o.hasSameFingerprintAs(a)))))throw new Error("Cannot update public key with private key if subkeys mismatch");return e.update(this,i)}let n=this.clone();return await Pc(e,n,"revocationSignatures",t,s=>Qd(n.keyPacket,m.signature.keyRevocation,n,[s],null,e.keyPacket,t,i)),await Pc(e,n,"directSignatures",t),await Promise.all(e.users.map(async s=>{let o=n.users.filter(a=>s.userID&&s.userID.equals(a.userID)||s.userAttribute&&s.userAttribute.equals(a.userAttribute));if(o.length>0)await Promise.all(o.map(a=>a.update(s,t,i)));else{let a=s.clone();a.mainKey=n,n.users.push(a)}})),await Promise.all(e.subkeys.map(async s=>{let o=n.subkeys.filter(a=>a.hasSameFingerprintAs(s));if(o.length>0)await Promise.all(o.map(a=>a.update(s,t,i)));else{let a=s.clone();a.mainKey=n,n.subkeys.push(a)}})),n}async getRevocationCertificate(e=new Date,t=pe){let i={key:this.keyPacket},n=await kn(this.revocationSignatures,this.keyPacket,m.signature.keyRevocation,i,e,t),s=new Ct;s.push(n);let o=this.keyPacket.version!==6;return dA(m.armor.publicKey,s.write(),null,null,"This is a revocation certificate",o,t)}async applyRevocationCertificate(e,t=new Date,i=pe){let n=await wI(e),o=(await Ct.fromBinary(n.data,bX,i)).findPacket(m.packet.signature);if(!o||o.signatureType!==m.signature.keyRevocation)throw new Error("Could not find revocation signature packet");if(!o.issuerKeyID.equals(this.getKeyID()))throw new Error("Revocation signature does not match key");try{await o.verify(this.keyPacket,m.signature.keyRevocation,{key:this.keyPacket},t,void 0,i)}catch(c){throw F.wrapError("Could not verify revocation signature",c)}let a=this.clone();return a.revocationSignatures.push(o),a}async signPrimaryUser(e,t,i,n=pe){let{index:s,user:o}=await this.getPrimaryUser(t,i,n),a=await o.certify(e,t,n),c=this.clone();return c.users[s]=a,c}async signAllUsers(e,t=new Date,i=pe){let n=this.clone();return n.users=await Promise.all(this.users.map(function(s){return s.certify(e,t,i)})),n}async verifyPrimaryUser(e,t=new Date,i,n=pe){let s=this.keyPacket,{user:o}=await this.getPrimaryUser(t,i,n);return e?await o.verifyAllCertifications(e,t,n):[{keyID:s.getKeyID(),valid:await o.verify(t,n).catch(()=>!1)}]}async verifyAllUsers(e,t=new Date,i=pe){let n=this.keyPacket,s=[];return await Promise.all(this.users.map(async o=>{let a=e?await o.verifyAllCertifications(e,t,i):[{keyID:n.getKeyID(),valid:await o.verify(t,i).catch(()=>!1)}];s.push(...a.map(c=>({userID:o.userID?o.userID.userID:null,userAttribute:o.userAttribute,keyID:c.keyID,valid:c.valid})))})),s}};["getKeyID","getFingerprint","getAlgorithmInfo","getCreationTime","hasSameFingerprintAs"].forEach(r=>{oI.prototype[r]=Xf.prototype[r]});aI=class extends oI{constructor(e){if(super(),this.keyPacket=null,this.revocationSignatures=[],this.directSignatures=[],this.users=[],this.subkeys=[],e&&(this.packetListToStructure(e,new Set([m.packet.secretKey,m.packet.secretSubkey])),!this.keyPacket))throw new Error("Invalid key: missing public-key packet")}isPrivate(){return!1}toPublic(){return this}armor(e=pe){let t=this.keyPacket.version!==6;return dA(m.armor.publicKey,this.toPacketList().write(),void 0,void 0,void 0,t,e)}},cI=class r extends aI{constructor(e){if(super(),this.packetListToStructure(e,new Set([m.packet.publicKey,m.packet.publicSubkey])),!this.keyPacket)throw new Error("Invalid key: missing private-key packet")}isPrivate(){return!0}toPublic(){let e=new Ct,t=this.toPacketList();for(let i of t)switch(i.constructor.tag){case m.packet.secretKey:{let n=As.fromSecretKeyPacket(i);e.push(n);break}case m.packet.secretSubkey:{let n=tI.fromSecretSubkeyPacket(i);e.push(n);break}default:e.push(i)}return new aI(e)}armor(e=pe){let t=this.keyPacket.version!==6;return dA(m.armor.privateKey,this.toPacketList().write(),void 0,void 0,void 0,t,e)}async getDecryptionKeys(e,t=new Date,i={},n=pe){let s=this.keyPacket,o=[],a=null;for(let l=0;l<this.subkeys.length;l++)if(!e||this.subkeys[l].getKeyID().equals(e,!0)){if(this.subkeys[l].keyPacket.isDummy()){a=a||new Error("Gnu-dummy key packets cannot be used for decryption");continue}try{let d={key:s,bind:this.subkeys[l].keyPacket},u=await kn(this.subkeys[l].bindingSignatures,s,m.signature.subkeyBinding,d,t,n);K5(this.subkeys[l].keyPacket,u,n)&&o.push(this.subkeys[l])}catch(d){a=d}}let c=await this.getPrimarySelfSignature(t,i,n);if((!e||s.getKeyID().equals(e,!0))&&K5(s,c,n)&&(s.isDummy()?a=a||new Error("Gnu-dummy key packets cannot be used for decryption"):o.push(this)),o.length===0)throw a||new Error("No decryption key packets found");return o}isDecrypted(){return this.getKeys().some(({keyPacket:e})=>e.isDecrypted())}async validate(e=pe){if(!this.isPrivate())throw new Error("Cannot validate a public key");let t;if(!this.keyPacket.isDummy())t=this.keyPacket;else{let i=await this.getSigningKey(null,null,void 0,{...e,rejectPublicKeyAlgorithms:new Set,minRSABits:0});i&&!i.keyPacket.isDummy()&&(t=i.keyPacket)}if(t)return t.validate();{let i=this.getKeys();if(i.map(s=>s.keyPacket.isDummy()).every(Boolean))throw new Error("Cannot validate an all-gnu-dummy key");return Promise.all(i.map(s=>s.keyPacket.validate()))}}clearPrivateParams(){this.getKeys().forEach(({keyPacket:e})=>{e.isDecrypted()&&e.clearPrivateParams()})}async revoke({flag:e=m.reasonForRevocation.noReason,string:t=""}={},i=new Date,n=pe){if(!this.isPrivate())throw new Error("Need private key for revoking");let s={key:this.keyPacket},o=this.clone();return o.revocationSignatures.push(await us(s,[],this.keyPacket,{signatureType:m.signature.keyRevocation,reasonForRevocationFlag:m.write(m.reasonForRevocation,e),reasonForRevocationString:t},i,void 0,void 0,void 0,n)),o}async addSubkey(e={}){let t={...pe,...e.config};if(e.passphrase)throw new Error("Subkey could not be encrypted here, please encrypt whole key");if(e.rsaBits<t.minRSABits)throw new Error(`rsaBits should be at least ${t.minRSABits}, got: ${e.rsaBits}`);let i=this.keyPacket;if(i.isDummy())throw new Error("Cannot add subkey to gnu-dummy primary key");if(!i.isDecrypted())throw new Error("Key is not decrypted");let n=i.getAlgorithmInfo();n.type=vX(n.algorithm),n.rsaBits=n.bits||4096,n.curve=n.curve||"curve25519Legacy",e=NB(e,n);let s=await kT(e,{...t,v6Keys:this.keyPacket.version===6});pa(s,t);let o=await ST(s,i,e,t),a=this.toPacketList();return a.push(s,o),new r(a)}};kX=F.constructAllowedPackets([As,tI,Wf,iI,rI,UB,Nr]);QX=F.constructAllowedPackets([Ea,qc,PB,Dd,TB,Vf,Yf,an,Nr]),_X=F.constructAllowedPackets([Yf]),FX=F.constructAllowedPackets([Nr]),Zf=class r{constructor(e){this.packets=e||new Ct}getEncryptionKeyIDs(){let e=[];return this.packets.filterByTag(m.packet.publicKeyEncryptedSessionKey).forEach(function(i){e.push(i.publicKeyID)}),e}getSigningKeyIDs(){let e=this.unwrapCompressed(),t=e.packets.filterByTag(m.packet.onePassSignature);return t.length>0?t.map(n=>n.issuerKeyID):e.packets.filterByTag(m.packet.signature).map(n=>n.issuerKeyID)}async decrypt(e,t,i,n=new Date,s=pe){let o=this.packets.filterByTag(m.packet.symmetricallyEncryptedData,m.packet.symEncryptedIntegrityProtectedData,m.packet.aeadEncryptedData);if(o.length===0)throw new Error("No encrypted data found");let a=o[0],c=a.cipherAlgorithm,l=i||await this.decryptSessionKeys(e,t,c,n,s),d=null,u=Promise.all(l.map(async({algorithm:h,data:g})=>{if(!F.isUint8Array(g)||!a.cipherAlgorithm&&!F.isString(h))throw new Error("Invalid session key for decryption.");try{let p=a.cipherAlgorithm||m.write(m.symmetric,h);await a.decrypt(p,g,s)}catch(p){F.printDebugError(p),d=p}}));if(pB(a.encrypted),a.encrypted=null,await u,!a.packets||!a.packets.length)throw d||new Error("Decryption failed.");let f=new r(a.packets);return a.packets=new Ct,f}async decryptSessionKeys(e,t,i,n=new Date,s=pe){let o=[],a;if(t){let c=this.packets.filterByTag(m.packet.symEncryptedSessionKey);if(c.length===0)throw new Error("No symmetrically encrypted session key packet found.");await Promise.all(t.map(async function(l,d){let u;d?u=await Ct.fromBinary(c.write(),_X,s):u=c,await Promise.all(u.map(async function(f){try{await f.decrypt(l,s),o.push(f)}catch(h){F.printDebugError(h),h instanceof wd&&(a=h)}}))}))}else if(e){let c=this.packets.filterByTag(m.packet.publicKeyEncryptedSessionKey);if(c.length===0)throw new Error("No public key encrypted session key packet found.");await Promise.all(c.map(async function(l){await Promise.all(e.map(async function(d){let u;try{u=(await d.getDecryptionKeys(l.publicKeyID,null,void 0,s)).map(h=>h.keyPacket)}catch(h){a=h;return}let f=[m.symmetric.aes256,m.symmetric.aes128,m.symmetric.tripledes,m.symmetric.cast5];try{let h=await d.getPrimarySelfSignature(n,void 0,s);h.preferredSymmetricAlgorithms&&(f=f.concat(h.preferredSymmetricAlgorithms))}catch{}await Promise.all(u.map(async function(h){if(!h.isDecrypted())throw new Error("Decryption key is not decrypted.");if(s.constantTimePKCS1Decryption&&(l.publicKeyAlgorithm===m.publicKey.rsaEncrypt||l.publicKeyAlgorithm===m.publicKey.rsaEncryptSign||l.publicKeyAlgorithm===m.publicKey.rsaSign||l.publicKeyAlgorithm===m.publicKey.elgamal)){let p=l.write();await Promise.all((i?[i]:Array.from(s.constantTimePKCS1DecryptionSupportedSymmetricAlgorithms)).map(async I=>{let y=new Vf;y.read(p);let w={sessionKeyAlgorithm:I,sessionKey:BB(I)};try{await y.decrypt(h,w),o.push(y)}catch(C){F.printDebugError(C),a=C}}))}else try{await l.decrypt(h);let p=i||l.sessionKeyAlgorithm;if(p&&!f.includes(m.write(m.symmetric,p)))throw new Error("A non-preferred symmetric algorithm was used.");o.push(l)}catch(p){F.printDebugError(p),a=p}}))})),pB(l.encrypted),l.encrypted=null}))}else throw new Error("No key or password specified.");if(o.length>0){if(o.length>1){let c=new Set;o=o.filter(l=>{let d=l.sessionKeyAlgorithm+F.uint8ArrayToString(l.sessionKey);return c.has(d)?!1:(c.add(d),!0)})}return o.map(c=>({data:c.sessionKey,algorithm:c.sessionKeyAlgorithm&&m.read(m.symmetric,c.sessionKeyAlgorithm)}))}throw a||new Error("Session key decryption failed.")}getLiteralData(){let t=this.unwrapCompressed().packets.findPacket(m.packet.literalData);return t&&t.getBytes()||null}getFilename(){let t=this.unwrapCompressed().packets.findPacket(m.packet.literalData);return t&&t.getFilename()||null}getText(){let t=this.unwrapCompressed().packets.findPacket(m.packet.literalData);return t?t.getText():null}static async generateSessionKey(e=[],t=new Date,i=[],n=pe){let{symmetricAlgo:s,aeadAlgo:o}=await BX(e,t,i,n),a=m.read(m.symmetric,s),c=o?m.read(m.aead,o):void 0;return await Promise.all(e.map(d=>d.getEncryptionKey().catch(()=>null).then(u=>{if(u&&(u.keyPacket.algorithm===m.publicKey.x25519||u.keyPacket.algorithm===m.publicKey.x448)&&!c&&!F.isAES(s))throw new Error("Could not generate a session key compatible with the given `encryptionKeys`: X22519 and X448 keys can only be used to encrypt AES session keys; change `config.preferredSymmetricAlgorithm` accordingly.")}))),{data:BB(s),algorithm:a,aeadAlgorithm:c}}async encrypt(e,t,i,n=!1,s=[],o=new Date,a=[],c=pe){if(i){if(!F.isUint8Array(i.data)||!F.isString(i.algorithm))throw new Error("Invalid session key for encryption.")}else if(e&&e.length)i=await r.generateSessionKey(e,o,a,c);else if(t&&t.length)i=await r.generateSessionKey(void 0,void 0,void 0,c);else throw new Error("No keys, passwords, or session key provided.");let{data:l,algorithm:d,aeadAlgorithm:u}=i,f=await r.encryptSessionKey(l,d,u,e,t,n,s,o,a,c),h=Dd.fromObject({version:u?2:1,aeadAlgorithm:u?m.write(m.aead,u):null});h.packets=this.packets;let g=m.write(m.symmetric,d);return await h.encrypt(g,l,c),f.packets.push(h),h.packets=new Ct,f}static async encryptSessionKey(e,t,i,n,s,o=!1,a=[],c=new Date,l=[],d=pe){let u=new Ct,f=m.write(m.symmetric,t),h=i&&m.write(m.aead,i);if(n){let g=await Promise.all(n.map(async function(p,I){let y=await p.getEncryptionKey(a[I],c,l,d),w=Vf.fromObject({version:h?6:3,encryptionKeyPacket:y.keyPacket,anonymousRecipient:o,sessionKey:e,sessionKeyAlgorithm:f});return await w.encrypt(y.keyPacket),delete w.sessionKey,w}));u.push(...g)}if(s){let g=async function(w,C){try{return await w.decrypt(C,d),1}catch{return 0}},p=(w,C)=>w+C,I=async function(w,C,b,x){let _=new Yf(d);return _.sessionKey=w,_.sessionKeyAlgorithm=C,b&&(_.aeadAlgorithm=b),await _.encrypt(x,d),d.passwordCollisionCheck&&(await Promise.all(s.map(U=>g(_,U)))).reduce(p)!==1?I(w,C,x):(delete _.sessionKey,_)},y=await Promise.all(s.map(w=>I(e,f,h,w)));u.push(...y)}return new r(u)}async sign(e=[],t=[],i=null,n=[],s=new Date,o=[],a=[],c=[],l=pe){let d=new Ct,u=this.packets.findPacket(m.packet.literalData);if(!u)throw new Error("No literal data packet to sign.");let f=await J5(u,e,t,i,n,s,o,a,c,!1,l),h=f.map((g,p)=>an.fromSignaturePacket(g,p===0)).reverse();return d.push(...h),d.push(u),d.push(...f),new r(d)}compress(e,t=pe){if(e===m.compression.uncompressed)return this;let i=new qc(t);i.algorithm=e,i.packets=this.packets;let n=new Ct;return n.push(i),new r(n)}async signDetached(e=[],t=[],i=null,n=[],s=[],o=new Date,a=[],c=[],l=pe){let d=this.packets.findPacket(m.packet.literalData);if(!d)throw new Error("No literal data packet to sign.");return new nI(await J5(d,e,t,i,n,s,o,a,c,!0,l))}async verify(e,t=new Date,i=pe){let n=this.unwrapCompressed(),s=n.packets.filterByTag(m.packet.literalData);if(s.length!==1)throw new Error("Can only verify message with one literal data packet.");let o=n.packets;St(o.stream)&&(o=o.concat(await Xt(o.stream,l=>l||[])));let a=o.filterByTag(m.packet.onePassSignature).reverse(),c=o.filterByTag(m.packet.signature);return a.length&&!c.length&&F.isStream(o.stream)&&!St(o.stream)?(await Promise.all(a.map(async l=>{l.correspondingSig=new Promise((d,u)=>{l.correspondingSigResolve=d,l.correspondingSigReject=u}),l.signatureData=Hc(async()=>(await l.correspondingSig).signatureData),l.hashed=Xt(await l.hash(l.signatureType,s[0],void 0,!1)),l.hashed.catch(()=>{})})),o.stream=Ba(o.stream,async(l,d)=>{let u=_n(l),f=Hi(d);try{for(let h=0;h<a.length;h++){let{value:g}=await u.read();a[h].correspondingSigResolve(g)}await u.readToEnd(),await f.ready,await f.close()}catch(h){a.forEach(g=>{g.correspondingSigReject(h)}),await f.abort(h)}}),WE(a,s,e,t,!1,i)):WE(c,s,e,t,!1,i)}async verifyDetached(e,t,i=new Date,n=pe){let o=this.unwrapCompressed().packets.filterByTag(m.packet.literalData);if(o.length!==1)throw new Error("Can only verify message with one literal data packet.");let a=e.packets.filterByTag(m.packet.signature);return WE(a,o,t,i,!0,n)}unwrapCompressed(){let e=this.packets.filterByTag(m.packet.compressedData);return e.length?new r(e[0].packets):this}async appendSignature(e,t=pe){await this.packets.read(F.isUint8Array(e)?e:(await wI(e)).data,FX,t)}write(){return this.packets.write()}armor(e=pe){let t=this.packets[this.packets.length-1],i=t.constructor.tag===Dd.tag?t.version!==2:this.packets.some(n=>n.constructor.tag===Nr.tag&&n.version!==6);return dA(m.armor.message,this.write(),null,null,null,i,e)}};UX=Object.keys(pe).length;od=Mi&&typeof Mi=="object"&&"webcrypto"in Mi?Mi.webcrypto:Mi&&typeof Mi=="object"&&"randomBytes"in Mi?Mi:void 0;qX=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;$5=qX?r=>r:MX,UT=typeof Uint8Array.from([]).toHex=="function"&&typeof Uint8Array.fromHex=="function",LX=Array.from({length:256},(r,e)=>e.toString(16).padStart(2,"0"));js={_0:48,_9:57,A:65,F:70,a:97,f:102};tA=class{};GX=lo;B1=BigInt(0),OB=BigInt(1);ZE=r=>typeof r=="bigint"&&B1<=r;IA=r=>(OB<<BigInt(r))-OB;xi=BigInt(0),ui=BigInt(1),Qc=BigInt(2),qT=BigInt(3),OT=BigInt(4),MT=BigInt(5),$X=BigInt(7),LT=BigInt(8),VX=BigInt(9),HT=BigInt(16);ZX=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];Lc=class extends tA{constructor(e,t,i,n){super(),this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.blockLen=e,this.outputLen=t,this.padOffset=i,this.isLE=n,this.buffer=new Uint8Array(e),this.view=XE(this.buffer)}update(e){_d(this),e=yA(e),hs(e);let{view:t,buffer:i,blockLen:n}=this,s=e.length;for(let o=0;o<s;){let a=Math.min(n-this.pos,s-o);if(a===n){let c=XE(e);for(;n<=s-o;o+=n)this.process(c,o);continue}i.set(e.subarray(o,o+a),this.pos),this.pos+=a,o+=a,this.pos===n&&(this.process(t,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){_d(this),TT(e,this),this.finished=!0;let{buffer:t,view:i,blockLen:n,isLE:s}=this,{pos:o}=this;t[o++]=128,cn(this.buffer.subarray(o)),this.padOffset>n-o&&(this.process(i,0),o=0);for(let u=o;u<n;u++)t[u]=0;iZ(i,n-8,BigInt(this.length*8),s),this.process(i,0);let a=XE(e),c=this.outputLen;if(c%4)throw new Error("_sha2: outputLen should be aligned to 32bit");let l=c/4,d=this.get();if(l>d.length)throw new Error("_sha2: outputLen bigger than state");for(let u=0;u<l;u++)a.setUint32(4*u,d[u],s)}digest(){let{buffer:e,outputLen:t}=this;this.digestInto(e);let i=e.slice(0,t);return this.destroy(),i}_cloneInto(e){e||(e=new this.constructor),e.set(...this.get());let{blockLen:t,buffer:i,length:n,finished:s,destroyed:o,pos:a}=this;return e.destroyed=o,e.finished=s,e.length=n,e.pos=a,n%t&&e.buffer.set(i),e}clone(){return this._cloneInto()}},sa=Uint32Array.from([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),oa=Uint32Array.from([3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428]),$r=Uint32Array.from([3418070365,3238371032,1654270250,914150663,2438529370,812702999,355462360,4144912697,1731405415,4290775857,2394180231,1750603025,3675008525,1694076839,1203062813,3204075428]),Vr=Uint32Array.from([1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209]),Iy=BigInt(2**32-1),Z5=BigInt(32);e6=(r,e,t)=>r>>>t,t6=(r,e,t)=>r<<32-t|e>>>t,ad=(r,e,t)=>r>>>t|e<<32-t,cd=(r,e,t)=>r<<32-t|e>>>t,wy=(r,e,t)=>r<<64-t|e>>>t-32,xy=(r,e,t)=>r>>>t-32|e<<64-t,sZ=(r,e,t)=>r<<t|e>>>32-t,oZ=(r,e,t)=>e<<t|r>>>32-t,aZ=(r,e,t)=>e<<t-32|r>>>64-t,cZ=(r,e,t)=>r<<t-32|e>>>64-t;lZ=(r,e,t)=>(r>>>0)+(e>>>0)+(t>>>0),dZ=(r,e,t,i)=>e+t+i+(r/2**32|0)|0,uZ=(r,e,t,i)=>(r>>>0)+(e>>>0)+(t>>>0)+(i>>>0),fZ=(r,e,t,i,n)=>e+t+i+n+(r/2**32|0)|0,AZ=(r,e,t,i,n)=>(r>>>0)+(e>>>0)+(t>>>0)+(i>>>0)+(n>>>0),hZ=(r,e,t,i,n,s)=>e+t+i+n+s+(r/2**32|0)|0,gZ=Uint32Array.from([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),aa=new Uint32Array(64),uI=class extends Lc{constructor(e=32){super(64,e,8,!1),this.A=sa[0]|0,this.B=sa[1]|0,this.C=sa[2]|0,this.D=sa[3]|0,this.E=sa[4]|0,this.F=sa[5]|0,this.G=sa[6]|0,this.H=sa[7]|0}get(){let{A:e,B:t,C:i,D:n,E:s,F:o,G:a,H:c}=this;return[e,t,i,n,s,o,a,c]}set(e,t,i,n,s,o,a,c){this.A=e|0,this.B=t|0,this.C=i|0,this.D=n|0,this.E=s|0,this.F=o|0,this.G=a|0,this.H=c|0}process(e,t){for(let u=0;u<16;u++,t+=4)aa[u]=e.getUint32(t,!1);for(let u=16;u<64;u++){let f=aa[u-15],h=aa[u-2],g=es(f,7)^es(f,18)^f>>>3,p=es(h,17)^es(h,19)^h>>>10;aa[u]=p+aa[u-7]+g+aa[u-16]|0}let{A:i,B:n,C:s,D:o,E:a,F:c,G:l,H:d}=this;for(let u=0;u<64;u++){let f=es(a,6)^es(a,11)^es(a,25),h=d+f+VT(a,c,l)+gZ[u]+aa[u]|0,p=(es(i,2)^es(i,13)^es(i,22))+YT(i,n,s)|0;d=l,l=c,c=a,a=o+h|0,o=s,s=n,n=i,i=h+p|0}i=i+this.A|0,n=n+this.B|0,s=s+this.C|0,o=o+this.D|0,a=a+this.E|0,c=c+this.F|0,l=l+this.G|0,d=d+this.H|0,this.set(i,n,s,o,a,c,l,d)}roundClean(){cn(aa)}destroy(){this.set(0,0,0,0,0,0,0,0),cn(this.buffer)}},MB=class extends uI{constructor(){super(28),this.A=oa[0]|0,this.B=oa[1]|0,this.C=oa[2]|0,this.D=oa[3]|0,this.E=oa[4]|0,this.F=oa[5]|0,this.G=oa[6]|0,this.H=oa[7]|0}},XT=WT(["0x428a2f98d728ae22","0x7137449123ef65cd","0xb5c0fbcfec4d3b2f","0xe9b5dba58189dbbc","0x3956c25bf348b538","0x59f111f1b605d019","0x923f82a4af194f9b","0xab1c5ed5da6d8118","0xd807aa98a3030242","0x12835b0145706fbe","0x243185be4ee4b28c","0x550c7dc3d5ffb4e2","0x72be5d74f27b896f","0x80deb1fe3b1696b1","0x9bdc06a725c71235","0xc19bf174cf692694","0xe49b69c19ef14ad2","0xefbe4786384f25e3","0x0fc19dc68b8cd5b5","0x240ca1cc77ac9c65","0x2de92c6f592b0275","0x4a7484aa6ea6e483","0x5cb0a9dcbd41fbd4","0x76f988da831153b5","0x983e5152ee66dfab","0xa831c66d2db43210","0xb00327c898fb213f","0xbf597fc7beef0ee4","0xc6e00bf33da88fc2","0xd5a79147930aa725","0x06ca6351e003826f","0x142929670a0e6e70","0x27b70a8546d22ffc","0x2e1b21385c26c926","0x4d2c6dfc5ac42aed","0x53380d139d95b3df","0x650a73548baf63de","0x766a0abb3c77b2a8","0x81c2c92e47edaee6","0x92722c851482353b","0xa2bfe8a14cf10364","0xa81a664bbc423001","0xc24b8b70d0f89791","0xc76c51a30654be30","0xd192e819d6ef5218","0xd69906245565a910","0xf40e35855771202a","0x106aa07032bbd1b8","0x19a4c116b8d2d0c8","0x1e376c085141ab53","0x2748774cdf8eeb99","0x34b0bcb5e19b48a8","0x391c0cb3c5c95a63","0x4ed8aa4ae3418acb","0x5b9cca4f7763e373","0x682e6ff3d6b2b8a3","0x748f82ee5defb2fc","0x78a5636f43172f60","0x84c87814a1f0ab72","0x8cc702081a6439ec","0x90befffa23631e28","0xa4506cebde82bde9","0xbef9a3f7b2c67915","0xc67178f2e372532b","0xca273eceea26619c","0xd186b8c721c0c207","0xeada7dd6cde0eb1e","0xf57d4f7fee6ed178","0x06f067aa72176fba","0x0a637dc5a2c898a6","0x113f9804bef90dae","0x1b710b35131c471b","0x28db77f523047d84","0x32caab7b40c72493","0x3c9ebe0a15c9bebc","0x431d67c49c100d4c","0x4cc5d4becb3e42b6","0x597f299cfc657e2a","0x5fcb6fab3ad6faec","0x6c44198c4a475817"].map(r=>BigInt(r))),pZ=XT[0],mZ=XT[1],ca=new Uint32Array(80),la=new Uint32Array(80),fI=class extends Lc{constructor(e=64){super(128,e,16,!1),this.Ah=Vr[0]|0,this.Al=Vr[1]|0,this.Bh=Vr[2]|0,this.Bl=Vr[3]|0,this.Ch=Vr[4]|0,this.Cl=Vr[5]|0,this.Dh=Vr[6]|0,this.Dl=Vr[7]|0,this.Eh=Vr[8]|0,this.El=Vr[9]|0,this.Fh=Vr[10]|0,this.Fl=Vr[11]|0,this.Gh=Vr[12]|0,this.Gl=Vr[13]|0,this.Hh=Vr[14]|0,this.Hl=Vr[15]|0}get(){let{Ah:e,Al:t,Bh:i,Bl:n,Ch:s,Cl:o,Dh:a,Dl:c,Eh:l,El:d,Fh:u,Fl:f,Gh:h,Gl:g,Hh:p,Hl:I}=this;return[e,t,i,n,s,o,a,c,l,d,u,f,h,g,p,I]}set(e,t,i,n,s,o,a,c,l,d,u,f,h,g,p,I){this.Ah=e|0,this.Al=t|0,this.Bh=i|0,this.Bl=n|0,this.Ch=s|0,this.Cl=o|0,this.Dh=a|0,this.Dl=c|0,this.Eh=l|0,this.El=d|0,this.Fh=u|0,this.Fl=f|0,this.Gh=h|0,this.Gl=g|0,this.Hh=p|0,this.Hl=I|0}process(e,t){for(let C=0;C<16;C++,t+=4)ca[C]=e.getUint32(t),la[C]=e.getUint32(t+=4);for(let C=16;C<80;C++){let b=ca[C-15]|0,x=la[C-15]|0,_=ad(b,x,1)^ad(b,x,8)^e6(b,x,7),R=cd(b,x,1)^cd(b,x,8)^t6(b,x,7),U=ca[C-2]|0,T=la[C-2]|0,D=ad(U,T,19)^wy(U,T,61)^e6(U,T,6),B=cd(U,T,19)^xy(U,T,61)^t6(U,T,6),Q=uZ(R,B,la[C-7],la[C-16]),v=fZ(Q,_,D,ca[C-7],ca[C-16]);ca[C]=v|0,la[C]=Q|0}let{Ah:i,Al:n,Bh:s,Bl:o,Ch:a,Cl:c,Dh:l,Dl:d,Eh:u,El:f,Fh:h,Fl:g,Gh:p,Gl:I,Hh:y,Hl:w}=this;for(let C=0;C<80;C++){let b=ad(u,f,14)^ad(u,f,18)^wy(u,f,41),x=cd(u,f,14)^cd(u,f,18)^xy(u,f,41),_=u&h^~u&p,R=f&g^~f&I,U=AZ(w,x,R,mZ[C],la[C]),T=hZ(U,y,b,_,pZ[C],ca[C]),D=U|0,B=ad(i,n,28)^wy(i,n,34)^wy(i,n,39),Q=cd(i,n,28)^xy(i,n,34)^xy(i,n,39),v=i&s^i&a^s&a,E=n&o^n&c^o&c;y=p|0,w=I|0,p=h|0,I=g|0,h=u|0,g=f|0,{h:u,l:f}=$s(l|0,d|0,T|0,D|0),l=a|0,d=c|0,a=s|0,c=o|0,s=i|0,o=n|0;let P=lZ(D,Q,E);i=dZ(P,T,B,v),n=P|0}({h:i,l:n}=$s(this.Ah|0,this.Al|0,i|0,n|0)),{h:s,l:o}=$s(this.Bh|0,this.Bl|0,s|0,o|0),{h:a,l:c}=$s(this.Ch|0,this.Cl|0,a|0,c|0),{h:l,l:d}=$s(this.Dh|0,this.Dl|0,l|0,d|0),{h:u,l:f}=$s(this.Eh|0,this.El|0,u|0,f|0),{h,l:g}=$s(this.Fh|0,this.Fl|0,h|0,g|0),{h:p,l:I}=$s(this.Gh|0,this.Gl|0,p|0,I|0),{h:y,l:w}=$s(this.Hh|0,this.Hl|0,y|0,w|0),this.set(i,n,s,o,a,c,l,d,u,f,h,g,p,I,y,w)}roundClean(){cn(ca,la)}destroy(){cn(this.buffer),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}},LB=class extends fI{constructor(){super(48),this.Ah=$r[0]|0,this.Al=$r[1]|0,this.Bh=$r[2]|0,this.Bl=$r[3]|0,this.Ch=$r[4]|0,this.Cl=$r[5]|0,this.Dh=$r[6]|0,this.Dl=$r[7]|0,this.Eh=$r[8]|0,this.El=$r[9]|0,this.Fh=$r[10]|0,this.Fl=$r[11]|0,this.Gh=$r[12]|0,this.Gl=$r[13]|0,this.Hh=$r[14]|0,this.Hl=$r[15]|0}},S1=lo(()=>new uI),yZ=lo(()=>new MB),ZT=lo(()=>new fI),eU=lo(()=>new LB),AI=class extends tA{constructor(e,t){super(),this.finished=!1,this.destroyed=!1,PT(e);let i=yA(t);if(this.iHash=e.create(),typeof this.iHash.update!="function")throw new Error("Expected instance of class which extends utils.Hash");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;let n=this.blockLen,s=new Uint8Array(n);s.set(i.length>n?e.create().update(i).digest():i);for(let o=0;o<s.length;o++)s[o]^=54;this.iHash.update(s),this.oHash=e.create();for(let o=0;o<s.length;o++)s[o]^=106;this.oHash.update(s),cn(s)}update(e){return _d(this),this.iHash.update(e),this}digestInto(e){_d(this),hs(e,this.outputLen),this.finished=!0,this.iHash.digestInto(e),this.oHash.update(e),this.oHash.digestInto(e),this.destroy()}digest(){let e=new Uint8Array(this.oHash.outputLen);return this.digestInto(e),e}_cloneInto(e){e||(e=Object.create(Object.getPrototypeOf(this),{}));let{oHash:t,iHash:i,finished:n,destroyed:s,blockLen:o,outputLen:a}=this;return e=e,e.finished=n,e.destroyed=s,e.blockLen=o,e.outputLen=a,e.oHash=t._cloneInto(e.oHash),e.iHash=i._cloneInto(e.iHash),e}clone(){return this._cloneInto()}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}},tU=(r,e,t)=>new AI(r,e).update(t).digest();tU.create=(r,e)=>new AI(r,e);Fd=BigInt(0),_c=BigInt(1);tB=new WeakMap,iU=new WeakMap;gI=class{constructor(e,t){this.BASE=e.BASE,this.ZERO=e.ZERO,this.Fn=e.Fn,this.bits=t}_unsafeLadder(e,t,i=this.ZERO){let n=e;for(;t>Fd;)t&_c&&(i=i.add(n)),n=n.double(),t>>=_c;return i}precomputeWindow(e,t){let{windows:i,windowSize:n}=eB(t,this.bits),s=[],o=e,a=o;for(let c=0;c<i;c++){a=o,s.push(a);for(let l=1;l<n;l++)a=a.add(o),s.push(a);o=a.double()}return s}wNAF(e,t,i){if(!this.Fn.isValid(i))throw new Error("invalid scalar");let n=this.ZERO,s=this.BASE,o=eB(e,this.bits);for(let a=0;a<o.windows;a++){let{nextN:c,offset:l,isZero:d,isNeg:u,isNegF:f,offsetF:h}=r6(i,a,o);i=c,d?s=s.add(hI(f,t[h])):n=n.add(hI(u,t[l]))}return i6(i),{p:n,f:s}}wNAFUnsafe(e,t,i,n=this.ZERO){let s=eB(e,this.bits);for(let o=0;o<s.windows&&i!==Fd;o++){let{nextN:a,offset:c,isZero:l,isNeg:d}=r6(i,o,s);if(i=a,!l){let u=t[c];n=n.add(d?u.negate():u)}}return i6(i),n}getPrecomputes(e,t,i){let n=tB.get(t);return n||(n=this.precomputeWindow(t,e),e!==1&&(typeof i=="function"&&(n=i(n)),tB.set(t,n))),n}cached(e,t,i){let n=rB(e);return this.wNAF(n,this.getPrecomputes(n,e,i),t)}unsafe(e,t,i,n){let s=rB(e);return s===1?this._unsafeLadder(e,t,n):this.wNAFUnsafe(s,this.getPrecomputes(s,e,i),t,n)}createCache(e,t){rU(t,this.bits),iU.set(e,t),tB.delete(e)}hasCache(e){return rB(e)!==1}};s6=(r,e)=>(r+(r>=0?e:-e)/oU)/e;KB=class extends Error{constructor(e=""){super(e)}},Zs={Err:KB,_tlv:{encode:(r,e)=>{let{Err:t}=Zs;if(r<0||r>256)throw new t("tlv.encode: wrong tag");if(e.length&1)throw new t("tlv.encode: unpadded data");let i=e.length/2,n=yy(i);if(n.length/2&128)throw new t("tlv.encode: long form length too big");let s=i>127?yy(n.length/2|128):"";return yy(r)+s+n+e},decode(r,e){let{Err:t}=Zs,i=0;if(r<0||r>256)throw new t("tlv.encode: wrong tag");if(e.length<2||e[i++]!==r)throw new t("tlv.decode: wrong tlv");let n=e[i++],s=!!(n&128),o=0;if(!s)o=n;else{let c=n&127;if(!c)throw new t("tlv.decode(long): indefinite length not supported");if(c>4)throw new t("tlv.decode(long): byte length is too big");let l=e.subarray(i,i+c);if(l.length!==c)throw new t("tlv.decode: length bytes not complete");if(l[0]===0)throw new t("tlv.decode(long): zero leftmost byte");for(let d of l)o=o<<8|d;if(i+=c,o<128)throw new t("tlv.decode(long): not minimal encoding")}let a=e.subarray(i,i+o);if(a.length!==o)throw new t("tlv.decode: wrong value length");return{v:a,l:e.subarray(i+o)}}},_int:{encode(r){let{Err:e}=Zs;if(r<to)throw new e("integer: negative integers are not allowed");let t=yy(r);if(Number.parseInt(t[0],16)&8&&(t="00"+t),t.length&1)throw new e("unexpected DER parsing assertion: unpadded hex");return t},decode(r){let{Err:e}=Zs;if(r[0]&128)throw new e("invalid signature integer: negative");if(r[0]===0&&!(r[1]&128))throw new e("invalid signature integer: unnecessary leading zero");return qI(r)}},toSig(r){let{Err:e,_int:t,_tlv:i}=Zs,n=vt("signature",r),{v:s,l:o}=i.decode(48,n);if(o.length)throw new e("invalid signature: left bytes after parsing");let{v:a,l:c}=i.decode(2,s),{v:l,l:d}=i.decode(2,c);if(d.length)throw new e("invalid signature: left bytes after parsing");return{r:t.decode(a),s:t.decode(l)}},hexFromSig(r){let{_tlv:e,_int:t}=Zs,i=e.encode(2,t.encode(r.r)),n=e.encode(2,t.encode(r.s)),s=i+n;return e.encode(48,s)}},to=BigInt(0),Cd=BigInt(1),oU=BigInt(2),Cy=BigInt(3),EZ=BigInt(4);lU={p:BigInt("0xffffffff00000001000000000000000000000000ffffffffffffffffffffffff"),n:BigInt("0xffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551"),h:BigInt(1),a:BigInt("0xffffffff00000001000000000000000000000000fffffffffffffffffffffffc"),b:BigInt("0x5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604b"),Gx:BigInt("0x6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296"),Gy:BigInt("0x4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5")},dU={p:BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffff0000000000000000ffffffff"),n:BigInt("0xffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52973"),h:BigInt(1),a:BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffff0000000000000000fffffffc"),b:BigInt("0xb3312fa7e23ee7e4988e056be3f82d19181d9c6efe8141120314088f5013875ac656398d8a2ed19d2a85c8edd3ec2aef"),Gx:BigInt("0xaa87ca22be8b05378eb1c71ef320ad746e1d3b628ba79b9859f741e082542a385502f25dbf55296c3a545e3872760ab7"),Gy:BigInt("0x3617de4a96262c6f5d9e98bf9292dc29f8f41dbd289a147ce9da3113b5f0b8c00a60b1ce1d7e819d7a431d7c90ea0e5f")},uU={p:BigInt("0x1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"),n:BigInt("0x01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e91386409"),h:BigInt(1),a:BigInt("0x1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc"),b:BigInt("0x0051953eb9618e1c9a1f929a21a0b68540eea2da725b99b315f3b8b489918ef109e156193951ec7e937b1652c0bd3bb1bf073573df883d2c34f1ef451fd46b503f00"),Gx:BigInt("0x00c6858e06b70404e9cd9e3ecb662395b4429c648139053fb521f828af606b4d3dbaa14b5e77efe75928fe1dc127a2ffa8de3348b3c1856a429bf97e7e31c2e5bd66"),Gy:BigInt("0x011839296a789a3bc0045c8a5fb42c7d1bd998f54449579b446817afbd17273e662c97ee72995ef42640c550b9013fad0761353c7086a272c24088be94769fd16650")},_Z=Si(lU.p),FZ=Si(dU.p),PZ=Si(uU.p),TZ=Gc({...lU,Fp:_Z,lowS:!1},S1),UZ=Gc({...dU,Fp:FZ,lowS:!1},eU),RZ=Gc({...uU,Fp:PZ,lowS:!1,allowedPrivateKeyLengths:[130,131,132]},ZT);NZ=TZ;qZ=UZ;OZ=RZ,MZ=BigInt(0),Pf=BigInt(1),LZ=BigInt(2),HZ=BigInt(7),KZ=BigInt(256),GZ=BigInt(113),fU=[],AU=[],hU=[];for(let r=0,e=Pf,t=1,i=0;r<24;r++){[t,i]=[i,(2*t+3*i)%5],fU.push(2*(5*i+t)),AU.push((r+1)*(r+2)/2%64);let n=MZ;for(let s=0;s<7;s++)e=(e<<Pf^(e>>HZ)*GZ)%KZ,e&LZ&&(n^=Pf<<(Pf<<BigInt(s))-Pf);hU.push(n)}gU=WT(hU,!0),zZ=gU[0],JZ=gU[1],o6=(r,e,t)=>t>32?aZ(r,e,t):sZ(r,e,t),a6=(r,e,t)=>t>32?cZ(r,e,t):oZ(r,e,t);pI=class r extends tA{constructor(e,t,i,n=!1,s=24){if(super(),this.pos=0,this.posOut=0,this.finished=!1,this.destroyed=!1,this.enableXOF=!1,this.blockLen=e,this.suffix=t,this.outputLen=i,this.enableXOF=n,this.rounds=s,eA(i),!(0<e&&e<200))throw new Error("only keccak-f1600 function is supported");this.state=new Uint8Array(200),this.state32=NX(this.state)}clone(){return this._cloneInto()}keccak(){$5(this.state32),jZ(this.state32,this.rounds),$5(this.state32),this.posOut=0,this.pos=0}update(e){_d(this),e=yA(e),hs(e);let{blockLen:t,state:i}=this,n=e.length;for(let s=0;s<n;){let o=Math.min(t-this.pos,n-s);for(let a=0;a<o;a++)i[this.pos++]^=e[s++];this.pos===t&&this.keccak()}return this}finish(){if(this.finished)return;this.finished=!0;let{state:e,suffix:t,pos:i,blockLen:n}=this;e[i]^=t,(t&128)!==0&&i===n-1&&this.keccak(),e[n-1]^=128,this.keccak()}writeInto(e){_d(this,!1),hs(e),this.finish();let t=this.state,{blockLen:i}=this;for(let n=0,s=e.length;n<s;){this.posOut>=i&&this.keccak();let o=Math.min(i-this.posOut,s-n);e.set(t.subarray(this.posOut,this.posOut+o),n),this.posOut+=o,n+=o}return e}xofInto(e){if(!this.enableXOF)throw new Error("XOF is not possible for this instance");return this.writeInto(e)}xof(e){return eA(e),this.xofInto(new Uint8Array(e))}digestInto(e){if(TT(e,this),this.finished)throw new Error("digest() was already called");return this.writeInto(e),this.destroy(),e}digest(){return this.digestInto(new Uint8Array(this.outputLen))}destroy(){this.destroyed=!0,cn(this.state)}_cloneInto(e){let{blockLen:t,suffix:i,outputLen:n,rounds:s,enableXOF:o}=this;return e||(e=new r(t,i,n,o,s)),e.state32.set(this.state32),e.pos=this.pos,e.posOut=this.posOut,e.finished=this.finished,e.rounds=s,e.suffix=i,e.outputLen=n,e.enableXOF=o,e.destroyed=this.destroyed,e}},pU=(r,e,t)=>lo(()=>new pI(e,r,t)),$Z=pU(6,136,256/8),VZ=pU(6,72,512/8),YZ=(r,e,t)=>KX((i={})=>new pI(e,r,i.dkLen===void 0?t:i.dkLen,!0)),WZ=YZ(31,136,256/8);da=BigInt(0),Er=BigInt(1),nB=BigInt(2),XZ=BigInt(8);Tf=BigInt(0),ld=BigInt(1),Ey=BigInt(2);zc={p:BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffff"),n:BigInt("0x3fffffffffffffffffffffffffffffffffffffffffffffffffffffff7cca23e9c44edb49aed63690216cc2728dc58f552378c292ab5844f3"),h:BigInt(4),a:BigInt(1),d:BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffffffffffffffffffffffffffffffffffff6756"),Gx:BigInt("0x4f1970c66bed0ded221d15a622bf36da9e146570470f1767ea6de324a3d3a46412ae1af72ab66511433b80e18b00938e2626a82bc70cc05e"),Gy:BigInt("0x693f46716eb6bc248876203756c9c7624bea73736ca3984087789c1e05a0c2d73ad3ff1ce67c39c4fdbd132c4ed7c8ad9808795bf230fa14")},oee=Object.assign({},zc,{d:BigInt("0xd78b4bdc7f0daf19f24f38c29373a2ccad46157242a50f37809b1da3412a12e79ccc9c81264cfe9ad080997058fb61c4243cc32dbaa156b9"),Gx:BigInt("0x79a70b2b70400553ae7c9df416c792c61128751ac92969240c25a07d728bdc93e21f7787ed6972249de732f38496cd11698713093e9c04fc"),Gy:BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000000000000000000000000000000000000000000000000001")}),aee=lo(()=>WZ.create({dkLen:114})),cee=BigInt(1),GB=BigInt(2),c6=BigInt(3);BigInt(4);lee=BigInt(11),dee=BigInt(22),l6=BigInt(44),uee=BigInt(88),fee=BigInt(223);hee=Si(zc.p,{BITS:456,isLE:!0}),d6=Si(zc.n,{BITS:456,isLE:!0});pee={...zc,Fp:hee,Fn:d6,nBitLength:d6.BITS,hash:aee,adjustScalarBytes:IU,domain:gee,uvRatio:Aee},mee=iee(pee);mU(oee);yee=(()=>{let r=zc.p;return see({P:r,type:"x448",powPminus2:e=>{let t=yU(e),i=bt(t,GB,r);return pr(i*e,r)},adjustScalarBytes:IU})})();D1={p:BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),n:BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),h:BigInt(1),a:BigInt(0),b:BigInt(7),Gx:BigInt("0x79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798"),Gy:BigInt("0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8")},Iee={beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),basises:[[BigInt("0x3086d221a7d46bcde86c90e49284eb15"),-BigInt("0xe4437ed6010e88286f547fa90abfe4c3")],[BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),BigInt("0x3086d221a7d46bcde86c90e49284eb15")]]},u6=BigInt(2);zB=Si(D1.p,{sqrt:wee}),xee=Gc({...D1,Fp:zB,lowS:!0,endo:Iee},S1),wU=S1,Cee=yZ,xU=Si(BigInt("0xa9fb57dba1eea9bc3e660a909d838d726e3bf623d52620282013481d1f6e5377")),Eee=xU.create(BigInt("0x7d5a0975fc2c3057eef67530417affe7fb8055c126dc5c6ce94a4b44f330b5d9")),Bee=BigInt("0x26dc5c6ce94a4b44f330b5d9bbd77cbf958416295cf7e1ce6bccdc18ff8c07b6"),bee=Gc({a:Eee,b:Bee,Fp:xU,n:BigInt("0xa9fb57dba1eea9bc3e660a909d838d718c397aa3b561a6f7901e0e82974856a7"),Gx:BigInt("0x8bd2aeb9cb7e57cb2c4b482ffc81b7afb9de27e1e3bd23c23a4453bd9ace3262"),Gy:BigInt("0x547ef835c3dac4fd97f8461a14611dc9c27745132ded8e545c1d54c72f046997"),h:BigInt(1),lowS:!1},wU),CU=ZT,EU=eU,BU=Si(BigInt("0x8cb91e82a3386d280f5d6f7e50e641df152f7109ed5456b412b1da197fb71123acd3a729901d1a71874700133107ec53")),vee=BU.create(BigInt("0x7bc382c63d8c150c3c72080ace05afa0c2bea28e4fb22787139165efba91f90f8aa5814a503ad4eb04a8c7dd22ce2826")),kee=BigInt("0x04a8c7dd22ce28268b39b55416f0447c2fb77de107dcd2a62e880ea53eeb62d57cb4390295dbc9943ab78696fa504c11"),See=Gc({a:vee,b:kee,Fp:BU,n:BigInt("0x8cb91e82a3386d280f5d6f7e50e641df152f7109ed5456b31f166e6cac0425a7cf3ab6af6b7fc3103b883202e9046565"),Gx:BigInt("0x1d1c64f068cf45ffa2a63a81b7c13f6b8847a3e77ef14fe3db7fcafe0cbd10e8e826e03436d646aaef87b2e247d4af1e"),Gy:BigInt("0x8abe1d7520f9c2a45cb1eb8e95cfd55262b70b29feec5864e19c054ff99129280e4646217791811142820341263c5315"),h:BigInt(1),lowS:!1},EU),bU=Si(BigInt("0xaadd9db8dbe9c48b3fd4e6ae33c9fc07cb308db3b3c9d20ed6639cca703308717d4d9b009bc66842aecda12ae6a380e62881ff2f2d82c68528aa6056583a48f3")),Dee=bU.create(BigInt("0x7830a3318b603b89e2327145ac234cc594cbdd8d3df91610a83441caea9863bc2ded5d5aa8253aa10a2ef1c98b9ac8b57f1117a72bf2c7b9e7c1ac4d77fc94ca")),Qee=BigInt("0x3df91610a83441caea9863bc2ded5d5aa8253aa10a2ef1c98b9ac8b57f1117a72bf2c7b9e7c1ac4d77fc94cadc083e67984050b75ebae5dd2809bd638016f723"),_ee=Gc({a:Dee,b:Qee,Fp:bU,n:BigInt("0xaadd9db8dbe9c48b3fd4e6ae33c9fc07cb308db3b3c9d20ed6639cca70330870553e5c414ca92619418661197fac10471db1d381085ddaddb58796829ca90069"),Gx:BigInt("0x81aee4bdd82ed9645a21322e9c4c6a9385ed9f70b5d916c1b43b62eef4d0098eff3b1f78e2d0d48d50d1687b93b97d5f7c6d5047406a5e688b352209bcb9f822"),Gy:BigInt("0x7dde385d566332ecc0eabfa9cf7822fdf209f70024a57b1aa000c55b881f8111b2dcde494a5f485e5bca4bd88a2763aed1ca2b2fa8f0540678cd1e0f3ad80892"),h:BigInt(1),lowS:!1},CU),Fee=new Map(Object.entries({nistP256:NZ,nistP384:qZ,nistP521:OZ,brainpoolP256r1:bee,brainpoolP384r1:See,brainpoolP512r1:_ee,secp256k1:xee,x448:yee,ed448:mee})),Pee=Object.freeze({__proto__:null,nobleCurves:Fee}),Uf=Uint32Array.from([1732584193,4023233417,2562383102,271733878,3285377520]),ua=new Uint32Array(80),JB=class extends Lc{constructor(){super(64,20,8,!1),this.A=Uf[0]|0,this.B=Uf[1]|0,this.C=Uf[2]|0,this.D=Uf[3]|0,this.E=Uf[4]|0}get(){let{A:e,B:t,C:i,D:n,E:s}=this;return[e,t,i,n,s]}set(e,t,i,n,s){this.A=e|0,this.B=t|0,this.C=i|0,this.D=n|0,this.E=s|0}process(e,t){for(let c=0;c<16;c++,t+=4)ua[c]=e.getUint32(t,!1);for(let c=16;c<80;c++)ua[c]=ya(ua[c-3]^ua[c-8]^ua[c-14]^ua[c-16],1);let{A:i,B:n,C:s,D:o,E:a}=this;for(let c=0;c<80;c++){let l,d;c<20?(l=VT(n,s,o),d=1518500249):c<40?(l=n^s^o,d=1859775393):c<60?(l=YT(n,s,o),d=2400959708):(l=n^s^o,d=3395469782);let u=ya(i,5)+l+a+d+ua[c]|0;a=o,o=s,s=ya(n,30),n=i,i=u}i=i+this.A|0,n=n+this.B|0,s=s+this.C|0,o=o+this.D|0,a=a+this.E|0,this.set(i,n,s,o,a)}roundClean(){cn(ua)}destroy(){this.set(0,0,0,0,0),cn(this.buffer)}},Tee=lo(()=>new JB),Uee=Uint8Array.from([7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8]),vU=Uint8Array.from(new Array(16).fill(0).map((r,e)=>e)),Ree=vU.map(r=>(9*r+5)%16),kU=(()=>{let t=[[vU],[Ree]];for(let i=0;i<4;i++)for(let n of t)n.push(n[i].map(s=>Uee[s]));return t})(),SU=kU[0],DU=kU[1],QU=[[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8],[12,13,11,15,6,9,9,7,12,15,11,13,7,8,7,7],[13,15,14,11,7,7,6,8,13,14,13,12,5,5,6,9],[14,11,12,14,8,6,5,5,15,12,15,14,9,9,8,6],[15,12,13,13,9,5,8,6,14,11,12,11,8,6,5,5]].map(r=>Uint8Array.from(r)),Nee=SU.map((r,e)=>r.map(t=>QU[e][t])),qee=DU.map((r,e)=>r.map(t=>QU[e][t])),Oee=Uint32Array.from([0,1518500249,1859775393,2400959708,2840853838]),Mee=Uint32Array.from([1352829926,1548603684,1836072691,2053994217,0]);By=new Uint32Array(16),jB=class extends Lc{constructor(){super(64,20,8,!0),this.h0=1732584193,this.h1=-271733879,this.h2=-1732584194,this.h3=271733878,this.h4=-1009589776}get(){let{h0:e,h1:t,h2:i,h3:n,h4:s}=this;return[e,t,i,n,s]}set(e,t,i,n,s){this.h0=e|0,this.h1=t|0,this.h2=i|0,this.h3=n|0,this.h4=s|0}process(e,t){for(let h=0;h<16;h++,t+=4)By[h]=e.getUint32(t,!0);let i=this.h0|0,n=i,s=this.h1|0,o=s,a=this.h2|0,c=a,l=this.h3|0,d=l,u=this.h4|0,f=u;for(let h=0;h<5;h++){let g=4-h,p=Oee[h],I=Mee[h],y=SU[h],w=DU[h],C=Nee[h],b=qee[h];for(let x=0;x<16;x++){let _=ya(i+f6(h,s,a,l)+By[y[x]]+p,C[x])+u|0;i=u,u=l,l=ya(a,10)|0,a=s,s=_}for(let x=0;x<16;x++){let _=ya(n+f6(g,o,c,d)+By[w[x]]+I,b[x])+f|0;n=f,f=d,d=ya(c,10)|0,c=o,o=_}}this.set(this.h1+a+d|0,this.h2+l+f|0,this.h3+u+n|0,this.h4+i+o|0,this.h0+s+c|0)}roundClean(){cn(By)}destroy(){this.destroyed=!0,cn(this.buffer),this.set(0,0,0,0,0)}},Lee=lo(()=>new jB),Hee=Tee,Kee=Lee,Gee=Array.from({length:64},(r,e)=>Math.floor(2**32*Math.abs(Math.sin(e+1)))),A6=(r,e,t)=>r&e^~r&t,by=new Uint32Array([1732584193,4023233417,2562383102,271733878]),sB=new Uint32Array(16),$B=class extends Lc{constructor(){super(64,16,8,!0),this.A=by[0]|0,this.B=by[1]|0,this.C=by[2]|0,this.D=by[3]|0}get(){let{A:e,B:t,C:i,D:n}=this;return[e,t,i,n]}set(e,t,i,n){this.A=e|0,this.B=t|0,this.C=i|0,this.D=n|0}process(e,t){for(let a=0;a<16;a++,t+=4)sB[a]=e.getUint32(t,!0);let{A:i,B:n,C:s,D:o}=this;for(let a=0;a<64;a++){let c,l,d;a<16?(c=A6(n,s,o),l=a,d=[7,12,17,22]):a<32?(c=A6(o,n,s),l=(5*a+1)%16,d=[5,9,14,20]):a<48?(c=n^s^o,l=(3*a+5)%16,d=[4,11,16,23]):(c=s^(n|~o),l=7*a%16,d=[6,10,15,21]),c=c+i+Gee[a]+sB[l],i=o,o=s,s=n,n=n+ya(c,d[a%4])}i=i+this.A|0,n=n+this.B|0,s=s+this.C|0,o=o+this.D|0,this.set(i,n,s,o)}roundClean(){sB.fill(0)}destroy(){this.set(0,0,0,0),this.buffer.fill(0)}},zee=GX(()=>new $B),Jee=new Map(Object.entries({md5:zee,sha1:Hee,sha224:Cee,sha256:wU,sha384:EU,sha512:CU,sha3_256:$Z,sha3_512:VZ,ripemd160:Kee})),jee=Object.freeze({__proto__:null,nobleHashes:Jee}),oB=Mi&&typeof Mi=="object"&&"webcrypto"in Mi?Mi.webcrypto:void 0,ki={},Pe=function(r){var e,t=new Float64Array(16);if(r)for(e=0;e<r.length;e++)t[e]=r[e];return t},Q1=function(){throw new Error("no PRNG")},_U=new Uint8Array(32);_U[0]=9;VB=Pe(),mI=Pe([1]),$ee=Pe([56129,1]),Vee=Pe([30883,4953,19914,30187,55467,16705,2637,112,59544,30585,16505,36039,65139,11119,27886,20995]),Yee=Pe([61785,9906,39828,60374,45398,33411,5274,224,53552,61171,33010,6542,64743,22239,55772,9222]),h6=Pe([54554,36645,11616,51542,42930,38181,51040,26924,56412,64982,57905,49316,21502,52590,14035,8553]),g6=Pe([26200,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214]),Wee=Pe([41136,18958,6951,50414,58488,44335,6150,12099,55207,15867,153,11085,57099,20417,9344,11139]);y6=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591];cB=new Float64Array([237,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16]);x6=32,nte=32,LU=32,HU=32,Dc=64,OI=32,MI=64,ste=32;ki.scalarMult=function(r,e){if(Rd(r,e),r.length!==nte)throw new Error("bad n size");if(e.length!==x6)throw new Error("bad p size");var t=new Uint8Array(x6);return RU(t,r,e),t};ki.box={};ki.box.keyPair=function(){var r=new Uint8Array(LU),e=new Uint8Array(HU);return ete(r,e),{publicKey:r,secretKey:e}};ki.box.keyPair.fromSecretKey=function(r){if(Rd(r),r.length!==HU)throw new Error("bad secret key size");var e=new Uint8Array(LU);return NU(e,r),{publicKey:e,secretKey:new Uint8Array(r)}};ki.sign=function(r,e){if(Rd(r,e),e.length!==MI)throw new Error("bad secret key size");var t=new Uint8Array(Dc+r.length);return tte(t,r,r.length,e),t};ki.sign.detached=function(r,e){for(var t=ki.sign(r,e),i=new Uint8Array(Dc),n=0;n<i.length;n++)i[n]=t[n];return i};ki.sign.detached.verify=function(r,e,t){if(Rd(r,e,t),e.length!==Dc)throw new Error("bad signature size");if(t.length!==OI)throw new Error("bad public key size");var i=new Uint8Array(Dc+r.length),n=new Uint8Array(Dc+r.length),s;for(s=0;s<Dc;s++)i[s]=e[s];for(s=0;s<r.length;s++)i[s+Dc]=r[s];return ite(n,i,i.length,t)>=0};ki.sign.keyPair=function(){var r=new Uint8Array(OI),e=new Uint8Array(MI);return OU(r,e),{publicKey:r,secretKey:e}};ki.sign.keyPair.fromSecretKey=function(r){if(Rd(r),r.length!==MI)throw new Error("bad secret key size");for(var e=new Uint8Array(OI),t=0;t<e.length;t++)e[t]=r[32+t];return{publicKey:e,secretKey:new Uint8Array(r)}};ki.sign.keyPair.fromSeed=function(r){if(Rd(r),r.length!==ste)throw new Error("bad seed size");for(var e=new Uint8Array(OI),t=new Uint8Array(MI),i=0;i<32;i++)t[i]=r[i];return OU(e,t,!0),{publicKey:e,secretKey:t}};ki.setPRNG=function(r){Q1=r};(function(){if(oB&&oB.getRandomValues){var r=65536;ki.setPRNG(function(e,t){var i,n=new Uint8Array(t);for(i=0;i<t;i+=r)oB.getRandomValues(n.subarray(i,i+Math.min(t-i,r)));for(i=0;i<t;i++)e[i]=n[i];ote(n)})}})();Jc=Object.freeze({__proto__:null,default:ki});nA.keySize=nA.prototype.keySize=24;nA.blockSize=nA.prototype.blockSize=8;sA.blockSize=sA.prototype.blockSize=8;sA.keySize=sA.prototype.keySize=16;tn=4294967295;oA.keySize=oA.prototype.keySize=32;oA.blockSize=oA.prototype.blockSize=16;Pn.prototype.BLOCKSIZE=8;Pn.prototype.SBOXES=[[3509652390,2564797868,805139163,3491422135,3101798381,1780907670,3128725573,4046225305,614570311,3012652279,134345442,2240740374,1667834072,1901547113,2757295779,4103290238,227898511,1921955416,1904987480,2182433518,2069144605,3260701109,2620446009,720527379,3318853667,677414384,3393288472,3101374703,2390351024,1614419982,1822297739,2954791486,3608508353,3174124327,2024746970,1432378464,3864339955,2857741204,1464375394,1676153920,1439316330,715854006,3033291828,289532110,2706671279,2087905683,3018724369,1668267050,732546397,1947742710,3462151702,2609353502,2950085171,1814351708,2050118529,680887927,999245976,1800124847,3300911131,1713906067,1641548236,4213287313,1216130144,1575780402,4018429277,3917837745,3693486850,3949271944,596196993,3549867205,258830323,2213823033,772490370,2760122372,1774776394,2652871518,566650946,4142492826,1728879713,2882767088,1783734482,3629395816,2517608232,2874225571,1861159788,326777828,3124490320,2130389656,2716951837,967770486,1724537150,2185432712,2364442137,1164943284,2105845187,998989502,3765401048,2244026483,1075463327,1455516326,1322494562,910128902,469688178,1117454909,936433444,3490320968,3675253459,1240580251,122909385,2157517691,634681816,4142456567,3825094682,3061402683,2540495037,79693498,3249098678,1084186820,1583128258,426386531,1761308591,1047286709,322548459,995290223,1845252383,2603652396,3431023940,2942221577,3202600964,3727903485,1712269319,422464435,3234572375,1170764815,3523960633,3117677531,1434042557,442511882,3600875718,1076654713,1738483198,4213154764,2393238008,3677496056,1014306527,4251020053,793779912,2902807211,842905082,4246964064,1395751752,1040244610,2656851899,3396308128,445077038,3742853595,3577915638,679411651,2892444358,2354009459,1767581616,3150600392,3791627101,3102740896,284835224,4246832056,1258075500,768725851,2589189241,3069724005,3532540348,1274779536,3789419226,2764799539,1660621633,3471099624,4011903706,913787905,3497959166,737222580,2514213453,2928710040,3937242737,1804850592,3499020752,2949064160,2386320175,2390070455,2415321851,4061277028,2290661394,2416832540,1336762016,1754252060,3520065937,3014181293,791618072,3188594551,3933548030,2332172193,3852520463,3043980520,413987798,3465142937,3030929376,4245938359,2093235073,3534596313,375366246,2157278981,2479649556,555357303,3870105701,2008414854,3344188149,4221384143,3956125452,2067696032,3594591187,2921233993,2428461,544322398,577241275,1471733935,610547355,4027169054,1432588573,1507829418,2025931657,3646575487,545086370,48609733,2200306550,1653985193,298326376,1316178497,3007786442,2064951626,458293330,2589141269,3591329599,3164325604,727753846,2179363840,146436021,1461446943,4069977195,705550613,3059967265,3887724982,4281599278,3313849956,1404054877,2845806497,146425753,1854211946],[1266315497,3048417604,3681880366,3289982499,290971e4,1235738493,2632868024,2414719590,3970600049,1771706367,1449415276,3266420449,422970021,1963543593,2690192192,3826793022,1062508698,1531092325,1804592342,2583117782,2714934279,4024971509,1294809318,4028980673,1289560198,2221992742,1669523910,35572830,157838143,1052438473,1016535060,1802137761,1753167236,1386275462,3080475397,2857371447,1040679964,2145300060,2390574316,1461121720,2956646967,4031777805,4028374788,33600511,2920084762,1018524850,629373528,3691585981,3515945977,2091462646,2486323059,586499841,988145025,935516892,3367335476,2599673255,2839830854,265290510,3972581182,2759138881,3795373465,1005194799,847297441,406762289,1314163512,1332590856,1866599683,4127851711,750260880,613907577,1450815602,3165620655,3734664991,3650291728,3012275730,3704569646,1427272223,778793252,1343938022,2676280711,2052605720,1946737175,3164576444,3914038668,3967478842,3682934266,1661551462,3294938066,4011595847,840292616,3712170807,616741398,312560963,711312465,1351876610,322626781,1910503582,271666773,2175563734,1594956187,70604529,3617834859,1007753275,1495573769,4069517037,2549218298,2663038764,504708206,2263041392,3941167025,2249088522,1514023603,1998579484,1312622330,694541497,2582060303,2151582166,1382467621,776784248,2618340202,3323268794,2497899128,2784771155,503983604,4076293799,907881277,423175695,432175456,1378068232,4145222326,3954048622,3938656102,3820766613,2793130115,2977904593,26017576,3274890735,3194772133,1700274565,1756076034,4006520079,3677328699,720338349,1533947780,354530856,688349552,3973924725,1637815568,332179504,3949051286,53804574,2852348879,3044236432,1282449977,3583942155,3416972820,4006381244,1617046695,2628476075,3002303598,1686838959,431878346,2686675385,1700445008,1080580658,1009431731,832498133,3223435511,2605976345,2271191193,2516031870,1648197032,4164389018,2548247927,300782431,375919233,238389289,3353747414,2531188641,2019080857,1475708069,455242339,2609103871,448939670,3451063019,1395535956,2413381860,1841049896,1491858159,885456874,4264095073,4001119347,1565136089,3898914787,1108368660,540939232,1173283510,2745871338,3681308437,4207628240,3343053890,4016749493,1699691293,1103962373,3625875870,2256883143,3830138730,1031889488,3479347698,1535977030,4236805024,3251091107,2132092099,1774941330,1199868427,1452454533,157007616,2904115357,342012276,595725824,1480756522,206960106,497939518,591360097,863170706,2375253569,3596610801,1814182875,2094937945,3421402208,1082520231,3463918190,2785509508,435703966,3908032597,1641649973,2842273706,3305899714,1510255612,2148256476,2655287854,3276092548,4258621189,236887753,3681803219,274041037,1734335097,3815195456,3317970021,1899903192,1026095262,4050517792,356393447,2410691914,3873677099,3682840055],[3913112168,2491498743,4132185628,2489919796,1091903735,1979897079,3170134830,3567386728,3557303409,857797738,1136121015,1342202287,507115054,2535736646,337727348,3213592640,1301675037,2528481711,1895095763,1721773893,3216771564,62756741,2142006736,835421444,2531993523,1442658625,3659876326,2882144922,676362277,1392781812,170690266,3921047035,1759253602,3611846912,1745797284,664899054,1329594018,3901205900,3045908486,2062866102,2865634940,3543621612,3464012697,1080764994,553557557,3656615353,3996768171,991055499,499776247,1265440854,648242737,3940784050,980351604,3713745714,1749149687,3396870395,4211799374,3640570775,1161844396,3125318951,1431517754,545492359,4268468663,3499529547,1437099964,2702547544,3433638243,2581715763,2787789398,1060185593,1593081372,2418618748,4260947970,69676912,2159744348,86519011,2512459080,3838209314,1220612927,3339683548,133810670,1090789135,1078426020,1569222167,845107691,3583754449,4072456591,1091646820,628848692,1613405280,3757631651,526609435,236106946,48312990,2942717905,3402727701,1797494240,859738849,992217954,4005476642,2243076622,3870952857,3732016268,765654824,3490871365,2511836413,1685915746,3888969200,1414112111,2273134842,3281911079,4080962846,172450625,2569994100,980381355,4109958455,2819808352,2716589560,2568741196,3681446669,3329971472,1835478071,660984891,3704678404,4045999559,3422617507,3040415634,1762651403,1719377915,3470491036,2693910283,3642056355,3138596744,1364962596,2073328063,1983633131,926494387,3423689081,2150032023,4096667949,1749200295,3328846651,309677260,2016342300,1779581495,3079819751,111262694,1274766160,443224088,298511866,1025883608,3806446537,1145181785,168956806,3641502830,3584813610,1689216846,3666258015,3200248200,1692713982,2646376535,4042768518,1618508792,1610833997,3523052358,4130873264,2001055236,3610705100,2202168115,4028541809,2961195399,1006657119,2006996926,3186142756,1430667929,3210227297,1314452623,4074634658,4101304120,2273951170,1399257539,3367210612,3027628629,1190975929,2062231137,2333990788,2221543033,2438960610,1181637006,548689776,2362791313,3372408396,3104550113,3145860560,296247880,1970579870,3078560182,3769228297,1714227617,3291629107,3898220290,166772364,1251581989,493813264,448347421,195405023,2709975567,677966185,3703036547,1463355134,2715995803,1338867538,1343315457,2802222074,2684532164,233230375,2599980071,2000651841,3277868038,1638401717,4028070440,3237316320,6314154,819756386,300326615,590932579,1405279636,3267499572,3150704214,2428286686,3959192993,3461946742,1862657033,1266418056,963775037,2089974820,2263052895,1917689273,448879540,3550394620,3981727096,150775221,3627908307,1303187396,508620638,2975983352,2726630617,1817252668,1876281319,1457606340,908771278,3720792119,3617206836,2455994898,1729034894,1080033504],[976866871,3556439503,2881648439,1522871579,1555064734,1336096578,3548522304,2579274686,3574697629,3205460757,3593280638,3338716283,3079412587,564236357,2993598910,1781952180,1464380207,3163844217,3332601554,1699332808,1393555694,1183702653,3581086237,1288719814,691649499,2847557200,2895455976,3193889540,2717570544,1781354906,1676643554,2592534050,3230253752,1126444790,2770207658,2633158820,2210423226,2615765581,2414155088,3127139286,673620729,2805611233,1269405062,4015350505,3341807571,4149409754,1057255273,2012875353,2162469141,2276492801,2601117357,993977747,3918593370,2654263191,753973209,36408145,2530585658,25011837,3520020182,2088578344,530523599,2918365339,1524020338,1518925132,3760827505,3759777254,1202760957,3985898139,3906192525,674977740,4174734889,2031300136,2019492241,3983892565,4153806404,3822280332,352677332,2297720250,60907813,90501309,3286998549,1016092578,2535922412,2839152426,457141659,509813237,4120667899,652014361,1966332200,2975202805,55981186,2327461051,676427537,3255491064,2882294119,3433927263,1307055953,942726286,933058658,2468411793,3933900994,4215176142,1361170020,2001714738,2830558078,3274259782,1222529897,1679025792,2729314320,3714953764,1770335741,151462246,3013232138,1682292957,1483529935,471910574,1539241949,458788160,3436315007,1807016891,3718408830,978976581,1043663428,3165965781,1927990952,4200891579,2372276910,3208408903,3533431907,1412390302,2931980059,4132332400,1947078029,3881505623,4168226417,2941484381,1077988104,1320477388,886195818,18198404,3786409e3,2509781533,112762804,3463356488,1866414978,891333506,18488651,661792760,1628790961,3885187036,3141171499,876946877,2693282273,1372485963,791857591,2686433993,3759982718,3167212022,3472953795,2716379847,445679433,3561995674,3504004811,3574258232,54117162,3331405415,2381918588,3769707343,4154350007,1140177722,4074052095,668550556,3214352940,367459370,261225585,2610173221,4209349473,3468074219,3265815641,314222801,3066103646,3808782860,282218597,3406013506,3773591054,379116347,1285071038,846784868,2669647154,3771962079,3550491691,2305946142,453669953,1268987020,3317592352,3279303384,3744833421,2610507566,3859509063,266596637,3847019092,517658769,3462560207,3443424879,370717030,4247526661,2224018117,4143653529,4112773975,2788324899,2477274417,1456262402,2901442914,1517677493,1846949527,2295493580,3734397586,2176403920,1280348187,1908823572,3871786941,846861322,1172426758,3287448474,3383383037,1655181056,3139813346,901632758,1897031941,2986607138,3066810236,3447102507,1393639104,373351379,950779232,625454576,3124240540,4148612726,2007998917,544563296,2244738638,2330496472,2058025392,1291430526,424198748,50039436,29584100,3605783033,2429876329,2791104160,1057563949,3255363231,3075367218,3463963227,1469046755,985887462]];Pn.prototype.PARRAY=[608135816,2242054355,320440878,57701188,2752067618,698298832,137296536,3964562569,1160258022,953160567,3193202383,887688300,3232508343,3380367581,1065670069,3041331479,2450970073,2306472731];Pn.prototype.NN=16;Pn.prototype._clean=function(r){return r<0&&(r=(r&2147483647)+2147483648),r};Pn.prototype._F=function(r){let e,t=r&255;r>>>=8;let i=r&255;r>>>=8;let n=r&255;r>>>=8;let s=r&255;return e=this.sboxes[0][s]+this.sboxes[1][n],e^=this.sboxes[2][i],e+=this.sboxes[3][t],e};Pn.prototype._encryptBlock=function(r){let e=r[0],t=r[1],i;for(i=0;i<this.NN;++i){e^=this.parray[i],t=this._F(e)^t;let n=e;e=t,t=n}e^=this.parray[this.NN+0],t^=this.parray[this.NN+1],r[0]=this._clean(t),r[1]=this._clean(e)};Pn.prototype.encryptBlock=function(r){let e,t=[0,0],i=this.BLOCKSIZE/2;for(e=0;e<this.BLOCKSIZE/2;++e)t[0]=t[0]<<8|r[e+0]&255,t[1]=t[1]<<8|r[e+i]&255;this._encryptBlock(t);let n=[];for(e=0;e<this.BLOCKSIZE/2;++e)n[e+0]=t[0]>>>24-8*e&255,n[e+i]=t[1]>>>24-8*e&255;return n};Pn.prototype._decryptBlock=function(r){let e=r[0],t=r[1],i;for(i=this.NN+1;i>1;--i){e^=this.parray[i],t=this._F(e)^t;let n=e;e=t,t=n}e^=this.parray[1],t^=this.parray[0],r[0]=this._clean(t),r[1]=this._clean(e)};Pn.prototype.init=function(r){let e,t=0;for(this.parray=[],e=0;e<this.NN+2;++e){let n=0;for(let s=0;s<4;++s)n=n<<8|r[t]&255,++t>=r.length&&(t=0);this.parray[e]=this.PARRAY[e]^n}for(this.sboxes=[],e=0;e<4;++e)for(this.sboxes[e]=[],t=0;t<256;++t)this.sboxes[e][t]=this.SBOXES[e][t];let i=[0,0];for(e=0;e<this.NN+2;e+=2)this._encryptBlock(i),this.parray[e+0]=i[0],this.parray[e+1]=i[1];for(e=0;e<4;++e)for(t=0;t<256;t+=2)this._encryptBlock(i),this.sboxes[e][t+0]=i[0],this.sboxes[e][t+1]=i[1]};aA.keySize=aA.prototype.keySize=16;aA.blockSize=aA.prototype.blockSize=8;ute=new Map(Object.entries({tripledes:nA,cast5:sA,twofish:oA,blowfish:aA})),fte=Object.freeze({__proto__:null,legacyCiphers:ute});KU=new Uint32Array([4089235720,1779033703,2227873595,3144134277,4271175723,1013904242,1595750129,2773480762,2917565137,1359893119,725511199,2600822924,4215389547,528734635,327033209,1541459225]),Yr=new Uint8Array([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3,11,8,12,0,5,2,15,13,10,14,3,6,7,1,9,4,7,9,3,1,13,12,11,14,2,6,5,10,4,0,15,8,9,0,5,7,2,4,10,15,14,1,11,12,6,8,3,13,2,12,6,10,0,11,8,3,4,13,7,5,15,14,1,9,12,5,1,15,14,13,4,10,0,7,6,3,9,2,8,11,13,11,7,14,12,1,3,9,5,0,15,4,8,6,2,10,6,15,14,9,11,3,0,8,12,2,13,7,1,4,10,5,10,2,8,4,7,6,1,5,15,11,9,14,3,12,13,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3].map(r=>r*2));XB=class{constructor(e,t,i,n){let s=new Uint8Array(64);this.S={b:new Uint8Array(Rf),h:new Uint32Array(ZB/4),t0:new Uint32Array(2),c:0,outlen:e},s[0]=e,t&&(s[1]=t.length),s[2]=1,s[3]=1,i&&s.set(i,32),n&&s.set(n,48);let o=new Uint32Array(s.buffer,s.byteOffset,s.length/Uint32Array.BYTES_PER_ELEMENT);for(let a=0;a<16;a++)this.S.h[a]=KU[a]^o[a];if(t){let a=new Uint8Array(Rf);a.set(t),this.update(a)}}update(e){if(!(e instanceof Uint8Array))throw new Error("Input must be Uint8Array or Buffer");let t=0;for(;t<e.length;){this.S.c===Rf&&(C6(this.S.t0,this.S.c),E6(this.S,!1),this.S.c=0);let i=Rf-this.S.c;this.S.b.set(e.subarray(t,t+i),this.S.c);let n=Math.min(i,e.length-t);this.S.c+=n,t+=n}return this}digest(e){C6(this.S.t0,this.S.c),this.S.b.fill(0,this.S.c),this.S.c=Rf,E6(this.S,!0);let t=e||new Uint8Array(this.S.outlen);for(let i=0;i<this.S.outlen;i++)t[i]=this.S.h[i>>2]>>8*(i&3);return this.S.h=null,t.buffer}};ZB=64,Rf=128,P1=2,GU=19,Ate=4294967295,hte=4,gte=4294967295,pte=8,mte=4294967295,yte=8,Ite=4294967295,wte=4294967295,xte=32,Ys=1024,Cte=64,Ete=new Uint8Array(new Uint16Array([43981]).buffer)[0]===205;zU=1024,Ste=64*zU;Rte=async()=>Pte(r=>Tte(r),r=>Ute(r)),Nte=Object.freeze({__proto__:null,default:Rte});jU=Lte(),Hte=qte(jU),Kte=kV({__proto__:null,default:Hte},[jU])});function Gte(r){let e="",t=0,i=0;for(let n of r)for(i=i<<8|n,t+=8;t>=6;)t-=6,e+=VU[i>>t&63];return t>0&&(e+=VU[i<<6-t&63]),e}function WU(r){let e=atob(r),t=new Uint8Array(e.length);for(let i=0;i<e.length;i++)t[i]=e.charCodeAt(i);return t}function zte(r){let e="";for(let t of r)e+=String.fromCharCode(t);return btoa(e)}async function Jte(r){return new Uint8Array(await crypto.subtle.digest("SHA-256",r))}function XU(r,e){let t=WU(e),n=`$2a$10$${Gte(t).padEnd(22,".")}`;return YU.default.hashSync(r,n).slice(n.length)}async function wA(r,e){let t=await TI({armoredKey:r});return UI({privateKey:t,passphrase:e})}async function Nd(r,e){let t=await gA({armoredMessage:r}),{data:i}=await RI({message:t,decryptionKeys:e,format:"utf8"});return i}async function LI(r,e,t){let i=await DT({text:r});return QT({message:i,encryptionKeys:e,signingKeys:t?[t]:void 0,format:"armored"})}async function U1(r){let e=await Jte(new TextEncoder().encode(r));return zte(e)}async function ZU(r,e){let t=await gA({armoredMessage:r}),i=await _T({message:t,decryptionKeys:e});if(!i.length)throw new Error("failed to decrypt session key");return i[0]}async function eR(r,e){let t=await gA({binaryMessage:r}),{data:i}=await RI({message:t,sessionKeys:e,format:"binary"});return i}async function R1(r,e){if(!r)return 0;try{let t=WU(r),i=await gA({binaryMessage:t}),{data:n}=await RI({message:i,decryptionKeys:e,format:"binary"});return jte(n)}catch{return 0}}function jte(r){let e=0;for(;e<r.length;){let t=r[e++],i=t>>3,n=t&7;if(n===0){let s=0n,o=0n;for(;e<r.length;){let a=r[e++];if(s|=BigInt(a&127)<<o,(a&128)===0)break;o+=7n}if(i===1)return Number(s)}else if(n===2){let s=0,o=0;for(;e<r.length;){let a=r[e++];if(s|=(a&127)<<o,(a&128)===0)break;o+=7}e+=s}else if(n===1)e+=8;else if(n===5)e+=4;else break}return 0}var YU,VU,N1=j(()=>{"use strict";T1();YU=Qr(UE(),1),VU="./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"});async function tR(r,e,t){let i=r.find(a=>a.Primary===1)||r[0];if(!i)throw new Error("user has no keys");let n=t.find(a=>a.ID===i.ID);if(!n)throw new Error("no salt for user key");let s=XU(e,n.KeySalt),o=[];for(let a of r)try{o.push(await wA(a.PrivateKey,s))}catch{}if(o.length===0)throw new Error("failed to unlock user keys (wrong password?)");return{userKR:o,saltedKeyPass:s}}async function rR(r,e,t){let i=new Map;for(let n of r){let s=[];for(let o of n.Keys)try{if(o.Token){let a=await Nd(o.Token,e);s.push(await wA(o.PrivateKey,a))}else s.push(await wA(o.PrivateKey,t))}catch{}s.length>0&&i.set(n.ID,s)}return i}async function iR(r,e){let t=e.get(r.AddressID);if(!t)throw new Error("no address keyring for share");let i=await Nd(r.Passphrase,t),n=await wA(r.Key,i);return[...t,n]}var HI,nR=j(()=>{"use strict";TE();c5();N1();HI=class{constructor(e){this.addition=e}addition;accessToken="";refreshToken="";uid="";saltedKeyPass="";setAuth(e,t,i){this.accessToken=e,this.refreshToken=t,this.uid=i}getUID(){return this.uid}getSaltedKeyPass(){return this.saltedKeyPass}setSaltedKeyPass(e){this.saltedKeyPass=e}authHeaders(){let e={Accept:WP,"X-Pm-Appversion":e5,"X-Pm-Drive-Sdk-Version":XP,"User-Agent":ZP};return this.accessToken&&(e.Authorization=`Bearer ${this.accessToken}`,e["X-Pm-Uid"]=this.uid),e}async request(e,t={}){let i=t.method||"GET",n=this.authHeaders(),s={method:i,headers:n};t.body!==void 0&&(s.body=JSON.stringify(t.body),n["Content-Type"]="application/json");let o=await fetch(e,s),a=await o.text(),c={};try{c=a?JSON.parse(a):{}}catch{c={}}if(!o.ok)throw new Error(`Proton request failed: ${o.status} ${(c.Error||a).slice(0,200)}`);return c}async requestAPI(e,t={}){let i=e.startsWith("http")?e:`${ia}${e}`;if(t.params){let n=new URLSearchParams(Object.entries(t.params).map(([s,o])=>[s,String(o)])).toString();i+=(i.includes("?")?"&":"?")+n}return this.request(i,{method:t.method,body:t.body})}async login(){let e=await this.request(GP,{method:"POST",body:{Username:this.addition.email}});if(!e.Modulus||!e.ServerEphemeral)throw new Error("invalid auth info response");let t=await a5(this.addition.email,this.addition.password,e),i=await this.request(zP,{method:"POST",body:{Username:this.addition.email,ClientEphemeral:t.ClientEphemeral,ClientProof:t.ClientProof,SRPSession:t.SRPSession}});if(i.Code===1001||i.TwoFactor?.Enabled){if(!this.addition.two_fa_code)throw new Error("2FA is enabled but no two_fa_code provided");i=await this.request(JP,{method:"POST",body:{TwoFactorCode:this.addition.two_fa_code,SRPSession:t.SRPSession}})}if(!i.AccessToken||!i.UID)throw new Error(`auth failed: code=${i.Code}`);this.setAuth(i.AccessToken,i.RefreshToken,i.UID)}async refresh(){if(!this.refreshToken)throw new Error("refresh token is empty");let e=await this.request(jP,{method:"POST",body:{RefreshToken:this.refreshToken,ResponseType:"token",GrantType:"refresh_token",RedirectURI:"https://drive.proton.me"}});if(!e.AccessToken)throw new Error("refresh token failed");this.setAuth(e.AccessToken,e.RefreshToken||this.refreshToken,e.UID||this.uid)}async requestWithRetry(e,t){try{return await this.request(e,t)}catch(i){if(String(i.message).includes("401")&&this.refreshToken)return await this.refresh(),this.request(e,t);throw i}}async getSalts(){return(await this.requestWithRetry($P,{})).KeySalts||[]}async getUser(){return(await this.requestWithRetry(VP,{})).User}async getAddresses(){return(await this.requestWithRetry(`${ia}/core/v4/addresses`,{})).Addresses||[]}async getShares(){return(await this.requestWithRetry(YP,{})).Shares||[]}}});function oR(r){return r?new Date(r*1e3).toISOString():new Date().toISOString()}function $te(r){let e={...r||{}};return e.email=(e.email||"").trim(),e.password=(e.password||"").trim(),e.two_fa_code=(e.two_fa_code||"").trim(),e.root_folder_id=(e.root_folder_id||"").trim()||"root",e.use_reusable_login=!!e.use_reusable_login,e.chunk_size=e.chunk_size||"4",e.reusable_credential=(e.reusable_credential||"").trim(),e}function Vte(){let r=crypto.getRandomValues(new Uint8Array(16));return btoa(String.fromCharCode(...r))}var sR,KI,aR=j(()=>{"use strict";Be();He();TE();nR();N1();T1();sR=150;KI=class{addition;client;mainShare=null;mainShareKR=[];userKR=[];addrKRs=new Map;defaultAddrKR=[];defaultAddrID="";idCache=new Map;linkCache=new Map;nodeKRcache=new Map;childrenCache=new Map;constructor(e){this.addition=$te(e),this.client=new HI(this.addition)}async init(){if(!this.addition.email)throw new Error("email is required");if(!this.addition.password)throw new Error("password is required");await this.client.login();let e=await this.client.getSalts(),t=await this.client.getUser(),i=await this.client.getAddresses(),{userKR:n,saltedKeyPass:s}=await tR(t.Keys,this.addition.password,e);if(this.userKR=n,this.client.setSaltedKeyPass(s),this.addrKRs=await rR(i,this.userKR,s),this.addrKRs.size===0)throw new Error("failed to unlock address keys");this.defaultAddrID=i[0]?.ID||"",this.defaultAddrKR=this.addrKRs.get(this.defaultAddrID)||[];let o=await this.client.getShares();if(this.mainShare=o.find(a=>a.Type===t5)||o[0],!this.mainShare)throw new Error("no shares found");this.mainShareKR=await iR(this.mainShare,this.addrKRs),await this.getLinkKR(this.getRootLinkID())}getShareID(){if(!this.mainShare)throw new Error("not initialized");return this.mainShare.ShareID}getVolumeID(){if(!this.mainShare)throw new Error("not initialized");return this.mainShare.VolumeID}getRootLinkID(){if(!this.mainShare)throw new Error("not initialized");return this.addition.root_folder_id&&this.addition.root_folder_id!=="root"?this.addition.root_folder_id:this.mainShare.RootLinkID}async fetchLink(e){let t=this.linkCache.get(e);if(t)return t;let i=await this.client.requestAPI(`/drive/volumes/${this.getVolumeID()}/links/${e}`);if(!i.Link)throw new Error(`link not found: ${e}`);return this.linkCache.set(e,i.Link),i.Link}async getLinkKR(e){let t=this.nodeKRcache.get(e);if(t)return t;let i=await this.fetchLink(e),n=i.ParentLinkID?await this.getLinkKR(i.ParentLinkID):this.mainShareKR,s=await Nd(i.NodePassphrase,n),o=await TI({armoredKey:i.NodeKey}),a=await UI({privateKey:o,passphrase:s}),c=[...n,a];return this.nodeKRcache.set(e,c),c}async decryptName(e){if(!e.Name)return"unnamed";let t=await this.getLinkKR(e.LinkID);try{return await Nd(e.Name,t)}catch{return"unnamed"}}cleanPath(e){let t="/"+(e||"").split("/").filter(Boolean).join("/");return t==="/"?"/":t}joinPath(e,t){return e==="/"?`/${t}`:`${e}/${t}`}async listChildren(e){let t=this.childrenCache.get(e);if(t)return t;let i=[];for(let n=0;n<1e3;n++){let o=(await this.client.requestAPI(`/drive/volumes/${this.getVolumeID()}/links/${e}`,{params:{Children:"1",Page:String(n),PageSize:String(sR),Thumbnail:"0"}})).Links||[];if(i.push(...o),o.length<sR)break}return this.childrenCache.set(e,i),i}async resolveId(e){let t=this.cleanPath(e);if(t==="/")return this.getRootLinkID();let i=this.idCache.get(t);if(i)return i;let n=t.split("/").filter(Boolean),s=this.getRootLinkID(),o="/";for(let a of n){let c=await this.listChildren(s),l=null;for(let d of c)if(await this.decryptName(d)===a){l=d;break}if(!l)throw new Error(`folder not found: ${a}`);s=l.LinkID,o=this.joinPath(o,a),this.idCache.set(o,s)}return s}async list(e,t){let i=await this.resolveId(t),n=await this.listChildren(i),s=this.cleanPath(t),o=[];for(let a of n){let c=await this.decryptName(a);this.idCache.set(this.joinPath(s,c),a.LinkID);let l=a.Type===2;o.push({name:c,size:l?0:a.Size||0,is_dir:l,modified:oR(a.ModifyTime||a.CreateTime),sign:a.LinkID,type:X(c,l)})}return de(o,"name","asc")}async get(e,t){let i=this.cleanPath(t);if(i==="/")return{name:"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:this.getRootLinkID(),type:1};let n=await this.resolveId(i),s=await this.fetchLink(n),o=await this.decryptName(s),a=s.Type===2,c=0;if(!a){let l=await this.getLinkKR(n);c=await R1(s.XAttr||"",l),c||(c=s.Size||0)}return{name:o,size:c,is_dir:a,modified:oR(s.ModifyTime||s.CreateTime),sign:n,type:X(o,a),raw_url:""}}async createReadStream(e,t){let i=await this.resolveId(e),n=await this.fetchLink(i);if(n.Type===2)throw new Error("cannot stream a directory");let s=await this.getLinkKR(i),o=n.FileProperties?.ContentKeyPacket;if(!o)throw new Error("file has no content key packet");let a=await ZU(o,s),c=await this.client.requestAPI(`/drive/volumes/${this.getVolumeID()}/links/${i}/revisions`),l=c.Revisions?.find(I=>I.State===1)||c.Revisions?.[0];if(!l?.Blocks?.length)throw new Error("file has no blocks");let d=l.Blocks,u=await R1(n.XAttr||"",s)||l.Size||0,f=(parseInt(this.addition.chunk_size||"4")||4)*1024*1024,h=t?.start??0,g=t?.end??(u>0?u-1:Number.MAX_SAFE_INTEGER),p=this;return new ReadableStream({async pull(I){try{let y=h;for(let w of d){if(y>g)break;let C=await p.downloadBlock(w.BareURL,w.Token),b=await eR(C,[a]),x=w.Index*f,_=x+b.length-1,R=Math.max(h,x),U=Math.min(g,_);R<=U&&(I.enqueue(b.slice(R-x,U-x+1)),y=U+1)}I.close()}catch(y){I.error(y)}}})}async downloadBlock(e,t){let i=await fetch(e,{headers:{Authorization:`Bearer ${t}`}});if(!i.ok)throw new Error(`block download failed: ${i.status}`);return new Uint8Array(await i.arrayBuffer())}async mkdir(e,t){let i=this.cleanPath(t),n=i.split("/").slice(0,-1).join("/")||"/",s=i.split("/").pop()||"",o=await this.resolveId(n),a=await this.getLinkKR(o),c=await LI(s,a),l=await U1(s),{publicKey:d}=await C1({type:"ecc",curve:"curve25519Legacy",userIDs:[{name:s,email:this.mainShare?.Creator||""}]}),u=Vte(),f=await LI(u,a);await this.client.requestAPI("/drive/shares/"+this.getShareID()+"/folders",{method:"POST",body:{ParentLinkID:o,Name:c,Hash:l,NodeKey:d,NodePassphrase:f,NodePassphraseSignature:"",SignatureAddress:this.defaultAddrID,NameSignatureEmail:this.mainShare?.Creator||""}})}async rename(e,t,i){let n=await this.resolveId(t),s=await this.fetchLink(n),o=await this.getLinkKR(s.ParentLinkID),a=await LI(i,o),c=await U1(i),l=s.Hash||"";await this.client.requestAPI(`/drive/volumes/${this.getVolumeID()}/links/${n}/rename`,{method:"PUT",body:{Name:a,NameSignatureEmail:this.mainShare?.Creator||"",Hash:c,OriginalHash:l}})}async remove(e,t,i){let n=await this.resolveId(t);await this.client.requestAPI(`/drive/volumes/${this.getVolumeID()}/links/${n}/trash`,{method:"POST"})}async move(e,t,i,n,s){throw new Error("ProtonDrive move is not supported yet")}async copy(e,t,i,n,s){throw new Error("ProtonDrive copy is not supported")}async put(e,t,i){throw new Error("ProtonDrive upload is not supported yet")}}});var cR={};xn(cR,{LocalDriver:()=>q1});async function va(){if(typeof process<"u"&&process.release?.name==="node"&&!zt)try{zt=await import("fs/promises"),ar=await import("path")}catch{}}var zt,ar,q1,lR=j(()=>{"use strict";Be();zt=null,ar=null;q1=class{async list(e,t){if(await va(),!zt||!ar)throw new Error("LocalDriver is not supported in Edge Runtime");let i=[];try{i=await zt.readdir(t,{withFileTypes:!0})}catch{return[]}return await Promise.all(i.map(async s=>{let o=s.isDirectory(),a=0,c=new Date;try{let l=await zt.stat(ar.join(t,s.name));a=l.size,c=l.mtime}catch{}return{name:s.name,size:o?0:a,is_dir:o,created:c.toISOString(),modified:c.toISOString(),sign:"",type:X(s.name,o)}}))}async get(e,t){if(await va(),!zt||!ar)throw new Error("LocalDriver is not supported in Edge Runtime");let i=await zt.stat(t),n=i.isDirectory(),s=t.split(/[\\/]+/).filter(Boolean).pop()||"root";return{name:s,size:n?0:i.size,is_dir:n,created:i.ctime?.toISOString()||i.mtime.toISOString(),modified:i.mtime.toISOString(),sign:"",type:X(s,n)}}async mkdir(e,t){if(await va(),!zt||!ar)throw new Error("LocalDriver is not supported in Edge Runtime");await zt.mkdir(t,{recursive:!0})}async rename(e,t,i){if(await va(),!zt||!ar)throw new Error("LocalDriver is not supported in Edge Runtime");let n=ar.join(ar.dirname(t),i);await zt.rename(t,n)}async remove(e,t,i){if(await va(),!zt||!ar)throw new Error("LocalDriver is not supported in Edge Runtime");for(let n of i){let s=ar.join(t,n);await zt.rm(s,{recursive:!0,force:!0})}}async move(e,t,i,n,s){if(await va(),!zt||!ar)throw new Error("LocalDriver is not supported in Edge Runtime");for(let o of i){let a=ar.join(n,o),c=ar.join(s,o);await zt.mkdir(ar.dirname(c),{recursive:!0}),await zt.rename(a,c)}}async copy(e,t,i,n,s){if(await va(),!zt||!ar)throw new Error("LocalDriver is not supported in Edge Runtime");for(let o of i){let a=ar.join(n,o),c=ar.join(s,o);await zt.mkdir(ar.dirname(c),{recursive:!0}),await zt.cp(a,c,{recursive:!0})}}async put(e,t,i){if(await va(),!zt||!ar)throw new Error("LocalDriver is not supported in Edge Runtime");await zt.mkdir(ar.dirname(t),{recursive:!0}),await zt.writeFile(t,i)}}});var dR={};xn(dR,{Client:()=>tre,FTPDriver:()=>Xte,SFTPClient:()=>Zte,SFTPDriver:()=>Yte,createPool:()=>rre,default:()=>ire,normalizeSFTPAddition:()=>Wte,parseAddress:()=>ere});var Yte,Wte,Xte,Zte,ere,tre,rre,ire,uR=j(()=>{Yte=class{constructor(){throw new Error("[Edge/Serverless] SFTP driver requires full Node.js runtime")}},Wte=r=>r,Xte=class{constructor(){throw new Error("[Edge/Serverless] FTP driver requires full Node.js runtime")}},Zte=class{constructor(){throw new Error("[Edge/Serverless] SFTP client requires full Node.js runtime")}},ere=()=>({host:"127.0.0.1",port:22}),tre=class{constructor(){throw new Error("[Edge/Serverless] ssh2 is not available in edge/serverless runtime")}},rre=()=>{throw new Error("[Edge/Serverless] mysql2 is not available in edge/serverless runtime")},ire={}});var fR={};xn(fR,{Client:()=>lre,FTPDriver:()=>ore,SFTPClient:()=>are,SFTPDriver:()=>nre,createPool:()=>dre,default:()=>ure,normalizeSFTPAddition:()=>sre,parseAddress:()=>cre});var nre,sre,ore,are,cre,lre,dre,ure,AR=j(()=>{nre=class{constructor(){throw new Error("[Edge/Serverless] SFTP driver requires full Node.js runtime")}},sre=r=>r,ore=class{constructor(){throw new Error("[Edge/Serverless] FTP driver requires full Node.js runtime")}},are=class{constructor(){throw new Error("[Edge/Serverless] SFTP client requires full Node.js runtime")}},cre=()=>({host:"127.0.0.1",port:22}),lre=class{constructor(){throw new Error("[Edge/Serverless] ssh2 is not available in edge/serverless runtime")}},dre=()=>{throw new Error("[Edge/Serverless] mysql2 is not available in edge/serverless runtime")},ure={}});var qi={};xn(qi,{copyItems:()=>EA,flushPendingDriverState:()=>Jt,getDriver:()=>lt,getItem:()=>Di,getOrCreateDriver:()=>gR,listItems:()=>Zt,makeDirectory:()=>xA,moveItems:()=>Od,putItem:()=>Tn,removeItems:()=>ka,renameItem:()=>CA,scheduleStoragePersistence:()=>pR});async function fre(){if(!O1){let{LocalDriver:r}=await Promise.resolve().then(()=>(lR(),cR));O1=new r}return O1}async function Are(r){if(typeof process<"u"&&process.release?.name==="node"){let{SFTPDriver:e}=await Promise.resolve().then(()=>(uR(),dR)),t=new e(ye(r));return await t.init?.(),t}throw new Error("SFTP storage driver requires Node.js runtime (raw TCP sockets not available in Cloudflare Workers)")}async function hre(r){if(typeof process<"u"&&process.release?.name==="node"){let{FTPDriver:e}=await Promise.resolve().then(()=>(AR(),fR)),t=new e(ye(r));return await t.init?.(),t}throw new Error("FTP storage driver requires Node.js runtime (raw TCP sockets not available in Cloudflare Workers)")}function mre(r,e){if(qd.size>=pre){let t=qd.keys().next().value;t!==void 0&&qd.delete(t)}qd.set(r,e)}async function gR(r,e,t){let i=r.get(e);if(i)return i;let n=t();r.set(e,n);try{return await n}catch(s){throw r.get(e)===n&&r.delete(e),s}}function ye(r){let e=r?.addition;return e?typeof e=="string"?JSON.parse(e||"{}"):e:{}}async function hR(r,e){let t=(r||"").toLowerCase().replace(/[^a-z0-9]/g,"");if(t==="local"){if(typeof process<"u"&&process.release?.name==="node")return fre();throw new Error("Local storage driver requires Node.js runtime (not available in Cloudflare Workers)")}if(t==="sftp")return Are(e);if(t==="ftp")return hre(e);if(!e)throw new Error("failed get driver: storage config not found for driver "+r);let i;if(t==="onedriveapp"){i=new mh(ye(e));try{await i.init?.()}catch(n){throw console.error("onedrive_app init failed:",n),n}}else if(t==="onedrive"||t==="onedrivesb"||t==="onedrivebusiness"||t==="onedrivesharepoint"||t.startsWith("onedrive")&&t!=="onedriveapp"){i=new ph(ye(e),async n=>{try{let s=await ne(),o=(s.storages||[]).find(c=>c.id===e?.id);if(!o)return;let a=typeof o.addition=="string"?JSON.parse(o.addition||"{}"):o.addition||{};a.refresh_token=n,o.addition=JSON.stringify(a),await fe(s)}catch(s){console.warn("[Onedrive] failed to persist refresh token:",s)}});try{await i.init?.()}catch(n){throw console.error("onedrive init failed:",n),n}}else if(t==="aliyundrive"||t==="aliyundriveopen"||t==="aliyundriveshare"||t==="aliyun"||t==="aliyundriveshare2open"||t==="aliyundriveoauth2"||t.includes("aliyun"))i=new wh(ye(e)),await i.init?.();else if(t==="googlephoto"||t==="googlephotos"||t==="gphoto"||t==="google_photo")i=new dg(ye(e)),await i.init?.();else if(t==="googledrive"||t==="gdrive"||t==="google"||t.startsWith("google"))i=new Ch(ye(e)),await i.init?.();else if(t==="quark"||t==="quarkuc"||t==="uc"||t==="quarkcookie")i=new Bh(ye(e)),await i.init?.();else if(t==="115"||t==="115cloud"||t==="115open"||t==="115netdisk")i=new vh(ye(e)),await i.init?.();else if(t==="cloudreve"||t==="cloudrevev3"||t==="cloudreve_v3"){let n=ye(e);i=new Qh(n,async s=>{try{let o=await ne(),a=(o.storages||[]).find(l=>l.id===e?.id);if(!a)return;let c=typeof a.addition=="string"?JSON.parse(a.addition||"{}"):a.addition||{};c.cookie=s,a.addition=JSON.stringify(c),await fe(o)}catch(o){console.warn("[cloudreve] failed to persist cookie:",o)}}),await i.init?.()}else if(t==="cloudrevev4"||t==="cloudreve_v4")i=new Sh(ye(e)),await i.init?.();else if(t==="openlistshare"||t==="openlist_share")i=new Th(ye(e)),await i.init?.();else if(t==="openlist")i=new Fh(ye(e)),await i.init?.();else if(t==="teldrive")i=new Rh(ye(e)),await i.init?.();else if(t==="mediafire")i=new qh(ye(e)),await i.init?.();else if(t==="githubreleases"||t==="github_releases")i=new Mh(ye(e)),await i.init?.();else if(t==="cnbreleases"||t==="cnb_releases")i=new Hh(ye(e)),await i.init?.();else if(t==="kodbox"||t==="kodo")i=new Gh(ye(e)),await i.init?.();else if(t==="ipfs"||t==="ipfsapi"||t==="ipfs_api")i=new Jh(ye(e)),await i.init?.();else if(t==="lenovonasshare"||t==="lenovonas_share")i=new $h(ye(e)),await i.init?.();else if(t==="misskey")i=new Yh(ye(e)),await i.init?.();else if(t==="doubao"||t==="doubaonew"||t==="doubao_new"||t==="doubaoshare"||t==="doubao_share")i=new Xh(ye(e)),await i.init?.();else if(t==="quarkopen"||t==="quark_open"||t==="quarkoa")i=new eg(ye(e)),await i.init?.();else if(t==="quarktv"||t==="uctv"||t==="quark_uc_tv")i=new rg(ye(e)),await i.init?.();else if(t==="123open"||t==="123_open"||t==="123cloudopen")i=new ng(ye(e)),await i.init?.();else if(t==="teambition"||t==="tb")i=new og(ye(e)),await i.init?.();else if(t==="neteasemusic"||t==="netease"||t==="neteasecloudmusic"||t==="netease_music")i=new pg(ye(e)),await i.init?.();else if(t==="halalcloudopen"||t==="halalcloud_open"||t==="halalcloudopenapi"){let n=ye(e);i=new Ig(n,async s=>{try{let o=await ne(),a=(o.storages||[]).find(l=>l.id===e?.id);if(!a)return;let c=typeof a.addition=="string"?JSON.parse(a.addition||"{}"):a.addition||{};c.refresh_token=s,a.addition=JSON.stringify(c),await fe(o)}catch(o){console.warn("[HalalCloud] failed to persist refresh_token:",o)}}),await i.init?.()}else if(t==="degoo"){let n=ye(e);i=new hg(n,async s=>{try{let o=await ne(),a=(o.storages||[]).find(l=>l.id===e?.id);if(!a)return;let c=typeof a.addition=="string"?JSON.parse(a.addition||"{}"):a.addition||{};s.accessToken&&(c.access_token=s.accessToken),s.refreshToken&&(c.refresh_token=s.refreshToken),a.addition=JSON.stringify(c),await fe(o)}catch(o){console.warn("[degoo] failed to persist tokens:",o)}}),await i.init?.()}else if(t==="febbox"||t==="febboxpan"){let n=ye(e);i=new fg(n,async s=>{try{let o=await ne(),a=(o.storages||[]).find(l=>l.id===e?.id);if(!a)return;let c=typeof a.addition=="string"?JSON.parse(a.addition||"{}"):a.addition||{};c.refresh_token=s,a.addition=JSON.stringify(c),await fe(o)}catch(o){console.warn("[febbox] failed to persist refresh_token:",o)}}),await i.init?.()}else if(t==="chaoxing"||t==="chaoxinggroupdrive"||t==="chaoxinggroup"||t.startsWith("chaoxing")){let n=ye(e);i=new cg(n,async s=>{try{let o=await ne(),a=(o.storages||[]).find(l=>l.id===e?.id);if(!a)return;let c=typeof a.addition=="string"?JSON.parse(a.addition||"{}"):a.addition||{};c.cookie=s,a.addition=JSON.stringify(c),await fe(o)}catch(o){console.warn("[chaoxing] failed to persist cookie:",o)}}),await i.init?.()}else if(t==="123pan"||t==="123"||t==="123panshare"||t.startsWith("123")){let n=ye(e);i=new xg(n,async s=>{try{let o=await ne(),a=(o.storages||[]).find(l=>l.id===e?.id);if(!a)return;let c=typeof a.addition=="string"?JSON.parse(a.addition||"{}"):a.addition||{};c.access_token=s,a.addition=JSON.stringify(c),await fe(o)}catch(o){console.warn("[123Pan] failed to persist access_token:",o)}}),await i.init?.()}else if(t==="baiduphoto"||t==="baidu_photo"||t==="baiduphotos")i=new kg(ye(e)),await i.init?.();else if(t==="baidunetdisk"||t==="baidu"||t==="baiduyun"||t==="baidushare"||t.startsWith("baidu")){let n=ye(e);i=new Eg(n,async s=>{try{let o=await ne(),a=(o.storages||[]).find(l=>l.id===e?.id);if(!a)return;let c=typeof a.addition=="string"?JSON.parse(a.addition||"{}"):a.addition||{};c.access_token=s.access_token,c.refresh_token=s.refresh_token,a.addition=JSON.stringify(Pl(c)),await fe(o)}catch(o){console.warn("[baidu_netdisk] failed to persist token:",o)}}),await i.init?.()}else if(t==="115open"||t==="115"||t==="115pan"||t==="115cloud"||t.startsWith("115")){let n=ye(e);i=new Qg(n,async s=>{try{let o=await ne(),a=(o.storages||[]).find(l=>l.id===e?.id);if(!a)return;let c=typeof a.addition=="string"?JSON.parse(a.addition||"{}"):a.addition||{};c.access_token=s.access_token,c.refresh_token=s.refresh_token,a.addition=JSON.stringify(c),await fe(o)}catch(o){console.warn("[115open] failed to persist token:",o)}}),await i.init?.()}else if(t==="github"||t==="githubapi"||t==="github_api"){let n=ye(e);i=new Fg(n),await i.init?.()}else if(t==="thunderexpert"||t==="thunderbrowserexpert"||t==="thunderxexpert"||t.includes("thunder")&&t.includes("expert")||t.includes("xunlei")&&t.includes("expert")){let n=ye(e);i=new yp(n,async s=>{try{s.device_id&&(n.device_id=s.device_id),s.refresh_token&&(n.refresh_token=s.refresh_token),s.captcha_token&&(n.captcha_token=s.captcha_token),e.addition=JSON.stringify(n);let o=await ne(),a=(o.storages||[]).find(c=>c.id===e?.id);if(a){let c=typeof a.addition=="string"?JSON.parse(a.addition||"{}"):a.addition||{};s.refresh_token&&(c.refresh_token=s.refresh_token),s.captcha_token&&(c.captcha_token=s.captcha_token),s.device_id&&(c.device_id=s.device_id),a.addition=JSON.stringify(c),await fe(o)}}catch(o){console.warn("[thunderexpert] failed to persist token:",o)}}),await i.init?.()}else if(t==="thunder"||t==="xunlei"||t==="thunderbrowser"||t==="thunderx"||t.includes("thunder")||t.includes("xunlei")){let n=ye(e);i=new $u(n,async s=>{try{s.device_id&&(n.device_id=s.device_id),s.refresh_token&&(n.refresh_token=s.refresh_token),s.captcha_token&&(n.captcha_token=s.captcha_token),e.addition=JSON.stringify(n);let o=await ne(),a=(o.storages||[]).find(c=>c.id===e?.id);if(a){let c=typeof a.addition=="string"?JSON.parse(a.addition||"{}"):a.addition||{};s.refresh_token&&(c.refresh_token=s.refresh_token),s.captcha_token&&(c.captcha_token=s.captcha_token),s.device_id&&(c.device_id=s.device_id),a.addition=JSON.stringify(c),await fe(o)}}catch(o){console.warn("[thunder] failed to persist token:",o)}}),await i.init?.()}else if(t==="lanzou"||t==="lanzoupan"||t==="ilanzou"||t==="lanzoui"||t==="lanzous"){let n=ye(e);i=new Bp(n,async s=>{try{let o=await ne(),a=(o.storages||[]).find(l=>l.id===e?.id);if(!a)return;let c=typeof a.addition=="string"?JSON.parse(a.addition||"{}"):a.addition||{};c.cookie=s,a.addition=JSON.stringify(c),await fe(o)}catch(o){console.warn("[Lanzou] failed to persist cookie:",o)}}),await i.init?.()}else if(t==="189tv"||t==="cloud189tv"||t==="189tvcloud"||t==="189_tv"){let n=ye(e);i=new Qp(n,async s=>{try{let o=await ne(),a=(o.storages||[]).find(l=>l.id===e?.id);if(!a)return;let c=typeof a.addition=="string"?JSON.parse(a.addition||"{}"):a.addition||{};c.access_token=s,a.addition=JSON.stringify(c),await fe(o)}catch(o){console.warn("[189TV] failed to persist access_token:",o)}}),await i.init?.()}else if(t==="189"||t==="189cloud"||t==="cloud189"||t==="ctyun"||t==="189pan"||t==="189cloudpc"||t==="189cloudapp"||t.startsWith("189")||t.includes("cloud189")){let n=ye(e);i=new Sp(n),await i.init?.()}else if(t==="webdav"||t==="webdavdriver"){let n=ye(e);i=new Fp(n),await i.init?.()}else if(t==="s3"||t==="doge"||t==="dogecloud"||t==="minio"||t==="ceph"||t==="aws"||t==="r2"||t==="b2"||t==="cos"||t==="oss"||t==="kodo"){let n=ye(e);i=new Gp(n,e.driver||"S3"),await i.init?.()}else if(t==="wopan"||t==="unicom"||t==="unicomcloud"||t==="woyun"||t==="chinaunicom"){let n=ye(e);i=new Np(n,async(s,o)=>{try{let a=await ne(),c=(a.storages||[]).find(d=>d.id===e?.id);if(!c)return;let l=typeof c.addition=="string"?JSON.parse(c.addition||"{}"):c.addition||{};l.access_token=s,l.refresh_token=o,c.addition=JSON.stringify($C(l)),await fe(a)}catch(a){console.warn("[WoPan] failed to persist tokens:",a)}}),await i.init?.()}else if(t==="weiyun"||t==="tencentweiyun"||t==="txweiyun"||t.includes("weiyun")){let n=ye(e);i=new $p(n,async s=>{try{let o=await ne(),a=(o.storages||[]).find(l=>l.id===e?.id);if(!a)return;let c=typeof a.addition=="string"?JSON.parse(a.addition||"{}"):a.addition||{};c.cookies=s,a.addition=JSON.stringify(iE(c)),await fe(o)}catch(o){console.warn("[WeiYun] failed to persist cookies:",o)}}),await i.init?.()}else if(t==="pikpak"||t==="pikpakshare"||t.includes("pikpak")){let n=ye(e);i=new Yp(n,async s=>{try{let o=await ne(),a=(o.storages||[]).find(l=>l.id===e?.id);if(!a)return;let c=typeof a.addition=="string"?JSON.parse(a.addition||"{}"):a.addition||{};c.refresh_token=s.refreshToken,s.captchaToken&&(c.captcha_token=s.captchaToken),a.addition=JSON.stringify(c),await fe(o)}catch(o){console.warn("[PikPak] failed to persist tokens:",o)}}),await i.init?.()}else if(t==="seafile"||t.includes("seafile")){let n=ye(e);i=new Xp(n,async s=>{try{let o=await ne(),a=(o.storages||[]).find(l=>l.id===e?.id);if(!a)return;let c=typeof a.addition=="string"?JSON.parse(a.addition||"{}"):a.addition||{};c.token=s,a.addition=JSON.stringify(c),await fe(o)}catch(o){console.warn("[Seafile] failed to persist token:",o)}}),await i.init?.()}else if(t==="yandex"||t==="yandexdisk"||t==="yandexdrive"||t.includes("yandex")){let n=ye(e);i=new em(n,async s=>{try{let o=await ne(),a=(o.storages||[]).find(l=>l.id===e?.id);if(!a)return;let c=typeof a.addition=="string"?JSON.parse(a.addition||"{}"):a.addition||{};c.refresh_token=s.refreshToken,a.addition=JSON.stringify(c),await fe(o)}catch(o){console.warn("[Yandex] failed to persist token:",o)}}),await i.init?.()}else if(t==="terabox"||t==="dubox"||t.includes("terabox")){let n=ye(e);i=new rm(n),await i.init?.()}else if(t==="mediatrack"||t==="fenmiao"||t.includes("mediatrack")){let n=ye(e);i=new nm(n),await i.init?.()}else if(t==="alias"||t.includes("alias")){let n=ye(e);i=new sm(n),await i.init?.()}else if(t==="dropbox"||t.includes("dropbox")){let n=ye(e);i=new am(n,async s=>{try{let o=await ne(),a=(o.storages||[]).find(l=>l.id===e?.id);if(!a)return;let c=typeof a.addition=="string"?JSON.parse(a.addition||"{}"):a.addition||{};c.access_token=s.accessToken,c.refresh_token=s.refreshToken,a.addition=JSON.stringify(c),await fe(o)}catch(o){console.warn("[Dropbox] failed to persist token:",o)}}),await i.init?.()}else if(t==="wps"||t.includes("wps")||t.includes("kdocs")){let n=ye(e);i=new lm(n),await i.init?.()}else if(t==="mopan"||t==="mobilecloud"||t==="cmcc"||t==="chinamobile"||t.includes("mopan")){let n=ye(e);i=new Mp(n,async(s,o)=>{try{let a=await ne(),c=(a.storages||[]).find(u=>u.id===e?.id);if(!c)return;let l=typeof c.addition=="string"?JSON.parse(c.addition||"{}"):c.addition||{};l.device_info=s;let d=o.replace(/^Bearer\s+/i,"");l.token=d,c.addition=JSON.stringify(l),await fe(a)}catch(a){console.warn("[MoPan] failed to persist tokens:",a)}}),await i.init?.()}else if(t==="139"||t==="139yun"||t==="caiyun"||t==="hecaiyun"||t.includes("139")){let n=ye(e);i=new um(n),await i.init?.()}else if(t==="mega"||t==="meganz"||t.includes("mega")){let n=ye(e);i=new Am(n),await i.init?.()}else if(t==="115share"||t==="115sharelink"||t.includes("115")&&t.includes("share")){let n=ye(e);i=new gm(n),await i.init?.()}else if(t==="123share"||t==="123panshare"||t==="123link"||t.includes("123")&&t.includes("share")){let n=ye(e);i=new mm(n),await i.init?.()}else if(t==="aliyundriveshare"||t==="aliyunshare"||t==="alishare"||t.includes("ali")&&t.includes("share")){let n=ye(e);i=new Im(n),await i.init?.()}else if(t==="onedrivesharelink"||t==="onedriveshare"||t==="sharepointshare"||t.includes("onedrive")&&t.includes("share")){let n=ye(e);i=new xm(n),await i.init?.()}else if(t==="pikpakshare"||t.includes("pikpak")&&t.includes("share")){let n=ye(e);i=new Em(n),await i.init?.()}else if(t==="smb"||t==="samba"||t==="cifs"||t.includes("smb")){let n=ye(e);i=new Bm(n),await i.init?.()}else if(t==="crypt"){let n=ye(e);i=new Sm(n),await i.init?.()}else if(t==="virtual"){let n=ye(e);i=new Dm(n)}else if(t==="alistv3"||t==="alist"||t==="alistv2"){let n=ye(e);i=new Qm(n,async s=>{try{let o=await ne(),a=(o.storages||[]).find(l=>l.id===e?.id);if(!a)return;let c=typeof a.addition=="string"?JSON.parse(a.addition||"{}"):a.addition||{};c.token=s,a.addition=JSON.stringify(c),await fe(o)}catch(o){console.warn("[alist_v3] failed to persist token:",o)}}),await i.init?.()}else if(t==="urltree"||t==="urlstree"){let n=ye(e);i=new _m(n,async s=>{try{let o=await ne(),a=(o.storages||[]).find(l=>l.id===e?.id);if(!a)return;let c=typeof a.addition=="string"?JSON.parse(a.addition||"{}"):a.addition||{};c.url_structure=s,a.addition=JSON.stringify(c),await fe(o)}catch(o){console.warn("[url_tree] failed to persist structure:",o)}}),await i.init?.()}else if(t==="strm"){let n=ye(e);i=new Fm(n),await i.init?.()}else if(t==="chunk"){let n=ye(e);i=new Pm(n),await i.init?.()}else if(t==="azureblob"||t==="azure"||t==="azblob"){let n=ye(e);i=new Tm(n),await i.init?.()}else if(t==="uss"||t==="upyun"){let n=ye(e);i=new Um(n),await i.init?.()}else if(t==="autoindex"||t==="nginxautoindex"){let n=ye(e);i=new uy(n),await i.init?.()}else if(t==="protondrive"||t==="proton"){let n=ye(e);i=new KI(n),await i.init?.()}else if(t==="alidoc"||t==="dingtalkdoc"){let n=ye(e);i=new Nm(n),await i.init?.()}else if(t==="emby"||t==="jellyfin"){let n=ye(e);i=new Om(n),await i.init?.()}else if(t==="bunnystorage"||t==="bunnycdn"||t==="bunny"){let n=ye(e);i=new Hm(n),await i.init?.()}else if(t==="cloudflareimgbed"||t==="cfimgbed"||t==="cloudflareimage"){let n=ye(e);i=new zm(n),await i.init?.()}else if(t==="guangyapan"||t==="guangya"){let n=ye(e);i=new Jm(n,async(s,o)=>{try{let a=await ne(),c=(a.storages||[]).find(d=>d.id===e?.id);if(!c)return;let l=typeof c.addition=="string"?JSON.parse(c.addition||"{}"):c.addition||{};l.access_token=s,o&&(l.refresh_token=o),c.addition=JSON.stringify(l),await fe(a)}catch(a){console.warn("[GuangYaPan] failed to persist tokens:",a)}}),await i.init?.()}else throw new Error("failed get driver: unsupported driver '"+r+"'");return i}async function lt(r,e){if((r||"").toLowerCase().replace(/[^a-z0-9]/g,"")==="local")return hR(r,e);if(!e)throw new Error("failed get driver: storage config not found for driver "+r);let i=`${e.id}_${e.modified}`,n=qd.get(i);return n||gR(gre,i,async()=>{let s=qd.get(i);if(s)return s;let o=await hR(r,e);return mre(i,o),o})}function yre(r){let e=(r||"").toLowerCase().replace(/[^a-z0-9]/g,"");return e==="189"||e==="189cloud"||e==="cloud189"||e==="ctyun"||e==="189pan"}async function pR(r,e){if(r)try{r(e);return}catch{}await e}async function Ire(r,e){let t=String(r?.id||"");if(!t)return;let n=(GI.get(t)||Promise.resolve()).catch(()=>{}).then(async()=>{let s=await ne(),o=(s.storages||[]).find(c=>String(c.id)===t);if(!o)return;let a=typeof o.addition=="string"?JSON.parse(o.addition||"{}"):o.addition||{};a.cookies!==void 0||mR(r?.driver)?a.cookies=e:a.cookie=e,o.addition=JSON.stringify(a),String(r?.id)===t&&(r.addition=o.addition),await fe(s)});GI.set(t,n);try{await n}finally{GI.get(t)===n&&GI.delete(t)}}function mR(r){let e=(r||"").toLowerCase().replace(/[^a-z0-9]/g,"");return e==="weiyun"||e==="tencentweiyun"||e==="txweiyun"||e.includes("weiyun")}async function Jt(r,e,t,i){if(!yre(r)&&!mR(r))return;let s=t.consumePendingCookie?.call(t);if(!s)return;let o=Ire(e,s).catch(a=>{console.warn(`[${r}] failed to persist cookie:`,a)});await pR(i?.waitUntil,o)}async function Zt(r,e){let t=await tt(r,e?.env),i=[],n="Virtual";if(t.storage){n=t.storage.driver;try{let c=await lt(n,t.storage);try{i=await c.list(r,t.physical)}finally{await Jt(n,t.storage,c,e)}if(t.storage.status!=="work"){t.storage.status="work";let l=await ne(e?.env),d=(l.storages||[]).find(u=>u.id===t.storage?.id);d&&(d.status="work",await fe(l,e?.env))}}catch(c){try{let l=await ne(e?.env),d=(l.storages||[]).find(u=>u.id===t.storage?.id);d&&(d.status=c.message||String(c),await fe(l,e?.env))}catch(l){console.warn("Failed to persist storage status:",l)}throw c}}else if(!t.isVirtual)throw new Error("failed get storage: storage not found");let o=((await ne(e?.env)).storages||[]).filter(c=>!c.disabled),a=t.cleanPath;return o.forEach(c=>{let l="/"+(c.mount_path||"").split("/").filter(Boolean).join("/");if(l===a||l==="/")return;let d=a==="/"?"/":a+"/";if(l.startsWith(d)){let u=l.slice(d.length).split("/").filter(Boolean)[0];u&&!i.some(f=>f.name===u)&&i.push({name:u,size:0,is_dir:!0,modified:c.modified||new Date().toISOString(),sign:"",type:1})}}),i.forEach(c=>{c.type||(c.type=X(c.name,c.is_dir))}),{content:i,provider:n,storage:t.storage}}async function Di(r,e){let t=await tt(r,e?.env);if(t.isVirtual)return{item:{name:t.cleanPath.split("/").filter(Boolean).pop()||"root",size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",type:1},provider:"Virtual",rawUrl:""};if(t.storage&&t.relative==="/"){let o=t.cleanPath.split("/").filter(Boolean).pop()||"root",a=ye(t.storage);return{item:{name:o,size:0,is_dir:!0,modified:t.storage.modified||new Date().toISOString(),sign:String(a.root_folder_id||""),type:1,raw_url:""},provider:t.storage.driver,rawUrl:`/api/p${r.startsWith("/")?"":"/"}${r}`}}let i=t.storage?t.storage.driver:"Local",n=await lt(i,t.storage),s;try{s=await n.get(r,t.physical)}finally{await Jt(i,t.storage,n,e)}return s.type||(s.type=X(s.name,s.is_dir)),{item:s,provider:i,rawUrl:`/api/p${r.startsWith("/")?"":"/"}${r}`}}async function xA(r,e){let t=await tt(r,e?.env);if(t.isVirtual)throw new Error("failed get storage: storage not found");let i=await lt(t.storage.driver,t.storage);try{await i.mkdir(r,t.physical)}finally{await Jt(t.storage.driver,t.storage,i,e)}}async function CA(r,e,t){let i=await tt(r,t?.env);if(i.isVirtual)throw new Error("failed get storage: storage not found");let n=await lt(i.storage.driver,i.storage);try{await n.rename(r,i.physical,e)}finally{await Jt(i.storage.driver,i.storage,n,t)}}async function ka(r,e,t){for(let i of e){let n=`${r}/${i}`,s=await tt(n,t?.env);if(s.isVirtual)throw new Error("failed get storage: storage not found");let o=await lt(s.storage.driver,s.storage);try{await o.remove(n,s.physical,[i])}finally{await Jt(s.storage.driver,s.storage,o,t)}}}async function Od(r,e,t,i){for(let n of t){let s=`${r}/${n}`,o=`${e}/${n}`,a=await tt(s,i?.env),c=await tt(o,i?.env);if(a.isVirtual||c.isVirtual)throw new Error("failed get storage: storage not found");let l=await lt(a.storage.driver,a.storage);try{await l.move(r,e,[n],a.physical,c.physical)}finally{await Jt(a.storage.driver,a.storage,l,i)}}}async function EA(r,e,t,i){for(let n of t){let s=`${r}/${n}`,o=`${e}/${n}`,a=await tt(s,i?.env),c=await tt(o,i?.env);if(a.isVirtual||c.isVirtual)throw new Error("failed get storage: storage not found");let l=await lt(a.storage.driver,a.storage);try{await l.copy(r,e,[n],a.physical,c.physical)}finally{await Jt(a.storage.driver,a.storage,l,i)}}}async function Tn(r,e,t){let i=await tt(r,t?.env);if(i.isVirtual)throw new Error("failed get storage: storage not found");let n=await lt(i.storage.driver,i.storage);try{await n.put(r,i.physical,e)}finally{await Jt(i.storage.driver,i.storage,n,t)}}var O1,qd,gre,GI,pre,Yt=j(()=>{"use strict";Ve();Be();JS();eD();nD();dD();gD();wD();ED();vD();SD();FD();UD();ND();OD();LD();KD();zD();jD();VD();ZD();r3();s3();c3();d3();p3();I3();C3();b3();N3();$3();eQ();oQ();fQ();pQ();IQ();N_();K_();Z_();s8();l8();Q8();H8();Y8();s4();c4();d4();f4();h4();p4();m4();I4();C4();B4();v4();S4();_4();P4();U4();N4();q4();H4();K4();G4();J4();Y4();W4();eF();tF();nF();aF();AF();yF();vF();KP();aR();O1=null;qd=new Map,gre=new Map,GI=new Map,pre=100});var IR,wre,xre,Cre,Ere,yR,zI,M1,wR=j(()=>{$a();IR={name:"HMAC",hash:"SHA-256"},wre=async r=>{let e=typeof r=="string"?new TextEncoder().encode(r):r;return await crypto.subtle.importKey("raw",e,IR,!1,["sign","verify"])},xre=async(r,e,t)=>{try{let i=atob(r),n=new Uint8Array(i.length);for(let s=0,o=i.length;s<o;s++)n[s]=i.charCodeAt(s);return await crypto.subtle.verify(IR,t,n,new TextEncoder().encode(e))}catch{return!1}},Cre=/^[!#-:<>-[\]-~]+$/,Ere=/^[ !#-:<-[\]-~]*$/,yR=r=>{let e=0,t=r.length;for(;e<t;){let i=r.charCodeAt(e);if(i!==32&&i!==9)break;e++}for(;t>e;){let i=r.charCodeAt(t-1);if(i!==32&&i!==9)break;t--}return e===0&&t===r.length?r:r.slice(e,t)},zI=(r,e)=>{if(e&&r.indexOf(e)===-1)return{};let t=r.split(";"),i=Object.create(null);for(let n of t){let s=n.indexOf("=");if(s===-1)continue;let o=yR(n.substring(0,s));if(e&&e!==o||!Cre.test(o)||o in i)continue;let a=yR(n.substring(s+1));if(a.startsWith('"')&&a.endsWith('"')&&(a=a.slice(1,-1)),Ere.test(a)&&(i[o]=yl(a),e))break}return i},M1=async(r,e,t)=>{let i=Object.create(null),n=await wre(e);for(let[s,o]of Object.entries(zI(r,t))){let a=o.lastIndexOf(".");if(a<1)continue;let c=o.substring(0,a),l=o.substring(a+1);if(l.length!==44||!l.endsWith("="))continue;let d=await xre(l,c,n);i[s]=d?c:!1}return i}});var JI,L1,xR=j(()=>{wR();JI=(r,e,t)=>{let i=r.req.raw.headers.get("Cookie");if(typeof e=="string"){if(!i)return;let s=e;return t==="secure"?s="__Secure-"+e:t==="host"&&(s="__Host-"+e),zI(i,s)[s]}return i?zI(i):{}},L1=async(r,e,t,i)=>{let n=r.req.raw.headers.get("Cookie");if(typeof t=="string"){if(!n)return;let o=t;return i==="secure"?o="__Secure-"+t:i==="host"&&(o="__Host-"+t),(await M1(n,e,o))[o]}return n?await M1(n,e):{}}});var H1,K1,Bre,G1,z1=j(()=>{H1=r=>G1(r.replace(/_|-/g,e=>({_:"/","-":"+"})[e]??e)),K1=r=>Bre(r).replace(/\/|\+/g,e=>({"/":"_","+":"-"})[e]??e),Bre=r=>{let e="",t=new Uint8Array(r);for(let i=0,n=t.length;i<n;i++)e+=String.fromCharCode(t[i]);return btoa(e)},G1=r=>{let e=atob(r),t=new Uint8Array(new ArrayBuffer(e.length)),i=e.length/2;for(let n=0,s=e.length-1;n<=i;n++,s--)t[n]=e.charCodeAt(n),t[s]=e.charCodeAt(s);return t}});var Sa,J1=j(()=>{Sa=(r=>(r.HS256="HS256",r.HS384="HS384",r.HS512="HS512",r.RS256="RS256",r.RS384="RS384",r.RS512="RS512",r.PS256="PS256",r.PS384="PS384",r.PS512="PS512",r.ES256="ES256",r.ES384="ES384",r.ES512="ES512",r.EdDSA="EdDSA",r))(Sa||{})});var bre,CR,vre,ER=j(()=>{bre={deno:"Deno",bun:"Bun",workerd:"Cloudflare-Workers",node:"Node.js"},CR=()=>{let r=globalThis;if(typeof navigator<"u"&&typeof navigator.userAgent=="string"){for(let[t,i]of Object.entries(bre))if(vre(i))return t}return typeof r?.EdgeRuntime=="string"?"edge-light":r?.fastly!==void 0?"fastly":r?.process?.release?.name==="node"?"node":"other"},vre=r=>navigator.userAgent.startsWith(r)});var BR,j1,$1,jc,bR,vR,kR,jI,V1,SR,DR,QR,_R,FR,PR,Ld,Y1=j(()=>{BR=class extends Error{constructor(r){super(`${r} is not an implemented algorithm`),this.name="JwtAlgorithmNotImplemented"}},j1=class extends Error{constructor(){super('JWT verification requires "alg" option to be specified'),this.name="JwtAlgorithmRequired"}},$1=class extends Error{constructor(r,e){super(`JWT algorithm mismatch: expected "${r}", got "${e}"`),this.name="JwtAlgorithmMismatch"}},jc=class extends Error{constructor(r){super(`invalid JWT token: ${r}`),this.name="JwtTokenInvalid"}},bR=class extends Error{constructor(r){super(`token (${r}) is being used before it's valid`),this.name="JwtTokenNotBefore"}},vR=class extends Error{constructor(r){super(`token (${r}) expired`),this.name="JwtTokenExpired"}},kR=class extends Error{constructor(r,e){super(`Invalid "iat" claim, must be a valid number lower than "${r}" (iat: "${e}")`),this.name="JwtTokenIssuedAt"}},jI=class extends Error{constructor(r,e){super(`expected issuer "${r}", got ${e?`"${e}"`:"none"} `),this.name="JwtTokenIssuer"}},V1=class extends Error{constructor(r){super(`jwt header is invalid: ${JSON.stringify(r)}`),this.name="JwtHeaderInvalid"}},SR=class extends Error{constructor(r){super(`required "kid" in jwt header: ${JSON.stringify(r)}`),this.name="JwtHeaderRequiresKid"}},DR=class extends Error{constructor(r){super(`symmetric algorithm "${r}" is not allowed for JWK verification`),this.name="JwtSymmetricAlgorithmNotAllowed"}},QR=class extends Error{constructor(r,e){super(`algorithm "${r}" is not in the allowed list: [${e.join(", ")}]`),this.name="JwtAlgorithmNotAllowed"}},_R=class extends Error{constructor(r){super(`token(${r}) signature mismatched`),this.name="JwtTokenSignatureMismatched"}},FR=class extends Error{constructor(r){super(`required "aud" in jwt payload: ${JSON.stringify(r)}`),this.name="JwtPayloadRequiresAud"}},PR=class extends Error{constructor(r,e){super(`expected audience "${Array.isArray(r)?r.join(", "):r}", got "${e}"`),this.name="JwtTokenAudience"}},Ld=(r=>(r.Encrypt="encrypt",r.Decrypt="decrypt",r.Sign="sign",r.Verify="verify",r.DeriveKey="deriveKey",r.DeriveBits="deriveBits",r.WrapKey="wrapKey",r.UnwrapKey="unwrapKey",r))(Ld||{})});var $c,TR,W1=j(()=>{$c=new TextEncoder,TR=new TextDecoder});async function RR(r,e,t){let i=qR(e),n=await kre(r,i);return await crypto.subtle.sign(i,n,t)}async function NR(r,e,t,i){let n=qR(e),s=await Sre(r,n);return await crypto.subtle.verify(n,s,t,i)}function X1(r){return G1(r.replace(/-+(BEGIN|END).*?-+/g,"").replace(/\s/g,""))}async function kre(r,e){if(!crypto.subtle||!crypto.subtle.importKey)throw new Error("`crypto.subtle.importKey` is undefined. JWT auth middleware requires it.");if(OR(r)){if(r.type!=="private"&&r.type!=="secret")throw new Error(`unexpected key type: CryptoKey.type is ${r.type}, expected private or secret`);return r}let t=[Ld.Sign];return typeof r=="object"?await crypto.subtle.importKey("jwk",r,e,!1,t):r.includes("PRIVATE")?await crypto.subtle.importKey("pkcs8",X1(r),e,!1,t):await crypto.subtle.importKey("raw",$c.encode(r),e,!1,t)}async function Sre(r,e){if(!crypto.subtle||!crypto.subtle.importKey)throw new Error("`crypto.subtle.importKey` is undefined. JWT auth middleware requires it.");if(OR(r)){if(r.type==="public"||r.type==="secret")return r;r=await UR(r)}if(typeof r=="string"&&r.includes("PRIVATE")){let i=await crypto.subtle.importKey("pkcs8",X1(r),e,!0,[Ld.Sign]);r=await UR(i)}let t=[Ld.Verify];return typeof r=="object"?await crypto.subtle.importKey("jwk",r,e,!1,t):r.includes("PUBLIC")?await crypto.subtle.importKey("spki",X1(r),e,!1,t):await crypto.subtle.importKey("raw",$c.encode(r),e,!1,t)}async function UR(r){if(r.type!=="private")throw new Error(`unexpected key type: ${r.type}`);if(!r.extractable)throw new Error("unexpected private key is unextractable");let e=await crypto.subtle.exportKey("jwk",r),{kty:t}=e,{alg:i,e:n,n:s}=e,{crv:o,x:a,y:c}=e;return{kty:t,alg:i,e:n,n:s,crv:o,x:a,y:c,key_ops:[Ld.Verify]}}function qR(r){switch(r){case"HS256":return{name:"HMAC",hash:{name:"SHA-256"}};case"HS384":return{name:"HMAC",hash:{name:"SHA-384"}};case"HS512":return{name:"HMAC",hash:{name:"SHA-512"}};case"RS256":return{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}};case"RS384":return{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-384"}};case"RS512":return{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-512"}};case"PS256":return{name:"RSA-PSS",hash:{name:"SHA-256"},saltLength:32};case"PS384":return{name:"RSA-PSS",hash:{name:"SHA-384"},saltLength:48};case"PS512":return{name:"RSA-PSS",hash:{name:"SHA-512"},saltLength:64};case"ES256":return{name:"ECDSA",hash:{name:"SHA-256"},namedCurve:"P-256"};case"ES384":return{name:"ECDSA",hash:{name:"SHA-384"},namedCurve:"P-384"};case"ES512":return{name:"ECDSA",hash:{name:"SHA-512"},namedCurve:"P-521"};case"EdDSA":return{name:"Ed25519",namedCurve:"Ed25519"};default:throw new BR(r)}}function OR(r){return CR()==="node"&&crypto.webcrypto?r instanceof crypto.webcrypto.CryptoKey:r instanceof CryptoKey}var MR=j(()=>{ER();z1();Y1();W1()});function LR(r){if(typeof r=="object"&&r!==null){let e=r;return"alg"in e&&Object.values(Sa).includes(e.alg)&&(!("typ"in e)||e.typ==="JWT")}return!1}var Z1,Dre,e2,HR,t2,Qre,KR,r2,_re,GR=j(()=>{z1();J1();MR();Y1();W1();Z1=r=>K1($c.encode(JSON.stringify(r)).buffer).replace(/=/g,""),Dre=r=>K1(r).replace(/=/g,""),e2=r=>JSON.parse(TR.decode(H1(r)));HR=async(r,e,t="HS256")=>{let i=Z1(r),n;typeof e=="object"&&"alg"in e?(t=e.alg,n=Z1({alg:t,typ:"JWT",kid:e.kid})):n=Z1({alg:t,typ:"JWT"});let s=`${n}.${i}`,o=await RR(e,t,$c.encode(s)),a=Dre(o);return`${s}.${a}`},t2=async(r,e,t)=>{if(!t)throw new j1;let{alg:i,iss:n,nbf:s=!0,exp:o=!0,iat:a=!0,aud:c}=typeof t=="string"?{alg:t}:t;if(!i)throw new j1;let l=r.split(".");if(l.length!==3)throw new jc(r);let{header:d,payload:u}=r2(r);if(!LR(d))throw new V1(d);if(d.alg!==i)throw new $1(i,d.alg);let f=Math.floor(Date.now()/1e3);if(s&&u.nbf!==void 0&&(typeof u.nbf!="number"||!Number.isFinite(u.nbf)||u.nbf>f))throw new bR(r);if(o&&u.exp!==void 0&&(typeof u.exp!="number"||!Number.isFinite(u.exp)||u.exp<=f))throw new vR(r);if(a&&u.iat!==void 0&&(typeof u.iat!="number"||!Number.isFinite(u.iat)||f<u.iat))throw new kR(f,u.iat);if(n){if(!u.iss)throw new jI(n,null);if(typeof n=="string"&&u.iss!==n)throw new jI(n,u.iss);if(n instanceof RegExp&&!n.test(u.iss))throw new jI(n,u.iss)}if(c){if(!u.aud)throw new FR(u);if(!(Array.isArray(u.aud)?u.aud:[u.aud]).some(y=>c instanceof RegExp?c.test(y):typeof c=="string"?y===c:Array.isArray(c)&&c.includes(y)))throw new PR(c,u.aud)}let h=r.substring(0,r.lastIndexOf("."));if(!await NR(e,i,H1(l[2]),$c.encode(h)))throw new _R(r);return u},Qre=[Sa.HS256,Sa.HS384,Sa.HS512],KR=async(r,e,t)=>{let i=e.verification||{},n=_re(r);if(!LR(n))throw new V1(n);if(!n.kid)throw new SR(n);if(Qre.includes(n.alg))throw new DR(n.alg);if(!e.allowedAlgorithms.includes(n.alg))throw new QR(n.alg,e.allowedAlgorithms);let s=e.keys?[...e.keys]:void 0;if(e.jwks_uri){let a=await fetch(e.jwks_uri,t);if(!a.ok)throw new Error(`failed to fetch JWKS from ${e.jwks_uri}`);let c=await a.json();if(!c.keys)throw new Error('invalid JWKS response. "keys" field is missing');if(!Array.isArray(c.keys))throw new Error('invalid JWKS response. "keys" field is not an array');s??=[],s.push(...c.keys)}else if(!s)throw new Error('verifyWithJwks requires options for either "keys" or "jwks_uri" or both');let o=s.find(a=>a.kid===n.kid);if(!o)throw new jc(r);if(o.alg&&o.alg!==n.alg)throw new $1(o.alg,n.alg);return await t2(r,o,{alg:n.alg,...i})},r2=r=>{let e=r.split(".");if(e.length!==3)throw new jc(r);try{let t=e2(e[0]),i=e2(e[1]);return{header:t,payload:i}}catch{throw new jc(r)}},_re=r=>{let e=r.split(".");if(e.length!==3)throw new jc(r);try{return e2(e[0])}catch{throw new jc(r)}}});var Hd,zR=j(()=>{GR();Hd={sign:HR,verify:t2,decode:r2,verifyWithJwks:KR}});function i2(r){let e=(r.realm??r.ctx.req.url).replace(/"/g,'\\"'),t=r.errDescription.replace(/"/g,'\\"');return new Response("Unauthorized",{status:401,statusText:r.statusText,headers:{"WWW-Authenticate":`Bearer realm="${e}",error="${r.error}",error_description="${t}"`}})}var JR,jR,uo,$R,fo,VR=j(()=>{xR();ax();zR();R0();JR=r=>{let e=r.verification||{};if(!r||!r.secret)throw new Error('JWT auth middleware requires options for "secret"');if(!r.alg)throw new Error('JWT auth middleware requires options for "alg"');if(!crypto.subtle||!crypto.subtle.importKey)throw new Error("`crypto.subtle.importKey` is undefined. JWT auth middleware requires it.");return async function(i,n){let s=r.headerName||"Authorization",o=i.req.raw.headers.get(s),a;if(o){let d=o.split(/\s+/);if(d.length!==2||d[0].toLowerCase()!=="bearer"){let u="invalid credentials structure";throw new xu(401,{message:u,res:i2({ctx:i,error:"invalid_request",errDescription:u,realm:r.realm})})}else a=d[1]}else r.cookie&&(typeof r.cookie=="string"?a=JI(i,r.cookie):r.cookie.secret?r.cookie.prefixOptions?a=await L1(i,r.cookie.secret,r.cookie.key,r.cookie.prefixOptions):a=await L1(i,r.cookie.secret,r.cookie.key):r.cookie.prefixOptions?a=JI(i,r.cookie.key,r.cookie.prefixOptions):a=JI(i,r.cookie.key));if(!a){let d="no authorization included in request";throw new xu(401,{message:d,res:i2({ctx:i,error:"invalid_request",errDescription:d,realm:r.realm})})}let c,l;try{c=await Hd.verify(a,r.secret,{alg:r.alg,...e})}catch(d){l=d}if(!c)throw new xu(401,{message:"Unauthorized",res:i2({ctx:i,error:"invalid_token",statusText:"Unauthorized",errDescription:"token verification failure",realm:r.realm}),cause:l});i.set("jwtPayload",c),await n()}};jR=Hd.verifyWithJwks,uo=Hd.verify,$R=Hd.decode,fo=Hd.sign});var $I={};xn($I,{AlgorithmTypes:()=>Sa,decode:()=>$R,jwt:()=>JR,sign:()=>fo,verify:()=>uo,verifyWithJwks:()=>jR});var Ao=j(()=>{VR();J1()});function YR(r,e){let t=`<?xml version="1.0" encoding="utf-8" ?> `;t+=`<d:multistatus xmlns:d="DAV:"> `,t+=` <d:response> `,t+=` <d:href>${r}</d:href> @@ -234,54 +250,55 @@ ${y}${w}`,b=await hu(C,d.secretAccessKey),x=`OSS ${d.accessKeyID}:${b}`,_={"Cont `,t+=` <d:status>HTTP/1.1 200 OK</d:status> `,t+=` </d:propstat> `,t+=` </d:response> -`}return t+="</d:multistatus>",t}var wR=V(()=>{"use strict"});function Ne(r,e="Internal server error"){if(!r)return e;let t=typeof r=="string"?r:r?.message||String(r);if(!t)return e;let i=String(t);return i.length>200||/[A-Za-z]:[\\/][^\\/\s]|[\\/][A-Za-z0-9_.-]+[\\/][A-Za-z0-9_.-]/.test(i)&&/\.(ts|js|mjs|cjs|json|toml|yml|yaml)/i.test(i)||/at .*\(|at [A-Za-z0-9_.-]+:[0-9]+:[0-9]+/.test(i)?e:i}var Jc,Xwe,Sa=V(()=>{"use strict";Jc=class extends Error{constructor(t,i,n){super(i);this.code=t;this.message=i;this.originalError=n;this.name="OpenListError"}code;message;originalError},Xwe={PathNotFound:new Jc(1004,"Path not found"),NotReady:new Jc(1003,"Storage not ready"),InvalidConfig:new Jc(1001,"Invalid configuration"),Unauthorized:new Jc(401,"Unauthorized access"),Forbidden:new Jc(403,"Permission denied")}});var xR=V(()=>{"use strict"});var CR=V(()=>{"use strict"});async function qd(r){if(await M1(r))return!0;let e=r.req.header("Authorization");if(!e)return!1;let t=e.startsWith("Bearer ")?e.substring(7):e;try{let{verify:i}=await Promise.resolve().then(()=>(fo(),RI)),{getJwtSecret:n}=await Promise.resolve().then(()=>(Di(),NI)),s=await n(r),o=await i(t,s,"HS256");if(o&&o.role===2){let c=((await ne(r.env)).users||[]).find(l=>l.id===o.id||l.username===o.username);return!!(c&&!c.disabled)}}catch{}return!1}async function M1(r){let e=r.req.header("Authorization");if(!e)return!1;let t=e.startsWith("Bearer ")?e.substring(7):e,n=(await ne(r.env)).settings.find(c=>c.key==="token");if(!n||!n.value)return!1;let s=new TextEncoder().encode(t),o=new TextEncoder().encode(String(n.value));if(s.length!==o.length)return!1;let a=0;for(let c=0;c<s.length;c++)a|=s[c]^o[c];return a===0}var hA=V(()=>{"use strict";Ve();wR();Sa();xR();oc();ni();CR()});var gA={};qn(gA,{cleanupExpiredLogs:()=>Vte,getAuditStats:()=>Yte,loadAuditLogsFromKV:()=>zte,logAudit:()=>Kte,queryAuditLogs:()=>Gte});async function Kte(r,e){let t={id:jte(),timestamp:new Date().toISOString(),...r};cn.push(t),cn.length>1e3&&(cn=cn.slice(-1e3)),e&&Jte(t,e).catch(i=>{console.warn("[Audit] Failed to persist log to KV:",i)}),$te(e)&&console.log(`[AUDIT] ${t.username} ${t.method} ${t.resource} - ${t.status} (${t.status_code})`)}function Gte(r){let e=[...cn];r?.username&&(e=e.filter(i=>i.username===r.username)),r?.action&&(e=e.filter(i=>i.action.includes(r.action))),r?.method&&(e=e.filter(i=>i.method.toUpperCase()===r.method.toUpperCase())),r?.status&&(e=e.filter(i=>i.status===r.status)),r?.startDate&&(e=e.filter(i=>i.timestamp>=r.startDate)),r?.endDate&&(e=e.filter(i=>i.timestamp<=r.endDate));let t=r?.limit||100;return e.slice(-t).reverse()}async function zte(r){try{let{getKvBinding:e}=await Promise.resolve().then(()=>(Ve(),Kr)),t=await e(r);if(t.mode==="none"||!t.binding)return[];let{binding:i,mode:n}=t,s=null;if(n==="blob")s=await i.get(Ao);else try{s=await i.get(Ao,"text")}catch{s=await i.get(Ao)}if(s&&typeof s.text=="function"&&(s=await s.text()),!s)return[];let o=JSON.parse(String(s));return Array.isArray(o)?o:[]}catch(e){return console.warn("[Audit] Failed to load logs from KV:",e),[]}}async function Jte(r,e){try{let{getKvBinding:t}=await Promise.resolve().then(()=>(Ve(),Kr)),i=await t(e);if(i.mode==="none"||!i.binding)return;let{binding:n,mode:s}=i,o=[];try{let c=null;s==="blob"?c=await n.get(Ao):c=await n.get(Ao,"text"),c&&typeof c.text=="function"&&(c=await c.text()),c&&(o=JSON.parse(String(c)))}catch{}Array.isArray(o)||(o=[]),o.push(r),o.length>1e4&&(o=o.slice(-1e4));let a=JSON.stringify(o);s==="blob"?typeof n.set=="function"?await n.set(Ao,a):typeof n.put=="function"&&await n.put(Ao,a):typeof n.put=="function"?await n.put(Ao,a):typeof n.set=="function"&&await n.set(Ao,a)}catch(t){console.warn("[Audit] Persist to KV failed:",t)}}function jte(){if(typeof crypto<"u"&&typeof crypto.randomUUID=="function")return crypto.randomUUID();let r=Date.now().toString(36),e=Math.random().toString(36).substring(2,9);return`${r}-${e}`}function $te(r){let e=r||(typeof process<"u"?process.env:{});return e?.ENVIRONMENT==="development"||e?.NODE_ENV==="development"}function Vte(r=30){let e=new Date;e.setDate(e.getDate()-r);let t=e.toISOString();cn=cn.filter(i=>i.timestamp>=t)}function Yte(){let r=cn.length,e=cn.filter(o=>o.status==="success").length,t=cn.filter(o=>o.status==="failure").length,i=new Set(cn.map(o=>o.username)).size,n=new Map;cn.forEach(o=>{let a=n.get(o.action)||0;n.set(o.action,a+1)});let s=Array.from(n.entries()).map(([o,a])=>({action:o,count:a})).sort((o,a)=>a.count-o.count).slice(0,10);return{total:r,success:e,failure:t,uniqueUsers:i,recentActions:s}}var cn,Ao,pA=V(()=>{"use strict";cn=[],Ao="openlist_audit_logs"});var NI={};qn(NI,{adminAuthMiddleware:()=>Qi,auditMiddleware:()=>rre,csrfProtection:()=>tre,generateCSRFToken:()=>z1,getJwtSecret:()=>vr,getUserFromContext:()=>Me,isTokenRevoked:()=>qI,matchCronSecret:()=>G1,resetJwtSecretCache:()=>Wte,revokeToken:()=>K1});function Wte(){ho=null}function bR(){let r=new Uint8Array(32);return crypto.getRandomValues(r),Array.from(r,e=>e.toString(16).padStart(2,"0")).join("")}async function Xte(r){try{let{readPersistedSecret:e}=await Promise.resolve().then(()=>(Ve(),Kr));return await e(r,BR)}catch(e){return console.warn("[JWT] Failed to read secret from KV:",e),null}}async function Zte(r,e){try{let{writePersistedSecret:t}=await Promise.resolve().then(()=>(Ve(),Kr));return await t(r,BR,e)}catch(t){return console.warn("[JWT] Failed to persist secret to KV:",t),!1}}async function vr(r){let e=r?.env||(typeof process<"u"?process.env:{})||{},t=e.JWT_SECRET;if(t&&t.length>=32)return t;if(t&&t.length>=16)return console.warn("[JWT] JWT_SECRET \u957F\u5EA6\u4E0D\u8DB3 32 \u5B57\u7B26\uFF0C\u5EFA\u8BAE\u4F7F\u7528\u66F4\u957F\u7684\u5BC6\u94A5\u4EE5\u63D0\u9AD8\u5B89\u5168\u6027\u3002"),t;if(ho&&ho.length>=32)return ho;let i=await Xte(e);if(i&&i.length>=32)return ho=i,i;let n=e.NODE_ENV==="production"||e.ENVIRONMENT==="production"||e.CF_PAGES==="1"||e.WORKERS_ENV==="production";if(!ho){ho=bR();let s=await Zte(e,ho);n?console.error("[JWT] \u26A0\uFE0F \u{1F534} \u751F\u4EA7\u73AF\u5883\u5B89\u5168\u8B66\u544A\uFF1AJWT_SECRET \u672A\u914D\u7F6E\uFF01"+(s?` +`}return t+="</d:multistatus>",t}var WR=j(()=>{"use strict"});function Ne(r,e="Internal server error"){if(!r)return e;let t=typeof r=="string"?r:r?.message||String(r);if(!t)return e;let i=String(t);return i.length>200||/[A-Za-z]:[\\/][^\\/\s]|[\\/][A-Za-z0-9_.-]+[\\/][A-Za-z0-9_.-]/.test(i)&&/\.(ts|js|mjs|cjs|json|toml|yml|yaml)/i.test(i)||/at .*\(|at [A-Za-z0-9_.-]+:[0-9]+:[0-9]+/.test(i)?e:i}var Vc,Gxe,Da=j(()=>{"use strict";Vc=class extends Error{constructor(t,i,n){super(i);this.code=t;this.message=i;this.originalError=n;this.name="OpenListError"}code;message;originalError},Gxe={PathNotFound:new Vc(1004,"Path not found"),NotReady:new Vc(1003,"Storage not ready"),InvalidConfig:new Vc(1001,"Invalid configuration"),Unauthorized:new Vc(401,"Unauthorized access"),Forbidden:new Vc(403,"Permission denied")}});var XR=j(()=>{"use strict"});var ZR=j(()=>{"use strict"});async function Kd(r){if(await n2(r))return!0;let e=r.req.header("Authorization");if(!e)return!1;let t=e.startsWith("Bearer ")?e.substring(7):e;try{let{verify:i}=await Promise.resolve().then(()=>(Ao(),$I)),{getJwtSecret:n}=await Promise.resolve().then(()=>(Qi(),VI)),s=await n(r),o=await i(t,s,"HS256");if(o&&o.role===2){let c=((await ne(r.env)).users||[]).find(l=>l.id===o.id||l.username===o.username);return!!(c&&!c.disabled)}}catch{}return!1}async function n2(r){let e=r.req.header("Authorization");if(!e)return!1;let t=e.startsWith("Bearer ")?e.substring(7):e,n=(await ne(r.env)).settings.find(c=>c.key==="token");if(!n||!n.value)return!1;let s=new TextEncoder().encode(t),o=new TextEncoder().encode(String(n.value));if(s.length!==o.length)return!1;let a=0;for(let c=0;c<s.length;c++)a|=s[c]^o[c];return a===0}var bA=j(()=>{"use strict";Ve();WR();Da();XR();lc();si();ZR()});var vA={};xn(vA,{cleanupExpiredLogs:()=>qre,getAuditStats:()=>Ore,loadAuditLogsFromKV:()=>Tre,logAudit:()=>Fre,queryAuditLogs:()=>Pre});async function Fre(r,e){let t={id:Rre(),timestamp:new Date().toISOString(),...r};ln.push(t),ln.length>1e3&&(ln=ln.slice(-1e3)),e&&Ure(t,e).catch(i=>{console.warn("[Audit] Failed to persist log to KV:",i)}),Nre(e)&&console.log(`[AUDIT] ${t.username} ${t.method} ${t.resource} - ${t.status} (${t.status_code})`)}function Pre(r){let e=[...ln];r?.username&&(e=e.filter(i=>i.username===r.username)),r?.action&&(e=e.filter(i=>i.action.includes(r.action))),r?.method&&(e=e.filter(i=>i.method.toUpperCase()===r.method.toUpperCase())),r?.status&&(e=e.filter(i=>i.status===r.status)),r?.startDate&&(e=e.filter(i=>i.timestamp>=r.startDate)),r?.endDate&&(e=e.filter(i=>i.timestamp<=r.endDate));let t=r?.limit||100;return e.slice(-t).reverse()}async function Tre(r){try{let{getKvBinding:e}=await Promise.resolve().then(()=>(Ve(),Gr)),t=await e(r);if(t.mode==="none"||!t.binding)return[];let{binding:i,mode:n}=t,s=null;if(n==="blob")s=await i.get(ho);else try{s=await i.get(ho,"text")}catch{s=await i.get(ho)}if(s&&typeof s.text=="function"&&(s=await s.text()),!s)return[];let o=JSON.parse(String(s));return Array.isArray(o)?o:[]}catch(e){return console.warn("[Audit] Failed to load logs from KV:",e),[]}}async function Ure(r,e){try{let{getKvBinding:t}=await Promise.resolve().then(()=>(Ve(),Gr)),i=await t(e);if(i.mode==="none"||!i.binding)return;let{binding:n,mode:s}=i,o=[];try{let c=null;s==="blob"?c=await n.get(ho):c=await n.get(ho,"text"),c&&typeof c.text=="function"&&(c=await c.text()),c&&(o=JSON.parse(String(c)))}catch{}Array.isArray(o)||(o=[]),o.push(r),o.length>1e4&&(o=o.slice(-1e4));let a=JSON.stringify(o);s==="blob"?typeof n.set=="function"?await n.set(ho,a):typeof n.put=="function"&&await n.put(ho,a):typeof n.put=="function"?await n.put(ho,a):typeof n.set=="function"&&await n.set(ho,a)}catch(t){console.warn("[Audit] Persist to KV failed:",t)}}function Rre(){if(typeof crypto<"u"&&typeof crypto.randomUUID=="function")return crypto.randomUUID();let r=Date.now().toString(36),e=Math.random().toString(36).substring(2,9);return`${r}-${e}`}function Nre(r){let e=r||(typeof process<"u"?process.env:{});return e?.ENVIRONMENT==="development"||e?.NODE_ENV==="development"}function qre(r=30){let e=new Date;e.setDate(e.getDate()-r);let t=e.toISOString();ln=ln.filter(i=>i.timestamp>=t)}function Ore(){let r=ln.length,e=ln.filter(o=>o.status==="success").length,t=ln.filter(o=>o.status==="failure").length,i=new Set(ln.map(o=>o.username)).size,n=new Map;ln.forEach(o=>{let a=n.get(o.action)||0;n.set(o.action,a+1)});let s=Array.from(n.entries()).map(([o,a])=>({action:o,count:a})).sort((o,a)=>a.count-o.count).slice(0,10);return{total:r,success:e,failure:t,uniqueUsers:i,recentActions:s}}var ln,ho,kA=j(()=>{"use strict";ln=[],ho="openlist_audit_logs"});var VI={};xn(VI,{adminAuthMiddleware:()=>_i,auditMiddleware:()=>zre,csrfProtection:()=>Gre,generateCSRFToken:()=>l2,getJwtSecret:()=>kr,getUserFromContext:()=>Me,isTokenRevoked:()=>YI,matchCronSecret:()=>c2,resetJwtSecretCache:()=>Mre,revokeToken:()=>a2});function Mre(){go=null}function rN(){let r=new Uint8Array(32);return crypto.getRandomValues(r),Array.from(r,e=>e.toString(16).padStart(2,"0")).join("")}async function Lre(r){try{let{readPersistedSecret:e}=await Promise.resolve().then(()=>(Ve(),Gr));return await e(r,tN)}catch(e){return console.warn("[JWT] Failed to read secret from KV:",e),null}}async function Hre(r,e){try{let{writePersistedSecret:t}=await Promise.resolve().then(()=>(Ve(),Gr));return await t(r,tN,e)}catch(t){return console.warn("[JWT] Failed to persist secret to KV:",t),!1}}async function kr(r){let e=r?.env||(typeof process<"u"?process.env:{})||{},t=e.JWT_SECRET;if(t&&t.length>=16)return t;if(go&&go.length>=32)return go;let i=await Lre(e);if(i&&i.length>=32)return go=i,i;let n=e.NODE_ENV==="production"||e.ENVIRONMENT==="production"||e.CF_PAGES==="1"||e.WORKERS_ENV==="production";if(!go){go=rN();let s=await Hre(e,go);n?console.error("[JWT] \u26A0\uFE0F \u{1F534} \u751F\u4EA7\u73AF\u5883\u5B89\u5168\u8B66\u544A\uFF1AJWT_SECRET \u672A\u914D\u7F6E\uFF01"+(s?` \u2705 \u5DF2\u81EA\u52A8\u751F\u6210\u5BC6\u94A5\u5E76\u6301\u4E45\u5316\u5230 KV\u3002\u6B64\u5BC6\u94A5\u5C06\u6301\u7EED\u4F7F\u7528\uFF0C\u4F46\u5F3A\u70C8\u5EFA\u8BAE\u624B\u52A8\u914D\u7F6E JWT_SECRET \u73AF\u5883\u53D8\u91CF\u4EE5\u63D0\u9AD8\u5B89\u5168\u6027\u3002`:` \u274C \u65E0\u6CD5\u6301\u4E45\u5316\u5BC6\u94A5\u5230 KV\uFF01\u5BC6\u94A5\u4EC5\u5B58\u4E8E\u5185\u5B58\uFF0C\u91CD\u542F\u540E\u6240\u6709 token \u5C06\u5931\u6548\u3002\u8BF7\u7ACB\u5373\u914D\u7F6E JWT_SECRET \u73AF\u5883\u53D8\u91CF\uFF01`)+` \u{1F512} \u5B89\u5168\u5EFA\u8BAE\uFF1A\u751F\u6210\u5BC6\u94A5\u547D\u4EE4: openssl rand -hex 32`):console.warn("[JWT] \u26A0\uFE0F \u5F00\u53D1\u73AF\u5883\u8B66\u544A\uFF1AJWT_SECRET \u672A\u914D\u7F6E\uFF0C\u4F7F\u7528\u4E34\u65F6\u968F\u673A\u5BC6\u94A5\u3002"+(s?"\u5BC6\u94A5\u5DF2\u6301\u4E45\u5316\u5230 KV\uFF0C\u91CD\u542F\u540E\u4FDD\u6301\u6709\u6548\u3002":"\u5BC6\u94A5\u4EC5\u5B58\u4E8E\u5185\u5B58\uFF0C\u91CD\u542F\u540E\u6240\u6709 token \u5C06\u5931\u6548\u3002")+` -\u751F\u4EA7\u73AF\u5883\u90E8\u7F72\u524D\uFF0C\u8BF7\u52A1\u5FC5\u914D\u7F6E >=32 \u5B57\u7B26\u7684 JWT_SECRET \u73AF\u5883\u53D8\u91CF\u3002`)}return ho}async function ere(r){if(!ER){ER=!0;try{let{getKvBinding:e}=await Promise.resolve().then(()=>(Ve(),Kr)),t=await e(r);if(t.mode==="none"||!t.binding)return;let{binding:i,mode:n}=t,s=null;if(n==="blob")s=await i.get(fs);else try{s=await i.get(fs,"text")}catch{s=await i.get(fs)}if(s&&typeof s.text=="function"&&(s=await s.text()),!s)return;let o=JSON.parse(String(s)),a=Math.floor(Date.now()/1e3);for(let c of o)c&&c.jti&&c.exp>a&&H1.add(c.jti)}catch{}}}async function K1(r,e,t){if(r){H1.add(r);try{let{getKvBinding:i}=await Promise.resolve().then(()=>(Ve(),Kr)),n=await i(t);if(n.mode==="none"||!n.binding)return;let{binding:s,mode:o}=n,a=[];if(o==="blob"){let d=await s.get(fs);d&&(a=typeof d=="string"?JSON.parse(d):d)}else try{let d=await s.get(fs,"text");d&&(a=JSON.parse(String(d)))}catch{let d=await s.get(fs);d&&(a=typeof d=="string"?JSON.parse(d):d)}let c=Math.floor(Date.now()/1e3);a=a.filter(d=>d&&d.exp>c),a.push({jti:r,exp:e});let l=JSON.stringify(a);o==="blob"?typeof s.set=="function"?await s.set(fs,l):typeof s.put=="function"&&await s.put(fs,l):typeof s.put=="function"?await s.put(fs,l):typeof s.set=="function"&&await s.set(fs,l)}catch(i){console.warn("[JWT] Failed to persist revoked token to KV:",i)}}}async function qI(r,e){return r?(await ere(e),H1.has(r)):!1}async function Qi(r,e){if(!await qd(r))return r.json({code:401,message:"Unauthorized admin privilege required",data:null},401);await e()}function L1(r,e){if(r.length!==e.length)return!1;let t=0;for(let i=0;i<r.length;i++)t|=r.charCodeAt(i)^e.charCodeAt(i);return t===0}async function G1(r){let t=(r?.env||{}).JWT_SECRET||(typeof process<"u"?process.env?.JWT_SECRET:"");if(!t||typeof t!="string")return!1;let i=r.req.header("x-cron-secret");if(i&&L1(i,t))return!0;let n=r.req.query("cron_secret");if(n&&L1(n,t))return!0;try{let o=(await r.req.json())?.cron_secret;if(typeof o=="string"&&o.length>0&&L1(o,t))return!0}catch{}return!1}async function z1(r){let{sign:e}=await Promise.resolve().then(()=>(fo(),RI)),t=await vr(r);return await e({type:"csrf",jti:crypto.randomUUID?crypto.randomUUID():bR().slice(0,16),exp:Math.floor(Date.now()/1e3)+3600},t)}async function tre(r,e){let t=r.req.method.toUpperCase();if(["GET","HEAD","OPTIONS"].includes(t))return e();let i=r.req.header("x-csrf-token")||r.req.header("X-CSRF-Token");if(!i)return r.json({code:403,message:"CSRF token missing. Please include X-CSRF-Token header.",data:null},403);try{let{verify:n}=await Promise.resolve().then(()=>(fo(),RI)),s=await vr(r);if((await n(i,s,"HS256")).type!=="csrf")throw new Error("Invalid token type");await e()}catch{return r.json({code:403,message:"Invalid or expired CSRF token",data:null},403)}}async function rre(r,e){let t=Date.now(),i=r.req.method.toUpperCase(),n=r.req.path,s=["POST","PUT","DELETE","PATCH"].includes(i);if(await e(),s)try{let{logAudit:o}=await Promise.resolve().then(()=>(pA(),gA)),a=await Me(r).catch(()=>null),c=Date.now()-t,l=r.res.status||200,d=l>=200&&l<400?"success":"failure",u=r.req.header("cf-connecting-ip")||r.req.header("x-real-ip")||r.req.header("x-forwarded-for")?.split(",")[0]?.trim()||"unknown";await o({user_id:a?.id,username:a?.username||"anonymous",ip:u,action:`${i} ${n}`,resource:n,method:i,status:d,status_code:l,details:JSON.stringify({duration_ms:c}),user_agent:r.req.header("user-agent"),duration_ms:c},r.env)}catch(o){console.warn("[Audit] Failed to log:",o)}}async function Me(r){if(await M1(r))return{role:2,permission:0,disabled:!1,username:"api-token",base_path:"/"};let e=r.req.header("Authorization");if(!e){let i=r.req.query("token")||r.req.query("access_token");i&&(e=`Bearer ${i}`)}if(!e){try{let n=((await ne(r.env)).users||[]).find(s=>s.username==="guest");if(n&&!n.disabled)return{id:n.id,role:n.role??1,permission:n.permission??0,disabled:!!n.disabled,username:n.username,base_path:n.base_path||"/",sso_id:n.sso_id||"",allow_ldap:!!n.allow_ldap,otp_secret:n.otp_secret}}catch{}return null}let t=e.startsWith("Bearer ")?e.substring(7):e;try{let i=await vr(r),n=await lo(t,i,"HS256");if(await qI(n?.jti,r.env))return null;let o=((await ne(r.env)).users||[]).find(a=>a.id===n.id||a.username===n.username);return!o||o.disabled?null:{id:o.id,role:o.role,permission:o.permission??0,disabled:!!o.disabled,username:o.username,base_path:o.base_path||"/",sso_id:o.sso_id||"",allow_ldap:!!o.allow_ldap,otp_secret:o.otp_secret}}catch{return null}}var ho,BR,fs,H1,ER,Di=V(()=>{"use strict";fo();hA();Ve();ho=null,BR="openlist_jwt_secret";fs="openlist_revoked_tokens",H1=new Set,ER=!1});var sN=oe(YI=>{"use strict";Object.defineProperty(YI,"__esModule",{value:!0});function eie(r){return r&&typeof r=="object"&&"default"in r?r.default:r}var nN=eie(wt("crypto")),tie=(r,e,t)=>nN.createHmac(r,Buffer.from(e,"hex")).update(Buffer.from(t,"hex")).digest().toString("hex"),rie=(r,e)=>nN.randomBytes(r).toString(e);YI.createDigest=tie;YI.createRandomBytes=rie});var aN=oe(w2=>{"use strict";var iie="ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",oN=[255,255,26,27,28,29,30,31,255,255,255,255,255,255,255,255,255,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,255,255,255,255,255,255,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,255,255,255,255,255];function nie(r){var e=Math.floor(r.length/5);return r.length%5===0?e:e+1}w2.encode=function(r){Buffer.isBuffer(r)||(r=new Buffer(r));for(var e=0,t=0,i=0,n=0,s=new Buffer(nie(r)*8);e<r.length;){var o=r[e];i>3?(n=o&255>>i,i=(i+5)%8,n=n<<i|(e+1<r.length?r[e+1]:0)>>8-i,e++):(n=o>>8-(i+5)&31,i=(i+5)%8,i===0&&e++),s[t]=iie.charCodeAt(n),t++}for(e=t;e<s.length;e++)s[e]=61;return s};w2.decode=function(r){var e=0,t=0,i,n=0;Buffer.isBuffer(r)||(r=new Buffer(r));for(var s=new Buffer(Math.ceil(r.length*5/8)),o=0;o<r.length&&r[o]!==61;o++){var a=r[o]-48;if(a<oN.length)t=oN[a],e<=3?(e=(e+5)%8,e===0?(i|=t,s[n]=i,n++,i=0):i|=255&t<<8-e):(e=(e+5)%8,i|=255&t>>>e,s[n]=i,n++,i=255&t<<8-e);else throw new Error("Invalid input - it is not base32 encoded string")}return s.slice(0,n)}});var lN=oe(x2=>{var cN=aN();x2.encode=cN.encode;x2.decode=cN.decode});var uN=oe(WI=>{"use strict";Object.defineProperty(WI,"__esModule",{value:!0});function sie(r){return r&&typeof r=="object"&&"default"in r?r.default:r}var dN=sie(lN()),oie=(r,e)=>dN.decode(r).toString(e),aie=(r,e)=>dN.encode(Buffer.from(r,e).toString("ascii")).toString().replace(/=/g,"");WI.keyDecoder=oie;WI.keyEncoder=aie});var PN=oe(De=>{"use strict";Object.defineProperty(De,"__esModule",{value:!0});function iw(r){return Object.keys(r).map(e=>r[e])}(function(r){r.SHA1="sha1",r.SHA256="sha256",r.SHA512="sha512"})(De.HashAlgorithms||(De.HashAlgorithms={}));var ZI=iw(De.HashAlgorithms);(function(r){r.ASCII="ascii",r.BASE64="base64",r.HEX="hex",r.LATIN1="latin1",r.UTF8="utf8"})(De.KeyEncodings||(De.KeyEncodings={}));var C2=iw(De.KeyEncodings);(function(r){r.HOTP="hotp",r.TOTP="totp"})(De.Strategy||(De.Strategy={}));var E2=iw(De.Strategy),nw=()=>{throw new Error("Please provide an options.createDigest implementation.")};function v2(r){return/^(\d+)$/.test(r)}function k2(r,e,t){return r.length>=e?r:`${Array(e+1).join(t)}${r}`.slice(-1*e)}function S2(r){let e=`otpauth://${r.type}/{labelPrefix}:{accountName}?secret={secret}{query}`,t=[];if(E2.indexOf(r.type)<0)throw new Error(`Expecting options.type to be one of ${E2.join(", ")}. Received ${r.type}.`);if(r.type==="hotp"){if(r.counter==null||typeof r.counter!="number")throw new Error('Expecting options.counter to be a number when options.type is "hotp".');t.push(`&counter=${r.counter}`)}return r.type==="totp"&&r.step&&t.push(`&period=${r.step}`),r.digits&&t.push(`&digits=${r.digits}`),r.algorithm&&t.push(`&algorithm=${r.algorithm.toUpperCase()}`),r.issuer&&t.push(`&issuer=${encodeURIComponent(r.issuer)}`),e.replace("{labelPrefix}",encodeURIComponent(r.issuer||r.accountName)).replace("{accountName}",encodeURIComponent(r.accountName)).replace("{secret}",r.secret).replace("{query}",t.join(""))}var ew=class r{constructor(e={}){this._defaultOptions=Object.freeze({...e}),this._options=Object.freeze({})}create(e={}){return new r(e)}clone(e={}){let t=this.create({...this._defaultOptions,...e});return t.options=this._options,t}get options(){return Object.freeze({...this._defaultOptions,...this._options})}set options(e){this._options=Object.freeze({...this._options,...e})}allOptions(){return this.options}resetOptions(){this._options=Object.freeze({})}};function D2(r){if(typeof r.createDigest!="function")throw new Error("Expecting options.createDigest to be a function.");if(typeof r.createHmacKey!="function")throw new Error("Expecting options.createHmacKey to be a function.");if(typeof r.digits!="number")throw new Error("Expecting options.digits to be a number.");if(!r.algorithm||ZI.indexOf(r.algorithm)<0)throw new Error(`Expecting options.algorithm to be one of ${ZI.join(", ")}. Received ${r.algorithm}.`);if(!r.encoding||C2.indexOf(r.encoding)<0)throw new Error(`Expecting options.encoding to be one of ${C2.join(", ")}. Received ${r.encoding}.`)}var AN=(r,e,t)=>Buffer.from(e,t).toString("hex");function hN(){return{algorithm:De.HashAlgorithms.SHA1,createHmacKey:AN,createDigest:nw,digits:6,encoding:De.KeyEncodings.ASCII}}function gN(r){let e={...hN(),...r};return D2(e),Object.freeze(e)}function pN(r){let e=r.toString(16);return k2(e,16,"0")}function mN(r,e){let t=Buffer.from(r,"hex"),i=t[t.length-1]&15,s=((t[i]&127)<<24|(t[i+1]&255)<<16|(t[i+2]&255)<<8|t[i+3]&255)%Math.pow(10,e);return k2(String(s),e,"0")}function cie(r,e,t){let i=pN(e),n=t.createHmacKey(t.algorithm,r,t.encoding);return t.createDigest(t.algorithm,n,i)}function sw(r,e,t){let i=t.digest||cie(r,e,t);return mN(i,t.digits)}function yN(r,e,t,i){if(!v2(r))return!1;let n=sw(e,t,i);return r===n}function IN(r,e,t,i,n){return S2({algorithm:n.algorithm,digits:n.digits,type:De.Strategy.HOTP,accountName:r,counter:i,issuer:e,secret:t})}var tw=class r extends ew{create(e={}){return new r(e)}allOptions(){return gN(this.options)}generate(e,t){return sw(e,t,this.allOptions())}check(e,t,i){return yN(e,t,i,this.allOptions())}verify(e){if(typeof e!="object")throw new Error("Expecting argument 0 of verify to be an object");return this.check(e.token,e.secret,e.counter)}keyuri(e,t,i,n){return IN(e,t,i,n,this.allOptions())}};function wN(r){if(typeof r=="number")return[Math.abs(r),Math.abs(r)];if(Array.isArray(r)){let[e,t]=r;if(typeof e=="number"&&typeof t=="number")return[Math.abs(e),Math.abs(t)]}throw new Error("Expecting options.window to be an number or [number, number].")}function Q2(r){if(D2(r),wN(r.window),typeof r.epoch!="number")throw new Error("Expecting options.epoch to be a number.");if(typeof r.step!="number")throw new Error("Expecting options.step to be a number.")}var XI=(r,e,t)=>{let i=r.length,n=Buffer.from(r,e).toString("hex");if(i<t){let s=new Array(t-i+1).join(n);return Buffer.from(s,"hex").slice(0,t).toString("hex")}return n},_2=(r,e,t)=>{switch(r){case De.HashAlgorithms.SHA1:return XI(e,t,20);case De.HashAlgorithms.SHA256:return XI(e,t,32);case De.HashAlgorithms.SHA512:return XI(e,t,64);default:throw new Error(`Expecting algorithm to be one of ${ZI.join(", ")}. Received ${r}.`)}};function xN(){return{algorithm:De.HashAlgorithms.SHA1,createDigest:nw,createHmacKey:_2,digits:6,encoding:De.KeyEncodings.ASCII,epoch:Date.now(),step:30,window:0}}function CN(r){let e={...xN(),...r};return Q2(e),Object.freeze(e)}function EN(r,e){return Math.floor(r/e/1e3)}function ow(r,e){let t=EN(e.epoch,e.step);return sw(r,t,e)}function fN(r,e,t,i){let n=[];if(i===0)return n;for(let s=1;s<=i;s++){let o=e*s*t;n.push(r+o)}return n}function BN(r,e,t){let i=wN(t),n=e*1e3;return{current:r,past:fN(r,-1,n,i[0]),future:fN(r,1,n,i[1])}}function F2(r,e,t){if(!v2(r))return!1;let i=ow(e,t);return r===i}function B2(r,e,t,i){let n=null;return r.some((s,o)=>F2(e,t,{...i,epoch:s})?(n=o+1,!0):!1),n}function P2(r,e,t){if(F2(r,e,t))return 0;let i=BN(t.epoch,t.step,t.window),n=B2(i.past,r,e,t);return n!==null?n*-1:B2(i.future,r,e,t)}function T2(r,e){return Math.floor(r/1e3)%e}function bN(r,e){return e-T2(r,e)}function vN(r,e,t,i){return S2({algorithm:i.algorithm,digits:i.digits,step:i.step,type:De.Strategy.TOTP,accountName:r,issuer:e,secret:t})}var rw=class r extends tw{create(e={}){return new r(e)}allOptions(){return CN(this.options)}generate(e){return ow(e,this.allOptions())}checkDelta(e,t){return P2(e,t,this.allOptions())}check(e,t){return typeof this.checkDelta(e,t)=="number"}verify(e){if(typeof e!="object")throw new Error("Expecting argument 0 of verify to be an object");return this.check(e.token,e.secret)}timeRemaining(){let e=this.allOptions();return bN(e.epoch,e.step)}timeUsed(){let e=this.allOptions();return T2(e.epoch,e.step)}keyuri(e,t,i){return vN(e,t,i,this.allOptions())}};function kN(r){if(Q2(r),typeof r.keyDecoder!="function")throw new Error("Expecting options.keyDecoder to be a function.");if(r.keyEncoder&&typeof r.keyEncoder!="function")throw new Error("Expecting options.keyEncoder to be a function.")}function SN(){return{algorithm:De.HashAlgorithms.SHA1,createDigest:nw,createHmacKey:_2,digits:6,encoding:De.KeyEncodings.HEX,epoch:Date.now(),step:30,window:0}}function DN(r){let e={...SN(),...r};return kN(e),Object.freeze(e)}function U2(r,e){return e.keyEncoder(r,e.encoding)}function aw(r,e){return e.keyDecoder(r,e.encoding)}function QN(r,e){let t=e.createRandomBytes(r,e.encoding);return U2(t,e)}function _N(r,e){return ow(aw(r,e),e)}function FN(r,e,t){return P2(r,aw(e,t),t)}var b2=class r extends rw{create(e={}){return new r(e)}allOptions(){return DN(this.options)}generate(e){return _N(e,this.allOptions())}checkDelta(e,t){return FN(e,t,this.allOptions())}encode(e){return U2(e,this.allOptions())}decode(e){return aw(e,this.allOptions())}generateSecret(e=10){return QN(e,this.allOptions())}};De.Authenticator=b2;De.HASH_ALGORITHMS=ZI;De.HOTP=tw;De.KEY_ENCODINGS=C2;De.OTP=ew;De.STRATEGY=E2;De.TOTP=rw;De.authenticatorCheckWithWindow=FN;De.authenticatorDecoder=aw;De.authenticatorDefaultOptions=SN;De.authenticatorEncoder=U2;De.authenticatorGenerateSecret=QN;De.authenticatorOptionValidator=kN;De.authenticatorOptions=DN;De.authenticatorToken=_N;De.createDigestPlaceholder=nw;De.hotpCheck=yN;De.hotpCounter=pN;De.hotpCreateHmacKey=AN;De.hotpDefaultOptions=hN;De.hotpDigestToToken=mN;De.hotpKeyuri=IN;De.hotpOptions=gN;De.hotpOptionsValidator=D2;De.hotpToken=sw;De.isTokenValid=v2;De.keyuri=S2;De.objectValues=iw;De.padStart=k2;De.totpCheck=F2;De.totpCheckByEpoch=B2;De.totpCheckWithWindow=P2;De.totpCounter=EN;De.totpCreateHmacKey=_2;De.totpDefaultOptions=xN;De.totpEpochAvailable=BN;De.totpKeyuri=vN;De.totpOptions=CN;De.totpOptionsValidator=Q2;De.totpPadSecret=XI;De.totpTimeRemaining=bN;De.totpTimeUsed=T2;De.totpToken=ow});var UN=oe(kA=>{"use strict";Object.defineProperty(kA,"__esModule",{value:!0});var cw=sN(),TN=uN(),R2=PN(),lie=new R2.HOTP({createDigest:cw.createDigest}),die=new R2.TOTP({createDigest:cw.createDigest}),uie=new R2.Authenticator({createDigest:cw.createDigest,createRandomBytes:cw.createRandomBytes,keyDecoder:TN.keyDecoder,keyEncoder:TN.keyEncoder});kA.authenticator=uie;kA.hotp=lie;kA.totp=die});var NN=oe(N2=>{"use strict";Object.defineProperty(N2,"__esModule",{value:!0});var RN=UN();Object.keys(RN).forEach(function(r){r!=="default"&&Object.defineProperty(N2,r,{enumerable:!0,get:function(){return RN[r]}})})});var q2=oe((bCe,qN)=>{qN.exports=function(){return typeof Promise=="function"&&Promise.prototype&&Promise.prototype.then}});var Ta=oe(Yc=>{var O2,fie=[0,26,44,70,100,134,172,196,242,292,346,404,466,532,581,655,733,815,901,991,1085,1156,1258,1364,1474,1588,1706,1828,1921,2051,2185,2323,2465,2611,2761,2876,3034,3196,3362,3532,3706];Yc.getSymbolSize=function(e){if(!e)throw new Error('"version" cannot be null or undefined');if(e<1||e>40)throw new Error('"version" should be in range from 1 to 40');return e*4+17};Yc.getSymbolTotalCodewords=function(e){return fie[e]};Yc.getBCHDigit=function(r){let e=0;for(;r!==0;)e++,r>>>=1;return e};Yc.setToSJISFunction=function(e){if(typeof e!="function")throw new Error('"toSJISFunc" is not a valid function.');O2=e};Yc.isKanjiModeEnabled=function(){return typeof O2<"u"};Yc.toSJIS=function(e){return O2(e)}});var lw=oe(An=>{An.L={bit:1};An.M={bit:0};An.Q={bit:3};An.H={bit:2};function Aie(r){if(typeof r!="string")throw new Error("Param is not a string");switch(r.toLowerCase()){case"l":case"low":return An.L;case"m":case"medium":return An.M;case"q":case"quartile":return An.Q;case"h":case"high":return An.H;default:throw new Error("Unknown EC Level: "+r)}}An.isValid=function(e){return e&&typeof e.bit<"u"&&e.bit>=0&&e.bit<4};An.from=function(e,t){if(An.isValid(e))return e;try{return Aie(e)}catch{return t}}});var LN=oe((SCe,MN)=>{function ON(){this.buffer=[],this.length=0}ON.prototype={get:function(r){let e=Math.floor(r/8);return(this.buffer[e]>>>7-r%8&1)===1},put:function(r,e){for(let t=0;t<e;t++)this.putBit((r>>>e-t-1&1)===1)},getLengthInBits:function(){return this.length},putBit:function(r){let e=Math.floor(this.length/8);this.buffer.length<=e&&this.buffer.push(0),r&&(this.buffer[e]|=128>>>this.length%8),this.length++}};MN.exports=ON});var KN=oe((DCe,HN)=>{function SA(r){if(!r||r<1)throw new Error("BitMatrix size must be defined and greater than 0");this.size=r,this.data=new Uint8Array(r*r),this.reservedBit=new Uint8Array(r*r)}SA.prototype.set=function(r,e,t,i){let n=r*this.size+e;this.data[n]=t,i&&(this.reservedBit[n]=!0)};SA.prototype.get=function(r,e){return this.data[r*this.size+e]};SA.prototype.xor=function(r,e,t){this.data[r*this.size+e]^=t};SA.prototype.isReserved=function(r,e){return this.reservedBit[r*this.size+e]};HN.exports=SA});var GN=oe(dw=>{var hie=Ta().getSymbolSize;dw.getRowColCoords=function(e){if(e===1)return[];let t=Math.floor(e/7)+2,i=hie(e),n=i===145?26:Math.ceil((i-13)/(2*t-2))*2,s=[i-7];for(let o=1;o<t-1;o++)s[o]=s[o-1]-n;return s.push(6),s.reverse()};dw.getPositions=function(e){let t=[],i=dw.getRowColCoords(e),n=i.length;for(let s=0;s<n;s++)for(let o=0;o<n;o++)s===0&&o===0||s===0&&o===n-1||s===n-1&&o===0||t.push([i[s],i[o]]);return t}});var jN=oe(JN=>{var gie=Ta().getSymbolSize,zN=7;JN.getPositions=function(e){let t=gie(e);return[[0,0],[t-zN,0],[0,t-zN]]}});var $N=oe(Bt=>{Bt.Patterns={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7};var Wc={N1:3,N2:3,N3:40,N4:10};Bt.isValid=function(e){return e!=null&&e!==""&&!isNaN(e)&&e>=0&&e<=7};Bt.from=function(e){return Bt.isValid(e)?parseInt(e,10):void 0};Bt.getPenaltyN1=function(e){let t=e.size,i=0,n=0,s=0,o=null,a=null;for(let c=0;c<t;c++){n=s=0,o=a=null;for(let l=0;l<t;l++){let d=e.get(c,l);d===o?n++:(n>=5&&(i+=Wc.N1+(n-5)),o=d,n=1),d=e.get(l,c),d===a?s++:(s>=5&&(i+=Wc.N1+(s-5)),a=d,s=1)}n>=5&&(i+=Wc.N1+(n-5)),s>=5&&(i+=Wc.N1+(s-5))}return i};Bt.getPenaltyN2=function(e){let t=e.size,i=0;for(let n=0;n<t-1;n++)for(let s=0;s<t-1;s++){let o=e.get(n,s)+e.get(n,s+1)+e.get(n+1,s)+e.get(n+1,s+1);(o===4||o===0)&&i++}return i*Wc.N2};Bt.getPenaltyN3=function(e){let t=e.size,i=0,n=0,s=0;for(let o=0;o<t;o++){n=s=0;for(let a=0;a<t;a++)n=n<<1&2047|e.get(o,a),a>=10&&(n===1488||n===93)&&i++,s=s<<1&2047|e.get(a,o),a>=10&&(s===1488||s===93)&&i++}return i*Wc.N3};Bt.getPenaltyN4=function(e){let t=0,i=e.data.length;for(let s=0;s<i;s++)t+=e.data[s];return Math.abs(Math.ceil(t*100/i/5)-10)*Wc.N4};function pie(r,e,t){switch(r){case Bt.Patterns.PATTERN000:return(e+t)%2===0;case Bt.Patterns.PATTERN001:return e%2===0;case Bt.Patterns.PATTERN010:return t%3===0;case Bt.Patterns.PATTERN011:return(e+t)%3===0;case Bt.Patterns.PATTERN100:return(Math.floor(e/2)+Math.floor(t/3))%2===0;case Bt.Patterns.PATTERN101:return e*t%2+e*t%3===0;case Bt.Patterns.PATTERN110:return(e*t%2+e*t%3)%2===0;case Bt.Patterns.PATTERN111:return(e*t%3+(e+t)%2)%2===0;default:throw new Error("bad maskPattern:"+r)}}Bt.applyMask=function(e,t){let i=t.size;for(let n=0;n<i;n++)for(let s=0;s<i;s++)t.isReserved(s,n)||t.xor(s,n,pie(e,s,n))};Bt.getBestMask=function(e,t){let i=Object.keys(Bt.Patterns).length,n=0,s=1/0;for(let o=0;o<i;o++){t(o),Bt.applyMask(o,e);let a=Bt.getPenaltyN1(e)+Bt.getPenaltyN2(e)+Bt.getPenaltyN3(e)+Bt.getPenaltyN4(e);Bt.applyMask(o,e),a<s&&(s=a,n=o)}return n}});var L2=oe(M2=>{var Ua=lw(),uw=[1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,4,1,2,4,4,2,4,4,4,2,4,6,5,2,4,6,6,2,5,8,8,4,5,8,8,4,5,8,11,4,8,10,11,4,9,12,16,4,9,16,16,6,10,12,18,6,10,17,16,6,11,16,19,6,13,18,21,7,14,21,25,8,16,20,25,8,17,23,25,9,17,23,34,9,18,25,30,10,20,27,32,12,21,29,35,12,23,34,37,12,25,34,40,13,26,35,42,14,28,38,45,15,29,40,48,16,31,43,51,17,33,45,54,18,35,48,57,19,37,51,60,19,38,53,63,20,40,56,66,21,43,59,70,22,45,62,74,24,47,65,77,25,49,68,81],fw=[7,10,13,17,10,16,22,28,15,26,36,44,20,36,52,64,26,48,72,88,36,64,96,112,40,72,108,130,48,88,132,156,60,110,160,192,72,130,192,224,80,150,224,264,96,176,260,308,104,198,288,352,120,216,320,384,132,240,360,432,144,280,408,480,168,308,448,532,180,338,504,588,196,364,546,650,224,416,600,700,224,442,644,750,252,476,690,816,270,504,750,900,300,560,810,960,312,588,870,1050,336,644,952,1110,360,700,1020,1200,390,728,1050,1260,420,784,1140,1350,450,812,1200,1440,480,868,1290,1530,510,924,1350,1620,540,980,1440,1710,570,1036,1530,1800,570,1064,1590,1890,600,1120,1680,1980,630,1204,1770,2100,660,1260,1860,2220,720,1316,1950,2310,750,1372,2040,2430];M2.getBlocksCount=function(e,t){switch(t){case Ua.L:return uw[(e-1)*4+0];case Ua.M:return uw[(e-1)*4+1];case Ua.Q:return uw[(e-1)*4+2];case Ua.H:return uw[(e-1)*4+3];default:return}};M2.getTotalCodewordsCount=function(e,t){switch(t){case Ua.L:return fw[(e-1)*4+0];case Ua.M:return fw[(e-1)*4+1];case Ua.Q:return fw[(e-1)*4+2];case Ua.H:return fw[(e-1)*4+3];default:return}}});var VN=oe(hw=>{var DA=new Uint8Array(512),Aw=new Uint8Array(256);(function(){let e=1;for(let t=0;t<255;t++)DA[t]=e,Aw[e]=t,e<<=1,e&256&&(e^=285);for(let t=255;t<512;t++)DA[t]=DA[t-255]})();hw.log=function(e){if(e<1)throw new Error("log("+e+")");return Aw[e]};hw.exp=function(e){return DA[e]};hw.mul=function(e,t){return e===0||t===0?0:DA[Aw[e]+Aw[t]]}});var YN=oe(QA=>{var H2=VN();QA.mul=function(e,t){let i=new Uint8Array(e.length+t.length-1);for(let n=0;n<e.length;n++)for(let s=0;s<t.length;s++)i[n+s]^=H2.mul(e[n],t[s]);return i};QA.mod=function(e,t){let i=new Uint8Array(e);for(;i.length-t.length>=0;){let n=i[0];for(let o=0;o<t.length;o++)i[o]^=H2.mul(t[o],n);let s=0;for(;s<i.length&&i[s]===0;)s++;i=i.slice(s)}return i};QA.generateECPolynomial=function(e){let t=new Uint8Array([1]);for(let i=0;i<e;i++)t=QA.mul(t,new Uint8Array([1,H2.exp(i)]));return t}});var ZN=oe((RCe,XN)=>{var WN=YN();function K2(r){this.genPoly=void 0,this.degree=r,this.degree&&this.initialize(this.degree)}K2.prototype.initialize=function(e){this.degree=e,this.genPoly=WN.generateECPolynomial(this.degree)};K2.prototype.encode=function(e){if(!this.genPoly)throw new Error("Encoder not initialized");let t=new Uint8Array(e.length+this.degree);t.set(e);let i=WN.mod(t,this.genPoly),n=this.degree-i.length;if(n>0){let s=new Uint8Array(this.degree);return s.set(i,n),s}return i};XN.exports=K2});var G2=oe(e9=>{e9.isValid=function(e){return!isNaN(e)&&e>=1&&e<=40}});var z2=oe(mo=>{var t9="[0-9]+",mie="[A-Z $%*+\\-./:]+",_A="(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+";_A=_A.replace(/u/g,"\\u");var yie="(?:(?![A-Z0-9 $%*+\\-./:]|"+_A+`)(?:.|[\r -]))+`;mo.KANJI=new RegExp(_A,"g");mo.BYTE_KANJI=new RegExp("[^A-Z0-9 $%*+\\-./:]+","g");mo.BYTE=new RegExp(yie,"g");mo.NUMERIC=new RegExp(t9,"g");mo.ALPHANUMERIC=new RegExp(mie,"g");var Iie=new RegExp("^"+_A+"$"),wie=new RegExp("^"+t9+"$"),xie=new RegExp("^[A-Z0-9 $%*+\\-./:]+$");mo.testKanji=function(e){return Iie.test(e)};mo.testNumeric=function(e){return wie.test(e)};mo.testAlphanumeric=function(e){return xie.test(e)}});var Ra=oe(lr=>{var Cie=G2(),J2=z2();lr.NUMERIC={id:"Numeric",bit:1,ccBits:[10,12,14]};lr.ALPHANUMERIC={id:"Alphanumeric",bit:2,ccBits:[9,11,13]};lr.BYTE={id:"Byte",bit:4,ccBits:[8,16,16]};lr.KANJI={id:"Kanji",bit:8,ccBits:[8,10,12]};lr.MIXED={bit:-1};lr.getCharCountIndicator=function(e,t){if(!e.ccBits)throw new Error("Invalid mode: "+e);if(!Cie.isValid(t))throw new Error("Invalid version: "+t);return t>=1&&t<10?e.ccBits[0]:t<27?e.ccBits[1]:e.ccBits[2]};lr.getBestModeForData=function(e){return J2.testNumeric(e)?lr.NUMERIC:J2.testAlphanumeric(e)?lr.ALPHANUMERIC:J2.testKanji(e)?lr.KANJI:lr.BYTE};lr.toString=function(e){if(e&&e.id)return e.id;throw new Error("Invalid mode")};lr.isValid=function(e){return e&&e.bit&&e.ccBits};function Eie(r){if(typeof r!="string")throw new Error("Param is not a string");switch(r.toLowerCase()){case"numeric":return lr.NUMERIC;case"alphanumeric":return lr.ALPHANUMERIC;case"kanji":return lr.KANJI;case"byte":return lr.BYTE;default:throw new Error("Unknown mode: "+r)}}lr.from=function(e,t){if(lr.isValid(e))return e;try{return Eie(e)}catch{return t}}});var o9=oe(Xc=>{var gw=Ta(),Bie=L2(),r9=lw(),Na=Ra(),j2=G2(),n9=7973,i9=gw.getBCHDigit(n9);function bie(r,e,t){for(let i=1;i<=40;i++)if(e<=Xc.getCapacity(i,t,r))return i}function s9(r,e){return Na.getCharCountIndicator(r,e)+4}function vie(r,e){let t=0;return r.forEach(function(i){let n=s9(i.mode,e);t+=n+i.getBitsLength()}),t}function kie(r,e){for(let t=1;t<=40;t++)if(vie(r,t)<=Xc.getCapacity(t,e,Na.MIXED))return t}Xc.from=function(e,t){return j2.isValid(e)?parseInt(e,10):t};Xc.getCapacity=function(e,t,i){if(!j2.isValid(e))throw new Error("Invalid QR Code version");typeof i>"u"&&(i=Na.BYTE);let n=gw.getSymbolTotalCodewords(e),s=Bie.getTotalCodewordsCount(e,t),o=(n-s)*8;if(i===Na.MIXED)return o;let a=o-s9(i,e);switch(i){case Na.NUMERIC:return Math.floor(a/10*3);case Na.ALPHANUMERIC:return Math.floor(a/11*2);case Na.KANJI:return Math.floor(a/13);case Na.BYTE:default:return Math.floor(a/8)}};Xc.getBestVersionForData=function(e,t){let i,n=r9.from(t,r9.M);if(Array.isArray(e)){if(e.length>1)return kie(e,n);if(e.length===0)return 1;i=e[0]}else i=e;return bie(i.mode,i.getLength(),n)};Xc.getEncodedBits=function(e){if(!j2.isValid(e)||e<7)throw new Error("Invalid QR Code version");let t=e<<12;for(;gw.getBCHDigit(t)-i9>=0;)t^=n9<<gw.getBCHDigit(t)-i9;return e<<12|t}});var d9=oe(l9=>{var $2=Ta(),c9=1335,Sie=21522,a9=$2.getBCHDigit(c9);l9.getEncodedBits=function(e,t){let i=e.bit<<3|t,n=i<<10;for(;$2.getBCHDigit(n)-a9>=0;)n^=c9<<$2.getBCHDigit(n)-a9;return(i<<10|n)^Sie}});var f9=oe((HCe,u9)=>{var Die=Ra();function jd(r){this.mode=Die.NUMERIC,this.data=r.toString()}jd.getBitsLength=function(e){return 10*Math.floor(e/3)+(e%3?e%3*3+1:0)};jd.prototype.getLength=function(){return this.data.length};jd.prototype.getBitsLength=function(){return jd.getBitsLength(this.data.length)};jd.prototype.write=function(e){let t,i,n;for(t=0;t+3<=this.data.length;t+=3)i=this.data.substr(t,3),n=parseInt(i,10),e.put(n,10);let s=this.data.length-t;s>0&&(i=this.data.substr(t),n=parseInt(i,10),e.put(n,s*3+1))};u9.exports=jd});var h9=oe((KCe,A9)=>{var Qie=Ra(),V2=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"," ","$","%","*","+","-",".","/",":"];function $d(r){this.mode=Qie.ALPHANUMERIC,this.data=r}$d.getBitsLength=function(e){return 11*Math.floor(e/2)+6*(e%2)};$d.prototype.getLength=function(){return this.data.length};$d.prototype.getBitsLength=function(){return $d.getBitsLength(this.data.length)};$d.prototype.write=function(e){let t;for(t=0;t+2<=this.data.length;t+=2){let i=V2.indexOf(this.data[t])*45;i+=V2.indexOf(this.data[t+1]),e.put(i,11)}this.data.length%2&&e.put(V2.indexOf(this.data[t]),6)};A9.exports=$d});var p9=oe((GCe,g9)=>{var _ie=Ra();function Vd(r){this.mode=_ie.BYTE,typeof r=="string"?this.data=new TextEncoder().encode(r):this.data=new Uint8Array(r)}Vd.getBitsLength=function(e){return e*8};Vd.prototype.getLength=function(){return this.data.length};Vd.prototype.getBitsLength=function(){return Vd.getBitsLength(this.data.length)};Vd.prototype.write=function(r){for(let e=0,t=this.data.length;e<t;e++)r.put(this.data[e],8)};g9.exports=Vd});var y9=oe((zCe,m9)=>{var Fie=Ra(),Pie=Ta();function Yd(r){this.mode=Fie.KANJI,this.data=r}Yd.getBitsLength=function(e){return e*13};Yd.prototype.getLength=function(){return this.data.length};Yd.prototype.getBitsLength=function(){return Yd.getBitsLength(this.data.length)};Yd.prototype.write=function(r){let e;for(e=0;e<this.data.length;e++){let t=Pie.toSJIS(this.data[e]);if(t>=33088&&t<=40956)t-=33088;else if(t>=57408&&t<=60351)t-=49472;else throw new Error("Invalid SJIS character: "+this.data[e]+` -Make sure your charset is UTF-8`);t=(t>>>8&255)*192+(t&255),r.put(t,13)}};m9.exports=Yd});var I9=oe((JCe,Y2)=>{"use strict";var FA={single_source_shortest_paths:function(r,e,t){var i={},n={};n[e]=0;var s=FA.PriorityQueue.make();s.push(e,0);for(var o,a,c,l,d,u,f,h,g;!s.empty();){o=s.pop(),a=o.value,l=o.cost,d=r[a]||{};for(c in d)d.hasOwnProperty(c)&&(u=d[c],f=l+u,h=n[c],g=typeof n[c]>"u",(g||h>f)&&(n[c]=f,s.push(c,f),i[c]=a))}if(typeof t<"u"&&typeof n[t]>"u"){var p=["Could not find a path from ",e," to ",t,"."].join("");throw new Error(p)}return i},extract_shortest_path_from_predecessor_list:function(r,e){for(var t=[],i=e,n;i;)t.push(i),n=r[i],i=r[i];return t.reverse(),t},find_path:function(r,e,t){var i=FA.single_source_shortest_paths(r,e,t);return FA.extract_shortest_path_from_predecessor_list(i,t)},PriorityQueue:{make:function(r){var e=FA.PriorityQueue,t={},i;r=r||{};for(i in e)e.hasOwnProperty(i)&&(t[i]=e[i]);return t.queue=[],t.sorter=r.sorter||e.default_sorter,t},default_sorter:function(r,e){return r.cost-e.cost},push:function(r,e){var t={value:r,cost:e};this.queue.push(t),this.queue.sort(this.sorter)},pop:function(){return this.queue.shift()},empty:function(){return this.queue.length===0}}};typeof Y2<"u"&&(Y2.exports=FA)});var k9=oe(Wd=>{var At=Ra(),C9=f9(),E9=h9(),B9=p9(),b9=y9(),PA=z2(),pw=Ta(),Tie=I9();function w9(r){return unescape(encodeURIComponent(r)).length}function TA(r,e,t){let i=[],n;for(;(n=r.exec(t))!==null;)i.push({data:n[0],index:n.index,mode:e,length:n[0].length});return i}function v9(r){let e=TA(PA.NUMERIC,At.NUMERIC,r),t=TA(PA.ALPHANUMERIC,At.ALPHANUMERIC,r),i,n;return pw.isKanjiModeEnabled()?(i=TA(PA.BYTE,At.BYTE,r),n=TA(PA.KANJI,At.KANJI,r)):(i=TA(PA.BYTE_KANJI,At.BYTE,r),n=[]),e.concat(t,i,n).sort(function(o,a){return o.index-a.index}).map(function(o){return{data:o.data,mode:o.mode,length:o.length}})}function W2(r,e){switch(e){case At.NUMERIC:return C9.getBitsLength(r);case At.ALPHANUMERIC:return E9.getBitsLength(r);case At.KANJI:return b9.getBitsLength(r);case At.BYTE:return B9.getBitsLength(r)}}function Uie(r){return r.reduce(function(e,t){let i=e.length-1>=0?e[e.length-1]:null;return i&&i.mode===t.mode?(e[e.length-1].data+=t.data,e):(e.push(t),e)},[])}function Rie(r){let e=[];for(let t=0;t<r.length;t++){let i=r[t];switch(i.mode){case At.NUMERIC:e.push([i,{data:i.data,mode:At.ALPHANUMERIC,length:i.length},{data:i.data,mode:At.BYTE,length:i.length}]);break;case At.ALPHANUMERIC:e.push([i,{data:i.data,mode:At.BYTE,length:i.length}]);break;case At.KANJI:e.push([i,{data:i.data,mode:At.BYTE,length:w9(i.data)}]);break;case At.BYTE:e.push([{data:i.data,mode:At.BYTE,length:w9(i.data)}])}}return e}function Nie(r,e){let t={},i={start:{}},n=["start"];for(let s=0;s<r.length;s++){let o=r[s],a=[];for(let c=0;c<o.length;c++){let l=o[c],d=""+s+c;a.push(d),t[d]={node:l,lastCount:0},i[d]={};for(let u=0;u<n.length;u++){let f=n[u];t[f]&&t[f].node.mode===l.mode?(i[f][d]=W2(t[f].lastCount+l.length,l.mode)-W2(t[f].lastCount,l.mode),t[f].lastCount+=l.length):(t[f]&&(t[f].lastCount=l.length),i[f][d]=W2(l.length,l.mode)+4+At.getCharCountIndicator(l.mode,e))}}n=a}for(let s=0;s<n.length;s++)i[n[s]].end=0;return{map:i,table:t}}function x9(r,e){let t,i=At.getBestModeForData(r);if(t=At.from(e,i),t!==At.BYTE&&t.bit<i.bit)throw new Error('"'+r+'" cannot be encoded with mode '+At.toString(t)+`. - Suggested mode is: `+At.toString(i));switch(t===At.KANJI&&!pw.isKanjiModeEnabled()&&(t=At.BYTE),t){case At.NUMERIC:return new C9(r);case At.ALPHANUMERIC:return new E9(r);case At.KANJI:return new b9(r);case At.BYTE:return new B9(r)}}Wd.fromArray=function(e){return e.reduce(function(t,i){return typeof i=="string"?t.push(x9(i,null)):i.data&&t.push(x9(i.data,i.mode)),t},[])};Wd.fromString=function(e,t){let i=v9(e,pw.isKanjiModeEnabled()),n=Rie(i),s=Nie(n,t),o=Tie.find_path(s.map,"start","end"),a=[];for(let c=1;c<o.length-1;c++)a.push(s.table[o[c]].node);return Wd.fromArray(Uie(a))};Wd.rawSplit=function(e){return Wd.fromArray(v9(e,pw.isKanjiModeEnabled()))}});var ib=oe(S9=>{var yw=Ta(),X2=lw(),qie=LN(),Oie=KN(),Mie=GN(),Lie=jN(),tb=$N(),rb=L2(),Hie=ZN(),mw=o9(),Kie=d9(),Gie=Ra(),Z2=k9();function zie(r,e){let t=r.size,i=Lie.getPositions(e);for(let n=0;n<i.length;n++){let s=i[n][0],o=i[n][1];for(let a=-1;a<=7;a++)if(!(s+a<=-1||t<=s+a))for(let c=-1;c<=7;c++)o+c<=-1||t<=o+c||(a>=0&&a<=6&&(c===0||c===6)||c>=0&&c<=6&&(a===0||a===6)||a>=2&&a<=4&&c>=2&&c<=4?r.set(s+a,o+c,!0,!0):r.set(s+a,o+c,!1,!0))}}function Jie(r){let e=r.size;for(let t=8;t<e-8;t++){let i=t%2===0;r.set(t,6,i,!0),r.set(6,t,i,!0)}}function jie(r,e){let t=Mie.getPositions(e);for(let i=0;i<t.length;i++){let n=t[i][0],s=t[i][1];for(let o=-2;o<=2;o++)for(let a=-2;a<=2;a++)o===-2||o===2||a===-2||a===2||o===0&&a===0?r.set(n+o,s+a,!0,!0):r.set(n+o,s+a,!1,!0)}}function $ie(r,e){let t=r.size,i=mw.getEncodedBits(e),n,s,o;for(let a=0;a<18;a++)n=Math.floor(a/3),s=a%3+t-8-3,o=(i>>a&1)===1,r.set(n,s,o,!0),r.set(s,n,o,!0)}function eb(r,e,t){let i=r.size,n=Kie.getEncodedBits(e,t),s,o;for(s=0;s<15;s++)o=(n>>s&1)===1,s<6?r.set(s,8,o,!0):s<8?r.set(s+1,8,o,!0):r.set(i-15+s,8,o,!0),s<8?r.set(8,i-s-1,o,!0):s<9?r.set(8,15-s-1+1,o,!0):r.set(8,15-s-1,o,!0);r.set(i-8,8,1,!0)}function Vie(r,e){let t=r.size,i=-1,n=t-1,s=7,o=0;for(let a=t-1;a>0;a-=2)for(a===6&&a--;;){for(let c=0;c<2;c++)if(!r.isReserved(n,a-c)){let l=!1;o<e.length&&(l=(e[o]>>>s&1)===1),r.set(n,a-c,l),s--,s===-1&&(o++,s=7)}if(n+=i,n<0||t<=n){n-=i,i=-i;break}}}function Yie(r,e,t){let i=new qie;t.forEach(function(c){i.put(c.mode.bit,4),i.put(c.getLength(),Gie.getCharCountIndicator(c.mode,r)),c.write(i)});let n=yw.getSymbolTotalCodewords(r),s=rb.getTotalCodewordsCount(r,e),o=(n-s)*8;for(i.getLengthInBits()+4<=o&&i.put(0,4);i.getLengthInBits()%8!==0;)i.putBit(0);let a=(o-i.getLengthInBits())/8;for(let c=0;c<a;c++)i.put(c%2?17:236,8);return Wie(i,r,e)}function Wie(r,e,t){let i=yw.getSymbolTotalCodewords(e),n=rb.getTotalCodewordsCount(e,t),s=i-n,o=rb.getBlocksCount(e,t),a=i%o,c=o-a,l=Math.floor(i/o),d=Math.floor(s/o),u=d+1,f=l-d,h=new Hie(f),g=0,p=new Array(o),I=new Array(o),y=0,w=new Uint8Array(r.buffer);for(let R=0;R<o;R++){let U=R<c?d:u;p[R]=w.slice(g,g+U),I[R]=h.encode(p[R]),g+=U,y=Math.max(y,U)}let C=new Uint8Array(i),b=0,x,_;for(x=0;x<y;x++)for(_=0;_<o;_++)x<p[_].length&&(C[b++]=p[_][x]);for(x=0;x<f;x++)for(_=0;_<o;_++)C[b++]=I[_][x];return C}function Xie(r,e,t,i){let n;if(Array.isArray(r))n=Z2.fromArray(r);else if(typeof r=="string"){let l=e;if(!l){let d=Z2.rawSplit(r);l=mw.getBestVersionForData(d,t)}n=Z2.fromString(r,l||40)}else throw new Error("Invalid data");let s=mw.getBestVersionForData(n,t);if(!s)throw new Error("The amount of data is too big to be stored in a QR Code");if(!e)e=s;else if(e<s)throw new Error(` +\u751F\u4EA7\u73AF\u5883\u90E8\u7F72\u524D\uFF0C\u8BF7\u52A1\u5FC5\u914D\u7F6E >=32 \u5B57\u7B26\u7684 JWT_SECRET \u73AF\u5883\u53D8\u91CF\u3002`)}return go}async function Kre(r){if(!eN){eN=!0;try{let{getKvBinding:e}=await Promise.resolve().then(()=>(Ve(),Gr)),t=await e(r);if(t.mode==="none"||!t.binding)return;let{binding:i,mode:n}=t,s=null;if(n==="blob")s=await i.get(ps);else try{s=await i.get(ps,"text")}catch{s=await i.get(ps)}if(s&&typeof s.text=="function"&&(s=await s.text()),!s)return;let o=JSON.parse(String(s)),a=Math.floor(Date.now()/1e3);for(let c of o)c&&c.jti&&c.exp>a&&o2.add(c.jti)}catch{}}}async function a2(r,e,t){if(r){o2.add(r);try{let{getKvBinding:i}=await Promise.resolve().then(()=>(Ve(),Gr)),n=await i(t);if(n.mode==="none"||!n.binding)return;let{binding:s,mode:o}=n,a=[];if(o==="blob"){let d=await s.get(ps);d&&(a=typeof d=="string"?JSON.parse(d):d)}else try{let d=await s.get(ps,"text");d&&(a=JSON.parse(String(d)))}catch{let d=await s.get(ps);d&&(a=typeof d=="string"?JSON.parse(d):d)}let c=Math.floor(Date.now()/1e3);a=a.filter(d=>d&&d.exp>c),a.push({jti:r,exp:e});let l=JSON.stringify(a);o==="blob"?typeof s.set=="function"?await s.set(ps,l):typeof s.put=="function"&&await s.put(ps,l):typeof s.put=="function"?await s.put(ps,l):typeof s.set=="function"&&await s.set(ps,l)}catch(i){console.warn("[JWT] Failed to persist revoked token to KV:",i)}}}async function YI(r,e){return r?(await Kre(e),o2.has(r)):!1}async function _i(r,e){if(!await Kd(r))return r.json({code:401,message:"Unauthorized admin privilege required",data:null},401);await e()}function s2(r,e){if(r.length!==e.length)return!1;let t=0;for(let i=0;i<r.length;i++)t|=r.charCodeAt(i)^e.charCodeAt(i);return t===0}async function c2(r){let t=(r?.env||{}).JWT_SECRET||(typeof process<"u"?process.env?.JWT_SECRET:"");if(!t||typeof t!="string")return!1;let i=r.req.header("x-cron-secret");if(i&&s2(i,t))return!0;let n=r.req.query("cron_secret");if(n&&s2(n,t))return!0;try{let o=(await r.req.json())?.cron_secret;if(typeof o=="string"&&o.length>0&&s2(o,t))return!0}catch{}return!1}async function l2(r){let{sign:e}=await Promise.resolve().then(()=>(Ao(),$I)),t=await kr(r);return await e({type:"csrf",jti:crypto.randomUUID?crypto.randomUUID():rN().slice(0,16),exp:Math.floor(Date.now()/1e3)+3600},t)}async function Gre(r,e){let t=r.req.method.toUpperCase();if(["GET","HEAD","OPTIONS"].includes(t))return e();let i=r.req.header("x-csrf-token")||r.req.header("X-CSRF-Token");if(!i)return r.json({code:403,message:"CSRF token missing. Please include X-CSRF-Token header.",data:null},403);try{let{verify:n}=await Promise.resolve().then(()=>(Ao(),$I)),s=await kr(r);if((await n(i,s,"HS256")).type!=="csrf")throw new Error("Invalid token type");await e()}catch{return r.json({code:403,message:"Invalid or expired CSRF token",data:null},403)}}async function zre(r,e){let t=Date.now(),i=r.req.method.toUpperCase(),n=r.req.path,s=["POST","PUT","DELETE","PATCH"].includes(i);if(await e(),s)try{let{logAudit:o}=await Promise.resolve().then(()=>(kA(),vA)),a=await Me(r).catch(()=>null),c=Date.now()-t,l=r.res.status||200,d=l>=200&&l<400?"success":"failure",u=r.req.header("cf-connecting-ip")||r.req.header("x-real-ip")||r.req.header("x-forwarded-for")?.split(",")[0]?.trim()||"unknown";await o({user_id:a?.id,username:a?.username||"anonymous",ip:u,action:`${i} ${n}`,resource:n,method:i,status:d,status_code:l,details:JSON.stringify({duration_ms:c}),user_agent:r.req.header("user-agent"),duration_ms:c},r.env)}catch(o){console.warn("[Audit] Failed to log:",o)}}async function Me(r){if(await n2(r))return{role:2,permission:0,disabled:!1,username:"api-token",base_path:"/"};let e=r.req.header("Authorization");if(!e){let i=r.req.query("token")||r.req.query("access_token");i&&(e=`Bearer ${i}`)}if(!e){try{let n=((await ne(r.env)).users||[]).find(s=>s.username==="guest");if(n&&!n.disabled)return{id:n.id,role:n.role??1,permission:n.permission??0,disabled:!!n.disabled,username:n.username,base_path:n.base_path||"/",sso_id:n.sso_id||"",allow_ldap:!!n.allow_ldap,otp_secret:n.otp_secret}}catch{}return null}let t=e.startsWith("Bearer ")?e.substring(7):e;try{let i=await kr(r),n=await uo(t,i,"HS256");if(await YI(n?.jti,r.env))return null;let o=((await ne(r.env)).users||[]).find(a=>a.id===n.id||a.username===n.username);return!o||o.disabled?null:{id:o.id,role:o.role,permission:o.permission??0,disabled:!!o.disabled,username:o.username,base_path:o.base_path||"/",sso_id:o.sso_id||"",allow_ldap:!!o.allow_ldap,otp_secret:o.otp_secret}}catch{return null}}var go,tN,ps,o2,eN,Qi=j(()=>{"use strict";Ao();bA();Ve();go=null,tN="openlist_jwt_secret";ps="openlist_revoked_tokens",o2=new Set,eN=!1});var RN=oe(cw=>{"use strict";Object.defineProperty(cw,"__esModule",{value:!0});function Kie(r){return r&&typeof r=="object"&&"default"in r?r.default:r}var UN=Kie(wt("crypto")),Gie=(r,e,t)=>UN.createHmac(r,Buffer.from(e,"hex")).update(Buffer.from(t,"hex")).digest().toString("hex"),zie=(r,e)=>UN.randomBytes(r).toString(e);cw.createDigest=Gie;cw.createRandomBytes=zie});var qN=oe(q2=>{"use strict";var Jie="ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",NN=[255,255,26,27,28,29,30,31,255,255,255,255,255,255,255,255,255,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,255,255,255,255,255,255,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,255,255,255,255,255];function jie(r){var e=Math.floor(r.length/5);return r.length%5===0?e:e+1}q2.encode=function(r){Buffer.isBuffer(r)||(r=new Buffer(r));for(var e=0,t=0,i=0,n=0,s=new Buffer(jie(r)*8);e<r.length;){var o=r[e];i>3?(n=o&255>>i,i=(i+5)%8,n=n<<i|(e+1<r.length?r[e+1]:0)>>8-i,e++):(n=o>>8-(i+5)&31,i=(i+5)%8,i===0&&e++),s[t]=Jie.charCodeAt(n),t++}for(e=t;e<s.length;e++)s[e]=61;return s};q2.decode=function(r){var e=0,t=0,i,n=0;Buffer.isBuffer(r)||(r=new Buffer(r));for(var s=new Buffer(Math.ceil(r.length*5/8)),o=0;o<r.length&&r[o]!==61;o++){var a=r[o]-48;if(a<NN.length)t=NN[a],e<=3?(e=(e+5)%8,e===0?(i|=t,s[n]=i,n++,i=0):i|=255&t<<8-e):(e=(e+5)%8,i|=255&t>>>e,s[n]=i,n++,i=255&t<<8-e);else throw new Error("Invalid input - it is not base32 encoded string")}return s.slice(0,n)}});var MN=oe(O2=>{var ON=qN();O2.encode=ON.encode;O2.decode=ON.decode});var HN=oe(lw=>{"use strict";Object.defineProperty(lw,"__esModule",{value:!0});function $ie(r){return r&&typeof r=="object"&&"default"in r?r.default:r}var LN=$ie(MN()),Vie=(r,e)=>LN.decode(r).toString(e),Yie=(r,e)=>LN.encode(Buffer.from(r,e).toString("ascii")).toString().replace(/=/g,"");lw.keyDecoder=Vie;lw.keyEncoder=Yie});var d9=oe(De=>{"use strict";Object.defineProperty(De,"__esModule",{value:!0});function gw(r){return Object.keys(r).map(e=>r[e])}(function(r){r.SHA1="sha1",r.SHA256="sha256",r.SHA512="sha512"})(De.HashAlgorithms||(De.HashAlgorithms={}));var uw=gw(De.HashAlgorithms);(function(r){r.ASCII="ascii",r.BASE64="base64",r.HEX="hex",r.LATIN1="latin1",r.UTF8="utf8"})(De.KeyEncodings||(De.KeyEncodings={}));var M2=gw(De.KeyEncodings);(function(r){r.HOTP="hotp",r.TOTP="totp"})(De.Strategy||(De.Strategy={}));var L2=gw(De.Strategy),pw=()=>{throw new Error("Please provide an options.createDigest implementation.")};function G2(r){return/^(\d+)$/.test(r)}function z2(r,e,t){return r.length>=e?r:`${Array(e+1).join(t)}${r}`.slice(-1*e)}function J2(r){let e=`otpauth://${r.type}/{labelPrefix}:{accountName}?secret={secret}{query}`,t=[];if(L2.indexOf(r.type)<0)throw new Error(`Expecting options.type to be one of ${L2.join(", ")}. Received ${r.type}.`);if(r.type==="hotp"){if(r.counter==null||typeof r.counter!="number")throw new Error('Expecting options.counter to be a number when options.type is "hotp".');t.push(`&counter=${r.counter}`)}return r.type==="totp"&&r.step&&t.push(`&period=${r.step}`),r.digits&&t.push(`&digits=${r.digits}`),r.algorithm&&t.push(`&algorithm=${r.algorithm.toUpperCase()}`),r.issuer&&t.push(`&issuer=${encodeURIComponent(r.issuer)}`),e.replace("{labelPrefix}",encodeURIComponent(r.issuer||r.accountName)).replace("{accountName}",encodeURIComponent(r.accountName)).replace("{secret}",r.secret).replace("{query}",t.join(""))}var fw=class r{constructor(e={}){this._defaultOptions=Object.freeze({...e}),this._options=Object.freeze({})}create(e={}){return new r(e)}clone(e={}){let t=this.create({...this._defaultOptions,...e});return t.options=this._options,t}get options(){return Object.freeze({...this._defaultOptions,...this._options})}set options(e){this._options=Object.freeze({...this._options,...e})}allOptions(){return this.options}resetOptions(){this._options=Object.freeze({})}};function j2(r){if(typeof r.createDigest!="function")throw new Error("Expecting options.createDigest to be a function.");if(typeof r.createHmacKey!="function")throw new Error("Expecting options.createHmacKey to be a function.");if(typeof r.digits!="number")throw new Error("Expecting options.digits to be a number.");if(!r.algorithm||uw.indexOf(r.algorithm)<0)throw new Error(`Expecting options.algorithm to be one of ${uw.join(", ")}. Received ${r.algorithm}.`);if(!r.encoding||M2.indexOf(r.encoding)<0)throw new Error(`Expecting options.encoding to be one of ${M2.join(", ")}. Received ${r.encoding}.`)}var GN=(r,e,t)=>Buffer.from(e,t).toString("hex");function zN(){return{algorithm:De.HashAlgorithms.SHA1,createHmacKey:GN,createDigest:pw,digits:6,encoding:De.KeyEncodings.ASCII}}function JN(r){let e={...zN(),...r};return j2(e),Object.freeze(e)}function jN(r){let e=r.toString(16);return z2(e,16,"0")}function $N(r,e){let t=Buffer.from(r,"hex"),i=t[t.length-1]&15,s=((t[i]&127)<<24|(t[i+1]&255)<<16|(t[i+2]&255)<<8|t[i+3]&255)%Math.pow(10,e);return z2(String(s),e,"0")}function Wie(r,e,t){let i=jN(e),n=t.createHmacKey(t.algorithm,r,t.encoding);return t.createDigest(t.algorithm,n,i)}function mw(r,e,t){let i=t.digest||Wie(r,e,t);return $N(i,t.digits)}function VN(r,e,t,i){if(!G2(r))return!1;let n=mw(e,t,i);return r===n}function YN(r,e,t,i,n){return J2({algorithm:n.algorithm,digits:n.digits,type:De.Strategy.HOTP,accountName:r,counter:i,issuer:e,secret:t})}var Aw=class r extends fw{create(e={}){return new r(e)}allOptions(){return JN(this.options)}generate(e,t){return mw(e,t,this.allOptions())}check(e,t,i){return VN(e,t,i,this.allOptions())}verify(e){if(typeof e!="object")throw new Error("Expecting argument 0 of verify to be an object");return this.check(e.token,e.secret,e.counter)}keyuri(e,t,i,n){return YN(e,t,i,n,this.allOptions())}};function WN(r){if(typeof r=="number")return[Math.abs(r),Math.abs(r)];if(Array.isArray(r)){let[e,t]=r;if(typeof e=="number"&&typeof t=="number")return[Math.abs(e),Math.abs(t)]}throw new Error("Expecting options.window to be an number or [number, number].")}function $2(r){if(j2(r),WN(r.window),typeof r.epoch!="number")throw new Error("Expecting options.epoch to be a number.");if(typeof r.step!="number")throw new Error("Expecting options.step to be a number.")}var dw=(r,e,t)=>{let i=r.length,n=Buffer.from(r,e).toString("hex");if(i<t){let s=new Array(t-i+1).join(n);return Buffer.from(s,"hex").slice(0,t).toString("hex")}return n},V2=(r,e,t)=>{switch(r){case De.HashAlgorithms.SHA1:return dw(e,t,20);case De.HashAlgorithms.SHA256:return dw(e,t,32);case De.HashAlgorithms.SHA512:return dw(e,t,64);default:throw new Error(`Expecting algorithm to be one of ${uw.join(", ")}. Received ${r}.`)}};function XN(){return{algorithm:De.HashAlgorithms.SHA1,createDigest:pw,createHmacKey:V2,digits:6,encoding:De.KeyEncodings.ASCII,epoch:Date.now(),step:30,window:0}}function ZN(r){let e={...XN(),...r};return $2(e),Object.freeze(e)}function e9(r,e){return Math.floor(r/e/1e3)}function yw(r,e){let t=e9(e.epoch,e.step);return mw(r,t,e)}function KN(r,e,t,i){let n=[];if(i===0)return n;for(let s=1;s<=i;s++){let o=e*s*t;n.push(r+o)}return n}function t9(r,e,t){let i=WN(t),n=e*1e3;return{current:r,past:KN(r,-1,n,i[0]),future:KN(r,1,n,i[1])}}function Y2(r,e,t){if(!G2(r))return!1;let i=yw(e,t);return r===i}function H2(r,e,t,i){let n=null;return r.some((s,o)=>Y2(e,t,{...i,epoch:s})?(n=o+1,!0):!1),n}function W2(r,e,t){if(Y2(r,e,t))return 0;let i=t9(t.epoch,t.step,t.window),n=H2(i.past,r,e,t);return n!==null?n*-1:H2(i.future,r,e,t)}function X2(r,e){return Math.floor(r/1e3)%e}function r9(r,e){return e-X2(r,e)}function i9(r,e,t,i){return J2({algorithm:i.algorithm,digits:i.digits,step:i.step,type:De.Strategy.TOTP,accountName:r,issuer:e,secret:t})}var hw=class r extends Aw{create(e={}){return new r(e)}allOptions(){return ZN(this.options)}generate(e){return yw(e,this.allOptions())}checkDelta(e,t){return W2(e,t,this.allOptions())}check(e,t){return typeof this.checkDelta(e,t)=="number"}verify(e){if(typeof e!="object")throw new Error("Expecting argument 0 of verify to be an object");return this.check(e.token,e.secret)}timeRemaining(){let e=this.allOptions();return r9(e.epoch,e.step)}timeUsed(){let e=this.allOptions();return X2(e.epoch,e.step)}keyuri(e,t,i){return i9(e,t,i,this.allOptions())}};function n9(r){if($2(r),typeof r.keyDecoder!="function")throw new Error("Expecting options.keyDecoder to be a function.");if(r.keyEncoder&&typeof r.keyEncoder!="function")throw new Error("Expecting options.keyEncoder to be a function.")}function s9(){return{algorithm:De.HashAlgorithms.SHA1,createDigest:pw,createHmacKey:V2,digits:6,encoding:De.KeyEncodings.HEX,epoch:Date.now(),step:30,window:0}}function o9(r){let e={...s9(),...r};return n9(e),Object.freeze(e)}function Z2(r,e){return e.keyEncoder(r,e.encoding)}function Iw(r,e){return e.keyDecoder(r,e.encoding)}function a9(r,e){let t=e.createRandomBytes(r,e.encoding);return Z2(t,e)}function c9(r,e){return yw(Iw(r,e),e)}function l9(r,e,t){return W2(r,Iw(e,t),t)}var K2=class r extends hw{create(e={}){return new r(e)}allOptions(){return o9(this.options)}generate(e){return c9(e,this.allOptions())}checkDelta(e,t){return l9(e,t,this.allOptions())}encode(e){return Z2(e,this.allOptions())}decode(e){return Iw(e,this.allOptions())}generateSecret(e=10){return a9(e,this.allOptions())}};De.Authenticator=K2;De.HASH_ALGORITHMS=uw;De.HOTP=Aw;De.KEY_ENCODINGS=M2;De.OTP=fw;De.STRATEGY=L2;De.TOTP=hw;De.authenticatorCheckWithWindow=l9;De.authenticatorDecoder=Iw;De.authenticatorDefaultOptions=s9;De.authenticatorEncoder=Z2;De.authenticatorGenerateSecret=a9;De.authenticatorOptionValidator=n9;De.authenticatorOptions=o9;De.authenticatorToken=c9;De.createDigestPlaceholder=pw;De.hotpCheck=VN;De.hotpCounter=jN;De.hotpCreateHmacKey=GN;De.hotpDefaultOptions=zN;De.hotpDigestToToken=$N;De.hotpKeyuri=YN;De.hotpOptions=JN;De.hotpOptionsValidator=j2;De.hotpToken=mw;De.isTokenValid=G2;De.keyuri=J2;De.objectValues=gw;De.padStart=z2;De.totpCheck=Y2;De.totpCheckByEpoch=H2;De.totpCheckWithWindow=W2;De.totpCounter=e9;De.totpCreateHmacKey=V2;De.totpDefaultOptions=XN;De.totpEpochAvailable=t9;De.totpKeyuri=i9;De.totpOptions=ZN;De.totpOptionsValidator=$2;De.totpPadSecret=dw;De.totpTimeRemaining=r9;De.totpTimeUsed=X2;De.totpToken=yw});var f9=oe(qA=>{"use strict";Object.defineProperty(qA,"__esModule",{value:!0});var ww=RN(),u9=HN(),eb=d9(),Xie=new eb.HOTP({createDigest:ww.createDigest}),Zie=new eb.TOTP({createDigest:ww.createDigest}),ene=new eb.Authenticator({createDigest:ww.createDigest,createRandomBytes:ww.createRandomBytes,keyDecoder:u9.keyDecoder,keyEncoder:u9.keyEncoder});qA.authenticator=ene;qA.hotp=Xie;qA.totp=Zie});var h9=oe(tb=>{"use strict";Object.defineProperty(tb,"__esModule",{value:!0});var A9=f9();Object.keys(A9).forEach(function(r){r!=="default"&&Object.defineProperty(tb,r,{enumerable:!0,get:function(){return A9[r]}})})});var rb=oe((mEe,g9)=>{g9.exports=function(){return typeof Promise=="function"&&Promise.prototype&&Promise.prototype.then}});var Ua=oe(Zc=>{var ib,tne=[0,26,44,70,100,134,172,196,242,292,346,404,466,532,581,655,733,815,901,991,1085,1156,1258,1364,1474,1588,1706,1828,1921,2051,2185,2323,2465,2611,2761,2876,3034,3196,3362,3532,3706];Zc.getSymbolSize=function(e){if(!e)throw new Error('"version" cannot be null or undefined');if(e<1||e>40)throw new Error('"version" should be in range from 1 to 40');return e*4+17};Zc.getSymbolTotalCodewords=function(e){return tne[e]};Zc.getBCHDigit=function(r){let e=0;for(;r!==0;)e++,r>>>=1;return e};Zc.setToSJISFunction=function(e){if(typeof e!="function")throw new Error('"toSJISFunc" is not a valid function.');ib=e};Zc.isKanjiModeEnabled=function(){return typeof ib<"u"};Zc.toSJIS=function(e){return ib(e)}});var xw=oe(hn=>{hn.L={bit:1};hn.M={bit:0};hn.Q={bit:3};hn.H={bit:2};function rne(r){if(typeof r!="string")throw new Error("Param is not a string");switch(r.toLowerCase()){case"l":case"low":return hn.L;case"m":case"medium":return hn.M;case"q":case"quartile":return hn.Q;case"h":case"high":return hn.H;default:throw new Error("Unknown EC Level: "+r)}}hn.isValid=function(e){return e&&typeof e.bit<"u"&&e.bit>=0&&e.bit<4};hn.from=function(e,t){if(hn.isValid(e))return e;try{return rne(e)}catch{return t}}});var y9=oe((wEe,m9)=>{function p9(){this.buffer=[],this.length=0}p9.prototype={get:function(r){let e=Math.floor(r/8);return(this.buffer[e]>>>7-r%8&1)===1},put:function(r,e){for(let t=0;t<e;t++)this.putBit((r>>>e-t-1&1)===1)},getLengthInBits:function(){return this.length},putBit:function(r){let e=Math.floor(this.length/8);this.buffer.length<=e&&this.buffer.push(0),r&&(this.buffer[e]|=128>>>this.length%8),this.length++}};m9.exports=p9});var w9=oe((xEe,I9)=>{function OA(r){if(!r||r<1)throw new Error("BitMatrix size must be defined and greater than 0");this.size=r,this.data=new Uint8Array(r*r),this.reservedBit=new Uint8Array(r*r)}OA.prototype.set=function(r,e,t,i){let n=r*this.size+e;this.data[n]=t,i&&(this.reservedBit[n]=!0)};OA.prototype.get=function(r,e){return this.data[r*this.size+e]};OA.prototype.xor=function(r,e,t){this.data[r*this.size+e]^=t};OA.prototype.isReserved=function(r,e){return this.reservedBit[r*this.size+e]};I9.exports=OA});var x9=oe(Cw=>{var ine=Ua().getSymbolSize;Cw.getRowColCoords=function(e){if(e===1)return[];let t=Math.floor(e/7)+2,i=ine(e),n=i===145?26:Math.ceil((i-13)/(2*t-2))*2,s=[i-7];for(let o=1;o<t-1;o++)s[o]=s[o-1]-n;return s.push(6),s.reverse()};Cw.getPositions=function(e){let t=[],i=Cw.getRowColCoords(e),n=i.length;for(let s=0;s<n;s++)for(let o=0;o<n;o++)s===0&&o===0||s===0&&o===n-1||s===n-1&&o===0||t.push([i[s],i[o]]);return t}});var B9=oe(E9=>{var nne=Ua().getSymbolSize,C9=7;E9.getPositions=function(e){let t=nne(e);return[[0,0],[t-C9,0],[0,t-C9]]}});var b9=oe(Bt=>{Bt.Patterns={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7};var el={N1:3,N2:3,N3:40,N4:10};Bt.isValid=function(e){return e!=null&&e!==""&&!isNaN(e)&&e>=0&&e<=7};Bt.from=function(e){return Bt.isValid(e)?parseInt(e,10):void 0};Bt.getPenaltyN1=function(e){let t=e.size,i=0,n=0,s=0,o=null,a=null;for(let c=0;c<t;c++){n=s=0,o=a=null;for(let l=0;l<t;l++){let d=e.get(c,l);d===o?n++:(n>=5&&(i+=el.N1+(n-5)),o=d,n=1),d=e.get(l,c),d===a?s++:(s>=5&&(i+=el.N1+(s-5)),a=d,s=1)}n>=5&&(i+=el.N1+(n-5)),s>=5&&(i+=el.N1+(s-5))}return i};Bt.getPenaltyN2=function(e){let t=e.size,i=0;for(let n=0;n<t-1;n++)for(let s=0;s<t-1;s++){let o=e.get(n,s)+e.get(n,s+1)+e.get(n+1,s)+e.get(n+1,s+1);(o===4||o===0)&&i++}return i*el.N2};Bt.getPenaltyN3=function(e){let t=e.size,i=0,n=0,s=0;for(let o=0;o<t;o++){n=s=0;for(let a=0;a<t;a++)n=n<<1&2047|e.get(o,a),a>=10&&(n===1488||n===93)&&i++,s=s<<1&2047|e.get(a,o),a>=10&&(s===1488||s===93)&&i++}return i*el.N3};Bt.getPenaltyN4=function(e){let t=0,i=e.data.length;for(let s=0;s<i;s++)t+=e.data[s];return Math.abs(Math.ceil(t*100/i/5)-10)*el.N4};function sne(r,e,t){switch(r){case Bt.Patterns.PATTERN000:return(e+t)%2===0;case Bt.Patterns.PATTERN001:return e%2===0;case Bt.Patterns.PATTERN010:return t%3===0;case Bt.Patterns.PATTERN011:return(e+t)%3===0;case Bt.Patterns.PATTERN100:return(Math.floor(e/2)+Math.floor(t/3))%2===0;case Bt.Patterns.PATTERN101:return e*t%2+e*t%3===0;case Bt.Patterns.PATTERN110:return(e*t%2+e*t%3)%2===0;case Bt.Patterns.PATTERN111:return(e*t%3+(e+t)%2)%2===0;default:throw new Error("bad maskPattern:"+r)}}Bt.applyMask=function(e,t){let i=t.size;for(let n=0;n<i;n++)for(let s=0;s<i;s++)t.isReserved(s,n)||t.xor(s,n,sne(e,s,n))};Bt.getBestMask=function(e,t){let i=Object.keys(Bt.Patterns).length,n=0,s=1/0;for(let o=0;o<i;o++){t(o),Bt.applyMask(o,e);let a=Bt.getPenaltyN1(e)+Bt.getPenaltyN2(e)+Bt.getPenaltyN3(e)+Bt.getPenaltyN4(e);Bt.applyMask(o,e),a<s&&(s=a,n=o)}return n}});var sb=oe(nb=>{var Ra=xw(),Ew=[1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,4,1,2,4,4,2,4,4,4,2,4,6,5,2,4,6,6,2,5,8,8,4,5,8,8,4,5,8,11,4,8,10,11,4,9,12,16,4,9,16,16,6,10,12,18,6,10,17,16,6,11,16,19,6,13,18,21,7,14,21,25,8,16,20,25,8,17,23,25,9,17,23,34,9,18,25,30,10,20,27,32,12,21,29,35,12,23,34,37,12,25,34,40,13,26,35,42,14,28,38,45,15,29,40,48,16,31,43,51,17,33,45,54,18,35,48,57,19,37,51,60,19,38,53,63,20,40,56,66,21,43,59,70,22,45,62,74,24,47,65,77,25,49,68,81],Bw=[7,10,13,17,10,16,22,28,15,26,36,44,20,36,52,64,26,48,72,88,36,64,96,112,40,72,108,130,48,88,132,156,60,110,160,192,72,130,192,224,80,150,224,264,96,176,260,308,104,198,288,352,120,216,320,384,132,240,360,432,144,280,408,480,168,308,448,532,180,338,504,588,196,364,546,650,224,416,600,700,224,442,644,750,252,476,690,816,270,504,750,900,300,560,810,960,312,588,870,1050,336,644,952,1110,360,700,1020,1200,390,728,1050,1260,420,784,1140,1350,450,812,1200,1440,480,868,1290,1530,510,924,1350,1620,540,980,1440,1710,570,1036,1530,1800,570,1064,1590,1890,600,1120,1680,1980,630,1204,1770,2100,660,1260,1860,2220,720,1316,1950,2310,750,1372,2040,2430];nb.getBlocksCount=function(e,t){switch(t){case Ra.L:return Ew[(e-1)*4+0];case Ra.M:return Ew[(e-1)*4+1];case Ra.Q:return Ew[(e-1)*4+2];case Ra.H:return Ew[(e-1)*4+3];default:return}};nb.getTotalCodewordsCount=function(e,t){switch(t){case Ra.L:return Bw[(e-1)*4+0];case Ra.M:return Bw[(e-1)*4+1];case Ra.Q:return Bw[(e-1)*4+2];case Ra.H:return Bw[(e-1)*4+3];default:return}}});var v9=oe(vw=>{var MA=new Uint8Array(512),bw=new Uint8Array(256);(function(){let e=1;for(let t=0;t<255;t++)MA[t]=e,bw[e]=t,e<<=1,e&256&&(e^=285);for(let t=255;t<512;t++)MA[t]=MA[t-255]})();vw.log=function(e){if(e<1)throw new Error("log("+e+")");return bw[e]};vw.exp=function(e){return MA[e]};vw.mul=function(e,t){return e===0||t===0?0:MA[bw[e]+bw[t]]}});var k9=oe(LA=>{var ob=v9();LA.mul=function(e,t){let i=new Uint8Array(e.length+t.length-1);for(let n=0;n<e.length;n++)for(let s=0;s<t.length;s++)i[n+s]^=ob.mul(e[n],t[s]);return i};LA.mod=function(e,t){let i=new Uint8Array(e);for(;i.length-t.length>=0;){let n=i[0];for(let o=0;o<t.length;o++)i[o]^=ob.mul(t[o],n);let s=0;for(;s<i.length&&i[s]===0;)s++;i=i.slice(s)}return i};LA.generateECPolynomial=function(e){let t=new Uint8Array([1]);for(let i=0;i<e;i++)t=LA.mul(t,new Uint8Array([1,ob.exp(i)]));return t}});var Q9=oe((SEe,D9)=>{var S9=k9();function ab(r){this.genPoly=void 0,this.degree=r,this.degree&&this.initialize(this.degree)}ab.prototype.initialize=function(e){this.degree=e,this.genPoly=S9.generateECPolynomial(this.degree)};ab.prototype.encode=function(e){if(!this.genPoly)throw new Error("Encoder not initialized");let t=new Uint8Array(e.length+this.degree);t.set(e);let i=S9.mod(t,this.genPoly),n=this.degree-i.length;if(n>0){let s=new Uint8Array(this.degree);return s.set(i,n),s}return i};D9.exports=ab});var cb=oe(_9=>{_9.isValid=function(e){return!isNaN(e)&&e>=1&&e<=40}});var lb=oe(yo=>{var F9="[0-9]+",one="[A-Z $%*+\\-./:]+",HA="(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+";HA=HA.replace(/u/g,"\\u");var ane="(?:(?![A-Z0-9 $%*+\\-./:]|"+HA+`)(?:.|[\r +]))+`;yo.KANJI=new RegExp(HA,"g");yo.BYTE_KANJI=new RegExp("[^A-Z0-9 $%*+\\-./:]+","g");yo.BYTE=new RegExp(ane,"g");yo.NUMERIC=new RegExp(F9,"g");yo.ALPHANUMERIC=new RegExp(one,"g");var cne=new RegExp("^"+HA+"$"),lne=new RegExp("^"+F9+"$"),dne=new RegExp("^[A-Z0-9 $%*+\\-./:]+$");yo.testKanji=function(e){return cne.test(e)};yo.testNumeric=function(e){return lne.test(e)};yo.testAlphanumeric=function(e){return dne.test(e)}});var Na=oe(lr=>{var une=cb(),db=lb();lr.NUMERIC={id:"Numeric",bit:1,ccBits:[10,12,14]};lr.ALPHANUMERIC={id:"Alphanumeric",bit:2,ccBits:[9,11,13]};lr.BYTE={id:"Byte",bit:4,ccBits:[8,16,16]};lr.KANJI={id:"Kanji",bit:8,ccBits:[8,10,12]};lr.MIXED={bit:-1};lr.getCharCountIndicator=function(e,t){if(!e.ccBits)throw new Error("Invalid mode: "+e);if(!une.isValid(t))throw new Error("Invalid version: "+t);return t>=1&&t<10?e.ccBits[0]:t<27?e.ccBits[1]:e.ccBits[2]};lr.getBestModeForData=function(e){return db.testNumeric(e)?lr.NUMERIC:db.testAlphanumeric(e)?lr.ALPHANUMERIC:db.testKanji(e)?lr.KANJI:lr.BYTE};lr.toString=function(e){if(e&&e.id)return e.id;throw new Error("Invalid mode")};lr.isValid=function(e){return e&&e.bit&&e.ccBits};function fne(r){if(typeof r!="string")throw new Error("Param is not a string");switch(r.toLowerCase()){case"numeric":return lr.NUMERIC;case"alphanumeric":return lr.ALPHANUMERIC;case"kanji":return lr.KANJI;case"byte":return lr.BYTE;default:throw new Error("Unknown mode: "+r)}}lr.from=function(e,t){if(lr.isValid(e))return e;try{return fne(e)}catch{return t}}});var N9=oe(tl=>{var kw=Ua(),Ane=sb(),P9=xw(),qa=Na(),ub=cb(),U9=7973,T9=kw.getBCHDigit(U9);function hne(r,e,t){for(let i=1;i<=40;i++)if(e<=tl.getCapacity(i,t,r))return i}function R9(r,e){return qa.getCharCountIndicator(r,e)+4}function gne(r,e){let t=0;return r.forEach(function(i){let n=R9(i.mode,e);t+=n+i.getBitsLength()}),t}function pne(r,e){for(let t=1;t<=40;t++)if(gne(r,t)<=tl.getCapacity(t,e,qa.MIXED))return t}tl.from=function(e,t){return ub.isValid(e)?parseInt(e,10):t};tl.getCapacity=function(e,t,i){if(!ub.isValid(e))throw new Error("Invalid QR Code version");typeof i>"u"&&(i=qa.BYTE);let n=kw.getSymbolTotalCodewords(e),s=Ane.getTotalCodewordsCount(e,t),o=(n-s)*8;if(i===qa.MIXED)return o;let a=o-R9(i,e);switch(i){case qa.NUMERIC:return Math.floor(a/10*3);case qa.ALPHANUMERIC:return Math.floor(a/11*2);case qa.KANJI:return Math.floor(a/13);case qa.BYTE:default:return Math.floor(a/8)}};tl.getBestVersionForData=function(e,t){let i,n=P9.from(t,P9.M);if(Array.isArray(e)){if(e.length>1)return pne(e,n);if(e.length===0)return 1;i=e[0]}else i=e;return hne(i.mode,i.getLength(),n)};tl.getEncodedBits=function(e){if(!ub.isValid(e)||e<7)throw new Error("Invalid QR Code version");let t=e<<12;for(;kw.getBCHDigit(t)-T9>=0;)t^=U9<<kw.getBCHDigit(t)-T9;return e<<12|t}});var L9=oe(M9=>{var fb=Ua(),O9=1335,mne=21522,q9=fb.getBCHDigit(O9);M9.getEncodedBits=function(e,t){let i=e.bit<<3|t,n=i<<10;for(;fb.getBCHDigit(n)-q9>=0;)n^=O9<<fb.getBCHDigit(n)-q9;return(i<<10|n)^mne}});var K9=oe((TEe,H9)=>{var yne=Na();function Xd(r){this.mode=yne.NUMERIC,this.data=r.toString()}Xd.getBitsLength=function(e){return 10*Math.floor(e/3)+(e%3?e%3*3+1:0)};Xd.prototype.getLength=function(){return this.data.length};Xd.prototype.getBitsLength=function(){return Xd.getBitsLength(this.data.length)};Xd.prototype.write=function(e){let t,i,n;for(t=0;t+3<=this.data.length;t+=3)i=this.data.substr(t,3),n=parseInt(i,10),e.put(n,10);let s=this.data.length-t;s>0&&(i=this.data.substr(t),n=parseInt(i,10),e.put(n,s*3+1))};H9.exports=Xd});var z9=oe((UEe,G9)=>{var Ine=Na(),Ab=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"," ","$","%","*","+","-",".","/",":"];function Zd(r){this.mode=Ine.ALPHANUMERIC,this.data=r}Zd.getBitsLength=function(e){return 11*Math.floor(e/2)+6*(e%2)};Zd.prototype.getLength=function(){return this.data.length};Zd.prototype.getBitsLength=function(){return Zd.getBitsLength(this.data.length)};Zd.prototype.write=function(e){let t;for(t=0;t+2<=this.data.length;t+=2){let i=Ab.indexOf(this.data[t])*45;i+=Ab.indexOf(this.data[t+1]),e.put(i,11)}this.data.length%2&&e.put(Ab.indexOf(this.data[t]),6)};G9.exports=Zd});var j9=oe((REe,J9)=>{var wne=Na();function eu(r){this.mode=wne.BYTE,typeof r=="string"?this.data=new TextEncoder().encode(r):this.data=new Uint8Array(r)}eu.getBitsLength=function(e){return e*8};eu.prototype.getLength=function(){return this.data.length};eu.prototype.getBitsLength=function(){return eu.getBitsLength(this.data.length)};eu.prototype.write=function(r){for(let e=0,t=this.data.length;e<t;e++)r.put(this.data[e],8)};J9.exports=eu});var V9=oe((NEe,$9)=>{var xne=Na(),Cne=Ua();function tu(r){this.mode=xne.KANJI,this.data=r}tu.getBitsLength=function(e){return e*13};tu.prototype.getLength=function(){return this.data.length};tu.prototype.getBitsLength=function(){return tu.getBitsLength(this.data.length)};tu.prototype.write=function(r){let e;for(e=0;e<this.data.length;e++){let t=Cne.toSJIS(this.data[e]);if(t>=33088&&t<=40956)t-=33088;else if(t>=57408&&t<=60351)t-=49472;else throw new Error("Invalid SJIS character: "+this.data[e]+` +Make sure your charset is UTF-8`);t=(t>>>8&255)*192+(t&255),r.put(t,13)}};$9.exports=tu});var Y9=oe((qEe,hb)=>{"use strict";var KA={single_source_shortest_paths:function(r,e,t){var i={},n={};n[e]=0;var s=KA.PriorityQueue.make();s.push(e,0);for(var o,a,c,l,d,u,f,h,g;!s.empty();){o=s.pop(),a=o.value,l=o.cost,d=r[a]||{};for(c in d)d.hasOwnProperty(c)&&(u=d[c],f=l+u,h=n[c],g=typeof n[c]>"u",(g||h>f)&&(n[c]=f,s.push(c,f),i[c]=a))}if(typeof t<"u"&&typeof n[t]>"u"){var p=["Could not find a path from ",e," to ",t,"."].join("");throw new Error(p)}return i},extract_shortest_path_from_predecessor_list:function(r,e){for(var t=[],i=e,n;i;)t.push(i),n=r[i],i=r[i];return t.reverse(),t},find_path:function(r,e,t){var i=KA.single_source_shortest_paths(r,e,t);return KA.extract_shortest_path_from_predecessor_list(i,t)},PriorityQueue:{make:function(r){var e=KA.PriorityQueue,t={},i;r=r||{};for(i in e)e.hasOwnProperty(i)&&(t[i]=e[i]);return t.queue=[],t.sorter=r.sorter||e.default_sorter,t},default_sorter:function(r,e){return r.cost-e.cost},push:function(r,e){var t={value:r,cost:e};this.queue.push(t),this.queue.sort(this.sorter)},pop:function(){return this.queue.shift()},empty:function(){return this.queue.length===0}}};typeof hb<"u"&&(hb.exports=KA)});var n7=oe(ru=>{var At=Na(),Z9=K9(),e7=z9(),t7=j9(),r7=V9(),GA=lb(),Sw=Ua(),Ene=Y9();function W9(r){return unescape(encodeURIComponent(r)).length}function zA(r,e,t){let i=[],n;for(;(n=r.exec(t))!==null;)i.push({data:n[0],index:n.index,mode:e,length:n[0].length});return i}function i7(r){let e=zA(GA.NUMERIC,At.NUMERIC,r),t=zA(GA.ALPHANUMERIC,At.ALPHANUMERIC,r),i,n;return Sw.isKanjiModeEnabled()?(i=zA(GA.BYTE,At.BYTE,r),n=zA(GA.KANJI,At.KANJI,r)):(i=zA(GA.BYTE_KANJI,At.BYTE,r),n=[]),e.concat(t,i,n).sort(function(o,a){return o.index-a.index}).map(function(o){return{data:o.data,mode:o.mode,length:o.length}})}function gb(r,e){switch(e){case At.NUMERIC:return Z9.getBitsLength(r);case At.ALPHANUMERIC:return e7.getBitsLength(r);case At.KANJI:return r7.getBitsLength(r);case At.BYTE:return t7.getBitsLength(r)}}function Bne(r){return r.reduce(function(e,t){let i=e.length-1>=0?e[e.length-1]:null;return i&&i.mode===t.mode?(e[e.length-1].data+=t.data,e):(e.push(t),e)},[])}function bne(r){let e=[];for(let t=0;t<r.length;t++){let i=r[t];switch(i.mode){case At.NUMERIC:e.push([i,{data:i.data,mode:At.ALPHANUMERIC,length:i.length},{data:i.data,mode:At.BYTE,length:i.length}]);break;case At.ALPHANUMERIC:e.push([i,{data:i.data,mode:At.BYTE,length:i.length}]);break;case At.KANJI:e.push([i,{data:i.data,mode:At.BYTE,length:W9(i.data)}]);break;case At.BYTE:e.push([{data:i.data,mode:At.BYTE,length:W9(i.data)}])}}return e}function vne(r,e){let t={},i={start:{}},n=["start"];for(let s=0;s<r.length;s++){let o=r[s],a=[];for(let c=0;c<o.length;c++){let l=o[c],d=""+s+c;a.push(d),t[d]={node:l,lastCount:0},i[d]={};for(let u=0;u<n.length;u++){let f=n[u];t[f]&&t[f].node.mode===l.mode?(i[f][d]=gb(t[f].lastCount+l.length,l.mode)-gb(t[f].lastCount,l.mode),t[f].lastCount+=l.length):(t[f]&&(t[f].lastCount=l.length),i[f][d]=gb(l.length,l.mode)+4+At.getCharCountIndicator(l.mode,e))}}n=a}for(let s=0;s<n.length;s++)i[n[s]].end=0;return{map:i,table:t}}function X9(r,e){let t,i=At.getBestModeForData(r);if(t=At.from(e,i),t!==At.BYTE&&t.bit<i.bit)throw new Error('"'+r+'" cannot be encoded with mode '+At.toString(t)+`. + Suggested mode is: `+At.toString(i));switch(t===At.KANJI&&!Sw.isKanjiModeEnabled()&&(t=At.BYTE),t){case At.NUMERIC:return new Z9(r);case At.ALPHANUMERIC:return new e7(r);case At.KANJI:return new r7(r);case At.BYTE:return new t7(r)}}ru.fromArray=function(e){return e.reduce(function(t,i){return typeof i=="string"?t.push(X9(i,null)):i.data&&t.push(X9(i.data,i.mode)),t},[])};ru.fromString=function(e,t){let i=i7(e,Sw.isKanjiModeEnabled()),n=bne(i),s=vne(n,t),o=Ene.find_path(s.map,"start","end"),a=[];for(let c=1;c<o.length-1;c++)a.push(s.table[o[c]].node);return ru.fromArray(Bne(a))};ru.rawSplit=function(e){return ru.fromArray(i7(e,Sw.isKanjiModeEnabled()))}});var xb=oe(s7=>{var Qw=Ua(),pb=xw(),kne=y9(),Sne=w9(),Dne=x9(),Qne=B9(),Ib=b9(),wb=sb(),_ne=Q9(),Dw=N9(),Fne=L9(),Pne=Na(),mb=n7();function Tne(r,e){let t=r.size,i=Qne.getPositions(e);for(let n=0;n<i.length;n++){let s=i[n][0],o=i[n][1];for(let a=-1;a<=7;a++)if(!(s+a<=-1||t<=s+a))for(let c=-1;c<=7;c++)o+c<=-1||t<=o+c||(a>=0&&a<=6&&(c===0||c===6)||c>=0&&c<=6&&(a===0||a===6)||a>=2&&a<=4&&c>=2&&c<=4?r.set(s+a,o+c,!0,!0):r.set(s+a,o+c,!1,!0))}}function Une(r){let e=r.size;for(let t=8;t<e-8;t++){let i=t%2===0;r.set(t,6,i,!0),r.set(6,t,i,!0)}}function Rne(r,e){let t=Dne.getPositions(e);for(let i=0;i<t.length;i++){let n=t[i][0],s=t[i][1];for(let o=-2;o<=2;o++)for(let a=-2;a<=2;a++)o===-2||o===2||a===-2||a===2||o===0&&a===0?r.set(n+o,s+a,!0,!0):r.set(n+o,s+a,!1,!0)}}function Nne(r,e){let t=r.size,i=Dw.getEncodedBits(e),n,s,o;for(let a=0;a<18;a++)n=Math.floor(a/3),s=a%3+t-8-3,o=(i>>a&1)===1,r.set(n,s,o,!0),r.set(s,n,o,!0)}function yb(r,e,t){let i=r.size,n=Fne.getEncodedBits(e,t),s,o;for(s=0;s<15;s++)o=(n>>s&1)===1,s<6?r.set(s,8,o,!0):s<8?r.set(s+1,8,o,!0):r.set(i-15+s,8,o,!0),s<8?r.set(8,i-s-1,o,!0):s<9?r.set(8,15-s-1+1,o,!0):r.set(8,15-s-1,o,!0);r.set(i-8,8,1,!0)}function qne(r,e){let t=r.size,i=-1,n=t-1,s=7,o=0;for(let a=t-1;a>0;a-=2)for(a===6&&a--;;){for(let c=0;c<2;c++)if(!r.isReserved(n,a-c)){let l=!1;o<e.length&&(l=(e[o]>>>s&1)===1),r.set(n,a-c,l),s--,s===-1&&(o++,s=7)}if(n+=i,n<0||t<=n){n-=i,i=-i;break}}}function One(r,e,t){let i=new kne;t.forEach(function(c){i.put(c.mode.bit,4),i.put(c.getLength(),Pne.getCharCountIndicator(c.mode,r)),c.write(i)});let n=Qw.getSymbolTotalCodewords(r),s=wb.getTotalCodewordsCount(r,e),o=(n-s)*8;for(i.getLengthInBits()+4<=o&&i.put(0,4);i.getLengthInBits()%8!==0;)i.putBit(0);let a=(o-i.getLengthInBits())/8;for(let c=0;c<a;c++)i.put(c%2?17:236,8);return Mne(i,r,e)}function Mne(r,e,t){let i=Qw.getSymbolTotalCodewords(e),n=wb.getTotalCodewordsCount(e,t),s=i-n,o=wb.getBlocksCount(e,t),a=i%o,c=o-a,l=Math.floor(i/o),d=Math.floor(s/o),u=d+1,f=l-d,h=new _ne(f),g=0,p=new Array(o),I=new Array(o),y=0,w=new Uint8Array(r.buffer);for(let R=0;R<o;R++){let U=R<c?d:u;p[R]=w.slice(g,g+U),I[R]=h.encode(p[R]),g+=U,y=Math.max(y,U)}let C=new Uint8Array(i),b=0,x,_;for(x=0;x<y;x++)for(_=0;_<o;_++)x<p[_].length&&(C[b++]=p[_][x]);for(x=0;x<f;x++)for(_=0;_<o;_++)C[b++]=I[_][x];return C}function Lne(r,e,t,i){let n;if(Array.isArray(r))n=mb.fromArray(r);else if(typeof r=="string"){let l=e;if(!l){let d=mb.rawSplit(r);l=Dw.getBestVersionForData(d,t)}n=mb.fromString(r,l||40)}else throw new Error("Invalid data");let s=Dw.getBestVersionForData(n,t);if(!s)throw new Error("The amount of data is too big to be stored in a QR Code");if(!e)e=s;else if(e<s)throw new Error(` The chosen QR Code version cannot contain this amount of data. Minimum version required to store current data is: `+s+`. -`);let o=Yie(e,t,n),a=yw.getSymbolSize(e),c=new Oie(a);return zie(c,e),Jie(c),jie(c,e),eb(c,t,0),e>=7&&$ie(c,e),Vie(c,o),isNaN(i)&&(i=tb.getBestMask(c,eb.bind(null,c,t))),tb.applyMask(i,c),eb(c,t,i),{modules:c,version:e,errorCorrectionLevel:t,maskPattern:i,segments:n}}S9.create=function(e,t){if(typeof e>"u"||e==="")throw new Error("No input text");let i=X2.M,n,s;return typeof t<"u"&&(i=X2.from(t.errorCorrectionLevel,X2.M),n=mw.from(t.version),s=tb.from(t.maskPattern),t.toSJISFunc&&yw.setToSJISFunction(t.toSJISFunc)),Xie(e,n,i,s)}});var nb=oe((VCe,Q9)=>{"use strict";var Zie=wt("util"),D9=wt("stream"),Pn=Q9.exports=function(){D9.call(this),this._buffers=[],this._buffered=0,this._reads=[],this._paused=!1,this._encoding="utf8",this.writable=!0};Zie.inherits(Pn,D9);Pn.prototype.read=function(r,e){this._reads.push({length:Math.abs(r),allowLess:r<0,func:e}),process.nextTick(function(){this._process(),this._paused&&this._reads&&this._reads.length>0&&(this._paused=!1,this.emit("drain"))}.bind(this))};Pn.prototype.write=function(r,e){if(!this.writable)return this.emit("error",new Error("Stream not writable")),!1;let t;return Buffer.isBuffer(r)?t=r:t=Buffer.from(r,e||this._encoding),this._buffers.push(t),this._buffered+=t.length,this._process(),this._reads&&this._reads.length===0&&(this._paused=!0),this.writable&&!this._paused};Pn.prototype.end=function(r,e){r&&this.write(r,e),this.writable=!1,this._buffers&&(this._buffers.length===0?this._end():(this._buffers.push(null),this._process()))};Pn.prototype.destroySoon=Pn.prototype.end;Pn.prototype._end=function(){this._reads.length>0&&this.emit("error",new Error("Unexpected end of input")),this.destroy()};Pn.prototype.destroy=function(){this._buffers&&(this.writable=!1,this._reads=null,this._buffers=null,this.emit("close"))};Pn.prototype._processReadAllowingLess=function(r){this._reads.shift();let e=this._buffers[0];e.length>r.length?(this._buffered-=r.length,this._buffers[0]=e.slice(r.length),r.func.call(this,e.slice(0,r.length))):(this._buffered-=e.length,this._buffers.shift(),r.func.call(this,e))};Pn.prototype._processRead=function(r){this._reads.shift();let e=0,t=0,i=Buffer.alloc(r.length);for(;e<r.length;){let n=this._buffers[t++],s=Math.min(n.length,r.length-e);n.copy(i,e,0,s),e+=s,s!==n.length&&(this._buffers[--t]=n.slice(s))}t>0&&this._buffers.splice(0,t),this._buffered-=r.length,r.func.call(this,i)};Pn.prototype._process=function(){try{for(;this._buffered>0&&this._reads&&this._reads.length>0;){let r=this._reads[0];if(r.allowLess)this._processReadAllowingLess(r);else if(this._buffered>=r.length)this._processRead(r);else break}this._buffers&&!this.writable&&this._end()}catch(r){this.emit("error",r)}}});var ob=oe(sb=>{"use strict";var qa=[{x:[0],y:[0]},{x:[4],y:[0]},{x:[0,4],y:[4]},{x:[2,6],y:[0,4]},{x:[0,2,4,6],y:[2,6]},{x:[1,3,5,7],y:[0,2,4,6]},{x:[0,1,2,3,4,5,6,7],y:[1,3,5,7]}];sb.getImagePasses=function(r,e){let t=[],i=r%8,n=e%8,s=(r-i)/8,o=(e-n)/8;for(let a=0;a<qa.length;a++){let c=qa[a],l=s*c.x.length,d=o*c.y.length;for(let u=0;u<c.x.length&&c.x[u]<i;u++)l++;for(let u=0;u<c.y.length&&c.y[u]<n;u++)d++;l>0&&d>0&&t.push({width:l,height:d,index:a})}return t};sb.getInterlaceIterator=function(r){return function(e,t,i){let n=e%qa[i].x.length,s=(e-n)/qa[i].x.length*8+qa[i].x[n],o=t%qa[i].y.length,a=(t-o)/qa[i].y.length*8+qa[i].y[o];return s*4+a*r*4}}});var ab=oe((WCe,_9)=>{"use strict";_9.exports=function(e,t,i){let n=e+t-i,s=Math.abs(n-e),o=Math.abs(n-t),a=Math.abs(n-i);return s<=o&&s<=a?e:o<=a?t:i}});var cb=oe((XCe,P9)=>{"use strict";var ene=ob(),tne=ab();function F9(r,e,t){let i=r*e;return t!==8&&(i=Math.ceil(i/(8/t))),i}var Xd=P9.exports=function(r,e){let t=r.width,i=r.height,n=r.interlace,s=r.bpp,o=r.depth;if(this.read=e.read,this.write=e.write,this.complete=e.complete,this._imageIndex=0,this._images=[],n){let a=ene.getImagePasses(t,i);for(let c=0;c<a.length;c++)this._images.push({byteWidth:F9(a[c].width,s,o),height:a[c].height,lineIndex:0})}else this._images.push({byteWidth:F9(t,s,o),height:i,lineIndex:0});o===8?this._xComparison=s:o===16?this._xComparison=s*2:this._xComparison=1};Xd.prototype.start=function(){this.read(this._images[this._imageIndex].byteWidth+1,this._reverseFilterLine.bind(this))};Xd.prototype._unFilterType1=function(r,e,t){let i=this._xComparison,n=i-1;for(let s=0;s<t;s++){let o=r[1+s],a=s>n?e[s-i]:0;e[s]=o+a}};Xd.prototype._unFilterType2=function(r,e,t){let i=this._lastLine;for(let n=0;n<t;n++){let s=r[1+n],o=i?i[n]:0;e[n]=s+o}};Xd.prototype._unFilterType3=function(r,e,t){let i=this._xComparison,n=i-1,s=this._lastLine;for(let o=0;o<t;o++){let a=r[1+o],c=s?s[o]:0,l=o>n?e[o-i]:0,d=Math.floor((l+c)/2);e[o]=a+d}};Xd.prototype._unFilterType4=function(r,e,t){let i=this._xComparison,n=i-1,s=this._lastLine;for(let o=0;o<t;o++){let a=r[1+o],c=s?s[o]:0,l=o>n?e[o-i]:0,d=o>n&&s?s[o-i]:0,u=tne(l,c,d);e[o]=a+u}};Xd.prototype._reverseFilterLine=function(r){let e=r[0],t,i=this._images[this._imageIndex],n=i.byteWidth;if(e===0)t=r.slice(1,n+1);else switch(t=Buffer.alloc(n),e){case 1:this._unFilterType1(r,t,n);break;case 2:this._unFilterType2(r,t,n);break;case 3:this._unFilterType3(r,t,n);break;case 4:this._unFilterType4(r,t,n);break;default:throw new Error("Unrecognised filter type - "+e)}this.write(t),i.lineIndex++,i.lineIndex>=i.height?(this._lastLine=null,this._imageIndex++,i=this._images[this._imageIndex]):this._lastLine=t,i?this.read(i.byteWidth+1,this._reverseFilterLine.bind(this)):(this._lastLine=null,this.complete())}});var R9=oe((ZCe,U9)=>{"use strict";var rne=wt("util"),T9=nb(),ine=cb(),nne=U9.exports=function(r){T9.call(this);let e=[],t=this;this._filter=new ine(r,{read:this.read.bind(this),write:function(i){e.push(i)},complete:function(){t.emit("complete",Buffer.concat(e))}}),this._filter.start()};rne.inherits(nne,T9)});var Zd=oe((eEe,N9)=>{"use strict";N9.exports={PNG_SIGNATURE:[137,80,78,71,13,10,26,10],TYPE_IHDR:1229472850,TYPE_IEND:1229278788,TYPE_IDAT:1229209940,TYPE_PLTE:1347179589,TYPE_tRNS:1951551059,TYPE_gAMA:1732332865,COLORTYPE_GRAYSCALE:0,COLORTYPE_PALETTE:1,COLORTYPE_COLOR:2,COLORTYPE_ALPHA:4,COLORTYPE_PALETTE_COLOR:3,COLORTYPE_COLOR_ALPHA:6,COLORTYPE_TO_BPP_MAP:{0:1,2:3,3:1,4:2,6:4},GAMMA_DIVISION:1e5}});var ub=oe((tEe,q9)=>{"use strict";var lb=[];(function(){for(let r=0;r<256;r++){let e=r;for(let t=0;t<8;t++)e&1?e=3988292384^e>>>1:e=e>>>1;lb[r]=e}})();var db=q9.exports=function(){this._crc=-1};db.prototype.write=function(r){for(let e=0;e<r.length;e++)this._crc=lb[(this._crc^r[e])&255]^this._crc>>>8;return!0};db.prototype.crc32=function(){return this._crc^-1};db.crc32=function(r){let e=-1;for(let t=0;t<r.length;t++)e=lb[(e^r[t])&255]^e>>>8;return e^-1}});var fb=oe((rEe,O9)=>{"use strict";var yr=Zd(),sne=ub(),kr=O9.exports=function(r,e){this._options=r,r.checkCRC=r.checkCRC!==!1,this._hasIHDR=!1,this._hasIEND=!1,this._emittedHeadersFinished=!1,this._palette=[],this._colorType=0,this._chunks={},this._chunks[yr.TYPE_IHDR]=this._handleIHDR.bind(this),this._chunks[yr.TYPE_IEND]=this._handleIEND.bind(this),this._chunks[yr.TYPE_IDAT]=this._handleIDAT.bind(this),this._chunks[yr.TYPE_PLTE]=this._handlePLTE.bind(this),this._chunks[yr.TYPE_tRNS]=this._handleTRNS.bind(this),this._chunks[yr.TYPE_gAMA]=this._handleGAMA.bind(this),this.read=e.read,this.error=e.error,this.metadata=e.metadata,this.gamma=e.gamma,this.transColor=e.transColor,this.palette=e.palette,this.parsed=e.parsed,this.inflateData=e.inflateData,this.finished=e.finished,this.simpleTransparency=e.simpleTransparency,this.headersFinished=e.headersFinished||function(){}};kr.prototype.start=function(){this.read(yr.PNG_SIGNATURE.length,this._parseSignature.bind(this))};kr.prototype._parseSignature=function(r){let e=yr.PNG_SIGNATURE;for(let t=0;t<e.length;t++)if(r[t]!==e[t]){this.error(new Error("Invalid file signature"));return}this.read(8,this._parseChunkBegin.bind(this))};kr.prototype._parseChunkBegin=function(r){let e=r.readUInt32BE(0),t=r.readUInt32BE(4),i="";for(let s=4;s<8;s++)i+=String.fromCharCode(r[s]);let n=!!(r[4]&32);if(!this._hasIHDR&&t!==yr.TYPE_IHDR){this.error(new Error("Expected IHDR on beggining"));return}if(this._crc=new sne,this._crc.write(Buffer.from(i)),this._chunks[t])return this._chunks[t](e);if(!n){this.error(new Error("Unsupported critical chunk type "+i));return}this.read(e+4,this._skipChunk.bind(this))};kr.prototype._skipChunk=function(){this.read(8,this._parseChunkBegin.bind(this))};kr.prototype._handleChunkEnd=function(){this.read(4,this._parseChunkEnd.bind(this))};kr.prototype._parseChunkEnd=function(r){let e=r.readInt32BE(0),t=this._crc.crc32();if(this._options.checkCRC&&t!==e){this.error(new Error("Crc error - "+e+" - "+t));return}this._hasIEND||this.read(8,this._parseChunkBegin.bind(this))};kr.prototype._handleIHDR=function(r){this.read(r,this._parseIHDR.bind(this))};kr.prototype._parseIHDR=function(r){this._crc.write(r);let e=r.readUInt32BE(0),t=r.readUInt32BE(4),i=r[8],n=r[9],s=r[10],o=r[11],a=r[12];if(i!==8&&i!==4&&i!==2&&i!==1&&i!==16){this.error(new Error("Unsupported bit depth "+i));return}if(!(n in yr.COLORTYPE_TO_BPP_MAP)){this.error(new Error("Unsupported color type"));return}if(s!==0){this.error(new Error("Unsupported compression method"));return}if(o!==0){this.error(new Error("Unsupported filter method"));return}if(a!==0&&a!==1){this.error(new Error("Unsupported interlace method"));return}this._colorType=n;let c=yr.COLORTYPE_TO_BPP_MAP[this._colorType];this._hasIHDR=!0,this.metadata({width:e,height:t,depth:i,interlace:!!a,palette:!!(n&yr.COLORTYPE_PALETTE),color:!!(n&yr.COLORTYPE_COLOR),alpha:!!(n&yr.COLORTYPE_ALPHA),bpp:c,colorType:n}),this._handleChunkEnd()};kr.prototype._handlePLTE=function(r){this.read(r,this._parsePLTE.bind(this))};kr.prototype._parsePLTE=function(r){this._crc.write(r);let e=Math.floor(r.length/3);for(let t=0;t<e;t++)this._palette.push([r[t*3],r[t*3+1],r[t*3+2],255]);this.palette(this._palette),this._handleChunkEnd()};kr.prototype._handleTRNS=function(r){this.simpleTransparency(),this.read(r,this._parseTRNS.bind(this))};kr.prototype._parseTRNS=function(r){if(this._crc.write(r),this._colorType===yr.COLORTYPE_PALETTE_COLOR){if(this._palette.length===0){this.error(new Error("Transparency chunk must be after palette"));return}if(r.length>this._palette.length){this.error(new Error("More transparent colors than palette size"));return}for(let e=0;e<r.length;e++)this._palette[e][3]=r[e];this.palette(this._palette)}this._colorType===yr.COLORTYPE_GRAYSCALE&&this.transColor([r.readUInt16BE(0)]),this._colorType===yr.COLORTYPE_COLOR&&this.transColor([r.readUInt16BE(0),r.readUInt16BE(2),r.readUInt16BE(4)]),this._handleChunkEnd()};kr.prototype._handleGAMA=function(r){this.read(r,this._parseGAMA.bind(this))};kr.prototype._parseGAMA=function(r){this._crc.write(r),this.gamma(r.readUInt32BE(0)/yr.GAMMA_DIVISION),this._handleChunkEnd()};kr.prototype._handleIDAT=function(r){this._emittedHeadersFinished||(this._emittedHeadersFinished=!0,this.headersFinished()),this.read(-r,this._parseIDAT.bind(this,r))};kr.prototype._parseIDAT=function(r,e){if(this._crc.write(e),this._colorType===yr.COLORTYPE_PALETTE_COLOR&&this._palette.length===0)throw new Error("Expected palette not found");this.inflateData(e);let t=r-e.length;t>0?this._handleIDAT(t):this._handleChunkEnd()};kr.prototype._handleIEND=function(r){this.read(r,this._parseIEND.bind(this))};kr.prototype._parseIEND=function(r){this._crc.write(r),this._hasIEND=!0,this._handleChunkEnd(),this.finished&&this.finished()}});var Ab=oe(L9=>{"use strict";var M9=ob(),one=[function(){},function(r,e,t,i){if(i===e.length)throw new Error("Ran out of data");let n=e[i];r[t]=n,r[t+1]=n,r[t+2]=n,r[t+3]=255},function(r,e,t,i){if(i+1>=e.length)throw new Error("Ran out of data");let n=e[i];r[t]=n,r[t+1]=n,r[t+2]=n,r[t+3]=e[i+1]},function(r,e,t,i){if(i+2>=e.length)throw new Error("Ran out of data");r[t]=e[i],r[t+1]=e[i+1],r[t+2]=e[i+2],r[t+3]=255},function(r,e,t,i){if(i+3>=e.length)throw new Error("Ran out of data");r[t]=e[i],r[t+1]=e[i+1],r[t+2]=e[i+2],r[t+3]=e[i+3]}],ane=[function(){},function(r,e,t,i){let n=e[0];r[t]=n,r[t+1]=n,r[t+2]=n,r[t+3]=i},function(r,e,t){let i=e[0];r[t]=i,r[t+1]=i,r[t+2]=i,r[t+3]=e[1]},function(r,e,t,i){r[t]=e[0],r[t+1]=e[1],r[t+2]=e[2],r[t+3]=i},function(r,e,t){r[t]=e[0],r[t+1]=e[1],r[t+2]=e[2],r[t+3]=e[3]}];function cne(r,e){let t=[],i=0;function n(){if(i===r.length)throw new Error("Ran out of data");let s=r[i];i++;let o,a,c,l,d,u,f,h;switch(e){default:throw new Error("unrecognised depth");case 16:f=r[i],i++,t.push((s<<8)+f);break;case 4:f=s&15,h=s>>4,t.push(h,f);break;case 2:d=s&3,u=s>>2&3,f=s>>4&3,h=s>>6&3,t.push(h,f,u,d);break;case 1:o=s&1,a=s>>1&1,c=s>>2&1,l=s>>3&1,d=s>>4&1,u=s>>5&1,f=s>>6&1,h=s>>7&1,t.push(h,f,u,d,l,c,a,o);break}}return{get:function(s){for(;t.length<s;)n();let o=t.slice(0,s);return t=t.slice(s),o},resetAfterLine:function(){t.length=0},end:function(){if(i!==r.length)throw new Error("extra data found")}}}function lne(r,e,t,i,n,s){let o=r.width,a=r.height,c=r.index;for(let l=0;l<a;l++)for(let d=0;d<o;d++){let u=t(d,l,c);one[i](e,n,u,s),s+=i}return s}function dne(r,e,t,i,n,s){let o=r.width,a=r.height,c=r.index;for(let l=0;l<a;l++){for(let d=0;d<o;d++){let u=n.get(i),f=t(d,l,c);ane[i](e,u,f,s)}n.resetAfterLine()}}L9.dataToBitMap=function(r,e){let t=e.width,i=e.height,n=e.depth,s=e.bpp,o=e.interlace,a;n!==8&&(a=cne(r,n));let c;n<=8?c=Buffer.alloc(t*i*4):c=new Uint16Array(t*i*4);let l=Math.pow(2,n)-1,d=0,u,f;if(o)u=M9.getImagePasses(t,i),f=M9.getInterlaceIterator(t,i);else{let h=0;f=function(){let g=h;return h+=4,g},u=[{width:t,height:i}]}for(let h=0;h<u.length;h++)n===8?d=lne(u[h],c,f,s,r,d):dne(u[h],c,f,s,a,l);if(n===8){if(d!==r.length)throw new Error("extra data found")}else a.end();return c}});var hb=oe((nEe,H9)=>{"use strict";function une(r,e,t,i,n){let s=0;for(let o=0;o<i;o++)for(let a=0;a<t;a++){let c=n[r[s]];if(!c)throw new Error("index "+r[s]+" not in palette");for(let l=0;l<4;l++)e[s+l]=c[l];s+=4}}function fne(r,e,t,i,n){let s=0;for(let o=0;o<i;o++)for(let a=0;a<t;a++){let c=!1;if(n.length===1?n[0]===r[s]&&(c=!0):n[0]===r[s]&&n[1]===r[s+1]&&n[2]===r[s+2]&&(c=!0),c)for(let l=0;l<4;l++)e[s+l]=0;s+=4}}function Ane(r,e,t,i,n){let s=255,o=Math.pow(2,n)-1,a=0;for(let c=0;c<i;c++)for(let l=0;l<t;l++){for(let d=0;d<4;d++)e[a+d]=Math.floor(r[a+d]*s/o+.5);a+=4}}H9.exports=function(r,e){let t=e.depth,i=e.width,n=e.height,s=e.colorType,o=e.transColor,a=e.palette,c=r;return s===3?une(r,c,i,n,a):(o&&fne(r,c,i,n,o),t!==8&&(t===16&&(c=Buffer.alloc(i*n*4)),Ane(r,c,i,n,t))),c}});var z9=oe((sEe,G9)=>{"use strict";var hne=wt("util"),gb=wt("zlib"),K9=nb(),gne=R9(),pne=fb(),mne=Ab(),yne=hb(),gs=G9.exports=function(r){K9.call(this),this._parser=new pne(r,{read:this.read.bind(this),error:this._handleError.bind(this),metadata:this._handleMetaData.bind(this),gamma:this.emit.bind(this,"gamma"),palette:this._handlePalette.bind(this),transColor:this._handleTransColor.bind(this),finished:this._finished.bind(this),inflateData:this._inflateData.bind(this),simpleTransparency:this._simpleTransparency.bind(this),headersFinished:this._headersFinished.bind(this)}),this._options=r,this.writable=!0,this._parser.start()};hne.inherits(gs,K9);gs.prototype._handleError=function(r){this.emit("error",r),this.writable=!1,this.destroy(),this._inflate&&this._inflate.destroy&&this._inflate.destroy(),this._filter&&(this._filter.destroy(),this._filter.on("error",function(){})),this.errord=!0};gs.prototype._inflateData=function(r){if(!this._inflate)if(this._bitmapInfo.interlace)this._inflate=gb.createInflate(),this._inflate.on("error",this.emit.bind(this,"error")),this._filter.on("complete",this._complete.bind(this)),this._inflate.pipe(this._filter);else{let t=((this._bitmapInfo.width*this._bitmapInfo.bpp*this._bitmapInfo.depth+7>>3)+1)*this._bitmapInfo.height,i=Math.max(t,gb.Z_MIN_CHUNK);this._inflate=gb.createInflate({chunkSize:i});let n=t,s=this.emit.bind(this,"error");this._inflate.on("error",function(a){n&&s(a)}),this._filter.on("complete",this._complete.bind(this));let o=this._filter.write.bind(this._filter);this._inflate.on("data",function(a){n&&(a.length>n&&(a=a.slice(0,n)),n-=a.length,o(a))}),this._inflate.on("end",this._filter.end.bind(this._filter))}this._inflate.write(r)};gs.prototype._handleMetaData=function(r){this._metaData=r,this._bitmapInfo=Object.create(r),this._filter=new gne(this._bitmapInfo)};gs.prototype._handleTransColor=function(r){this._bitmapInfo.transColor=r};gs.prototype._handlePalette=function(r){this._bitmapInfo.palette=r};gs.prototype._simpleTransparency=function(){this._metaData.alpha=!0};gs.prototype._headersFinished=function(){this.emit("metadata",this._metaData)};gs.prototype._finished=function(){this.errord||(this._inflate?this._inflate.end():this.emit("error","No Inflate block"))};gs.prototype._complete=function(r){if(this.errord)return;let e;try{let t=mne.dataToBitMap(r,this._bitmapInfo);e=yne(t,this._bitmapInfo),t=null}catch(t){this._handleError(t);return}this.emit("parsed",e)}});var j9=oe((oEe,J9)=>{"use strict";var hn=Zd();J9.exports=function(r,e,t,i){let n=[hn.COLORTYPE_COLOR_ALPHA,hn.COLORTYPE_ALPHA].indexOf(i.colorType)!==-1;if(i.colorType===i.inputColorType){let g=(function(){let p=new ArrayBuffer(2);return new DataView(p).setInt16(0,256,!0),new Int16Array(p)[0]!==256})();if(i.bitDepth===8||i.bitDepth===16&&g)return r}let s=i.bitDepth!==16?r:new Uint16Array(r.buffer),o=255,a=hn.COLORTYPE_TO_BPP_MAP[i.inputColorType];a===4&&!i.inputHasAlpha&&(a=3);let c=hn.COLORTYPE_TO_BPP_MAP[i.colorType];i.bitDepth===16&&(o=65535,c*=2);let l=Buffer.alloc(e*t*c),d=0,u=0,f=i.bgColor||{};f.red===void 0&&(f.red=o),f.green===void 0&&(f.green=o),f.blue===void 0&&(f.blue=o);function h(){let g,p,I,y=o;switch(i.inputColorType){case hn.COLORTYPE_COLOR_ALPHA:y=s[d+3],g=s[d],p=s[d+1],I=s[d+2];break;case hn.COLORTYPE_COLOR:g=s[d],p=s[d+1],I=s[d+2];break;case hn.COLORTYPE_ALPHA:y=s[d+1],g=s[d],p=g,I=g;break;case hn.COLORTYPE_GRAYSCALE:g=s[d],p=g,I=g;break;default:throw new Error("input color type:"+i.inputColorType+" is not supported at present")}return i.inputHasAlpha&&(n||(y/=o,g=Math.min(Math.max(Math.round((1-y)*f.red+y*g),0),o),p=Math.min(Math.max(Math.round((1-y)*f.green+y*p),0),o),I=Math.min(Math.max(Math.round((1-y)*f.blue+y*I),0),o))),{red:g,green:p,blue:I,alpha:y}}for(let g=0;g<t;g++)for(let p=0;p<e;p++){let I=h(s,d);switch(i.colorType){case hn.COLORTYPE_COLOR_ALPHA:case hn.COLORTYPE_COLOR:i.bitDepth===8?(l[u]=I.red,l[u+1]=I.green,l[u+2]=I.blue,n&&(l[u+3]=I.alpha)):(l.writeUInt16BE(I.red,u),l.writeUInt16BE(I.green,u+2),l.writeUInt16BE(I.blue,u+4),n&&l.writeUInt16BE(I.alpha,u+6));break;case hn.COLORTYPE_ALPHA:case hn.COLORTYPE_GRAYSCALE:{let y=(I.red+I.green+I.blue)/3;i.bitDepth===8?(l[u]=y,n&&(l[u+1]=I.alpha)):(l.writeUInt16BE(y,u),n&&l.writeUInt16BE(I.alpha,u+2));break}default:throw new Error("unrecognised color Type "+i.colorType)}d+=a,u+=c}return l}});var Y9=oe((aEe,V9)=>{"use strict";var $9=ab();function Ine(r,e,t,i,n){for(let s=0;s<t;s++)i[n+s]=r[e+s]}function wne(r,e,t){let i=0,n=e+t;for(let s=e;s<n;s++)i+=Math.abs(r[s]);return i}function xne(r,e,t,i,n,s){for(let o=0;o<t;o++){let a=o>=s?r[e+o-s]:0,c=r[e+o]-a;i[n+o]=c}}function Cne(r,e,t,i){let n=0;for(let s=0;s<t;s++){let o=s>=i?r[e+s-i]:0,a=r[e+s]-o;n+=Math.abs(a)}return n}function Ene(r,e,t,i,n){for(let s=0;s<t;s++){let o=e>0?r[e+s-t]:0,a=r[e+s]-o;i[n+s]=a}}function Bne(r,e,t){let i=0,n=e+t;for(let s=e;s<n;s++){let o=e>0?r[s-t]:0,a=r[s]-o;i+=Math.abs(a)}return i}function bne(r,e,t,i,n,s){for(let o=0;o<t;o++){let a=o>=s?r[e+o-s]:0,c=e>0?r[e+o-t]:0,l=r[e+o]-(a+c>>1);i[n+o]=l}}function vne(r,e,t,i){let n=0;for(let s=0;s<t;s++){let o=s>=i?r[e+s-i]:0,a=e>0?r[e+s-t]:0,c=r[e+s]-(o+a>>1);n+=Math.abs(c)}return n}function kne(r,e,t,i,n,s){for(let o=0;o<t;o++){let a=o>=s?r[e+o-s]:0,c=e>0?r[e+o-t]:0,l=e>0&&o>=s?r[e+o-(t+s)]:0,d=r[e+o]-$9(a,c,l);i[n+o]=d}}function Sne(r,e,t,i){let n=0;for(let s=0;s<t;s++){let o=s>=i?r[e+s-i]:0,a=e>0?r[e+s-t]:0,c=e>0&&s>=i?r[e+s-(t+i)]:0,l=r[e+s]-$9(o,a,c);n+=Math.abs(l)}return n}var Dne={0:Ine,1:xne,2:Ene,3:bne,4:kne},Qne={0:wne,1:Cne,2:Bne,3:vne,4:Sne};V9.exports=function(r,e,t,i,n){let s;if(!("filterType"in i)||i.filterType===-1)s=[0,1,2,3,4];else if(typeof i.filterType=="number")s=[i.filterType];else throw new Error("unrecognised filter types");i.bitDepth===16&&(n*=2);let o=e*n,a=0,c=0,l=Buffer.alloc((o+1)*t),d=s[0];for(let u=0;u<t;u++){if(s.length>1){let f=1/0;for(let h=0;h<s.length;h++){let g=Qne[s[h]](r,c,o,n);g<f&&(d=s[h],f=g)}}l[a]=d,a++,Dne[d](r,c,o,l,a,n),a+=o,c+=o}return l}});var pb=oe((cEe,W9)=>{"use strict";var Xr=Zd(),_ne=ub(),Fne=j9(),Pne=Y9(),Tne=wt("zlib"),Oa=W9.exports=function(r){if(this._options=r,r.deflateChunkSize=r.deflateChunkSize||32*1024,r.deflateLevel=r.deflateLevel!=null?r.deflateLevel:9,r.deflateStrategy=r.deflateStrategy!=null?r.deflateStrategy:3,r.inputHasAlpha=r.inputHasAlpha!=null?r.inputHasAlpha:!0,r.deflateFactory=r.deflateFactory||Tne.createDeflate,r.bitDepth=r.bitDepth||8,r.colorType=typeof r.colorType=="number"?r.colorType:Xr.COLORTYPE_COLOR_ALPHA,r.inputColorType=typeof r.inputColorType=="number"?r.inputColorType:Xr.COLORTYPE_COLOR_ALPHA,[Xr.COLORTYPE_GRAYSCALE,Xr.COLORTYPE_COLOR,Xr.COLORTYPE_COLOR_ALPHA,Xr.COLORTYPE_ALPHA].indexOf(r.colorType)===-1)throw new Error("option color type:"+r.colorType+" is not supported at present");if([Xr.COLORTYPE_GRAYSCALE,Xr.COLORTYPE_COLOR,Xr.COLORTYPE_COLOR_ALPHA,Xr.COLORTYPE_ALPHA].indexOf(r.inputColorType)===-1)throw new Error("option input color type:"+r.inputColorType+" is not supported at present");if(r.bitDepth!==8&&r.bitDepth!==16)throw new Error("option bit depth:"+r.bitDepth+" is not supported at present")};Oa.prototype.getDeflateOptions=function(){return{chunkSize:this._options.deflateChunkSize,level:this._options.deflateLevel,strategy:this._options.deflateStrategy}};Oa.prototype.createDeflate=function(){return this._options.deflateFactory(this.getDeflateOptions())};Oa.prototype.filterData=function(r,e,t){let i=Fne(r,e,t,this._options),n=Xr.COLORTYPE_TO_BPP_MAP[this._options.colorType];return Pne(i,e,t,this._options,n)};Oa.prototype._packChunk=function(r,e){let t=e?e.length:0,i=Buffer.alloc(t+12);return i.writeUInt32BE(t,0),i.writeUInt32BE(r,4),e&&e.copy(i,8),i.writeInt32BE(_ne.crc32(i.slice(4,i.length-4)),i.length-4),i};Oa.prototype.packGAMA=function(r){let e=Buffer.alloc(4);return e.writeUInt32BE(Math.floor(r*Xr.GAMMA_DIVISION),0),this._packChunk(Xr.TYPE_gAMA,e)};Oa.prototype.packIHDR=function(r,e){let t=Buffer.alloc(13);return t.writeUInt32BE(r,0),t.writeUInt32BE(e,4),t[8]=this._options.bitDepth,t[9]=this._options.colorType,t[10]=0,t[11]=0,t[12]=0,this._packChunk(Xr.TYPE_IHDR,t)};Oa.prototype.packIDAT=function(r){return this._packChunk(Xr.TYPE_IDAT,r)};Oa.prototype.packIEND=function(){return this._packChunk(Xr.TYPE_IEND,null)}});var t7=oe((lEe,e7)=>{"use strict";var Une=wt("util"),X9=wt("stream"),Rne=Zd(),Nne=pb(),Z9=e7.exports=function(r){X9.call(this);let e=r||{};this._packer=new Nne(e),this._deflate=this._packer.createDeflate(),this.readable=!0};Une.inherits(Z9,X9);Z9.prototype.pack=function(r,e,t,i){this.emit("data",Buffer.from(Rne.PNG_SIGNATURE)),this.emit("data",this._packer.packIHDR(e,t)),i&&this.emit("data",this._packer.packGAMA(i));let n=this._packer.filterData(r,e,t);this._deflate.on("error",this.emit.bind(this,"error")),this._deflate.on("data",function(s){this.emit("data",this._packer.packIDAT(s))}.bind(this)),this._deflate.on("end",function(){this.emit("data",this._packer.packIEND()),this.emit("end")}.bind(this)),this._deflate.end(n)}});var a7=oe((UA,o7)=>{"use strict";var r7=wt("assert").ok,eu=wt("zlib"),qne=wt("util"),i7=wt("buffer").kMaxLength;function Zc(r){if(!(this instanceof Zc))return new Zc(r);r&&r.chunkSize<eu.Z_MIN_CHUNK&&(r.chunkSize=eu.Z_MIN_CHUNK),eu.Inflate.call(this,r),this._offset=this._offset===void 0?this._outOffset:this._offset,this._buffer=this._buffer||this._outBuffer,r&&r.maxLength!=null&&(this._maxLength=r.maxLength)}function One(r){return new Zc(r)}function n7(r,e){e&&process.nextTick(e),r._handle&&(r._handle.close(),r._handle=null)}Zc.prototype._processChunk=function(r,e,t){if(typeof t=="function")return eu.Inflate._processChunk.call(this,r,e,t);let i=this,n=r&&r.length,s=this._chunkSize-this._offset,o=this._maxLength,a=0,c=[],l=0,d;this.on("error",function(g){d=g});function u(g,p){if(i._hadError)return;let I=s-p;if(r7(I>=0,"have should not go down"),I>0){let y=i._buffer.slice(i._offset,i._offset+I);if(i._offset+=I,y.length>o&&(y=y.slice(0,o)),c.push(y),l+=y.length,o-=y.length,o===0)return!1}return(p===0||i._offset>=i._chunkSize)&&(s=i._chunkSize,i._offset=0,i._buffer=Buffer.allocUnsafe(i._chunkSize)),p===0?(a+=n-g,n=g,!0):!1}r7(this._handle,"zlib binding closed");let f;do f=this._handle.writeSync(e,r,a,n,this._buffer,this._offset,s),f=f||this._writeState;while(!this._hadError&&u(f[0],f[1]));if(this._hadError)throw d;if(l>=i7)throw n7(this),new RangeError("Cannot create final Buffer. It would be larger than 0x"+i7.toString(16)+" bytes");let h=Buffer.concat(c,l);return n7(this),h};qne.inherits(Zc,eu.Inflate);function Mne(r,e){if(typeof e=="string"&&(e=Buffer.from(e)),!(e instanceof Buffer))throw new TypeError("Not a string or buffer");let t=r._finishFlushFlag;return t==null&&(t=eu.Z_FINISH),r._processChunk(e,t)}function s7(r,e){return Mne(new Zc(e),r)}o7.exports=UA=s7;UA.Inflate=Zc;UA.createInflate=One;UA.inflateSync=s7});var mb=oe((dEe,l7)=>{"use strict";var c7=l7.exports=function(r){this._buffer=r,this._reads=[]};c7.prototype.read=function(r,e){this._reads.push({length:Math.abs(r),allowLess:r<0,func:e})};c7.prototype.process=function(){for(;this._reads.length>0&&this._buffer.length;){let r=this._reads[0];if(this._buffer.length&&(this._buffer.length>=r.length||r.allowLess)){this._reads.shift();let e=this._buffer;this._buffer=e.slice(r.length),r.func.call(this,e.slice(0,r.length))}else break}if(this._reads.length>0)return new Error("There are some read requests waitng on finished stream");if(this._buffer.length>0)return new Error("unrecognised content at end of stream")}});var u7=oe(d7=>{"use strict";var Lne=mb(),Hne=cb();d7.process=function(r,e){let t=[],i=new Lne(r);return new Hne(e,{read:i.read.bind(i),write:function(s){t.push(s)},complete:function(){}}).start(),i.process(),Buffer.concat(t)}});var g7=oe((fEe,h7)=>{"use strict";var f7=!0,A7=wt("zlib"),Kne=a7();A7.deflateSync||(f7=!1);var Gne=mb(),zne=u7(),Jne=fb(),jne=Ab(),$ne=hb();h7.exports=function(r,e){if(!f7)throw new Error("To use the sync capability of this library in old node versions, please pin pngjs to v2.3.0");let t;function i(b){t=b}let n;function s(b){n=b}function o(b){n.transColor=b}function a(b){n.palette=b}function c(){n.alpha=!0}let l;function d(b){l=b}let u=[];function f(b){u.push(b)}let h=new Gne(r);if(new Jne(e,{read:h.read.bind(h),error:i,metadata:s,gamma:d,palette:a,transColor:o,inflateData:f,simpleTransparency:c}).start(),h.process(),t)throw t;let p=Buffer.concat(u);u.length=0;let I;if(n.interlace)I=A7.inflateSync(p);else{let x=((n.width*n.bpp*n.depth+7>>3)+1)*n.height;I=Kne(p,{chunkSize:x,maxLength:x})}if(p=null,!I||!I.length)throw new Error("bad png - invalid inflate data response");let y=zne.process(I,n);p=null;let w=jne.dataToBitMap(y,n);y=null;let C=$ne(w,n);return n.data=C,n.gamma=l||0,n}});var I7=oe((AEe,y7)=>{"use strict";var p7=!0,m7=wt("zlib");m7.deflateSync||(p7=!1);var Vne=Zd(),Yne=pb();y7.exports=function(r,e){if(!p7)throw new Error("To use the sync capability of this library in old node versions, please pin pngjs to v2.3.0");let t=e||{},i=new Yne(t),n=[];n.push(Buffer.from(Vne.PNG_SIGNATURE)),n.push(i.packIHDR(r.width,r.height)),r.gamma&&n.push(i.packGAMA(r.gamma));let s=i.filterData(r.data,r.width,r.height),o=m7.deflateSync(s,i.getDeflateOptions());if(s=null,!o||!o.length)throw new Error("bad png - invalid compressed data response");return n.push(i.packIDAT(o)),n.push(i.packIEND()),Buffer.concat(n)}});var w7=oe(yb=>{"use strict";var Wne=g7(),Xne=I7();yb.read=function(r,e){return Wne(r,e||{})};yb.write=function(r,e){return Xne(r,e)}});var E7=oe(C7=>{"use strict";var Zne=wt("util"),x7=wt("stream"),ese=z9(),tse=t7(),rse=w7(),ui=C7.PNG=function(r){x7.call(this),r=r||{},this.width=r.width|0,this.height=r.height|0,this.data=this.width>0&&this.height>0?Buffer.alloc(4*this.width*this.height):null,r.fill&&this.data&&this.data.fill(0),this.gamma=0,this.readable=this.writable=!0,this._parser=new ese(r),this._parser.on("error",this.emit.bind(this,"error")),this._parser.on("close",this._handleClose.bind(this)),this._parser.on("metadata",this._metadata.bind(this)),this._parser.on("gamma",this._gamma.bind(this)),this._parser.on("parsed",function(e){this.data=e,this.emit("parsed",e)}.bind(this)),this._packer=new tse(r),this._packer.on("data",this.emit.bind(this,"data")),this._packer.on("end",this.emit.bind(this,"end")),this._parser.on("close",this._handleClose.bind(this)),this._packer.on("error",this.emit.bind(this,"error"))};Zne.inherits(ui,x7);ui.sync=rse;ui.prototype.pack=function(){return!this.data||!this.data.length?(this.emit("error","No data provided"),this):(process.nextTick(function(){this._packer.pack(this.data,this.width,this.height,this.gamma)}.bind(this)),this)};ui.prototype.parse=function(r,e){if(e){let t,i;t=function(n){this.removeListener("error",i),this.data=n,e(null,this)}.bind(this),i=function(n){this.removeListener("parsed",t),e(n,null)}.bind(this),this.once("parsed",t),this.once("error",i)}return this.end(r),this};ui.prototype.write=function(r){return this._parser.write(r),!0};ui.prototype.end=function(r){this._parser.end(r)};ui.prototype._metadata=function(r){this.width=r.width,this.height=r.height,this.emit("metadata",r)};ui.prototype._gamma=function(r){this.gamma=r};ui.prototype._handleClose=function(){!this._parser.writable&&!this._packer.readable&&this.emit("close")};ui.bitblt=function(r,e,t,i,n,s,o,a){if(t|=0,i|=0,n|=0,s|=0,o|=0,a|=0,t>r.width||i>r.height||t+n>r.width||i+s>r.height)throw new Error("bitblt reading outside image");if(o>e.width||a>e.height||o+n>e.width||a+s>e.height)throw new Error("bitblt writing outside image");for(let c=0;c<s;c++)r.data.copy(e.data,(a+c)*e.width+o<<2,(i+c)*r.width+t<<2,(i+c)*r.width+t+n<<2)};ui.prototype.bitblt=function(r,e,t,i,n,s,o){return ui.bitblt(this,r,e,t,i,n,s,o),this};ui.adjustGamma=function(r){if(r.gamma){for(let e=0;e<r.height;e++)for(let t=0;t<r.width;t++){let i=r.width*e+t<<2;for(let n=0;n<3;n++){let s=r.data[i+n]/255;s=Math.pow(s,1/2.2/r.gamma),r.data[i+n]=Math.round(s*255)}}r.gamma=0}};ui.prototype.adjustGamma=function(){ui.adjustGamma(this)}});var RA=oe(el=>{function B7(r){if(typeof r=="number"&&(r=r.toString()),typeof r!="string")throw new Error("Color should be defined as hex string");let e=r.slice().replace("#","").split("");if(e.length<3||e.length===5||e.length>8)throw new Error("Invalid hex color: "+r);(e.length===3||e.length===4)&&(e=Array.prototype.concat.apply([],e.map(function(i){return[i,i]}))),e.length===6&&e.push("F","F");let t=parseInt(e.join(""),16);return{r:t>>24&255,g:t>>16&255,b:t>>8&255,a:t&255,hex:"#"+e.slice(0,6).join("")}}el.getOptions=function(e){e||(e={}),e.color||(e.color={});let t=typeof e.margin>"u"||e.margin===null||e.margin<0?4:e.margin,i=e.width&&e.width>=21?e.width:void 0,n=e.scale||4;return{width:i,scale:i?4:n,margin:t,color:{dark:B7(e.color.dark||"#000000ff"),light:B7(e.color.light||"#ffffffff")},type:e.type,rendererOpts:e.rendererOpts||{}}};el.getScale=function(e,t){return t.width&&t.width>=e+t.margin*2?t.width/(e+t.margin*2):t.scale};el.getImageWidth=function(e,t){let i=el.getScale(e,t);return Math.floor((e+t.margin*2)*i)};el.qrToImageData=function(e,t,i){let n=t.modules.size,s=t.modules.data,o=el.getScale(n,i),a=Math.floor((n+i.margin*2)*o),c=i.margin*o,l=[i.color.light,i.color.dark];for(let d=0;d<a;d++)for(let u=0;u<a;u++){let f=(d*a+u)*4,h=i.color.light;if(d>=c&&u>=c&&d<a-c&&u<a-c){let g=Math.floor((d-c)/o),p=Math.floor((u-c)/o);h=l[s[g*n+p]?1:0]}e[f++]=h.r,e[f++]=h.g,e[f++]=h.b,e[f]=h.a}}});var b7=oe(ps=>{var ise=wt("fs"),nse=E7().PNG,Ib=RA();ps.render=function(e,t){let i=Ib.getOptions(t),n=i.rendererOpts,s=Ib.getImageWidth(e.modules.size,i);n.width=s,n.height=s;let o=new nse(n);return Ib.qrToImageData(o.data,e,i),o};ps.renderToDataURL=function(e,t,i){typeof i>"u"&&(i=t,t=void 0),ps.renderToBuffer(e,t,function(n,s){n&&i(n);let o="data:image/png;base64,";o+=s.toString("base64"),i(null,o)})};ps.renderToBuffer=function(e,t,i){typeof i>"u"&&(i=t,t=void 0);let n=ps.render(e,t),s=[];n.on("error",i),n.on("data",function(o){s.push(o)}),n.on("end",function(){i(null,Buffer.concat(s))}),n.pack()};ps.renderToFile=function(e,t,i,n){typeof n>"u"&&(n=i,i=void 0);let s=!1,o=(...c)=>{s||(s=!0,n.apply(null,c))},a=ise.createWriteStream(e);a.on("error",o),a.on("close",o),ps.renderToFileStream(a,t,i)};ps.renderToFileStream=function(e,t,i){ps.render(t,i).pack().pipe(e)}});var v7=oe(Iw=>{var sse=RA(),ose={WW:" ",WB:"\u2584",BB:"\u2588",BW:"\u2580"},ase={BB:" ",BW:"\u2584",WW:"\u2588",WB:"\u2580"};function cse(r,e,t){return r&&e?t.BB:r&&!e?t.BW:!r&&e?t.WB:t.WW}Iw.render=function(r,e,t){let i=sse.getOptions(e),n=ose;(i.color.dark.hex==="#ffffff"||i.color.light.hex==="#000000")&&(n=ase);let s=r.modules.size,o=r.modules.data,a="",c=Array(s+i.margin*2+1).join(n.WW);c=Array(i.margin/2+1).join(c+` -`);let l=Array(i.margin+1).join(n.WW);a+=c;for(let d=0;d<s;d+=2){a+=l;for(let u=0;u<s;u++){let f=o[d*s+u],h=o[(d+1)*s+u];a+=cse(f,h,n)}a+=l+` -`}return a+=c.slice(0,-1),typeof t=="function"&&t(null,a),a};Iw.renderToFile=function(e,t,i,n){typeof n>"u"&&(n=i,i=void 0);let s=wt("fs"),o=Iw.render(t,i);s.writeFile(e,o,n)}});var S7=oe(k7=>{k7.render=function(r,e,t){let i=r.modules.size,n=r.modules.data,s="\x1B[40m \x1B[0m",o="\x1B[47m \x1B[0m",a="",c=Array(i+3).join(o),l=Array(2).join(o);a+=c+` +`);let o=One(e,t,n),a=Qw.getSymbolSize(e),c=new Sne(a);return Tne(c,e),Une(c),Rne(c,e),yb(c,t,0),e>=7&&Nne(c,e),qne(c,o),isNaN(i)&&(i=Ib.getBestMask(c,yb.bind(null,c,t))),Ib.applyMask(i,c),yb(c,t,i),{modules:c,version:e,errorCorrectionLevel:t,maskPattern:i,segments:n}}s7.create=function(e,t){if(typeof e>"u"||e==="")throw new Error("No input text");let i=pb.M,n,s;return typeof t<"u"&&(i=pb.from(t.errorCorrectionLevel,pb.M),n=Dw.from(t.version),s=Ib.from(t.maskPattern),t.toSJISFunc&&Qw.setToSJISFunction(t.toSJISFunc)),Lne(e,n,i,s)}});var Cb=oe((LEe,a7)=>{"use strict";var Hne=wt("util"),o7=wt("stream"),Rn=a7.exports=function(){o7.call(this),this._buffers=[],this._buffered=0,this._reads=[],this._paused=!1,this._encoding="utf8",this.writable=!0};Hne.inherits(Rn,o7);Rn.prototype.read=function(r,e){this._reads.push({length:Math.abs(r),allowLess:r<0,func:e}),process.nextTick(function(){this._process(),this._paused&&this._reads&&this._reads.length>0&&(this._paused=!1,this.emit("drain"))}.bind(this))};Rn.prototype.write=function(r,e){if(!this.writable)return this.emit("error",new Error("Stream not writable")),!1;let t;return Buffer.isBuffer(r)?t=r:t=Buffer.from(r,e||this._encoding),this._buffers.push(t),this._buffered+=t.length,this._process(),this._reads&&this._reads.length===0&&(this._paused=!0),this.writable&&!this._paused};Rn.prototype.end=function(r,e){r&&this.write(r,e),this.writable=!1,this._buffers&&(this._buffers.length===0?this._end():(this._buffers.push(null),this._process()))};Rn.prototype.destroySoon=Rn.prototype.end;Rn.prototype._end=function(){this._reads.length>0&&this.emit("error",new Error("Unexpected end of input")),this.destroy()};Rn.prototype.destroy=function(){this._buffers&&(this.writable=!1,this._reads=null,this._buffers=null,this.emit("close"))};Rn.prototype._processReadAllowingLess=function(r){this._reads.shift();let e=this._buffers[0];e.length>r.length?(this._buffered-=r.length,this._buffers[0]=e.slice(r.length),r.func.call(this,e.slice(0,r.length))):(this._buffered-=e.length,this._buffers.shift(),r.func.call(this,e))};Rn.prototype._processRead=function(r){this._reads.shift();let e=0,t=0,i=Buffer.alloc(r.length);for(;e<r.length;){let n=this._buffers[t++],s=Math.min(n.length,r.length-e);n.copy(i,e,0,s),e+=s,s!==n.length&&(this._buffers[--t]=n.slice(s))}t>0&&this._buffers.splice(0,t),this._buffered-=r.length,r.func.call(this,i)};Rn.prototype._process=function(){try{for(;this._buffered>0&&this._reads&&this._reads.length>0;){let r=this._reads[0];if(r.allowLess)this._processReadAllowingLess(r);else if(this._buffered>=r.length)this._processRead(r);else break}this._buffers&&!this.writable&&this._end()}catch(r){this.emit("error",r)}}});var Bb=oe(Eb=>{"use strict";var Oa=[{x:[0],y:[0]},{x:[4],y:[0]},{x:[0,4],y:[4]},{x:[2,6],y:[0,4]},{x:[0,2,4,6],y:[2,6]},{x:[1,3,5,7],y:[0,2,4,6]},{x:[0,1,2,3,4,5,6,7],y:[1,3,5,7]}];Eb.getImagePasses=function(r,e){let t=[],i=r%8,n=e%8,s=(r-i)/8,o=(e-n)/8;for(let a=0;a<Oa.length;a++){let c=Oa[a],l=s*c.x.length,d=o*c.y.length;for(let u=0;u<c.x.length&&c.x[u]<i;u++)l++;for(let u=0;u<c.y.length&&c.y[u]<n;u++)d++;l>0&&d>0&&t.push({width:l,height:d,index:a})}return t};Eb.getInterlaceIterator=function(r){return function(e,t,i){let n=e%Oa[i].x.length,s=(e-n)/Oa[i].x.length*8+Oa[i].x[n],o=t%Oa[i].y.length,a=(t-o)/Oa[i].y.length*8+Oa[i].y[o];return s*4+a*r*4}}});var bb=oe((KEe,c7)=>{"use strict";c7.exports=function(e,t,i){let n=e+t-i,s=Math.abs(n-e),o=Math.abs(n-t),a=Math.abs(n-i);return s<=o&&s<=a?e:o<=a?t:i}});var vb=oe((GEe,d7)=>{"use strict";var Kne=Bb(),Gne=bb();function l7(r,e,t){let i=r*e;return t!==8&&(i=Math.ceil(i/(8/t))),i}var iu=d7.exports=function(r,e){let t=r.width,i=r.height,n=r.interlace,s=r.bpp,o=r.depth;if(this.read=e.read,this.write=e.write,this.complete=e.complete,this._imageIndex=0,this._images=[],n){let a=Kne.getImagePasses(t,i);for(let c=0;c<a.length;c++)this._images.push({byteWidth:l7(a[c].width,s,o),height:a[c].height,lineIndex:0})}else this._images.push({byteWidth:l7(t,s,o),height:i,lineIndex:0});o===8?this._xComparison=s:o===16?this._xComparison=s*2:this._xComparison=1};iu.prototype.start=function(){this.read(this._images[this._imageIndex].byteWidth+1,this._reverseFilterLine.bind(this))};iu.prototype._unFilterType1=function(r,e,t){let i=this._xComparison,n=i-1;for(let s=0;s<t;s++){let o=r[1+s],a=s>n?e[s-i]:0;e[s]=o+a}};iu.prototype._unFilterType2=function(r,e,t){let i=this._lastLine;for(let n=0;n<t;n++){let s=r[1+n],o=i?i[n]:0;e[n]=s+o}};iu.prototype._unFilterType3=function(r,e,t){let i=this._xComparison,n=i-1,s=this._lastLine;for(let o=0;o<t;o++){let a=r[1+o],c=s?s[o]:0,l=o>n?e[o-i]:0,d=Math.floor((l+c)/2);e[o]=a+d}};iu.prototype._unFilterType4=function(r,e,t){let i=this._xComparison,n=i-1,s=this._lastLine;for(let o=0;o<t;o++){let a=r[1+o],c=s?s[o]:0,l=o>n?e[o-i]:0,d=o>n&&s?s[o-i]:0,u=Gne(l,c,d);e[o]=a+u}};iu.prototype._reverseFilterLine=function(r){let e=r[0],t,i=this._images[this._imageIndex],n=i.byteWidth;if(e===0)t=r.slice(1,n+1);else switch(t=Buffer.alloc(n),e){case 1:this._unFilterType1(r,t,n);break;case 2:this._unFilterType2(r,t,n);break;case 3:this._unFilterType3(r,t,n);break;case 4:this._unFilterType4(r,t,n);break;default:throw new Error("Unrecognised filter type - "+e)}this.write(t),i.lineIndex++,i.lineIndex>=i.height?(this._lastLine=null,this._imageIndex++,i=this._images[this._imageIndex]):this._lastLine=t,i?this.read(i.byteWidth+1,this._reverseFilterLine.bind(this)):(this._lastLine=null,this.complete())}});var A7=oe((zEe,f7)=>{"use strict";var zne=wt("util"),u7=Cb(),Jne=vb(),jne=f7.exports=function(r){u7.call(this);let e=[],t=this;this._filter=new Jne(r,{read:this.read.bind(this),write:function(i){e.push(i)},complete:function(){t.emit("complete",Buffer.concat(e))}}),this._filter.start()};zne.inherits(jne,u7)});var nu=oe((JEe,h7)=>{"use strict";h7.exports={PNG_SIGNATURE:[137,80,78,71,13,10,26,10],TYPE_IHDR:1229472850,TYPE_IEND:1229278788,TYPE_IDAT:1229209940,TYPE_PLTE:1347179589,TYPE_tRNS:1951551059,TYPE_gAMA:1732332865,COLORTYPE_GRAYSCALE:0,COLORTYPE_PALETTE:1,COLORTYPE_COLOR:2,COLORTYPE_ALPHA:4,COLORTYPE_PALETTE_COLOR:3,COLORTYPE_COLOR_ALPHA:6,COLORTYPE_TO_BPP_MAP:{0:1,2:3,3:1,4:2,6:4},GAMMA_DIVISION:1e5}});var Db=oe((jEe,g7)=>{"use strict";var kb=[];(function(){for(let r=0;r<256;r++){let e=r;for(let t=0;t<8;t++)e&1?e=3988292384^e>>>1:e=e>>>1;kb[r]=e}})();var Sb=g7.exports=function(){this._crc=-1};Sb.prototype.write=function(r){for(let e=0;e<r.length;e++)this._crc=kb[(this._crc^r[e])&255]^this._crc>>>8;return!0};Sb.prototype.crc32=function(){return this._crc^-1};Sb.crc32=function(r){let e=-1;for(let t=0;t<r.length;t++)e=kb[(e^r[t])&255]^e>>>8;return e^-1}});var Qb=oe(($Ee,p7)=>{"use strict";var yr=nu(),$ne=Db(),Sr=p7.exports=function(r,e){this._options=r,r.checkCRC=r.checkCRC!==!1,this._hasIHDR=!1,this._hasIEND=!1,this._emittedHeadersFinished=!1,this._palette=[],this._colorType=0,this._chunks={},this._chunks[yr.TYPE_IHDR]=this._handleIHDR.bind(this),this._chunks[yr.TYPE_IEND]=this._handleIEND.bind(this),this._chunks[yr.TYPE_IDAT]=this._handleIDAT.bind(this),this._chunks[yr.TYPE_PLTE]=this._handlePLTE.bind(this),this._chunks[yr.TYPE_tRNS]=this._handleTRNS.bind(this),this._chunks[yr.TYPE_gAMA]=this._handleGAMA.bind(this),this.read=e.read,this.error=e.error,this.metadata=e.metadata,this.gamma=e.gamma,this.transColor=e.transColor,this.palette=e.palette,this.parsed=e.parsed,this.inflateData=e.inflateData,this.finished=e.finished,this.simpleTransparency=e.simpleTransparency,this.headersFinished=e.headersFinished||function(){}};Sr.prototype.start=function(){this.read(yr.PNG_SIGNATURE.length,this._parseSignature.bind(this))};Sr.prototype._parseSignature=function(r){let e=yr.PNG_SIGNATURE;for(let t=0;t<e.length;t++)if(r[t]!==e[t]){this.error(new Error("Invalid file signature"));return}this.read(8,this._parseChunkBegin.bind(this))};Sr.prototype._parseChunkBegin=function(r){let e=r.readUInt32BE(0),t=r.readUInt32BE(4),i="";for(let s=4;s<8;s++)i+=String.fromCharCode(r[s]);let n=!!(r[4]&32);if(!this._hasIHDR&&t!==yr.TYPE_IHDR){this.error(new Error("Expected IHDR on beggining"));return}if(this._crc=new $ne,this._crc.write(Buffer.from(i)),this._chunks[t])return this._chunks[t](e);if(!n){this.error(new Error("Unsupported critical chunk type "+i));return}this.read(e+4,this._skipChunk.bind(this))};Sr.prototype._skipChunk=function(){this.read(8,this._parseChunkBegin.bind(this))};Sr.prototype._handleChunkEnd=function(){this.read(4,this._parseChunkEnd.bind(this))};Sr.prototype._parseChunkEnd=function(r){let e=r.readInt32BE(0),t=this._crc.crc32();if(this._options.checkCRC&&t!==e){this.error(new Error("Crc error - "+e+" - "+t));return}this._hasIEND||this.read(8,this._parseChunkBegin.bind(this))};Sr.prototype._handleIHDR=function(r){this.read(r,this._parseIHDR.bind(this))};Sr.prototype._parseIHDR=function(r){this._crc.write(r);let e=r.readUInt32BE(0),t=r.readUInt32BE(4),i=r[8],n=r[9],s=r[10],o=r[11],a=r[12];if(i!==8&&i!==4&&i!==2&&i!==1&&i!==16){this.error(new Error("Unsupported bit depth "+i));return}if(!(n in yr.COLORTYPE_TO_BPP_MAP)){this.error(new Error("Unsupported color type"));return}if(s!==0){this.error(new Error("Unsupported compression method"));return}if(o!==0){this.error(new Error("Unsupported filter method"));return}if(a!==0&&a!==1){this.error(new Error("Unsupported interlace method"));return}this._colorType=n;let c=yr.COLORTYPE_TO_BPP_MAP[this._colorType];this._hasIHDR=!0,this.metadata({width:e,height:t,depth:i,interlace:!!a,palette:!!(n&yr.COLORTYPE_PALETTE),color:!!(n&yr.COLORTYPE_COLOR),alpha:!!(n&yr.COLORTYPE_ALPHA),bpp:c,colorType:n}),this._handleChunkEnd()};Sr.prototype._handlePLTE=function(r){this.read(r,this._parsePLTE.bind(this))};Sr.prototype._parsePLTE=function(r){this._crc.write(r);let e=Math.floor(r.length/3);for(let t=0;t<e;t++)this._palette.push([r[t*3],r[t*3+1],r[t*3+2],255]);this.palette(this._palette),this._handleChunkEnd()};Sr.prototype._handleTRNS=function(r){this.simpleTransparency(),this.read(r,this._parseTRNS.bind(this))};Sr.prototype._parseTRNS=function(r){if(this._crc.write(r),this._colorType===yr.COLORTYPE_PALETTE_COLOR){if(this._palette.length===0){this.error(new Error("Transparency chunk must be after palette"));return}if(r.length>this._palette.length){this.error(new Error("More transparent colors than palette size"));return}for(let e=0;e<r.length;e++)this._palette[e][3]=r[e];this.palette(this._palette)}this._colorType===yr.COLORTYPE_GRAYSCALE&&this.transColor([r.readUInt16BE(0)]),this._colorType===yr.COLORTYPE_COLOR&&this.transColor([r.readUInt16BE(0),r.readUInt16BE(2),r.readUInt16BE(4)]),this._handleChunkEnd()};Sr.prototype._handleGAMA=function(r){this.read(r,this._parseGAMA.bind(this))};Sr.prototype._parseGAMA=function(r){this._crc.write(r),this.gamma(r.readUInt32BE(0)/yr.GAMMA_DIVISION),this._handleChunkEnd()};Sr.prototype._handleIDAT=function(r){this._emittedHeadersFinished||(this._emittedHeadersFinished=!0,this.headersFinished()),this.read(-r,this._parseIDAT.bind(this,r))};Sr.prototype._parseIDAT=function(r,e){if(this._crc.write(e),this._colorType===yr.COLORTYPE_PALETTE_COLOR&&this._palette.length===0)throw new Error("Expected palette not found");this.inflateData(e);let t=r-e.length;t>0?this._handleIDAT(t):this._handleChunkEnd()};Sr.prototype._handleIEND=function(r){this.read(r,this._parseIEND.bind(this))};Sr.prototype._parseIEND=function(r){this._crc.write(r),this._hasIEND=!0,this._handleChunkEnd(),this.finished&&this.finished()}});var _b=oe(y7=>{"use strict";var m7=Bb(),Vne=[function(){},function(r,e,t,i){if(i===e.length)throw new Error("Ran out of data");let n=e[i];r[t]=n,r[t+1]=n,r[t+2]=n,r[t+3]=255},function(r,e,t,i){if(i+1>=e.length)throw new Error("Ran out of data");let n=e[i];r[t]=n,r[t+1]=n,r[t+2]=n,r[t+3]=e[i+1]},function(r,e,t,i){if(i+2>=e.length)throw new Error("Ran out of data");r[t]=e[i],r[t+1]=e[i+1],r[t+2]=e[i+2],r[t+3]=255},function(r,e,t,i){if(i+3>=e.length)throw new Error("Ran out of data");r[t]=e[i],r[t+1]=e[i+1],r[t+2]=e[i+2],r[t+3]=e[i+3]}],Yne=[function(){},function(r,e,t,i){let n=e[0];r[t]=n,r[t+1]=n,r[t+2]=n,r[t+3]=i},function(r,e,t){let i=e[0];r[t]=i,r[t+1]=i,r[t+2]=i,r[t+3]=e[1]},function(r,e,t,i){r[t]=e[0],r[t+1]=e[1],r[t+2]=e[2],r[t+3]=i},function(r,e,t){r[t]=e[0],r[t+1]=e[1],r[t+2]=e[2],r[t+3]=e[3]}];function Wne(r,e){let t=[],i=0;function n(){if(i===r.length)throw new Error("Ran out of data");let s=r[i];i++;let o,a,c,l,d,u,f,h;switch(e){default:throw new Error("unrecognised depth");case 16:f=r[i],i++,t.push((s<<8)+f);break;case 4:f=s&15,h=s>>4,t.push(h,f);break;case 2:d=s&3,u=s>>2&3,f=s>>4&3,h=s>>6&3,t.push(h,f,u,d);break;case 1:o=s&1,a=s>>1&1,c=s>>2&1,l=s>>3&1,d=s>>4&1,u=s>>5&1,f=s>>6&1,h=s>>7&1,t.push(h,f,u,d,l,c,a,o);break}}return{get:function(s){for(;t.length<s;)n();let o=t.slice(0,s);return t=t.slice(s),o},resetAfterLine:function(){t.length=0},end:function(){if(i!==r.length)throw new Error("extra data found")}}}function Xne(r,e,t,i,n,s){let o=r.width,a=r.height,c=r.index;for(let l=0;l<a;l++)for(let d=0;d<o;d++){let u=t(d,l,c);Vne[i](e,n,u,s),s+=i}return s}function Zne(r,e,t,i,n,s){let o=r.width,a=r.height,c=r.index;for(let l=0;l<a;l++){for(let d=0;d<o;d++){let u=n.get(i),f=t(d,l,c);Yne[i](e,u,f,s)}n.resetAfterLine()}}y7.dataToBitMap=function(r,e){let t=e.width,i=e.height,n=e.depth,s=e.bpp,o=e.interlace,a;n!==8&&(a=Wne(r,n));let c;n<=8?c=Buffer.alloc(t*i*4):c=new Uint16Array(t*i*4);let l=Math.pow(2,n)-1,d=0,u,f;if(o)u=m7.getImagePasses(t,i),f=m7.getInterlaceIterator(t,i);else{let h=0;f=function(){let g=h;return h+=4,g},u=[{width:t,height:i}]}for(let h=0;h<u.length;h++)n===8?d=Xne(u[h],c,f,s,r,d):Zne(u[h],c,f,s,a,l);if(n===8){if(d!==r.length)throw new Error("extra data found")}else a.end();return c}});var Fb=oe((YEe,I7)=>{"use strict";function ese(r,e,t,i,n){let s=0;for(let o=0;o<i;o++)for(let a=0;a<t;a++){let c=n[r[s]];if(!c)throw new Error("index "+r[s]+" not in palette");for(let l=0;l<4;l++)e[s+l]=c[l];s+=4}}function tse(r,e,t,i,n){let s=0;for(let o=0;o<i;o++)for(let a=0;a<t;a++){let c=!1;if(n.length===1?n[0]===r[s]&&(c=!0):n[0]===r[s]&&n[1]===r[s+1]&&n[2]===r[s+2]&&(c=!0),c)for(let l=0;l<4;l++)e[s+l]=0;s+=4}}function rse(r,e,t,i,n){let s=255,o=Math.pow(2,n)-1,a=0;for(let c=0;c<i;c++)for(let l=0;l<t;l++){for(let d=0;d<4;d++)e[a+d]=Math.floor(r[a+d]*s/o+.5);a+=4}}I7.exports=function(r,e){let t=e.depth,i=e.width,n=e.height,s=e.colorType,o=e.transColor,a=e.palette,c=r;return s===3?ese(r,c,i,n,a):(o&&tse(r,c,i,n,o),t!==8&&(t===16&&(c=Buffer.alloc(i*n*4)),rse(r,c,i,n,t))),c}});var C7=oe((WEe,x7)=>{"use strict";var ise=wt("util"),Pb=wt("zlib"),w7=Cb(),nse=A7(),sse=Qb(),ose=_b(),ase=Fb(),Is=x7.exports=function(r){w7.call(this),this._parser=new sse(r,{read:this.read.bind(this),error:this._handleError.bind(this),metadata:this._handleMetaData.bind(this),gamma:this.emit.bind(this,"gamma"),palette:this._handlePalette.bind(this),transColor:this._handleTransColor.bind(this),finished:this._finished.bind(this),inflateData:this._inflateData.bind(this),simpleTransparency:this._simpleTransparency.bind(this),headersFinished:this._headersFinished.bind(this)}),this._options=r,this.writable=!0,this._parser.start()};ise.inherits(Is,w7);Is.prototype._handleError=function(r){this.emit("error",r),this.writable=!1,this.destroy(),this._inflate&&this._inflate.destroy&&this._inflate.destroy(),this._filter&&(this._filter.destroy(),this._filter.on("error",function(){})),this.errord=!0};Is.prototype._inflateData=function(r){if(!this._inflate)if(this._bitmapInfo.interlace)this._inflate=Pb.createInflate(),this._inflate.on("error",this.emit.bind(this,"error")),this._filter.on("complete",this._complete.bind(this)),this._inflate.pipe(this._filter);else{let t=((this._bitmapInfo.width*this._bitmapInfo.bpp*this._bitmapInfo.depth+7>>3)+1)*this._bitmapInfo.height,i=Math.max(t,Pb.Z_MIN_CHUNK);this._inflate=Pb.createInflate({chunkSize:i});let n=t,s=this.emit.bind(this,"error");this._inflate.on("error",function(a){n&&s(a)}),this._filter.on("complete",this._complete.bind(this));let o=this._filter.write.bind(this._filter);this._inflate.on("data",function(a){n&&(a.length>n&&(a=a.slice(0,n)),n-=a.length,o(a))}),this._inflate.on("end",this._filter.end.bind(this._filter))}this._inflate.write(r)};Is.prototype._handleMetaData=function(r){this._metaData=r,this._bitmapInfo=Object.create(r),this._filter=new nse(this._bitmapInfo)};Is.prototype._handleTransColor=function(r){this._bitmapInfo.transColor=r};Is.prototype._handlePalette=function(r){this._bitmapInfo.palette=r};Is.prototype._simpleTransparency=function(){this._metaData.alpha=!0};Is.prototype._headersFinished=function(){this.emit("metadata",this._metaData)};Is.prototype._finished=function(){this.errord||(this._inflate?this._inflate.end():this.emit("error","No Inflate block"))};Is.prototype._complete=function(r){if(this.errord)return;let e;try{let t=ose.dataToBitMap(r,this._bitmapInfo);e=ase(t,this._bitmapInfo),t=null}catch(t){this._handleError(t);return}this.emit("parsed",e)}});var B7=oe((XEe,E7)=>{"use strict";var gn=nu();E7.exports=function(r,e,t,i){let n=[gn.COLORTYPE_COLOR_ALPHA,gn.COLORTYPE_ALPHA].indexOf(i.colorType)!==-1;if(i.colorType===i.inputColorType){let g=(function(){let p=new ArrayBuffer(2);return new DataView(p).setInt16(0,256,!0),new Int16Array(p)[0]!==256})();if(i.bitDepth===8||i.bitDepth===16&&g)return r}let s=i.bitDepth!==16?r:new Uint16Array(r.buffer),o=255,a=gn.COLORTYPE_TO_BPP_MAP[i.inputColorType];a===4&&!i.inputHasAlpha&&(a=3);let c=gn.COLORTYPE_TO_BPP_MAP[i.colorType];i.bitDepth===16&&(o=65535,c*=2);let l=Buffer.alloc(e*t*c),d=0,u=0,f=i.bgColor||{};f.red===void 0&&(f.red=o),f.green===void 0&&(f.green=o),f.blue===void 0&&(f.blue=o);function h(){let g,p,I,y=o;switch(i.inputColorType){case gn.COLORTYPE_COLOR_ALPHA:y=s[d+3],g=s[d],p=s[d+1],I=s[d+2];break;case gn.COLORTYPE_COLOR:g=s[d],p=s[d+1],I=s[d+2];break;case gn.COLORTYPE_ALPHA:y=s[d+1],g=s[d],p=g,I=g;break;case gn.COLORTYPE_GRAYSCALE:g=s[d],p=g,I=g;break;default:throw new Error("input color type:"+i.inputColorType+" is not supported at present")}return i.inputHasAlpha&&(n||(y/=o,g=Math.min(Math.max(Math.round((1-y)*f.red+y*g),0),o),p=Math.min(Math.max(Math.round((1-y)*f.green+y*p),0),o),I=Math.min(Math.max(Math.round((1-y)*f.blue+y*I),0),o))),{red:g,green:p,blue:I,alpha:y}}for(let g=0;g<t;g++)for(let p=0;p<e;p++){let I=h(s,d);switch(i.colorType){case gn.COLORTYPE_COLOR_ALPHA:case gn.COLORTYPE_COLOR:i.bitDepth===8?(l[u]=I.red,l[u+1]=I.green,l[u+2]=I.blue,n&&(l[u+3]=I.alpha)):(l.writeUInt16BE(I.red,u),l.writeUInt16BE(I.green,u+2),l.writeUInt16BE(I.blue,u+4),n&&l.writeUInt16BE(I.alpha,u+6));break;case gn.COLORTYPE_ALPHA:case gn.COLORTYPE_GRAYSCALE:{let y=(I.red+I.green+I.blue)/3;i.bitDepth===8?(l[u]=y,n&&(l[u+1]=I.alpha)):(l.writeUInt16BE(y,u),n&&l.writeUInt16BE(I.alpha,u+2));break}default:throw new Error("unrecognised color Type "+i.colorType)}d+=a,u+=c}return l}});var k7=oe((ZEe,v7)=>{"use strict";var b7=bb();function cse(r,e,t,i,n){for(let s=0;s<t;s++)i[n+s]=r[e+s]}function lse(r,e,t){let i=0,n=e+t;for(let s=e;s<n;s++)i+=Math.abs(r[s]);return i}function dse(r,e,t,i,n,s){for(let o=0;o<t;o++){let a=o>=s?r[e+o-s]:0,c=r[e+o]-a;i[n+o]=c}}function use(r,e,t,i){let n=0;for(let s=0;s<t;s++){let o=s>=i?r[e+s-i]:0,a=r[e+s]-o;n+=Math.abs(a)}return n}function fse(r,e,t,i,n){for(let s=0;s<t;s++){let o=e>0?r[e+s-t]:0,a=r[e+s]-o;i[n+s]=a}}function Ase(r,e,t){let i=0,n=e+t;for(let s=e;s<n;s++){let o=e>0?r[s-t]:0,a=r[s]-o;i+=Math.abs(a)}return i}function hse(r,e,t,i,n,s){for(let o=0;o<t;o++){let a=o>=s?r[e+o-s]:0,c=e>0?r[e+o-t]:0,l=r[e+o]-(a+c>>1);i[n+o]=l}}function gse(r,e,t,i){let n=0;for(let s=0;s<t;s++){let o=s>=i?r[e+s-i]:0,a=e>0?r[e+s-t]:0,c=r[e+s]-(o+a>>1);n+=Math.abs(c)}return n}function pse(r,e,t,i,n,s){for(let o=0;o<t;o++){let a=o>=s?r[e+o-s]:0,c=e>0?r[e+o-t]:0,l=e>0&&o>=s?r[e+o-(t+s)]:0,d=r[e+o]-b7(a,c,l);i[n+o]=d}}function mse(r,e,t,i){let n=0;for(let s=0;s<t;s++){let o=s>=i?r[e+s-i]:0,a=e>0?r[e+s-t]:0,c=e>0&&s>=i?r[e+s-(t+i)]:0,l=r[e+s]-b7(o,a,c);n+=Math.abs(l)}return n}var yse={0:cse,1:dse,2:fse,3:hse,4:pse},Ise={0:lse,1:use,2:Ase,3:gse,4:mse};v7.exports=function(r,e,t,i,n){let s;if(!("filterType"in i)||i.filterType===-1)s=[0,1,2,3,4];else if(typeof i.filterType=="number")s=[i.filterType];else throw new Error("unrecognised filter types");i.bitDepth===16&&(n*=2);let o=e*n,a=0,c=0,l=Buffer.alloc((o+1)*t),d=s[0];for(let u=0;u<t;u++){if(s.length>1){let f=1/0;for(let h=0;h<s.length;h++){let g=Ise[s[h]](r,c,o,n);g<f&&(d=s[h],f=g)}}l[a]=d,a++,yse[d](r,c,o,l,a,n),a+=o,c+=o}return l}});var Tb=oe((eBe,S7)=>{"use strict";var Zr=nu(),wse=Db(),xse=B7(),Cse=k7(),Ese=wt("zlib"),Ma=S7.exports=function(r){if(this._options=r,r.deflateChunkSize=r.deflateChunkSize||32*1024,r.deflateLevel=r.deflateLevel!=null?r.deflateLevel:9,r.deflateStrategy=r.deflateStrategy!=null?r.deflateStrategy:3,r.inputHasAlpha=r.inputHasAlpha!=null?r.inputHasAlpha:!0,r.deflateFactory=r.deflateFactory||Ese.createDeflate,r.bitDepth=r.bitDepth||8,r.colorType=typeof r.colorType=="number"?r.colorType:Zr.COLORTYPE_COLOR_ALPHA,r.inputColorType=typeof r.inputColorType=="number"?r.inputColorType:Zr.COLORTYPE_COLOR_ALPHA,[Zr.COLORTYPE_GRAYSCALE,Zr.COLORTYPE_COLOR,Zr.COLORTYPE_COLOR_ALPHA,Zr.COLORTYPE_ALPHA].indexOf(r.colorType)===-1)throw new Error("option color type:"+r.colorType+" is not supported at present");if([Zr.COLORTYPE_GRAYSCALE,Zr.COLORTYPE_COLOR,Zr.COLORTYPE_COLOR_ALPHA,Zr.COLORTYPE_ALPHA].indexOf(r.inputColorType)===-1)throw new Error("option input color type:"+r.inputColorType+" is not supported at present");if(r.bitDepth!==8&&r.bitDepth!==16)throw new Error("option bit depth:"+r.bitDepth+" is not supported at present")};Ma.prototype.getDeflateOptions=function(){return{chunkSize:this._options.deflateChunkSize,level:this._options.deflateLevel,strategy:this._options.deflateStrategy}};Ma.prototype.createDeflate=function(){return this._options.deflateFactory(this.getDeflateOptions())};Ma.prototype.filterData=function(r,e,t){let i=xse(r,e,t,this._options),n=Zr.COLORTYPE_TO_BPP_MAP[this._options.colorType];return Cse(i,e,t,this._options,n)};Ma.prototype._packChunk=function(r,e){let t=e?e.length:0,i=Buffer.alloc(t+12);return i.writeUInt32BE(t,0),i.writeUInt32BE(r,4),e&&e.copy(i,8),i.writeInt32BE(wse.crc32(i.slice(4,i.length-4)),i.length-4),i};Ma.prototype.packGAMA=function(r){let e=Buffer.alloc(4);return e.writeUInt32BE(Math.floor(r*Zr.GAMMA_DIVISION),0),this._packChunk(Zr.TYPE_gAMA,e)};Ma.prototype.packIHDR=function(r,e){let t=Buffer.alloc(13);return t.writeUInt32BE(r,0),t.writeUInt32BE(e,4),t[8]=this._options.bitDepth,t[9]=this._options.colorType,t[10]=0,t[11]=0,t[12]=0,this._packChunk(Zr.TYPE_IHDR,t)};Ma.prototype.packIDAT=function(r){return this._packChunk(Zr.TYPE_IDAT,r)};Ma.prototype.packIEND=function(){return this._packChunk(Zr.TYPE_IEND,null)}});var F7=oe((tBe,_7)=>{"use strict";var Bse=wt("util"),D7=wt("stream"),bse=nu(),vse=Tb(),Q7=_7.exports=function(r){D7.call(this);let e=r||{};this._packer=new vse(e),this._deflate=this._packer.createDeflate(),this.readable=!0};Bse.inherits(Q7,D7);Q7.prototype.pack=function(r,e,t,i){this.emit("data",Buffer.from(bse.PNG_SIGNATURE)),this.emit("data",this._packer.packIHDR(e,t)),i&&this.emit("data",this._packer.packGAMA(i));let n=this._packer.filterData(r,e,t);this._deflate.on("error",this.emit.bind(this,"error")),this._deflate.on("data",function(s){this.emit("data",this._packer.packIDAT(s))}.bind(this)),this._deflate.on("end",function(){this.emit("data",this._packer.packIEND()),this.emit("end")}.bind(this)),this._deflate.end(n)}});var q7=oe((JA,N7)=>{"use strict";var P7=wt("assert").ok,su=wt("zlib"),kse=wt("util"),T7=wt("buffer").kMaxLength;function rl(r){if(!(this instanceof rl))return new rl(r);r&&r.chunkSize<su.Z_MIN_CHUNK&&(r.chunkSize=su.Z_MIN_CHUNK),su.Inflate.call(this,r),this._offset=this._offset===void 0?this._outOffset:this._offset,this._buffer=this._buffer||this._outBuffer,r&&r.maxLength!=null&&(this._maxLength=r.maxLength)}function Sse(r){return new rl(r)}function U7(r,e){e&&process.nextTick(e),r._handle&&(r._handle.close(),r._handle=null)}rl.prototype._processChunk=function(r,e,t){if(typeof t=="function")return su.Inflate._processChunk.call(this,r,e,t);let i=this,n=r&&r.length,s=this._chunkSize-this._offset,o=this._maxLength,a=0,c=[],l=0,d;this.on("error",function(g){d=g});function u(g,p){if(i._hadError)return;let I=s-p;if(P7(I>=0,"have should not go down"),I>0){let y=i._buffer.slice(i._offset,i._offset+I);if(i._offset+=I,y.length>o&&(y=y.slice(0,o)),c.push(y),l+=y.length,o-=y.length,o===0)return!1}return(p===0||i._offset>=i._chunkSize)&&(s=i._chunkSize,i._offset=0,i._buffer=Buffer.allocUnsafe(i._chunkSize)),p===0?(a+=n-g,n=g,!0):!1}P7(this._handle,"zlib binding closed");let f;do f=this._handle.writeSync(e,r,a,n,this._buffer,this._offset,s),f=f||this._writeState;while(!this._hadError&&u(f[0],f[1]));if(this._hadError)throw d;if(l>=T7)throw U7(this),new RangeError("Cannot create final Buffer. It would be larger than 0x"+T7.toString(16)+" bytes");let h=Buffer.concat(c,l);return U7(this),h};kse.inherits(rl,su.Inflate);function Dse(r,e){if(typeof e=="string"&&(e=Buffer.from(e)),!(e instanceof Buffer))throw new TypeError("Not a string or buffer");let t=r._finishFlushFlag;return t==null&&(t=su.Z_FINISH),r._processChunk(e,t)}function R7(r,e){return Dse(new rl(e),r)}N7.exports=JA=R7;JA.Inflate=rl;JA.createInflate=Sse;JA.inflateSync=R7});var Ub=oe((rBe,M7)=>{"use strict";var O7=M7.exports=function(r){this._buffer=r,this._reads=[]};O7.prototype.read=function(r,e){this._reads.push({length:Math.abs(r),allowLess:r<0,func:e})};O7.prototype.process=function(){for(;this._reads.length>0&&this._buffer.length;){let r=this._reads[0];if(this._buffer.length&&(this._buffer.length>=r.length||r.allowLess)){this._reads.shift();let e=this._buffer;this._buffer=e.slice(r.length),r.func.call(this,e.slice(0,r.length))}else break}if(this._reads.length>0)return new Error("There are some read requests waitng on finished stream");if(this._buffer.length>0)return new Error("unrecognised content at end of stream")}});var H7=oe(L7=>{"use strict";var Qse=Ub(),_se=vb();L7.process=function(r,e){let t=[],i=new Qse(r);return new _se(e,{read:i.read.bind(i),write:function(s){t.push(s)},complete:function(){}}).start(),i.process(),Buffer.concat(t)}});var J7=oe((nBe,z7)=>{"use strict";var K7=!0,G7=wt("zlib"),Fse=q7();G7.deflateSync||(K7=!1);var Pse=Ub(),Tse=H7(),Use=Qb(),Rse=_b(),Nse=Fb();z7.exports=function(r,e){if(!K7)throw new Error("To use the sync capability of this library in old node versions, please pin pngjs to v2.3.0");let t;function i(b){t=b}let n;function s(b){n=b}function o(b){n.transColor=b}function a(b){n.palette=b}function c(){n.alpha=!0}let l;function d(b){l=b}let u=[];function f(b){u.push(b)}let h=new Pse(r);if(new Use(e,{read:h.read.bind(h),error:i,metadata:s,gamma:d,palette:a,transColor:o,inflateData:f,simpleTransparency:c}).start(),h.process(),t)throw t;let p=Buffer.concat(u);u.length=0;let I;if(n.interlace)I=G7.inflateSync(p);else{let x=((n.width*n.bpp*n.depth+7>>3)+1)*n.height;I=Fse(p,{chunkSize:x,maxLength:x})}if(p=null,!I||!I.length)throw new Error("bad png - invalid inflate data response");let y=Tse.process(I,n);p=null;let w=Rse.dataToBitMap(y,n);y=null;let C=Nse(w,n);return n.data=C,n.gamma=l||0,n}});var Y7=oe((sBe,V7)=>{"use strict";var j7=!0,$7=wt("zlib");$7.deflateSync||(j7=!1);var qse=nu(),Ose=Tb();V7.exports=function(r,e){if(!j7)throw new Error("To use the sync capability of this library in old node versions, please pin pngjs to v2.3.0");let t=e||{},i=new Ose(t),n=[];n.push(Buffer.from(qse.PNG_SIGNATURE)),n.push(i.packIHDR(r.width,r.height)),r.gamma&&n.push(i.packGAMA(r.gamma));let s=i.filterData(r.data,r.width,r.height),o=$7.deflateSync(s,i.getDeflateOptions());if(s=null,!o||!o.length)throw new Error("bad png - invalid compressed data response");return n.push(i.packIDAT(o)),n.push(i.packIEND()),Buffer.concat(n)}});var W7=oe(Rb=>{"use strict";var Mse=J7(),Lse=Y7();Rb.read=function(r,e){return Mse(r,e||{})};Rb.write=function(r,e){return Lse(r,e)}});var eq=oe(Z7=>{"use strict";var Hse=wt("util"),X7=wt("stream"),Kse=C7(),Gse=F7(),zse=W7(),fi=Z7.PNG=function(r){X7.call(this),r=r||{},this.width=r.width|0,this.height=r.height|0,this.data=this.width>0&&this.height>0?Buffer.alloc(4*this.width*this.height):null,r.fill&&this.data&&this.data.fill(0),this.gamma=0,this.readable=this.writable=!0,this._parser=new Kse(r),this._parser.on("error",this.emit.bind(this,"error")),this._parser.on("close",this._handleClose.bind(this)),this._parser.on("metadata",this._metadata.bind(this)),this._parser.on("gamma",this._gamma.bind(this)),this._parser.on("parsed",function(e){this.data=e,this.emit("parsed",e)}.bind(this)),this._packer=new Gse(r),this._packer.on("data",this.emit.bind(this,"data")),this._packer.on("end",this.emit.bind(this,"end")),this._parser.on("close",this._handleClose.bind(this)),this._packer.on("error",this.emit.bind(this,"error"))};Hse.inherits(fi,X7);fi.sync=zse;fi.prototype.pack=function(){return!this.data||!this.data.length?(this.emit("error","No data provided"),this):(process.nextTick(function(){this._packer.pack(this.data,this.width,this.height,this.gamma)}.bind(this)),this)};fi.prototype.parse=function(r,e){if(e){let t,i;t=function(n){this.removeListener("error",i),this.data=n,e(null,this)}.bind(this),i=function(n){this.removeListener("parsed",t),e(n,null)}.bind(this),this.once("parsed",t),this.once("error",i)}return this.end(r),this};fi.prototype.write=function(r){return this._parser.write(r),!0};fi.prototype.end=function(r){this._parser.end(r)};fi.prototype._metadata=function(r){this.width=r.width,this.height=r.height,this.emit("metadata",r)};fi.prototype._gamma=function(r){this.gamma=r};fi.prototype._handleClose=function(){!this._parser.writable&&!this._packer.readable&&this.emit("close")};fi.bitblt=function(r,e,t,i,n,s,o,a){if(t|=0,i|=0,n|=0,s|=0,o|=0,a|=0,t>r.width||i>r.height||t+n>r.width||i+s>r.height)throw new Error("bitblt reading outside image");if(o>e.width||a>e.height||o+n>e.width||a+s>e.height)throw new Error("bitblt writing outside image");for(let c=0;c<s;c++)r.data.copy(e.data,(a+c)*e.width+o<<2,(i+c)*r.width+t<<2,(i+c)*r.width+t+n<<2)};fi.prototype.bitblt=function(r,e,t,i,n,s,o){return fi.bitblt(this,r,e,t,i,n,s,o),this};fi.adjustGamma=function(r){if(r.gamma){for(let e=0;e<r.height;e++)for(let t=0;t<r.width;t++){let i=r.width*e+t<<2;for(let n=0;n<3;n++){let s=r.data[i+n]/255;s=Math.pow(s,1/2.2/r.gamma),r.data[i+n]=Math.round(s*255)}}r.gamma=0}};fi.prototype.adjustGamma=function(){fi.adjustGamma(this)}});var jA=oe(il=>{function tq(r){if(typeof r=="number"&&(r=r.toString()),typeof r!="string")throw new Error("Color should be defined as hex string");let e=r.slice().replace("#","").split("");if(e.length<3||e.length===5||e.length>8)throw new Error("Invalid hex color: "+r);(e.length===3||e.length===4)&&(e=Array.prototype.concat.apply([],e.map(function(i){return[i,i]}))),e.length===6&&e.push("F","F");let t=parseInt(e.join(""),16);return{r:t>>24&255,g:t>>16&255,b:t>>8&255,a:t&255,hex:"#"+e.slice(0,6).join("")}}il.getOptions=function(e){e||(e={}),e.color||(e.color={});let t=typeof e.margin>"u"||e.margin===null||e.margin<0?4:e.margin,i=e.width&&e.width>=21?e.width:void 0,n=e.scale||4;return{width:i,scale:i?4:n,margin:t,color:{dark:tq(e.color.dark||"#000000ff"),light:tq(e.color.light||"#ffffffff")},type:e.type,rendererOpts:e.rendererOpts||{}}};il.getScale=function(e,t){return t.width&&t.width>=e+t.margin*2?t.width/(e+t.margin*2):t.scale};il.getImageWidth=function(e,t){let i=il.getScale(e,t);return Math.floor((e+t.margin*2)*i)};il.qrToImageData=function(e,t,i){let n=t.modules.size,s=t.modules.data,o=il.getScale(n,i),a=Math.floor((n+i.margin*2)*o),c=i.margin*o,l=[i.color.light,i.color.dark];for(let d=0;d<a;d++)for(let u=0;u<a;u++){let f=(d*a+u)*4,h=i.color.light;if(d>=c&&u>=c&&d<a-c&&u<a-c){let g=Math.floor((d-c)/o),p=Math.floor((u-c)/o);h=l[s[g*n+p]?1:0]}e[f++]=h.r,e[f++]=h.g,e[f++]=h.b,e[f]=h.a}}});var rq=oe(ws=>{var Jse=wt("fs"),jse=eq().PNG,Nb=jA();ws.render=function(e,t){let i=Nb.getOptions(t),n=i.rendererOpts,s=Nb.getImageWidth(e.modules.size,i);n.width=s,n.height=s;let o=new jse(n);return Nb.qrToImageData(o.data,e,i),o};ws.renderToDataURL=function(e,t,i){typeof i>"u"&&(i=t,t=void 0),ws.renderToBuffer(e,t,function(n,s){n&&i(n);let o="data:image/png;base64,";o+=s.toString("base64"),i(null,o)})};ws.renderToBuffer=function(e,t,i){typeof i>"u"&&(i=t,t=void 0);let n=ws.render(e,t),s=[];n.on("error",i),n.on("data",function(o){s.push(o)}),n.on("end",function(){i(null,Buffer.concat(s))}),n.pack()};ws.renderToFile=function(e,t,i,n){typeof n>"u"&&(n=i,i=void 0);let s=!1,o=(...c)=>{s||(s=!0,n.apply(null,c))},a=Jse.createWriteStream(e);a.on("error",o),a.on("close",o),ws.renderToFileStream(a,t,i)};ws.renderToFileStream=function(e,t,i){ws.render(t,i).pack().pipe(e)}});var iq=oe(_w=>{var $se=jA(),Vse={WW:" ",WB:"\u2584",BB:"\u2588",BW:"\u2580"},Yse={BB:" ",BW:"\u2584",WW:"\u2588",WB:"\u2580"};function Wse(r,e,t){return r&&e?t.BB:r&&!e?t.BW:!r&&e?t.WB:t.WW}_w.render=function(r,e,t){let i=$se.getOptions(e),n=Vse;(i.color.dark.hex==="#ffffff"||i.color.light.hex==="#000000")&&(n=Yse);let s=r.modules.size,o=r.modules.data,a="",c=Array(s+i.margin*2+1).join(n.WW);c=Array(i.margin/2+1).join(c+` +`);let l=Array(i.margin+1).join(n.WW);a+=c;for(let d=0;d<s;d+=2){a+=l;for(let u=0;u<s;u++){let f=o[d*s+u],h=o[(d+1)*s+u];a+=Wse(f,h,n)}a+=l+` +`}return a+=c.slice(0,-1),typeof t=="function"&&t(null,a),a};_w.renderToFile=function(e,t,i,n){typeof n>"u"&&(n=i,i=void 0);let s=wt("fs"),o=_w.render(t,i);s.writeFile(e,o,n)}});var sq=oe(nq=>{nq.render=function(r,e,t){let i=r.modules.size,n=r.modules.data,s="\x1B[40m \x1B[0m",o="\x1B[47m \x1B[0m",a="",c=Array(i+3).join(o),l=Array(2).join(o);a+=c+` `;for(let d=0;d<i;++d){a+=o;for(let u=0;u<i;u++)a+=n[d*i+u]?s:o;a+=l+` `}return a+=c+` -`,typeof t=="function"&&t(null,a),a}});var F7=oe(_7=>{var lse="\x1B[47m",dse="\x1B[40m",wb="\x1B[37m",xb="\x1B[30m",tl="\x1B[0m",use=lse+xb,fse=dse+wb,Ase=function(r,e,t){return{"00":tl+" "+r,"01":tl+e+"\u2584"+r,"02":tl+t+"\u2584"+r,10:tl+e+"\u2580"+r,11:" ",12:"\u2584",20:tl+t+"\u2580"+r,21:"\u2580",22:"\u2588"}},D7=function(r,e,t,i){let n=e+1;if(t>=n||i>=n||i<-1||t<-1)return"0";if(t>=e||i>=e||i<0||t<0)return"1";let s=i*e+t;return r[s]?"2":"1"},Q7=function(r,e,t,i){return D7(r,e,t,i)+D7(r,e,t,i+1)};_7.render=function(r,e,t){let i=r.modules.size,n=r.modules.data,s=!!(e&&e.inverse),o=e&&e.inverse?fse:use,l=Ase(o,s?xb:wb,s?wb:xb),d=tl+` -`+o,u=o;for(let f=-1;f<i+1;f+=2){for(let h=-1;h<i;h++)u+=l[Q7(n,i,h,f)];u+=l[Q7(n,i,i,f)]+d}return u+=tl,typeof t=="function"&&t(null,u),u}});var T7=oe(P7=>{var hse=S7(),gse=F7();P7.render=function(r,e,t){return e&&e.small?gse.render(r,e,t):hse.render(r,e,t)}});var Eb=oe(R7=>{var pse=RA();function U7(r,e){let t=r.a/255,i=e+'="'+r.hex+'"';return t<1?i+" "+e+'-opacity="'+t.toFixed(2).slice(1)+'"':i}function Cb(r,e,t){let i=r+e;return typeof t<"u"&&(i+=" "+t),i}function mse(r,e,t){let i="",n=0,s=!1,o=0;for(let a=0;a<r.length;a++){let c=Math.floor(a%e),l=Math.floor(a/e);!c&&!s&&(s=!0),r[a]?(o++,a>0&&c>0&&r[a-1]||(i+=s?Cb("M",c+t,.5+l+t):Cb("m",n,0),n=0,s=!1),c+1<e&&r[a+1]||(i+=Cb("h",o),o=0)):n++}return i}R7.render=function(e,t,i){let n=pse.getOptions(t),s=e.modules.size,o=e.modules.data,a=s+n.margin*2,c=n.color.light.a?"<path "+U7(n.color.light,"fill")+' d="M0 0h'+a+"v"+a+'H0z"/>':"",l="<path "+U7(n.color.dark,"stroke")+' d="'+mse(o,s,n.margin)+'"/>',d='viewBox="0 0 '+a+" "+a+'"',f='<svg xmlns="http://www.w3.org/2000/svg" '+(n.width?'width="'+n.width+'" height="'+n.width+'" ':"")+d+' shape-rendering="crispEdges">'+c+l+`</svg> -`;return typeof i=="function"&&i(null,f),f}});var N7=oe(ww=>{var yse=Eb();ww.render=yse.render;ww.renderToFile=function(e,t,i,n){typeof n>"u"&&(n=i,i=void 0);let s=wt("fs"),a='<?xml version="1.0" encoding="utf-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">'+ww.render(t,i);s.writeFile(e,a,n)}});var q7=oe(xw=>{var Bb=RA();function Ise(r,e,t){r.clearRect(0,0,e.width,e.height),e.style||(e.style={}),e.height=t,e.width=t,e.style.height=t+"px",e.style.width=t+"px"}function wse(){try{return document.createElement("canvas")}catch{throw new Error("You need to specify a canvas element")}}xw.render=function(e,t,i){let n=i,s=t;typeof n>"u"&&(!t||!t.getContext)&&(n=t,t=void 0),t||(s=wse()),n=Bb.getOptions(n);let o=Bb.getImageWidth(e.modules.size,n),a=s.getContext("2d"),c=a.createImageData(o,o);return Bb.qrToImageData(c.data,e,n),Ise(a,s,o),a.putImageData(c,0,0),s};xw.renderToDataURL=function(e,t,i){let n=i;typeof n>"u"&&(!t||!t.getContext)&&(n=t,t=void 0),n||(n={});let s=xw.render(e,t,n),o=n.type||"image/png",a=n.rendererOpts||{};return s.toDataURL(o,a.quality)}});var M7=oe(NA=>{var xse=q2(),bb=ib(),O7=q7(),Cse=Eb();function vb(r,e,t,i,n){let s=[].slice.call(arguments,1),o=s.length,a=typeof s[o-1]=="function";if(!a&&!xse())throw new Error("Callback required as last argument");if(a){if(o<2)throw new Error("Too few arguments provided");o===2?(n=t,t=e,e=i=void 0):o===3&&(e.getContext&&typeof n>"u"?(n=i,i=void 0):(n=i,i=t,t=e,e=void 0))}else{if(o<1)throw new Error("Too few arguments provided");return o===1?(t=e,e=i=void 0):o===2&&!e.getContext&&(i=t,t=e,e=void 0),new Promise(function(c,l){try{let d=bb.create(t,i);c(r(d,e,i))}catch(d){l(d)}})}try{let c=bb.create(t,i);n(null,r(c,e,i))}catch(c){n(c)}}NA.create=bb.create;NA.toCanvas=vb.bind(null,O7.render);NA.toDataURL=vb.bind(null,O7.renderToDataURL);NA.toString=vb.bind(null,function(r,e,t){return Cse.render(r,t)})});var G7=oe(Ma=>{var L7=q2(),kb=ib(),Ese=b7(),H7=v7(),Bse=T7(),K7=N7();function qA(r,e,t){if(typeof r>"u")throw new Error("String required as first argument");if(typeof t>"u"&&(t=e,e={}),typeof t!="function")if(L7())e=t||{},t=null;else throw new Error("Callback required as last argument");return{opts:e,cb:t}}function bse(r){return r.slice((r.lastIndexOf(".")-1>>>0)+2).toLowerCase()}function Cw(r){switch(r){case"svg":return K7;case"txt":case"utf8":return H7;default:return Ese}}function vse(r){switch(r){case"svg":return K7;case"terminal":return Bse;default:return H7}}function OA(r,e,t){if(!t.cb)return new Promise(function(i,n){try{let s=kb.create(e,t.opts);return r(s,t.opts,function(o,a){return o?n(o):i(a)})}catch(s){n(s)}});try{let i=kb.create(e,t.opts);return r(i,t.opts,t.cb)}catch(i){t.cb(i)}}Ma.create=kb.create;Ma.toCanvas=M7().toCanvas;Ma.toString=function(e,t,i){let n=qA(e,t,i),s=n.opts?n.opts.type:void 0,o=vse(s);return OA(o.render,e,n)};Ma.toDataURL=function(e,t,i){let n=qA(e,t,i),s=Cw(n.opts.type);return OA(s.renderToDataURL,e,n)};Ma.toBuffer=function(e,t,i){let n=qA(e,t,i),s=Cw(n.opts.type);return OA(s.renderToBuffer,e,n)};Ma.toFile=function(e,t,i,n){if(typeof e!="string"||!(typeof t=="string"||typeof t=="object"))throw new Error("Invalid argument");if(arguments.length<3&&!L7())throw new Error("Too few arguments provided");let s=qA(t,i,n),o=s.opts.type||bse(e),c=Cw(o).renderToFile.bind(null,e);return OA(c,t,s)};Ma.toFileStream=function(e,t,i){if(arguments.length<2)throw new Error("Too few arguments provided");let n=qA(t,i,e.emit.bind(e,"error")),o=Cw("png").renderToFileStream.bind(null,e);OA(o,t,n)}});var J7=oe((kEe,z7)=>{z7.exports=G7()});var jw=(r,e,t)=>(i,n)=>{let s=-1;return o(0);async function o(a){if(a<=s)throw new Error("next() called multiple times");s=a;let c,l=!1,d;if(r[a]?(d=r[a][0][0],i.req.routeIndex=a):d=a===r.length&&n||void 0,d)try{c=await d(i,()=>o(a+1))}catch(u){if(u instanceof Error&&e)i.error=u,c=await e(u,i),l=!0;else throw u}else i.finalized===!1&&t&&(c=await t(i));return c&&(i.finalized===!1||l)&&(i.res=c),i}};b0();var ir="ALL",vv="all",kv=["get","post","put","delete","options","patch","query"],v0="Can not add a route since the matcher is already built.",k0=class extends Error{};var Sv="__COMPOSED_HANDLER";ja();var dL=r=>r.text("404 Not Found",404),Dv=(r,e)=>{if("getResponse"in r){let t=r.getResponse();return e.newResponse(t.body,t)}return console.error(r),e.text("Internal Server Error",500)},Qv=class _v{get;post;put;delete;options;patch;query;all;on;use;router;getPath;_basePath="/";#t="/";routes=[];constructor(e={}){[...kv,vv].forEach(s=>{this[s]=(o,...a)=>(typeof o=="string"?this.#t=o:this.#s(s,this.#t,o),a.forEach(c=>{this.#s(s,this.#t,c)}),this)}),this.on=(s,o,...a)=>{for(let c of[o].flat()){this.#t=c;for(let l of[s].flat())a.map(d=>{this.#s(l.toUpperCase(),this.#t,d)})}return this},this.use=(s,...o)=>(typeof s=="string"?this.#t=s:(this.#t="*",o.unshift(s)),o.forEach(a=>{this.#s(ir,this.#t,a)}),this);let{strict:i,...n}=e;Object.assign(this,n),this.getPath=i??!0?e.getPath??Ww:yv}#e(){let e=new _v({router:this.router,getPath:this.getPath});return e.errorHandler=this.errorHandler,e.#r=this.#r,e.routes=this.routes,e}#r=dL;errorHandler=Dv;route(e,t){let i=this.basePath(e);return t.routes.map(n=>{let s;t.errorHandler===Dv?s=n.handler:(s=async(o,a)=>(await jw([],t.errorHandler)(o,()=>n.handler(o,a))).res,s[Sv]=n.handler),i.#s(n.method,n.path,s,n.basePath)}),this}basePath(e){let t=this.#e();return t._basePath=So(this._basePath,e),t}onError=e=>(this.errorHandler=e,this);notFound=e=>(this.#r=e,this);mount(e,t,i){let n,s;i&&(typeof i=="function"?s=i:(s=i.optionHandler,i.replaceRequest===!1?n=c=>c:n=i.replaceRequest));let o=s?c=>{let l=s(c);return Array.isArray(l)?l:[l]}:c=>{let l;try{l=c.executionCtx}catch{}return[c.env,l]};n||=(()=>{let c=So(this._basePath,e),l=c==="/"?0:c.length;return d=>{let u=new URL(d.url);return u.pathname=this.getPath(d).slice(l)||"/",new Request(u,d)}})();let a=async(c,l)=>{let d=await t(n(c.req.raw),...o(c));if(d)return d;await l()};return this.#s(ir,So(e,"*"),a),this}#s(e,t,i,n){e=e.toUpperCase(),t=So(this._basePath,t);let s={basePath:n!==void 0?So(this._basePath,n):this._basePath,path:t,method:e,handler:i};this.router.add(e,t,[i,s]),this.routes.push(s)}#i(e,t){if(e instanceof Error)return this.errorHandler(e,t);throw e}#n(e,t,i,n){if(n==="HEAD")return(async()=>new Response(null,await this.#n(e,t,i,"GET")))();let s=this.getPath(e,{env:i}),o=this.router.match(n,s),a=new ex(e,{path:s,matchResult:o,env:i,executionCtx:t,notFoundHandler:this.#r});if(o[0].length===1){let l;try{l=o[0][0][0][0](a,async()=>{a.res=await this.#r(a)})}catch(d){return this.#i(d,a)}return l instanceof Promise?l.then(d=>d||(a.finalized?a.res:this.#r(a))).catch(d=>this.#i(d,a)):l??this.#r(a)}let c=jw(o[0],this.errorHandler,this.#r);return(async()=>{try{let l=await c(a);if(!l.finalized)throw new Error("Context is not finalized. Did you forget to return a Response object or `await next()`?");return l.res}catch(l){return this.#i(l,a)}})()}fetch=(e,...t)=>this.#n(e,t[1],t[0],e.method);request=(e,t,i,n)=>e instanceof Request?this.fetch(t?new Request(e,t):e,i,n):(e=e.toString(),this.fetch(new Request(/^https?:\/\//.test(e)?e:`http://localhost${So("/",e)}`,t),i,n));fire=()=>{addEventListener("fetch",e=>{e.respondWith(this.#n(e.request,e,void 0,e.request.method))})}};ja();var S0=[];function tx(r,e){let t=this.buildAllMatchers(),i=((n,s)=>{let o=t[n]||t[ir],a=o[2][s];if(a)return a;let c=s.match(o[0]);if(!c)return[[],S0];let l=c.indexOf("",1);return[o[1][l],c]});return this.match=i,i(r,e)}var D0="[^/]+",hl=".*",$a="(?:|/.*)",Do=Symbol(),Fv=new Set(".\\+*[^]$()");function uL(r,e){return r.length===1?e.length===1?r<e?-1:1:-1:e.length===1?1:r===hl||r===$a?e===$a?-1:1:e===hl||e===$a?-1:r===D0?1:e===D0?-1:r.length===e.length?r<e?-1:1:e.length-r.length}var Pv=class rx{#t;#e;#r=Object.create(null);insert(e,t,i,n,s){let o=this;for(let a=0,c=e.length;a<c;a++){let l=e[a],d=l.length===1?l==="*"?a===c-1?["","",hl]:["","",D0]:null:l==="/*"?["","",$a]:l.match(/^\:([^\{\}]+)(?:\{(.+)\})?$/),u;if(d){let f=d[1],h=d[2]||D0;if(f&&d[2]&&(h===".*"||(h=h.replace(/^\((?!\?:)(?=[^)]+\)$)/,"(?:"),/\((?!\?:)/.test(h))||h.length===1&&Fv.has(h)))throw Do;if(u=o.#r[h],!u){if(h!==hl&&h!==$a){for(let g in o.#r)if((h.length>1||g.length>1)&&g!==hl&&g!==$a)throw Do}u=o.#r[h]=new rx}f!==""&&(u.#e??=n.varIndex++,i.push([f,u.#e]))}else if(u=o.#r[l],!u){for(let f in o.#r)if(f.length>1&&f!==hl&&f!==$a)throw Do;u=o.#r[l]=new rx}o=u}if(o.#t!==void 0)throw Do;o.#t=s?-1:t}buildRegExpStr(){let t=Object.keys(this.#r).sort(uL).map(i=>{let n=this.#r[i],s=n.buildRegExpStr();return s===""?"":(typeof n.#e=="number"?`(${i})@${n.#e}`:Fv.has(i)?`\\${i}`:i)+s}).filter(Boolean);return typeof this.#t=="number"&&this.#t!==-1&&t.unshift(`#${this.#t}`),t.length===0?"":t.length===1?t[0]:"(?:"+t.join("|")+")"}};var ix=class{#t={varIndex:0};#e=new Pv;#r=0;paths=Object.create(null);insert(r,e){if(e){this.#e.insert(r.split(""),0,[],this.#t,!0);return}let t=[],i=[],n=r;for(let o=0;;){let a=!1;if(n=n.replace(/\{[^}]+\}/g,c=>{let l=`@\\${o}`;return i[o]=[l,c],o++,a=!0,l}),!a)break}let s=n.match(/(?::[^\/]+)|(?:\/\*$)|./g)||[];for(let o=i.length-1;o>=0;o--){let[a]=i[o];for(let c=s.length-1;c>=0;c--)if(s[c].indexOf(a)!==-1){s[c]=s[c].replace(a,i[o][1]);break}}this.#e.insert(s,this.#r,t,this.#t,!1),this.paths[r]=[this.#r++,t]}buildRegExp(){let r=this.#e.buildRegExpStr();if(r==="")return[/^$/,[],[]];let e=0,t=[],i=[];return r=r.replace(/#(\d+)|@(\d+)|\.\*\$/g,(n,s,o)=>s!==void 0?(t[++e]=Number(s),"$()"):(o!==void 0&&(i[Number(o)]=++e),"")),[new RegExp(`^${r}`),t,i]}};var Tv=Object.create(null);function Uv(r){return Tv[r]??=new RegExp(r==="*"?"":`^${r.replace(/\/\*$|([.\\+*[^\]$()])/g,(e,t)=>t?`\\${t}`:"(?:|/.*)")}$`)}function fL(){Tv=Object.create(null)}function Q0(r,e){if(r){for(let t of Object.keys(r).sort((i,n)=>n.length-i.length))if(Uv(t).test(e))return[...r[t]]}}var _0=class{name="RegExpRouter";#t;#e;#r;constructor(){this.#t={[ir]:Object.create(null)},this.#e={[ir]:Object.create(null)},this.#r={[ir]:new ix}}#s(r,e){try{this.#r[r].insert(e,!/\*|\/:/.test(e))}catch(t){throw t===Do?new k0(e):t}}add(r,e,t){let i=this.#t,n=this.#e;if(!i||!n)throw new Error(v0);i[r]||(this.#r[r]=new ix,[i,n].forEach(a=>{a[r]=Object.create(null),Object.keys(a[ir]).forEach(c=>{a[r][c]=[...a[ir][c]],this.#s(r,c)})})),e==="/*"&&(e="*");let s=(e.match(/\/:/g)||[]).length;if(/\*$/.test(e)){let a=Uv(e);Object.keys(i).forEach(c=>{(r===ir||r===c)&&!i[c][e]&&(this.#s(c,e),i[c][e]=Q0(i[c],e)||Q0(i[ir],e)||[])}),Object.keys(i).forEach(c=>{(r===ir||r===c)&&Object.keys(i[c]).forEach(l=>{a.test(l)&&i[c][l].push([t,s])})}),Object.keys(n).forEach(c=>{(r===ir||r===c)&&Object.keys(n[c]).forEach(l=>a.test(l)&&n[c][l].push([t,s]))});return}let o=B0(e)||[e];for(let a=0,c=o.length;a<c;a++){let l=o[a];Object.keys(n).forEach(d=>{(r===ir||r===d)&&(n[d][l]||(this.#s(d,l),n[d][l]=[...Q0(i[d],l)||Q0(i[ir],l)||[]]),n[d][l].push([t,s-c+a+1]))})}}match=tx;buildAllMatchers(){let r=Object.create(null);return Object.keys(this.#e).concat(Object.keys(this.#t)).forEach(e=>{r[e]||=this.#i(e)}),this.#t=this.#e=this.#r=void 0,fL(),r}#i(r){let e=this.#t[r],t=this.#e[r],i=this.#r[r],n=Object.create(null),s=[];[e,t].forEach(d=>{for(let u in d){let f=d[u],h=i.paths[u];if(!h){n[u]=[f.map(([p])=>[p,Object.create(null)]),S0];continue}let g=h[1];s[h[0]]=f.map(([p,I])=>{let y=Object.create(null);for(I-=1;I>=0;I--){let[w,C]=g[I];y[w]=C}return[p,y]})}});let[o,a,c]=i.buildRegExp();for(let d=0,u=s.length;d<u;d++)for(let f=0,h=s[d].length;f<h;f++){let g=s[d][f]?.[1];if(!g)continue;let p=Object.keys(g);for(let I=0,y=p.length;I<y;I++)g[p[I]]=c[g[p[I]]]}let l=[];for(let d in a)l[d]=s[a[d]];return[o,l,n]}};var nx=class{name="SmartRouter";#t=[];#e=[];constructor(r){this.#t=r.routers}add(r,e,t){if(!this.#e)throw new Error(v0);this.#e.push([r,e,t])}match(r,e){if(!this.#e)throw new Error("Fatal error");let t=this.#t,i=this.#e,n=t.length,s=0,o;for(;s<n;s++){let a=t[s];try{for(let c=0,l=i.length;c<l;c++)a.add(...i[c]);o=a.match(r,e)}catch(c){if(c instanceof k0)continue;throw c}this.match=a.match.bind(a),this.#t=[a],this.#e=void 0;break}if(s===n)throw new Error("Fatal error");return this.name=`SmartRouter + ${this.activeRouter.name}`,o}get activeRouter(){if(this.#e||this.#t.length!==1)throw new Error("No active router has been determined yet.");return this.#t[0]}};ja();ja();var Au=Object.create(null),AL=r=>{for(let e in r)return!0;return!1},Rv=class Nv{#t;#e;#r;#s=0;#i=Au;constructor(e,t,i){if(this.#e=i||Object.create(null),this.#t=[],e&&t){let n=Object.create(null);n[e]={handler:t,possibleKeys:[],score:0},this.#t=[n]}this.#r=[]}insert(e,t,i){this.#s=++this.#s;let n=this,s=gv(t),o=[];for(let a=0,c=s.length;a<c;a++){let l=s[a],d=s[a+1],u=pv(l,d),f=Array.isArray(u)?u[0]:l;if(f in n.#e){n=n.#e[f],u&&o.push(u[1]);continue}n.#e[f]=new Nv,u&&(n.#r.push(u),o.push(u[1])),n=n.#e[f]}return n.#t.push({[e]:{handler:i,possibleKeys:o.filter((a,c,l)=>l.indexOf(a)===c),score:this.#s}}),n}#n(e,t,i,n,s){for(let o=0,a=t.#t.length;o<a;o++){let c=t.#t[o],l=c[i]||c[ir],d={};if(l!==void 0&&(l.params=Object.create(null),e.push(l),n!==Au||s&&s!==Au))for(let u=0,f=l.possibleKeys.length;u<f;u++){let h=l.possibleKeys[u],g=d[l.score];l.params[h]=s?.[h]&&!g?s[h]:n[h]??s?.[h],d[l.score]=!0}}}search(e,t){let i=[];this.#i=Au;let s=[this],o=Yw(t),a=[],c=o.length,l=null;for(let d=0;d<c;d++){let u=o[d],f=d===c-1,h=[];for(let p=0,I=s.length;p<I;p++){let y=s[p],w=y.#e[u];w&&(w.#i=y.#i,f?(w.#e["*"]&&this.#n(i,w.#e["*"],e,y.#i),this.#n(i,w,e,y.#i)):h.push(w));for(let C=0,b=y.#r.length;C<b;C++){let x=y.#r[C],_=y.#i===Au?{}:{...y.#i};if(x==="*"){let B=y.#e["*"];B&&(this.#n(i,B,e,y.#i),B.#i=_,h.push(B));continue}let[R,U,T]=x;if(!u&&!(T instanceof RegExp))continue;let D=y.#e[R];if(T instanceof RegExp){if(l===null){l=new Array(c);let v=t[0]==="/"?1:0;for(let E=0;E<c;E++)l[E]=v,v+=o[E].length+1}let B=t.substring(l[d]),Q=T.exec(B);if(Q){if(_[U]=Q[0],this.#n(i,D,e,y.#i,_),Q[0].length===B.length&&D.#e["*"]&&this.#n(i,D.#e["*"],e,y.#i,_),AL(D.#e)){D.#i=_;let v=Q[0].match(/\//)?.length??0;(a[v]||=[]).push(D)}continue}}(T===!0||T.test(u))&&(_[U]=u,f?(this.#n(i,D,e,_,y.#i),D.#e["*"]&&this.#n(i,D.#e["*"],e,_,y.#i)):(D.#i=_,h.push(D)))}}let g=a.shift();s=g?h.concat(g):h}return i.length>1&&i.sort((d,u)=>d.score-u.score),[i.map(({handler:d,params:u})=>[d,u])]}};var sx=class{name="TrieRouter";#t;constructor(){this.#t=new Rv}add(r,e,t){let i=B0(e);if(i){for(let n=0,s=i.length;n<s;n++)this.#t.insert(r,i[n],t);return}this.#t.insert(r,e,t)}match(r,e){return this.#t.search(r,e)}};var Xe=class extends Qv{constructor(r={}){super(r),this.router=r.router??new nx({routers:[new _0,new sx]})}};b0();var qv=r=>{let e={origin:"*",allowMethods:["GET","HEAD","PUT","POST","DELETE","PATCH","QUERY"],allowHeaders:[],exposeHeaders:[],...r},t=(n=>typeof n=="string"?n==="*"?()=>n:s=>n===s?s:null:typeof n=="function"?n:s=>n.includes(s)?s:null)(e.origin),i=(n=>typeof n=="function"?n:Array.isArray(n)?()=>n:()=>[])(e.allowMethods);return async function(s,o){function a(l,d){s.res.headers.set(l,d)}let c=await t(s.req.header("origin")||"",s);if(c&&a("Access-Control-Allow-Origin",c),e.credentials&&a("Access-Control-Allow-Credentials","true"),e.exposeHeaders?.length&&a("Access-Control-Expose-Headers",e.exposeHeaders.join(",")),s.req.method==="OPTIONS"){e.origin!=="*"&&a("Vary","Origin"),e.maxAge!=null&&a("Access-Control-Max-Age",e.maxAge.toString());let l=await i(s.req.header("origin")||"",s);l.length&&a("Access-Control-Allow-Methods",l.join(","));let d=e.allowHeaders;if(!d?.length){let u=s.req.header("Access-Control-Request-Headers");u&&(d=u.split(",").map(f=>f.trim()))}return d?.length&&(a("Access-Control-Allow-Headers",d.join(",")),s.res.headers.append("Vary","Access-Control-Request-Headers")),s.res.headers.delete("Content-Length"),s.res.headers.delete("Content-Type"),new Response(null,{headers:s.res.headers,status:204,statusText:"No Content"})}await o(),e.origin!=="*"&&s.header("Vary","Origin",{append:!0})}};Ve();ec();Yt();Ve();var AA=r=>{let e=[];for(let t of String(r||"").replace(/\\/g,"/").split("/"))if(!(t===""||t===".")){if(t===".."){e.pop();continue}e.push(t)}return"/"+e.join("/")};async function Ud(r,e,t){let n=AA(r).split("/").filter(Boolean);if(n.length<1)return{ok:!1,error:"Invalid share path"};let s,o;if(n[0]==="@s"){if(n.length<2)return{ok:!1,error:"Invalid share path"};s=n[1],o=n.slice(2)}else s=n[0],o=n.slice(1);let a=await ne(t),c=(a.shares||[]).find(g=>g.id===s);if(!c)return{ok:!1,error:"share not found"};if(c.disabled)return{ok:!1,error:"share has been disabled"};if(c.expires&&new Date(c.expires)<new Date)return{ok:!1,error:"share has expired"};if(c.max_accessed>0&&c.accessed!==void 0&&c.accessed>=c.max_accessed)return{ok:!1,error:"share access count exceeded"};if(c.pwd&&c.pwd!==e)return{ok:!1,error:"wrong password"};if(!c.files||c.files.length===0)return{ok:!1,error:"share is empty"};if(c.accessed=(c.accessed||0)+1,fe(a,t).catch(()=>{}),c.files.length>1&&o.length===0)return{ok:!0,share:c,virtualList:!0};let l=(c.files||[]).map(g=>AA(g)),d=g=>l.some(p=>g===p||g.startsWith(p==="/"?"/":p+"/"));if(c.files.length===1)return o.length>0?{ok:!1,error:"path not found in share"}:{ok:!0,share:c,realPath:AA(c.files[0])};let u=o[0],f=c.files.find(g=>{let p=String(g).split("/").filter(Boolean);return p[p.length-1]===u});if(!f)return{ok:!1,error:"path not found in share"};let h=AA([AA(f),...o.slice(1)].join("/"));return d(h)?{ok:!0,share:c,realPath:h}:{ok:!1,error:"path not found in share"}}Ve();Di();var Da={SEE_HIDES:0,ACCESS_WITHOUT_PASSWORD:1,OFFLINE_DOWNLOAD:2,WRITE_CONTENT:3,RENAME:4,MOVE:5,COPY:6,DELETE:7,WEBDAV_READ:8,WEBDAV_MANAGE:9,FTP_READ:10,FTP_MANAGE:11,READ_ARCHIVES:12,DECOMPRESS:13,SHARE:14,CUSTOMIZE_SHARE_ID:15};function ire(r){return!r||r.role===1}function As(r){return!!r&&r.role===2}function Qa(r,e){return!r||r.disabled?!1:As(r)?!0:ire(r)?!1:(r.permission>>e&1)===1}function pt(r){return Qa(r,Da.WRITE_CONTENT)}function We(r,e="/"){let t=e||"/";if(t.startsWith("/@s"))return t;let i=(r?.base_path||"/").trim();if(!i||i==="/")return t.startsWith("/")?t:`/${t}`;i.startsWith("/")||(i=`/${i}`),i.endsWith("/")&&i.length>1&&(i=i.replace(/\/+$/,""));let n=t.startsWith("/")?t:`/${t}`;return n==="/"?i:`${i}${n}`}Ve();async function J1(r,e){let i=(await ne(e)).metas||[];if(i.length===0)return null;let n=mA(r),s=i.find(a=>mA(a.path)===n);if(s)return s;let o=n;for(;o!=="/";){let a=o.substring(0,o.lastIndexOf("/"))||"/",c=i.find(l=>mA(l.path)===a);if(c)return c;o=a}return null}function jc(r,e,t){let i=mA(r),n=mA(e);if(i.toLowerCase()===n.toLowerCase())return!0;if(!t)return!1;let s=n;for(;s!=="/";)if(s=s.substring(0,s.lastIndexOf("/"))||"/",i.toLowerCase()===s.toLowerCase())return!0;return!1}function mA(r){let e=(r||"/").replace(/\\/g,"/").replace(/\/+/g,"/").trim();return e===""||e==="/"?"/":"/"+e.split("/").filter(Boolean).join("/")}function j1(r,e,t,i=""){return r&&As(r)||!e?!0:!(e.password&&e.password.trim()!==""&&jc(e.path,t,e.p_sub)&&i!==e.password||e.read_users&&e.read_users.length>0&&jc(e.path,t,e.read_users_sub)&&(!r||!e.read_users.includes(r.id||0)))}function $1(r,e,t){return r===null||r&&As(r)?!0:e&&e.write_users&&e.write_users.length>0&&jc(e.path,t,e.write_users_sub)?e.write_users.includes(r.id||0):!0}function V1(r,e){return r?r.write&&jc(r.path,e,r.w_sub):!1}function Y1(r,e){return!r||!r.readme?"":jc(r.path,e,r.r_sub)?r.readme:""}function W1(r,e){return!r||!r.header?"":jc(r.path,e,r.header_sub)?r.header:""}function vR(r,e,t){if(!r||!r.hide||r.hide.trim()===""||!jc(r.path,e,r.h_sub))return!1;let i=r.hide.split(` -`).map(n=>n.trim()).filter(Boolean);for(let n of i)try{if(new RegExp(n).test(t))return!0}catch{}return!1}function X1(r){if(!r||r.trim()==="")return null;let e=r.split(` -`).map(t=>t.trim()).filter(Boolean);for(let t of e)try{new RegExp(t)}catch{return t}return null}Ve();Di();ni();function SR(r){if(!r)return{};if(typeof r=="object")return r;if(typeof r=="string")try{let e=JSON.parse(r||"{}");return e&&typeof e=="object"?e:{}}catch{return{}}return{}}function Z1(r){return typeof r=="string"?r.toLowerCase()==="true":r===!0}function $c(r){if(typeof r=="number"&&Number.isFinite(r))return Math.trunc(r);if(typeof r=="string"&&r.trim()!==""){let e=parseInt(r,10);if(Number.isFinite(e))return e}return null}function DR(r){let e=r?.proxy_range??r?.proxyRange;return e==null||e===""?!0:Z1(e)}function QR(r){return r?Z1(r.enable_sign??r.enableSign):!1}function _R(r){return r?Z1(r.disable_index??r.disableIndex):!1}function nre(r){let e=$c(r?.cache_expiration??r?.cacheExpiration);return e===null||e<0?30:e}function sre(r){let e=r?.custom_cache_policies??r?.customCachePolicies;if(!e)return[];if(typeof e=="string"){let i=e.trim();if(!i)return[];try{e=JSON.parse(i)}catch{let n=[];for(let s of i.split(",")){let o=s.lastIndexOf(":");if(o<=0)continue;let a=s.slice(0,o).trim(),c=$c(s.slice(o+1).trim());a&&c!==null&&n.push({path:a,cacheExpiration:c})}return n}}let t=[];if(Array.isArray(e)){for(let i of e)if(i){if(typeof i=="string"){let n=i.lastIndexOf(":");if(n<=0)continue;let s=i.slice(0,n).trim(),o=$c(i.slice(n+1).trim());s&&o!==null&&t.push({path:s,cacheExpiration:o});continue}if(typeof i=="object"){let n=i.path??i.Path,s=$c(i.cache_expiration??i.cacheExpiration)??$c(i.max_age??i.maxAge);if(typeof n=="string"&&n&&s!==null){let o=$c(i.max_age??i.maxAge);t.push({path:n,cacheExpiration:s,...o!==null?{maxAge:o}:{}})}}}return t}if(typeof e=="object")for(let[i,n]of Object.entries(e)){let s=$c(n);i&&s!==null&&t.push({path:i,cacheExpiration:s})}return t}var ore=1024,are=4096;function kR(r,e){if(!r)return!1;if(r===e)return!0;if(r.length>ore||e.length>are)return!1;let t=r.split("/"),i=e.split("/"),n=t.length,s=i.length,o=new Array(s+1).fill(!1);o[s]=!0;for(let a=n-1;a>=0;a--){let c=t[a],l=new Array(s+1).fill(!1);if(/^\*{2,}$/.test(c)){l[s]=o[s];for(let u=s-1;u>=0;u--)l[u]=o[u]||l[u+1]}else for(let u=s-1;u>=0;u--)l[u]=cre(c,i[u])&&o[u+1];o=l}return o[0]}function cre(r,e){let t=0,i=0,n=-1,s=-1,o=r.length,a=e.length;for(;i<a;){let c=t<o?r[t]:void 0;if(c==="*"){n=t,s=i,t++;continue}if(c==="?"||c===e[i]){t++,i++;continue}if(n!==-1){s++,i=s,t=n+1;continue}return!1}for(;t<o&&r[t]==="*";)t++;return t===o}function FR(r,e){let t="/"+String(e||"").split("/").filter(Boolean).join("/"),i=nre(r),n=sre(r);if(n.length===0)return i;let s=null;for(let o of n){let a=o.path.trim();a&&(!a.startsWith("/")&&!a.startsWith("*")&&(a="/"+a),(kR(a,t)||kR(a,t.slice(1)))&&(s=o))}return s?s.cacheExpiration:i}var PR=24*3600;function lre(r,e){if(typeof r!="string"||typeof e!="string"||r.length!==e.length)return!1;let t=0;for(let i=0;i<r.length;i++)t|=r.charCodeAt(i)^e.charCodeAt(i);return t===0}async function Md(r){try{let e=await ne(r?.env),t={};for(let s of e.settings||[])t[s.key]=s.value;let i=t.sign_all==="true",n=parseInt(t.link_expiration,10)||0;return!i&&n<=0?{enabled:!1,expiresIn:0}:{enabled:!0,expiresIn:n>0?n:PR}}catch{return{enabled:!1,expiresIn:0}}}function Od(r){return"/"+String(r||"").split("/").filter(Boolean).join("/")}function dre(r,e,t){let i=Od(r).toLowerCase(),n=Od(e).toLowerCase();if(i===n)return!0;if(!t)return!1;for(;n!=="/";)if(n=Od(n.split("/").slice(0,-1).join("/")),i===n)return!0;return!1}async function ure(r,e){try{let i=(await ne(r?.env)).metas||[];if(!i.length)return null;let n=Od(e);for(;;){let s=i.find(o=>Od(o.path).toLowerCase()===n.toLowerCase());if(s)return s;if(n==="/")return null;n=Od(n.split("/").slice(0,-1).join("/"))}}catch{return null}}async function fre(r,e){try{let{resolvePath:t}=await Promise.resolve().then(()=>(Ve(),Kr)),i=await t(e);return i?.storage?QR(i.storage):!1}catch{return!1}}async function OI(r,e){if(await fre(r,e))return!0;let t=await ure(r,e);return!t||!t.password?!1:dre(t.path,e,!!t.p_sub)}async function TR(r,e){return(await Md(r)).enabled?!0:await OI(r,e)}async function yA(r){try{let e=await ne(r?.env);for(let t of e.settings||[])if(t.key==="link_expiration"){let i=parseInt(t.value,10)||0;if(i>0)return i;break}}catch{}return PR}async function IA(r,e,t){let i=await vr(r),n=Math.floor(Date.now()/1e3)+t,s=await ax(`${e}:${n}`,i);return`${n}.${s}`}async function UR(r,e,t){let i=t.lastIndexOf(".");if(i<=0)return!1;let n=parseInt(t.slice(0,i),10),s=t.slice(i+1);if(!Number.isFinite(n)||n<=Math.floor(Date.now()/1e3))return!1;let o=await vr(r),a=await ax(`${e}:${n}`,o);return lre(a,s)}Sa();Yt();async function Ld(r={},e){let t=(r.parent||"/").replace(/\/+/g,"/")||"/",i=String(r.keywords||"").trim().toLowerCase(),n=r.scope??0,s=Math.max(1,r.page||1),o=Math.max(1,Math.min(100,r.per_page||30)),a=Math.min(20,Math.max(0,r.max_depth??10)),c=Math.min(2e3,Math.max(1,r.max_results??500)),l=[];async function d(g,p){if(p>a||l.length>=c)return;let I=[];try{I=(await Zt(g)).content||[]}catch{return}for(let y of I){if(l.length>=c)break;let w=!i||y.name.toLowerCase().includes(i),C=!!y.is_dir,b=C&&!y.sign,x=!0;if(n===1&&!C&&(x=!1),n===2&&C&&(x=!1),!b&&w&&x&&l.push({...y,parent:g.endsWith("/")&&g!=="/"?g.slice(0,-1):g}),C){let _=g==="/"?`/${y.name}`:`${g}/${y.name}`;await d(_,p+1)}}}await d(t,0);let u=l.length,f=(s-1)*o;return{content:l.slice(f,f+o),total:u}}function MI(r){let e=new DataView(r),t=r.byteLength,i=-1,n=Math.max(0,t-22-65557);for(let l=t-22;l>=n;l--)if(e.getUint32(l,!0)===101010256){i=l;break}if(i===-1)throw new Error("Invalid ZIP: End of Central Directory not found");let s=e.getUint16(i+10,!0),o=e.getUint32(i+16,!0),a=[],c=o;for(let l=0;l<s&&e.getUint32(c,!0)===33639248;l++){let d=e.getUint16(c+10,!0),u=e.getUint32(c+20,!0),f=e.getUint32(c+24,!0),h=e.getUint16(c+28,!0),g=e.getUint16(c+30,!0),p=e.getUint16(c+32,!0),I=e.getUint32(c+42,!0),y=e.getUint16(c+12,!0),w=e.getUint16(c+14,!0),C=Are(w,y),b=new Uint8Array(r,c+46,h),x=new TextDecoder("utf-8").decode(b);if(c+=46+h+g+p,x.endsWith("/")||e.getUint32(I,!0)!==67324752)continue;let _=e.getUint16(I+26,!0),R=e.getUint16(I+28,!0),U=I+30+_+R;a.push({name:x.replace(/\\/g,"/"),isDir:!1,size:f,compressedSize:u,compressionMethod:d,dataOffset:U,modified:C})}return{entries:a}}async function RR(r,e){let t=new Uint8Array(r,e.dataOffset,e.compressedSize);if(e.compressionMethod===0)return new Uint8Array(t);if(e.compressionMethod===8){if(typeof DecompressionStream>"u")throw new Error("DecompressionStream is not supported in this runtime");let i=new DecompressionStream("deflate-raw"),n=i.writable.getWriter();n.write(t),n.close();let s=await new Response(i.readable).arrayBuffer();return new Uint8Array(s)}throw new Error(`Unsupported ZIP compression method: ${e.compressionMethod}`)}function Are(r,e){let t=1980+(r>>9&127),i=r>>5&15,n=r&31,s=e>>11&31,o=e>>5&63,a=(e&31)*2,c=l=>String(l).padStart(2,"0");return`${t}-${c(i)}-${c(n)}T${c(s)}:${c(o)}:${c(a)}Z`}oc();Di();oc();Sa();Ve();Yt();var xA=Dr(hm(),1);var LI="openlist-sharing-seed";var hre={md5:32,sha1:40,sha256:64};function mr(r){return typeof r=="string"?r:""}var gre=64,pre=4096;function NR(r){let e=mr(r).trim();if(e.length>pre)throw new Error("Seed file path exceeds the maximum length");let t=e.split("/");if(t.length>gre)throw new Error("Seed file path exceeds the maximum depth");if(e.includes("\0")||e.includes("\\")||e.startsWith("/")||t.length===0||t.some(i=>!i||i==="."||i===".."))throw new Error("Seed file path must be a safe relative path");return t.join("/")}function wA(r,e){let t=mr(r).toLowerCase();if(t&&!new RegExp(`^[0-9a-f]{${hre[e]}}$`).test(t))throw new Error(`Invalid ${e} hash`);return t}function mre(r){return Array.isArray(r)?r.map(e=>{if(!e||typeof e!="object")throw new Error("Invalid seed source");let t=mr(e.type),i=mr(e.url);if(!t||!i)throw new Error("Seed source type and URL are required");try{if(!new URL(i).protocol)throw new Error("missing scheme")}catch{throw new Error("Seed source URL must be absolute")}return{type:t,url:i,expires_at:mr(e.expires_at),share_id:mr(e.share_id)}}):[]}function Hi(r){if(!r||typeof r!="object")throw new Error("Invalid seed payload");let e=r;if(e.format!==void 0&&e.format!==LI)throw new Error("Unsupported seed format");if(e.version!==void 0&&Number(e.version)!==1)throw new Error("Unsupported seed version");let t=Number(e.piece_size||10485760);if(!Number.isSafeInteger(t)||t<16*1024||t>64*1024*1024)throw new Error("Invalid piece_size");if(!Array.isArray(e.files)||e.files.length===0||e.files.length>1e5)throw new Error("Seed file count must be between 1 and 100000");let i=e.files.map(o=>{if(!o||typeof o!="object")throw new Error("Invalid seed file");let a=Number(o.size);if(!Number.isSafeInteger(a)||a<0)throw new Error("Invalid seed file size");let c=o.hashes||{},l=c.pieces||{},d=a>0?Math.ceil(a/t):0,u=f=>{if(!Array.isArray(l[f]))return[];let h=l[f].map(g=>wA(g,f));if(h.length!==0&&h.length!==d)throw new Error(`${f} piece count is ${h.length}, expected ${d}`);return h};return{path:NR(o.path),size:a,modified:mr(o.modified),comment:mr(o.comment),hashes:{md5:wA(c.md5,"md5"),sha1:wA(c.sha1,"sha1"),sha256:wA(c.sha256,"sha256"),pieces:{md5:u("md5"),sha1:u("sha1"),sha256:u("sha256")}},sources:mre(o.sources),cas_slice_md5:wA(o.cas_slice_md5,"md5"),cas_create_time:mr(o.cas_create_time),cas_cloud:mr(o.cas_cloud).trim(),missing_channels:Array.isArray(o.missing_channels)?o.missing_channels.map(mr).filter(Boolean):[]}}),n=new Set;for(let o of i){if(n.has(o.path))throw new Error(`Duplicate seed file path: ${o.path}`);n.add(o.path)}let s=mr(e.name)||i[0].path.split("/")[0];if(!s.trim()||s==="."||s===".."||/[\\/\0]/.test(s))throw new Error("Invalid seed name");return{format:LI,version:1,name:s,comment:mr(e.comment),created_at:mr(e.created_at)||new Date().toISOString(),created_by:mr(e.created_by)||"OpenList",piece_size:t,trackers:Array.isArray(e.trackers)?e.trackers.map(mr).filter(Boolean):[],channels:Array.isArray(e.channels)?e.channels.map(o=>{if(!o||typeof o!="object"||!mr(o.driver).trim())throw new Error("Seed channel driver is required");let a=mr(o.mount_path);if(/[?#\0]/.test(a))throw new Error("Seed channel mount_path contains invalid characters");return{driver:mr(o.driver).trim(),mount_path:a}}):[],files:i}}function HI(r,e){let t=r&&typeof r=="object"?r:{},i=o=>({whole:!!t[o]?.whole,pieces:!!t[o]?.pieces}),n={md5:i("md5"),sha1:i("sha1"),sha256:i("sha256")};!n.md5.whole&&!n.md5.pieces&&!n.sha1.whole&&!n.sha1.pieces&&!n.sha256.whole&&!n.sha256.pieces&&(n={md5:{whole:!0,pieces:!0},sha1:{whole:!0,pieces:!0},sha256:{whole:!0,pieces:!0}});for(let o of e)o==="torrent"&&(n.sha1={whole:!0,pieces:!0}),o==="cas"&&(n.md5={whole:!0,pieces:!0});return n}function e2(r,e){let t={md5:e.md5.whole?r.hashes.md5:"",sha1:e.sha1.whole?r.hashes.sha1:"",sha256:e.sha256.whole?r.hashes.sha256:"",pieces:{md5:e.md5.pieces?r.hashes.pieces.md5:[],sha1:e.sha1.pieces?r.hashes.pieces.sha1:[],sha256:e.sha256.pieces?r.hashes.pieces.sha256:[]}};return{...r,hashes:t}}function qR(r){return NR(r)}var Fn=new TextEncoder,Fa=new TextDecoder("utf-8",{fatal:!0}),Ire=32,wre=1e5;function KI(r){let e=r.reduce((n,s)=>n+s.byteLength,0),t=new Uint8Array(e),i=0;for(let n of r)t.set(n,i),i+=n.byteLength;return t}function Hd(r){if(r instanceof Uint8Array)return KI([Fn.encode(`${r.byteLength}:`),r]);if(typeof r=="string")return Hd(Fn.encode(r));if(typeof r=="number"){if(!Number.isSafeInteger(r))throw new Error("Bencode integer is out of range");return Fn.encode(`i${r}e`)}if(Array.isArray(r))return KI([Fn.encode("l"),...r.map(Hd),Fn.encode("e")]);let e=Object.entries(r).sort(([t],[i])=>{let n=Fn.encode(t),s=Fn.encode(i),o=Math.min(n.length,s.length);for(let a=0;a<o;a++)if(n[a]!==s[a])return n[a]-s[a];return n.length-s.length});return KI([Fn.encode("d"),...e.flatMap(([t,i])=>[Hd(t),Hd(i)]),Fn.encode("e")])}function xre(r){let e=0,t=0,i=s=>{if(++t>wre)throw new Error("Bencode item limit exceeded");if(s>Ire)throw new Error("Bencode nesting limit exceeded");let o=r[e];if(o===105){let a=r.indexOf(101,++e);if(a<0)throw new Error("Unterminated bencode integer");let c=Fa.decode(r.subarray(e,a));if(!/^(0|-?[1-9]\d*)$/.test(c))throw new Error("Invalid bencode integer");let l=Number(c);if(!Number.isSafeInteger(l))throw new Error("Bencode integer is out of range");return e=a+1,l}if(o===108){e++;let a=[];for(;e<r.length&&r[e]!==101;)a.push(i(s+1));if(r[e++]!==101)throw new Error("Unterminated bencode list");return a}if(o===100){e++;let a={};for(;e<r.length&&r[e]!==101;){let c=i(s+1);if(!(c instanceof Uint8Array))throw new Error("Bencode dictionary key is not a string");let l=Fa.decode(c);a[l]=i(s+1)}if(r[e++]!==101)throw new Error("Unterminated bencode dictionary");return a}if(o>=48&&o<=57){let a=r.indexOf(58,e);if(a<0)throw new Error("Invalid bencode byte string");let c=Fa.decode(r.subarray(e,a));if(!/^(0|[1-9]\d*)$/.test(c))throw new Error("Invalid bencode byte string length");let l=Number(c),d=a+1,u=d+l;if(!Number.isSafeInteger(l)||u>r.length)throw new Error("Truncated bencode byte string");return e=u,r.slice(d,u)}throw new Error("Invalid bencode value")},n=i(0);if(e!==r.length)throw new Error("Trailing bencode data");return n}function Kd(r,e){if(!r||typeof r!="object"||Array.isArray(r)||r instanceof Uint8Array)throw new Error(`${e} must be a dictionary`);return r}function Cre(r){return r instanceof Uint8Array?r:new Uint8Array}function ln(r){return r instanceof Uint8Array?Fa.decode(r):typeof r=="string"?r:""}function _a(r){return typeof r=="number"?r:0}function Ere(r){return Array.isArray(r)?r.map(e=>ln(e)).filter(Boolean):[]}function t2(r){return r==null?"":typeof r=="string"||typeof r=="number"||r instanceof Uint8Array?r:typeof r=="boolean"?r?1:0:Array.isArray(r)?r.map(t2):typeof r=="object"?Object.fromEntries(Object.entries(r).map(([e,t])=>[e,t2(t)])):String(r)}function r2(r){return r instanceof Uint8Array?Fa.decode(r):Array.isArray(r)?r.map(r2):r&&typeof r=="object"?Object.fromEntries(Object.entries(r).map(([e,t])=>[e,r2(t)])):r}function Bre(r){if(!r||r.length%2!==0||!/^[0-9a-f]+$/i.test(r))return new Uint8Array;let e=new Uint8Array(r.length/2);for(let t=0;t<e.length;t++)e[t]=parseInt(r.slice(t*2,t*2+2),16);return e}function bre(r){return Array.from(r,e=>e.toString(16).padStart(2,"0")).join("")}function vre(r){if(r.files.length>1){for(let e of r.files.slice(0,-1))if(e.size%r.piece_size!==0)throw new Error("Cannot convert this multi-file seed to a standard torrent: a file boundary splits a piece")}return r.files.flatMap(e=>e.hashes.pieces.sha1)}async function kre(r,e){if(!r.hashes.md5)return;let t=r.cas_slice_md5?r.cas_slice_md5.toUpperCase():"",i=r.hashes.pieces.md5.map(n=>n.toUpperCase());if(!t&&i.length>0&&e===10485760&&(t=i.length>1?(await(0,xA.md5)(i.join(` -`))).toUpperCase():i[0]),!!t)return{cloud:r.cas_cloud||"189",file_md5:r.hashes.md5.toUpperCase(),slice_md5:t,slice_md5s:i,slice_size:e}}function Sre(r){return Fn.encode(JSON.stringify(Hi(r),null,2))}function i2(r){let e=JSON.parse(Fa.decode(r));if(e?.format!==LI||Number(e?.version)!==1||!e?.created_at||!e?.created_by)throw new Error("Invalid or incomplete OpenList sharing seed");return Hi(e)}async function OR(r,e){if(!r.hashes.md5)throw new Error(`CAS requires a whole-file MD5 for ${r.path}`);let t=r.cas_slice_md5?r.cas_slice_md5.toUpperCase():"";if(!t&&r.hashes.pieces.md5.length>0&&e===10485760){let n=r.hashes.pieces.md5.map(s=>s.toUpperCase());t=n.length>1?(await(0,xA.md5)(n.join(` -`))).toUpperCase():n[0]}if(!t){if(r.size>10485760)throw new Error(`CAS requires a legacy slice MD5 or complete 10 MiB MD5 pieces for ${r.path}`);t=r.hashes.md5.toUpperCase()}let i={name:r.path.split("/").pop()||r.path,size:r.size,md5:r.hashes.md5,sliceMd5:t,create_time:r.cas_create_time||String(Math.floor(Date.now()/1e3)),cloud:r.cas_cloud||"189"};return r.hashes.pieces.md5.length>0&&(i.slice_md5s=r.hashes.pieces.md5.map(n=>n.toUpperCase()),i.slice_size=e||10485760),i}async function Dre(r){let e=Hi(r);if(e.files.length===0)throw new Error("CAS requires at least one file");let t;if(e.files.length===1){let i=await OR(e.files[0],e.piece_size);t={name:i.name,size:i.size,md5:i.md5,sliceMd5:i.sliceMd5,create_time:i.create_time,slice_md5s:i.slice_md5s,slice_size:i.slice_size,cloud:i.cloud}}else{let i=[],n=0;for(let s of e.files){let o=await OR(s,e.piece_size);i.push(o),n+=o.size}t={name:e.name,size:n,md5:"",sliceMd5:"",create_time:"",files:i}}return Fn.encode(Buffer.from(JSON.stringify(t)).toString("base64"))}function MR(r){let e=Fa.decode(r).trim(),t=e;try{t=Buffer.from(e,"base64").toString("utf8"),JSON.parse(t)}catch{t=e}let i=JSON.parse(t),n=l=>{if(!l.name||!Number.isSafeInteger(l.size)||Number(l.size)<0||!l.md5)throw new Error("Invalid CAS file entry");let d=String(l.md5).toLowerCase(),u=String(l.sliceMd5||l.md5).toLowerCase();if(!/^[0-9a-f]{32}$/i.test(d)||!/^[0-9a-f]{32}$/i.test(u))throw new Error("Invalid CAS hash");let f=Array.isArray(l.slice_md5s)?l.slice_md5s.map(h=>String(h).toLowerCase()):[];return{path:l.name,size:Number(l.size),modified:"",comment:"",hashes:{md5:d,sha1:"",sha256:"",pieces:{md5:f,sha1:[],sha256:[]}},sources:[],cas_slice_md5:u,cas_create_time:l.create_time||"",cas_cloud:String(l.cloud||""),missing_channels:[]}};if(Array.isArray(i.files)&&i.files.length>0){let l=i.files.map(n);return{format:"cas",cas:{name:String(i.name),size:l.reduce((u,f)=>u+f.size,0),md5:"",sliceMd5:"",create_time:"",cloud:String(i.cloud||""),files:i.files},seed:Hi({name:i.name,comment:"Imported from OpenList CAS metadata",created_at:new Date().toISOString(),created_by:"OpenList",piece_size:10485760,files:l})}}if(!i.name||!Number.isSafeInteger(i.size)||Number(i.size)<0||!i.md5)throw new Error("Invalid CAS payload");let s=String(i.md5).toLowerCase(),o=String(i.sliceMd5||i.md5);if(!/^[0-9a-f]{32}$/i.test(s)||!/^[0-9a-f]{32}$/i.test(o))throw new Error("Invalid CAS hash");let a=Number(i.create_time);return{format:"cas",cas:{name:String(i.name),size:Number(i.size),md5:s,sliceMd5:o,create_time:String(i.create_time||""),slice_md5s:i.slice_md5s,slice_size:i.slice_size,cloud:String(i.cloud||"")},seed:Hi({name:i.name,comment:"Imported from OpenList CAS metadata",created_at:Number.isFinite(a)&&a>0?new Date(a*1e3).toISOString():new Date().toISOString(),created_by:"OpenList",piece_size:i.slice_size||10485760,files:[n({name:i.name,size:Number(i.size),md5:s,sliceMd5:o,create_time:String(i.create_time||""),slice_md5s:i.slice_md5s,slice_size:i.slice_size})]})}}async function n2(r,e){let t=Hi(r),i=e||vre(t);if(i.some(o=>o.length!==40))throw new Error("Torrent conversion requires SHA-1 piece hashes");let n={name:t.name,"piece length":t.piece_size,pieces:KI(i.map(Bre))};t.files.length===1?(n.length=t.files[0].size,t.files[0].hashes.md5&&(n.md5sum=t.files[0].hashes.md5)):n.files=t.files.map(o=>{let a={length:o.size,path:o.path.split("/")};return o.hashes.md5&&(a.md5sum=o.hashes.md5),a});let s={info:n,comment:t.comment,"created by":t.created_by,"creation date":Math.floor(new Date(t.created_at).getTime()/1e3)||Math.floor(Date.now()/1e3),"x-openlist":t2(t)};if(t.trackers.length&&(s.announce=t.trackers[0],s["announce-list"]=t.trackers.map(o=>[o])),t.files.length===1){let o=await kre(t.files[0],t.piece_size);o&&(s["x-cas"]=o)}return Hd(s)}function Qre(r,e,t,i,n){let s=Array.isArray(r.files)?r.files:null,o=s?s.map(c=>{let l=Kd(c,"torrent file");return{path:(Array.isArray(l.path)?l.path.map(ln):[]).join("/"),size:_a(l.length),md5:ln(l.md5sum)}}):[{path:e,size:_a(r.length),md5:ln(r.md5sum)}],a=0;return o.map((c,l)=>{let d=c.size>0?Math.ceil(c.size/i):0,f=(l===o.length-1||c.size%i===0)&&a+d<=t.length?t.slice(a,a+d):[];a+=d;let h=o.length===1&&n?ln(n.slice_md5):"",g=o.length===1&&n?ln(n.create_time):"",p=o.length===1&&n?ln(n.cloud):"";return{path:c.path,size:c.size,modified:"",comment:"",hashes:{md5:c.md5.toLowerCase(),sha1:"",sha256:"",pieces:{md5:[],sha1:f,sha256:[]}},sources:[],cas_slice_md5:h.toLowerCase(),cas_create_time:g,cas_cloud:p,missing_channels:[]}})}async function LR(r){let e=Kd(xre(r),"torrent root"),t=Kd(e.info,"torrent info"),i=await(0,xA.sha1)(Hd(t)),n=ln(t.name),s=_a(t["piece length"]),o=Cre(t.pieces);if(!n||s<=0||o.length%20!==0)throw new Error("Invalid torrent info dictionary");let a=Array.isArray(t.files)?t.files.reduce((g,p)=>g+_a(Kd(p,"torrent file").length),0):_a(t.length),c=a>0?Math.ceil(a/s):0;if(o.length/20!==c)throw new Error("Torrent piece count mismatch");if(e["x-openlist"]){let g=Hi(r2(e["x-openlist"]));return _re(g,t,n,s),{format:"torrent",seed:g,info_hash:i}}let l=[];for(let g=0;g<o.length;g+=20)l.push(bre(o.subarray(g,g+20)));let d=[ln(e.announce),...Array.isArray(e["announce-list"])?e["announce-list"].flatMap(g=>Ere(g)):[]].filter((g,p,I)=>g&&I.indexOf(g)===p),u=_a(e["creation date"]),f=e["x-cas"]?Kd(e["x-cas"],"x-cas"):void 0;return{format:"torrent",seed:Hi({name:n,comment:ln(e.comment),created_at:u>0?new Date(u*1e3).toISOString():new Date().toISOString(),created_by:ln(e["created by"])||"OpenList",piece_size:s,trackers:d,channels:[],files:Qre(t,n,l,s,f)}),info_hash:i}}function _re(r,e,t,i){if(r.name!==t||r.piece_size!==i)throw new Error("x-openlist metadata conflicts with torrent info");let n=Array.isArray(e.files)?e.files:null;if(!n){if(r.files.length!==1||r.files[0].size!==_a(e.length))throw new Error("x-openlist file list conflicts with torrent info");return}if(r.files.length!==n.length)throw new Error("x-openlist file count conflicts with torrent info");n.forEach((s,o)=>{let a=Kd(s,"torrent file"),c=(Array.isArray(a.path)?a.path.map(ln):[]).join("/");if(r.files[o].path!==c||r.files[o].size!==_a(a.length))throw new Error(`x-openlist file ${o} conflicts with torrent info`)})}async function KR(r,e){if(e==="oss")return{format:"oss",seed:i2(r)};if(e==="torrent")return LR(r);if(e==="cas")return MR(r);let t=Fa.decode(r.subarray(0,Math.min(r.length,32))).trimStart()[0];return t==="{"?{format:"oss",seed:i2(r)}:t==="d"?LR(r):MR(r)}async function CA(r,e){return e==="oss"?Sre(r):e==="torrent"?n2(r):Dre(r)}var Pa=Dr(hm(),1);async function GR(){let[r,e,t]=await Promise.all([(0,Pa.createMD5)(),(0,Pa.createSHA1)(),(0,Pa.createSHA256)()]);return{md5:r.init(),sha1:e.init(),sha256:t.init()}}function zR(r,e){r.md5.update(e),r.sha1.update(e),r.sha256.update(e)}function s2(r){return{md5:r.md5.digest("hex").toLowerCase(),sha1:r.sha1.digest("hex").toLowerCase(),sha256:r.sha256.digest("hex").toLowerCase()}}function Fre(r){r.md5.init(),r.sha1.init(),r.sha256.init()}var EA=class r{constructor(e,t){this.pieceSize=t;this.hasher=e.init()}pieceSize;hasher;written=0;hashes=[];static async create(e){return new r(await(0,Pa.createSHA1)(),e)}update(e){let t=0;for(;t<e.length;){let i=Math.min(this.pieceSize-this.written,e.length-t);this.hasher.update(e.subarray(t,t+i)),this.written+=i,t+=i,this.written===this.pieceSize&&this.finishPiece()}}digest(){return this.written>0&&this.finishPiece(),[...this.hashes]}finishPiece(){this.hashes.push(this.hasher.digest("hex").toLowerCase()),this.hasher.init(),this.written=0}};async function o2(r,e,t,i,n){if(!Number.isSafeInteger(t)||t<0||t>i)throw new Error(`File exceeds the hashing limit of ${i} bytes`);let s=await GR(),o=await GR(),a={md5:[],sha1:[],sha256:[]},c=r.getReader(),l=0,d=0;try{for(;;){let{done:u,value:f}=await c.read();if(u)break;if(!f?.length)continue;if(l+f.length>i||l+f.length>t)throw new Error("Downloaded file size exceeds the declared or configured limit");l+=f.length,n?.update(f),zR(s,f);let h=0;for(;h<f.length;){let g=Math.min(e-d,f.length-h);if(zR(o,f.subarray(h,h+g)),d+=g,h+=g,d===e){let p=s2(o);a.md5.push(p.md5),a.sha1.push(p.sha1),a.sha256.push(p.sha256),Fre(o),d=0}}}}finally{c.releaseLock()}if(l!==t)throw new Error(`Downloaded file size mismatch: expected ${t}, received ${l}`);if(d>0){let u=s2(o);a.md5.push(u.md5),a.sha1.push(u.sha1),a.sha256.push(u.sha256)}return{size:l,hashes:{...s2(s),pieces:a}}}var hs=new Xe,GI=10*1024*1024,l2=512*1024*1024,JR=1e3,Pre=8*1024*1024,jR=4*1024*1024;function un(r,e,t){let i=r.env?.[e]??(typeof process<"u"?process.env?.[e]:void 0),n=Number(i);return Number.isSafeInteger(n)&&n>0?n:t}function BA(r){try{return typeof r.executionCtx?.waitUntil!="function"?void 0:{waitUntil:e=>r.executionCtx.waitUntil(e)}}catch{return}}function Nr(r,e,t){return r.json({code:e,message:t,data:null},e)}async function zd(r){let e=un(r,"SEED_MAX_METADATA_SIZE",GI);if(Number(r.req.header("Content-Length")||0)>e)throw new Error(`Seed request exceeds the ${e} byte limit`);let i=await r.req.text();if(new TextEncoder().encode(i).byteLength>e)throw new Error(`Seed request exceeds the ${e} byte limit`);return i.trim()?JSON.parse(i):{}}function go(r,e="/"){let t=String(r||e).replace(/\\/g,"/").trim();if(t.includes("\0"))throw new Error("Path contains an illegal null byte");let i=t.split("/").filter(Boolean);if(i.some(n=>n==="."||n===".."))throw new Error("Path traversal is not allowed");return"/"+i.join("/")}function d2(r,e){return go(`${r.replace(/\/+$/,"")}/${e}`)}function $R(r,e){if(!pt(r))throw new Error("Permission denied");let t=go(e);if(t==="/@s"||t.startsWith("/@s/"))throw new Error("Writing through a share path is not allowed");let i=We(r,t),n=go(r?.base_path||"/");if(n!=="/"&&i!==n&&!i.startsWith(`${n}/`))throw new Error("Target path is outside the user base path");return i}function Tre(r,e){if(r instanceof Uint8Array)return r;if(Array.isArray(r)&&r.every(t=>Number.isInteger(t)&&t>=0&&t<=255))return Uint8Array.from(r);if(typeof r!="string")throw new Error("Seed content is required");return e==="text"||r.trimStart().startsWith("{")||r.trimStart().startsWith("d")?new TextEncoder().encode(r):new Uint8Array(Buffer.from(r,"base64"))}function zI(r){let e=String(r||"").toLowerCase().replace(/^\./,"");return e==="oss"||e==="torrent"||e==="cas"?e:void 0}function VR(r,e){return`${r.name.replace(/[\\/:*?"<>|\0]/g,"_")||"seed"}.${e==="torrent"?"torrent":e}`}function a2(r){let e=r.split("/").pop()||r,t=e.lastIndexOf(".");return t>0?e.slice(0,t):e}function Ure(r){if(r.length===0)return"OpenList Seed";if(r.length===1)return a2(r[0].virtualPath);let e=a2(r[0].virtualPath);if(r.every(o=>a2(o.virtualPath)===e)&&e)return e;let n=r[0].virtualPath.split("/").slice(0,-1);for(let o of r.slice(1)){let a=o.virtualPath.split("/").slice(0,-1),c=0;for(;c<n.length&&c<a.length&&n[c]===a[c];)c++;n=n.slice(0,c)}return n[n.length-1]||"OpenList Seed"}function u2(r,e,t,i={}){let n=Buffer.from(t).toString("base64");return{format:e,file_name:VR(r,e),seed_data:n,size:t.byteLength,seed:r,...i}}function YR(r){let e=r.env?.ALLOW_SEED??(typeof process<"u"?process.env?.ALLOW_SEED:"");return String(e||"").split(/[\s,;]+/).map(t=>t.toLowerCase()).filter(Boolean)}function WR(r,e){let t=r.toLowerCase();return e.some(i=>i.startsWith("*.")?t.endsWith(i.slice(1))&&t!==i.slice(2):t===i)}function c2(r,e){if(!e.url)throw new Error("Seed source URL is required");let t=new URL(r.req.url),i=new URL(e.url,t.origin);if(Gr(i.toString(),"Seed source"),i.username||i.password)throw new Error("Seed source URL credentials are not allowed");let n=e.type.toLowerCase(),s=i.origin===t.origin&&(/^\/(api\/)?p\//.test(i.pathname)||i.pathname.startsWith("/d/")||i.pathname.startsWith("/@s/")),o=["share","openlist-share"].includes(n)&&i.pathname.startsWith("/@s/"),a=["direct","openlist-direct"].includes(n)&&s;if(!o&&!a&&!WR(i.hostname,YR(r)))throw new Error("Seed source host is not an approved OpenList endpoint or configured domain");if(e.expires_at){let c=Date.parse(e.expires_at);if(!Number.isFinite(c)||c<=Date.now())throw new Error("Seed source has expired")}return i}async function JI(r,e,t={},i=!1){let n=e;for(let s=0;s<=3;s++){if(Gr(n.toString(),"Seed fetch"),i){let c=new URL(r.req.url);if(!(n.origin===c.origin&&(/^\/(api\/)?p\//.test(n.pathname)||n.pathname.startsWith("/@s/")))&&!WR(n.hostname,YR(r)))throw new Error("Seed fetch redirect left the approved source allowlist")}let o=await fetch(n,{...t,redirect:"manual"});if(o.status<300||o.status>=400)return o;let a=o.headers.get("Location");if(!a)throw new Error("Seed fetch redirect is missing a Location header");n=new URL(a,n)}throw new Error("Seed fetch exceeded the redirect limit")}async function Rre(r,e,t){let i=We(e,go(t)),{item:n}=await Si(i,BA(r)),s=un(r,"SEED_MAX_METADATA_SIZE",GI);if(n.is_dir||n.size<0||n.size>s)throw new Error(`Seed file exceeds the ${s} byte limit`);let o=n.raw_url||`${new URL(r.req.url).origin}/api/p${i}`,a=n.raw_url_headers||{};!n.raw_url&&r.req.header("Authorization")&&(a.Authorization=r.req.header("Authorization"));let c=await JI(r,new URL(o,r.req.url),{headers:a});if(!c.ok)throw new Error(`Seed file download failed with HTTP ${c.status}`);if(Number(c.headers.get("Content-Length")||n.size)>s)throw new Error(`Seed file exceeds the ${s} byte limit`);let d=c.body?.getReader();if(!d)throw new Error("Seed file response has no body");let u=[],f=0;for(;;){let{done:p,value:I}=await d.read();if(p)break;if(I?.length){if(f+=I.length,f>s)throw new Error(`Seed file exceeds the ${s} byte limit`);u.push(I)}}let h=new Uint8Array(f),g=0;for(let p of u)h.set(p,g),g+=p.length;return h}async function bA(r,e,t){if(t.seed&&typeof t.seed=="object")return{format:"oss",seed:Hi(t.seed)};let i=un(r,"SEED_MAX_METADATA_SIZE",GI),n=t.seed_data||t.content||t.data||t.torrent_data,s=t.seed_path||t.path&&!n?await Rre(r,e,String(t.seed_path||t.path)):Tre(t.seed_data??t.content??t.data??t.torrent_data,t.encoding);if(s.byteLength>i)throw new Error(`Seed content exceeds the ${i} byte limit`);return KR(s,zI(t.format||t.from_format||t.file_name?.split(".").pop()))}async function f2(r,e,t){let i=Array.isArray(t)?t:[t];if(!i.length||i.some(a=>typeof a!="string"||!a.trim()))throw new Error("paths must contain at least one path");let n=un(r,"SEED_MAX_FILES",JR),s=[],o=async(a,c)=>{if(s.length>=n)throw new Error(`Seed file count exceeds the ${n} file limit`);let l=We(e,a),{item:d}=await Si(l,BA(r));if(!d.is_dir){let f=d.raw_url||`${new URL(r.req.url).origin}/api/p${l}`,h={...d.raw_url_headers||{}};!d.raw_url&&r.req.header("Authorization")&&(h.Authorization=r.req.header("Authorization")),s.push({virtualPath:l,relativePath:qR(c),size:d.size,modified:d.modified||"",rawUrl:f,headers:h,hashes:d.hashes??(d.hash?{md5:d.hash}:{})});return}let{content:u}=await Zt(l,BA(r));for(let f of u){let h=d2(a,f.name),g=`${c.replace(/\/$/,"")}/${f.name}`;await o(h,g)}};for(let a of i){let c=go(a),l=c.split("/").filter(Boolean).pop()||"root";await o(c,l)}if(!s.length)throw new Error("No files were found for seed generation");return s}function Gd(r,e){if(e==="cas"){let t=[];for(let i of r.files){i.hashes.md5||t.push(`${i.path}: missing whole-file MD5`);let n=!!i.cas_slice_md5,s=r.piece_size===10485760&&i.hashes.pieces.md5.length>0;i.size>10485760&&!n&&!s&&t.push(`${i.path}: missing legacy slice MD5 or complete 10 MiB MD5 pieces`)}return t}if(e==="torrent"){let t=[];return r.files.forEach((i,n)=>{i.hashes.pieces.sha1.length||t.push(`${i.path}: missing SHA-1 piece hashes`),r.files.length>1&&n<r.files.length-1&&i.size%r.piece_size!==0&&t.push(`${i.path}: piece boundary crosses the next file`)}),t}return[]}function Nre(r){return{oss:Gd(r,"oss"),torrent:Gd(r,"torrent"),cas:Gd(r,"cas")}}function qre(r){return Object.fromEntries(["oss","torrent","cas"].map(e=>{let t=Gd(r,e);return[e,{feasible:t.length===0,missing:t}]}))}async function A2(r,e,t,i){if(!t)return;let n=$R(e,t);await _n(n,Buffer.from(i),BA(r))}async function Ore(){try{let e=(await Kn()).seed_default_matrix;if(e){let t=JSON.parse(String(e));if(t&&typeof t=="object")return t}}catch{}}async function Mre(r){try{let e=await Kn(),t=String(e.seed_site_url||"").trim();if(t)return t.replace(/\/+$/,"")}catch{}return new URL(r.req.url).origin}async function Lre(r,e,t){let i=e&&typeof e=="object"?e:null,n=!!i?.md5||!!i?.sha1||!!i?.sha256;if(!n)try{let o=(await Kn()).seed_default_matrix;if(o){let a=JSON.parse(String(o));if(a?.md5||a?.sha1||a?.sha256)return HI(a,t)}}catch{}return HI(n?e:void 0,t)}async function Hre(r,e,t,i){let n=i.includes("cas")?10485760:Number(t.piece_size||10485760);if(!Number.isSafeInteger(n)||n<16*1024||n>64*1024*1024)throw new Error("Invalid piece_size");let s=await Lre(r,t.hash_matrix,i),o=t.file_comments&&typeof t.file_comments=="object"?t.file_comments:{},a=await f2(r,e,t.paths??t.path),c=un(r,"SEED_MAX_HASH_BYTES",l2),l=a.reduce((h,g)=>h+g.size,0);if(!Number.isSafeInteger(l)||l>c)throw new Error(`Seed input exceeds the ${c} byte hashing limit`);let d=await EA.create(n),u=await Mre(r),f=[];for(let h of a){let g=await JI(r,new URL(h.rawUrl,r.req.url),{headers:h.headers});if(!g.ok)throw new Error(`Source download failed with HTTP ${g.status}: ${h.virtualPath}`);if(!g.body)throw new Error(`Source download has no body: ${h.virtualPath}`);let p=await o2(g.body,n,h.size,c,d),I=String(o[h.relativePath]??o[h.virtualPath]??"");f.push(e2({path:h.relativePath,size:p.size,modified:h.modified,comment:I,hashes:p.hashes,cas_slice_md5:"",cas_create_time:"",cas_cloud:"",missing_channels:[],sources:t.include_direct_source===!0||t.include_sources===!0?[{type:"openlist-direct",url:`${u}/d${h.virtualPath}`,expires_at:"",share_id:""}]:[]},s))}return{torrentPieces:d.digest(),seed:Hi({name:String(t.name||Ure(a)),comment:String(t.comment||"Generated by OpenList"),created_at:new Date().toISOString(),created_by:String(t.created_by||"OpenList"),piece_size:n,trackers:Array.isArray(t.trackers)?t.trackers:[],channels:Array.isArray(t.channels)?t.channels:[],files:f})}}function h2(r,e){for(let t of e.sources)try{return{source:t,url:c2(r,t)}}catch{continue}}async function Kre(r,e,t,i,n,s=!1){let o=$R(e,i),a=o.split("/").filter(Boolean),c=a.pop();if(!c)throw new Error("Target file name is required");let l="/"+a.join("/"),d=await tt(o),u=await tt(l);if(d.isVirtual||u.isVirtual||!d.storage)throw new Error("Target storage was not found");let f=await lt(d.storage.driver,d.storage),h=f,g={size:t.size,md5:t.hashes.md5,sha1:t.hashes.sha1,sha256:t.hashes.sha256,hashes:t.hashes};try{if(typeof h.rapidUpload=="function"){let w=await h.rapidUpload(o,d.physical,g);if(w===!0||w?.reuse||w?.success)return{status:"reused",method:"rapidUpload"}}if(typeof h.putRapid=="function"){let w=await h.putRapid(o,d.physical,g);if(w===!0||w?.reuse||w?.success)return{status:"reused",method:"putRapid"}}let p;if(typeof h.createUploadSession=="function"&&(p=await h.createUploadSession(l,u.physical,c,t.size,t.hashes.md5),p?.reuse))return{status:"reused",method:"multipart-rapid"};if(s)throw new Error("capability unavailable: target driver did not reuse the available hashes");if(!n)throw new Error("capability unavailable: no rapid-upload match and no approved source URL");let I=await JI(r,n.url,{},!0);if(!I.ok||!I.body)throw new Error(`Source download failed with HTTP ${I.status}`);if(p?.session&&typeof h.uploadPart=="function"&&typeof h.completeUploadSession=="function"){let w=Math.min(un(r,"SEED_TRANSFER_CHUNK_SIZE",Pre),16777216),C=I.body.getReader(),b=new Uint8Array(0),x=1,_=0,R=[];for(;;){let{done:U,value:T}=await C.read();if(T?.length){if(_+=T.length,_>t.size)throw new Error("Source exceeds the declared file size");let D=new Uint8Array(b.length+T.length);for(D.set(b),D.set(T,b.length),b=D;b.length>=w;){let B=b.slice(0,w);b=b.slice(w);let Q=await h.uploadPart(p.session,x++,Buffer.from(B));Q?.partMd5&&R.push(Q.partMd5)}}if(U)break}if(_!==t.size)throw new Error("Source size does not match seed metadata");if(b.length||t.size===0){let U=await h.uploadPart(p.session,x,Buffer.from(b));U?.partMd5&&R.push(U.partMd5)}return await h.completeUploadSession(p.session,R),{status:"saved",method:"multipart-stream"}}if(typeof h.putStream=="function")return await h.putStream(o,d.physical,I.body,t.size,g),{status:"saved",method:"putStream"};let y=un(r,"SEED_BUFFERED_TRANSFER_MAX",jR);if(t.size<=y){let w=new Uint8Array(await I.arrayBuffer());if(w.byteLength!==t.size)throw new Error("Source size does not match seed metadata");return await f.put(o,d.physical,Buffer.from(w)),{status:"saved",method:"bounded-buffer"}}throw new Error("capability unavailable: target driver has no streaming or multipart upload API")}finally{await Jt(d.storage.driver,d.storage,f,BA(r))}}hs.get("/capabilities",async r=>{let e=await Me(r);if(!e||e.disabled)return Nr(r,401,"Unauthorized");let t,i=r.req.query("path");if(i)try{let n=We(e,go(i)),s=await tt(n);if(!s.isVirtual&&s.storage){let a=await lt(s.storage.driver,s.storage);t={driver:s.storage.driver,rapid_upload:typeof a.rapidUpload=="function"||typeof a.putRapid=="function"||typeof a.createUploadSession=="function",stream_upload:typeof a.putStream=="function"||typeof a.createUploadSession=="function"&&typeof a.uploadPart=="function"&&typeof a.completeUploadSession=="function"}}}catch(n){t={error:Ne(n)}}return r.json({code:200,message:"success",data:{formats:["oss","torrent","cas"],version:1,hash_algorithms:["md5","sha1","sha256"],incremental_hashing:!0,torrent_v1:!0,extensions:["x-openlist","x-cas"],offline_download:"conditional",queue_adapter:!1,limits:{metadata_bytes:un(r,"SEED_MAX_METADATA_SIZE",GI),hash_bytes:un(r,"SEED_MAX_HASH_BYTES",l2),files:un(r,"SEED_MAX_FILES",JR)},target:t}})});hs.post("/capabilities",async r=>{let e=await Me(r);if(!e||e.disabled)return Nr(r,401,"Unauthorized");try{let t=await zd(r);if(Array.isArray(t.paths)&&t.paths.length>0){let g=await f2(r,e,t.paths),p=await Kn(),I=String(p.seed_default_trackers||"").split(` -`).map(x=>x.trim()).filter(Boolean),y=["md5","sha1","sha256"],w=g.map(x=>{let _=y.filter(U=>!!x.hashes[U]),R=_.length<y.length;return{path:x.virtualPath,name:x.relativePath,size:x.size,available_hashes:_,requires_download:R,requires_fetch:R,estimated_traffic:R?x.size:0,streamable:!0,share_available:!0,direct_source_available:!0}}),C=new Set;for(let x of g)for(let _ of y)x.hashes[_]&&C.add(_);let b=y.filter(x=>C.has(x));return r.json({code:200,message:"success",data:{formats:{oss:!0,torrent:!0,cas:!0},files:w,existing_hashes:b,estimated_traffic:w.reduce((x,_)=>x+_.estimated_traffic,0),default_matrix:await Ore(),trackers:I}})}let i=await bA(r,e,t),n=We(e,go(t.path)),s=await tt(n);if(s.isVirtual||!s.storage)throw new Error("Target storage was not found");let a=await lt(s.storage.driver,s.storage),c=typeof a.rapidUpload=="function"||typeof a.putRapid=="function"||typeof a.createUploadSession=="function",l=Array.isArray(a.rapidHashAlgos)?a.rapidHashAlgos.map(g=>String(g).toLowerCase()).filter(g=>["md5","sha1","sha256"].includes(g)):["md5","sha1"],d=typeof a.rapidHashNeedsPieces=="boolean"?a.rapidHashNeedsPieces:!1,u=typeof a.putStream=="function"||typeof a.createUploadSession=="function"&&typeof a.uploadPart=="function"&&typeof a.completeUploadSession=="function",f=un(r,"SEED_BUFFERED_TRANSFER_MAX",jR),h=i.seed.files.map(g=>{let p=l.some(C=>!!g.hashes[C])||!1,I=d?p&&(g.hashes.pieces.md5.length>0||g.hashes.pieces.sha1.length>0):p,y=!!h2(r,g),w="download_required";return c&&I?w="rapid_upload":y&&u?w="stream_upload":y&&g.size<=f&&(w="bounded_upload"),{path:g.path,method:w,requires_download:w==="download_required"}});return r.json({code:200,message:"success",data:{driver:s.storage.driver,policy:String(t.policy||"inherit"),driver_supports:{cas_rapid:c,rapid_hash_algos:l,rapid_uses_pieces:d},files:h}})}catch(t){return Nr(r,400,Ne(t))}});hs.post("/generate",async r=>{let e=await Me(r);if(!e||e.disabled)return Nr(r,401,"Unauthorized");try{let t=await zd(r);if((t.save_path||t.output_path)&&!pt(e))return Nr(r,403,"Permission denied");let n=(Array.isArray(t.formats)?t.formats:[t.format||"oss"]).map(zI);if(n.some(d=>!d))throw new Error("A valid output format is required");let s=n,{seed:o,torrentPieces:a}=await Hre(r,e,t,s),c=t.output_path||(Array.isArray(t.formats)?t.save_path:void 0),l=[];for(let d of s){let u=Gd(o,d);if(u.length){l.push({format:d,convertible:!1,diagnostics:u});continue}let f=d==="torrent"?await n2(o,a):await CA(o,d),h=c?d2(go(c),VR(o,d)):t.save_path;await A2(r,e,h,f),l.push(u2(o,d,f,{convertible:!0,...h?{path:h}:{}}))}return r.json({code:200,message:"success",data:Array.isArray(t.formats)?{seed:o,outputs:l,artifacts:l}:l[0]})}catch(t){let i=Ne(t);return Nr(r,i.includes("limit")||i.includes("exceeds")?413:400,i)}});hs.post("/parse",async r=>{let e=await Me(r);if(!e||e.disabled)return Nr(r,401,"Unauthorized");try{let t=await zd(r),i=await bA(r,e,t),n=i.seed.files.reduce((a,c)=>a+c.size,0),s=i.seed.files.some(a=>!!h2(r,a)),o=i.seed.files.some(a=>!!a.hashes.md5||!!a.hashes.sha1||!!a.hashes.sha256);return r.json({code:200,message:"success",data:{format:i.format,seed:i.seed,files:i.seed.files,total_size:n,diagnostics:Nre(i.seed),conversions:qre(i.seed),capabilities:{rapid_upload:o,offline_download:s,transfer:s,convert:!0,edit:!0,recalculate:!0},direct_preview:!1,...i.info_hash?{info_hash:i.info_hash}:{}}})}catch(t){return Nr(r,400,Ne(t))}});hs.post("/convert",async r=>{let e=await Me(r);if(!e||e.disabled)return Nr(r,401,"Unauthorized");try{let t=await zd(r);if(t.save_path&&!pt(e))return Nr(r,403,"Permission denied");let i=zI(t.to_format||t.target_format||t.output_format);if(!i)throw new Error("A valid target format is required");let n=await bA(r,e,t),s=Gd(n.seed,i);if(s.length)return r.json({code:200,message:"success",data:{convertible:!1,diagnostics:s}});let o=await CA(n.seed,i);return await A2(r,e,t.save_path,o),r.json({code:200,message:"success",data:u2(n.seed,i,o,{convertible:!0})})}catch(t){return Nr(r,400,Ne(t))}});function Gre(r,e,t,i){if(!e)return;let n=!1;for(let s of i.values())if(s){n=!0;break}n&&!r.channels.some(s=>s.driver===e)&&r.channels.push({driver:e,mount_path:t});for(let s of r.files){if(!i.has(s.path))continue;i.get(s.path)?s.missing_channels=s.missing_channels.filter(a=>a!==e):s.missing_channels.includes(e)||s.missing_channels.push(e)}}async function XR(r,e){let t=await Me(r);if(!pt(t))return Nr(r,403,"Permission denied");if(!e&&!Qa(t,Da.OFFLINE_DOWNLOAD))return Nr(r,403,"Offline download permission is required");try{let i=await zd(r),n=await bA(r,t,i),s=go(i.target_path||i.destination||i.path||"/"),o=new Set(Array.isArray(i.files)?i.files.map(p=>String(p)):[]),a=new Set(Array.isArray(i.selected_files)?i.selected_files.map(p=>Number(p)):[]);if([...a].some(p=>!Number.isSafeInteger(p)||p<0||p>=n.seed.files.length))throw new Error("selected_files contains an invalid index");let c="",l="";try{let p=await tt(We(t,s));!p.isVirtual&&p.storage&&(c=p.storage.driver||"",l=p.storage.mount_path||"")}catch{}let d=n.seed.files.filter((p,I)=>o.size?o.has(p.path):a.size?a.has(I):!0),u=[],f=new Map,h=0;for(let p of d){let I=d2(s,p.path),y=h2(r,p);try{if(!e&&!y)throw new Error("capability unavailable: offline download requires an approved source URL");let w=await Kre(r,t,p,I,y,e);h++,f.set(p.path,!0),u.push({path:p.path,target:I,...w})}catch(w){f.set(p.path,!1),u.push({path:p.path,target:I,status:"unavailable",error:Ne(w)})}}if(h===0)return r.json({code:501,message:e?"capability unavailable: target driver cannot reuse hashes and no transferable source is available":"capability unavailable: no approved source and streaming upload combination is available",data:{results:u}},501);let g={total:u.length,saved:h,results:u};if(i.update_channel===!0&&c){Gre(n.seed,c,l,f);let p=await CA(n.seed,n.format);g.seed_data=Buffer.from(p).toString("base64"),g.seed=n.seed}return r.json({code:200,message:"success",data:g})}catch(i){return Nr(r,400,Ne(i))}}hs.post("/rapid_upload",r=>XR(r,!0));hs.post("/offline_download",r=>XR(r,!1));hs.post("/update",async r=>{let e=await Me(r);if(!e||e.disabled)return Nr(r,401,"Unauthorized");try{let t=await zd(r);if(t.save_path&&!pt(e))return Nr(r,403,"Permission denied");let i=await bA(r,e,t),n=t.patch&&typeof t.patch=="object"?t.patch:t,s=t.options&&typeof t.options=="object"?t.options:{},o=n.comment??s.comment,a=!!(n.recalculate??s.recalculate),c=Hi({...i.seed,name:n.name??i.seed.name,comment:o??i.seed.comment,trackers:n.trackers??i.seed.trackers,channels:n.channels??i.seed.channels,files:n.files??i.seed.files}),l=t.file_comments&&typeof t.file_comments=="object"?t.file_comments:{},d=t.file_sources&&typeof t.file_sources=="object"?t.file_sources:{};for(let h of c.files)if(l[h.path]!==void 0&&(h.comment=String(l[h.path])),Array.isArray(d[h.path])){for(let g of d[h.path])c2(r,g);h.sources=d[h.path]}if(a){let h=Number(t.piece_size||i.seed.piece_size||10485760);if(!Number.isSafeInteger(h)||h<16*1024||h>64*1024*1024)throw new Error("Invalid piece_size");c.piece_size=h;let g=HI(t.hash_matrix,[i.format]),p=Array.isArray(t.recalc_files)?t.recalc_files:[];if(!p.length)throw new Error("recalculate requires at least one recalc_files entry");let I=new Map;for(let C of p)typeof C?.source_path=="string"&&C.source_path.trim()&&I.set(String(C.path),C.source_path);let y=await EA.create(h),w=un(r,"SEED_MAX_HASH_BYTES",l2);for(let C of c.files){let b=I.get(C.path);if(!b)continue;let x=await f2(r,e,[b]);if(x.length!==1)throw new Error(`Recalculate path must resolve to exactly one file: ${b}`);let _=x[0],R=await JI(r,new URL(_.rawUrl,r.req.url),{headers:_.headers});if(!R.ok||!R.body)throw new Error(`Recalculate download failed with HTTP ${R.status}`);let U=await o2(R.body,h,_.size,w,y);C.hashes=e2({...C,hashes:U.hashes},g).hashes,C.size=U.size,C.cas_slice_md5="",C.cas_create_time=""}}for(let h of c.files)for(let g of h.sources)c2(r,g);let u=zI(t.output_format||t.to_format)||i.format,f=await CA(c,u);return await A2(r,e,t.save_path,f),r.json({code:200,message:"success",data:u2(c,u,f)})}catch(t){return Nr(r,400,Ne(t))}});var jI=new Map,zre=1*1024*1024,Jre=64*1024*1024,jre=10*1024*1024;function ZR(r){return!Number.isFinite(r)||r<=0?jre:Math.min(Jre,Math.max(zre,Math.floor(r)))}function $re(r){let e=Array.from(r).sort((s,o)=>s-o);if(e.length===0)return[];let t=[],i=e[0],n=e[0];for(let s=1;s<e.length;s++)e[s]===n+1?n=e[s]:(t.push([i,n]),i=n=e[s]);return t.push([i,n]),t}function Vc(r){let e=$re(r.received),t=r.received.size*r.chunk_size,i=0;for(let s=0;s<r.total_chunks&&r.received.has(s);s++)i=s+1;let n=r.total_chunks>0?Math.floor(r.received.size/r.total_chunks*100):0;return{upload_id:r.upload_id,state:r.state,attempt:r.attempt,path:r.path,size:r.size,chunk_size:r.chunk_size,total_chunks:r.total_chunks,received:e,received_bytes:t,frontier:i,storage_progress:n,error:r.error}}function $I(r){return jI.get(r)}function eN(r,e){for(let t of jI.values())if(t.path===r&&t.size===e&&(t.state==="receiving"||t.state==="failed_retriable"))return t}function vA(r){jI.set(r.upload_id,r)}function tN(r){jI.delete(r)}function rN(){return`mp_${typeof crypto<"u"&&crypto.randomUUID?crypto.randomUUID():Math.random().toString(36).slice(2)+Date.now().toString(36)}`}async function Vre(r){try{let e=await tt(r);return e?.storage?_R(e.storage):!1}catch{return!1}}var dt=new Xe;dt.route("/seed",hs);var _t=r=>{try{let e=r.executionCtx;return!e||typeof e.waitUntil!="function"?void 0:{waitUntil:t=>e.waitUntil(t),env:r.env}}catch{return}},cr=r=>r.json({code:403,message:"Permission denied",data:null},403),Yre=25*1024*1024,Wre=16*1024*1024;function Xre(r,e){let t=r.env||{},i=e?"MAX_UPPART":"MAX_UPLOAD",n=t[i]||(typeof process<"u"?process.env?.[i]:"");if(n){let s=parseInt(String(n),10);if(Number.isFinite(s)&&s>0)return s}return e?Wre:Yre}function VI(r,e=!1){let t=parseInt(r.req.header("Content-Length")||"0",10);if(!t)return null;let i=Xre(r,e);return t>i?i:null}var g2=(r,e)=>{let t=e==="wrong password",i=e||"share error";return r.json({code:t?403:400,message:i,data:null},t?403:400)};dt.post("/dirs",async r=>{let e=await r.req.json().catch(()=>({})),t=await Me(r),i=e.path||"/";if(!i.startsWith("/@s")&&(!t||t.disabled))return r.json({code:401,message:"Unauthorized",data:null},401);let s=_t(r),o=i;(!e.force_root||!As(t))&&(o=We(t,o));try{if(o.startsWith("/@s")){let l=await Ud(o,e.password||"",r.env);if(!l.ok)return g2(r,l.error);if(l.virtualList){let f=[];for(let h of l.share.files||[])try{let{item:g}=await Si(h,s);if(g.is_dir){let p=String(h).split("/").filter(Boolean);f.push({name:p[p.length-1]||h,modified:g.modified||new Date().toISOString()})}}catch{}return r.json({code:200,message:"success",data:f})}let{content:d}=await Zt(l.realPath,s),u=d.filter(f=>f.is_dir).map(f=>({name:f.name,modified:f.modified||new Date().toISOString()}));return r.json({code:200,message:"success",data:u})}let{content:a}=await Zt(o,s),c=a.filter(l=>l.is_dir).map(l=>({name:l.name,modified:l.modified||new Date().toISOString()}));return r.json({code:200,message:"success",data:c})}catch(a){return r.json({code:500,message:Ne(a),data:null})}});dt.post("/list",async r=>{let e=await r.req.json().catch(()=>({})),t=await Me(r);if(!(e.path||"/").startsWith("/@s")&&(!t||t.disabled))return r.json({code:401,message:"Unauthorized",data:null},401);let n=_t(r),s=We(t,e.path||"/"),o=parseInt(e.page,10)||1,a=parseInt(e.per_page,10)||0,c=l=>{let d=l.length;if(a<=0)return{content:l,total:d};let f=(Math.max(1,o)-1)*a,h=f+a;return{content:l.slice(f,h),total:d}};try{if(s.startsWith("/@s")){let B=await Ud(s,e.password||"",r.env);if(!B.ok)return g2(r,B.error);if(B.virtualList){let J=[];for(let G of B.share.files||[]){let K=String(G).split("/").filter(Boolean),j=K[K.length-1]||G;try{let{item:te}=await Si(G,n);J.push({name:j,size:te.size||0,is_dir:!!te.is_dir,modified:te.modified||new Date().toISOString(),sign:"",thumb:te.thumb||"",type:te.type??0})}catch{try{await Zt(G,n),J.push({name:j,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",thumb:"",type:1})}catch{J.push({name:j,size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",thumb:"",type:0})}}}let{content:z,total:L}=c(J);return r.json({code:200,message:"success",data:{content:z,total:L,readme:B.share.readme||"",header:B.share.header||"",write:!1,write_content_bypass:!1,provider:"Share"}})}let{content:Q,provider:v}=await Zt(B.realPath,n),E=Q.map(J=>({name:J.name,size:J.size,is_dir:J.is_dir,created:J.created||J.modified||new Date().toISOString(),modified:J.modified||new Date().toISOString(),sign:J.sign||"",thumb:J.thumb||"",type:J.type??0})),{content:P,total:N}=c(E);return r.json({code:200,message:"success",data:{content:P,total:N,readme:B.share.readme||"",header:B.share.header||"",write:!1,write_content_bypass:!1,provider:v}})}let l=await J1(s,r.env);if(!j1(t,l,s,e.password||""))return r.json({code:403,message:"Access denied (wrong password or not in read_users)",data:null},403);if(await Vre(s))return r.json({code:403,message:"Index is disabled for this storage",data:null},403);let{content:d,provider:u,storage:f}=await Zt(s,n),h=pt(t)&&$1(t,l,s),g=V1(l,s),p=await Md(r),I=await OI(r,s),y=p.enabled||I,w=y?p.expiresIn||await yA(r):0,C=await Promise.all(d.filter(B=>!vR(l,s,B.name)).map(async B=>{let Q=`${s}/${B.name}`.replace(/\/{2,}/g,"/"),v=!B.is_dir&&y?await IA(r,Q,w):"",E=B.hashinfo||B.hash_info_str||"",P=B.hash_info||{};return{name:B.name,size:B.size,is_dir:B.is_dir,created:B.created||B.modified||new Date().toISOString(),modified:B.modified||new Date().toISOString(),sign:v,thumb:B.thumb||"",type:B.type??0,hashinfo:E,hash_info:P}})),b=0;if(f&&(b=parseInt(f.page_size,10)||0,!b&&f.addition))try{let B=typeof f.addition=="string"?JSON.parse(f.addition):f.addition;b=parseInt(B?.page_size,10)||0}catch{}let x=a>0?a:b>0?b:0,_=B=>{let Q=B.length;if(x<=0)return{content:B,total:Q};let E=(Math.max(1,o)-1)*x,P=E+x;return{content:B.slice(E,P),total:Q}},R=(()=>{if(!f)return[];let B=[],Q=f;if(/^(s3|minio|cos|oss|r2|b2|cloudflare_r2)/i.test(Q.driver||"")&&B.push("s3_presigned"),Array.isArray(Q.direct_upload_tools))for(let v of Q.direct_upload_tools)B.includes(v)||B.push(v);return B})(),{content:U,total:T}=_(C),D=f?FR(f,s):void 0;return r.json({code:200,message:"success",data:{content:U,total:T,readme:Y1(l,s),header:W1(l,s),write:h,write_content_bypass:g,provider:u,direct_upload_tools:R,page_size:x>0?x:void 0,cache_expiration:D}})}catch(l){return r.json({code:500,message:Ne(l),data:null})}});dt.post("/get",async r=>{let e=await r.req.json().catch(()=>({})),t=await Me(r);if(!(e.path||"/").startsWith("/@s")&&(!t||t.disabled))return r.json({code:401,message:"Unauthorized",data:null},401);let n=_t(r),s=We(t,e.path||"/");try{if(s.startsWith("/@s")){let I=await Ud(s,e.password||"",r.env);if(!I.ok)return g2(r,I.error);if(I.virtualList){let x=s.split("/").filter(Boolean)[1]||"share";return r.json({code:200,message:"success",data:{name:x,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",thumb:"",type:1,raw_url:"",readme:I.share.readme||"",header:I.share.header||"",provider:"Share",related:[],write:!1,write_content_bypass:!1}})}let y=s.split("/").filter(Boolean)[1]||"",{item:w,provider:C}=await Si(I.realPath,n),b=s.replace(/^\/@s\/[^/]+/,"");return r.json({code:200,message:"success",data:{name:w.name,size:w.size,is_dir:w.is_dir,created:w.created||w.modified||new Date().toISOString(),modified:w.modified,sign:w.sign||"",thumb:w.thumb||"",type:w.type??0,raw_url:`/api/sd/${y}${b}`,readme:I.share.readme||"",header:I.share.header||"",provider:C,related:[],write:!1,write_content_bypass:!1}})}let o=await J1(s,r.env);if(!j1(t,o,s,e.password||""))return r.json({code:403,message:"Access denied (wrong password or not in read_users)",data:null},403);let{item:a,provider:c,rawUrl:l}=await Si(s,n),d=await Md(r),u=d.enabled||await OI(r,s),f=!a.is_dir&&u?await IA(r,s,d.expiresIn||await yA(r)):"",h=pt(t)&&$1(t,o,s),g=V1(o,s),p=[];if(!a.is_dir)try{let I=s.includes("/")&&s.slice(0,s.lastIndexOf("/"))||"/",y=a.name.includes(".")?a.name.slice(0,a.name.lastIndexOf(".")):a.name,{content:w}=await Zt(I,n);p=w.filter(C=>C.name===a.name||C.is_dir?!1:(C.name.includes(".")?C.name.slice(0,C.name.lastIndexOf(".")):C.name)===y).map(C=>({name:C.name,size:C.size,is_dir:!1,modified:C.modified||new Date().toISOString(),sign:"",thumb:C.thumb||"",type:C.type??0}))}catch{p=[]}return r.json({code:200,message:"success",data:{name:a.name,size:a.size,is_dir:a.is_dir,created:a.created||a.modified||new Date().toISOString(),modified:a.modified,sign:f,thumb:a.thumb||"",type:a.type??0,raw_url:l,readme:Y1(o,s),header:W1(o,s),provider:c,related:p,write:h,write_content_bypass:g}})}catch(o){return r.json({code:500,message:Ne(o),data:null})}});function Jd(r){if(typeof r!="string"||!r.trim())throw new Error("Invalid or empty file name");let e=r.trim();if(e==="."||e===".."||e.includes("/")||e.includes("\\")||e.includes("\0"))throw new Error(`Illegal file name '${e}'`);return e}function po(r){if(typeof r!="string")throw new Error("Path must be a string");if(r.includes("\0"))throw new Error("Path contains illegal null byte");return r}dt.post("/mkdir",async r=>{let e=await Me(r);if(!pt(e))return cr(r);let i=(await r.req.json().catch(()=>({}))).path||"/";try{po(i)}catch(o){return r.json({code:400,message:o.message,data:null},400)}let n=We(e,i),s=_t(r);try{return await dA(n,s),r.json({code:200,message:"success",data:null})}catch(o){return r.json({code:500,message:Ne(o),data:null})}});dt.post("/rename",async r=>{let e=await Me(r);if(!pt(e))return cr(r);let{path:t,name:i}=await r.req.json().catch(()=>({})),n="";try{po(t||"/"),n=Jd(i)}catch(o){return r.json({code:400,message:o.message,data:null},400)}let s=_t(r);try{let o=We(e,t||"/");return await uA(o,n,s),r.json({code:200,message:"success",data:null})}catch(o){return r.json({code:500,message:Ne(o),data:null})}});dt.post("/remove",async r=>{let e=await Me(r);if(!pt(e))return cr(r);let{dir:t,names:i}=await r.req.json().catch(()=>({}));if(!Array.isArray(i)||i.length===0)return r.json({code:400,message:"Parameter 'names' must be a non-empty array",data:null},400);let n=[];try{po(t||"/"),n=i.map(o=>Jd(o))}catch(o){return r.json({code:400,message:o.message,data:null},400)}let s=_t(r);try{let o=We(e,t||"/");return await va(o,n,s),r.json({code:200,message:"success",data:null})}catch(o){return r.json({code:500,message:Ne(o),data:null})}});dt.post("/move",async r=>{let e=await Me(r);if(!pt(e))return cr(r);let{src_dir:t,dst_dir:i,names:n}=await r.req.json().catch(()=>({}));if(!Array.isArray(n)||n.length===0)return r.json({code:400,message:"Parameter 'names' must be a non-empty array",data:null},400);let s=[];try{po(t||"/"),po(i||"/"),s=n.map(a=>Jd(a))}catch(a){return r.json({code:400,message:a.message,data:null},400)}let o=_t(r);try{let a=We(e,t||"/"),c=We(e,i||"/");return await Td(a,c,s,o),r.json({code:200,message:"success",data:null})}catch(a){return r.json({code:500,message:Ne(a),data:null})}});dt.post("/copy",async r=>{let e=await Me(r);if(!pt(e))return cr(r);let{src_dir:t,dst_dir:i,names:n}=await r.req.json().catch(()=>({}));if(!Array.isArray(n)||n.length===0)return r.json({code:400,message:"Parameter 'names' must be a non-empty array",data:null},400);let s=[];try{po(t||"/"),po(i||"/"),s=n.map(a=>Jd(a))}catch(a){return r.json({code:400,message:a.message,data:null},400)}let o=_t(r);try{let a=We(e,t||"/"),c=We(e,i||"/");return await fA(a,c,s,o),r.json({code:200,message:"success",data:null})}catch(a){return r.json({code:500,message:Ne(a),data:null})}});dt.put("/put",async r=>{let e=await Me(r);if(!pt(e))return cr(r);let t=decodeURIComponent(r.req.header("File-Path")||"");if(!t.trim())return r.json({code:400,message:"Missing File-Path header",data:null},400);try{po(t)}catch(o){return r.json({code:400,message:o.message,data:null},400)}let i=We(e,t),n=_t(r),s=VI(r);if(s!==null)return r.json({code:413,message:`File too large (max ${s} bytes)`,data:null},413);try{let o=await r.req.arrayBuffer();return await _n(i,Buffer.from(o),n),r.json({code:200,message:"success",data:null})}catch(o){return r.json({code:500,message:Ne(o),data:null})}});dt.put("/form",async r=>{let e=await Me(r);if(!pt(e))return cr(r);let t=decodeURIComponent(r.req.header("File-Path")||"");if(!t.trim())return r.json({code:400,message:"Missing File-Path header",data:null},400);try{po(t)}catch(o){return r.json({code:400,message:o.message,data:null},400)}let i=We(e,t),n=_t(r),s=VI(r);if(s!==null)return r.json({code:413,message:`File too large (max ${s} bytes)`,data:null},413);try{let a=(await r.req.formData()).get("file");if(!a||typeof a=="string")return r.json({code:400,message:"missing file in form data",data:null});let c=Buffer.from(await a.arrayBuffer());return await _n(i,c,n),r.json({code:200,message:"success",data:null})}catch(o){return r.json({code:500,message:Ne(o),data:null})}});dt.post("/upload/create",async r=>{let e=await Me(r);if(!pt(e))return cr(r);let{path:t,file_name:i,size:n,md5:s}=await r.req.json().catch(()=>({})),o=We(e,t||"/"),a=_t(r);if(!i)return r.json({code:400,message:"path and file_name are required",data:null});try{let c=await tt(o);if(c.isVirtual)throw new Error("failed get storage: storage not found");let l=await lt(c.storage.driver,c.storage);if(typeof l.createUploadSession!="function")return r.json({code:200,message:"success",data:null});let d;try{d=await l.createUploadSession(o,c.physical,i,Number(n)||0,s||"")}finally{await Jt(c.storage.driver,c.storage,l,a)}return r.json({code:200,message:"success",data:d})}catch(c){return r.json({code:500,message:Ne(c),data:null})}});dt.put("/upload/part",async r=>{let e=await Me(r);if(!pt(e))return cr(r);let t=r.req.header("X-Upload-Session")||"",i=parseInt(r.req.header("X-Part-Number")||"0",10),n=decodeURIComponent(r.req.header("Upload-Path")||""),s=We(e,n),o=_t(r);if(!t||!(i>=1)||!s)return r.json({code:400,message:"missing X-Upload-Session / X-Part-Number / Upload-Path",data:null});let a=VI(r,!0);if(a!==null)return r.json({code:413,message:`Part too large (max ${a} bytes)`,data:null},413);try{let c=await tt(s);if(c.isVirtual)throw new Error("failed get storage: storage not found");let l=await lt(c.storage.driver,c.storage);if(typeof l.uploadPart!="function")throw new Error("storage does not support chunked upload");let d=Buffer.from(await r.req.arrayBuffer()),u;try{u=await l.uploadPart(t,i,d)}finally{await Jt(c.storage.driver,c.storage,l,o)}return r.json({code:200,message:"success",data:u??null})}catch(c){return r.json({code:500,message:Ne(c),data:null})}});dt.post("/upload/complete",async r=>{let e=await Me(r);if(!pt(e))return cr(r);let{path:t,session:i,partMd5s:n}=await r.req.json().catch(()=>({})),s=We(e,t||"/"),o=_t(r);if(!i)return r.json({code:400,message:"path and session are required",data:null});try{let a=await tt(s);if(a.isVirtual)throw new Error("failed get storage: storage not found");let c=await lt(a.storage.driver,a.storage);if(typeof c.completeUploadSession!="function")throw new Error("storage does not support chunked upload");try{await c.completeUploadSession(i,n)}finally{await Jt(a.storage.driver,a.storage,c,o)}return r.json({code:200,message:"success",data:null})}catch(a){return r.json({code:500,message:Ne(a),data:null})}});dt.post("/add_offline_download",async r=>{let e=await Me(r);if(!e||e.disabled)return r.json({code:401,message:"Unauthorized",data:null},401);let{path:t,urls:i}=await r.req.json().catch(()=>({})),n=We(e,t||"/");return!i||i.length===0?r.json({code:400,message:"No URLs provided"}):r.json({code:501,message:"capability unavailable: this runtime has no durable offline-download adapter; use /fs/seed/offline_download with an approved source and a streaming-capable target driver",data:{path:n,accepted:0}},501)});dt.post("/search",async r=>{let e=await Me(r);if(!e||e.disabled)return r.json({code:401,message:"Unauthorized",data:null},401);let t=await r.req.json().catch(()=>({})),i=We(e,t.parent||"/");try{let n=await Ld({parent:i,keywords:t.keywords||"",scope:t.scope!==void 0?parseInt(t.scope,10):0,page:t.page?parseInt(t.page,10):1,per_page:t.per_page?parseInt(t.per_page,10):30},r.env);return r.json({code:200,message:"success",data:n})}catch(n){return r.json({code:500,message:Ne(n),data:null},500)}});dt.post("/other",async r=>{let e=await Me(r);if(!e||e.disabled)return r.json({code:401,message:"Unauthorized",data:null},401);let t=await r.req.json().catch(()=>({})),i=We(e,t.path||"/"),n=t.method;if(!n)return r.json({code:400,message:"Missing required parameter 'method'",data:null},400);if(!pt(e))return cr(r);try{let s=await tt(i);if(s.isVirtual||!s.storage)throw new Error("failed get storage: storage not found");let o=await lt(s.storage.driver,s.storage);if(typeof o.other=="function"){let a=await o.other(n,s.relative,t);return r.json({code:200,message:"success",data:a})}return r.json({code:500,message:`Driver '${s.storage.driver}' does not support other method '${n}'`,data:null},500)}catch(s){return r.json({code:500,message:Ne(s),data:null},500)}});dt.post("/batch_rename",async r=>{let e=await Me(r);if(!pt(e))return cr(r);let{src_dir:t,rename_objects:i}=await r.req.json().catch(()=>({}));if(!Array.isArray(i)||i.length===0)return r.json({code:400,message:"rename_objects is required",data:null},400);let n=We(e,t||"/"),s=_t(r);try{for(let o of i){let a=o?.src_name,c=o?.new_name;if(!a||!c)continue;Jd(c);let l=`${n}/${a}`.replace(/\/{2,}/g,"/");await uA(l,c,s)}return r.json({code:200,message:"success",data:null})}catch(o){return r.json({code:500,message:Ne(o),data:null},500)}});dt.post("/regex_rename",async r=>{let e=await Me(r);if(!pt(e))return cr(r);let{src_dir:t,src_name_regex:i,new_name_regex:n}=await r.req.json().catch(()=>({}));if(!i)return r.json({code:400,message:"src_name_regex is required",data:null},400);let s=We(e,t||"/"),o=_t(r);try{let a=new RegExp(i),{content:c}=await Zt(s,o);for(let l of c)if(!l.is_dir&&a.test(l.name)){let d=l.name.replace(a,n||"");Jd(d);let u=`${s}/${l.name}`.replace(/\/{2,}/g,"/");await uA(u,d,o)}return r.json({code:200,message:"success",data:null})}catch(a){return r.json({code:500,message:Ne(a),data:null},500)}});dt.post("/recursive_move",async r=>{let e=await Me(r);if(!pt(e))return cr(r);let{src_dir:t,dst_dir:i,conflict_policy:n}=await r.req.json().catch(()=>({})),s=We(e,t||"/"),o=We(e,i||"/"),a=n||"overwrite",c=_t(r);try{let l=new Set;if(a!=="overwrite"){let f=await Zt(o,c);l=new Set(f.content.map(h=>h.name))}let d=[s],u=0;for(;d.length>0;){let f=d.shift(),{content:h}=await Zt(f,c);for(let g of h)if(g.is_dir)d.push(`${f}/${g.name}`.replace(/\/{2,}/g,"/"));else{if(l.has(g.name)){if(a==="cancel")return r.json({code:403,message:`file [${g.name}] exists`,data:null},403);if(a==="skip")continue}a!=="overwrite"&&l.add(g.name),await Td(f,o,[g.name],c),u++}}return r.json({code:200,message:`Successfully moved ${u} files`,data:null})}catch(l){return r.json({code:500,message:Ne(l),data:null},500)}});dt.post("/remove_empty_directory",async r=>{let e=await Me(r);if(!pt(e))return cr(r);let{src_dir:t}=await r.req.json().catch(()=>({})),i=We(e,t||"/"),n=_t(r);try{let s=async o=>{let{content:a}=await Zt(o,n);for(let l of a)l.is_dir&&await s(`${o}/${l.name}`.replace(/\/{2,}/g,"/"));if(o===i)return;if((await Zt(o,n)).content.length===0){let l=o.split("/").slice(0,-1).join("/")||"/",d=o.split("/").pop();await va(l,[d],n)}};return await s(i),r.json({code:200,message:"success",data:null})}catch(s){return r.json({code:500,message:Ne(s),data:null},500)}});dt.post("/link",async r=>{let e=await Me(r);if(!As(e))return cr(r);let{path:t}=await r.req.json().catch(()=>({})),i=We(e,t||"/"),n=_t(r);try{let s=await tt(i);if(s.isVirtual||!s.storage)return r.json({code:500,message:"storage not found",data:null},500);let o=await lt(s.storage.driver,s.storage);try{let a=await o.get(i,s.physical??"/");if(a&&a.raw_url)return r.json({code:200,message:"success",data:{url:a.raw_url}})}finally{await Jt(s.storage.driver,s.storage,o,n)}return r.json({code:200,message:"success",data:{url:`/api/p${i.startsWith("/")?"":"/"}${i}`}})}catch(s){return r.json({code:500,message:Ne(s),data:null},500)}});dt.post("/get_direct_upload_info",async r=>{let e=await Me(r);if(!pt(e))return cr(r);let{path:t,file_name:i,file_size:n}=await r.req.json().catch(()=>({})),s=We(e,t||"/");try{let o=await tt(s);if(o.isVirtual||!o.storage)return r.json({code:200,message:"success",data:null});let c=await lt(o.storage.driver,o.storage);if(typeof c.getDirectUploadInfo=="function"){let l=await c.getDirectUploadInfo(o.relative,i,n);return r.json({code:200,message:"success",data:l})}if(typeof c.other=="function")for(let l of["direct_upload","get_direct_upload_info"])try{let d=await c.other(l,o.relative,{file_name:i,file_size:n});if(d)return r.json({code:200,message:"success",data:d})}catch{}return r.json({code:200,message:"success",data:null})}catch(o){return r.json({code:500,message:Ne(o),data:null},500)}});function p2(r){let t=(r.startsWith("/")?r:"/"+r).split("/").filter(Boolean),i=t.pop()||"";return{dir:"/"+t.join("/"),name:i}}dt.post("/multipart/init",async r=>{let e=await Me(r);if(!pt(e))return cr(r);let t=decodeURIComponent(r.req.header("File-Path")||""),i=parseInt(r.req.header("X-File-Size")||"0",10),n=parseInt(r.req.header("X-Chunk-Size")||"0",10),s=r.req.header("X-File-Md5")||"";if(!t.trim()||i<=0)return r.json({code:400,message:"Missing File-Path / X-File-Size header",data:null},400);let{dir:o,name:a}=p2(t),c=We(e,o),l=_t(r);try{let d=await tt(c);if(d.isVirtual)throw new Error("failed get storage: storage not found");let u=await lt(d.storage.driver,d.storage);if(typeof u.createUploadSession!="function")return r.json({code:200,message:"success",data:null});let f=ZR(n),h=Math.max(1,Math.ceil(i/f)),g,p=!1,I=eN(t,i);if(I)g=I,p=!0;else{let y=await u.createUploadSession(c,d.physical,a,i,s);g={upload_id:rN(),state:"receiving",attempt:0,path:t,size:i,chunk_size:f,total_chunks:h,received:new Set,driver_session:y?.session||"",partMd5s:new Array(h).fill(void 0),storage_driver:d.storage.driver,created_at:Date.now()},y?.reuse&&(g.state="completed",g.received=new Set(Array.from({length:h},(w,C)=>C))),vA(g)}return await Jt(d.storage.driver,d.storage,u,l),r.json({code:200,message:"success",data:{...Vc(g),resumed:p}})}catch(d){return r.json({code:500,message:Ne(d),data:null},500)}});dt.put("/multipart/chunk",async r=>{let e=await Me(r);if(!pt(e))return cr(r);let t=r.req.header("X-Upload-Id")||"",i=parseInt(r.req.header("X-Chunk-Index")||"-1",10),n=t?$I(t):void 0;if(!n)return r.json({code:404,message:"upload session not found",data:null},404);if(i<0||i>=n.total_chunks)return r.json({code:400,message:"invalid X-Chunk-Index",data:null},400);if(n.received.has(i))return r.json({code:200,message:"success",data:Vc(n)});let s=VI(r,!0);if(s!==null)return r.json({code:413,message:`Part too large (max ${s} bytes)`,data:null},413);let o=_t(r);try{let a=await tt(We(e,p2(n.path).dir));if(a.isVirtual)throw new Error("failed get storage: storage not found");let c=await lt(a.storage.driver,a.storage);if(typeof c.uploadPart!="function")throw new Error("storage does not support chunked upload");let l=Buffer.from(await r.req.arrayBuffer()),d;try{d=await c.uploadPart(n.driver_session,i+1,l)}finally{await Jt(a.storage.driver,a.storage,c,o)}return n.received.add(i),d?.partMd5&&(n.partMd5s[i]=d.partMd5),vA(n),r.json({code:200,message:"success",data:Vc(n)})}catch(a){return r.json({code:500,message:Ne(a),data:null},500)}});dt.post("/multipart/complete",async r=>{let e=await Me(r);if(!pt(e))return cr(r);let t=r.req.header("X-Upload-Id")||"",i=t?$I(t):void 0;if(!i)return r.json({code:404,message:"upload session not found",data:null},404);if(i.state==="completed")return r.json({code:200,message:"success",data:Vc(i)});let n=_t(r);try{let s=await tt(We(e,p2(i.path).dir));if(s.isVirtual)throw new Error("failed get storage: storage not found");let o=await lt(s.storage.driver,s.storage);if(typeof o.completeUploadSession!="function")throw new Error("storage does not support chunked upload");try{await o.completeUploadSession(i.driver_session,i.partMd5s.filter(a=>a!==void 0))}finally{await Jt(s.storage.driver,s.storage,o,n)}return i.state="completed",vA(i),tN(i.upload_id),r.json({code:200,message:"success",data:Vc(i)})}catch(s){return i.state="failed_permanent",i.error=Ne(s),vA(i),r.json({code:500,message:Ne(s),data:null},500)}});dt.get("/multipart/status",async r=>{let e=r.req.query("upload_id")||"",t=e?$I(e):void 0;return t?r.json({code:200,message:"success",data:Vc(t)}):r.json({code:404,message:"upload session not found",data:null},404)});function m2(r){let e=r.toLowerCase();return e.endsWith(".zip")?"zip":e.endsWith(".tar.gz")||e.endsWith(".tgz")?"tar.gz":e.endsWith(".tar.bz2")||e.endsWith(".tbz2")?"tar.bz2":e.endsWith(".tar.xz")||e.endsWith(".txz")?"tar.xz":e.endsWith(".tar")?"tar":e.endsWith(".7z")?"7z":e.endsWith(".rar")?"rar":null}function y2(r){return r==="zip"}async function I2(r,e,t){let i=We(e,t),n=await tt(i);if(n.isVirtual)throw new Error("failed get storage: storage not found");let s=await lt(n.storage.driver,n.storage),o;try{o=await s.get(t,n.physical)}finally{await Jt(n.storage.driver,n.storage,s,_t(r))}if(!o||!o.raw_url)throw new Error("archive driver did not return download link");let a=oh(n.storage?.addition,r.env);Gr(o.raw_url,"Archive download",a);let c=await fetch(o.raw_url,{headers:o.raw_url_headers||{}});if(!c.ok)throw new Error(`archive download failed: HTTP ${c.status}`);return await c.arrayBuffer()}function Zre(r){let e=[],t=new Map;for(let i of r.entries){let n=i.name.split("/").filter(Boolean);if(n.length===0)continue;let s=e,o="";for(let a=0;a<n.length;a++){let c=n[a],l=a===n.length-1;if(o=o?`${o}/${c}`:`/${c}`,l)s.push({name:c,size:i.size,is_dir:!1,modified:i.modified||new Date().toISOString(),type:iN(c,!1),children:[]});else{let d=t.get(o);d||(d={name:c,size:0,is_dir:!0,modified:i.modified||new Date().toISOString(),type:1,children:[]},t.set(o,d),s.push(d)),s=d.children}}}return e}function iN(r,e){let t=r.split(".").pop()?.toLowerCase()||"";if(e)return 1;let i=["mp4","mkv","webm","avi","mov","flv","m3u8"],n=["mp3","flac","wav","aac","ogg","m4a"],s=["jpg","jpeg","png","gif","webp","svg","bmp","ico"],o=["txt","md","json","js","ts","css","html","xml","yml","log"];return i.includes(t)?2:n.includes(t)?3:s.includes(t)?4:o.includes(t)?5:6}dt.post("/archive/meta",async r=>{let e=await Me(r);if(!e||e.disabled)return r.json({code:401,message:"Unauthorized",data:null},401);let t=await r.req.json().catch(()=>({})),i=String(t.path||r.req.query("path")||"").trim();if(!i)return r.json({code:400,message:"path is required",data:null},400);let n=m2(i);if(!n)return r.json({code:400,message:"unrecognized archive format",data:null},400);if(!y2(n))return r.json({code:501,message:`archive format '${n}' is recognized but not supported in this runtime (Worker supports ZIP only); use the Go backend for ${n} archives`,data:null},501);try{let s=await I2(r,e,i),o=MI(s),a=Zre(o);return r.json({code:200,message:"success",data:{comment:"",encrypted:!1,content:a,raw_url:"",sign:""}})}catch(s){return r.json({code:500,message:Ne(s),data:null},500)}});dt.post("/archive/list",async r=>{let e=await Me(r);if(!e||e.disabled)return r.json({code:401,message:"Unauthorized",data:null},401);let t=await r.req.json().catch(()=>({})),i=String(t.path||r.req.query("path")||"").trim(),n=String(t.inner_path||"").trim().replace(/\/+/g,"/");if(!i)return r.json({code:400,message:"path is required",data:null},400);let s=m2(i);if(!s)return r.json({code:400,message:"unrecognized archive format",data:null},400);if(!y2(s))return r.json({code:501,message:`archive format '${s}' is recognized but not supported in this runtime; use the Go backend for ${s} archives`,data:null},501);try{let o=await I2(r,e,i),a=MI(o),c=n?n.replace(/^\/+|\/+$/g,"")+"/":"",l=a.entries.filter(f=>c?f.name.startsWith(c)&&f.name!==c.slice(0,-1):!f.name.includes("/")).map(f=>{let h=c?f.name.slice(c.length):f.name;return{name:h.split("/")[0],size:f.size,is_dir:!1,modified:f.modified||new Date().toISOString(),type:iN(h.split("/")[0],!1)}}),d=new Set,u=l.filter(f=>d.has(f.name)?!1:(d.add(f.name),!0));return r.json({code:200,message:"success",data:{content:u,total:u.length}})}catch(o){return r.json({code:500,message:Ne(o),data:null},500)}});dt.post("/archive/decompress",async r=>{let e=await Me(r);if(!pt(e))return r.json({code:403,message:"Permission denied",data:null},403);let t=await r.req.json().catch(()=>({})),i=String(t.src_dir||"").trim(),n=String(t.dst_dir||"").trim(),s=Array.isArray(t.name)?t.name:t.name?[String(t.name)]:[],o=String(t.inner_path||"").trim().replace(/\/+/g,"/");if(!s.length||!n)return r.json({code:400,message:"src_dir/dst_dir/name are required",data:null},400);try{let a=0;for(let c of s){let l=i?`${i}/${c}`:`/${c}`,d=m2(c);if(!d||!y2(d))return r.json({code:400,message:`unsupported archive format: ${c} (only ZIP is supported)`,data:null},400);let u=await I2(r,e,l),f=MI(u),h=o?o.replace(/^\/+|\/+$/g,"")+"/":"";for(let g of f.entries){if(h&&!g.name.startsWith(h))continue;let p=h?g.name.slice(h.length):g.name;if(!p||p.endsWith("/"))continue;let I=`${n.replace(/\/+$/,"")}/${p}`,y=await RR(u,g);await _n(I,Buffer.from(y),_t(r)),a++}}return r.json({code:200,message:"success",data:{task:null,count:a}})}catch(a){return r.json({code:500,message:Ne(a),data:null},500)}});fo();Ve();Di();var MA=Dr(NN(),1),j7=Dr(J7(),1);function kse(r,e){try{return MA.authenticator.options={window:1},MA.authenticator.verify({token:r,secret:e})}catch(t){return console.error("[TOTP] Verification error:",t),!1}}function $7(){return MA.authenticator.generateSecret()}async function Sb(r,e){return kse(e,r)}function V7(r,e,t="OpenList"){return MA.authenticator.keyuri(e,t,r)}async function Y7(r){return j7.default.toDataURL(r)}Ve();function Sse(r){let e="";for(let t=0;t<r.length;t++)e+=String.fromCharCode(r[t]);return btoa(e)}function W7(r){let e=String(r||"").replace(/[\s\r\n]/g,"").replace(/-/g,"+").replace(/_/g,"/"),t=e.length%4,i=t?e+"=".repeat(4-t):e;try{let n=atob(i),s=new Uint8Array(n.length);for(let o=0;o<n.length;o++)s[o]=n.charCodeAt(o);return s}catch{return null}}var Dse=["ssh-rsa","ssh-dss","ssh-ed25519","ecdsa-sha2-nistp256","ecdsa-sha2-nistp384","ecdsa-sha2-nistp521","sk-ssh-ed25519@openssh.com","sk-ecdsa-sha2-nistp256@openssh.com","sk-ssh-ed25519@openssh.com.webauthn","sk-ecdsa-sha2-nistp256@openssh.com.webauthn"];function Db(r){let e=String(r||"").trim().split(/\s+/);if(e.length<2)return null;let t=e[0];if(!Dse.includes(t))return null;let i=W7(e[1]);return!i||i.length<16?null:{type:t,blobBase64:e[1].replace(/[\s\r\n]/g,""),comment:e.slice(2).join(" ")||""}}async function X7(r){let e=Db(r);if(!e)return null;let t=W7(e.blobBase64);if(!t)return null;let i=await crypto.subtle.digest("SHA-256",t.buffer.slice(t.byteOffset,t.byteOffset+t.byteLength)),n=new Uint8Array(i);return"SHA256:"+Sse(n).replace(/=+$/,"")}function Z7(){let r=globalThis;return typeof r.crypto?.randomUUID=="function"?r.crypto.randomUUID():Date.now().toString(36)+"-"+Math.random().toString(36).slice(2,10)+Math.random().toString(36).slice(2,10)}async function tu(r,e){let i=((await ne(e)).users||[]).find(n=>n.id===r);return i?i.ssh_keys||[]:[]}async function eq(r,e,t,i){let n=Db(e);if(!n)throw new Error("Invalid OpenSSH public key format");let s=await X7(e);if(!s)throw new Error("Failed to compute SSH key fingerprint");let o=await ne(i),a=(o.users||[]).find(l=>l.id===r);if(!a)throw new Error("User not found");if(Array.isArray(a.ssh_keys)||(a.ssh_keys=[]),a.ssh_keys.some(l=>l.fingerprint===s))throw new Error("SSH key with this fingerprint already exists");let c={id:Z7(),name:(t||n.comment||n.type).slice(0,64),public_key:e.trim(),fingerprint:s,created_at:new Date().toISOString()};return a.ssh_keys.push(c),await fe(o,i),c}async function Ew(r,e,t){let i=await ne(t),n=(i.users||[]).find(o=>o.id===r);if(!n||!Array.isArray(n.ssh_keys))return!1;let s=n.ssh_keys.length;return n.ssh_keys=n.ssh_keys.filter(o=>o.id!==e),n.ssh_keys.length!==s?(await fe(i,t),!0):!1}var Qse="https://github.com/alist-org/alist";async function tq(r){let e=await crypto.subtle.digest("SHA-256",new TextEncoder().encode(r));return Array.from(new Uint8Array(e)).map(t=>t.toString(16).padStart(2,"0")).join("")}async function Qb(r){return tq(`${r}-${Qse}`)}async function Bw(r,e){return tq(`${r}-${e}`)}async function _se(r,e){return Bw(await Qb(r),e)}function _b(r=16){let e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",t=new Uint8Array(r);crypto.getRandomValues(t);let i="";for(let n=0;n<r;n++)i+=e[t[n]%e.length];return i}function bw(r){return/^[0-9a-f]{64}$/i.test(String(r||""))}async function _i(r,e){r.salt=_b(),r.password=await _se(e,r.salt),r.pwd_update_at=new Date().toISOString()}var rq={cookieName:"csrf_token",headerName:"x-csrf-token",maxAge:3600,cookieOptions:{httpOnly:!0,secure:!0,sameSite:"strict",path:"/"}};function Fse(r=32){let e=new Uint8Array(r);return crypto.getRandomValues(e),btoa(String.fromCharCode(...e)).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}function Fb(r,e={}){let t={...rq,...e},i=Fse();return nq(r,t.cookieName,i,{maxAge:t.maxAge,...t.cookieOptions}),i}function iq(r,e={}){let t={...rq,...e};nq(r,t.cookieName,"",{maxAge:0,...t.cookieOptions})}function nq(r,e,t,i={}){let n=[`${e}=${encodeURIComponent(t)}`];i.maxAge!==void 0&&n.push(`Max-Age=${i.maxAge}`),i.httpOnly&&n.push("HttpOnly"),i.secure&&n.push("Secure"),i.sameSite&&n.push(`SameSite=${i.sameSite}`),i.path&&n.push(`Path=${i.path}`),r.header("Set-Cookie",n.join("; "))}function Pse(){return`${Date.now()}-${Math.random().toString(36).substring(2,15)}`}function Tse(r){let e=r.get?.("user"),t=r.req.header("cf-connecting-ip")||r.req.header("x-forwarded-for")||r.req.header("x-real-ip")||"unknown",i=r.req.header("user-agent")||"unknown";return{user_id:e?.id,username:e?.username,ip_address:t,user_agent:i}}var Tb=class{storage;constructor(e){this.storage=e}async log(e,t,i,n,s,o={}){let a=Tse(e),c={id:Pse(),timestamp:new Date().toISOString(),level:t,category:i,action:n,message:s,success:o.success??!0,...a,resource_type:o.resource_type,resource_id:o.resource_id,resource_name:o.resource_name,details:o.details,error_message:o.error_message};try{await this.storage.write(c)}catch(l){console.error("[AuditLog] Failed to write log:",l)}}async logLoginSuccess(e,t){await this.log(e,"info","auth","login",`User ${t} logged in successfully`,{success:!0})}async logLoginFailure(e,t,i){await this.log(e,"warn","auth","login_failed",`Failed login attempt for user ${t}`,{success:!1,error_message:i})}async logLogout(e){await this.log(e,"info","auth","logout","User logged out",{success:!0})}async logFileUpload(e,t,i){await this.log(e,"info","file","upload",`Uploaded file: ${t}`,{success:!0,resource_type:"file",resource_name:t,details:{file_size:i}})}async logFileDelete(e,t,i){await this.log(e,i?"critical":"error","file","delete",`Deleted file: ${t}`,{success:i,resource_type:"file",resource_name:t})}async logPermissionChange(e,t,i,n){await this.log(e,"critical","permission","update_permission",`Changed permission for user ${t}`,{success:!0,resource_type:"user",resource_name:t,details:{old_role:i,new_role:n}})}async logUserCreate(e,t,i){await this.log(e,"info","user","create",`Created user: ${t}`,{success:!0,resource_type:"user",resource_name:t,details:{role:i}})}async logUserDelete(e,t){await this.log(e,"critical","user","delete",`Deleted user: ${t}`,{success:!0,resource_type:"user",resource_name:t})}async query(e){return this.storage.query(e)}async count(e){return this.storage.count(e)}},Ub=class{logs=[];maxSize;constructor(e=1e4){this.maxSize=e}async write(e){this.logs.push(e),this.logs.length>this.maxSize&&this.logs.shift()}async query(e){let t=this.logs;e.start_time&&(t=t.filter(s=>s.timestamp>=e.start_time)),e.end_time&&(t=t.filter(s=>s.timestamp<=e.end_time)),e.level&&(t=t.filter(s=>s.level===e.level)),e.category&&(t=t.filter(s=>s.category===e.category)),e.user_id&&(t=t.filter(s=>s.user_id===e.user_id)),e.username&&(t=t.filter(s=>s.username===e.username)),e.action&&(t=t.filter(s=>s.action===e.action)),e.resource_type&&(t=t.filter(s=>s.resource_type===e.resource_type)),e.resource_id&&(t=t.filter(s=>s.resource_id===e.resource_id)),e.success!==void 0&&(t=t.filter(s=>s.success===e.success)),t=t.sort((s,o)=>new Date(o.timestamp).getTime()-new Date(s.timestamp).getTime());let i=e.offset||0,n=e.limit||100;return t.slice(i,i+n)}async count(e){return(await this.query({...e,limit:Number.MAX_SAFE_INTEGER})).length}clear(){this.logs=[]}};var Pb=null;function ru(){if(!Pb){let r=new Ub(1e4);Pb=new Tb(r)}return Pb}var Tn=new Xe,LA=new Xe,Use=5,Rse=20,Nse=900*1e3,oq=1440*60*1e3,ms=new Map;function qse(r){return r.req.header("CF-Connecting-IP")||r.req.header("x-real-ip")||r.req.header("x-forwarded-for")?.split(",")[0]?.trim()||"unknown"}function Rb(r,e){return`${qse(r)}|${String(e||"").toLowerCase()}`}function Nb(r){return`__global__|${String(r||"").toLowerCase()}`}function Ose(r){let e=Nse,t=Math.pow(2,Math.floor(r/5));return Math.min(e*t,oq)}async function sq(r,e,t){let i=Date.now(),n=ms.get(r)||{count:0,lockedUntil:0,attempts:0};try{let{getKvBinding:s}=await Promise.resolve().then(()=>(Ve(),Kr)),o=await s(t);if(o.mode!=="none"&&o.binding){let a=`login_fail:${r}`,c=null;try{c=await o.binding.get(a,"text")}catch{c=await o.binding.get(a)}if(c&&typeof c.text=="function"&&(c=await c.text()),c)try{n=JSON.parse(String(c))}catch{}}}catch{}if(!(n.lockedUntil>i)){if(n.count+=1,n.attempts+=1,n.count>=e){let s=Ose(n.attempts);n.lockedUntil=i+s,n.count=0,console.warn(`[Auth] Login attempts exceeded for ${r}. Locked for ${Math.round(s/6e4)} minutes (attempt #${n.attempts}).`)}ms.set(r,n);try{let{getKvBinding:s}=await Promise.resolve().then(()=>(Ve(),Kr)),o=await s(t);if(o.mode!=="none"&&o.binding){let a=`login_fail:${r}`,c=JSON.stringify(n),l=Math.ceil((oq+36e5)/1e3);typeof o.binding.put=="function"&&await o.binding.put(a,c,{expirationTtl:l})}}catch(s){console.warn("[Auth] Failed to persist login failure to KV:",s)}}}async function aq(r,e,t){if(ms.size>1e4){let c=Date.now();for(let[l,d]of ms)d.lockedUntil<c&&d.count===0&&ms.delete(l)}let i=Date.now(),n=Rb(r,e),s=Nb(e),o=ms.get(n),a=ms.get(s);try{let{getKvBinding:c}=await Promise.resolve().then(()=>(Ve(),Kr)),l=await c(t);if(l.mode!=="none"&&l.binding)for(let d of[n,s]){let u=`login_fail:${d}`,f=null;try{f=await l.binding.get(u,"text")}catch{f=await l.binding.get(u)}if(f&&typeof f.text=="function"&&(f=await f.text()),f)try{let h=JSON.parse(String(f));d===n&&(o=h),d===s&&(a=h),ms.set(d,h)}catch{}}}catch{}return!!(o&&o.lockedUntil>i||a&&a.lockedUntil>i)}async function cq(r,e,t){await sq(Rb(r,e),Use,t),await sq(Nb(e),Rse,t)}async function lq(r,e,t){let i=Rb(r,e),n=Nb(e);ms.delete(i),ms.delete(n);try{let{getKvBinding:s}=await Promise.resolve().then(()=>(Ve(),Kr)),o=await s(t);if(o.mode!=="none"&&o.binding)for(let a of[i,n]){let c=`login_fail:${a}`;typeof o.binding.delete=="function"&&await o.binding.delete(c)}}catch(s){console.warn("[Auth] Failed to clear login failures from KV:",s)}}async function dq(r,e){let t=String(r?.password||"").trim().toLowerCase(),i=String(e||"").trim().toLowerCase();if(!t||!bw(i)||!bw(t))return!1;if(r?.salt){let n=(await Bw(i,String(r.salt))).toLowerCase();return t===n}return t===i}async function HA(r,e){return String(r?.password||"").trim()?dq(r,await Qb(e)):!1}function KA(){let r=new Uint8Array(16);return crypto.getRandomValues(r),Array.from(r).map(e=>e.toString(16).padStart(2,"0")).join("")}function uq(){if(typeof crypto<"u"&&typeof crypto.randomUUID=="function")return crypto.randomUUID();let r=new Uint8Array(16);return crypto.getRandomValues(r),Array.from(r,e=>e.toString(16).padStart(2,"0")).join("")}async function vw(r){let e=await ne(r);if(!e.users||e.users.length===0){let t=r&&r.ADMIN_PASS||(typeof process<"u"?process.env?.ADMIN_PASS:"")||"",i={id:2,username:"guest",password:"",role:1,permission:0,base_path:"/",disabled:!1,sso_id:"",allow_ldap:!1,pwd_update_at:new Date().toISOString()};if(t){let s={id:1,username:"admin",password:"",role:2,permission:0,base_path:"/",disabled:!1,sso_id:"",allow_ldap:!1,pwd_update_at:new Date().toISOString()};await _i(s,t),e.users=[s,i]}else e.users=[i];await fe(e,r)||console.warn("[Auth] getOrInitUsers: skipped persisting an uninitialized placeholder DB (expected until POST /api/public/init/setup completes).")}else{let t=e.users.find(s=>s.role===2),i=t?String(t.password||"").trim():"",n=/^[0-9a-f]{64}$/i.test(i);if(t&&!n){let s=r&&r.ADMIN_PASS||(typeof process<"u"?process.env?.ADMIN_PASS:"")||"";s?(await _i(t,s),await fe(e,r)):console.warn(i?"[SECURITY] Admin password uses a legacy hash format this build cannot verify; it has been left untouched. Log in with your existing password and re-set it, or set ADMIN_PASS to force a reset. It will NOT be reset to a default value.":"[SECURITY] Admin password is empty and no ADMIN_PASS is set \u2014 the system is NOT initialized. Open the site in a browser to run the setup wizard, or set ADMIN_PASS to initialize automatically.")}}return{db:e,users:e.users}}async function ys(r){let e=r.req.header("Authorization");if(!e)return null;let t=e.startsWith("Bearer ")?e.substring(7):e;try{let i=await vr(r),n=await lo(t,i,"HS256");if(await qI(n?.jti,r.env))return null;let s=await ne(r.env);s.users||(s.users=[]);let o=s.users.find(a=>a.id===n.id||a.username===n.username);return o?{db:s,user:o}:null}catch{return null}}async function fq(r,e){if(!r.otp_secret)return{ok:!0,code:200,httpStatus:200,message:"ok"};let t=String(e.otp_code||e.code||"").trim();return t?await Sb(r.otp_secret,t)?{ok:!0,code:200,httpStatus:200,message:"ok"}:{ok:!1,code:401,httpStatus:401,message:"Invalid OTP code"}:{ok:!1,code:402,httpStatus:200,message:"OTP code required"}}Tn.post("/login",async r=>{let e=await r.req.json().catch(()=>({})),t=(e.username||"").trim(),i=e.password||"";if(await aq(r,t,r.env))return r.json({code:429,message:"Too many failed login attempts for this account/IP. Please try again later.",data:null},429);let{users:n,db:s}=await vw(r.env),o=n.find(c=>c.username===t&&!c.disabled);if(o&&await HA(o,i)){let l=String(o.password||"").trim();(/^\$2[aby]\$/.test(l)||!o.salt&&bw(l))&&(console.log(`[Auth] Upgrading password hash for user: ${t}`),await _i(o,i),await fe(s,r.env));let u=await fq(o,e);if(!u.ok)return r.json({code:u.code,message:u.message,data:null},u.httpStatus);await lq(r,t,r.env);let f={id:o.id,username:o.username,role:o.role,exp:Math.floor(Date.now()/1e3)+3600*24*7,jti:uq()},h=await vr(r),g=await uo(f,h),p=Fb(r);return await ru().logLoginSuccess(r,t),r.json({code:200,message:"success",data:{token:g,csrf_token:p}})}return await ru().logLoginFailure(r,t,"Invalid credentials"),await cq(r,t,r.env),r.json({code:401,message:"Invalid credentials",data:null},401)});Tn.post("/login/hash",async r=>{let e=await r.req.json().catch(()=>({})),t=(e.username||"").trim(),i=String(e.password||"").trim().toLowerCase();if(await aq(r,t,r.env))return r.json({code:429,message:"Too many failed login attempts for this account/IP. Please try again later.",data:null},429);let{users:n,db:s}=await vw(r.env),o=n.find(c=>c.username===t&&!c.disabled);if(o&&i.length===64&&await dq(o,i)){o.salt||(console.log(`[Auth] Upgrading password hash for user: ${t}`),o.salt=_b(),o.password=await Bw(i,o.salt),o.pwd_update_at=new Date().toISOString(),await fe(s,r.env));let l=await fq(o,e);if(!l.ok)return r.json({code:l.code,message:l.message,data:null},l.httpStatus);await lq(r,t,r.env);let d={id:o.id,username:o.username,role:o.role,exp:Math.floor(Date.now()/1e3)+3600*24*7,jti:uq()},u=await vr(r),f=await uo(d,u),h=Fb(r);return await ru().logLoginSuccess(r,t),r.json({code:200,message:"success",data:{token:f,csrf_token:h}})}return await ru().logLoginFailure(r,t,"Invalid credentials"),await cq(r,t,r.env),r.json({code:401,message:"Invalid credentials",data:null},401)});var qb=async r=>{let e=await ys(r);if(!e)return r.json({code:401,message:"Unauthorized",data:null},401);let{db:t,user:i}=e,n=await r.req.json().catch(()=>({}));if(n.username&&n.username.trim()!==""){let s=n.username.trim();if(t.users.some(a=>a.id!==i.id&&a.username===s))return r.json({code:400,message:"Username already exists",data:null},400);i.username=s}return n.password&&n.password.trim()!==""&&await _i(i,n.password.trim()),await fe(t,r.env),r.json({code:200,message:"success",data:null})},Ob=async r=>{let e=await Me(r);return!e||e.disabled?r.json({code:401,message:"Unauthorized",data:null},401):r.json({code:200,message:"success",data:{id:e.id,username:e.username,role:e.role,permission:e.permission??0,base_path:e.base_path||"/",disabled:!!e.disabled,sso_id:e.sso_id||"",allow_ldap:!!e.allow_ldap,otp:!!e.otp_secret}})};Tn.get("/me",Ob);Tn.post("/me/update",qb);var GA=async r=>{let e=r.req.header("Authorization");if(e){let i=e.startsWith("Bearer ")?e.substring(7):e;try{let n=await vr(r),s=await lo(i,n,"HS256");s?.jti&&await K1(s.jti,s.exp,r.env)}catch{}}return iq(r),await ru().logLogout(r),r.json({code:200,message:"success",data:null})};Tn.get("/logout",GA);Tn.post("/logout",GA);Tn.get("/csrf",async r=>{try{let e=await z1(r);return r.json({code:200,message:"success",data:{csrf_token:e}})}catch{return r.json({code:500,message:"Failed to generate CSRF token",data:null},500)}});Tn.post("/2fa/generate",async r=>{let e=await ys(r);if(!e)return r.json({code:401,message:"Unauthorized",data:null},401);let{user:t}=e;if(t.otp_secret)return r.json({code:400,message:"2FA already enabled",data:null},400);let i=$7(),n=V7(i,t.username);return r.json({code:200,message:"success",data:{qr:Y7(n),secret:i}})});Tn.post("/2fa/verify",async r=>{let e=await ys(r);if(!e)return r.json({code:401,message:"Unauthorized",data:null},401);let{db:t,user:i}=e,n=await r.req.json().catch(()=>({})),s=String(n.code||"").trim(),o=String(n.secret||"").trim();return o?/^[A-Z2-7]+$/i.test(o)?await Sb(o,s)?(i.otp_secret=o.toUpperCase(),await fe(t,r.env),r.json({code:200,message:"success",data:null})):r.json({code:400,message:"Invalid code",data:null},400):r.json({code:400,message:"Invalid secret format",data:null},400):r.json({code:400,message:"Missing secret parameter",data:null},400)});LA.get("/sshkey/list",async r=>{let e=await ys(r);if(!e)return r.json({code:401,message:"Unauthorized",data:null},401);let t=await tu(e.user.id,r.env);return r.json({code:200,message:"success",data:{content:t,total:t.length}})});LA.post("/sshkey/add",async r=>{let e=await ys(r);if(!e)return r.json({code:401,message:"Unauthorized",data:null},401);let t=await r.req.json().catch(()=>({}));try{let i=await eq(e.user.id,t.key||t.public_key||"",t.name||t.title||"",r.env);return r.json({code:200,message:"success",data:i})}catch(i){return r.json({code:400,message:i.message||"Failed to add SSH key",data:null},400)}});LA.post("/sshkey/delete",async r=>{let e=await ys(r);if(!e)return r.json({code:401,message:"Unauthorized",data:null},401);let t=r.req.query("id");if(!t)return r.json({code:400,message:"Missing id parameter",data:null},400);if(!await Ew(e.user.id,t,r.env))return r.json({code:404,message:"SSH key not found",data:null},404);let n=await tu(e.user.id,r.env);return r.json({code:200,message:"success",data:n})});Ve();Yt();hA();Sa();var Aq=new Set(["weiyun","sftp","ftp","smb","crypt","virtual","strm","meganz","protondrive","chunk","googledrive","googlephoto","quarkopen","quarkuc","chaoxing","local"]),Mse=new Set(["webdav","baidunetdisk","123pan","123open","123panshare"]),hq=new Set(["139yun","alias","alistv3","openlist"]),Lse=["down_proxy_url","download_proxy_url","proxy_url"];function rl(r){return String(r??"").toLowerCase().replace(/[^a-z0-9]/g,"")}function il(r){let e=Array.isArray(r)?r.join(","):r;return String(e??"").split(",").map(t=>t.trim().toLowerCase().replace(/^\./,"")).filter(Boolean)}function gq(r){let e=String(r??"").split("/").pop()?.trim();if(!e)return"";let t=e.lastIndexOf(".");return t<0||t===e.length-1?"":e.slice(t+1).toLowerCase()}function pq(r){return Aq.has(rl(r))}function Hse(r){let e=SR(r?.addition),t=String(e.storage_zone_name??"").trim(),i=String(e.cdn_base_url??"").trim();return t!==""&&i===""}function kw(r,e){let t=rl(e??r?.driver);return Aq.has(t)?!0:t==="bunnystorage"?Hse(r):!1}function Lb(r){return Mse.has(rl(r))}function mq(r){if(!r)return"";let e=r.webdav_policy??r.webdavPolicy??r.policy??r.webdavPolicyType;return typeof e=="string"?e.trim():""}function yq(r){if(!r)return"";for(let t of["down_proxy_url","downProxyUrl"]){let i=r[t];if(typeof i=="string"&&i.trim())return i.trim()}let e=r.addition;if(typeof e=="string")try{e=JSON.parse(e||"{}")}catch{return""}if(!e||typeof e!="object")return"";for(let t of Lse){let i=e[t];if(typeof i=="string"&&i.trim())return i.trim()}return""}function Iq(r){if(!r)return!1;let e=r.disable_proxy_sign??r.disableProxySign;return typeof e=="string"?e.toLowerCase()==="true":!!e}function wq(r,e){let t=r?.web_proxy??r?.webProxy;return t===!0||t==="true"?!0:t===!1||t==="false"?!1:Lb(e)}function xq(r,e,t,i={}){let n=rl(e);if(kw(r,n))return{mode:"native_proxy",needsProxy:!0,source:"force"};if(wq(r,n))return{mode:"native_proxy",needsProxy:!0,source:"web_proxy"};if(t)return{mode:"native_proxy",needsProxy:!0,source:"proxy_path"};if(Mb(gq(i.filename),i.proxyTypes))return{mode:"native_proxy",needsProxy:!0,source:"proxy_types"};let s=mq(r);return s?{mode:s,needsProxy:s!=="302_redirect",source:"storage_policy"}:{mode:"302_redirect",needsProxy:!1,source:"driver_default"}}function Mb(r,e){return r?il(e).includes(r):!1}function Sw(r){let e=rl(r.driver);if(kw(r.storage,e)||wq(r.storage,e)||mq(r.storage)==="use_proxy_url")return!0;let t=gq(r.filename);return t?Mb(t,r.proxyTypes)||Mb(t,r.textTypes):!1}Ve();fo();Di();var Un=new Xe;Un.get("/list",async r=>{let t=((await ne(r.env)).users||[]).map(i=>({id:i.id,username:i.username,role:i.role,permission:i.permission??0,base_path:i.base_path||"/",disabled:!!i.disabled,sso_id:i.sso_id||"",allow_ldap:!!i.allow_ldap,pwd_update_at:i.pwd_update_at||"",otp:!!i.otp_secret}));return r.json({code:200,message:"success",data:{content:t,total:t.length}})});Un.get("/get",async r=>{let e=r.req.query("id");if(!e)return r.json({code:400,message:"Missing id parameter",data:null},400);let t=parseInt(e,10),n=((await ne(r.env)).users||[]).find(s=>s.id===t);return n?r.json({code:200,message:"success",data:{id:n.id,username:n.username,password:"",role:n.role,permission:n.permission??0,base_path:n.base_path||"/",disabled:!!n.disabled,sso_id:n.sso_id||"",allow_ldap:!!n.allow_ldap,otp:!!n.otp_secret}}):r.json({code:404,message:"User not found",data:null},404)});Un.post("/create",async r=>{let e=await r.req.json().catch(()=>({}));if(!e.username)return r.json({code:400,message:"Username is required",data:null},400);let t=await ne(r.env);if(t.users||(t.users=[]),t.users.some(l=>l.username===e.username))return r.json({code:400,message:"Username already exists",data:null},400);let s=t.users.reduce((l,d)=>Math.max(l,d.id||0),0)+1,o=e.password||"",a=null;o||(a=KA(),o=a);let c={id:s,username:e.username,role:e.role!==void 0?parseInt(e.role,10):0,permission:e.permission!==void 0?parseInt(e.permission,10):0,base_path:e.base_path||"/",disabled:!!e.disabled,sso_id:e.sso_id||"",allow_ldap:!!e.allow_ldap,pwd_update_at:new Date().toISOString()};return await _i(c,o),t.users.push(c),await fe(t,r.env),r.json({code:200,message:a?"success (a random password was generated \u2014 pass one explicitly to choose your own)":"success",data:a?{password:a}:null})});Un.post("/update",async r=>{let e=await r.req.json().catch(()=>({}));if(!e.id)return r.json({code:400,message:"User ID is required",data:null},400);let t=parseInt(e.id,10),i=await ne(r.env);i.users||(i.users=[]);let n=i.users.findIndex(o=>o.id===t);if(n===-1)return r.json({code:404,message:"User not found",data:null},404);let s=i.users[n];if(e.username&&e.username!==s.username){if(i.users.some(a=>a.id!==t&&a.username===e.username))return r.json({code:400,message:"Username already in use",data:null},400);s.username=e.username}return e.password&&e.password.trim()!==""&&await _i(s,e.password.trim()),e.role!==void 0&&(s.role=parseInt(e.role,10)),e.permission!==void 0&&(s.permission=parseInt(e.permission,10)),e.base_path!==void 0&&(s.base_path=e.base_path),e.disabled!==void 0&&(s.disabled=!!e.disabled),e.sso_id!==void 0&&(s.sso_id=e.sso_id),e.allow_ldap!==void 0&&(s.allow_ldap=!!e.allow_ldap),i.users[n]=s,await fe(i,r.env),r.json({code:200,message:"success",data:null})});var Cq=async r=>{let e=r.req.query("id");if(!e)return r.json({code:400,message:"Missing id parameter",data:null},400);let t=parseInt(e,10);if(t===1)return r.json({code:400,message:"Cannot delete primary admin user",data:null},400);let i=await ne(r.env);return i.users||(i.users=[]),i.users=i.users.filter(n=>n.id!==t),await fe(i,r.env),r.json({code:200,message:"success",data:null})};Un.post("/delete",Cq);Un.post("/cancel",Cq);Un.get("/sshkey/list",async r=>{let e=parseInt(r.req.query("uid")||"0",10),t=await tu(e,r.env);return r.json({code:200,message:"success",data:{content:t,total:t.length}})});Un.post("/sshkey/delete",async r=>{let e=parseInt(r.req.query("uid")||"0",10),t=r.req.query("id");if(!e||!t)return r.json({code:400,message:"Missing uid or id parameter",data:null},400);if(!await Ew(e,t,r.env))return r.json({code:404,message:"SSH key not found",data:null},404);let n=await tu(e,r.env);return r.json({code:200,message:"success",data:n})});Un.post("/cancel_2fa",async r=>{let e=parseInt(r.req.query("id")||"0",10);if(!e)return r.json({code:400,message:"Missing id parameter",data:null},400);let t=await ne(r.env),i=(t.users||[]).find(n=>n.id===e);return i?(delete i.otp_secret,await fe(t,r.env),r.json({code:200,message:"success",data:null})):r.json({code:404,message:"User not found",data:null},404)});var Eq=async r=>{let e=r.req.header("Authorization");if(!e)return r.json({code:401,message:"Unauthorized",data:null},401);let t=e.startsWith("Bearer ")?e.substring(7):e;try{let i=await vr(r),n=await lo(t,i,"HS256"),s=await r.req.json().catch(()=>({})),o=s.old_password||"",a=s.new_password||"";if(!a)return r.json({code:400,message:"New password is required",data:null},400);let c=await ne(r.env);c.users||(c.users=[]);let l=c.users.findIndex(u=>u.id===n.id||u.username===n.username);if(l===-1)return r.json({code:404,message:"User not found",data:null},404);let d=c.users[l];return!d.password||!await HA(d,o)?r.json({code:400,message:"Incorrect old password",data:null},400):(await _i(d,a),c.users[l]=d,await fe(c,r.env),r.json({code:200,message:"success",data:null}))}catch(i){return r.json({code:401,message:`Unauthorized: ${i.message||"Invalid token"}`,data:null},401)}};var Ue=new Xe;Ue.use("*",async(r,e)=>{if(!await qd(r))return r.json({code:401,message:"Unauthorized",data:null});await e()});function Kse(r=32){let e="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789",t=new Uint8Array(r);if(typeof crypto<"u"&&typeof crypto.getRandomValues=="function")crypto.getRandomValues(t);else for(let n=0;n<r;n++)t[n]=(Math.random()*256|0)^Date.now()&255;let i="";for(let n=0;n<r;n++)i+=e.charAt(t[n]%e.length);return i}Ue.get("/storage/list",async r=>{let t=(await ne(r.env)).storages||[];return r.json({code:200,message:"success",data:{content:t,total:t.length}})});Ue.post("/storage/load_all",async r=>{let e=await ne(r.env),t=[],i=0,n=0;for(let s of e.storages||[])if(!s.disabled)try{await lt(s.driver,s),i++,t.push({id:s.id,mount_path:s.mount_path,driver:s.driver,status:"ok"})}catch(o){n++,t.push({id:s.id,mount_path:s.mount_path,driver:s.driver,status:"failed",error:o?.message||String(o)})}return r.json({code:200,message:"success",data:{loaded:i,failed:n,results:t}})});Ue.get("/storage/get",async r=>{let e=parseInt(r.req.query("id")||"0",10),i=(await ne(r.env)).storages.find(n=>n.id===e);return i?r.json({code:200,message:"success",data:i}):r.json({code:404,message:"storage not found",data:null})});var bq=r=>{let e=(r||"").toLowerCase().replace(/[^a-z0-9]/g,"");if(!e)return"";let i=Object.keys(iu).find(n=>n.toLowerCase()===e||n.toLowerCase().replace(/[^a-z0-9]/g,"")===e);return i||(e.startsWith("115")?"115Open":e.startsWith("123")?"123Pan":e.includes("aliyun")?"AliyundriveOpen":e.startsWith("baidu")?"BaiduNetdisk":e.startsWith("189")||e.includes("cloud189")||e.includes("ctyun")?"Cloud189":e==="onedriveapp"?"OnedriveAPP":e.startsWith("onedrive")?"Onedrive":e.startsWith("google")||e.includes("gdrive")?"GoogleDrive":(e.includes("thunder")||e.includes("xunlei"))&&e.includes("expert")?"ThunderExpert":e.includes("thunder")||e.includes("xunlei")?"Thunder":e==="webdav"||e==="webdavdriver"?"WebDav":e==="wopan"||e.includes("unicom")||e.includes("woyun")?"WoPan":e==="quark"||e==="quarkuc"||e==="uc"?"Quark":["s3","doge","dogecloud","minio","ceph","aws","r2","b2","cos","oss","kodo"].includes(e)?"S3":e.startsWith("github")?"Github":e==="local"?"Local":e.includes("pikpak")?"PikPak":e.includes("seafile")?"Seafile":e.includes("yandex")?"YandexDisk":e.includes("terabox")||e.includes("dubox")?"Terabox":e.includes("mediatrack")||e.includes("fenmiao")?"MediaTrack":e.includes("alias")?"Alias":r||"")},vq=(r,e)=>{let t="";if(typeof e=="object"&&e!==null)try{t=JSON.stringify(e)}catch{t="{}"}else t=String(e||"{}");let i=(r||"").toLowerCase();if(i.includes("thunder")||i.includes("xunlei"))try{let n=JSON.parse(t||"{}");if(!n.device_id||typeof n.device_id!="string"||n.device_id.trim().length!==32){let s=typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID().replace(/-/g,""):Math.random().toString(16).substring(2).padEnd(16,"0")+Math.random().toString(16).substring(2).padEnd(16,"0");return n.device_id=s.slice(0,32),JSON.stringify(n)}}catch{}return t};Ue.post("/storage/create",async r=>{let e=await r.req.json().catch(()=>({})),t=await ne(r.env);if(!e.driver||typeof e.driver!="string"||e.driver.trim()===""||e.driver==="undefined"||e.driver==="null")return r.json({code:400,message:"Storage driver is required",data:null},400);let i=e.mount_path;if(!i||String(i).trim()===""){let c=iu[e.driver]?.default_mount_path;c&&(i=c)}let n="/"+String(i||"").split("/").filter(Boolean).join("/");if(t.storages.some(c=>!c.disabled&&"/"+(c.mount_path||"").split("/").filter(Boolean).join("/")===n))return r.json({code:400,message:`mount path already exists: ${n}`,data:null});let s=bq(e.driver),o=vq(s,e.addition||"{}"),a={...e,driver:s,addition:o,mount_path:n,id:t.storages.length?Math.max(...t.storages.map(c=>c.id))+1:1,status:"work",modified:new Date().toISOString()};t.storages.push(a);try{await fe(t,r.env)}catch(c){return t.storages.pop(),r.json({code:500,message:`Failed to save storage config: ${c.message||String(c)}`,data:null})}if(!a.disabled){try{await lt(a.driver,a),a.status="work"}catch(c){a.status=c.message||String(c),String(c.message||c).includes("unsupported driver")&&(a.disabled=!0);try{await fe(t,r.env)}catch(l){console.error("[admin/storage/create] Failed to update storage status:",l)}return r.json({code:500,message:c.message||String(c),data:a})}try{await fe(t,r.env)}catch(c){console.error("[admin/storage/create] Failed to update storage status after connection:",c)}}return r.json({code:200,message:"success",data:a})});Ue.post("/storage/update",async r=>{let e=await r.req.json().catch(()=>({})),t=await ne(r.env),i=e.mount_path;if(!i||String(i).trim()===""){let o=iu[e.driver]?.default_mount_path;o&&(i=o)}let n=String(i||"").trim()!==""?"/"+String(i||"").split("/").filter(Boolean).join("/"):void 0;if(n&&t.storages.some(o=>o.id!==e.id&&!o.disabled&&"/"+(o.mount_path||"").split("/").filter(Boolean).join("/")===n))return r.json({code:400,message:`mount path already exists: ${n}`,data:null});let s=t.storages.findIndex(o=>o.id===e.id);if(s!==-1){let o=e.driver||t.storages[s].driver,a=bq(o),c=vq(a,e.addition!==void 0?e.addition:t.storages[s].addition||"{}"),l={...t.storages[s],...e,driver:a,addition:c,mount_path:n||t.storages[s].mount_path,modified:new Date().toISOString()};if(!l.disabled)try{await(await lt(l.driver,l)).init?.(),l.status="work"}catch(d){return l.status=d.message||String(d),String(d.message||d).includes("unsupported driver")&&(l.disabled=!0),t.storages[s]=l,await fe(t,r.env),r.json({code:500,message:d.message||String(d),data:{id:l.id}})}t.storages[s]=l,await fe(t,r.env)}return r.json({code:200,message:"success",data:null})});Ue.post("/storage/delete",async r=>{let e=parseInt(r.req.query("id")||"0",10),t=await ne(r.env);return t.storages=t.storages.filter(i=>i.id!==e),await fe(t,r.env),r.json({code:200,message:"success",data:null})});Ue.post("/storage/enable",async r=>{let e=parseInt(r.req.query("id")||"0",10),t=await ne(r.env),i=t.storages.find(n=>n.id===e);return i&&(i.disabled=!1,i.modified=new Date().toISOString(),await fe(t,r.env),(async()=>{try{await(await lt(i.driver,i)).init?.();let s=await ne(r.env),o=s.storages.find(a=>a.id===e);o&&!o.disabled&&(o.status="work",o.modified=new Date().toISOString(),await fe(s,r.env))}catch(n){let s=await ne(r.env),o=s.storages.find(a=>a.id===e);o&&!o.disabled&&(o.status=n.message||String(n),await fe(s,r.env))}})()),r.json({code:200,message:"success",data:null})});Ue.post("/storage/disable",async r=>{let e=parseInt(r.req.query("id")||"0",10),t=await ne(r.env),i=t.storages.find(n=>n.id===e);return i&&(i.disabled=!0,await fe(t,r.env)),r.json({code:200,message:"success",data:null})});Ue.get("/driver/names",r=>r.json({code:200,message:"success",data:["AliyundriveOpen","GoogleDrive","Onedrive","OnedriveAPP","Quark","123Pan","BaiduNetdisk","115Open","GitHub API","Thunder","ThunderExpert","189Cloud","WoPan","Lanzou","WebDav","S3","Doge","PikPak","Seafile","YandexDisk","Terabox","MediaTrack","Alias","Dropbox","WPS","139Yun","Mega_nz","115Share","123PanShare","AliyundriveShare","OnedriveSharelink","PikPakShare","SMB","Crypt","Virtual","AListV3","UrlTree","Strm","AzureBlob","USS","Alidoc","Emby","BunnyStorage","CloudflareImgbed","GuangYaPan","AutoIndex","ProtonDrive"]}));var Ft=[{name:"mount_path",type:"string",default:"",required:!0},{name:"order",type:"number",default:"0",required:!1},{name:"remark",type:"string",default:"",required:!1},{name:"cache_expiration",type:"number",default:"30",required:!1,help:"\u76EE\u5F55\u5185\u5BB9\u7F13\u5B58\u65F6\u957F\uFF08\u5206\u949F\uFF09"}],Pt={name:"custom_cache_policies",type:"text",default:"",required:!1,help:'\u6309\u8DEF\u5F84\u8986\u76D6\u7F13\u5B58\u65F6\u957F\uFF0CJSON \u683C\u5F0F\uFF0C\u5982 [{"path":"/photos/*","cache_expiration":1440}]'},Tt={name:"enable_sign",type:"bool",default:"false",required:!0,help:"Enable signature validation for this storage"},Ut={name:"disable_index",type:"bool",default:"false",required:!1,help:"Disable directory listing for this storage"};function Gse(){return{name:"proxy_range",type:"bool",default:"true",required:!1,help:"Need to enable proxy"}}var Bq={name:"web_proxy",type:"bool",default:"false",required:!1},Hb={name:"webdav_policy",type:"select",options:"302_redirect,use_proxy_url,native_proxy",default:"302_redirect",required:!1};function Rt(r=""){let e=rl(r),t=hq.has(e)?[Gse()]:[];if(pq(e))return[...t,{...Hb,options:"use_proxy_url,native_proxy",default:"native_proxy"}];let i=Lb(e);return[...t,i?{...Bq,default:"true"}:{...Bq},i?{...Hb,default:"native_proxy"}:{...Hb}]}var er={name:"seed_policy",type:"select",options:"inherit,on,off",default:"inherit",required:!0,help:"Override automatic transfer-seed generation for this storage"},nl={name:"down_proxy_url",type:"string",default:"",required:!1,help:"\u81EA\u5B9A\u4E49\u4E0B\u8F7D\u4EE3\u7406\u5730\u5740\uFF08\u652F\u6301 $path \u5360\u4F4D\u7B26\uFF1B\u7559\u7A7A\u5219\u7528\u672C\u670D\u52A1\u4EE3\u7406\uFF09"},Nt={name:"disable_proxy_sign",type:"bool",default:"false",required:!1,help:"Disable sign for Download proxy URL"},mt=[...Ft,Pt,Tt,Ut,...Rt(),nl,Nt,er],iu={AliyundriveOpen:{name:"AliyundriveOpen",default_mount_path:"/aliyundrive",common:mt,additional:[{name:"refresh_token",type:"text",default:"",required:!0,help:"true"},{name:"drive_type",type:"select",options:"resource,backup,default",default:"resource",required:!0},{name:"drive_id",type:"string",default:"",required:!1},{name:"root_folder_id",type:"string",default:"root",required:!0},{name:"order_by",type:"select",options:"updated_at,name,size,created_at",default:"updated_at",required:!1},{name:"order_direction",type:"select",options:"DESC,ASC",default:"DESC",required:!1},{name:"api_url_address",type:"string",default:"https://api.oplist.org/alicloud/renewapi",required:!1,help:"true"},{name:"alipan_type",type:"select",options:"alipanQR,alipanTV",default:"alipanQR",required:!1},{name:"client_id",type:"string",default:"",required:!1},{name:"client_secret",type:"string",default:"",required:!1},{name:"remove_way",type:"select",options:"trash,delete",default:"trash",required:!1}],config:{name:"AliyundriveOpen",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"root"}},Onedrive:{name:"Onedrive",default_mount_path:"/onedrive",common:[...Ft,Pt,Tt,Ut,...Rt("Onedrive"),nl,Nt],additional:[{name:"root_folder_path",type:"string",default:"/",required:!0},{name:"region",type:"select",options:"global,cn,us,de",default:"global",required:!0},{name:"is_sharepoint",type:"bool",default:"false",required:!1},{name:"use_online_api",type:"bool",default:"true",required:!1},{name:"api_url_address",type:"string",default:"https://api.oplist.org/onedrive/renewapi",required:!1},{name:"client_id",type:"string",default:"",required:!1},{name:"client_secret",type:"string",default:"",required:!1},{name:"redirect_uri",type:"string",default:"https://api.oplist.org/onedrive/callback",required:!0},{name:"refresh_token",type:"string",default:"",required:!0},{name:"site_id",type:"string",default:"",required:!1},{name:"chunk_size",type:"number",default:"5",required:!1},{name:"custom_host",type:"string",default:"",required:!1,help:"true"},{name:"disable_disk_usage",type:"bool",default:"false",required:!1,help:"true"},{name:"enable_direct_upload",type:"bool",default:"false",required:!1,help:"true"},{name:"order_by",type:"select",options:"filename,modified_time,size",default:"filename",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1}],config:{name:"Onedrive",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"/"}},OnedriveAPP:{name:"OnedriveAPP",default_mount_path:"/onedrive_app",common:[...Ft,Pt,Tt,Ut,...Rt("OnedriveAPP"),nl,Nt],additional:[{name:"root_folder_path",type:"string",default:"/",required:!0},{name:"region",type:"select",options:"global,cn,us,de",default:"global",required:!0},{name:"client_id",type:"string",default:"",required:!0},{name:"client_secret",type:"string",default:"",required:!0},{name:"tenant_id",type:"string",default:"",required:!0},{name:"email",type:"string",default:"",required:!0},{name:"chunk_size",type:"number",default:"5",required:!1},{name:"custom_host",type:"string",default:"",required:!1,help:"true"},{name:"disable_disk_usage",type:"bool",default:"false",required:!1,help:"true"},{name:"enable_direct_upload",type:"bool",default:"false",required:!1,help:"true"},{name:"order_by",type:"select",options:"filename,modified_time,size",default:"filename",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1}],config:{name:"OnedriveAPP",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"/"}},GoogleDrive:{name:"GoogleDrive",default_mount_path:"/google-drive",common:[...Ft,Pt,Tt,Ut,...Rt("GoogleDrive"),Nt,er],additional:[{name:"refresh_token",type:"text",default:"",required:!0,help:"true"},{name:"root_folder_id",type:"string",default:"root",required:!1},{name:"order_by",type:"select",options:"folder,name,modifiedTime desc",default:"folder,name,modifiedTime desc",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1},{name:"api_url_address",type:"string",default:"https://api.alist.nn.ci/googledrive/token",required:!1,help:"true"},{name:"use_online_api",type:"bool",default:"true",required:!1},{name:"client_id",type:"string",default:"",required:!1},{name:"client_secret",type:"string",default:"",required:!1},{name:"chunk_size",type:"number",default:"5",required:!1}],config:{name:"GoogleDrive",local_sort:!0,only_local:!1,only_proxy:!0,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"root"}},Quark:{name:"Quark",default_mount_path:"/quark",common:mt,additional:[{name:"variant",type:"select",options:"Quark,UC",default:"Quark",required:!0},{name:"cookie",type:"text",default:"",required:!0,help:"true"},{name:"root_folder_id",type:"string",default:"0",required:!0},{name:"order_by",type:"select",options:"none,file_type,file_name,updated_at",default:"none",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1},{name:"use_transcoding_address",type:"bool",default:"false",required:!1},{name:"only_list_video_file",type:"bool",default:"false",required:!1}],config:{name:"Quark",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"0"}},"123Pan":{name:"123Pan",default_mount_path:"/123",common:[...Ft,Pt,Tt,Ut,...Rt("123Pan"),Nt,er],additional:[{name:"username",type:"string",default:"",required:!0},{name:"password",type:"string",default:"",required:!0},{name:"access_token",type:"string",default:"",required:!1,help:"\u767B\u5F55\u4EE4\u724C\uFF08\u53EF\u9009\uFF0C\u81EA\u52A8\u6301\u4E45\u5316\uFF0C\u65E0\u9700\u624B\u52A8\u586B\u5199\uFF09\u3002\u4EC5\u9700\u586B\u5199\u4E0A\u65B9 123 \u7F51\u76D8\u624B\u673A\u53F7\u548C\u5BC6\u7801\uFF0C\u767B\u5F55\u540E\u81EA\u52A8\u83B7\u53D6\u5E76\u4FDD\u5B58\uFF0C\u8DF3\u8FC7\u91CD\u590D\u767B\u5F55\u53EF\u907F\u514D\u5883\u5916 IP \u89E6\u53D1\u98CE\u63A7\u3002"},{name:"cookie",type:"text",default:"",required:!1,help:"\u6D4F\u89C8\u5668 Cookie\uFF08\u53EF\u9009\uFF09\u3002\u5728 123 \u7F51\u76D8\u7F51\u9875\u767B\u5F55\u540E\uFF0C\u4ECE\u5F00\u53D1\u8005\u5DE5\u5177\u590D\u5236\u8BF7\u6C42\u5934\u4E2D\u7684 Cookie \u6574\u4E32\u7C98\u8D34\u4E8E\u6B64\uFF08\u542B sso-token\uFF09\uFF0C\u6216\u4ECE Authorization: Bearer <token> \u4E2D\u590D\u5236 token/Bearer \u503C\u3002\u89E3\u6790\u51FA\u7684 JWT \u4F1A\u4F5C\u4E3A Bearer \u4EE4\u724C\u4F7F\u7528\uFF0C\u6548\u679C\u7B49\u540C\u8BBF\u95EE\u4EE4\u724C\uFF0C\u9002\u5408\u8D26\u53F7\u5BC6\u7801\u767B\u5F55\u88AB\u98CE\u63A7\u62E6\u622A\u7684\u73AF\u5883\u3002"},{name:"root_id",type:"string",default:"0",required:!1},{name:"upload_thread",type:"number",default:"3",required:!1,help:"the threads of upload"},{name:"platform",type:"string",default:"web",required:!1,help:"the platform header value, sent with API requests"},{name:"order_by",type:"select",options:"file_id,file_name,size,created_at,updated_at",default:"file_id",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"desc",required:!1}],config:{name:"123Pan",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"0"}},BaiduNetdisk:{name:"BaiduNetdisk",default_mount_path:"/baidu",common:[...Ft,Pt,Tt,Ut,...Rt("BaiduNetdisk"),Nt,er],additional:[{name:"refresh_token",type:"text",default:"",required:!0,help:"true"},{name:"access_token",type:"string",default:"",required:!0,help:"\u8BBF\u95EE\u4EE4\u724C\uFF08\u5FC5\u586B\uFF09\u3002\u901A\u8FC7 https://api.oplist.org/ \u83B7\u53D6\u3002\u82E5\u4EE4\u724C\u5931\u6548\uFF0C\u6302\u8F7D\u65F6\u4F1A\u81EA\u52A8\u6839\u636E refresh_token \u901A\u8FC7\u5728\u7EBF API \u6362\u65B0\u5E76\u6301\u4E45\u5316\u3002"},{name:"use_online_api",type:"bool",default:"true",required:!1,help:"\u4F7F\u7528\u5728\u7EBF API \u5237\u65B0 token\uFF08\u65E0\u9700 ClientID/ClientSecret\uFF09"},{name:"api_url_address",type:"string",default:"https://api.oplist.org/baiduyun/renewapi",required:!1},{name:"client_id",type:"string",default:"",required:!1},{name:"client_secret",type:"string",default:"",required:!1},{name:"download_api",type:"select",options:"official,crack,crack_video",default:"official",required:!1},{name:"custom_crack_ua",type:"string",default:"netdisk",required:!0},{name:"order_by",type:"select",options:"name,time,size",default:"name",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1},{name:"only_list_video_file",type:"bool",default:"false",required:!1},{name:"upload_thread",type:"string",default:"3",required:!1,help:"1<=thread<=32"},{name:"upload_timeout",type:"number",default:"60",required:!1,help:"per-slice upload timeout in seconds"},{name:"custom_upload_part_size",type:"number",default:"0",required:!1,help:"0 for auto"},{name:"use_dynamic_upload_api",type:"bool",default:"true",required:!1,help:"dynamically get upload api domain, when enabled, the 'Upload API' setting will be used as a fallback if failed to get"},{name:"upload_api",type:"string",default:"https://d.pcs.baidu.com",required:!1},{name:"low_bandwith_upload_mode",type:"bool",default:"false",required:!1}],config:{name:"BaiduNetdisk",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"/"}},"115Open":{name:"115Open",default_mount_path:"/115",common:[...Ft,Pt,Tt,Ut,...Rt("115Open"),Nt,er],additional:[{name:"access_token",type:"string",default:"",required:!0,help:"\u8BBF\u95EE\u4EE4\u724C\uFF08\u5FC5\u586B\uFF09\u3002\u901A\u8FC7 115 \u5F00\u653E\u5E73\u53F0\u83B7\u53D6\uFF1B\u5931\u6548\u65F6\u81EA\u52A8\u7528 refresh_token \u5237\u65B0\u5E76\u6301\u4E45\u5316\u3002"},{name:"refresh_token",type:"string",default:"",required:!0,help:"\u5237\u65B0\u4EE4\u724C\uFF08\u5FC5\u586B\uFF09\u3002\u901A\u8FC7 115 \u5F00\u653E\u5E73\u53F0\u83B7\u53D6\uFF1Baccess_token \u5931\u6548\u65F6\u81EA\u52A8\u5237\u65B0\u3002"},{name:"root_id",type:"string",default:"0",required:!1,help:"\u6839\u6587\u4EF6\u5939 ID\uFF0C\u9ED8\u8BA4 0\uFF08\u6839\u76EE\u5F55\uFF09"},{name:"order_by",type:"select",options:"file_name,file_size,user_utime,file_type",default:"file_name",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1},{name:"page_size",type:"number",default:"200",required:!1,help:"list api per page size (1~1150)"},{name:"limit_rate",type:"float",default:"1",required:!1,help:"limit all api request rate ([limit]r/1s)\uFF0C0 \u8868\u793A\u4E0D\u9650\u901F"}],config:{name:"115Open",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"0"}},"GitHub API":{name:"GitHub API",default_mount_path:"/github",common:mt,additional:[{name:"root_folder_path",type:"string",default:"/",required:!0},{name:"token",type:"string",default:"",required:!0},{name:"owner",type:"string",default:"",required:!0},{name:"repo",type:"string",default:"",required:!0},{name:"ref",type:"string",default:"",required:!1,help:"A branch, a tag or a commit SHA, default branch by default."},{name:"gh_proxy",type:"string",default:"",required:!1,help:"GitHub proxy, e.g. https://ghproxy.net/raw.githubusercontent.com"},{name:"committer_name",type:"string",default:"",required:!1},{name:"committer_email",type:"string",default:"",required:!1},{name:"author_name",type:"string",default:"",required:!1},{name:"author_email",type:"string",default:"",required:!1},{name:"mkdir_commit_message",type:"text",default:"{{.UserName}} mkdir {{.ObjPath}}",required:!1},{name:"delete_commit_message",type:"text",default:"{{.UserName}} remove {{.ObjPath}}",required:!1},{name:"put_commit_message",type:"text",default:"{{.UserName}} upload {{.ObjPath}}",required:!1},{name:"rename_commit_message",type:"text",default:"{{.UserName}} rename {{.ObjPath}} to {{.TargetName}}",required:!1},{name:"copy_commit_message",type:"text",default:"{{.UserName}} copy {{.ObjPath}} to {{.TargetPath}}",required:!1},{name:"move_commit_message",type:"text",default:"{{.UserName}} move {{.ObjPath}} to {{.TargetPath}}",required:!1},{name:"order_by",type:"select",options:"name,size,modified",default:"name",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1}],config:{name:"GitHub API",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"/"}},Thunder:{name:"Thunder",default_mount_path:"/thunder",common:mt,additional:[{name:"root_folder_id",type:"string",default:"",required:!1},{name:"username",type:"string",default:"",required:!0},{name:"password",type:"string",default:"",required:!0},{name:"captcha_token",type:"string",default:"",required:!1},{name:"credit_key",type:"string",default:"",required:!1,help:"credit key, used for login"},{name:"device_id",type:"string",default:"",required:!1,help:"32 hex characters"},{name:"space",type:"string",default:"",required:!1,help:"device id for remote device"},{name:"order_by",type:"select",options:"name,size,modified",default:"name",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1}],config:{name:"Thunder",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:""}},ThunderExpert:{name:"ThunderExpert",default_mount_path:"/thunderexpert",common:mt,additional:[{name:"root_folder_id",type:"string",default:"",required:!1},{name:"login_type",type:"select",options:"user,refresh_token",default:"user",required:!0},{name:"sign_type",type:"select",options:"algorithms,captcha_sign",default:"algorithms",required:!0},{name:"username",type:"string",default:"",required:!1,help:"login type is user, this is required"},{name:"password",type:"string",default:"",required:!1,help:"login type is user, this is required"},{name:"refresh_token",type:"string",default:"",required:!1,help:"login type is refresh_token, this is required"},{name:"algorithms",type:"string",default:"9uJNVj/wLmdwKrJaVj/omlQ,Oz64Lp0GigmChHMf/6TNfxx7O9PyopcczMsnf,Eb+L7Ce+Ej48u,jKY0,ASr0zCl6v8W4aidjPK5KHd1Lq3t+vBFf41dqv5+fnOd,wQlozdg6r1qxh0eRmt3QgNXOvSZO6q/GXK,gmirk+ciAvIgA/cxUUCema47jr/YToixTT+Q6O,5IiCoM9B1/788ntB,P07JH0h6qoM6TSUAK2aL9T5s2QBVeY9JWvalf,+oK0AN",required:!1},{name:"captcha_sign",type:"string",default:"",required:!1},{name:"timestamp",type:"string",default:"",required:!1},{name:"captcha_token",type:"string",default:"",required:!1},{name:"credit_key",type:"string",default:"",required:!1,help:"credit key, used for login"},{name:"device_id",type:"string",default:"",required:!1},{name:"client_id",type:"string",default:"",required:!0,help:"\u8FC5\u96F7\u5F00\u653E\u5E73\u53F0 OAuth client_id\uFF08\u5FC5\u586B\uFF09\u3002"},{name:"client_secret",type:"string",default:"",required:!0,help:"\u8FC5\u96F7\u5F00\u653E\u5E73\u53F0 OAuth client_secret\uFF08\u5FC5\u586B\uFF09\u3002"},{name:"client_version",type:"string",default:"8.31.0.9726",required:!0},{name:"package_name",type:"string",default:"com.xunlei.downloadprovider",required:!0},{name:"user_agent",type:"string",default:"ANDROID-com.xunlei.downloadprovider/8.31.0.9726 netWorkType/5G appid/40 deviceName/Xiaomi_M2004j7ac deviceModel/M2004J7AC OSVersion/12 protocolVersion/301 platformVersion/10 sdkVersion/512000 Oauth2Client/0.9 (Linux 4_14_186-perf-gddfs8vbb238b) (JAVA 0)",required:!0},{name:"download_user_agent",type:"string",default:"Dalvik/2.1.0 (Linux; U; Android 12; M2004J7AC Build/SP1A.210812.016)",required:!0},{name:"use_video_url",type:"bool",default:"false",required:!1},{name:"space",type:"string",default:"",required:!1,help:"device id for remote device"},{name:"order_by",type:"select",options:"name,size,modified",default:"name",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1}],config:{name:"ThunderExpert",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:""}},"189Cloud":{name:"189Cloud",default_mount_path:"/189",common:[...Ft,Pt,Tt,Ut,...Rt("189Cloud"),Nt,er],additional:[{name:"username",type:"string",default:"",required:!0,help:"the phone number used to log in"},{name:"password",type:"string",default:"",required:!0,help:"password for login"},{name:"cookie",type:"text",default:"",required:!1,help:"Fill in the cookie if need captcha (\u82E5\u9047\u6ED1\u5757\u9A8C\u8BC1\u7801\u6216\u8BBE\u5907\u9501\uFF0C\u53EF\u5728\u6D4F\u89C8\u5668\u767B\u5F55\u540E\u590D\u5236 Cookie \u586B\u5165)"},{name:"root_folder_id",type:"string",default:"-11",required:!1,help:"\u6839\u6587\u4EF6\u5939ID\uFF0C\u9ED8\u8BA4\u4E3A -11\uFF08\u4E2A\u4EBA\u4E91\u6839\u76EE\u5F55\uFF09"},{name:"order_by",type:"select",options:"lastOpTime,filename,fileSize",default:"lastOpTime",required:!1},{name:"order_direction",type:"select",options:"desc,asc",default:"desc",required:!1}],config:{name:"189Cloud",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"-11"}},Lanzou:{name:"Lanzou",default_mount_path:"/lanzou",common:mt,additional:[{name:"type",type:"select",options:"cookie,account,url",default:"cookie",required:!0},{name:"account",type:"string",default:"",required:!1,help:"\u8D26\u53F7\uFF08\u624B\u673A\u53F7/UID\uFF09\uFF0C\u4EC5 account \u6A21\u5F0F\u9700\u586B\u5199"},{name:"password",type:"string",default:"",required:!1,help:"\u5BC6\u7801\uFF0C\u4EC5 account \u6A21\u5F0F\u9700\u586B\u5199"},{name:"cookie",type:"text",default:"",required:!1,help:"\u767B\u5F55 Cookie\uFF08\u542B ylogin, phpdisk_info \u7B49\uFF09\uFF0Ccookie \u6A21\u5F0F\u9700\u586B\u5199\uFF1B\u6709\u6548\u671F\u7EA6 15 \u5929"},{name:"root_folder_id",type:"string",default:"-1",required:!1,help:"\u6839\u6587\u4EF6\u5939 ID / \u5206\u4EAB ID\uFF08\u4E2A\u4EBA\u76D8\u9ED8\u8BA4 -1\uFF0C\u5206\u4EAB\u94FE\u63A5\u586B\u5206\u4EAB ID \u5982 b00xxxx\uFF09"},{name:"share_password",type:"string",default:"",required:!1,help:"\u63D0\u53D6\u7801 / \u8BBF\u95EE\u5BC6\u7801\uFF08\u65E0\u5BC6\u7801\u7559\u7A7A\uFF09"},{name:"baseUrl",type:"string",default:"https://pc.woozooo.com",required:!1,help:"\u57FA\u672C API \u57DF\u540D"},{name:"shareUrl",type:"string",default:"https://pan.lanzoui.com",required:!1,help:"\u5206\u4EAB\u9875\u9762\u89E3\u6790\u57DF\u540D"},{name:"user_agent",type:"string",default:"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Safari/537.36 Chrome/142.0.0.0 OpenList/42",required:!0,help:"\u53D1\u9001\u7ED9\u84DD\u594F\u4E91 API \u4E0E\u76F4\u94FE\u89E3\u6790\u65F6\u643A\u5E26\u7684\u5BA2\u6237\u7AEF User-Agent"},{name:"repair_file_info",type:"bool",default:"false",required:!1,help:"\u901A\u8FC7 HEAD \u8BF7\u6C42\u4FEE\u6B63\u6587\u4EF6\u7CBE\u786E\u5927\u5C0F\u4E0E\u4FEE\u6539\u65F6\u95F4\uFF08WebDAV \u63A8\u8350\u5F00\u542F\uFF09"},{name:"order_by",type:"select",options:"name,size,time",default:"name",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1}],config:{name:"Lanzou",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"-1"}},WebDav:{name:"WebDav",default_mount_path:"/webdav",common:[...Ft,Pt,Tt,Ut,...Rt("WebDav"),nl,Nt,er],additional:[{name:"vendor",type:"select",options:"other,sharepoint",default:"other",required:!0},{name:"address",type:"string",default:"",required:!0},{name:"username",type:"string",default:"",required:!0},{name:"password",type:"string",default:"",required:!0},{name:"root_folder_path",type:"string",default:"/",required:!1},{name:"tls_insecure_skip_verify",type:"bool",default:"false",required:!1},{name:"order_by",type:"select",options:"name,size,modified",default:"name",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1}],config:{name:"WebDav",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"/"}},WoPan:{name:"WoPan",default_mount_path:"/wopan",common:mt,additional:[{name:"root_folder_id",type:"string",default:"0",required:!1},{name:"refresh_token",type:"text",default:"",required:!0},{name:"family_id",type:"string",default:"",required:!1,help:"true"},{name:"sort_rule",type:"select",options:"name_asc,name_desc,time_asc,time_desc,size_asc,size_desc",default:"name_asc",required:!1},{name:"access_token",type:"string",default:"",required:!1},{name:"order_by",type:"select",options:"name,size,modified",default:"name",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1}],config:{name:"WoPan",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"0",no_overwrite_upload:!0}},S3:{name:"S3",default_mount_path:"/s3",common:mt,additional:[{name:"root_folder_path",type:"string",default:"/",required:!1},{name:"bucket",type:"string",default:"",required:!0},{name:"endpoint",type:"string",default:"",required:!0},{name:"region",type:"string",default:"",required:!1},{name:"access_key_id",type:"string",default:"",required:!0},{name:"secret_access_key",type:"string",default:"",required:!0},{name:"session_token",type:"string",default:"",required:!1},{name:"custom_host",type:"string",default:"",required:!1},{name:"enable_custom_host_presign",type:"bool",default:"false",required:!1},{name:"sign_url_expire",type:"number",default:"4",required:!1},{name:"placeholder",type:"string",default:"",required:!1},{name:"force_path_style",type:"bool",default:"false",required:!1},{name:"list_object_version",type:"select",options:"v1,v2",default:"v1",required:!1},{name:"remove_bucket",type:"bool",default:"false",required:!1,help:"true"},{name:"add_filename_to_disposition",type:"bool",default:"false",required:!1,help:"true"},{name:"enable_direct_upload",type:"bool",default:"false",required:!1},{name:"direct_upload_host",type:"string",default:"",required:!1},{name:"user_agent",type:"string",default:"",required:!1,help:"true"},{name:"order_by",type:"select",options:"name,size,modified",default:"name",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1}],config:{name:"S3",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"/",check_status:!0}},Doge:{name:"Doge",default_mount_path:"/doge",common:mt,additional:[{name:"root_folder_path",type:"string",default:"/",required:!1},{name:"bucket",type:"string",default:"",required:!0},{name:"endpoint",type:"string",default:"",required:!0},{name:"region",type:"string",default:"",required:!1},{name:"access_key_id",type:"string",default:"",required:!0},{name:"secret_access_key",type:"string",default:"",required:!0},{name:"session_token",type:"string",default:"",required:!1},{name:"custom_host",type:"string",default:"",required:!1},{name:"enable_custom_host_presign",type:"bool",default:"false",required:!1},{name:"sign_url_expire",type:"number",default:"4",required:!1},{name:"placeholder",type:"string",default:"",required:!1},{name:"force_path_style",type:"bool",default:"false",required:!1},{name:"list_object_version",type:"select",options:"v1,v2",default:"v1",required:!1},{name:"remove_bucket",type:"bool",default:"false",required:!1,help:"true"},{name:"add_filename_to_disposition",type:"bool",default:"false",required:!1,help:"true"},{name:"enable_direct_upload",type:"bool",default:"false",required:!1},{name:"direct_upload_host",type:"string",default:"",required:!1},{name:"user_agent",type:"string",default:"",required:!1,help:"true"},{name:"order_by",type:"select",options:"name,size,modified",default:"name",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1}],config:{name:"Doge",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"/",check_status:!0}},WeiYun:{name:"WeiYun",default_mount_path:"/weiyun",common:[...Ft,Pt,Tt,Ut,...Rt("WeiYun"),Nt,er],additional:[{name:"root_folder_id",type:"string",default:"",required:!1},{name:"cookies",type:"text",default:"",required:!0},{name:"order_by",type:"select",options:"name,size,updated_at",default:"name",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1},{name:"upload_thread",type:"string",default:"4",required:!1,help:"4<=thread<=32"}],config:{name:"WeiYun",local_sort:!1,only_local:!1,only_proxy:!0,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"",check_status:!0}},SFTP:{name:"SFTP",default_mount_path:"/sftp",common:[...Ft,Pt,Tt,Ut,...Rt("SFTP"),Nt,er],additional:[{name:"address",type:"string",default:"",required:!0,help:"SSH host:port (e.g. 127.0.0.1:22)"},{name:"username",type:"string",default:"",required:!0},{name:"password",type:"string",default:"",required:!1},{name:"private_key",type:"text",default:"",required:!1},{name:"passphrase",type:"string",default:"",required:!1},{name:"root_folder_path",type:"string",default:"/",required:!1},{name:"ignore_symlink_error",type:"bool",default:"false",required:!1,help:"Ignore symlink error"}],config:{name:"SFTP",local_sort:!0,only_local:!1,only_proxy:!0,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"/",check_status:!0,no_link_url:!0}},FTP:{name:"FTP",default_mount_path:"/ftp",common:[...Ft,Pt,Tt,Ut,...Rt("FTP"),Nt,er],additional:[{name:"address",type:"string",default:"",required:!0,help:"FTP host:port (e.g. 127.0.0.1:21)"},{name:"username",type:"string",default:"",required:!0},{name:"password",type:"string",default:"",required:!0},{name:"encoding",type:"string",default:"utf-8",required:!0,help:"Character encoding, e.g. utf-8, gbk, gb2312"},{name:"cwd_list",type:"bool",default:"false",required:!1,help:"Enter directory before listing"},{name:"root_folder_path",type:"string",default:"/",required:!1}],config:{name:"FTP",local_sort:!0,only_local:!1,only_proxy:!0,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"/",check_status:!0,no_link_url:!0}},PikPak:{name:"PikPak",default_mount_path:"/pikpak",common:mt,additional:[{name:"root_folder_id",type:"string",default:"",required:!1},{name:"username",type:"string",default:"",required:!0},{name:"password",type:"string",default:"",required:!0},{name:"platform",type:"select",options:"web,android,pc",default:"web",required:!0},{name:"refresh_token",type:"text",default:"",required:!1},{name:"captcha_token",type:"text",default:"",required:!1},{name:"device_id",type:"string",default:"",required:!1},{name:"disable_media_link",type:"bool",default:"true",required:!1},{name:"order_by",type:"select",options:"name,size,modified",default:"name",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1}],config:{name:"PikPak",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:""}},Seafile:{name:"Seafile",default_mount_path:"/seafile",common:mt,additional:[{name:"address",type:"string",default:"",required:!0},{name:"username",type:"string",default:"",required:!1},{name:"password",type:"string",default:"",required:!1},{name:"token",type:"string",default:"",required:!1},{name:"repo_id",type:"string",default:"",required:!1},{name:"repo_pwd",type:"string",default:"",required:!1},{name:"root_folder_path",type:"string",default:"/",required:!1},{name:"order_by",type:"select",options:"name,size,modified",default:"name",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1}],config:{name:"Seafile",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"/"}},YandexDisk:{name:"YandexDisk",default_mount_path:"/yandex",common:mt,additional:[{name:"refresh_token",type:"text",default:"",required:!0},{name:"root_folder_path",type:"string",default:"/",required:!1},{name:"use_online_api",type:"bool",default:"true",required:!1},{name:"api_url_address",type:"string",default:"https://api.oplist.org/yandexui/renewapi",required:!1},{name:"client_id",type:"string",default:"",required:!1},{name:"client_secret",type:"string",default:"",required:!1},{name:"order_by",type:"select",options:"name,path,created,modified,size",default:"name",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1}],config:{name:"YandexDisk",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"/"}},Terabox:{name:"Terabox",default_mount_path:"/terabox",common:[...Ft,Pt,Tt,Ut,...Rt("Terabox"),Nt,er],additional:[{name:"cookie",type:"text",default:"",required:!0},{name:"download_api",type:"select",options:"official,crack",default:"official",required:!1},{name:"root_folder_path",type:"string",default:"/",required:!1},{name:"order_by",type:"select",options:"name,time,size",default:"name",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1}],config:{name:"Terabox",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"/"}},MediaTrack:{name:"MediaTrack",default_mount_path:"/mediatrack",common:mt,additional:[{name:"access_token",type:"text",default:"",required:!0},{name:"project_id",type:"string",default:"",required:!1},{name:"root_folder_id",type:"string",default:"",required:!1},{name:"order_by",type:"select",options:"updated_at,title,size",default:"title",required:!1},{name:"order_desc",type:"bool",default:"false",required:!1}],config:{name:"MediaTrack",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:""}},Alias:{name:"Alias",default_mount_path:"/alias",common:[...Ft,Pt,Tt,Ut,...Rt("Alias"),nl,Nt,er],additional:[{name:"paths",type:"text",default:"",required:!0,help:"Newline-separated list of paths, e.g. /local or sub:/target"},{name:"read_conflict_policy",type:"select",options:"first,random,all",default:"first",required:!1},{name:"write_conflict_policy",type:"select",options:"disabled,first,deterministic,deterministic_or_all,all,all_strict",default:"disabled",required:!1},{name:"put_conflict_policy",type:"select",options:"disabled,first,deterministic,deterministic_or_all,all,all_strict,random,quota,quota_strict",default:"disabled",required:!1},{name:"order_by",type:"select",options:"name,size,modified",default:"name",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1}],config:{name:"Alias",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!0,no_upload:!1,need_ms:!1,default_root:"/"}},Dropbox:{name:"Dropbox",default_mount_path:"/dropbox",common:mt,additional:[{name:"root_folder_path",type:"string",default:"/",required:!1},{name:"use_online_api",type:"bool",default:"false",required:!1},{name:"api_url_address",type:"string",default:"https://api.oplist.org/dropboxs/renewapi",required:!1},{name:"client_id",type:"string",default:"",required:!1},{name:"client_secret",type:"string",default:"",required:!1},{name:"refresh_token",type:"text",default:"",required:!0},{name:"root_namespace_id",type:"string",default:"",required:!1},{name:"order_by",type:"select",options:"name,size,modified",default:"name",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1}],config:{name:"Dropbox",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"/"}},WPS:{name:"WPS",default_mount_path:"/wps",common:mt,additional:[{name:"root_folder_path",type:"string",default:"/",required:!1},{name:"cookie",type:"text",default:"",required:!0},{name:"mode",type:"select",options:"Personal,Business",default:"Personal",required:!1},{name:"custom_ua",type:"string",default:"",required:!1},{name:"order_by",type:"select",options:"name,size,modified",default:"name",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1}],config:{name:"WPS",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"/"}},"139Yun":{name:"139Yun",default_mount_path:"/139",common:[...Ft,Pt,Tt,Ut,...Rt("139Yun"),nl,Nt,er],additional:[{name:"authorization",type:"text",default:"",required:!0},{name:"root_folder_id",type:"string",default:"",required:!1},{name:"type",type:"select",options:"personal_new,family,group,personal,share",default:"personal_new",required:!1},{name:"link_id",type:"text",default:"",required:!1},{name:"cloud_id",type:"string",default:"",required:!1},{name:"order_by",type:"select",options:"name,size,modified",default:"name",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1}],config:{name:"139Yun",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:""}},Mega_nz:{name:"Mega_nz",default_mount_path:"/mega",common:[...Ft,Pt,Tt,Ut,...Rt("Mega_nz"),Nt,er],additional:[{name:"email",type:"string",default:"",required:!0},{name:"password",type:"string",default:"",required:!0},{name:"two_fa_code",type:"string",default:"",required:!1},{name:"two_fa_secret",type:"string",default:"",required:!1},{name:"move_to_trash",type:"bool",default:"true",required:!1},{name:"order_by",type:"select",options:"name,size,modified",default:"name",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1}],config:{name:"Mega_nz",local_sort:!0,only_local:!1,only_proxy:!0,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"/"}},"115Share":{name:"115Share",default_mount_path:"/115_share",common:mt,additional:[{name:"share_code",type:"text",default:"",required:!0},{name:"receive_code",type:"text",default:"",required:!0},{name:"cookie",type:"text",default:"",required:!1},{name:"root_folder_id",type:"string",default:"0",required:!1},{name:"page_size",type:"number",default:"1000",required:!1},{name:"order_by",type:"select",options:"name,size,modified",default:"name",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1}],config:{name:"115Share",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!0,need_ms:!1,default_root:"0"}},"123PanShare":{name:"123PanShare",default_mount_path:"/123_share",common:[...Ft,Pt,Tt,Ut,...Rt("123PanShare"),Nt,er],additional:[{name:"sharekey",type:"string",default:"",required:!0},{name:"sharepassword",type:"string",default:"",required:!1},{name:"accesstoken",type:"text",default:"",required:!1},{name:"root_folder_id",type:"string",default:"0",required:!1},{name:"order_by",type:"select",options:"name,size,modified",default:"name",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1}],config:{name:"123PanShare",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!0,need_ms:!1,default_root:"0"}},AliyundriveShare:{name:"AliyundriveShare",default_mount_path:"/aliyun_share",common:mt,additional:[{name:"share_id",type:"string",default:"",required:!0},{name:"share_pwd",type:"string",default:"",required:!1},{name:"root_folder_id",type:"string",default:"root",required:!1},{name:"order_by",type:"select",options:"name,size,updated_at,created_at",default:"name",required:!1},{name:"order_direction",type:"select",options:"ASC,DESC",default:"ASC",required:!1}],config:{name:"AliyundriveShare",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!0,need_ms:!1,default_root:"root"}},OnedriveSharelink:{name:"OnedriveSharelink",default_mount_path:"/onedrive_share",common:mt,additional:[{name:"url",type:"string",default:"",required:!0},{name:"password",type:"string",default:"",required:!1},{name:"order_by",type:"select",options:"name,size,modified",default:"name",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1}],config:{name:"OnedriveSharelink",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!0,need_ms:!1,default_root:"/"}},PikPakShare:{name:"PikPakShare",default_mount_path:"/pikpak_share",common:mt,additional:[{name:"share_id",type:"string",default:"",required:!0},{name:"share_pwd",type:"string",default:"",required:!1},{name:"platform",type:"select",options:"android,web,pc",default:"web",required:!1},{name:"root_folder_id",type:"string",default:"",required:!1},{name:"order_by",type:"select",options:"name,size,modified",default:"name",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1}],config:{name:"PikPakShare",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!0,need_ms:!1,default_root:""}},SMB:{name:"SMB",default_mount_path:"/smb",common:[...Ft,Pt,Tt,Ut,...Rt("SMB"),Nt,er],additional:[{name:"address",type:"string",default:"",required:!0},{name:"share_name",type:"string",default:"",required:!0},{name:"username",type:"string",default:"",required:!0},{name:"password",type:"string",default:"",required:!1},{name:"port",type:"number",default:"445",required:!1},{name:"root_folder_path",type:"string",default:"/",required:!1},{name:"order_by",type:"select",options:"name,size,modified",default:"name",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1}],config:{name:"SMB",local_sort:!0,only_local:!1,only_proxy:!0,no_cache:!0,no_upload:!1,need_ms:!1,default_root:"/"}},Crypt:{name:"Crypt",default_mount_path:"/crypt",common:[...Ft,Pt,Tt,Ut,...Rt("Crypt"),Nt,er],additional:[{name:"remote_path",type:"string",default:"",required:!0,help:"\u52A0\u5BC6\u6570\u636E\u5B9E\u9645\u5B58\u50A8\u7684\u4F4D\u7F6E\uFF08\u53E6\u4E00\u4E2A\u5DF2\u6302\u8F7D\u5B58\u50A8\u7684\u8DEF\u5F84\uFF0C\u5982 /aliyundrive/enc\uFF09"},{name:"password",type:"string",default:"",required:!0,help:"\u4E3B\u5BC6\u7801\uFF08\u7528\u4E8E\u6D3E\u751F\u52A0\u5BC6\u5BC6\u94A5\uFF09"},{name:"salt",type:"string",default:"",required:!1,help:"\u76D0\uFF08\u7B2C\u4E8C\u5BC6\u7801\uFF09\u3002\u53EF\u9009\u4F46\u63A8\u8350\uFF0C\u63D0\u9AD8\u5BC6\u94A5\u5F3A\u5EA6"},{name:"filename_encryption",type:"select",options:"off,standard,obfuscate",default:"off",required:!0,help:"\u6587\u4EF6\u540D\u52A0\u5BC6\u65B9\u5F0F\u3002\u5F53\u524D\u4EC5\u652F\u6301 off\uFF08\u6587\u4EF6\u540D\u4E0D\u52A0\u5BC6\uFF0C\u4EC5\u5185\u5BB9\u52A0\u5BC6\uFF09"},{name:"directory_name_encryption",type:"select",options:"false,true",default:"false",required:!0},{name:"encrypted_suffix",type:"string",default:".bin",required:!0,help:"\u52A0\u5BC6\u6587\u4EF6\u7684\u540E\u7F00\uFF08\u9AD8\u7EA7\u9009\u9879\uFF09"},{name:"filename_encoding",type:"select",options:"base64,base32,base32768",default:"base64",required:!0},{name:"thumbnail",type:"bool",default:"false",required:!1},{name:"show_hidden",type:"bool",default:"true",required:!1}],config:{name:"Crypt",local_sort:!0,only_local:!1,only_proxy:!0,no_cache:!0,no_upload:!1,need_ms:!1,default_root:"/",no_link_url:!0,check_status:!0}},Virtual:{name:"Virtual",default_mount_path:"/virtual",common:[...Ft,Pt,Tt,Ut,...Rt("Virtual"),Nt,er],additional:[{name:"num_file",type:"number",default:"30",required:!0,help:"\u6BCF\u4E2A\u76EE\u5F55\u4E0B\u751F\u6210\u7684\u5360\u4F4D\u6587\u4EF6\u6570\u91CF"},{name:"num_folder",type:"number",default:"30",required:!0,help:"\u6BCF\u4E2A\u76EE\u5F55\u4E0B\u751F\u6210\u7684\u5360\u4F4D\u76EE\u5F55\u6570\u91CF"},{name:"max_file_size",type:"number",default:"1073741824",required:!0,help:"\u5360\u4F4D\u6587\u4EF6\u6700\u5927\u5B57\u8282\u6570"},{name:"min_file_size",type:"number",default:"1048576",required:!0,help:"\u5360\u4F4D\u6587\u4EF6\u6700\u5C0F\u5B57\u8282\u6570"}],config:{name:"Virtual",local_sort:!0,only_local:!1,only_proxy:!0,no_cache:!1,no_upload:!1,need_ms:!0,default_root:"/",no_link_url:!0}},AListV3:{name:"AListV3",default_mount_path:"/alist",common:[...Ft,Pt,Tt,Ut,...Rt("AListV3"),nl,Nt,er],additional:[{name:"url",type:"string",default:"",required:!0,help:"\u53E6\u4E00\u4E2A OpenList / AList \u5B9E\u4F8B\u7684\u5730\u5740\uFF0C\u5982 https://example.com"},{name:"meta_password",type:"string",default:"",required:!1},{name:"username",type:"string",default:"",required:!1},{name:"password",type:"string",default:"",required:!1},{name:"token",type:"string",default:"",required:!1,help:"\u8BBF\u95EE\u4EE4\u724C\uFF08\u53EF\u9009\uFF0C\u81EA\u52A8\u6301\u4E45\u5316\uFF0C\u65E0\u9700\u624B\u52A8\u586B\u5199\uFF09"},{name:"pass_ip_to_upsteam",type:"bool",default:"true",required:!1},{name:"pass_ua_to_upsteam",type:"bool",default:"true",required:!1},{name:"forward_archive_requests",type:"bool",default:"true",required:!1}],config:{name:"AListV3",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"/"}},UrlTree:{name:"UrlTree",default_mount_path:"/url_tree",common:mt,additional:[{name:"url_structure",type:"text",default:"",required:!0,help:"URL \u6811\u7ED3\u6784\u6587\u672C\uFF0C\u6BCF\u884C\u7F29\u8FDB 2 \u7A7A\u683C\u8868\u793A\u4E00\u7EA7\u3002\u76EE\u5F55\u884C\u4EE5 : \u7ED3\u5C3E\uFF0C\u6587\u4EF6\u884C\u683C\u5F0F [FileName:][FileSize:][Modified:]Url"},{name:"head_size",type:"bool",default:"false",required:!1,help:"\u7528 HEAD \u8BF7\u6C42\u83B7\u53D6\u6587\u4EF6\u5927\u5C0F\uFF08\u53EF\u80FD\u5931\u8D25\uFF09"},{name:"writable",type:"bool",default:"false",required:!1,help:"\u5141\u8BB8\u589E\u5220\u6539\u6587\u4EF6\u6811\uFF08\u4F1A\u6301\u4E45\u5316\u56DE url_structure\uFF09"}],config:{name:"UrlTree",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!0,no_upload:!1,need_ms:!1,default_root:"/",check_status:!0}},Strm:{name:"Strm",default_mount_path:"/strm",common:[...Ft,Pt,Tt,Ut,...Rt("Strm"),Nt,er],additional:[{name:"paths",type:"text",default:"",required:!0,help:"\u8DEF\u5F84\u6620\u5C04\uFF0C\u6BCF\u884C\u4E00\u4E2A\uFF1A\u865A\u62DF\u540D:\u5E95\u5C42\u8DEF\u5F84\uFF08\u5982 movies:/aliyundrive/movies\uFF09\uFF0C\u6216\u76F4\u63A5\u5E95\u5C42\u8DEF\u5F84"},{name:"siteUrl",type:"text",default:"",required:!1,help:"strm \u6587\u4EF6\u5185\u5BB9\u7684 URL \u524D\u7F00\uFF08\u7559\u7A7A\u5219\u7528\u76F8\u5BF9\u8DEF\u5F84\uFF09"},{name:"PathPrefix",type:"text",default:"/d",required:!1,help:"\u4E0B\u8F7D\u8DEF\u5F84\u524D\u7F00"},{name:"downloadFileTypes",type:"text",default:"ass,srt,vtt,sub,strm",required:!1,help:"\u9700\u539F\u6837\u4E0B\u8F7D\u7684\u6587\u4EF6\u6269\u5C55\u540D\uFF08\u901A\u5E38\u4E3A\u5B57\u5E55\uFF09"},{name:"filterFileTypes",type:"text",default:"mp4,mkv,flv,avi,wmv,ts,rmvb,webm,mp3,flac,aac,wav,ogg,m4a,wma,alac",required:!1,help:"\u652F\u6301\u751F\u6210 strm \u7684\u6587\u4EF6\u6269\u5C55\u540D\uFF08\u89C6\u9891/\u97F3\u9891\uFF09"},{name:"encodePath",type:"bool",default:"true",required:!1},{name:"withoutUrl",type:"bool",default:"false",required:!1},{name:"withSign",type:"bool",default:"false",required:!1}],config:{name:"Strm",local_sort:!0,only_local:!1,only_proxy:!0,no_cache:!0,no_upload:!0,need_ms:!1,default_root:"/",no_link_url:!0}},AzureBlob:{name:"AzureBlob",default_mount_path:"/azure",common:mt,additional:[{name:"endpoint",type:"string",default:"",required:!0,help:"Azure \u5B58\u50A8\u7AEF\u70B9\uFF0C\u5982 https://accountname.blob.core.windows.net/"},{name:"access_key",type:"string",default:"",required:!0,help:"Azure \u5B58\u50A8\u8BBF\u95EE\u5BC6\u94A5\uFF08Base64\uFF09"},{name:"container_name",type:"string",default:"",required:!0,help:"\u5BB9\u5668\u540D\u79F0"},{name:"sign_url_expire",type:"number",default:"4",required:!1,help:"SAS URL \u6709\u6548\u671F\uFF08\u5C0F\u65F6\uFF09"}],config:{name:"AzureBlob",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"/",check_status:!0}},USS:{name:"USS",default_mount_path:"/uss",common:mt,additional:[{name:"bucket",type:"string",default:"",required:!0},{name:"endpoint",type:"string",default:"",required:!0,help:"\u4E0B\u8F7D\u57DF\u540D\uFF08\u53EF\u542B\u534F\u8BAE\u5934\uFF09"},{name:"operator_name",type:"string",default:"",required:!0},{name:"operator_password",type:"string",default:"",required:!0},{name:"anti_theft_chain_token",type:"string",default:"",required:!1,help:"\u9632\u76D7\u94FE Token\uFF08\u7559\u7A7A\u5219\u7528\u64CD\u4F5C\u5458\u5BC6\u7801\uFF09"},{name:"sign_url_expire",type:"number",default:"4",required:!1,help:"\u94FE\u63A5\u6709\u6548\u671F\uFF08\u5C0F\u65F6\uFF09"}],config:{name:"USS",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"/"}},Alidoc:{name:"Alidoc",default_mount_path:"/alidoc",common:mt,additional:[{name:"cookie",type:"text",default:"",required:!0,help:"\u9489\u9489\u6587\u6863\u7F51\u9875 Cookie"},{name:"root_folder_id",type:"string",default:"",required:!0,help:"\u6839\u76EE\u5F55 dentryUuid"}],config:{name:"Alidoc",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!0,need_ms:!1,default_root:""}},Emby:{name:"Emby",default_mount_path:"/emby",common:mt,additional:[{name:"url",type:"string",default:"",required:!0,help:"Emby \u670D\u52A1\u5668\u5730\u5740\uFF0C\u5982 http://localhost:8096"},{name:"api_key",type:"string",default:"",required:!1},{name:"user_id",type:"string",default:"",required:!1},{name:"username",type:"string",default:"",required:!1},{name:"password",type:"string",default:"",required:!1},{name:"link_method",type:"select",options:"stream,download",default:"stream",required:!1},{name:"root_folder_id",type:"string",default:"1",required:!1,help:"\u6839\u76EE\u5F55 ID\uFF0C\u9ED8\u8BA4 1"}],config:{name:"Emby",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!0,need_ms:!1,default_root:"1"}},BunnyStorage:{name:"BunnyStorage",default_mount_path:"/bunny",common:mt,additional:[{name:"storage_zone_name",type:"string",default:"",required:!0},{name:"access_key",type:"string",default:"",required:!0},{name:"endpoint",type:"string",default:"storage.bunnycdn.com",required:!1},{name:"cdn_base_url",type:"string",default:"",required:!1},{name:"cdn_token_key",type:"string",default:"",required:!1},{name:"cdn_token_method",type:"select",options:"sha256,hmac_sha256",default:"sha256",required:!1},{name:"cdn_token_include_ip",type:"bool",default:"false",required:!1},{name:"sign_url_expire",type:"number",default:"4",required:!1,help:"\u94FE\u63A5\u6709\u6548\u671F\uFF08\u5C0F\u65F6\uFF09"},{name:"placeholder",type:"string",default:".openlist",required:!1},{name:"root_folder_path",type:"string",default:"/",required:!0}],config:{name:"BunnyStorage",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"/"}},CloudflareImgbed:{name:"CloudflareImgbed",default_mount_path:"/cfimgbed",common:mt,additional:[{name:"address",type:"string",default:"",required:!0,help:"\u56FE\u5E8A\u670D\u52A1\u5730\u5740"},{name:"token",type:"string",default:"",required:!0},{name:"small_channel_name",type:"string",default:"",required:!1},{name:"large_channel_name",type:"string",default:"",required:!1},{name:"large_channel_type",type:"string",default:"",required:!1},{name:"upload_thread",type:"number",default:"3",required:!1},{name:"root_folder_path",type:"string",default:"/",required:!0}],config:{name:"CloudflareImgbed",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"/"}},GuangYaPan:{name:"GuangYaPan",default_mount_path:"/guangyapan",common:mt,additional:[{name:"client_id",type:"string",default:"",required:!0},{name:"device_id",type:"string",default:"",required:!1},{name:"device_sign",type:"string",default:"",required:!1},{name:"access_token",type:"text",default:"",required:!1},{name:"refresh_token",type:"text",default:"",required:!1},{name:"phone_number",type:"string",default:"",required:!1,help:"\u624B\u673A\u53F7\uFF08\u767B\u5F55\u7528\uFF0C+86 \u683C\u5F0F\uFF09"},{name:"verify_code",type:"string",default:"",required:!1},{name:"page_size",type:"number",default:"100",required:!1},{name:"order_by",type:"number",default:"3",required:!1},{name:"sort_type",type:"number",default:"1",required:!1},{name:"root_folder_path",type:"string",default:"/",required:!0}],config:{name:"GuangYaPan",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"/"}},AutoIndex:{name:"AutoIndex",default_mount_path:"/autoindex",common:mt,additional:[{name:"url",type:"string",default:"",required:!0,help:"AutoIndex \u76EE\u5F55\u9875 URL"},{name:"item_xpath",type:"string",default:"//pre/a",required:!0},{name:"name_xpath",type:"string",default:"@href",required:!0},{name:"modified_xpath",type:"string",default:"string(following-sibling::text()[2])",required:!1},{name:"size_xpath",type:"string",default:"string(following-sibling::text()[1])",required:!1},{name:"ignore_file_names",type:"text",default:`. +`,typeof t=="function"&&t(null,a),a}});var lq=oe(cq=>{var Xse="\x1B[47m",Zse="\x1B[40m",qb="\x1B[37m",Ob="\x1B[30m",nl="\x1B[0m",eoe=Xse+Ob,toe=Zse+qb,roe=function(r,e,t){return{"00":nl+" "+r,"01":nl+e+"\u2584"+r,"02":nl+t+"\u2584"+r,10:nl+e+"\u2580"+r,11:" ",12:"\u2584",20:nl+t+"\u2580"+r,21:"\u2580",22:"\u2588"}},oq=function(r,e,t,i){let n=e+1;if(t>=n||i>=n||i<-1||t<-1)return"0";if(t>=e||i>=e||i<0||t<0)return"1";let s=i*e+t;return r[s]?"2":"1"},aq=function(r,e,t,i){return oq(r,e,t,i)+oq(r,e,t,i+1)};cq.render=function(r,e,t){let i=r.modules.size,n=r.modules.data,s=!!(e&&e.inverse),o=e&&e.inverse?toe:eoe,l=roe(o,s?Ob:qb,s?qb:Ob),d=nl+` +`+o,u=o;for(let f=-1;f<i+1;f+=2){for(let h=-1;h<i;h++)u+=l[aq(n,i,h,f)];u+=l[aq(n,i,i,f)]+d}return u+=nl,typeof t=="function"&&t(null,u),u}});var uq=oe(dq=>{var ioe=sq(),noe=lq();dq.render=function(r,e,t){return e&&e.small?noe.render(r,e,t):ioe.render(r,e,t)}});var Lb=oe(Aq=>{var soe=jA();function fq(r,e){let t=r.a/255,i=e+'="'+r.hex+'"';return t<1?i+" "+e+'-opacity="'+t.toFixed(2).slice(1)+'"':i}function Mb(r,e,t){let i=r+e;return typeof t<"u"&&(i+=" "+t),i}function ooe(r,e,t){let i="",n=0,s=!1,o=0;for(let a=0;a<r.length;a++){let c=Math.floor(a%e),l=Math.floor(a/e);!c&&!s&&(s=!0),r[a]?(o++,a>0&&c>0&&r[a-1]||(i+=s?Mb("M",c+t,.5+l+t):Mb("m",n,0),n=0,s=!1),c+1<e&&r[a+1]||(i+=Mb("h",o),o=0)):n++}return i}Aq.render=function(e,t,i){let n=soe.getOptions(t),s=e.modules.size,o=e.modules.data,a=s+n.margin*2,c=n.color.light.a?"<path "+fq(n.color.light,"fill")+' d="M0 0h'+a+"v"+a+'H0z"/>':"",l="<path "+fq(n.color.dark,"stroke")+' d="'+ooe(o,s,n.margin)+'"/>',d='viewBox="0 0 '+a+" "+a+'"',f='<svg xmlns="http://www.w3.org/2000/svg" '+(n.width?'width="'+n.width+'" height="'+n.width+'" ':"")+d+' shape-rendering="crispEdges">'+c+l+`</svg> +`;return typeof i=="function"&&i(null,f),f}});var hq=oe(Fw=>{var aoe=Lb();Fw.render=aoe.render;Fw.renderToFile=function(e,t,i,n){typeof n>"u"&&(n=i,i=void 0);let s=wt("fs"),a='<?xml version="1.0" encoding="utf-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">'+Fw.render(t,i);s.writeFile(e,a,n)}});var gq=oe(Pw=>{var Hb=jA();function coe(r,e,t){r.clearRect(0,0,e.width,e.height),e.style||(e.style={}),e.height=t,e.width=t,e.style.height=t+"px",e.style.width=t+"px"}function loe(){try{return document.createElement("canvas")}catch{throw new Error("You need to specify a canvas element")}}Pw.render=function(e,t,i){let n=i,s=t;typeof n>"u"&&(!t||!t.getContext)&&(n=t,t=void 0),t||(s=loe()),n=Hb.getOptions(n);let o=Hb.getImageWidth(e.modules.size,n),a=s.getContext("2d"),c=a.createImageData(o,o);return Hb.qrToImageData(c.data,e,n),coe(a,s,o),a.putImageData(c,0,0),s};Pw.renderToDataURL=function(e,t,i){let n=i;typeof n>"u"&&(!t||!t.getContext)&&(n=t,t=void 0),n||(n={});let s=Pw.render(e,t,n),o=n.type||"image/png",a=n.rendererOpts||{};return s.toDataURL(o,a.quality)}});var mq=oe($A=>{var doe=rb(),Kb=xb(),pq=gq(),uoe=Lb();function Gb(r,e,t,i,n){let s=[].slice.call(arguments,1),o=s.length,a=typeof s[o-1]=="function";if(!a&&!doe())throw new Error("Callback required as last argument");if(a){if(o<2)throw new Error("Too few arguments provided");o===2?(n=t,t=e,e=i=void 0):o===3&&(e.getContext&&typeof n>"u"?(n=i,i=void 0):(n=i,i=t,t=e,e=void 0))}else{if(o<1)throw new Error("Too few arguments provided");return o===1?(t=e,e=i=void 0):o===2&&!e.getContext&&(i=t,t=e,e=void 0),new Promise(function(c,l){try{let d=Kb.create(t,i);c(r(d,e,i))}catch(d){l(d)}})}try{let c=Kb.create(t,i);n(null,r(c,e,i))}catch(c){n(c)}}$A.create=Kb.create;$A.toCanvas=Gb.bind(null,pq.render);$A.toDataURL=Gb.bind(null,pq.renderToDataURL);$A.toString=Gb.bind(null,function(r,e,t){return uoe.render(r,t)})});var xq=oe(La=>{var yq=rb(),zb=xb(),foe=rq(),Iq=iq(),Aoe=uq(),wq=hq();function VA(r,e,t){if(typeof r>"u")throw new Error("String required as first argument");if(typeof t>"u"&&(t=e,e={}),typeof t!="function")if(yq())e=t||{},t=null;else throw new Error("Callback required as last argument");return{opts:e,cb:t}}function hoe(r){return r.slice((r.lastIndexOf(".")-1>>>0)+2).toLowerCase()}function Tw(r){switch(r){case"svg":return wq;case"txt":case"utf8":return Iq;default:return foe}}function goe(r){switch(r){case"svg":return wq;case"terminal":return Aoe;default:return Iq}}function YA(r,e,t){if(!t.cb)return new Promise(function(i,n){try{let s=zb.create(e,t.opts);return r(s,t.opts,function(o,a){return o?n(o):i(a)})}catch(s){n(s)}});try{let i=zb.create(e,t.opts);return r(i,t.opts,t.cb)}catch(i){t.cb(i)}}La.create=zb.create;La.toCanvas=mq().toCanvas;La.toString=function(e,t,i){let n=VA(e,t,i),s=n.opts?n.opts.type:void 0,o=goe(s);return YA(o.render,e,n)};La.toDataURL=function(e,t,i){let n=VA(e,t,i),s=Tw(n.opts.type);return YA(s.renderToDataURL,e,n)};La.toBuffer=function(e,t,i){let n=VA(e,t,i),s=Tw(n.opts.type);return YA(s.renderToBuffer,e,n)};La.toFile=function(e,t,i,n){if(typeof e!="string"||!(typeof t=="string"||typeof t=="object"))throw new Error("Invalid argument");if(arguments.length<3&&!yq())throw new Error("Too few arguments provided");let s=VA(t,i,n),o=s.opts.type||hoe(e),c=Tw(o).renderToFile.bind(null,e);return YA(c,t,s)};La.toFileStream=function(e,t,i){if(arguments.length<2)throw new Error("Too few arguments provided");let n=VA(t,i,e.emit.bind(e,"error")),o=Tw("png").renderToFileStream.bind(null,e);YA(o,t,n)}});var Eq=oe((IBe,Cq)=>{Cq.exports=xq()});function poe(r,e){try{return WA.authenticator.options={window:1},WA.authenticator.verify({token:r,secret:e})}catch(t){return console.error("[TOTP] Verification error:",t),!1}}function bq(){return WA.authenticator.generateSecret()}async function Jb(r,e){return poe(e,r)}function vq(r,e,t="OpenList"){return WA.authenticator.keyuri(e,t,r)}async function kq(r){return Bq.default.toDataURL(r)}var WA,Bq,Sq=j(()=>{"use strict";WA=Qr(h9(),1),Bq=Qr(Eq(),1)});function moe(r){let e="";for(let t=0;t<r.length;t++)e+=String.fromCharCode(r[t]);return btoa(e)}function Dq(r){let e=String(r||"").replace(/[\s\r\n]/g,"").replace(/-/g,"+").replace(/_/g,"/"),t=e.length%4,i=t?e+"=".repeat(4-t):e;try{let n=atob(i),s=new Uint8Array(n.length);for(let o=0;o<n.length;o++)s[o]=n.charCodeAt(o);return s}catch{return null}}function jb(r){let e=String(r||"").trim().split(/\s+/);if(e.length<2)return null;let t=e[0];if(!yoe.includes(t))return null;let i=Dq(e[1]);return!i||i.length<16?null:{type:t,blobBase64:e[1].replace(/[\s\r\n]/g,""),comment:e.slice(2).join(" ")||""}}async function Qq(r){let e=jb(r);if(!e)return null;let t=Dq(e.blobBase64);if(!t)return null;let i=await crypto.subtle.digest("SHA-256",t.buffer.slice(t.byteOffset,t.byteOffset+t.byteLength)),n=new Uint8Array(i);return"SHA256:"+moe(n).replace(/=+$/,"")}function _q(){let r=globalThis;return typeof r.crypto?.randomUUID=="function"?r.crypto.randomUUID():Date.now().toString(36)+"-"+Math.random().toString(36).slice(2,10)+Math.random().toString(36).slice(2,10)}var yoe,Fq=j(()=>{"use strict";yoe=["ssh-rsa","ssh-dss","ssh-ed25519","ecdsa-sha2-nistp256","ecdsa-sha2-nistp384","ecdsa-sha2-nistp521","sk-ssh-ed25519@openssh.com","sk-ecdsa-sha2-nistp256@openssh.com","sk-ssh-ed25519@openssh.com.webauthn","sk-ecdsa-sha2-nistp256@openssh.com.webauthn"]});async function ou(r,e){let i=((await ne(e)).users||[]).find(n=>n.id===r);return i?i.ssh_keys||[]:[]}async function Pq(r,e,t,i){let n=jb(e);if(!n)throw new Error("Invalid OpenSSH public key format");let s=await Qq(e);if(!s)throw new Error("Failed to compute SSH key fingerprint");let o=await ne(i),a=(o.users||[]).find(l=>l.id===r);if(!a)throw new Error("User not found");if(Array.isArray(a.ssh_keys)||(a.ssh_keys=[]),a.ssh_keys.some(l=>l.fingerprint===s))throw new Error("SSH key with this fingerprint already exists");let c={id:_q(),name:(t||n.comment||n.type).slice(0,64),public_key:e.trim(),fingerprint:s,created_at:new Date().toISOString()};return a.ssh_keys.push(c),await fe(o,i),c}async function Uw(r,e,t){let i=await ne(t),n=(i.users||[]).find(o=>o.id===r);if(!n||!Array.isArray(n.ssh_keys))return!1;let s=n.ssh_keys.length;return n.ssh_keys=n.ssh_keys.filter(o=>o.id!==e),n.ssh_keys.length!==s?(await fe(i,t),!0):!1}var $b=j(()=>{"use strict";Ve();Fq()});async function Tq(r){let e=await crypto.subtle.digest("SHA-256",new TextEncoder().encode(r));return Array.from(new Uint8Array(e)).map(t=>t.toString(16).padStart(2,"0")).join("")}async function Rw(r){return Tq(`${r}-${Ioe}`)}async function Nw(r,e){return Tq(`${r}-${e}`)}async function woe(r,e){return Nw(await Rw(r),e)}function Vb(r=16){let e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",t=new Uint8Array(r);crypto.getRandomValues(t);let i="";for(let n=0;n<r;n++)i+=e[t[n]%e.length];return i}function qw(r){return/^[0-9a-f]{64}$/i.test(String(r||""))}async function Fi(r,e){r.salt=Vb(),r.password=await woe(e,r.salt),r.pwd_update_at=new Date().toISOString()}var Ioe,XA=j(()=>{"use strict";Ioe="https://github.com/alist-org/alist"});var Uq=j(()=>{Cx()});function xoe(r=32){let e=new Uint8Array(r);return crypto.getRandomValues(e),btoa(String.fromCharCode(...e)).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}function Yb(r,e={}){let t={...Rq,...e},i=xoe();return qq(r,t.cookieName,i,{maxAge:t.maxAge,...t.cookieOptions}),i}function Nq(r,e={}){let t={...Rq,...e};qq(r,t.cookieName,"",{maxAge:0,...t.cookieOptions})}function qq(r,e,t,i={}){let n=[`${e}=${encodeURIComponent(t)}`];i.maxAge!==void 0&&n.push(`Max-Age=${i.maxAge}`),i.httpOnly&&n.push("HttpOnly"),i.secure&&n.push("Secure"),i.sameSite&&n.push(`SameSite=${i.sameSite}`),i.path&&n.push(`Path=${i.path}`),r.header("Set-Cookie",n.join("; "))}var Rq,Oq=j(()=>{"use strict";Uq();Rq={cookieName:"csrf_token",headerName:"x-csrf-token",maxAge:3600,cookieOptions:{httpOnly:!0,secure:!0,sameSite:"strict",path:"/"}}});function Coe(){return`${Date.now()}-${Math.random().toString(36).substring(2,15)}`}function Eoe(r){let e=r.get?.("user"),t=r.req.header("cf-connecting-ip")||r.req.header("x-forwarded-for")||r.req.header("x-real-ip")||"unknown",i=r.req.header("user-agent")||"unknown";return{user_id:e?.id,username:e?.username,ip_address:t,user_agent:i}}function au(){if(!Wb){let r=new Zb(1e4);Wb=new Xb(r)}return Wb}var Xb,Zb,Wb,Mq=j(()=>{"use strict";Xb=class{storage;constructor(e){this.storage=e}async log(e,t,i,n,s,o={}){let a=Eoe(e),c={id:Coe(),timestamp:new Date().toISOString(),level:t,category:i,action:n,message:s,success:o.success??!0,...a,resource_type:o.resource_type,resource_id:o.resource_id,resource_name:o.resource_name,details:o.details,error_message:o.error_message};try{await this.storage.write(c)}catch(l){console.error("[AuditLog] Failed to write log:",l)}}async logLoginSuccess(e,t){await this.log(e,"info","auth","login",`User ${t} logged in successfully`,{success:!0})}async logLoginFailure(e,t,i){await this.log(e,"warn","auth","login_failed",`Failed login attempt for user ${t}`,{success:!1,error_message:i})}async logLogout(e){await this.log(e,"info","auth","logout","User logged out",{success:!0})}async logFileUpload(e,t,i){await this.log(e,"info","file","upload",`Uploaded file: ${t}`,{success:!0,resource_type:"file",resource_name:t,details:{file_size:i}})}async logFileDelete(e,t,i){await this.log(e,i?"critical":"error","file","delete",`Deleted file: ${t}`,{success:i,resource_type:"file",resource_name:t})}async logPermissionChange(e,t,i,n){await this.log(e,"critical","permission","update_permission",`Changed permission for user ${t}`,{success:!0,resource_type:"user",resource_name:t,details:{old_role:i,new_role:n}})}async logUserCreate(e,t,i){await this.log(e,"info","user","create",`Created user: ${t}`,{success:!0,resource_type:"user",resource_name:t,details:{role:i}})}async logUserDelete(e,t){await this.log(e,"critical","user","delete",`Deleted user: ${t}`,{success:!0,resource_type:"user",resource_name:t})}async query(e){return this.storage.query(e)}async count(e){return this.storage.count(e)}},Zb=class{logs=[];maxSize;constructor(e=1e4){this.maxSize=e}async write(e){this.logs.push(e),this.logs.length>this.maxSize&&this.logs.shift()}async query(e){let t=this.logs;e.start_time&&(t=t.filter(s=>s.timestamp>=e.start_time)),e.end_time&&(t=t.filter(s=>s.timestamp<=e.end_time)),e.level&&(t=t.filter(s=>s.level===e.level)),e.category&&(t=t.filter(s=>s.category===e.category)),e.user_id&&(t=t.filter(s=>s.user_id===e.user_id)),e.username&&(t=t.filter(s=>s.username===e.username)),e.action&&(t=t.filter(s=>s.action===e.action)),e.resource_type&&(t=t.filter(s=>s.resource_type===e.resource_type)),e.resource_id&&(t=t.filter(s=>s.resource_id===e.resource_id)),e.success!==void 0&&(t=t.filter(s=>s.success===e.success)),t=t.sort((s,o)=>new Date(o.timestamp).getTime()-new Date(s.timestamp).getTime());let i=e.offset||0,n=e.limit||100;return t.slice(i,i+n)}async count(e){return(await this.query({...e,limit:Number.MAX_SAFE_INTEGER})).length}clear(){this.logs=[]}},Wb=null});var $q={};xn($q,{authRouter:()=>pn,authUserFromReq:()=>Nn,generateRandomPassword:()=>du,getOrInitUsers:()=>ZA,hashPasswordSHA256:()=>Doe,logoutHandler:()=>uu,meHandler:()=>Mw,meRouter:()=>cu,meUpdateHandler:()=>Ow,verifyUserPassword:()=>lu,verifyUserStaticHash:()=>rv});function koe(r){return r.req.header("CF-Connecting-IP")||r.req.header("x-real-ip")||r.req.header("x-forwarded-for")?.split(",")[0]?.trim()||"unknown"}function ev(r,e){return`${koe(r)}|${String(e||"").toLowerCase()}`}function tv(r){return`__global__|${String(r||"").toLowerCase()}`}function Soe(r){let e=voe,t=Math.pow(2,Math.floor(r/5));return Math.min(e*t,Hq)}async function Lq(r,e,t){let i=Date.now(),n=xs.get(r)||{count:0,lockedUntil:0,attempts:0};try{let{getKvBinding:s}=await Promise.resolve().then(()=>(Ve(),Gr)),o=await s(t);if(o.mode!=="none"&&o.binding){let a=`login_fail:${r}`,c=null;try{c=await o.binding.get(a,"text")}catch{c=await o.binding.get(a)}if(c&&typeof c.text=="function"&&(c=await c.text()),c)try{n=JSON.parse(String(c))}catch{}}}catch{}if(!(n.lockedUntil>i)){if(n.count+=1,n.attempts+=1,n.count>=e){let s=Soe(n.attempts);n.lockedUntil=i+s,n.count=0,console.warn(`[Auth] Login attempts exceeded for ${r}. Locked for ${Math.round(s/6e4)} minutes (attempt #${n.attempts}).`)}xs.set(r,n);try{let{getKvBinding:s}=await Promise.resolve().then(()=>(Ve(),Gr)),o=await s(t);if(o.mode!=="none"&&o.binding){let a=`login_fail:${r}`,c=JSON.stringify(n),l=Math.ceil((Hq+36e5)/1e3);typeof o.binding.put=="function"&&await o.binding.put(a,c,{expirationTtl:l})}}catch(s){console.warn("[Auth] Failed to persist login failure to KV:",s)}}}async function Kq(r,e,t){if(xs.size>1e4){let c=Date.now();for(let[l,d]of xs)d.lockedUntil<c&&d.count===0&&xs.delete(l)}let i=Date.now(),n=ev(r,e),s=tv(e),o=xs.get(n),a=xs.get(s);try{let{getKvBinding:c}=await Promise.resolve().then(()=>(Ve(),Gr)),l=await c(t);if(l.mode!=="none"&&l.binding)for(let d of[n,s]){let u=`login_fail:${d}`,f=null;try{f=await l.binding.get(u,"text")}catch{f=await l.binding.get(u)}if(f&&typeof f.text=="function"&&(f=await f.text()),f)try{let h=JSON.parse(String(f));d===n&&(o=h),d===s&&(a=h),xs.set(d,h)}catch{}}}catch{}return!!(o&&o.lockedUntil>i||a&&a.lockedUntil>i)}async function Gq(r,e,t){await Lq(ev(r,e),Boe,t),await Lq(tv(e),boe,t)}async function zq(r,e,t){let i=ev(r,e),n=tv(e);xs.delete(i),xs.delete(n);try{let{getKvBinding:s}=await Promise.resolve().then(()=>(Ve(),Gr)),o=await s(t);if(o.mode!=="none"&&o.binding)for(let a of[i,n]){let c=`login_fail:${a}`;typeof o.binding.delete=="function"&&await o.binding.delete(c)}}catch(s){console.warn("[Auth] Failed to clear login failures from KV:",s)}}async function Doe(r){return Rw(r)}async function rv(r,e){let t=String(r?.password||"").trim().toLowerCase(),i=String(e||"").trim().toLowerCase();if(!t||!qw(i)||!qw(t))return!1;if(r?.salt){let n=(await Nw(i,String(r.salt))).toLowerCase();return t===n}return t===i}async function lu(r,e){return String(r?.password||"").trim()?rv(r,await Rw(e)):!1}function du(){let r=new Uint8Array(16);return crypto.getRandomValues(r),Array.from(r).map(e=>e.toString(16).padStart(2,"0")).join("")}function Jq(){if(typeof crypto<"u"&&typeof crypto.randomUUID=="function")return crypto.randomUUID();let r=new Uint8Array(16);return crypto.getRandomValues(r),Array.from(r,e=>e.toString(16).padStart(2,"0")).join("")}async function ZA(r){let e=await ne(r);if(!e.users||e.users.length===0){let t=r&&r.ADMIN_PASS||(typeof process<"u"?process.env?.ADMIN_PASS:"")||"",i={id:2,username:"guest",password:"",role:1,permission:0,base_path:"/",disabled:!1,sso_id:"",allow_ldap:!1,pwd_update_at:new Date().toISOString()};if(t){let s={id:1,username:"admin",password:"",role:2,permission:0,base_path:"/",disabled:!1,sso_id:"",allow_ldap:!1,pwd_update_at:new Date().toISOString()};await Fi(s,t),e.users=[s,i]}else e.users=[i];await fe(e,r)||console.warn("[Auth] getOrInitUsers: skipped persisting an uninitialized placeholder DB (expected until POST /api/public/init/setup completes).")}else{let t=e.users.find(s=>s.role===2),i=t?String(t.password||"").trim():"",n=/^[0-9a-f]{64}$/i.test(i);if(t&&!n){let s=r&&r.ADMIN_PASS||(typeof process<"u"?process.env?.ADMIN_PASS:"")||"";s?(await Fi(t,s),await fe(e,r)):console.warn(i?"[SECURITY] Admin password uses a legacy hash format this build cannot verify; it has been left untouched. Log in with your existing password and re-set it, or set ADMIN_PASS to force a reset. It will NOT be reset to a default value.":"[SECURITY] Admin password is empty and no ADMIN_PASS is set \u2014 the system is NOT initialized. Open the site in a browser to run the setup wizard, or set ADMIN_PASS to initialize automatically.")}}return{db:e,users:e.users}}async function Nn(r){let e=r.req.header("Authorization");if(!e)return null;let t=e.startsWith("Bearer ")?e.substring(7):e;try{let i=await kr(r),n=await uo(t,i,"HS256");if(await YI(n?.jti,r.env))return null;let s=await ne(r.env);s.users||(s.users=[]);let o=s.users.find(a=>a.id===n.id||a.username===n.username);return o?{db:s,user:o}:null}catch{return null}}async function jq(r,e){if(!r.otp_secret)return{ok:!0,code:200,httpStatus:200,message:"ok"};let t=String(e.otp_code||e.code||"").trim();return t?await Jb(r.otp_secret,t)?{ok:!0,code:200,httpStatus:200,message:"ok"}:{ok:!1,code:401,httpStatus:401,message:"Invalid OTP code"}:{ok:!1,code:402,httpStatus:200,message:"OTP code required"}}var pn,cu,Boe,boe,voe,Hq,xs,Ow,Mw,uu,sl=j(()=>{"use strict";wr();Ao();Ve();Qi();Sq();$b();XA();Oq();Mq();pn=new Xe,cu=new Xe,Boe=5,boe=20,voe=900*1e3,Hq=1440*60*1e3,xs=new Map;pn.post("/login",async r=>{let e=await r.req.json().catch(()=>({})),t=(e.username||"").trim(),i=e.password||"";if(await Kq(r,t,r.env))return r.json({code:429,message:"Too many failed login attempts for this account/IP. Please try again later.",data:null},429);let{users:n,db:s}=await ZA(r.env),o=n.find(c=>c.username===t&&!c.disabled);if(o&&await lu(o,i)){let l=String(o.password||"").trim();(/^\$2[aby]\$/.test(l)||!o.salt&&qw(l))&&(console.log(`[Auth] Upgrading password hash for user: ${t}`),await Fi(o,i),await fe(s,r.env));let u=await jq(o,e);if(!u.ok)return r.json({code:u.code,message:u.message,data:null},u.httpStatus);await zq(r,t,r.env);let f={id:o.id,username:o.username,role:o.role,exp:Math.floor(Date.now()/1e3)+3600*24*7,jti:Jq()},h=await kr(r),g=await fo(f,h),p=Yb(r);return await au().logLoginSuccess(r,t),r.json({code:200,message:"success",data:{token:g,csrf_token:p}})}return await au().logLoginFailure(r,t,"Invalid credentials"),await Gq(r,t,r.env),r.json({code:401,message:"Invalid credentials",data:null},401)});pn.post("/login/hash",async r=>{let e=await r.req.json().catch(()=>({})),t=(e.username||"").trim(),i=String(e.password||"").trim().toLowerCase();if(await Kq(r,t,r.env))return r.json({code:429,message:"Too many failed login attempts for this account/IP. Please try again later.",data:null},429);let{users:n,db:s}=await ZA(r.env),o=n.find(c=>c.username===t&&!c.disabled);if(o&&i.length===64&&await rv(o,i)){o.salt||(console.log(`[Auth] Upgrading password hash for user: ${t}`),o.salt=Vb(),o.password=await Nw(i,o.salt),o.pwd_update_at=new Date().toISOString(),await fe(s,r.env));let l=await jq(o,e);if(!l.ok)return r.json({code:l.code,message:l.message,data:null},l.httpStatus);await zq(r,t,r.env);let d={id:o.id,username:o.username,role:o.role,exp:Math.floor(Date.now()/1e3)+3600*24*7,jti:Jq()},u=await kr(r),f=await fo(d,u),h=Yb(r);return await au().logLoginSuccess(r,t),r.json({code:200,message:"success",data:{token:f,csrf_token:h}})}return await au().logLoginFailure(r,t,"Invalid credentials"),await Gq(r,t,r.env),r.json({code:401,message:"Invalid credentials",data:null},401)});Ow=async r=>{let e=await Nn(r);if(!e)return r.json({code:401,message:"Unauthorized",data:null},401);let{db:t,user:i}=e,n=await r.req.json().catch(()=>({}));if(n.username&&n.username.trim()!==""){let s=n.username.trim();if(t.users.some(a=>a.id!==i.id&&a.username===s))return r.json({code:400,message:"Username already exists",data:null},400);i.username=s}return n.password&&n.password.trim()!==""&&await Fi(i,n.password.trim()),await fe(t,r.env),r.json({code:200,message:"success",data:null})},Mw=async r=>{let e=await Me(r);return!e||e.disabled?r.json({code:401,message:"Unauthorized",data:null},401):r.json({code:200,message:"success",data:{id:e.id,username:e.username,role:e.role,permission:e.permission??0,base_path:e.base_path||"/",disabled:!!e.disabled,sso_id:e.sso_id||"",allow_ldap:!!e.allow_ldap,otp:!!e.otp_secret}})};pn.get("/me",Mw);pn.post("/me/update",Ow);uu=async r=>{let e=r.req.header("Authorization");if(e){let i=e.startsWith("Bearer ")?e.substring(7):e;try{let n=await kr(r),s=await uo(i,n,"HS256");s?.jti&&await a2(s.jti,s.exp,r.env)}catch{}}return Nq(r),await au().logLogout(r),r.json({code:200,message:"success",data:null})};pn.get("/logout",uu);pn.post("/logout",uu);pn.get("/csrf",async r=>{try{let e=await l2(r);return r.json({code:200,message:"success",data:{csrf_token:e}})}catch{return r.json({code:500,message:"Failed to generate CSRF token",data:null},500)}});pn.post("/2fa/generate",async r=>{let e=await Nn(r);if(!e)return r.json({code:401,message:"Unauthorized",data:null},401);let{user:t}=e;if(t.otp_secret)return r.json({code:400,message:"2FA already enabled",data:null},400);let i=bq(),n=vq(i,t.username);return r.json({code:200,message:"success",data:{qr:kq(n),secret:i}})});pn.post("/2fa/verify",async r=>{let e=await Nn(r);if(!e)return r.json({code:401,message:"Unauthorized",data:null},401);let{db:t,user:i}=e,n=await r.req.json().catch(()=>({})),s=String(n.code||"").trim(),o=String(n.secret||"").trim();return o?/^[A-Z2-7]+$/i.test(o)?await Jb(o,s)?(i.otp_secret=o.toUpperCase(),await fe(t,r.env),r.json({code:200,message:"success",data:null})):r.json({code:400,message:"Invalid code",data:null},400):r.json({code:400,message:"Invalid secret format",data:null},400):r.json({code:400,message:"Missing secret parameter",data:null},400)});cu.get("/sshkey/list",async r=>{let e=await Nn(r);if(!e)return r.json({code:401,message:"Unauthorized",data:null},401);let t=await ou(e.user.id,r.env);return r.json({code:200,message:"success",data:{content:t,total:t.length}})});cu.post("/sshkey/add",async r=>{let e=await Nn(r);if(!e)return r.json({code:401,message:"Unauthorized",data:null},401);let t=await r.req.json().catch(()=>({}));try{let i=await Pq(e.user.id,t.key||t.public_key||"",t.name||t.title||"",r.env);return r.json({code:200,message:"success",data:i})}catch(i){return r.json({code:400,message:i.message||"Failed to add SSH key",data:null},400)}});cu.post("/sshkey/delete",async r=>{let e=await Nn(r);if(!e)return r.json({code:401,message:"Unauthorized",data:null},401);let t=r.req.query("id");if(!t)return r.json({code:400,message:"Missing id parameter",data:null},400);if(!await Uw(e.user.id,t,r.env))return r.json({code:404,message:"SSH key not found",data:null},404);let n=await ou(e.user.id,r.env);return r.json({code:200,message:"success",data:n})})});wr();var fk=r=>{let e={origin:"*",allowMethods:["GET","HEAD","PUT","POST","DELETE","PATCH","QUERY"],allowHeaders:[],exposeHeaders:[],...r},t=(n=>typeof n=="string"?n==="*"?()=>n:s=>n===s?s:null:typeof n=="function"?n:s=>n.includes(s)?s:null)(e.origin),i=(n=>typeof n=="function"?n:Array.isArray(n)?()=>n:()=>[])(e.allowMethods);return async function(s,o){function a(l,d){s.res.headers.set(l,d)}let c=await t(s.req.header("origin")||"",s);if(c&&a("Access-Control-Allow-Origin",c),e.credentials&&a("Access-Control-Allow-Credentials","true"),e.exposeHeaders?.length&&a("Access-Control-Expose-Headers",e.exposeHeaders.join(",")),s.req.method==="OPTIONS"){e.origin!=="*"&&a("Vary","Origin"),e.maxAge!=null&&a("Access-Control-Max-Age",e.maxAge.toString());let l=await i(s.req.header("origin")||"",s);l.length&&a("Access-Control-Allow-Methods",l.join(","));let d=e.allowHeaders;if(!d?.length){let u=s.req.header("Access-Control-Request-Headers");u&&(d=u.split(",").map(f=>f.trim()))}return d?.length&&(a("Access-Control-Allow-Headers",d.join(",")),s.res.headers.append("Vary","Access-Control-Request-Headers")),s.res.headers.delete("Content-Length"),s.res.headers.delete("Content-Type"),new Response(null,{headers:s.res.headers,status:204,statusText:"No Content"})}await o(),e.origin!=="*"&&s.header("Vary","Origin",{append:!0})}};Ve();ic();wr();Yt();Ve();var BA=r=>{let e=[];for(let t of String(r||"").replace(/\\/g,"/").split("/"))if(!(t===""||t===".")){if(t===".."){e.pop();continue}e.push(t)}return"/"+e.join("/")};async function Md(r,e,t){let n=BA(r).split("/").filter(Boolean);if(n.length<1)return{ok:!1,error:"Invalid share path"};let s,o;if(n[0]==="@s"){if(n.length<2)return{ok:!1,error:"Invalid share path"};s=n[1],o=n.slice(2)}else s=n[0],o=n.slice(1);let a=await ne(t),c=(a.shares||[]).find(g=>g.id===s);if(!c)return{ok:!1,error:"share not found"};if(c.disabled)return{ok:!1,error:"share has been disabled"};if(c.expires&&new Date(c.expires)<new Date)return{ok:!1,error:"share has expired"};if(c.max_accessed>0&&c.accessed!==void 0&&c.accessed>=c.max_accessed)return{ok:!1,error:"share access count exceeded"};if(c.pwd&&c.pwd!==e)return{ok:!1,error:"wrong password"};if(!c.files||c.files.length===0)return{ok:!1,error:"share is empty"};if(c.accessed=(c.accessed||0)+1,fe(a,t).catch(()=>{}),c.files.length>1&&o.length===0)return{ok:!0,share:c,virtualList:!0};let l=(c.files||[]).map(g=>BA(g)),d=g=>l.some(p=>g===p||g.startsWith(p==="/"?"/":p+"/"));if(c.files.length===1)return o.length>0?{ok:!1,error:"path not found in share"}:{ok:!0,share:c,realPath:BA(c.files[0])};let u=o[0],f=c.files.find(g=>{let p=String(g).split("/").filter(Boolean);return p[p.length-1]===u});if(!f)return{ok:!1,error:"path not found in share"};let h=BA([BA(f),...o.slice(1)].join("/"));return d(h)?{ok:!0,share:c,realPath:h}:{ok:!1,error:"path not found in share"}}Ve();Qi();var Qa={SEE_HIDES:0,ACCESS_WITHOUT_PASSWORD:1,OFFLINE_DOWNLOAD:2,WRITE_CONTENT:3,RENAME:4,MOVE:5,COPY:6,DELETE:7,WEBDAV_READ:8,WEBDAV_MANAGE:9,FTP_READ:10,FTP_MANAGE:11,READ_ARCHIVES:12,DECOMPRESS:13,SHARE:14,CUSTOMIZE_SHARE_ID:15};function Jre(r){return!r||r.role===1}function ms(r){return!!r&&r.role===2}function _a(r,e){return!r||r.disabled?!1:ms(r)?!0:Jre(r)?!1:(r.permission>>e&1)===1}function pt(r){return _a(r,Qa.WRITE_CONTENT)}function We(r,e="/"){let t=e||"/";if(t.startsWith("/@s"))return t;let i=(r?.base_path||"/").trim();if(!i||i==="/")return t.startsWith("/")?t:`/${t}`;i.startsWith("/")||(i=`/${i}`),i.endsWith("/")&&i.length>1&&(i=i.replace(/\/+$/,""));let n=t.startsWith("/")?t:`/${t}`;return n==="/"?i:`${i}${n}`}Ve();async function d2(r,e){let i=(await ne(e)).metas||[];if(i.length===0)return null;let n=SA(r),s=i.find(a=>SA(a.path)===n);if(s)return s;let o=n;for(;o!=="/";){let a=o.substring(0,o.lastIndexOf("/"))||"/",c=i.find(l=>SA(l.path)===a);if(c)return c;o=a}return null}function Yc(r,e,t){let i=SA(r),n=SA(e);if(i.toLowerCase()===n.toLowerCase())return!0;if(!t)return!1;let s=n;for(;s!=="/";)if(s=s.substring(0,s.lastIndexOf("/"))||"/",i.toLowerCase()===s.toLowerCase())return!0;return!1}function SA(r){let e=(r||"/").replace(/\\/g,"/").replace(/\/+/g,"/").trim();return e===""||e==="/"?"/":"/"+e.split("/").filter(Boolean).join("/")}function u2(r,e,t,i=""){return r&&ms(r)||!e?!0:!(e.password&&e.password.trim()!==""&&Yc(e.path,t,e.p_sub)&&i!==e.password||e.read_users&&e.read_users.length>0&&Yc(e.path,t,e.read_users_sub)&&(!r||!e.read_users.includes(r.id||0)))}function f2(r,e,t){return r===null||r&&ms(r)?!0:e&&e.write_users&&e.write_users.length>0&&Yc(e.path,t,e.write_users_sub)?e.write_users.includes(r.id||0):!0}function A2(r,e){return r?r.write&&Yc(r.path,e,r.w_sub):!1}function h2(r,e){return!r||!r.readme?"":Yc(r.path,e,r.r_sub)?r.readme:""}function g2(r,e){return!r||!r.header?"":Yc(r.path,e,r.header_sub)?r.header:""}function iN(r,e,t){if(!r||!r.hide||r.hide.trim()===""||!Yc(r.path,e,r.h_sub))return!1;let i=r.hide.split(` +`).map(n=>n.trim()).filter(Boolean);for(let n of i)try{if(new RegExp(n).test(t))return!0}catch{}return!1}function p2(r){if(!r||r.trim()==="")return null;let e=r.split(` +`).map(t=>t.trim()).filter(Boolean);for(let t of e)try{new RegExp(t)}catch{return t}return null}Ve();Qi();si();function sN(r){if(!r)return{};if(typeof r=="object")return r;if(typeof r=="string")try{let e=JSON.parse(r||"{}");return e&&typeof e=="object"?e:{}}catch{return{}}return{}}function m2(r){return typeof r=="string"?r.toLowerCase()==="true":r===!0}function Wc(r){if(typeof r=="number"&&Number.isFinite(r))return Math.trunc(r);if(typeof r=="string"&&r.trim()!==""){let e=parseInt(r,10);if(Number.isFinite(e))return e}return null}function oN(r){let e=r?.proxy_range??r?.proxyRange;return e==null||e===""?!0:m2(e)}function aN(r){return r?m2(r.enable_sign??r.enableSign):!1}function cN(r){return r?m2(r.disable_index??r.disableIndex):!1}function jre(r){let e=Wc(r?.cache_expiration??r?.cacheExpiration);return e===null||e<0?30:e}function $re(r){let e=r?.custom_cache_policies??r?.customCachePolicies;if(!e)return[];if(typeof e=="string"){let i=e.trim();if(!i)return[];try{e=JSON.parse(i)}catch{let n=[];for(let s of i.split(",")){let o=s.lastIndexOf(":");if(o<=0)continue;let a=s.slice(0,o).trim(),c=Wc(s.slice(o+1).trim());a&&c!==null&&n.push({path:a,cacheExpiration:c})}return n}}let t=[];if(Array.isArray(e)){for(let i of e)if(i){if(typeof i=="string"){let n=i.lastIndexOf(":");if(n<=0)continue;let s=i.slice(0,n).trim(),o=Wc(i.slice(n+1).trim());s&&o!==null&&t.push({path:s,cacheExpiration:o});continue}if(typeof i=="object"){let n=i.path??i.Path,s=Wc(i.cache_expiration??i.cacheExpiration)??Wc(i.max_age??i.maxAge);if(typeof n=="string"&&n&&s!==null){let o=Wc(i.max_age??i.maxAge);t.push({path:n,cacheExpiration:s,...o!==null?{maxAge:o}:{}})}}}return t}if(typeof e=="object")for(let[i,n]of Object.entries(e)){let s=Wc(n);i&&s!==null&&t.push({path:i,cacheExpiration:s})}return t}var Vre=1024,Yre=4096;function nN(r,e){if(!r)return!1;if(r===e)return!0;if(r.length>Vre||e.length>Yre)return!1;let t=r.split("/"),i=e.split("/"),n=t.length,s=i.length,o=new Array(s+1).fill(!1);o[s]=!0;for(let a=n-1;a>=0;a--){let c=t[a],l=new Array(s+1).fill(!1);if(/^\*{2,}$/.test(c)){l[s]=o[s];for(let u=s-1;u>=0;u--)l[u]=o[u]||l[u+1]}else for(let u=s-1;u>=0;u--)l[u]=Wre(c,i[u])&&o[u+1];o=l}return o[0]}function Wre(r,e){let t=0,i=0,n=-1,s=-1,o=r.length,a=e.length;for(;i<a;){let c=t<o?r[t]:void 0;if(c==="*"){n=t,s=i,t++;continue}if(c==="?"||c===e[i]){t++,i++;continue}if(n!==-1){s++,i=s,t=n+1;continue}return!1}for(;t<o&&r[t]==="*";)t++;return t===o}function lN(r,e){let t="/"+String(e||"").split("/").filter(Boolean).join("/"),i=jre(r),n=$re(r);if(n.length===0)return i;let s=null;for(let o of n){let a=o.path.trim();a&&(!a.startsWith("/")&&!a.startsWith("*")&&(a="/"+a),(nN(a,t)||nN(a,t.slice(1)))&&(s=o))}return s?s.cacheExpiration:i}var dN=24*3600;function Xre(r,e){if(typeof r!="string"||typeof e!="string"||r.length!==e.length)return!1;let t=0;for(let i=0;i<r.length;i++)t|=r.charCodeAt(i)^e.charCodeAt(i);return t===0}async function zd(r){try{let e=await ne(r?.env),t={};for(let s of e.settings||[])t[s.key]=s.value;let i=t.sign_all==="true",n=parseInt(t.link_expiration,10)||0;return!i&&n<=0?{enabled:!1,expiresIn:0}:{enabled:!0,expiresIn:n>0?n:dN}}catch{return{enabled:!1,expiresIn:0}}}function Gd(r){return"/"+String(r||"").split("/").filter(Boolean).join("/")}function Zre(r,e,t){let i=Gd(r).toLowerCase(),n=Gd(e).toLowerCase();if(i===n)return!0;if(!t)return!1;for(;n!=="/";)if(n=Gd(n.split("/").slice(0,-1).join("/")),i===n)return!0;return!1}async function eie(r,e){try{let i=(await ne(r?.env)).metas||[];if(!i.length)return null;let n=Gd(e);for(;;){let s=i.find(o=>Gd(o.path).toLowerCase()===n.toLowerCase());if(s)return s;if(n==="/")return null;n=Gd(n.split("/").slice(0,-1).join("/"))}}catch{return null}}async function tie(r,e){try{let{resolvePath:t}=await Promise.resolve().then(()=>(Ve(),Gr)),i=await t(e);return i?.storage?aN(i.storage):!1}catch{return!1}}async function WI(r,e){if(await tie(r,e))return!0;let t=await eie(r,e);return!t||!t.password?!1:Zre(t.path,e,!!t.p_sub)}async function uN(r,e){return(await zd(r)).enabled?!0:await WI(r,e)}async function DA(r){try{let e=await ne(r?.env);for(let t of e.settings||[])if(t.key==="link_expiration"){let i=parseInt(t.value,10)||0;if(i>0)return i;break}}catch{}return dN}async function QA(r,e,t){let i=await kr(r),n=Math.floor(Date.now()/1e3)+t,s=await Bx(`${e}:${n}`,i);return`${n}.${s}`}async function fN(r,e,t){let i=t.lastIndexOf(".");if(i<=0)return!1;let n=parseInt(t.slice(0,i),10),s=t.slice(i+1);if(!Number.isFinite(n)||n<=Math.floor(Date.now()/1e3))return!1;let o=await kr(r),a=await Bx(`${e}:${n}`,o);return Xre(a,s)}Da();Yt();async function Jd(r={},e){let t=(r.parent||"/").replace(/\/+/g,"/")||"/",i=String(r.keywords||"").trim().toLowerCase(),n=r.scope??0,s=Math.max(1,r.page||1),o=Math.max(1,Math.min(100,r.per_page||30)),a=Math.min(20,Math.max(0,r.max_depth??10)),c=Math.min(2e3,Math.max(1,r.max_results??500)),l=[];async function d(g,p){if(p>a||l.length>=c)return;let I=[];try{I=(await Zt(g)).content||[]}catch{return}for(let y of I){if(l.length>=c)break;let w=!i||y.name.toLowerCase().includes(i),C=!!y.is_dir,b=C&&!y.sign,x=!0;if(n===1&&!C&&(x=!1),n===2&&C&&(x=!1),!b&&w&&x&&l.push({...y,parent:g.endsWith("/")&&g!=="/"?g.slice(0,-1):g}),C){let _=g==="/"?`/${y.name}`:`${g}/${y.name}`;await d(_,p+1)}}}await d(t,0);let u=l.length,f=(s-1)*o;return{content:l.slice(f,f+o),total:u}}function XI(r){let e=new DataView(r),t=r.byteLength,i=-1,n=Math.max(0,t-22-65557);for(let l=t-22;l>=n;l--)if(e.getUint32(l,!0)===101010256){i=l;break}if(i===-1)throw new Error("Invalid ZIP: End of Central Directory not found");let s=e.getUint16(i+10,!0),o=e.getUint32(i+16,!0),a=[],c=o;for(let l=0;l<s&&e.getUint32(c,!0)===33639248;l++){let d=e.getUint16(c+10,!0),u=e.getUint32(c+20,!0),f=e.getUint32(c+24,!0),h=e.getUint16(c+28,!0),g=e.getUint16(c+30,!0),p=e.getUint16(c+32,!0),I=e.getUint32(c+42,!0),y=e.getUint16(c+12,!0),w=e.getUint16(c+14,!0),C=rie(w,y),b=new Uint8Array(r,c+46,h),x=new TextDecoder("utf-8").decode(b);if(c+=46+h+g+p,x.endsWith("/")||e.getUint32(I,!0)!==67324752)continue;let _=e.getUint16(I+26,!0),R=e.getUint16(I+28,!0),U=I+30+_+R;a.push({name:x.replace(/\\/g,"/"),isDir:!1,size:f,compressedSize:u,compressionMethod:d,dataOffset:U,modified:C})}return{entries:a}}async function AN(r,e){let t=new Uint8Array(r,e.dataOffset,e.compressedSize);if(e.compressionMethod===0)return new Uint8Array(t);if(e.compressionMethod===8){if(typeof DecompressionStream>"u")throw new Error("DecompressionStream is not supported in this runtime");let i=new DecompressionStream("deflate-raw"),n=i.writable.getWriter();n.write(t),n.close();let s=await new Response(i.readable).arrayBuffer();return new Uint8Array(s)}throw new Error(`Unsupported ZIP compression method: ${e.compressionMethod}`)}function rie(r,e){let t=1980+(r>>9&127),i=r>>5&15,n=r&31,s=e>>11&31,o=e>>5&63,a=(e&31)*2,c=l=>String(l).padStart(2,"0");return`${t}-${c(i)}-${c(n)}T${c(s)}:${c(o)}:${c(a)}Z`}lc();wr();Qi();lc();Da();Ve();Yt();var FA=Qr(vm(),1);var ZI="openlist-sharing-seed";var iie={md5:32,sha1:40,sha256:64};function mr(r){return typeof r=="string"?r:""}var nie=64,sie=4096;function hN(r){let e=mr(r).trim();if(e.length>sie)throw new Error("Seed file path exceeds the maximum length");let t=e.split("/");if(t.length>nie)throw new Error("Seed file path exceeds the maximum depth");if(e.includes("\0")||e.includes("\\")||e.startsWith("/")||t.length===0||t.some(i=>!i||i==="."||i===".."))throw new Error("Seed file path must be a safe relative path");return t.join("/")}function _A(r,e){let t=mr(r).toLowerCase();if(t&&!new RegExp(`^[0-9a-f]{${iie[e]}}$`).test(t))throw new Error(`Invalid ${e} hash`);return t}function oie(r){return Array.isArray(r)?r.map(e=>{if(!e||typeof e!="object")throw new Error("Invalid seed source");let t=mr(e.type),i=mr(e.url);if(!t||!i)throw new Error("Seed source type and URL are required");try{if(!new URL(i).protocol)throw new Error("missing scheme")}catch{throw new Error("Seed source URL must be absolute")}return{type:t,url:i,expires_at:mr(e.expires_at),share_id:mr(e.share_id)}}):[]}function Ki(r){if(!r||typeof r!="object")throw new Error("Invalid seed payload");let e=r;if(e.format!==void 0&&e.format!==ZI)throw new Error("Unsupported seed format");if(e.version!==void 0&&Number(e.version)!==1)throw new Error("Unsupported seed version");let t=Number(e.piece_size||10485760);if(!Number.isSafeInteger(t)||t<16*1024||t>64*1024*1024)throw new Error("Invalid piece_size");if(!Array.isArray(e.files)||e.files.length===0||e.files.length>1e5)throw new Error("Seed file count must be between 1 and 100000");let i=e.files.map(o=>{if(!o||typeof o!="object")throw new Error("Invalid seed file");let a=Number(o.size);if(!Number.isSafeInteger(a)||a<0)throw new Error("Invalid seed file size");let c=o.hashes||{},l=c.pieces||{},d=a>0?Math.ceil(a/t):0,u=f=>{if(!Array.isArray(l[f]))return[];let h=l[f].map(g=>_A(g,f));if(h.length!==0&&h.length!==d)throw new Error(`${f} piece count is ${h.length}, expected ${d}`);return h};return{path:hN(o.path),size:a,modified:mr(o.modified),comment:mr(o.comment),hashes:{md5:_A(c.md5,"md5"),sha1:_A(c.sha1,"sha1"),sha256:_A(c.sha256,"sha256"),pieces:{md5:u("md5"),sha1:u("sha1"),sha256:u("sha256")}},sources:oie(o.sources),cas_slice_md5:_A(o.cas_slice_md5,"md5"),cas_create_time:mr(o.cas_create_time),cas_cloud:mr(o.cas_cloud).trim(),missing_channels:Array.isArray(o.missing_channels)?o.missing_channels.map(mr).filter(Boolean):[]}}),n=new Set;for(let o of i){if(n.has(o.path))throw new Error(`Duplicate seed file path: ${o.path}`);n.add(o.path)}let s=mr(e.name)||i[0].path.split("/")[0];if(!s.trim()||s==="."||s===".."||/[\\/\0]/.test(s))throw new Error("Invalid seed name");return{format:ZI,version:1,name:s,comment:mr(e.comment),created_at:mr(e.created_at)||new Date().toISOString(),created_by:mr(e.created_by)||"OpenList",piece_size:t,trackers:Array.isArray(e.trackers)?e.trackers.map(mr).filter(Boolean):[],channels:Array.isArray(e.channels)?e.channels.map(o=>{if(!o||typeof o!="object"||!mr(o.driver).trim())throw new Error("Seed channel driver is required");let a=mr(o.mount_path);if(/[?#\0]/.test(a))throw new Error("Seed channel mount_path contains invalid characters");return{driver:mr(o.driver).trim(),mount_path:a}}):[],files:i}}function ew(r,e){let t=r&&typeof r=="object"?r:{},i=o=>({whole:!!t[o]?.whole,pieces:!!t[o]?.pieces}),n={md5:i("md5"),sha1:i("sha1"),sha256:i("sha256")};!n.md5.whole&&!n.md5.pieces&&!n.sha1.whole&&!n.sha1.pieces&&!n.sha256.whole&&!n.sha256.pieces&&(n={md5:{whole:!0,pieces:!0},sha1:{whole:!0,pieces:!0},sha256:{whole:!0,pieces:!0}});for(let o of e)o==="torrent"&&(n.sha1={whole:!0,pieces:!0}),o==="cas"&&(n.md5={whole:!0,pieces:!0});return n}function y2(r,e){let t={md5:e.md5.whole?r.hashes.md5:"",sha1:e.sha1.whole?r.hashes.sha1:"",sha256:e.sha256.whole?r.hashes.sha256:"",pieces:{md5:e.md5.pieces?r.hashes.pieces.md5:[],sha1:e.sha1.pieces?r.hashes.pieces.sha1:[],sha256:e.sha256.pieces?r.hashes.pieces.sha256:[]}};return{...r,hashes:t}}function gN(r){return hN(r)}var Un=new TextEncoder,Pa=new TextDecoder("utf-8",{fatal:!0}),cie=32,lie=1e5;function tw(r){let e=r.reduce((n,s)=>n+s.byteLength,0),t=new Uint8Array(e),i=0;for(let n of r)t.set(n,i),i+=n.byteLength;return t}function jd(r){if(r instanceof Uint8Array)return tw([Un.encode(`${r.byteLength}:`),r]);if(typeof r=="string")return jd(Un.encode(r));if(typeof r=="number"){if(!Number.isSafeInteger(r))throw new Error("Bencode integer is out of range");return Un.encode(`i${r}e`)}if(Array.isArray(r))return tw([Un.encode("l"),...r.map(jd),Un.encode("e")]);let e=Object.entries(r).sort(([t],[i])=>{let n=Un.encode(t),s=Un.encode(i),o=Math.min(n.length,s.length);for(let a=0;a<o;a++)if(n[a]!==s[a])return n[a]-s[a];return n.length-s.length});return tw([Un.encode("d"),...e.flatMap(([t,i])=>[jd(t),jd(i)]),Un.encode("e")])}function die(r){let e=0,t=0,i=s=>{if(++t>lie)throw new Error("Bencode item limit exceeded");if(s>cie)throw new Error("Bencode nesting limit exceeded");let o=r[e];if(o===105){let a=r.indexOf(101,++e);if(a<0)throw new Error("Unterminated bencode integer");let c=Pa.decode(r.subarray(e,a));if(!/^(0|-?[1-9]\d*)$/.test(c))throw new Error("Invalid bencode integer");let l=Number(c);if(!Number.isSafeInteger(l))throw new Error("Bencode integer is out of range");return e=a+1,l}if(o===108){e++;let a=[];for(;e<r.length&&r[e]!==101;)a.push(i(s+1));if(r[e++]!==101)throw new Error("Unterminated bencode list");return a}if(o===100){e++;let a={};for(;e<r.length&&r[e]!==101;){let c=i(s+1);if(!(c instanceof Uint8Array))throw new Error("Bencode dictionary key is not a string");let l=Pa.decode(c);a[l]=i(s+1)}if(r[e++]!==101)throw new Error("Unterminated bencode dictionary");return a}if(o>=48&&o<=57){let a=r.indexOf(58,e);if(a<0)throw new Error("Invalid bencode byte string");let c=Pa.decode(r.subarray(e,a));if(!/^(0|[1-9]\d*)$/.test(c))throw new Error("Invalid bencode byte string length");let l=Number(c),d=a+1,u=d+l;if(!Number.isSafeInteger(l)||u>r.length)throw new Error("Truncated bencode byte string");return e=u,r.slice(d,u)}throw new Error("Invalid bencode value")},n=i(0);if(e!==r.length)throw new Error("Trailing bencode data");return n}function $d(r,e){if(!r||typeof r!="object"||Array.isArray(r)||r instanceof Uint8Array)throw new Error(`${e} must be a dictionary`);return r}function uie(r){return r instanceof Uint8Array?r:new Uint8Array}function dn(r){return r instanceof Uint8Array?Pa.decode(r):typeof r=="string"?r:""}function Fa(r){return typeof r=="number"?r:0}function fie(r){return Array.isArray(r)?r.map(e=>dn(e)).filter(Boolean):[]}function I2(r){return r==null?"":typeof r=="string"||typeof r=="number"||r instanceof Uint8Array?r:typeof r=="boolean"?r?1:0:Array.isArray(r)?r.map(I2):typeof r=="object"?Object.fromEntries(Object.entries(r).map(([e,t])=>[e,I2(t)])):String(r)}function w2(r){return r instanceof Uint8Array?Pa.decode(r):Array.isArray(r)?r.map(w2):r&&typeof r=="object"?Object.fromEntries(Object.entries(r).map(([e,t])=>[e,w2(t)])):r}function Aie(r){if(!r||r.length%2!==0||!/^[0-9a-f]+$/i.test(r))return new Uint8Array;let e=new Uint8Array(r.length/2);for(let t=0;t<e.length;t++)e[t]=parseInt(r.slice(t*2,t*2+2),16);return e}function hie(r){return Array.from(r,e=>e.toString(16).padStart(2,"0")).join("")}function gie(r){if(r.files.length>1){for(let e of r.files.slice(0,-1))if(e.size%r.piece_size!==0)throw new Error("Cannot convert this multi-file seed to a standard torrent: a file boundary splits a piece")}return r.files.flatMap(e=>e.hashes.pieces.sha1)}async function pie(r,e){if(!r.hashes.md5)return;let t=r.cas_slice_md5?r.cas_slice_md5.toUpperCase():"",i=r.hashes.pieces.md5.map(n=>n.toUpperCase());if(!t&&i.length>0&&e===10485760&&(t=i.length>1?(await(0,FA.md5)(i.join(` +`))).toUpperCase():i[0]),!!t)return{cloud:r.cas_cloud||"189",file_md5:r.hashes.md5.toUpperCase(),slice_md5:t,slice_md5s:i,slice_size:e}}function mie(r){return Un.encode(JSON.stringify(Ki(r),null,2))}function x2(r){let e=JSON.parse(Pa.decode(r));if(e?.format!==ZI||Number(e?.version)!==1||!e?.created_at||!e?.created_by)throw new Error("Invalid or incomplete OpenList sharing seed");return Ki(e)}async function pN(r,e){if(!r.hashes.md5)throw new Error(`CAS requires a whole-file MD5 for ${r.path}`);let t=r.cas_slice_md5?r.cas_slice_md5.toUpperCase():"";if(!t&&r.hashes.pieces.md5.length>0&&e===10485760){let n=r.hashes.pieces.md5.map(s=>s.toUpperCase());t=n.length>1?(await(0,FA.md5)(n.join(` +`))).toUpperCase():n[0]}if(!t){if(r.size>10485760)throw new Error(`CAS requires a legacy slice MD5 or complete 10 MiB MD5 pieces for ${r.path}`);t=r.hashes.md5.toUpperCase()}let i={name:r.path.split("/").pop()||r.path,size:r.size,md5:r.hashes.md5,sliceMd5:t,create_time:r.cas_create_time||String(Math.floor(Date.now()/1e3)),cloud:r.cas_cloud||"189"};return r.hashes.pieces.md5.length>0&&(i.slice_md5s=r.hashes.pieces.md5.map(n=>n.toUpperCase()),i.slice_size=e||10485760),i}async function yie(r){let e=Ki(r);if(e.files.length===0)throw new Error("CAS requires at least one file");let t;if(e.files.length===1){let i=await pN(e.files[0],e.piece_size);t={name:i.name,size:i.size,md5:i.md5,sliceMd5:i.sliceMd5,create_time:i.create_time,slice_md5s:i.slice_md5s,slice_size:i.slice_size,cloud:i.cloud}}else{let i=[],n=0;for(let s of e.files){let o=await pN(s,e.piece_size);i.push(o),n+=o.size}t={name:e.name,size:n,md5:"",sliceMd5:"",create_time:"",files:i}}return Un.encode(Buffer.from(JSON.stringify(t)).toString("base64"))}function mN(r){let e=Pa.decode(r).trim(),t=e;try{t=Buffer.from(e,"base64").toString("utf8"),JSON.parse(t)}catch{t=e}let i=JSON.parse(t),n=l=>{if(!l.name||!Number.isSafeInteger(l.size)||Number(l.size)<0||!l.md5)throw new Error("Invalid CAS file entry");let d=String(l.md5).toLowerCase(),u=String(l.sliceMd5||l.md5).toLowerCase();if(!/^[0-9a-f]{32}$/i.test(d)||!/^[0-9a-f]{32}$/i.test(u))throw new Error("Invalid CAS hash");let f=Array.isArray(l.slice_md5s)?l.slice_md5s.map(h=>String(h).toLowerCase()):[];return{path:l.name,size:Number(l.size),modified:"",comment:"",hashes:{md5:d,sha1:"",sha256:"",pieces:{md5:f,sha1:[],sha256:[]}},sources:[],cas_slice_md5:u,cas_create_time:l.create_time||"",cas_cloud:String(l.cloud||""),missing_channels:[]}};if(Array.isArray(i.files)&&i.files.length>0){let l=i.files.map(n);return{format:"cas",cas:{name:String(i.name),size:l.reduce((u,f)=>u+f.size,0),md5:"",sliceMd5:"",create_time:"",cloud:String(i.cloud||""),files:i.files},seed:Ki({name:i.name,comment:"Imported from OpenList CAS metadata",created_at:new Date().toISOString(),created_by:"OpenList",piece_size:10485760,files:l})}}if(!i.name||!Number.isSafeInteger(i.size)||Number(i.size)<0||!i.md5)throw new Error("Invalid CAS payload");let s=String(i.md5).toLowerCase(),o=String(i.sliceMd5||i.md5);if(!/^[0-9a-f]{32}$/i.test(s)||!/^[0-9a-f]{32}$/i.test(o))throw new Error("Invalid CAS hash");let a=Number(i.create_time);return{format:"cas",cas:{name:String(i.name),size:Number(i.size),md5:s,sliceMd5:o,create_time:String(i.create_time||""),slice_md5s:i.slice_md5s,slice_size:i.slice_size,cloud:String(i.cloud||"")},seed:Ki({name:i.name,comment:"Imported from OpenList CAS metadata",created_at:Number.isFinite(a)&&a>0?new Date(a*1e3).toISOString():new Date().toISOString(),created_by:"OpenList",piece_size:i.slice_size||10485760,files:[n({name:i.name,size:Number(i.size),md5:s,sliceMd5:o,create_time:String(i.create_time||""),slice_md5s:i.slice_md5s,slice_size:i.slice_size})]})}}async function C2(r,e){let t=Ki(r),i=e||gie(t);if(i.some(o=>o.length!==40))throw new Error("Torrent conversion requires SHA-1 piece hashes");let n={name:t.name,"piece length":t.piece_size,pieces:tw(i.map(Aie))};t.files.length===1?(n.length=t.files[0].size,t.files[0].hashes.md5&&(n.md5sum=t.files[0].hashes.md5)):n.files=t.files.map(o=>{let a={length:o.size,path:o.path.split("/")};return o.hashes.md5&&(a.md5sum=o.hashes.md5),a});let s={info:n,comment:t.comment,"created by":t.created_by,"creation date":Math.floor(new Date(t.created_at).getTime()/1e3)||Math.floor(Date.now()/1e3),"x-openlist":I2(t)};if(t.trackers.length&&(s.announce=t.trackers[0],s["announce-list"]=t.trackers.map(o=>[o])),t.files.length===1){let o=await pie(t.files[0],t.piece_size);o&&(s["x-cas"]=o)}return jd(s)}function Iie(r,e,t,i,n){let s=Array.isArray(r.files)?r.files:null,o=s?s.map(c=>{let l=$d(c,"torrent file");return{path:(Array.isArray(l.path)?l.path.map(dn):[]).join("/"),size:Fa(l.length),md5:dn(l.md5sum)}}):[{path:e,size:Fa(r.length),md5:dn(r.md5sum)}],a=0;return o.map((c,l)=>{let d=c.size>0?Math.ceil(c.size/i):0,f=(l===o.length-1||c.size%i===0)&&a+d<=t.length?t.slice(a,a+d):[];a+=d;let h=o.length===1&&n?dn(n.slice_md5):"",g=o.length===1&&n?dn(n.create_time):"",p=o.length===1&&n?dn(n.cloud):"";return{path:c.path,size:c.size,modified:"",comment:"",hashes:{md5:c.md5.toLowerCase(),sha1:"",sha256:"",pieces:{md5:[],sha1:f,sha256:[]}},sources:[],cas_slice_md5:h.toLowerCase(),cas_create_time:g,cas_cloud:p,missing_channels:[]}})}async function yN(r){let e=$d(die(r),"torrent root"),t=$d(e.info,"torrent info"),i=await(0,FA.sha1)(jd(t)),n=dn(t.name),s=Fa(t["piece length"]),o=uie(t.pieces);if(!n||s<=0||o.length%20!==0)throw new Error("Invalid torrent info dictionary");let a=Array.isArray(t.files)?t.files.reduce((g,p)=>g+Fa($d(p,"torrent file").length),0):Fa(t.length),c=a>0?Math.ceil(a/s):0;if(o.length/20!==c)throw new Error("Torrent piece count mismatch");if(e["x-openlist"]){let g=Ki(w2(e["x-openlist"]));return wie(g,t,n,s),{format:"torrent",seed:g,info_hash:i}}let l=[];for(let g=0;g<o.length;g+=20)l.push(hie(o.subarray(g,g+20)));let d=[dn(e.announce),...Array.isArray(e["announce-list"])?e["announce-list"].flatMap(g=>fie(g)):[]].filter((g,p,I)=>g&&I.indexOf(g)===p),u=Fa(e["creation date"]),f=e["x-cas"]?$d(e["x-cas"],"x-cas"):void 0;return{format:"torrent",seed:Ki({name:n,comment:dn(e.comment),created_at:u>0?new Date(u*1e3).toISOString():new Date().toISOString(),created_by:dn(e["created by"])||"OpenList",piece_size:s,trackers:d,channels:[],files:Iie(t,n,l,s,f)}),info_hash:i}}function wie(r,e,t,i){if(r.name!==t||r.piece_size!==i)throw new Error("x-openlist metadata conflicts with torrent info");let n=Array.isArray(e.files)?e.files:null;if(!n){if(r.files.length!==1||r.files[0].size!==Fa(e.length))throw new Error("x-openlist file list conflicts with torrent info");return}if(r.files.length!==n.length)throw new Error("x-openlist file count conflicts with torrent info");n.forEach((s,o)=>{let a=$d(s,"torrent file"),c=(Array.isArray(a.path)?a.path.map(dn):[]).join("/");if(r.files[o].path!==c||r.files[o].size!==Fa(a.length))throw new Error(`x-openlist file ${o} conflicts with torrent info`)})}async function wN(r,e){if(e==="oss")return{format:"oss",seed:x2(r)};if(e==="torrent")return yN(r);if(e==="cas")return mN(r);let t=Pa.decode(r.subarray(0,Math.min(r.length,32))).trimStart()[0];return t==="{"?{format:"oss",seed:x2(r)}:t==="d"?yN(r):mN(r)}async function PA(r,e){return e==="oss"?mie(r):e==="torrent"?C2(r):yie(r)}var Ta=Qr(vm(),1);async function xN(){let[r,e,t]=await Promise.all([(0,Ta.createMD5)(),(0,Ta.createSHA1)(),(0,Ta.createSHA256)()]);return{md5:r.init(),sha1:e.init(),sha256:t.init()}}function CN(r,e){r.md5.update(e),r.sha1.update(e),r.sha256.update(e)}function E2(r){return{md5:r.md5.digest("hex").toLowerCase(),sha1:r.sha1.digest("hex").toLowerCase(),sha256:r.sha256.digest("hex").toLowerCase()}}function xie(r){r.md5.init(),r.sha1.init(),r.sha256.init()}var TA=class r{constructor(e,t){this.pieceSize=t;this.hasher=e.init()}pieceSize;hasher;written=0;hashes=[];static async create(e){return new r(await(0,Ta.createSHA1)(),e)}update(e){let t=0;for(;t<e.length;){let i=Math.min(this.pieceSize-this.written,e.length-t);this.hasher.update(e.subarray(t,t+i)),this.written+=i,t+=i,this.written===this.pieceSize&&this.finishPiece()}}digest(){return this.written>0&&this.finishPiece(),[...this.hashes]}finishPiece(){this.hashes.push(this.hasher.digest("hex").toLowerCase()),this.hasher.init(),this.written=0}};async function B2(r,e,t,i,n){if(!Number.isSafeInteger(t)||t<0||t>i)throw new Error(`File exceeds the hashing limit of ${i} bytes`);let s=await xN(),o=await xN(),a={md5:[],sha1:[],sha256:[]},c=r.getReader(),l=0,d=0;try{for(;;){let{done:u,value:f}=await c.read();if(u)break;if(!f?.length)continue;if(l+f.length>i||l+f.length>t)throw new Error("Downloaded file size exceeds the declared or configured limit");l+=f.length,n?.update(f),CN(s,f);let h=0;for(;h<f.length;){let g=Math.min(e-d,f.length-h);if(CN(o,f.subarray(h,h+g)),d+=g,h+=g,d===e){let p=E2(o);a.md5.push(p.md5),a.sha1.push(p.sha1),a.sha256.push(p.sha256),xie(o),d=0}}}}finally{c.releaseLock()}if(l!==t)throw new Error(`Downloaded file size mismatch: expected ${t}, received ${l}`);if(d>0){let u=E2(o);a.md5.push(u.md5),a.sha1.push(u.sha1),a.sha256.push(u.sha256)}return{size:l,hashes:{...E2(s),pieces:a}}}var ys=new Xe,rw=10*1024*1024,k2=512*1024*1024,EN=1e3,Cie=8*1024*1024,BN=4*1024*1024;function An(r,e,t){let i=r.env?.[e]??(typeof process<"u"?process.env?.[e]:void 0),n=Number(i);return Number.isSafeInteger(n)&&n>0?n:t}function UA(r){try{return typeof r.executionCtx?.waitUntil!="function"?void 0:{waitUntil:e=>r.executionCtx.waitUntil(e)}}catch{return}}function qr(r,e,t){return r.json({code:e,message:t,data:null},e)}async function Yd(r){let e=An(r,"SEED_MAX_METADATA_SIZE",rw);if(Number(r.req.header("Content-Length")||0)>e)throw new Error(`Seed request exceeds the ${e} byte limit`);let i=await r.req.text();if(new TextEncoder().encode(i).byteLength>e)throw new Error(`Seed request exceeds the ${e} byte limit`);return i.trim()?JSON.parse(i):{}}function po(r,e="/"){let t=String(r||e).replace(/\\/g,"/").trim();if(t.includes("\0"))throw new Error("Path contains an illegal null byte");let i=t.split("/").filter(Boolean);if(i.some(n=>n==="."||n===".."))throw new Error("Path traversal is not allowed");return"/"+i.join("/")}function S2(r,e){return po(`${r.replace(/\/+$/,"")}/${e}`)}function bN(r,e){if(!pt(r))throw new Error("Permission denied");let t=po(e);if(t==="/@s"||t.startsWith("/@s/"))throw new Error("Writing through a share path is not allowed");let i=We(r,t),n=po(r?.base_path||"/");if(n!=="/"&&i!==n&&!i.startsWith(`${n}/`))throw new Error("Target path is outside the user base path");return i}function Eie(r,e){if(r instanceof Uint8Array)return r;if(Array.isArray(r)&&r.every(t=>Number.isInteger(t)&&t>=0&&t<=255))return Uint8Array.from(r);if(typeof r!="string")throw new Error("Seed content is required");return e==="text"||r.trimStart().startsWith("{")||r.trimStart().startsWith("d")?new TextEncoder().encode(r):new Uint8Array(Buffer.from(r,"base64"))}function iw(r){let e=String(r||"").toLowerCase().replace(/^\./,"");return e==="oss"||e==="torrent"||e==="cas"?e:void 0}function vN(r,e){return`${r.name.replace(/[\\/:*?"<>|\0]/g,"_")||"seed"}.${e==="torrent"?"torrent":e}`}function b2(r){let e=r.split("/").pop()||r,t=e.lastIndexOf(".");return t>0?e.slice(0,t):e}function Bie(r){if(r.length===0)return"OpenList Seed";if(r.length===1)return b2(r[0].virtualPath);let e=b2(r[0].virtualPath);if(r.every(o=>b2(o.virtualPath)===e)&&e)return e;let n=r[0].virtualPath.split("/").slice(0,-1);for(let o of r.slice(1)){let a=o.virtualPath.split("/").slice(0,-1),c=0;for(;c<n.length&&c<a.length&&n[c]===a[c];)c++;n=n.slice(0,c)}return n[n.length-1]||"OpenList Seed"}function D2(r,e,t,i={}){let n=Buffer.from(t).toString("base64");return{format:e,file_name:vN(r,e),seed_data:n,size:t.byteLength,seed:r,...i}}function kN(r){let e=r.env?.ALLOW_SEED??(typeof process<"u"?process.env?.ALLOW_SEED:"");return String(e||"").split(/[\s,;]+/).map(t=>t.toLowerCase()).filter(Boolean)}function SN(r,e){let t=r.toLowerCase();return e.some(i=>i.startsWith("*.")?t.endsWith(i.slice(1))&&t!==i.slice(2):t===i)}function v2(r,e){if(!e.url)throw new Error("Seed source URL is required");let t=new URL(r.req.url),i=new URL(e.url,t.origin);if(zr(i.toString(),"Seed source"),i.username||i.password)throw new Error("Seed source URL credentials are not allowed");let n=e.type.toLowerCase(),s=i.origin===t.origin&&(/^\/(api\/)?p\//.test(i.pathname)||i.pathname.startsWith("/d/")||i.pathname.startsWith("/@s/")),o=["share","openlist-share"].includes(n)&&i.pathname.startsWith("/@s/"),a=["direct","openlist-direct"].includes(n)&&s;if(!o&&!a&&!SN(i.hostname,kN(r)))throw new Error("Seed source host is not an approved OpenList endpoint or configured domain");if(e.expires_at){let c=Date.parse(e.expires_at);if(!Number.isFinite(c)||c<=Date.now())throw new Error("Seed source has expired")}return i}async function nw(r,e,t={},i=!1){let n=e;for(let s=0;s<=3;s++){if(zr(n.toString(),"Seed fetch"),i){let c=new URL(r.req.url);if(!(n.origin===c.origin&&(/^\/(api\/)?p\//.test(n.pathname)||n.pathname.startsWith("/@s/")))&&!SN(n.hostname,kN(r)))throw new Error("Seed fetch redirect left the approved source allowlist")}let o=await fetch(n,{...t,redirect:"manual"});if(o.status<300||o.status>=400)return o;let a=o.headers.get("Location");if(!a)throw new Error("Seed fetch redirect is missing a Location header");n=new URL(a,n)}throw new Error("Seed fetch exceeded the redirect limit")}async function bie(r,e,t){let i=We(e,po(t)),{item:n}=await Di(i,UA(r)),s=An(r,"SEED_MAX_METADATA_SIZE",rw);if(n.is_dir||n.size<0||n.size>s)throw new Error(`Seed file exceeds the ${s} byte limit`);let o=n.raw_url||`${new URL(r.req.url).origin}/api/p${i}`,a=n.raw_url_headers||{};!n.raw_url&&r.req.header("Authorization")&&(a.Authorization=r.req.header("Authorization"));let c=await nw(r,new URL(o,r.req.url),{headers:a});if(!c.ok)throw new Error(`Seed file download failed with HTTP ${c.status}`);if(Number(c.headers.get("Content-Length")||n.size)>s)throw new Error(`Seed file exceeds the ${s} byte limit`);let d=c.body?.getReader();if(!d)throw new Error("Seed file response has no body");let u=[],f=0;for(;;){let{done:p,value:I}=await d.read();if(p)break;if(I?.length){if(f+=I.length,f>s)throw new Error(`Seed file exceeds the ${s} byte limit`);u.push(I)}}let h=new Uint8Array(f),g=0;for(let p of u)h.set(p,g),g+=p.length;return h}async function RA(r,e,t){if(t.seed&&typeof t.seed=="object")return{format:"oss",seed:Ki(t.seed)};let i=An(r,"SEED_MAX_METADATA_SIZE",rw),n=t.seed_data||t.content||t.data||t.torrent_data,s=t.seed_path||t.path&&!n?await bie(r,e,String(t.seed_path||t.path)):Eie(t.seed_data??t.content??t.data??t.torrent_data,t.encoding);if(s.byteLength>i)throw new Error(`Seed content exceeds the ${i} byte limit`);return wN(s,iw(t.format||t.from_format||t.file_name?.split(".").pop()))}async function Q2(r,e,t){let i=Array.isArray(t)?t:[t];if(!i.length||i.some(a=>typeof a!="string"||!a.trim()))throw new Error("paths must contain at least one path");let n=An(r,"SEED_MAX_FILES",EN),s=[],o=async(a,c)=>{if(s.length>=n)throw new Error(`Seed file count exceeds the ${n} file limit`);let l=We(e,a),{item:d}=await Di(l,UA(r));if(!d.is_dir){let f=d.raw_url||`${new URL(r.req.url).origin}/api/p${l}`,h={...d.raw_url_headers||{}};!d.raw_url&&r.req.header("Authorization")&&(h.Authorization=r.req.header("Authorization")),s.push({virtualPath:l,relativePath:gN(c),size:d.size,modified:d.modified||"",rawUrl:f,headers:h,hashes:d.hashes??(d.hash?{md5:d.hash}:{})});return}let{content:u}=await Zt(l,UA(r));for(let f of u){let h=S2(a,f.name),g=`${c.replace(/\/$/,"")}/${f.name}`;await o(h,g)}};for(let a of i){let c=po(a),l=c.split("/").filter(Boolean).pop()||"root";await o(c,l)}if(!s.length)throw new Error("No files were found for seed generation");return s}function Vd(r,e){if(e==="cas"){let t=[];for(let i of r.files){i.hashes.md5||t.push(`${i.path}: missing whole-file MD5`);let n=!!i.cas_slice_md5,s=r.piece_size===10485760&&i.hashes.pieces.md5.length>0;i.size>10485760&&!n&&!s&&t.push(`${i.path}: missing legacy slice MD5 or complete 10 MiB MD5 pieces`)}return t}if(e==="torrent"){let t=[];return r.files.forEach((i,n)=>{i.hashes.pieces.sha1.length||t.push(`${i.path}: missing SHA-1 piece hashes`),r.files.length>1&&n<r.files.length-1&&i.size%r.piece_size!==0&&t.push(`${i.path}: piece boundary crosses the next file`)}),t}return[]}function vie(r){return{oss:Vd(r,"oss"),torrent:Vd(r,"torrent"),cas:Vd(r,"cas")}}function kie(r){return Object.fromEntries(["oss","torrent","cas"].map(e=>{let t=Vd(r,e);return[e,{feasible:t.length===0,missing:t}]}))}async function _2(r,e,t,i){if(!t)return;let n=bN(e,t);await Tn(n,Buffer.from(i),UA(r))}async function Sie(){try{let e=(await jn()).seed_default_matrix;if(e){let t=JSON.parse(String(e));if(t&&typeof t=="object")return t}}catch{}}async function Die(r){try{let e=await jn(),t=String(e.seed_site_url||"").trim();if(t)return t.replace(/\/+$/,"")}catch{}return new URL(r.req.url).origin}async function Qie(r,e,t){let i=e&&typeof e=="object"?e:null,n=!!i?.md5||!!i?.sha1||!!i?.sha256;if(!n)try{let o=(await jn()).seed_default_matrix;if(o){let a=JSON.parse(String(o));if(a?.md5||a?.sha1||a?.sha256)return ew(a,t)}}catch{}return ew(n?e:void 0,t)}async function _ie(r,e,t,i){let n=i.includes("cas")?10485760:Number(t.piece_size||10485760);if(!Number.isSafeInteger(n)||n<16*1024||n>64*1024*1024)throw new Error("Invalid piece_size");let s=await Qie(r,t.hash_matrix,i),o=t.file_comments&&typeof t.file_comments=="object"?t.file_comments:{},a=await Q2(r,e,t.paths??t.path),c=An(r,"SEED_MAX_HASH_BYTES",k2),l=a.reduce((h,g)=>h+g.size,0);if(!Number.isSafeInteger(l)||l>c)throw new Error(`Seed input exceeds the ${c} byte hashing limit`);let d=await TA.create(n),u=await Die(r),f=[];for(let h of a){let g=await nw(r,new URL(h.rawUrl,r.req.url),{headers:h.headers});if(!g.ok)throw new Error(`Source download failed with HTTP ${g.status}: ${h.virtualPath}`);if(!g.body)throw new Error(`Source download has no body: ${h.virtualPath}`);let p=await B2(g.body,n,h.size,c,d),I=String(o[h.relativePath]??o[h.virtualPath]??"");f.push(y2({path:h.relativePath,size:p.size,modified:h.modified,comment:I,hashes:p.hashes,cas_slice_md5:"",cas_create_time:"",cas_cloud:"",missing_channels:[],sources:t.include_direct_source===!0||t.include_sources===!0?[{type:"openlist-direct",url:`${u}/d${h.virtualPath}`,expires_at:"",share_id:""}]:[]},s))}return{torrentPieces:d.digest(),seed:Ki({name:String(t.name||Bie(a)),comment:String(t.comment||"Generated by OpenList"),created_at:new Date().toISOString(),created_by:String(t.created_by||"OpenList"),piece_size:n,trackers:Array.isArray(t.trackers)?t.trackers:[],channels:Array.isArray(t.channels)?t.channels:[],files:f})}}function F2(r,e){for(let t of e.sources)try{return{source:t,url:v2(r,t)}}catch{continue}}async function Fie(r,e,t,i,n,s=!1){let o=bN(e,i),a=o.split("/").filter(Boolean),c=a.pop();if(!c)throw new Error("Target file name is required");let l="/"+a.join("/"),d=await tt(o),u=await tt(l);if(d.isVirtual||u.isVirtual||!d.storage)throw new Error("Target storage was not found");let f=await lt(d.storage.driver,d.storage),h=f,g={size:t.size,md5:t.hashes.md5,sha1:t.hashes.sha1,sha256:t.hashes.sha256,hashes:t.hashes};try{if(typeof h.rapidUpload=="function"){let w=await h.rapidUpload(o,d.physical,g);if(w===!0||w?.reuse||w?.success)return{status:"reused",method:"rapidUpload"}}if(typeof h.putRapid=="function"){let w=await h.putRapid(o,d.physical,g);if(w===!0||w?.reuse||w?.success)return{status:"reused",method:"putRapid"}}let p;if(typeof h.createUploadSession=="function"&&(p=await h.createUploadSession(l,u.physical,c,t.size,t.hashes.md5),p?.reuse))return{status:"reused",method:"multipart-rapid"};if(s)throw new Error("capability unavailable: target driver did not reuse the available hashes");if(!n)throw new Error("capability unavailable: no rapid-upload match and no approved source URL");let I=await nw(r,n.url,{},!0);if(!I.ok||!I.body)throw new Error(`Source download failed with HTTP ${I.status}`);if(p?.session&&typeof h.uploadPart=="function"&&typeof h.completeUploadSession=="function"){let w=Math.min(An(r,"SEED_TRANSFER_CHUNK_SIZE",Cie),16777216),C=I.body.getReader(),b=new Uint8Array(0),x=1,_=0,R=[];for(;;){let{done:U,value:T}=await C.read();if(T?.length){if(_+=T.length,_>t.size)throw new Error("Source exceeds the declared file size");let D=new Uint8Array(b.length+T.length);for(D.set(b),D.set(T,b.length),b=D;b.length>=w;){let B=b.slice(0,w);b=b.slice(w);let Q=await h.uploadPart(p.session,x++,Buffer.from(B));Q?.partMd5&&R.push(Q.partMd5)}}if(U)break}if(_!==t.size)throw new Error("Source size does not match seed metadata");if(b.length||t.size===0){let U=await h.uploadPart(p.session,x,Buffer.from(b));U?.partMd5&&R.push(U.partMd5)}return await h.completeUploadSession(p.session,R),{status:"saved",method:"multipart-stream"}}if(typeof h.putStream=="function")return await h.putStream(o,d.physical,I.body,t.size,g),{status:"saved",method:"putStream"};let y=An(r,"SEED_BUFFERED_TRANSFER_MAX",BN);if(t.size<=y){let w=new Uint8Array(await I.arrayBuffer());if(w.byteLength!==t.size)throw new Error("Source size does not match seed metadata");return await f.put(o,d.physical,Buffer.from(w)),{status:"saved",method:"bounded-buffer"}}throw new Error("capability unavailable: target driver has no streaming or multipart upload API")}finally{await Jt(d.storage.driver,d.storage,f,UA(r))}}ys.get("/capabilities",async r=>{let e=await Me(r);if(!e||e.disabled)return qr(r,401,"Unauthorized");let t,i=r.req.query("path");if(i)try{let n=We(e,po(i)),s=await tt(n);if(!s.isVirtual&&s.storage){let a=await lt(s.storage.driver,s.storage);t={driver:s.storage.driver,rapid_upload:typeof a.rapidUpload=="function"||typeof a.putRapid=="function"||typeof a.createUploadSession=="function",stream_upload:typeof a.putStream=="function"||typeof a.createUploadSession=="function"&&typeof a.uploadPart=="function"&&typeof a.completeUploadSession=="function"}}}catch(n){t={error:Ne(n)}}return r.json({code:200,message:"success",data:{formats:["oss","torrent","cas"],version:1,hash_algorithms:["md5","sha1","sha256"],incremental_hashing:!0,torrent_v1:!0,extensions:["x-openlist","x-cas"],offline_download:"conditional",queue_adapter:!1,limits:{metadata_bytes:An(r,"SEED_MAX_METADATA_SIZE",rw),hash_bytes:An(r,"SEED_MAX_HASH_BYTES",k2),files:An(r,"SEED_MAX_FILES",EN)},target:t}})});ys.post("/capabilities",async r=>{let e=await Me(r);if(!e||e.disabled)return qr(r,401,"Unauthorized");try{let t=await Yd(r);if(Array.isArray(t.paths)&&t.paths.length>0){let g=await Q2(r,e,t.paths),p=await jn(),I=String(p.seed_default_trackers||"").split(` +`).map(x=>x.trim()).filter(Boolean),y=["md5","sha1","sha256"],w=g.map(x=>{let _=y.filter(U=>!!x.hashes[U]),R=_.length<y.length;return{path:x.virtualPath,name:x.relativePath,size:x.size,available_hashes:_,requires_download:R,requires_fetch:R,estimated_traffic:R?x.size:0,streamable:!0,share_available:!0,direct_source_available:!0}}),C=new Set;for(let x of g)for(let _ of y)x.hashes[_]&&C.add(_);let b=y.filter(x=>C.has(x));return r.json({code:200,message:"success",data:{formats:{oss:!0,torrent:!0,cas:!0},files:w,existing_hashes:b,estimated_traffic:w.reduce((x,_)=>x+_.estimated_traffic,0),default_matrix:await Sie(),trackers:I}})}let i=await RA(r,e,t),n=We(e,po(t.path)),s=await tt(n);if(s.isVirtual||!s.storage)throw new Error("Target storage was not found");let a=await lt(s.storage.driver,s.storage),c=typeof a.rapidUpload=="function"||typeof a.putRapid=="function"||typeof a.createUploadSession=="function",l=Array.isArray(a.rapidHashAlgos)?a.rapidHashAlgos.map(g=>String(g).toLowerCase()).filter(g=>["md5","sha1","sha256"].includes(g)):["md5","sha1"],d=typeof a.rapidHashNeedsPieces=="boolean"?a.rapidHashNeedsPieces:!1,u=typeof a.putStream=="function"||typeof a.createUploadSession=="function"&&typeof a.uploadPart=="function"&&typeof a.completeUploadSession=="function",f=An(r,"SEED_BUFFERED_TRANSFER_MAX",BN),h=i.seed.files.map(g=>{let p=l.some(C=>!!g.hashes[C])||!1,I=d?p&&(g.hashes.pieces.md5.length>0||g.hashes.pieces.sha1.length>0):p,y=!!F2(r,g),w="download_required";return c&&I?w="rapid_upload":y&&u?w="stream_upload":y&&g.size<=f&&(w="bounded_upload"),{path:g.path,method:w,requires_download:w==="download_required"}});return r.json({code:200,message:"success",data:{driver:s.storage.driver,policy:String(t.policy||"inherit"),driver_supports:{cas_rapid:c,rapid_hash_algos:l,rapid_uses_pieces:d},files:h}})}catch(t){return qr(r,400,Ne(t))}});ys.post("/generate",async r=>{let e=await Me(r);if(!e||e.disabled)return qr(r,401,"Unauthorized");try{let t=await Yd(r);if((t.save_path||t.output_path)&&!pt(e))return qr(r,403,"Permission denied");let n=(Array.isArray(t.formats)?t.formats:[t.format||"oss"]).map(iw);if(n.some(d=>!d))throw new Error("A valid output format is required");let s=n,{seed:o,torrentPieces:a}=await _ie(r,e,t,s),c=t.output_path||(Array.isArray(t.formats)?t.save_path:void 0),l=[];for(let d of s){let u=Vd(o,d);if(u.length){l.push({format:d,convertible:!1,diagnostics:u});continue}let f=d==="torrent"?await C2(o,a):await PA(o,d),h=c?S2(po(c),vN(o,d)):t.save_path;await _2(r,e,h,f),l.push(D2(o,d,f,{convertible:!0,...h?{path:h}:{}}))}return r.json({code:200,message:"success",data:Array.isArray(t.formats)?{seed:o,outputs:l,artifacts:l}:l[0]})}catch(t){let i=Ne(t);return qr(r,i.includes("limit")||i.includes("exceeds")?413:400,i)}});ys.post("/parse",async r=>{let e=await Me(r);if(!e||e.disabled)return qr(r,401,"Unauthorized");try{let t=await Yd(r),i=await RA(r,e,t),n=i.seed.files.reduce((a,c)=>a+c.size,0),s=i.seed.files.some(a=>!!F2(r,a)),o=i.seed.files.some(a=>!!a.hashes.md5||!!a.hashes.sha1||!!a.hashes.sha256);return r.json({code:200,message:"success",data:{format:i.format,seed:i.seed,files:i.seed.files,total_size:n,diagnostics:vie(i.seed),conversions:kie(i.seed),capabilities:{rapid_upload:o,offline_download:s,transfer:s,convert:!0,edit:!0,recalculate:!0},direct_preview:!1,...i.info_hash?{info_hash:i.info_hash}:{}}})}catch(t){return qr(r,400,Ne(t))}});ys.post("/convert",async r=>{let e=await Me(r);if(!e||e.disabled)return qr(r,401,"Unauthorized");try{let t=await Yd(r);if(t.save_path&&!pt(e))return qr(r,403,"Permission denied");let i=iw(t.to_format||t.target_format||t.output_format);if(!i)throw new Error("A valid target format is required");let n=await RA(r,e,t),s=Vd(n.seed,i);if(s.length)return r.json({code:200,message:"success",data:{convertible:!1,diagnostics:s}});let o=await PA(n.seed,i);return await _2(r,e,t.save_path,o),r.json({code:200,message:"success",data:D2(n.seed,i,o,{convertible:!0})})}catch(t){return qr(r,400,Ne(t))}});function Pie(r,e,t,i){if(!e)return;let n=!1;for(let s of i.values())if(s){n=!0;break}n&&!r.channels.some(s=>s.driver===e)&&r.channels.push({driver:e,mount_path:t});for(let s of r.files){if(!i.has(s.path))continue;i.get(s.path)?s.missing_channels=s.missing_channels.filter(a=>a!==e):s.missing_channels.includes(e)||s.missing_channels.push(e)}}async function DN(r,e){let t=await Me(r);if(!pt(t))return qr(r,403,"Permission denied");if(!e&&!_a(t,Qa.OFFLINE_DOWNLOAD))return qr(r,403,"Offline download permission is required");try{let i=await Yd(r),n=await RA(r,t,i),s=po(i.target_path||i.destination||i.path||"/"),o=new Set(Array.isArray(i.files)?i.files.map(p=>String(p)):[]),a=new Set(Array.isArray(i.selected_files)?i.selected_files.map(p=>Number(p)):[]);if([...a].some(p=>!Number.isSafeInteger(p)||p<0||p>=n.seed.files.length))throw new Error("selected_files contains an invalid index");let c="",l="";try{let p=await tt(We(t,s));!p.isVirtual&&p.storage&&(c=p.storage.driver||"",l=p.storage.mount_path||"")}catch{}let d=n.seed.files.filter((p,I)=>o.size?o.has(p.path):a.size?a.has(I):!0),u=[],f=new Map,h=0;for(let p of d){let I=S2(s,p.path),y=F2(r,p);try{if(!e&&!y)throw new Error("capability unavailable: offline download requires an approved source URL");let w=await Fie(r,t,p,I,y,e);h++,f.set(p.path,!0),u.push({path:p.path,target:I,...w})}catch(w){f.set(p.path,!1),u.push({path:p.path,target:I,status:"unavailable",error:Ne(w)})}}if(h===0)return r.json({code:501,message:e?"capability unavailable: target driver cannot reuse hashes and no transferable source is available":"capability unavailable: no approved source and streaming upload combination is available",data:{results:u}},501);let g={total:u.length,saved:h,results:u};if(i.update_channel===!0&&c){Pie(n.seed,c,l,f);let p=await PA(n.seed,n.format);g.seed_data=Buffer.from(p).toString("base64"),g.seed=n.seed}return r.json({code:200,message:"success",data:g})}catch(i){return qr(r,400,Ne(i))}}ys.post("/rapid_upload",r=>DN(r,!0));ys.post("/offline_download",r=>DN(r,!1));ys.post("/update",async r=>{let e=await Me(r);if(!e||e.disabled)return qr(r,401,"Unauthorized");try{let t=await Yd(r);if(t.save_path&&!pt(e))return qr(r,403,"Permission denied");let i=await RA(r,e,t),n=t.patch&&typeof t.patch=="object"?t.patch:t,s=t.options&&typeof t.options=="object"?t.options:{},o=n.comment??s.comment,a=!!(n.recalculate??s.recalculate),c=Ki({...i.seed,name:n.name??i.seed.name,comment:o??i.seed.comment,trackers:n.trackers??i.seed.trackers,channels:n.channels??i.seed.channels,files:n.files??i.seed.files}),l=t.file_comments&&typeof t.file_comments=="object"?t.file_comments:{},d=t.file_sources&&typeof t.file_sources=="object"?t.file_sources:{};for(let h of c.files)if(l[h.path]!==void 0&&(h.comment=String(l[h.path])),Array.isArray(d[h.path])){for(let g of d[h.path])v2(r,g);h.sources=d[h.path]}if(a){let h=Number(t.piece_size||i.seed.piece_size||10485760);if(!Number.isSafeInteger(h)||h<16*1024||h>64*1024*1024)throw new Error("Invalid piece_size");c.piece_size=h;let g=ew(t.hash_matrix,[i.format]),p=Array.isArray(t.recalc_files)?t.recalc_files:[];if(!p.length)throw new Error("recalculate requires at least one recalc_files entry");let I=new Map;for(let C of p)typeof C?.source_path=="string"&&C.source_path.trim()&&I.set(String(C.path),C.source_path);let y=await TA.create(h),w=An(r,"SEED_MAX_HASH_BYTES",k2);for(let C of c.files){let b=I.get(C.path);if(!b)continue;let x=await Q2(r,e,[b]);if(x.length!==1)throw new Error(`Recalculate path must resolve to exactly one file: ${b}`);let _=x[0],R=await nw(r,new URL(_.rawUrl,r.req.url),{headers:_.headers});if(!R.ok||!R.body)throw new Error(`Recalculate download failed with HTTP ${R.status}`);let U=await B2(R.body,h,_.size,w,y);C.hashes=y2({...C,hashes:U.hashes},g).hashes,C.size=U.size,C.cas_slice_md5="",C.cas_create_time=""}}for(let h of c.files)for(let g of h.sources)v2(r,g);let u=iw(t.output_format||t.to_format)||i.format,f=await PA(c,u);return await _2(r,e,t.save_path,f),r.json({code:200,message:"success",data:D2(c,u,f)})}catch(t){return qr(r,400,Ne(t))}});var sw=new Map,Tie=1*1024*1024,Uie=64*1024*1024,Rie=10*1024*1024;function QN(r){return!Number.isFinite(r)||r<=0?Rie:Math.min(Uie,Math.max(Tie,Math.floor(r)))}function Nie(r){let e=Array.from(r).sort((s,o)=>s-o);if(e.length===0)return[];let t=[],i=e[0],n=e[0];for(let s=1;s<e.length;s++)e[s]===n+1?n=e[s]:(t.push([i,n]),i=n=e[s]);return t.push([i,n]),t}function Xc(r){let e=Nie(r.received),t=r.received.size*r.chunk_size,i=0;for(let s=0;s<r.total_chunks&&r.received.has(s);s++)i=s+1;let n=r.total_chunks>0?Math.floor(r.received.size/r.total_chunks*100):0;return{upload_id:r.upload_id,state:r.state,attempt:r.attempt,path:r.path,size:r.size,chunk_size:r.chunk_size,total_chunks:r.total_chunks,received:e,received_bytes:t,frontier:i,storage_progress:n,error:r.error}}function ow(r){return sw.get(r)}function _N(r,e){for(let t of sw.values())if(t.path===r&&t.size===e&&(t.state==="receiving"||t.state==="failed_retriable"))return t}function NA(r){sw.set(r.upload_id,r)}function FN(r){sw.delete(r)}function PN(){return`mp_${typeof crypto<"u"&&crypto.randomUUID?crypto.randomUUID():Math.random().toString(36).slice(2)+Date.now().toString(36)}`}async function qie(r){try{let e=await tt(r);return e?.storage?cN(e.storage):!1}catch{return!1}}var dt=new Xe;dt.route("/seed",ys);var _t=r=>{try{let e=r.executionCtx;return!e||typeof e.waitUntil!="function"?void 0:{waitUntil:t=>e.waitUntil(t),env:r.env}}catch{return}},cr=r=>r.json({code:403,message:"Permission denied",data:null},403),Oie=25*1024*1024,Mie=16*1024*1024;function Lie(r,e){let t=r.env||{},i=e?"MAX_UPPART":"MAX_UPLOAD",n=t[i]||(typeof process<"u"?process.env?.[i]:"");if(n){let s=parseInt(String(n),10);if(Number.isFinite(s)&&s>0)return s}return e?Mie:Oie}function aw(r,e=!1){let t=parseInt(r.req.header("Content-Length")||"0",10);if(!t)return null;let i=Lie(r,e);return t>i?i:null}var P2=(r,e)=>{let t=e==="wrong password",i=e||"share error";return r.json({code:t?403:400,message:i,data:null},t?403:400)};dt.post("/dirs",async r=>{let e=await r.req.json().catch(()=>({})),t=await Me(r),i=e.path||"/";if(!i.startsWith("/@s")&&(!t||t.disabled))return r.json({code:401,message:"Unauthorized",data:null},401);let s=_t(r),o=i;(!e.force_root||!ms(t))&&(o=We(t,o));try{if(o.startsWith("/@s")){let l=await Md(o,e.password||"",r.env);if(!l.ok)return P2(r,l.error);if(l.virtualList){let f=[];for(let h of l.share.files||[])try{let{item:g}=await Di(h,s);if(g.is_dir){let p=String(h).split("/").filter(Boolean);f.push({name:p[p.length-1]||h,modified:g.modified||new Date().toISOString()})}}catch{}return r.json({code:200,message:"success",data:f})}let{content:d}=await Zt(l.realPath,s),u=d.filter(f=>f.is_dir).map(f=>({name:f.name,modified:f.modified||new Date().toISOString()}));return r.json({code:200,message:"success",data:u})}let{content:a}=await Zt(o,s),c=a.filter(l=>l.is_dir).map(l=>({name:l.name,modified:l.modified||new Date().toISOString()}));return r.json({code:200,message:"success",data:c})}catch(a){return r.json({code:500,message:Ne(a),data:null})}});dt.post("/list",async r=>{let e=await r.req.json().catch(()=>({})),t=await Me(r);if(!(e.path||"/").startsWith("/@s")&&(!t||t.disabled))return r.json({code:401,message:"Unauthorized",data:null},401);let n=_t(r),s=We(t,e.path||"/"),o=parseInt(e.page,10)||1,a=parseInt(e.per_page,10)||0,c=l=>{let d=l.length;if(a<=0)return{content:l,total:d};let f=(Math.max(1,o)-1)*a,h=f+a;return{content:l.slice(f,h),total:d}};try{if(s.startsWith("/@s")){let B=await Md(s,e.password||"",r.env);if(!B.ok)return P2(r,B.error);if(B.virtualList){let J=[];for(let G of B.share.files||[]){let K=String(G).split("/").filter(Boolean),$=K[K.length-1]||G;try{let{item:te}=await Di(G,n);J.push({name:$,size:te.size||0,is_dir:!!te.is_dir,modified:te.modified||new Date().toISOString(),sign:"",thumb:te.thumb||"",type:te.type??0})}catch{try{await Zt(G,n),J.push({name:$,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",thumb:"",type:1})}catch{J.push({name:$,size:0,is_dir:!1,modified:new Date().toISOString(),sign:"",thumb:"",type:0})}}}let{content:z,total:L}=c(J);return r.json({code:200,message:"success",data:{content:z,total:L,readme:B.share.readme||"",header:B.share.header||"",write:!1,write_content_bypass:!1,provider:"Share"}})}let{content:Q,provider:v}=await Zt(B.realPath,n),E=Q.map(J=>({name:J.name,size:J.size,is_dir:J.is_dir,created:J.created||J.modified||new Date().toISOString(),modified:J.modified||new Date().toISOString(),sign:J.sign||"",thumb:J.thumb||"",type:J.type??0})),{content:P,total:N}=c(E);return r.json({code:200,message:"success",data:{content:P,total:N,readme:B.share.readme||"",header:B.share.header||"",write:!1,write_content_bypass:!1,provider:v}})}let l=await d2(s,r.env);if(!u2(t,l,s,e.password||""))return r.json({code:403,message:"Access denied (wrong password or not in read_users)",data:null},403);if(await qie(s))return r.json({code:403,message:"Index is disabled for this storage",data:null},403);let{content:d,provider:u,storage:f}=await Zt(s,n),h=pt(t)&&f2(t,l,s),g=A2(l,s),p=await zd(r),I=await WI(r,s),y=p.enabled||I,w=y?p.expiresIn||await DA(r):0,C=await Promise.all(d.filter(B=>!iN(l,s,B.name)).map(async B=>{let Q=`${s}/${B.name}`.replace(/\/{2,}/g,"/"),v=!B.is_dir&&y?await QA(r,Q,w):"",E=B.hashinfo||B.hash_info_str||"",P=B.hash_info||{};return{name:B.name,size:B.size,is_dir:B.is_dir,created:B.created||B.modified||new Date().toISOString(),modified:B.modified||new Date().toISOString(),sign:v,thumb:B.thumb||"",type:B.type??0,hashinfo:E,hash_info:P}})),b=0;if(f&&(b=parseInt(f.page_size,10)||0,!b&&f.addition))try{let B=typeof f.addition=="string"?JSON.parse(f.addition):f.addition;b=parseInt(B?.page_size,10)||0}catch{}let x=a>0?a:b>0?b:0,_=B=>{let Q=B.length;if(x<=0)return{content:B,total:Q};let E=(Math.max(1,o)-1)*x,P=E+x;return{content:B.slice(E,P),total:Q}},R=(()=>{if(!f)return[];let B=[],Q=f;if(/^(s3|minio|cos|oss|r2|b2|cloudflare_r2)/i.test(Q.driver||"")&&B.push("s3_presigned"),Array.isArray(Q.direct_upload_tools))for(let v of Q.direct_upload_tools)B.includes(v)||B.push(v);return B})(),{content:U,total:T}=_(C),D=f?lN(f,s):void 0;return r.json({code:200,message:"success",data:{content:U,total:T,readme:h2(l,s),header:g2(l,s),write:h,write_content_bypass:g,provider:u,direct_upload_tools:R,page_size:x>0?x:void 0,cache_expiration:D}})}catch(l){return r.json({code:500,message:Ne(l),data:null})}});dt.post("/get",async r=>{let e=await r.req.json().catch(()=>({})),t=await Me(r);if(!(e.path||"/").startsWith("/@s")&&(!t||t.disabled))return r.json({code:401,message:"Unauthorized",data:null},401);let n=_t(r),s=We(t,e.path||"/");try{if(s.startsWith("/@s")){let I=await Md(s,e.password||"",r.env);if(!I.ok)return P2(r,I.error);if(I.virtualList){let x=s.split("/").filter(Boolean)[1]||"share";return r.json({code:200,message:"success",data:{name:x,size:0,is_dir:!0,modified:new Date().toISOString(),sign:"",thumb:"",type:1,raw_url:"",readme:I.share.readme||"",header:I.share.header||"",provider:"Share",related:[],write:!1,write_content_bypass:!1}})}let y=s.split("/").filter(Boolean)[1]||"",{item:w,provider:C}=await Di(I.realPath,n),b=s.replace(/^\/@s\/[^/]+/,"");return r.json({code:200,message:"success",data:{name:w.name,size:w.size,is_dir:w.is_dir,created:w.created||w.modified||new Date().toISOString(),modified:w.modified,sign:w.sign||"",thumb:w.thumb||"",type:w.type??0,raw_url:`/api/sd/${y}${b}`,readme:I.share.readme||"",header:I.share.header||"",provider:C,related:[],write:!1,write_content_bypass:!1}})}let o=await d2(s,r.env);if(!u2(t,o,s,e.password||""))return r.json({code:403,message:"Access denied (wrong password or not in read_users)",data:null},403);let{item:a,provider:c,rawUrl:l}=await Di(s,n),d=await zd(r),u=d.enabled||await WI(r,s),f=!a.is_dir&&u?await QA(r,s,d.expiresIn||await DA(r)):"",h=pt(t)&&f2(t,o,s),g=A2(o,s),p=[];if(!a.is_dir)try{let I=s.includes("/")&&s.slice(0,s.lastIndexOf("/"))||"/",y=a.name.includes(".")?a.name.slice(0,a.name.lastIndexOf(".")):a.name,{content:w}=await Zt(I,n);p=w.filter(C=>C.name===a.name||C.is_dir?!1:(C.name.includes(".")?C.name.slice(0,C.name.lastIndexOf(".")):C.name)===y).map(C=>({name:C.name,size:C.size,is_dir:!1,modified:C.modified||new Date().toISOString(),sign:"",thumb:C.thumb||"",type:C.type??0}))}catch{p=[]}return r.json({code:200,message:"success",data:{name:a.name,size:a.size,is_dir:a.is_dir,created:a.created||a.modified||new Date().toISOString(),modified:a.modified,sign:f,thumb:a.thumb||"",type:a.type??0,raw_url:l,readme:h2(o,s),header:g2(o,s),provider:c,related:p,write:h,write_content_bypass:g}})}catch(o){return r.json({code:500,message:Ne(o),data:null})}});function Wd(r){if(typeof r!="string"||!r.trim())throw new Error("Invalid or empty file name");let e=r.trim();if(e==="."||e===".."||e.includes("/")||e.includes("\\")||e.includes("\0"))throw new Error(`Illegal file name '${e}'`);return e}function mo(r){if(typeof r!="string")throw new Error("Path must be a string");if(r.includes("\0"))throw new Error("Path contains illegal null byte");return r}dt.post("/mkdir",async r=>{let e=await Me(r);if(!pt(e))return cr(r);let i=(await r.req.json().catch(()=>({}))).path||"/";try{mo(i)}catch(o){return r.json({code:400,message:o.message,data:null},400)}let n=We(e,i),s=_t(r);try{return await xA(n,s),r.json({code:200,message:"success",data:null})}catch(o){return r.json({code:500,message:Ne(o),data:null})}});dt.post("/rename",async r=>{let e=await Me(r);if(!pt(e))return cr(r);let{path:t,name:i}=await r.req.json().catch(()=>({})),n="";try{mo(t||"/"),n=Wd(i)}catch(o){return r.json({code:400,message:o.message,data:null},400)}let s=_t(r);try{let o=We(e,t||"/");return await CA(o,n,s),r.json({code:200,message:"success",data:null})}catch(o){return r.json({code:500,message:Ne(o),data:null})}});dt.post("/remove",async r=>{let e=await Me(r);if(!pt(e))return cr(r);let{dir:t,names:i}=await r.req.json().catch(()=>({}));if(!Array.isArray(i)||i.length===0)return r.json({code:400,message:"Parameter 'names' must be a non-empty array",data:null},400);let n=[];try{mo(t||"/"),n=i.map(o=>Wd(o))}catch(o){return r.json({code:400,message:o.message,data:null},400)}let s=_t(r);try{let o=We(e,t||"/");return await ka(o,n,s),r.json({code:200,message:"success",data:null})}catch(o){return r.json({code:500,message:Ne(o),data:null})}});dt.post("/move",async r=>{let e=await Me(r);if(!pt(e))return cr(r);let{src_dir:t,dst_dir:i,names:n}=await r.req.json().catch(()=>({}));if(!Array.isArray(n)||n.length===0)return r.json({code:400,message:"Parameter 'names' must be a non-empty array",data:null},400);let s=[];try{mo(t||"/"),mo(i||"/"),s=n.map(a=>Wd(a))}catch(a){return r.json({code:400,message:a.message,data:null},400)}let o=_t(r);try{let a=We(e,t||"/"),c=We(e,i||"/");return await Od(a,c,s,o),r.json({code:200,message:"success",data:null})}catch(a){return r.json({code:500,message:Ne(a),data:null})}});dt.post("/copy",async r=>{let e=await Me(r);if(!pt(e))return cr(r);let{src_dir:t,dst_dir:i,names:n}=await r.req.json().catch(()=>({}));if(!Array.isArray(n)||n.length===0)return r.json({code:400,message:"Parameter 'names' must be a non-empty array",data:null},400);let s=[];try{mo(t||"/"),mo(i||"/"),s=n.map(a=>Wd(a))}catch(a){return r.json({code:400,message:a.message,data:null},400)}let o=_t(r);try{let a=We(e,t||"/"),c=We(e,i||"/");return await EA(a,c,s,o),r.json({code:200,message:"success",data:null})}catch(a){return r.json({code:500,message:Ne(a),data:null})}});dt.put("/put",async r=>{let e=await Me(r);if(!pt(e))return cr(r);let t=decodeURIComponent(r.req.header("File-Path")||"");if(!t.trim())return r.json({code:400,message:"Missing File-Path header",data:null},400);try{mo(t)}catch(o){return r.json({code:400,message:o.message,data:null},400)}let i=We(e,t),n=_t(r),s=aw(r);if(s!==null)return r.json({code:413,message:`File too large (max ${s} bytes)`,data:null},413);try{let o=await r.req.arrayBuffer();return await Tn(i,Buffer.from(o),n),r.json({code:200,message:"success",data:null})}catch(o){return r.json({code:500,message:Ne(o),data:null})}});dt.put("/form",async r=>{let e=await Me(r);if(!pt(e))return cr(r);let t=decodeURIComponent(r.req.header("File-Path")||"");if(!t.trim())return r.json({code:400,message:"Missing File-Path header",data:null},400);try{mo(t)}catch(o){return r.json({code:400,message:o.message,data:null},400)}let i=We(e,t),n=_t(r),s=aw(r);if(s!==null)return r.json({code:413,message:`File too large (max ${s} bytes)`,data:null},413);try{let a=(await r.req.formData()).get("file");if(!a||typeof a=="string")return r.json({code:400,message:"missing file in form data",data:null});let c=Buffer.from(await a.arrayBuffer());return await Tn(i,c,n),r.json({code:200,message:"success",data:null})}catch(o){return r.json({code:500,message:Ne(o),data:null})}});dt.post("/upload/create",async r=>{let e=await Me(r);if(!pt(e))return cr(r);let{path:t,file_name:i,size:n,md5:s}=await r.req.json().catch(()=>({})),o=We(e,t||"/"),a=_t(r);if(!i)return r.json({code:400,message:"path and file_name are required",data:null});try{let c=await tt(o);if(c.isVirtual)throw new Error("failed get storage: storage not found");let l=await lt(c.storage.driver,c.storage);if(typeof l.createUploadSession!="function")return r.json({code:200,message:"success",data:null});let d;try{d=await l.createUploadSession(o,c.physical,i,Number(n)||0,s||"")}finally{await Jt(c.storage.driver,c.storage,l,a)}return r.json({code:200,message:"success",data:d})}catch(c){return r.json({code:500,message:Ne(c),data:null})}});dt.put("/upload/part",async r=>{let e=await Me(r);if(!pt(e))return cr(r);let t=r.req.header("X-Upload-Session")||"",i=parseInt(r.req.header("X-Part-Number")||"0",10),n=decodeURIComponent(r.req.header("Upload-Path")||""),s=We(e,n),o=_t(r);if(!t||!(i>=1)||!s)return r.json({code:400,message:"missing X-Upload-Session / X-Part-Number / Upload-Path",data:null});let a=aw(r,!0);if(a!==null)return r.json({code:413,message:`Part too large (max ${a} bytes)`,data:null},413);try{let c=await tt(s);if(c.isVirtual)throw new Error("failed get storage: storage not found");let l=await lt(c.storage.driver,c.storage);if(typeof l.uploadPart!="function")throw new Error("storage does not support chunked upload");let d=Buffer.from(await r.req.arrayBuffer()),u;try{u=await l.uploadPart(t,i,d)}finally{await Jt(c.storage.driver,c.storage,l,o)}return r.json({code:200,message:"success",data:u??null})}catch(c){return r.json({code:500,message:Ne(c),data:null})}});dt.post("/upload/complete",async r=>{let e=await Me(r);if(!pt(e))return cr(r);let{path:t,session:i,partMd5s:n}=await r.req.json().catch(()=>({})),s=We(e,t||"/"),o=_t(r);if(!i)return r.json({code:400,message:"path and session are required",data:null});try{let a=await tt(s);if(a.isVirtual)throw new Error("failed get storage: storage not found");let c=await lt(a.storage.driver,a.storage);if(typeof c.completeUploadSession!="function")throw new Error("storage does not support chunked upload");try{await c.completeUploadSession(i,n)}finally{await Jt(a.storage.driver,a.storage,c,o)}return r.json({code:200,message:"success",data:null})}catch(a){return r.json({code:500,message:Ne(a),data:null})}});dt.post("/add_offline_download",async r=>{let e=await Me(r);if(!e||e.disabled)return r.json({code:401,message:"Unauthorized",data:null},401);let{path:t,urls:i}=await r.req.json().catch(()=>({})),n=We(e,t||"/");return!i||i.length===0?r.json({code:400,message:"No URLs provided"}):r.json({code:501,message:"capability unavailable: this runtime has no durable offline-download adapter; use /fs/seed/offline_download with an approved source and a streaming-capable target driver",data:{path:n,accepted:0}},501)});dt.post("/search",async r=>{let e=await Me(r);if(!e||e.disabled)return r.json({code:401,message:"Unauthorized",data:null},401);let t=await r.req.json().catch(()=>({})),i=We(e,t.parent||"/");try{let n=await Jd({parent:i,keywords:t.keywords||"",scope:t.scope!==void 0?parseInt(t.scope,10):0,page:t.page?parseInt(t.page,10):1,per_page:t.per_page?parseInt(t.per_page,10):30},r.env);return r.json({code:200,message:"success",data:n})}catch(n){return r.json({code:500,message:Ne(n),data:null},500)}});dt.post("/other",async r=>{let e=await Me(r);if(!e||e.disabled)return r.json({code:401,message:"Unauthorized",data:null},401);let t=await r.req.json().catch(()=>({})),i=We(e,t.path||"/"),n=t.method;if(!n)return r.json({code:400,message:"Missing required parameter 'method'",data:null},400);if(!pt(e))return cr(r);try{let s=await tt(i);if(s.isVirtual||!s.storage)throw new Error("failed get storage: storage not found");let o=await lt(s.storage.driver,s.storage);if(typeof o.other=="function"){let a=await o.other(n,s.relative,t);return r.json({code:200,message:"success",data:a})}return r.json({code:500,message:`Driver '${s.storage.driver}' does not support other method '${n}'`,data:null},500)}catch(s){return r.json({code:500,message:Ne(s),data:null},500)}});dt.post("/batch_rename",async r=>{let e=await Me(r);if(!pt(e))return cr(r);let{src_dir:t,rename_objects:i}=await r.req.json().catch(()=>({}));if(!Array.isArray(i)||i.length===0)return r.json({code:400,message:"rename_objects is required",data:null},400);let n=We(e,t||"/"),s=_t(r);try{for(let o of i){let a=o?.src_name,c=o?.new_name;if(!a||!c)continue;Wd(c);let l=`${n}/${a}`.replace(/\/{2,}/g,"/");await CA(l,c,s)}return r.json({code:200,message:"success",data:null})}catch(o){return r.json({code:500,message:Ne(o),data:null},500)}});dt.post("/regex_rename",async r=>{let e=await Me(r);if(!pt(e))return cr(r);let{src_dir:t,src_name_regex:i,new_name_regex:n}=await r.req.json().catch(()=>({}));if(!i)return r.json({code:400,message:"src_name_regex is required",data:null},400);let s=We(e,t||"/"),o=_t(r);try{let a=new RegExp(i),{content:c}=await Zt(s,o);for(let l of c)if(!l.is_dir&&a.test(l.name)){let d=l.name.replace(a,n||"");Wd(d);let u=`${s}/${l.name}`.replace(/\/{2,}/g,"/");await CA(u,d,o)}return r.json({code:200,message:"success",data:null})}catch(a){return r.json({code:500,message:Ne(a),data:null},500)}});dt.post("/recursive_move",async r=>{let e=await Me(r);if(!pt(e))return cr(r);let{src_dir:t,dst_dir:i,conflict_policy:n}=await r.req.json().catch(()=>({})),s=We(e,t||"/"),o=We(e,i||"/"),a=n||"overwrite",c=_t(r);try{let l=new Set;if(a!=="overwrite"){let f=await Zt(o,c);l=new Set(f.content.map(h=>h.name))}let d=[s],u=0;for(;d.length>0;){let f=d.shift(),{content:h}=await Zt(f,c);for(let g of h)if(g.is_dir)d.push(`${f}/${g.name}`.replace(/\/{2,}/g,"/"));else{if(l.has(g.name)){if(a==="cancel")return r.json({code:403,message:`file [${g.name}] exists`,data:null},403);if(a==="skip")continue}a!=="overwrite"&&l.add(g.name),await Od(f,o,[g.name],c),u++}}return r.json({code:200,message:`Successfully moved ${u} files`,data:null})}catch(l){return r.json({code:500,message:Ne(l),data:null},500)}});dt.post("/remove_empty_directory",async r=>{let e=await Me(r);if(!pt(e))return cr(r);let{src_dir:t}=await r.req.json().catch(()=>({})),i=We(e,t||"/"),n=_t(r);try{let s=async o=>{let{content:a}=await Zt(o,n);for(let l of a)l.is_dir&&await s(`${o}/${l.name}`.replace(/\/{2,}/g,"/"));if(o===i)return;if((await Zt(o,n)).content.length===0){let l=o.split("/").slice(0,-1).join("/")||"/",d=o.split("/").pop();await ka(l,[d],n)}};return await s(i),r.json({code:200,message:"success",data:null})}catch(s){return r.json({code:500,message:Ne(s),data:null},500)}});dt.post("/link",async r=>{let e=await Me(r);if(!ms(e))return cr(r);let{path:t}=await r.req.json().catch(()=>({})),i=We(e,t||"/"),n=_t(r);try{let s=await tt(i);if(s.isVirtual||!s.storage)return r.json({code:500,message:"storage not found",data:null},500);let o=await lt(s.storage.driver,s.storage);try{let a=await o.get(i,s.physical??"/");if(a&&a.raw_url)return r.json({code:200,message:"success",data:{url:a.raw_url}})}finally{await Jt(s.storage.driver,s.storage,o,n)}return r.json({code:200,message:"success",data:{url:`/api/p${i.startsWith("/")?"":"/"}${i}`}})}catch(s){return r.json({code:500,message:Ne(s),data:null},500)}});dt.post("/get_direct_upload_info",async r=>{let e=await Me(r);if(!pt(e))return cr(r);let{path:t,file_name:i,file_size:n}=await r.req.json().catch(()=>({})),s=We(e,t||"/");try{let o=await tt(s);if(o.isVirtual||!o.storage)return r.json({code:200,message:"success",data:null});let c=await lt(o.storage.driver,o.storage);if(typeof c.getDirectUploadInfo=="function"){let l=await c.getDirectUploadInfo(o.relative,i,n);return r.json({code:200,message:"success",data:l})}if(typeof c.other=="function")for(let l of["direct_upload","get_direct_upload_info"])try{let d=await c.other(l,o.relative,{file_name:i,file_size:n});if(d)return r.json({code:200,message:"success",data:d})}catch{}return r.json({code:200,message:"success",data:null})}catch(o){return r.json({code:500,message:Ne(o),data:null},500)}});function T2(r){let t=(r.startsWith("/")?r:"/"+r).split("/").filter(Boolean),i=t.pop()||"";return{dir:"/"+t.join("/"),name:i}}dt.post("/multipart/init",async r=>{let e=await Me(r);if(!pt(e))return cr(r);let t=decodeURIComponent(r.req.header("File-Path")||""),i=parseInt(r.req.header("X-File-Size")||"0",10),n=parseInt(r.req.header("X-Chunk-Size")||"0",10),s=r.req.header("X-File-Md5")||"";if(!t.trim()||i<=0)return r.json({code:400,message:"Missing File-Path / X-File-Size header",data:null},400);let{dir:o,name:a}=T2(t),c=We(e,o),l=_t(r);try{let d=await tt(c);if(d.isVirtual)throw new Error("failed get storage: storage not found");let u=await lt(d.storage.driver,d.storage);if(typeof u.createUploadSession!="function")return r.json({code:200,message:"success",data:null});let f=QN(n),h=Math.max(1,Math.ceil(i/f)),g,p=!1,I=_N(t,i);if(I)g=I,p=!0;else{let y=await u.createUploadSession(c,d.physical,a,i,s);g={upload_id:PN(),state:"receiving",attempt:0,path:t,size:i,chunk_size:f,total_chunks:h,received:new Set,driver_session:y?.session||"",partMd5s:new Array(h).fill(void 0),storage_driver:d.storage.driver,created_at:Date.now()},y?.reuse&&(g.state="completed",g.received=new Set(Array.from({length:h},(w,C)=>C))),NA(g)}return await Jt(d.storage.driver,d.storage,u,l),r.json({code:200,message:"success",data:{...Xc(g),resumed:p}})}catch(d){return r.json({code:500,message:Ne(d),data:null},500)}});dt.put("/multipart/chunk",async r=>{let e=await Me(r);if(!pt(e))return cr(r);let t=r.req.header("X-Upload-Id")||"",i=parseInt(r.req.header("X-Chunk-Index")||"-1",10),n=t?ow(t):void 0;if(!n)return r.json({code:404,message:"upload session not found",data:null},404);if(i<0||i>=n.total_chunks)return r.json({code:400,message:"invalid X-Chunk-Index",data:null},400);if(n.received.has(i))return r.json({code:200,message:"success",data:Xc(n)});let s=aw(r,!0);if(s!==null)return r.json({code:413,message:`Part too large (max ${s} bytes)`,data:null},413);let o=_t(r);try{let a=await tt(We(e,T2(n.path).dir));if(a.isVirtual)throw new Error("failed get storage: storage not found");let c=await lt(a.storage.driver,a.storage);if(typeof c.uploadPart!="function")throw new Error("storage does not support chunked upload");let l=Buffer.from(await r.req.arrayBuffer()),d;try{d=await c.uploadPart(n.driver_session,i+1,l)}finally{await Jt(a.storage.driver,a.storage,c,o)}return n.received.add(i),d?.partMd5&&(n.partMd5s[i]=d.partMd5),NA(n),r.json({code:200,message:"success",data:Xc(n)})}catch(a){return r.json({code:500,message:Ne(a),data:null},500)}});dt.post("/multipart/complete",async r=>{let e=await Me(r);if(!pt(e))return cr(r);let t=r.req.header("X-Upload-Id")||"",i=t?ow(t):void 0;if(!i)return r.json({code:404,message:"upload session not found",data:null},404);if(i.state==="completed")return r.json({code:200,message:"success",data:Xc(i)});let n=_t(r);try{let s=await tt(We(e,T2(i.path).dir));if(s.isVirtual)throw new Error("failed get storage: storage not found");let o=await lt(s.storage.driver,s.storage);if(typeof o.completeUploadSession!="function")throw new Error("storage does not support chunked upload");try{await o.completeUploadSession(i.driver_session,i.partMd5s.filter(a=>a!==void 0))}finally{await Jt(s.storage.driver,s.storage,o,n)}return i.state="completed",NA(i),FN(i.upload_id),r.json({code:200,message:"success",data:Xc(i)})}catch(s){return i.state="failed_permanent",i.error=Ne(s),NA(i),r.json({code:500,message:Ne(s),data:null},500)}});dt.get("/multipart/status",async r=>{let e=r.req.query("upload_id")||"",t=e?ow(e):void 0;return t?r.json({code:200,message:"success",data:Xc(t)}):r.json({code:404,message:"upload session not found",data:null},404)});function U2(r){let e=r.toLowerCase();return e.endsWith(".zip")?"zip":e.endsWith(".tar.gz")||e.endsWith(".tgz")?"tar.gz":e.endsWith(".tar.bz2")||e.endsWith(".tbz2")?"tar.bz2":e.endsWith(".tar.xz")||e.endsWith(".txz")?"tar.xz":e.endsWith(".tar")?"tar":e.endsWith(".7z")?"7z":e.endsWith(".rar")?"rar":null}function R2(r){return r==="zip"}async function N2(r,e,t){let i=We(e,t),n=await tt(i);if(n.isVirtual)throw new Error("failed get storage: storage not found");let s=await lt(n.storage.driver,n.storage),o;try{o=await s.get(t,n.physical)}finally{await Jt(n.storage.driver,n.storage,s,_t(r))}if(!o||!o.raw_url)throw new Error("archive driver did not return download link");let a=yh(n.storage?.addition,r.env);zr(o.raw_url,"Archive download",a);let c=await fetch(o.raw_url,{headers:o.raw_url_headers||{}});if(!c.ok)throw new Error(`archive download failed: HTTP ${c.status}`);return await c.arrayBuffer()}function Hie(r){let e=[],t=new Map;for(let i of r.entries){let n=i.name.split("/").filter(Boolean);if(n.length===0)continue;let s=e,o="";for(let a=0;a<n.length;a++){let c=n[a],l=a===n.length-1;if(o=o?`${o}/${c}`:`/${c}`,l)s.push({name:c,size:i.size,is_dir:!1,modified:i.modified||new Date().toISOString(),type:TN(c,!1),children:[]});else{let d=t.get(o);d||(d={name:c,size:0,is_dir:!0,modified:i.modified||new Date().toISOString(),type:1,children:[]},t.set(o,d),s.push(d)),s=d.children}}}return e}function TN(r,e){let t=r.split(".").pop()?.toLowerCase()||"";if(e)return 1;let i=["mp4","mkv","webm","avi","mov","flv","m3u8"],n=["mp3","flac","wav","aac","ogg","m4a"],s=["jpg","jpeg","png","gif","webp","svg","bmp","ico"],o=["txt","md","json","js","ts","css","html","xml","yml","log"];return i.includes(t)?2:n.includes(t)?3:s.includes(t)?4:o.includes(t)?5:6}dt.post("/archive/meta",async r=>{let e=await Me(r);if(!e||e.disabled)return r.json({code:401,message:"Unauthorized",data:null},401);let t=await r.req.json().catch(()=>({})),i=String(t.path||r.req.query("path")||"").trim();if(!i)return r.json({code:400,message:"path is required",data:null},400);let n=U2(i);if(!n)return r.json({code:400,message:"unrecognized archive format",data:null},400);if(!R2(n))return r.json({code:501,message:`archive format '${n}' is recognized but not supported in this runtime (Worker supports ZIP only); use the Go backend for ${n} archives`,data:null},501);try{let s=await N2(r,e,i),o=XI(s),a=Hie(o);return r.json({code:200,message:"success",data:{comment:"",encrypted:!1,content:a,raw_url:"",sign:""}})}catch(s){return r.json({code:500,message:Ne(s),data:null},500)}});dt.post("/archive/list",async r=>{let e=await Me(r);if(!e||e.disabled)return r.json({code:401,message:"Unauthorized",data:null},401);let t=await r.req.json().catch(()=>({})),i=String(t.path||r.req.query("path")||"").trim(),n=String(t.inner_path||"").trim().replace(/\/+/g,"/");if(!i)return r.json({code:400,message:"path is required",data:null},400);let s=U2(i);if(!s)return r.json({code:400,message:"unrecognized archive format",data:null},400);if(!R2(s))return r.json({code:501,message:`archive format '${s}' is recognized but not supported in this runtime; use the Go backend for ${s} archives`,data:null},501);try{let o=await N2(r,e,i),a=XI(o),c=n?n.replace(/^\/+|\/+$/g,"")+"/":"",l=a.entries.filter(f=>c?f.name.startsWith(c)&&f.name!==c.slice(0,-1):!f.name.includes("/")).map(f=>{let h=c?f.name.slice(c.length):f.name;return{name:h.split("/")[0],size:f.size,is_dir:!1,modified:f.modified||new Date().toISOString(),type:TN(h.split("/")[0],!1)}}),d=new Set,u=l.filter(f=>d.has(f.name)?!1:(d.add(f.name),!0));return r.json({code:200,message:"success",data:{content:u,total:u.length}})}catch(o){return r.json({code:500,message:Ne(o),data:null},500)}});dt.post("/archive/decompress",async r=>{let e=await Me(r);if(!pt(e))return r.json({code:403,message:"Permission denied",data:null},403);let t=await r.req.json().catch(()=>({})),i=String(t.src_dir||"").trim(),n=String(t.dst_dir||"").trim(),s=Array.isArray(t.name)?t.name:t.name?[String(t.name)]:[],o=String(t.inner_path||"").trim().replace(/\/+/g,"/");if(!s.length||!n)return r.json({code:400,message:"src_dir/dst_dir/name are required",data:null},400);try{let a=0;for(let c of s){let l=i?`${i}/${c}`:`/${c}`,d=U2(c);if(!d||!R2(d))return r.json({code:400,message:`unsupported archive format: ${c} (only ZIP is supported)`,data:null},400);let u=await N2(r,e,l),f=XI(u),h=o?o.replace(/^\/+|\/+$/g,"")+"/":"";for(let g of f.entries){if(h&&!g.name.startsWith(h))continue;let p=h?g.name.slice(h.length):g.name;if(!p||p.endsWith("/"))continue;let I=`${n.replace(/\/+$/,"")}/${p}`,y=await AN(u,g);await Tn(I,Buffer.from(y),_t(r)),a++}}return r.json({code:200,message:"success",data:{task:null,count:a}})}catch(a){return r.json({code:500,message:Ne(a),data:null},500)}});sl();wr();Ve();Yt();bA();Da();var Vq=new Set(["weiyun","sftp","ftp","smb","crypt","virtual","strm","meganz","protondrive","chunk","googledrive","googlephoto","quarkopen","quarkuc","chaoxing","local"]),Qoe=new Set(["webdav","baidunetdisk","123pan","123open","123panshare"]),Yq=new Set(["139yun","alias","alistv3","openlist"]),_oe=["down_proxy_url","download_proxy_url","proxy_url"];function ol(r){return String(r??"").toLowerCase().replace(/[^a-z0-9]/g,"")}function al(r){let e=Array.isArray(r)?r.join(","):r;return String(e??"").split(",").map(t=>t.trim().toLowerCase().replace(/^\./,"")).filter(Boolean)}function Wq(r){let e=String(r??"").split("/").pop()?.trim();if(!e)return"";let t=e.lastIndexOf(".");return t<0||t===e.length-1?"":e.slice(t+1).toLowerCase()}function Xq(r){return Vq.has(ol(r))}function Foe(r){let e=sN(r?.addition),t=String(e.storage_zone_name??"").trim(),i=String(e.cdn_base_url??"").trim();return t!==""&&i===""}function Lw(r,e){let t=ol(e??r?.driver);return Vq.has(t)?!0:t==="bunnystorage"?Foe(r):!1}function nv(r){return Qoe.has(ol(r))}function Zq(r){if(!r)return"";let e=r.webdav_policy??r.webdavPolicy??r.policy??r.webdavPolicyType;return typeof e=="string"?e.trim():""}function eO(r){if(!r)return"";for(let t of["down_proxy_url","downProxyUrl"]){let i=r[t];if(typeof i=="string"&&i.trim())return i.trim()}let e=r.addition;if(typeof e=="string")try{e=JSON.parse(e||"{}")}catch{return""}if(!e||typeof e!="object")return"";for(let t of _oe){let i=e[t];if(typeof i=="string"&&i.trim())return i.trim()}return""}function tO(r){if(!r)return!1;let e=r.disable_proxy_sign??r.disableProxySign;return typeof e=="string"?e.toLowerCase()==="true":!!e}function rO(r,e){let t=r?.web_proxy??r?.webProxy;return t===!0||t==="true"?!0:t===!1||t==="false"?!1:nv(e)}function iO(r,e,t,i={}){let n=ol(e);if(Lw(r,n))return{mode:"native_proxy",needsProxy:!0,source:"force"};if(rO(r,n))return{mode:"native_proxy",needsProxy:!0,source:"web_proxy"};if(t)return{mode:"native_proxy",needsProxy:!0,source:"proxy_path"};if(iv(Wq(i.filename),i.proxyTypes))return{mode:"native_proxy",needsProxy:!0,source:"proxy_types"};let s=Zq(r);return s?{mode:s,needsProxy:s!=="302_redirect",source:"storage_policy"}:{mode:"302_redirect",needsProxy:!1,source:"driver_default"}}function iv(r,e){return r?al(e).includes(r):!1}function Hw(r){let e=ol(r.driver);if(Lw(r.storage,e)||rO(r.storage,e)||Zq(r.storage)==="use_proxy_url")return!0;let t=Wq(r.filename);return t?iv(t,r.proxyTypes)||iv(t,r.textTypes):!1}wr();Ve();sl();XA();Ao();Qi();$b();var qn=new Xe;qn.get("/list",async r=>{let t=((await ne(r.env)).users||[]).map(i=>({id:i.id,username:i.username,role:i.role,permission:i.permission??0,base_path:i.base_path||"/",disabled:!!i.disabled,sso_id:i.sso_id||"",allow_ldap:!!i.allow_ldap,pwd_update_at:i.pwd_update_at||"",otp:!!i.otp_secret}));return r.json({code:200,message:"success",data:{content:t,total:t.length}})});qn.get("/get",async r=>{let e=r.req.query("id");if(!e)return r.json({code:400,message:"Missing id parameter",data:null},400);let t=parseInt(e,10),n=((await ne(r.env)).users||[]).find(s=>s.id===t);return n?r.json({code:200,message:"success",data:{id:n.id,username:n.username,password:"",role:n.role,permission:n.permission??0,base_path:n.base_path||"/",disabled:!!n.disabled,sso_id:n.sso_id||"",allow_ldap:!!n.allow_ldap,otp:!!n.otp_secret}}):r.json({code:404,message:"User not found",data:null},404)});qn.post("/create",async r=>{let e=await r.req.json().catch(()=>({}));if(!e.username)return r.json({code:400,message:"Username is required",data:null},400);let t=await ne(r.env);if(t.users||(t.users=[]),t.users.some(l=>l.username===e.username))return r.json({code:400,message:"Username already exists",data:null},400);let s=t.users.reduce((l,d)=>Math.max(l,d.id||0),0)+1,o=e.password||"",a=null;o||(a=du(),o=a);let c={id:s,username:e.username,role:e.role!==void 0?parseInt(e.role,10):0,permission:e.permission!==void 0?parseInt(e.permission,10):0,base_path:e.base_path||"/",disabled:!!e.disabled,sso_id:e.sso_id||"",allow_ldap:!!e.allow_ldap,pwd_update_at:new Date().toISOString()};return await Fi(c,o),t.users.push(c),await fe(t,r.env),r.json({code:200,message:a?"success (a random password was generated \u2014 pass one explicitly to choose your own)":"success",data:a?{password:a}:null})});qn.post("/update",async r=>{let e=await r.req.json().catch(()=>({}));if(!e.id)return r.json({code:400,message:"User ID is required",data:null},400);let t=parseInt(e.id,10),i=await ne(r.env);i.users||(i.users=[]);let n=i.users.findIndex(o=>o.id===t);if(n===-1)return r.json({code:404,message:"User not found",data:null},404);let s=i.users[n];if(e.username&&e.username!==s.username){if(i.users.some(a=>a.id!==t&&a.username===e.username))return r.json({code:400,message:"Username already in use",data:null},400);s.username=e.username}return e.password&&e.password.trim()!==""&&await Fi(s,e.password.trim()),e.role!==void 0&&(s.role=parseInt(e.role,10)),e.permission!==void 0&&(s.permission=parseInt(e.permission,10)),e.base_path!==void 0&&(s.base_path=e.base_path),e.disabled!==void 0&&(s.disabled=!!e.disabled),e.sso_id!==void 0&&(s.sso_id=e.sso_id),e.allow_ldap!==void 0&&(s.allow_ldap=!!e.allow_ldap),i.users[n]=s,await fe(i,r.env),r.json({code:200,message:"success",data:null})});var nO=async r=>{let e=r.req.query("id");if(!e)return r.json({code:400,message:"Missing id parameter",data:null},400);let t=parseInt(e,10);if(t===1)return r.json({code:400,message:"Cannot delete primary admin user",data:null},400);let i=await ne(r.env);return i.users||(i.users=[]),i.users=i.users.filter(n=>n.id!==t),await fe(i,r.env),r.json({code:200,message:"success",data:null})};qn.post("/delete",nO);qn.post("/cancel",nO);qn.get("/sshkey/list",async r=>{let e=parseInt(r.req.query("uid")||"0",10),t=await ou(e,r.env);return r.json({code:200,message:"success",data:{content:t,total:t.length}})});qn.post("/sshkey/delete",async r=>{let e=parseInt(r.req.query("uid")||"0",10),t=r.req.query("id");if(!e||!t)return r.json({code:400,message:"Missing uid or id parameter",data:null},400);if(!await Uw(e,t,r.env))return r.json({code:404,message:"SSH key not found",data:null},404);let n=await ou(e,r.env);return r.json({code:200,message:"success",data:n})});qn.post("/cancel_2fa",async r=>{let e=parseInt(r.req.query("id")||"0",10);if(!e)return r.json({code:400,message:"Missing id parameter",data:null},400);let t=await ne(r.env),i=(t.users||[]).find(n=>n.id===e);return i?(delete i.otp_secret,await fe(t,r.env),r.json({code:200,message:"success",data:null})):r.json({code:404,message:"User not found",data:null},404)});var sO=async r=>{let e=r.req.header("Authorization");if(!e)return r.json({code:401,message:"Unauthorized",data:null},401);let t=e.startsWith("Bearer ")?e.substring(7):e;try{let i=await kr(r),n=await uo(t,i,"HS256"),s=await r.req.json().catch(()=>({})),o=s.old_password||"",a=s.new_password||"";if(!a)return r.json({code:400,message:"New password is required",data:null},400);let c=await ne(r.env);c.users||(c.users=[]);let l=c.users.findIndex(u=>u.id===n.id||u.username===n.username);if(l===-1)return r.json({code:404,message:"User not found",data:null},404);let d=c.users[l];return!d.password||!await lu(d,o)?r.json({code:400,message:"Incorrect old password",data:null},400):(await Fi(d,a),c.users[l]=d,await fe(c,r.env),r.json({code:200,message:"success",data:null}))}catch(i){return r.json({code:401,message:`Unauthorized: ${i.message||"Invalid token"}`,data:null},401)}};var Ue=new Xe;Ue.use("*",async(r,e)=>{if(!await Kd(r))return r.json({code:401,message:"Unauthorized",data:null});await e()});function Poe(r=32){let e="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789",t=new Uint8Array(r);if(typeof crypto<"u"&&typeof crypto.getRandomValues=="function")crypto.getRandomValues(t);else for(let n=0;n<r;n++)t[n]=(Math.random()*256|0)^Date.now()&255;let i="";for(let n=0;n<r;n++)i+=e.charAt(t[n]%e.length);return i}Ue.get("/storage/list",async r=>{let t=(await ne(r.env)).storages||[];return r.json({code:200,message:"success",data:{content:t,total:t.length}})});Ue.post("/storage/load_all",async r=>{let e=await ne(r.env),t=[],i=0,n=0;for(let s of e.storages||[])if(!s.disabled)try{await lt(s.driver,s),i++,t.push({id:s.id,mount_path:s.mount_path,driver:s.driver,status:"ok"})}catch(o){n++,t.push({id:s.id,mount_path:s.mount_path,driver:s.driver,status:"failed",error:o?.message||String(o)})}return r.json({code:200,message:"success",data:{loaded:i,failed:n,results:t}})});Ue.get("/storage/get",async r=>{let e=parseInt(r.req.query("id")||"0",10),i=(await ne(r.env)).storages.find(n=>n.id===e);return i?r.json({code:200,message:"success",data:i}):r.json({code:404,message:"storage not found",data:null})});var aO=r=>{let e=(r||"").toLowerCase().replace(/[^a-z0-9]/g,"");if(!e)return"";let i=Object.keys(fu).find(n=>n.toLowerCase()===e||n.toLowerCase().replace(/[^a-z0-9]/g,"")===e);return i||(e.startsWith("115")?"115Open":e.startsWith("123")?"123Pan":e.includes("aliyun")?"AliyundriveOpen":e.startsWith("baidu")?"BaiduNetdisk":e.startsWith("189")||e.includes("cloud189")||e.includes("ctyun")?"Cloud189":e==="onedriveapp"?"OnedriveAPP":e.startsWith("onedrive")?"Onedrive":e.startsWith("google")||e.includes("gdrive")?"GoogleDrive":(e.includes("thunder")||e.includes("xunlei"))&&e.includes("expert")?"ThunderExpert":e.includes("thunder")||e.includes("xunlei")?"Thunder":e==="webdav"||e==="webdavdriver"?"WebDav":e==="wopan"||e.includes("unicom")||e.includes("woyun")?"WoPan":e==="quark"||e==="quarkuc"||e==="uc"?"Quark":["s3","doge","dogecloud","minio","ceph","aws","r2","b2","cos","oss","kodo"].includes(e)?"S3":e.startsWith("github")?"Github":e==="local"?"Local":e.includes("pikpak")?"PikPak":e.includes("seafile")?"Seafile":e.includes("yandex")?"YandexDisk":e.includes("terabox")||e.includes("dubox")?"Terabox":e.includes("mediatrack")||e.includes("fenmiao")?"MediaTrack":e.includes("alias")?"Alias":r||"")},cO=(r,e)=>{let t="";if(typeof e=="object"&&e!==null)try{t=JSON.stringify(e)}catch{t="{}"}else t=String(e||"{}");let i=(r||"").toLowerCase();if(i.includes("thunder")||i.includes("xunlei"))try{let n=JSON.parse(t||"{}");if(!n.device_id||typeof n.device_id!="string"||n.device_id.trim().length!==32){let s=typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID().replace(/-/g,""):Math.random().toString(16).substring(2).padEnd(16,"0")+Math.random().toString(16).substring(2).padEnd(16,"0");return n.device_id=s.slice(0,32),JSON.stringify(n)}}catch{}return t};Ue.post("/storage/create",async r=>{let e=await r.req.json().catch(()=>({})),t=await ne(r.env);if(!e.driver||typeof e.driver!="string"||e.driver.trim()===""||e.driver==="undefined"||e.driver==="null")return r.json({code:400,message:"Storage driver is required",data:null},400);let i=e.mount_path;if(!i||String(i).trim()===""){let c=fu[e.driver]?.default_mount_path;c&&(i=c)}let n="/"+String(i||"").split("/").filter(Boolean).join("/");if(t.storages.some(c=>!c.disabled&&"/"+(c.mount_path||"").split("/").filter(Boolean).join("/")===n))return r.json({code:400,message:`mount path already exists: ${n}`,data:null});let s=aO(e.driver),o=cO(s,e.addition||"{}"),a={...e,driver:s,addition:o,mount_path:n,id:t.storages.length?Math.max(...t.storages.map(c=>c.id))+1:1,status:"work",modified:new Date().toISOString()};t.storages.push(a);try{await fe(t,r.env)}catch(c){return t.storages.pop(),r.json({code:500,message:`Failed to save storage config: ${c.message||String(c)}`,data:null})}if(!a.disabled){try{await lt(a.driver,a),a.status="work"}catch(c){a.status=c.message||String(c),String(c.message||c).includes("unsupported driver")&&(a.disabled=!0);try{await fe(t,r.env)}catch(l){console.error("[admin/storage/create] Failed to update storage status:",l)}return r.json({code:500,message:c.message||String(c),data:a})}try{await fe(t,r.env)}catch(c){console.error("[admin/storage/create] Failed to update storage status after connection:",c)}}return r.json({code:200,message:"success",data:a})});Ue.post("/storage/update",async r=>{let e=await r.req.json().catch(()=>({})),t=await ne(r.env),i=e.mount_path;if(!i||String(i).trim()===""){let o=fu[e.driver]?.default_mount_path;o&&(i=o)}let n=String(i||"").trim()!==""?"/"+String(i||"").split("/").filter(Boolean).join("/"):void 0;if(n&&t.storages.some(o=>o.id!==e.id&&!o.disabled&&"/"+(o.mount_path||"").split("/").filter(Boolean).join("/")===n))return r.json({code:400,message:`mount path already exists: ${n}`,data:null});let s=t.storages.findIndex(o=>o.id===e.id);if(s!==-1){let o=e.driver||t.storages[s].driver,a=aO(o),c=cO(a,e.addition!==void 0?e.addition:t.storages[s].addition||"{}"),l={...t.storages[s],...e,driver:a,addition:c,mount_path:n||t.storages[s].mount_path,modified:new Date().toISOString()};if(!l.disabled)try{await(await lt(l.driver,l)).init?.(),l.status="work"}catch(d){return l.status=d.message||String(d),String(d.message||d).includes("unsupported driver")&&(l.disabled=!0),t.storages[s]=l,await fe(t,r.env),r.json({code:500,message:d.message||String(d),data:{id:l.id}})}t.storages[s]=l,await fe(t,r.env)}return r.json({code:200,message:"success",data:null})});Ue.post("/storage/delete",async r=>{let e=parseInt(r.req.query("id")||"0",10),t=await ne(r.env);return t.storages=t.storages.filter(i=>i.id!==e),await fe(t,r.env),r.json({code:200,message:"success",data:null})});Ue.post("/storage/enable",async r=>{let e=parseInt(r.req.query("id")||"0",10),t=await ne(r.env),i=t.storages.find(n=>n.id===e);return i&&(i.disabled=!1,i.modified=new Date().toISOString(),await fe(t,r.env),(async()=>{try{await(await lt(i.driver,i)).init?.();let s=await ne(r.env),o=s.storages.find(a=>a.id===e);o&&!o.disabled&&(o.status="work",o.modified=new Date().toISOString(),await fe(s,r.env))}catch(n){let s=await ne(r.env),o=s.storages.find(a=>a.id===e);o&&!o.disabled&&(o.status=n.message||String(n),await fe(s,r.env))}})()),r.json({code:200,message:"success",data:null})});Ue.post("/storage/disable",async r=>{let e=parseInt(r.req.query("id")||"0",10),t=await ne(r.env),i=t.storages.find(n=>n.id===e);return i&&(i.disabled=!0,await fe(t,r.env)),r.json({code:200,message:"success",data:null})});Ue.get("/driver/names",r=>r.json({code:200,message:"success",data:["AliyundriveOpen","GoogleDrive","Onedrive","OnedriveAPP","Quark","123Pan","BaiduNetdisk","115Open","GitHub API","Thunder","ThunderExpert","189Cloud","WoPan","Lanzou","WebDav","S3","Doge","PikPak","Seafile","YandexDisk","Terabox","MediaTrack","Alias","Dropbox","WPS","139Yun","Mega_nz","115Share","123PanShare","AliyundriveShare","OnedriveSharelink","PikPakShare","SMB","Crypt","Virtual","AListV3","UrlTree","Strm","AzureBlob","USS","Alidoc","Emby","BunnyStorage","CloudflareImgbed","GuangYaPan","AutoIndex","ProtonDrive"]}));var Ft=[{name:"mount_path",type:"string",default:"",required:!0},{name:"order",type:"number",default:"0",required:!1},{name:"remark",type:"string",default:"",required:!1},{name:"cache_expiration",type:"number",default:"30",required:!1,help:"\u76EE\u5F55\u5185\u5BB9\u7F13\u5B58\u65F6\u957F\uFF08\u5206\u949F\uFF09"}],Pt={name:"custom_cache_policies",type:"text",default:"",required:!1,help:'\u6309\u8DEF\u5F84\u8986\u76D6\u7F13\u5B58\u65F6\u957F\uFF0CJSON \u683C\u5F0F\uFF0C\u5982 [{"path":"/photos/*","cache_expiration":1440}]'},Tt={name:"enable_sign",type:"bool",default:"false",required:!0,help:"Enable signature validation for this storage"},Ut={name:"disable_index",type:"bool",default:"false",required:!1,help:"Disable directory listing for this storage"};function Toe(){return{name:"proxy_range",type:"bool",default:"true",required:!1,help:"Need to enable proxy"}}var oO={name:"web_proxy",type:"bool",default:"false",required:!1},sv={name:"webdav_policy",type:"select",options:"302_redirect,use_proxy_url,native_proxy",default:"302_redirect",required:!1};function Rt(r=""){let e=ol(r),t=Yq.has(e)?[Toe()]:[];if(Xq(e))return[...t,{...sv,options:"use_proxy_url,native_proxy",default:"native_proxy"}];let i=nv(e);return[...t,i?{...oO,default:"true"}:{...oO},i?{...sv,default:"native_proxy"}:{...sv}]}var er={name:"seed_policy",type:"select",options:"inherit,on,off",default:"inherit",required:!0,help:"Override automatic transfer-seed generation for this storage"},cl={name:"down_proxy_url",type:"string",default:"",required:!1,help:"\u81EA\u5B9A\u4E49\u4E0B\u8F7D\u4EE3\u7406\u5730\u5740\uFF08\u652F\u6301 $path \u5360\u4F4D\u7B26\uFF1B\u7559\u7A7A\u5219\u7528\u672C\u670D\u52A1\u4EE3\u7406\uFF09"},Nt={name:"disable_proxy_sign",type:"bool",default:"false",required:!1,help:"Disable sign for Download proxy URL"},mt=[...Ft,Pt,Tt,Ut,...Rt(),cl,Nt,er],fu={AliyundriveOpen:{name:"AliyundriveOpen",default_mount_path:"/aliyundrive",common:mt,additional:[{name:"refresh_token",type:"text",default:"",required:!0,help:"true"},{name:"drive_type",type:"select",options:"resource,backup,default",default:"resource",required:!0},{name:"drive_id",type:"string",default:"",required:!1},{name:"root_folder_id",type:"string",default:"root",required:!0},{name:"order_by",type:"select",options:"updated_at,name,size,created_at",default:"updated_at",required:!1},{name:"order_direction",type:"select",options:"DESC,ASC",default:"DESC",required:!1},{name:"api_url_address",type:"string",default:"https://api.oplist.org/alicloud/renewapi",required:!1,help:"true"},{name:"alipan_type",type:"select",options:"alipanQR,alipanTV",default:"alipanQR",required:!1},{name:"client_id",type:"string",default:"",required:!1},{name:"client_secret",type:"string",default:"",required:!1},{name:"remove_way",type:"select",options:"trash,delete",default:"trash",required:!1}],config:{name:"AliyundriveOpen",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"root"}},Onedrive:{name:"Onedrive",default_mount_path:"/onedrive",common:[...Ft,Pt,Tt,Ut,...Rt("Onedrive"),cl,Nt],additional:[{name:"root_folder_path",type:"string",default:"/",required:!0},{name:"region",type:"select",options:"global,cn,us,de",default:"global",required:!0},{name:"is_sharepoint",type:"bool",default:"false",required:!1},{name:"use_online_api",type:"bool",default:"true",required:!1},{name:"api_url_address",type:"string",default:"https://api.oplist.org/onedrive/renewapi",required:!1},{name:"client_id",type:"string",default:"",required:!1},{name:"client_secret",type:"string",default:"",required:!1},{name:"redirect_uri",type:"string",default:"https://api.oplist.org/onedrive/callback",required:!0},{name:"refresh_token",type:"string",default:"",required:!0},{name:"site_id",type:"string",default:"",required:!1},{name:"chunk_size",type:"number",default:"5",required:!1},{name:"custom_host",type:"string",default:"",required:!1,help:"true"},{name:"disable_disk_usage",type:"bool",default:"false",required:!1,help:"true"},{name:"enable_direct_upload",type:"bool",default:"false",required:!1,help:"true"},{name:"order_by",type:"select",options:"filename,modified_time,size",default:"filename",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1}],config:{name:"Onedrive",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"/"}},OnedriveAPP:{name:"OnedriveAPP",default_mount_path:"/onedrive_app",common:[...Ft,Pt,Tt,Ut,...Rt("OnedriveAPP"),cl,Nt],additional:[{name:"root_folder_path",type:"string",default:"/",required:!0},{name:"region",type:"select",options:"global,cn,us,de",default:"global",required:!0},{name:"client_id",type:"string",default:"",required:!0},{name:"client_secret",type:"string",default:"",required:!0},{name:"tenant_id",type:"string",default:"",required:!0},{name:"email",type:"string",default:"",required:!0},{name:"chunk_size",type:"number",default:"5",required:!1},{name:"custom_host",type:"string",default:"",required:!1,help:"true"},{name:"disable_disk_usage",type:"bool",default:"false",required:!1,help:"true"},{name:"enable_direct_upload",type:"bool",default:"false",required:!1,help:"true"},{name:"order_by",type:"select",options:"filename,modified_time,size",default:"filename",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1}],config:{name:"OnedriveAPP",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"/"}},GoogleDrive:{name:"GoogleDrive",default_mount_path:"/google-drive",common:[...Ft,Pt,Tt,Ut,...Rt("GoogleDrive"),Nt,er],additional:[{name:"refresh_token",type:"text",default:"",required:!0,help:"true"},{name:"root_folder_id",type:"string",default:"root",required:!1},{name:"order_by",type:"select",options:"folder,name,modifiedTime desc",default:"folder,name,modifiedTime desc",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1},{name:"api_url_address",type:"string",default:"https://api.alist.nn.ci/googledrive/token",required:!1,help:"true"},{name:"use_online_api",type:"bool",default:"true",required:!1},{name:"client_id",type:"string",default:"",required:!1},{name:"client_secret",type:"string",default:"",required:!1},{name:"chunk_size",type:"number",default:"5",required:!1}],config:{name:"GoogleDrive",local_sort:!0,only_local:!1,only_proxy:!0,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"root"}},Quark:{name:"Quark",default_mount_path:"/quark",common:mt,additional:[{name:"variant",type:"select",options:"Quark,UC",default:"Quark",required:!0},{name:"cookie",type:"text",default:"",required:!0,help:"true"},{name:"root_folder_id",type:"string",default:"0",required:!0},{name:"order_by",type:"select",options:"none,file_type,file_name,updated_at",default:"none",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1},{name:"use_transcoding_address",type:"bool",default:"false",required:!1},{name:"only_list_video_file",type:"bool",default:"false",required:!1}],config:{name:"Quark",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"0"}},"123Pan":{name:"123Pan",default_mount_path:"/123",common:[...Ft,Pt,Tt,Ut,...Rt("123Pan"),Nt,er],additional:[{name:"username",type:"string",default:"",required:!0},{name:"password",type:"string",default:"",required:!0},{name:"access_token",type:"string",default:"",required:!1,help:"\u767B\u5F55\u4EE4\u724C\uFF08\u53EF\u9009\uFF0C\u81EA\u52A8\u6301\u4E45\u5316\uFF0C\u65E0\u9700\u624B\u52A8\u586B\u5199\uFF09\u3002\u4EC5\u9700\u586B\u5199\u4E0A\u65B9 123 \u7F51\u76D8\u624B\u673A\u53F7\u548C\u5BC6\u7801\uFF0C\u767B\u5F55\u540E\u81EA\u52A8\u83B7\u53D6\u5E76\u4FDD\u5B58\uFF0C\u8DF3\u8FC7\u91CD\u590D\u767B\u5F55\u53EF\u907F\u514D\u5883\u5916 IP \u89E6\u53D1\u98CE\u63A7\u3002"},{name:"cookie",type:"text",default:"",required:!1,help:"\u6D4F\u89C8\u5668 Cookie\uFF08\u53EF\u9009\uFF09\u3002\u5728 123 \u7F51\u76D8\u7F51\u9875\u767B\u5F55\u540E\uFF0C\u4ECE\u5F00\u53D1\u8005\u5DE5\u5177\u590D\u5236\u8BF7\u6C42\u5934\u4E2D\u7684 Cookie \u6574\u4E32\u7C98\u8D34\u4E8E\u6B64\uFF08\u542B sso-token\uFF09\uFF0C\u6216\u4ECE Authorization: Bearer <token> \u4E2D\u590D\u5236 token/Bearer \u503C\u3002\u89E3\u6790\u51FA\u7684 JWT \u4F1A\u4F5C\u4E3A Bearer \u4EE4\u724C\u4F7F\u7528\uFF0C\u6548\u679C\u7B49\u540C\u8BBF\u95EE\u4EE4\u724C\uFF0C\u9002\u5408\u8D26\u53F7\u5BC6\u7801\u767B\u5F55\u88AB\u98CE\u63A7\u62E6\u622A\u7684\u73AF\u5883\u3002"},{name:"root_id",type:"string",default:"0",required:!1},{name:"upload_thread",type:"number",default:"3",required:!1,help:"the threads of upload"},{name:"platform",type:"string",default:"web",required:!1,help:"the platform header value, sent with API requests"},{name:"order_by",type:"select",options:"file_id,file_name,size,created_at,updated_at",default:"file_id",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"desc",required:!1}],config:{name:"123Pan",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"0"}},BaiduNetdisk:{name:"BaiduNetdisk",default_mount_path:"/baidu",common:[...Ft,Pt,Tt,Ut,...Rt("BaiduNetdisk"),Nt,er],additional:[{name:"refresh_token",type:"text",default:"",required:!0,help:"true"},{name:"access_token",type:"string",default:"",required:!0,help:"\u8BBF\u95EE\u4EE4\u724C\uFF08\u5FC5\u586B\uFF09\u3002\u901A\u8FC7 https://api.oplist.org/ \u83B7\u53D6\u3002\u82E5\u4EE4\u724C\u5931\u6548\uFF0C\u6302\u8F7D\u65F6\u4F1A\u81EA\u52A8\u6839\u636E refresh_token \u901A\u8FC7\u5728\u7EBF API \u6362\u65B0\u5E76\u6301\u4E45\u5316\u3002"},{name:"use_online_api",type:"bool",default:"true",required:!1,help:"\u4F7F\u7528\u5728\u7EBF API \u5237\u65B0 token\uFF08\u65E0\u9700 ClientID/ClientSecret\uFF09"},{name:"api_url_address",type:"string",default:"https://api.oplist.org/baiduyun/renewapi",required:!1},{name:"client_id",type:"string",default:"",required:!1},{name:"client_secret",type:"string",default:"",required:!1},{name:"download_api",type:"select",options:"official,crack,crack_video",default:"official",required:!1},{name:"custom_crack_ua",type:"string",default:"netdisk",required:!0},{name:"order_by",type:"select",options:"name,time,size",default:"name",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1},{name:"only_list_video_file",type:"bool",default:"false",required:!1},{name:"upload_thread",type:"string",default:"3",required:!1,help:"1<=thread<=32"},{name:"upload_timeout",type:"number",default:"60",required:!1,help:"per-slice upload timeout in seconds"},{name:"custom_upload_part_size",type:"number",default:"0",required:!1,help:"0 for auto"},{name:"use_dynamic_upload_api",type:"bool",default:"true",required:!1,help:"dynamically get upload api domain, when enabled, the 'Upload API' setting will be used as a fallback if failed to get"},{name:"upload_api",type:"string",default:"https://d.pcs.baidu.com",required:!1},{name:"low_bandwith_upload_mode",type:"bool",default:"false",required:!1}],config:{name:"BaiduNetdisk",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"/"}},"115Open":{name:"115Open",default_mount_path:"/115",common:[...Ft,Pt,Tt,Ut,...Rt("115Open"),Nt,er],additional:[{name:"access_token",type:"string",default:"",required:!0,help:"\u8BBF\u95EE\u4EE4\u724C\uFF08\u5FC5\u586B\uFF09\u3002\u901A\u8FC7 115 \u5F00\u653E\u5E73\u53F0\u83B7\u53D6\uFF1B\u5931\u6548\u65F6\u81EA\u52A8\u7528 refresh_token \u5237\u65B0\u5E76\u6301\u4E45\u5316\u3002"},{name:"refresh_token",type:"string",default:"",required:!0,help:"\u5237\u65B0\u4EE4\u724C\uFF08\u5FC5\u586B\uFF09\u3002\u901A\u8FC7 115 \u5F00\u653E\u5E73\u53F0\u83B7\u53D6\uFF1Baccess_token \u5931\u6548\u65F6\u81EA\u52A8\u5237\u65B0\u3002"},{name:"root_id",type:"string",default:"0",required:!1,help:"\u6839\u6587\u4EF6\u5939 ID\uFF0C\u9ED8\u8BA4 0\uFF08\u6839\u76EE\u5F55\uFF09"},{name:"order_by",type:"select",options:"file_name,file_size,user_utime,file_type",default:"file_name",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1},{name:"page_size",type:"number",default:"200",required:!1,help:"list api per page size (1~1150)"},{name:"limit_rate",type:"float",default:"1",required:!1,help:"limit all api request rate ([limit]r/1s)\uFF0C0 \u8868\u793A\u4E0D\u9650\u901F"}],config:{name:"115Open",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"0"}},"GitHub API":{name:"GitHub API",default_mount_path:"/github",common:mt,additional:[{name:"root_folder_path",type:"string",default:"/",required:!0},{name:"token",type:"string",default:"",required:!0},{name:"owner",type:"string",default:"",required:!0},{name:"repo",type:"string",default:"",required:!0},{name:"ref",type:"string",default:"",required:!1,help:"A branch, a tag or a commit SHA, default branch by default."},{name:"gh_proxy",type:"string",default:"",required:!1,help:"GitHub proxy, e.g. https://ghproxy.net/raw.githubusercontent.com"},{name:"committer_name",type:"string",default:"",required:!1},{name:"committer_email",type:"string",default:"",required:!1},{name:"author_name",type:"string",default:"",required:!1},{name:"author_email",type:"string",default:"",required:!1},{name:"mkdir_commit_message",type:"text",default:"{{.UserName}} mkdir {{.ObjPath}}",required:!1},{name:"delete_commit_message",type:"text",default:"{{.UserName}} remove {{.ObjPath}}",required:!1},{name:"put_commit_message",type:"text",default:"{{.UserName}} upload {{.ObjPath}}",required:!1},{name:"rename_commit_message",type:"text",default:"{{.UserName}} rename {{.ObjPath}} to {{.TargetName}}",required:!1},{name:"copy_commit_message",type:"text",default:"{{.UserName}} copy {{.ObjPath}} to {{.TargetPath}}",required:!1},{name:"move_commit_message",type:"text",default:"{{.UserName}} move {{.ObjPath}} to {{.TargetPath}}",required:!1},{name:"order_by",type:"select",options:"name,size,modified",default:"name",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1}],config:{name:"GitHub API",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"/"}},Thunder:{name:"Thunder",default_mount_path:"/thunder",common:mt,additional:[{name:"root_folder_id",type:"string",default:"",required:!1},{name:"username",type:"string",default:"",required:!0},{name:"password",type:"string",default:"",required:!0},{name:"captcha_token",type:"string",default:"",required:!1},{name:"credit_key",type:"string",default:"",required:!1,help:"credit key, used for login"},{name:"device_id",type:"string",default:"",required:!1,help:"32 hex characters"},{name:"space",type:"string",default:"",required:!1,help:"device id for remote device"},{name:"order_by",type:"select",options:"name,size,modified",default:"name",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1}],config:{name:"Thunder",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:""}},ThunderExpert:{name:"ThunderExpert",default_mount_path:"/thunderexpert",common:mt,additional:[{name:"root_folder_id",type:"string",default:"",required:!1},{name:"login_type",type:"select",options:"user,refresh_token",default:"user",required:!0},{name:"sign_type",type:"select",options:"algorithms,captcha_sign",default:"algorithms",required:!0},{name:"username",type:"string",default:"",required:!1,help:"login type is user, this is required"},{name:"password",type:"string",default:"",required:!1,help:"login type is user, this is required"},{name:"refresh_token",type:"string",default:"",required:!1,help:"login type is refresh_token, this is required"},{name:"algorithms",type:"string",default:"9uJNVj/wLmdwKrJaVj/omlQ,Oz64Lp0GigmChHMf/6TNfxx7O9PyopcczMsnf,Eb+L7Ce+Ej48u,jKY0,ASr0zCl6v8W4aidjPK5KHd1Lq3t+vBFf41dqv5+fnOd,wQlozdg6r1qxh0eRmt3QgNXOvSZO6q/GXK,gmirk+ciAvIgA/cxUUCema47jr/YToixTT+Q6O,5IiCoM9B1/788ntB,P07JH0h6qoM6TSUAK2aL9T5s2QBVeY9JWvalf,+oK0AN",required:!1},{name:"captcha_sign",type:"string",default:"",required:!1},{name:"timestamp",type:"string",default:"",required:!1},{name:"captcha_token",type:"string",default:"",required:!1},{name:"credit_key",type:"string",default:"",required:!1,help:"credit key, used for login"},{name:"device_id",type:"string",default:"",required:!1},{name:"client_id",type:"string",default:"",required:!0,help:"\u8FC5\u96F7\u5F00\u653E\u5E73\u53F0 OAuth client_id\uFF08\u5FC5\u586B\uFF09\u3002"},{name:"client_secret",type:"string",default:"",required:!0,help:"\u8FC5\u96F7\u5F00\u653E\u5E73\u53F0 OAuth client_secret\uFF08\u5FC5\u586B\uFF09\u3002"},{name:"client_version",type:"string",default:"8.31.0.9726",required:!0},{name:"package_name",type:"string",default:"com.xunlei.downloadprovider",required:!0},{name:"user_agent",type:"string",default:"ANDROID-com.xunlei.downloadprovider/8.31.0.9726 netWorkType/5G appid/40 deviceName/Xiaomi_M2004j7ac deviceModel/M2004J7AC OSVersion/12 protocolVersion/301 platformVersion/10 sdkVersion/512000 Oauth2Client/0.9 (Linux 4_14_186-perf-gddfs8vbb238b) (JAVA 0)",required:!0},{name:"download_user_agent",type:"string",default:"Dalvik/2.1.0 (Linux; U; Android 12; M2004J7AC Build/SP1A.210812.016)",required:!0},{name:"use_video_url",type:"bool",default:"false",required:!1},{name:"space",type:"string",default:"",required:!1,help:"device id for remote device"},{name:"order_by",type:"select",options:"name,size,modified",default:"name",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1}],config:{name:"ThunderExpert",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:""}},"189Cloud":{name:"189Cloud",default_mount_path:"/189",common:[...Ft,Pt,Tt,Ut,...Rt("189Cloud"),Nt,er],additional:[{name:"username",type:"string",default:"",required:!0,help:"the phone number used to log in"},{name:"password",type:"string",default:"",required:!0,help:"password for login"},{name:"cookie",type:"text",default:"",required:!1,help:"Fill in the cookie if need captcha (\u82E5\u9047\u6ED1\u5757\u9A8C\u8BC1\u7801\u6216\u8BBE\u5907\u9501\uFF0C\u53EF\u5728\u6D4F\u89C8\u5668\u767B\u5F55\u540E\u590D\u5236 Cookie \u586B\u5165)"},{name:"root_folder_id",type:"string",default:"-11",required:!1,help:"\u6839\u6587\u4EF6\u5939ID\uFF0C\u9ED8\u8BA4\u4E3A -11\uFF08\u4E2A\u4EBA\u4E91\u6839\u76EE\u5F55\uFF09"},{name:"order_by",type:"select",options:"lastOpTime,filename,fileSize",default:"lastOpTime",required:!1},{name:"order_direction",type:"select",options:"desc,asc",default:"desc",required:!1}],config:{name:"189Cloud",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"-11"}},Lanzou:{name:"Lanzou",default_mount_path:"/lanzou",common:mt,additional:[{name:"type",type:"select",options:"cookie,account,url",default:"cookie",required:!0},{name:"account",type:"string",default:"",required:!1,help:"\u8D26\u53F7\uFF08\u624B\u673A\u53F7/UID\uFF09\uFF0C\u4EC5 account \u6A21\u5F0F\u9700\u586B\u5199"},{name:"password",type:"string",default:"",required:!1,help:"\u5BC6\u7801\uFF0C\u4EC5 account \u6A21\u5F0F\u9700\u586B\u5199"},{name:"cookie",type:"text",default:"",required:!1,help:"\u767B\u5F55 Cookie\uFF08\u542B ylogin, phpdisk_info \u7B49\uFF09\uFF0Ccookie \u6A21\u5F0F\u9700\u586B\u5199\uFF1B\u6709\u6548\u671F\u7EA6 15 \u5929"},{name:"root_folder_id",type:"string",default:"-1",required:!1,help:"\u6839\u6587\u4EF6\u5939 ID / \u5206\u4EAB ID\uFF08\u4E2A\u4EBA\u76D8\u9ED8\u8BA4 -1\uFF0C\u5206\u4EAB\u94FE\u63A5\u586B\u5206\u4EAB ID \u5982 b00xxxx\uFF09"},{name:"share_password",type:"string",default:"",required:!1,help:"\u63D0\u53D6\u7801 / \u8BBF\u95EE\u5BC6\u7801\uFF08\u65E0\u5BC6\u7801\u7559\u7A7A\uFF09"},{name:"baseUrl",type:"string",default:"https://pc.woozooo.com",required:!1,help:"\u57FA\u672C API \u57DF\u540D"},{name:"shareUrl",type:"string",default:"https://pan.lanzoui.com",required:!1,help:"\u5206\u4EAB\u9875\u9762\u89E3\u6790\u57DF\u540D"},{name:"user_agent",type:"string",default:"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Safari/537.36 Chrome/142.0.0.0 OpenList/42",required:!0,help:"\u53D1\u9001\u7ED9\u84DD\u594F\u4E91 API \u4E0E\u76F4\u94FE\u89E3\u6790\u65F6\u643A\u5E26\u7684\u5BA2\u6237\u7AEF User-Agent"},{name:"repair_file_info",type:"bool",default:"false",required:!1,help:"\u901A\u8FC7 HEAD \u8BF7\u6C42\u4FEE\u6B63\u6587\u4EF6\u7CBE\u786E\u5927\u5C0F\u4E0E\u4FEE\u6539\u65F6\u95F4\uFF08WebDAV \u63A8\u8350\u5F00\u542F\uFF09"},{name:"order_by",type:"select",options:"name,size,time",default:"name",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1}],config:{name:"Lanzou",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"-1"}},WebDav:{name:"WebDav",default_mount_path:"/webdav",common:[...Ft,Pt,Tt,Ut,...Rt("WebDav"),cl,Nt,er],additional:[{name:"vendor",type:"select",options:"other,sharepoint",default:"other",required:!0},{name:"address",type:"string",default:"",required:!0},{name:"username",type:"string",default:"",required:!0},{name:"password",type:"string",default:"",required:!0},{name:"root_folder_path",type:"string",default:"/",required:!1},{name:"tls_insecure_skip_verify",type:"bool",default:"false",required:!1},{name:"order_by",type:"select",options:"name,size,modified",default:"name",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1}],config:{name:"WebDav",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"/"}},WoPan:{name:"WoPan",default_mount_path:"/wopan",common:mt,additional:[{name:"root_folder_id",type:"string",default:"0",required:!1},{name:"refresh_token",type:"text",default:"",required:!0},{name:"family_id",type:"string",default:"",required:!1,help:"true"},{name:"sort_rule",type:"select",options:"name_asc,name_desc,time_asc,time_desc,size_asc,size_desc",default:"name_asc",required:!1},{name:"access_token",type:"string",default:"",required:!1},{name:"order_by",type:"select",options:"name,size,modified",default:"name",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1}],config:{name:"WoPan",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"0",no_overwrite_upload:!0}},S3:{name:"S3",default_mount_path:"/s3",common:mt,additional:[{name:"root_folder_path",type:"string",default:"/",required:!1},{name:"bucket",type:"string",default:"",required:!0},{name:"endpoint",type:"string",default:"",required:!0},{name:"region",type:"string",default:"",required:!1},{name:"access_key_id",type:"string",default:"",required:!0},{name:"secret_access_key",type:"string",default:"",required:!0},{name:"session_token",type:"string",default:"",required:!1},{name:"custom_host",type:"string",default:"",required:!1},{name:"enable_custom_host_presign",type:"bool",default:"false",required:!1},{name:"sign_url_expire",type:"number",default:"4",required:!1},{name:"placeholder",type:"string",default:"",required:!1},{name:"force_path_style",type:"bool",default:"false",required:!1},{name:"list_object_version",type:"select",options:"v1,v2",default:"v1",required:!1},{name:"remove_bucket",type:"bool",default:"false",required:!1,help:"true"},{name:"add_filename_to_disposition",type:"bool",default:"false",required:!1,help:"true"},{name:"enable_direct_upload",type:"bool",default:"false",required:!1},{name:"direct_upload_host",type:"string",default:"",required:!1},{name:"user_agent",type:"string",default:"",required:!1,help:"true"},{name:"order_by",type:"select",options:"name,size,modified",default:"name",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1}],config:{name:"S3",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"/",check_status:!0}},Doge:{name:"Doge",default_mount_path:"/doge",common:mt,additional:[{name:"root_folder_path",type:"string",default:"/",required:!1},{name:"bucket",type:"string",default:"",required:!0},{name:"endpoint",type:"string",default:"",required:!0},{name:"region",type:"string",default:"",required:!1},{name:"access_key_id",type:"string",default:"",required:!0},{name:"secret_access_key",type:"string",default:"",required:!0},{name:"session_token",type:"string",default:"",required:!1},{name:"custom_host",type:"string",default:"",required:!1},{name:"enable_custom_host_presign",type:"bool",default:"false",required:!1},{name:"sign_url_expire",type:"number",default:"4",required:!1},{name:"placeholder",type:"string",default:"",required:!1},{name:"force_path_style",type:"bool",default:"false",required:!1},{name:"list_object_version",type:"select",options:"v1,v2",default:"v1",required:!1},{name:"remove_bucket",type:"bool",default:"false",required:!1,help:"true"},{name:"add_filename_to_disposition",type:"bool",default:"false",required:!1,help:"true"},{name:"enable_direct_upload",type:"bool",default:"false",required:!1},{name:"direct_upload_host",type:"string",default:"",required:!1},{name:"user_agent",type:"string",default:"",required:!1,help:"true"},{name:"order_by",type:"select",options:"name,size,modified",default:"name",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1}],config:{name:"Doge",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"/",check_status:!0}},WeiYun:{name:"WeiYun",default_mount_path:"/weiyun",common:[...Ft,Pt,Tt,Ut,...Rt("WeiYun"),Nt,er],additional:[{name:"root_folder_id",type:"string",default:"",required:!1},{name:"cookies",type:"text",default:"",required:!0},{name:"order_by",type:"select",options:"name,size,updated_at",default:"name",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1},{name:"upload_thread",type:"string",default:"4",required:!1,help:"4<=thread<=32"}],config:{name:"WeiYun",local_sort:!1,only_local:!1,only_proxy:!0,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"",check_status:!0}},SFTP:{name:"SFTP",default_mount_path:"/sftp",common:[...Ft,Pt,Tt,Ut,...Rt("SFTP"),Nt,er],additional:[{name:"address",type:"string",default:"",required:!0,help:"SSH host:port (e.g. 127.0.0.1:22)"},{name:"username",type:"string",default:"",required:!0},{name:"password",type:"string",default:"",required:!1},{name:"private_key",type:"text",default:"",required:!1},{name:"passphrase",type:"string",default:"",required:!1},{name:"root_folder_path",type:"string",default:"/",required:!1},{name:"ignore_symlink_error",type:"bool",default:"false",required:!1,help:"Ignore symlink error"}],config:{name:"SFTP",local_sort:!0,only_local:!1,only_proxy:!0,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"/",check_status:!0,no_link_url:!0}},FTP:{name:"FTP",default_mount_path:"/ftp",common:[...Ft,Pt,Tt,Ut,...Rt("FTP"),Nt,er],additional:[{name:"address",type:"string",default:"",required:!0,help:"FTP host:port (e.g. 127.0.0.1:21)"},{name:"username",type:"string",default:"",required:!0},{name:"password",type:"string",default:"",required:!0},{name:"encoding",type:"string",default:"utf-8",required:!0,help:"Character encoding, e.g. utf-8, gbk, gb2312"},{name:"cwd_list",type:"bool",default:"false",required:!1,help:"Enter directory before listing"},{name:"root_folder_path",type:"string",default:"/",required:!1}],config:{name:"FTP",local_sort:!0,only_local:!1,only_proxy:!0,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"/",check_status:!0,no_link_url:!0}},PikPak:{name:"PikPak",default_mount_path:"/pikpak",common:mt,additional:[{name:"root_folder_id",type:"string",default:"",required:!1},{name:"username",type:"string",default:"",required:!0},{name:"password",type:"string",default:"",required:!0},{name:"platform",type:"select",options:"web,android,pc",default:"web",required:!0},{name:"refresh_token",type:"text",default:"",required:!1},{name:"captcha_token",type:"text",default:"",required:!1},{name:"device_id",type:"string",default:"",required:!1},{name:"disable_media_link",type:"bool",default:"true",required:!1},{name:"order_by",type:"select",options:"name,size,modified",default:"name",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1}],config:{name:"PikPak",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:""}},Seafile:{name:"Seafile",default_mount_path:"/seafile",common:mt,additional:[{name:"address",type:"string",default:"",required:!0},{name:"username",type:"string",default:"",required:!1},{name:"password",type:"string",default:"",required:!1},{name:"token",type:"string",default:"",required:!1},{name:"repo_id",type:"string",default:"",required:!1},{name:"repo_pwd",type:"string",default:"",required:!1},{name:"root_folder_path",type:"string",default:"/",required:!1},{name:"order_by",type:"select",options:"name,size,modified",default:"name",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1}],config:{name:"Seafile",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"/"}},YandexDisk:{name:"YandexDisk",default_mount_path:"/yandex",common:mt,additional:[{name:"refresh_token",type:"text",default:"",required:!0},{name:"root_folder_path",type:"string",default:"/",required:!1},{name:"use_online_api",type:"bool",default:"true",required:!1},{name:"api_url_address",type:"string",default:"https://api.oplist.org/yandexui/renewapi",required:!1},{name:"client_id",type:"string",default:"",required:!1},{name:"client_secret",type:"string",default:"",required:!1},{name:"order_by",type:"select",options:"name,path,created,modified,size",default:"name",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1}],config:{name:"YandexDisk",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"/"}},Terabox:{name:"Terabox",default_mount_path:"/terabox",common:[...Ft,Pt,Tt,Ut,...Rt("Terabox"),Nt,er],additional:[{name:"cookie",type:"text",default:"",required:!0},{name:"download_api",type:"select",options:"official,crack",default:"official",required:!1},{name:"root_folder_path",type:"string",default:"/",required:!1},{name:"order_by",type:"select",options:"name,time,size",default:"name",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1}],config:{name:"Terabox",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"/"}},MediaTrack:{name:"MediaTrack",default_mount_path:"/mediatrack",common:mt,additional:[{name:"access_token",type:"text",default:"",required:!0},{name:"project_id",type:"string",default:"",required:!1},{name:"root_folder_id",type:"string",default:"",required:!1},{name:"order_by",type:"select",options:"updated_at,title,size",default:"title",required:!1},{name:"order_desc",type:"bool",default:"false",required:!1}],config:{name:"MediaTrack",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:""}},Alias:{name:"Alias",default_mount_path:"/alias",common:[...Ft,Pt,Tt,Ut,...Rt("Alias"),cl,Nt,er],additional:[{name:"paths",type:"text",default:"",required:!0,help:"Newline-separated list of paths, e.g. /local or sub:/target"},{name:"read_conflict_policy",type:"select",options:"first,random,all",default:"first",required:!1},{name:"write_conflict_policy",type:"select",options:"disabled,first,deterministic,deterministic_or_all,all,all_strict",default:"disabled",required:!1},{name:"put_conflict_policy",type:"select",options:"disabled,first,deterministic,deterministic_or_all,all,all_strict,random,quota,quota_strict",default:"disabled",required:!1},{name:"order_by",type:"select",options:"name,size,modified",default:"name",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1}],config:{name:"Alias",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!0,no_upload:!1,need_ms:!1,default_root:"/"}},Dropbox:{name:"Dropbox",default_mount_path:"/dropbox",common:mt,additional:[{name:"root_folder_path",type:"string",default:"/",required:!1},{name:"use_online_api",type:"bool",default:"false",required:!1},{name:"api_url_address",type:"string",default:"https://api.oplist.org/dropboxs/renewapi",required:!1},{name:"client_id",type:"string",default:"",required:!1},{name:"client_secret",type:"string",default:"",required:!1},{name:"refresh_token",type:"text",default:"",required:!0},{name:"root_namespace_id",type:"string",default:"",required:!1},{name:"order_by",type:"select",options:"name,size,modified",default:"name",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1}],config:{name:"Dropbox",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"/"}},WPS:{name:"WPS",default_mount_path:"/wps",common:mt,additional:[{name:"root_folder_path",type:"string",default:"/",required:!1},{name:"cookie",type:"text",default:"",required:!0},{name:"mode",type:"select",options:"Personal,Business",default:"Personal",required:!1},{name:"custom_ua",type:"string",default:"",required:!1},{name:"order_by",type:"select",options:"name,size,modified",default:"name",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1}],config:{name:"WPS",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"/"}},"139Yun":{name:"139Yun",default_mount_path:"/139",common:[...Ft,Pt,Tt,Ut,...Rt("139Yun"),cl,Nt,er],additional:[{name:"authorization",type:"text",default:"",required:!0},{name:"root_folder_id",type:"string",default:"",required:!1},{name:"type",type:"select",options:"personal_new,family,group,personal,share",default:"personal_new",required:!1},{name:"link_id",type:"text",default:"",required:!1},{name:"cloud_id",type:"string",default:"",required:!1},{name:"order_by",type:"select",options:"name,size,modified",default:"name",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1}],config:{name:"139Yun",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:""}},Mega_nz:{name:"Mega_nz",default_mount_path:"/mega",common:[...Ft,Pt,Tt,Ut,...Rt("Mega_nz"),Nt,er],additional:[{name:"email",type:"string",default:"",required:!0},{name:"password",type:"string",default:"",required:!0},{name:"two_fa_code",type:"string",default:"",required:!1},{name:"two_fa_secret",type:"string",default:"",required:!1},{name:"move_to_trash",type:"bool",default:"true",required:!1},{name:"order_by",type:"select",options:"name,size,modified",default:"name",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1}],config:{name:"Mega_nz",local_sort:!0,only_local:!1,only_proxy:!0,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"/"}},"115Share":{name:"115Share",default_mount_path:"/115_share",common:mt,additional:[{name:"share_code",type:"text",default:"",required:!0},{name:"receive_code",type:"text",default:"",required:!0},{name:"cookie",type:"text",default:"",required:!1},{name:"root_folder_id",type:"string",default:"0",required:!1},{name:"page_size",type:"number",default:"1000",required:!1},{name:"order_by",type:"select",options:"name,size,modified",default:"name",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1}],config:{name:"115Share",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!0,need_ms:!1,default_root:"0"}},"123PanShare":{name:"123PanShare",default_mount_path:"/123_share",common:[...Ft,Pt,Tt,Ut,...Rt("123PanShare"),Nt,er],additional:[{name:"sharekey",type:"string",default:"",required:!0},{name:"sharepassword",type:"string",default:"",required:!1},{name:"accesstoken",type:"text",default:"",required:!1},{name:"root_folder_id",type:"string",default:"0",required:!1},{name:"order_by",type:"select",options:"name,size,modified",default:"name",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1}],config:{name:"123PanShare",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!0,need_ms:!1,default_root:"0"}},AliyundriveShare:{name:"AliyundriveShare",default_mount_path:"/aliyun_share",common:mt,additional:[{name:"share_id",type:"string",default:"",required:!0},{name:"share_pwd",type:"string",default:"",required:!1},{name:"root_folder_id",type:"string",default:"root",required:!1},{name:"order_by",type:"select",options:"name,size,updated_at,created_at",default:"name",required:!1},{name:"order_direction",type:"select",options:"ASC,DESC",default:"ASC",required:!1}],config:{name:"AliyundriveShare",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!0,need_ms:!1,default_root:"root"}},OnedriveSharelink:{name:"OnedriveSharelink",default_mount_path:"/onedrive_share",common:mt,additional:[{name:"url",type:"string",default:"",required:!0},{name:"password",type:"string",default:"",required:!1},{name:"order_by",type:"select",options:"name,size,modified",default:"name",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1}],config:{name:"OnedriveSharelink",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!0,need_ms:!1,default_root:"/"}},PikPakShare:{name:"PikPakShare",default_mount_path:"/pikpak_share",common:mt,additional:[{name:"share_id",type:"string",default:"",required:!0},{name:"share_pwd",type:"string",default:"",required:!1},{name:"platform",type:"select",options:"android,web,pc",default:"web",required:!1},{name:"root_folder_id",type:"string",default:"",required:!1},{name:"order_by",type:"select",options:"name,size,modified",default:"name",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1}],config:{name:"PikPakShare",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!0,need_ms:!1,default_root:""}},SMB:{name:"SMB",default_mount_path:"/smb",common:[...Ft,Pt,Tt,Ut,...Rt("SMB"),Nt,er],additional:[{name:"address",type:"string",default:"",required:!0},{name:"share_name",type:"string",default:"",required:!0},{name:"username",type:"string",default:"",required:!0},{name:"password",type:"string",default:"",required:!1},{name:"port",type:"number",default:"445",required:!1},{name:"root_folder_path",type:"string",default:"/",required:!1},{name:"order_by",type:"select",options:"name,size,modified",default:"name",required:!1},{name:"order_direction",type:"select",options:"asc,desc",default:"asc",required:!1}],config:{name:"SMB",local_sort:!0,only_local:!1,only_proxy:!0,no_cache:!0,no_upload:!1,need_ms:!1,default_root:"/"}},Crypt:{name:"Crypt",default_mount_path:"/crypt",common:[...Ft,Pt,Tt,Ut,...Rt("Crypt"),Nt,er],additional:[{name:"remote_path",type:"string",default:"",required:!0,help:"\u52A0\u5BC6\u6570\u636E\u5B9E\u9645\u5B58\u50A8\u7684\u4F4D\u7F6E\uFF08\u53E6\u4E00\u4E2A\u5DF2\u6302\u8F7D\u5B58\u50A8\u7684\u8DEF\u5F84\uFF0C\u5982 /aliyundrive/enc\uFF09"},{name:"password",type:"string",default:"",required:!0,help:"\u4E3B\u5BC6\u7801\uFF08\u7528\u4E8E\u6D3E\u751F\u52A0\u5BC6\u5BC6\u94A5\uFF09"},{name:"salt",type:"string",default:"",required:!1,help:"\u76D0\uFF08\u7B2C\u4E8C\u5BC6\u7801\uFF09\u3002\u53EF\u9009\u4F46\u63A8\u8350\uFF0C\u63D0\u9AD8\u5BC6\u94A5\u5F3A\u5EA6"},{name:"filename_encryption",type:"select",options:"off,standard,obfuscate",default:"off",required:!0,help:"\u6587\u4EF6\u540D\u52A0\u5BC6\u65B9\u5F0F\u3002\u5F53\u524D\u4EC5\u652F\u6301 off\uFF08\u6587\u4EF6\u540D\u4E0D\u52A0\u5BC6\uFF0C\u4EC5\u5185\u5BB9\u52A0\u5BC6\uFF09"},{name:"directory_name_encryption",type:"select",options:"false,true",default:"false",required:!0},{name:"encrypted_suffix",type:"string",default:".bin",required:!0,help:"\u52A0\u5BC6\u6587\u4EF6\u7684\u540E\u7F00\uFF08\u9AD8\u7EA7\u9009\u9879\uFF09"},{name:"filename_encoding",type:"select",options:"base64,base32,base32768",default:"base64",required:!0},{name:"thumbnail",type:"bool",default:"false",required:!1},{name:"show_hidden",type:"bool",default:"true",required:!1}],config:{name:"Crypt",local_sort:!0,only_local:!1,only_proxy:!0,no_cache:!0,no_upload:!1,need_ms:!1,default_root:"/",no_link_url:!0,check_status:!0}},Virtual:{name:"Virtual",default_mount_path:"/virtual",common:[...Ft,Pt,Tt,Ut,...Rt("Virtual"),Nt,er],additional:[{name:"num_file",type:"number",default:"30",required:!0,help:"\u6BCF\u4E2A\u76EE\u5F55\u4E0B\u751F\u6210\u7684\u5360\u4F4D\u6587\u4EF6\u6570\u91CF"},{name:"num_folder",type:"number",default:"30",required:!0,help:"\u6BCF\u4E2A\u76EE\u5F55\u4E0B\u751F\u6210\u7684\u5360\u4F4D\u76EE\u5F55\u6570\u91CF"},{name:"max_file_size",type:"number",default:"1073741824",required:!0,help:"\u5360\u4F4D\u6587\u4EF6\u6700\u5927\u5B57\u8282\u6570"},{name:"min_file_size",type:"number",default:"1048576",required:!0,help:"\u5360\u4F4D\u6587\u4EF6\u6700\u5C0F\u5B57\u8282\u6570"}],config:{name:"Virtual",local_sort:!0,only_local:!1,only_proxy:!0,no_cache:!1,no_upload:!1,need_ms:!0,default_root:"/",no_link_url:!0}},AListV3:{name:"AListV3",default_mount_path:"/alist",common:[...Ft,Pt,Tt,Ut,...Rt("AListV3"),cl,Nt,er],additional:[{name:"url",type:"string",default:"",required:!0,help:"\u53E6\u4E00\u4E2A OpenList / AList \u5B9E\u4F8B\u7684\u5730\u5740\uFF0C\u5982 https://example.com"},{name:"meta_password",type:"string",default:"",required:!1},{name:"username",type:"string",default:"",required:!1},{name:"password",type:"string",default:"",required:!1},{name:"token",type:"string",default:"",required:!1,help:"\u8BBF\u95EE\u4EE4\u724C\uFF08\u53EF\u9009\uFF0C\u81EA\u52A8\u6301\u4E45\u5316\uFF0C\u65E0\u9700\u624B\u52A8\u586B\u5199\uFF09"},{name:"pass_ip_to_upsteam",type:"bool",default:"true",required:!1},{name:"pass_ua_to_upsteam",type:"bool",default:"true",required:!1},{name:"forward_archive_requests",type:"bool",default:"true",required:!1}],config:{name:"AListV3",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"/"}},UrlTree:{name:"UrlTree",default_mount_path:"/url_tree",common:mt,additional:[{name:"url_structure",type:"text",default:"",required:!0,help:"URL \u6811\u7ED3\u6784\u6587\u672C\uFF0C\u6BCF\u884C\u7F29\u8FDB 2 \u7A7A\u683C\u8868\u793A\u4E00\u7EA7\u3002\u76EE\u5F55\u884C\u4EE5 : \u7ED3\u5C3E\uFF0C\u6587\u4EF6\u884C\u683C\u5F0F [FileName:][FileSize:][Modified:]Url"},{name:"head_size",type:"bool",default:"false",required:!1,help:"\u7528 HEAD \u8BF7\u6C42\u83B7\u53D6\u6587\u4EF6\u5927\u5C0F\uFF08\u53EF\u80FD\u5931\u8D25\uFF09"},{name:"writable",type:"bool",default:"false",required:!1,help:"\u5141\u8BB8\u589E\u5220\u6539\u6587\u4EF6\u6811\uFF08\u4F1A\u6301\u4E45\u5316\u56DE url_structure\uFF09"}],config:{name:"UrlTree",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!0,no_upload:!1,need_ms:!1,default_root:"/",check_status:!0}},Strm:{name:"Strm",default_mount_path:"/strm",common:[...Ft,Pt,Tt,Ut,...Rt("Strm"),Nt,er],additional:[{name:"paths",type:"text",default:"",required:!0,help:"\u8DEF\u5F84\u6620\u5C04\uFF0C\u6BCF\u884C\u4E00\u4E2A\uFF1A\u865A\u62DF\u540D:\u5E95\u5C42\u8DEF\u5F84\uFF08\u5982 movies:/aliyundrive/movies\uFF09\uFF0C\u6216\u76F4\u63A5\u5E95\u5C42\u8DEF\u5F84"},{name:"siteUrl",type:"text",default:"",required:!1,help:"strm \u6587\u4EF6\u5185\u5BB9\u7684 URL \u524D\u7F00\uFF08\u7559\u7A7A\u5219\u7528\u76F8\u5BF9\u8DEF\u5F84\uFF09"},{name:"PathPrefix",type:"text",default:"/d",required:!1,help:"\u4E0B\u8F7D\u8DEF\u5F84\u524D\u7F00"},{name:"downloadFileTypes",type:"text",default:"ass,srt,vtt,sub,strm",required:!1,help:"\u9700\u539F\u6837\u4E0B\u8F7D\u7684\u6587\u4EF6\u6269\u5C55\u540D\uFF08\u901A\u5E38\u4E3A\u5B57\u5E55\uFF09"},{name:"filterFileTypes",type:"text",default:"mp4,mkv,flv,avi,wmv,ts,rmvb,webm,mp3,flac,aac,wav,ogg,m4a,wma,alac",required:!1,help:"\u652F\u6301\u751F\u6210 strm \u7684\u6587\u4EF6\u6269\u5C55\u540D\uFF08\u89C6\u9891/\u97F3\u9891\uFF09"},{name:"encodePath",type:"bool",default:"true",required:!1},{name:"withoutUrl",type:"bool",default:"false",required:!1},{name:"withSign",type:"bool",default:"false",required:!1}],config:{name:"Strm",local_sort:!0,only_local:!1,only_proxy:!0,no_cache:!0,no_upload:!0,need_ms:!1,default_root:"/",no_link_url:!0}},AzureBlob:{name:"AzureBlob",default_mount_path:"/azure",common:mt,additional:[{name:"endpoint",type:"string",default:"",required:!0,help:"Azure \u5B58\u50A8\u7AEF\u70B9\uFF0C\u5982 https://accountname.blob.core.windows.net/"},{name:"access_key",type:"string",default:"",required:!0,help:"Azure \u5B58\u50A8\u8BBF\u95EE\u5BC6\u94A5\uFF08Base64\uFF09"},{name:"container_name",type:"string",default:"",required:!0,help:"\u5BB9\u5668\u540D\u79F0"},{name:"sign_url_expire",type:"number",default:"4",required:!1,help:"SAS URL \u6709\u6548\u671F\uFF08\u5C0F\u65F6\uFF09"}],config:{name:"AzureBlob",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"/",check_status:!0}},USS:{name:"USS",default_mount_path:"/uss",common:mt,additional:[{name:"bucket",type:"string",default:"",required:!0},{name:"endpoint",type:"string",default:"",required:!0,help:"\u4E0B\u8F7D\u57DF\u540D\uFF08\u53EF\u542B\u534F\u8BAE\u5934\uFF09"},{name:"operator_name",type:"string",default:"",required:!0},{name:"operator_password",type:"string",default:"",required:!0},{name:"anti_theft_chain_token",type:"string",default:"",required:!1,help:"\u9632\u76D7\u94FE Token\uFF08\u7559\u7A7A\u5219\u7528\u64CD\u4F5C\u5458\u5BC6\u7801\uFF09"},{name:"sign_url_expire",type:"number",default:"4",required:!1,help:"\u94FE\u63A5\u6709\u6548\u671F\uFF08\u5C0F\u65F6\uFF09"}],config:{name:"USS",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"/"}},Alidoc:{name:"Alidoc",default_mount_path:"/alidoc",common:mt,additional:[{name:"cookie",type:"text",default:"",required:!0,help:"\u9489\u9489\u6587\u6863\u7F51\u9875 Cookie"},{name:"root_folder_id",type:"string",default:"",required:!0,help:"\u6839\u76EE\u5F55 dentryUuid"}],config:{name:"Alidoc",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!0,need_ms:!1,default_root:""}},Emby:{name:"Emby",default_mount_path:"/emby",common:mt,additional:[{name:"url",type:"string",default:"",required:!0,help:"Emby \u670D\u52A1\u5668\u5730\u5740\uFF0C\u5982 http://localhost:8096"},{name:"api_key",type:"string",default:"",required:!1},{name:"user_id",type:"string",default:"",required:!1},{name:"username",type:"string",default:"",required:!1},{name:"password",type:"string",default:"",required:!1},{name:"link_method",type:"select",options:"stream,download",default:"stream",required:!1},{name:"root_folder_id",type:"string",default:"1",required:!1,help:"\u6839\u76EE\u5F55 ID\uFF0C\u9ED8\u8BA4 1"}],config:{name:"Emby",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!0,need_ms:!1,default_root:"1"}},BunnyStorage:{name:"BunnyStorage",default_mount_path:"/bunny",common:mt,additional:[{name:"storage_zone_name",type:"string",default:"",required:!0},{name:"access_key",type:"string",default:"",required:!0},{name:"endpoint",type:"string",default:"storage.bunnycdn.com",required:!1},{name:"cdn_base_url",type:"string",default:"",required:!1},{name:"cdn_token_key",type:"string",default:"",required:!1},{name:"cdn_token_method",type:"select",options:"sha256,hmac_sha256",default:"sha256",required:!1},{name:"cdn_token_include_ip",type:"bool",default:"false",required:!1},{name:"sign_url_expire",type:"number",default:"4",required:!1,help:"\u94FE\u63A5\u6709\u6548\u671F\uFF08\u5C0F\u65F6\uFF09"},{name:"placeholder",type:"string",default:".openlist",required:!1},{name:"root_folder_path",type:"string",default:"/",required:!0}],config:{name:"BunnyStorage",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"/"}},CloudflareImgbed:{name:"CloudflareImgbed",default_mount_path:"/cfimgbed",common:mt,additional:[{name:"address",type:"string",default:"",required:!0,help:"\u56FE\u5E8A\u670D\u52A1\u5730\u5740"},{name:"token",type:"string",default:"",required:!0},{name:"small_channel_name",type:"string",default:"",required:!1},{name:"large_channel_name",type:"string",default:"",required:!1},{name:"large_channel_type",type:"string",default:"",required:!1},{name:"upload_thread",type:"number",default:"3",required:!1},{name:"root_folder_path",type:"string",default:"/",required:!0}],config:{name:"CloudflareImgbed",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"/"}},GuangYaPan:{name:"GuangYaPan",default_mount_path:"/guangyapan",common:mt,additional:[{name:"client_id",type:"string",default:"",required:!0},{name:"device_id",type:"string",default:"",required:!1},{name:"device_sign",type:"string",default:"",required:!1},{name:"access_token",type:"text",default:"",required:!1},{name:"refresh_token",type:"text",default:"",required:!1},{name:"phone_number",type:"string",default:"",required:!1,help:"\u624B\u673A\u53F7\uFF08\u767B\u5F55\u7528\uFF0C+86 \u683C\u5F0F\uFF09"},{name:"verify_code",type:"string",default:"",required:!1},{name:"page_size",type:"number",default:"100",required:!1},{name:"order_by",type:"number",default:"3",required:!1},{name:"sort_type",type:"number",default:"1",required:!1},{name:"root_folder_path",type:"string",default:"/",required:!0}],config:{name:"GuangYaPan",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!1,need_ms:!1,default_root:"/"}},AutoIndex:{name:"AutoIndex",default_mount_path:"/autoindex",common:mt,additional:[{name:"url",type:"string",default:"",required:!0,help:"AutoIndex \u76EE\u5F55\u9875 URL"},{name:"item_xpath",type:"string",default:"//pre/a",required:!0},{name:"name_xpath",type:"string",default:"@href",required:!0},{name:"modified_xpath",type:"string",default:"string(following-sibling::text()[2])",required:!1},{name:"size_xpath",type:"string",default:"string(following-sibling::text()[1])",required:!1},{name:"ignore_file_names",type:"text",default:`. .. Parent Directory -Up`,required:!1},{name:"modified_time_format",type:"string",default:"02-Jan-2006 15:04",required:!1}],config:{name:"AutoIndex",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!0,need_ms:!1,default_root:""}},ProtonDrive:{name:"ProtonDrive",default_mount_path:"/proton",common:[...Ft,Pt,Tt,Ut,...Rt("ProtonDrive"),Nt,er],additional:[{name:"email",type:"string",default:"",required:!0,help:"Proton \u8D26\u53F7\u90AE\u7BB1"},{name:"password",type:"string",default:"",required:!0,help:"Proton \u8D26\u53F7\u5BC6\u7801"},{name:"two_fa_code",type:"string",default:"",required:!1,help:"\u4E24\u6B65\u9A8C\u8BC1\u7801\uFF08\u5982\u5DF2\u542F\u7528 2FA\uFF09"},{name:"root_folder_id",type:"string",default:"root",required:!1,help:"\u6839\u6587\u4EF6\u5939 LinkID\uFF0C\u9ED8\u8BA4 root \u8868\u793A\u4E3B\u5171\u4EAB\u6839\u76EE\u5F55"},{name:"chunk_size",type:"number",default:"4",required:!1,help:"\u5206\u5757\u5927\u5C0F\uFF08MB\uFF09"},{name:"use_reusable_login",type:"bool",default:"true",required:!1}],config:{name:"ProtonDrive",local_sort:!0,only_local:!1,only_proxy:!0,no_cache:!1,no_upload:!0,need_ms:!1,default_root:"root"}}};Ue.get("/driver/list",r=>r.json({code:200,message:"success",data:iu}));Ue.get("/driver/info",r=>{let e=r.req.query("driver")||"",t=iu[e]||iu.AliyundriveOpen;return r.json({code:200,message:"success",data:t})});Ue.get("/setting/list",async r=>{let e=await ne(r.env),t=r.req.query("group"),i=r.req.query("groups"),n=e.settings||[];if(t!==void 0){let s=parseInt(t,10);n=n.filter(o=>o.group===s)}else if(i!==void 0){let s=i.split(",").map(o=>parseInt(o,10));n=n.filter(o=>s.includes(o.group))}return r.json({code:200,message:"success",data:n})});Ue.post("/setting/save",async r=>{let e=await r.req.json().catch(()=>[]);if(!Array.isArray(e))return r.json({code:400,message:"body must be an array",data:null});let t=await ne(r.env);t.settings||(t.settings=[]);for(let n of e){if(!n||typeof n!="object"||Array.isArray(n))continue;let s=n.key;if(typeof s!="string"||s.length===0||s.length>128)continue;let o=n.value;o!==null&&typeof o=="object"&&(o=JSON.stringify(o));let a=t.settings.findIndex(c=>c.key===s);a!==-1?(t.settings[a].value=o,typeof n.group=="number"&&(t.settings[a].group=n.group)):t.settings.push({key:s,value:o,type:typeof n.type=="string"?n.type:"string",help:typeof n.help=="string"?n.help:"",group:typeof n.group=="number"?n.group:0,flag:typeof n.flag=="number"?n.flag:0})}let i=new Set;return t.settings=t.settings.filter(n=>!n.key||i.has(n.key)?!1:(i.add(n.key),!0)),await fe(t,r.env),r.json({code:200,message:"success",data:null})});Ue.post("/setting/default",async r=>{let e=r.req.query("group");if(e===void 0)return r.json({code:400,message:"group is required",data:null});let t=parseInt(e,10),i=await ne(r.env);i.settings=(i.settings||[]).filter(o=>o.group!==t);let n=nc.settings.filter(o=>o.group===t),s=new Set(n.map(o=>o.key));return i.settings=i.settings.filter(o=>!s.has(o.key)),i.settings.push(...JSON.parse(JSON.stringify(n))),await fe(i,r.env),r.json({code:200,message:"success",data:n})});Ue.post("/setting/delete",async r=>{let e=r.req.query("key");if(!e)return r.json({code:400,message:"key is required",data:null});let t=await ne(r.env);return t.settings=(t.settings||[]).filter(i=>i.key!==e),await fe(t,r.env),r.json({code:200,message:"success",data:null})});var yo=async(r,e,t=14)=>{let i=await ne(r);i.settings||(i.settings=[]);for(let[n,s]of Object.entries(e)){if(s===void 0)continue;let o=i.settings.findIndex(a=>a.key===n);o!==-1?i.settings[o].value=s:i.settings.push({key:n,value:s,type:"string",help:n,group:t,flag:0})}await fe(i,r)};Ue.post("/setting/set_115",async r=>{let e=await r.req.json().catch(()=>({}));return await yo(r.env,{"115_temp_dir":e.temp_dir||""}),r.json({code:200,message:"success",data:"success"})});Ue.post("/setting/set_115_open",async r=>{let e=await r.req.json().catch(()=>({}));return await yo(r.env,{"115_open_temp_dir":e.temp_dir||""}),r.json({code:200,message:"success",data:"success"})});Ue.post("/setting/set_123_pan",async r=>{let e=await r.req.json().catch(()=>({}));return await yo(r.env,{"123_pan_temp_dir":e.temp_dir||"","123_temp_dir":e.temp_dir||""}),r.json({code:200,message:"success",data:"success"})});Ue.post("/setting/set_123_open",async r=>{let e=await r.req.json().catch(()=>({}));return await yo(r.env,{"123_open_temp_dir":e.temp_dir||"","123_open_callback_url":e.callback_url||""}),r.json({code:200,message:"success",data:"success"})});Ue.post("/setting/set_pikpak",async r=>{let e=await r.req.json().catch(()=>({}));return await yo(r.env,{pikpak_temp_dir:e.temp_dir||""}),r.json({code:200,message:"success",data:"success"})});Ue.post("/setting/set_thunder",async r=>{let e=await r.req.json().catch(()=>({}));return await yo(r.env,{thunder_temp_dir:e.temp_dir||""}),r.json({code:200,message:"success",data:"success"})});Ue.post("/setting/set_thunder_browser",async r=>{let e=await r.req.json().catch(()=>({}));return await yo(r.env,{thunder_browser_temp_dir:e.temp_dir||""}),r.json({code:200,message:"success",data:"success"})});Ue.post("/setting/set_thunderx",async r=>{let e=await r.req.json().catch(()=>({}));return await yo(r.env,{thunderx_temp_dir:e.temp_dir||""}),r.json({code:200,message:"success",data:"success"})});Ue.post("/setting/reset_token",async r=>{let e=Kse(32);await yo(r.env,{token:e});let{resetJwtSecretCache:t}=await Promise.resolve().then(()=>(Di(),NI));return t(),r.json({code:200,message:"success",data:e})});Ue.get("/meta/list",async r=>{let t=(await ne(r.env)).metas||[];return r.json({code:200,message:"success",data:{content:t,total:t.length}})});Ue.get("/meta/get",async r=>{let e=parseInt(r.req.query("id")||"0",10),i=((await ne(r.env)).metas||[]).find(n=>n.id===e);return i?r.json({code:200,message:"success",data:i}):r.json({code:404,message:"meta not found",data:null})});Ue.post("/meta/create",async r=>{let e=await r.req.json().catch(()=>({})),t=await ne(r.env);t.metas||(t.metas=[]);let i="/"+String(e.path||"").split("/").filter(Boolean).join("/");if(!i||i==="/")return r.json({code:400,message:"path is required",data:null});if(t.metas.some(o=>o.path===i))return r.json({code:400,message:"meta already exists",data:null});let n=String(e.hide||"");if(n){let o=X1(n);if(o)return r.json({code:400,message:`invalid hide regex: ${o}`,data:null},400)}let s={id:t.metas.length?Math.max(...t.metas.map(o=>o.id))+1:1,path:i,password:e.password||"",read_users:e.read_users||[],read_users_sub:!!e.read_users_sub,write_users:e.write_users||[],write_users_sub:!!e.write_users_sub,p_sub:!!e.p_sub,write:!!e.write,w_sub:!!e.w_sub,hide:n,h_sub:!!e.h_sub,readme:e.readme||"",r_sub:!!e.r_sub,header:e.header||"",header_sub:!!e.header_sub};return t.metas.push(s),await fe(t,r.env),r.json({code:200,message:"success",data:s})});Ue.post("/meta/update",async r=>{let e=await r.req.json().catch(()=>({})),t=await ne(r.env);t.metas||(t.metas=[]);let i=t.metas.findIndex(o=>o.id===e.id);if(i===-1)return r.json({code:404,message:"meta not found",data:null});let n=e.path!==void 0?"/"+String(e.path).split("/").filter(Boolean).join("/"):t.metas[i].path;if(n&&t.metas.some(o=>o.path===n&&o.id!==e.id))return r.json({code:400,message:"meta already exists",data:null});let s=e.hide!==void 0?String(e.hide):t.metas[i].hide;if(s){let o=X1(s);if(o)return r.json({code:400,message:`invalid hide regex: ${o}`,data:null},400)}return t.metas[i]={...t.metas[i],...n?{path:n}:{},password:e.password!==void 0?e.password:t.metas[i].password,read_users:e.read_users!==void 0?e.read_users:t.metas[i].read_users,read_users_sub:e.read_users_sub!==void 0?!!e.read_users_sub:t.metas[i].read_users_sub,write_users:e.write_users!==void 0?e.write_users:t.metas[i].write_users,write_users_sub:e.write_users_sub!==void 0?!!e.write_users_sub:t.metas[i].write_users_sub,p_sub:e.p_sub!==void 0?!!e.p_sub:t.metas[i].p_sub,write:e.write!==void 0?!!e.write:t.metas[i].write,w_sub:e.w_sub!==void 0?!!e.w_sub:t.metas[i].w_sub,hide:e.hide!==void 0?e.hide:t.metas[i].hide,h_sub:e.h_sub!==void 0?!!e.h_sub:t.metas[i].h_sub,readme:e.readme!==void 0?e.readme:t.metas[i].readme,r_sub:e.r_sub!==void 0?!!e.r_sub:t.metas[i].r_sub,header:e.header!==void 0?e.header:t.metas[i].header,header_sub:e.header_sub!==void 0?!!e.header_sub:t.metas[i].header_sub},await fe(t,r.env),r.json({code:200,message:"success",data:null})});Ue.post("/meta/delete",async r=>{let e=parseInt(r.req.query("id")||"0",10),t=await ne(r.env);return t.metas||(t.metas=[]),t.metas=t.metas.filter(i=>i.id!==e),await fe(t,r.env),r.json({code:200,message:"success",data:null})});Ue.route("/user",Un);Ue.get("/kv/status",async r=>{let[e,t]=await Promise.all([wl(r.env),Hn(r.env)]);return r.json({code:200,message:"success",data:{...e,store:t}})});function zA(r){let e=r.search_index||{};return{obj_count:e.total??0,is_done:e.is_done!==!1,last_done_time:e.updated_at||null,error:e.error||""}}Ue.post("/index/build",async r=>{try{let e=await ne(r.env),t=await Ld({parent:"/",keywords:"",max_depth:20,max_results:2e3},r.env);return e.search_index={items:t.content,total:t.total,is_done:!0,updated_at:new Date().toISOString(),error:""},await fe(e,r.env),r.json({code:200,message:"success",data:zA(e)})}catch(e){return r.json({code:500,message:Ne(e),data:null},500)}});Ue.post("/index/update",async r=>{try{let e=await r.req.json().catch(()=>({})),t=Array.isArray(e.paths)?e.paths:["/"],i=Math.min(20,Math.max(0,Number(e.max_depth)||20)),n=await ne(r.env),o=(n.search_index?.items||[]).filter(c=>!t.some(l=>(c.parent||"/").startsWith(l))),a=await Ld({parent:"/",keywords:"",max_depth:i,max_results:2e3},r.env);return n.search_index={items:[...o,...a.content],total:o.length+a.total,is_done:!0,updated_at:new Date().toISOString(),error:""},await fe(n,r.env),r.json({code:200,message:"success",data:zA(n)})}catch(e){return r.json({code:500,message:Ne(e),data:null},500)}});Ue.post("/index/stop",async r=>{let e=await ne(r.env);return e.search_index&&(e.search_index.is_done=!0),await fe(e,r.env),r.json({code:200,message:"success",data:zA(e)})});Ue.post("/index/clear",async r=>{let e=await ne(r.env);return e.search_index={items:[],total:0,is_done:!0,updated_at:new Date().toISOString(),error:""},await fe(e,r.env),r.json({code:200,message:"success",data:zA(e)})});Ue.get("/index/progress",async r=>{let e=await ne(r.env);return r.json({code:200,message:"success",data:zA(e)})});Ue.post("/scan/start",async r=>{try{let e=await ne(r.env),t=await Ld({parent:"/",keywords:"",max_depth:20,max_results:2e3},r.env);return e.scan_result={items:t.content,total:t.total,is_done:!0,updated_at:new Date().toISOString(),error:""},await fe(e,r.env),r.json({code:200,message:"success",data:{obj_count:t.total,is_done:!0,last_done_time:e.scan_result.updated_at,error:""}})}catch(e){return r.json({code:500,message:Ne(e),data:null},500)}});Ue.post("/scan/stop",async r=>r.json({code:200,message:"success",data:{obj_count:0,is_done:!0,last_done_time:null,error:""}}));Ue.get("/scan/progress",async r=>{let t=(await ne(r.env)).scan_result||{};return r.json({code:200,message:"success",data:{obj_count:t.total??0,is_done:t.is_done!==!1,last_done_time:t.updated_at||null,error:t.error||""}})});Ue.get("/plugin/list",async r=>{let e=await ne(r.env);return e.plugins||(e.plugins=[]),r.json({code:200,message:"success",data:{content:e.plugins,total:e.plugins.length}})});Ue.get("/plugin/get",async r=>{let e=r.req.query("id");if(!e)return r.json({code:400,message:"id is required",data:null});let t=await ne(r.env);t.plugins||(t.plugins=[]);let i=t.plugins.find(n=>n.id===e);return i?r.json({code:200,message:"success",data:i}):r.json({code:404,message:"Plugin not found",data:null})});Ue.post("/plugin/install",async r=>{try{let e=await r.req.json(),t=e;if(e.manifest_url&&typeof e.manifest_url=="string")try{let a=await fetch(e.manifest_url);if(!a.ok)return r.json({code:400,message:`Failed to fetch plugin manifest from URL: HTTP ${a.status}`,data:null});t={...await a.json(),...e}}catch(a){return r.json({code:400,message:`Network error fetching plugin manifest: ${Ne(a,"unexpected network error")}`,data:null})}if(!t.id||!t.name)return r.json({code:400,message:"Plugin id and name are required",data:null});let i=await ne(r.env);i.plugins||(i.plugins=[]);let n=i.plugins.findIndex(a=>a.id===t.id),s=new Date().toISOString(),o={id:t.id,name:t.name,version:t.version||"1.0.0",description:t.description||"",author:t.author||"Unknown",homepage:t.homepage||"",repository:t.repository||"",icon:t.icon||"",type:t.type||"ui",enabled:t.enabled!==void 0?!!t.enabled:!0,high_privilege:!!t.high_privilege,permissions:Array.isArray(t.permissions)?t.permissions:[],entry_url:t.entry_url||"",script_content:t.script_content||"",style_content:t.style_content||"",config_schema:t.config_schema||[],config_values:t.config_values||t.default_config||{},target_hooks:t.target_hooks||["global"],is_builtin:!!t.is_builtin,tags:t.tags||[],created_at:n>=0?i.plugins[n].created_at:s,updated_at:s};return n>=0?i.plugins[n]=o:i.plugins.push(o),await fe(i,r.env),r.json({code:200,message:"Plugin installed successfully",data:o})}catch(e){return r.json({code:500,message:e.message||"Failed to install plugin",data:null})}});Ue.post("/plugin/update",async r=>{try{let e=await r.req.json();if(!e.id)return r.json({code:400,message:"Plugin id is required",data:null});let t=await ne(r.env);t.plugins||(t.plugins=[]);let i=t.plugins.findIndex(o=>o.id===e.id);if(i===-1)return r.json({code:404,message:"Plugin not found",data:null});let n=t.plugins[i],s={...n,...e,id:n.id,updated_at:new Date().toISOString()};return t.plugins[i]=s,await fe(t,r.env),r.json({code:200,message:"Plugin updated successfully",data:s})}catch(e){return r.json({code:500,message:e.message||"Failed to update plugin",data:null})}});Ue.post("/plugin/toggle",async r=>{try{let e=await r.req.json();if(!e.id)return r.json({code:400,message:"Plugin id is required",data:null});let t=await ne(r.env);t.plugins||(t.plugins=[]);let i=t.plugins.findIndex(s=>s.id===e.id);if(i===-1)return r.json({code:404,message:"Plugin not found",data:null});let n=e.enabled!==void 0?!!e.enabled:!t.plugins[i].enabled;return t.plugins[i].enabled=n,t.plugins[i].updated_at=new Date().toISOString(),await fe(t,r.env),r.json({code:200,message:n?"Plugin enabled":"Plugin disabled",data:{id:e.id,enabled:n}})}catch(e){return r.json({code:500,message:e.message||"Failed to toggle plugin",data:null})}});Ue.post("/plugin/delete",async r=>{try{let t=r.req.query("id");if(!t)try{t=(await r.req.json()).id}catch{}if(!t)return r.json({code:400,message:"Plugin id is required",data:null});let i=await ne(r.env);i.plugins||(i.plugins=[]);let n=i.plugins.length;return i.plugins=i.plugins.filter(s=>s.id!==t),i.plugins.length===n?r.json({code:404,message:"Plugin not found",data:null}):(await fe(i,r.env),r.json({code:200,message:"Plugin deleted successfully",data:null}))}catch(e){return r.json({code:500,message:e.message||"Failed to delete plugin",data:null})}});Ue.post("/plugin/batch_save",async r=>{try{let e=await r.req.json(),t=Array.isArray(e)?e:e.plugins;if(!Array.isArray(t))return r.json({code:400,message:"plugins array is required",data:null});let i=await ne(r.env);return i.plugins=t,await fe(i,r.env),r.json({code:200,message:"Plugins saved successfully",data:{count:t.length}})}catch(e){return r.json({code:500,message:e.message||"Failed to batch save plugins",data:null})}});var kq=[];Ue.post("/message/send",async r=>{let t=(await r.req.json().catch(()=>({})))?.message;return t==null||t===""?r.json({code:400,message:"message is required",data:null},400):(kq.push(String(t)),r.json({code:200,message:"success",data:null}))});Ue.post("/message/get",r=>{let e=kq.shift();return e===void 0?r.json({code:404,message:"no message",data:null},404):r.json({code:200,message:"success",data:e})});Ue.get("/audit/logs",async r=>{try{let{queryAuditLogs:e}=await Promise.resolve().then(()=>(pA(),gA)),t=r.req.query("username"),i=r.req.query("action"),n=r.req.query("method"),s=r.req.query("status"),o=r.req.query("start_date"),a=r.req.query("end_date"),c=parseInt(r.req.query("limit")||"100",10),l=e({username:t,action:i,method:n,status:s,startDate:o,endDate:a,limit:Math.min(c,1e3)});return r.json({code:200,message:"success",data:{content:l,total:l.length}})}catch(e){return r.json({code:500,message:e.message||"Failed to query audit logs",data:null},500)}});Ue.get("/audit/stats",async r=>{try{let{getAuditStats:e}=await Promise.resolve().then(()=>(pA(),gA)),t=e();return r.json({code:200,message:"success",data:t})}catch(e){return r.json({code:500,message:e.message||"Failed to get audit stats",data:null},500)}});Ue.post("/audit/cleanup",async r=>{try{let e=await r.req.json().catch(()=>({})),t=parseInt(e.retention_days||"30",10),{cleanupExpiredLogs:i}=await Promise.resolve().then(()=>(pA(),gA));return i(t),r.json({code:200,message:`Cleaned up logs older than ${t} days`,data:null})}catch(e){return r.json({code:500,message:e.message||"Failed to cleanup logs",data:null},500)}});Ve();Ve();function JA(r,e){let t=r.replace(/bytes=/,"").split("-"),i=parseInt(t[0],10),n=t[1]?parseInt(t[1],10):e-1,s=n-i+1;return{start:i,end:n,chunksize:s}}Yt();Sa();oc();var zse="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36";function Sq(r){let e=Jse(r.ignoreHeaders),t={...r.rawUrlHeaders||{}};return!t["User-Agent"]&&!e.has("user-agent")&&(t["User-Agent"]=zse),r.proxyRange&&r.rangeHeader&&!e.has("range")&&(t.Range=r.rangeHeader),t}function Jse(r){let e=Array.isArray(r)?r.join(","):r;return new Set(String(e??"").split(",").map(t=>t.trim().toLowerCase()).filter(Boolean))}function Dq(r,e){return r.Range?e.status===412||e.status===200&&!e.headers.get("content-range"):!1}var jse={pdf:"application/pdf",mp4:"video/mp4",webm:"video/webm",mkv:"video/x-matroska",mp3:"audio/mpeg",flac:"audio/flac",m3u8:"application/vnd.apple.mpegurl",ts:"video/mp2t",png:"image/png",jpg:"image/jpeg",jpeg:"image/jpeg",gif:"image/gif",webp:"image/webp",svg:"image/svg+xml"};function Qq(r){let e=r.split(".").pop()?.toLowerCase()||"";return jse[e]||"application/octet-stream"}function _q(r){return r.replace(/[\r\n\u0000-\u001f]+/g,"")}var $se=6*1024*1024,Vse=(r,e)=>{let i=(r?.env||{})[e];if(i!=null)return String(i);if(typeof process<"u"&&process.env){let n=process.env[e];if(n!=null)return String(n)}return""};function Yse(r){let e=typeof globalThis<"u"?globalThis:{},t=r?.env||{},i=typeof process<"u"?process.env||{}:{};return!!(t.EDGEONE||t.EO_REGION||t.EDGEONE_BLOB||e.EDGEONE_BLOB||typeof e.EdgeOne<"u"||t.TENCENTCLOUD_SCF_FUNCTIONNAME||i.TENCENTCLOUD_SCF_FUNCTIONNAME)}function Is(r){let e=Vse(r,"RAW_PROXY_MAX_BYTES").trim();if(e!==""){let t=parseInt(e,10);if(Number.isFinite(t)&&t>=0)return t}return Yse(r)?$se:0}function Dw(r,e,t){if(!Number.isFinite(t)||t<=0||!Number.isFinite(r)||r<=0)return!1;if(e)try{return JA(e,r).chunksize>t}catch{return!1}return r>t}var Wse=new Set(["authorization","cookie"]);function Xse(r){return r?Object.keys(r).some(e=>Wse.has(e.trim().toLowerCase())):!1}function Fq(r,e,t){return kw(t,r)||Xse(e)}function Pq(r){if(!r)return 0;let e=parseInt(r.get("content-length")||"",10);if(Number.isFinite(e)&&e>0)return e;let t=r.get("content-range")||"",i=/bytes\s+(\d+)-(\d+)\/(\d+|\*)/i.exec(t);if(i){let n=parseInt(i[1],10),s=parseInt(i[2],10);if(Number.isFinite(n)&&Number.isFinite(s)&&s>=n)return s-n+1}return 0}function Kb(r){return Dw(r.size,r.range,r.payloadLimit)?r.authBound?"too-large":"redirect":"proxy"}var _w=null,Qw=null;async function Zse(){if(typeof process<"u"&&process.release?.name==="node"&&!_w)try{_w=await import("fs/promises"),Qw=(await import("fs")).createReadStream}catch{}}var ws=new Xe,eoe=r=>{try{let e=r.executionCtx;return!e||typeof e.waitUntil!="function"?void 0:{waitUntil:t=>e.waitUntil(t)}}catch{return}},toe=new Set(["range","user-agent","accept","accept-language","referer"]);async function Tq(r,e,t){let n=r,s=e;for(let o=0;o<5;o++){try{Gr(n,"Proxy download",t)}catch(l){throw new Error(l?.message||"SSRF blocked: restricted destination")}let a=await fetch(n,{headers:s,redirect:"manual"}),c=a.headers.get("location");if(a.status>=300&&a.status<400&&c){n=new URL(c,n).toString();let l={};for(let[d,u]of Object.entries(s))toe.has(d.toLowerCase())&&u&&(l[d]=u);s=l;continue}return a}throw new Error("Proxy download blocked: too many redirects")}function Fw(r,e,t){let i=Is(r);return`\u6587\u4EF6\u8FC7\u5927\uFF0C\u5F53\u524D\u90E8\u7F72\u5E73\u53F0\u65E0\u6CD5\u4EE3\u7406\u4E0B\u8F7D\uFF08${t} \u5B57\u8282 > \u4E0A\u9650 ${i} \u5B57\u8282 \u2248 ${(s=>Math.floor(s/1024/1024))(i)} MiB\uFF09\u3002\u5F53\u524D\u8FD0\u884C\u73AF\u5883\u5BF9\u51FD\u6570\u5355\u6B21\u8BF7\u6C42/\u54CD\u5E94 body \u6709\u786C\u4E0A\u9650\uFF08EdgeOne \u4E91\u51FD\u6570\u4E3A 6 MiB\uFF0C\u9519\u8BEF\u7801 CLOUD_FUNCTION_PAYLOAD_TOO_LARGE / HTTP 413\uFF09\uFF0C${e} \u65E0\u6CD5\u63D0\u4F9B\u53EF\u76F4\u8FDE\u7684\u4E0B\u8F7D\u94FE\u63A5\uFF08\u6216\u76F4\u94FE\u5FC5\u987B\u643A\u5E26\u79C1\u6709\u9274\u6743\u5934\uFF09\uFF0C\u53EA\u80FD\u7ECF\u670D\u52A1\u7AEF\u8F6C\u53D1\uFF0C\u56E0\u6B64\u65E0\u6CD5\u7ED5\u8FC7\u8BE5\u4E0A\u9650\u3002\u5EFA\u8BAE\uFF1A\u6539\u7528\u8FD4\u56DE\u516C\u5F00\u76F4\u94FE\u7684\u5B58\u50A8\u3001\u6216\u5728\u81EA\u6258\u7BA1\u73AF\u5883\uFF08Docker / Node\uFF09\u90E8\u7F72\uFF1B\u786E\u9700\u653E\u5F00\u9650\u5236\u53EF\u8BBE\u7F6E RAW_PROXY_MAX_BYTES=0\uFF08\u6216\u6309\u5E73\u53F0\u5B9E\u9645\u4E0A\u9650\u8C03\u6574\u8BE5\u503C\uFF09\u3002`}async function Uq(r,e,t,i,n={}){let s=n.proxyRange??!1,o=n.driver??"",a=Fq(o,e.raw_url_headers,n.storage),c=Kb({size:Number(e.size)||0,range:s?r.req.header("Range"):void 0,payloadLimit:Is(r),authBound:a});if(c==="redirect"){try{Gr(e.raw_url,"Redirect download",i)}catch(C){return r.text(C.message||"SSRF blocked",403)}return console.warn(`[rawRouter] Falling back to 302 direct link for '${t}': ${e.size} bytes exceeds the ${Is(r)}-byte payload limit of this runtime \u2014 native proxy would hit CLOUD_FUNCTION_PAYLOAD_TOO_LARGE`),r.redirect(e.raw_url,302)}if(c==="too-large")return console.warn(`[rawRouter] Refusing to proxy '${t}': ${e.size} bytes exceeds the ${Is(r)}-byte payload limit of this runtime and no direct link can be handed to the browser (driver=${o}, authBound=${a})`),r.json({code:413,message:Fw(r,o||"\u8BE5\u5B58\u50A8",Number(e.size)||0),data:null},413);let l=Sq({rawUrlHeaders:e.raw_url_headers,rangeHeader:r.req.header("Range"),proxyRange:s,ignoreHeaders:n.ignoreHeaders}),d;try{d=await Tq(e.raw_url,l,i)}catch(C){return r.text(C.message||"SSRF blocked",403)}Dq(l,d)&&(console.warn(`[rawRouter] Upstream ignored/refused Range (status=${d.status}) for '${t}', retrying without Range header...`),delete l.Range,d=await Tq(e.raw_url,l,i));let u=Pq(d.headers),f=Kb({size:u,payloadLimit:Is(r),authBound:a});if(f!=="proxy"){try{await d.body?.cancel()}catch{}if(console.warn(`[rawRouter] Upstream body is ${u} bytes after Range negotiation (status=${d.status}) for '${t}', which exceeds the ${Is(r)}-byte payload limit of this runtime \u2014 refusing to stream it (decision=${f}).`),f==="redirect"){try{Gr(e.raw_url,"Redirect download",i)}catch(C){return r.text(C.message||"SSRF blocked",403)}return r.redirect(e.raw_url,302)}return r.json({code:413,message:Fw(r,o||"\u8BE5\u5B58\u50A8",u),data:null},413)}r.header("Access-Control-Allow-Origin","*"),r.header("Access-Control-Allow-Methods","GET, OPTIONS, HEAD"),r.header("Access-Control-Expose-Headers","Content-Range, Accept-Ranges, Content-Length, Content-Disposition"),r.header("Content-Type",d.headers.get("content-type")||Qq(t));let h=d.headers.get("content-length");h&&r.header("Content-Length",h);let g=d.headers.get("content-range");g&&r.header("Content-Range",g),r.header("Accept-Ranges",d.headers.get("accept-ranges")||"bytes");let p=d.headers.get("etag");p&&r.header("ETag",p);let I=d.headers.get("last-modified");I&&r.header("Last-Modified",I);let y=d.headers.get("cache-control");y&&r.header("Cache-Control",y);let w=d.headers.get("content-disposition");return w&&r.header("Content-Disposition",_q(w)),r.body(d.body,d.status)}function roe(r,e){if(r.startsWith("/"))return!0;try{let t=new URL(r),i=e.req.header("host")||new URL(e.req.url).host;return t.host===i}catch{return!1}}async function ioe(r,e,t,i){if(!e)return"";let n=encodeURI(t.startsWith("/")?t:"/"+t),s=e.includes("$path")?e.replace(/\$path(?!\w)/g,n):e.replace(/\/+$/,"")+n;if(roe(s,r)&&!Iq(i)&&!/[?&]sign=/.test(s))try{if((await Md(r)).enabled){let a=await IA(r,t,await yA(r));a&&(s+=(s.includes("?")?"&":"?")+"sign="+a)}}catch(o){console.warn(`[rawRouter] failed to sign down_proxy_url for '${t}': ${o?.message||o}`)}return s}ws.get("/*",async r=>{await Zse();let e=r.req.query("proxy")==="true"||r.req.path.startsWith("/p")||r.req.path.startsWith("/api/p")||r.req.path.startsWith("/sd")||r.req.path.startsWith("/api/sd"),t=r.req.path.startsWith("/p")||r.req.path.startsWith("/api/p"),i=r.req.path.replace(/^\/(?:api\/)?(?:raw|sd|d|p)(?=\/|$)/,""),n=decodeURIComponent(i);try{let s=n;if(r.req.path.startsWith("/api/sd")||r.req.path.startsWith("/sd")){let u=(r.req.header("Cookie")||"").split(";").map(p=>p.trim()).find(p=>p.startsWith("browser-password="))?.split("=").slice(1).join("=")||"",f;try{f=u?decodeURIComponent(u):""}catch{f=u}let h=r.req.query("pwd")||f,g=await Ud(s,h,r.env);if(!g.ok)return r.text(g.error||"Share not found",404);if(g.virtualList||!g.realPath)return r.text("Cannot download share root",400);s=g.realPath}else if(await TR(r,s)){let d=r.req.query("sign")||"";if(!await UR(r,s,d))return r.text("sign verify failed",401)}let a=await tt(s);if(a.isVirtual||!a.physical)return r.text("Cannot download virtual directory path",400);if(a.storage){let d=(a.storage.driver||"").toLowerCase().replace(/[^a-z0-9]/g,""),u=await Kn().catch(()=>({})),f=il(u.proxy_types),h=il(u.text_types),g={proxyRange:DR(a.storage),driver:a.storage.driver,storage:a.storage,ignoreHeaders:u.proxy_ignore_headers};if(t&&!Sw({storage:a.storage,driver:d,filename:s,proxyTypes:f,textTypes:h}))return console.warn(`[rawRouter] proxy not allowed for '${s}' (storage=${a.storage.id}, driver=${a.storage.driver})`),r.text("proxy not allowed",403);if(d!=="local")try{let p=oh(a.storage.addition,r.env),I=await lt(a.storage.driver,a.storage),y;try{y=await I.get(s,a.physical)}finally{await Jt(a.storage.driver,a.storage,I,eoe(r))}if(y&&y.raw_url){let w=xq(a.storage,d,e,{filename:s,proxyTypes:f});if(w.mode==="use_proxy_url"){let C=yq(a.storage);if(C){let b=await ioe(r,C,s,a.storage);if(b){try{Gr(b,"Redirect download",p)}catch(x){return r.text(x.message||"SSRF blocked",403)}return console.log(`[rawRouter] Redirecting download for '${s}' to configured proxy url via ${a.storage.driver}`),r.redirect(b,302)}}return console.warn(`[rawRouter] webdav_policy=use_proxy_url but down_proxy_url is empty (storage=${a.storage.id}); falling back to native proxy`),Uq(r,y,s,p,g)}if(w.needsProxy)return Uq(r,y,s,p,g);try{Gr(y.raw_url,"Redirect download",p)}catch(C){return r.text(C.message||"SSRF blocked",403)}return console.log(`[rawRouter] Redirecting download for '${s}' via ${a.storage.driver}`),r.redirect(y.raw_url,302)}else if(typeof I.createReadStream=="function"&&y&&!y.is_dir){let w=Number(y.size)||0;if(Dw(w,r.req.header("Range"),Is(r)))return console.warn(`[rawRouter] Refusing to stream '${s}': ${w} bytes exceeds the ${Is(r)}-byte payload limit of this runtime.`),r.json({code:413,message:Fw(r,a.storage.driver,w),data:null},413);r.header("Access-Control-Allow-Origin","*");let C=y.size||0,b=r.req.header("Range");if(b&&C>0){let{start:x,end:_,chunksize:R}=JA(b,C),U=await I.createReadStream(a.physical,{start:x,end:_});return r.header("Content-Range",`bytes ${x}-${_}/${C}`),r.header("Accept-Ranges","bytes"),r.header("Content-Length",R.toString()),r.header("Content-Type","application/octet-stream"),r.body(U,206)}else{C>0&&r.header("Content-Length",C.toString()),r.header("Accept-Ranges","bytes"),r.header("Content-Type","application/octet-stream");let x=await I.createReadStream(a.physical);return r.body(x)}}else{let w=y?.raw_url_error||(y?.is_dir?"\u8BE5\u6761\u76EE\u662F\u6587\u4EF6\u5939\uFF0C\u4E0D\u53EF\u4F5C\u4E3A\u6587\u4EF6\u4E0B\u8F7D\u3002":"\u8BE5\u5B58\u50A8\u9A71\u52A8\u672A\u8FD4\u56DE\u4E0B\u8F7D\u94FE\u63A5\uFF08raw_url \u4E3A\u7A7A\uFF09\u3002");return r.text(`File not found or no download link available: ${s} -${w}`,404)}}catch(p){return console.error(`[rawRouter] Driver get failed for '${s}':`,p.message),r.text(`Download failed: ${Ne(p)}`,500)}}if(!_w||!Qw)return r.text("Local file streaming not supported in Edge Runtime",500);let c=await _w.stat(a.physical);if(c.isDirectory())return r.text("Cannot download directory",400);if(Dw(Number(c.size)||0,r.req.header("Range"),Is(r)))return r.json({code:413,message:Fw(r,"local",Number(c.size)||0),data:null},413);r.header("Access-Control-Allow-Origin","*");let l=r.req.header("Range");if(l){let{start:d,end:u,chunksize:f}=JA(l,c.size),h=Qw(a.physical,{start:d,end:u});return r.header("Content-Range",`bytes ${d}-${u}/${c.size}`),r.header("Accept-Ranges","bytes"),r.header("Content-Length",f.toString()),r.header("Content-Type","application/octet-stream"),r.body(h,206)}else{r.header("Content-Length",c.size.toString()),r.header("Accept-Ranges","bytes");let d=Qw(a.physical);return r.body(d)}}catch(s){return console.error(`[rawRouter] Download 404 for '${n}':`,s.message),r.text(`Not found: ${Ne(s,"file not found")}`,404)}});Ve();ec();var Io=new Xe,Nq="https://doc.oplist.org",Pw=`${Nq}/ecosystem/official_worker/guide_env`,Rq=`${Nq}/ecosystem/official_worker/guide`;function noe(r){if(r==null)return"unknown error";let e=String(r);e=e.split(` -`)[0].trim(),e=e.replace(/(\w+:\/\/)[^/@\s]+@/g,"$1***@"),e=e.replace(/\b(token|secret|password|passwd|pwd|api[_-]?key)\s*[=:]\s*\S+/gi,"$1=***");let t=160;return e.length>t?e.slice(0,t)+"\u2026":e}Io.get("/env_check",async r=>{let e=r.env,t=G0(e),i=z0(e),n=_s(e),s=await Hn(e).catch(p=>({driver:"none",format:"none",available:!1,configError:String(p?.message||p)})),o=String(s?.driver??"none"),a=o==="memory",c=o!=="none"&&o!=="",l=!!s?.configError,d=s?.available!==!1,u=c&&!a&&!l&&d,f=await ih(e).catch(()=>!1),h=[];a?h.push({code:"STORAGE_MEMORY_ONLY",level:n?"error":"warning",message:n?"In-memory storage only; data will be lost immediately.":"In-memory storage only; data will be lost on restart (fine for local dev).",docUrl:Pw}):c||h.push({code:"STORAGE_UNAVAILABLE",level:"error",message:"No storage backend available.",docUrl:Pw}),l&&h.push({code:"STORAGE_CONFIG_ERROR",level:"error",message:"Storage driver is not configured correctly.",docUrl:Rq}),c&&!a&&!l&&!d&&h.push({code:"STORAGE_UNHEALTHY",level:"error",message:`Storage driver "${o}" is configured but not reachable${s.error?": "+noe(s.error):""}.`,docUrl:Rq}),f||h.push({code:"JWT_SECRET_MISSING",level:n?"error":"warning",message:"JWT_SECRET is not set.",docUrl:Pw});let g=u&&f;return r.json({code:200,message:"success",data:{runtime:{serverless:n,platform:s?.platform??null},config:{db_format:i,db_driver:t,resolved_driver:s?.driver??null,resolved_format:s?.format??null},storage:{available:u,configured:s?.configured??null,connected:s?.connected??null,platform:s?.platform??null,memory:a},jwt:{ready:f,source:f?"env-or-persisted":"none"},ready:g,issues:h,docUrl:Pw}})});Io.get("/settings",async r=>{let e=await ne(r.env),t={title:"OpenList",site_title:"OpenList",version:"v4.2.3",backend:"ts-worker",announcement:"",pagination_type:"pagination",default_page_size:"20",allow_indexed:"false",allow_mounted:"true",robots_txt:`User-agent: * -Allow: /`,logo:"https://res.oplist.org/logo/logo.svg",favicon:"https://res.oplist.org/logo/logo.svg",main_color:"#1890ff",hide_storage_details:"false",hide_storage_details_in_manage_page:"false",customize_head:"",customize_body:"",text_types:"txt,htm,html,xml,java,properties,sql,js,md,json,conf,ini,vue,php,py,bat,gitignore,yml,yaml,toml,Makefile,mk,dockerfile,sh,pub,lock,gradle,ts,tsx,jsx,go,rs,c,cpp,h,cs,rb,swift,kt,dart,r,m,pl,pm,lua,ex,exs",audio_types:"mp3,flac,ogg,m4a,wav,opus,wma,aac,aiff,ape",video_types:"mp4,mkv,avi,mov,rmvb,webm,flv,m3u8,ts,wmv,m2ts,mpg,mpeg,3gp",image_types:"jpg,tiff,jpeg,png,gif,bmp,svg,ico,webp,avif,heic,heif,raw,cr2,nef,arw,dng",proxy_types:"",proxy_ignore_headers:"",audio_autoplay:"false",video_autoplay:"false",readme_autorender:"true",filter_readme_scripts:"true",preview_download_by_default:"false",preview_archives_by_default:"false",share_preview_download_by_default:"false",share_preview_archives_by_default:"false",share_preview:"true",share_archive_preview:"true",hide_files:"/\\.DS_Store/i",link_expiration:"0",sign_all:"false",filename_char_mapping:"{}",forward_direct_link_params:"false",ignore_direct_link_params:"",package_download:"true",offline_download:"true",ocr_api:"",privacy_regs:"",iframe_previews:"{}",external_previews:"{}",check_down_link:"false",check_update:"false",allow_guest:"true",webauthn_login_enabled:"false",sso_login_enabled:"false",sso_compatibility_mode:"false",ldap_login_enabled:"false",show_disk_usage_in_plain_text:"false",non_efs_zip_encoding:"UTF-8"},i=new Set([...Object.keys(t),"audio_cover","home_container","ldap_login_tips","search_index","settings_layout","share_icon","share_summary_content","sso_login_platform"]),n=/(secret|password|passwd|pwd|cookie|token|credential|private[_-]?key|api[_-]?key|access[_-]?key|jwt|salt|signature|webhook)/i;e.settings.forEach(a=>{if(a.key&&a.value!==void 0){if(!i.has(a.key)||n.test(a.key))return;t[a.key]=a.value,a.key==="site_title"&&(t.title=a.value)}});let s=(e.users||[]).find(a=>a.username==="guest");return!!!(s&&!s.disabled)||t.allow_guest==="false"?t.allow_guest="false":t.allow_guest="true",r.json({code:200,message:"success",data:t})});Io.get("/archive_extensions",r=>r.json({code:200,message:"success",data:["zip","rar","7z","tar","gz","bz2","xz","tar.gz","tar.bz2","tar.xz"]}));Io.get("/offline_download_tools",r=>r.json({code:200,message:"success",data:[]}));Io.get("/plugins",async r=>{let i=((await ne(r.env)).plugins||[]).filter(n=>n.enabled);return r.json({code:200,message:"success",data:i})});Io.get("/init_status",async r=>{let e=await Tx(r.env),t=!1;if(e){let s=((await ne(r.env)).users||[]).find(o=>o.role===2);t=!!(s&&String(s.password||"").trim()!=="")}let i=t?await ih(r.env):!1;return r.json({code:200,message:"success",data:{initialized:t,ready:i,db_trusted:th()}})});Io.post("/init/setup",async r=>{let e=await r.req.json().catch(()=>({})),t=String(e.username||"admin").trim(),i=String(e.password||"").trim(),n=String(e.site_title||"").trim();if(!t)return r.json({code:400,message:"username is required",data:null},400);if(!i)return r.json({code:400,message:"password is required",data:null},400);if(i.length<4)return r.json({code:400,message:"password must be at least 4 characters",data:null},400);let s=await ne(r.env);if(s.users||(s.users=[]),!th())return console.error("[DB] init/setup rejected: database could not be loaded from the persistence backend"),r.json({code:500,message:"database is not readable; refusing to initialize to avoid overwriting existing config",data:null},500);let o=s.users.find(a=>a.role===2);if(o&&String(o.password||"").trim()!=="")return r.json({code:400,message:"system has already been initialized",data:null},400);if(await Kx(r.env),o)o.username=t,await _i(o,i);else{let a={id:1,username:t,password:"",role:2,permission:0,base_path:"/",disabled:!1,sso_id:"",allow_ldap:!1,pwd_update_at:new Date().toISOString()};await _i(a,i),s.users.push(a)}if(n){s.settings||(s.settings=[]);let a=s.settings.find(c=>c.key==="site_title");a?a.value=n:s.settings.push({key:"site_title",value:n,type:"string",help:"Site Title",group:1,flag:0})}return await fe(s,r.env,{force:!0}),r.json({code:200,message:"success",data:null})});function soe(){return[{name:"list_files",description:"List files and directories in OpenList storage",inputSchema:{type:"object",properties:{path:{type:"string",description:"Storage mount path"}}}},{name:"get_system_info",description:"Fetch server hardware and storage metrics",inputSchema:{type:"object",properties:{}}}]}function ooe(){return[{uri:"openlist://storage/metrics",name:"Storage Metrics",mimeType:"application/json",description:"Current storage metrics of OpenList"}]}function aoe(){return[{name:"summarize_directory",description:"Prompt to summarize contents of a folder",arguments:[{name:"path",description:"The folder path",required:!0}]}]}async function coe(r,e,t,i){try{if(e==="list_files"){let{listItems:n}=await Promise.resolve().then(()=>(Yt(),Ni)),s=t?.path||"/",{content:o,provider:a}=await n(s),c=o.map(l=>({name:l.name,size:l.size,is_dir:l.is_dir,modified:l.modified}));return{jsonrpc:"2.0",result:{content:[{type:"text",text:JSON.stringify({path:s,provider:a,files:c},null,2)}],isError:!1},id:r}}if(e==="get_system_info"){let{getDb:n}=await Promise.resolve().then(()=>(Ve(),Kr)),s=await n(i);return{jsonrpc:"2.0",result:{content:[{type:"text",text:JSON.stringify({storages:s?.storages?.length??0,users:s?.users?.length??0,metas:s?.metas?.length??0,shares:s?.shares?.length??0},null,2)}],isError:!1},id:r}}return{jsonrpc:"2.0",error:{code:-32602,message:`Unknown tool: ${e}`},id:r}}catch(n){return{jsonrpc:"2.0",result:{content:[{type:"text",text:String(n?.message||n)}],isError:!0},id:r}}}async function qq(r,e,t,i){switch(r){case"tools/list":return{jsonrpc:"2.0",result:{tools:soe()},id:e};case"tools/call":{let n=t?.name,s=t?.arguments||{};return n?coe(e,n,s,i):{jsonrpc:"2.0",error:{code:-32602,message:"Missing tool name"},id:e}}case"resources/list":return{jsonrpc:"2.0",result:{resources:ooe()},id:e};case"prompts/list":return{jsonrpc:"2.0",result:{prompts:aoe()},id:e};default:return{jsonrpc:"2.0",error:{code:-32601,message:"Method not found"},id:e}}}Di();var jA=new Xe;jA.use("*",Qi);jA.get("/sse",r=>(r.header("Content-Type","text/event-stream"),r.header("Cache-Control","no-cache"),r.header("Connection","keep-alive"),r.text(`event: endpoint +Up`,required:!1},{name:"modified_time_format",type:"string",default:"02-Jan-2006 15:04",required:!1}],config:{name:"AutoIndex",local_sort:!0,only_local:!1,only_proxy:!1,no_cache:!1,no_upload:!0,need_ms:!1,default_root:""}},ProtonDrive:{name:"ProtonDrive",default_mount_path:"/proton",common:[...Ft,Pt,Tt,Ut,...Rt("ProtonDrive"),Nt,er],additional:[{name:"email",type:"string",default:"",required:!0,help:"Proton \u8D26\u53F7\u90AE\u7BB1"},{name:"password",type:"string",default:"",required:!0,help:"Proton \u8D26\u53F7\u5BC6\u7801"},{name:"two_fa_code",type:"string",default:"",required:!1,help:"\u4E24\u6B65\u9A8C\u8BC1\u7801\uFF08\u5982\u5DF2\u542F\u7528 2FA\uFF09"},{name:"root_folder_id",type:"string",default:"root",required:!1,help:"\u6839\u6587\u4EF6\u5939 LinkID\uFF0C\u9ED8\u8BA4 root \u8868\u793A\u4E3B\u5171\u4EAB\u6839\u76EE\u5F55"},{name:"chunk_size",type:"number",default:"4",required:!1,help:"\u5206\u5757\u5927\u5C0F\uFF08MB\uFF09"},{name:"use_reusable_login",type:"bool",default:"true",required:!1}],config:{name:"ProtonDrive",local_sort:!0,only_local:!1,only_proxy:!0,no_cache:!1,no_upload:!0,need_ms:!1,default_root:"root"}}};Ue.get("/driver/list",r=>r.json({code:200,message:"success",data:fu}));Ue.get("/driver/info",r=>{let e=r.req.query("driver")||"",t=fu[e]||fu.AliyundriveOpen;return r.json({code:200,message:"success",data:t})});Ue.get("/setting/list",async r=>{let e=await ne(r.env),t=r.req.query("group"),i=r.req.query("groups"),n=e.settings||[];if(t!==void 0){let s=parseInt(t,10);n=n.filter(o=>o.group===s)}else if(i!==void 0){let s=i.split(",").map(o=>parseInt(o,10));n=n.filter(o=>s.includes(o.group))}return r.json({code:200,message:"success",data:n})});Ue.post("/setting/save",async r=>{let e=await r.req.json().catch(()=>[]);if(!Array.isArray(e))return r.json({code:400,message:"body must be an array",data:null});let t=await ne(r.env);t.settings||(t.settings=[]);for(let n of e){if(!n||typeof n!="object"||Array.isArray(n))continue;let s=n.key;if(typeof s!="string"||s.length===0||s.length>128)continue;let o=n.value;o!==null&&typeof o=="object"&&(o=JSON.stringify(o));let a=t.settings.findIndex(c=>c.key===s);a!==-1?(t.settings[a].value=o,typeof n.group=="number"&&(t.settings[a].group=n.group)):t.settings.push({key:s,value:o,type:typeof n.type=="string"?n.type:"string",help:typeof n.help=="string"?n.help:"",group:typeof n.group=="number"?n.group:0,flag:typeof n.flag=="number"?n.flag:0})}let i=new Set;return t.settings=t.settings.filter(n=>!n.key||i.has(n.key)?!1:(i.add(n.key),!0)),await fe(t,r.env),r.json({code:200,message:"success",data:null})});Ue.post("/setting/default",async r=>{let e=r.req.query("group");if(e===void 0)return r.json({code:400,message:"group is required",data:null});let t=parseInt(e,10),i=await ne(r.env);i.settings=(i.settings||[]).filter(o=>o.group!==t);let n=ac.settings.filter(o=>o.group===t),s=new Set(n.map(o=>o.key));return i.settings=i.settings.filter(o=>!s.has(o.key)),i.settings.push(...JSON.parse(JSON.stringify(n))),await fe(i,r.env),r.json({code:200,message:"success",data:n})});Ue.post("/setting/delete",async r=>{let e=r.req.query("key");if(!e)return r.json({code:400,message:"key is required",data:null});let t=await ne(r.env);return t.settings=(t.settings||[]).filter(i=>i.key!==e),await fe(t,r.env),r.json({code:200,message:"success",data:null})});var Io=async(r,e,t=14)=>{let i=await ne(r);i.settings||(i.settings=[]);for(let[n,s]of Object.entries(e)){if(s===void 0)continue;let o=i.settings.findIndex(a=>a.key===n);o!==-1?i.settings[o].value=s:i.settings.push({key:n,value:s,type:"string",help:n,group:t,flag:0})}await fe(i,r)};Ue.post("/setting/set_115",async r=>{let e=await r.req.json().catch(()=>({}));return await Io(r.env,{"115_temp_dir":e.temp_dir||""}),r.json({code:200,message:"success",data:"success"})});Ue.post("/setting/set_115_open",async r=>{let e=await r.req.json().catch(()=>({}));return await Io(r.env,{"115_open_temp_dir":e.temp_dir||""}),r.json({code:200,message:"success",data:"success"})});Ue.post("/setting/set_123_pan",async r=>{let e=await r.req.json().catch(()=>({}));return await Io(r.env,{"123_pan_temp_dir":e.temp_dir||"","123_temp_dir":e.temp_dir||""}),r.json({code:200,message:"success",data:"success"})});Ue.post("/setting/set_123_open",async r=>{let e=await r.req.json().catch(()=>({}));return await Io(r.env,{"123_open_temp_dir":e.temp_dir||"","123_open_callback_url":e.callback_url||""}),r.json({code:200,message:"success",data:"success"})});Ue.post("/setting/set_pikpak",async r=>{let e=await r.req.json().catch(()=>({}));return await Io(r.env,{pikpak_temp_dir:e.temp_dir||""}),r.json({code:200,message:"success",data:"success"})});Ue.post("/setting/set_thunder",async r=>{let e=await r.req.json().catch(()=>({}));return await Io(r.env,{thunder_temp_dir:e.temp_dir||""}),r.json({code:200,message:"success",data:"success"})});Ue.post("/setting/set_thunder_browser",async r=>{let e=await r.req.json().catch(()=>({}));return await Io(r.env,{thunder_browser_temp_dir:e.temp_dir||""}),r.json({code:200,message:"success",data:"success"})});Ue.post("/setting/set_thunderx",async r=>{let e=await r.req.json().catch(()=>({}));return await Io(r.env,{thunderx_temp_dir:e.temp_dir||""}),r.json({code:200,message:"success",data:"success"})});Ue.post("/setting/reset_token",async r=>{let e=Poe(32);await Io(r.env,{token:e});let{resetJwtSecretCache:t}=await Promise.resolve().then(()=>(Qi(),VI));return t(),r.json({code:200,message:"success",data:e})});Ue.get("/meta/list",async r=>{let t=(await ne(r.env)).metas||[];return r.json({code:200,message:"success",data:{content:t,total:t.length}})});Ue.get("/meta/get",async r=>{let e=parseInt(r.req.query("id")||"0",10),i=((await ne(r.env)).metas||[]).find(n=>n.id===e);return i?r.json({code:200,message:"success",data:i}):r.json({code:404,message:"meta not found",data:null})});Ue.post("/meta/create",async r=>{let e=await r.req.json().catch(()=>({})),t=await ne(r.env);t.metas||(t.metas=[]);let i="/"+String(e.path||"").split("/").filter(Boolean).join("/");if(!i||i==="/")return r.json({code:400,message:"path is required",data:null});if(t.metas.some(o=>o.path===i))return r.json({code:400,message:"meta already exists",data:null});let n=String(e.hide||"");if(n){let o=p2(n);if(o)return r.json({code:400,message:`invalid hide regex: ${o}`,data:null},400)}let s={id:t.metas.length?Math.max(...t.metas.map(o=>o.id))+1:1,path:i,password:e.password||"",read_users:e.read_users||[],read_users_sub:!!e.read_users_sub,write_users:e.write_users||[],write_users_sub:!!e.write_users_sub,p_sub:!!e.p_sub,write:!!e.write,w_sub:!!e.w_sub,hide:n,h_sub:!!e.h_sub,readme:e.readme||"",r_sub:!!e.r_sub,header:e.header||"",header_sub:!!e.header_sub};return t.metas.push(s),await fe(t,r.env),r.json({code:200,message:"success",data:s})});Ue.post("/meta/update",async r=>{let e=await r.req.json().catch(()=>({})),t=await ne(r.env);t.metas||(t.metas=[]);let i=t.metas.findIndex(o=>o.id===e.id);if(i===-1)return r.json({code:404,message:"meta not found",data:null});let n=e.path!==void 0?"/"+String(e.path).split("/").filter(Boolean).join("/"):t.metas[i].path;if(n&&t.metas.some(o=>o.path===n&&o.id!==e.id))return r.json({code:400,message:"meta already exists",data:null});let s=e.hide!==void 0?String(e.hide):t.metas[i].hide;if(s){let o=p2(s);if(o)return r.json({code:400,message:`invalid hide regex: ${o}`,data:null},400)}return t.metas[i]={...t.metas[i],...n?{path:n}:{},password:e.password!==void 0?e.password:t.metas[i].password,read_users:e.read_users!==void 0?e.read_users:t.metas[i].read_users,read_users_sub:e.read_users_sub!==void 0?!!e.read_users_sub:t.metas[i].read_users_sub,write_users:e.write_users!==void 0?e.write_users:t.metas[i].write_users,write_users_sub:e.write_users_sub!==void 0?!!e.write_users_sub:t.metas[i].write_users_sub,p_sub:e.p_sub!==void 0?!!e.p_sub:t.metas[i].p_sub,write:e.write!==void 0?!!e.write:t.metas[i].write,w_sub:e.w_sub!==void 0?!!e.w_sub:t.metas[i].w_sub,hide:e.hide!==void 0?e.hide:t.metas[i].hide,h_sub:e.h_sub!==void 0?!!e.h_sub:t.metas[i].h_sub,readme:e.readme!==void 0?e.readme:t.metas[i].readme,r_sub:e.r_sub!==void 0?!!e.r_sub:t.metas[i].r_sub,header:e.header!==void 0?e.header:t.metas[i].header,header_sub:e.header_sub!==void 0?!!e.header_sub:t.metas[i].header_sub},await fe(t,r.env),r.json({code:200,message:"success",data:null})});Ue.post("/meta/delete",async r=>{let e=parseInt(r.req.query("id")||"0",10),t=await ne(r.env);return t.metas||(t.metas=[]),t.metas=t.metas.filter(i=>i.id!==e),await fe(t,r.env),r.json({code:200,message:"success",data:null})});Ue.route("/user",qn);Ue.get("/kv/status",async r=>{let[e,t]=await Promise.all([bl(r.env),Jn(r.env)]);return r.json({code:200,message:"success",data:{...e,store:t}})});function e0(r){let e=r.search_index||{};return{obj_count:e.total??0,is_done:e.is_done!==!1,last_done_time:e.updated_at||null,error:e.error||""}}Ue.post("/index/build",async r=>{try{let e=await ne(r.env),t=await Jd({parent:"/",keywords:"",max_depth:20,max_results:2e3},r.env);return e.search_index={items:t.content,total:t.total,is_done:!0,updated_at:new Date().toISOString(),error:""},await fe(e,r.env),r.json({code:200,message:"success",data:e0(e)})}catch(e){return r.json({code:500,message:Ne(e),data:null},500)}});Ue.post("/index/update",async r=>{try{let e=await r.req.json().catch(()=>({})),t=Array.isArray(e.paths)?e.paths:["/"],i=Math.min(20,Math.max(0,Number(e.max_depth)||20)),n=await ne(r.env),o=(n.search_index?.items||[]).filter(c=>!t.some(l=>(c.parent||"/").startsWith(l))),a=await Jd({parent:"/",keywords:"",max_depth:i,max_results:2e3},r.env);return n.search_index={items:[...o,...a.content],total:o.length+a.total,is_done:!0,updated_at:new Date().toISOString(),error:""},await fe(n,r.env),r.json({code:200,message:"success",data:e0(n)})}catch(e){return r.json({code:500,message:Ne(e),data:null},500)}});Ue.post("/index/stop",async r=>{let e=await ne(r.env);return e.search_index&&(e.search_index.is_done=!0),await fe(e,r.env),r.json({code:200,message:"success",data:e0(e)})});Ue.post("/index/clear",async r=>{let e=await ne(r.env);return e.search_index={items:[],total:0,is_done:!0,updated_at:new Date().toISOString(),error:""},await fe(e,r.env),r.json({code:200,message:"success",data:e0(e)})});Ue.get("/index/progress",async r=>{let e=await ne(r.env);return r.json({code:200,message:"success",data:e0(e)})});Ue.post("/scan/start",async r=>{try{let e=await ne(r.env),t=await Jd({parent:"/",keywords:"",max_depth:20,max_results:2e3},r.env);return e.scan_result={items:t.content,total:t.total,is_done:!0,updated_at:new Date().toISOString(),error:""},await fe(e,r.env),r.json({code:200,message:"success",data:{obj_count:t.total,is_done:!0,last_done_time:e.scan_result.updated_at,error:""}})}catch(e){return r.json({code:500,message:Ne(e),data:null},500)}});Ue.post("/scan/stop",async r=>r.json({code:200,message:"success",data:{obj_count:0,is_done:!0,last_done_time:null,error:""}}));Ue.get("/scan/progress",async r=>{let t=(await ne(r.env)).scan_result||{};return r.json({code:200,message:"success",data:{obj_count:t.total??0,is_done:t.is_done!==!1,last_done_time:t.updated_at||null,error:t.error||""}})});Ue.get("/plugin/list",async r=>{let e=await ne(r.env);return e.plugins||(e.plugins=[]),r.json({code:200,message:"success",data:{content:e.plugins,total:e.plugins.length}})});Ue.get("/plugin/get",async r=>{let e=r.req.query("id");if(!e)return r.json({code:400,message:"id is required",data:null});let t=await ne(r.env);t.plugins||(t.plugins=[]);let i=t.plugins.find(n=>n.id===e);return i?r.json({code:200,message:"success",data:i}):r.json({code:404,message:"Plugin not found",data:null})});Ue.post("/plugin/install",async r=>{try{let e=await r.req.json(),t=e;if(e.manifest_url&&typeof e.manifest_url=="string")try{let a=await fetch(e.manifest_url);if(!a.ok)return r.json({code:400,message:`Failed to fetch plugin manifest from URL: HTTP ${a.status}`,data:null});t={...await a.json(),...e}}catch(a){return r.json({code:400,message:`Network error fetching plugin manifest: ${Ne(a,"unexpected network error")}`,data:null})}if(!t.id||!t.name)return r.json({code:400,message:"Plugin id and name are required",data:null});let i=await ne(r.env);i.plugins||(i.plugins=[]);let n=i.plugins.findIndex(a=>a.id===t.id),s=new Date().toISOString(),o={id:t.id,name:t.name,version:t.version||"1.0.0",description:t.description||"",author:t.author||"Unknown",homepage:t.homepage||"",repository:t.repository||"",icon:t.icon||"",type:t.type||"ui",enabled:t.enabled!==void 0?!!t.enabled:!0,high_privilege:!!t.high_privilege,permissions:Array.isArray(t.permissions)?t.permissions:[],entry_url:t.entry_url||"",script_content:t.script_content||"",style_content:t.style_content||"",config_schema:t.config_schema||[],config_values:t.config_values||t.default_config||{},target_hooks:t.target_hooks||["global"],is_builtin:!!t.is_builtin,tags:t.tags||[],created_at:n>=0?i.plugins[n].created_at:s,updated_at:s};return n>=0?i.plugins[n]=o:i.plugins.push(o),await fe(i,r.env),r.json({code:200,message:"Plugin installed successfully",data:o})}catch(e){return r.json({code:500,message:e.message||"Failed to install plugin",data:null})}});Ue.post("/plugin/update",async r=>{try{let e=await r.req.json();if(!e.id)return r.json({code:400,message:"Plugin id is required",data:null});let t=await ne(r.env);t.plugins||(t.plugins=[]);let i=t.plugins.findIndex(o=>o.id===e.id);if(i===-1)return r.json({code:404,message:"Plugin not found",data:null});let n=t.plugins[i],s={...n,...e,id:n.id,updated_at:new Date().toISOString()};return t.plugins[i]=s,await fe(t,r.env),r.json({code:200,message:"Plugin updated successfully",data:s})}catch(e){return r.json({code:500,message:e.message||"Failed to update plugin",data:null})}});Ue.post("/plugin/toggle",async r=>{try{let e=await r.req.json();if(!e.id)return r.json({code:400,message:"Plugin id is required",data:null});let t=await ne(r.env);t.plugins||(t.plugins=[]);let i=t.plugins.findIndex(s=>s.id===e.id);if(i===-1)return r.json({code:404,message:"Plugin not found",data:null});let n=e.enabled!==void 0?!!e.enabled:!t.plugins[i].enabled;return t.plugins[i].enabled=n,t.plugins[i].updated_at=new Date().toISOString(),await fe(t,r.env),r.json({code:200,message:n?"Plugin enabled":"Plugin disabled",data:{id:e.id,enabled:n}})}catch(e){return r.json({code:500,message:e.message||"Failed to toggle plugin",data:null})}});Ue.post("/plugin/delete",async r=>{try{let t=r.req.query("id");if(!t)try{t=(await r.req.json()).id}catch{}if(!t)return r.json({code:400,message:"Plugin id is required",data:null});let i=await ne(r.env);i.plugins||(i.plugins=[]);let n=i.plugins.length;return i.plugins=i.plugins.filter(s=>s.id!==t),i.plugins.length===n?r.json({code:404,message:"Plugin not found",data:null}):(await fe(i,r.env),r.json({code:200,message:"Plugin deleted successfully",data:null}))}catch(e){return r.json({code:500,message:e.message||"Failed to delete plugin",data:null})}});Ue.post("/plugin/batch_save",async r=>{try{let e=await r.req.json(),t=Array.isArray(e)?e:e.plugins;if(!Array.isArray(t))return r.json({code:400,message:"plugins array is required",data:null});let i=await ne(r.env);return i.plugins=t,await fe(i,r.env),r.json({code:200,message:"Plugins saved successfully",data:{count:t.length}})}catch(e){return r.json({code:500,message:e.message||"Failed to batch save plugins",data:null})}});var lO=[];Ue.post("/message/send",async r=>{let t=(await r.req.json().catch(()=>({})))?.message;return t==null||t===""?r.json({code:400,message:"message is required",data:null},400):(lO.push(String(t)),r.json({code:200,message:"success",data:null}))});Ue.post("/message/get",r=>{let e=lO.shift();return e===void 0?r.json({code:404,message:"no message",data:null},404):r.json({code:200,message:"success",data:e})});Ue.get("/audit/logs",async r=>{try{let{queryAuditLogs:e}=await Promise.resolve().then(()=>(kA(),vA)),t=r.req.query("username"),i=r.req.query("action"),n=r.req.query("method"),s=r.req.query("status"),o=r.req.query("start_date"),a=r.req.query("end_date"),c=parseInt(r.req.query("limit")||"100",10),l=e({username:t,action:i,method:n,status:s,startDate:o,endDate:a,limit:Math.min(c,1e3)});return r.json({code:200,message:"success",data:{content:l,total:l.length}})}catch(e){return r.json({code:500,message:e.message||"Failed to query audit logs",data:null},500)}});Ue.get("/audit/stats",async r=>{try{let{getAuditStats:e}=await Promise.resolve().then(()=>(kA(),vA)),t=e();return r.json({code:200,message:"success",data:t})}catch(e){return r.json({code:500,message:e.message||"Failed to get audit stats",data:null},500)}});Ue.post("/audit/cleanup",async r=>{try{let e=await r.req.json().catch(()=>({})),t=parseInt(e.retention_days||"30",10),{cleanupExpiredLogs:i}=await Promise.resolve().then(()=>(kA(),vA));return i(t),r.json({code:200,message:`Cleaned up logs older than ${t} days`,data:null})}catch(e){return r.json({code:500,message:e.message||"Failed to cleanup logs",data:null},500)}});wr();Ve();Ve();function t0(r,e){let t=r.replace(/bytes=/,"").split("-"),i=parseInt(t[0],10),n=t[1]?parseInt(t[1],10):e-1,s=n-i+1;return{start:i,end:n,chunksize:s}}Yt();Da();lc();var Uoe="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36";function dO(r){let e=Roe(r.ignoreHeaders),t={...r.rawUrlHeaders||{}};return!t["User-Agent"]&&!e.has("user-agent")&&(t["User-Agent"]=Uoe),r.proxyRange&&r.rangeHeader&&!e.has("range")&&(t.Range=r.rangeHeader),t}function Roe(r){let e=Array.isArray(r)?r.join(","):r;return new Set(String(e??"").split(",").map(t=>t.trim().toLowerCase()).filter(Boolean))}function uO(r,e){return r.Range?e.status===412||e.status===200&&!e.headers.get("content-range"):!1}var Noe={pdf:"application/pdf",mp4:"video/mp4",webm:"video/webm",mkv:"video/x-matroska",mp3:"audio/mpeg",flac:"audio/flac",m3u8:"application/vnd.apple.mpegurl",ts:"video/mp2t",png:"image/png",jpg:"image/jpeg",jpeg:"image/jpeg",gif:"image/gif",webp:"image/webp",svg:"image/svg+xml"};function fO(r){let e=r.split(".").pop()?.toLowerCase()||"";return Noe[e]||"application/octet-stream"}function AO(r){return r.replace(/[\r\n\u0000-\u001f]+/g,"")}var qoe=6*1024*1024,Ooe=(r,e)=>{let i=(r?.env||{})[e];if(i!=null)return String(i);if(typeof process<"u"&&process.env){let n=process.env[e];if(n!=null)return String(n)}return""};function Moe(r){let e=typeof globalThis<"u"?globalThis:{},t=r?.env||{},i=typeof process<"u"?process.env||{}:{};return!!(t.EDGEONE||t.EO_REGION||t.EDGEONE_BLOB||e.EDGEONE_BLOB||typeof e.EdgeOne<"u"||t.TENCENTCLOUD_SCF_FUNCTIONNAME||i.TENCENTCLOUD_SCF_FUNCTIONNAME)}function Cs(r){let e=Ooe(r,"RAW_PROXY_MAX_BYTES").trim();if(e!==""){let t=parseInt(e,10);if(Number.isFinite(t)&&t>=0)return t}return Moe(r)?qoe:0}function Kw(r,e,t){if(!Number.isFinite(t)||t<=0||!Number.isFinite(r)||r<=0)return!1;if(e)try{return t0(e,r).chunksize>t}catch{return!1}return r>t}var Loe=new Set(["authorization","cookie"]);function Hoe(r){return r?Object.keys(r).some(e=>Loe.has(e.trim().toLowerCase())):!1}function hO(r,e,t){return Lw(t,r)||Hoe(e)}function gO(r){if(!r)return 0;let e=parseInt(r.get("content-length")||"",10);if(Number.isFinite(e)&&e>0)return e;let t=r.get("content-range")||"",i=/bytes\s+(\d+)-(\d+)\/(\d+|\*)/i.exec(t);if(i){let n=parseInt(i[1],10),s=parseInt(i[2],10);if(Number.isFinite(n)&&Number.isFinite(s)&&s>=n)return s-n+1}return 0}function ov(r){return Kw(r.size,r.range,r.payloadLimit)?r.authBound?"too-large":"redirect":"proxy"}var zw=null,Gw=null;async function Koe(){if(typeof process<"u"&&process.release?.name==="node"&&!zw)try{zw=await import("fs/promises"),Gw=(await import("fs")).createReadStream}catch{}}var Es=new Xe,Goe=r=>{try{let e=r.executionCtx;return!e||typeof e.waitUntil!="function"?void 0:{waitUntil:t=>e.waitUntil(t)}}catch{return}},zoe=new Set(["range","user-agent","accept","accept-language","referer"]);async function pO(r,e,t){let n=r,s=e;for(let o=0;o<5;o++){try{zr(n,"Proxy download",t)}catch(l){throw new Error(l?.message||"SSRF blocked: restricted destination")}let a=await fetch(n,{headers:s,redirect:"manual"}),c=a.headers.get("location");if(a.status>=300&&a.status<400&&c){n=new URL(c,n).toString();let l={};for(let[d,u]of Object.entries(s))zoe.has(d.toLowerCase())&&u&&(l[d]=u);s=l;continue}return a}throw new Error("Proxy download blocked: too many redirects")}function Jw(r,e,t){let i=Cs(r);return`\u6587\u4EF6\u8FC7\u5927\uFF0C\u5F53\u524D\u90E8\u7F72\u5E73\u53F0\u65E0\u6CD5\u4EE3\u7406\u4E0B\u8F7D\uFF08${t} \u5B57\u8282 > \u4E0A\u9650 ${i} \u5B57\u8282 \u2248 ${(s=>Math.floor(s/1024/1024))(i)} MiB\uFF09\u3002\u5F53\u524D\u8FD0\u884C\u73AF\u5883\u5BF9\u51FD\u6570\u5355\u6B21\u8BF7\u6C42/\u54CD\u5E94 body \u6709\u786C\u4E0A\u9650\uFF08EdgeOne \u4E91\u51FD\u6570\u4E3A 6 MiB\uFF0C\u9519\u8BEF\u7801 CLOUD_FUNCTION_PAYLOAD_TOO_LARGE / HTTP 413\uFF09\uFF0C${e} \u65E0\u6CD5\u63D0\u4F9B\u53EF\u76F4\u8FDE\u7684\u4E0B\u8F7D\u94FE\u63A5\uFF08\u6216\u76F4\u94FE\u5FC5\u987B\u643A\u5E26\u79C1\u6709\u9274\u6743\u5934\uFF09\uFF0C\u53EA\u80FD\u7ECF\u670D\u52A1\u7AEF\u8F6C\u53D1\uFF0C\u56E0\u6B64\u65E0\u6CD5\u7ED5\u8FC7\u8BE5\u4E0A\u9650\u3002\u5EFA\u8BAE\uFF1A\u6539\u7528\u8FD4\u56DE\u516C\u5F00\u76F4\u94FE\u7684\u5B58\u50A8\u3001\u6216\u5728\u81EA\u6258\u7BA1\u73AF\u5883\uFF08Docker / Node\uFF09\u90E8\u7F72\uFF1B\u786E\u9700\u653E\u5F00\u9650\u5236\u53EF\u8BBE\u7F6E RAW_PROXY_MAX_BYTES=0\uFF08\u6216\u6309\u5E73\u53F0\u5B9E\u9645\u4E0A\u9650\u8C03\u6574\u8BE5\u503C\uFF09\u3002`}async function mO(r,e,t,i,n={}){let s=n.proxyRange??!1,o=n.driver??"",a=hO(o,e.raw_url_headers,n.storage),c=ov({size:Number(e.size)||0,range:s?r.req.header("Range"):void 0,payloadLimit:Cs(r),authBound:a});if(c==="redirect"){try{zr(e.raw_url,"Redirect download",i)}catch(C){return r.text(C.message||"SSRF blocked",403)}return console.warn(`[rawRouter] Falling back to 302 direct link for '${t}': ${e.size} bytes exceeds the ${Cs(r)}-byte payload limit of this runtime \u2014 native proxy would hit CLOUD_FUNCTION_PAYLOAD_TOO_LARGE`),r.redirect(e.raw_url,302)}if(c==="too-large")return console.warn(`[rawRouter] Refusing to proxy '${t}': ${e.size} bytes exceeds the ${Cs(r)}-byte payload limit of this runtime and no direct link can be handed to the browser (driver=${o}, authBound=${a})`),r.json({code:413,message:Jw(r,o||"\u8BE5\u5B58\u50A8",Number(e.size)||0),data:null},413);let l=dO({rawUrlHeaders:e.raw_url_headers,rangeHeader:r.req.header("Range"),proxyRange:s,ignoreHeaders:n.ignoreHeaders}),d;try{d=await pO(e.raw_url,l,i)}catch(C){return r.text(C.message||"SSRF blocked",403)}uO(l,d)&&(console.warn(`[rawRouter] Upstream ignored/refused Range (status=${d.status}) for '${t}', retrying without Range header...`),delete l.Range,d=await pO(e.raw_url,l,i));let u=gO(d.headers),f=ov({size:u,payloadLimit:Cs(r),authBound:a});if(f!=="proxy"){try{await d.body?.cancel()}catch{}if(console.warn(`[rawRouter] Upstream body is ${u} bytes after Range negotiation (status=${d.status}) for '${t}', which exceeds the ${Cs(r)}-byte payload limit of this runtime \u2014 refusing to stream it (decision=${f}).`),f==="redirect"){try{zr(e.raw_url,"Redirect download",i)}catch(C){return r.text(C.message||"SSRF blocked",403)}return r.redirect(e.raw_url,302)}return r.json({code:413,message:Jw(r,o||"\u8BE5\u5B58\u50A8",u),data:null},413)}r.header("Access-Control-Allow-Origin","*"),r.header("Access-Control-Allow-Methods","GET, OPTIONS, HEAD"),r.header("Access-Control-Expose-Headers","Content-Range, Accept-Ranges, Content-Length, Content-Disposition"),r.header("Content-Type",d.headers.get("content-type")||fO(t));let h=d.headers.get("content-length");h&&r.header("Content-Length",h);let g=d.headers.get("content-range");g&&r.header("Content-Range",g),r.header("Accept-Ranges",d.headers.get("accept-ranges")||"bytes");let p=d.headers.get("etag");p&&r.header("ETag",p);let I=d.headers.get("last-modified");I&&r.header("Last-Modified",I);let y=d.headers.get("cache-control");y&&r.header("Cache-Control",y);let w=d.headers.get("content-disposition");return w&&r.header("Content-Disposition",AO(w)),r.body(d.body,d.status)}function Joe(r,e){if(r.startsWith("/"))return!0;try{let t=new URL(r),i=e.req.header("host")||new URL(e.req.url).host;return t.host===i}catch{return!1}}async function joe(r,e,t,i){if(!e)return"";let n=encodeURI(t.startsWith("/")?t:"/"+t),s=e.includes("$path")?e.replace(/\$path(?!\w)/g,n):e.replace(/\/+$/,"")+n;if(Joe(s,r)&&!tO(i)&&!/[?&]sign=/.test(s))try{if((await zd(r)).enabled){let a=await QA(r,t,await DA(r));a&&(s+=(s.includes("?")?"&":"?")+"sign="+a)}}catch(o){console.warn(`[rawRouter] failed to sign down_proxy_url for '${t}': ${o?.message||o}`)}return s}Es.get("/*",async r=>{await Koe();let e=r.req.query("proxy")==="true"||r.req.path.startsWith("/p")||r.req.path.startsWith("/api/p")||r.req.path.startsWith("/sd")||r.req.path.startsWith("/api/sd"),t=r.req.path.startsWith("/p")||r.req.path.startsWith("/api/p"),i=r.req.path.replace(/^\/(?:api\/)?(?:raw|sd|d|p)(?=\/|$)/,""),n=decodeURIComponent(i);try{let s=n;if(r.req.path.startsWith("/api/sd")||r.req.path.startsWith("/sd")){let u=(r.req.header("Cookie")||"").split(";").map(p=>p.trim()).find(p=>p.startsWith("browser-password="))?.split("=").slice(1).join("=")||"",f;try{f=u?decodeURIComponent(u):""}catch{f=u}let h=r.req.query("pwd")||f,g=await Md(s,h,r.env);if(!g.ok)return r.text(g.error||"Share not found",404);if(g.virtualList||!g.realPath)return r.text("Cannot download share root",400);s=g.realPath}else if(await uN(r,s)){let d=r.req.query("sign")||"";if(!await fN(r,s,d))return r.text("sign verify failed",401)}let a=await tt(s);if(a.isVirtual||!a.physical)return r.text("Cannot download virtual directory path",400);if(a.storage){let d=(a.storage.driver||"").toLowerCase().replace(/[^a-z0-9]/g,""),u=await jn().catch(()=>({})),f=al(u.proxy_types),h=al(u.text_types),g={proxyRange:oN(a.storage),driver:a.storage.driver,storage:a.storage,ignoreHeaders:u.proxy_ignore_headers};if(t&&!Hw({storage:a.storage,driver:d,filename:s,proxyTypes:f,textTypes:h}))return console.warn(`[rawRouter] proxy not allowed for '${s}' (storage=${a.storage.id}, driver=${a.storage.driver})`),r.text("proxy not allowed",403);if(d!=="local")try{let p=yh(a.storage.addition,r.env),I=await lt(a.storage.driver,a.storage),y;try{y=await I.get(s,a.physical)}finally{await Jt(a.storage.driver,a.storage,I,Goe(r))}if(y&&y.raw_url){let w=iO(a.storage,d,e,{filename:s,proxyTypes:f});if(w.mode==="use_proxy_url"){let C=eO(a.storage);if(C){let b=await joe(r,C,s,a.storage);if(b){try{zr(b,"Redirect download",p)}catch(x){return r.text(x.message||"SSRF blocked",403)}return console.log(`[rawRouter] Redirecting download for '${s}' to configured proxy url via ${a.storage.driver}`),r.redirect(b,302)}}return console.warn(`[rawRouter] webdav_policy=use_proxy_url but down_proxy_url is empty (storage=${a.storage.id}); falling back to native proxy`),mO(r,y,s,p,g)}if(w.needsProxy)return mO(r,y,s,p,g);try{zr(y.raw_url,"Redirect download",p)}catch(C){return r.text(C.message||"SSRF blocked",403)}return console.log(`[rawRouter] Redirecting download for '${s}' via ${a.storage.driver}`),r.redirect(y.raw_url,302)}else if(typeof I.createReadStream=="function"&&y&&!y.is_dir){let w=Number(y.size)||0;if(Kw(w,r.req.header("Range"),Cs(r)))return console.warn(`[rawRouter] Refusing to stream '${s}': ${w} bytes exceeds the ${Cs(r)}-byte payload limit of this runtime.`),r.json({code:413,message:Jw(r,a.storage.driver,w),data:null},413);r.header("Access-Control-Allow-Origin","*");let C=y.size||0,b=r.req.header("Range");if(b&&C>0){let{start:x,end:_,chunksize:R}=t0(b,C),U=await I.createReadStream(a.physical,{start:x,end:_});return r.header("Content-Range",`bytes ${x}-${_}/${C}`),r.header("Accept-Ranges","bytes"),r.header("Content-Length",R.toString()),r.header("Content-Type","application/octet-stream"),r.body(U,206)}else{C>0&&r.header("Content-Length",C.toString()),r.header("Accept-Ranges","bytes"),r.header("Content-Type","application/octet-stream");let x=await I.createReadStream(a.physical);return r.body(x)}}else{let w=y?.raw_url_error||(y?.is_dir?"\u8BE5\u6761\u76EE\u662F\u6587\u4EF6\u5939\uFF0C\u4E0D\u53EF\u4F5C\u4E3A\u6587\u4EF6\u4E0B\u8F7D\u3002":"\u8BE5\u5B58\u50A8\u9A71\u52A8\u672A\u8FD4\u56DE\u4E0B\u8F7D\u94FE\u63A5\uFF08raw_url \u4E3A\u7A7A\uFF09\u3002");return r.text(`File not found or no download link available: ${s} +${w}`,404)}}catch(p){return console.error(`[rawRouter] Driver get failed for '${s}':`,p.message),r.text(`Download failed: ${Ne(p)}`,500)}}if(!zw||!Gw)return r.text("Local file streaming not supported in Edge Runtime",500);let c=await zw.stat(a.physical);if(c.isDirectory())return r.text("Cannot download directory",400);if(Kw(Number(c.size)||0,r.req.header("Range"),Cs(r)))return r.json({code:413,message:Jw(r,"local",Number(c.size)||0),data:null},413);r.header("Access-Control-Allow-Origin","*");let l=r.req.header("Range");if(l){let{start:d,end:u,chunksize:f}=t0(l,c.size),h=Gw(a.physical,{start:d,end:u});return r.header("Content-Range",`bytes ${d}-${u}/${c.size}`),r.header("Accept-Ranges","bytes"),r.header("Content-Length",f.toString()),r.header("Content-Type","application/octet-stream"),r.body(h,206)}else{r.header("Content-Length",c.size.toString()),r.header("Accept-Ranges","bytes");let d=Gw(a.physical);return r.body(d)}}catch(s){return console.error(`[rawRouter] Download 404 for '${n}':`,s.message),r.text(`Not found: ${Ne(s,"file not found")}`,404)}});wr();Ve();ic();XA();function yO(r){let e=String(r).trim();e=e.replace(/(\w+:\/\/)[^/@\s]+@/g,"$1***@"),e=e.replace(/\b(token|secret|password|passwd|pwd|api[_-]?key)\s*[=:]\s*\S+/gi,"$1=***");let t=160;return e.length>t?e.slice(0,t)+"\u2026":e}var $oe=new Set(["INVALID_COMBINATION","DRIVER_UNAVAILABLE","UNKNOWN_DRIVER","NO_STORAGE","PROXY_CONFIG","DRIVER_ERROR"]);function r0(r){return r&&$oe.has(r)?3:1}function Au(r){if(r==null)return null;let e=String(r).split(` +`).map(t=>t.trim()).find(t=>t.length>0);return e?yO(e):null}function ll(r,e=1){if(r==null)return"unknown error";let t=String(r).split(` +`).map(i=>i.trim()).filter(Boolean).slice(0,Math.max(1,e)).map(yO);return t.length?t.join(" "):"unknown error"}function IO(r){return{reason:r.message?ll(r.message,r0(r.code)):null,suggestion:r.suggestion}}var wo=new Xe,CO="https://doc.oplist.org",i0=`${CO}/ecosystem/official_worker/guide_env`,wO=`${CO}/ecosystem/official_worker/guide`;function xO(r){let e=String(r??"").trim();return e&&e!=="none"?e:null}wo.get("/env_check",async r=>{let e=r.env,t=rh(e),i=ih(e),n=zn(e),s=await Jn(e).catch(I=>({driver:"none",format:"none",available:!1,configError:String(I?.message||I)})),o=String(s?.driver??"none"),a=o==="memory",c=o!=="none"&&o!=="",l=!!s?.configError,d=s?.available!==!1,u=c&&!a&&!l&&d,f=await gh(e).catch(()=>!1),h=[],g={code:null,summary:null,message:null,suggestion:null};if(l){let I=await rc(e,{silent:!0});g={code:I.code,summary:Au(I.message),message:I.message,suggestion:I.suggestion}}if(l&&g.code==="NO_STORAGE")h.push({code:"STORAGE_UNAVAILABLE",level:"error",summary:"No storage backend available.",message:"No storage backend available.",docUrl:i0,suggestion:g.suggestion||"Bind a storage backend (D1 / KV / Blob) or set DB_DRIVER=auto."});else if(l){let I=g.code==="INVALID_COMBINATION",y=ll(g.message||s?.configError,r0(g.code));h.push({code:I?"STORAGE_INVALID_COMBINATION":"STORAGE_CONFIG_ERROR",level:"error",summary:g.summary||(I?"Unsupported storage combination.":"Storage driver is not configured correctly."),message:I?`Unsupported storage combination: ${y}`:`Storage driver is not configured correctly: ${y}`,docUrl:wO,suggestion:g.suggestion})}else a?h.push({code:"STORAGE_MEMORY_ONLY",level:n?"error":"warning",summary:n?"In-memory storage only; data will be lost immediately.":"In-memory storage only; data will be lost on restart (fine for local dev).",message:n?"In-memory storage only; data will be lost immediately.":"In-memory storage only; data will be lost on restart (fine for local dev).",docUrl:i0,suggestion:"Bind a storage backend (D1 / KV / Blob) or set DB_DRIVER=auto."}):c||h.push({code:"STORAGE_UNAVAILABLE",level:"error",summary:"No storage backend available.",message:"No storage backend available.",docUrl:i0,suggestion:"Bind a storage backend (D1 / KV / Blob) or set DB_DRIVER=auto."});if(c&&!a&&!l&&!d){let I=`Storage driver "${o}" is configured but not reachable${s.error?": "+ll(s.error):""}.`;h.push({code:"STORAGE_UNHEALTHY",level:"error",summary:I,message:I,docUrl:wO,suggestion:"Check the credentials/bindings of the configured driver, or set DB_DRIVER=auto."})}f||h.push({code:"JWT_SECRET_MISSING",level:n?"error":"warning",summary:"JWT_SECRET is not set.",message:"JWT_SECRET is not set.",docUrl:i0,suggestion:"Set JWT_SECRET (>=32 chars, `openssl rand -hex 32`) in your deployment variables."});let p=u&&f;return r.json({code:200,message:"success",data:{runtime:{serverless:n,platform:s?.platform??null},config:{db_format:i,db_driver:t,resolved_driver:xO(s?.driver),resolved_format:xO(s?.format)},storage:{available:u,configured:s?.configured??null,connected:s?.connected??null,platform:s?.platform??null,memory:a,error_code:g.code,summary:g.summary,error_message:g.message!==null?ll(g.message,r0(g.code)):null,suggestion:g.suggestion},jwt:{ready:f,source:f?"env-or-persisted":"none"},ready:p,issues:h,docUrl:i0}})});wo.get("/settings",async r=>{let e=await ne(r.env),t={title:"OpenList",site_title:"OpenList",version:"v4.2.3",backend:"ts-worker",announcement:"",pagination_type:"pagination",default_page_size:"20",allow_indexed:"false",allow_mounted:"true",robots_txt:`User-agent: * +Allow: /`,logo:"https://res.oplist.org/logo/logo.svg",favicon:"https://res.oplist.org/logo/logo.svg",main_color:"#1890ff",hide_storage_details:"false",hide_storage_details_in_manage_page:"false",customize_head:"",customize_body:"",text_types:"txt,htm,html,xml,java,properties,sql,js,md,json,conf,ini,vue,php,py,bat,gitignore,yml,yaml,toml,Makefile,mk,dockerfile,sh,pub,lock,gradle,ts,tsx,jsx,go,rs,c,cpp,h,cs,rb,swift,kt,dart,r,m,pl,pm,lua,ex,exs",audio_types:"mp3,flac,ogg,m4a,wav,opus,wma,aac,aiff,ape",video_types:"mp4,mkv,avi,mov,rmvb,webm,flv,m3u8,ts,wmv,m2ts,mpg,mpeg,3gp",image_types:"jpg,tiff,jpeg,png,gif,bmp,svg,ico,webp,avif,heic,heif,raw,cr2,nef,arw,dng",proxy_types:"",proxy_ignore_headers:"",audio_autoplay:"false",video_autoplay:"false",readme_autorender:"true",filter_readme_scripts:"true",preview_download_by_default:"false",preview_archives_by_default:"false",share_preview_download_by_default:"false",share_preview_archives_by_default:"false",share_preview:"true",share_archive_preview:"true",hide_files:"/\\.DS_Store/i",link_expiration:"0",sign_all:"false",filename_char_mapping:"{}",forward_direct_link_params:"false",ignore_direct_link_params:"",package_download:"true",offline_download:"true",ocr_api:"",privacy_regs:"",iframe_previews:"{}",external_previews:"{}",check_down_link:"false",check_update:"false",allow_guest:"true",webauthn_login_enabled:"false",sso_login_enabled:"false",sso_compatibility_mode:"false",ldap_login_enabled:"false",show_disk_usage_in_plain_text:"false",non_efs_zip_encoding:"UTF-8"},i=new Set([...Object.keys(t),"audio_cover","home_container","ldap_login_tips","search_index","settings_layout","share_icon","share_summary_content","sso_login_platform"]),n=/(secret|password|passwd|pwd|cookie|token|credential|private[_-]?key|api[_-]?key|access[_-]?key|jwt|salt|signature|webhook)/i;e.settings.forEach(a=>{if(a.key&&a.value!==void 0){if(!i.has(a.key)||n.test(a.key))return;t[a.key]=a.value,a.key==="site_title"&&(t.title=a.value)}});let s=(e.users||[]).find(a=>a.username==="guest");return!!!(s&&!s.disabled)||t.allow_guest==="false"?t.allow_guest="false":t.allow_guest="true",r.json({code:200,message:"success",data:t})});wo.get("/archive_extensions",r=>r.json({code:200,message:"success",data:["zip","rar","7z","tar","gz","bz2","xz","tar.gz","tar.bz2","tar.xz"]}));wo.get("/offline_download_tools",r=>r.json({code:200,message:"success",data:[]}));wo.get("/plugins",async r=>{let i=((await ne(r.env)).plugins||[]).filter(n=>n.enabled);return r.json({code:200,message:"success",data:i})});function Voe(r){let e=r?.ADMIN_PASS,t=typeof process<"u"?process.env?.ADMIN_PASS:"";return String(e||t||"").trim()!==""}wo.get("/init_status",async r=>{let e=await Xx(r.env),t=!1;if(e){if(Voe(r.env))try{let{getOrInitUsers:l}=await Promise.resolve().then(()=>(sl(),$q));await l(r.env)}catch(l){console.warn("[DB] init_status: ADMIN_PASS auto-initialization failed: "+(l?.message||l))}let c=((await ne(r.env)).users||[]).find(l=>l.role===2);t=!!(c&&String(c.password||"").trim()!=="")}let i=t?await gh(r.env):!1,n=null,s=null;if(!e){let a=await rc(r.env,{silent:!0});n=Au(a.message),s=a.suggestion}let o=Ah();return r.json({code:200,message:"success",data:{initialized:t,ready:i,db_trusted:nC(),storage_error:n,storage_suggestion:s,db_load_error:o?ll(o,1):null}})});wo.post("/init/setup",async r=>{let e=await r.req.json().catch(()=>({})),t=String(e.username||"admin").trim(),i=String(e.password||"").trim(),n=String(e.site_title||"").trim();if(!t)return r.json({code:400,message:"username is required",data:null},400);if(!i)return r.json({code:400,message:"password is required",data:null},400);if(i.length<4)return r.json({code:400,message:"password must be at least 4 characters",data:null},400);let s=await ne(r.env);s.users||(s.users=[]);let o=Ah();if(o){console.error("[DB] init/setup rejected: database could not be loaded from the persistence backend: "+o);let c=await rc(r.env,{silent:!0}),l=c.code||"STORAGE_READ_FAILED";return r.json({code:500,message:"database is not readable; refusing to initialize to avoid overwriting existing config",data:{code:l,summary:Au(o),reason:ll(o,r0(l)),suggestion:c.suggestion}},500)}let a=s.users.find(c=>c.role===2);if(a&&String(a.password||"").trim()!=="")return r.json({code:400,message:"system has already been initialized",data:null},400);if(await aC(r.env),a)a.username=t,await Fi(a,i);else{let c={id:1,username:t,password:"",role:2,permission:0,base_path:"/",disabled:!1,sso_id:"",allow_ldap:!1,pwd_update_at:new Date().toISOString()};await Fi(c,i),s.users.push(c)}if(n){s.settings||(s.settings=[]);let c=s.settings.find(l=>l.key==="site_title");c?c.value=n:s.settings.push({key:"site_title",value:n,type:"string",help:"Site Title",group:1,flag:0})}return await fe(s,r.env,{force:!0}),r.json({code:200,message:"success",data:null})});wr();function Yoe(){return[{name:"list_files",description:"List files and directories in OpenList storage",inputSchema:{type:"object",properties:{path:{type:"string",description:"Storage mount path"}}}},{name:"get_system_info",description:"Fetch server hardware and storage metrics",inputSchema:{type:"object",properties:{}}}]}function Woe(){return[{uri:"openlist://storage/metrics",name:"Storage Metrics",mimeType:"application/json",description:"Current storage metrics of OpenList"}]}function Xoe(){return[{name:"summarize_directory",description:"Prompt to summarize contents of a folder",arguments:[{name:"path",description:"The folder path",required:!0}]}]}async function Zoe(r,e,t,i){try{if(e==="list_files"){let{listItems:n}=await Promise.resolve().then(()=>(Yt(),qi)),s=t?.path||"/",{content:o,provider:a}=await n(s),c=o.map(l=>({name:l.name,size:l.size,is_dir:l.is_dir,modified:l.modified}));return{jsonrpc:"2.0",result:{content:[{type:"text",text:JSON.stringify({path:s,provider:a,files:c},null,2)}],isError:!1},id:r}}if(e==="get_system_info"){let{getDb:n}=await Promise.resolve().then(()=>(Ve(),Gr)),s=await n(i);return{jsonrpc:"2.0",result:{content:[{type:"text",text:JSON.stringify({storages:s?.storages?.length??0,users:s?.users?.length??0,metas:s?.metas?.length??0,shares:s?.shares?.length??0},null,2)}],isError:!1},id:r}}return{jsonrpc:"2.0",error:{code:-32602,message:`Unknown tool: ${e}`},id:r}}catch(n){return{jsonrpc:"2.0",result:{content:[{type:"text",text:String(n?.message||n)}],isError:!0},id:r}}}async function EO(r,e,t,i){switch(r){case"tools/list":return{jsonrpc:"2.0",result:{tools:Yoe()},id:e};case"tools/call":{let n=t?.name,s=t?.arguments||{};return n?Zoe(e,n,s,i):{jsonrpc:"2.0",error:{code:-32602,message:"Missing tool name"},id:e}}case"resources/list":return{jsonrpc:"2.0",result:{resources:Woe()},id:e};case"prompts/list":return{jsonrpc:"2.0",result:{prompts:Xoe()},id:e};default:return{jsonrpc:"2.0",error:{code:-32601,message:"Method not found"},id:e}}}Qi();var n0=new Xe;n0.use("*",_i);n0.get("/sse",r=>(r.header("Content-Type","text/event-stream"),r.header("Cache-Control","no-cache"),r.header("Connection","keep-alive"),r.text(`event: endpoint data: /api/mcp/messages -`)));jA.post("/messages",async r=>{let e=await r.req.json().catch(()=>({})),{method:t,id:i,params:n}=e;if(!t)return r.json({jsonrpc:"2.0",error:{code:-32600,message:"Invalid Request"},id:i||null},400);let s=await qq(t,i,n,r.env),o=s.error?404:200;return r.json(s,o)});Ve();hA();var Gb=new Xe;Gb.get("/info",async r=>{let e=await qd(r),t=await ne(r.env),i={runtime:"Cloudflare Workers / Edge",timestamp:new Date().toISOString(),store:await Hn(r.env)};return e&&(i.db_state={storages_count:t.storages?.length||0,users_count:t.users?.length||0,metas_count:t.metas?.length||0,settings_count:t.settings?.length||0}),r.json({code:200,message:"OpenList debug profile generated",data:i})});Ve();Di();var Zr=new Xe;function loe(r){let t=(r||"").replace(/\\/g,"/").replace(/\/+/g,"/").split("/").filter(i=>i&&i!==".");if(t.some(i=>i===".."))throw new Error("Path traversal segment '..' is not allowed");return"/"+t.join("/")}Zr.use("/list",Qi);Zr.use("/get",Qi);Zr.use("/update",Qi);Zr.use("/delete",Qi);Zr.use("/cancel",Qi);Zr.use("/enable",Qi);Zr.use("/disable",Qi);Zr.get("/list",async r=>{let t=(await ne(r.env)).shares||[];return r.json({code:200,message:"success",data:{content:t,total:t.length}})});Zr.get("/get",async r=>{let e=r.req.query("id")||"",i=((await ne(r.env)).shares||[]).find(n=>n.id===e);return i?r.json({code:200,message:"success",data:i}):r.json({code:404,message:"share not found",data:null})});Zr.post("/create",async r=>{let e=await Me(r);if(!e||e.disabled)return r.json({code:401,message:"Unauthorized",data:null},401);if(!As(e)&&!Qa(e,Da.SHARE))return r.json({code:403,message:"Permission denied",data:null},403);let t=await r.req.json().catch(()=>({})),i=await ne(r.env),n=[];if(Array.isArray(t.files))try{n=t.files.map(c=>{let l=loe(String(c));return As(e)?l:We(e,l)})}catch(c){return r.json({code:400,message:c.message||"Invalid file path",data:null},400)}let s=t.id?String(t.id).trim():"";if(s&&!/^[a-zA-Z0-9_-]{1,64}$/.test(s))return r.json({code:400,message:"Invalid share id format (only alphanumeric, _ and - allowed, max 64 chars)",data:null},400);let o=s||doe();if((i.shares||[]).some(c=>c.id===o))return r.json({code:400,message:"share id already exists",data:null},400);let a={id:o,new_id:t.new_id||o,creator:t.creator||e.username||"user",creator_role:t.creator_role!==void 0?t.creator_role:e.role??1,accessed:t.accessed??0,expires:t.expires||null,pwd:t.pwd||"",max_accessed:t.max_accessed??0,disabled:t.disabled??!1,order_by:t.order_by||"",order_direction:t.order_direction||"",extract_folder:t.extract_folder||"",files:n,remark:t.remark||"",readme:t.readme||"",header:t.header||""};return i.shares||(i.shares=[]),i.shares.push(a),await fe(i,r.env),r.json({code:200,message:"success",data:a})});function doe(){return crypto.randomUUID().replace(/-/g,"").slice(0,16)}Zr.post("/update",async r=>{let e=await r.req.json().catch(()=>({})),t=await ne(r.env);if(!e.id)return r.json({code:400,message:"share id is required",data:null});let i=(t.shares||[]).findIndex(s=>s.id===e.id);if(i===-1)return r.json({code:404,message:"share not found",data:null});let n=e.new_id&&String(e.new_id).trim()!==""?String(e.new_id).trim():e.id;return n!==e.id&&(t.shares||[]).some(o=>o.id===n&&o.id!==e.id)?r.json({code:400,message:"share id already exists",data:null}):(t.shares[i]={...t.shares[i],id:n,new_id:n,expires:e.expires!==void 0?e.expires:t.shares[i].expires,pwd:e.pwd!==void 0?e.pwd:t.shares[i].pwd,max_accessed:e.max_accessed!==void 0?e.max_accessed:t.shares[i].max_accessed,disabled:e.disabled!==void 0?e.disabled:t.shares[i].disabled,order_by:e.order_by!==void 0?e.order_by:t.shares[i].order_by,order_direction:e.order_direction!==void 0?e.order_direction:t.shares[i].order_direction,extract_folder:e.extract_folder!==void 0?e.extract_folder:t.shares[i].extract_folder,files:e.files!==void 0?e.files:t.shares[i].files,remark:e.remark!==void 0?e.remark:t.shares[i].remark,readme:e.readme!==void 0?e.readme:t.shares[i].readme,header:e.header!==void 0?e.header:t.shares[i].header},await fe(t,r.env),r.json({code:200,message:"success",data:null}))});Zr.post("/delete",async r=>{let e=r.req.query("id")||"",t=await ne(r.env);return t.shares||(t.shares=[]),t.shares=t.shares.filter(i=>i.id!==e),await fe(t,r.env),r.json({code:200,message:"success",data:null})});Zr.post("/enable",async r=>{let e=r.req.query("id")||"",t=await ne(r.env),i=(t.shares||[]).find(n=>n.id===e);return i&&(i.disabled=!1,await fe(t,r.env)),r.json({code:200,message:"success",data:null})});Zr.post("/disable",async r=>{let e=r.req.query("id")||"",t=await ne(r.env),i=(t.shares||[]).find(n=>n.id===e);return i&&(i.disabled=!0,await fe(t,r.env)),r.json({code:200,message:"success",data:null})});Ve();Yt();Di();var Fi=new Xe;Fi.all("/refresh",async(r,e)=>await G1(r)?e():Qi(r,e),async r=>{let e=await ne(r.env),t=0,i=0,n=[];for(let s of e.storages||[])if(!s.disabled)try{let o=await lt(s.driver,s);if(await o.init?.(),typeof o.checkCookieValid=="function"&&/lanzou/i.test(String(s.driver))){let a=await o.checkCookieValid();if(!a.valid){s.status="cookie_expired",i++,n.push({id:s.id,mount_path:s.mount_path,driver:s.driver,status:"cookie_expired",error:a.error||"Cookie expired"});continue}}s.status="work",t++,n.push({id:s.id,mount_path:s.mount_path,driver:s.driver,status:"ok"})}catch(o){i++,n.push({id:s.id,mount_path:s.mount_path,driver:s.driver,status:"failed",error:o?.message||String(o)})}return await fe(e,r.env),i>0?r.json({code:500,message:`token refresh failed: ${i}/${t+i} storage(s) failed`,data:{refreshed:t,failed:i,total:e.storages?.length||0,results:n}},500):r.json({code:200,message:"token refresh executed",data:{refreshed:t,failed:i,total:e.storages?.length||0,results:n}})});var sl={upload:[],copy:[],move:[],offline_download:[]};Fi.use("*",Qi);Fi.get("/:type/:state",r=>{let e=r.req.param("type"),t=r.req.param("state"),n=(sl[e]||[]).filter(s=>t==="done"?s.done:!s.done);return r.json({code:200,message:"success",data:n})});Fi.post("/:type/clear_done",r=>{let e=r.req.param("type");return sl[e]&&(sl[e]=sl[e].filter(t=>!t.done)),r.json({code:200,message:"success",data:null})});Fi.post("/:type/clear_succeeded",r=>{let e=r.req.param("type");return sl[e]&&(sl[e]=sl[e].filter(t=>t.state!=="succeeded")),r.json({code:200,message:"success",data:null})});var ol=r=>r.json({code:501,message:"task lifecycle operations (retry/cancel/delete) are not supported in the TS Worker runtime; file operations execute synchronously and do not produce persistent tasks",data:null},501);Fi.post("/:type/retry_failed",ol);Fi.post("/:type/retry",ol);Fi.post("/:type/retry_some",ol);Fi.post("/:type/cancel",ol);Fi.post("/:type/cancel_some",ol);Fi.post("/:type/delete",ol);Fi.post("/:type/delete_some",ol);fo();Ve();Di();var Tw=new Xe,uoe=300*1e3,zb=new Map;function ei(r,e,t=""){let i=(r.settings||[]).find(n=>n.key===e);return!i||i.value===void 0||i.value===null?t:String(i.value)}function $A(r,e){let t=ei(r,e,"false");return t==="true"||t==="1"}function Lq(r){return r.req.header("CF-Connecting-IP")||r.req.header("x-real-ip")||r.req.header("x-forwarded-for")?.split(",")[0]?.trim()||"unknown"}function nu(r){try{return new URL(r.req.url).origin}catch{return"http://localhost"}}function foe(r,e){let t=new Uint8Array(16);crypto.getRandomValues(t);let i=Array.from(t,n=>n.toString(16).padStart(2,"0")).join("");return zb.set(`${r}_${i}`,{ip:e,exp:Date.now()+uoe}),i}function Aoe(r,e,t){let i=`${r}_${t}`,n=zb.get(i);return n?(zb.delete(i),n.ip===e&&n.exp>Date.now()):!1}function Hq(r,e,t,i,n){switch(r){case"Github":return{authUrl:"https://github.com/login/oauth/authorize",tokenUrl:"https://github.com/login/oauth/access_token",userUrl:"https://api.github.com/user",scope:n||"read:user",authField:"code",idField:"id",usernameField:"login"};case"Microsoft":return{authUrl:"https://login.microsoftonline.com/common/oauth2/v2.0/authorize",tokenUrl:"https://login.microsoftonline.com/common/oauth2/v2.0/token",userUrl:"https://graph.microsoft.com/v1.0/me",scope:n||"user.read",authField:"code",idField:"id",usernameField:"displayName",extraAuth:{response_mode:"query"},extraForm:{grant_type:"authorization_code"}};case"Google":return{authUrl:"https://accounts.google.com/o/oauth2/v2/auth",tokenUrl:"https://oauth2.googleapis.com/token",userUrl:"https://www.googleapis.com/oauth2/v1/userinfo",scope:n||"https://www.googleapis.com/auth/userinfo.profile",authField:"code",idField:"id",usernameField:"name",extraForm:{grant_type:"authorization_code"}};case"Dingtalk":return{authUrl:"https://login.dingtalk.com/oauth2/auth",tokenUrl:"https://api.dingtalk.com/v1.0/oauth2/userAccessToken",userUrl:"https://api.dingtalk.com/v1.0/contact/users/me",scope:n||"openid",authField:"authCode",idField:"unionId",usernameField:"nick",extraAuth:{prompt:"consent"},tokenStyle:"json"};case"Casdoor":return{authUrl:(e||"").replace(/\/login\/oauth\/authorize$/,"")+"/login/oauth/authorize",tokenUrl:(t||"").replace(/\/api\/login\/oauth\/access_token$/,"")+"/api/login/oauth/access_token",userUrl:(i||"").replace(/\/api\/userinfo$/,"")+"/api/userinfo",scope:n||"profile",authField:"code",idField:"sub",usernameField:"preferred_username",extraForm:{grant_type:"authorization_code"}};case"OIDC":return null;default:return null}}async function Kq(r){let e=r.endsWith("/.well-known/openid-configuration")?r:r.replace(/\/+$/,"")+"/.well-known/openid-configuration",t=await fetch(e,{headers:{Accept:"application/json"}});if(!t.ok)throw new Error(`OIDC discovery failed: HTTP ${t.status}`);let i=await t.json();if(!i.authorization_endpoint||!i.token_endpoint)throw new Error("OIDC discovery returned incomplete metadata");return{authUrl:i.authorization_endpoint,tokenUrl:i.token_endpoint,userUrl:i.userinfo_endpoint||""}}async function hoe(r,e){let t={id:r.id,username:r.username,role:r.role,exp:Math.floor(Date.now()/1e3)+604800,jti:typeof crypto.randomUUID=="function"?crypto.randomUUID():KA()},i=await vr(e);return await uo(t,i)}async function goe(r,e,t){let i=e||t;r.users.some(o=>o.username===i)&&(i=`${i}_${t}`);let s={id:r.users.length?Math.max(...r.users.map(o=>Number(o.id)||0))+1:1,username:i,password:"",role:0,permission:0,base_path:"/",disabled:!1,sso_id:t,allow_ldap:!1,pwd_update_at:new Date().toISOString()};return await _i(s,KA()),r.users.push(s),await fe(r,r.env),s}function Oq(r,e){let t=String(e).replace(/</g,"\\u003c").replace(/>/g,"\\u003e");return`<!DOCTYPE html> +`)));n0.post("/messages",async r=>{let e=await r.req.json().catch(()=>({})),{method:t,id:i,params:n}=e;if(!t)return r.json({jsonrpc:"2.0",error:{code:-32600,message:"Invalid Request"},id:i||null},400);let s=await EO(t,i,n,r.env),o=s.error?404:200;return r.json(s,o)});wr();Ve();bA();var av=new Xe;av.get("/info",async r=>{let e=await Kd(r),t=await ne(r.env),i={runtime:"Cloudflare Workers / Edge",timestamp:new Date().toISOString(),store:await Jn(r.env)};return e&&(i.db_state={storages_count:t.storages?.length||0,users_count:t.users?.length||0,metas_count:t.metas?.length||0,settings_count:t.settings?.length||0}),r.json({code:200,message:"OpenList debug profile generated",data:i})});wr();Ve();Qi();var ei=new Xe;function eae(r){let t=(r||"").replace(/\\/g,"/").replace(/\/+/g,"/").split("/").filter(i=>i&&i!==".");if(t.some(i=>i===".."))throw new Error("Path traversal segment '..' is not allowed");return"/"+t.join("/")}ei.use("/list",_i);ei.use("/get",_i);ei.use("/update",_i);ei.use("/delete",_i);ei.use("/cancel",_i);ei.use("/enable",_i);ei.use("/disable",_i);ei.get("/list",async r=>{let t=(await ne(r.env)).shares||[];return r.json({code:200,message:"success",data:{content:t,total:t.length}})});ei.get("/get",async r=>{let e=r.req.query("id")||"",i=((await ne(r.env)).shares||[]).find(n=>n.id===e);return i?r.json({code:200,message:"success",data:i}):r.json({code:404,message:"share not found",data:null})});ei.post("/create",async r=>{let e=await Me(r);if(!e||e.disabled)return r.json({code:401,message:"Unauthorized",data:null},401);if(!ms(e)&&!_a(e,Qa.SHARE))return r.json({code:403,message:"Permission denied",data:null},403);let t=await r.req.json().catch(()=>({})),i=await ne(r.env),n=[];if(Array.isArray(t.files))try{n=t.files.map(c=>{let l=eae(String(c));return ms(e)?l:We(e,l)})}catch(c){return r.json({code:400,message:c.message||"Invalid file path",data:null},400)}let s=t.id?String(t.id).trim():"";if(s&&!/^[a-zA-Z0-9_-]{1,64}$/.test(s))return r.json({code:400,message:"Invalid share id format (only alphanumeric, _ and - allowed, max 64 chars)",data:null},400);let o=s||tae();if((i.shares||[]).some(c=>c.id===o))return r.json({code:400,message:"share id already exists",data:null},400);let a={id:o,new_id:t.new_id||o,creator:t.creator||e.username||"user",creator_role:t.creator_role!==void 0?t.creator_role:e.role??1,accessed:t.accessed??0,expires:t.expires||null,pwd:t.pwd||"",max_accessed:t.max_accessed??0,disabled:t.disabled??!1,order_by:t.order_by||"",order_direction:t.order_direction||"",extract_folder:t.extract_folder||"",files:n,remark:t.remark||"",readme:t.readme||"",header:t.header||""};return i.shares||(i.shares=[]),i.shares.push(a),await fe(i,r.env),r.json({code:200,message:"success",data:a})});function tae(){return crypto.randomUUID().replace(/-/g,"").slice(0,16)}ei.post("/update",async r=>{let e=await r.req.json().catch(()=>({})),t=await ne(r.env);if(!e.id)return r.json({code:400,message:"share id is required",data:null});let i=(t.shares||[]).findIndex(s=>s.id===e.id);if(i===-1)return r.json({code:404,message:"share not found",data:null});let n=e.new_id&&String(e.new_id).trim()!==""?String(e.new_id).trim():e.id;return n!==e.id&&(t.shares||[]).some(o=>o.id===n&&o.id!==e.id)?r.json({code:400,message:"share id already exists",data:null}):(t.shares[i]={...t.shares[i],id:n,new_id:n,expires:e.expires!==void 0?e.expires:t.shares[i].expires,pwd:e.pwd!==void 0?e.pwd:t.shares[i].pwd,max_accessed:e.max_accessed!==void 0?e.max_accessed:t.shares[i].max_accessed,disabled:e.disabled!==void 0?e.disabled:t.shares[i].disabled,order_by:e.order_by!==void 0?e.order_by:t.shares[i].order_by,order_direction:e.order_direction!==void 0?e.order_direction:t.shares[i].order_direction,extract_folder:e.extract_folder!==void 0?e.extract_folder:t.shares[i].extract_folder,files:e.files!==void 0?e.files:t.shares[i].files,remark:e.remark!==void 0?e.remark:t.shares[i].remark,readme:e.readme!==void 0?e.readme:t.shares[i].readme,header:e.header!==void 0?e.header:t.shares[i].header},await fe(t,r.env),r.json({code:200,message:"success",data:null}))});ei.post("/delete",async r=>{let e=r.req.query("id")||"",t=await ne(r.env);return t.shares||(t.shares=[]),t.shares=t.shares.filter(i=>i.id!==e),await fe(t,r.env),r.json({code:200,message:"success",data:null})});ei.post("/enable",async r=>{let e=r.req.query("id")||"",t=await ne(r.env),i=(t.shares||[]).find(n=>n.id===e);return i&&(i.disabled=!1,await fe(t,r.env)),r.json({code:200,message:"success",data:null})});ei.post("/disable",async r=>{let e=r.req.query("id")||"",t=await ne(r.env),i=(t.shares||[]).find(n=>n.id===e);return i&&(i.disabled=!0,await fe(t,r.env)),r.json({code:200,message:"success",data:null})});wr();Ve();Yt();Qi();var Pi=new Xe;Pi.all("/refresh",async(r,e)=>await c2(r)?e():_i(r,e),async r=>{let e=await ne(r.env),t=0,i=0,n=[];for(let s of e.storages||[])if(!s.disabled)try{let o=await lt(s.driver,s);if(await o.init?.(),typeof o.checkCookieValid=="function"&&/lanzou/i.test(String(s.driver))){let a=await o.checkCookieValid();if(!a.valid){s.status="cookie_expired",i++,n.push({id:s.id,mount_path:s.mount_path,driver:s.driver,status:"cookie_expired",error:a.error||"Cookie expired"});continue}}s.status="work",t++,n.push({id:s.id,mount_path:s.mount_path,driver:s.driver,status:"ok"})}catch(o){i++,n.push({id:s.id,mount_path:s.mount_path,driver:s.driver,status:"failed",error:o?.message||String(o)})}return await fe(e,r.env),i>0?r.json({code:500,message:`token refresh failed: ${i}/${t+i} storage(s) failed`,data:{refreshed:t,failed:i,total:e.storages?.length||0,results:n}},500):r.json({code:200,message:"token refresh executed",data:{refreshed:t,failed:i,total:e.storages?.length||0,results:n}})});var dl={upload:[],copy:[],move:[],offline_download:[]};Pi.use("*",_i);Pi.get("/:type/:state",r=>{let e=r.req.param("type"),t=r.req.param("state"),n=(dl[e]||[]).filter(s=>t==="done"?s.done:!s.done);return r.json({code:200,message:"success",data:n})});Pi.post("/:type/clear_done",r=>{let e=r.req.param("type");return dl[e]&&(dl[e]=dl[e].filter(t=>!t.done)),r.json({code:200,message:"success",data:null})});Pi.post("/:type/clear_succeeded",r=>{let e=r.req.param("type");return dl[e]&&(dl[e]=dl[e].filter(t=>t.state!=="succeeded")),r.json({code:200,message:"success",data:null})});var ul=r=>r.json({code:501,message:"task lifecycle operations (retry/cancel/delete) are not supported in the TS Worker runtime; file operations execute synchronously and do not produce persistent tasks",data:null},501);Pi.post("/:type/retry_failed",ul);Pi.post("/:type/retry",ul);Pi.post("/:type/retry_some",ul);Pi.post("/:type/cancel",ul);Pi.post("/:type/cancel_some",ul);Pi.post("/:type/delete",ul);Pi.post("/:type/delete_some",ul);wr();Ao();Ve();Qi();sl();XA();var jw=new Xe,rae=300*1e3,cv=new Map;function ti(r,e,t=""){let i=(r.settings||[]).find(n=>n.key===e);return!i||i.value===void 0||i.value===null?t:String(i.value)}function s0(r,e){let t=ti(r,e,"false");return t==="true"||t==="1"}function vO(r){return r.req.header("CF-Connecting-IP")||r.req.header("x-real-ip")||r.req.header("x-forwarded-for")?.split(",")[0]?.trim()||"unknown"}function hu(r){try{return new URL(r.req.url).origin}catch{return"http://localhost"}}function iae(r,e){let t=new Uint8Array(16);crypto.getRandomValues(t);let i=Array.from(t,n=>n.toString(16).padStart(2,"0")).join("");return cv.set(`${r}_${i}`,{ip:e,exp:Date.now()+rae}),i}function nae(r,e,t){let i=`${r}_${t}`,n=cv.get(i);return n?(cv.delete(i),n.ip===e&&n.exp>Date.now()):!1}function kO(r,e,t,i,n){switch(r){case"Github":return{authUrl:"https://github.com/login/oauth/authorize",tokenUrl:"https://github.com/login/oauth/access_token",userUrl:"https://api.github.com/user",scope:n||"read:user",authField:"code",idField:"id",usernameField:"login"};case"Microsoft":return{authUrl:"https://login.microsoftonline.com/common/oauth2/v2.0/authorize",tokenUrl:"https://login.microsoftonline.com/common/oauth2/v2.0/token",userUrl:"https://graph.microsoft.com/v1.0/me",scope:n||"user.read",authField:"code",idField:"id",usernameField:"displayName",extraAuth:{response_mode:"query"},extraForm:{grant_type:"authorization_code"}};case"Google":return{authUrl:"https://accounts.google.com/o/oauth2/v2/auth",tokenUrl:"https://oauth2.googleapis.com/token",userUrl:"https://www.googleapis.com/oauth2/v1/userinfo",scope:n||"https://www.googleapis.com/auth/userinfo.profile",authField:"code",idField:"id",usernameField:"name",extraForm:{grant_type:"authorization_code"}};case"Dingtalk":return{authUrl:"https://login.dingtalk.com/oauth2/auth",tokenUrl:"https://api.dingtalk.com/v1.0/oauth2/userAccessToken",userUrl:"https://api.dingtalk.com/v1.0/contact/users/me",scope:n||"openid",authField:"authCode",idField:"unionId",usernameField:"nick",extraAuth:{prompt:"consent"},tokenStyle:"json"};case"Casdoor":return{authUrl:(e||"").replace(/\/login\/oauth\/authorize$/,"")+"/login/oauth/authorize",tokenUrl:(t||"").replace(/\/api\/login\/oauth\/access_token$/,"")+"/api/login/oauth/access_token",userUrl:(i||"").replace(/\/api\/userinfo$/,"")+"/api/userinfo",scope:n||"profile",authField:"code",idField:"sub",usernameField:"preferred_username",extraForm:{grant_type:"authorization_code"}};case"OIDC":return null;default:return null}}async function SO(r){let e=r.endsWith("/.well-known/openid-configuration")?r:r.replace(/\/+$/,"")+"/.well-known/openid-configuration",t=await fetch(e,{headers:{Accept:"application/json"}});if(!t.ok)throw new Error(`OIDC discovery failed: HTTP ${t.status}`);let i=await t.json();if(!i.authorization_endpoint||!i.token_endpoint)throw new Error("OIDC discovery returned incomplete metadata");return{authUrl:i.authorization_endpoint,tokenUrl:i.token_endpoint,userUrl:i.userinfo_endpoint||""}}async function sae(r,e){let t={id:r.id,username:r.username,role:r.role,exp:Math.floor(Date.now()/1e3)+604800,jti:typeof crypto.randomUUID=="function"?crypto.randomUUID():du()},i=await kr(e);return await fo(t,i)}async function oae(r,e,t){let i=e||t;r.users.some(o=>o.username===i)&&(i=`${i}_${t}`);let s={id:r.users.length?Math.max(...r.users.map(o=>Number(o.id)||0))+1:1,username:i,password:"",role:0,permission:0,base_path:"/",disabled:!1,sso_id:t,allow_ldap:!1,pwd_update_at:new Date().toISOString()};return await Fi(s,du()),r.users.push(s),await fe(r,r.env),s}function BO(r,e){let t=String(e).replace(/</g,"\\u003c").replace(/>/g,"\\u003e");return`<!DOCTYPE html> <head></head> <body> <script> window.opener.postMessage({"${r}":"${t}"}, "*") window.close() </script> -</body>`}Tw.get("/sso",async r=>{let e=await ne(r.env);if(!$A(e,"sso_login_enabled"))return r.json({code:403,message:"Single sign-on is not enabled",data:null},403);let t=r.req.query("method")||"";if(!t)return r.json({code:400,message:"no method provided",data:null},400);let i=ei(e,"sso_login_platform"),n=ei(e,"sso_client_id"),o=$A(e,"sso_compatibility_mode")?`${nu(r)}/api/auth/${t}`:`${nu(r)}/api/auth/sso_callback?method=${t}`,a=ei(e,"sso_login_url"),c=ei(e,"sso_token_url"),l=ei(e,"sso_userinfo_url"),d=ei(e,"sso_scopes"),u=ei(e,"sso_oidc_discovery_url");try{if(i==="OIDC"){let g=await Kq(u||a),p=foe(n,Lq(r)),I=new URLSearchParams({response_type:"code",client_id:n,redirect_uri:o,scope:d||"openid profile",state:p});return r.redirect(`${g.authUrl}?${I.toString()}`,302)}let f=Hq(i,a,c,l,d);if(!f)return r.json({code:400,message:"invalid platform",data:null},400);let h=new URLSearchParams({response_type:"code",client_id:n,redirect_uri:o,scope:f.scope});for(let[g,p]of Object.entries(f.extraAuth||{}))h.set(g,p);return r.redirect(`${f.authUrl}?${h.toString()}`,302)}catch(f){return r.json({code:400,message:f.message||"SSO error",data:null},400)}});Tw.get("/sso_callback",async r=>{let e=await ne(r.env);if(!$A(e,"sso_login_enabled"))return r.text("Single sign-on is not enabled",403);let t=r.req.query("method")||"";if(t!=="get_sso_id"&&t!=="sso_get_token")return r.text("invalid request",400);let i=ei(e,"sso_login_platform"),n=ei(e,"sso_client_id"),s=ei(e,"sso_client_secret"),o=$A(e,"sso_compatibility_mode"),a=o?`${nu(r)}/api/auth/${t}`:`${nu(r)}/api/auth/sso_callback?method=${t}`,c=ei(e,"sso_login_url"),l=ei(e,"sso_token_url"),d=ei(e,"sso_userinfo_url"),u=ei(e,"sso_scopes"),f=ei(e,"sso_oidc_discovery_url");try{let h,g,p,I,y,w,C;if(i==="OIDC"){let R=await Kq(f||c);if(h=R.tokenUrl,g=R.userUrl,p="sub",I="preferred_username",y=u||"openid profile",!Aoe(n,Lq(r),r.req.query("state")||""))return r.text("incorrect or expired state parameter",400);let U=r.req.query("code")||"",D=await(await fetch(h,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({grant_type:"authorization_code",code:U,client_id:n,client_secret:s,redirect_uri:a,scope:y}).toString()})).json().catch(()=>({}));if(w=D.access_token,!w)throw new Error("no access_token in token response");if(g){C=await(await fetch(g,{headers:{Authorization:`Bearer ${w}`,Accept:"application/json"}})).json().catch(()=>({}));let Q=C?.preferred_username||C?.name||C?.nickname||"";if(!C?.sub&&!Q){let v=D.id_token;if(v){let E=Mq(v);C=C||{},C.sub=C.sub||E?.sub,C.name=Q||E?.name||E?.preferred_username||""}}Q&&(C.name=Q)}else{let B=D.id_token;if(!B)throw new Error("no id_token and no userinfo endpoint");C=Mq(B)||{},C.sub=C.sub||C.name||""}}else{let R=Hq(i,c,l,d,u);if(!R)return r.text("invalid platform",400);h=R.tokenUrl,g=R.userUrl,p=R.idField,I=R.usernameField,y=R.scope;let U=r.req.query(R.authField)||"";if(!U)return r.text("No code provided",400);let T;if(R.tokenStyle==="json")T=await fetch(h,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({clientId:n,clientSecret:s,code:U,grantType:"authorization_code"})});else{let v={client_id:n,client_secret:s,code:U,redirect_uri:a,scope:y,...R.extraForm||{}};T=await fetch(h,{method:"POST",headers:{Accept:"application/json"},body:new URLSearchParams(v).toString()})}let D=await T.json().catch(()=>({}));if(w=D.access_token||D.accessToken,!w)throw new Error(`token exchange failed: ${D.error||T.status}`);let B={Accept:"application/json"};i==="Dingtalk"?B["x-acs-dingtalk-access-token"]=w:B.Authorization=`Bearer ${w}`,C=await(await fetch(g,{headers:B})).json().catch(()=>({}))}let b=String(C?.id??C?.sub??C?.[p]??"");if(!b||b==="0")return r.text("cannot get user id from SSO provider",400);if(t==="get_sso_id")return o?r.redirect(`${nu(r)}/@manage?sso_id=${encodeURIComponent(b)}`,302):r.html(Oq("sso_id",b));let x=(e.users||[]).find(R=>R.sso_id===b);if(!x){if(!$A(e,"sso_auto_register"))return r.text("user not found and auto register is disabled",400);let U=String(C?.login??C?.[I]??C?.name??"");x=await goe(e,U||b,b)}let _=await hoe(x,r);return o?r.redirect(`${nu(r)}/@login?token=${encodeURIComponent(_)}`,302):r.html(Oq("token",_))}catch(h){return r.text(h.message||"SSO error",500)}});function Mq(r){try{let e=r.split(".");if(e.length<2)return null;let t=e[1].replace(/-/g,"+").replace(/_/g,"/"),i=t.padEnd(Math.ceil(t.length/4)*4,"="),n=atob(i);return JSON.parse(n)}catch{return null}}fo();Ve();Di();var Ka=new Xe;function ti(r){let e="";for(let t of r)e+=String.fromCharCode(t);return btoa(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}function La(r){let e=r.replace(/-/g,"+").replace(/_/g,"/"),t=e.padEnd(Math.ceil(e.length/4)*4,"="),i=atob(t),n=new Uint8Array(i.length);for(let s=0;s<i.length;s++)n[s]=i.charCodeAt(s);return n}function poe(r){let e="";for(let t of r)e+=String.fromCharCode(t);return btoa(e)}function moe(r){let e=atob(r),t=new Uint8Array(e.length);for(let i=0;i<e.length;i++)t[i]=e.charCodeAt(i);return t}function Ha(r){let e=r.u8[r.i++],t=e>>5,i=e&31,n=i;if(i===24)n=r.u8[r.i++];else if(i===25)n=r.u8[r.i]<<8|r.u8[r.i+1],r.i+=2;else if(i===26)n=r.u8[r.i]<<24|r.u8[r.i+1]<<16|r.u8[r.i+2]<<8|r.u8[r.i+3],r.i+=4;else if(i===27){let s=0n;for(let o=0;o<8;o++)s=s<<8n|BigInt(r.u8[r.i++]);n=Number(s)}else if(i===31){if(t===4){let s=[];for(;r.u8[r.i]!==255;)s.push(Ha(r));return r.i++,s}else if(t===5){let s={};for(;r.u8[r.i]!==255;){let o=Ha(r),a=Ha(r);s[String(o)]=a}return r.i++,s}}switch(t){case 0:return n;case 1:return-1-n;case 2:{let s=r.u8.slice(r.i,r.i+n);return r.i+=n,s}case 3:{let s=new TextDecoder().decode(r.u8.slice(r.i,r.i+n));return r.i+=n,s}case 4:{let s=[];for(let o=0;o<n;o++)s.push(Ha(r));return s}case 5:{let s={};for(let o=0;o<n;o++){let a=Ha(r),c=Ha(r);s[String(a)]=c}return s}default:throw new Error(`unsupported CBOR major type ${t}`)}}async function yoe(r){let e=r[1],t=r[3];if(e===2){let i=r[-1],n=r[-2],s=r[-3];if(i!==1)throw new Error("unsupported EC curve (only P-256)");let o={kty:"EC",crv:"P-256",x:ti(new Uint8Array(n)),y:ti(new Uint8Array(s))};return await crypto.subtle.importKey("jwk",o,{name:"ECDSA",namedCurve:"P-256"},!1,["verify"])}if(e===3){let i=r[-1],n=r[-2],s={kty:"RSA",n:ti(new Uint8Array(i)),e:ti(new Uint8Array(n))};return await crypto.subtle.importKey("jwk",s,{name:"RSASSA-PKCS1-v1_5",hash:"SHA-256"},!1,["verify"])}throw new Error(`unsupported COSE kty ${e}`)}async function Ioe(r){let t=Ha({u8:r,i:0}),i=t.authData,n=t.attStmt||{},s=i.slice(0,32),o=i[32],a=i[33]<<24|i[34]<<16|i[35]<<8|i[36];if(!(o&64))throw new Error("attestedCredentialData not present");let c=37,l=i.slice(c,c+16);c+=16;let d=i[c]<<8|i[c+1];c+=2;let u=i.slice(c,c+d);c+=d;let f={u8:i.slice(c),i:0},h=Ha(f),g=await yoe(h);return{authData:i,publicKey:g,aaguid:l,credentialId:u,signCount:a,flags:o}}function Uw(r,e){let i=(r.settings||[]).find(n=>n.key===e)?.value;return i==="true"||i==="1"}function Gq(r,e,t=""){let i=(r.settings||[]).find(n=>n.key===e);return i?.value?String(i.value):t}function Rw(r,e){let t=Gq(e,"webauthn_rp_id");if(t)return t;try{return new URL(r.req.url).hostname}catch{return"localhost"}}function Jb(){let r=new Uint8Array(32);return crypto.getRandomValues(r),r}function zq(r){return poe(new TextEncoder().encode(JSON.stringify(r)))}function Jq(r){return JSON.parse(new TextDecoder().decode(moe(r)))}async function woe(r,e){let t={id:r.id,username:r.username,role:r.role,exp:Math.floor(Date.now()/1e3)+604800,jti:typeof crypto.randomUUID=="function"?crypto.randomUUID():ti(Jb())},i=await vr(e);return await uo(t,i)}function VA(r){return r.webauthn_credentials||[]}Ka.post("/webauthn_begin_login",async r=>{let e=await ne(r.env);if(!Uw(e,"webauthn_login_enabled"))return r.json({code:403,message:"WebAuthn is not enabled",data:null},403);let t=r.req.query("username")||"",i=Rw(r,e),n=Jb(),s={challenge:ti(n),userVerification:"preferred"},o;if(t){let c=(e.users||[]).find(l=>l.username===t);if(!c)return r.json({code:400,message:"user not found",data:null},400);s.userId=String(c.id),s.username=t,o=VA(c).map(l=>({id:typeof l.id=="string"?l.id:ti(new Uint8Array(l.id)),type:"public-key"})),s.allowedCredentials=o}let a={challenge:s.challenge,rpId:i,userVerification:s.userVerification};return o&&o.length>0&&(a.allowCredentials=o),r.json({code:200,message:"success",data:{options:a,session:zq(s)}})});Ka.post("/webauthn_finish_login",async r=>{let e=await ne(r.env);if(!Uw(e,"webauthn_login_enabled"))return r.json({code:403,message:"WebAuthn is not enabled",data:null},403);let t=r.req.header("session")||r.req.header("Session")||"",i;try{i=Jq(t)}catch{return r.json({code:400,message:"invalid session",data:null},400)}let n=await r.req.json().catch(()=>({})),s=Rw(r,e);try{let o=La(n.id||""),a=JSON.parse(new TextDecoder().decode(La(n.response?.clientDataJSON||"")));if(a.challenge!==i.challenge)return r.json({code:400,message:"challenge mismatch",data:null},400);if(a.type!=="webauthn.get")return r.json({code:400,message:"invalid ceremony type",data:null},400);let c=La(n.response?.authenticatorData||"");if(c.length<37)throw new Error("invalid authenticatorData");let l=c.slice(0,32),d=new Uint8Array(await crypto.subtle.digest("SHA-256",new TextEncoder().encode(s)));if(ti(l)!==ti(d))return r.json({code:400,message:"rpId hash mismatch",data:null},400);let u=r.req.query("username")||i.username||"",f=u?(e.users||[]).find(R=>R.username===u):null,h;if(f)h=VA(f).find(R=>(typeof R.id=="string"?R.id:ti(new Uint8Array(R.id)))===n.id);else{let R=La(n.response?.userHandle||"");if(R.length){let U=new TextDecoder().decode(R);f=(e.users||[]).find(T=>String(T.id)===U),f&&(h=VA(f).find(T=>(typeof T.id=="string"?T.id:ti(new Uint8Array(T.id)))===n.id))}}if(!f||!h)return r.json({code:400,message:"credential not found",data:null},400);let g=h.publicKey;if(!g)return r.json({code:400,message:"credential missing public key",data:null},400);let p=await crypto.subtle.importKey("jwk",g,g.kty==="RSA"?{name:"RSASSA-PKCS1-v1_5",hash:"SHA-256"}:{name:"ECDSA",namedCurve:"P-256"},!1,["verify"]),I=La(n.response?.signature||""),y=new Uint8Array(await crypto.subtle.digest("SHA-256",La(n.response?.clientDataJSON||""))),w=new Uint8Array(c.length+y.length);w.set(c,0),w.set(y,c.length);let C=g.kty==="RSA"?{name:"RSASSA-PKCS1-v1_5"}:{name:"ECDSA",hash:"SHA-256"};if(!await crypto.subtle.verify(C,p,I,w).catch(()=>!1))return r.json({code:400,message:"signature verification failed",data:null},400);let x=c[33]<<24|c[34]<<16|c[35]<<8|c[36];if(h.sign_count!==void 0&&x!==0&&x<=h.sign_count)return r.json({code:400,message:"stale signCount (possible replay)",data:null},400);h.sign_count=x,await fe(e,r.env);let _=await woe(f,r);return r.json({code:200,message:"success",data:{token:_}})}catch(o){return r.json({code:400,message:o.message||"WebAuthn login failed",data:null},400)}});Ka.post("/webauthn_begin_registration",async r=>{let e=await ne(r.env);if(!Uw(e,"webauthn_login_enabled"))return r.json({code:403,message:"WebAuthn is not enabled",data:null},403);let t=await Me(r);if(!t||t.disabled)return r.json({code:401,message:"Unauthorized",data:null},401);let i=Rw(r,e),n=Jb(),s=new TextEncoder().encode(String(t.id)),o={challenge:ti(n),userId:String(t.id),username:t.username,userVerification:"preferred"},a=VA(t).map(l=>({id:typeof l.id=="string"?l.id:ti(new Uint8Array(l.id)),type:"public-key"})),c={challenge:o.challenge,rp:{name:Gq(e,"site_title","OpenList"),id:i},user:{id:ti(s),name:t.username,displayName:t.username},pubKeyCredParams:[{type:"public-key",alg:-7},{type:"public-key",alg:-257}],timeout:6e4,authenticatorSelection:{userVerification:o.userVerification,residentKey:"preferred"},attestation:"none"};return a.length>0&&(c.excludeCredentials=a),r.json({code:200,message:"success",data:{options:c,session:zq(o)}})});Ka.post("/webauthn_finish_registration",async r=>{let e=await ne(r.env);if(!Uw(e,"webauthn_login_enabled"))return r.json({code:403,message:"WebAuthn is not enabled",data:null},403);let t=await Me(r);if(!t||t.disabled)return r.json({code:401,message:"Unauthorized",data:null},401);let i=r.req.header("Session")||r.req.header("session")||"",n;try{n=Jq(i)}catch{return r.json({code:400,message:"invalid session",data:null},400)}let s=await r.req.json().catch(()=>({})),o=Rw(r,e);try{let a=JSON.parse(new TextDecoder().decode(La(s.response?.clientDataJSON||"")));if(a.challenge!==n.challenge)return r.json({code:400,message:"challenge mismatch",data:null},400);if(a.type!=="webauthn.create")return r.json({code:400,message:"invalid ceremony type",data:null},400);let c=La(s.response?.attestationObject||""),{publicKey:l,aaguid:d,credentialId:u,signCount:f}=await Ioe(c),g={id:s.id||ti(u),publicKey:await crypto.subtle.exportKey("jwk",l),aaguid:ti(d),sign_count:f,created_at:new Date().toISOString()},p=t;return p.webauthn_credentials||(p.webauthn_credentials=[]),p.webauthn_credentials.push(g),await fe(e,r.env),r.json({code:200,message:"Registered Successfully",data:null})}catch(a){return r.json({code:400,message:a.message||"registration failed",data:null},400)}});Ka.post("/delete_authn",async r=>{let e=await Me(r);if(!e||e.disabled)return r.json({code:401,message:"Unauthorized",data:null},401);let i=(await r.req.json().catch(()=>({}))).id||"",n=await ne(r.env),s=(n.users||[]).find(a=>a.id===e.id);if(!s)return r.json({code:404,message:"user not found",data:null},404);let o=(s.webauthn_credentials||[]).length;return s.webauthn_credentials=(s.webauthn_credentials||[]).filter(a=>a.id!==i),s.webauthn_credentials.length===o?r.json({code:404,message:"credential not found",data:null},404):(await fe(n,r.env),r.json({code:200,message:"Deleted Successfully",data:null}))});Ka.get("/getcredentials",async r=>{let e=await Me(r);if(!e||e.disabled)return r.json({code:401,message:"Unauthorized",data:null},401);let t=VA(e).map(i=>({id:i.id,fingerprint:i.aaguid||""}));return r.json({code:200,message:"success",data:t})});var YA=new Map,su=new Map;function xoe(r){return r.req.header("CF-Connecting-IP")||r.req.header("x-real-ip")||r.req.header("x-forwarded-for")?.split(",")[0]?.trim()||"unknown"}function Coe(){let r=Date.now();if(YA.size>2e4)for(let[e,t]of YA)r-t.start>6e4&&YA.delete(e);if(su.size>2e4)for(let[e,t]of su)r-t.start>36e5&&su.delete(e)}async function Eoe(r,e){let t=xoe(r),i=Date.now(),n=0,s=0;try{let o=await ne(r.env),a={};for(let c of o.settings||[])a[c.key]=c.value;n=parseInt(a.ip_limit,10)||0,s=parseInt(a.traffic_limit,10)||0}catch{}if(Coe(),n>0){let o=YA.get(t);if(!o||i-o.start>6e4)YA.set(t,{start:i,count:1});else if(o.count+=1,o.count>n)return r.json({code:429,message:"Too many requests, slow down",data:null},429)}if(s>0){let o=su.get(t),a=s*1024*1024;if(o&&i-o.start<=36e5&&o.bytes>=a)return r.json({code:429,message:"Traffic limit exceeded",data:null},429)}if(await e(),(r.req.query("token")||r.req.query("access_token"))&&(r.res?.headers?.set("Referrer-Policy","no-referrer"),r.res?.headers?.set("Cache-Control","no-store, no-cache, must-revalidate"),r.res?.headers?.set("Pragma","no-cache")),s>0){let o=parseInt(r.res?.headers?.get("content-length")||"0",10)||0;if(o>0){let a=su.get(t);!a||i-a.start>36e5?su.set(t,{start:i,bytes:o}):a.bytes+=o}}}function jq(r){r.use("*",Eoe),r.use("*",async(e,t)=>{let{auditMiddleware:i}=await Promise.resolve().then(()=>(Di(),NI));return i(e,t)}),r.use("*",async(e,t)=>{await t(),e.res.headers.set("X-Frame-Options","DENY"),e.res.headers.set("X-Content-Type-Options","nosniff"),e.res.headers.set("Content-Security-Policy","default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data: blob: https:; font-src 'self' data:; connect-src 'self'; media-src 'self' blob:; frame-ancestors 'none'"),e.res.headers.set("Strict-Transport-Security","max-age=31536000; includeSubDomains"),e.res.headers.set("Referrer-Policy","no-referrer")}),r.use("*",qv({origin:(e,t)=>{if(!e)return e;let s=((t.env||{}).ALLOW_URLS||(typeof process<"u"?process.env?.ALLOW_URLS:"")||"").split(",").map(a=>a.trim()).filter(Boolean);if(s.length>0)return s.includes(e)?e:null;let o=t.req.header("host")||"";try{if(new URL(e).host===o)return e}catch{}return null},allowHeaders:["Content-Type","Authorization","X-Requested-With"],allowMethods:["GET","POST","PUT","DELETE","OPTIONS"],exposeHeaders:["Content-Length","Content-Type"],maxAge:600,credentials:!0})),r.route("/raw",ws),r.route("/fs",dt),r.route("/auth",Tn),r.route("/public",Io),r.route("/admin",Ue),r.route("/mcp",jA),r.route("/debug",Gb),r.route("/share",Zr),r.route("/task",Fi),r.route("/auth",Tw),r.route("/authn",Ka),r.route("/d",ws),r.route("/sd",ws),r.route("/p",ws),r.route("/me",LA),r.get("/me",Ob),r.post("/me/update",qb),r.post("/user/update_pwd",Eq),r.get("/logout",GA),r.post("/logout",GA),r.get("/health",e=>e.json({ok:!0,name:"OpenList",version:"v4.2.3",environment:e.env?.ENVIRONMENT||"development"})),r.get("/healthz",async e=>{let t={},i=!0;try{let o=await ne(e.env);t.config={ok:!0,storages:o?.storages?.length??0,users:o?.users?.length??0}}catch(o){i=!1,t.config={ok:!1,error:o?.message||String(o)}}let n;try{n=await wl(e.env)}catch(o){i=!1,n={configured:!1,connected:!1,error:o?.message||String(o)}}t.persistence={configured:!!n?.configured,connected:!!n?.connected,platform:n?.platform??null,error:n?.error??null};let s=_s(e.env);return n?.configured||(t.persistence.mode=s?"unavailable":"memory",s?(t.persistence.note=Qs,i=!1):t.persistence.note="No persistence configured \u2014 changes are ephemeral"),n?.configured&&!n?.connected&&(i=!1),e.json({ok:i,name:"OpenList",version:"v4.2.3",environment:e.env?.ENVIRONMENT||"development",checks:t},i?200:503)})}Ve();var Boe="https://res.oplist.org/logo/logo.svg",Ga=new Xe;function WA(r){return r.redirect(Boe,302)}Ga.get("/logo.svg",WA);Ga.get("/logo.png",WA);Ga.get("/favicon.svg",WA);Ga.get("/favicon.png",WA);Ga.get("/favicon.ico",WA);Ga.get("/:folder/:filepath*",async r=>{let t=r.env?.ASSET_URLS||process.env.ASSET_URLS;if(!t)return r.text("Static resource not found",404);let i=await ne(),n="latest";try{let l=i.get("SELECT * FROM x_settings WHERE key = 'version'");if(l&&l.value){let d=l.value.match(/Frontend:\s*([^\s-]+)/);d&&(n=d[1])}}catch{}let s=t.replace(/\$version/g,n),o=r.req.param("folder"),a=r.req.param("filepath")||"",c=`${s}/${o}/${a}`;return r.redirect(c,302)});Yt();hA();function $q(r,e){return IR(r,e)}Sa();Ve();var jb=new Xe,boe=r=>{try{let e=r.executionCtx;return!e||typeof e.waitUntil!="function"?void 0:{waitUntil:t=>e.waitUntil(t),env:r.env}}catch{return}};async function voe(r){let e=r.req.header("Authorization")||"";if(e.startsWith("Basic "))try{let t=atob(e.substring(6).trim()),i=t.indexOf(":");if(i<0)return null;let n=t.substring(0,i),s=t.substring(i+1),{users:o}=await vw(r.env),a=o.find(c=>c.username===n&&!c.disabled);return a?a.password?await HA(a,s)?a:null:s===""?a:null:null}catch{return null}if(e.startsWith("Bearer ")){let t=await ys(r);return t?t.user:null}return null}function koe(r){let t=new URL(r.req.url).pathname.replace(/^\/dav/,"");t||(t="/");try{return decodeURIComponent(t)}catch{return t}}function XA(r){let t=(r.startsWith("/")?r:"/"+r).split("/").filter(Boolean),i=t.pop()||"";return{dir:"/"+t.join("/"),name:i}}jb.all("/*",async r=>{let e=await voe(r);if(!e)return r.text("Unauthorized",401,{"WWW-Authenticate":'Basic realm="OpenList"'});let t=Qa(e,Da.WEBDAV_READ),i=Qa(e,Da.WEBDAV_MANAGE);if(!t&&!i)return r.text("Forbidden",403);let n=r.req.method.toUpperCase(),s=koe(r),o=boe(r);try{switch(n){case"OPTIONS":return r.header("DAV","1, 2"),r.header("Allow","OPTIONS, PROPFIND, GET, HEAD, PUT, MKCOL, DELETE, MOVE, COPY"),r.header("MS-Author-Via","DAV"),r.body(null,200);case"PROPFIND":{if(!t)return r.text("Forbidden",403);let a=r.req.header("Depth")||"1",l=((await Zt(s,o)).content||[]).map(f=>({name:f.name,size:f.size||0,isFolder:!!f.is_dir,modified:f.modified||new Date().toISOString()})),d=s==="/"?"/":s.endsWith("/")?s:s+"/",u=$q(d,l);return r.body(u,207,{"Content-Type":"application/xml; charset=utf-8"})}case"GET":case"HEAD":{if(!t)return r.text("Forbidden",403);let{item:a,rawUrl:c}=await Si(s,o);if(!a)return r.text("Not found",404);if(a.is_dir)return r.text("Is a directory",400);let l="/api/p";try{let u=(await tt(s))?.storage;if(u){let f=await Kn().catch(()=>({}));Sw({storage:u,driver:u.driver,filename:s,proxyTypes:il(f.proxy_types),textTypes:il(f.text_types)})||(l="/api/d")}}catch{}return r.redirect(c||`${l}${s.startsWith("/")?"":"/"}${s}`,302)}case"PUT":{if(!i)return r.text("Forbidden",403);let a=Buffer.from(await r.req.arrayBuffer());return await _n(s,a,o),r.body(null,201)}case"MKCOL":return i?(await dA(s,o),r.body(null,201)):r.text("Forbidden",403);case"DELETE":{if(!i)return r.text("Forbidden",403);let{dir:a,name:c}=XA(s);return await va(a,[c],o),r.body(null,204)}case"MOVE":{if(!i)return r.text("Forbidden",403);let a=r.req.header("Destination")||"",c=a;try{c=decodeURIComponent(new URL(a,r.req.url).pathname).replace(/^\/dav/,"")}catch{}let l=XA(s),d=XA(c);return await Td(l.dir,d.dir,[l.name],o),r.body(null,201)}case"COPY":{if(!i)return r.text("Forbidden",403);let a=r.req.header("Destination")||"",c=a;try{c=decodeURIComponent(new URL(a,r.req.url).pathname).replace(/^\/dav/,"")}catch{}let l=XA(s),d=XA(c);return await fA(l.dir,d.dir,[l.name],o),r.body(null,201)}case"LOCK":case"UNLOCK":return r.text("Locking not supported",405);default:return r.text("Method Not Allowed",405)}}catch(a){let c=Ne(a);return c.includes("not found")||c.includes("storage not found")?r.text("Not Found",404):r.text(c,500)}});Yt();Sa();var al=new Xe;function Nw(r){return String(r).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")}function Sr(r,e,t){let i=`<?xml version="1.0" encoding="UTF-8"?> -<Error><Code>${Nw(r)}</Code><Message>${Nw(e)}</Message></Error>`;return new Response(i,{status:t,headers:{"Content-Type":"application/xml","x-amz-request-id":"-"}})}function qw(r){let i=new URL(r.req.url).pathname.replace(/^\/s3\/?/,"").split("/").filter(Boolean),n=i[0]||"",s=i.slice(1).map(decodeURIComponent).join("/");return{bucket:n,key:s}}async function ZA(r){let e=await ys(r);return e?e.user:null}var e0=r=>{try{let e=r.executionCtx;return e&&typeof e.waitUntil=="function"?{waitUntil:t=>e.waitUntil(t)}:void 0}catch{return}};al.get("/",async r=>{if(!await ZA(r))return Sr("AccessDenied","Authentication required",403);try{let n=`<?xml version="1.0" encoding="UTF-8"?> +</body>`}jw.get("/sso",async r=>{let e=await ne(r.env);if(!s0(e,"sso_login_enabled"))return r.json({code:403,message:"Single sign-on is not enabled",data:null},403);let t=r.req.query("method")||"";if(!t)return r.json({code:400,message:"no method provided",data:null},400);let i=ti(e,"sso_login_platform"),n=ti(e,"sso_client_id"),o=s0(e,"sso_compatibility_mode")?`${hu(r)}/api/auth/${t}`:`${hu(r)}/api/auth/sso_callback?method=${t}`,a=ti(e,"sso_login_url"),c=ti(e,"sso_token_url"),l=ti(e,"sso_userinfo_url"),d=ti(e,"sso_scopes"),u=ti(e,"sso_oidc_discovery_url");try{if(i==="OIDC"){let g=await SO(u||a),p=iae(n,vO(r)),I=new URLSearchParams({response_type:"code",client_id:n,redirect_uri:o,scope:d||"openid profile",state:p});return r.redirect(`${g.authUrl}?${I.toString()}`,302)}let f=kO(i,a,c,l,d);if(!f)return r.json({code:400,message:"invalid platform",data:null},400);let h=new URLSearchParams({response_type:"code",client_id:n,redirect_uri:o,scope:f.scope});for(let[g,p]of Object.entries(f.extraAuth||{}))h.set(g,p);return r.redirect(`${f.authUrl}?${h.toString()}`,302)}catch(f){return r.json({code:400,message:f.message||"SSO error",data:null},400)}});jw.get("/sso_callback",async r=>{let e=await ne(r.env);if(!s0(e,"sso_login_enabled"))return r.text("Single sign-on is not enabled",403);let t=r.req.query("method")||"";if(t!=="get_sso_id"&&t!=="sso_get_token")return r.text("invalid request",400);let i=ti(e,"sso_login_platform"),n=ti(e,"sso_client_id"),s=ti(e,"sso_client_secret"),o=s0(e,"sso_compatibility_mode"),a=o?`${hu(r)}/api/auth/${t}`:`${hu(r)}/api/auth/sso_callback?method=${t}`,c=ti(e,"sso_login_url"),l=ti(e,"sso_token_url"),d=ti(e,"sso_userinfo_url"),u=ti(e,"sso_scopes"),f=ti(e,"sso_oidc_discovery_url");try{let h,g,p,I,y,w,C;if(i==="OIDC"){let R=await SO(f||c);if(h=R.tokenUrl,g=R.userUrl,p="sub",I="preferred_username",y=u||"openid profile",!nae(n,vO(r),r.req.query("state")||""))return r.text("incorrect or expired state parameter",400);let U=r.req.query("code")||"",D=await(await fetch(h,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({grant_type:"authorization_code",code:U,client_id:n,client_secret:s,redirect_uri:a,scope:y}).toString()})).json().catch(()=>({}));if(w=D.access_token,!w)throw new Error("no access_token in token response");if(g){C=await(await fetch(g,{headers:{Authorization:`Bearer ${w}`,Accept:"application/json"}})).json().catch(()=>({}));let Q=C?.preferred_username||C?.name||C?.nickname||"";if(!C?.sub&&!Q){let v=D.id_token;if(v){let E=bO(v);C=C||{},C.sub=C.sub||E?.sub,C.name=Q||E?.name||E?.preferred_username||""}}Q&&(C.name=Q)}else{let B=D.id_token;if(!B)throw new Error("no id_token and no userinfo endpoint");C=bO(B)||{},C.sub=C.sub||C.name||""}}else{let R=kO(i,c,l,d,u);if(!R)return r.text("invalid platform",400);h=R.tokenUrl,g=R.userUrl,p=R.idField,I=R.usernameField,y=R.scope;let U=r.req.query(R.authField)||"";if(!U)return r.text("No code provided",400);let T;if(R.tokenStyle==="json")T=await fetch(h,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({clientId:n,clientSecret:s,code:U,grantType:"authorization_code"})});else{let v={client_id:n,client_secret:s,code:U,redirect_uri:a,scope:y,...R.extraForm||{}};T=await fetch(h,{method:"POST",headers:{Accept:"application/json"},body:new URLSearchParams(v).toString()})}let D=await T.json().catch(()=>({}));if(w=D.access_token||D.accessToken,!w)throw new Error(`token exchange failed: ${D.error||T.status}`);let B={Accept:"application/json"};i==="Dingtalk"?B["x-acs-dingtalk-access-token"]=w:B.Authorization=`Bearer ${w}`,C=await(await fetch(g,{headers:B})).json().catch(()=>({}))}let b=String(C?.id??C?.sub??C?.[p]??"");if(!b||b==="0")return r.text("cannot get user id from SSO provider",400);if(t==="get_sso_id")return o?r.redirect(`${hu(r)}/@manage?sso_id=${encodeURIComponent(b)}`,302):r.html(BO("sso_id",b));let x=(e.users||[]).find(R=>R.sso_id===b);if(!x){if(!s0(e,"sso_auto_register"))return r.text("user not found and auto register is disabled",400);let U=String(C?.login??C?.[I]??C?.name??"");x=await oae(e,U||b,b)}let _=await sae(x,r);return o?r.redirect(`${hu(r)}/@login?token=${encodeURIComponent(_)}`,302):r.html(BO("token",_))}catch(h){return r.text(h.message||"SSO error",500)}});function bO(r){try{let e=r.split(".");if(e.length<2)return null;let t=e[1].replace(/-/g,"+").replace(/_/g,"/"),i=t.padEnd(Math.ceil(t.length/4)*4,"="),n=atob(i);return JSON.parse(n)}catch{return null}}wr();Ao();Ve();Qi();var Ga=new Xe;function ri(r){let e="";for(let t of r)e+=String.fromCharCode(t);return btoa(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}function Ha(r){let e=r.replace(/-/g,"+").replace(/_/g,"/"),t=e.padEnd(Math.ceil(e.length/4)*4,"="),i=atob(t),n=new Uint8Array(i.length);for(let s=0;s<i.length;s++)n[s]=i.charCodeAt(s);return n}function aae(r){let e="";for(let t of r)e+=String.fromCharCode(t);return btoa(e)}function cae(r){let e=atob(r),t=new Uint8Array(e.length);for(let i=0;i<e.length;i++)t[i]=e.charCodeAt(i);return t}function Ka(r){let e=r.u8[r.i++],t=e>>5,i=e&31,n=i;if(i===24)n=r.u8[r.i++];else if(i===25)n=r.u8[r.i]<<8|r.u8[r.i+1],r.i+=2;else if(i===26)n=r.u8[r.i]<<24|r.u8[r.i+1]<<16|r.u8[r.i+2]<<8|r.u8[r.i+3],r.i+=4;else if(i===27){let s=0n;for(let o=0;o<8;o++)s=s<<8n|BigInt(r.u8[r.i++]);n=Number(s)}else if(i===31){if(t===4){let s=[];for(;r.u8[r.i]!==255;)s.push(Ka(r));return r.i++,s}else if(t===5){let s={};for(;r.u8[r.i]!==255;){let o=Ka(r),a=Ka(r);s[String(o)]=a}return r.i++,s}}switch(t){case 0:return n;case 1:return-1-n;case 2:{let s=r.u8.slice(r.i,r.i+n);return r.i+=n,s}case 3:{let s=new TextDecoder().decode(r.u8.slice(r.i,r.i+n));return r.i+=n,s}case 4:{let s=[];for(let o=0;o<n;o++)s.push(Ka(r));return s}case 5:{let s={};for(let o=0;o<n;o++){let a=Ka(r),c=Ka(r);s[String(a)]=c}return s}default:throw new Error(`unsupported CBOR major type ${t}`)}}async function lae(r){let e=r[1],t=r[3];if(e===2){let i=r[-1],n=r[-2],s=r[-3];if(i!==1)throw new Error("unsupported EC curve (only P-256)");let o={kty:"EC",crv:"P-256",x:ri(new Uint8Array(n)),y:ri(new Uint8Array(s))};return await crypto.subtle.importKey("jwk",o,{name:"ECDSA",namedCurve:"P-256"},!1,["verify"])}if(e===3){let i=r[-1],n=r[-2],s={kty:"RSA",n:ri(new Uint8Array(i)),e:ri(new Uint8Array(n))};return await crypto.subtle.importKey("jwk",s,{name:"RSASSA-PKCS1-v1_5",hash:"SHA-256"},!1,["verify"])}throw new Error(`unsupported COSE kty ${e}`)}async function dae(r){let t=Ka({u8:r,i:0}),i=t.authData,n=t.attStmt||{},s=i.slice(0,32),o=i[32],a=i[33]<<24|i[34]<<16|i[35]<<8|i[36];if(!(o&64))throw new Error("attestedCredentialData not present");let c=37,l=i.slice(c,c+16);c+=16;let d=i[c]<<8|i[c+1];c+=2;let u=i.slice(c,c+d);c+=d;let f={u8:i.slice(c),i:0},h=Ka(f),g=await lae(h);return{authData:i,publicKey:g,aaguid:l,credentialId:u,signCount:a,flags:o}}function $w(r,e){let i=(r.settings||[]).find(n=>n.key===e)?.value;return i==="true"||i==="1"}function DO(r,e,t=""){let i=(r.settings||[]).find(n=>n.key===e);return i?.value?String(i.value):t}function Vw(r,e){let t=DO(e,"webauthn_rp_id");if(t)return t;try{return new URL(r.req.url).hostname}catch{return"localhost"}}function lv(){let r=new Uint8Array(32);return crypto.getRandomValues(r),r}function QO(r){return aae(new TextEncoder().encode(JSON.stringify(r)))}function _O(r){return JSON.parse(new TextDecoder().decode(cae(r)))}async function uae(r,e){let t={id:r.id,username:r.username,role:r.role,exp:Math.floor(Date.now()/1e3)+604800,jti:typeof crypto.randomUUID=="function"?crypto.randomUUID():ri(lv())},i=await kr(e);return await fo(t,i)}function o0(r){return r.webauthn_credentials||[]}Ga.post("/webauthn_begin_login",async r=>{let e=await ne(r.env);if(!$w(e,"webauthn_login_enabled"))return r.json({code:403,message:"WebAuthn is not enabled",data:null},403);let t=r.req.query("username")||"",i=Vw(r,e),n=lv(),s={challenge:ri(n),userVerification:"preferred"},o;if(t){let c=(e.users||[]).find(l=>l.username===t);if(!c)return r.json({code:400,message:"user not found",data:null},400);s.userId=String(c.id),s.username=t,o=o0(c).map(l=>({id:typeof l.id=="string"?l.id:ri(new Uint8Array(l.id)),type:"public-key"})),s.allowedCredentials=o}let a={challenge:s.challenge,rpId:i,userVerification:s.userVerification};return o&&o.length>0&&(a.allowCredentials=o),r.json({code:200,message:"success",data:{options:a,session:QO(s)}})});Ga.post("/webauthn_finish_login",async r=>{let e=await ne(r.env);if(!$w(e,"webauthn_login_enabled"))return r.json({code:403,message:"WebAuthn is not enabled",data:null},403);let t=r.req.header("session")||r.req.header("Session")||"",i;try{i=_O(t)}catch{return r.json({code:400,message:"invalid session",data:null},400)}let n=await r.req.json().catch(()=>({})),s=Vw(r,e);try{let o=Ha(n.id||""),a=JSON.parse(new TextDecoder().decode(Ha(n.response?.clientDataJSON||"")));if(a.challenge!==i.challenge)return r.json({code:400,message:"challenge mismatch",data:null},400);if(a.type!=="webauthn.get")return r.json({code:400,message:"invalid ceremony type",data:null},400);let c=Ha(n.response?.authenticatorData||"");if(c.length<37)throw new Error("invalid authenticatorData");let l=c.slice(0,32),d=new Uint8Array(await crypto.subtle.digest("SHA-256",new TextEncoder().encode(s)));if(ri(l)!==ri(d))return r.json({code:400,message:"rpId hash mismatch",data:null},400);let u=r.req.query("username")||i.username||"",f=u?(e.users||[]).find(R=>R.username===u):null,h;if(f)h=o0(f).find(R=>(typeof R.id=="string"?R.id:ri(new Uint8Array(R.id)))===n.id);else{let R=Ha(n.response?.userHandle||"");if(R.length){let U=new TextDecoder().decode(R);f=(e.users||[]).find(T=>String(T.id)===U),f&&(h=o0(f).find(T=>(typeof T.id=="string"?T.id:ri(new Uint8Array(T.id)))===n.id))}}if(!f||!h)return r.json({code:400,message:"credential not found",data:null},400);let g=h.publicKey;if(!g)return r.json({code:400,message:"credential missing public key",data:null},400);let p=await crypto.subtle.importKey("jwk",g,g.kty==="RSA"?{name:"RSASSA-PKCS1-v1_5",hash:"SHA-256"}:{name:"ECDSA",namedCurve:"P-256"},!1,["verify"]),I=Ha(n.response?.signature||""),y=new Uint8Array(await crypto.subtle.digest("SHA-256",Ha(n.response?.clientDataJSON||""))),w=new Uint8Array(c.length+y.length);w.set(c,0),w.set(y,c.length);let C=g.kty==="RSA"?{name:"RSASSA-PKCS1-v1_5"}:{name:"ECDSA",hash:"SHA-256"};if(!await crypto.subtle.verify(C,p,I,w).catch(()=>!1))return r.json({code:400,message:"signature verification failed",data:null},400);let x=c[33]<<24|c[34]<<16|c[35]<<8|c[36];if(h.sign_count!==void 0&&x!==0&&x<=h.sign_count)return r.json({code:400,message:"stale signCount (possible replay)",data:null},400);h.sign_count=x,await fe(e,r.env);let _=await uae(f,r);return r.json({code:200,message:"success",data:{token:_}})}catch(o){return r.json({code:400,message:o.message||"WebAuthn login failed",data:null},400)}});Ga.post("/webauthn_begin_registration",async r=>{let e=await ne(r.env);if(!$w(e,"webauthn_login_enabled"))return r.json({code:403,message:"WebAuthn is not enabled",data:null},403);let t=await Me(r);if(!t||t.disabled)return r.json({code:401,message:"Unauthorized",data:null},401);let i=Vw(r,e),n=lv(),s=new TextEncoder().encode(String(t.id)),o={challenge:ri(n),userId:String(t.id),username:t.username,userVerification:"preferred"},a=o0(t).map(l=>({id:typeof l.id=="string"?l.id:ri(new Uint8Array(l.id)),type:"public-key"})),c={challenge:o.challenge,rp:{name:DO(e,"site_title","OpenList"),id:i},user:{id:ri(s),name:t.username,displayName:t.username},pubKeyCredParams:[{type:"public-key",alg:-7},{type:"public-key",alg:-257}],timeout:6e4,authenticatorSelection:{userVerification:o.userVerification,residentKey:"preferred"},attestation:"none"};return a.length>0&&(c.excludeCredentials=a),r.json({code:200,message:"success",data:{options:c,session:QO(o)}})});Ga.post("/webauthn_finish_registration",async r=>{let e=await ne(r.env);if(!$w(e,"webauthn_login_enabled"))return r.json({code:403,message:"WebAuthn is not enabled",data:null},403);let t=await Me(r);if(!t||t.disabled)return r.json({code:401,message:"Unauthorized",data:null},401);let i=r.req.header("Session")||r.req.header("session")||"",n;try{n=_O(i)}catch{return r.json({code:400,message:"invalid session",data:null},400)}let s=await r.req.json().catch(()=>({})),o=Vw(r,e);try{let a=JSON.parse(new TextDecoder().decode(Ha(s.response?.clientDataJSON||"")));if(a.challenge!==n.challenge)return r.json({code:400,message:"challenge mismatch",data:null},400);if(a.type!=="webauthn.create")return r.json({code:400,message:"invalid ceremony type",data:null},400);let c=Ha(s.response?.attestationObject||""),{publicKey:l,aaguid:d,credentialId:u,signCount:f}=await dae(c),g={id:s.id||ri(u),publicKey:await crypto.subtle.exportKey("jwk",l),aaguid:ri(d),sign_count:f,created_at:new Date().toISOString()},p=t;return p.webauthn_credentials||(p.webauthn_credentials=[]),p.webauthn_credentials.push(g),await fe(e,r.env),r.json({code:200,message:"Registered Successfully",data:null})}catch(a){return r.json({code:400,message:a.message||"registration failed",data:null},400)}});Ga.post("/delete_authn",async r=>{let e=await Me(r);if(!e||e.disabled)return r.json({code:401,message:"Unauthorized",data:null},401);let i=(await r.req.json().catch(()=>({}))).id||"",n=await ne(r.env),s=(n.users||[]).find(a=>a.id===e.id);if(!s)return r.json({code:404,message:"user not found",data:null},404);let o=(s.webauthn_credentials||[]).length;return s.webauthn_credentials=(s.webauthn_credentials||[]).filter(a=>a.id!==i),s.webauthn_credentials.length===o?r.json({code:404,message:"credential not found",data:null},404):(await fe(n,r.env),r.json({code:200,message:"Deleted Successfully",data:null}))});Ga.get("/getcredentials",async r=>{let e=await Me(r);if(!e||e.disabled)return r.json({code:401,message:"Unauthorized",data:null},401);let t=o0(e).map(i=>({id:i.id,fingerprint:i.aaguid||""}));return r.json({code:200,message:"success",data:t})});var a0=new Map,gu=new Map;function fae(r){return r.req.header("CF-Connecting-IP")||r.req.header("x-real-ip")||r.req.header("x-forwarded-for")?.split(",")[0]?.trim()||"unknown"}function Aae(){let r=Date.now();if(a0.size>2e4)for(let[e,t]of a0)r-t.start>6e4&&a0.delete(e);if(gu.size>2e4)for(let[e,t]of gu)r-t.start>36e5&&gu.delete(e)}async function hae(r,e){let t=fae(r),i=Date.now(),n=0,s=0;try{let o=await ne(r.env),a={};for(let c of o.settings||[])a[c.key]=c.value;n=parseInt(a.ip_limit,10)||0,s=parseInt(a.traffic_limit,10)||0}catch{}if(Aae(),n>0){let o=a0.get(t);if(!o||i-o.start>6e4)a0.set(t,{start:i,count:1});else if(o.count+=1,o.count>n)return r.json({code:429,message:"Too many requests, slow down",data:null},429)}if(s>0){let o=gu.get(t),a=s*1024*1024;if(o&&i-o.start<=36e5&&o.bytes>=a)return r.json({code:429,message:"Traffic limit exceeded",data:null},429)}if(await e(),(r.req.query("token")||r.req.query("access_token"))&&(r.res?.headers?.set("Referrer-Policy","no-referrer"),r.res?.headers?.set("Cache-Control","no-store, no-cache, must-revalidate"),r.res?.headers?.set("Pragma","no-cache")),s>0){let o=parseInt(r.res?.headers?.get("content-length")||"0",10)||0;if(o>0){let a=gu.get(t);!a||i-a.start>36e5?gu.set(t,{start:i,bytes:o}):a.bytes+=o}}}function FO(r){r.use("*",hae),r.use("*",async(e,t)=>{let{auditMiddleware:i}=await Promise.resolve().then(()=>(Qi(),VI));return i(e,t)}),r.use("*",async(e,t)=>{await t(),e.res.headers.set("X-Frame-Options","DENY"),e.res.headers.set("X-Content-Type-Options","nosniff"),e.res.headers.set("Content-Security-Policy","default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data: blob: https:; font-src 'self' data:; connect-src 'self'; media-src 'self' blob:; frame-ancestors 'none'"),e.res.headers.set("Strict-Transport-Security","max-age=31536000; includeSubDomains"),e.res.headers.set("Referrer-Policy","no-referrer")}),r.use("*",fk({origin:(e,t)=>{if(!e)return e;let s=((t.env||{}).ALLOW_URLS||(typeof process<"u"?process.env?.ALLOW_URLS:"")||"").split(",").map(a=>a.trim()).filter(Boolean);if(s.length>0)return s.includes(e)?e:null;let o=t.req.header("host")||"";try{if(new URL(e).host===o)return e}catch{}return null},allowHeaders:["Content-Type","Authorization","X-Requested-With"],allowMethods:["GET","POST","PUT","DELETE","OPTIONS"],exposeHeaders:["Content-Length","Content-Type"],maxAge:600,credentials:!0})),r.route("/raw",Es),r.route("/fs",dt),r.route("/auth",pn),r.route("/public",wo),r.route("/admin",Ue),r.route("/mcp",n0),r.route("/debug",av),r.route("/share",ei),r.route("/task",Pi),r.route("/auth",jw),r.route("/authn",Ga),r.route("/d",Es),r.route("/sd",Es),r.route("/p",Es),r.route("/me",cu),r.get("/me",Mw),r.post("/me/update",Ow),r.post("/user/update_pwd",sO),r.get("/logout",uu),r.post("/logout",uu),r.get("/health",e=>e.json({ok:!0,name:"OpenList",version:"v4.2.3",environment:e.env?.ENVIRONMENT||"development"})),r.get("/healthz",async e=>{let t={},i=!0;try{let o=await ne(e.env);t.config={ok:!0,storages:o?.storages?.length??0,users:o?.users?.length??0}}catch(o){i=!1,t.config={ok:!1,error:o?.message||String(o)}}let n;try{n=await bl(e.env)}catch(o){i=!1,n={configured:!1,connected:!1,error:o?.message||String(o)}}t.persistence={configured:!!n?.configured,connected:!!n?.connected,platform:n?.platform??null,error:n?.error??null};let s=zn(e.env);return n?.configured||(t.persistence.mode=s?"unavailable":"memory",s?(t.persistence.note=Fs,i=!1):t.persistence.note="No persistence configured \u2014 changes are ephemeral"),n?.configured&&!n?.connected&&(i=!1),e.json({ok:i,name:"OpenList",version:"v4.2.3",environment:e.env?.ENVIRONMENT||"development",checks:t},i?200:503)})}wr();Ve();var gae="https://res.oplist.org/logo/logo.svg",za=new Xe;function c0(r){return r.redirect(gae,302)}za.get("/logo.svg",c0);za.get("/logo.png",c0);za.get("/favicon.svg",c0);za.get("/favicon.png",c0);za.get("/favicon.ico",c0);za.get("/:folder/:filepath*",async r=>{let t=r.env?.ASSET_URLS||process.env.ASSET_URLS;if(!t)return r.text("Static resource not found",404);let i=await ne(),n="latest";try{let l=i.get("SELECT * FROM x_settings WHERE key = 'version'");if(l&&l.value){let d=l.value.match(/Frontend:\s*([^\s-]+)/);d&&(n=d[1])}}catch{}let s=t.replace(/\$version/g,n),o=r.req.param("folder"),a=r.req.param("filepath")||"",c=`${s}/${o}/${a}`;return r.redirect(c,302)});wr();sl();Yt();bA();function PO(r,e){return YR(r,e)}Da();Ve();var dv=new Xe,pae=r=>{try{let e=r.executionCtx;return!e||typeof e.waitUntil!="function"?void 0:{waitUntil:t=>e.waitUntil(t),env:r.env}}catch{return}};async function mae(r){let e=r.req.header("Authorization")||"";if(e.startsWith("Basic "))try{let t=atob(e.substring(6).trim()),i=t.indexOf(":");if(i<0)return null;let n=t.substring(0,i),s=t.substring(i+1),{users:o}=await ZA(r.env),a=o.find(c=>c.username===n&&!c.disabled);return a?a.password?await lu(a,s)?a:null:s===""?a:null:null}catch{return null}if(e.startsWith("Bearer ")){let t=await Nn(r);return t?t.user:null}return null}function yae(r){let t=new URL(r.req.url).pathname.replace(/^\/dav/,"");t||(t="/");try{return decodeURIComponent(t)}catch{return t}}function l0(r){let t=(r.startsWith("/")?r:"/"+r).split("/").filter(Boolean),i=t.pop()||"";return{dir:"/"+t.join("/"),name:i}}dv.all("/*",async r=>{let e=await mae(r);if(!e)return r.text("Unauthorized",401,{"WWW-Authenticate":'Basic realm="OpenList"'});let t=_a(e,Qa.WEBDAV_READ),i=_a(e,Qa.WEBDAV_MANAGE);if(!t&&!i)return r.text("Forbidden",403);let n=r.req.method.toUpperCase(),s=yae(r),o=pae(r);try{switch(n){case"OPTIONS":return r.header("DAV","1, 2"),r.header("Allow","OPTIONS, PROPFIND, GET, HEAD, PUT, MKCOL, DELETE, MOVE, COPY"),r.header("MS-Author-Via","DAV"),r.body(null,200);case"PROPFIND":{if(!t)return r.text("Forbidden",403);let a=r.req.header("Depth")||"1",l=((await Zt(s,o)).content||[]).map(f=>({name:f.name,size:f.size||0,isFolder:!!f.is_dir,modified:f.modified||new Date().toISOString()})),d=s==="/"?"/":s.endsWith("/")?s:s+"/",u=PO(d,l);return r.body(u,207,{"Content-Type":"application/xml; charset=utf-8"})}case"GET":case"HEAD":{if(!t)return r.text("Forbidden",403);let{item:a,rawUrl:c}=await Di(s,o);if(!a)return r.text("Not found",404);if(a.is_dir)return r.text("Is a directory",400);let l="/api/p";try{let u=(await tt(s))?.storage;if(u){let f=await jn().catch(()=>({}));Hw({storage:u,driver:u.driver,filename:s,proxyTypes:al(f.proxy_types),textTypes:al(f.text_types)})||(l="/api/d")}}catch{}return r.redirect(c||`${l}${s.startsWith("/")?"":"/"}${s}`,302)}case"PUT":{if(!i)return r.text("Forbidden",403);let a=Buffer.from(await r.req.arrayBuffer());return await Tn(s,a,o),r.body(null,201)}case"MKCOL":return i?(await xA(s,o),r.body(null,201)):r.text("Forbidden",403);case"DELETE":{if(!i)return r.text("Forbidden",403);let{dir:a,name:c}=l0(s);return await ka(a,[c],o),r.body(null,204)}case"MOVE":{if(!i)return r.text("Forbidden",403);let a=r.req.header("Destination")||"",c=a;try{c=decodeURIComponent(new URL(a,r.req.url).pathname).replace(/^\/dav/,"")}catch{}let l=l0(s),d=l0(c);return await Od(l.dir,d.dir,[l.name],o),r.body(null,201)}case"COPY":{if(!i)return r.text("Forbidden",403);let a=r.req.header("Destination")||"",c=a;try{c=decodeURIComponent(new URL(a,r.req.url).pathname).replace(/^\/dav/,"")}catch{}let l=l0(s),d=l0(c);return await EA(l.dir,d.dir,[l.name],o),r.body(null,201)}case"LOCK":case"UNLOCK":return r.text("Locking not supported",405);default:return r.text("Method Not Allowed",405)}}catch(a){let c=Ne(a);return c.includes("not found")||c.includes("storage not found")?r.text("Not Found",404):r.text(c,500)}});wr();sl();Yt();Da();var fl=new Xe;function Yw(r){return String(r).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")}function Dr(r,e,t){let i=`<?xml version="1.0" encoding="UTF-8"?> +<Error><Code>${Yw(r)}</Code><Message>${Yw(e)}</Message></Error>`;return new Response(i,{status:t,headers:{"Content-Type":"application/xml","x-amz-request-id":"-"}})}function Ww(r){let i=new URL(r.req.url).pathname.replace(/^\/s3\/?/,"").split("/").filter(Boolean),n=i[0]||"",s=i.slice(1).map(decodeURIComponent).join("/");return{bucket:n,key:s}}async function d0(r){let e=await Nn(r);return e?e.user:null}var u0=r=>{try{let e=r.executionCtx;return e&&typeof e.waitUntil=="function"?{waitUntil:t=>e.waitUntil(t)}:void 0}catch{return}};fl.get("/",async r=>{if(!await d0(r))return Dr("AccessDenied","Authentication required",403);try{let n=`<?xml version="1.0" encoding="UTF-8"?> <ListAllMyBucketsResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <Owner><ID>openlist</ID><DisplayName>openlist</DisplayName></Owner> <Buckets> -${((await Zt("/",e0(r))).content||[]).filter(s=>s.is_dir).map(s=>` <Bucket><Name>${Nw(s.name)}</Name><CreationDate>${Nw(s.modified||new Date().toISOString())}</CreationDate></Bucket>`).join(` +${((await Zt("/",u0(r))).content||[]).filter(s=>s.is_dir).map(s=>` <Bucket><Name>${Yw(s.name)}</Name><CreationDate>${Yw(s.modified||new Date().toISOString())}</CreationDate></Bucket>`).join(` `)} </Buckets> -</ListAllMyBucketsResult>`;return new Response(n,{status:200,headers:{"Content-Type":"application/xml"}})}catch(t){return Sr("InternalError",Ne(t),500)}});al.get("/*",async r=>{if(!await ZA(r))return Sr("AccessDenied","Authentication required",403);let{bucket:t,key:i}=qw(r);if(!t||!i)return Sr("NoSuchKey","NoSuchKey",404);let n=`/${t}/${i}`;try{let{item:s,rawUrl:o}=await Si(n,e0(r));return!s||s.is_dir?Sr("NoSuchKey","NoSuchKey",404):o?r.redirect(o,302):Sr("NoSuchKey","NoSuchKey",404)}catch(s){return Sr("NoSuchKey",Ne(s),404)}});al.on("HEAD","/*",async r=>{if(!await ZA(r))return Sr("AccessDenied","Authentication required",403);let{bucket:t,key:i}=qw(r);if(!t||!i)return Sr("NoSuchKey","NoSuchKey",404);try{let{item:n}=await Si(`/${t}/${i}`,e0(r));if(!n||n.is_dir)return Sr("NoSuchKey","NoSuchKey",404);let s={"Content-Length":String(n.size||0),"Content-Type":String(n.type||"application/octet-stream"),"Last-Modified":n.modified||new Date().toISOString()};return new Response(null,{status:200,headers:s})}catch{return Sr("NoSuchKey","NoSuchKey",404)}});al.put("/*",async r=>{if(!await ZA(r))return Sr("AccessDenied","Authentication required",403);let{bucket:t,key:i}=qw(r);if(!t||!i)return Sr("InvalidArgument","Invalid bucket/key",400);try{let n=Buffer.from(await r.req.arrayBuffer());return await _n(`/${t}/${i}`,n,e0(r)),new Response(null,{status:200,headers:{ETag:`"${Date.now().toString(16)}"`}})}catch(n){return Sr("InternalError",Ne(n),500)}});al.delete("/*",async r=>{if(!await ZA(r))return Sr("AccessDenied","Authentication required",403);let{bucket:t,key:i}=qw(r);if(!t||!i)return Sr("InvalidArgument","Invalid bucket/key",400);let n=i.lastIndexOf("/"),s=n>=0?`/${t}/${i.slice(0,n)}`:`/${t}`,o=n>=0?i.slice(n+1):i;try{return await va(s,[o],e0(r)),new Response(null,{status:204})}catch(a){return Sr("NoSuchKey",Ne(a),404)}});Ve();ec();var xs=new Xe;function Soe(r,e,t){return!!(/\.[a-zA-Z0-9]+$/.test(r)||(t==="GET"||t==="HEAD")&&e.includes("text/html"))}var Doe=["/api/public/env_check","/api/public/init_status","/api/healthz"];function Qoe(r){return Doe.includes(r)}xs.use("*",async(r,e)=>{let t=r.env||{};try{let s=new URL(r.req.url);t.__requestOrigin||(t.__requestOrigin=s.origin)}catch{}Lx(t);let{pathname:i}=new URL(r.req.url);if(!(Soe(i,r.req.header("accept")||"",r.req.method)||Qoe(i))){let s=await Ux(t);if(s)return r.json({code:503,message:s,data:{error:"STORAGE_CONFIG_ERROR",configError:s}},503)}await e()});var Vq=new Xe;jq(Vq);xs.route("/api",Vq);xs.route("/d",ws);xs.route("/sd",ws);xs.route("/p",ws);xs.route("/",Ga);xs.route("/dav",jb);xs.route("/s3",al);var $b=null;function Yq(r){$b=r}xs.all("*",async r=>{let e=r.env;if(e&&e.ASSETS&&typeof e.ASSETS.fetch=="function"){let t=new URL(r.req.url),i=await e.ASSETS.fetch(r.req.raw);if(i.status>=200&&i.status<300){if(t.pathname==="/"||t.pathname==="/index.html"){let s=new Headers(i.headers);return s.set("Cache-Control","no-cache, must-revalidate"),new Response(i.body,{status:i.status,headers:s})}return i}let n=new Request(`${t.origin}/`,r.req.raw);return e.ASSETS.fetch(n)}return $b&&(r.req.method==="GET"||r.req.method==="HEAD")?r.body($b,200,{"Content-Type":"text/html; charset=utf-8","Cache-Control":"no-cache, must-revalidate"}):r.text("404 Not Found",404)});var Wq=xs;var Xq=`<!doctype html> +</ListAllMyBucketsResult>`;return new Response(n,{status:200,headers:{"Content-Type":"application/xml"}})}catch(t){return Dr("InternalError",Ne(t),500)}});fl.get("/*",async r=>{if(!await d0(r))return Dr("AccessDenied","Authentication required",403);let{bucket:t,key:i}=Ww(r);if(!t||!i)return Dr("NoSuchKey","NoSuchKey",404);let n=`/${t}/${i}`;try{let{item:s,rawUrl:o}=await Di(n,u0(r));return!s||s.is_dir?Dr("NoSuchKey","NoSuchKey",404):o?r.redirect(o,302):Dr("NoSuchKey","NoSuchKey",404)}catch(s){return Dr("NoSuchKey",Ne(s),404)}});fl.on("HEAD","/*",async r=>{if(!await d0(r))return Dr("AccessDenied","Authentication required",403);let{bucket:t,key:i}=Ww(r);if(!t||!i)return Dr("NoSuchKey","NoSuchKey",404);try{let{item:n}=await Di(`/${t}/${i}`,u0(r));if(!n||n.is_dir)return Dr("NoSuchKey","NoSuchKey",404);let s={"Content-Length":String(n.size||0),"Content-Type":String(n.type||"application/octet-stream"),"Last-Modified":n.modified||new Date().toISOString()};return new Response(null,{status:200,headers:s})}catch{return Dr("NoSuchKey","NoSuchKey",404)}});fl.put("/*",async r=>{if(!await d0(r))return Dr("AccessDenied","Authentication required",403);let{bucket:t,key:i}=Ww(r);if(!t||!i)return Dr("InvalidArgument","Invalid bucket/key",400);try{let n=Buffer.from(await r.req.arrayBuffer());return await Tn(`/${t}/${i}`,n,u0(r)),new Response(null,{status:200,headers:{ETag:`"${Date.now().toString(16)}"`}})}catch(n){return Dr("InternalError",Ne(n),500)}});fl.delete("/*",async r=>{if(!await d0(r))return Dr("AccessDenied","Authentication required",403);let{bucket:t,key:i}=Ww(r);if(!t||!i)return Dr("InvalidArgument","Invalid bucket/key",400);let n=i.lastIndexOf("/"),s=n>=0?`/${t}/${i.slice(0,n)}`:`/${t}`,o=n>=0?i.slice(n+1):i;try{return await ka(s,[o],u0(r)),new Response(null,{status:204})}catch(a){return Dr("NoSuchKey",Ne(a),404)}});Ve();ic();var On=new Xe;function Iae(r,e,t){return!!(/\.[a-zA-Z0-9]+$/.test(r)||(t==="GET"||t==="HEAD")&&e.includes("text/html"))}var wae=["/api/public/env_check","/api/public/init_status","/api/healthz"];function xae(r){return wae.includes(r)}var TO=["/kv-list","/kv-get","/kv-put","/kv-delete"];function Cae(r){return TO.includes(r)}On.use("*",async(r,e)=>{let t=r.env||{};try{let s=new URL(r.req.url);t.__requestOrigin||(t.__requestOrigin=s.origin)}catch{}sC(t);let{pathname:i}=new URL(r.req.url);if(!(Iae(i,r.req.header("accept")||"",r.req.method)||xae(i)||Cae(i))){let s=await rc(t);if(s.message){let o=IO(s);return r.json({code:503,message:s.message,data:{error:"STORAGE_CONFIG_ERROR",code:s.code,configError:s.message,summary:Au(s.message),reason:o.reason,suggestion:o.suggestion}},503)}}await e()});for(let r of TO)On.all(r,e=>e.json({code:410,message:`KV proxy endpoint "${r}" is not served by this deployment. It only exists on EdgeOne Edge Functions (functions/kv-*) or Cloudflare Pages Functions. See /api/public/env_check for the storage backend actually in use.`,data:null},410));var UO=new Xe;FO(UO);On.route("/api",UO);On.route("/d",Es);On.route("/sd",Es);On.route("/p",Es);On.route("/",za);On.route("/dav",dv);On.route("/s3",fl);var uv=null;function RO(r){uv=r}On.all("*",async r=>{let e=r.env;if(e&&e.ASSETS&&typeof e.ASSETS.fetch=="function"){let t=new URL(r.req.url),i=await e.ASSETS.fetch(r.req.raw);if(i.status>=200&&i.status<300){if(t.pathname==="/"||t.pathname==="/index.html"){let s=new Headers(i.headers);return s.set("Cache-Control","no-cache, must-revalidate"),new Response(i.body,{status:i.status,headers:s})}return i}let n=new Request(`${t.origin}/`,r.req.raw);return e.ASSETS.fetch(n)}return uv&&(r.req.method==="GET"||r.req.method==="HEAD")?r.body(uv,200,{"Content-Type":"text/html; charset=utf-8","Cache-Control":"no-cache, must-revalidate"}):r.text("404 Not Found",404)});var NO=On;var qO=`<!doctype html> <html lang="en" translate="no"> <head> <!-- customize head --> @@ -331,10 +348,10 @@ ${((await Zt("/",e0(r))).content||[]).filter(s=>s.is_dir).map(s=>` <Bucket><Nam <!-- customize body --> <script nomodule>!function(){var e=document,t=e.createElement("script");if(!("noModule"in t)&&"onbeforeload"in t){var n=!1;e.addEventListener("beforeload",(function(e){if(e.target===t)n=!0;else if(!e.target.hasAttribute("nomodule")||!n)return;e.preventDefault()}),!0),t.type="module",t.src=".",e.head.appendChild(t),t.remove()}}();</script> - <script nomodule crossorigin id="vite-legacy-entry" data-src="/assets/index-legacy-B4QQ1uqY.js"></script> + <script nomodule crossorigin id="vite-legacy-entry" data-src="/assets/index-legacy-bDtrBaPt.js"></script> <script> (function(){ -var preloads = [{"parentTagName":"head","tagName":"script","attrs":{"type":"module","crossorigin":"","src":"/assets/index-B-s_dX0I.js"}},{"parentTagName":"head","tagName":"link","attrs":{"rel":"modulepreload","crossorigin":"","href":"/assets/rolldown-runtime-Dd_uD5pT.js"}},{"parentTagName":"head","tagName":"link","attrs":{"rel":"modulepreload","crossorigin":"","href":"/assets/en-Cb1udzIe.js"}},{"parentTagName":"head","tagName":"link","attrs":{"rel":"modulepreload","crossorigin":"","href":"/assets/zh-CN-D7L2on4W.js"}},{"parentTagName":"head","tagName":"link","attrs":{"rel":"modulepreload","crossorigin":"","href":"/assets/zh-TW-BKjAsqlH.js"}},{"parentTagName":"head","tagName":"link","attrs":{"rel":"modulepreload","crossorigin":"","href":"/assets/preload-helper-BlqD8ULz.js"}},{"parentTagName":"head","tagName":"link","attrs":{"rel":"modulepreload","crossorigin":"","href":"/assets/store-D5E1xINA.js"}},{"parentTagName":"head","tagName":"link","attrs":{"rel":"modulepreload","crossorigin":"","href":"/assets/lib-CTIdCeoU.js"}},{"parentTagName":"head","tagName":"link","attrs":{"rel":"stylesheet","crossorigin":"","href":"/assets/index-MlAvXon-.css"}},{"parentTagName":"body","tagName":"script","attrs":{"nomodule":"","crossorigin":"","id":"vite-legacy-polyfill","data-src":"/assets/polyfills-legacy-0sNFWZin.js"}}]; +var preloads = [{"parentTagName":"head","tagName":"script","attrs":{"type":"module","crossorigin":"","src":"/assets/index-D2iEqHy6.js"}},{"parentTagName":"head","tagName":"link","attrs":{"rel":"modulepreload","crossorigin":"","href":"/assets/rolldown-runtime-Dd_uD5pT.js"}},{"parentTagName":"head","tagName":"link","attrs":{"rel":"modulepreload","crossorigin":"","href":"/assets/en-Cb1udzIe.js"}},{"parentTagName":"head","tagName":"link","attrs":{"rel":"modulepreload","crossorigin":"","href":"/assets/zh-CN-D7L2on4W.js"}},{"parentTagName":"head","tagName":"link","attrs":{"rel":"modulepreload","crossorigin":"","href":"/assets/zh-TW-BKjAsqlH.js"}},{"parentTagName":"head","tagName":"link","attrs":{"rel":"modulepreload","crossorigin":"","href":"/assets/preload-helper-BlqD8ULz.js"}},{"parentTagName":"head","tagName":"link","attrs":{"rel":"modulepreload","crossorigin":"","href":"/assets/store-D5E1xINA.js"}},{"parentTagName":"head","tagName":"link","attrs":{"rel":"modulepreload","crossorigin":"","href":"/assets/lib-CTIdCeoU.js"}},{"parentTagName":"head","tagName":"link","attrs":{"rel":"stylesheet","crossorigin":"","href":"/assets/index-MlAvXon-.css"}},{"parentTagName":"body","tagName":"script","attrs":{"nomodule":"","crossorigin":"","id":"vite-legacy-polyfill","data-src":"/assets/polyfills-legacy-0sNFWZin.js"}}]; function setAttribute(target, attrs) { for (var key in attrs) { target.setAttribute(key, attrs[key]); @@ -359,7 +376,7 @@ document.getElementsByTagName(item.parentTagName)[0].appendChild(childNode); </body> </html> -`;Yq(Xq);function Foe(r){return Wq.fetch(r.request,r.env,r)}var d2e=Foe;export{d2e as default,Foe as onRequest}; +`;RO(qO);function Bae(r){return NO.fetch(r.request,r.env,r)}var nbe=Bae;export{nbe as default,Bae as onRequest}; /*! Bundled license information: crypto-js/ripemd160.js: diff --git a/package.json b/package.json index 74b6b91d..eb843344 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,7 @@ "description": "Storage format: `map` (whole JSON), `key` (per-key), `sql` (relational, Go-compatible). Defaults to `map`." }, "DB_DRIVER": { - "description": "Storage driver: `auto` (default), `blob`, `cfkv`, `kv`, `d1`, `do`, `mysql`. Leave as `auto` unless you need to force one." + "description": "Storage driver: `auto` (default), `blob`, `cfkv`, `kv`, `d1`, `do`, `mysql`. Leave as `auto` unless you need to force one. An explicitly configured driver is never replaced automatically: if it is unavailable, the app reports a configuration error (including which driver auto-detection would have picked) instead of writing to another backend. Invalid driver/format pairs are reported the same way." } } }, diff --git a/readmes/README_en.md b/readmes/README_en.md index 6bc01fe6..5fdccb5b 100644 --- a/readmes/README_en.md +++ b/readmes/README_en.md @@ -160,7 +160,7 @@ pnpm run deploy:worker - `sql`: Relational database table format, fully compatible with Go backend, suitable for D1/MySQL **DB_DRIVER** (Database Driver) -- `auto` (default): Auto-detect available drivers (priority: blob → cfkv → kv → d1) +- `auto` (default): Auto-detect available drivers (priority: mysql → d1 → kv → cfkv → blob → do) - `blob`: Tencent EdgeOne Blob / Alibaba ESA Blob - `cfkv`: Cloudflare KV REST API (requires `CF_ACCOUNT`, `CF_KV_UUID`, `CF_API_KEY`) - `kv`: Cloudflare KV binding (binding name is fixed to `KV`) @@ -190,6 +190,14 @@ CF_KV_UUID=your_namespace_id CF_API_KEY=your_api_token ``` +> An explicitly configured driver is **never replaced automatically**. If it is +> unavailable the request is rejected with an actionable reason (including which +> driver auto-detection would have picked); `/api/public/env_check` and +> `/api/public/init_status` report the same reason plus a one-line fix. This +> prevents "I thought it was KV, but writes went to another backend". +> Invalid driver/format pairs (e.g. `DB_FORMAT=sql` + `DB_DRIVER=kv`) are +> reported the same way — the app never rewrites your configuration. + **Backward Compatibility:** - `DB_DRIVER=json` auto-converts to `DB_FORMAT=map` + auto-detect driver diff --git a/src/backend/index.ts b/src/backend/index.ts index 8e9c77c8..2e080877 100644 --- a/src/backend/index.ts +++ b/src/backend/index.ts @@ -5,7 +5,8 @@ import { assetsRouter } from "./server/assets" import { webdavRouter } from "./server/webdav" import { s3Router } from "./server/s3" import { setEnvCtx } from "./internal/model/db" -import { getStoreConfigError } from "./internal/model/store/backend" +import { getStoreConfigErrorDetail } from "./internal/model/store/backend" +import { storageErrorSummary, uiStorageError } from "./server/storage-error" const app = new Hono() @@ -48,6 +49,27 @@ function isDiagnosticPath(pathname: string): boolean { return DIAGNOSTIC_PATHS.includes(pathname) } +/** + * KV 代理传输端点(EdgeOne Edge Function 侧由 functions/kv-* 提供)。 + * + * 这些路径是「驱动探测/读写」的传输层,不是业务请求,本 Worker 也不提供它们 + * (只有 EdgeOne Edge Function / CF Pages Functions 才有)。必须两种情况都避开: + * + * 1. **不走存储配置拦截**:kv 驱动的可用性判定就是向 `{origin}/kv-list` 发一次 + * 探测,而拦截逻辑会解析驱动 —— 若这些请求落进拦截,就会「探测请求 → 解析 + * 驱动 → 再探测自身」无限自调用(本地 `wrangler dev` 表现为满屏 + * `GET /kv-list 503`,且耗时随嵌套层数不断增长)。 + * 2. **不能落进 SPA 兜底**:兜底会返回 index.html(HTTP 200),探测会把 + * 「拿到 HTML」误判成「KV 可用」,之后读写全部拿到 HTML 而报错。 + * + * 因此这里显式回 410:既明确说明本部署不提供该端点,也让探测得到干净的失败。 + */ +const KV_PROXY_PATHS = ["/kv-list", "/kv-get", "/kv-put", "/kv-delete"] + +function isKvProxyPath(pathname: string): boolean { + return KV_PROXY_PATHS.includes(pathname) +} + app.use("*", async (c, next) => { // 关键:每个请求注入 KV binding 上下文(CF Workers 多实例/冷启动时 // 模块级 globalEnvCtx 为 null,会导致 getDb()/saveDb() 退回内存模式, @@ -74,15 +96,31 @@ app.use("*", async (c, next) => { const { pathname } = new URL(c.req.url) const exempt = isStaticOrShell(pathname, c.req.header("accept") || "", c.req.method) || - isDiagnosticPath(pathname) + isDiagnosticPath(pathname) || + // KV 代理传输端点:解析驱动会再探测自身,必须绕开(见 isKvProxyPath) + isKvProxyPath(pathname) if (!exempt) { - const configError = await getStoreConfigError(env) - if (configError) { + // 用 Detail 版本:除完整原因外还带分类码与一句话修复建议,前端据此 + // 展示「哪里错了 + 该改成什么」。只给一段长文本时,用户(和日志读者) + // 能看到的只是「驱动不可用」,不知道该把 DB_DRIVER 改成什么。 + const detail = await getStoreConfigErrorDetail(env) + if (detail.message) { + const ui = uiStorageError(detail) return c.json( { code: 503, - message: configError, - data: { error: "STORAGE_CONFIG_ERROR", configError }, + // message 保持完整原因(兼容既有客户端与日志排查) + message: detail.message, + data: { + error: "STORAGE_CONFIG_ERROR", + code: detail.code, + configError: detail.message, + // 界面展示 summary(完整一句短原因)+ suggestion(怎么改); + // reason 是截断后的完整说明,留给工具与日志阅读。 + summary: storageErrorSummary(detail.message), + reason: ui.reason, + suggestion: ui.suggestion, + }, }, 503, ) @@ -95,6 +133,26 @@ app.use("*", async (c, next) => { // 在 Serverless 环境中,所有逻辑都是无状态的且由请求触发。 // 这里不应该初始化任何常驻的后台任务 (如 Cron 或 线程池)。 +// KV 代理传输端点:本部署不提供(只有 EdgeOne Edge Function / CF Pages +// Functions 的 functions/kv-* 提供)。显式回 410,避免这些请求落进 SPA 兜底 +// 被当成「HTTP 200」而让 kv 驱动误判为可用(详见 isKvProxyPath 注释)。 +for (const path of KV_PROXY_PATHS) { + app.all(path, (c) => + c.json( + { + code: 410, + message: + `KV proxy endpoint "${path}" is not served by this deployment. ` + + `It only exists on EdgeOne Edge Functions (functions/kv-*) or ` + + `Cloudflare Pages Functions. See /api/public/env_check for the ` + + `storage backend actually in use.`, + data: null, + }, + 410, + ), + ) +} + // 挂载 API 到 /api const api = new Hono() setupRouter(api) diff --git a/src/backend/internal/model/db.ts b/src/backend/internal/model/db.ts index fc534137..39c784ad 100644 --- a/src/backend/internal/model/db.ts +++ b/src/backend/internal/model/db.ts @@ -1146,8 +1146,13 @@ const loadDb = async (envCtx?: any) => { // 此时必须回退到请求级 globalEnvCtx,否则 readDriver 读不到 DB_DRIVER、 // getD1 读不到 DB binding,会错误回退到 json 后端读到旧的 KV 数据。 const activeEnv = envCtx || globalEnvCtx - const backend = await storeBackendLoader(activeEnv) + // 解析器可被测试注入(__setStoreBackendLoaderForTest),故用 let + 可空: + // 解析动作必须在 try 内 —— 配置类错误(驱动缺失、驱动 × 格式非法)要与 + // 读取错误走同一条降级路径,否则它会以「未捕获异常」的形式抛出, + // 让 /init/setup 只给前端一个没有原因的裸 500。 + let backend: Awaited<ReturnType<typeof storeBackendLoader>> | null = null try { + backend = await storeBackendLoader(activeEnv) const persisted = await backend.load(activeEnv) if (persisted) { await unsealDb(persisted, await getEncryptionKey(activeEnv)) @@ -1167,7 +1172,7 @@ const loadDb = async (envCtx?: any) => { // 短暂不可见,此时不能把默认库当成事实,更不能让它写回存储。 if (dbTrusted && memoryDb) { console.warn( - `[DB] Backend ${backend.name} returned empty while a trusted snapshot exists; ` + + `[DB] Backend ${backend?.name ?? "storage"} returned empty while a trusted snapshot exists; ` + `keeping the in-memory snapshot to avoid overwriting real config.`, ) ensureDefaultSettings(memoryDb) @@ -1182,7 +1187,7 @@ const loadDb = async (envCtx?: any) => { } catch (err: any) { // 读取失败绝不能静默回退到默认库并落盘——这正是「数据库被清空」的根因。 console.error( - `[DB] Error reading config from ${backend.name}:`, + `[DB] Error reading config from ${backend?.name ?? "storage"}:`, err?.message || err, ) dbLastLoadError = String(err?.message || err) @@ -1307,7 +1312,30 @@ function readEnvEncryptionKey(env: any): string | null { const raw = env?.JWT_SECRET || (typeof process !== "undefined" ? process.env?.JWT_SECRET : "") - return typeof raw === "string" && raw.length >= 16 ? raw : null + // 只要求「非空」:长度是运维建议(推荐 32+),不是硬门槛。 + // 强制长度会带来一个很坏的副作用 —— 用户明明配了 JWT_SECRET,却因为 + // 不足 16/32 字符被判为「未配置」,于是自动生成逻辑又生成一把新密钥, + // 造成「环境变量密钥」与「持久化密钥」并存、加解密分裂。 + return typeof raw === "string" && raw.trim().length > 0 ? raw : null +} + +/** + * JWT_SECRET 的推荐长度(仅用于文案与告警,**不做强制校验**)。 + * + * 为什么是 32:`openssl rand -hex 32` 输出 64 个 hex 字符,但 32 字符已是 + * 足够强的 HS256 密钥;这里取 32 作为「推荐值」的下界。 + */ +export const RECOMMENDED_JWT_SECRET_LENGTH = 32 + +/** + * 判断某个密钥是否短于推荐长度(用于**提示**,不用于拒绝)。 + */ +export function isJwtSecretShort(secret: string | null | undefined): boolean { + return ( + typeof secret === "string" && + secret.length > 0 && + secret.length < RECOMMENDED_JWT_SECRET_LENGTH + ) } /** 进程内缓存:避免每次 load/save 都读存储 */ @@ -1350,7 +1378,7 @@ async function getEncryptionKey(envCtx?: any): Promise<string | null> { // 回退到持久化密钥(仅读取) try { const persisted = await readPersistedSecret(env, ENCRYPTION_SECRET_KV_KEY) - if (persisted && persisted.length >= 16) { + if (persisted && persisted.trim().length > 0) { cachedEncryptionKey = persisted cachedFromEnv = false return persisted @@ -1392,7 +1420,7 @@ export async function isEncryptionReady(envCtx?: any): Promise<boolean> { // 直查持久化(不走缓存) try { const persisted = await readPersistedSecret(env, ENCRYPTION_SECRET_KV_KEY) - return Boolean(persisted && persisted.length >= 16) + return Boolean(persisted && persisted.trim().length > 0) } catch { return false } @@ -1459,7 +1487,7 @@ export async function ensureEncryptionSecret( // 2. 已存在则复用(存在性门控,永不覆盖) const existing = await readPersistedSecret(env, ENCRYPTION_SECRET_KV_KEY) - if (existing && existing.length >= 16) { + if (existing && existing.trim().length > 0) { cachedEncryptionKey = existing cachedFromEnv = false return existing @@ -1497,7 +1525,7 @@ export async function ensureEncryptionSecret( } // 读到的值不是我们写的那把(可能被并发 setup 覆盖):说明存在竞态, // 采用「先写入者优先」——复用已存在的密钥,避免用两把钥匙加解密。 - if (readBack && readBack.length >= 16 && readBack !== generated) { + if (readBack && readBack.trim().length > 0 && readBack !== generated) { console.warn( "[DB] A different encryption key already exists; adopting it to " + "keep encrypt/decrypt symmetric.", diff --git a/src/backend/internal/model/store/backend.ts b/src/backend/internal/model/store/backend.ts index 21e3c2eb..a8ceeb8e 100644 --- a/src/backend/internal/model/store/backend.ts +++ b/src/backend/internal/model/store/backend.ts @@ -55,23 +55,26 @@ export function readDriver(env?: any): StorageDriver { /** * 读取存储格式配置。 + * + * 契约(与官方文档一致):DB_FORMAT 与 DB_DRIVER 是**正交**的两个维度 —— + * 前者决定「怎么组织数据」(map / key / sql),后者决定「存到哪里」。 + * 因此 DB_FORMAT 缺省时**一律取全局默认 map**,绝不按驱动名改写: + * kv / d1 / blob / do / mysql 的缺省格式都是 map。 + * + * 历史遗留(已移除):旧版 DB_DRIVER=kv 承担「分表存储」语义,重构为 + * 「驱动层 + 格式层分离」后曾加过一条 `DB_DRIVER=kv 且无 DB_FORMAT → key` + * 的兼容映射。它的代价是「只设了 DB_DRIVER」的结果依赖驱动名(d1 得 map、 + * kv 得 key),且升级用户会静默从 map 布局切到 key 布局(两种布局的键名 + * 不同,互相读不到)。分表请显式配置 DB_FORMAT=key。 */ export function readFormat(env?: any): StorageFormat { const e = env || (typeof process !== "undefined" ? process.env : {}) || {} - // 向后兼容:DB_DRIVER=json → map + // 向后兼容:DB_DRIVER=json → map(旧驱动别名,与 readDriver 的 json→auto 成对) if (String(e.DB_DRIVER || "").trim().toLowerCase() === "json") { return "map" } - // 向后兼容:旧版 DB_DRIVER=kv(分表语义)且未指定格式 → key - if ( - String(e.DB_DRIVER || "").trim().toLowerCase() === "kv" && - !e.DB_FORMAT - ) { - return "key" - } - return readEnv("DB_FORMAT", "map", env) as StorageFormat } @@ -164,8 +167,18 @@ async function autoDetectDriver(env?: any): Promise<Driver> { } if (isServerlessRuntime(env)) { - // 禁止在 serverless 环境静默使用内存存储 - throw new Error(NO_STORAGE_MESSAGE) + // 禁止在 serverless 环境静默使用内存存储。 + // + // 这里必须带上 hint(否则 hintOf(err) 为 null,上层会回退到「Bind a storage + // backend or set DB_DRIVER=auto」这句通用话术)。该话术在 auto 模式下会形成 + // **循环建议**:用户本来就已经是 auto,却被告知「请设置 auto」。 + // 能走到这里说明「auto 已探测过所有候选驱动且一个都不可用」,因此真正缺的是 + // **绑定**,而不是改配置值 —— hint 要说清「绑什么」。 + throw storeError( + "NO_STORAGE", + NO_STORAGE_MESSAGE, + noStorageHint(env), + ) } console.warn( @@ -191,6 +204,62 @@ function hasMysqlConfig(env?: any): boolean { ) } +/** + * 无可用存储时的一句话修复建议(英文),随运行时平台给出「绑什么」。 + * + * ## 为什么不能复用「set DB_DRIVER=auto」 + * + * auto 模式下 `DB_DRIVER` **本来就是 auto**。此时还提示「set DB_DRIVER=auto」, + * 用户会陷入循环:改也改过了、报错依旧。真实原因是「auto 已把所有候选驱动探测 + * 了一遍,一个都不可用」——缺的是**平台侧绑定**,不是配置值。 + * + * 因此这里按平台给出可执行动作,并**明确点出 auto 已经试过了**,避免用户再去 + * 改那个已经正确的变量。 + * + * 与 `driverNotAvailableHint` 的区别:那个分支处理「显式指定了某个不可用的 + * 驱动」;本函数处理「未指定(或 auto)且没有任何驱动可用」。 + */ +function noStorageHint(env?: any): string { + const g = globalThis as any + const isEdgeOne = + Boolean(env?.EDGEONE_BLOB || g?.EDGEONE_BLOB) || + typeof g?.EdgeOne !== "undefined" || + Boolean( + env?.TENCENTCLOUD_SCF_FUNCTIONNAME || + (typeof process !== "undefined" && + process.env?.TENCENTCLOUD_SCF_FUNCTIONNAME), + ) + const isEsa = Boolean(env?.ESA_BLOB || g?.ESA_BLOB) || typeof g?.ESA !== "undefined" + // 无 CF 专属绑定特征时才可能是 CF;ESA/EdgeOne 已在上方排除 + const isCloudflare = !isEdgeOne && !isEsa + + if (isEdgeOne) { + return ( + "DB_DRIVER=auto already probed every driver. On EdgeOne, bind a Blob " + + "store (or enable the EdgeOne Blob SDK), or bind a KV namespace to an " + + "Edge Function and proxy it (Node functions do not receive KV bindings)." + ) + } + if (isEsa) { + return ( + "DB_DRIVER=auto already probed every driver. On Alibaba ESA, bind an " + + "ESA_BLOB store, or set DB_DRIVER=blob." + ) + } + if (isCloudflare) { + return ( + "DB_DRIVER=auto already probed every driver. On Cloudflare Workers, add " + + 'a binding to wrangler.jsonc: D1 as {"d1_databases":[{"binding":"DB"}]} ' + + 'or KV as {"kv_namespaces":[{"binding":"KV"}]}, then redeploy so the ' + + "binding is injected." + ) + } + return ( + "DB_DRIVER=auto already probed every driver. Bind a persistent backend " + + "(Cloudflare: D1/KV; EdgeOne: Blob; ESA: ESA_BLOB), then redeploy." + ) +} + /** * 无可用存储驱动时的错误信息(英文)。 * @@ -208,7 +277,23 @@ export const NO_STORAGE_MESSAGE = " DB_DRIVER=blob | kv | cfkv | d1 | do | mysql\n" + " DB_FORMAT=map | key | sql" -/** 驱动名 → 实现 */ +/** + * 显式指定 DB_DRIVER=memory 但运行在 serverless 环境时的错误文案。 + * + * 语义裁决:`memory` 是**合法驱动名**(不是拼写错误),但只在本地 Node 运行时 + * 有效。serverless(EdgeOne / Cloudflare / ESA)多实例、随时冷启,内存写入 + * 立刻随实例销毁而消失,却仍向调用方返回成功 —— 属于最危险的「静默数据丢失」, + * 因此在此环境下一律判为「无可用存储」(NO_STORAGE)。 + * + * 文案约束(见 server/storage-error.ts 的 reasonLines):诊断接口只透传前 3 行, + * 因此结论、原因、下一步动作必须全部落在前 3 行内。 + */ +export const MEMORY_SERVERLESS_MESSAGE = + 'DB_DRIVER="memory" is only valid on a local Node runtime.\n' + + "This deployment is serverless, where in-memory storage loses all data immediately.\n" + + "Set DB_DRIVER=auto, or bind a persistent backend (D1 / KV / Blob)." + +/** 驱动名 → 实现(memory 不在此表中,由 resolveDriver 单独处理,见下) */ const DRIVER_MAP: Record<string, Driver> = { blob: blobDriver, cfkv: cfkvDriver, @@ -218,23 +303,270 @@ const DRIVER_MAP: Record<string, Driver> = { mysql: mysqlDriver, } +/** + * 存储配置类错误的机器可读分类。 + * + * 供 /public/env_check 与 /public/init_status 把「为什么不能用」透给前端: + * 只给一句 "Storage driver is not configured correctly." 用户无法区分 + * 「组合写错」「绑定没配」「密钥缺失」「后端读不到」。 + */ +export type StoreConfigErrorCode = + | "INVALID_COMBINATION" + | "DRIVER_UNAVAILABLE" + | "UNKNOWN_DRIVER" + | "NO_STORAGE" + | "PROXY_CONFIG" + | "HEALTH_ERROR" + | "DRIVER_ERROR" + +/** + * 构造带分类码的错误,供 getStoreStatus 折叠成 configErrorCode。 + * + * `hint` 是给用户看的**一句话修复建议**(「改什么」),与 `message`(完整排查 + * 说明)分开: + * - message 在诊断接口里会被截断(见 server/public.ts 的 reasonLines), + * 只透传前 3 行,因此「答案」不能只放在 message 末尾; + * - 前端需要把建议放在显眼位置单独展示,靠解析 message 文案不可靠。 + */ +function storeError( + code: StoreConfigErrorCode, + message: string, + hint?: string, +): Error { + const err = new Error(message) as Error & { + storeCode?: StoreConfigErrorCode + storeHint?: string + } + err.storeCode = code + if (hint) err.storeHint = hint + return err +} + +/** 读取错误上的一句话修复建议(没有则返回 null)。 */ +function hintOf(err: any): string | null { + const hint = err?.storeHint + return typeof hint === "string" && hint.trim() ? hint.trim() : null +} + +/** 读取错误上的分类码(未标注时按 DRIVER_ERROR 处理)。 */ +function errorCodeOf(err: any): StoreConfigErrorCode { + return (err?.storeCode as StoreConfigErrorCode) || "DRIVER_ERROR" +} + +/** 存储配置文档(与 server 层的 DOC_DRIVER 指向同一页) */ +const STORAGE_DOC = "https://doc.oplist.org/ecosystem/official_worker/guide" + +/** + * 显式指定驱动不可用时的针对性提示。 + * + * 只报「driver is not available」会让用户困惑于「我明明绑了」:每种驱动 + * 需要的前置条件差异很大(KV 还区分 CF 原生绑定与 EdgeOne 代理),因此 + * 逐驱动写清「需要什么」与替代方案。 + */ +const DRIVER_UNAVAILABLE_HINTS: Record<string, string> = { + kv: + "The \"kv\" driver requires one of the following:\n" + + " - Cloudflare Workers: a KV namespace binding named exactly \"KV\" " + + "(wrangler.jsonc: \"kv_namespaces\": [{ \"binding\": \"KV\" }]);\n" + + " - EdgeOne Node Functions: KV is NOT injected into Node functions, so the " + + "Edge Function KV proxy must be reachable (known request origin / EO_KV_URLS) " + + "and JWT_SECRET (identical on the Edge Function side) must be set.\n" + + "If neither applies, use DB_DRIVER=auto, DB_DRIVER=blob (EdgeOne) or " + + "DB_DRIVER=d1 (Cloudflare).\n", + d1: + "The \"d1\" driver requires a Cloudflare D1 binding named \"DB\" " + + "(wrangler.jsonc: \"d1_databases\": [{ \"binding\": \"DB\", ... }]).\n" + + "EdgeOne has no D1 — use DB_DRIVER=blob there instead.\n", + cfkv: + "The \"cfkv\" driver requires Cloudflare API credentials: CF_ACCOUNT " + + "(or CLOUDFLARE_ACCOUNT_ID), CF_KV_UUID (or CLOUDFLARE_KV_NAMESPACE_ID) " + + "and CF_API_KEY (or CLOUDFLARE_API_TOKEN) with KV read/write permission.\n", + do: + "The \"do\" driver requires a Durable Objects namespace binding named \"DO\" " + + "(wrangler.jsonc: \"durable_objects\": { \"bindings\": [{ \"name\": \"DO\", " + + "\"class_name\": \"...\" }] } plus a matching migration).\n", + mysql: + "The \"mysql\" driver requires a Node runtime plus connection info " + + "(MYSQL_URLS, or MYSQL_HOST/MYSQL_PORT/MYSQL_USER/MYSQL_PASS/MYSQL_NAME). " + + "Cloudflare Workers cannot open raw TCP connections to MySQL.\n", + blob: + "The \"blob\" driver requires either the EdgeOne Blob SDK (only present " + + "inside the EdgeOne Makers runtime) or an ESA_BLOB binding on Alibaba ESA.\n", +} + +/** + * 诊断缓存:显式驱动不可用时,「auto 探测会选中哪个后端」。 + * + * 为什么要缓存:得到这个答案要跑一次真实探测(KV 代理会发 HTTP 探测请求), + * 而配置错误期间每个请求都会走到这里。以 env 指纹做键,配置一变即失效; + * 冷启动后重新计算。 + */ +let autoPickCache: { key: string; driver: Driver | null } | null = null + +/** + * 显式驱动不可用时,auto 会选中哪个可用后端(没有则 null)。 + * + * **只用于提示,绝不改变语义**:显式配置了 DB_DRIVER 就绝不回退 —— 回退会把 + * 数据写到用户没有指定的后端上,而且「暂时性不可用」(KV 代理 401、网络抖动) + * 也会触发切换,恢复后读路径又切回去,造成数据分裂。这里只是把「那你该改成 + * 什么」算出来,直接写进错误文案与诊断字段,用户抄一下即可。 + * + * 内存兜底(本地开发)不算可用后端:避免把生产部署引导到易失存储上。 + */ +async function autoPickDriver( + env: any, + requested: string, +): Promise<Driver | null> { + const key = `${requested}:${isServerlessRuntime(env) ? "sl" : "local"}:${envFingerprint(env)}` + if (autoPickCache?.key === key) return autoPickCache.driver + + let driver: Driver | null = null + try { + const auto = await autoDetectDriver(env) + if (auto && auto !== memoryDriver && auto.name !== requested) driver = auto + } catch { + // auto 也探测不到任何后端:保持原有提示(NO_STORAGE_MESSAGE 已在别处给出) + } + autoPickCache = { key, driver } + return driver +} + +/** 「auto 会选谁」的一行文案(没有可用后端时为空串)。 */ +function autoPickHint(driver: Driver | null): string { + return driver + ? `Auto-detection would pick: DB_DRIVER=${driver.name} ` + + `(or simply set DB_DRIVER=auto).\n` + : "" +} + +/** + * 驱动 × 格式组合校验。 + * + * 历史上非法组合(如 DB_FORMAT=sql + DB_DRIVER=kv)要到真正读写时才在 + * sqlFormat 内抛 "Driver kv does not support SQL queries":此时 env_check + * 仍报 ready,用户看到「环境一切正常」却在初始化时 500。 + * 这里在解析阶段就拒绝,并列出该驱动支持的格式。 + * + * ## 为什么需要「显式白名单」,而不仅是能力探测 + * + * 能力探测(有没有 get/put/delete/list)只能区分「KV 语义 / 关系语义」, + * 无法表达某个驱动**只支持其中一种 KV 格式**。典型是 blob: + * + * - blob 的 `get/put/delete/list` 齐备,因此按能力探测它能通过 map **和** key; + * - 但 blob 存储的实质是「一整个 JSON 文档」,只有 map 是自洽的: + * key 格式会把对象摊平成多条 `prefix:key` 记录,而 blob 只能整存整取, + * 落到 blob 上既写不出多个键、也 list 不出真实结构 —— 运行时才炸。 + * + * 因此这里叠加一层白名单:能表达「blob 仅 map」这种细粒度约束, + * 且未来若某驱动支持 map/sql 但**不支持** key,也能直接声明。 + */ +const DRIVER_FORMAT_WHITELIST: Record<string, StorageFormat[]> = { + // blob:单文档存储,只支持整存整取的 map + blob: ["map"], + // 显式列出其余驱动,避免新增驱动时「忘了加白名单 = 全放行」的静默风险。 + kv: ["map", "key"], + cfkv: ["map", "key"], + d1: ["map", "key", "sql"], + do: ["map", "key", "sql"], + mysql: ["map", "key", "sql"], + memory: ["map", "key"], +} + +function validateDriverFormat(driver: Driver, format: FormatAdapter): void { + // get/put/delete/list 在接口上是必选,但运行时仍可能缺失(第三方/降级实现), + // 因此这里按能力探测而非依赖类型声明。 + const d = driver as any + const supportsKv = Boolean(d.get && d.put && d.delete && d.list) + const supportsSql = Boolean(driver.query && driver.execute && driver.batch) + + // ① 能力探测:先排除与驱动**语义**根本不符的格式(如给 kv 配 sql)。 + const capabilityOk = format.name === "sql" ? supportsSql : supportsKv + + // ② 白名单:再排除「语义上属于该类、但该驱动并不支持」的格式(如 blob + key)。 + // 未登记的驱动按「不限制」处理(保留第三方驱动的可扩展性), + // 但内置驱动全部显式登记,见上表。 + const whitelist = DRIVER_FORMAT_WHITELIST[driver.name] + const whitelistOk = !whitelist || whitelist.includes(format.name as StorageFormat) + + if (capabilityOk && whitelistOk) return + + const supported = ( + whitelist ?? + [supportsKv ? "map | key" : null, supportsSql ? "sql" : null].filter(Boolean) + ).join(" | ") + + throw storeError( + "INVALID_COMBINATION", + `Invalid storage combination: DB_FORMAT="${format.name}" cannot be used with ` + + `DB_DRIVER="${driver.name}".\n` + + `Driver "${driver.name}" supports: ${supported || "no format"}.\n` + + (format.name === "sql" + ? "The \"sql\" format needs a relational driver (SQL query support): " + + "d1 | do | mysql.\n" + : `The "${format.name}" format needs a key-value driver ` + + "(get/put/delete/list): kv | cfkv | d1 | do | mysql.\n") + + `Fix DB_FORMAT or DB_DRIVER. See ${STORAGE_DOC}`, + // 非法组合通常只差一个变量,直接给出「改成什么」。 + // 优先建议改 DB_FORMAT(保持用户已选定的驱动),因为驱动往往是被平台 + // 唯一支持的(如 ESA 上只有 blob),而格式才是用户可自由选择的维度。 + format.name === "sql" + ? `Set DB_FORMAT=map (or key), or switch to a relational driver ` + + `(DB_DRIVER=d1 | do | mysql).` + : `Set DB_FORMAT=map for DB_DRIVER="${driver.name}"` + + (supported.includes("|") ? `, or one of: ${supported}.` : `.`), + ) +} + /** * 解析驱动。 * * 语义约定: * - `auto`:按优先级探测,全部不可用时:worker 环境报错,本地回退内存。 - * - 显式指定(如 DB_DRIVER=kv):**不回退**。若该驱动不可用则直接报错, + * - `memory`:合法驱动名,**仅本地 Node 有效**;serverless 下抛 NO_STORAGE + * (内存写入会静默丢失,且接口仍返回成功)。 + * - 其它显式指定(如 DB_DRIVER=kv):**不回退**。若该驱动不可用则直接报错, * 避免用户以为在用 KV、实际却落到别的后端或内存里。 */ -async function resolveDriver(name: StorageDriver, env?: any): Promise<Driver> { +async function resolveDriver( + // 形参类型放宽为 string:`DB_DRIVER=memory` 是合法用户输入,但 `StorageDriver` + // 联合类型**故意不含 "memory"**(它不参与「驱动名 → 实现」查表,见下方注释)。 + // 若在此收窄为 StorageDriver,下面的 `name === "memory"` 会被 TS 判为 + // 「永不成立的比较」,而这条分支恰恰是 `memory` 的唯一处理入口。 + name: StorageDriver | "memory", + env?: any, +): Promise<Driver> { if (name === "auto") { return await autoDetectDriver(env) } + // ── 显式 DB_DRIVER=memory ────────────────────────────────────────────── + // + // memory 是**合法驱动名**(用户意图明确:不要持久化),但只在本地 Node + // 运行时有效。因此不能像以前那样走到 DRIVER_MAP 查表、拿到 UNKNOWN_DRIVER + // 「未知驱动」——那既否定了用户的合法输入,也给不出任何修复建议 + // (suggestion 为 null,安装向导无从展示下一步动作)。 + // + // 这里在查表**之前**单独处理: + // - 本地:直接返回 memoryDriver(行为与 auto 回退内存一致); + // - serverless:抛 NO_STORAGE(语义是「本运行时没有可用存储」,而不是 + // 「你写错了一个变量」),并带上「改成什么」的一句话建议。 + if (name === "memory") { + if (!isServerlessRuntime(env)) { + console.log("[DB] Using explicitly configured driver: memory") + return memoryDriver + } + throw storeError( + "NO_STORAGE", + MEMORY_SERVERLESS_MESSAGE, + "Use DB_DRIVER=auto, or bind a persistent backend (D1 / KV / Blob).", + ) + } + const driver = DRIVER_MAP[name] if (!driver) { - throw new Error( - `Unknown DB_DRIVER "${name}". Valid values: auto, ${Object.keys( + throw storeError( + "UNKNOWN_DRIVER", + `Unknown DB_DRIVER "${name}". Valid values: auto, memory, ${Object.keys( DRIVER_MAP, ).join(", ")}`, ) @@ -248,20 +580,34 @@ async function resolveDriver(name: StorageDriver, env?: any): Promise<Driver> { available = false } - // 内存驱动在 worker 环境永不接受:数据会随实例销毁而消失, - // 但接口仍返回成功,属于最危险的一类「静默数据丢失」。 - if (driver === memoryDriver && isServerlessRuntime(env)) { - throw new Error(NO_STORAGE_MESSAGE) - } - if (!available) { - throw new Error( - `DB_DRIVER is set to "${name}", but that driver is not available in ` + - `this runtime. No fallback is performed for an explicitly configured ` + - `driver.\n` + + // ── 显式配置的驱动不可用:直接报错,绝不回退 ── + // + // 回退(哪怕是回退到 auto 会选中的那个后端)都会把数据写到用户没有指定的 + // 后端上,而且「暂时性不可用」(KV 代理 401、网络抖动)同样会触发切换, + // 等它恢复后读路径又切回去,造成数据分裂。因此显式配置一律硬失败。 + // + // 代价:校验期间每个依赖存储的 API 请求都会被 503 拦截(前端会停在初始化 + // 向导并展示下面的原因),所以文案必须自己说清怎么办 —— + // * 「auto 会选谁」排进前 3 行:诊断接口只透传前 3 行(见 + // server/public.ts 的 reasonLines,那里也写了这条约束); + // * 另外单独给出结构化 suggestion,供前端显眼展示。 + const auto = await autoPickDriver(env, name) + throw storeError( + "DRIVER_UNAVAILABLE", + // 首行必须是完整的一句短原因:界面只展示首行摘要(见 storage-error.ts + // 的 storageErrorSummary),混入后续说明会变成被截断的半句话。 + `DB_DRIVER is set to "${name}", but that driver is not available in this runtime.\n` + + `No fallback is performed for an explicitly configured driver.\n` + + autoPickHint(auto) + `Check the binding/credentials for "${name}", or set DB_DRIVER=auto ` + `to let the platform pick an available backend.\n` + + (DRIVER_UNAVAILABLE_HINTS[name] || "") + `Environment: ${isServerlessRuntime(env) ? "serverless/worker" : "local/container"}`, + auto + ? `Set DB_DRIVER=${auto.name} (or DB_DRIVER=auto) in your deployment variables.` + : `Set DB_DRIVER=auto in your deployment variables, or provide the ` + + `binding/credentials required by "${name}".`, ) } @@ -339,6 +685,10 @@ export async function getStorageBackend( const driver = await resolveDriver(driverName, env) const format = resolveFormat(formatName) + // 非法「驱动 × 格式」组合立即拒绝:否则要到真正读写时才报错, + // 而 env_check 会显示 ready,用户看到「环境正常」却在初始化时 500。 + validateDriverFormat(driver, format) + // 初始化驱动(建表等,幂等) if (driver.init) { try { @@ -381,6 +731,7 @@ export async function getStoreStatus(env?: any): Promise<any> { let driver: any = null let format: any = null let configError: string | null = null + let configErrorCode: StoreConfigErrorCode | null = null try { const resolved = await getStorageBackend(env) @@ -388,15 +739,22 @@ export async function getStoreStatus(env?: any): Promise<any> { format = resolved.format } catch (err: any) { // 无可用存储(如 serverless 环境未配置)时不应让状态接口崩溃, - // 而是返回可读的配置错误。 + // 而是返回可读的配置错误(含机器可读的分类码,供前端展示具体原因)。 const msg = String(err?.message || err) + const isNoStorage = msg.includes("No storage backend is available") return { driver: "none", format: "none", available: false, - configError: msg.includes("No storage backend is available") - ? NO_STORAGE_MESSAGE - : msg, + configError: isNoStorage ? NO_STORAGE_MESSAGE : msg, + configErrorCode: errorCodeOf(err), + /** 一句话修复建议(前端在显眼位置单独展示,不依赖解析 message) */ + // NO_STORAGE 现在自带平台感知的 hint(见 noStorageHint), + // 因此这里不再需要「or set DB_DRIVER=auto」那句循环话术兜底。 + // 保留兜底仅用于「老代码/异常路径没有带 hint」的情形,且文案不再提 auto。 + configSuggestion: + hintOf(err) || + (isNoStorage ? "Bind a persistent storage backend, then redeploy." : null), } } @@ -407,23 +765,25 @@ export async function getStoreStatus(env?: any): Promise<any> { health = { connected: false, error: err?.message || String(err) } } - // 代理模式下的配置校验(缺密钥时给出可操作的提示) - if (driver.name === "kv") { - try { - configError = checkProxyConfig(env) - } catch { - configError = null - } - if (configError) { - console.error("[DB] KV proxy configuration error:\n" + configError) - } - } - + // 注意:这里**刻意不**再做一次 checkProxyConfig 探测。 + // + // 能走到这里说明 resolveDriver 已成功返回 kv 实例,而 kv 能成功只有两条路: + // 1. 有原生 KV binding → checkProxyConfig 首行即 return null + // 2. 无 binding 但代理可用 + // (probeProxy 返回 ok 或 401,表示 secret + origin 至少齐全) + // → checkProxyConfig 同样为 null + // 3. 无 binding 且缺 secret → 已在 resolveDriver 抛 DRIVER_UNAVAILABLE, + // 根本到不了这里 + // 即:能到这里 ⇒ checkProxyConfig 必为 null,这个分支永远不会命中。 + // KV 代理的真实问题(缺密钥 / 401)由 getStoreConfigErrorDetail 统一负责, + // 那里才有完整的「原因 + 一句话建议」。 + // + // 这里只保留 health() 的结论:401 在 health 中视为不健康, + // 因此下面 `...health` 会把 connected=false + error 透出去。 return { driver: driver.name, format: format.name, ...(health || {}), - ...(configError ? { configError, available: false } : {}), } } @@ -451,6 +811,7 @@ async function getStorageStatusSafe(env?: any): Promise<any> { format: "none", available: false, configError: String(err?.message || err), + configErrorCode: errorCodeOf(err), } } } @@ -458,7 +819,7 @@ async function getStorageStatusSafe(env?: any): Promise<any> { /** * 持久化可用性的统一判定(单一来源)。 * - * 供 isPersistentStorageAvailable() 与 getStoreConfigError() 共用, + * 供 isPersistentStorageAvailable() 与 getStoreConfigErrorDetail() 共用, * 避免两处规则漂移导致「自检说不可用、实际请求却放行」。 */ function isPersistentStatus(status: any): boolean { @@ -472,16 +833,45 @@ function isPersistentStatus(status: any): boolean { } /** - * 仅返回存储配置错误(无错误时为 null)。 + * 同一份配置错误只打印一次(按实例)。 * - * 供全局中间件在每个 API 请求上做快速拦截。判定复用 getStoreStatus, - * 因此与 isPersistentStorageAvailable() / /public/env_check 结论一致。 + * 配置错误期间**每个** API 请求都会走到这里(全局 503 拦截),逐请求打印会把 + * 日志刷满、淹没其它信息(用户看到的「反复报错」多半就是它)。文案变化时 + * (配置改动或换了一种错)会重新打印;错误消失后重置,便于下次复现。 + * 需要实时状态时用 /api/public/env_check(它豁免拦截且始终返回最新结论)。 + */ +let lastConfigErrorLog: string | null = null + +/** + * 存储配置错误的「原因 + 分类码 + 一句话修复建议」。 + * + * 供全局中间件(503 拦截)与诊断接口(/public/env_check、/public/init_status) + * 共用同一判定,避免两处规则漂移。 + * + * @param opts.silent 不打印日志。诊断接口会被前端轮询(安装向导每秒一次), + * 由调用方决定是否需要日志,避免刷屏。 * * 不额外做缓存:getStorageBackend 内部已按 env 指纹缓存驱动解析, * 而 checkProxyConfig 是纯同步读取 env,开销可忽略。 */ -export async function getStoreConfigError(env?: any): Promise<string | null> { - if (!env || typeof env !== "object") return null +export async function getStoreConfigErrorDetail( + env?: any, + opts: { silent?: boolean } = {}, +): Promise<{ + code: StoreConfigErrorCode | null + message: string | null + /** 一句话修复建议(「改什么」);无建议时为 null */ + suggestion: string | null +}> { + const log = (label: string, msg: string) => { + if (opts.silent) return + const key = label + msg + if (lastConfigErrorLog === key) return + lastConfigErrorLog = key + console.error(label + msg) + } + if (!env || typeof env !== "object") + return { code: null, message: null, suggestion: null } // 缺代理密钥时优先给出「补密钥」这种可操作提示,而不是笼统的驱动错误。 // checkProxyConfig 是纯同步读取,开销可忽略。 @@ -490,60 +880,89 @@ export async function getStoreConfigError(env?: any): Promise<string | null> { // 1. 显式 DB_DRIVER=kv // 2. auto 模式最终选中 kv 驱动(否则用户只会看到不可读的 "HTTP 401", // 而真正原因是 X-Internal-Call 的密钥与 Edge Function 不一致) + // + // 两处返回的 code / suggestion 完全相同,故抽成局部函数,避免文案漂移。 + const proxyConfigError = (kvIssue: string) => { + log("[DB] KV proxy configuration error:\n", kvIssue) + return { + code: "PROXY_CONFIG" as StoreConfigErrorCode, + message: kvIssue, + suggestion: + "Set EO_KV_URLS to the correct deployment origin, or use DB_DRIVER=auto.", + } + } + const isKvRequested = String(env?.DB_DRIVER || "").trim().toLowerCase() === "kv" if (isKvRequested) { const kvIssue = checkProxyConfig(env) - if (kvIssue) { - console.error("[DB] KV proxy configuration error:\n" + kvIssue) - return kvIssue - } + if (kvIssue) return proxyConfigError(kvIssue) } const status = await getStorageStatusSafe(env) - // 配置齐全且健康:无错误 - if (isPersistentStatus(status)) return null + // 配置齐全且健康:无错误(重置去重状态,便于下次复现时仍能看到日志) + if (isPersistentStatus(status)) { + lastConfigErrorLog = null + return { code: null, message: null, suggestion: null } + } // 选中了 kv 但代理不可用:区分「缺密钥」与「密钥不匹配」。 // 后者表现为 HTTP 401 —— 代理已部署,只是 JWT_SECRET 与 Edge Function // 不一致或被轮换过,需要明确指出来才能排查。 if (!isKvRequested && String(status?.driver ?? "") === "kv") { const kvIssue = checkProxyConfig(env) - if (kvIssue) { - console.error("[DB] KV proxy configuration error:\n" + kvIssue) - return kvIssue - } + if (kvIssue) return proxyConfigError(kvIssue) if (status?.mode === "proxy" && status?.error?.includes("401")) { const hint = "KV proxy rejected the internal call (HTTP 401). The JWT_SECRET used " + "by this deployment does not match the one configured on the Edge " + "Functions serving the proxy. Make sure both use the same JWT_SECRET.\n" + "Alternatively set EO_KV_URLS to the correct deployment origin." - console.error("[DB] KV proxy authentication failed:\n" + hint) - return hint + log("[DB] KV proxy authentication failed:\n", hint) + return { + code: "PROXY_CONFIG", + message: hint, + suggestion: + "Use the same JWT_SECRET on the Edge Function and this deployment.", + } } } - // 已有明确原因(缺密钥 / 驱动解析失败 / 健康检查失败) + // 已有明确原因(缺密钥 / 驱动解析失败 / 组合非法 / 健康检查失败) const reason: string | null = status?.configError ? String(status.configError) : null if (reason) { - console.error("[DB] Storage configuration error:\n" + reason) - return reason + log("[DB] Storage configuration error:\n", reason) + return { + code: (status?.configErrorCode as StoreConfigErrorCode) || "DRIVER_ERROR", + message: reason, + // 「改什么」由驱动解析层给出(如 DRIVER_UNAVAILABLE 会带上 auto 的探测结论) + suggestion: (status?.configSuggestion as string) || null, + } } // 内存兜底:serverless 下写入会静默丢失,需要可操作提示 if (String(status?.driver ?? "none") === "memory") { - console.error("[DB] Storage configuration error:\n" + NO_STORAGE_MESSAGE) - return NO_STORAGE_MESSAGE + log("[DB] Storage configuration error:\n", NO_STORAGE_MESSAGE) + return { + code: "NO_STORAGE", + message: NO_STORAGE_MESSAGE, + suggestion: + "Bind a storage backend (D1 / KV / Blob) or set DB_DRIVER=auto.", + } } const healthError = status?.error ? String(status.error) : null if (healthError) { - console.error("[DB] Storage unhealthy:\n" + healthError) - return healthError + log("[DB] Storage unhealthy:\n", healthError) + return { + code: "HEALTH_ERROR", + message: healthError, + suggestion: + "Check the credentials/bindings of the configured driver, or set DB_DRIVER=auto.", + } } // 走到这里说明 isPersistentStatus 判为「不可用」但没有任何具体原因字段 @@ -556,6 +975,18 @@ export async function getStoreConfigError(env?: any): Promise<string | null> { ? NO_STORAGE_MESSAGE : `Storage driver "${driverName}" is not available in this runtime. ` + `Check its configuration and bindings, or set DB_DRIVER=auto.` - console.error("[DB] Storage unavailable:\n" + fallback) - return fallback + log("[DB] Storage unavailable:\n", fallback) + return { + code: driverName === "none" || driverName === "" ? "NO_STORAGE" : "DRIVER_ERROR", + message: fallback, + suggestion: + driverName === "none" || driverName === "" + ? "Bind a storage backend (D1 / KV / Blob) or set DB_DRIVER=auto." + : `Set DB_DRIVER=auto, or provide the binding/credentials required by "${driverName}".`, + } } + +// 说明:曾有一个只返回 message 的 getStoreConfigError(),在全局 503 拦截改用 +// getStoreConfigErrorDetail()(需要 code/reason/suggestion)后已无调用者,故删除。 +// 若将来确需「只要原因」的场景,用 getStoreConfigErrorDetail().message 即可, +// 不要重新引入并行实现 —— 两条规则容易漂移。 diff --git a/src/backend/internal/model/store/driver/kv.ts b/src/backend/internal/model/store/driver/kv.ts index 1586a963..6962fd03 100644 --- a/src/backend/internal/model/store/driver/kv.ts +++ b/src/backend/internal/model/store/driver/kv.ts @@ -54,12 +54,18 @@ function getKvBinding(env?: any): any | null { * 形成循环依赖; * 2. 打包产物中不能依赖源码相对路径的动态 import。 * - * 因此 KV 代理模式要求显式配置 JWT_SECRET(>=16 字符)。 + * 因此 KV 代理模式要求显式配置 JWT_SECRET(推荐 32+ 字符,不强制长度)。 */ function getProxySecret(env?: EnvContext): string | null { try { const s = env?.JWT_SECRET - return typeof s === "string" && s.length >= 16 ? s : null + // 只要求「非空」,不再强制 >=16: + // - 强制长度会把用户合法设置的短密钥判成「未配置」,进而报一个 + // 看起来无关的 NO_STORAGE / PROXY_CONFIG 错误,误导排查方向; + // - 密钥强度是**运维建议**(推荐 32+ / openssl rand -hex 32), + // 不是程序可以替他决定的门槛。此处与 db.ts:readEnvEncryptionKey + // 的策略保持一致,避免同一变量在不同路径下长度要求不同。 + return typeof s === "string" && s.trim().length > 0 ? s : null } catch { return null } @@ -70,7 +76,7 @@ function getProxySecret(env?: EnvContext): string | null { * * Triggered when all of the following hold: * 1. The current env has no KV binding, so the HTTP proxy must be used. - * 2. No JWT_SECRET (>= 16 chars) is configured, so the proxy cannot be + * 2. No JWT_SECRET is configured at all, so the proxy cannot be * authenticated. * * The combination "no binding + proxy required" only occurs on EdgeOne Node @@ -89,14 +95,13 @@ export function checkProxyConfig(env?: any): string | null { } return ( - "KV proxy mode requires the JWT_SECRET " + - "environment variable with at least 16 characters.\n" + + "KV proxy mode requires the JWT_SECRET environment variable to be set.\n" + "Reason: EdgeOne Node Functions cannot access KV directly and must go " + "through an Edge Function proxy, whose authentication depends on this " + "secret.\n" + "Add it under Environment Variables in the EdgeOne project settings, for " + "example:\n" + - " JWT_SECRET=<random string of 32+ characters>\n" + + " JWT_SECRET=<random string, 32+ characters recommended>\n" + "Generate one with: openssl rand -hex 32" ) } @@ -159,7 +164,8 @@ function getProxyBaseUrl(env?: EnvContext): string { * 判定:HTTP 200 表示代理与 KV 均可用;401 表示代理可达但鉴权失败, * 属于「代理部署存在但密钥不对」。 * - * 注意两个调用方对 401 的取舍不同,故这里只返回原始探测结果: + * 注意两个调用方对 401 的取舍不同,故这里只返回原始探测结果, + * 由 probeToAvailability() / probeToHealth() 分别映射(见其注释): * - isAvailable() 把 401 视为可用(代理已部署,驱动可被选中) * - health() 把 401 视为不可用(鉴权失败,持久化不可依赖) */ @@ -194,6 +200,31 @@ async function probeProxy( } } +/** + * 把「原始探测结果」映射为**可用性**(`isAvailable` 的语义)。 + * + * 401 视为可用:代理已部署,只是密钥不匹配 —— 此时应让 kv 被选中, + * 再由 `health()` 报出不健康。若这里判为不可用,`auto` 会悄悄换用别的后端, + * 而用户明明配了 KV 代理,只会更困惑。 + */ +function probeToAvailability(probe: { ok: boolean; status: number }): boolean { + return probe.ok || probe.status === 401 +} + +/** + * 把「原始探测结果」映射为**健康状态**(`health()` 的语义)。 + * + * 401 视为不健康:对依赖持久化的接口而言,鉴权失败就是不能读写, + * `/env_check` 不应把它判成 ready。 + * + * 两者对 401 的取舍**不同且是有意为之**。抽成具名函数是为了让这个差异 + * 在调用点显式可见,而不是散落在 `!probe.ok && probe.status !== 401` + * 这类字面表达式里(那需要读者反推语义)。 + */ +function probeToHealth(probe: { ok: boolean }): boolean { + return probe.ok +} + /** * 解析代理基础 URL,无法确定时抛出明确错误。 * @@ -228,7 +259,7 @@ export const kvDriver: Driver = { // 模式2: HTTP 代理(EdgeOne Node Functions 拿不到 binding) const probe = await probeProxy(env) - if (!probe.ok && probe.status !== 401) { + if (!probeToAvailability(probe)) { if (probe.error) console.error("[DB] KV proxy unavailable: " + probe.error) return false } @@ -447,11 +478,12 @@ export const kvDriver: Driver = { // 模式2: HTTP 代理模式。 // - // 判定比 isAvailable 更严格:健康状态必须真正可读写,401 表示鉴权 - // 失败(代理在但密钥不对),对依赖持久化的接口而言应报不可用, - // 而不是被 /env_check 判定为 ready。共用 probeProxy 仅复用探测动作。 + // 判定比 isAvailable 更严格(见 probeToHealth / probeToAvailability 的注释): + // 健康状态必须真正可读写,401 表示鉴权失败(代理在但密钥不对),对依赖 + // 持久化的接口而言应报不可用,而不是被 /env_check 判定为 ready。 + // 共用 probeProxy 仅复用探测动作,语义映射分别具名。 const probe = await probeProxy(env) - if (!probe.ok) { + if (!probeToHealth(probe)) { return { driver: "kv", mode: "proxy", diff --git a/src/backend/internal/model/store/json.ts b/src/backend/internal/model/store/json.ts index 00cb767e..38551f9a 100644 --- a/src/backend/internal/model/store/json.ts +++ b/src/backend/internal/model/store/json.ts @@ -336,12 +336,26 @@ export async function getKvBinding(envCtx?: any): Promise<{ // drivers are resolved by getStorageBackend() instead. The old wording // ("memory-only mode (data will not persist)") was therefore misleading, and // sent users with a working D1 backend chasing a non-existent problem. - // Report the truth: no KV-style binding was found, and say where to look. + // + // Only deployments that are *supposed* to use a KV/Blob backend get a message. + // When DB_DRIVER names a non-KV driver (d1 / mysql / do), a KV miss is + // irrelevant by construction — and this function is also reached by the audit + // log / logout blacklist / login-failure counters, so warning on every such + // write made "no KV binding" look like the cause of unrelated failures. const configuredDriver = String(env?.DB_DRIVER || "") .trim() .toLowerCase() - // 每个进程只提示一次(详见 kvNoneWarnedOnce 注释)。 - if (!kvNoneWarnedOnce) { + // 两重条件缺一不可: + // - expectsKvStyleBackend:只有「本该用 KV/Blob」的部署,缺绑定才是异常; + // 显式配 d1/mysql/do 时 KV 缺失是设计使然,不该告警(否则误导用户)。 + // - !kvNoneWarnedOnce:每个进程只提示一次,避免日志刷屏。 + const expectsKvStyleBackend = + !configuredDriver || + configuredDriver === "auto" || + configuredDriver === "kv" || + configuredDriver === "cfkv" || + configuredDriver === "blob" + if (expectsKvStyleBackend && !kvNoneWarnedOnce) { kvNoneWarnedOnce = true if (configuredDriver && configuredDriver !== "auto") { console.warn( diff --git a/src/backend/server/init_diagnostics.test.ts b/src/backend/server/init_diagnostics.test.ts new file mode 100644 index 00000000..7dbdd0c7 --- /dev/null +++ b/src/backend/server/init_diagnostics.test.ts @@ -0,0 +1,385 @@ +import assert from "node:assert/strict" +import { test } from "node:test" +import { Hono } from "hono" +import { setupRouter } from "./router" +import { uiStorageError } from "./storage-error" +import { + getStoreConfigErrorDetail, + getStoreStatus, +} from "../internal/model/store/backend" + +/** + * 「问题必须能被用户看见」的回归测试。 + * + * 历史现象:环境自检显示一切正常(ready=true),初始化却返回一个没有原因的 + * 500;用户既不知道是组合写错、绑定没配,还是后端读不到。 + * + * 因此这里锁定三件事: + * 1. 无效「驱动 × 格式」组合被识别为 INVALID_COMBINATION 并给出支持列表; + * 2. 驱动不可用时错误里写明需要什么(逐驱动提示); + * 3. 这些原因通过 /env_check(issue + error_code)与 /init_status + * (storage_error / db_load_error)以及 /init/setup 的 data.code/reason + * 透给前端。 + */ + +const JWT = "0123456789abcdef0123456789abcdef" + +const buildApp = () => { + const api = new Hono() + setupRouter(api) + const app = new Hono() + app.route("/api", api) + return app +} + +const jsonPost = (body: any) => + ({ + method: "POST", + headers: { "content-type": "application/json" }, + body: JSON.stringify(body), + }) as any + +function fakeKv() { + const store = new Map<string, string>() + return { + get: async (k: string) => store.get(k) ?? null, + put: async (k: string, v: string) => { + store.set(k, String(v)) + return true + }, + delete: async (k: string) => { + store.delete(k) + }, + list: async () => ({ keys: [...store.keys()] }), + } +} + +function fakeBlob() { + const store = new Map<string, string>() + return { + get: async (k: string) => { + const v = store.get(k) + return v === undefined ? null : { text: async () => v } + }, + put: async (k: string, v: string) => { + store.set(k, String(v)) + }, + delete: async (k: string) => { + store.delete(k) + }, + head: async (k: string) => (store.has(k) ? { key: k } : null), + list: async () => ({ keys: [...store.keys()].map((name) => ({ name })) }), + } +} + +test("无效组合:env_check 必须给出 STORAGE_INVALID_COMBINATION 与具体原因", async () => { + const env: any = { + DB_DRIVER: "kv", + DB_FORMAT: "sql", + JWT_SECRET: JWT, + KV: fakeKv(), + } + + // 解析阶段就该拒绝,并说明该驱动支持哪些格式 + const status = await getStoreStatus(env) + assert.equal(status.configErrorCode, "INVALID_COMBINATION") + assert.match(String(status.configError), /Invalid storage combination/) + assert.match(String(status.configError), /DB_FORMAT="sql"/) + assert.match(String(status.configError), /supports: map \| key/) + // 只报错、不自愈:不得偷偷换成别的驱动或格式 + assert.equal(status.driver, "none", "非法组合不得被自动解析成其它驱动") + assert.equal(status.format, "none", "非法组合不得被自动改成别的格式") + + const res = await buildApp().request("/api/public/env_check", { method: "GET" }, env) + const data = (await res.json()).data + assert.equal(data.ready, false, "非法组合不得被报告为就绪") + assert.equal(data.storage.available, false) + assert.equal(data.storage.error_code, "INVALID_COMBINATION") + assert.match(String(data.storage.error_message), /Invalid storage combination/) + + const issue = data.issues.find( + (i: any) => i.code === "STORAGE_INVALID_COMBINATION", + ) + assert.ok(issue, "必须给出专门的 issue 代码,而不是笼统的配置错误") + assert.match(String(issue.message), /Unsupported storage combination/) + assert.ok(String(issue.docUrl).startsWith("http")) +}) + +test("无效组合:init/setup 的 500 必须带上 code 与 reason(契约文案不变)", async () => { + const env: any = { + DB_DRIVER: "blob", + DB_FORMAT: "sql", + JWT_SECRET: JWT, + ESA_BLOB: fakeBlob(), + } + + const res = await buildApp().request( + "/api/public/init/setup", + jsonPost({ username: "admin", password: "admin1234" }), + env, + ) + assert.equal(res.status, 500) + const json: any = await res.json() + assert.equal( + json.message, + "database is not readable; refusing to initialize to avoid overwriting existing config", + "对外 message 保持兼容", + ) + assert.equal(json.data?.code, "INVALID_COMBINATION") + assert.match(String(json.data?.reason), /Invalid storage combination/) + assert.match( + String(json.data?.reason), + /d1 \| do \| mysql/, + "reason 要包含可操作的修复方向", + ) + + // 前端还可以通过轮询 init_status 拿到同一原因 + const st = (await ( + await buildApp().request("/api/public/init_status", { method: "GET" }, env) + ).json()).data + assert.match(String(st.db_load_error), /Invalid storage combination/) +}) + +test("驱动不可用:错误必须写明该驱动需要什么(d1 示例)", async () => { + const env: any = { DB_DRIVER: "d1", DB_FORMAT: "map", JWT_SECRET: JWT } + + const status = await getStoreStatus(env) + assert.equal(status.configErrorCode, "DRIVER_UNAVAILABLE") + // 逐驱动的前置条件(需要 d1_databases 绑定)写在完整文案里 + assert.match(String(status.configError), /d1_databases/) + assert.match( + String(status.configError), + /^DB_DRIVER is set to "d1", but that driver is not available in this runtime\.$/m, + "首行必须是一句完整的短原因:界面只展示这一行", + ) + + const data = (await ( + await buildApp().request("/api/public/env_check", { method: "GET" }, env) + ).json()).data + assert.equal(data.storage.error_code, "DRIVER_UNAVAILABLE") + assert.equal( + data.storage.summary, + `DB_DRIVER is set to "d1", but that driver is not available in this runtime.`, + "summary 是给界面的一行短句", + ) + // 接口只透传前 3 行,因此这 3 行必须是「原因 + 不回退 + 怎么做」 + assert.match( + String(data.storage.error_message), + /No fallback is performed for an explicitly configured driver/, + ) + assert.match(String(data.storage.error_message), /Check the binding\/credentials/) + assert.ok( + data.issues.some((i: any) => i.code === "STORAGE_CONFIG_ERROR"), + "驱动不可用仍归为配置错误", + ) +}) + +test("驱动不可用:错误里必须给出「auto 会选谁」的可操作答案", async () => { + // kv 不可用,但 Blob 可用:显式配置不回退,但必须说清「改成什么」。 + const env: any = { + DB_DRIVER: "kv", + DB_FORMAT: "map", + JWT_SECRET: JWT, + ESA_BLOB: fakeBlob(), + } + + const status = await getStoreStatus(env) + assert.equal(status.configErrorCode, "DRIVER_UNAVAILABLE") + assert.match( + String(status.configError), + /Auto-detection would pick: DB_DRIVER=blob/, + "必须告诉用户改成什么(而不是让他自己猜)", + ) +}) + +test("驱动不可用:截断展示的文案里也必须保留「改成什么」+ 结构化建议", async () => { + // 前端只拿到截断后的 error_message / issue.message(见 server/storage-error.ts + // 的 reasonLines:配置类错误只透传前 3 行)。若「Auto-detection would pick」 + // 被排在 message 末尾,用户看到的仍是一段被砍断的说明 —— 这正是「提示不友好」 + // 的根因,因此这里同时锁定顺序与建议字段。 + const env: any = { + DB_DRIVER: "kv", + DB_FORMAT: "map", + JWT_SECRET: JWT, + ESA_BLOB: fakeBlob(), + } + + const data = (await ( + await buildApp().request("/api/public/env_check", { method: "GET" }, env) + ).json()).data + + assert.match( + String(data.storage.error_message), + /Auto-detection would pick: DB_DRIVER=blob/, + "答案必须落在被透传的前 3 行里,否则前端看到的还是一段被砍断的说明", + ) + assert.match(String(data.storage.suggestion), /DB_DRIVER=blob/) + + const issue = data.issues.find((i: any) => i.code === "STORAGE_CONFIG_ERROR") + assert.ok(issue) + assert.match( + String(issue.suggestion), + /DB_DRIVER=blob/, + "issue 必须带可展示的一行建议", + ) + assert.ok( + !String(issue.suggestion).includes("\n"), + "建议必须是单行短句,否则又变成一段长文", + ) + + // 安装向导只有 init_status 可用(其余接口被 503 拦截),它也要带上建议 + const st = (await ( + await buildApp().request("/api/public/init_status", { method: "GET" }, env) + ).json()).data + assert.match(String(st.storage_suggestion), /DB_DRIVER=blob/) +}) + +test("503 拦截层:文案形状为「截断原因 + 单行建议」", async () => { + // 全局中间件用 uiStorageError 组装 data.reason / data.suggestion, + // 与诊断接口共用同一套截断规则,避免两处粒度漂移。 + const env: any = { + DB_DRIVER: "kv", + DB_FORMAT: "map", + JWT_SECRET: JWT, + ESA_BLOB: fakeBlob(), + } + const detail = await getStoreConfigErrorDetail(env, { silent: true }) + const ui = uiStorageError(detail) + + assert.match(String(ui.reason), /Auto-detection would pick: DB_DRIVER=blob/) + assert.match(String(ui.suggestion), /DB_DRIVER=blob/) +}) + +test("显式配置的驱动不可用:绝不回退(即使 auto 能选到别的后端)", async () => { + // 复现 issue #62 核心场景:CF 上写了 DB_DRIVER=kv 却没绑 KV namespace, + // 而 Blob 是可用的。按设计:**不回退**(否则数据会落到用户没指定的后端), + // 判为配置错误 —— 依赖存储的 API 会被 503 拦截,但必须把「改成什么」讲清楚。 + const env: any = { + DB_DRIVER: "kv", + DB_FORMAT: "map", + JWT_SECRET: JWT, + ESA_BLOB: fakeBlob(), + } + + // 1) 仍然是配置错误:不得被自动切到 Blob + const detail = await getStoreConfigErrorDetail(env, { silent: true }) + assert.equal(detail.code, "DRIVER_UNAVAILABLE") + assert.match( + String(detail.message), + /No fallback is performed for an explicitly configured driver/, + ) + const status = await getStoreStatus(env) + assert.equal(status.driver, "none", "不得解析到其它驱动") + assert.notEqual(status.driver, "blob", "绝不回退到 auto 会选中的后端") + assert.equal( + (status as any).fallback, + undefined, + "不得存在任何「降级/回退」状态字段", + ) + + // 2) 但原因与建议必须可展示:答案排进前 3 行 + 结构化 suggestion + const data = (await ( + await buildApp().request("/api/public/env_check", { method: "GET" }, env) + ).json()).data + assert.equal(data.ready, false, "配置不可用时不得报 ready") + assert.equal(data.storage.available, false) + assert.equal(data.storage.error_code, "DRIVER_UNAVAILABLE") + assert.match(String(data.storage.error_message), /Auto-detection would pick: DB_DRIVER=blob/) + assert.match(String(data.storage.suggestion), /DB_DRIVER=blob/) + assert.equal( + data.storage.fallback_to, + undefined, + "诊断响应里也不该出现回退字段", + ) + + const issue = data.issues.find((i: any) => i.code === "STORAGE_CONFIG_ERROR") + assert.ok(issue) + assert.equal(issue.level, "error") + assert.match(String(issue.suggestion), /DB_DRIVER=blob/) + + // 3) 安装向导(只有 init_status 可用)同样拿得到建议 + const st = (await ( + await buildApp().request("/api/public/init_status", { method: "GET" }, env) + ).json()).data + assert.equal(st.initialized, false) + assert.match(String(st.storage_error), /not available in this runtime/) + assert.match(String(st.storage_suggestion), /DB_DRIVER=blob/) +}) + +test("CF 场景:DB_DRIVER=kv 但只绑了 D1 —— 不回退,但明确告诉用户改成 d1", async () => { + // 用户实际报的场景(只配 DB_DRIVER/DB_FORMAT/JWT_SECRET,D1 是绑好的): + // 结论是「报错 + 指路」,不是「偷偷改用 D1」。用户改一个变量即可恢复, + // 而数据始终落在他指定的后端上。 + const fakeD1 = { + prepare: () => ({ + first: async () => ({ "1": 1 }), + run: async () => ({}), + all: async () => ({ results: [] }), + bind: () => ({ first: async () => ({}), run: async () => ({}) }), + }), + batch: async () => [], + exec: async () => ({}), + } + const env: any = { + DB_DRIVER: "kv", + DB_FORMAT: "map", + JWT_SECRET: JWT, + DB: fakeD1, + } + + const detail = await getStoreConfigErrorDetail(env, { silent: true }) + assert.equal(detail.code, "DRIVER_UNAVAILABLE") + assert.match( + String(detail.suggestion), + /Set DB_DRIVER=d1/, + "必须直接给出可抄写的答案", + ) + assert.match( + String(detail.message), + /Auto-detection would pick: DB_DRIVER=d1/, + "答案要落在被透传的前 3 行里", + ) + + const data = (await ( + await buildApp().request("/api/public/env_check", { method: "GET" }, env) + ).json()).data + assert.equal(data.storage.available, false, "不得回退到 D1") + assert.match(String(data.storage.suggestion), /DB_DRIVER=d1/) + assert.ok( + data.issues.some((i: any) => i.code === "STORAGE_CONFIG_ERROR"), + "必须是 error 级问题(这件事需要用户处理,不能被当成警告略过)", + ) +}) + +test("init_status:存储配置错误时必须返回 storage_error,而不是无声的 false", async () => { + const env: any = { + DB_DRIVER: "blob", + DB_FORMAT: "sql", + JWT_SECRET: JWT, + ESA_BLOB: fakeBlob(), + } + const data = (await ( + await buildApp().request("/api/public/init_status", { method: "GET" }, env) + ).json()).data + + assert.equal(data.initialized, false) + assert.equal(data.ready, false) + assert.match( + String(data.storage_error), + /Invalid storage combination/, + "前端据此解释「为什么不能初始化」", + ) +}) + +test("init_status:存储正常时 storage_error 必须为 null(不产生误导)", async () => { + const env: any = { + DB_DRIVER: "kv", + DB_FORMAT: "map", + JWT_SECRET: JWT, + KV: fakeKv(), + } + const data = (await ( + await buildApp().request("/api/public/init_status", { method: "GET" }, env) + ).json()).data + assert.equal(data.storage_error, null) +}) diff --git a/src/backend/server/init_setup_blob.test.ts b/src/backend/server/init_setup_blob.test.ts new file mode 100644 index 00000000..07b28159 --- /dev/null +++ b/src/backend/server/init_setup_blob.test.ts @@ -0,0 +1,82 @@ +import assert from "node:assert/strict" +import { test } from "node:test" +import { Hono } from "hono" +import { setupRouter } from "./router" + +/** + * 专用回归测试:EdgeOne / ESA Blob + DB_FORMAT=map 的空存储首次初始化。 + * + * 为什么单独一个文件:`memoryDb` / `dbTrusted` 是 isolate 级模块状态(与线上 + * 一致),同一进程里先跑过「已初始化」的用例后,新的空后端会被判定为 + * 「可信快照仍存在」而复用旧快照(init/setup 于是返回 400 already initialized)。 + * 独立文件 = 独立进程,才能精确复现「全新部署第一次访问」的初始状态。 + * + * 被锁定的行为(issue #62 现象 3 的 EdgeOne 分支): + * Blob 的 get 在键不存在时返回 null(不抛错)→ loadDb 认为是 + * 「读取成功但后端为空」→ 必须放行初始化,而不是 500 死锁。 + */ +const buildApp = () => { + const api = new Hono() + setupRouter(api) + const app = new Hono() + app.route("/api", api) + return app +} + +/** ESA Blob 形态的替身:get 返回 Response 形态对象,键不存在时返回 null。 */ +function fakeBlob() { + const store = new Map<string, string>() + return { + __store: store, + get: async (key: string) => { + const v = store.get(key) + return v === undefined ? null : { text: async () => v } + }, + put: async (key: string, value: string) => { + store.set(key, String(value)) + }, + delete: async (key: string) => { + store.delete(key) + }, + head: async (key: string) => (store.has(key) ? { key } : null), + list: async () => ({ keys: [...store.keys()].map((name) => ({ name })) }), + } +} + +test("EO/ESA Blob + map:全新空存储的首次初始化必须成功", async () => { + const env: any = { + DB_DRIVER: "blob", + DB_FORMAT: "map", + JWT_SECRET: "0123456789abcdef0123456789abcdef", + ESA_BLOB: fakeBlob(), + } + + const res = await buildApp().request( + "/api/public/init/setup", + { + method: "POST", + headers: { "content-type": "application/json" }, + body: JSON.stringify({ username: "admin", password: "admin1234" }), + } as any, + env, + ) + + assert.equal( + res.status, + 200, + "Blob 空存储必须先能通过向导初始化,否则会退化为永远无法安装", + ) + assert.equal( + env.ESA_BLOB.__store.has("openlist_config"), + true, + "初始化必须真正写入 Blob", + ) + + // 写入后同一实例应能读到已初始化的库。 + const status = await buildApp().request( + "/api/public/init_status", + { method: "GET" }, + env, + ) + assert.equal((await status.json()).data.initialized, true) +}) diff --git a/src/backend/server/init_setup_guard.test.ts b/src/backend/server/init_setup_guard.test.ts new file mode 100644 index 00000000..7f84c276 --- /dev/null +++ b/src/backend/server/init_setup_guard.test.ts @@ -0,0 +1,178 @@ +import assert from "node:assert/strict" +import { test } from "node:test" +import { Hono } from "hono" +import { setupRouter } from "./router" + +/** + * 初始化流程回归测试(对应 issue #62)。 + * + * 三个必须长期成立的不变量: + * 1. 「读取持久化后端成功但为空」(全新部署)**必须允许** POST /init/setup, + * 否则会出现「读不到 → 不许初始化 → 永远读不到」的死锁; + * 2. 「读取持久化后端失败」**必须拒绝**初始化,避免把兜底空壳写回存储、 + * 覆盖真实配置(数据库被清空); + * 3. 配置了 ADMIN_PASS 时,安装页只轮询 /init_status 也应能完成初始化 + * (否则表现为「配了 ADMIN_PASS 仍反复跳 /@init」)。 + */ + +const buildApp = () => { + const api = new Hono() + setupRouter(api) + const app = new Hono() + app.route("/api", api) + return app +} + +/** 一个符合 Web KV 形态、内容可控的 KV binding 替身。 */ +function fakeKv(overrides: Partial<Record<"get" | "put" | "delete" | "list", any>> = {}) { + const store = new Map<string, string>() + return { + __store: store, + get: async (key: string) => store.get(key) ?? null, + put: async (key: string, value: string) => { + store.set(key, String(value)) + return true + }, + delete: async (key: string) => { + store.delete(key) + }, + list: async () => ({ keys: [...store.keys()] }), + ...overrides, + } +} + +function kvEnv(overrides: any = {}) { + return { + DB_DRIVER: "kv", + DB_FORMAT: "map", + JWT_SECRET: "0123456789abcdef0123456789abcdef", + KV: fakeKv(), + ...overrides, + } +} + +const setupRequest = (body: Record<string, any>) => + ({ + method: "POST", + headers: { "content-type": "application/json" }, + body: JSON.stringify(body), + }) as any + +test("init/setup:全新空存储首次初始化必须成功并真正落盘", async () => { + const env: any = kvEnv() + const res = await buildApp().request( + "/api/public/init/setup", + setupRequest({ username: "admin", password: "admin1234", site_title: "My List" }), + env, + ) + + assert.equal( + res.status, + 200, + "empty-but-readable backend must be initializable (issue #62 现象 3)", + ) + const json: any = await res.json() + assert.equal(json.code, 200) + assert.equal(json.data, null) + assert.equal( + env.KV.__store.has("openlist_config"), + true, + "初始化必须真正写入持久化后端", + ) + + // 初始化完成后 init_status 必须报告已初始化 + 密钥就绪。 + const status = await buildApp().request( + "/api/public/init_status", + { method: "GET" }, + env, + ) + const statusJson: any = await status.json() + assert.equal(statusJson.data.initialized, true) + assert.equal(statusJson.data.ready, true) +}) + +test("init/setup:读取持久化后端失败时必须拒绝(不得用空壳覆盖真实配置)", async () => { + const env: any = kvEnv({ + KV: fakeKv({ + get: async () => { + throw new Error("kv unreachable") + }, + }), + }) + + const res = await buildApp().request( + "/api/public/init/setup", + setupRequest({ username: "admin", password: "admin1234" }), + env, + ) + + assert.equal(res.status, 500, "read failure must still be rejected") + const json: any = await res.json() + assert.match(String(json.message), /not readable/) +}) + +test("init_status:配置 ADMIN_PASS 时,安装页轮询即可完成初始化", async () => { + const env: any = kvEnv({ ADMIN_PASS: "auto-init-pass" }) + + const res = await buildApp().request( + "/api/public/init_status", + { method: "GET" }, + env, + ) + const json: any = await res.json() + + assert.equal( + json.data.initialized, + true, + "ADMIN_PASS must take effect on the init page (issue #62 现象 2)", + ) + assert.equal( + env.KV.__store.has("openlist_config"), + true, + "自动初始化必须真正落盘", + ) + + // 幂等:再次轮询不应产生额外变化,也不应报错。 + const again = await buildApp().request( + "/api/public/init_status", + { method: "GET" }, + env, + ) + assert.equal((await again.json()).data.initialized, true) +}) + +test("init_status:未配置 ADMIN_PASS 时不得写入占位库", async () => { + const env: any = kvEnv() + await buildApp().request("/api/public/init_status", { method: "GET" }, env) + + // 注:initialized 的取值不做断言 —— isolate 级内存里可能已有别的 env 建立 + // 过的可信快照(loadDb 会保留它以避免误判为「未初始化」),这是刻意行为。 + // 本用例只锁定「未配置 ADMIN_PASS 时不产生任何写入」这一不变量。 + assert.equal( + env.KV.__store.size, + 0, + "未配置 ADMIN_PASS 时应等待安装向导,而不是抢写未初始化的占位库", + ) +}) + +test("KV 探测日志:DB_DRIVER 为非 KV 驱动时不再输出误导性告警", async () => { + // 该告警曾被误读为 500 的根因(审计日志等路径会触发 KV 探测)。 + // 对 d1 部署而言 KV 探测本就无关,不应再产生这条日志。 + const warns: string[] = [] + const original = console.warn + console.warn = (...args: any[]) => { + warns.push(args.map((a) => String(a)).join(" ")) + } + try { + const { getKvBinding } = await import("../internal/model/store/json") + await getKvBinding({ DB_DRIVER: "d1" }) + } finally { + console.warn = original + } + + assert.equal( + warns.some((w) => w.includes("no KV-style binding found")), + false, + "d1 部署不应看到 KV 探测告警", + ) +}) diff --git a/src/backend/server/kv_proxy_loop.test.ts b/src/backend/server/kv_proxy_loop.test.ts new file mode 100644 index 00000000..1396cf1e --- /dev/null +++ b/src/backend/server/kv_proxy_loop.test.ts @@ -0,0 +1,87 @@ +import assert from "node:assert/strict" +import { test } from "node:test" +import app from "../index" + +/** + * KV 代理端点的「自调用环」回归测试。 + * + * 现象(本地 `wrangler dev`):满屏 `GET /kv-list 503`,且每条耗时逐条增长 + * (2433ms → 2624ms …)。 + * + * 机制:kv 驱动的可用性判定 = 向 `{origin}/kv-list?prefix=__health__` 发一次 HTTP + * 探测(本地 origin 就是 dev server 自己)。若这些探测请求落进全局「存储配置错误 + * 拦截」,中间件会再次解析驱动 → 再次探测自身 → 无限自调用;每层都要等内层返回, + * 所以耗时持续增长,而每条响应都是 503(kv 不可用 → 配置错误)。 + * + * 因此本部署必须:① 不把这些路径交给拦截逻辑;② 明确回 410,而不是落进 SPA 兜底 + * (兜底返回 HTML 200,会让探测误判为「KV 可用」)。 + */ + +const JWT = "0123456789abcdef0123456789abcdef" + +/** 记录出站 fetch:KV 代理探测就表现为一次出站请求 */ +function captureFetch(status = 503) { + const original = globalThis.fetch + const calls: string[] = [] + ;(globalThis as any).fetch = async (input: any) => { + calls.push(String(input?.url ?? input)) + return new Response("stub", { status }) + } + return { + calls, + restore: () => { + ;(globalThis as any).fetch = original + }, + } +} + +const kvEnv = (): any => ({ + DB_DRIVER: "kv", + DB_FORMAT: "map", + JWT_SECRET: JWT, + __requestOrigin: "https://example.workers.dev", +}) + +test("KV 代理端点:本部署不提供 → 410,且处理它绝不再发起探测", async () => { + const cap = captureFetch(503) + try { + const res = await app.fetch( + new Request("https://example.workers.dev/kv-list?prefix=__health__"), + kvEnv(), + ) + assert.equal( + res.status, + 410, + "必须明确拒绝:既不能 503(会被拦截逻辑递归),也不能 200(会被误判为可用)", + ) + const body: any = await res.json() + assert.match(String(body.message), /not served by this deployment/) + assert.equal( + cap.calls.length, + 0, + "处理该请求不得再发起任何出站探测,否则形成无限自调用环", + ) + } finally { + cap.restore() + } +}) + +test("KV 代理端点:豁免拦截不影响业务接口(未降级、未放松)", async () => { + const cap = captureFetch(503) + try { + const res = await app.fetch( + new Request("https://example.workers.dev/api/public/settings"), + kvEnv(), + ) + assert.equal(res.status, 503, "kv 不可用时业务接口必须 503,不得静默降级") + const body: any = await res.json() + assert.equal(body.data?.code, "DRIVER_UNAVAILABLE") + assert.match( + String(body.data?.suggestion), + /DB_DRIVER=/, + "503 仍要带上「改成什么」的建议", + ) + } finally { + cap.restore() + } +}) diff --git a/src/backend/server/middlewares.ts b/src/backend/server/middlewares.ts index 75f49b7d..48bcfacf 100644 --- a/src/backend/server/middlewares.ts +++ b/src/backend/server/middlewares.ts @@ -1,7 +1,7 @@ import { Context } from "hono" import { verify } from "hono/jwt" import { checkAdminAuth, isStaticApiToken } from "../pkg/utils" -import { getDb } from "../internal/model/db" +import { getDb, readPersistedSecret, ENCRYPTION_SECRET_KV_KEY } from "../internal/model/db" // 不再硬编码 JWT 密钥。优先使用环境变量 JWT_SECRET(推荐在生产配置), // 否则从持久化后端读取一个随机密钥(首次生成后复用,重启不失效), @@ -83,17 +83,21 @@ export async function getJwtSecret(c?: Context | any): Promise<string> { const env = c?.env || (typeof process !== "undefined" ? (process as any).env : {}) || {} - // 1. 环境变量显式配置(最优先,提高最小长度要求到 32 字符) - const envSecret = env.JWT_SECRET - if (envSecret && envSecret.length >= 32) { - return envSecret - } - - // 兼容性:如果密钥长度在 16-31 之间,发出警告但仍然使用 - if (envSecret && envSecret.length >= 16) { - console.warn( - "[JWT] JWT_SECRET 长度不足 32 字符,建议使用更长的密钥以提高安全性。" - ) + // ── 长度策略:只要求「非空」,32 字符为**推荐值**(不强制)── + // + // 这里曾有三个互不相同的阈值:env 走 `>=16`、缓存走 `>=32`、持久化走 + // `>=32`。后果是 **自动生成/持久化的密钥会被读取路径判为无效**: + // setup 写入的密钥若不足 32 字符,第 2 步 `>=32` 判定失败 → 落到第 4 步 + // **重新生成**一把新密钥 → 每次冷启动换钥 → 已签发的 token 全部失效、 + // 多实例间验签互相失败(表现为「登录成功后立刻 401」)。 + // 也就是说「自动生成」看着写了、实际没生效。现在统一为「非空即有效」, + // 与 db.ts:readEnvEncryptionKey 完全一致,保证「写进去的」必定「读得出来」。 + const useSecret = (s: unknown): string | null => + typeof s === "string" && s.trim().length > 0 ? s : null + + // 1. 环境变量显式配置(最优先) + const envSecret = useSecret(env.JWT_SECRET) + if (envSecret) { return envSecret } @@ -102,12 +106,38 @@ export async function getJwtSecret(c?: Context | any): Promise<string> { // 修复前此分支只 `return kvSecret` 而不写缓存,导致 // getUserFromContext / csrfProtection / checkAdminAuth 等每请求 2-4 次调用 // 都会各自触发一次后端读取(KV/D1 后端下这是最贵的操作之一)。 + // + // 缓存粒度按 env 隔离(readCachedJwtSecret/rememberJwtSecret,见文件头注释), + // 判定统一走 useSecret(「非空即有效」),不再用长度阈值。 const cached = readCachedJwtSecret(env) - if (cached && cached.length >= 32) { - return cached + if (useSecret(cached)) { + return cached as string + } + + // 2a. 复用 setup 自动生成的加密密钥(openlist_encryption_secret)。 + // + // 为什么必须放在这里:`ensureEncryptionSecret()` 在 setup 阶段把自动生成的 + // 密钥写进 **openlist_encryption_secret**,而本函数历史实现只找 + // **openlist_jwt_secret** —— 两个槽位名不同。于是「自动生成」的那把密钥 + // 对 JWT 侧**完全不可见**:本函数会再生成一把存到另一个槽位, + // 造成同一部署里两把密钥各自漂移(多实例验签失败、冷启动即换钥)。 + // 约定 JWT 与字段加密共用同一把密钥(见 db.ts:1276 的注释),因此这里 + // 显式回退读取加密密钥槽位,保证「生成了一份」就等于「两边都可用」。 + try { + const sharedSecret = useSecret( + await readPersistedSecret(env, ENCRYPTION_SECRET_KV_KEY), + ) + if (sharedSecret) { + rememberJwtSecret(env, sharedSecret) + return sharedSecret + } + } catch { + // 读取失败按「无持久化密钥」处理,继续走下面的独立槽位 } - const kvSecret = await readKvSecret(env) - if (kvSecret && kvSecret.length >= 32) { + + // 2b. 独立的 JWT 密钥槽位(历史部署可能已在此写入) + const kvSecret = useSecret(await readKvSecret(env)) + if (kvSecret) { rememberJwtSecret(env, kvSecret) return kvSecret } @@ -143,7 +173,7 @@ export async function getJwtSecret(c?: Context | any): Promise<string> { (persisted ? "密钥已持久化到 KV,重启后保持有效。" : "密钥仅存于内存,重启后所有 token 将失效。") + - "\n生产环境部署前,请务必配置 >=32 字符的 JWT_SECRET 环境变量。" + "\n生产环境部署前,建议配置 32+ 字符的 JWT_SECRET 环境变量(推荐而非强制)。" ) } } diff --git a/src/backend/server/public.ts b/src/backend/server/public.ts index d4a238c8..af215772 100644 --- a/src/backend/server/public.ts +++ b/src/backend/server/public.ts @@ -2,18 +2,26 @@ import { Hono } from "hono" import { ensureEncryptionSecret, getDb, + getDbLoadError, getStoreStatus, isDbTrusted, isEncryptionReady, saveDb, } from "../internal/model/db" import { + getStoreConfigErrorDetail, isPersistentStorageAvailable, isServerlessRuntime, readDriver, readFormat, } from "../internal/model/store/backend" import { setUserPassword } from "../pkg/password" +// 脱敏 / 截断 / 摘要 / 建议组装:与全局 503 拦截(index.ts)共用同一套规则 +import { + reasonLines, + redact, + storageErrorSummary, +} from "./storage-error" export const publicRouter = new Hono() @@ -23,28 +31,36 @@ const DOC_STORAGE = `${DOC_BASE}/ecosystem/official_worker/guide_env` const DOC_DRIVER = `${DOC_BASE}/ecosystem/official_worker/guide` /** - * 对错误文本做脱敏,供免鉴权接口使用。 + * 解析值归一:解析失败时内部会用 "none"/空串占位,界面上显示「do → none」 + * 只会造成困惑,因此统一归一为 null(前端只显示配置值)。 + */ +function resolvedOrNull(value: any): string | null { + const s = String(value ?? "").trim() + return s && s !== "none" ? s : null +} + +/** + * 「没有可用存储后端」时的统一建议(单一来源)。 + * + * ## 为什么不再提 `set DB_DRIVER=auto` + * + * 旧文案是「Bind a storage backend (D1 / KV / Blob) **or set DB_DRIVER=auto**」。 + * 后半句在**绝大多数真实场景下是循环建议**:用户看到这条 issue 时,`DB_DRIVER` + * 往往**本来就是 auto**(CF / EdgeOne 部署的默认形态)。让他「去设置 auto」等于 + * 让他改一个已经正确的值,改完照旧报错,只会加深「这软件坏了」的印象。 * - * 目标:保留「问题类别」的可操作性,同时抹掉可能泄漏实现细节的部分: - * - 只取第一行(去掉多行堆栈) - * - 抹除形如 `scheme://user:pass@host` 的连接串凭据 - * - 截断长度,避免回显大段内部信息 + * 准确的表述是:auto **已经把所有候选驱动探测过一遍且都不可用**,因此缺的是 + * **平台侧的绑定**,不是配置值。这里只说这件事。 + * + * 若驱动解析器给出了更精确的 hint(如 `noStorageHint` 的逐平台文案),调用方 + * 会优先使用它,本函数只是兜底。 */ -function redact(raw: any): string { - if (raw === null || raw === undefined) return "unknown error" - let s = String(raw) - // 仅保留首行 - s = s.split("\n")[0].trim() - // 抹除连接串中的凭据(如 mysql://user:pass@host) - s = s.replace(/(\w+:\/\/)[^/@\s]+@/g, "$1***@") - // 抹除常见的 key=value 形式的令牌 - s = s.replace( - /\b(token|secret|password|passwd|pwd|api[_-]?key)\s*[=:]\s*\S+/gi, - "$1=***", +function bindBackendSuggestion(): string { + return ( + "No storage binding was detected (auto probes every driver). " + + "Bind one and redeploy — Cloudflare: D1 or KV namespace; " + + "EdgeOne: Blob; ESA: ESA_BLOB." ) - // 截断 - const MAX = 160 - return s.length > MAX ? s.slice(0, MAX) + "…" : s } /** @@ -74,21 +90,28 @@ publicRouter.get("/env_check", async (c) => { configError: String(err?.message || err), })) - // 驱动名可用于判定「真实持久化」与「内存兜底」。 + // ── 可用性判定:**复用** isPersistentStorageAvailable(单一来源)── + // + // 以前这里把判定公式(有驱动 && 非内存 && 无配置错误 && 驱动自报可用) + // 在本文件里重抄了一遍,与 store/backend.ts 的 isPersistentStatus 逐条等价。 + // 两处独立维护意味着任何一方新增条件(例如将来加「驱动已废弃」)都会造成 + // 「503 拦截层」与「安装向导是否放行」判定不一致,且症状极难定位。 + // + // isPersistentStorageAvailable 内部就是 getStoreStatus + isPersistentStatus, + // 因此这里复用不会多一次探测(getStorageBackend 内部已按 env 指纹缓存)。 + const storageAvailable = await isPersistentStorageAvailable(env) + + // 以下中间量仅用于**挑选 issue 文案**(哪个 code / 哪句话),不再参与可用性计算。 // 内存模式在 serverless 下不可接受(实例短暂、多租户,写入会静默丢失)。 const resolvedDriver = String(storage?.driver ?? "none") const isMemory = resolvedDriver === "memory" const hasDriver = resolvedDriver !== "none" && resolvedDriver !== "" const hasConfigError = Boolean(storage?.configError) - // 可用 = 有驱动 && 非内存 && 无配置错误 && 驱动自报可用。 - // getStoreStatus 在健康检查失败时会带 available:false(例如 KV 代理 401、 - // 数据库连接失败),此时即便配置齐全也不能视为可用。 + // 配置齐全但驱动自检失败(如 KV 代理 401、数据库连不上)。 + // 注意:storageAvailable 为 false 且并无上述三类原因时,就落在这里。 const driverHealthy = storage?.available !== false - const storageAvailable = - hasDriver && !isMemory && !hasConfigError && driverHealthy - // ── JWT 密钥就绪(真实来源,绕过缓存)── const jwtReady = await isEncryptionReady(env).catch(() => false) @@ -96,65 +119,162 @@ publicRouter.get("/env_check", async (c) => { const issues: { code: string level: "error" | "warning" + /** + * 给界面的一行短原因(**应为完整的一句话**)。 + * + * 界面只展示这一行 + suggestion,开发者排查用的长篇说明放在 message 里, + * 避免出现「半句话 + 省略号」这种读不懂的提示。 + */ + summary: string + /** 完整说明(多行、已脱敏):只给日志/工具用,界面不展示 */ message: string docUrl: string + /** 一句话修复建议(「改什么」) */ + suggestion?: string | null }[] = [] + /** 配置错误的分类码 + 短摘要 + 完整说明 + 修复建议(均脱敏) */ + let storageDetail: { + code: string | null + summary: string | null + message: string | null + suggestion: string | null + } = { + code: null, + summary: null, + message: null, + suggestion: null, + } + + if (hasConfigError) { + const detail = await getStoreConfigErrorDetail(env, { silent: true }) + storageDetail = { + code: detail.code, + summary: storageErrorSummary(detail.message), + message: detail.message, + suggestion: detail.suggestion, + } + } - if (isMemory) { + if (hasConfigError && storageDetail.code === "NO_STORAGE") { + // 一个可选后端都没有:这类错误本身就是「没有可用的存储」,用一条通用提示 + // 说清即可,不必再叠一条内容相同的配置错误(两条 issue 说同一件事只会让 + // 用户以为出了两个问题)。 + issues.push({ + code: "STORAGE_UNAVAILABLE", + level: "error", + summary: "No storage backend available.", + message: "No storage backend available.", + docUrl: DOC_STORAGE, + suggestion: storageDetail.suggestion || bindBackendSuggestion(), + }) + } else if (hasConfigError) { + // 配置错误:界面只给「一行短原因 + 一行怎么改」;完整排查说明留在 message / + // storage.error_message 里,由日志与工具消费。 + const isInvalidCombination = storageDetail.code === "INVALID_COMBINATION" + const reason = redact( + storageDetail.message || storage?.configError, + reasonLines(storageDetail.code), + ) + issues.push({ + code: isInvalidCombination + ? "STORAGE_INVALID_COMBINATION" + : "STORAGE_CONFIG_ERROR", + level: "error", + summary: + storageDetail.summary || + (isInvalidCombination + ? "Unsupported storage combination." + : "Storage driver is not configured correctly."), + message: isInvalidCombination + ? `Unsupported storage combination: ${reason}` + : `Storage driver is not configured correctly: ${reason}`, + docUrl: DOC_DRIVER, + suggestion: storageDetail.suggestion, + }) + } else if (isMemory) { issues.push({ code: "STORAGE_MEMORY_ONLY", level: serverless ? "error" : "warning", + summary: serverless + ? "In-memory storage only; data will be lost immediately." + : "In-memory storage only; data will be lost on restart (fine for local dev).", message: serverless ? "In-memory storage only; data will be lost immediately." : "In-memory storage only; data will be lost on restart (fine for local dev).", docUrl: DOC_STORAGE, + suggestion: bindBackendSuggestion(), }) } else if (!hasDriver) { issues.push({ code: "STORAGE_UNAVAILABLE", level: "error", + summary: "No storage backend available.", message: "No storage backend available.", docUrl: DOC_STORAGE, - }) - } - - if (hasConfigError) { - issues.push({ - code: "STORAGE_CONFIG_ERROR", - level: "error", - // 该接口免鉴权,因此不返回原始错误文本(可能含内部 DSN、主机名或堆栈)。 - // 驱动未探测到时 backend 会给出 NO_STORAGE_MESSAGE 这种面向终端的长文 - // 配置指引,逐条展示到界面上是一屏难以消化的文字,故此处统一收敛为 - // 一句摘要,细节由 docUrl 指向的文档承接。 - message: "Storage driver is not configured correctly.", - docUrl: DOC_DRIVER, + suggestion: bindBackendSuggestion(), }) } // 配置齐全但驱动自检失败(如 KV 代理 401、数据库连不上) if (hasDriver && !isMemory && !hasConfigError && !driverHealthy) { + const unreachable = + `Storage driver "${resolvedDriver}" is configured but not reachable` + + `${storage.error ? ": " + redact(storage.error) : ""}.` issues.push({ code: "STORAGE_UNHEALTHY", level: "error", - message: - `Storage driver "${resolvedDriver}" is configured but not reachable` + - `${storage.error ? ": " + redact(storage.error) : ""}.`, + summary: unreachable, + message: unreachable, docUrl: DOC_DRIVER, + // 注意:这里**不**再建议「set DB_DRIVER=auto」。 + // 能走到这里说明驱动已成功解析(binding/凭据都齐),只是自检不通 + // (如 KV 代理 401)。此时改回 auto 没有任何帮助 —— auto 会解析出同一个 + // 驱动、撞上同一个错误,属于把用户支去绕圈。真正要做的是修凭据/绑定。 + suggestion: + `Check the credentials/bindings for "${resolvedDriver}" ` + + "(it resolved, but its health check failed).", }) } if (!jwtReady) { issues.push({ code: "JWT_SECRET_MISSING", - level: serverless ? "error" : "warning", - message: "JWT_SECRET is not set.", + // 一律 warning:存储可用时 setup 会自动生成并持久化密钥,缺它不是 + // 「装不了」,只是「少了一层显式配置的确定性」。不再升级为 error, + // 否则会出现「报错说缺密钥 → 但生成密钥只能靠安装 → 安装又被报错拦住」。 + level: "warning", + // 密钥支持**自动生成 + 持久化**(见 ensureEncryptionSecret),所以文案 + // 不说「必须手动配置」,而是同时给出「也可留空让 setup 自动生成」这条路, + // 避免用户以为这是个必填项而无谓地卡在向导里。 + summary: "JWT_SECRET is not set.", + message: + "JWT_SECRET is not set. If storage is available, a secret is generated " + + "and persisted automatically during setup; setting it explicitly is " + + "recommended so that all instances and cold starts share one key.", docUrl: DOC_STORAGE, + suggestion: + "Set JWT_SECRET (32+ chars recommended, `openssl rand -hex 32`) in your " + + "deployment variables — or leave it empty and let setup generate one " + + "(requires working storage).", }) } - // ── 综合就绪:数据库可用 + 密钥就绪 ── - // 内存模式(本地开发)允许初始化,但会带 warning。 - const ready = storageAvailable && jwtReady + // ── 综合就绪:只取决于「存储可用」── + // + // 这里曾写成 `storageAvailable && jwtReady`,会造成**自死锁**: + // 1. 未配置 JWT_SECRET 时 jwtReady=false → ready=false; + // 2. 前端 `canProceed()` 依赖 ready,于是初始化向导卡在第 1 步; + // 3. 而密钥的自动生成 `ensureEncryptionSecret()` 恰恰只在**提交初始化 + // (/public/init)时**才会执行(见下方 init 路由)。 + // 4. 结果:向导永远进不到能触发自动生成的那一步 → 「自动生成 JWT 未生效」。 + // + // 语义上二者本就该分开: + // - `ready` 表示「存储就绪、可以开始安装」——这是**能否初始化**的前提; + // - `jwtReady` 表示「密钥已就绪」——它可以是安装的**结果**(自动生成), + // 而不是安装的前提。 + // 前端仍会把 jwt.ready=false 作为提示展示(并允许用户选择手动配置), + // 但不再因此阻断向导。 + const ready = storageAvailable return c.json({ code: 200, @@ -168,9 +288,10 @@ publicRouter.get("/env_check", async (c) => { // 配置值(用户显式设置,或默认值) db_format: formatCfg, db_driver: driverCfg, - // 实际解析值(auto 探测后的结果) - resolved_driver: storage?.driver ?? null, - resolved_format: storage?.format ?? null, + // 实际解析值(auto 探测后的结果);解析失败时后端内部是 "none", + // 对界面没有意义且会显示成「do → none」,这里统一归一为 null。 + resolved_driver: resolvedOrNull(storage?.driver), + resolved_format: resolvedOrNull(storage?.format), }, storage: { available: storageAvailable, @@ -179,6 +300,25 @@ publicRouter.get("/env_check", async (c) => { platform: storage?.platform ?? null, /** 是否处于内存兜底模式(重启即失,serverless 下不可接受) */ memory: isMemory, + /** + * 配置错误的机器可读分类(无错误时为 null): + * INVALID_COMBINATION / DRIVER_UNAVAILABLE / NO_STORAGE / + * PROXY_CONFIG / UNKNOWN_DRIVER / HEALTH_ERROR / DRIVER_ERROR + */ + error_code: storageDetail.code, + /** 一行短原因(界面展示这个) */ + summary: storageDetail.summary, + /** + * 完整原因(已脱敏、按分类限行)。 + * + * 只给日志与工具用:界面展示它会出现「半句话 + 省略号」。 + */ + error_message: + storageDetail.message !== null + ? redact(storageDetail.message, reasonLines(storageDetail.code)) + : null, + /** 一句话修复建议(「改什么」),无错误时为 null */ + suggestion: storageDetail.suggestion, }, jwt: { ready: jwtReady, @@ -386,6 +526,17 @@ publicRouter.get("/plugins", async (c) => { }) }) +// 是否配置了 ADMIN_PASS(跳过安装向导、自动初始化 admin)。 +// +// 注意 env 与 process.env 都要看:Cloudflare Workers 走 env,本地/容器走 +// process.env;两者优先级与 auth.ts 的 getOrInitUsers 保持一致。 +function adminPassConfigured(env: any): boolean { + const fromEnv = env?.ADMIN_PASS + const fromProc = + typeof process !== "undefined" ? (process as any).env?.ADMIN_PASS : "" + return String(fromEnv || fromProc || "").trim() !== "" +} + // 系统是否已初始化:存在已设置密码的管理员账号即为已初始化。 // // 「可持久化存储可用」是「已初始化」的前提,而不是并列的另一个检查: @@ -396,6 +547,7 @@ publicRouter.get("/plugins", async (c) => { // // 本接口已在 index.ts 的诊断豁免名单中,不会被存储配置错误中间件拦截, // 否则它在最需要报告问题的场景下反而拿不到任何信息。 + publicRouter.get("/init_status", async (c) => { const storageReady = await isPersistentStorageAvailable(c.env) @@ -403,6 +555,26 @@ publicRouter.get("/init_status", async (c) => { // 据此得出的 initialized=true 是假象。 let initialized = false if (storageReady) { + // ADMIN_PASS 自动初始化:安装页只轮询本接口,从不调用登录接口。 + // 若只把 getOrInitUsers() 挂在登录路径上,配置了 ADMIN_PASS 的新部署会 + // 永远停在「未初始化 → 跳 /@init → 永远不初始化」的死循环里。 + // + // 仅当运维显式配置了 ADMIN_PASS 时才触发(那是「请自动初始化」的明确 + // 意图):未配置时不调用,避免每次轮询都尝试写入一份未初始化的占位库。 + // getOrInitUsers 本身是幂等的:已初始化(admin 密码已是合法哈希)时 + // 不做任何写入。 + if (adminPassConfigured(c.env)) { + try { + const { getOrInitUsers } = await import("./auth") + await getOrInitUsers(c.env) + } catch (err: any) { + console.warn( + "[DB] init_status: ADMIN_PASS auto-initialization failed: " + + (err?.message || err), + ) + } + } + const db = await getDb(c.env) const admin = (db.users || []).find((u: any) => u.role === 2) initialized = Boolean(admin && String(admin.password || "").trim() !== "") @@ -412,10 +584,34 @@ publicRouter.get("/init_status", async (c) => { // 前端据此轮询等待,避免 KV 最终一致性导致的「刚初始化完登录失败」。 const ready = initialized ? await isEncryptionReady(c.env) : false + // ── 把「为什么不能初始化」透给前端 ── + // + // 安装向导只能看到本接口,因此这里必须给出可展示的原因,否则用户只会拿到 + // 一个 500 或一句「未初始化」,无从判断是绑定缺失、组合写错还是密钥缺失。 + // 两类原因都返回(已脱敏): + // storage_error 一行短原因(界面直接展示,故取首行摘要) + // storage_suggestion 一句话修复建议(「改什么」) + // db_load_error 上一次从持久化后端读取失败的原因(运行期故障) + let storageError: string | null = null + let storageSuggestion: string | null = null + if (!storageReady) { + const detail = await getStoreConfigErrorDetail(c.env, { silent: true }) + storageError = storageErrorSummary(detail.message) + storageSuggestion = detail.suggestion + } + const dbLoadError = getDbLoadError() + return c.json({ code: 200, message: "success", - data: { initialized, ready, db_trusted: isDbTrusted() }, + data: { + initialized, + ready, + db_trusted: isDbTrusted(), + storage_error: storageError, + storage_suggestion: storageSuggestion, + db_load_error: dbLoadError ? redact(dbLoadError, 1) : null, + }, }) }) @@ -441,18 +637,40 @@ publicRouter.post("/init/setup", async (c) => { const db = await getDb(c.env) if (!db.users) db.users = [] - // 安全护栏:若读取持久化存储失败(当前 db 只是不可信空壳),绝不能继续初始化, - // 否则会把空库写回存储、覆盖真实配置(即「数据库被清空」的根因)。 - if (!isDbTrusted()) { + // 安全护栏:只在「读取持久化后端**失败**」时拒绝初始化。 + // + // loadDb() 对两种「db 不可信」给出了不同信号,必须分别对待: + // 1. getDbLoadError() !== null —— 读取抛错(binding 未注入、后端不可达、 + // 鉴权失败等)。此时内存里只是兜底空壳,继续初始化会把空库写回存储、 + // 覆盖真实配置(即「数据库被清空」的根因)→ 必须拒绝。 + // 2. getDbLoadError() === null 且 !isDbTrusted() —— 读取**成功但后端为空**, + // 即全新部署 / 换到新库后的首次初始化。这正是 setup 存在的意义。 + // 若也一并拒绝,就会出现「读不到 → 不许初始化 → 永远读不到」的死锁, + // 让全新空存储永远无法安装(issue #62 现象 3)。 + const loadError = getDbLoadError() + if (loadError) { console.error( - "[DB] init/setup rejected: database could not be loaded from the persistence backend", + "[DB] init/setup rejected: database could not be loaded from the persistence backend: " + + loadError, ) + // 对外文案保持不变(兼容既有前端/客户端),但把「具体原因 + 分类码」放进 + // data,让安装向导能直接展示,而不是只给用户一个通用 500。 + const detail = await getStoreConfigErrorDetail(c.env, { silent: true }) + const code = detail.code || "STORAGE_READ_FAILED" return c.json( { code: 500, message: "database is not readable; refusing to initialize to avoid overwriting existing config", - data: null, + data: { + code, + // 界面展示 summary(完整一句);reason 保留给工具/日志阅读 + summary: storageErrorSummary(loadError), + reason: redact(loadError, reasonLines(code)), + // 一句话修复建议:有配置原因时优先用它(如「改成 DB_DRIVER=d1」), + // 否则向导只能展示一段原因,用户仍不知道下一步做什么。 + suggestion: detail.suggestion, + }, }, 500, ) diff --git a/src/backend/server/storage-error.ts b/src/backend/server/storage-error.ts new file mode 100644 index 00000000..108c3c81 --- /dev/null +++ b/src/backend/server/storage-error.ts @@ -0,0 +1,109 @@ +/** + * 存储配置错误的「可展示化」工具:脱敏 + 截断 + 建议组装。 + * + * 单独成模块的原因:两处都需要同一套规则,而它们位于不同层次 —— + * - server/public.ts:免鉴权诊断接口(env_check / init_status / init/setup) + * - index.ts:全局 503 拦截中间件 + * 若各自实现一份,两处给出的粒度(几行、是否带建议)迟早会漂移,用户会在 + * 「同一个问题、两个说法」之间反复排查。 + */ + +/** + * 对单行文本做脱敏(供免鉴权接口使用)。 + * + * 目标:保留「问题类别」的可操作性,同时抹掉可能泄漏实现细节的部分: + * - 抹除形如 `scheme://user:pass@host` 的连接串凭据 + * - 抹除常见的 key=value 形式的令牌 + * - 截断长度,避免回显大段内部信息 + */ +function scrub(s: string): string { + let out = String(s).trim() + out = out.replace(/(\w+:\/\/)[^/@\s]+@/g, "$1***@") + out = out.replace( + /\b(token|secret|password|passwd|pwd|api[_-]?key)\s*[=:]\s*\S+/gi, + "$1=***", + ) + const MAX = 160 + return out.length > MAX ? out.slice(0, MAX) + "…" : out +} + +/** + * 配置类错误的展示行数上限。 + * + * 这些码对应的是**我们自己**写的多行提示(组合非法 / 驱动不可用 / 无存储 / + * 代理未配置),后续行才是「怎么改」,必须展示出来; + * 而运行期错误(HEALTH_ERROR 等)可能含内部主机名,只取首行。 + */ +const MULTILINE_ERROR_CODES = new Set([ + "INVALID_COMBINATION", + "DRIVER_UNAVAILABLE", + "UNKNOWN_DRIVER", + "NO_STORAGE", + "PROXY_CONFIG", + "DRIVER_ERROR", +]) + +/** + * 取出用于展示的最大行数。 + * + * ⚠️ 使用约束(改文案时务必遵守):这里只透传前 N 行,因此**我们自己写的多行 + * 提示,前 3 行必须自包含** —— 结论、答案、下一步动作都要落在前 3 行内。 + * 曾经的教训:把「Auto-detection would pick: DB_DRIVER=d1」放在第 7 行,结果被 + * 截掉,用户在界面上只看到一段被砍断的说明,根本不知道该改成什么。 + * 另外每行还会被 scrub() 截到 160 字符,单行不要写太长。 + */ +export function reasonLines(code?: string | null): number { + return code && MULTILINE_ERROR_CODES.has(code) ? 3 : 1 +} + +/** + * 给界面用的一行短原因。 + * + * 只取首行:我们自己的多行提示都按「首行 = 原因,后续行 = 排查与修复方向」 + * 排列,所以首行天然是完整的一句 —— 界面不会出现被截断的半句 + 省略号。 + * 完整说明仍在 message 字段里,供日志与工具使用。 + */ +export function storageErrorSummary(raw: any): string | null { + if (raw === null || raw === undefined) return null + const first = String(raw) + .split("\n") + .map((l) => l.trim()) + .find((l) => l.length > 0) + return first ? scrub(first) : null +} + +/** + * 对错误文本做脱敏,供免鉴权接口使用。 + * + * 默认只保留首行(去掉多行堆栈);`maxLines` 用于我们自己的、多行且 + * 可操作的配置类错误(如「组合非法 + 该驱动支持哪些格式 + 怎么改」)。 + */ +export function redact(raw: any, maxLines = 1): string { + if (raw === null || raw === undefined) return "unknown error" + const lines = String(raw) + .split("\n") + .map((l) => l.trim()) + .filter(Boolean) + .slice(0, Math.max(1, maxLines)) + .map(scrub) + return lines.length ? lines.join(" ") : "unknown error" +} + +/** + * 把存储配置错误整理成「前端可直接展示」的形状。 + * + * - reason:截断后的原因(控制长度,避免把整段排查说明糊到界面上) + * - suggestion:一句话修复建议(「改什么」,前端置顶展示) + */ +export function uiStorageError(detail: { + code: string | null + message: string | null + suggestion: string | null +}): { reason: string | null; suggestion: string | null } { + return { + reason: detail.message + ? redact(detail.message, reasonLines(detail.code)) + : null, + suggestion: detail.suggestion, + } +} diff --git a/src/backend/server/storage_policy.test.ts b/src/backend/server/storage_policy.test.ts new file mode 100644 index 00000000..c8d392a4 --- /dev/null +++ b/src/backend/server/storage_policy.test.ts @@ -0,0 +1,293 @@ +import assert from "node:assert/strict" + +import { test } from "node:test" +import { Hono } from "hono" +import { setupRouter } from "./router" +import { getStoreStatus } from "../internal/model/store/backend" + +/** + * 三条常见部署约束的回归测试。 + * + * 背景:部署文档给出三条「必须满足」的约束,但检查逻辑此前有两处与之不符: + * + * 1. blob 只支持 map(blob 是「整存整取的单文档」存储,摊平成多条键的 key + * 格式在 blob 上写不出、也 list 不出真实结构)。 + * 旧实现只做「能力探测」(有没有 get/put/delete/list),因此 blob + key + * 被误判为合法组合,要等到真正读写才炸。 + * + * 2. JWT_SECRET「必须手动配置」其实不准确 —— 支持自动生成并持久化。 + * 但旧实现存在**自死锁**:`ready = storageAvailable && jwtReady`, + * 而自动生成只在提交初始化时执行,向导却被 ready 挡住进不到那一步; + * 且 JWT 侧读的是 openlist_jwt_secret、自动生成写的是 + * openlist_encryption_secret,两个槽位名不同 → 「自动生成」永远不可见。 + * + * 3. 合法的「驱动 × 格式」矩阵应只有: + * blob + map + * kv / cfkv + map / key + * d1 / do / mysql + map / key / sql + * 其余皆为无效组合。 + */ + +const JWT = "0123456789abcdef0123456789abcdef" + +const buildApp = () => { + const api = new Hono() + setupRouter(api) + const app = new Hono() + app.route("/api", api) + return app +} + +function fakeKv() { + const store = new Map<string, string>() + return { + __store: store, + get: async (k: string) => store.get(k) ?? null, + put: async (k: string, v: string) => { + store.set(k, String(v)) + return true + }, + delete: async (k: string) => { + store.delete(k) + }, + list: async () => ({ keys: [...store.keys()] }), + } +} + +function fakeBlob() { + const store = new Map<string, string>() + return { + __store: store, + get: async (k: string) => { + const v = store.get(k) + return v === undefined ? null : { text: async () => v } + }, + put: async (k: string, v: string) => { + store.set(k, String(v)) + }, + delete: async (k: string) => { + store.delete(k) + }, + head: async (k: string) => (store.has(k) ? { key: k } : null), + list: async () => ({ keys: [...store.keys()].map((name) => ({ name })) }), + } +} + +// ───────────────────────────────────────────────────────────────────────────── +// 约束 1:blob 只支持 map +// ───────────────────────────────────────────────────────────────────────────── + +test("blob + map:合法组合(ESA_BLOB 已绑定时不应报组合错误)", async () => { + const env: any = { + DB_DRIVER: "blob", + DB_FORMAT: "map", + JWT_SECRET: JWT, + ESA_BLOB: fakeBlob(), + } + const status = await getStoreStatus(env) + assert.notEqual( + status.configErrorCode, + "INVALID_COMBINATION", + "blob + map 是文档明确支持的组合,不得判为非法", + ) +}) + +test("blob + key:必须判为 INVALID_COMBINATION(blob 是单文档存储,不支持 key)", async () => { + const env: any = { + DB_DRIVER: "blob", + DB_FORMAT: "key", + JWT_SECRET: JWT, + ESA_BLOB: fakeBlob(), + } + + const status = await getStoreStatus(env) + assert.equal( + status.configErrorCode, + "INVALID_COMBINATION", + "blob 只支持 map;key 会把对象摊平成多条键,而 blob 只能整存整取", + ) + assert.match(String(status.configError), /DB_FORMAT="key"/) + // 支持列表必须精确到该驱动,而不是笼统的「map | key」 + assert.match( + String(status.configError), + /supports: map/, + "错误里必须指出 blob 只支持 map", + ) + + const res = await buildApp().request( + "/api/public/env_check", + { method: "GET" }, + env, + ) + const data = (await res.json()).data + assert.equal(data.ready, false, "无效组合不得被报告为就绪") + + const issue = data.issues.find( + (i: any) => i.code === "STORAGE_INVALID_COMBINATION", + ) + assert.ok(issue, "必须给出 STORAGE_INVALID_COMBINATION") + // 约束 4:必须带一句话修复建议(此前该分支 suggestion 为 null) + assert.ok( + issue.suggestion && String(issue.suggestion).length > 0, + "无效组合必须给出「改成什么」的建议,否则用户只知道错、不知道怎么办", + ) + assert.match(String(issue.suggestion), /DB_FORMAT=map/) +}) + +test("blob + sql:必须判为 INVALID_COMBINATION", async () => { + const env: any = { + DB_DRIVER: "blob", + DB_FORMAT: "sql", + JWT_SECRET: JWT, + ESA_BLOB: fakeBlob(), + } + const status = await getStoreStatus(env) + assert.equal(status.configErrorCode, "INVALID_COMBINATION") +}) + +// ───────────────────────────────────────────────────────────────────────────── +// 约束 3:合法「驱动 × 格式」矩阵 +// ───────────────────────────────────────────────────────────────────────────── + +test("合法矩阵:仅文档列出的组合被接受,其余皆 INVALID_COMBINATION", async () => { + // 每个驱动都在 env 里把所需 binding/凭据全部提供,确保「拒绝」只可能来自 + // 组合校验本身,而不是驱动不可用(DRIVER_UNAVAILABLE)等其它原因。 + const baseEnv: any = { + JWT_SECRET: JWT, + ESA_BLOB: fakeBlob(), + KV: fakeKv(), + DB: { + prepare: () => ({ + bind: () => ({ all: async () => ({ results: [] }), run: async () => ({}) }), + }), + batch: async () => [], + dump: async () => new ArrayBuffer(0), + exec: async () => ({ count: 0 }), + }, + DO: { idFromName: (n: string) => n, get: () => ({ fetch: async () => new Response("{}") }) }, + CF_ACCOUNT: "acct", + CF_KV_UUID: "uuid", + CF_API_KEY: "key", + MYSQL_URLS: "mysql://u:p@h:3306/d", + } + + const expected: Record<string, string[]> = { + blob: ["map"], + kv: ["map", "key"], + cfkv: ["map", "key"], + d1: ["map", "key", "sql"], + do: ["map", "key", "sql"], + mysql: ["map", "key", "sql"], + } + + for (const [driver, allowed] of Object.entries(expected)) { + for (const format of ["map", "key", "sql"]) { + const env = { ...baseEnv, DB_DRIVER: driver, DB_FORMAT: format } + const status = await getStoreStatus(env) + const isInvalid = status.configErrorCode === "INVALID_COMBINATION" + const shouldBeValid = allowed.includes(format) + assert.equal( + isInvalid, + !shouldBeValid, + `${driver} + ${format}:期望 ${shouldBeValid ? "合法" : "非法"},` + + `实际 configErrorCode=${status.configErrorCode}`, + ) + } + } +}) + +// ───────────────────────────────────────────────────────────────────────────── +// 约束 2:JWT_SECRET 可自动生成,不应阻断安装 +// ───────────────────────────────────────────────────────────────────────────── + +test("未配置 JWT_SECRET:ready 仍应为 true(存储可用即可开始安装)", async () => { + const env: any = { + DB_DRIVER: "kv", + DB_FORMAT: "map", + KV: fakeKv(), + // 故意不配 JWT_SECRET + } + + const res = await buildApp().request( + "/api/public/env_check", + { method: "GET" }, + env, + ) + const data = (await res.json()).data + + assert.equal( + data.ready, + true, + "ready 只表示「存储就绪、可以开始安装」。若把 jwtReady 也算进去,会形成" + + "自死锁:自动生成密钥只在提交初始化时执行,而向导被 ready 挡住进不到那一步", + ) + assert.equal(data.jwt.ready, false, "密钥确实尚未就绪,UI 仍需提示") + + const issue = data.issues.find((i: any) => i.code === "JWT_SECRET_MISSING") + assert.ok(issue, "仍要给出提示,让用户知道可以手动配置更稳妥") + assert.equal( + issue.level, + "warning", + "缺密钥不是 error:存储可用时 setup 会自动生成并持久化", + ) + assert.match(String(issue.suggestion), /let setup generate one/) +}) + +test("未配置 JWT_SECRET:初始化成功后必须自动生成并持久化密钥", async () => { + const kv = fakeKv() + const env: any = { + DB_DRIVER: "kv", + DB_FORMAT: "map", + KV: kv, + // 故意不配 JWT_SECRET + } + + const res = await buildApp().request( + "/api/public/init/setup", + { + method: "POST", + headers: { "content-type": "application/json" }, + body: JSON.stringify({ username: "admin", password: "admin1234" }), + } as any, + env, + ) + + assert.equal(res.status, 200, "未配置 JWT_SECRET 不应阻断初始化") + + // 自动生成的密钥必须落到加密密钥槽位,并被 JWT 侧可见(否则就是 + // 「看着生成了、实际没生效」:JWT 侧读的是另一个槽位名)。 + const generated = kv.__store.get("openlist_encryption_secret") + assert.ok( + generated && generated.length > 0, + "setup 必须把自动生成的密钥持久化到 openlist_encryption_secret", + ) + + // 再来一次 env_check:此时密钥已就绪 + const after = await buildApp().request( + "/api/public/env_check", + { method: "GET" }, + env, + ) + const afterData = (await after.json()).data + assert.equal( + afterData.jwt.ready, + true, + "自动生成之后,jwt.ready 必须变为 true —— 这正是「自动生成是否真的生效」的判定", + ) + assert.equal(afterData.jwt.source, "env-or-persisted") + + // 关键不变量:JWT 侧实际使用的密钥必须**就是** setup 生成的那把。 + // 历史 bug:JWT 读 openlist_jwt_secret、setup 写 + // openlist_encryption_secret —— 两个槽位名不同,于是 JWT 侧看不到生成结果, + // 又自己生成一把写入另一个槽位。结果是「生成了一份,却有两把在漂移」, + // 多实例验签互相失败、冷启动即换钥。这里直接比对密钥值。 + const { getJwtSecret, resetJwtSecretCache } = await import("./middlewares") + resetJwtSecretCache() + const jwtSecret = await getJwtSecret({ env }) + assert.equal( + jwtSecret, + generated, + "JWT 签名密钥必须复用 setup 自动生成的密钥,而不是另起一把" + + "(同名密钥分离会导致「自动生成看着生效、实际验签失败」)", + ) +})