w3pk 0.10.1 → 0.10.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -0
- package/dist/index.d.mts +39 -12
- package/dist/index.d.ts +39 -12
- package/dist/index.js +24 -24
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +25 -25
- package/dist/index.mjs.map +1 -1
- package/docs/API_REFERENCE.md +9 -90
- package/docs/ARCHITECTURE.md +45 -42
- package/docs/INTEGRATION_GUIDELINES.md +4 -7
- package/docs/SECURITY.md +155 -314
- package/package.json +1 -1
- package/dist/chainlist/index.d.mts +0 -96
- package/dist/chainlist/index.d.ts +0 -96
package/dist/index.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
"use strict";var ph=Object.create;var ar=Object.defineProperty;var mh=Object.getOwnPropertyDescriptor;var gh=Object.getOwnPropertyNames;var yh=Object.getPrototypeOf,wh=Object.prototype.hasOwnProperty;var bh=(r,e,t)=>e in r?ar(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t;var p=(r,e)=>()=>(r&&(e=r(r=0)),e);var P=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),E=(r,e)=>{for(var t in e)ar(r,t,{get:e[t],enumerable:!0})},sa=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of gh(e))!wh.call(r,s)&&s!==t&&ar(r,s,{get:()=>e[s],enumerable:!(n=mh(e,s))||n.enumerable});return r};var z=(r,e,t)=>(t=r!=null?ph(yh(r)):{},sa(e||!r||!r.__esModule?ar(t,"default",{value:r,enumerable:!0}):t,r)),Sh=r=>sa(ar({},"__esModule",{value:!0}),r);var f=(r,e,t)=>bh(r,typeof e!="symbol"?e+"":e,t);var $,K,At,y,M,I,sn,j=p(()=>{"use strict";$=class extends Error{constructor(t,n,s){super(t);this.code=n;this.originalError=s;this.name="Web3PasskeyError"}},K=class extends ${constructor(e,t){super(e,"AUTHENTICATION_ERROR",t),this.name="AuthenticationError"}},At=class extends ${constructor(e,t){super(e,"REGISTRATION_ERROR",t),this.name="RegistrationError"}},y=class extends ${constructor(e,t){super(e,"WALLET_ERROR",t),this.name="WalletError"}},M=class extends ${constructor(e,t){super(e,"CRYPTO_ERROR",t),this.name="CryptoError"}},I=class extends ${constructor(e,t){super(e,"STORAGE_ERROR",t),this.name="StorageError"}},sn=class extends ${constructor(t,n,s){super(t,"API_ERROR",s);this.statusCode=n;this.name="ApiError"}}});var Os={};E(Os,{arrayBufferToBase64Url:()=>oe,base64ToArrayBuffer:()=>Ls,base64UrlDecode:()=>Ks,base64UrlToArrayBuffer:()=>N,safeAtob:()=>Xe,safeBtoa:()=>_s});function N(r){try{let e=r.replace(/-/g,"+").replace(/_/g,"/"),t=(4-e.length%4)%4;e+="=".repeat(t);let n=atob(e),s=new Uint8Array(n.length);for(let i=0;i<n.length;i++)s[i]=n.charCodeAt(i);return s.buffer}catch(e){throw new Error(`Failed to decode base64url string: ${e instanceof Error?e.message:"Invalid format"}`)}}function oe(r){let e=r instanceof Uint8Array?r:new Uint8Array(r),t="";for(let n=0;n<e.length;n++)t+=String.fromCharCode(e[n]);return btoa(t).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}function Ls(r){try{let e=atob(r),t=new Uint8Array(e.length);for(let n=0;n<e.length;n++)t[n]=e.charCodeAt(n);return t.buffer}catch(e){throw new Error(`Failed to decode base64 string: ${e instanceof Error?e.message:"Invalid format"}`)}}function Xe(r){try{let e=r.replace(/-/g,"+").replace(/_/g,"/"),t=(4-e.length%4)%4;return e+="=".repeat(t),atob(e)}catch(e){throw new Error(`Failed to decode base64 string: ${e instanceof Error?e.message:"Invalid format"}`)}}function _s(r){try{let e=new TextEncoder().encode(r),t="";for(let n=0;n<e.length;n++)t+=String.fromCharCode(e[n]);return btoa(t)}catch(e){throw new Error(`Failed to encode string: ${e instanceof Error?e.message:"Invalid input"}`)}}function Ks(r){return N(r)}var me=p(()=>{"use strict"});var Ne={};E(Ne,{decryptData:()=>ce,deriveEncryptionKey:()=>Ah,deriveEncryptionKeyAuto:()=>J,deriveEncryptionKeyFromWebAuthn:()=>aa,encryptData:()=>ae,generateChallenge:()=>Ue,generateSalt:()=>zs,hashCredentialId:()=>xt,hashPublicKey:()=>Ws});async function aa(r,e){try{if(r.byteLength!==32)throw new Error("PRF output must be 32 bytes");if(e.byteLength!==32)throw new Error("Salt must be 32 bytes");let t=await crypto.subtle.importKey("raw",r,{name:"PBKDF2"},!1,["deriveKey"]);return crypto.subtle.deriveKey({name:"PBKDF2",salt:e,iterations:21e4,hash:"SHA-256"},t,{name:"AES-GCM",length:256},!1,["encrypt","decrypt"])}catch(t){throw new M("Failed to derive encryption key from WebAuthn PRF",t)}}function zs(){return crypto.getRandomValues(new Uint8Array(32))}async function J(r,e,t,n){if(r&&e)return aa(r,e);console.warn("\u26A0\uFE0F SECURITY WARNING: Using insecure legacy encryption. Wallet is vulnerable to offline decryption attacks. Migrate to PRF-based encryption immediately.");try{let s=n?`w3pk-v4:${t}:${n}`:`w3pk-v4:${t}`,i=await crypto.subtle.digest("SHA-256",new TextEncoder().encode(s)),o=await crypto.subtle.importKey("raw",i,{name:"PBKDF2"},!1,["deriveKey"]),a=await crypto.subtle.digest("SHA-256",new TextEncoder().encode("w3pk-salt-v4"));return crypto.subtle.deriveKey({name:"PBKDF2",salt:new Uint8Array(a),iterations:21e4,hash:"SHA-256"},o,{name:"AES-GCM",length:256},!1,["encrypt","decrypt"])}catch(s){throw new M("Failed to derive encryption key from WebAuthn",s)}}async function Ah(r,e){try{let t=e?`w3pk-v2:${r}:${e}`:`w3pk-v2:${r}`,n=await crypto.subtle.digest("SHA-256",new TextEncoder().encode(t)),s=await crypto.subtle.importKey("raw",n,{name:"PBKDF2"},!1,["deriveKey"]),i=await crypto.subtle.digest("SHA-256",new TextEncoder().encode("w3pk-salt-v2"));return crypto.subtle.deriveKey({name:"PBKDF2",salt:new Uint8Array(i),iterations:21e4,hash:"SHA-256"},s,{name:"AES-GCM",length:256},!1,["encrypt","decrypt"])}catch(t){throw new M("Failed to derive encryption key",t)}}function Ue(){let r=new Uint8Array(32);return crypto.getRandomValues(r),oe(r)}async function ae(r,e){try{let t=crypto.getRandomValues(new Uint8Array(12)),n=new TextEncoder().encode(r),s=await crypto.subtle.encrypt({name:"AES-GCM",iv:t},e,n),i=new Uint8Array(t.length+s.byteLength);i.set(t),i.set(new Uint8Array(s),t.length);let o="";for(let a=0;a<i.length;a++)o+=String.fromCharCode(i[a]);return btoa(o)}catch(t){throw new M("Failed to encrypt data",t)}}async function ce(r,e){try{if(!r||r.length<16)throw new Error("Invalid encrypted data: too small");let t=Xe(r),n=new Uint8Array(t.length);for(let a=0;a<t.length;a++)n[a]=t.charCodeAt(a);if(n.length<12)throw new Error("Invalid encrypted data: missing IV");let s=n.slice(0,12),i=n.slice(12);if(i.length===0)throw new Error("Invalid encrypted data: no content");let o=await crypto.subtle.decrypt({name:"AES-GCM",iv:s},e,i);return new TextDecoder().decode(o)}catch(t){throw new M(`Data decryption failed: ${t instanceof Error?t.message:"Unknown error"}`,t)}}async function xt(r){try{let e=await crypto.subtle.digest("SHA-256",new TextEncoder().encode(`w3pk-cred-id:${r}`));return oe(e)}catch(e){throw new M("Failed to hash credential ID",e)}}async function Ws(r){try{let e=await crypto.subtle.digest("SHA-256",new TextEncoder().encode(r));return oe(e)}catch(e){throw new M("Failed to hash public key",e)}}var q=p(()=>{"use strict";j();me()});var un={};E(un,{CredentialStorage:()=>R});async function ca(r){let e=new TextEncoder().encode(`w3pk-metadata-v1:${r}`),t=await crypto.subtle.digest("SHA-256",e),n=await crypto.subtle.importKey("raw",t,{name:"PBKDF2"},!1,["deriveKey"]);return await crypto.subtle.deriveKey({name:"PBKDF2",salt:new TextEncoder().encode("w3pk-metadata-salt-v1"),iterations:1e5,hash:"SHA-256"},n,{name:"AES-GCM",length:256},!1,["encrypt","decrypt"])}var cn,ln,R,Le=p(()=>{"use strict";j();q();cn="w3pk_credential_",ln="w3pk_credential_index";R=class{constructor(e){if(e)this.storage=e;else if(typeof window<"u"&&window.localStorage)this.storage=window.localStorage;else throw new I("localStorage is not available")}async saveCredential(e){try{let t=await ca(e.id),n=await xt(e.id),s={id:n,encryptedUsername:await ae(e.username,t),encryptedAddress:await ae(e.ethereumAddress,t),publicKey:e.publicKey,publicKeyFingerprint:await Ws(e.publicKey),createdAt:e.createdAt,lastUsed:e.lastUsed},i=`${cn}${n}`;this.storage.setItem(i,JSON.stringify(s)),await this.addToIndex(e.id)}catch(t){throw new I("Failed to save credential",t)}}async getCredentialById(e){try{let t=await xt(e),n=`${cn}${t}`,s=this.storage.getItem(n);if(!s)return null;let i=JSON.parse(s),o=await ca(e);return{id:e,publicKey:i.publicKey,username:await ce(i.encryptedUsername,o),ethereumAddress:await ce(i.encryptedAddress,o),createdAt:i.createdAt,lastUsed:i.lastUsed}}catch(t){throw new I("Failed to retrieve credential",t)}}async getCredentialByUsername(e){try{return(await this.getAllCredentials()).find(n=>n.username===e)||null}catch(t){throw new I("Failed to retrieve credential",t)}}async getCredentialByAddress(e){try{return(await this.getAllCredentials()).find(n=>n.ethereumAddress.toLowerCase()===e.toLowerCase())||null}catch(t){throw new I("Failed to retrieve credential",t)}}async getAllCredentials(){try{let e=await this.getIndex();return(await Promise.all(e.map(async n=>await this.getCredentialById(n)))).filter(n=>n!==null)}catch(e){throw new I("Failed to retrieve credentials",e)}}async userExists(e){return await this.getCredentialByUsername(e)!==null}async updateLastUsed(e){try{let t=await this.getCredentialById(e);t&&(t.lastUsed=new Date().toISOString(),await this.saveCredential(t))}catch(t){throw new I("Failed to update timestamp",t)}}async updateSignatureCounter(e,t){try{let n=await this.getCredentialById(e);n&&(n.signCount=t,n.lastUsed=new Date().toISOString(),await this.saveCredential(n))}catch(n){throw new I("Failed to update signature counter",n)}}async updateCredentialAddress(e,t){try{let n=await this.getCredentialById(e);n&&(n.ethereumAddress=t,n.lastUsed=new Date().toISOString(),await this.saveCredential(n))}catch(n){throw new I("Failed to update credential address",n)}}async deleteCredential(e){try{let t=await xt(e),n=`${cn}${t}`;this.storage.removeItem(n),await this.removeFromIndex(e)}catch(t){throw new I("Failed to delete credential",t)}}async clearAll(){try{let e=await this.getIndex();(await Promise.all(e.map(async n=>await xt(n)))).forEach(n=>{let s=`${cn}${n}`;this.storage.removeItem(s)}),this.storage.removeItem(ln)}catch(e){throw new I("Failed to clear credentials",e)}}async getIndex(){try{let e=this.storage.getItem(ln);return e?JSON.parse(e):[]}catch{return[]}}async addToIndex(e){let t=await this.getIndex();t.includes(e)||(t.push(e),this.storage.setItem(ln,JSON.stringify(t)))}async removeFromIndex(e){let n=(await this.getIndex()).filter(s=>s!==e);this.storage.setItem(ln,JSON.stringify(n))}}});var vt={};E(vt,{createWalletFromMnemonic:()=>$s,deriveWalletFromMnemonic:()=>ur,generateBIP39Wallet:()=>lr});function lr(){try{let r=cr.ethers.Wallet.createRandom().mnemonic;if(!r)throw new Error("Failed to generate mnemonic");let e=r.phrase;return{address:cr.ethers.HDNodeWallet.fromPhrase(e,void 0,"m/44'/60'/0'/0/0").address,mnemonic:e}}catch(r){throw new y("Wallet generation failed",r)}}function $s(r){try{if(!r||r.trim().split(/\s+/).length<12)throw new Error("Invalid mnemonic: must be at least 12 words");return cr.ethers.HDNodeWallet.fromPhrase(r.trim(),void 0,"m/44'/60'/0'/0/0")}catch(e){throw new y(`Wallet creation failed: ${e instanceof Error?e.message:"Invalid mnemonic"}`,e)}}function ur(r,e=0){try{if(!r||r.trim().split(/\s+/).length<12)throw new Error("Invalid mnemonic: must be at least 12 words");if(e<0||!Number.isInteger(e))throw new Error("Index must be a non-negative integer");let t=`m/44'/60'/0'/0/${e}`,n=cr.ethers.HDNodeWallet.fromPhrase(r.trim(),void 0,t);return{address:n.address,privateKey:n.privateKey}}catch(t){throw new y(`HD wallet derivation failed: ${t instanceof Error?t.message:"Unknown error"}`,t)}}var cr,De=p(()=>{"use strict";cr=require("ethers");j()});var pn={};E(pn,{DEFAULT_MODE:()=>ge,DEFAULT_TAG:()=>Q,deriveAddressFromP256PublicKey:()=>qs,deriveIndexFromOriginModeAndTag:()=>fn,getCurrentOrigin:()=>we,getOriginSpecificAddress:()=>ye,normalizeOrigin:()=>dr});function dr(r){try{let e=new URL(r),t=`${e.protocol}//${e.hostname.toLowerCase()}`,n=e.port;return n&&!(e.protocol==="https:"&&n==="443"||e.protocol==="http:"&&n==="80")&&(t+=`:${n}`),t}catch(e){throw new y(`Invalid origin URL: ${r}`,e)}}async function fn(r,e=ge,t=Q){try{let s=`${dr(r)}:${e}:${t.toUpperCase()}`,o=new TextEncoder().encode(s),a=await crypto.subtle.digest("SHA-256",o);return new DataView(a).getUint32(0,!1)%Dh}catch(n){throw new y(`Failed to derive index from origin "${r}", mode "${e}", and tag "${t}"`,n)}}async function ye(r,e,t,n){try{let s=t||ge,i=(n||Q).toUpperCase(),o=dr(e),a=await fn(o,s,i),{address:c,privateKey:l}=ur(r,a),u={address:c,index:a,origin:o,mode:s,tag:i};return s==="YOLO"&&(u.privateKey=l),u}catch(s){throw new y(`Failed to derive origin-specific address for "${e}" with mode "${t||ge}" and tag "${n||Q}"`,s)}}function we(){if(typeof window>"u"||!window.location)throw new y("getCurrentOrigin() only works in browser environments");return window.location.origin}async function qs(r){try{let e=N(r),t=await crypto.subtle.importKey("spki",e,{name:"ECDSA",namedCurve:"P-256"},!0,["verify"]),n=await crypto.subtle.exportKey("jwk",t);if(!n.x||!n.y)throw new Error("Invalid P-256 public key: missing x or y coordinates");let s=N(n.x),i=N(n.y),o=new Uint8Array(64);return o.set(new Uint8Array(s),0),o.set(new Uint8Array(i),32),"0x"+(0,da.keccak256)(o).slice(-40)}catch(e){throw new y("Failed to derive address from P-256 public key",e)}}var da,ge,Q,Dh,Et=p(()=>{"use strict";De();j();da=require("ethers");me();ge="STANDARD",Q="MAIN",Dh=2147483647});var js={};E(js,{encodeEIP7702AuthorizationMessage:()=>mr,hashEIP7702AuthorizationMessage:()=>gr,verifyEIP7702Authorization:()=>Sn});function mr(r,e,t){let n=[r===0n?"0x":(0,re.toBeHex)(r),e.toLowerCase(),t===0n?"0x":(0,re.toBeHex)(t)],s=(0,re.encodeRlp)(n);return(0,re.concat)(["0x05",s])}function gr(r,e,t){let n=mr(r,e,t);return(0,re.keccak256)(n)}function Sn(r,e,t,n,s){try{let i=gr(r,e,t),o;return typeof n=="string"?o=re.Signature.from(n):o=n,(0,re.recoverAddress)(i,o).toLowerCase()===s.toLowerCase()}catch{return!1}}var re,An=p(()=>{"use strict";re=require("ethers")});var va={};E(va,{detectWalletProvider:()=>En,getDefaultProvider:()=>vn,requestExternalWalletAuthorization:()=>xn,supportsEIP7702Authorization:()=>kn});async function xn(r,e){if(!r)throw new Error("No external wallet provider found. Please install MetaMask or similar wallet.");let t=BigInt(e.chainId||1),n=e.nonce||0n,s=e.accountIndex||0,i=await r.request({method:"eth_requestAccounts"});if(!i||i.length===0)throw new Error("No accounts found in external wallet");if(s>=i.length)throw new Error(`Account index ${s} out of range. Wallet has ${i.length} accounts.`);let o=i[s],{hashEIP7702AuthorizationMessage:a,verifyEIP7702Authorization:c}=await Promise.resolve().then(()=>(An(),js)),{Signature:l}=await import("ethers"),u=a(t,e.delegateToAddress,n),d;try{d=await r.request({method:"eth_sign",params:[o,u]})}catch(w){try{d=await r.request({method:"personal_sign",params:[u,o]})}catch(b){throw new Error(`Failed to request signature from wallet. eth_sign error: ${w.message}, personal_sign error: ${b.message}`)}}let h=l.from(d),m={chainId:t,address:e.delegateToAddress.toLowerCase(),nonce:n,yParity:h.yParity,r:h.r,s:h.s};if(!c(t,e.delegateToAddress,n,m,o))throw new Error(`Signature verification failed. Expected signer: ${o}, but signature does not match. This may indicate a wallet implementation issue.`);return m}function vn(){if(typeof window>"u")return null;let r=window;return r.ethereum?r.ethereum:r.web3?.currentProvider?r.web3.currentProvider:null}function En(r){let e=r;return e.isMetaMask?"MetaMask":e.isRabby?"Rabby":e.isCoinbaseWallet?"Coinbase Wallet":e.isBraveWallet?"Brave Wallet":e.isTokenPocket?"TokenPocket":e.isTrust?"Trust Wallet":"Unknown Wallet"}async function kn(r){try{let e=await r.request({method:"eth_accounts"});return Array.isArray(e)}catch{return!1}}var Js=p(()=>{"use strict"});var ka={};E(ka,{extractRS:()=>Qs});function Qs(r){let e=0;if(r[e++]!==48)throw new Error("Invalid DER signature: missing sequence tag");if(e++,r[e++]!==2)throw new Error("Invalid DER signature: missing r integer tag");let t=r[e++];t>32&&(e++,t--);let n=r.slice(e,e+t);if(e+=t,r[e++]!==2)throw new Error("Invalid DER signature: missing s integer tag");let s=r[e++];s>32&&(e++,s--);let i=r.slice(e,e+s),o=new Uint8Array(32),a=new Uint8Array(32);o.set(n,32-n.length),a.set(i,32-i.length);let c=BigInt("0xFFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551"),l=BigInt("0x"+Buffer.from(a).toString("hex"));l>c/2n&&(l=c-l);let u="0x"+Buffer.from(o).toString("hex"),d="0x"+l.toString(16).padStart(64,"0");return{r:u,s:d}}var Zs=p(()=>{"use strict"});var Ca={};E(Ca,{BackupStorage:()=>et});var et,Cn=p(()=>{"use strict";et=class{constructor(){this.dbName="Web3PasskeyBackup";this.version=1;this.db=null}async init(){return typeof indexedDB>"u"?Promise.resolve():new Promise((e,t)=>{let n=indexedDB.open(this.dbName,this.version);n.onerror=()=>t(n.error),n.onsuccess=()=>{this.db=n.result,e()},n.onupgradeneeded=s=>{let i=s.target.result;if(!i.objectStoreNames.contains("backups")){let o=i.createObjectStore("backups",{keyPath:"id"});o.createIndex("ethereumAddress","ethereumAddress",{unique:!1}),o.createIndex("method","method",{unique:!1}),o.createIndex("createdAt","createdAt",{unique:!1})}}})}async storeBackupMetadata(e){return this.db||await this.init(),this.db?new Promise((t,n)=>{let o=this.db.transaction(["backups"],"readwrite").objectStore("backups").put(e);o.onsuccess=()=>t(),o.onerror=()=>n(o.error)}):Promise.resolve()}async getBackupsByAddress(e){return this.db||await this.init(),this.db?new Promise((t,n)=>{let a=this.db.transaction(["backups"],"readonly").objectStore("backups").index("ethereumAddress").getAll(e);a.onsuccess=()=>t(a.result),a.onerror=()=>n(a.error)}):Promise.resolve([])}async getBackupById(e){return this.db||await this.init(),this.db?new Promise((t,n)=>{let o=this.db.transaction(["backups"],"readonly").objectStore("backups").get(e);o.onsuccess=()=>t(o.result||null),o.onerror=()=>n(o.error)}):Promise.resolve(null)}async deleteBackup(e){return this.db||await this.init(),this.db?new Promise((t,n)=>{let o=this.db.transaction(["backups"],"readwrite").objectStore("backups").delete(e);o.onsuccess=()=>t(),o.onerror=()=>n(o.error)}):Promise.resolve()}async getBackupCountByMethod(e){return this.db||await this.init(),this.db?new Promise((t,n)=>{let a=this.db.transaction(["backups"],"readonly").objectStore("backups").index("method").count(e);a.onsuccess=()=>t(a.result),a.onerror=()=>n(a.error)}):Promise.resolve(0)}}});var Ia={};E(Ia,{decryptWithPassword:()=>wr,deriveAddressChecksum:()=>ne,deriveKeyFromPassword:()=>Pn,encryptWithPassword:()=>tt,getDeviceFingerprint:()=>Ce,validatePasswordStrength:()=>Pa});async function Pn(r,e,t=31e4){let s=new TextEncoder().encode(r),i=await crypto.subtle.importKey("raw",s,"PBKDF2",!1,["deriveBits","deriveKey"]);return crypto.subtle.deriveKey({name:"PBKDF2",salt:e,iterations:t,hash:"SHA-256"},i,{name:"AES-GCM",length:256},!1,["encrypt","decrypt"])}async function tt(r,e,t){let s=await Pn(e,t,31e4),o=new TextEncoder().encode(r),a=crypto.getRandomValues(new Uint8Array(12)),c=await crypto.subtle.encrypt({name:"AES-GCM",iv:a},s,o);return{encrypted:yr(c),iv:yr(a),salt:yr(t),iterations:31e4}}async function wr(r,e,t,n,s=31e4){let i=Xs(t),o=await Pn(e,i,s),a=Xs(n),c=Xs(r),l=await crypto.subtle.decrypt({name:"AES-GCM",iv:a},o,c);return new TextDecoder().decode(l)}async function Ce(){let e=[navigator.userAgent,navigator.language,new Date().getTimezoneOffset().toString(),screen.width+"x"+screen.height,screen.colorDepth.toString()].join("|"),n=new TextEncoder().encode(e),s=await crypto.subtle.digest("SHA-256",n);return yr(s)}async function ne(r){let t=new TextEncoder().encode(r.toLowerCase()),n=await crypto.subtle.digest("SHA-256",t);return yr(n).substring(0,16)}function Pa(r){let e=[],t=0;return r.length<12?e.push("Password must be at least 12 characters"):t+=25,/[A-Z]/.test(r)?t+=15:e.push("Add at least one uppercase letter"),/[a-z]/.test(r)?t+=15:e.push("Add at least one lowercase letter"),/[0-9]/.test(r)?t+=15:e.push("Add at least one number"),/[!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?]/.test(r)?t+=15:e.push("Add at least one special character"),r.length>=16&&(t+=10),r.length>=20&&(t+=5),["password","12345678","qwerty","abc123","password123","admin","letmein"].some(s=>r.toLowerCase().includes(s))&&(e.push("Password is too common"),t=Math.min(t,25)),{valid:t>=50&&e.length===0,score:Math.min(t,100),feedback:e}}function yr(r){let e=r instanceof Uint8Array?r:new Uint8Array(r),t="";for(let n=0;n<e.byteLength;n++)t+=String.fromCharCode(e[n]);return btoa(t)}function Xs(r){let e=Xe(r),t=new Uint8Array(e.length);for(let n=0;n<e.length;n++)t[n]=e.charCodeAt(n);return t}var rt=p(()=>{"use strict";me()});var Da=P((by,Ba)=>{"use strict";Ba.exports=function(){return typeof Promise=="function"&&Promise.prototype&&Promise.prototype.then}});var _e=P(nt=>{"use strict";var ei,Kh=[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];nt.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};nt.getSymbolTotalCodewords=function(e){return Kh[e]};nt.getBCHDigit=function(r){let e=0;for(;r!==0;)e++,r>>>=1;return e};nt.setToSJISFunction=function(e){if(typeof e!="function")throw new Error('"toSJISFunc" is not a valid function.');ei=e};nt.isKanjiModeEnabled=function(){return typeof ei<"u"};nt.toSJIS=function(e){return ei(e)}});var In=P(ue=>{"use strict";ue.L={bit:1};ue.M={bit:0};ue.Q={bit:3};ue.H={bit:2};function Oh(r){if(typeof r!="string")throw new Error("Param is not a string");switch(r.toLowerCase()){case"l":case"low":return ue.L;case"m":case"medium":return ue.M;case"q":case"quartile":return ue.Q;case"h":case"high":return ue.H;default:throw new Error("Unknown EC Level: "+r)}}ue.isValid=function(e){return e&&typeof e.bit<"u"&&e.bit>=0&&e.bit<4};ue.from=function(e,t){if(ue.isValid(e))return e;try{return Oh(e)}catch{return t}}});var Fa=P((xy,Ra)=>{"use strict";function Ta(){this.buffer=[],this.length=0}Ta.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++}};Ra.exports=Ta});var Ua=P((vy,Ma)=>{"use strict";function br(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)}br.prototype.set=function(r,e,t,n){let s=r*this.size+e;this.data[s]=t,n&&(this.reservedBit[s]=!0)};br.prototype.get=function(r,e){return this.data[r*this.size+e]};br.prototype.xor=function(r,e,t){this.data[r*this.size+e]^=t};br.prototype.isReserved=function(r,e){return this.reservedBit[r*this.size+e]};Ma.exports=br});var Na=P(Bn=>{"use strict";var zh=_e().getSymbolSize;Bn.getRowColCoords=function(e){if(e===1)return[];let t=Math.floor(e/7)+2,n=zh(e),s=n===145?26:Math.ceil((n-13)/(2*t-2))*2,i=[n-7];for(let o=1;o<t-1;o++)i[o]=i[o-1]-s;return i.push(6),i.reverse()};Bn.getPositions=function(e){let t=[],n=Bn.getRowColCoords(e),s=n.length;for(let i=0;i<s;i++)for(let o=0;o<s;o++)i===0&&o===0||i===0&&o===s-1||i===s-1&&o===0||t.push([n[i],n[o]]);return t}});var Ka=P(_a=>{"use strict";var Wh=_e().getSymbolSize,La=7;_a.getPositions=function(e){let t=Wh(e);return[[0,0],[t-La,0],[0,t-La]]}});var Oa=P(F=>{"use strict";F.Patterns={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7};var st={N1:3,N2:3,N3:40,N4:10};F.isValid=function(e){return e!=null&&e!==""&&!isNaN(e)&&e>=0&&e<=7};F.from=function(e){return F.isValid(e)?parseInt(e,10):void 0};F.getPenaltyN1=function(e){let t=e.size,n=0,s=0,i=0,o=null,a=null;for(let c=0;c<t;c++){s=i=0,o=a=null;for(let l=0;l<t;l++){let u=e.get(c,l);u===o?s++:(s>=5&&(n+=st.N1+(s-5)),o=u,s=1),u=e.get(l,c),u===a?i++:(i>=5&&(n+=st.N1+(i-5)),a=u,i=1)}s>=5&&(n+=st.N1+(s-5)),i>=5&&(n+=st.N1+(i-5))}return n};F.getPenaltyN2=function(e){let t=e.size,n=0;for(let s=0;s<t-1;s++)for(let i=0;i<t-1;i++){let o=e.get(s,i)+e.get(s,i+1)+e.get(s+1,i)+e.get(s+1,i+1);(o===4||o===0)&&n++}return n*st.N2};F.getPenaltyN3=function(e){let t=e.size,n=0,s=0,i=0;for(let o=0;o<t;o++){s=i=0;for(let a=0;a<t;a++)s=s<<1&2047|e.get(o,a),a>=10&&(s===1488||s===93)&&n++,i=i<<1&2047|e.get(a,o),a>=10&&(i===1488||i===93)&&n++}return n*st.N3};F.getPenaltyN4=function(e){let t=0,n=e.data.length;for(let i=0;i<n;i++)t+=e.data[i];return Math.abs(Math.ceil(t*100/n/5)-10)*st.N4};function $h(r,e,t){switch(r){case F.Patterns.PATTERN000:return(e+t)%2===0;case F.Patterns.PATTERN001:return e%2===0;case F.Patterns.PATTERN010:return t%3===0;case F.Patterns.PATTERN011:return(e+t)%3===0;case F.Patterns.PATTERN100:return(Math.floor(e/2)+Math.floor(t/3))%2===0;case F.Patterns.PATTERN101:return e*t%2+e*t%3===0;case F.Patterns.PATTERN110:return(e*t%2+e*t%3)%2===0;case F.Patterns.PATTERN111:return(e*t%3+(e+t)%2)%2===0;default:throw new Error("bad maskPattern:"+r)}}F.applyMask=function(e,t){let n=t.size;for(let s=0;s<n;s++)for(let i=0;i<n;i++)t.isReserved(i,s)||t.xor(i,s,$h(e,i,s))};F.getBestMask=function(e,t){let n=Object.keys(F.Patterns).length,s=0,i=1/0;for(let o=0;o<n;o++){t(o),F.applyMask(o,e);let a=F.getPenaltyN1(e)+F.getPenaltyN2(e)+F.getPenaltyN3(e)+F.getPenaltyN4(e);F.applyMask(o,e),a<i&&(i=a,s=o)}return s}});var ri=P(ti=>{"use strict";var Ke=In(),Dn=[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],Tn=[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];ti.getBlocksCount=function(e,t){switch(t){case Ke.L:return Dn[(e-1)*4+0];case Ke.M:return Dn[(e-1)*4+1];case Ke.Q:return Dn[(e-1)*4+2];case Ke.H:return Dn[(e-1)*4+3];default:return}};ti.getTotalCodewordsCount=function(e,t){switch(t){case Ke.L:return Tn[(e-1)*4+0];case Ke.M:return Tn[(e-1)*4+1];case Ke.Q:return Tn[(e-1)*4+2];case Ke.H:return Tn[(e-1)*4+3];default:return}}});var za=P(Fn=>{"use strict";var Sr=new Uint8Array(512),Rn=new Uint8Array(256);(function(){let e=1;for(let t=0;t<255;t++)Sr[t]=e,Rn[e]=t,e<<=1,e&256&&(e^=285);for(let t=255;t<512;t++)Sr[t]=Sr[t-255]})();Fn.log=function(e){if(e<1)throw new Error("log("+e+")");return Rn[e]};Fn.exp=function(e){return Sr[e]};Fn.mul=function(e,t){return e===0||t===0?0:Sr[Rn[e]+Rn[t]]}});var Wa=P(Ar=>{"use strict";var ni=za();Ar.mul=function(e,t){let n=new Uint8Array(e.length+t.length-1);for(let s=0;s<e.length;s++)for(let i=0;i<t.length;i++)n[s+i]^=ni.mul(e[s],t[i]);return n};Ar.mod=function(e,t){let n=new Uint8Array(e);for(;n.length-t.length>=0;){let s=n[0];for(let o=0;o<t.length;o++)n[o]^=ni.mul(t[o],s);let i=0;for(;i<n.length&&n[i]===0;)i++;n=n.slice(i)}return n};Ar.generateECPolynomial=function(e){let t=new Uint8Array([1]);for(let n=0;n<e;n++)t=Ar.mul(t,new Uint8Array([1,ni.exp(n)]));return t}});var Ha=P((Dy,qa)=>{"use strict";var $a=Wa();function si(r){this.genPoly=void 0,this.degree=r,this.degree&&this.initialize(this.degree)}si.prototype.initialize=function(e){this.degree=e,this.genPoly=$a.generateECPolynomial(this.degree)};si.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 n=$a.mod(t,this.genPoly),s=this.degree-n.length;if(s>0){let i=new Uint8Array(this.degree);return i.set(n,s),i}return n};qa.exports=si});var ii=P(Va=>{"use strict";Va.isValid=function(e){return!isNaN(e)&&e>=1&&e<=40}});var oi=P(Te=>{"use strict";var Ga="[0-9]+",qh="[A-Z $%*+\\-./:]+",xr="(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+";xr=xr.replace(/u/g,"\\u");var Hh="(?:(?![A-Z0-9 $%*+\\-./:]|"+xr+`)(?:.|[\r
|
|
2
|
-
]))+`;Te.KANJI=new RegExp(
|
|
3
|
-
Make sure your charset is UTF-8`);t=(t>>>8&255)*192+(t&255),r.put(t,13)}};
|
|
4
|
-
Suggested mode is: `+B.toString(n));switch(t===B.KANJI&&!
|
|
1
|
+
"use strict";var hh=Object.create;var cr=Object.defineProperty;var fh=Object.getOwnPropertyDescriptor;var ph=Object.getOwnPropertyNames;var mh=Object.getPrototypeOf,gh=Object.prototype.hasOwnProperty;var yh=(r,e,t)=>e in r?cr(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t;var p=(r,e)=>()=>(r&&(e=r(r=0)),e);var P=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),k=(r,e)=>{for(var t in e)cr(r,t,{get:e[t],enumerable:!0})},sa=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of ph(e))!gh.call(r,s)&&s!==t&&cr(r,s,{get:()=>e[s],enumerable:!(n=fh(e,s))||n.enumerable});return r};var z=(r,e,t)=>(t=r!=null?hh(mh(r)):{},sa(e||!r||!r.__esModule?cr(t,"default",{value:r,enumerable:!0}):t,r)),wh=r=>sa(cr({},"__esModule",{value:!0}),r);var f=(r,e,t)=>yh(r,typeof e!="symbol"?e+"":e,t);var $,K,At,y,N,I,an,j=p(()=>{"use strict";$=class extends Error{constructor(t,n,s){super(t);this.code=n;this.originalError=s;this.name="Web3PasskeyError"}},K=class extends ${constructor(e,t){super(e,"AUTHENTICATION_ERROR",t),this.name="AuthenticationError"}},At=class extends ${constructor(e,t){super(e,"REGISTRATION_ERROR",t),this.name="RegistrationError"}},y=class extends ${constructor(e,t){super(e,"WALLET_ERROR",t),this.name="WalletError"}},N=class extends ${constructor(e,t){super(e,"CRYPTO_ERROR",t),this.name="CryptoError"}},I=class extends ${constructor(e,t){super(e,"STORAGE_ERROR",t),this.name="StorageError"}},an=class extends ${constructor(t,n,s){super(t,"API_ERROR",s);this.statusCode=n;this.name="ApiError"}}});var Ws={};k(Ws,{arrayBufferToBase64Url:()=>ve,base64ToArrayBuffer:()=>Ks,base64UrlDecode:()=>zs,base64UrlToArrayBuffer:()=>L,safeAtob:()=>Xe,safeBtoa:()=>Os});function L(r){try{let e=r.replace(/-/g,"+").replace(/_/g,"/"),t=(4-e.length%4)%4;e+="=".repeat(t);let n=atob(e),s=new Uint8Array(n.length);for(let i=0;i<n.length;i++)s[i]=n.charCodeAt(i);return s.buffer}catch(e){throw new Error(`Failed to decode base64url string: ${e instanceof Error?e.message:"Invalid format"}`)}}function ve(r){let e=r instanceof Uint8Array?r:new Uint8Array(r),t="";for(let n=0;n<e.length;n++)t+=String.fromCharCode(e[n]);return btoa(t).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}function Ks(r){try{let e=atob(r),t=new Uint8Array(e.length);for(let n=0;n<e.length;n++)t[n]=e.charCodeAt(n);return t.buffer}catch(e){throw new Error(`Failed to decode base64 string: ${e instanceof Error?e.message:"Invalid format"}`)}}function Xe(r){try{let e=r.replace(/-/g,"+").replace(/_/g,"/"),t=(4-e.length%4)%4;return e+="=".repeat(t),atob(e)}catch(e){throw new Error(`Failed to decode base64 string: ${e instanceof Error?e.message:"Invalid format"}`)}}function Os(r){try{let e=new TextEncoder().encode(r),t="";for(let n=0;n<e.length;n++)t+=String.fromCharCode(e[n]);return btoa(t)}catch(e){throw new Error(`Failed to encode string: ${e instanceof Error?e.message:"Invalid input"}`)}}function zs(r){return L(r)}var ke=p(()=>{"use strict"});var Ue={};k(Ue,{PRF_INPUT:()=>lr,decryptData:()=>te,deriveEncryptionKey:()=>Sh,deriveEncryptionKeyFromWebAuthn:()=>fe,derivePrfSessionKey:()=>xt,encryptData:()=>ae,generateChallenge:()=>Ne,hashCredentialId:()=>vt,hashPublicKey:()=>$s});async function xt(r){try{let e=(r instanceof ArrayBuffer,r.byteLength);if(e!==32)throw new Error(`PRF output must be 32 bytes, got ${e}`);let t=await crypto.subtle.importKey("raw",r,"HKDF",!1,["deriveKey"]);return crypto.subtle.deriveKey({name:"HKDF",hash:"SHA-256",salt:new Uint8Array(32),info:bh},t,{name:"AES-GCM",length:256},!1,["encrypt","decrypt"])}catch(e){throw new N("Failed to derive session key from PRF output",e)}}async function fe(r,e){try{let t=e?`w3pk-v4:${r}:${e}`:`w3pk-v4:${r}`,n=await crypto.subtle.digest("SHA-256",new TextEncoder().encode(t)),s=await crypto.subtle.importKey("raw",n,{name:"PBKDF2"},!1,["deriveKey"]),i=await crypto.subtle.digest("SHA-256",new TextEncoder().encode("w3pk-salt-v4"));return crypto.subtle.deriveKey({name:"PBKDF2",salt:new Uint8Array(i),iterations:21e4,hash:"SHA-256"},s,{name:"AES-GCM",length:256},!1,["encrypt","decrypt"])}catch(t){throw new N("Failed to derive encryption key from WebAuthn",t)}}async function Sh(r,e){try{let t=e?`w3pk-v2:${r}:${e}`:`w3pk-v2:${r}`,n=await crypto.subtle.digest("SHA-256",new TextEncoder().encode(t)),s=await crypto.subtle.importKey("raw",n,{name:"PBKDF2"},!1,["deriveKey"]),i=await crypto.subtle.digest("SHA-256",new TextEncoder().encode("w3pk-salt-v2"));return crypto.subtle.deriveKey({name:"PBKDF2",salt:new Uint8Array(i),iterations:21e4,hash:"SHA-256"},s,{name:"AES-GCM",length:256},!1,["encrypt","decrypt"])}catch(t){throw new N("Failed to derive encryption key",t)}}function Ne(){let r=new Uint8Array(32);return crypto.getRandomValues(r),ve(r)}async function ae(r,e){try{let t=crypto.getRandomValues(new Uint8Array(12)),n=new TextEncoder().encode(r),s=await crypto.subtle.encrypt({name:"AES-GCM",iv:t},e,n),i=new Uint8Array(t.length+s.byteLength);i.set(t),i.set(new Uint8Array(s),t.length);let o="";for(let a=0;a<i.length;a++)o+=String.fromCharCode(i[a]);return btoa(o)}catch(t){throw new N("Failed to encrypt data",t)}}async function te(r,e){try{if(!r||r.length<16)throw new Error("Invalid encrypted data: too small");let t=Xe(r),n=new Uint8Array(t.length);for(let a=0;a<t.length;a++)n[a]=t.charCodeAt(a);if(n.length<12)throw new Error("Invalid encrypted data: missing IV");let s=n.slice(0,12),i=n.slice(12);if(i.length===0)throw new Error("Invalid encrypted data: no content");let o=await crypto.subtle.decrypt({name:"AES-GCM",iv:s},e,i);return new TextDecoder().decode(o)}catch(t){throw new N(`Data decryption failed: ${t instanceof Error?t.message:"Unknown error"}`,t)}}async function vt(r){try{let e=await crypto.subtle.digest("SHA-256",new TextEncoder().encode(`w3pk-cred-id:${r}`));return ve(e)}catch(e){throw new N("Failed to hash credential ID",e)}}async function $s(r){try{let e=await crypto.subtle.digest("SHA-256",new TextEncoder().encode(r));return ve(e)}catch(e){throw new N("Failed to hash public key",e)}}var lr,bh,q=p(()=>{"use strict";j();ke();lr=new TextEncoder().encode("w3pk-prf-input-v1"),bh=new TextEncoder().encode("w3pk-prf-session-key-v1")});var hn={};k(hn,{CredentialStorage:()=>R});async function aa(r){let e=new TextEncoder().encode(`w3pk-metadata-v1:${r}`),t=await crypto.subtle.digest("SHA-256",e),n=await crypto.subtle.importKey("raw",t,{name:"PBKDF2"},!1,["deriveKey"]);return await crypto.subtle.deriveKey({name:"PBKDF2",salt:new TextEncoder().encode("w3pk-metadata-salt-v1"),iterations:1e5,hash:"SHA-256"},n,{name:"AES-GCM",length:256},!1,["encrypt","decrypt"])}var un,dn,R,Le=p(()=>{"use strict";j();q();un="w3pk_credential_",dn="w3pk_credential_index";R=class{constructor(e){if(e)this.storage=e;else if(typeof window<"u"&&window.localStorage)this.storage=window.localStorage;else throw new I("localStorage is not available")}async saveCredential(e){try{let t=await aa(e.id),n=await vt(e.id),s={id:n,encryptedUsername:await ae(e.username,t),encryptedAddress:await ae(e.ethereumAddress,t),publicKey:e.publicKey,publicKeyFingerprint:await $s(e.publicKey),createdAt:e.createdAt,lastUsed:e.lastUsed},i=`${un}${n}`;this.storage.setItem(i,JSON.stringify(s)),await this.addToIndex(e.id)}catch(t){throw new I("Failed to save credential",t)}}async getCredentialById(e){try{let t=await vt(e),n=`${un}${t}`,s=this.storage.getItem(n);if(!s)return null;let i=JSON.parse(s),o=await aa(e);return{id:e,publicKey:i.publicKey,username:await te(i.encryptedUsername,o),ethereumAddress:await te(i.encryptedAddress,o),createdAt:i.createdAt,lastUsed:i.lastUsed}}catch(t){throw new I("Failed to retrieve credential",t)}}async getCredentialByUsername(e){try{return(await this.getAllCredentials()).find(n=>n.username===e)||null}catch(t){throw new I("Failed to retrieve credential",t)}}async getCredentialByAddress(e){try{return(await this.getAllCredentials()).find(n=>n.ethereumAddress.toLowerCase()===e.toLowerCase())||null}catch(t){throw new I("Failed to retrieve credential",t)}}async getAllCredentials(){try{let e=await this.getIndex();return(await Promise.all(e.map(async n=>await this.getCredentialById(n)))).filter(n=>n!==null)}catch(e){throw new I("Failed to retrieve credentials",e)}}async userExists(e){return await this.getCredentialByUsername(e)!==null}async updateLastUsed(e){try{let t=await this.getCredentialById(e);t&&(t.lastUsed=new Date().toISOString(),await this.saveCredential(t))}catch(t){throw new I("Failed to update timestamp",t)}}async updateSignatureCounter(e,t){try{let n=await this.getCredentialById(e);n&&(n.signCount=t,n.lastUsed=new Date().toISOString(),await this.saveCredential(n))}catch(n){throw new I("Failed to update signature counter",n)}}async updateCredentialAddress(e,t){try{let n=await this.getCredentialById(e);n&&(n.ethereumAddress=t,n.lastUsed=new Date().toISOString(),await this.saveCredential(n))}catch(n){throw new I("Failed to update credential address",n)}}async deleteCredential(e){try{let t=await vt(e),n=`${un}${t}`;this.storage.removeItem(n),await this.removeFromIndex(e)}catch(t){throw new I("Failed to delete credential",t)}}async clearAll(){try{let e=await this.getIndex();(await Promise.all(e.map(async n=>await vt(n)))).forEach(n=>{let s=`${un}${n}`;this.storage.removeItem(s)}),this.storage.removeItem(dn)}catch(e){throw new I("Failed to clear credentials",e)}}async getIndex(){try{let e=this.storage.getItem(dn);return e?JSON.parse(e):[]}catch{return[]}}async addToIndex(e){let t=await this.getIndex();t.includes(e)||(t.push(e),this.storage.setItem(dn,JSON.stringify(t)))}async removeFromIndex(e){let n=(await this.getIndex()).filter(s=>s!==e);this.storage.setItem(dn,JSON.stringify(n))}}});var kt={};k(kt,{createWalletFromMnemonic:()=>qs,deriveWalletFromMnemonic:()=>hr,generateBIP39Wallet:()=>dr});function dr(){try{let r=ur.ethers.Wallet.createRandom().mnemonic;if(!r)throw new Error("Failed to generate mnemonic");let e=r.phrase;return{address:ur.ethers.HDNodeWallet.fromPhrase(e,void 0,"m/44'/60'/0'/0/0").address,mnemonic:e}}catch(r){throw new y("Wallet generation failed",r)}}function qs(r){try{if(!r||r.trim().split(/\s+/).length<12)throw new Error("Invalid mnemonic: must be at least 12 words");return ur.ethers.HDNodeWallet.fromPhrase(r.trim(),void 0,"m/44'/60'/0'/0/0")}catch(e){throw new y(`Wallet creation failed: ${e instanceof Error?e.message:"Invalid mnemonic"}`,e)}}function hr(r,e=0){try{if(!r||r.trim().split(/\s+/).length<12)throw new Error("Invalid mnemonic: must be at least 12 words");if(e<0||!Number.isInteger(e))throw new Error("Index must be a non-negative integer");let t=`m/44'/60'/0'/0/${e}`,n=ur.ethers.HDNodeWallet.fromPhrase(r.trim(),void 0,t);return{address:n.address,privateKey:n.privateKey}}catch(t){throw new y(`HD wallet derivation failed: ${t instanceof Error?t.message:"Unknown error"}`,t)}}var ur,De=p(()=>{"use strict";ur=require("ethers");j()});var gn={};k(gn,{DEFAULT_MODE:()=>pe,DEFAULT_TAG:()=>J,deriveAddressFromP256PublicKey:()=>Hs,deriveIndexFromOriginModeAndTag:()=>mn,getCurrentOrigin:()=>ge,getOriginSpecificAddress:()=>me,normalizeOrigin:()=>fr});function fr(r){try{let e=new URL(r),t=`${e.protocol}//${e.hostname.toLowerCase()}`,n=e.port;return n&&!(e.protocol==="https:"&&n==="443"||e.protocol==="http:"&&n==="80")&&(t+=`:${n}`),t}catch(e){throw new y(`Invalid origin URL: ${r}`,e)}}async function mn(r,e=pe,t=J){try{let s=`${fr(r)}:${e}:${t.toUpperCase()}`,o=new TextEncoder().encode(s),a=await crypto.subtle.digest("SHA-256",o);return new DataView(a).getUint32(0,!1)%Bh}catch(n){throw new y(`Failed to derive index from origin "${r}", mode "${e}", and tag "${t}"`,n)}}async function me(r,e,t,n){try{let s=t||pe,i=(n||J).toUpperCase(),o=fr(e),a=await mn(o,s,i),{address:c,privateKey:l}=hr(r,a),u={address:c,index:a,origin:o,mode:s,tag:i};return s==="YOLO"&&(u.privateKey=l),u}catch(s){throw new y(`Failed to derive origin-specific address for "${e}" with mode "${t||pe}" and tag "${n||J}"`,s)}}function ge(){if(typeof window>"u"||!window.location)throw new y("getCurrentOrigin() only works in browser environments");return window.location.origin}async function Hs(r){try{let e=L(r),t=await crypto.subtle.importKey("spki",e,{name:"ECDSA",namedCurve:"P-256"},!0,["verify"]),n=await crypto.subtle.exportKey("jwk",t);if(!n.x||!n.y)throw new Error("Invalid P-256 public key: missing x or y coordinates");let s=L(n.x),i=L(n.y),o=new Uint8Array(64);return o.set(new Uint8Array(s),0),o.set(new Uint8Array(i),32),"0x"+(0,ua.keccak256)(o).slice(-40)}catch(e){throw new y("Failed to derive address from P-256 public key",e)}}var ua,pe,J,Bh,Et=p(()=>{"use strict";De();j();ua=require("ethers");ke();pe="STANDARD",J="MAIN",Bh=2147483647});var js={};k(js,{encodeEIP7702AuthorizationMessage:()=>yr,hashEIP7702AuthorizationMessage:()=>wr,verifyEIP7702Authorization:()=>xn});function yr(r,e,t){let n=[r===0n?"0x":(0,ne.toBeHex)(r),e.toLowerCase(),t===0n?"0x":(0,ne.toBeHex)(t)],s=(0,ne.encodeRlp)(n);return(0,ne.concat)(["0x05",s])}function wr(r,e,t){let n=yr(r,e,t);return(0,ne.keccak256)(n)}function xn(r,e,t,n,s){try{let i=wr(r,e,t),o;return typeof n=="string"?o=ne.Signature.from(n):o=n,(0,ne.recoverAddress)(i,o).toLowerCase()===s.toLowerCase()}catch{return!1}}var ne,vn=p(()=>{"use strict";ne=require("ethers")});var Aa={};k(Aa,{detectWalletProvider:()=>Cn,getDefaultProvider:()=>En,requestExternalWalletAuthorization:()=>kn,supportsEIP7702Authorization:()=>Pn});async function kn(r,e){if(!r)throw new Error("No external wallet provider found. Please install MetaMask or similar wallet.");let t=BigInt(e.chainId||1),n=e.nonce||0n,s=e.accountIndex||0,i=await r.request({method:"eth_requestAccounts"});if(!i||i.length===0)throw new Error("No accounts found in external wallet");if(s>=i.length)throw new Error(`Account index ${s} out of range. Wallet has ${i.length} accounts.`);let o=i[s],{hashEIP7702AuthorizationMessage:a,verifyEIP7702Authorization:c}=await Promise.resolve().then(()=>(vn(),js)),{Signature:l}=await import("ethers"),u=a(t,e.delegateToAddress,n),d;try{d=await r.request({method:"eth_sign",params:[o,u]})}catch(w){try{d=await r.request({method:"personal_sign",params:[u,o]})}catch(b){throw new Error(`Failed to request signature from wallet. eth_sign error: ${w.message}, personal_sign error: ${b.message}`)}}let h=l.from(d),m={chainId:t,address:e.delegateToAddress.toLowerCase(),nonce:n,yParity:h.yParity,r:h.r,s:h.s};if(!c(t,e.delegateToAddress,n,m,o))throw new Error(`Signature verification failed. Expected signer: ${o}, but signature does not match. This may indicate a wallet implementation issue.`);return m}function En(){if(typeof window>"u")return null;let r=window;return r.ethereum?r.ethereum:r.web3?.currentProvider?r.web3.currentProvider:null}function Cn(r){let e=r;return e.isMetaMask?"MetaMask":e.isRabby?"Rabby":e.isCoinbaseWallet?"Coinbase Wallet":e.isBraveWallet?"Brave Wallet":e.isTokenPocket?"TokenPocket":e.isTrust?"Trust Wallet":"Unknown Wallet"}async function Pn(r){try{let e=await r.request({method:"eth_accounts"});return Array.isArray(e)}catch{return!1}}var Js=p(()=>{"use strict"});var va={};k(va,{extractRS:()=>Qs});function Qs(r){let e=0;if(r[e++]!==48)throw new Error("Invalid DER signature: missing sequence tag");if(e++,r[e++]!==2)throw new Error("Invalid DER signature: missing r integer tag");let t=r[e++];t>32&&(e++,t--);let n=r.slice(e,e+t);if(e+=t,r[e++]!==2)throw new Error("Invalid DER signature: missing s integer tag");let s=r[e++];s>32&&(e++,s--);let i=r.slice(e,e+s),o=new Uint8Array(32),a=new Uint8Array(32);o.set(n,32-n.length),a.set(i,32-i.length);let c=BigInt("0xFFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551"),l=BigInt("0x"+Buffer.from(a).toString("hex"));l>c/2n&&(l=c-l);let u="0x"+Buffer.from(o).toString("hex"),d="0x"+l.toString(16).padStart(64,"0");return{r:u,s:d}}var Zs=p(()=>{"use strict"});var ka={};k(ka,{BackupStorage:()=>et});var et,In=p(()=>{"use strict";et=class{constructor(){this.dbName="Web3PasskeyBackup";this.version=1;this.db=null}async init(){return typeof indexedDB>"u"?Promise.resolve():new Promise((e,t)=>{let n=indexedDB.open(this.dbName,this.version);n.onerror=()=>t(n.error),n.onsuccess=()=>{this.db=n.result,e()},n.onupgradeneeded=s=>{let i=s.target.result;if(!i.objectStoreNames.contains("backups")){let o=i.createObjectStore("backups",{keyPath:"id"});o.createIndex("ethereumAddress","ethereumAddress",{unique:!1}),o.createIndex("method","method",{unique:!1}),o.createIndex("createdAt","createdAt",{unique:!1})}}})}async storeBackupMetadata(e){return this.db||await this.init(),this.db?new Promise((t,n)=>{let o=this.db.transaction(["backups"],"readwrite").objectStore("backups").put(e);o.onsuccess=()=>t(),o.onerror=()=>n(o.error)}):Promise.resolve()}async getBackupsByAddress(e){return this.db||await this.init(),this.db?new Promise((t,n)=>{let a=this.db.transaction(["backups"],"readonly").objectStore("backups").index("ethereumAddress").getAll(e);a.onsuccess=()=>t(a.result),a.onerror=()=>n(a.error)}):Promise.resolve([])}async getBackupById(e){return this.db||await this.init(),this.db?new Promise((t,n)=>{let o=this.db.transaction(["backups"],"readonly").objectStore("backups").get(e);o.onsuccess=()=>t(o.result||null),o.onerror=()=>n(o.error)}):Promise.resolve(null)}async deleteBackup(e){return this.db||await this.init(),this.db?new Promise((t,n)=>{let o=this.db.transaction(["backups"],"readwrite").objectStore("backups").delete(e);o.onsuccess=()=>t(),o.onerror=()=>n(o.error)}):Promise.resolve()}async getBackupCountByMethod(e){return this.db||await this.init(),this.db?new Promise((t,n)=>{let a=this.db.transaction(["backups"],"readonly").objectStore("backups").index("method").count(e);a.onsuccess=()=>t(a.result),a.onerror=()=>n(a.error)}):Promise.resolve(0)}}});var Ca={};k(Ca,{decryptWithPassword:()=>Sr,deriveAddressChecksum:()=>se,deriveKeyFromPassword:()=>Bn,encryptWithPassword:()=>tt,getDeviceFingerprint:()=>Ce,validatePasswordStrength:()=>Ea});async function Bn(r,e,t=31e4){let s=new TextEncoder().encode(r),i=await crypto.subtle.importKey("raw",s,"PBKDF2",!1,["deriveBits","deriveKey"]);return crypto.subtle.deriveKey({name:"PBKDF2",salt:e,iterations:t,hash:"SHA-256"},i,{name:"AES-GCM",length:256},!1,["encrypt","decrypt"])}async function tt(r,e,t){let s=await Bn(e,t,31e4),o=new TextEncoder().encode(r),a=crypto.getRandomValues(new Uint8Array(12)),c=await crypto.subtle.encrypt({name:"AES-GCM",iv:a},s,o);return{encrypted:br(c),iv:br(a),salt:br(t),iterations:31e4}}async function Sr(r,e,t,n,s=31e4){let i=Xs(t),o=await Bn(e,i,s),a=Xs(n),c=Xs(r),l=await crypto.subtle.decrypt({name:"AES-GCM",iv:a},o,c);return new TextDecoder().decode(l)}async function Ce(){let e=[navigator.userAgent,navigator.language,new Date().getTimezoneOffset().toString(),screen.width+"x"+screen.height,screen.colorDepth.toString()].join("|"),n=new TextEncoder().encode(e),s=await crypto.subtle.digest("SHA-256",n);return br(s)}async function se(r){let t=new TextEncoder().encode(r.toLowerCase()),n=await crypto.subtle.digest("SHA-256",t);return br(n).substring(0,16)}function Ea(r){let e=[],t=0;return r.length<12?e.push("Password must be at least 12 characters"):t+=25,/[A-Z]/.test(r)?t+=15:e.push("Add at least one uppercase letter"),/[a-z]/.test(r)?t+=15:e.push("Add at least one lowercase letter"),/[0-9]/.test(r)?t+=15:e.push("Add at least one number"),/[!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?]/.test(r)?t+=15:e.push("Add at least one special character"),r.length>=16&&(t+=10),r.length>=20&&(t+=5),["password","12345678","qwerty","abc123","password123","admin","letmein"].some(s=>r.toLowerCase().includes(s))&&(e.push("Password is too common"),t=Math.min(t,25)),{valid:t>=50&&e.length===0,score:Math.min(t,100),feedback:e}}function br(r){let e=r instanceof Uint8Array?r:new Uint8Array(r),t="";for(let n=0;n<e.byteLength;n++)t+=String.fromCharCode(e[n]);return btoa(t)}function Xs(r){let e=Xe(r),t=new Uint8Array(e.length);for(let n=0;n<e.length;n++)t[n]=e.charCodeAt(n);return t}var rt=p(()=>{"use strict";ke()});var Ia=P((wy,Pa)=>{"use strict";Pa.exports=function(){return typeof Promise=="function"&&Promise.prototype&&Promise.prototype.then}});var _e=P(nt=>{"use strict";var ei,_h=[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];nt.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};nt.getSymbolTotalCodewords=function(e){return _h[e]};nt.getBCHDigit=function(r){let e=0;for(;r!==0;)e++,r>>>=1;return e};nt.setToSJISFunction=function(e){if(typeof e!="function")throw new Error('"toSJISFunc" is not a valid function.');ei=e};nt.isKanjiModeEnabled=function(){return typeof ei<"u"};nt.toSJIS=function(e){return ei(e)}});var Dn=P(ce=>{"use strict";ce.L={bit:1};ce.M={bit:0};ce.Q={bit:3};ce.H={bit:2};function Kh(r){if(typeof r!="string")throw new Error("Param is not a string");switch(r.toLowerCase()){case"l":case"low":return ce.L;case"m":case"medium":return ce.M;case"q":case"quartile":return ce.Q;case"h":case"high":return ce.H;default:throw new Error("Unknown EC Level: "+r)}}ce.isValid=function(e){return e&&typeof e.bit<"u"&&e.bit>=0&&e.bit<4};ce.from=function(e,t){if(ce.isValid(e))return e;try{return Kh(e)}catch{return t}}});var Ta=P((Ay,Da)=>{"use strict";function Ba(){this.buffer=[],this.length=0}Ba.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++}};Da.exports=Ba});var Fa=P((xy,Ra)=>{"use strict";function Ar(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)}Ar.prototype.set=function(r,e,t,n){let s=r*this.size+e;this.data[s]=t,n&&(this.reservedBit[s]=!0)};Ar.prototype.get=function(r,e){return this.data[r*this.size+e]};Ar.prototype.xor=function(r,e,t){this.data[r*this.size+e]^=t};Ar.prototype.isReserved=function(r,e){return this.reservedBit[r*this.size+e]};Ra.exports=Ar});var Ma=P(Tn=>{"use strict";var Oh=_e().getSymbolSize;Tn.getRowColCoords=function(e){if(e===1)return[];let t=Math.floor(e/7)+2,n=Oh(e),s=n===145?26:Math.ceil((n-13)/(2*t-2))*2,i=[n-7];for(let o=1;o<t-1;o++)i[o]=i[o-1]-s;return i.push(6),i.reverse()};Tn.getPositions=function(e){let t=[],n=Tn.getRowColCoords(e),s=n.length;for(let i=0;i<s;i++)for(let o=0;o<s;o++)i===0&&o===0||i===0&&o===s-1||i===s-1&&o===0||t.push([n[i],n[o]]);return t}});var La=P(Ua=>{"use strict";var zh=_e().getSymbolSize,Na=7;Ua.getPositions=function(e){let t=zh(e);return[[0,0],[t-Na,0],[0,t-Na]]}});var _a=P(F=>{"use strict";F.Patterns={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7};var st={N1:3,N2:3,N3:40,N4:10};F.isValid=function(e){return e!=null&&e!==""&&!isNaN(e)&&e>=0&&e<=7};F.from=function(e){return F.isValid(e)?parseInt(e,10):void 0};F.getPenaltyN1=function(e){let t=e.size,n=0,s=0,i=0,o=null,a=null;for(let c=0;c<t;c++){s=i=0,o=a=null;for(let l=0;l<t;l++){let u=e.get(c,l);u===o?s++:(s>=5&&(n+=st.N1+(s-5)),o=u,s=1),u=e.get(l,c),u===a?i++:(i>=5&&(n+=st.N1+(i-5)),a=u,i=1)}s>=5&&(n+=st.N1+(s-5)),i>=5&&(n+=st.N1+(i-5))}return n};F.getPenaltyN2=function(e){let t=e.size,n=0;for(let s=0;s<t-1;s++)for(let i=0;i<t-1;i++){let o=e.get(s,i)+e.get(s,i+1)+e.get(s+1,i)+e.get(s+1,i+1);(o===4||o===0)&&n++}return n*st.N2};F.getPenaltyN3=function(e){let t=e.size,n=0,s=0,i=0;for(let o=0;o<t;o++){s=i=0;for(let a=0;a<t;a++)s=s<<1&2047|e.get(o,a),a>=10&&(s===1488||s===93)&&n++,i=i<<1&2047|e.get(a,o),a>=10&&(i===1488||i===93)&&n++}return n*st.N3};F.getPenaltyN4=function(e){let t=0,n=e.data.length;for(let i=0;i<n;i++)t+=e.data[i];return Math.abs(Math.ceil(t*100/n/5)-10)*st.N4};function Wh(r,e,t){switch(r){case F.Patterns.PATTERN000:return(e+t)%2===0;case F.Patterns.PATTERN001:return e%2===0;case F.Patterns.PATTERN010:return t%3===0;case F.Patterns.PATTERN011:return(e+t)%3===0;case F.Patterns.PATTERN100:return(Math.floor(e/2)+Math.floor(t/3))%2===0;case F.Patterns.PATTERN101:return e*t%2+e*t%3===0;case F.Patterns.PATTERN110:return(e*t%2+e*t%3)%2===0;case F.Patterns.PATTERN111:return(e*t%3+(e+t)%2)%2===0;default:throw new Error("bad maskPattern:"+r)}}F.applyMask=function(e,t){let n=t.size;for(let s=0;s<n;s++)for(let i=0;i<n;i++)t.isReserved(i,s)||t.xor(i,s,Wh(e,i,s))};F.getBestMask=function(e,t){let n=Object.keys(F.Patterns).length,s=0,i=1/0;for(let o=0;o<n;o++){t(o),F.applyMask(o,e);let a=F.getPenaltyN1(e)+F.getPenaltyN2(e)+F.getPenaltyN3(e)+F.getPenaltyN4(e);F.applyMask(o,e),a<i&&(i=a,s=o)}return s}});var ri=P(ti=>{"use strict";var Ke=Dn(),Rn=[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],Fn=[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];ti.getBlocksCount=function(e,t){switch(t){case Ke.L:return Rn[(e-1)*4+0];case Ke.M:return Rn[(e-1)*4+1];case Ke.Q:return Rn[(e-1)*4+2];case Ke.H:return Rn[(e-1)*4+3];default:return}};ti.getTotalCodewordsCount=function(e,t){switch(t){case Ke.L:return Fn[(e-1)*4+0];case Ke.M:return Fn[(e-1)*4+1];case Ke.Q:return Fn[(e-1)*4+2];case Ke.H:return Fn[(e-1)*4+3];default:return}}});var Ka=P(Nn=>{"use strict";var xr=new Uint8Array(512),Mn=new Uint8Array(256);(function(){let e=1;for(let t=0;t<255;t++)xr[t]=e,Mn[e]=t,e<<=1,e&256&&(e^=285);for(let t=255;t<512;t++)xr[t]=xr[t-255]})();Nn.log=function(e){if(e<1)throw new Error("log("+e+")");return Mn[e]};Nn.exp=function(e){return xr[e]};Nn.mul=function(e,t){return e===0||t===0?0:xr[Mn[e]+Mn[t]]}});var Oa=P(vr=>{"use strict";var ni=Ka();vr.mul=function(e,t){let n=new Uint8Array(e.length+t.length-1);for(let s=0;s<e.length;s++)for(let i=0;i<t.length;i++)n[s+i]^=ni.mul(e[s],t[i]);return n};vr.mod=function(e,t){let n=new Uint8Array(e);for(;n.length-t.length>=0;){let s=n[0];for(let o=0;o<t.length;o++)n[o]^=ni.mul(t[o],s);let i=0;for(;i<n.length&&n[i]===0;)i++;n=n.slice(i)}return n};vr.generateECPolynomial=function(e){let t=new Uint8Array([1]);for(let n=0;n<e;n++)t=vr.mul(t,new Uint8Array([1,ni.exp(n)]));return t}});var $a=P((By,Wa)=>{"use strict";var za=Oa();function si(r){this.genPoly=void 0,this.degree=r,this.degree&&this.initialize(this.degree)}si.prototype.initialize=function(e){this.degree=e,this.genPoly=za.generateECPolynomial(this.degree)};si.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 n=za.mod(t,this.genPoly),s=this.degree-n.length;if(s>0){let i=new Uint8Array(this.degree);return i.set(n,s),i}return n};Wa.exports=si});var ii=P(qa=>{"use strict";qa.isValid=function(e){return!isNaN(e)&&e>=1&&e<=40}});var oi=P(Te=>{"use strict";var Ha="[0-9]+",$h="[A-Z $%*+\\-./:]+",kr="(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+";kr=kr.replace(/u/g,"\\u");var qh="(?:(?![A-Z0-9 $%*+\\-./:]|"+kr+`)(?:.|[\r
|
|
2
|
+
]))+`;Te.KANJI=new RegExp(kr,"g");Te.BYTE_KANJI=new RegExp("[^A-Z0-9 $%*+\\-./:]+","g");Te.BYTE=new RegExp(qh,"g");Te.NUMERIC=new RegExp(Ha,"g");Te.ALPHANUMERIC=new RegExp($h,"g");var Hh=new RegExp("^"+kr+"$"),Vh=new RegExp("^"+Ha+"$"),Gh=new RegExp("^[A-Z0-9 $%*+\\-./:]+$");Te.testKanji=function(e){return Hh.test(e)};Te.testNumeric=function(e){return Vh.test(e)};Te.testAlphanumeric=function(e){return Gh.test(e)}});var Oe=P(_=>{"use strict";var Yh=ii(),ai=oi();_.NUMERIC={id:"Numeric",bit:1,ccBits:[10,12,14]};_.ALPHANUMERIC={id:"Alphanumeric",bit:2,ccBits:[9,11,13]};_.BYTE={id:"Byte",bit:4,ccBits:[8,16,16]};_.KANJI={id:"Kanji",bit:8,ccBits:[8,10,12]};_.MIXED={bit:-1};_.getCharCountIndicator=function(e,t){if(!e.ccBits)throw new Error("Invalid mode: "+e);if(!Yh.isValid(t))throw new Error("Invalid version: "+t);return t>=1&&t<10?e.ccBits[0]:t<27?e.ccBits[1]:e.ccBits[2]};_.getBestModeForData=function(e){return ai.testNumeric(e)?_.NUMERIC:ai.testAlphanumeric(e)?_.ALPHANUMERIC:ai.testKanji(e)?_.KANJI:_.BYTE};_.toString=function(e){if(e&&e.id)return e.id;throw new Error("Invalid mode")};_.isValid=function(e){return e&&e.bit&&e.ccBits};function jh(r){if(typeof r!="string")throw new Error("Param is not a string");switch(r.toLowerCase()){case"numeric":return _.NUMERIC;case"alphanumeric":return _.ALPHANUMERIC;case"kanji":return _.KANJI;case"byte":return _.BYTE;default:throw new Error("Unknown mode: "+r)}}_.from=function(e,t){if(_.isValid(e))return e;try{return jh(e)}catch{return t}}});var Ja=P(it=>{"use strict";var Un=_e(),Jh=ri(),Va=Dn(),ze=Oe(),ci=ii(),Ya=7973,Ga=Un.getBCHDigit(Ya);function Qh(r,e,t){for(let n=1;n<=40;n++)if(e<=it.getCapacity(n,t,r))return n}function ja(r,e){return ze.getCharCountIndicator(r,e)+4}function Zh(r,e){let t=0;return r.forEach(function(n){let s=ja(n.mode,e);t+=s+n.getBitsLength()}),t}function Xh(r,e){for(let t=1;t<=40;t++)if(Zh(r,t)<=it.getCapacity(t,e,ze.MIXED))return t}it.from=function(e,t){return ci.isValid(e)?parseInt(e,10):t};it.getCapacity=function(e,t,n){if(!ci.isValid(e))throw new Error("Invalid QR Code version");typeof n>"u"&&(n=ze.BYTE);let s=Un.getSymbolTotalCodewords(e),i=Jh.getTotalCodewordsCount(e,t),o=(s-i)*8;if(n===ze.MIXED)return o;let a=o-ja(n,e);switch(n){case ze.NUMERIC:return Math.floor(a/10*3);case ze.ALPHANUMERIC:return Math.floor(a/11*2);case ze.KANJI:return Math.floor(a/13);case ze.BYTE:default:return Math.floor(a/8)}};it.getBestVersionForData=function(e,t){let n,s=Va.from(t,Va.M);if(Array.isArray(e)){if(e.length>1)return Xh(e,s);if(e.length===0)return 1;n=e[0]}else n=e;return Qh(n.mode,n.getLength(),s)};it.getEncodedBits=function(e){if(!ci.isValid(e)||e<7)throw new Error("Invalid QR Code version");let t=e<<12;for(;Un.getBCHDigit(t)-Ga>=0;)t^=Ya<<Un.getBCHDigit(t)-Ga;return e<<12|t}});var ec=P(Xa=>{"use strict";var li=_e(),Za=1335,ef=21522,Qa=li.getBCHDigit(Za);Xa.getEncodedBits=function(e,t){let n=e.bit<<3|t,s=n<<10;for(;li.getBCHDigit(s)-Qa>=0;)s^=Za<<li.getBCHDigit(s)-Qa;return(n<<10|s)^ef}});var rc=P((Ny,tc)=>{"use strict";var tf=Oe();function It(r){this.mode=tf.NUMERIC,this.data=r.toString()}It.getBitsLength=function(e){return 10*Math.floor(e/3)+(e%3?e%3*3+1:0)};It.prototype.getLength=function(){return this.data.length};It.prototype.getBitsLength=function(){return It.getBitsLength(this.data.length)};It.prototype.write=function(e){let t,n,s;for(t=0;t+3<=this.data.length;t+=3)n=this.data.substr(t,3),s=parseInt(n,10),e.put(s,10);let i=this.data.length-t;i>0&&(n=this.data.substr(t),s=parseInt(n,10),e.put(s,i*3+1))};tc.exports=It});var sc=P((Uy,nc)=>{"use strict";var rf=Oe(),ui=["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 Bt(r){this.mode=rf.ALPHANUMERIC,this.data=r}Bt.getBitsLength=function(e){return 11*Math.floor(e/2)+6*(e%2)};Bt.prototype.getLength=function(){return this.data.length};Bt.prototype.getBitsLength=function(){return Bt.getBitsLength(this.data.length)};Bt.prototype.write=function(e){let t;for(t=0;t+2<=this.data.length;t+=2){let n=ui.indexOf(this.data[t])*45;n+=ui.indexOf(this.data[t+1]),e.put(n,11)}this.data.length%2&&e.put(ui.indexOf(this.data[t]),6)};nc.exports=Bt});var oc=P((Ly,ic)=>{"use strict";var nf=Oe();function Dt(r){this.mode=nf.BYTE,typeof r=="string"?this.data=new TextEncoder().encode(r):this.data=new Uint8Array(r)}Dt.getBitsLength=function(e){return e*8};Dt.prototype.getLength=function(){return this.data.length};Dt.prototype.getBitsLength=function(){return Dt.getBitsLength(this.data.length)};Dt.prototype.write=function(r){for(let e=0,t=this.data.length;e<t;e++)r.put(this.data[e],8)};ic.exports=Dt});var cc=P((_y,ac)=>{"use strict";var sf=Oe(),of=_e();function Tt(r){this.mode=sf.KANJI,this.data=r}Tt.getBitsLength=function(e){return e*13};Tt.prototype.getLength=function(){return this.data.length};Tt.prototype.getBitsLength=function(){return Tt.getBitsLength(this.data.length)};Tt.prototype.write=function(r){let e;for(e=0;e<this.data.length;e++){let t=of.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]+`
|
|
3
|
+
Make sure your charset is UTF-8`);t=(t>>>8&255)*192+(t&255),r.put(t,13)}};ac.exports=Tt});var lc=P((Ky,di)=>{"use strict";var Er={single_source_shortest_paths:function(r,e,t){var n={},s={};s[e]=0;var i=Er.PriorityQueue.make();i.push(e,0);for(var o,a,c,l,u,d,h,m,g;!i.empty();){o=i.pop(),a=o.value,l=o.cost,u=r[a]||{};for(c in u)u.hasOwnProperty(c)&&(d=u[c],h=l+d,m=s[c],g=typeof s[c]>"u",(g||m>h)&&(s[c]=h,i.push(c,h),n[c]=a))}if(typeof t<"u"&&typeof s[t]>"u"){var w=["Could not find a path from ",e," to ",t,"."].join("");throw new Error(w)}return n},extract_shortest_path_from_predecessor_list:function(r,e){for(var t=[],n=e,s;n;)t.push(n),s=r[n],n=r[n];return t.reverse(),t},find_path:function(r,e,t){var n=Er.single_source_shortest_paths(r,e,t);return Er.extract_shortest_path_from_predecessor_list(n,t)},PriorityQueue:{make:function(r){var e=Er.PriorityQueue,t={},n;r=r||{};for(n in e)e.hasOwnProperty(n)&&(t[n]=e[n]);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 di<"u"&&(di.exports=Er)});var yc=P(Rt=>{"use strict";var B=Oe(),hc=rc(),fc=sc(),pc=oc(),mc=cc(),Cr=oi(),Ln=_e(),af=lc();function uc(r){return unescape(encodeURIComponent(r)).length}function Pr(r,e,t){let n=[],s;for(;(s=r.exec(t))!==null;)n.push({data:s[0],index:s.index,mode:e,length:s[0].length});return n}function gc(r){let e=Pr(Cr.NUMERIC,B.NUMERIC,r),t=Pr(Cr.ALPHANUMERIC,B.ALPHANUMERIC,r),n,s;return Ln.isKanjiModeEnabled()?(n=Pr(Cr.BYTE,B.BYTE,r),s=Pr(Cr.KANJI,B.KANJI,r)):(n=Pr(Cr.BYTE_KANJI,B.BYTE,r),s=[]),e.concat(t,n,s).sort(function(o,a){return o.index-a.index}).map(function(o){return{data:o.data,mode:o.mode,length:o.length}})}function hi(r,e){switch(e){case B.NUMERIC:return hc.getBitsLength(r);case B.ALPHANUMERIC:return fc.getBitsLength(r);case B.KANJI:return mc.getBitsLength(r);case B.BYTE:return pc.getBitsLength(r)}}function cf(r){return r.reduce(function(e,t){let n=e.length-1>=0?e[e.length-1]:null;return n&&n.mode===t.mode?(e[e.length-1].data+=t.data,e):(e.push(t),e)},[])}function lf(r){let e=[];for(let t=0;t<r.length;t++){let n=r[t];switch(n.mode){case B.NUMERIC:e.push([n,{data:n.data,mode:B.ALPHANUMERIC,length:n.length},{data:n.data,mode:B.BYTE,length:n.length}]);break;case B.ALPHANUMERIC:e.push([n,{data:n.data,mode:B.BYTE,length:n.length}]);break;case B.KANJI:e.push([n,{data:n.data,mode:B.BYTE,length:uc(n.data)}]);break;case B.BYTE:e.push([{data:n.data,mode:B.BYTE,length:uc(n.data)}])}}return e}function uf(r,e){let t={},n={start:{}},s=["start"];for(let i=0;i<r.length;i++){let o=r[i],a=[];for(let c=0;c<o.length;c++){let l=o[c],u=""+i+c;a.push(u),t[u]={node:l,lastCount:0},n[u]={};for(let d=0;d<s.length;d++){let h=s[d];t[h]&&t[h].node.mode===l.mode?(n[h][u]=hi(t[h].lastCount+l.length,l.mode)-hi(t[h].lastCount,l.mode),t[h].lastCount+=l.length):(t[h]&&(t[h].lastCount=l.length),n[h][u]=hi(l.length,l.mode)+4+B.getCharCountIndicator(l.mode,e))}}s=a}for(let i=0;i<s.length;i++)n[s[i]].end=0;return{map:n,table:t}}function dc(r,e){let t,n=B.getBestModeForData(r);if(t=B.from(e,n),t!==B.BYTE&&t.bit<n.bit)throw new Error('"'+r+'" cannot be encoded with mode '+B.toString(t)+`.
|
|
4
|
+
Suggested mode is: `+B.toString(n));switch(t===B.KANJI&&!Ln.isKanjiModeEnabled()&&(t=B.BYTE),t){case B.NUMERIC:return new hc(r);case B.ALPHANUMERIC:return new fc(r);case B.KANJI:return new mc(r);case B.BYTE:return new pc(r)}}Rt.fromArray=function(e){return e.reduce(function(t,n){return typeof n=="string"?t.push(dc(n,null)):n.data&&t.push(dc(n.data,n.mode)),t},[])};Rt.fromString=function(e,t){let n=gc(e,Ln.isKanjiModeEnabled()),s=lf(n),i=uf(s,t),o=af.find_path(i.map,"start","end"),a=[];for(let c=1;c<o.length-1;c++)a.push(i.table[o[c]].node);return Rt.fromArray(cf(a))};Rt.rawSplit=function(e){return Rt.fromArray(gc(e,Ln.isKanjiModeEnabled()))}});var bc=P(wc=>{"use strict";var Kn=_e(),fi=Dn(),df=Ta(),hf=Fa(),ff=Ma(),pf=La(),gi=_a(),yi=ri(),mf=$a(),_n=Ja(),gf=ec(),yf=Oe(),pi=yc();function wf(r,e){let t=r.size,n=pf.getPositions(e);for(let s=0;s<n.length;s++){let i=n[s][0],o=n[s][1];for(let a=-1;a<=7;a++)if(!(i+a<=-1||t<=i+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(i+a,o+c,!0,!0):r.set(i+a,o+c,!1,!0))}}function bf(r){let e=r.size;for(let t=8;t<e-8;t++){let n=t%2===0;r.set(t,6,n,!0),r.set(6,t,n,!0)}}function Sf(r,e){let t=ff.getPositions(e);for(let n=0;n<t.length;n++){let s=t[n][0],i=t[n][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(s+o,i+a,!0,!0):r.set(s+o,i+a,!1,!0)}}function Af(r,e){let t=r.size,n=_n.getEncodedBits(e),s,i,o;for(let a=0;a<18;a++)s=Math.floor(a/3),i=a%3+t-8-3,o=(n>>a&1)===1,r.set(s,i,o,!0),r.set(i,s,o,!0)}function mi(r,e,t){let n=r.size,s=gf.getEncodedBits(e,t),i,o;for(i=0;i<15;i++)o=(s>>i&1)===1,i<6?r.set(i,8,o,!0):i<8?r.set(i+1,8,o,!0):r.set(n-15+i,8,o,!0),i<8?r.set(8,n-i-1,o,!0):i<9?r.set(8,15-i-1+1,o,!0):r.set(8,15-i-1,o,!0);r.set(n-8,8,1,!0)}function xf(r,e){let t=r.size,n=-1,s=t-1,i=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(s,a-c)){let l=!1;o<e.length&&(l=(e[o]>>>i&1)===1),r.set(s,a-c,l),i--,i===-1&&(o++,i=7)}if(s+=n,s<0||t<=s){s-=n,n=-n;break}}}function vf(r,e,t){let n=new df;t.forEach(function(c){n.put(c.mode.bit,4),n.put(c.getLength(),yf.getCharCountIndicator(c.mode,r)),c.write(n)});let s=Kn.getSymbolTotalCodewords(r),i=yi.getTotalCodewordsCount(r,e),o=(s-i)*8;for(n.getLengthInBits()+4<=o&&n.put(0,4);n.getLengthInBits()%8!==0;)n.putBit(0);let a=(o-n.getLengthInBits())/8;for(let c=0;c<a;c++)n.put(c%2?17:236,8);return kf(n,r,e)}function kf(r,e,t){let n=Kn.getSymbolTotalCodewords(e),s=yi.getTotalCodewordsCount(e,t),i=n-s,o=yi.getBlocksCount(e,t),a=n%o,c=o-a,l=Math.floor(n/o),u=Math.floor(i/o),d=u+1,h=l-u,m=new mf(h),g=0,w=new Array(o),b=new Array(o),S=0,A=new Uint8Array(r.buffer);for(let T=0;T<o;T++){let O=T<c?u:d;w[T]=A.slice(g,g+O),b[T]=m.encode(w[T]),g+=O,S=Math.max(S,O)}let v=new Uint8Array(n),E=0,C,x;for(C=0;C<S;C++)for(x=0;x<o;x++)C<w[x].length&&(v[E++]=w[x][C]);for(C=0;C<h;C++)for(x=0;x<o;x++)v[E++]=b[x][C];return v}function Ef(r,e,t,n){let s;if(Array.isArray(r))s=pi.fromArray(r);else if(typeof r=="string"){let l=e;if(!l){let u=pi.rawSplit(r);l=_n.getBestVersionForData(u,t)}s=pi.fromString(r,l||40)}else throw new Error("Invalid data");let i=_n.getBestVersionForData(s,t);if(!i)throw new Error("The amount of data is too big to be stored in a QR Code");if(!e)e=i;else if(e<i)throw new Error(`
|
|
5
5
|
The chosen QR Code version cannot contain this amount of data.
|
|
6
6
|
Minimum version required to store current data is: `+i+`.
|
|
7
|
-
`);let o=
|
|
8
|
-
`;return typeof n=="function"&&n(null,h),h}});var
|
|
7
|
+
`);let o=vf(e,t,s),a=Kn.getSymbolSize(e),c=new hf(a);return wf(c,e),bf(c),Sf(c,e),mi(c,t,0),e>=7&&Af(c,e),xf(c,o),isNaN(n)&&(n=gi.getBestMask(c,mi.bind(null,c,t))),gi.applyMask(n,c),mi(c,t,n),{modules:c,version:e,errorCorrectionLevel:t,maskPattern:n,segments:s}}wc.create=function(e,t){if(typeof e>"u"||e==="")throw new Error("No input text");let n=fi.M,s,i;return typeof t<"u"&&(n=fi.from(t.errorCorrectionLevel,fi.M),s=_n.from(t.version),i=gi.from(t.maskPattern),t.toSJISFunc&&Kn.setToSJISFunction(t.toSJISFunc)),Ef(e,s,n,i)}});var wi=P(ot=>{"use strict";function Sc(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(n){return[n,n]}))),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("")}}ot.getOptions=function(e){e||(e={}),e.color||(e.color={});let t=typeof e.margin>"u"||e.margin===null||e.margin<0?4:e.margin,n=e.width&&e.width>=21?e.width:void 0,s=e.scale||4;return{width:n,scale:n?4:s,margin:t,color:{dark:Sc(e.color.dark||"#000000ff"),light:Sc(e.color.light||"#ffffffff")},type:e.type,rendererOpts:e.rendererOpts||{}}};ot.getScale=function(e,t){return t.width&&t.width>=e+t.margin*2?t.width/(e+t.margin*2):t.scale};ot.getImageWidth=function(e,t){let n=ot.getScale(e,t);return Math.floor((e+t.margin*2)*n)};ot.qrToImageData=function(e,t,n){let s=t.modules.size,i=t.modules.data,o=ot.getScale(s,n),a=Math.floor((s+n.margin*2)*o),c=n.margin*o,l=[n.color.light,n.color.dark];for(let u=0;u<a;u++)for(let d=0;d<a;d++){let h=(u*a+d)*4,m=n.color.light;if(u>=c&&d>=c&&u<a-c&&d<a-c){let g=Math.floor((u-c)/o),w=Math.floor((d-c)/o);m=l[i[g*s+w]?1:0]}e[h++]=m.r,e[h++]=m.g,e[h++]=m.b,e[h]=m.a}}});var Ac=P(On=>{"use strict";var bi=wi();function Cf(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 Pf(){try{return document.createElement("canvas")}catch{throw new Error("You need to specify a canvas element")}}On.render=function(e,t,n){let s=n,i=t;typeof s>"u"&&(!t||!t.getContext)&&(s=t,t=void 0),t||(i=Pf()),s=bi.getOptions(s);let o=bi.getImageWidth(e.modules.size,s),a=i.getContext("2d"),c=a.createImageData(o,o);return bi.qrToImageData(c.data,e,s),Cf(a,i,o),a.putImageData(c,0,0),i};On.renderToDataURL=function(e,t,n){let s=n;typeof s>"u"&&(!t||!t.getContext)&&(s=t,t=void 0),s||(s={});let i=On.render(e,t,s),o=s.type||"image/png",a=s.rendererOpts||{};return i.toDataURL(o,a.quality)}});var kc=P(vc=>{"use strict";var If=wi();function xc(r,e){let t=r.a/255,n=e+'="'+r.hex+'"';return t<1?n+" "+e+'-opacity="'+t.toFixed(2).slice(1)+'"':n}function Si(r,e,t){let n=r+e;return typeof t<"u"&&(n+=" "+t),n}function Bf(r,e,t){let n="",s=0,i=!1,o=0;for(let a=0;a<r.length;a++){let c=Math.floor(a%e),l=Math.floor(a/e);!c&&!i&&(i=!0),r[a]?(o++,a>0&&c>0&&r[a-1]||(n+=i?Si("M",c+t,.5+l+t):Si("m",s,0),s=0,i=!1),c+1<e&&r[a+1]||(n+=Si("h",o),o=0)):s++}return n}vc.render=function(e,t,n){let s=If.getOptions(t),i=e.modules.size,o=e.modules.data,a=i+s.margin*2,c=s.color.light.a?"<path "+xc(s.color.light,"fill")+' d="M0 0h'+a+"v"+a+'H0z"/>':"",l="<path "+xc(s.color.dark,"stroke")+' d="'+Bf(o,i,s.margin)+'"/>',u='viewBox="0 0 '+a+" "+a+'"',h='<svg xmlns="http://www.w3.org/2000/svg" '+(s.width?'width="'+s.width+'" height="'+s.width+'" ':"")+u+' shape-rendering="crispEdges">'+c+l+`</svg>
|
|
8
|
+
`;return typeof n=="function"&&n(null,h),h}});var Br=P(Ir=>{"use strict";var Df=Ia(),Ai=bc(),Ec=Ac(),Tf=kc();function xi(r,e,t,n,s){let i=[].slice.call(arguments,1),o=i.length,a=typeof i[o-1]=="function";if(!a&&!Df())throw new Error("Callback required as last argument");if(a){if(o<2)throw new Error("Too few arguments provided");o===2?(s=t,t=e,e=n=void 0):o===3&&(e.getContext&&typeof s>"u"?(s=n,n=void 0):(s=n,n=t,t=e,e=void 0))}else{if(o<1)throw new Error("Too few arguments provided");return o===1?(t=e,e=n=void 0):o===2&&!e.getContext&&(n=t,t=e,e=void 0),new Promise(function(c,l){try{let u=Ai.create(t,n);c(r(u,e,n))}catch(u){l(u)}})}try{let c=Ai.create(t,n);s(null,r(c,e,n))}catch(c){s(c)}}Ir.create=Ai.create;Ir.toCanvas=xi.bind(null,Ec.render);Ir.toDataURL=xi.bind(null,Ec.renderToDataURL);Ir.toString=xi.bind(null,function(r,e,t){return Tf.render(r,t)})});var Ft,vi=p(()=>{"use strict";rt();Ft=class{async createQRBackup(e,t,n={}){let s=n.errorCorrection||"H",i;if(n.password){let l=crypto.getRandomValues(new Uint8Array(32)),u=await tt(e,n.password,l);i={version:1,type:"encrypted",data:u.encrypted,iv:u.iv,salt:u.salt,iterations:u.iterations,checksum:await se(t)}}else i={version:1,type:"plain",data:e,checksum:await se(t)};let o=JSON.stringify(i),a=await this.generateQRCode(o,s),c=this.getInstructions(t,!!n.password);return{qrCodeDataURL:a,rawData:o,instructions:c}}async generateQRCode(e,t){try{return await(await Promise.resolve().then(()=>z(Br()))).default.toDataURL(e,{errorCorrectionLevel:t,width:512,margin:2})}catch{return this.createFallbackQRDataURL(e)}}createFallbackQRDataURL(e){if(typeof document>"u")return`data:text/plain;base64,${Buffer.from(e).toString("base64")}`;let t=document.createElement("canvas");t.width=512,t.height=512;let n=t.getContext("2d");if(!n)throw new Error("Canvas not supported");n.fillStyle="white",n.fillRect(0,0,512,512),n.fillStyle="black",n.font="12px monospace",n.textAlign="center",n.textBaseline="middle";let s=this.wrapText(e,50),i=14,o=256-s.length*i/2;return s.forEach((a,c)=>{n.fillText(a,256,o+c*i)}),n.font="bold 16px sans-serif",n.fillText('Install "qrcode" package for QR codes',256,480),t.toDataURL("image/png")}wrapText(e,t){let n=[];for(let s=0;s<e.length;s+=t)n.push(e.substring(s,s+t));return n}getInstructions(e,t){return`
|
|
9
9
|
W3PK QR CODE BACKUP
|
|
10
10
|
==================
|
|
11
11
|
|
|
@@ -81,7 +81,7 @@ If QR code is lost/damaged, you can still recover using:
|
|
|
81
81
|
|
|
82
82
|
Generated by w3pk Recovery System
|
|
83
83
|
https://docs.w3pk.org/recovery
|
|
84
|
-
`}async restoreFromQR(e,t){let n=JSON.parse(e);if(n.version!==1)throw new Error("Unsupported QR backup version");let s;if(n.type==="encrypted"){if(!t)throw new Error("Password required for encrypted QR backup");let{decryptWithPassword:c}=await Promise.resolve().then(()=>(rt(),
|
|
84
|
+
`}async restoreFromQR(e,t){let n=JSON.parse(e);if(n.version!==1)throw new Error("Unsupported QR backup version");let s;if(n.type==="encrypted"){if(!t)throw new Error("Password required for encrypted QR backup");let{decryptWithPassword:c}=await Promise.resolve().then(()=>(rt(),Ca));s=await c(n.data,t,n.salt,n.iv,n.iterations)}else if(n.type==="plain")s=n.data;else throw new Error("Unknown QR backup type");let{Wallet:i}=await import("ethers"),o=i.fromPhrase(s);if(await se(o.address)!==n.checksum)throw new Error("Address checksum mismatch - corrupted QR or wrong password");return{mnemonic:s,ethereumAddress:o.address}}}});function Rf(){let r=new Uint8Array(1);return crypto.getRandomValues(r),r[0]}function Wn(r,e,t){if(e>t)throw new Error("Threshold cannot be greater than total shares");if(e<2)throw new Error("Threshold must be at least 2");if(t>255)throw new Error("Cannot create more than 255 shares");let n=[];for(let s=0;s<t;s++)n[s]=new Uint8Array(r.length+1),n[s][0]=s+1;for(let s=0;s<r.length;s++){let o=[r[s]];for(let a=1;a<e;a++)o.push(Rf());for(let a=0;a<t;a++){let c=a+1,l=zn.evaluatePolynomial(o,c);n[a][s+1]=l}}return n}function $n(r,e){if(r.length<e)throw new Error(`Need at least ${e} shares to recover secret, got ${r.length}`);let t=r.slice(0,e),n=t[0].length;for(let o of t)if(o.length!==n)throw new Error("All shares must have the same length");let s=n-1,i=new Uint8Array(s);for(let o=0;o<s;o++){let a=[];for(let c of t)a.push({x:c[0],y:c[o+1]});i[o]=zn.interpolate(a)}return i}function qn(r){return new TextEncoder().encode(r)}function Hn(r){return new TextDecoder().decode(r)}function Vn(r){return Array.from(r).map(e=>e.toString(16).padStart(2,"0")).join("")}function Gn(r){let e=new Uint8Array(r.length/2);for(let t=0;t<r.length;t+=2)e[t/2]=parseInt(r.substring(t,t+2),16);return e}var We,zn,Yn=p(()=>{"use strict";We=class We{static multiply(e,t){return e===0||t===0?0:this.EXP_TABLE[(this.LOG_TABLE[e]+this.LOG_TABLE[t])%255]}static divide(e,t){if(t===0)throw new Error("Division by zero in GF(256)");return e===0?0:this.EXP_TABLE[(this.LOG_TABLE[e]-this.LOG_TABLE[t]+255)%255]}static add(e,t){return e^t}static evaluatePolynomial(e,t){let n=0;for(let s=e.length-1;s>=0;s--)n=this.add(this.multiply(n,t),e[s]);return n}static interpolate(e){let t=0;for(let n=0;n<e.length;n++){let s=e[n].y,i=1;for(let o=0;o<e.length;o++)n!==o&&(s=this.multiply(s,e[o].x),i=this.multiply(i,this.add(e[n].x,e[o].x)));t=this.add(t,this.divide(s,i))}return t}};We.LOG_TABLE=[],We.EXP_TABLE=[],(()=>{let e=(n,s)=>{let i=0;for(let o=0;o<8;o++){s&1&&(i^=n);let a=n&128;n<<=1,a&&(n^=283),s>>=1}return i&255},t=1;for(let n=0;n<255;n++)We.EXP_TABLE[n]=t,We.LOG_TABLE[t]=n,t=e(t,3);We.EXP_TABLE[255]=We.EXP_TABLE[0]})();zn=We});var Cc,at,ki=p(()=>{"use strict";Yn();Cc=new Map,at=class{constructor(){this.storageKey="w3pk_social_recovery"}getItem(e){return typeof localStorage<"u"?localStorage.getItem(e):Cc.get(e)||null}setItem(e,t){typeof localStorage<"u"?localStorage.setItem(e,t):Cc.set(e,t)}async setupSocialRecovery(e,t,n,s){if(s>n.length)throw new Error("Threshold cannot be greater than number of guardians");if(s<2)throw new Error("Threshold must be at least 2");if(n.length>255)throw new Error("Cannot have more than 255 guardians");let i=qn(e),o=Wn(i,s,n.length),a=n.map((l,u)=>({id:crypto.randomUUID(),name:l.name,email:l.email,phone:l.phone,shareEncrypted:Vn(o[u]),status:"pending",addedAt:new Date().toISOString()})),c={threshold:s,totalGuardians:n.length,guardians:a,createdAt:new Date().toISOString(),ethereumAddress:t};return this.setItem(this.storageKey,JSON.stringify(c)),a}getSocialRecoveryConfig(){let e=this.getItem(this.storageKey);if(!e)return null;try{return JSON.parse(e)}catch{return null}}async generateGuardianInvite(e){let t=this.getSocialRecoveryConfig();if(!t)throw new Error("Social recovery not configured");let n=t.guardians.findIndex(c=>c.id===e.id);if(n===-1)throw new Error("Guardian not found");let s={version:1,guardianId:e.id,guardianName:e.name,guardianIndex:n+1,totalGuardians:t.totalGuardians,threshold:t.threshold,share:e.shareEncrypted,ethereumAddress:t.ethereumAddress,createdAt:t.createdAt},i=JSON.stringify(s),o=await this.generateQRCode(i),a=this.getGuardianExplainer(e.name,n+1,t.totalGuardians,t.threshold);return{guardianId:e.id,qrCode:o,shareCode:i,explainer:a}}async generateQRCode(e){try{return await(await Promise.resolve().then(()=>z(Br()))).toDataURL(e,{errorCorrectionLevel:"H",width:512,margin:2})}catch{return this.createPlaceholderQR(e)}}createPlaceholderQR(e){if(typeof document>"u")return`data:text/plain;base64,${Buffer.from(e).toString("base64")}`;let t=document.createElement("canvas");t.width=512,t.height=512;let n=t.getContext("2d");return n?(n.fillStyle="white",n.fillRect(0,0,512,512),n.fillStyle="black",n.font="bold 20px sans-serif",n.textAlign="center",n.textBaseline="middle",n.fillText("Guardian Recovery Share",256,100),n.font="14px monospace",n.fillText('Install "qrcode" for QR codes',256,480),n.font="10px monospace",this.wrapText(e.substring(0,200)+"...",60).forEach((i,o)=>{n.fillText(i,256,150+o*12)}),t.toDataURL("image/png")):""}wrapText(e,t){let n=[];for(let s=0;s<e.length;s+=t)n.push(e.substring(s,s+t));return n}getGuardianExplainer(e,t,n,s){return`
|
|
85
85
|
\u{1F6E1}\uFE0F GUARDIAN RECOVERY SHARE
|
|
86
86
|
|
|
87
87
|
Dear ${e},
|
|
@@ -172,13 +172,13 @@ Thank you for being a trusted guardian!
|
|
|
172
172
|
|
|
173
173
|
NEED HELP?
|
|
174
174
|
Visit: https://docs.w3pk.org/social-recovery
|
|
175
|
-
`}async recoverFromGuardians(e){if(!e||e.length===0)throw new Error("No guardian shares provided");let t=JSON.parse(e[0]),n=t.threshold,s=t.ethereumAddress;if(!n)throw new Error("Invalid share data: missing threshold information");if(e.length<n)throw new Error(`Need at least ${n} shares, got ${e.length}`);let o=e.map(u=>{let d=JSON.parse(u);if(d.ethereumAddress?.toLowerCase()!==s?.toLowerCase())throw new Error("Shares are from different wallets - cannot combine");return{guardianId:d.guardianId,share:d.share,index:d.guardianIndex}}).map(u=>
|
|
175
|
+
`}async recoverFromGuardians(e){if(!e||e.length===0)throw new Error("No guardian shares provided");let t=JSON.parse(e[0]),n=t.threshold,s=t.ethereumAddress;if(!n)throw new Error("Invalid share data: missing threshold information");if(e.length<n)throw new Error(`Need at least ${n} shares, got ${e.length}`);let o=e.map(u=>{let d=JSON.parse(u);if(d.ethereumAddress?.toLowerCase()!==s?.toLowerCase())throw new Error("Shares are from different wallets - cannot combine");return{guardianId:d.guardianId,share:d.share,index:d.guardianIndex}}).map(u=>Gn(u.share)),a=$n(o,n),c=Hn(a),l;try{l=JSON.parse(c)}catch{throw new Error("Recovered data is not valid JSON - invalid shares")}if(!l.ethereumAddress)throw new Error("Recovered backup file is missing ethereum address");if(s&&l.ethereumAddress.toLowerCase()!==s.toLowerCase())throw new Error("Recovered address does not match share data - invalid shares");return{backupFileJson:c,ethereumAddress:l.ethereumAddress}}getRecoveryProgress(e){let t=this.getSocialRecoveryConfig();if(!t)throw new Error("Social recovery not configured");let n=new Set(e.map(s=>{try{return JSON.parse(s).guardianId}catch{return null}}).filter(Boolean));return{collected:n.size,required:t.threshold,guardians:t.guardians.map(s=>({id:s.id,name:s.name,hasProvided:n.has(s.id)})),canRecover:n.size>=t.threshold}}markGuardianVerified(e){let t=this.getSocialRecoveryConfig();if(!t)throw new Error("Social recovery not configured");let n=t.guardians.find(s=>s.id===e);if(!n)throw new Error("Guardian not found");n.status="active",n.lastVerified=new Date().toISOString(),this.setItem(this.storageKey,JSON.stringify(t))}revokeGuardian(e){let t=this.getSocialRecoveryConfig();if(!t)throw new Error("Social recovery not configured");let n=t.guardians.find(s=>s.id===e);if(!n)throw new Error("Guardian not found");n.status="revoked",this.setItem(this.storageKey,JSON.stringify(t))}async addGuardian(e,t){let n=this.getSocialRecoveryConfig();if(!n)throw new Error("Social recovery not configured");let s=[...n.guardians.filter(o=>o.status!=="revoked").map(o=>({name:o.name,email:o.email,phone:o.phone})),t],i=await this.setupSocialRecovery(e,n.ethereumAddress,s,n.threshold);return i[i.length-1]}}});var jn,Pc=p(()=>{"use strict";In();vi();ki();jn=class{constructor(){this.verificationStorageKey="w3pk_backup_verifications";this.storage=new et,this.qrCreator=new Ft,this.socialRecoveryManager=new at}async getBackupStatus(e){let t=await this.storage.getBackupsByAddress(e),n=await this.detectPasskeySync(),s=t.map(c=>({id:c.id,method:c.method,location:"local",createdAt:c.createdAt,deviceFingerprint:c.deviceFingerprint})),i=this.getSocialRecoveryStatus(),o=this.getVerificationStatus(e);return{passkeySync:n,recoveryPhrase:{verified:o.verified,verificationCount:o.count,encryptedBackups:s},socialRecovery:i,securityScore:this.calculateSecurityScore(n,s,i,o)}}async detectPasskeySync(){if(typeof navigator>"u")return{enabled:!1,deviceCount:0,lastSyncTime:void 0,platform:"unknown"};let e=navigator.userAgent.toLowerCase(),t="unknown";e.includes("mac")||e.includes("iphone")||e.includes("ipad")?t="apple":e.includes("android")?t="google":e.includes("windows")&&(t="microsoft");let n=await this.checkResidentKeySupport();return{enabled:n,deviceCount:1,lastSyncTime:n?new Date().toISOString():void 0,platform:t}}async checkResidentKeySupport(){if(typeof window>"u"||!window.PublicKeyCredential)return!1;try{return await PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable()}catch{return!1}}getSocialRecoveryStatus(){let e=this.socialRecoveryManager.getSocialRecoveryConfig();if(!e)return;let t=e.guardians.filter(n=>n.status==="active").length;return{enabled:!0,guardians:e.guardians,threshold:e.threshold,sharesDistributed:e.guardians.length,verifiedGuardians:t}}getVerificationStatus(e){try{let t=typeof localStorage<"u"?localStorage.getItem(this.verificationStorageKey):null;return t?JSON.parse(t)[e.toLowerCase()]||{verified:!1,count:0}:{verified:!1,count:0}}catch{return{verified:!1,count:0}}}markBackupVerified(e){try{let t=typeof localStorage<"u"?localStorage.getItem(this.verificationStorageKey):null,n=t?JSON.parse(t):{},s=e.toLowerCase();n[s]||(n[s]={verified:!1,count:0}),n[s].verified=!0,n[s].count+=1,n[s].lastVerifiedAt=new Date().toISOString(),typeof localStorage<"u"&&localStorage.setItem(this.verificationStorageKey,JSON.stringify(n))}catch(t){console.error("Failed to mark backup as verified:",t)}}calculateSecurityScore(e,t,n,s){let i=0;n?.enabled&&(i=20,n.verifiedGuardians>=n.threshold&&(i+=10));let o=0;s?.verified&&(o=10,o+=Math.min(s.count-1,10));let a={passkeyActive:e.enabled?20:0,passkeyMultiDevice:e.deviceCount>1?10:0,phraseVerified:o,encryptedBackup:t.length>0?20:0,socialRecovery:i},c=Object.values(a).reduce((d,h)=>d+h,0),l,u;return c<=20?(l="vulnerable",u='Create encrypted backup to reach "protected" (40+ pts)'):c<=50?(l="protected",u='Set up social recovery to reach "secured" (70+ pts)'):c<=80?(l="secured",u='Enable all methods to reach "fort-knox" (100 pts)'):(l="fort-knox",u="Maximum security achieved!"),{total:c,breakdown:a,level:l,nextMilestone:u}}async createQRBackup(e,t,n){let{qrCodeDataURL:s,rawData:i,instructions:o}=await this.qrCreator.createQRBackup(e,t,n),a={id:crypto.randomUUID(),ethereumAddress:t,method:"qr",createdAt:new Date().toISOString(),addressChecksum:JSON.parse(i).checksum};return await this.storage.storeBackupMetadata(a),{qrCodeDataURL:s,instructions:o}}async restoreFromQR(e,t){return await this.qrCreator.restoreFromQR(e,t)}async simulateRecoveryScenario(e,t){let n=[];switch(e.type){case"lost-device":t.passkeySync.enabled&&t.passkeySync.deviceCount>1&&n.push({method:"Passkey Sync (iCloud/Google)",success:!0,time:"5 minutes",requirements:["Sign in to cloud account","Authenticate on new device"]}),t.recoveryPhrase.encryptedBackups.length>0&&n.push({method:"Encrypted Backup",success:!0,time:"2 minutes",requirements:["Backup file","Password"]}),t.socialRecovery?.enabled&&n.push({method:"Social Recovery",success:!0,time:"24 hours",requirements:[`${t.socialRecovery.threshold} guardian shares`]});break;case"lost-phrase":t.passkeySync.enabled&&n.push({method:"Passkey (current device)",success:!0,time:"instant",requirements:["Current device","Biometric/PIN"]}),t.socialRecovery?.enabled&&n.push({method:"Social Recovery",success:!0,time:"24 hours",requirements:[`${t.socialRecovery.threshold} guardian shares`]});break;case"lost-both":t.passkeySync.enabled&&t.passkeySync.deviceCount>1&&n.push({method:"Passkey Sync",success:!0,time:"5 minutes",requirements:["Cloud account access","New device"]}),t.socialRecovery?.enabled&&n.push({method:"Social Recovery",success:!0,time:"24 hours",requirements:[`${t.socialRecovery.threshold} guardian shares`]});break;case"switch-platform":t.recoveryPhrase.encryptedBackups.length>0&&n.push({method:"Encrypted Backup",success:!0,time:"2 minutes",requirements:["Backup file","Password"]}),t.socialRecovery?.enabled&&n.push({method:"Social Recovery",success:!0,time:"24 hours",requirements:[`${t.socialRecovery.threshold} guardian shares`]});break}let s=n.length>0&&n.some(o=>o.success),i="";return s?(i=`\u2705 You're safe! ${n.length} way${n.length>1?"s":""} to recover.
|
|
176
176
|
|
|
177
177
|
`,i+=`Available recovery methods:
|
|
178
178
|
`,n.forEach(o=>{i+=`- ${o.method} (~${o.time})
|
|
179
179
|
`})):(i=`\u274C Wallet cannot be recovered in this scenario.
|
|
180
180
|
|
|
181
|
-
`,i+="Recommendation: Set up at least 2 backup methods to prevent total loss."),{scenario:e,success:s,availableMethods:n,timeEstimate:s?n[0].time:"N/A",educationalNote:i}}}});var
|
|
181
|
+
`,i+="Recommendation: Set up at least 2 backup methods to prevent total loss."),{scenario:e,success:s,availableMethods:n,timeEstimate:s?n[0].time:"N/A",educationalNote:i}}}});var ye={};k(ye,{BackupFileManager:()=>Dr});var Dr,le=p(()=>{"use strict";rt();q();Dr=class{async createPasswordBackup(e,t,n){if(!n||n.length<1)throw new Error("Password is required for password-based backup");let s=crypto.getRandomValues(new Uint8Array(32)),i=await tt(e,n,s),o=await se(t),a={createdAt:new Date().toISOString(),ethereumAddress:t,encryptedMnemonic:i.encrypted,encryptionMethod:"password",passwordEncryption:{salt:i.salt,iv:i.iv,iterations:i.iterations},addressChecksum:o},c=JSON.stringify(a,null,2),l=new Blob([c],{type:"application/json"});return{backupFile:a,json:c,blob:l}}async createPasskeyBackup(e,t,n,s){let i=await fe(n,s),o=await ae(e,i),a=await se(t),l=new TextEncoder().encode(s),u=await crypto.subtle.digest("SHA-256",l),h=Array.from(new Uint8Array(u)).map(b=>b.toString(16).padStart(2,"0")).join("").substring(0,16),m={createdAt:new Date().toISOString(),ethereumAddress:t,encryptedMnemonic:o,encryptionMethod:"passkey",credentialId:n,publicKeyFingerprint:h,addressChecksum:a},g=JSON.stringify(m,null,2),w=new Blob([g],{type:"application/json"});return{backupFile:m,json:g,blob:w}}async createHybridBackup(e,t,n,s,i){let o=await fe(s,i),a=await ae(e,o),c=crypto.getRandomValues(new Uint8Array(32)),l=await tt(a,n,c),u=await se(t),h=new TextEncoder().encode(i),m=await crypto.subtle.digest("SHA-256",h),w=Array.from(new Uint8Array(m)).map(v=>v.toString(16).padStart(2,"0")).join("").substring(0,16),b={createdAt:new Date().toISOString(),ethereumAddress:t,encryptedMnemonic:l.encrypted,encryptionMethod:"hybrid",credentialId:s,publicKeyFingerprint:w,passwordEncryption:{salt:l.salt,iv:l.iv,iterations:l.iterations},addressChecksum:u},S=JSON.stringify(b,null,2),A=new Blob([S],{type:"application/json"});return{backupFile:b,json:S,blob:A}}async restoreWithExistingPasskey(e,t,n){if(e.encryptionMethod==="password")throw new Error("This backup is password-protected. Use restoreWithPassword() instead.");if(e.credentialId&&e.credentialId!==t)throw new Error("Credential ID mismatch. This backup was created with a different passkey.");let s;if(e.encryptionMethod==="passkey"){let c=await fe(t,n);s=await te(e.encryptedMnemonic,c)}else throw new Error("This backup requires both passkey and password. Use restoreWithHybrid() instead.");let{Wallet:i}=await import("ethers"),o=i.fromPhrase(s);if(await se(o.address)!==e.addressChecksum)throw new Error("Address checksum mismatch - corrupted backup or decryption failure");return{mnemonic:s,ethereumAddress:e.ethereumAddress}}async restoreWithPassword(e,t){if(!e.passwordEncryption)throw new Error("This backup is not password-protected.");let n;if(e.encryptionMethod==="password")n=await Sr(e.encryptedMnemonic,t,e.passwordEncryption.salt,e.passwordEncryption.iv,e.passwordEncryption.iterations);else throw e.encryptionMethod==="hybrid"?new Error("This backup requires both passkey and password. Use restoreWithHybrid() instead."):new Error("This backup is passkey-only. Use restoreWithExistingPasskey() instead.");let{Wallet:s}=await import("ethers"),i=s.fromPhrase(n);if(await se(i.address)!==e.addressChecksum)throw new Error("Address checksum mismatch - corrupted backup or wrong password");return{mnemonic:n,ethereumAddress:e.ethereumAddress}}async restoreWithHybrid(e,t,n,s){if(e.encryptionMethod!=="hybrid")throw new Error("This backup is not a hybrid backup.");if(!e.passwordEncryption)throw new Error("Missing password encryption data in hybrid backup.");let i=await Sr(e.encryptedMnemonic,t,e.passwordEncryption.salt,e.passwordEncryption.iv,e.passwordEncryption.iterations),o=await fe(n,s),a=await te(i,o),{Wallet:c}=await import("ethers"),l=c.fromPhrase(a);if(await se(l.address)!==e.addressChecksum)throw new Error("Address checksum mismatch - corrupted backup or decryption failure");return{mnemonic:a,ethereumAddress:e.ethereumAddress}}async parseBackupFile(e){let t;e instanceof Blob?t=await e.text():t=e;let n=JSON.parse(t);if(!n.createdAt||!n.ethereumAddress||!n.encryptedMnemonic)throw new Error("Invalid backup file: missing required fields");return n}createDownloadableBackup(e,t){let n=JSON.stringify(e,null,2),s=new Blob([n],{type:"application/json"}),i=`w3pk-backup-${e.ethereumAddress.substring(0,8)}-${new Date().toISOString().split("T")[0]}.json`;return{blob:s,filename:t||i}}}});var Ic=p(()=>{"use strict"});var ct={};k(ct,{BackupFileManager:()=>Dr,BackupManager:()=>jn,BackupStorage:()=>et,QRBackupCreator:()=>Ft,decryptWithPassword:()=>Sr,deriveAddressChecksum:()=>se,deriveKeyFromPassword:()=>Bn,encryptWithPassword:()=>tt,getDeviceFingerprint:()=>Ce,validatePasswordStrength:()=>Ea});var lt=p(()=>{"use strict";Pc();In();vi();le();Ic();rt()});var Jn={};k(Jn,{SocialRecovery:()=>Ei});var Ei,Qn=p(()=>{"use strict";Yn();Ei=class{async splitAmongGuardians(e,t,n){if(n>t.length)throw new Error("Threshold cannot exceed number of guardians");if(n<2)throw new Error("Threshold must be at least 2 for security");if(t.length>255)throw new Error("Cannot have more than 255 guardians");let s=JSON.stringify(e),i=qn(s),o=Wn(i,n,t.length),a=t.map((c,l)=>({guardianId:crypto.randomUUID(),guardianName:c.name,shareData:Vn(o[l]),shareIndex:l+1,threshold:n,createdAt:new Date().toISOString(),walletAddress:e.ethereumAddress}));return{threshold:n,totalShares:t.length,guardianShares:a,backupFile:e,setupDate:new Date().toISOString()}}async recoverFromShares(e){if(e.length<2)throw new Error("At least 2 shares required for recovery");let t=e[0].threshold,n=e[0].walletAddress;if(!t)throw new Error("Invalid share: missing threshold information");if(e.length<t)throw new Error(`Need at least ${t} shares to recover, but only ${e.length} provided`);if(!e.every(l=>l.walletAddress===n&&l.threshold===t))throw new Error("Shares are from different wallets or have inconsistent thresholds");let i=e.map(l=>Gn(l.shareData)),o=$n(i,t),a=Hn(o),c=JSON.parse(a);if(c.ethereumAddress!==n)throw new Error("Recovered backup address mismatch - corrupted shares");return c}async createGuardianInvitation(e,t){let n={type:"w3pk-guardian-share",version:1,guardianName:e.guardianName,walletAddress:e.walletAddress,shareData:e.shareData,shareIndex:e.shareIndex,threshold:e.threshold,createdAt:e.createdAt,message:t||`You have been chosen as a recovery guardian for wallet ${e.walletAddress.substring(0,10)}...`},s=JSON.stringify(n,null,2),i;try{i=await(await Promise.resolve().then(()=>z(Br()))).toDataURL(s,{errorCorrectionLevel:"H",width:512})}catch(a){console.warn("QR code generation not available:",a)}let o=`
|
|
182
182
|
\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550
|
|
183
183
|
W3PK GUARDIAN RECOVERY SHARE
|
|
184
184
|
\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550
|
|
@@ -220,7 +220,7 @@ ${e.shareData}
|
|
|
220
220
|
Generated by w3pk - Web3 Passkey SDK
|
|
221
221
|
https://github.com/w3hc/w3pk
|
|
222
222
|
\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550
|
|
223
|
-
`;return{qrCodeDataURL:i,shareDocument:o,shareJson:s}}parseGuardianShare(e){let t=JSON.parse(e);if(t.type!=="w3pk-guardian-share")throw new Error("Invalid guardian share format");if(!t.threshold)throw new Error("Invalid guardian share: missing threshold information");return{guardianId:crypto.randomUUID(),guardianName:t.guardianName,shareData:t.shareData,shareIndex:t.shareIndex,threshold:t.threshold,createdAt:t.createdAt,walletAddress:t.walletAddress}}async verifyRecovery(e){try{return{canRecover:!0,recoveredAddress:(await this.recoverFromShares(e)).ethereumAddress}}catch(t){return{canRecover:!1,error:t instanceof Error?t.message:"Unknown error"}}}createShareDownload(e){let t=JSON.stringify({type:"w3pk-guardian-share",version:1,guardianName:e.guardianName,walletAddress:e.walletAddress,shareData:e.shareData,shareIndex:e.shareIndex,threshold:e.threshold,createdAt:e.createdAt},null,2),n=new Blob([t],{type:"application/json"}),s=`w3pk-guardian-${e.guardianName.replace(/\s+/g,"-")}-share-${e.shareIndex}.json`;return{blob:n,filename:s}}}});var
|
|
223
|
+
`;return{qrCodeDataURL:i,shareDocument:o,shareJson:s}}parseGuardianShare(e){let t=JSON.parse(e);if(t.type!=="w3pk-guardian-share")throw new Error("Invalid guardian share format");if(!t.threshold)throw new Error("Invalid guardian share: missing threshold information");return{guardianId:crypto.randomUUID(),guardianName:t.guardianName,shareData:t.shareData,shareIndex:t.shareIndex,threshold:t.threshold,createdAt:t.createdAt,walletAddress:t.walletAddress}}async verifyRecovery(e){try{return{canRecover:!0,recoveredAddress:(await this.recoverFromShares(e)).ethereumAddress}}catch(t){return{canRecover:!1,error:t instanceof Error?t.message:"Unknown error"}}}createShareDownload(e){let t=JSON.stringify({type:"w3pk-guardian-share",version:1,guardianName:e.guardianName,walletAddress:e.walletAddress,shareData:e.shareData,shareIndex:e.shareIndex,threshold:e.threshold,createdAt:e.createdAt},null,2),n=new Blob([t],{type:"application/json"}),s=`w3pk-guardian-${e.guardianName.replace(/\s+/g,"-")}-share-${e.shareIndex}.json`;return{blob:n,filename:s}}}});var Bc={};k(Bc,{authenticateWithPasskey:()=>Pi,promptPasskeySelection:()=>Ci});async function Ci(){try{let r=new R,e=Ne(),t=L(e),n=[];try{let c=await r.getAllCredentials();c.length>0&&(n=c.map(l=>({id:l.id,type:"public-key",transports:["internal","hybrid","usb","nfc","ble"]})))}catch{}let s={challenge:t,rpId:window.location.hostname,userVerification:"required",timeout:12e4};n.length>0&&(s.allowCredentials=n.map(c=>({id:L(c.id),type:c.type,transports:c.transports})));let i=await navigator.credentials.get({publicKey:s});if(!i)throw new K("No passkey selected. Please select a passkey to continue with sync.");let o=i.id,a=await r.getCredentialById(o);return a?{credentialId:o,publicKey:a.publicKey,ethereumAddress:a.ethereumAddress}:{credentialId:o,publicKey:"",ethereumAddress:void 0}}catch(r){throw r?.name==="NotAllowedError"?new K("Passkey selection was cancelled. Please try again and select your passkey."):r instanceof K?r:new K(`Failed to select passkey: ${r instanceof Error?r.message:"Unknown error"}`,r)}}async function Pi(r){try{let e=Ne(),n={challenge:L(e),rpId:window.location.hostname,userVerification:"required",timeout:6e4,allowCredentials:[{id:L(r),type:"public-key",transports:["internal","hybrid","usb","nfc","ble"]}]},s=await navigator.credentials.get({publicKey:n});if(!s)throw new K("Authentication failed - no credential returned");return s}catch(e){throw e?.name==="NotAllowedError"?new K("Authentication was cancelled or the passkey is not available on this device."):new K(`Passkey authentication failed: ${e instanceof Error?e.message:"Unknown error"}`,e)}}var Ii=p(()=>{"use strict";j();Le();ke();q()});var Zn={};k(Zn,{DeviceSyncManager:()=>Tr});var Tr,Rr=p(()=>{"use strict";Tr=class{constructor(){this.SYNC_STORAGE_KEY="w3pk_sync_info"}async getSyncInfo(){try{let e=localStorage.getItem(this.SYNC_STORAGE_KEY);return e?JSON.parse(e):null}catch(e){return console.error("Failed to get sync info:",e),null}}async updateSyncInfo(e){let t=await this.getSyncInfo(),n=this.detectPlatform(),s={deviceName:t?.deviceName||this.generateDeviceName(),platform:n,lastSyncTime:new Date().toISOString(),walletsSynced:t?.walletsSynced||[]};s.walletsSynced.includes(e)||s.walletsSynced.push(e),localStorage.setItem(this.SYNC_STORAGE_KEY,JSON.stringify(s))}detectPlatform(){let e=navigator.userAgent.toLowerCase();return/iphone|ipad|ipod/.test(e)?"ios":/android/.test(e)?"android":/mac/.test(e)?"macos":/win/.test(e)?"windows":/linux/.test(e)?"linux":"unknown"}generateDeviceName(){let e=this.detectPlatform(),t=new Date().toISOString().split("T")[0];return`${e}-device-${t}`}async exportForSync(e,t,n,s){let{BackupFileManager:i}=await Promise.resolve().then(()=>(le(),ye));return new i().createPasskeyBackup(e,t,n,s)}async importFromSync(e,t,n){let{BackupFileManager:s}=await Promise.resolve().then(()=>(le(),ye)),o=await new s().restoreWithExistingPasskey(e,t,n);return await this.updateSyncInfo(o.ethereumAddress),o}async canSyncBackup(e,t){return e.encryptionMethod!=="passkey"?!0:e.publicKeyFingerprint?t.some(n=>n.publicKeyFingerprint===e.publicKeyFingerprint):!1}async generateSyncQR(e){try{let t=await Promise.resolve().then(()=>z(Br())),n=JSON.stringify(e);if(n.length>2953)throw new Error("Backup file too large for QR code. Use file transfer instead.");return t.toDataURL(n,{errorCorrectionLevel:"H",margin:2,width:512})}catch(t){throw t.code==="ERR_MODULE_NOT_FOUND"?new Error("QR code generation requires qrcode package: npm install qrcode"):t}}async parseSyncQR(e){let{BackupFileManager:t}=await Promise.resolve().then(()=>(le(),ye));return new t().parseBackupFile(e)}}});var Xn,Dc=p(()=>{"use strict";rt();Xn=class{async createSyncPackage(e,t,n){let s=await Ce(),{deriveEncryptionKeyFromWebAuthn:i,encryptData:o}=await Promise.resolve().then(()=>(q(),Ue)),a=await i(t,n),c=await o(e,a),l=this.detectSyncMethod();return{id:crypto.randomUUID(),encryptedData:c,deviceFingerprints:[s],syncMethod:l,version:1,updatedAt:new Date().toISOString()}}detectSyncMethod(){let e=navigator.userAgent.toLowerCase();return e.includes("mac")||e.includes("iphone")||e.includes("ipad")?"icloud":e.includes("android")||e.includes("chrome")?"google":e.includes("windows")?"microsoft":"custom"}async restoreFromSync(e,t,n){let{deriveEncryptionKeyFromWebAuthn:s,decryptData:i}=await Promise.resolve().then(()=>(q(),Ue)),o=await s(t,n),a=await i(e.encryptedData,o),c=await Ce();return e.deviceFingerprints.includes(c)||(e.deviceFingerprints.push(c),e.updatedAt=new Date().toISOString()),a}async getSetupFlow(){return{success:!1,steps:[{title:"1. Authenticate on New Device",action:"Use Touch ID/Face ID",educational:"Your passkey is automatically synced via iCloud/Google",status:"waiting"},{title:"2. Decrypt Wallet Data",action:"System validates device",educational:"Only your trusted devices can decrypt the wallet",status:"waiting"},{title:"3. Verify Recovery",action:"Check partial address",educational:"Confirm address matches your wallet",status:"waiting"},{title:"4. Ready!",action:"Wallet synced",educational:"All devices now have access",status:"waiting"}]}}getSyncExplainer(){return`
|
|
224
224
|
HOW CROSS-DEVICE SYNC WORKS
|
|
225
225
|
===========================
|
|
226
226
|
|
|
@@ -301,14 +301,14 @@ If passkey doesn't sync:
|
|
|
301
301
|
Think of it like:
|
|
302
302
|
\u{1F511} Passkey = Your car key (syncs via keychain)
|
|
303
303
|
\u{1F697} Wallet = Your car (locked, needs key to start)
|
|
304
|
-
`}}});var
|
|
304
|
+
`}}});var es,Tc=p(()=>{"use strict";rt();es=class{constructor(){this.storageKey="w3pk_devices"}async registerDevice(){let e={id:await Ce(),name:this.getDeviceName(),platform:this.detectPlatform(),lastActive:new Date().toISOString(),trusted:!0,canRevoke:!1},t=await this.getDevices(),n=t.find(s=>s.id===e.id);return n?(n.lastActive=new Date().toISOString(),localStorage.setItem(this.storageKey,JSON.stringify(t))):(t.push(e),localStorage.setItem(this.storageKey,JSON.stringify(t))),e}async getDevices(){let e=localStorage.getItem(this.storageKey);if(!e)return[];try{return JSON.parse(e)}catch{return[]}}async getSyncStatus(){let e=await this.getDevices(),t=await Ce();e.forEach(i=>{i.canRevoke=i.id!==t}),e.sort((i,o)=>new Date(o.lastActive).getTime()-new Date(i.lastActive).getTime());let n=this.detectPlatform(),s=e.length>1?new Date(Math.max(...e.map(i=>new Date(i.lastActive).getTime()))).toISOString():void 0;return{enabled:e.length>1,devices:e,lastSyncTime:s,platform:this.getPlatformName(n)}}async revokeDevice(e){let t=await this.getDevices(),n=await Ce();if(e===n)throw new Error("Cannot revoke current device");let s=t.filter(i=>i.id!==e);localStorage.setItem(this.storageKey,JSON.stringify(s))}async updateLastActive(){let e=await this.getDevices(),t=await Ce(),n=e.find(s=>s.id===t);n&&(n.lastActive=new Date().toISOString(),localStorage.setItem(this.storageKey,JSON.stringify(e)))}getDeviceName(){let e=this.detectPlatform(),t=navigator.userAgent;if(e==="ios")return t.includes("iPhone")?"iPhone":t.includes("iPad")?"iPad":t.includes("iPod")?"iPod":"iOS Device";if(e==="android"){let n=t.match(/Android.*;\s([^)]+)\)/);return n?n[1]:"Android Device"}return e==="macos"?"Mac":e==="windows"?"Windows PC":e==="linux"?"Linux PC":"Unknown Device"}detectPlatform(){let e=navigator.userAgent.toLowerCase();return e.includes("iphone")||e.includes("ipad")||e.includes("ipod")?"ios":e.includes("android")?"android":e.includes("mac")?"macos":e.includes("windows")?"windows":e.includes("linux")?"linux":"unknown"}getPlatformName(e){switch(e){case"ios":return"iOS (iCloud Keychain)";case"android":return"Android (Google)";case"macos":return"macOS (iCloud Keychain)";case"windows":return"Windows (Microsoft)";case"linux":return"Linux";default:return"Unknown"}}async getDeviceListFormatted(){let e=await this.getSyncStatus();if(e.devices.length===0)return"No devices registered";let t=`Your Devices (${e.devices.length}):
|
|
305
305
|
|
|
306
306
|
`;return e.devices.forEach((n,s)=>{let i=Date.now()-new Date(n.lastActive).getTime(),o=this.formatTimeDiff(i);t+=`${s+1}. ${n.name}
|
|
307
307
|
`,t+=` Platform: ${this.getPlatformName(n.platform)}
|
|
308
308
|
`,t+=` Last active: ${o}
|
|
309
309
|
`,t+=` ${n.canRevoke?"":"(Current device)"}
|
|
310
310
|
|
|
311
|
-
`}),t}formatTimeDiff(e){let t=Math.floor(e/1e3),n=Math.floor(t/60),s=Math.floor(n/60),i=Math.floor(s/24);return i>0?`${i} day${i>1?"s":""} ago`:s>0?`${s} hour${s>1?"s":""} ago`:n>0?`${n} minute${n>1?"s":""} ago`:"just now"}}});var
|
|
311
|
+
`}),t}formatTimeDiff(e){let t=Math.floor(e/1e3),n=Math.floor(t/60),s=Math.floor(n/60),i=Math.floor(s/24);return i>0?`${i} day${i>1?"s":""} ago`:s>0?`${s} hour${s>1?"s":""} ago`:n>0?`${n} minute${n>1?"s":""} ago`:"just now"}}});var ts,Rc=p(()=>{"use strict";ts=class{async detectSyncCapabilities(){let e=this.detectPlatform(),t=await this.checkPasskeySync(),n=this.estimateDeviceCount();return{passkeysSync:t,platform:e,estimatedDevices:n,syncEnabled:t&&e!=="none"}}detectPlatform(){let e=navigator.userAgent.toLowerCase();return e.includes("mac")||e.includes("iphone")||e.includes("ipad")||e.includes("ipod")?"apple":e.includes("android")?"google":e.includes("windows")?"microsoft":"none"}async checkPasskeySync(){if(!window.PublicKeyCredential)return!1;try{return await PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable()}catch{return!1}}estimateDeviceCount(){return 1}getPlatformEducation(e){switch(e){case"apple":return`
|
|
312
312
|
\u{1F34E} Apple iCloud Keychain
|
|
313
313
|
|
|
314
314
|
Your passkey automatically syncs across:
|
|
@@ -387,7 +387,7 @@ This ensures you can recover if:
|
|
|
387
387
|
- Device is lost/stolen
|
|
388
388
|
- Device is damaged
|
|
389
389
|
- You switch devices
|
|
390
|
-
`}}getSyncInstructions(e){switch(e){case"apple":return["Open Settings on your iPhone/iPad/Mac","Tap your name at the top",'Tap "iCloud"','Enable "Keychain"','Enable "iCloud Backup" (recommended)'];case"google":return["Open Chrome Settings",'Click "You and Google"','Enable "Sync"','Ensure "Passwords" is checked',"Sign in on other devices with same Google account"];case"microsoft":return["Windows Hello sync is limited","Consider using:","- Encrypted backup file","- Social recovery","- Cloud backup (password-protected)"];case"none":return["Platform sync not available","Use alternative backup methods:","- Create encrypted backup file","- Set up social recovery","- Save recovery phrase securely"]}}}});var
|
|
390
|
+
`}}getSyncInstructions(e){switch(e){case"apple":return["Open Settings on your iPhone/iPad/Mac","Tap your name at the top",'Tap "iCloud"','Enable "Keychain"','Enable "iCloud Backup" (recommended)'];case"google":return["Open Chrome Settings",'Click "You and Google"','Enable "Sync"','Ensure "Passwords" is checked',"Sign in on other devices with same Google account"];case"microsoft":return["Windows Hello sync is limited","Consider using:","- Encrypted backup file","- Social recovery","- Cloud backup (password-protected)"];case"none":return["Platform sync not available","Use alternative backup methods:","- Create encrypted backup file","- Set up social recovery","- Save recovery phrase securely"]}}}});var Fc=p(()=>{"use strict"});var Mc={};k(Mc,{DeviceManager:()=>es,DeviceSyncManager:()=>Tr,PlatformDetector:()=>ts,VaultSync:()=>Xn});var Nc=p(()=>{"use strict";Dc();Tc();Rc();Rr();Fc()});var Mt,Uc=p(()=>{"use strict";Mt=class{getScenarios(){return[{type:"lost-device",description:"Your phone fell in the ocean"},{type:"lost-phrase",description:"Your paper backup burned in a fire"},{type:"lost-both",description:"Phone stolen AND forgot recovery phrase"},{type:"switch-platform",description:"Switching from iPhone to Android"}]}async simulateScenario(e,t){let n=[];switch(e.type){case"lost-device":t.passkeySync.enabled&&t.passkeySync.deviceCount>1&&n.push({method:`Passkey Sync (${t.passkeySync.platform})`,success:!0,time:"5 minutes",requirements:["Sign in to cloud account on new device","Authenticate with biometric/PIN"]}),t.recoveryPhrase.encryptedBackups.length>0&&t.recoveryPhrase.encryptedBackups.forEach(o=>{n.push({method:`Encrypted ${o.method.toUpperCase()} Backup`,success:!0,time:"2 minutes",requirements:["Backup file/QR code","Backup password"]})}),t.socialRecovery?.enabled&&n.push({method:"Social Recovery",success:!0,time:"24 hours",requirements:[`Contact ${t.socialRecovery.threshold} guardians`,"Collect shares from guardians","Verify identity with each guardian"]});break;case"lost-phrase":t.passkeySync.enabled&&n.push({method:"Passkey (current device)",success:!0,time:"Instant",requirements:["Access to current device","Biometric/PIN authentication"]}),t.passkeySync.deviceCount>1&&n.push({method:"Passkey Sync",success:!0,time:"5 minutes",requirements:["Any synced device","Biometric authentication"]}),t.recoveryPhrase.encryptedBackups.length>0&&n.push({method:"Encrypted Backup",success:!0,time:"2 minutes",requirements:["Backup file","Password"]}),t.socialRecovery?.enabled&&n.push({method:"Social Recovery",success:!0,time:"24 hours",requirements:[`${t.socialRecovery.threshold} guardian shares`]});break;case"lost-both":t.passkeySync.deviceCount>1&&n.push({method:"Passkey Sync",success:!0,time:"5 minutes",requirements:["Cloud account access","New device","Biometric setup"]}),t.socialRecovery?.enabled&&n.push({method:"Social Recovery",success:!0,time:"24 hours",requirements:[`${t.socialRecovery.threshold} guardian shares`,"Identity verification with guardians"]});break;case"switch-platform":t.recoveryPhrase.encryptedBackups.length>0&&n.push({method:"Encrypted Backup",success:!0,time:"2 minutes",requirements:["Backup file","Password"]}),t.socialRecovery?.enabled&&n.push({method:"Social Recovery",success:!0,time:"24 hours",requirements:[`${t.socialRecovery.threshold} guardian shares`]});break}let s=n.length>0,i=this.getEducationalNote(e,n,t);return{scenario:e,success:s,availableMethods:n,timeEstimate:s?this.estimateFastestRecovery(n):"Cannot recover",educationalNote:i}}estimateFastestRecovery(e){let t=e.map(n=>n.time.toLowerCase());if(t.some(n=>n.includes("instant")))return"Instant";if(t.some(n=>n.includes("minute"))){let n=t.filter(s=>s.includes("minute")).map(s=>parseInt(s));return`${Math.min(...n)} minutes`}return t.some(n=>n.includes("hour"))?"24 hours":"Unknown"}getEducationalNote(e,t,n){let s=n.securityScore.total,i=n.securityScore.level;if(t.length===0)return`
|
|
391
391
|
\u274C WALLET CANNOT BE RECOVERED
|
|
392
392
|
|
|
393
393
|
Scenario: ${e.description}
|
|
@@ -503,7 +503,7 @@ SECURITY SCORE: ${o}/100 (${a})
|
|
|
503
503
|
`,c+=` 3. Set up social recovery (+20-30 pts)
|
|
504
504
|
|
|
505
505
|
`,c+=`Target: Reach at least 50/100 for basic protection.
|
|
506
|
-
`),{scenarios:n,overallScore:i,securityScore:o,feedback:c}}}});function Bi(r){return
|
|
506
|
+
`),{scenarios:n,overallScore:i,securityScore:o,feedback:c}}}});function Bi(r){return rs[r]||null}function Di(){return Object.keys(rs)}function Ti(r){let e=r.toLowerCase();return Object.values(rs).filter(t=>t.title.toLowerCase().includes(e)||t.content.toLowerCase().includes(e))}var rs,Lc=p(()=>{"use strict";rs={whatIsPasskey:{title:"What is a Passkey?",content:`
|
|
507
507
|
Think of a passkey like your house smart lock:
|
|
508
508
|
|
|
509
509
|
\u{1F511} Traditional Key (Password):
|
|
@@ -947,17 +947,17 @@ Good: 70 pts (backup + social recovery)
|
|
|
947
947
|
Excellent: 80+ pts (all layers enabled)
|
|
948
948
|
|
|
949
949
|
Remember: Higher score = Lower chance of loss!
|
|
950
|
-
`}}});var ts={};E(ts,{RecoverySimulator:()=>Ft,educationalModules:()=>es,getAllTopics:()=>Di,getExplainer:()=>Bi,searchExplainers:()=>Ti});var Tr=p(()=>{"use strict";_c();Kc()});var is={};E(is,{deriveMLKemKeypair:()=>Rr,mlkemDecrypt:()=>ss,mlkemDecryptWithKey:()=>Fi,mlkemEncrypt:()=>ns,mlkemEncryptWithKey:()=>Ri});function Re(r){r.fill(0)}function Mt(r){if(typeof btoa<"u"){let e=Array.from(r).map(t=>String.fromCharCode(t)).join("");return btoa(e)}return Buffer.from(r).toString("base64")}function $e(r){if(typeof atob<"u"){let e=atob(r),t=new Uint8Array(e.length);for(let n=0;n<e.length;n++)t[n]=e.charCodeAt(n);return t}return new Uint8Array(Buffer.from(r,"base64"))}async function Rr(r,e="mlkem-v1"){let t=await(0,rs.createMlKem1024)(),n;if(typeof r=="string"){let i=r.startsWith("0x")?r.slice(2):r;if(typeof Buffer<"u")n=new Uint8Array(Buffer.from(i,"hex"));else{let o=new Uint8Array(i.length/2);for(let a=0;a<i.length;a+=2)o[a/2]=parseInt(i.substring(a,a+2),16);n=o}}else n=r;let s=(0,Oc.hkdf)(zc.sha256,n,new Uint8Array(Buffer.from("mlkem-keypair-v1","utf-8")),new Uint8Array(Buffer.from(e,"utf-8")),64);try{let[i,o]=t.deriveKeyPair(s);return{publicKey:i,privateKey:o}}finally{Re(s),Re(n)}}async function ns(r,e){let t=await(0,rs.createMlKem1024)(),n=Array.isArray(e)?e:[e];if(n.length===0)throw new Error("At least one public key is required");let s=new Uint8Array(32);crypto.getRandomValues(s);try{let i=new Uint8Array(12);crypto.getRandomValues(i);let a=new TextEncoder().encode(r),c=await crypto.subtle.importKey("raw",s,{name:"AES-GCM"},!1,["encrypt"]),l=await crypto.subtle.encrypt({name:"AES-GCM",iv:i,tagLength:128},c,a),u=new Uint8Array(l),d=16;if(u.length<d)throw new Error("Encrypted data too short to contain auth tag");let h=u.slice(0,-d),m=u.slice(-d),g=[];for(let w of n){let b=typeof w=="string"?$e(w):w;if(b.length!==1568)throw new Error(`Invalid ML-KEM public key size: ${b.length} (expected 1568)`);let[S,A]=t.encap(b);try{let v=A.slice(0,32),k=new Uint8Array(32);for(let x=0;x<32;x++)k[x]=s[x]^v[x];let C=new Uint8Array(S.length+k.length);C.set(S,0),C.set(k,S.length),g.push({publicKey:Mt(b),ciphertext:Mt(C)})}finally{Re(A)}}return{recipients:g,encryptedData:Mt(h),iv:Mt(i),authTag:Mt(m)}}finally{Re(s)}}async function ss(r,e,t){let n=await(0,rs.createMlKem1024)(),s=typeof e=="string"?$e(e):e;if(s.length!==3168)throw new Error(`Invalid ML-KEM private key size: ${s.length} (expected 3168)`);let i=$e(r.encryptedData),o=$e(r.iv),a=$e(r.authTag),c=null;if(t){let w=typeof t=="string"?$e(t):t,b=Mt(w);if(c=r.recipients.find(S=>S.publicKey===b),!c)throw new Error("Public key not found in recipients list")}else{for(let w of r.recipients)try{let b=$e(w.ciphertext),S=n.decap(b,s);c=w,Re(S);break}catch{continue}if(!c)throw new Error("No matching recipient found for this private key")}let l=$e(c.ciphertext),u=1568,d=l.slice(0,u),h=l.slice(u),m=n.decap(d,s),g=null;try{let w=m.slice(0,32);g=new Uint8Array(32);for(let x=0;x<32;x++)g[x]=h[x]^w[x];let b=await crypto.subtle.importKey("raw",g,{name:"AES-GCM"},!1,["decrypt"]),S=i.length+a.length,A=new ArrayBuffer(S),v=new Uint8Array(A);v.set(i,0),v.set(a,i.length);let k=await crypto.subtle.decrypt({name:"AES-GCM",iv:o.buffer,tagLength:128},b,A);return new TextDecoder().decode(k)}finally{Re(m),g&&Re(g)}}async function Ri(r,e,t,n="mlkem-v1"){let s=await Rr(e,n);try{let i=[s.publicKey,...t];return await ns(r,i)}finally{Re(s.privateKey)}}async function Fi(r,e,t="mlkem-v1"){let n=await Rr(e,t);try{return await ss(r,n.privateKey,n.publicKey)}finally{Re(n.privateKey)}}var rs,Oc,zc,Fr=p(()=>{"use strict";rs=require("mlkem"),Oc=require("@noble/hashes/hkdf.js"),zc=require("@noble/hashes/sha2.js")});function Mf(r){return r[Symbol.asyncIterator]!=null}function Uf(r){if(Mf(r))return(async()=>{for await(let e of r)return e})();for(let e of r)return e}var Mi,qc=p(()=>{"use strict";Mi=Uf});function Nf(r){return r[Symbol.asyncIterator]!=null}function Lf(r,e=1){return e=Number(e),Nf(r)?(async function*(){let t=[];if(e<1&&(e=1),e!==Math.round(e))throw new Error("Batch size must be an integer");for await(let n of r)for(t.push(n);t.length>=e;)yield t.slice(0,e),t=t.slice(e);for(;t.length>0;)yield t.slice(0,e),t=t.slice(e)})():(function*(){let t=[];if(e<1&&(e=1),e!==Math.round(e))throw new Error("Batch size must be an integer");for(let n of r)for(t.push(n);t.length>=e;)yield t.slice(0,e),t=t.slice(e);for(;t.length>0;)yield t.slice(0,e),t=t.slice(e)})()}var os,Ui=p(()=>{"use strict";os=Lf});async function*Mr(r,e=1){for await(let t of os(r,e)){let n=t.map(async s=>s().then(i=>({ok:!0,value:i}),i=>({ok:!1,err:i})));for(let s=0;s<n.length;s++){let i=await n[s];if(i.ok)yield i.value;else throw i.err}}}var Ni=p(()=>{"use strict";Ui()});function Fe(r=0){return new Uint8Array(r)}function se(r=0){return new Uint8Array(r)}var ut=p(()=>{"use strict"});function _f(r){return r?.buffer instanceof ArrayBuffer}function Hc(r){if(_f(r))return r;let e=r.slice();return new Uint8Array(e.buffer,0,e.byteLength)}var Vc=p(()=>{"use strict"});function Ur(r,e){e==null&&(e=r.reduce((s,i)=>s+i.length,0));let t=se(e),n=0;for(let s of r)t.set(s,n),n+=s.length;return Hc(t)}var Li=p(()=>{"use strict";ut();Vc()});function Gc(r,e){if(r===e)return!0;if(r.byteLength!==e.byteLength)return!1;for(let t=0;t<r.byteLength;t++)if(r[t]!==e[t])return!1;return!0}var Yc=p(()=>{"use strict"});function jc(r,e){if(e==null||e<0)throw new RangeError("index is out of bounds");let t=0;for(let n of r){let s=t+n.byteLength;if(e<s)return{buf:n,index:e-t};t=s}throw new RangeError("index is out of bounds")}function as(r){return!!r?.[Qc]}var Qc,Jc,Nt,Zc=p(()=>{"use strict";ut();Li();Yc();Qc=Symbol.for("@achingbrain/uint8arraylist");Nt=class r{constructor(...e){f(this,"bufs");f(this,"length");f(this,Jc,!0);this.bufs=[],this.length=0,e.length>0&&this.appendAll(e)}*[(Jc=Qc,Symbol.iterator)](){yield*this.bufs}get byteLength(){return this.length}append(...e){this.appendAll(e)}appendAll(e){let t=0;for(let n of e)if(n instanceof Uint8Array)t+=n.byteLength,this.bufs.push(n);else if(as(n)){t+=n.byteLength;for(let s of n.bufs)this.bufs.push(s)}else throw new Error("Could not append value, must be an Uint8Array or a Uint8ArrayList");this.length+=t}prepend(...e){this.prependAll(e)}prependAll(e){let t=0;for(let n of e.reverse())if(n instanceof Uint8Array)t+=n.byteLength,this.bufs.unshift(n);else if(as(n))t+=n.byteLength,this.bufs.unshift(...n.bufs);else throw new Error("Could not prepend value, must be an Uint8Array or a Uint8ArrayList");this.length+=t}get(e){let t=jc(this.bufs,e);return t.buf[t.index]}set(e,t){let n=jc(this.bufs,e);n.buf[n.index]=t}write(e,t=0){if(e instanceof Uint8Array)for(let n=0;n<e.length;n++)this.set(t+n,e[n]);else if(as(e))for(let n=0;n<e.length;n++)this.set(t+n,e.get(n));else throw new Error("Could not write value, must be an Uint8Array or a Uint8ArrayList")}consume(e){if(e=Math.trunc(e),!(Number.isNaN(e)||e<=0)){if(e===this.byteLength){this.bufs=[],this.length=0;return}for(;this.bufs.length>0;)if(e>=this.bufs[0].byteLength)e-=this.bufs[0].byteLength,this.length-=this.bufs[0].byteLength,this.bufs.shift();else{this.bufs[0]=this.bufs[0].subarray(e),this.length-=e;break}}}slice(e,t){let{bufs:n,length:s}=this._subList(e,t);return Ur(n,s)}subarray(e,t){let{bufs:n,length:s}=this._subList(e,t);return n.length===1?n[0]:Ur(n,s)}sublist(e,t){let{bufs:n,length:s}=this._subList(e,t),i=new r;return i.length=s,i.bufs=n,i}_subList(e,t){if(e=e??0,t=t??this.length,e<0&&(e=this.length+e),t<0&&(t=this.length+t),e<0||t>this.length)throw new RangeError("index is out of bounds");if(e===t)return{bufs:[],length:0};if(e===0&&t===this.length)return{bufs:[...this.bufs],length:this.length};let n=[],s=0;for(let i=0;i<this.bufs.length;i++){let o=this.bufs[i],a=s,c=a+o.byteLength;if(s=c,e>=c)continue;let l=e>=a&&e<c,u=t>a&&t<=c;if(l&&u){if(e===a&&t===c){n.push(o);break}let d=e-a;n.push(o.subarray(d,d+(t-e)));break}if(l){if(e===0){n.push(o);continue}n.push(o.subarray(e-a));continue}if(u){if(t===c){n.push(o);break}n.push(o.subarray(0,t-a));break}n.push(o)}return{bufs:n,length:t-e}}indexOf(e,t=0){if(!as(e)&&!(e instanceof Uint8Array))throw new TypeError('The "value" argument must be a Uint8ArrayList or Uint8Array');let n=e instanceof Uint8Array?e:e.subarray();if(t=Number(t??0),isNaN(t)&&(t=0),t<0&&(t=this.length+t),t<0&&(t=0),e.length===0)return t>this.length?this.length:t;let s=n.byteLength;if(s===0)throw new TypeError("search must be at least 1 byte long");let i=256,o=new Int32Array(i);for(let d=0;d<i;d++)o[d]=-1;for(let d=0;d<s;d++)o[n[d]]=d;let a=o,c=this.byteLength-n.byteLength,l=n.byteLength-1,u;for(let d=t;d<=c;d+=u){u=0;for(let h=l;h>=0;h--){let m=this.get(d+h);if(n[h]!==m){u=Math.max(1,h-a[m]);break}}if(u===0)return d}return-1}getInt8(e){let t=this.subarray(e,e+1);return new DataView(t.buffer,t.byteOffset,t.byteLength).getInt8(0)}setInt8(e,t){let n=se(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setInt8(0,t),this.write(n,e)}getInt16(e,t){let n=this.subarray(e,e+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt16(0,t)}setInt16(e,t,n){let s=Fe(2);new DataView(s.buffer,s.byteOffset,s.byteLength).setInt16(0,t,n),this.write(s,e)}getInt32(e,t){let n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt32(0,t)}setInt32(e,t,n){let s=Fe(4);new DataView(s.buffer,s.byteOffset,s.byteLength).setInt32(0,t,n),this.write(s,e)}getBigInt64(e,t){let n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigInt64(0,t)}setBigInt64(e,t,n){let s=Fe(8);new DataView(s.buffer,s.byteOffset,s.byteLength).setBigInt64(0,t,n),this.write(s,e)}getUint8(e){let t=this.subarray(e,e+1);return new DataView(t.buffer,t.byteOffset,t.byteLength).getUint8(0)}setUint8(e,t){let n=se(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setUint8(0,t),this.write(n,e)}getUint16(e,t){let n=this.subarray(e,e+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint16(0,t)}setUint16(e,t,n){let s=Fe(2);new DataView(s.buffer,s.byteOffset,s.byteLength).setUint16(0,t,n),this.write(s,e)}getUint32(e,t){let n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint32(0,t)}setUint32(e,t,n){let s=Fe(4);new DataView(s.buffer,s.byteOffset,s.byteLength).setUint32(0,t,n),this.write(s,e)}getBigUint64(e,t){let n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigUint64(0,t)}setBigUint64(e,t,n){let s=Fe(8);new DataView(s.buffer,s.byteOffset,s.byteLength).setBigUint64(0,t,n),this.write(s,e)}getFloat32(e,t){let n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat32(0,t)}setFloat32(e,t,n){let s=Fe(4);new DataView(s.buffer,s.byteOffset,s.byteLength).setFloat32(0,t,n),this.write(s,e)}getFloat64(e,t){let n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat64(0,t)}setFloat64(e,t,n){let s=Fe(8);new DataView(s.buffer,s.byteOffset,s.byteLength).setFloat64(0,t,n),this.write(s,e)}equals(e){if(e==null||!(e instanceof r)||e.bufs.length!==this.bufs.length)return!1;for(let t=0;t<this.bufs.length;t++)if(!Gc(this.bufs[t],e.bufs[t]))return!1;return!0}static fromUint8Arrays(e,t){let n=new r;return n.bufs=e,t==null&&(t=e.reduce((s,i)=>s+i.byteLength,0)),n.length=t,n}}});var _i,cs,ls,Xc,us,el,tl,rl,nl,sl,il,ol,Nr=p(()=>{"use strict";_i=BigInt(34),cs=8,ls=262144,Xc="links-bytes",us=262144,el=1048576,tl=50,rl=10,nl=!0,sl=!0,il=!1,ol="file"});var al,cl=p(()=>{"use strict";Zc();Nr();al=(r={})=>{let e=r.chunkSize??us;return async function*(n){let s=new Nt,i=0,o=!1;for await(let a of n)for(s.append(a),i+=a.length;i>=e;)if(yield s.subarray(0,e),o=!0,e===s.length)s=new Nt,i=0;else{let l=new Nt;l.append(s.sublist(e)),s=l,i-=e}(!o||i>0)&&(yield s.subarray(0,i))}}});function ll(r,e){if(r===e)return!0;if(r.byteLength!==e.byteLength)return!1;for(let t=0;t<r.byteLength;t++)if(r[t]!==e[t])return!1;return!0}function Se(r){if(r instanceof Uint8Array&&r.constructor.name==="Uint8Array")return dt(r);if(r instanceof ArrayBuffer)return new Uint8Array(r);if(ArrayBuffer.isView(r))return dt(new Uint8Array(r.buffer,r.byteOffset,r.byteLength));throw new Error("Unknown type, must be binary type")}function ul(r){return new TextEncoder().encode(r)}function dl(r){return new TextDecoder().decode(r)}function Kf(r){return r?.buffer instanceof ArrayBuffer}function dt(r){return Kf(r)?r:r.slice()}var u0,qe=p(()=>{"use strict";u0=new Uint8Array(0)});function Of(r,e){if(r.length>=255)throw new TypeError("Alphabet too long");for(var t=new Uint8Array(256),n=0;n<t.length;n++)t[n]=255;for(var s=0;s<r.length;s++){var i=r.charAt(s),o=i.charCodeAt(0);if(t[o]!==255)throw new TypeError(i+" is ambiguous");t[o]=s}var a=r.length,c=r.charAt(0),l=Math.log(a)/Math.log(256),u=Math.log(256)/Math.log(a);function d(g){if(g instanceof Uint8Array||(ArrayBuffer.isView(g)?g=new Uint8Array(g.buffer,g.byteOffset,g.byteLength):Array.isArray(g)&&(g=Uint8Array.from(g))),!(g instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(g.length===0)return"";for(var w=0,b=0,S=0,A=g.length;S!==A&&g[S]===0;)S++,w++;for(var v=(A-S)*u+1>>>0,k=new Uint8Array(v);S!==A;){for(var C=g[S],x=0,T=v-1;(C!==0||x<b)&&T!==-1;T--,x++)C+=256*k[T]>>>0,k[T]=C%a>>>0,C=C/a>>>0;if(C!==0)throw new Error("Non-zero carry");b=x,S++}for(var O=v-b;O!==v&&k[O]===0;)O++;for(var Be=c.repeat(w);O<v;++O)Be+=r.charAt(k[O]);return Be}function h(g){if(typeof g!="string")throw new TypeError("Expected String");if(g.length===0)return new Uint8Array;var w=0;if(g[w]!==" "){for(var b=0,S=0;g[w]===c;)b++,w++;for(var A=(g.length-w)*l+1>>>0,v=new Uint8Array(A);g[w];){var k=t[g.charCodeAt(w)];if(k===255)return;for(var C=0,x=A-1;(k!==0||C<S)&&x!==-1;x--,C++)k+=a*v[x]>>>0,v[x]=k%256>>>0,k=k/256>>>0;if(k!==0)throw new Error("Non-zero carry");S=C,w++}if(g[w]!==" "){for(var T=A-S;T!==A&&v[T]===0;)T++;for(var O=new Uint8Array(b+(A-T)),Be=b;T!==A;)O[Be++]=v[T++];return O}}}function m(g){var w=h(g);if(w)return w;throw new Error(`Non-${e} character`)}return{encode:d,decodeUnsafe:h,decode:m}}var zf,Wf,fl,pl=p(()=>{"use strict";zf=Of,Wf=zf,fl=Wf});function ml(r,e){return new zi({...r.decoders??{[r.prefix]:r},...e.decoders??{[e.prefix]:e}})}function Lt({name:r,prefix:e,encode:t,decode:n}){return new Wi(r,e,t,n)}function He({name:r,prefix:e,alphabet:t}){let{encode:n,decode:s}=fl(t,r);return Lt({prefix:e,name:r,encode:n,decode:i=>Se(s(i))})}function $f(r,e,t,n){let s=r.length;for(;r[s-1]==="=";)--s;let i=new Uint8Array(s*t/8|0),o=0,a=0,c=0;for(let l=0;l<s;++l){let u=e[r[l]];if(u===void 0)throw new SyntaxError(`Non-${n} character`);a=a<<t|u,o+=t,o>=8&&(o-=8,i[c++]=255&a>>o)}if(o>=t||(255&a<<8-o)!==0)throw new SyntaxError("Unexpected end of data");return i}function qf(r,e,t){let n=e[e.length-1]==="=",s=(1<<t)-1,i="",o=0,a=0;for(let c=0;c<r.length;++c)for(a=a<<8|r[c],o+=8;o>t;)o-=t,i+=e[s&a>>o];if(o!==0&&(i+=e[s&a<<t-o]),n)for(;(i.length*t&7)!==0;)i+="=";return i}function Hf(r){let e={};for(let t=0;t<r.length;++t)e[r[t]]=t;return e}function L({name:r,prefix:e,bitsPerChar:t,alphabet:n}){let s=Hf(n);return Lt({prefix:e,name:r,encode(i){return qf(i,n,t)},decode(i){return $f(i,s,t,r)}})}var Ki,Oi,zi,Wi,Ae=p(()=>{"use strict";qe();pl();Ki=class{constructor(e,t,n){f(this,"name");f(this,"prefix");f(this,"baseEncode");this.name=e,this.prefix=t,this.baseEncode=n}encode(e){if(e instanceof Uint8Array)return`${this.prefix}${this.baseEncode(e)}`;throw Error("Unknown type, must be binary type")}},Oi=class{constructor(e,t,n){f(this,"name");f(this,"prefix");f(this,"baseDecode");f(this,"prefixCodePoint");this.name=e,this.prefix=t;let s=t.codePointAt(0);if(s===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=s,this.baseDecode=n}decode(e){if(typeof e=="string"){if(e.codePointAt(0)!==this.prefixCodePoint)throw Error(`Unable to decode multibase string ${JSON.stringify(e)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);return this.baseDecode(e.slice(this.prefix.length))}else throw Error("Can only multibase decode strings")}or(e){return ml(this,e)}},zi=class{constructor(e){f(this,"decoders");this.decoders=e}or(e){return ml(this,e)}decode(e){let t=e[0],n=this.decoders[t];if(n!=null)return n.decode(e);throw RangeError(`Unable to decode multibase string ${JSON.stringify(e)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}};Wi=class{constructor(e,t,n,s){f(this,"name");f(this,"prefix");f(this,"baseEncode");f(this,"baseDecode");f(this,"encoder");f(this,"decoder");this.name=e,this.prefix=t,this.baseEncode=n,this.baseDecode=s,this.encoder=new Ki(e,t,n),this.decoder=new Oi(e,t,s)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}}});var $i={};E($i,{base32:()=>Z,base32hex:()=>jf,base32hexpad:()=>Qf,base32hexpadupper:()=>Zf,base32hexupper:()=>Jf,base32pad:()=>Gf,base32padupper:()=>Yf,base32upper:()=>Vf,base32z:()=>Xf});var Z,Vf,Gf,Yf,jf,Jf,Qf,Zf,Xf,Lr=p(()=>{"use strict";Ae();Z=L({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),Vf=L({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),Gf=L({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),Yf=L({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),jf=L({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),Jf=L({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),Qf=L({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),Zf=L({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),Xf=L({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5})});var qi={};E(qi,{base36:()=>_r,base36upper:()=>ep});var _r,ep,Hi=p(()=>{"use strict";Ae();_r=He({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),ep=He({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"})});var Vi={};E(Vi,{base58btc:()=>he,base58flickr:()=>tp});var he,tp,ds=p(()=>{"use strict";Ae();he=He({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),tp=He({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"})});function wl(r,e,t){e=e||[],t=t||0;for(var n=t;r>=ip;)e[t++]=r&255|gl,r/=128;for(;r&sp;)e[t++]=r&255|gl,r>>>=7;return e[t]=r|0,wl.bytes=t-n+1,e}function Gi(r,n){var t=0,n=n||0,s=0,i=n,o,a=r.length;do{if(i>=a)throw Gi.bytes=0,new RangeError("Could not decode varint");o=r[i++],t+=s<28?(o&yl)<<s:(o&yl)*Math.pow(2,s),s+=7}while(o>=ap);return Gi.bytes=i-n,t}var rp,gl,np,sp,ip,op,ap,yl,cp,lp,up,dp,hp,fp,pp,mp,gp,yp,wp,bp,Kr,bl=p(()=>{"use strict";rp=wl,gl=128,np=127,sp=~np,ip=Math.pow(2,31);op=Gi,ap=128,yl=127;cp=Math.pow(2,7),lp=Math.pow(2,14),up=Math.pow(2,21),dp=Math.pow(2,28),hp=Math.pow(2,35),fp=Math.pow(2,42),pp=Math.pow(2,49),mp=Math.pow(2,56),gp=Math.pow(2,63),yp=function(r){return r<cp?1:r<lp?2:r<up?3:r<dp?4:r<hp?5:r<fp?6:r<pp?7:r<mp?8:r<gp?9:10},wp={encode:rp,decode:op,encodingLength:yp},bp=wp,Kr=bp});function Or(r,e=0){return[Kr.decode(r,e),Kr.decode.bytes]}function _t(r,e,t=0){return Kr.encode(r,e,t),e}function Kt(r){return Kr.encodingLength(r)}var fs=p(()=>{"use strict";bl()});function zt(r,e){let t=e.byteLength,n=Kt(r),s=n+Kt(t),i=new Uint8Array(s+t);return _t(r,i,0),_t(t,i,n),i.set(e,s),new Ot(r,t,e,i)}function ps(r){let e=Se(r),[t,n]=Or(e),[s,i]=Or(e.subarray(n)),o=e.subarray(n+i);if(o.byteLength!==s)throw new Error("Incorrect length");return new Ot(t,s,o,e)}function Sl(r,e){if(r===e)return!0;{let t=e;return r.code===t.code&&r.size===t.size&&t.bytes instanceof Uint8Array&&ll(r.bytes,t.bytes)}}var Ot,$t=p(()=>{"use strict";qe();fs();Ot=class{constructor(e,t,n,s){f(this,"code");f(this,"size");f(this,"digest");f(this,"bytes");this.code=e,this.size=t,this.digest=dt(n),this.bytes=dt(s)}}});var Yi=p(()=>{"use strict"});function Al(r,e){let{bytes:t,version:n}=r;return n===0?Ap(t,ji(r),e??he.encoder):xp(t,ji(r),e??Z.encoder)}function ji(r){let e=xl.get(r);if(e==null){let t=new Map;return xl.set(r,t),t}return e}function Sp(r,e){switch(r[0]){case"Q":{let t=e??he;return[he.prefix,t.decode(`${he.prefix}${r}`)]}case he.prefix:{let t=e??he;return[he.prefix,t.decode(r)]}case Z.prefix:{let t=e??Z;return[Z.prefix,t.decode(r)]}case _r.prefix:{let t=e??_r;return[_r.prefix,t.decode(r)]}default:{if(e==null)throw Error("To parse non base32, base36 or base58btc encoded CID multibase decoder must be provided");return[r[0],e.decode(r)]}}}function Ap(r,e,t){let{prefix:n}=t;if(n!==he.prefix)throw Error(`Cannot string encode V0 in ${t.name} encoding`);let s=e.get(n);if(s==null){let i=t.encode(r).slice(1);return e.set(n,i),i}else return s}function xp(r,e,t){let{prefix:n}=t,s=e.get(n);if(s==null){let i=t.encode(r);return e.set(n,i),i}else return s}function vl(r,e,t){let n=Kt(r),s=n+Kt(e),i=new Uint8Array(s+t.byteLength);return _t(r,i,0),_t(e,i,n),i.set(t,s),i}var xl,El,V,zr,vp,Ep,ht=p(()=>{"use strict";Lr();Hi();ds();qe();$t();fs();Yi();xl=new WeakMap;V=class r{constructor(e,t,n,s){f(this,"code");f(this,"version");f(this,"multihash");f(this,"bytes");f(this,"/");f(this,El,"CID");this.code=t,this.version=e,this.multihash=n,this.bytes=dt(s),this["/"]=this.bytes}get asCID(){return this}get byteOffset(){return this.bytes.byteOffset}get byteLength(){return this.bytes.byteLength}toV0(){switch(this.version){case 0:return this;case 1:{let{code:e,multihash:t}=this;if(e!==zr)throw new Error("Cannot convert a non dag-pb CID to CIDv0");if(t.code!==vp)throw new Error("Cannot convert non sha2-256 multihash CID to CIDv0");return r.createV0(t)}default:throw Error(`Can not convert CID version ${this.version} to version 0. This is a bug please report`)}}toV1(){switch(this.version){case 0:{let{code:e,digest:t}=this.multihash,n=zt(e,t);return r.createV1(this.code,n)}case 1:return this;default:throw Error(`Can not convert CID version ${this.version} to version 1. This is a bug please report`)}}equals(e){return r.equals(this,e)}static equals(e,t){let n=t;return n!=null&&e.code===n.code&&e.version===n.version&&Sl(e.multihash,n.multihash)}toString(e){return Al(this,e)}toJSON(){return{"/":Al(this)}}link(){return this}[(El=Symbol.toStringTag,Symbol.for("nodejs.util.inspect.custom"))](){return`CID(${this.toString()})`}static asCID(e){if(e==null)return null;let t=e;if(t instanceof r)return t;if(t["/"]!=null&&t["/"]===t.bytes||t.asCID===t){let{version:n,code:s,multihash:i,bytes:o}=t;return new r(n,s,i,o??vl(n,s,i.bytes))}else if(t[Ep]===!0){let{version:n,multihash:s,code:i}=t,o=ps(s);return r.create(n,i,o)}else return null}static create(e,t,n){if(typeof t!="number")throw new Error("String codecs are no longer supported");if(!(n.bytes instanceof Uint8Array))throw new Error("Invalid digest");switch(e){case 0:{if(t!==zr)throw new Error(`Version 0 CID must use dag-pb (code: ${zr}) block encoding`);return new r(e,t,n,n.bytes)}case 1:{let s=vl(e,t,n.bytes);return new r(e,t,n,s)}default:throw new Error("Invalid version")}}static createV0(e){return r.create(0,zr,e)}static createV1(e,t){return r.create(1,e,t)}static decode(e){let[t,n]=r.decodeFirst(e);if(n.length!==0)throw new Error("Incorrect length");return t}static decodeFirst(e){let t=r.inspectBytes(e),n=t.size-t.multihashSize,s=Se(e.subarray(n,n+t.multihashSize));if(s.byteLength!==t.multihashSize)throw new Error("Incorrect length");let i=s.subarray(t.multihashSize-t.digestSize),o=new Ot(t.multihashCode,t.digestSize,i,s);return[t.version===0?r.createV0(o):r.createV1(t.codec,o),e.subarray(t.size)]}static inspectBytes(e){let t=0,n=()=>{let[d,h]=Or(e.subarray(t));return t+=h,d},s=n(),i=zr;if(s===18?(s=0,t=0):i=n(),s!==0&&s!==1)throw new RangeError(`Invalid CID version ${s}`);let o=t,a=n(),c=n(),l=t+c,u=l-o;return{version:s,codec:i,multihashCode:a,digestSize:c,multihashSize:u,size:l}}static parse(e,t){let[n,s]=Sp(e,t),i=r.decode(s);if(i.version===0&&e[0]!=="Q")throw Error("Version 0 CID string must not include multibase prefix");return ji(i).set(n,e),i}};zr=112,vp=18;Ep=Symbol.for("@ipld/js-cid/CID")});function Ji(r,e){let t=0;for(let n=0;;n+=7){if(n>=64)throw new Error("protobuf: varint overflow");if(e>=r.length)throw new Error("protobuf: unexpected end of data");let s=r[e++];if(t+=n<28?(s&127)<<n:(s&127)*2**n,s<128)break}return[t,e]}function ms(r,e){let t;[t,e]=Ji(r,e);let n=e+t;if(t<0||n<0)throw new Error("protobuf: invalid length");if(n>r.length)throw new Error("protobuf: unexpected end of data");return[r.subarray(e,n),n]}function kl(r,e){let t;return[t,e]=Ji(r,e),[t&7,t>>3,e]}function Cp(r){let e={},t=r.length,n=0;for(;n<t;){let s,i;if([s,i,n]=kl(r,n),i===1){if(e.Hash)throw new Error("protobuf: (PBLink) duplicate Hash section");if(s!==2)throw new Error(`protobuf: (PBLink) wrong wireType (${s}) for Hash`);if(e.Name!==void 0)throw new Error("protobuf: (PBLink) invalid order, found Name before Hash");if(e.Tsize!==void 0)throw new Error("protobuf: (PBLink) invalid order, found Tsize before Hash");[e.Hash,n]=ms(r,n)}else if(i===2){if(e.Name!==void 0)throw new Error("protobuf: (PBLink) duplicate Name section");if(s!==2)throw new Error(`protobuf: (PBLink) wrong wireType (${s}) for Name`);if(e.Tsize!==void 0)throw new Error("protobuf: (PBLink) invalid order, found Tsize before Name");let o;[o,n]=ms(r,n),e.Name=kp.decode(o)}else if(i===3){if(e.Tsize!==void 0)throw new Error("protobuf: (PBLink) duplicate Tsize section");if(s!==0)throw new Error(`protobuf: (PBLink) wrong wireType (${s}) for Tsize`);[e.Tsize,n]=Ji(r,n)}else throw new Error(`protobuf: (PBLink) invalid fieldNumber, expected 1, 2 or 3, got ${i}`)}if(n>t)throw new Error("protobuf: (PBLink) unexpected end of data");return e}function Cl(r){let e=r.length,t=0,n,s=!1,i;for(;t<e;){let a,c;if([a,c,t]=kl(r,t),a!==2)throw new Error(`protobuf: (PBNode) invalid wireType, expected 2, got ${a}`);if(c===1){if(i)throw new Error("protobuf: (PBNode) duplicate Data section");[i,t]=ms(r,t),n&&(s=!0)}else if(c===2){if(s)throw new Error("protobuf: (PBNode) duplicate Links section");n||(n=[]);let l;[l,t]=ms(r,t),n.push(Cp(l))}else throw new Error(`protobuf: (PBNode) invalid fieldNumber, expected 1 or 2, got ${c}`)}if(t>e)throw new Error("protobuf: (PBNode) unexpected end of data");let o={};return i&&(o.Data=i),o.Links=n||[],o}var kp,Pl=p(()=>{"use strict";kp=new TextDecoder});function Ip(r,e){let t=e.length;if(typeof r.Tsize=="number"){if(r.Tsize<0)throw new Error("Tsize cannot be negative");if(!Number.isSafeInteger(r.Tsize))throw new Error("Tsize too large for encoding");t=Wr(e,t,r.Tsize)-1,e[t]=24}if(typeof r.Name=="string"){let n=Bl.encode(r.Name);t-=n.length,e.set(n,t),t=Wr(e,t,n.length)-1,e[t]=18}return r.Hash&&(t-=r.Hash.length,e.set(r.Hash,t),t=Wr(e,t,r.Hash.length)-1,e[t]=10),e.length-t}function Dl(r){let e=Dp(r),t=new Uint8Array(e),n=e;if(r.Data&&(n-=r.Data.length,t.set(r.Data,n),n=Wr(t,n,r.Data.length)-1,t[n]=10),r.Links)for(let s=r.Links.length-1;s>=0;s--){let i=Ip(r.Links[s],t.subarray(0,n));n-=i,n=Wr(t,n,i)-1,t[n]=18}return t}function Bp(r){let e=0;if(r.Hash){let t=r.Hash.length;e+=1+t+qt(t)}if(typeof r.Name=="string"){let t=Bl.encode(r.Name).length;e+=1+t+qt(t)}return typeof r.Tsize=="number"&&(e+=1+qt(r.Tsize)),e}function Dp(r){let e=0;if(r.Data){let t=r.Data.length;e+=1+t+qt(t)}if(r.Links)for(let t of r.Links){let n=Bp(t);e+=1+n+qt(n)}return e}function Wr(r,e,t){e-=qt(t);let n=e;for(;t>=Pp;)r[e++]=t&127|128,t/=128;for(;t>=128;)r[e++]=t&127|128,t>>>=7;return r[e]=t,n}function qt(r){return r%2===0&&r++,Math.floor((Tp(r)+6)/7)}function Tp(r){let e=0;return r>=Il&&(r=Math.floor(r/Il),e=32),r>=65536&&(r>>>=16,e+=16),r>=256&&(r>>>=8,e+=8),e+Rp[r]}var Bl,Il,Pp,Rp,Tl=p(()=>{"use strict";Bl=new TextEncoder,Il=2**32,Pp=2**31;Rp=[0,1,2,2,3,3,3,3,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8]});function Fl(r,e){if(r===e)return 0;let t=r.Name?Qi.encode(r.Name):[],n=e.Name?Qi.encode(e.Name):[],s=t.length,i=n.length;for(let o=0,a=Math.min(s,i);o<a;++o)if(t[o]!==n[o]){s=t[o],i=n[o];break}return s<i?-1:i<s?1:0}function Rl(r,e){return!Object.keys(r).some(t=>!e.includes(t))}function Ml(r){if(typeof r.asCID=="object"){let t=V.asCID(r);if(!t)throw new TypeError("Invalid DAG-PB form");return{Hash:t}}if(typeof r!="object"||Array.isArray(r))throw new TypeError("Invalid DAG-PB form");let e={};if(r.Hash){let t=V.asCID(r.Hash);try{t||(typeof r.Hash=="string"?t=V.parse(r.Hash):r.Hash instanceof Uint8Array&&(t=V.decode(r.Hash)))}catch(n){throw new TypeError(`Invalid DAG-PB form: ${n.message}`)}t&&(e.Hash=t)}if(!e.Hash)throw new TypeError("Invalid DAG-PB form");return typeof r.Name=="string"&&(e.Name=r.Name),typeof r.Tsize=="number"&&(e.Tsize=r.Tsize),e}function X(r){if((r instanceof Uint8Array||typeof r=="string")&&(r={Data:r}),typeof r!="object"||Array.isArray(r))throw new TypeError("Invalid DAG-PB form");let e={};if(r.Data!==void 0)if(typeof r.Data=="string")e.Data=Qi.encode(r.Data);else if(r.Data instanceof Uint8Array)e.Data=r.Data;else throw new TypeError("Invalid DAG-PB form");if(r.Links!==void 0)if(Array.isArray(r.Links))e.Links=r.Links.map(Ml),e.Links.sort(Fl);else throw new TypeError("Invalid DAG-PB form");else e.Links=[];return e}function Zi(r){if(!r||typeof r!="object"||Array.isArray(r)||r instanceof Uint8Array||r["/"]&&r["/"]===r.bytes)throw new TypeError("Invalid DAG-PB form");if(!Rl(r,Fp))throw new TypeError("Invalid DAG-PB form (extraneous properties)");if(r.Data!==void 0&&!(r.Data instanceof Uint8Array))throw new TypeError("Invalid DAG-PB form (Data must be bytes)");if(!Array.isArray(r.Links))throw new TypeError("Invalid DAG-PB form (Links must be a list)");for(let e=0;e<r.Links.length;e++){let t=r.Links[e];if(!t||typeof t!="object"||Array.isArray(t)||t instanceof Uint8Array||t["/"]&&t["/"]===t.bytes)throw new TypeError("Invalid DAG-PB form (bad link)");if(!Rl(t,Mp))throw new TypeError("Invalid DAG-PB form (extraneous properties on link)");if(t.Hash===void 0)throw new TypeError("Invalid DAG-PB form (link must have a Hash)");if(t.Hash==null||!t.Hash["/"]||t.Hash["/"]!==t.Hash.bytes)throw new TypeError("Invalid DAG-PB form (link Hash must be a CID)");if(t.Name!==void 0&&typeof t.Name!="string")throw new TypeError("Invalid DAG-PB form (link Name must be a string)");if(t.Tsize!==void 0){if(typeof t.Tsize!="number"||t.Tsize%1!==0)throw new TypeError("Invalid DAG-PB form (link Tsize must be an integer)");if(t.Tsize<0)throw new TypeError("Invalid DAG-PB form (link Tsize cannot be negative)")}if(e>0&&Fl(t,r.Links[e-1])===-1)throw new TypeError("Invalid DAG-PB form (links must be sorted by Name bytes)")}}function Ul(r,e=[]){return X({Data:r,Links:e})}function Nl(r,e,t){return Ml({Hash:t,Name:r,Tsize:e})}function Ll(r){return r instanceof ArrayBuffer?new Uint8Array(r,0,r.byteLength):r}var Fp,Mp,Qi,_l=p(()=>{"use strict";ht();Fp=["Data","Links"],Mp=["Hash","Name","Tsize"],Qi=new TextEncoder});var $r={};E($r,{code:()=>Np,createLink:()=>Nl,createNode:()=>Ul,decode:()=>Lp,encode:()=>ee,name:()=>Up,prepare:()=>X,validate:()=>Zi});function ee(r){Zi(r);let e={};return r.Links&&(e.Links=r.Links.map(t=>{let n={};return t.Hash&&(n.Hash=t.Hash.bytes),t.Name!==void 0&&(n.Name=t.Name),t.Tsize!==void 0&&(n.Tsize=t.Tsize),n})),r.Data&&(e.Data=r.Data),Dl(e)}function Lp(r){let e=Ll(r),t=Cl(e),n={};return t.Data&&(n.Data=t.Data),t.Links&&(n.Links=t.Links.map(s=>{let i={};try{i.Hash=V.decode(s.Hash)}catch{}if(!i.Hash)throw new Error("Invalid Hash field found in link, expected CID");return s.Name!==void 0&&(i.Name=s.Name),s.Tsize!==void 0&&(i.Tsize=s.Tsize),i})),n}var Up,Np,ft=p(()=>{"use strict";ht();Pl();Tl();_l();Up="dag-pb",Np=112});var Ht,qr,Xi=p(()=>{"use strict";Ht=class Ht extends Error{constructor(t="Invalid type"){super(t);f(this,"name",Ht.name);f(this,"code",Ht.code)}};f(Ht,"name","InvalidTypeError"),f(Ht,"code","ERR_INVALID_TYPE");qr=Ht});function Hr(r){if(r<_p)return 1;if(r<Kp)return 2;if(r<Op)return 3;if(r<Kl)return 4;if(r<Ol)return 5;if(r<zl)return 6;if(r<Wl)return 7;if(Number.MAX_SAFE_INTEGER!=null&&r>Number.MAX_SAFE_INTEGER)throw new RangeError("Could not encode varint");return 8}function $l(r,e,t=0){switch(Hr(r)){case 8:e[t++]=r&255|G,r/=128;case 7:e[t++]=r&255|G,r/=128;case 6:e[t++]=r&255|G,r/=128;case 5:e[t++]=r&255|G,r/=128;case 4:e[t++]=r&255|G,r>>>=7;case 3:e[t++]=r&255|G,r>>>=7;case 2:e[t++]=r&255|G,r>>>=7;case 1:{e[t++]=r&255,r>>>=7;break}default:throw new Error("unreachable")}return e}function ql(r,e){let t=r[e],n=0;if(n+=t&Ve,t<G||(t=r[e+1],n+=(t&Ve)<<7,t<G)||(t=r[e+2],n+=(t&Ve)<<14,t<G)||(t=r[e+3],n+=(t&Ve)<<21,t<G)||(t=r[e+4],n+=(t&Ve)*Kl,t<G)||(t=r[e+5],n+=(t&Ve)*Ol,t<G)||(t=r[e+6],n+=(t&Ve)*zl,t<G)||(t=r[e+7],n+=(t&Ve)*Wl,t<G))return n;throw new RangeError("Could not decode varint")}var _p,Kp,Op,Kl,Ol,zl,Wl,G,Ve,eo=p(()=>{"use strict";ut();_p=Math.pow(2,7),Kp=Math.pow(2,14),Op=Math.pow(2,21),Kl=Math.pow(2,28),Ol=Math.pow(2,35),zl=Math.pow(2,42),Wl=Math.pow(2,49),G=128,Ve=127});function zp(r){return r.buffer instanceof ArrayBuffer}function Hl(r){return zp(r)?r:r.slice()}var Vl=p(()=>{"use strict"});function Gl(r,e,t){to[0]=r,e[t]=Ge[0],e[t+1]=Ge[1],e[t+2]=Ge[2],e[t+3]=Ge[3]}function Yl(r,e){return Ge[0]=r[e],Ge[1]=r[e+1],Ge[2]=r[e+2],Ge[3]=r[e+3],to[0]}function jl(r,e,t){ro[0]=r,e[t]=W[0],e[t+1]=W[1],e[t+2]=W[2],e[t+3]=W[3],e[t+4]=W[4],e[t+5]=W[5],e[t+6]=W[6],e[t+7]=W[7]}function Jl(r,e){return W[0]=r[e],W[1]=r[e+1],W[2]=r[e+2],W[3]=r[e+3],W[4]=r[e+4],W[5]=r[e+5],W[6]=r[e+6],W[7]=r[e+7],ro[0]}var to,Ge,ro,W,no=p(()=>{"use strict";to=new Float32Array([-0]),Ge=new Uint8Array(to.buffer);ro=new Float64Array([-0]),W=new Uint8Array(ro.buffer)});var Wp,$p,ie,pt,Ql,so=p(()=>{"use strict";Wp=BigInt(Number.MAX_SAFE_INTEGER),$p=BigInt(Number.MIN_SAFE_INTEGER),ie=class r{constructor(e,t){f(this,"lo");f(this,"hi");this.lo=e|0,this.hi=t|0}toNumber(e=!1){if(!e&&this.hi>>>31>0){let t=~this.lo+1>>>0,n=~this.hi>>>0;return t===0&&(n=n+1>>>0),-(t+n*4294967296)}return this.lo+this.hi*4294967296}toBigInt(e=!1){if(e)return BigInt(this.lo>>>0)+(BigInt(this.hi>>>0)<<32n);if(this.hi>>>31){let t=~this.lo+1>>>0,n=~this.hi>>>0;return t===0&&(n=n+1>>>0),-(BigInt(t)+(BigInt(n)<<32n))}return BigInt(this.lo>>>0)+(BigInt(this.hi>>>0)<<32n)}toString(e=!1){return this.toBigInt(e).toString()}zzEncode(){let e=this.hi>>31;return this.hi=((this.hi<<1|this.lo>>>31)^e)>>>0,this.lo=(this.lo<<1^e)>>>0,this}zzDecode(){let e=-(this.lo&1);return this.lo=((this.lo>>>1|this.hi<<31)^e)>>>0,this.hi=(this.hi>>>1^e)>>>0,this}length(){let e=this.lo,t=(this.lo>>>28|this.hi<<4)>>>0,n=this.hi>>>24;return n===0?t===0?e<16384?e<128?1:2:e<2097152?3:4:t<16384?t<128?5:6:t<2097152?7:8:n<128?9:10}static fromBigInt(e){if(e===0n)return pt;if(e<Wp&&e>$p)return this.fromNumber(Number(e));let t=e<0n;t&&(e=-e);let n=e>>32n,s=e-(n<<32n);return t&&(n=~n|0n,s=~s|0n,++s>Ql&&(s=0n,++n>Ql&&(n=0n))),new r(Number(s),Number(n))}static fromNumber(e){if(e===0)return pt;let t=e<0;t&&(e=-e);let n=e>>>0,s=(e-n)/4294967296>>>0;return t&&(s=~s>>>0,n=~n>>>0,++n>4294967295&&(n=0,++s>4294967295&&(s=0))),new r(n,s)}static from(e){return typeof e=="number"?r.fromNumber(e):typeof e=="bigint"?r.fromBigInt(e):typeof e=="string"?r.fromBigInt(BigInt(e)):e.low!=null||e.high!=null?new r(e.low>>>0,e.high>>>0):pt}},pt=new ie(0,0);pt.toBigInt=function(){return 0n};pt.zzEncode=pt.zzDecode=function(){return this};pt.length=function(){return 1};Ql=4294967296n});function Zl(r){let e=0,t=0;for(let n=0;n<r.length;++n)t=r.charCodeAt(n),t<128?e+=1:t<2048?e+=2:(t&64512)===55296&&(r.charCodeAt(n+1)&64512)===56320?(++n,e+=4):e+=3;return e}function Xl(r,e,t){if(t-e<1)return"";let s,i=[],o=0,a;for(;e<t;)a=r[e++],a<128?i[o++]=a:a>191&&a<224?i[o++]=(a&31)<<6|r[e++]&63:a>239&&a<365?(a=((a&7)<<18|(r[e++]&63)<<12|(r[e++]&63)<<6|r[e++]&63)-65536,i[o++]=55296+(a>>10),i[o++]=56320+(a&1023)):i[o++]=(a&15)<<12|(r[e++]&63)<<6|r[e++]&63,o>8191&&((s??(s=[])).push(String.fromCharCode.apply(String,i)),o=0);return s!=null?(o>0&&s.push(String.fromCharCode.apply(String,i.slice(0,o))),s.join("")):String.fromCharCode.apply(String,i.slice(0,o))}function io(r,e,t){let n=t,s,i;for(let o=0;o<r.length;++o)s=r.charCodeAt(o),s<128?e[t++]=s:s<2048?(e[t++]=s>>6|192,e[t++]=s&63|128):(s&64512)===55296&&((i=r.charCodeAt(o+1))&64512)===56320?(s=65536+((s&1023)<<10)+(i&1023),++o,e[t++]=s>>18|240,e[t++]=s>>12&63|128,e[t++]=s>>6&63|128,e[t++]=s&63|128):(e[t++]=s>>12|224,e[t++]=s>>6&63|128,e[t++]=s&63|128);return t-n}var oo=p(()=>{"use strict"});function xe(r,e){return RangeError(`index out of range: ${r.pos} + ${e??1} > ${r.len}`)}function gs(r,e){return(r[e-4]|r[e-3]<<8|r[e-2]<<16|r[e-1]<<24)>>>0}function Vr(r){return new ao(r instanceof Uint8Array?r:r.subarray())}var ao,ys=p(()=>{"use strict";eo();Vl();no();so();oo();ao=class{constructor(e){f(this,"buf");f(this,"pos");f(this,"len");f(this,"_slice",Uint8Array.prototype.subarray);this.buf=Hl(e),this.pos=0,this.len=e.length}uint32(){let e=4294967295;if(e=(this.buf[this.pos]&127)>>>0,this.buf[this.pos++]<128||(e=(e|(this.buf[this.pos]&127)<<7)>>>0,this.buf[this.pos++]<128)||(e=(e|(this.buf[this.pos]&127)<<14)>>>0,this.buf[this.pos++]<128)||(e=(e|(this.buf[this.pos]&127)<<21)>>>0,this.buf[this.pos++]<128)||(e=(e|(this.buf[this.pos]&15)<<28)>>>0,this.buf[this.pos++]<128))return e;if((this.pos+=5)>this.len)throw this.pos=this.len,xe(this,10);return e}int32(){return this.uint32()|0}sint32(){let e=this.uint32();return e>>>1^-(e&1)|0}bool(){return this.uint32()!==0}fixed32(){if(this.pos+4>this.len)throw xe(this,4);return gs(this.buf,this.pos+=4)}sfixed32(){if(this.pos+4>this.len)throw xe(this,4);return gs(this.buf,this.pos+=4)|0}float(){if(this.pos+4>this.len)throw xe(this,4);let e=Yl(this.buf,this.pos);return this.pos+=4,e}double(){if(this.pos+8>this.len)throw xe(this,4);let e=Jl(this.buf,this.pos);return this.pos+=8,e}bytes(){let e=this.uint32(),t=this.pos,n=this.pos+e;if(n>this.len)throw xe(this,e);return this.pos+=e,t===n?new Uint8Array(0):this.buf.subarray(t,n)}string(){let e=this.bytes();return Xl(e,0,e.length)}skip(e){if(typeof e=="number"){if(this.pos+e>this.len)throw xe(this,e);this.pos+=e}else do if(this.pos>=this.len)throw xe(this);while((this.buf[this.pos++]&128)!==0);return this}skipType(e){switch(e){case 0:this.skip();break;case 1:this.skip(8);break;case 2:this.skip(this.uint32());break;case 3:for(;(e=this.uint32()&7)!==4;)this.skipType(e);break;case 5:this.skip(4);break;default:throw Error(`invalid wire type ${e} at offset ${this.pos}`)}return this}readLongVarint(){let e=new ie(0,0),t=0;if(this.len-this.pos>4){for(;t<4;++t)if(e.lo=(e.lo|(this.buf[this.pos]&127)<<t*7)>>>0,this.buf[this.pos++]<128)return e;if(e.lo=(e.lo|(this.buf[this.pos]&127)<<28)>>>0,e.hi=(e.hi|(this.buf[this.pos]&127)>>4)>>>0,this.buf[this.pos++]<128)return e;t=0}else{for(;t<3;++t){if(this.pos>=this.len)throw xe(this);if(e.lo=(e.lo|(this.buf[this.pos]&127)<<t*7)>>>0,this.buf[this.pos++]<128)return e}return e.lo=(e.lo|(this.buf[this.pos++]&127)<<t*7)>>>0,e}if(this.len-this.pos>4){for(;t<5;++t)if(e.hi=(e.hi|(this.buf[this.pos]&127)<<t*7+3)>>>0,this.buf[this.pos++]<128)return e}else for(;t<5;++t){if(this.pos>=this.len)throw xe(this);if(e.hi=(e.hi|(this.buf[this.pos]&127)<<t*7+3)>>>0,this.buf[this.pos++]<128)return e}throw Error("invalid varint encoding")}readFixed64(){if(this.pos+8>this.len)throw xe(this,8);let e=gs(this.buf,this.pos+=4),t=gs(this.buf,this.pos+=4);return new ie(e,t)}int64(){return this.readLongVarint().toBigInt()}int64Number(){return this.readLongVarint().toNumber()}int64String(){return this.readLongVarint().toString()}uint64(){return this.readLongVarint().toBigInt(!0)}uint64Number(){let e=ql(this.buf,this.pos);return this.pos+=Hr(e),e}uint64String(){return this.readLongVarint().toString(!0)}sint64(){return this.readLongVarint().zzDecode().toBigInt()}sint64Number(){return this.readLongVarint().zzDecode().toNumber()}sint64String(){return this.readLongVarint().zzDecode().toString()}fixed64(){return this.readFixed64().toBigInt()}fixed64Number(){return this.readFixed64().toNumber()}fixed64String(){return this.readFixed64().toString()}sfixed64(){return this.readFixed64().toBigInt()}sfixed64Number(){return this.readFixed64().toNumber()}sfixed64String(){return this.readFixed64().toString()}}});function Gr(r,e,t){let n=Vr(r);return e.decode(n,void 0,t)}var tu=p(()=>{"use strict";ys()});var co={};E(co,{base10:()=>qp});var qp,ru=p(()=>{"use strict";Ae();qp=He({prefix:"9",name:"base10",alphabet:"0123456789"})});var lo={};E(lo,{base16:()=>Hp,base16upper:()=>Vp});var Hp,Vp,nu=p(()=>{"use strict";Ae();Hp=L({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),Vp=L({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4})});var uo={};E(uo,{base2:()=>Gp});var Gp,su=p(()=>{"use strict";Ae();Gp=L({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1})});var ho={};E(ho,{base256emoji:()=>Zp});function Jp(r){return r.reduce((e,t)=>(e+=Yp[t],e),"")}function Qp(r){let e=[];for(let t of r){let n=t.codePointAt(0);if(n==null)throw new Error(`Invalid character: ${t}`);let s=jp[n];if(s==null)throw new Error(`Non-base256emoji character: ${t}`);e.push(s)}return new Uint8Array(e)}var iu,Yp,jp,Zp,ou=p(()=>{"use strict";Ae();iu=Array.from("\u{1F680}\u{1FA90}\u2604\u{1F6F0}\u{1F30C}\u{1F311}\u{1F312}\u{1F313}\u{1F314}\u{1F315}\u{1F316}\u{1F317}\u{1F318}\u{1F30D}\u{1F30F}\u{1F30E}\u{1F409}\u2600\u{1F4BB}\u{1F5A5}\u{1F4BE}\u{1F4BF}\u{1F602}\u2764\u{1F60D}\u{1F923}\u{1F60A}\u{1F64F}\u{1F495}\u{1F62D}\u{1F618}\u{1F44D}\u{1F605}\u{1F44F}\u{1F601}\u{1F525}\u{1F970}\u{1F494}\u{1F496}\u{1F499}\u{1F622}\u{1F914}\u{1F606}\u{1F644}\u{1F4AA}\u{1F609}\u263A\u{1F44C}\u{1F917}\u{1F49C}\u{1F614}\u{1F60E}\u{1F607}\u{1F339}\u{1F926}\u{1F389}\u{1F49E}\u270C\u2728\u{1F937}\u{1F631}\u{1F60C}\u{1F338}\u{1F64C}\u{1F60B}\u{1F497}\u{1F49A}\u{1F60F}\u{1F49B}\u{1F642}\u{1F493}\u{1F929}\u{1F604}\u{1F600}\u{1F5A4}\u{1F603}\u{1F4AF}\u{1F648}\u{1F447}\u{1F3B6}\u{1F612}\u{1F92D}\u2763\u{1F61C}\u{1F48B}\u{1F440}\u{1F62A}\u{1F611}\u{1F4A5}\u{1F64B}\u{1F61E}\u{1F629}\u{1F621}\u{1F92A}\u{1F44A}\u{1F973}\u{1F625}\u{1F924}\u{1F449}\u{1F483}\u{1F633}\u270B\u{1F61A}\u{1F61D}\u{1F634}\u{1F31F}\u{1F62C}\u{1F643}\u{1F340}\u{1F337}\u{1F63B}\u{1F613}\u2B50\u2705\u{1F97A}\u{1F308}\u{1F608}\u{1F918}\u{1F4A6}\u2714\u{1F623}\u{1F3C3}\u{1F490}\u2639\u{1F38A}\u{1F498}\u{1F620}\u261D\u{1F615}\u{1F33A}\u{1F382}\u{1F33B}\u{1F610}\u{1F595}\u{1F49D}\u{1F64A}\u{1F639}\u{1F5E3}\u{1F4AB}\u{1F480}\u{1F451}\u{1F3B5}\u{1F91E}\u{1F61B}\u{1F534}\u{1F624}\u{1F33C}\u{1F62B}\u26BD\u{1F919}\u2615\u{1F3C6}\u{1F92B}\u{1F448}\u{1F62E}\u{1F646}\u{1F37B}\u{1F343}\u{1F436}\u{1F481}\u{1F632}\u{1F33F}\u{1F9E1}\u{1F381}\u26A1\u{1F31E}\u{1F388}\u274C\u270A\u{1F44B}\u{1F630}\u{1F928}\u{1F636}\u{1F91D}\u{1F6B6}\u{1F4B0}\u{1F353}\u{1F4A2}\u{1F91F}\u{1F641}\u{1F6A8}\u{1F4A8}\u{1F92C}\u2708\u{1F380}\u{1F37A}\u{1F913}\u{1F619}\u{1F49F}\u{1F331}\u{1F616}\u{1F476}\u{1F974}\u25B6\u27A1\u2753\u{1F48E}\u{1F4B8}\u2B07\u{1F628}\u{1F31A}\u{1F98B}\u{1F637}\u{1F57A}\u26A0\u{1F645}\u{1F61F}\u{1F635}\u{1F44E}\u{1F932}\u{1F920}\u{1F927}\u{1F4CC}\u{1F535}\u{1F485}\u{1F9D0}\u{1F43E}\u{1F352}\u{1F617}\u{1F911}\u{1F30A}\u{1F92F}\u{1F437}\u260E\u{1F4A7}\u{1F62F}\u{1F486}\u{1F446}\u{1F3A4}\u{1F647}\u{1F351}\u2744\u{1F334}\u{1F4A3}\u{1F438}\u{1F48C}\u{1F4CD}\u{1F940}\u{1F922}\u{1F445}\u{1F4A1}\u{1F4A9}\u{1F450}\u{1F4F8}\u{1F47B}\u{1F910}\u{1F92E}\u{1F3BC}\u{1F975}\u{1F6A9}\u{1F34E}\u{1F34A}\u{1F47C}\u{1F48D}\u{1F4E3}\u{1F942}"),Yp=iu.reduce((r,e,t)=>(r[t]=e,r),[]),jp=iu.reduce((r,e,t)=>{let n=e.codePointAt(0);if(n==null)throw new Error(`Invalid character: ${e}`);return r[n]=t,r},[]);Zp=Lt({prefix:"\u{1F680}",name:"base256emoji",encode:Jp,decode:Qp})});var po={};E(po,{base64:()=>fo,base64pad:()=>Xp,base64url:()=>em,base64urlpad:()=>tm});var fo,Xp,em,tm,mo=p(()=>{"use strict";Ae();fo=L({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),Xp=L({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),em=L({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),tm=L({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6})});var go={};E(go,{base8:()=>rm});var rm,au=p(()=>{"use strict";Ae();rm=L({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3})});var yo={};E(yo,{identity:()=>nm});var nm,cu=p(()=>{"use strict";qe();Ae();nm=Lt({prefix:"\0",name:"identity",encode:r=>dl(r),decode:r=>ul(r)})});var cb,lb,lu=p(()=>{"use strict";cb=new TextEncoder,lb=new TextDecoder});var Gt={};E(Gt,{code:()=>Vt,decode:()=>am,encode:()=>om,name:()=>im});function om(r){return Se(r)}function am(r){return Se(r)}var im,Vt,Yr=p(()=>{"use strict";qe();im="raw",Vt=85});var wo={};E(wo,{identity:()=>um});function lm(r,e){if(e?.truncate!=null&&e.truncate!==r.byteLength){if(e.truncate<0||e.truncate>r.byteLength)throw new Error(`Invalid truncate option, must be less than or equal to ${r.byteLength}`);r=r.subarray(0,e.truncate)}return zt(uu,du(r))}var uu,cm,du,um,hu=p(()=>{"use strict";qe();$t();uu=0,cm="identity",du=Se;um={code:uu,name:cm,encode:du,digest:lm}});function mt({name:r,code:e,encode:t,minDigestLength:n,maxDigestLength:s}){return new bo(r,e,t,n,s)}function fu(r,e,t){if(t!=null&&t!==r.byteLength){if(t>r.byteLength)throw new Error(`Invalid truncate option, must be less than or equal to ${r.byteLength}`);r=r.subarray(0,t)}return zt(e,r)}var dm,bo,ws=p(()=>{"use strict";$t();dm=20;bo=class{constructor(e,t,n,s,i){f(this,"name");f(this,"code");f(this,"encode");f(this,"minDigestLength");f(this,"maxDigestLength");this.name=e,this.code=t,this.encode=n,this.minDigestLength=s??dm,this.maxDigestLength=i}digest(e,t){if(t?.truncate!=null){if(t.truncate<this.minDigestLength)throw new Error(`Invalid truncate option, must be greater than or equal to ${this.minDigestLength}`);if(this.maxDigestLength!=null&&t.truncate>this.maxDigestLength)throw new Error(`Invalid truncate option, must be less than or equal to ${this.maxDigestLength}`)}if(e instanceof Uint8Array){let n=this.encode(e);return n instanceof Uint8Array?fu(n,this.code,t?.truncate):n.then(s=>fu(s,this.code,t?.truncate))}else throw Error("Unknown type, must be binary type")}}});var Ao={};E(Ao,{sha256:()=>So,sha512:()=>hm});function mu(r){return async e=>new Uint8Array(await crypto.subtle.digest(r,e))}var So,hm,xo=p(()=>{"use strict";ws();So=mt({name:"sha2-256",code:18,encode:mu("SHA-256")}),hm=mt({name:"sha2-512",code:19,encode:mu("SHA-512")})});var gu=p(()=>{"use strict"});var yu=p(()=>{"use strict"});var wu=p(()=>{"use strict"});var bu=p(()=>{"use strict"});var Su=p(()=>{"use strict";gu();yu();wu();Yi();bu()});var Au=p(()=>{"use strict";qe();ht();$t();ws();fs();Su()});var vo,vb,xu=p(()=>{"use strict";ru();nu();su();ou();Lr();Hi();ds();mo();au();cu();lu();Yr();hu();xo();Au();vo={...yo,...uo,...go,...co,...lo,...$i,...qi,...Vi,...po,...ho},vb={...Ao,...wo}});function Eu(r,e,t,n){return{name:r,prefix:e,encoder:{name:r,prefix:e,encode:t},decoder:{decode:n}}}var vu,Eo,fm,ku,Cu=p(()=>{"use strict";xu();ut();vu=Eu("utf8","u",r=>"u"+new TextDecoder("utf8").decode(r),r=>new TextEncoder().encode(r.substring(1))),Eo=Eu("ascii","a",r=>{let e="a";for(let t=0;t<r.length;t++)e+=String.fromCharCode(r[t]);return e},r=>{r=r.substring(1);let e=se(r.length);for(let t=0;t<r.length;t++)e[t]=r.charCodeAt(t);return e}),fm={utf8:vu,"utf-8":vu,hex:vo.base16,latin1:Eo,ascii:Eo,binary:Eo,...vo},ku=fm});function Yt(r,e="utf8"){let t=ku[e];if(t==null)throw new Error(`Unsupported encoding "${e}"`);return t.decoder.decode(`${t.prefix}${r}`)}var bs=p(()=>{"use strict";Cu()});function ko(r){let e=r??8192,t=e>>>1,n,s=e;return function(o){if(o<1||o>t)return se(o);s+o>e&&(n=se(e),s=0);let a=n.subarray(s,s+=o);return(s&7)!==0&&(s=(s|7)+1),a}}var Pu=p(()=>{"use strict";ut()});function Co(){}function mm(r){return globalThis.Buffer!=null?se(r):pm(r)}function Po(r,e,t){e[t]=r&255}function gm(r,e,t){for(;r>127;)e[t++]=r&127|128,r>>>=7;e[t]=r}function Ss(r,e,t){for(;r.hi!==0;)e[t++]=r.lo&127|128,r.lo=(r.lo>>>7|r.hi<<25)>>>0,r.hi>>>=7;for(;r.lo>127;)e[t++]=r.lo&127|128,r.lo=r.lo>>>7;e[t++]=r.lo}function jr(r,e,t){e[t]=r&255,e[t+1]=r>>>8&255,e[t+2]=r>>>16&255,e[t+3]=r>>>24}function ym(r,e,t){e.set(r,t)}function wm(r,e,t){e.set(r,t)}function bm(r,e,t){r.length<40?io(r,e,t):e.utf8Write!=null?e.utf8Write(r,t):e.set(Yt(r),t)}function Do(){return new Jr}var gt,Io,pm,Jr,Bo,To=p(()=>{"use strict";eo();ut();bs();no();so();Pu();oo();gt=class{constructor(e,t,n){f(this,"fn");f(this,"len");f(this,"next");f(this,"val");this.fn=e,this.len=t,this.next=void 0,this.val=n}};Io=class{constructor(e){f(this,"head");f(this,"tail");f(this,"len");f(this,"next");this.head=e.head,this.tail=e.tail,this.len=e.len,this.next=e.states}},pm=ko();Jr=class{constructor(){f(this,"len");f(this,"head");f(this,"tail");f(this,"states");this.len=0,this.head=new gt(Co,0,0),this.tail=this.head,this.states=null}_push(e,t,n){return this.tail=this.tail.next=new gt(e,t,n),this.len+=t,this}uint32(e){return this.len+=(this.tail=this.tail.next=new Bo((e=e>>>0)<128?1:e<16384?2:e<2097152?3:e<268435456?4:5,e)).len,this}int32(e){return e<0?this._push(Ss,10,ie.fromNumber(e)):this.uint32(e)}sint32(e){return this.uint32((e<<1^e>>31)>>>0)}uint64(e){let t=ie.fromBigInt(e);return this._push(Ss,t.length(),t)}uint64Number(e){return this._push($l,Hr(e),e)}uint64String(e){return this.uint64(BigInt(e))}int64(e){return this.uint64(e)}int64Number(e){return this.uint64Number(e)}int64String(e){return this.uint64String(e)}sint64(e){let t=ie.fromBigInt(e).zzEncode();return this._push(Ss,t.length(),t)}sint64Number(e){let t=ie.fromNumber(e).zzEncode();return this._push(Ss,t.length(),t)}sint64String(e){return this.sint64(BigInt(e))}bool(e){return this._push(Po,1,e?1:0)}fixed32(e){return this._push(jr,4,e>>>0)}sfixed32(e){return this.fixed32(e)}fixed64(e){let t=ie.fromBigInt(e);return this._push(jr,4,t.lo)._push(jr,4,t.hi)}fixed64Number(e){let t=ie.fromNumber(e);return this._push(jr,4,t.lo)._push(jr,4,t.hi)}fixed64String(e){return this.fixed64(BigInt(e))}sfixed64(e){return this.fixed64(e)}sfixed64Number(e){return this.fixed64Number(e)}sfixed64String(e){return this.fixed64String(e)}float(e){return this._push(Gl,4,e)}double(e){return this._push(jl,8,e)}bytes(e){let t=e.length>>>0;return t===0?this._push(Po,1,0):this.uint32(t)._push(ym,t,e)}string(e){let t=Zl(e);return t!==0?this.uint32(t)._push(io,t,e):this._push(Po,1,0)}fork(){return this.states=new Io(this),this.head=this.tail=new gt(Co,0,0),this.len=0,this}reset(){return this.states!=null?(this.head=this.states.head,this.tail=this.states.tail,this.len=this.states.len,this.states=this.states.next):(this.head=this.tail=new gt(Co,0,0),this.len=0),this}ldelim(){let e=this.head,t=this.tail,n=this.len;return this.reset().uint32(n),n!==0&&(this.tail.next=e.next,this.tail=t,this.len+=n),this}finish(){let e=this.head.next,t=mm(this.len),n=0;for(;e!=null;)e.fn(e.val,t,n),n+=e.len,e=e.next;return t}};Bo=class extends gt{constructor(t,n){super(gm,t,n);f(this,"next");this.next=void 0}};globalThis.Buffer!=null&&(Jr.prototype.bytes=function(r){let e=r.length>>>0;return this.uint32(e),e>0&&this._push(wm,e,r),this},Jr.prototype.string=function(r){let e=globalThis.Buffer.byteLength(r);return this.uint32(e),e>0&&this._push(bm,e,r),this})});function Qr(r,e){let t=Do();return e.encode(r,t,{lengthDelimited:!1}),t.finish()}var Iu=p(()=>{"use strict";To()});function*Zr(r,e,t){let n=Vr(r);yield*e.stream(n,void 0,"$",t)}var Bu=p(()=>{"use strict";ys()});function xs(r,e,t,n,s){return{name:r,type:e,encode:t,decode:n,stream:s}}var As,Ro=p(()=>{"use strict";As={VARINT:0,BIT64:1,LENGTH_DELIMITED:2,START_GROUP:3,END_GROUP:4,BIT32:5}});function Fo(r){function e(i){if(r[i.toString()]==null)throw new Error("Invalid enum value");return r[i]}let t=function(o,a){let c=e(o);a.int32(c)},n=function(o){let a=o.int32();return e(a)},s=function*(o){let a=o.int32();yield e(a)};return xs("enum",As.VARINT,t,n,s)}var Du=p(()=>{"use strict";Ro()});function Xr(r,e,t){return xs("message",As.LENGTH_DELIMITED,r,e,t)}var Tu=p(()=>{"use strict";Ro()});var en,Ru=p(()=>{"use strict";tu();Iu();Bu();Du();Tu();ys();To();en=class extends Error{constructor(){super(...arguments);f(this,"code","ERR_MAX_LENGTH");f(this,"name","MaxLengthError")}}});var ve,tn,Fu,Mu=p(()=>{"use strict";Ru();(function(r){let e;(function(a){a.Raw="Raw",a.Directory="Directory",a.File="File",a.Metadata="Metadata",a.Symlink="Symlink",a.HAMTShard="HAMTShard"})(e=r.DataType||(r.DataType={}));let t;(function(a){a[a.Raw=0]="Raw",a[a.Directory=1]="Directory",a[a.File=2]="File",a[a.Metadata=3]="Metadata",a[a.Symlink=4]="Symlink",a[a.HAMTShard=5]="HAMTShard"})(t||(t={})),(function(a){a.codec=()=>Fo(t)})(e=r.DataType||(r.DataType={}));let n;r.codec=()=>(n==null&&(n=Xr((a,c,l={})=>{if(l.lengthDelimited!==!1&&c.fork(),a.Type!=null&&(c.uint32(8),r.DataType.codec().encode(a.Type,c)),a.Data!=null&&(c.uint32(18),c.bytes(a.Data)),a.filesize!=null&&(c.uint32(24),c.uint64(a.filesize)),a.blocksizes!=null&&a.blocksizes.length>0)for(let u of a.blocksizes)c.uint32(32),c.uint64(u);a.hashType!=null&&(c.uint32(40),c.uint64(a.hashType)),a.fanout!=null&&(c.uint32(48),c.uint64(a.fanout)),a.mode!=null&&(c.uint32(56),c.uint32(a.mode)),a.mtime!=null&&(c.uint32(66),tn.codec().encode(a.mtime,c)),l.lengthDelimited!==!1&&c.ldelim()},(a,c,l={})=>{let u={blocksizes:[]},d=c==null?a.len:a.pos+c;for(;a.pos<d;){let h=a.uint32();switch(h>>>3){case 1:{u.Type=r.DataType.codec().decode(a);break}case 2:{u.Data=a.bytes();break}case 3:{u.filesize=a.uint64();break}case 4:{if(l.limits?.blocksizes!=null&&u.blocksizes.length===l.limits.blocksizes)throw new en('Decode error - repeated field "blocksizes" had too many elements');u.blocksizes.push(a.uint64());break}case 5:{u.hashType=a.uint64();break}case 6:{u.fanout=a.uint64();break}case 7:{u.mode=a.uint32();break}case 8:{u.mtime=tn.codec().decode(a,a.uint32(),{limits:l.limits?.mtime});break}default:{a.skipType(h&7);break}}}return u},function*(a,c,l,u={}){let d={blocksizes:0},h=c==null?a.len:a.pos+c;for(;a.pos<h;){let m=a.uint32();switch(m>>>3){case 1:{yield{field:`${l}.Type`,value:r.DataType.codec().decode(a)};break}case 2:{yield{field:`${l}.Data`,value:a.bytes()};break}case 3:{yield{field:`${l}.filesize`,value:a.uint64()};break}case 4:{if(u.limits?.blocksizes!=null&&d.blocksizes===u.limits.blocksizes)throw new en('Streaming decode error - repeated field "blocksizes" had too many elements');yield{field:`${l}.blocksizes[]`,index:d.blocksizes,value:a.uint64()},d.blocksizes++;break}case 5:{yield{field:`${l}.hashType`,value:a.uint64()};break}case 6:{yield{field:`${l}.fanout`,value:a.uint64()};break}case 7:{yield{field:`${l}.mode`,value:a.uint32()};break}case 8:{yield*tn.codec().stream(a,a.uint32(),`${l}.mtime`,{limits:u.limits?.mtime});break}default:{a.skipType(m&7);break}}}})),n);function s(a){return Qr(a,r.codec())}r.encode=s;function i(a,c){return Gr(a,r.codec(),c)}r.decode=i;function o(a,c){return Zr(a,r.codec(),c)}r.stream=o})(ve||(ve={}));(function(r){let e;r.codec=()=>(e==null&&(e=Xr((i,o,a={})=>{a.lengthDelimited!==!1&&o.fork(),i.Seconds!=null&&(o.uint32(8),o.int64(i.Seconds)),i.FractionalNanoseconds!=null&&(o.uint32(21),o.fixed32(i.FractionalNanoseconds)),a.lengthDelimited!==!1&&o.ldelim()},(i,o,a={})=>{let c={},l=o==null?i.len:i.pos+o;for(;i.pos<l;){let u=i.uint32();switch(u>>>3){case 1:{c.Seconds=i.int64();break}case 2:{c.FractionalNanoseconds=i.fixed32();break}default:{i.skipType(u&7);break}}}return c},function*(i,o,a,c={}){let l=o==null?i.len:i.pos+o;for(;i.pos<l;){let u=i.uint32();switch(u>>>3){case 1:{yield{field:`${a}.Seconds`,value:i.int64()};break}case 2:{yield{field:`${a}.FractionalNanoseconds`,value:i.fixed32()};break}default:{i.skipType(u&7);break}}}})),e);function t(i){return Qr(i,r.codec())}r.encode=t;function n(i,o){return Gr(i,r.codec(),o)}r.decode=n;function s(i,o){return Zr(i,r.codec(),o)}r.stream=s})(tn||(tn={}));(function(r){let e;r.codec=()=>(e==null&&(e=Xr((i,o,a={})=>{a.lengthDelimited!==!1&&o.fork(),i.MimeType!=null&&(o.uint32(10),o.string(i.MimeType)),a.lengthDelimited!==!1&&o.ldelim()},(i,o,a={})=>{let c={},l=o==null?i.len:i.pos+o;for(;i.pos<l;){let u=i.uint32();u>>>3===1?c.MimeType=i.string():i.skipType(u&7)}return c},function*(i,o,a,c={}){let l=o==null?i.len:i.pos+o;for(;i.pos<l;){let u=i.uint32();u>>>3===1?yield{field:`${a}.MimeType`,value:i.string()}:i.skipType(u&7)}})),e);function t(i){return Qr(i,r.codec())}r.encode=t;function n(i,o){return Gr(i,r.codec(),o)}r.decode=n;function s(i,o){return Zr(i,r.codec(),o)}r.stream=s})(Fu||(Fu={}))});var Uu,Sm,Nu,Lu,Y,jt=p(()=>{"use strict";Xi();Mu();Xi();Uu={Raw:"raw",Directory:"directory",File:"file",Metadata:"metadata",Symlink:"symlink",HAMTShard:"hamt-sharded-directory"},Sm=["directory","hamt-sharded-directory"],Nu=parseInt("0644",8),Lu=parseInt("0755",8),Y=class r{constructor(e={type:"file"}){f(this,"type");f(this,"data");f(this,"blockSizes");f(this,"hashType");f(this,"fanout");f(this,"mtime");f(this,"_mode");f(this,"_originalMode");let{type:t,data:n,blockSizes:s,hashType:i,fanout:o,mtime:a,mode:c}=e;if(t!=null&&!Object.values(Uu).includes(t))throw new qr("Type: "+t+" is not valid");this.type=t??"file",this.data=n,this.hashType=i,this.fanout=o,this.blockSizes=s??[],this._originalMode=0,this.mode=c,this.mtime=a}static unmarshal(e){let t=ve.decode(e),n=new r({type:Uu[t.Type!=null?t.Type.toString():"File"],data:t.Data,blockSizes:t.blocksizes,mode:t.mode,mtime:t.mtime!=null?{secs:t.mtime.Seconds??0n,nsecs:t.mtime.FractionalNanoseconds}:void 0,fanout:t.fanout});return n._originalMode=t.mode??0,n}set mode(e){e==null?this._mode=this.isDirectory()?Lu:Nu:this._mode=e&4095}get mode(){return this._mode}isDirectory(){return Sm.includes(this.type)}addBlockSize(e){this.blockSizes.push(e)}removeBlockSize(e){this.blockSizes.splice(e,1)}fileSize(){if(this.isDirectory())return 0n;let e=0n;return this.blockSizes.forEach(t=>{e+=t}),this.data!=null&&(e+=BigInt(this.data.length)),e}marshal(){let e;switch(this.type){case"raw":e=ve.DataType.Raw;break;case"directory":e=ve.DataType.Directory;break;case"file":e=ve.DataType.File;break;case"metadata":e=ve.DataType.Metadata;break;case"symlink":e=ve.DataType.Symlink;break;case"hamt-sharded-directory":e=ve.DataType.HAMTShard;break;default:throw new qr(`Type: ${e} is not valid`)}let t=this.data;(this.data==null||this.data.length===0)&&(t=void 0);let n;this.mode!=null&&(n=this._originalMode&4294963200|(this.mode??0),n===Nu&&!this.isDirectory()&&(n=void 0),n===Lu&&this.isDirectory()&&(n=void 0));let s;return this.mtime!=null&&(s={Seconds:this.mtime.secs,FractionalNanoseconds:this.mtime.nsecs}),ve.encode({Type:e,Data:t,filesize:this.isDirectory()?void 0:this.fileSize(),blocksizes:this.blockSizes,hashType:this.hashType,fanout:this.fanout,mode:n,mtime:s})}}});var Me,vs=p(()=>{"use strict";Me=class extends Event{constructor(t,n){super(t);f(this,"type");f(this,"detail");this.type=t,this.detail=n}}});var fe,Jt=p(()=>{"use strict";ft();ht();xo();fe=async(r,e,t)=>{t.codec==null&&(t.codec=$r);let n=await So.digest(r),s=V.create(t.cidVersion??1,t.codec.code,n);return await e.put(s,r,t),s}});function Ku(r){return async function*(t,n){let s=0n;for await(let i of t.content)yield async()=>{let o,a={codec:$r,cidVersion:r.cidVersion,onProgress:r.onProgress};r.rawLeaves?(a.codec=Gt,a.cidVersion=1):(o=new Y({type:r.leafType,data:i}),i=ee({Data:o.marshal(),Links:[]}));let c=await fe(i,n,a);return s+=BigInt(i.byteLength),r.onProgress?.(new Me("unixfs:importer:progress:file:write",{bytesWritten:s,cid:c,path:t.path})),{cid:c,unixfs:o,size:BigInt(i.length),block:i}}}}var Ou=p(()=>{"use strict";ft();jt();Yr();vs();Jt()});var Qt,rr,Zt,Mo,Xt,Uo,er,No,tr,Ee,Ye,rn=p(()=>{"use strict";Qt=class Qt extends Error{constructor(t="Invalid parameters"){super(t);f(this,"name",Qt.name);f(this,"code",Qt.code)}};f(Qt,"name","InvalidParametersError"),f(Qt,"code","ERR_INVALID_PARAMS");rr=Qt,Zt=class Zt extends Error{constructor(t="Invalid avg chunk size"){super(t);f(this,"name",Zt.name);f(this,"code",Zt.code)}};f(Zt,"name","InvalidAvgChunkSizeError"),f(Zt,"code","ERR_INVALID_AVG_CHUNK_SIZE");Mo=Zt,Xt=class Xt extends Error{constructor(t="Invalid chunk size"){super(t);f(this,"name",Xt.name);f(this,"code",Xt.code)}};f(Xt,"name","InvalidChunkSizeError"),f(Xt,"code","ERR_INVALID_CHUNK_SIZE");Uo=Xt,er=class er extends Error{constructor(t="Invalid min chunk size"){super(t);f(this,"name",er.name);f(this,"code",er.code)}};f(er,"name","InvalidMinChunkSizeError"),f(er,"code","ERR_INVALID_MIN_CHUNK_SIZE");No=er,tr=class tr extends Error{constructor(t="Invalid content"){super(t);f(this,"name",tr.name);f(this,"code",tr.code)}};f(tr,"name","InvalidContentError"),f(tr,"code","ERR_INVALID_CONTENT");Ee=tr,Ye=class extends Error{constructor(){super(...arguments);f(this,"name",Ee.name);f(this,"code",Ee.code)}};f(Ye,"name","InvalidShardingStrategyError"),f(Ye,"code","ERR_SHARDING_STRATEGY")});var zu,Wu=p(()=>{"use strict";ft();jt();Jt();zu=async(r,e,t)=>{let n=new Y({type:"directory",mtime:r.mtime,mode:r.mode}),s=ee(X({Data:n.marshal()})),i=await fe(s,e,t),o=r.path;return{cid:i,path:o,unixfs:n,size:BigInt(s.length),originalPath:r.originalPath,block:s}}});async function*Am(r,e,t){let n=-1,s;for await(let i of Mr(t.bufferImporter(r,e),t.blockWriteConcurrency)){if(n++,n===0){s={...i,single:!0};continue}else n===1&&s!=null&&(yield{...s,block:void 0,single:void 0},s=void 0);yield{...i,block:void 0}}s!=null&&(yield s)}function $u(r){return r.single===!0}var xm,qu,Hu=p(()=>{"use strict";ft();jt();Ni();Yr();vs();Jt();xm=(r,e,t)=>async function(s){if(s.length===1&&$u(s[0])&&t.reduceSingleLeafToSelf){let u=s[0],d=u.block;return $u(u)&&(r.mtime!==void 0||r.mode!==void 0)&&(u.unixfs=new Y({type:"file",mtime:r.mtime,mode:r.mode,data:u.block}),d={Data:u.unixfs.marshal(),Links:[]},u.block=ee(X(d)),u.cid=await fe(u.block,e,{...t,cidVersion:t.cidVersion}),u.size=BigInt(u.block.length)),t.onProgress?.(new Me("unixfs:importer:progress:file:layout",{cid:u.cid,path:r.originalPath})),{cid:u.cid,path:r.path,unixfs:u.unixfs,size:u.size,originalPath:r.originalPath}}let i=new Y({type:"file",mtime:r.mtime,mode:r.mode}),o=s.filter(u=>u.cid.code===Vt&&u.size>0||u.unixfs!=null&&u.unixfs.data==null&&u.unixfs.fileSize()>0n?!0:!!u.unixfs?.data?.length).map(u=>u.cid.code===Vt?(i.addBlockSize(u.size),{Name:"",Tsize:Number(u.size),Hash:u.cid}):(u.unixfs?.data==null?i.addBlockSize(u.unixfs?.fileSize()??0n):i.addBlockSize(BigInt(u.unixfs.data.length)),{Name:"",Tsize:Number(u.size),Hash:u.cid})),a={Data:i.marshal(),Links:o},c=ee(X(a)),l=await fe(c,e,t);return t.onProgress?.(new Me("unixfs:importer:progress:file:layout",{cid:l,path:r.originalPath})),{cid:l,path:r.path,unixfs:i,size:BigInt(c.length+a.Links.reduce((u,d)=>u+(d.Tsize??0),0)),originalPath:r.originalPath,block:c}},qu=async(r,e,t)=>t.layout(Am(r,e,t),xm(r,e,t))});function vm(r){return Symbol.iterator in r}function Em(r){return Symbol.asyncIterator in r}function km(r){try{if(r instanceof Uint8Array)return(async function*(){yield r})();if(vm(r))return(async function*(){yield*r})();if(Em(r))return r}catch{throw new Ee("Content was invalid")}throw new Ee("Content was invalid")}function Vu(r){return async function*(t,n){for await(let s of t){let i;if(s.path!=null&&(i=s.path,s.path=s.path.split("/").filter(o=>o!=null&&o!==".").join("/")),Cm(s)){let o={path:s.path,mtime:s.mtime,mode:s.mode,content:(async function*(){let c=0n;for await(let l of r.chunker(r.chunkValidator(km(s.content)))){let u=BigInt(l.byteLength);c+=u,r.onProgress?.(new Me("unixfs:importer:progress:file:read",{bytesRead:c,chunkSize:u,path:s.path})),yield l}})(),originalPath:i},a=r.fileBuilder??qu;yield async()=>a(o,n,r)}else if(s.path!=null){let o={path:s.path,mtime:s.mtime,mode:s.mode,originalPath:i},a=r.dirBuilder??zu;yield async()=>a(o,n,r)}else throw new Error("Import candidate must have content or path or both")}}}function Cm(r){return r.content!=null}var Gu=p(()=>{"use strict";vs();rn();Wu();Hu()});var Yu,ju=p(()=>{"use strict";bs();rn();Yu=()=>async function*(e){for await(let t of e){if(t.length===void 0)throw new Ee("Content was invalid");if(typeof t=="string"||t instanceof String)yield Yt(t.toString());else if(Array.isArray(t))yield Uint8Array.from(t);else if(t instanceof Uint8Array)yield t;else throw new Ee("Content was invalid")}}});function Lo(r){let e=r?.maxChildrenPerNode??Pm;return async function t(n,s){let i=[];for await(let o of os(n,e))i.push(await s(o));return i.length>1?t(i,s):i[0]}}var Pm,Ju=p(()=>{"use strict";Ui();Pm=174});function Im(r){return r[Symbol.asyncIterator]!=null}function Bm(r){if(Im(r))return(async()=>{let t=[];for await(let n of r)t.push(n);return t})();let e=[];for(let t of r)e.push(t);return e}var Qu,Zu=p(()=>{"use strict";Qu=Bm});var Xu=p(()=>{"use strict";Ju()});var Pe,Es=p(()=>{"use strict";ht();Pe=class{constructor(e,t){f(this,"options");f(this,"root");f(this,"dir");f(this,"path");f(this,"dirty");f(this,"flat");f(this,"parent");f(this,"parentKey");f(this,"unixfs");f(this,"mode");f(this,"mtime");f(this,"cid");f(this,"size");f(this,"nodeSize");this.options=t??{},this.root=e.root,this.dir=e.dir,this.path=e.path,this.dirty=e.dirty,this.flat=e.flat,this.parent=e.parent,this.parentKey=e.parentKey,this.unixfs=e.unixfs,this.mode=e.mode,this.mtime=e.mtime}}});function Tm(r){let e=0;return r>=4294967296&&(r=Math.floor(r/4294967296),e=32),r>=65536&&(r>>>=16,e+=16),r>=256&&(r>>>=8,e+=8),e+Dm[r]}function je(r){return r%2===0&&r++,Math.floor((Tm(r)+6)/7)}function ks(r){let e=0;for(let t=0;t<r.length;t++){let n=r.charCodeAt(t);n<128?e++:n<2048?e+=2:n>=55296&&n<=56319&&t+1<r.length?(t++,e+=4):e+=3}return e}function ed(r,e,t){let n=1+je(e)+e;return n+=1+je(r)+r,n+=1+je(t),1+je(n)+n}function td(r,e){let t=2;if(r!==void 0&&r!==Rm&&(t+=1+je(r)),e!=null){let n=0,s=Number(e.secs);s<0?n+=11:n+=1+je(s),e.nsecs!=null&&(n+=5),t+=1+je(n)+n}return 1+je(t)+t}var Dm,Rm,rd=p(()=>{"use strict";Dm=[0,1,2,2,3,3,3,3,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8];Rm=493});function _o(r,e){return e?.cid!=null&&e?.size!=null?r+e.cid.byteLength:0}function Ko(r,e){return e?.cid!=null&&e?.size!=null?ed(r,e.cid.byteLength,Number(e.size)):0}var yt,Oo=p(()=>{"use strict";ft();jt();Es();zo();rd();Jt();yt=class extends Pe{constructor(t,n){super(t,n);f(this,"_children");this._children=new Map}async put(t,n){if(this.nodeSize!==void 0){let s=this._children.get(t),i=ks(t),o=this.options?.shardSplitStrategy;if(o==="links-bytes")this.nodeSize-=_o(i,s),this.nodeSize+=_o(i,n);else if(o==="block-bytes")this.nodeSize-=Ko(i,s),this.nodeSize+=Ko(i,n);else throw new Ye(`Invalid shardSplitStrategy: ${o}`);this.nodeSize<0&&(this.nodeSize=void 0)}this.cid=void 0,this.size=void 0,this._children.set(t,n)}async get(t){return Promise.resolve(this._children.get(t))}childCount(){return this._children.size}directChildrenCount(){return this.childCount()}onlyChild(){return this._children.values().next().value}*eachChildSeries(){for(let[t,n]of this._children.entries())yield{key:t,child:n}}marshal(){let t=new Y({type:"directory",mtime:this.mtime,mode:this.mode}),n=[];for(let[i,o]of this._children.entries())if(!(o.size==null||o.cid==null)){if(o.cid==null)throw new Error("Directory contents must be flushed before marshaling");n.push({Hash:o.cid,Name:i,Tsize:o.size==null?void 0:Number(o.size)})}let s={Data:t.marshal(),Links:n};return ee(X(s))}async estimateNodeSize(){if(this.nodeSize!==void 0)return this.nodeSize;let t=this.options?.shardSplitStrategy;if(t==="links-bytes"){this.nodeSize=0;for(let[n,s]of this._children.entries())this.nodeSize+=_o(ks(n),s)}else if(t==="block-bytes"){this.nodeSize=td(this.mode,this.mtime);for(let[n,s]of this._children.entries())this.nodeSize+=Ko(ks(n),s)}else throw new Ye(`Invalid shardSplitStrategy: ${t}`);return this.nodeSize}async*flush(t){let n=[];for(let[l,u]of this._children.entries()){let d=u;if(u instanceof Pe)for await(let h of u.flush(t))d=h,yield h;d.size!=null&&d.cid!=null&&n.push({Name:l,Tsize:Number(d.size),Hash:d.cid})}let s=new Y({type:"directory",mtime:this.mtime,mode:this.mode}),i={Data:s.marshal(),Links:n},o=ee(X(i)),a=await fe(o,t,this.options),c=o.length+i.Links.reduce((l,u)=>l+(u.Tsize??0),0);this.cid=a,this.size=c,yield{cid:a,unixfs:s,path:this.path,size:BigInt(c)}}}});function Je(r,e){let t=r.lo+e.lo>>>0,n=r.hi+e.hi+(t<r.lo?1:0)>>>0;return{lo:t,hi:n}}function Fm(r,e){return r+e>>>0}function pe(r,e){let t=r.lo&65535,n=r.lo>>>16,s=e.lo&65535,i=e.lo>>>16,o=t*s,a=t*i,c=n*s,l=n*i,u=(o>>>16)+(a&65535)+(c&65535)>>>0,d=(u<<16|o&65535)>>>0,h=l+(a>>>16)+(c>>>16)+(u>>>16),m=Math.imul(r.lo,e.hi),g=Math.imul(r.hi,e.lo),w=h+m+g>>>0;return{lo:d,hi:w}}function wt(r,e){return Math.imul(r,e)>>>0}function nr(r,e){if(e===0)return r;if(e===32)return{lo:r.hi,hi:r.lo};if(e<32){let s=(r.lo<<e|r.hi>>>32-e)>>>0,i=(r.hi<<e|r.lo>>>32-e)>>>0;return{lo:s,hi:i}}e-=32;let t=(r.hi<<e|r.lo>>>32-e)>>>0,n=(r.lo<<e|r.hi>>>32-e)>>>0;return{lo:t,hi:n}}function U(r,e){return{lo:(r.lo^e.lo)>>>0,hi:(r.hi^e.hi)>>>0}}function Wo(r,e){if(e===0)return r;if(e<32){let t=(r.lo>>>e|r.hi<<32-e)>>>0,n=r.hi>>>e;return{lo:t,hi:n}}return{lo:r.hi>>>e-32,hi:0}}function D(r,e){return{lo:r>>>0,hi:e>>>0}}function $o(r,e){return(r<<e|r>>>32-e)>>>0}function nd(r,e){let t=e*8,n=r[t]|r[t+1]<<8|r[t+2]<<16|r[t+3]<<24,s=r[t+4]|r[t+5]<<8|r[t+6]<<16|r[t+7]<<24;return{lo:n>>>0,hi:s>>>0}}function Mm(r,e){let t=e*4;return(r[t]|r[t+1]<<8|r[t+2]<<16|r[t+3]<<24)>>>0}function sd(r){return r=U(r,Wo(r,33)),r=pe(r,D(3981806797,4283543511)),r=U(r,Wo(r,33)),r=pe(r,D(444984403,3301882366)),r=U(r,Wo(r,33)),r}function Um(r){return r^=r>>>16,r=wt(r,2246822507),r^=r>>>13,r=wt(r,3266489909),r^=r>>>16,r}function qo(r,e=0){let t=D(e,0),n=D(e,0),s=r.length,i=Math.floor(s/16),o=D(289559509,2277735313),a=D(658871167,1291169091);for(let h=0;h<i;h++){let m=nd(r,h*2),g=nd(r,h*2+1);m=pe(m,o),m=nr(m,31),m=pe(m,a),t=U(t,m),t=nr(t,27),t=Je(t,n),t=Je(pe(t,D(5,0)),D(1390208809,0)),g=pe(g,a),g=nr(g,33),g=pe(g,o),n=U(n,g),n=nr(n,31),n=Je(n,t),n=Je(pe(n,D(5,0)),D(944331445,0))}let c=D(0,0),l=D(0,0),u=r.slice(i*16);switch(u.length){case 15:l=U(l,D(0,u[14]<<16));case 14:l=U(l,D(0,u[13]<<8));case 13:l=U(l,D(0,u[12]));case 12:l=U(l,D(u[11]<<24,0));case 11:l=U(l,D(u[10]<<16,0));case 10:l=U(l,D(u[9]<<8,0));case 9:l=U(l,D(u[8],0)),l=pe(l,a),l=nr(l,33),l=pe(l,o),n=U(n,l);case 8:c=U(c,D(0,u[7]<<24));case 7:c=U(c,D(0,u[6]<<16));case 6:c=U(c,D(0,u[5]<<8));case 5:c=U(c,D(0,u[4]));case 4:c=U(c,D(u[3]<<24,0));case 3:c=U(c,D(u[2]<<16,0));case 2:c=U(c,D(u[1]<<8,0));case 1:c=U(c,D(u[0],0)),c=pe(c,o),c=nr(c,31),c=pe(c,a),t=U(t,c)}let d=D(s,0);return t=U(t,d),n=U(n,d),t=Je(t,n),n=Je(n,t),t=sd(t),n=sd(n),t=Je(t,n),n=Je(n,t),new Uint8Array([t.hi>>>24&255,t.hi>>>16&255,t.hi>>>8&255,t.hi&255,t.lo>>>24&255,t.lo>>>16&255,t.lo>>>8&255,t.lo&255,n.hi>>>24&255,n.hi>>>16&255,n.hi>>>8&255,n.hi&255,n.lo>>>24&255,n.lo>>>16&255,n.lo>>>8&255,n.lo&255])}function id(r,e=0){let t=e>>>0,n=r.length,s=Math.floor(n/4),i=3432918353,o=461845907;for(let l=0;l<s;l++){let u=Mm(r,l);u=wt(u,i),u=$o(u,15),u=wt(u,o),t^=u,t=$o(t,13),t=Fm(wt(t,5),3864292196)}let a=r.slice(s*4),c=0;switch(a.length){case 3:c^=a[2]<<16;case 2:c^=a[1]<<8;case 1:c^=a[0],c=wt(c,i),c=$o(c,15),c=wt(c,o),t^=c}return t^=n,t=Um(t),t}var od=p(()=>{"use strict"});function Lm(r){let e=new Array(4);for(let t=0;t<4;t++)e[t]=r&255,r=r>>8;return new Uint8Array(e)}var iS,ad,oS,cd=p(()=>{"use strict";ws();od();iS=mt({name:"murmur3-32",code:35,encode:r=>Lm(id(r))}),ad=mt({name:"murmur3-128",code:34,encode:r=>qo(r)}),oS=mt({name:"murmur3-x64-64",code:34,encode:r=>qo(r).subarray(0,8)})});var sr,Qe,ld=p(()=>{"use strict";sr=class sr extends Error{constructor(t="Not Found"){super(t);f(this,"name",sr.name);f(this,"code",sr.code)}};f(sr,"name","NotFoundError"),f(sr,"code","ERR_NOT_FOUND");Qe=sr});var Cs=p(()=>{"use strict";ld()});var Ie,nn=p(()=>{"use strict";Ie=class{has(e,t){return Promise.reject(new Error(".has is not implemented"))}put(e,t,n){return Promise.reject(new Error(".put is not implemented"))}async*putMany(e,t){for await(let{cid:n,bytes:s}of e)await this.put(n,s,t),yield n}get(e,t){throw new Error(".get is not implemented")}async*getMany(e,t){for await(let n of e)yield{cid:n,bytes:this.get(n,t)}}delete(e,t){return Promise.reject(new Error(".delete is not implemented"))}async*deleteMany(e,t){for await(let n of e)await this.delete(n,t),yield n}async*getAll(e){throw new Error(".getAll is not implemented")}}});var ir,Ho=p(()=>{"use strict";Cs();nn();ir=class extends Ie{put(e,t,n){return n?.signal?.throwIfAborted(),e}get(e,t){throw t?.signal?.throwIfAborted(),new Qe}has(e,t){return t?.signal?.throwIfAborted(),!1}async delete(e,t){t?.signal?.throwIfAborted()}async*getAll(e){e?.signal?.throwIfAborted()}}});var hd=P((yS,dd)=>{"use strict";dd.exports=class{constructor(){this._bitArrays=[],this._data=[],this._length=0,this._changedLength=!1,this._changedData=!1}set(e,t){let n=this._internalPositionFor(e,!1);if(t===void 0)n!==-1&&(this._unsetInternalPos(n),this._unsetBit(e),this._changedLength=!0,this._changedData=!0);else{let s=!1;n===-1?(n=this._data.length,this._setBit(e),this._changedData=!0):s=!0,this._setInternalPos(n,e,t,s),this._changedLength=!0}}unset(e){this.set(e,void 0)}get(e){this._sortData();let t=this._internalPositionFor(e,!0);if(t!==-1)return this._data[t][1]}push(e){return this.set(this.length,e),this.length}get length(){if(this._sortData(),this._changedLength){let e=this._data[this._data.length-1];this._length=e?e[0]+1:0,this._changedLength=!1}return this._length}forEach(e){let t=0;for(;t<this.length;)e(this.get(t),t,this),t++}map(e){let t=0,n=new Array(this.length);for(;t<this.length;)n[t]=e(this.get(t),t,this),t++;return n}reduce(e,t){let n=0,s=t;for(;n<this.length;){let i=this.get(n);s=e(s,i,n),n++}return s}find(e){let t=0,n,s;for(;t<this.length&&!n;)s=this.get(t),n=e(s),t++;return n?s:void 0}_internalPositionFor(e,t){let n=this._bytePosFor(e,t);if(n>=this._bitArrays.length)return-1;let s=this._bitArrays[n],i=e-n*7;if(!((s&1<<i)>0))return-1;let a=this._bitArrays.slice(0,n).reduce(_m,0),c=~(4294967295<<i+1),l=ud(s&c);return a+l-1}_bytePosFor(e,t){let n=Math.floor(e/7),s=n+1;for(;!t&&this._bitArrays.length<s;)this._bitArrays.push(0);return n}_setBit(e){let t=this._bytePosFor(e,!1);this._bitArrays[t]|=1<<e-t*7}_unsetBit(e){let t=this._bytePosFor(e,!1);this._bitArrays[t]&=~(1<<e-t*7)}_setInternalPos(e,t,n,s){let i=this._data,o=[t,n];if(s)this._sortData(),i[e]=o;else{if(i.length)if(i[i.length-1][0]>=t)i.push(o);else if(i[0][0]<=t)i.unshift(o);else{let a=Math.round(i.length/2);this._data=i.slice(0,a).concat(o).concat(i.slice(a))}else this._data.push(o);this._changedData=!0,this._changedLength=!0}}_unsetInternalPos(e){this._data.splice(e,1)}_sortData(){this._changedData&&this._data.sort(Km),this._changedData=!1}bitField(){let e=[],t=8,n=0,s=0,i,o=this._bitArrays.slice();for(;o.length||n;){n===0&&(i=o.shift(),n=7);let c=Math.min(n,t),l=~(255<<c),u=i&l;s|=u<<8-t,i=i>>>c,n-=c,t-=c,(!t||!n&&!o.length)&&(e.push(s),s=0,t=8)}for(var a=e.length-1;a>0&&e[a]===0;a--)e.pop();return e}compactArray(){return this._sortData(),this._data.map(Om)}};function _m(r,e){return r+ud(e)}function ud(r){let e=r;return e=e-(e>>1&1431655765),e=(e&858993459)+(e>>2&858993459),(e+(e>>4)&252645135)*16843009>>24}function Km(r,e){return r[0]-e[0]}function Om(r){return r[1]}});function zm(r){return!!r}function Wm(r,e){return r.key}function $m(r){return r}async function pd(r,e,t){let n=[];for(let s of r._children.compactArray())if(s instanceof Ze)await pd(s,e,t);else{let i=await e(s);n.push({bitField:r._children.bitField(),children:i})}return t(n)}var fd,Ze,md=p(()=>{"use strict";fd=z(hd(),1);bs();Ze=class r{constructor(e,t,n=0){f(this,"_options");f(this,"_popCount");f(this,"_parent");f(this,"_posAtParent");f(this,"_children");f(this,"key");this._options=e,this._popCount=0,this._parent=t,this._posAtParent=n,this._children=new fd.default,this.key=null}async put(e,t){let n=await this._findNewBucketAndPos(e);n.bucket._putAt(n,e,t)}async get(e){let t=await this._findChild(e);if(t!=null)return t.value}async del(e){let t=await this._findPlace(e),n=t.bucket._at(t.pos);n!=null&&n.key===e&&t.bucket._delAt(t.pos)}leafCount(){return this._children.compactArray().reduce((t,n)=>n instanceof r?t+n.leafCount():t+1,0)}childrenCount(){return this._children.length}onlyChild(){return this._children.get(0)}*eachLeafSeries(){let e=this._children.compactArray();for(let t of e)t instanceof r?yield*t.eachLeafSeries():yield t}serialize(e,t){let n=[];return t(this._children.reduce((s,i,o)=>(i!=null&&(i instanceof r?s.push(i.serialize(e,t)):s.push(e(i,o))),s),n))}async asyncTransform(e,t){return pd(this,e,t)}toJSON(){return this.serialize(Wm,$m)}prettyPrint(){return JSON.stringify(this.toJSON(),null," ")}tableSize(){return Math.pow(2,this._options.bits)}async _findChild(e){let t=await this._findPlace(e),n=t.bucket._at(t.pos);if(!(n instanceof r)&&n!=null&&n.key===e)return n}async _findPlace(e){let t=this._options.hash(typeof e=="string"?Yt(e):e),n=await t.take(this._options.bits),s=this._children.get(n);return s instanceof r?s._findPlace(t):{bucket:this,pos:n,hash:t,existingChild:s}}async _findNewBucketAndPos(e){let t=await this._findPlace(e);if(t.existingChild!=null&&t.existingChild.key!==e){let n=new r(this._options,t.bucket,t.pos);t.bucket._putObjectAt(t.pos,n);let s=await n._findPlace(t.existingChild.hash);return s.bucket._putAt(s,t.existingChild.key,t.existingChild.value),n._findNewBucketAndPos(t.hash)}return t}_putAt(e,t,n){this._putObjectAt(e.pos,{key:t,value:n,hash:e.hash})}_putObjectAt(e,t){this._children.get(e)==null&&this._popCount++,this._children.set(e,t)}_delAt(e){if(e===-1)throw new Error("Invalid position");this._children.get(e)!=null&&this._popCount--,this._children.unset(e),this._level()}_level(){if(this._parent!=null&&this._popCount<=1)if(this._popCount===1){let e=this._children.find(zm);if(e!=null&&!(e instanceof r)){let t=e.hash;t.untake(this._options.bits);let n={pos:this._posAtParent,hash:t,bucket:this._parent};this._parent._putAt(n,e.key,e.value)}}else this._parent._delAt(this._posAtParent)}_at(e){return this._children.get(e)}}});function Vm(r,e,t){let n=Gm(e,t);return(r&n)>>>e}function Gm(r,e){return qm[r]&Hm[Math.min(e+r-1,7)]}var qm,Hm,Ps,gd=p(()=>{"use strict";qm=[255,254,252,248,240,224,192,128],Hm=[1,3,7,15,31,63,127,255],Ps=class{constructor(e){f(this,"_value");f(this,"_currentBytePos");f(this,"_currentBitPos");this._value=e,this._currentBytePos=e.length-1,this._currentBitPos=7}availableBits(){return this._currentBitPos+1+this._currentBytePos*8}totalBits(){return this._value.length*8}take(e){let t=e,n=0;for(;t>0&&this._haveBits();){let s=this._value[this._currentBytePos],i=this._currentBitPos+1,o=Math.min(i,t),a=Vm(s,i-o,o);n=(n<<o)+a,t-=o,this._currentBitPos-=o,this._currentBitPos<0&&(this._currentBitPos=7,this._currentBytePos--)}return n}untake(e){for(this._currentBitPos+=e;this._currentBitPos>7;)this._currentBitPos-=8,this._currentBytePos+=1}_haveBits(){return this._currentBytePos>=0}}});function yd(r){function e(t){return t instanceof Is?t:new Is(t,r)}return e}var Is,wd=p(()=>{"use strict";Li();gd();Is=class{constructor(e,t){f(this,"_value");f(this,"_hashFn");f(this,"_depth");f(this,"_availableBits");f(this,"_currentBufferIndex");f(this,"_buffers");if(!(e instanceof Uint8Array))throw new Error("can only hash Uint8Arrays");this._value=e,this._hashFn=t,this._depth=-1,this._availableBits=0,this._currentBufferIndex=0,this._buffers=[]}async take(e){let t=e;for(;this._availableBits<t;)await this._produceMoreBits();let n=0;for(;t>0;){let s=this._buffers[this._currentBufferIndex],i=Math.min(s.availableBits(),t),o=s.take(i);n=(n<<i)+o,t-=i,this._availableBits-=i,s.availableBits()===0&&this._currentBufferIndex++}return n}untake(e){let t=e;for(;t>0;){let n=this._buffers[this._currentBufferIndex],s=Math.min(n.totalBits()-n.availableBits(),t);n.untake(s),t-=s,this._availableBits+=s,this._currentBufferIndex>0&&n.totalBits()===n.availableBits()&&(this._depth--,this._currentBufferIndex--)}}async _produceMoreBits(){this._depth++;let e=this._depth>0?Ur([this._value,Uint8Array.from([this._depth])]):this._value,t=await this._hashFn(e),n=new Ps(t);this._buffers.push(n),this._availableBits+=n.availableBits()}}});function bd(r){if(r==null||r.hashFn==null)throw new Error("please define an options.hashFn");let e={bits:r.bits??8,hash:yd(r.hashFn)};return new Ze(e)}var Sd=p(()=>{"use strict";md();wd()});async function Ym(r){return(await ad.encode(r)).slice(0,8).reverse()}async function*xd(r,e,t,n){let s=r._children,i=(r.tableSize()-1).toString(16).length,o=[],a=0n;for(let g=0;g<s.length;g++){let w=s.get(g);if(w==null)continue;let b=g.toString(16).toUpperCase().padStart(i,"0");if(w instanceof Ze){let S;for await(let A of xd(w,e,null,n))S=A;if(S==null)throw new Error("Could not flush sharded directory, no sub-shard found");o.push({Name:b,Tsize:Number(S.size),Hash:S.cid}),a+=S.size}else if(vd(w.value)){let S=w.value,A;for await(let k of S.flush(e))A=k,yield A;if(A==null)throw new Error("Did not flush dir");let v=b+w.key;o.push({Name:v,Tsize:Number(A.size),Hash:A.cid}),a+=A.size}else{let S=w.value;if(S.cid==null)continue;let A=b+w.key,v=S.size;o.push({Name:A,Tsize:Number(v),Hash:S.cid}),a+=BigInt(v??0)}}let c=Uint8Array.from(s.bitField().reverse()),l=new Y({type:"hamt-sharded-directory",data:c,fanout:BigInt(r.tableSize()),hashType:_i,mtime:t?.mtime,mode:t?.mode}),u={Data:l.marshal(),Links:o},d=ee(X(u)),h=await fe(d,e,n),m=BigInt(d.byteLength)+a;yield{cid:h,unixfs:l,size:m}}function vd(r){return typeof r.flush=="function"}async function Ed(r,e,t,n){let s=r._children,i=(r.tableSize()-1).toString(16).length,o=[],a=0;for(let h=0;h<s.length;h++){let m=s.get(h);if(m==null)continue;let g=h.toString(16).toUpperCase().padStart(i,"0");if(m instanceof Ze){let{size:w,cid:b}=await Ed(m,null,t,n);o.push({Name:g,Tsize:Number(w),Hash:b}),a+=g.length+b.byteLength}else if(vd(m.value)){let w=m.value,b=w.nodeSize;if(w.cid==null)throw new Error("Child directory has not been persisted");o.push({Name:g+m.key,Tsize:Number(b),Hash:w.cid}),a+=g.length+w.cid.byteLength}else{let w=m.value,b=g+m.key,S=w.size;o.push({Name:b,Tsize:Number(S),Hash:w.cid}),a+=g.length+w.cid.byteLength}}let c=Uint8Array.from(s.bitField().reverse()),l=new Y({type:"hamt-sharded-directory",data:c,fanout:BigInt(r.tableSize()),hashType:_i,mtime:e?.mtime,mode:e?.mode}),u=ee(X({Data:l.marshal(),Links:o}));return{cid:await fe(u,t,n),size:n.shardSplitStrategy==="links-bytes"?a:u.length}}var Vo,Ad,kd=p(()=>{"use strict";ft();cd();Ho();Sd();jt();Nr();Es();Jt();Vo=class extends Pe{constructor(t,n){super(t,n);f(this,"bucket");this.bucket=bd({hashFn:Ym,bits:n.shardFanoutBits??cs})}async put(t,n){this.cid=void 0,this.size=void 0,this.nodeSize=void 0,await this.bucket.put(t,n)}async get(t){return this.bucket.get(t)}childCount(){return this.bucket.leafCount()}directChildrenCount(){return this.bucket.childrenCount()}onlyChild(){return this.bucket.onlyChild()}*eachChildSeries(){for(let{key:t,value:n}of this.bucket.eachLeafSeries())yield{key:t,child:n}}async estimateNodeSize(){if(this.nodeSize!==void 0)return this.nodeSize;let t=new ir,n=await Ed(this.bucket,this,t,this.options);return this.nodeSize=n.size,this.nodeSize}async*flush(t){for await(let n of xd(this.bucket,t,this,this.options))yield{...n,path:this.path}}},Ad=Vo});async function Go(r,e){let t=e,n=e.options.shardSplitThresholdBytes??ls;e instanceof yt&&await e.estimateNodeSize()>n&&(t=await jm(e));let s=t.parent;if(s!=null){if(t!==e){if(r!=null&&(r.parent=t),t.parentKey==null)throw new Error("No parent key found");await s.put(t.parentKey,t)}return Go(t,s)}return t}async function jm(r){let e=new Ad({root:r.root,dir:!0,parent:r.parent,parentKey:r.parentKey,path:r.path,dirty:r.dirty,flat:!1,mtime:r.mtime,mode:r.mode},r.options);for(let{key:t,child:n}of r.eachChildSeries())await e.put(t,n);return e}var Cd=p(()=>{"use strict";Nr();Oo();kd()});var Pd,Id=p(()=>{"use strict";Pd=(r="")=>r.split(/(?<!\\)\//).filter(Boolean)});async function Jm(r,e,t){let n=Pd(r.path??""),s=n.length-1,i=e,o="";for(let a=0;a<n.length;a++){let c=n[a];o+=`${o!==""?"/":""}${c}`;let l=a===s;if(i.dirty=!0,i.cid=void 0,i.size=void 0,l)await i.put(c,r),e=await Go(null,i);else{let u=await i.get(c);(u==null||!(u instanceof Pe))&&(u=new yt({root:!1,dir:!0,parent:i,parentKey:c,path:o,dirty:!0,flat:!0,mtime:u?.unixfs?.mtime,mode:u?.unixfs?.mode},t)),await i.put(c,u),i=u}}return e}async function*Bd(r,e){if(!(r instanceof Pe)){r.unixfs?.isDirectory()===!0&&(yield r);return}yield*r.flush(e)}function Dd(r){return async function*(t,n){let s=new yt({root:!0,dir:!0,path:"",dirty:!0,flat:!0},r),i,o=!1;for await(let a of t){if(a==null)continue;let c=`${a.originalPath??""}`.split("/")[0];c!=null&&c!==""&&(i==null?(i=c,o=!0):i!==c&&(o=!1)),s=await Jm(a,s,r),a.unixfs?.isDirectory()!==!0&&(yield a)}if(r.wrapWithDirectory||o&&s.childCount()>1)yield*Bd(s,n);else for(let a of s.eachChildSeries())a!=null&&(yield*Bd(a.child,n))}}var Td=p(()=>{"use strict";Oo();Es();Cd();Id()});var Rd={};E(Rd,{InvalidAvgChunkSizeError:()=>Mo,InvalidChunkSizeError:()=>Uo,InvalidContentError:()=>Ee,InvalidMinChunkSizeError:()=>No,InvalidParametersError:()=>rr,InvalidShardingStrategyError:()=>Ye,importByteStream:()=>Xm,importBytes:()=>Zm,importDirectory:()=>Qm,importFile:()=>jo,importer:()=>Yo});async function*Yo(r,e,t={}){let n;Symbol.asyncIterator in r||Symbol.iterator in r?n=r:n=[r];let s,i;t.profile==="unixfs-v0-2015"?(t.shardSplitStrategy=t.shardSplitStrategy??"links-bytes",t.cidVersion=t.cidVersion??0,t.rawLeaves=t.rawLeaves??!1,s=us,i=174):t.profile==="unixfs-v1-2025"&&(t.shardSplitStrategy=t.shardSplitStrategy??"block-bytes",t.cidVersion=t.cidVersion??1,t.rawLeaves=t.rawLeaves??!0,s=el,i=1024);let o=t.wrapWithDirectory??il,a=t.shardSplitThresholdBytes??ls,c=t.shardSplitStrategy??Xc,l=t.shardFanoutBits??cs,u=t.cidVersion??1,d=t.rawLeaves??sl,h=t.leafType??ol,m=t.fileImportConcurrency??tl,g=t.blockWriteConcurrency??rl,w=t.reduceSingleLeafToSelf??nl,b=t.chunker??al({chunkSize:s}),S=t.chunkValidator??Yu(),A=t.dagBuilder??Vu({chunker:b,chunkValidator:S,wrapWithDirectory:o,layout:t.layout??Lo({maxChildrenPerNode:i}),bufferImporter:t.bufferImporter??Ku({cidVersion:u,rawLeaves:d,leafType:h,onProgress:t.onProgress}),blockWriteConcurrency:g,reduceSingleLeafToSelf:w,cidVersion:u,onProgress:t.onProgress,dirBuilder:t.dirBuilder,fileBuilder:t.fileBuilder}),v=t.treeBuilder??Dd({wrapWithDirectory:o,shardSplitThresholdBytes:a,shardSplitStrategy:c,shardFanoutBits:l,cidVersion:u,onProgress:t.onProgress});for await(let k of v(Mr(A(n,e),m),e))yield{cid:k.cid,path:k.path,unixfs:k.unixfs,size:k.size}}async function jo(r,e,t={}){let n=await Mi(Yo([r],e,t));if(n==null)throw new rr("Nothing imported");return n}async function Qm(r,e,t={}){let n=await Mi(Yo([r],e,t));if(n==null)throw new rr("Nothing imported");return n}async function Zm(r,e,t={}){return jo({content:r},e,t)}async function Xm(r,e,t={}){return jo({content:r},e,t)}var zo=p(()=>{"use strict";qc();Ni();cl();Nr();Ou();Gu();ju();rn();Xu();Td();rn()});function eg(r){return typeof r?.then=="function"}var Bs,Fd=p(()=>{"use strict";Cs();Zu();Lr();ht();Yr();$t();nn();Bs=class extends Ie{constructor(){super();f(this,"data");this.data=new Map}put(t,n,s){s?.signal?.throwIfAborted();let i;if(n instanceof Uint8Array)i=[n];else{let o=Qu(n);if(eg(o))return o.then(a=>this._put(t,a,s));i=o}return this._put(t,i,s)}_put(t,n,s){return s?.signal?.throwIfAborted(),this.data.set(Z.encode(t.multihash.bytes),n),t}*get(t,n){n?.signal?.throwIfAborted();let s=this.data.get(Z.encode(t.multihash.bytes));if(s==null)throw new Qe;yield*s}has(t,n){return n?.signal?.throwIfAborted(),this.data.has(Z.encode(t.multihash.bytes))}async delete(t,n){n?.signal?.throwIfAborted(),this.data.delete(Z.encode(t.multihash.bytes))}*getAll(t){t?.signal?.throwIfAborted();for(let[n,s]of this.data.entries())yield{cid:V.createV1(Vt,ps(Z.decode(n))),bytes:(async function*(){yield*s})()},t?.signal?.throwIfAborted()}}});function Ds(r,e){if(typeof r=="string")return tg(r);if(typeof r=="number")return sg(r,e);throw new Error(`Value provided to ms() must be a string or number. value=${JSON.stringify(r)}`)}function tg(r){if(typeof r!="string"||r.length===0||r.length>100)throw new Error(`Value provided to ms.parse() must be a string with length between 1 and 99. value=${JSON.stringify(r)}`);let e=/^(?<value>-?\d*\.?\d+) *(?<unit>milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|months?|mo|years?|yrs?|y)?$/i.exec(r);if(!e?.groups)return NaN;let{value:t,unit:n="ms"}=e.groups,s=parseFloat(t),i=n.toLowerCase();switch(i){case"years":case"year":case"yrs":case"yr":case"y":return s*315576e5;case"months":case"month":case"mo":return s*26298e5;case"weeks":case"week":case"w":return s*6048e5;case"days":case"day":case"d":return s*864e5;case"hours":case"hour":case"hrs":case"hr":case"h":return s*36e5;case"minutes":case"minute":case"mins":case"min":case"m":return s*6e4;case"seconds":case"second":case"secs":case"sec":case"s":return s*1e3;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return s;default:throw new Error(`Unknown unit "${i}" provided to ms.parse(). value=${JSON.stringify(r)}`)}}function rg(r){let e=Math.abs(r);return e>=315576e5?`${Math.round(r/315576e5)}y`:e>=26298e5?`${Math.round(r/26298e5)}mo`:e>=6048e5?`${Math.round(r/6048e5)}w`:e>=864e5?`${Math.round(r/864e5)}d`:e>=36e5?`${Math.round(r/36e5)}h`:e>=6e4?`${Math.round(r/6e4)}m`:e>=1e3?`${Math.round(r/1e3)}s`:`${r}ms`}function ng(r){let e=Math.abs(r);return e>=315576e5?bt(r,e,315576e5,"year"):e>=26298e5?bt(r,e,26298e5,"month"):e>=6048e5?bt(r,e,6048e5,"week"):e>=864e5?bt(r,e,864e5,"day"):e>=36e5?bt(r,e,36e5,"hour"):e>=6e4?bt(r,e,6e4,"minute"):e>=1e3?bt(r,e,1e3,"second"):`${r} ms`}function sg(r,e){if(typeof r!="number"||!Number.isFinite(r))throw new Error("Value provided to ms.format() must be of type number.");return e?.long?ng(r):rg(r)}function bt(r,e,t,n){let s=e>=t*1.5;return`${Math.round(r/t)} ${n}${s?"s":""}`}var Jo=p(()=>{"use strict"});function Qo(r){t.debug=t,t.default=t,t.coerce=c,t.disable=i,t.enable=s,t.enabled=o,t.humanize=Ds,t.destroy=l,Object.keys(r).forEach(u=>{t[u]=r[u]}),t.names=[],t.skips=[],t.formatters={};function e(u){let d=0;for(let h=0;h<u.length;h++)d=(d<<5)-d+u.charCodeAt(h),d|=0;return t.colors[Math.abs(d)%t.colors.length]}t.selectColor=e;function t(u,d){let h,m=null,g,w;function b(...S){if(!b.enabled)return;let A=b,v=Number(new Date),k=v-(h||v);A.diff=k,A.prev=h,A.curr=v,h=v,S[0]=t.coerce(S[0]),typeof S[0]!="string"&&S.unshift("%O");let C=0;S[0]=S[0].replace(/%([a-zA-Z%])/g,(T,O)=>{if(T==="%%")return"%";C++;let Be=t.formatters[O];if(typeof Be=="function"){let St=S[C];T=Be.call(A,St),S.splice(C,1),C--}return T}),t.formatArgs.call(A,S),d?.onLog!=null&&d.onLog(...S),(A.log||t.log).apply(A,S)}return b.namespace=u,b.useColors=t.useColors(),b.color=t.selectColor(u),b.extend=n,b.destroy=t.destroy,Object.defineProperty(b,"enabled",{enumerable:!0,configurable:!1,get:()=>m!==null?m:(g!==t.namespaces&&(g=t.namespaces,w=t.enabled(u)),w),set:S=>{m=S}}),typeof t.init=="function"&&t.init(b),b}function n(u,d){let h=t(this.namespace+(typeof d>"u"?":":d)+u);return h.log=this.log,h}function s(u){t.save(u),t.namespaces=u,t.names=[],t.skips=[];let d,h=(typeof u=="string"?u:"").split(/[\s,]+/),m=h.length;for(d=0;d<m;d++)h[d]&&(u=h[d].replace(/\*/g,".*?"),u[0]==="-"?t.skips.push(new RegExp("^"+u.substr(1)+"$")):t.names.push(new RegExp("^"+u+"$")))}function i(){let u=[...t.names.map(a),...t.skips.map(a).map(d=>"-"+d)].join(",");return t.enable(""),u}function o(u){if(u[u.length-1]==="*")return!0;let d,h;for(d=0,h=t.skips.length;d<h;d++)if(t.skips[d].test(u))return!1;for(d=0,h=t.names.length;d<h;d++)if(t.names[d].test(u))return!0;return!1}function a(u){return u.toString().substring(2,u.toString().length-2).replace(/\.\*\?$/,"*")}function c(u){return u instanceof Error?u.stack??u.message:u}function l(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return t.setupFormatters(t.formatters),t.enable(t.load()),t}var Md=p(()=>{"use strict";Jo()});function og(){return typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs)?!0:typeof navigator<"u"&&navigator.userAgent?.toLowerCase().match(/(edge|trident)\/(\d+)/)!=null?!1:typeof document<"u"&&document.documentElement?.style?.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent?.toLowerCase().match(/firefox\/(\d+)/)!=null&&parseInt(RegExp.$1,10)>=31||typeof navigator<"u"&&navigator.userAgent?.toLowerCase().match(/applewebkit\/(\d+)/)}function ag(r){if(r[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+r[0]+(this.useColors?"%c ":" ")+"+"+Ds(this.diff),!this.useColors)return;let e="color: "+this.color;r.splice(1,0,e,"color: inherit");let t=0,n=0;r[0].replace(/%[a-zA-Z%]/g,s=>{s!=="%%"&&(t++,s==="%c"&&(n=t))}),r.splice(n,0,e)}function lg(r){try{r?Ts?.setItem("debug",r):Ts?.removeItem("debug")}catch{}}function ug(){let r;try{r=Ts?.getItem("debug")}catch{}return!r&&typeof globalThis.process<"u"&&"env"in globalThis.process&&(r=globalThis.process.env.DEBUG),r}function dg(){try{return localStorage}catch{}}function hg(r){r.j=function(e){try{return JSON.stringify(e)}catch(t){return"[UnexpectedJSONParseError]: "+t.message}}}var Ts,ig,cg,Ud,Nd=p(()=>{"use strict";Jo();Md();Ts=dg(),ig=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];cg=console.debug??console.log??(()=>{});Ud=Qo({formatArgs:ag,save:lg,load:ug,useColors:og,setupFormatters:hg,colors:ig,storage:Ts,log:cg})});var te,Ld=p(()=>{"use strict";Nd();te=Ud});function _d(r,e=""){let t=Kd(r.message),n=Kd(r.stack);return t!=null&&n!=null?n.includes(t)?`${n.split(`
|
|
950
|
+
`}}});var ns={};k(ns,{RecoverySimulator:()=>Mt,educationalModules:()=>rs,getAllTopics:()=>Di,getExplainer:()=>Bi,searchExplainers:()=>Ti});var Fr=p(()=>{"use strict";Uc();Lc()});var as={};k(as,{deriveMLKemKeypair:()=>Mr,mlkemDecrypt:()=>os,mlkemDecryptWithKey:()=>Fi,mlkemEncrypt:()=>is,mlkemEncryptWithKey:()=>Ri});function Re(r){r.fill(0)}function Nt(r){if(typeof btoa<"u"){let e=Array.from(r).map(t=>String.fromCharCode(t)).join("");return btoa(e)}return Buffer.from(r).toString("base64")}function $e(r){if(typeof atob<"u"){let e=atob(r),t=new Uint8Array(e.length);for(let n=0;n<e.length;n++)t[n]=e.charCodeAt(n);return t}return new Uint8Array(Buffer.from(r,"base64"))}async function Mr(r,e="mlkem-v1"){let t=await(0,ss.createMlKem1024)(),n;if(typeof r=="string"){let i=r.startsWith("0x")?r.slice(2):r;if(typeof Buffer<"u")n=new Uint8Array(Buffer.from(i,"hex"));else{let o=new Uint8Array(i.length/2);for(let a=0;a<i.length;a+=2)o[a/2]=parseInt(i.substring(a,a+2),16);n=o}}else n=r;let s=(0,_c.hkdf)(Kc.sha256,n,new Uint8Array(Buffer.from("mlkem-keypair-v1","utf-8")),new Uint8Array(Buffer.from(e,"utf-8")),64);try{let[i,o]=t.deriveKeyPair(s);return{publicKey:i,privateKey:o}}finally{Re(s),Re(n)}}async function is(r,e){let t=await(0,ss.createMlKem1024)(),n=Array.isArray(e)?e:[e];if(n.length===0)throw new Error("At least one public key is required");let s=new Uint8Array(32);crypto.getRandomValues(s);try{let i=new Uint8Array(12);crypto.getRandomValues(i);let a=new TextEncoder().encode(r),c=await crypto.subtle.importKey("raw",s,{name:"AES-GCM"},!1,["encrypt"]),l=await crypto.subtle.encrypt({name:"AES-GCM",iv:i,tagLength:128},c,a),u=new Uint8Array(l),d=16;if(u.length<d)throw new Error("Encrypted data too short to contain auth tag");let h=u.slice(0,-d),m=u.slice(-d),g=[];for(let w of n){let b=typeof w=="string"?$e(w):w;if(b.length!==1568)throw new Error(`Invalid ML-KEM public key size: ${b.length} (expected 1568)`);let[S,A]=t.encap(b);try{let v=A.slice(0,32),E=new Uint8Array(32);for(let x=0;x<32;x++)E[x]=s[x]^v[x];let C=new Uint8Array(S.length+E.length);C.set(S,0),C.set(E,S.length),g.push({publicKey:Nt(b),ciphertext:Nt(C)})}finally{Re(A)}}return{recipients:g,encryptedData:Nt(h),iv:Nt(i),authTag:Nt(m)}}finally{Re(s)}}async function os(r,e,t){let n=await(0,ss.createMlKem1024)(),s=typeof e=="string"?$e(e):e;if(s.length!==3168)throw new Error(`Invalid ML-KEM private key size: ${s.length} (expected 3168)`);let i=$e(r.encryptedData),o=$e(r.iv),a=$e(r.authTag),c=null;if(t){let w=typeof t=="string"?$e(t):t,b=Nt(w);if(c=r.recipients.find(S=>S.publicKey===b),!c)throw new Error("Public key not found in recipients list")}else{for(let w of r.recipients)try{let b=$e(w.ciphertext),S=n.decap(b,s);c=w,Re(S);break}catch{continue}if(!c)throw new Error("No matching recipient found for this private key")}let l=$e(c.ciphertext),u=1568,d=l.slice(0,u),h=l.slice(u),m=n.decap(d,s),g=null;try{let w=m.slice(0,32);g=new Uint8Array(32);for(let x=0;x<32;x++)g[x]=h[x]^w[x];let b=await crypto.subtle.importKey("raw",g,{name:"AES-GCM"},!1,["decrypt"]),S=i.length+a.length,A=new ArrayBuffer(S),v=new Uint8Array(A);v.set(i,0),v.set(a,i.length);let E=await crypto.subtle.decrypt({name:"AES-GCM",iv:o.buffer,tagLength:128},b,A);return new TextDecoder().decode(E)}finally{Re(m),g&&Re(g)}}async function Ri(r,e,t,n="mlkem-v1"){let s=await Mr(e,n);try{let i=[s.publicKey,...t];return await is(r,i)}finally{Re(s.privateKey)}}async function Fi(r,e,t="mlkem-v1"){let n=await Mr(e,t);try{return await os(r,n.privateKey,n.publicKey)}finally{Re(n.privateKey)}}var ss,_c,Kc,Nr=p(()=>{"use strict";ss=require("mlkem"),_c=require("@noble/hashes/hkdf.js"),Kc=require("@noble/hashes/sha2.js")});function Ff(r){return r[Symbol.asyncIterator]!=null}function Mf(r){if(Ff(r))return(async()=>{for await(let e of r)return e})();for(let e of r)return e}var Mi,Wc=p(()=>{"use strict";Mi=Mf});function Nf(r){return r[Symbol.asyncIterator]!=null}function Uf(r,e=1){return e=Number(e),Nf(r)?(async function*(){let t=[];if(e<1&&(e=1),e!==Math.round(e))throw new Error("Batch size must be an integer");for await(let n of r)for(t.push(n);t.length>=e;)yield t.slice(0,e),t=t.slice(e);for(;t.length>0;)yield t.slice(0,e),t=t.slice(e)})():(function*(){let t=[];if(e<1&&(e=1),e!==Math.round(e))throw new Error("Batch size must be an integer");for(let n of r)for(t.push(n);t.length>=e;)yield t.slice(0,e),t=t.slice(e);for(;t.length>0;)yield t.slice(0,e),t=t.slice(e)})()}var cs,Ni=p(()=>{"use strict";cs=Uf});async function*Ur(r,e=1){for await(let t of cs(r,e)){let n=t.map(async s=>s().then(i=>({ok:!0,value:i}),i=>({ok:!1,err:i})));for(let s=0;s<n.length;s++){let i=await n[s];if(i.ok)yield i.value;else throw i.err}}}var Ui=p(()=>{"use strict";Ni()});function Fe(r=0){return new Uint8Array(r)}function ie(r=0){return new Uint8Array(r)}var ut=p(()=>{"use strict"});function Lf(r){return r?.buffer instanceof ArrayBuffer}function $c(r){if(Lf(r))return r;let e=r.slice();return new Uint8Array(e.buffer,0,e.byteLength)}var qc=p(()=>{"use strict"});function Lr(r,e){e==null&&(e=r.reduce((s,i)=>s+i.length,0));let t=ie(e),n=0;for(let s of r)t.set(s,n),n+=s.length;return $c(t)}var Li=p(()=>{"use strict";ut();qc()});function Hc(r,e){if(r===e)return!0;if(r.byteLength!==e.byteLength)return!1;for(let t=0;t<r.byteLength;t++)if(r[t]!==e[t])return!1;return!0}var Vc=p(()=>{"use strict"});function Gc(r,e){if(e==null||e<0)throw new RangeError("index is out of bounds");let t=0;for(let n of r){let s=t+n.byteLength;if(e<s)return{buf:n,index:e-t};t=s}throw new RangeError("index is out of bounds")}function ls(r){return!!r?.[jc]}var jc,Yc,Lt,Jc=p(()=>{"use strict";ut();Li();Vc();jc=Symbol.for("@achingbrain/uint8arraylist");Lt=class r{constructor(...e){f(this,"bufs");f(this,"length");f(this,Yc,!0);this.bufs=[],this.length=0,e.length>0&&this.appendAll(e)}*[(Yc=jc,Symbol.iterator)](){yield*this.bufs}get byteLength(){return this.length}append(...e){this.appendAll(e)}appendAll(e){let t=0;for(let n of e)if(n instanceof Uint8Array)t+=n.byteLength,this.bufs.push(n);else if(ls(n)){t+=n.byteLength;for(let s of n.bufs)this.bufs.push(s)}else throw new Error("Could not append value, must be an Uint8Array or a Uint8ArrayList");this.length+=t}prepend(...e){this.prependAll(e)}prependAll(e){let t=0;for(let n of e.reverse())if(n instanceof Uint8Array)t+=n.byteLength,this.bufs.unshift(n);else if(ls(n))t+=n.byteLength,this.bufs.unshift(...n.bufs);else throw new Error("Could not prepend value, must be an Uint8Array or a Uint8ArrayList");this.length+=t}get(e){let t=Gc(this.bufs,e);return t.buf[t.index]}set(e,t){let n=Gc(this.bufs,e);n.buf[n.index]=t}write(e,t=0){if(e instanceof Uint8Array)for(let n=0;n<e.length;n++)this.set(t+n,e[n]);else if(ls(e))for(let n=0;n<e.length;n++)this.set(t+n,e.get(n));else throw new Error("Could not write value, must be an Uint8Array or a Uint8ArrayList")}consume(e){if(e=Math.trunc(e),!(Number.isNaN(e)||e<=0)){if(e===this.byteLength){this.bufs=[],this.length=0;return}for(;this.bufs.length>0;)if(e>=this.bufs[0].byteLength)e-=this.bufs[0].byteLength,this.length-=this.bufs[0].byteLength,this.bufs.shift();else{this.bufs[0]=this.bufs[0].subarray(e),this.length-=e;break}}}slice(e,t){let{bufs:n,length:s}=this._subList(e,t);return Lr(n,s)}subarray(e,t){let{bufs:n,length:s}=this._subList(e,t);return n.length===1?n[0]:Lr(n,s)}sublist(e,t){let{bufs:n,length:s}=this._subList(e,t),i=new r;return i.length=s,i.bufs=n,i}_subList(e,t){if(e=e??0,t=t??this.length,e<0&&(e=this.length+e),t<0&&(t=this.length+t),e<0||t>this.length)throw new RangeError("index is out of bounds");if(e===t)return{bufs:[],length:0};if(e===0&&t===this.length)return{bufs:[...this.bufs],length:this.length};let n=[],s=0;for(let i=0;i<this.bufs.length;i++){let o=this.bufs[i],a=s,c=a+o.byteLength;if(s=c,e>=c)continue;let l=e>=a&&e<c,u=t>a&&t<=c;if(l&&u){if(e===a&&t===c){n.push(o);break}let d=e-a;n.push(o.subarray(d,d+(t-e)));break}if(l){if(e===0){n.push(o);continue}n.push(o.subarray(e-a));continue}if(u){if(t===c){n.push(o);break}n.push(o.subarray(0,t-a));break}n.push(o)}return{bufs:n,length:t-e}}indexOf(e,t=0){if(!ls(e)&&!(e instanceof Uint8Array))throw new TypeError('The "value" argument must be a Uint8ArrayList or Uint8Array');let n=e instanceof Uint8Array?e:e.subarray();if(t=Number(t??0),isNaN(t)&&(t=0),t<0&&(t=this.length+t),t<0&&(t=0),e.length===0)return t>this.length?this.length:t;let s=n.byteLength;if(s===0)throw new TypeError("search must be at least 1 byte long");let i=256,o=new Int32Array(i);for(let d=0;d<i;d++)o[d]=-1;for(let d=0;d<s;d++)o[n[d]]=d;let a=o,c=this.byteLength-n.byteLength,l=n.byteLength-1,u;for(let d=t;d<=c;d+=u){u=0;for(let h=l;h>=0;h--){let m=this.get(d+h);if(n[h]!==m){u=Math.max(1,h-a[m]);break}}if(u===0)return d}return-1}getInt8(e){let t=this.subarray(e,e+1);return new DataView(t.buffer,t.byteOffset,t.byteLength).getInt8(0)}setInt8(e,t){let n=ie(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setInt8(0,t),this.write(n,e)}getInt16(e,t){let n=this.subarray(e,e+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt16(0,t)}setInt16(e,t,n){let s=Fe(2);new DataView(s.buffer,s.byteOffset,s.byteLength).setInt16(0,t,n),this.write(s,e)}getInt32(e,t){let n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt32(0,t)}setInt32(e,t,n){let s=Fe(4);new DataView(s.buffer,s.byteOffset,s.byteLength).setInt32(0,t,n),this.write(s,e)}getBigInt64(e,t){let n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigInt64(0,t)}setBigInt64(e,t,n){let s=Fe(8);new DataView(s.buffer,s.byteOffset,s.byteLength).setBigInt64(0,t,n),this.write(s,e)}getUint8(e){let t=this.subarray(e,e+1);return new DataView(t.buffer,t.byteOffset,t.byteLength).getUint8(0)}setUint8(e,t){let n=ie(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setUint8(0,t),this.write(n,e)}getUint16(e,t){let n=this.subarray(e,e+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint16(0,t)}setUint16(e,t,n){let s=Fe(2);new DataView(s.buffer,s.byteOffset,s.byteLength).setUint16(0,t,n),this.write(s,e)}getUint32(e,t){let n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint32(0,t)}setUint32(e,t,n){let s=Fe(4);new DataView(s.buffer,s.byteOffset,s.byteLength).setUint32(0,t,n),this.write(s,e)}getBigUint64(e,t){let n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigUint64(0,t)}setBigUint64(e,t,n){let s=Fe(8);new DataView(s.buffer,s.byteOffset,s.byteLength).setBigUint64(0,t,n),this.write(s,e)}getFloat32(e,t){let n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat32(0,t)}setFloat32(e,t,n){let s=Fe(4);new DataView(s.buffer,s.byteOffset,s.byteLength).setFloat32(0,t,n),this.write(s,e)}getFloat64(e,t){let n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat64(0,t)}setFloat64(e,t,n){let s=Fe(8);new DataView(s.buffer,s.byteOffset,s.byteLength).setFloat64(0,t,n),this.write(s,e)}equals(e){if(e==null||!(e instanceof r)||e.bufs.length!==this.bufs.length)return!1;for(let t=0;t<this.bufs.length;t++)if(!Hc(this.bufs[t],e.bufs[t]))return!1;return!0}static fromUint8Arrays(e,t){let n=new r;return n.bufs=e,t==null&&(t=e.reduce((s,i)=>s+i.byteLength,0)),n.length=t,n}}});var _i,us,ds,Qc,hs,Zc,Xc,el,tl,rl,nl,sl,_r=p(()=>{"use strict";_i=BigInt(34),us=8,ds=262144,Qc="links-bytes",hs=262144,Zc=1048576,Xc=50,el=10,tl=!0,rl=!0,nl=!1,sl="file"});var il,ol=p(()=>{"use strict";Jc();_r();il=(r={})=>{let e=r.chunkSize??hs;return async function*(n){let s=new Lt,i=0,o=!1;for await(let a of n)for(s.append(a),i+=a.length;i>=e;)if(yield s.subarray(0,e),o=!0,e===s.length)s=new Lt,i=0;else{let l=new Lt;l.append(s.sublist(e)),s=l,i-=e}(!o||i>0)&&(yield s.subarray(0,i))}}});function al(r,e){if(r===e)return!0;if(r.byteLength!==e.byteLength)return!1;for(let t=0;t<r.byteLength;t++)if(r[t]!==e[t])return!1;return!0}function we(r){if(r instanceof Uint8Array&&r.constructor.name==="Uint8Array")return dt(r);if(r instanceof ArrayBuffer)return new Uint8Array(r);if(ArrayBuffer.isView(r))return dt(new Uint8Array(r.buffer,r.byteOffset,r.byteLength));throw new Error("Unknown type, must be binary type")}function cl(r){return new TextEncoder().encode(r)}function ll(r){return new TextDecoder().decode(r)}function _f(r){return r?.buffer instanceof ArrayBuffer}function dt(r){return _f(r)?r:r.slice()}var c0,qe=p(()=>{"use strict";c0=new Uint8Array(0)});function Kf(r,e){if(r.length>=255)throw new TypeError("Alphabet too long");for(var t=new Uint8Array(256),n=0;n<t.length;n++)t[n]=255;for(var s=0;s<r.length;s++){var i=r.charAt(s),o=i.charCodeAt(0);if(t[o]!==255)throw new TypeError(i+" is ambiguous");t[o]=s}var a=r.length,c=r.charAt(0),l=Math.log(a)/Math.log(256),u=Math.log(256)/Math.log(a);function d(g){if(g instanceof Uint8Array||(ArrayBuffer.isView(g)?g=new Uint8Array(g.buffer,g.byteOffset,g.byteLength):Array.isArray(g)&&(g=Uint8Array.from(g))),!(g instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(g.length===0)return"";for(var w=0,b=0,S=0,A=g.length;S!==A&&g[S]===0;)S++,w++;for(var v=(A-S)*u+1>>>0,E=new Uint8Array(v);S!==A;){for(var C=g[S],x=0,T=v-1;(C!==0||x<b)&&T!==-1;T--,x++)C+=256*E[T]>>>0,E[T]=C%a>>>0,C=C/a>>>0;if(C!==0)throw new Error("Non-zero carry");b=x,S++}for(var O=v-b;O!==v&&E[O]===0;)O++;for(var Be=c.repeat(w);O<v;++O)Be+=r.charAt(E[O]);return Be}function h(g){if(typeof g!="string")throw new TypeError("Expected String");if(g.length===0)return new Uint8Array;var w=0;if(g[w]!==" "){for(var b=0,S=0;g[w]===c;)b++,w++;for(var A=(g.length-w)*l+1>>>0,v=new Uint8Array(A);g[w];){var E=t[g.charCodeAt(w)];if(E===255)return;for(var C=0,x=A-1;(E!==0||C<S)&&x!==-1;x--,C++)E+=a*v[x]>>>0,v[x]=E%256>>>0,E=E/256>>>0;if(E!==0)throw new Error("Non-zero carry");S=C,w++}if(g[w]!==" "){for(var T=A-S;T!==A&&v[T]===0;)T++;for(var O=new Uint8Array(b+(A-T)),Be=b;T!==A;)O[Be++]=v[T++];return O}}}function m(g){var w=h(g);if(w)return w;throw new Error(`Non-${e} character`)}return{encode:d,decodeUnsafe:h,decode:m}}var Of,zf,dl,hl=p(()=>{"use strict";Of=Kf,zf=Of,dl=zf});function fl(r,e){return new zi({...r.decoders??{[r.prefix]:r},...e.decoders??{[e.prefix]:e}})}function _t({name:r,prefix:e,encode:t,decode:n}){return new Wi(r,e,t,n)}function He({name:r,prefix:e,alphabet:t}){let{encode:n,decode:s}=dl(t,r);return _t({prefix:e,name:r,encode:n,decode:i=>we(s(i))})}function Wf(r,e,t,n){let s=r.length;for(;r[s-1]==="=";)--s;let i=new Uint8Array(s*t/8|0),o=0,a=0,c=0;for(let l=0;l<s;++l){let u=e[r[l]];if(u===void 0)throw new SyntaxError(`Non-${n} character`);a=a<<t|u,o+=t,o>=8&&(o-=8,i[c++]=255&a>>o)}if(o>=t||(255&a<<8-o)!==0)throw new SyntaxError("Unexpected end of data");return i}function $f(r,e,t){let n=e[e.length-1]==="=",s=(1<<t)-1,i="",o=0,a=0;for(let c=0;c<r.length;++c)for(a=a<<8|r[c],o+=8;o>t;)o-=t,i+=e[s&a>>o];if(o!==0&&(i+=e[s&a<<t-o]),n)for(;(i.length*t&7)!==0;)i+="=";return i}function qf(r){let e={};for(let t=0;t<r.length;++t)e[r[t]]=t;return e}function U({name:r,prefix:e,bitsPerChar:t,alphabet:n}){let s=qf(n);return _t({prefix:e,name:r,encode(i){return $f(i,n,t)},decode(i){return Wf(i,s,t,r)}})}var Ki,Oi,zi,Wi,be=p(()=>{"use strict";qe();hl();Ki=class{constructor(e,t,n){f(this,"name");f(this,"prefix");f(this,"baseEncode");this.name=e,this.prefix=t,this.baseEncode=n}encode(e){if(e instanceof Uint8Array)return`${this.prefix}${this.baseEncode(e)}`;throw Error("Unknown type, must be binary type")}},Oi=class{constructor(e,t,n){f(this,"name");f(this,"prefix");f(this,"baseDecode");f(this,"prefixCodePoint");this.name=e,this.prefix=t;let s=t.codePointAt(0);if(s===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=s,this.baseDecode=n}decode(e){if(typeof e=="string"){if(e.codePointAt(0)!==this.prefixCodePoint)throw Error(`Unable to decode multibase string ${JSON.stringify(e)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);return this.baseDecode(e.slice(this.prefix.length))}else throw Error("Can only multibase decode strings")}or(e){return fl(this,e)}},zi=class{constructor(e){f(this,"decoders");this.decoders=e}or(e){return fl(this,e)}decode(e){let t=e[0],n=this.decoders[t];if(n!=null)return n.decode(e);throw RangeError(`Unable to decode multibase string ${JSON.stringify(e)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}};Wi=class{constructor(e,t,n,s){f(this,"name");f(this,"prefix");f(this,"baseEncode");f(this,"baseDecode");f(this,"encoder");f(this,"decoder");this.name=e,this.prefix=t,this.baseEncode=n,this.baseDecode=s,this.encoder=new Ki(e,t,n),this.decoder=new Oi(e,t,s)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}}});var $i={};k($i,{base32:()=>Q,base32hex:()=>Yf,base32hexpad:()=>Jf,base32hexpadupper:()=>Qf,base32hexupper:()=>jf,base32pad:()=>Vf,base32padupper:()=>Gf,base32upper:()=>Hf,base32z:()=>Zf});var Q,Hf,Vf,Gf,Yf,jf,Jf,Qf,Zf,Kr=p(()=>{"use strict";be();Q=U({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),Hf=U({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),Vf=U({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),Gf=U({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),Yf=U({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),jf=U({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),Jf=U({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),Qf=U({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),Zf=U({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5})});var qi={};k(qi,{base36:()=>Or,base36upper:()=>Xf});var Or,Xf,Hi=p(()=>{"use strict";be();Or=He({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),Xf=He({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"})});var Vi={};k(Vi,{base58btc:()=>ue,base58flickr:()=>ep});var ue,ep,fs=p(()=>{"use strict";be();ue=He({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),ep=He({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"})});function gl(r,e,t){e=e||[],t=t||0;for(var n=t;r>=sp;)e[t++]=r&255|pl,r/=128;for(;r&np;)e[t++]=r&255|pl,r>>>=7;return e[t]=r|0,gl.bytes=t-n+1,e}function Gi(r,n){var t=0,n=n||0,s=0,i=n,o,a=r.length;do{if(i>=a)throw Gi.bytes=0,new RangeError("Could not decode varint");o=r[i++],t+=s<28?(o&ml)<<s:(o&ml)*Math.pow(2,s),s+=7}while(o>=op);return Gi.bytes=i-n,t}var tp,pl,rp,np,sp,ip,op,ml,ap,cp,lp,up,dp,hp,fp,pp,mp,gp,yp,wp,zr,yl=p(()=>{"use strict";tp=gl,pl=128,rp=127,np=~rp,sp=Math.pow(2,31);ip=Gi,op=128,ml=127;ap=Math.pow(2,7),cp=Math.pow(2,14),lp=Math.pow(2,21),up=Math.pow(2,28),dp=Math.pow(2,35),hp=Math.pow(2,42),fp=Math.pow(2,49),pp=Math.pow(2,56),mp=Math.pow(2,63),gp=function(r){return r<ap?1:r<cp?2:r<lp?3:r<up?4:r<dp?5:r<hp?6:r<fp?7:r<pp?8:r<mp?9:10},yp={encode:tp,decode:ip,encodingLength:gp},wp=yp,zr=wp});function Wr(r,e=0){return[zr.decode(r,e),zr.decode.bytes]}function Kt(r,e,t=0){return zr.encode(r,e,t),e}function Ot(r){return zr.encodingLength(r)}var ms=p(()=>{"use strict";yl()});function Wt(r,e){let t=e.byteLength,n=Ot(r),s=n+Ot(t),i=new Uint8Array(s+t);return Kt(r,i,0),Kt(t,i,n),i.set(e,s),new zt(r,t,e,i)}function gs(r){let e=we(r),[t,n]=Wr(e),[s,i]=Wr(e.subarray(n)),o=e.subarray(n+i);if(o.byteLength!==s)throw new Error("Incorrect length");return new zt(t,s,o,e)}function wl(r,e){if(r===e)return!0;{let t=e;return r.code===t.code&&r.size===t.size&&t.bytes instanceof Uint8Array&&al(r.bytes,t.bytes)}}var zt,qt=p(()=>{"use strict";qe();ms();zt=class{constructor(e,t,n,s){f(this,"code");f(this,"size");f(this,"digest");f(this,"bytes");this.code=e,this.size=t,this.digest=dt(n),this.bytes=dt(s)}}});var Yi=p(()=>{"use strict"});function bl(r,e){let{bytes:t,version:n}=r;return n===0?Sp(t,ji(r),e??ue.encoder):Ap(t,ji(r),e??Q.encoder)}function ji(r){let e=Sl.get(r);if(e==null){let t=new Map;return Sl.set(r,t),t}return e}function bp(r,e){switch(r[0]){case"Q":{let t=e??ue;return[ue.prefix,t.decode(`${ue.prefix}${r}`)]}case ue.prefix:{let t=e??ue;return[ue.prefix,t.decode(r)]}case Q.prefix:{let t=e??Q;return[Q.prefix,t.decode(r)]}case Or.prefix:{let t=e??Or;return[Or.prefix,t.decode(r)]}default:{if(e==null)throw Error("To parse non base32, base36 or base58btc encoded CID multibase decoder must be provided");return[r[0],e.decode(r)]}}}function Sp(r,e,t){let{prefix:n}=t;if(n!==ue.prefix)throw Error(`Cannot string encode V0 in ${t.name} encoding`);let s=e.get(n);if(s==null){let i=t.encode(r).slice(1);return e.set(n,i),i}else return s}function Ap(r,e,t){let{prefix:n}=t,s=e.get(n);if(s==null){let i=t.encode(r);return e.set(n,i),i}else return s}function Al(r,e,t){let n=Ot(r),s=n+Ot(e),i=new Uint8Array(s+t.byteLength);return Kt(r,i,0),Kt(e,i,n),i.set(t,s),i}var Sl,xl,V,$r,xp,vp,ht=p(()=>{"use strict";Kr();Hi();fs();qe();qt();ms();Yi();Sl=new WeakMap;V=class r{constructor(e,t,n,s){f(this,"code");f(this,"version");f(this,"multihash");f(this,"bytes");f(this,"/");f(this,xl,"CID");this.code=t,this.version=e,this.multihash=n,this.bytes=dt(s),this["/"]=this.bytes}get asCID(){return this}get byteOffset(){return this.bytes.byteOffset}get byteLength(){return this.bytes.byteLength}toV0(){switch(this.version){case 0:return this;case 1:{let{code:e,multihash:t}=this;if(e!==$r)throw new Error("Cannot convert a non dag-pb CID to CIDv0");if(t.code!==xp)throw new Error("Cannot convert non sha2-256 multihash CID to CIDv0");return r.createV0(t)}default:throw Error(`Can not convert CID version ${this.version} to version 0. This is a bug please report`)}}toV1(){switch(this.version){case 0:{let{code:e,digest:t}=this.multihash,n=Wt(e,t);return r.createV1(this.code,n)}case 1:return this;default:throw Error(`Can not convert CID version ${this.version} to version 1. This is a bug please report`)}}equals(e){return r.equals(this,e)}static equals(e,t){let n=t;return n!=null&&e.code===n.code&&e.version===n.version&&wl(e.multihash,n.multihash)}toString(e){return bl(this,e)}toJSON(){return{"/":bl(this)}}link(){return this}[(xl=Symbol.toStringTag,Symbol.for("nodejs.util.inspect.custom"))](){return`CID(${this.toString()})`}static asCID(e){if(e==null)return null;let t=e;if(t instanceof r)return t;if(t["/"]!=null&&t["/"]===t.bytes||t.asCID===t){let{version:n,code:s,multihash:i,bytes:o}=t;return new r(n,s,i,o??Al(n,s,i.bytes))}else if(t[vp]===!0){let{version:n,multihash:s,code:i}=t,o=gs(s);return r.create(n,i,o)}else return null}static create(e,t,n){if(typeof t!="number")throw new Error("String codecs are no longer supported");if(!(n.bytes instanceof Uint8Array))throw new Error("Invalid digest");switch(e){case 0:{if(t!==$r)throw new Error(`Version 0 CID must use dag-pb (code: ${$r}) block encoding`);return new r(e,t,n,n.bytes)}case 1:{let s=Al(e,t,n.bytes);return new r(e,t,n,s)}default:throw new Error("Invalid version")}}static createV0(e){return r.create(0,$r,e)}static createV1(e,t){return r.create(1,e,t)}static decode(e){let[t,n]=r.decodeFirst(e);if(n.length!==0)throw new Error("Incorrect length");return t}static decodeFirst(e){let t=r.inspectBytes(e),n=t.size-t.multihashSize,s=we(e.subarray(n,n+t.multihashSize));if(s.byteLength!==t.multihashSize)throw new Error("Incorrect length");let i=s.subarray(t.multihashSize-t.digestSize),o=new zt(t.multihashCode,t.digestSize,i,s);return[t.version===0?r.createV0(o):r.createV1(t.codec,o),e.subarray(t.size)]}static inspectBytes(e){let t=0,n=()=>{let[d,h]=Wr(e.subarray(t));return t+=h,d},s=n(),i=$r;if(s===18?(s=0,t=0):i=n(),s!==0&&s!==1)throw new RangeError(`Invalid CID version ${s}`);let o=t,a=n(),c=n(),l=t+c,u=l-o;return{version:s,codec:i,multihashCode:a,digestSize:c,multihashSize:u,size:l}}static parse(e,t){let[n,s]=bp(e,t),i=r.decode(s);if(i.version===0&&e[0]!=="Q")throw Error("Version 0 CID string must not include multibase prefix");return ji(i).set(n,e),i}};$r=112,xp=18;vp=Symbol.for("@ipld/js-cid/CID")});function Ji(r,e){let t=0;for(let n=0;;n+=7){if(n>=64)throw new Error("protobuf: varint overflow");if(e>=r.length)throw new Error("protobuf: unexpected end of data");let s=r[e++];if(t+=n<28?(s&127)<<n:(s&127)*2**n,s<128)break}return[t,e]}function ys(r,e){let t;[t,e]=Ji(r,e);let n=e+t;if(t<0||n<0)throw new Error("protobuf: invalid length");if(n>r.length)throw new Error("protobuf: unexpected end of data");return[r.subarray(e,n),n]}function vl(r,e){let t;return[t,e]=Ji(r,e),[t&7,t>>3,e]}function Ep(r){let e={},t=r.length,n=0;for(;n<t;){let s,i;if([s,i,n]=vl(r,n),i===1){if(e.Hash)throw new Error("protobuf: (PBLink) duplicate Hash section");if(s!==2)throw new Error(`protobuf: (PBLink) wrong wireType (${s}) for Hash`);if(e.Name!==void 0)throw new Error("protobuf: (PBLink) invalid order, found Name before Hash");if(e.Tsize!==void 0)throw new Error("protobuf: (PBLink) invalid order, found Tsize before Hash");[e.Hash,n]=ys(r,n)}else if(i===2){if(e.Name!==void 0)throw new Error("protobuf: (PBLink) duplicate Name section");if(s!==2)throw new Error(`protobuf: (PBLink) wrong wireType (${s}) for Name`);if(e.Tsize!==void 0)throw new Error("protobuf: (PBLink) invalid order, found Tsize before Name");let o;[o,n]=ys(r,n),e.Name=kp.decode(o)}else if(i===3){if(e.Tsize!==void 0)throw new Error("protobuf: (PBLink) duplicate Tsize section");if(s!==0)throw new Error(`protobuf: (PBLink) wrong wireType (${s}) for Tsize`);[e.Tsize,n]=Ji(r,n)}else throw new Error(`protobuf: (PBLink) invalid fieldNumber, expected 1, 2 or 3, got ${i}`)}if(n>t)throw new Error("protobuf: (PBLink) unexpected end of data");return e}function kl(r){let e=r.length,t=0,n,s=!1,i;for(;t<e;){let a,c;if([a,c,t]=vl(r,t),a!==2)throw new Error(`protobuf: (PBNode) invalid wireType, expected 2, got ${a}`);if(c===1){if(i)throw new Error("protobuf: (PBNode) duplicate Data section");[i,t]=ys(r,t),n&&(s=!0)}else if(c===2){if(s)throw new Error("protobuf: (PBNode) duplicate Links section");n||(n=[]);let l;[l,t]=ys(r,t),n.push(Ep(l))}else throw new Error(`protobuf: (PBNode) invalid fieldNumber, expected 1 or 2, got ${c}`)}if(t>e)throw new Error("protobuf: (PBNode) unexpected end of data");let o={};return i&&(o.Data=i),o.Links=n||[],o}var kp,El=p(()=>{"use strict";kp=new TextDecoder});function Pp(r,e){let t=e.length;if(typeof r.Tsize=="number"){if(r.Tsize<0)throw new Error("Tsize cannot be negative");if(!Number.isSafeInteger(r.Tsize))throw new Error("Tsize too large for encoding");t=qr(e,t,r.Tsize)-1,e[t]=24}if(typeof r.Name=="string"){let n=Pl.encode(r.Name);t-=n.length,e.set(n,t),t=qr(e,t,n.length)-1,e[t]=18}return r.Hash&&(t-=r.Hash.length,e.set(r.Hash,t),t=qr(e,t,r.Hash.length)-1,e[t]=10),e.length-t}function Il(r){let e=Bp(r),t=new Uint8Array(e),n=e;if(r.Data&&(n-=r.Data.length,t.set(r.Data,n),n=qr(t,n,r.Data.length)-1,t[n]=10),r.Links)for(let s=r.Links.length-1;s>=0;s--){let i=Pp(r.Links[s],t.subarray(0,n));n-=i,n=qr(t,n,i)-1,t[n]=18}return t}function Ip(r){let e=0;if(r.Hash){let t=r.Hash.length;e+=1+t+Ht(t)}if(typeof r.Name=="string"){let t=Pl.encode(r.Name).length;e+=1+t+Ht(t)}return typeof r.Tsize=="number"&&(e+=1+Ht(r.Tsize)),e}function Bp(r){let e=0;if(r.Data){let t=r.Data.length;e+=1+t+Ht(t)}if(r.Links)for(let t of r.Links){let n=Ip(t);e+=1+n+Ht(n)}return e}function qr(r,e,t){e-=Ht(t);let n=e;for(;t>=Cp;)r[e++]=t&127|128,t/=128;for(;t>=128;)r[e++]=t&127|128,t>>>=7;return r[e]=t,n}function Ht(r){return r%2===0&&r++,Math.floor((Dp(r)+6)/7)}function Dp(r){let e=0;return r>=Cl&&(r=Math.floor(r/Cl),e=32),r>=65536&&(r>>>=16,e+=16),r>=256&&(r>>>=8,e+=8),e+Tp[r]}var Pl,Cl,Cp,Tp,Bl=p(()=>{"use strict";Pl=new TextEncoder,Cl=2**32,Cp=2**31;Tp=[0,1,2,2,3,3,3,3,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8]});function Tl(r,e){if(r===e)return 0;let t=r.Name?Qi.encode(r.Name):[],n=e.Name?Qi.encode(e.Name):[],s=t.length,i=n.length;for(let o=0,a=Math.min(s,i);o<a;++o)if(t[o]!==n[o]){s=t[o],i=n[o];break}return s<i?-1:i<s?1:0}function Dl(r,e){return!Object.keys(r).some(t=>!e.includes(t))}function Rl(r){if(typeof r.asCID=="object"){let t=V.asCID(r);if(!t)throw new TypeError("Invalid DAG-PB form");return{Hash:t}}if(typeof r!="object"||Array.isArray(r))throw new TypeError("Invalid DAG-PB form");let e={};if(r.Hash){let t=V.asCID(r.Hash);try{t||(typeof r.Hash=="string"?t=V.parse(r.Hash):r.Hash instanceof Uint8Array&&(t=V.decode(r.Hash)))}catch(n){throw new TypeError(`Invalid DAG-PB form: ${n.message}`)}t&&(e.Hash=t)}if(!e.Hash)throw new TypeError("Invalid DAG-PB form");return typeof r.Name=="string"&&(e.Name=r.Name),typeof r.Tsize=="number"&&(e.Tsize=r.Tsize),e}function Z(r){if((r instanceof Uint8Array||typeof r=="string")&&(r={Data:r}),typeof r!="object"||Array.isArray(r))throw new TypeError("Invalid DAG-PB form");let e={};if(r.Data!==void 0)if(typeof r.Data=="string")e.Data=Qi.encode(r.Data);else if(r.Data instanceof Uint8Array)e.Data=r.Data;else throw new TypeError("Invalid DAG-PB form");if(r.Links!==void 0)if(Array.isArray(r.Links))e.Links=r.Links.map(Rl),e.Links.sort(Tl);else throw new TypeError("Invalid DAG-PB form");else e.Links=[];return e}function Zi(r){if(!r||typeof r!="object"||Array.isArray(r)||r instanceof Uint8Array||r["/"]&&r["/"]===r.bytes)throw new TypeError("Invalid DAG-PB form");if(!Dl(r,Rp))throw new TypeError("Invalid DAG-PB form (extraneous properties)");if(r.Data!==void 0&&!(r.Data instanceof Uint8Array))throw new TypeError("Invalid DAG-PB form (Data must be bytes)");if(!Array.isArray(r.Links))throw new TypeError("Invalid DAG-PB form (Links must be a list)");for(let e=0;e<r.Links.length;e++){let t=r.Links[e];if(!t||typeof t!="object"||Array.isArray(t)||t instanceof Uint8Array||t["/"]&&t["/"]===t.bytes)throw new TypeError("Invalid DAG-PB form (bad link)");if(!Dl(t,Fp))throw new TypeError("Invalid DAG-PB form (extraneous properties on link)");if(t.Hash===void 0)throw new TypeError("Invalid DAG-PB form (link must have a Hash)");if(t.Hash==null||!t.Hash["/"]||t.Hash["/"]!==t.Hash.bytes)throw new TypeError("Invalid DAG-PB form (link Hash must be a CID)");if(t.Name!==void 0&&typeof t.Name!="string")throw new TypeError("Invalid DAG-PB form (link Name must be a string)");if(t.Tsize!==void 0){if(typeof t.Tsize!="number"||t.Tsize%1!==0)throw new TypeError("Invalid DAG-PB form (link Tsize must be an integer)");if(t.Tsize<0)throw new TypeError("Invalid DAG-PB form (link Tsize cannot be negative)")}if(e>0&&Tl(t,r.Links[e-1])===-1)throw new TypeError("Invalid DAG-PB form (links must be sorted by Name bytes)")}}function Fl(r,e=[]){return Z({Data:r,Links:e})}function Ml(r,e,t){return Rl({Hash:t,Name:r,Tsize:e})}function Nl(r){return r instanceof ArrayBuffer?new Uint8Array(r,0,r.byteLength):r}var Rp,Fp,Qi,Ul=p(()=>{"use strict";ht();Rp=["Data","Links"],Fp=["Hash","Name","Tsize"],Qi=new TextEncoder});var Hr={};k(Hr,{code:()=>Np,createLink:()=>Ml,createNode:()=>Fl,decode:()=>Up,encode:()=>X,name:()=>Mp,prepare:()=>Z,validate:()=>Zi});function X(r){Zi(r);let e={};return r.Links&&(e.Links=r.Links.map(t=>{let n={};return t.Hash&&(n.Hash=t.Hash.bytes),t.Name!==void 0&&(n.Name=t.Name),t.Tsize!==void 0&&(n.Tsize=t.Tsize),n})),r.Data&&(e.Data=r.Data),Il(e)}function Up(r){let e=Nl(r),t=kl(e),n={};return t.Data&&(n.Data=t.Data),t.Links&&(n.Links=t.Links.map(s=>{let i={};try{i.Hash=V.decode(s.Hash)}catch{}if(!i.Hash)throw new Error("Invalid Hash field found in link, expected CID");return s.Name!==void 0&&(i.Name=s.Name),s.Tsize!==void 0&&(i.Tsize=s.Tsize),i})),n}var Mp,Np,ft=p(()=>{"use strict";ht();El();Bl();Ul();Mp="dag-pb",Np=112});var Vt,Vr,Xi=p(()=>{"use strict";Vt=class Vt extends Error{constructor(t="Invalid type"){super(t);f(this,"name",Vt.name);f(this,"code",Vt.code)}};f(Vt,"name","InvalidTypeError"),f(Vt,"code","ERR_INVALID_TYPE");Vr=Vt});function Gr(r){if(r<Lp)return 1;if(r<_p)return 2;if(r<Kp)return 3;if(r<Ll)return 4;if(r<_l)return 5;if(r<Kl)return 6;if(r<Ol)return 7;if(Number.MAX_SAFE_INTEGER!=null&&r>Number.MAX_SAFE_INTEGER)throw new RangeError("Could not encode varint");return 8}function zl(r,e,t=0){switch(Gr(r)){case 8:e[t++]=r&255|G,r/=128;case 7:e[t++]=r&255|G,r/=128;case 6:e[t++]=r&255|G,r/=128;case 5:e[t++]=r&255|G,r/=128;case 4:e[t++]=r&255|G,r>>>=7;case 3:e[t++]=r&255|G,r>>>=7;case 2:e[t++]=r&255|G,r>>>=7;case 1:{e[t++]=r&255,r>>>=7;break}default:throw new Error("unreachable")}return e}function Wl(r,e){let t=r[e],n=0;if(n+=t&Ve,t<G||(t=r[e+1],n+=(t&Ve)<<7,t<G)||(t=r[e+2],n+=(t&Ve)<<14,t<G)||(t=r[e+3],n+=(t&Ve)<<21,t<G)||(t=r[e+4],n+=(t&Ve)*Ll,t<G)||(t=r[e+5],n+=(t&Ve)*_l,t<G)||(t=r[e+6],n+=(t&Ve)*Kl,t<G)||(t=r[e+7],n+=(t&Ve)*Ol,t<G))return n;throw new RangeError("Could not decode varint")}var Lp,_p,Kp,Ll,_l,Kl,Ol,G,Ve,eo=p(()=>{"use strict";ut();Lp=Math.pow(2,7),_p=Math.pow(2,14),Kp=Math.pow(2,21),Ll=Math.pow(2,28),_l=Math.pow(2,35),Kl=Math.pow(2,42),Ol=Math.pow(2,49),G=128,Ve=127});function Op(r){return r.buffer instanceof ArrayBuffer}function $l(r){return Op(r)?r:r.slice()}var ql=p(()=>{"use strict"});function Hl(r,e,t){to[0]=r,e[t]=Ge[0],e[t+1]=Ge[1],e[t+2]=Ge[2],e[t+3]=Ge[3]}function Vl(r,e){return Ge[0]=r[e],Ge[1]=r[e+1],Ge[2]=r[e+2],Ge[3]=r[e+3],to[0]}function Gl(r,e,t){ro[0]=r,e[t]=W[0],e[t+1]=W[1],e[t+2]=W[2],e[t+3]=W[3],e[t+4]=W[4],e[t+5]=W[5],e[t+6]=W[6],e[t+7]=W[7]}function Yl(r,e){return W[0]=r[e],W[1]=r[e+1],W[2]=r[e+2],W[3]=r[e+3],W[4]=r[e+4],W[5]=r[e+5],W[6]=r[e+6],W[7]=r[e+7],ro[0]}var to,Ge,ro,W,no=p(()=>{"use strict";to=new Float32Array([-0]),Ge=new Uint8Array(to.buffer);ro=new Float64Array([-0]),W=new Uint8Array(ro.buffer)});var zp,Wp,oe,pt,jl,so=p(()=>{"use strict";zp=BigInt(Number.MAX_SAFE_INTEGER),Wp=BigInt(Number.MIN_SAFE_INTEGER),oe=class r{constructor(e,t){f(this,"lo");f(this,"hi");this.lo=e|0,this.hi=t|0}toNumber(e=!1){if(!e&&this.hi>>>31>0){let t=~this.lo+1>>>0,n=~this.hi>>>0;return t===0&&(n=n+1>>>0),-(t+n*4294967296)}return this.lo+this.hi*4294967296}toBigInt(e=!1){if(e)return BigInt(this.lo>>>0)+(BigInt(this.hi>>>0)<<32n);if(this.hi>>>31){let t=~this.lo+1>>>0,n=~this.hi>>>0;return t===0&&(n=n+1>>>0),-(BigInt(t)+(BigInt(n)<<32n))}return BigInt(this.lo>>>0)+(BigInt(this.hi>>>0)<<32n)}toString(e=!1){return this.toBigInt(e).toString()}zzEncode(){let e=this.hi>>31;return this.hi=((this.hi<<1|this.lo>>>31)^e)>>>0,this.lo=(this.lo<<1^e)>>>0,this}zzDecode(){let e=-(this.lo&1);return this.lo=((this.lo>>>1|this.hi<<31)^e)>>>0,this.hi=(this.hi>>>1^e)>>>0,this}length(){let e=this.lo,t=(this.lo>>>28|this.hi<<4)>>>0,n=this.hi>>>24;return n===0?t===0?e<16384?e<128?1:2:e<2097152?3:4:t<16384?t<128?5:6:t<2097152?7:8:n<128?9:10}static fromBigInt(e){if(e===0n)return pt;if(e<zp&&e>Wp)return this.fromNumber(Number(e));let t=e<0n;t&&(e=-e);let n=e>>32n,s=e-(n<<32n);return t&&(n=~n|0n,s=~s|0n,++s>jl&&(s=0n,++n>jl&&(n=0n))),new r(Number(s),Number(n))}static fromNumber(e){if(e===0)return pt;let t=e<0;t&&(e=-e);let n=e>>>0,s=(e-n)/4294967296>>>0;return t&&(s=~s>>>0,n=~n>>>0,++n>4294967295&&(n=0,++s>4294967295&&(s=0))),new r(n,s)}static from(e){return typeof e=="number"?r.fromNumber(e):typeof e=="bigint"?r.fromBigInt(e):typeof e=="string"?r.fromBigInt(BigInt(e)):e.low!=null||e.high!=null?new r(e.low>>>0,e.high>>>0):pt}},pt=new oe(0,0);pt.toBigInt=function(){return 0n};pt.zzEncode=pt.zzDecode=function(){return this};pt.length=function(){return 1};jl=4294967296n});function Jl(r){let e=0,t=0;for(let n=0;n<r.length;++n)t=r.charCodeAt(n),t<128?e+=1:t<2048?e+=2:(t&64512)===55296&&(r.charCodeAt(n+1)&64512)===56320?(++n,e+=4):e+=3;return e}function Ql(r,e,t){if(t-e<1)return"";let s,i=[],o=0,a;for(;e<t;)a=r[e++],a<128?i[o++]=a:a>191&&a<224?i[o++]=(a&31)<<6|r[e++]&63:a>239&&a<365?(a=((a&7)<<18|(r[e++]&63)<<12|(r[e++]&63)<<6|r[e++]&63)-65536,i[o++]=55296+(a>>10),i[o++]=56320+(a&1023)):i[o++]=(a&15)<<12|(r[e++]&63)<<6|r[e++]&63,o>8191&&((s??(s=[])).push(String.fromCharCode.apply(String,i)),o=0);return s!=null?(o>0&&s.push(String.fromCharCode.apply(String,i.slice(0,o))),s.join("")):String.fromCharCode.apply(String,i.slice(0,o))}function io(r,e,t){let n=t,s,i;for(let o=0;o<r.length;++o)s=r.charCodeAt(o),s<128?e[t++]=s:s<2048?(e[t++]=s>>6|192,e[t++]=s&63|128):(s&64512)===55296&&((i=r.charCodeAt(o+1))&64512)===56320?(s=65536+((s&1023)<<10)+(i&1023),++o,e[t++]=s>>18|240,e[t++]=s>>12&63|128,e[t++]=s>>6&63|128,e[t++]=s&63|128):(e[t++]=s>>12|224,e[t++]=s>>6&63|128,e[t++]=s&63|128);return t-n}var oo=p(()=>{"use strict"});function Se(r,e){return RangeError(`index out of range: ${r.pos} + ${e??1} > ${r.len}`)}function ws(r,e){return(r[e-4]|r[e-3]<<8|r[e-2]<<16|r[e-1]<<24)>>>0}function Yr(r){return new ao(r instanceof Uint8Array?r:r.subarray())}var ao,bs=p(()=>{"use strict";eo();ql();no();so();oo();ao=class{constructor(e){f(this,"buf");f(this,"pos");f(this,"len");f(this,"_slice",Uint8Array.prototype.subarray);this.buf=$l(e),this.pos=0,this.len=e.length}uint32(){let e=4294967295;if(e=(this.buf[this.pos]&127)>>>0,this.buf[this.pos++]<128||(e=(e|(this.buf[this.pos]&127)<<7)>>>0,this.buf[this.pos++]<128)||(e=(e|(this.buf[this.pos]&127)<<14)>>>0,this.buf[this.pos++]<128)||(e=(e|(this.buf[this.pos]&127)<<21)>>>0,this.buf[this.pos++]<128)||(e=(e|(this.buf[this.pos]&15)<<28)>>>0,this.buf[this.pos++]<128))return e;if((this.pos+=5)>this.len)throw this.pos=this.len,Se(this,10);return e}int32(){return this.uint32()|0}sint32(){let e=this.uint32();return e>>>1^-(e&1)|0}bool(){return this.uint32()!==0}fixed32(){if(this.pos+4>this.len)throw Se(this,4);return ws(this.buf,this.pos+=4)}sfixed32(){if(this.pos+4>this.len)throw Se(this,4);return ws(this.buf,this.pos+=4)|0}float(){if(this.pos+4>this.len)throw Se(this,4);let e=Vl(this.buf,this.pos);return this.pos+=4,e}double(){if(this.pos+8>this.len)throw Se(this,4);let e=Yl(this.buf,this.pos);return this.pos+=8,e}bytes(){let e=this.uint32(),t=this.pos,n=this.pos+e;if(n>this.len)throw Se(this,e);return this.pos+=e,t===n?new Uint8Array(0):this.buf.subarray(t,n)}string(){let e=this.bytes();return Ql(e,0,e.length)}skip(e){if(typeof e=="number"){if(this.pos+e>this.len)throw Se(this,e);this.pos+=e}else do if(this.pos>=this.len)throw Se(this);while((this.buf[this.pos++]&128)!==0);return this}skipType(e){switch(e){case 0:this.skip();break;case 1:this.skip(8);break;case 2:this.skip(this.uint32());break;case 3:for(;(e=this.uint32()&7)!==4;)this.skipType(e);break;case 5:this.skip(4);break;default:throw Error(`invalid wire type ${e} at offset ${this.pos}`)}return this}readLongVarint(){let e=new oe(0,0),t=0;if(this.len-this.pos>4){for(;t<4;++t)if(e.lo=(e.lo|(this.buf[this.pos]&127)<<t*7)>>>0,this.buf[this.pos++]<128)return e;if(e.lo=(e.lo|(this.buf[this.pos]&127)<<28)>>>0,e.hi=(e.hi|(this.buf[this.pos]&127)>>4)>>>0,this.buf[this.pos++]<128)return e;t=0}else{for(;t<3;++t){if(this.pos>=this.len)throw Se(this);if(e.lo=(e.lo|(this.buf[this.pos]&127)<<t*7)>>>0,this.buf[this.pos++]<128)return e}return e.lo=(e.lo|(this.buf[this.pos++]&127)<<t*7)>>>0,e}if(this.len-this.pos>4){for(;t<5;++t)if(e.hi=(e.hi|(this.buf[this.pos]&127)<<t*7+3)>>>0,this.buf[this.pos++]<128)return e}else for(;t<5;++t){if(this.pos>=this.len)throw Se(this);if(e.hi=(e.hi|(this.buf[this.pos]&127)<<t*7+3)>>>0,this.buf[this.pos++]<128)return e}throw Error("invalid varint encoding")}readFixed64(){if(this.pos+8>this.len)throw Se(this,8);let e=ws(this.buf,this.pos+=4),t=ws(this.buf,this.pos+=4);return new oe(e,t)}int64(){return this.readLongVarint().toBigInt()}int64Number(){return this.readLongVarint().toNumber()}int64String(){return this.readLongVarint().toString()}uint64(){return this.readLongVarint().toBigInt(!0)}uint64Number(){let e=Wl(this.buf,this.pos);return this.pos+=Gr(e),e}uint64String(){return this.readLongVarint().toString(!0)}sint64(){return this.readLongVarint().zzDecode().toBigInt()}sint64Number(){return this.readLongVarint().zzDecode().toNumber()}sint64String(){return this.readLongVarint().zzDecode().toString()}fixed64(){return this.readFixed64().toBigInt()}fixed64Number(){return this.readFixed64().toNumber()}fixed64String(){return this.readFixed64().toString()}sfixed64(){return this.readFixed64().toBigInt()}sfixed64Number(){return this.readFixed64().toNumber()}sfixed64String(){return this.readFixed64().toString()}}});function jr(r,e,t){let n=Yr(r);return e.decode(n,void 0,t)}var Xl=p(()=>{"use strict";bs()});var co={};k(co,{base10:()=>$p});var $p,eu=p(()=>{"use strict";be();$p=He({prefix:"9",name:"base10",alphabet:"0123456789"})});var lo={};k(lo,{base16:()=>qp,base16upper:()=>Hp});var qp,Hp,tu=p(()=>{"use strict";be();qp=U({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),Hp=U({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4})});var uo={};k(uo,{base2:()=>Vp});var Vp,ru=p(()=>{"use strict";be();Vp=U({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1})});var ho={};k(ho,{base256emoji:()=>Qp});function jp(r){return r.reduce((e,t)=>(e+=Gp[t],e),"")}function Jp(r){let e=[];for(let t of r){let n=t.codePointAt(0);if(n==null)throw new Error(`Invalid character: ${t}`);let s=Yp[n];if(s==null)throw new Error(`Non-base256emoji character: ${t}`);e.push(s)}return new Uint8Array(e)}var nu,Gp,Yp,Qp,su=p(()=>{"use strict";be();nu=Array.from("\u{1F680}\u{1FA90}\u2604\u{1F6F0}\u{1F30C}\u{1F311}\u{1F312}\u{1F313}\u{1F314}\u{1F315}\u{1F316}\u{1F317}\u{1F318}\u{1F30D}\u{1F30F}\u{1F30E}\u{1F409}\u2600\u{1F4BB}\u{1F5A5}\u{1F4BE}\u{1F4BF}\u{1F602}\u2764\u{1F60D}\u{1F923}\u{1F60A}\u{1F64F}\u{1F495}\u{1F62D}\u{1F618}\u{1F44D}\u{1F605}\u{1F44F}\u{1F601}\u{1F525}\u{1F970}\u{1F494}\u{1F496}\u{1F499}\u{1F622}\u{1F914}\u{1F606}\u{1F644}\u{1F4AA}\u{1F609}\u263A\u{1F44C}\u{1F917}\u{1F49C}\u{1F614}\u{1F60E}\u{1F607}\u{1F339}\u{1F926}\u{1F389}\u{1F49E}\u270C\u2728\u{1F937}\u{1F631}\u{1F60C}\u{1F338}\u{1F64C}\u{1F60B}\u{1F497}\u{1F49A}\u{1F60F}\u{1F49B}\u{1F642}\u{1F493}\u{1F929}\u{1F604}\u{1F600}\u{1F5A4}\u{1F603}\u{1F4AF}\u{1F648}\u{1F447}\u{1F3B6}\u{1F612}\u{1F92D}\u2763\u{1F61C}\u{1F48B}\u{1F440}\u{1F62A}\u{1F611}\u{1F4A5}\u{1F64B}\u{1F61E}\u{1F629}\u{1F621}\u{1F92A}\u{1F44A}\u{1F973}\u{1F625}\u{1F924}\u{1F449}\u{1F483}\u{1F633}\u270B\u{1F61A}\u{1F61D}\u{1F634}\u{1F31F}\u{1F62C}\u{1F643}\u{1F340}\u{1F337}\u{1F63B}\u{1F613}\u2B50\u2705\u{1F97A}\u{1F308}\u{1F608}\u{1F918}\u{1F4A6}\u2714\u{1F623}\u{1F3C3}\u{1F490}\u2639\u{1F38A}\u{1F498}\u{1F620}\u261D\u{1F615}\u{1F33A}\u{1F382}\u{1F33B}\u{1F610}\u{1F595}\u{1F49D}\u{1F64A}\u{1F639}\u{1F5E3}\u{1F4AB}\u{1F480}\u{1F451}\u{1F3B5}\u{1F91E}\u{1F61B}\u{1F534}\u{1F624}\u{1F33C}\u{1F62B}\u26BD\u{1F919}\u2615\u{1F3C6}\u{1F92B}\u{1F448}\u{1F62E}\u{1F646}\u{1F37B}\u{1F343}\u{1F436}\u{1F481}\u{1F632}\u{1F33F}\u{1F9E1}\u{1F381}\u26A1\u{1F31E}\u{1F388}\u274C\u270A\u{1F44B}\u{1F630}\u{1F928}\u{1F636}\u{1F91D}\u{1F6B6}\u{1F4B0}\u{1F353}\u{1F4A2}\u{1F91F}\u{1F641}\u{1F6A8}\u{1F4A8}\u{1F92C}\u2708\u{1F380}\u{1F37A}\u{1F913}\u{1F619}\u{1F49F}\u{1F331}\u{1F616}\u{1F476}\u{1F974}\u25B6\u27A1\u2753\u{1F48E}\u{1F4B8}\u2B07\u{1F628}\u{1F31A}\u{1F98B}\u{1F637}\u{1F57A}\u26A0\u{1F645}\u{1F61F}\u{1F635}\u{1F44E}\u{1F932}\u{1F920}\u{1F927}\u{1F4CC}\u{1F535}\u{1F485}\u{1F9D0}\u{1F43E}\u{1F352}\u{1F617}\u{1F911}\u{1F30A}\u{1F92F}\u{1F437}\u260E\u{1F4A7}\u{1F62F}\u{1F486}\u{1F446}\u{1F3A4}\u{1F647}\u{1F351}\u2744\u{1F334}\u{1F4A3}\u{1F438}\u{1F48C}\u{1F4CD}\u{1F940}\u{1F922}\u{1F445}\u{1F4A1}\u{1F4A9}\u{1F450}\u{1F4F8}\u{1F47B}\u{1F910}\u{1F92E}\u{1F3BC}\u{1F975}\u{1F6A9}\u{1F34E}\u{1F34A}\u{1F47C}\u{1F48D}\u{1F4E3}\u{1F942}"),Gp=nu.reduce((r,e,t)=>(r[t]=e,r),[]),Yp=nu.reduce((r,e,t)=>{let n=e.codePointAt(0);if(n==null)throw new Error(`Invalid character: ${e}`);return r[n]=t,r},[]);Qp=_t({prefix:"\u{1F680}",name:"base256emoji",encode:jp,decode:Jp})});var po={};k(po,{base64:()=>fo,base64pad:()=>Zp,base64url:()=>Xp,base64urlpad:()=>em});var fo,Zp,Xp,em,mo=p(()=>{"use strict";be();fo=U({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),Zp=U({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),Xp=U({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),em=U({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6})});var go={};k(go,{base8:()=>tm});var tm,iu=p(()=>{"use strict";be();tm=U({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3})});var yo={};k(yo,{identity:()=>rm});var rm,ou=p(()=>{"use strict";qe();be();rm=_t({prefix:"\0",name:"identity",encode:r=>ll(r),decode:r=>cl(r)})});var ob,ab,au=p(()=>{"use strict";ob=new TextEncoder,ab=new TextDecoder});var Yt={};k(Yt,{code:()=>Gt,decode:()=>om,encode:()=>im,name:()=>sm});function im(r){return we(r)}function om(r){return we(r)}var sm,Gt,Jr=p(()=>{"use strict";qe();sm="raw",Gt=85});var wo={};k(wo,{identity:()=>lm});function cm(r,e){if(e?.truncate!=null&&e.truncate!==r.byteLength){if(e.truncate<0||e.truncate>r.byteLength)throw new Error(`Invalid truncate option, must be less than or equal to ${r.byteLength}`);r=r.subarray(0,e.truncate)}return Wt(cu,lu(r))}var cu,am,lu,lm,uu=p(()=>{"use strict";qe();qt();cu=0,am="identity",lu=we;lm={code:cu,name:am,encode:lu,digest:cm}});function mt({name:r,code:e,encode:t,minDigestLength:n,maxDigestLength:s}){return new bo(r,e,t,n,s)}function du(r,e,t){if(t!=null&&t!==r.byteLength){if(t>r.byteLength)throw new Error(`Invalid truncate option, must be less than or equal to ${r.byteLength}`);r=r.subarray(0,t)}return Wt(e,r)}var um,bo,Ss=p(()=>{"use strict";qt();um=20;bo=class{constructor(e,t,n,s,i){f(this,"name");f(this,"code");f(this,"encode");f(this,"minDigestLength");f(this,"maxDigestLength");this.name=e,this.code=t,this.encode=n,this.minDigestLength=s??um,this.maxDigestLength=i}digest(e,t){if(t?.truncate!=null){if(t.truncate<this.minDigestLength)throw new Error(`Invalid truncate option, must be greater than or equal to ${this.minDigestLength}`);if(this.maxDigestLength!=null&&t.truncate>this.maxDigestLength)throw new Error(`Invalid truncate option, must be less than or equal to ${this.maxDigestLength}`)}if(e instanceof Uint8Array){let n=this.encode(e);return n instanceof Uint8Array?du(n,this.code,t?.truncate):n.then(s=>du(s,this.code,t?.truncate))}else throw Error("Unknown type, must be binary type")}}});var Ao={};k(Ao,{sha256:()=>So,sha512:()=>dm});function fu(r){return async e=>new Uint8Array(await crypto.subtle.digest(r,e))}var So,dm,xo=p(()=>{"use strict";Ss();So=mt({name:"sha2-256",code:18,encode:fu("SHA-256")}),dm=mt({name:"sha2-512",code:19,encode:fu("SHA-512")})});var pu=p(()=>{"use strict"});var mu=p(()=>{"use strict"});var gu=p(()=>{"use strict"});var yu=p(()=>{"use strict"});var wu=p(()=>{"use strict";pu();mu();gu();Yi();yu()});var bu=p(()=>{"use strict";qe();ht();qt();Ss();ms();wu()});var vo,Ab,Su=p(()=>{"use strict";eu();tu();ru();su();Kr();Hi();fs();mo();iu();ou();au();Jr();uu();xo();bu();vo={...yo,...uo,...go,...co,...lo,...$i,...qi,...Vi,...po,...ho},Ab={...Ao,...wo}});function xu(r,e,t,n){return{name:r,prefix:e,encoder:{name:r,prefix:e,encode:t},decoder:{decode:n}}}var Au,ko,hm,vu,ku=p(()=>{"use strict";Su();ut();Au=xu("utf8","u",r=>"u"+new TextDecoder("utf8").decode(r),r=>new TextEncoder().encode(r.substring(1))),ko=xu("ascii","a",r=>{let e="a";for(let t=0;t<r.length;t++)e+=String.fromCharCode(r[t]);return e},r=>{r=r.substring(1);let e=ie(r.length);for(let t=0;t<r.length;t++)e[t]=r.charCodeAt(t);return e}),hm={utf8:Au,"utf-8":Au,hex:vo.base16,latin1:ko,ascii:ko,binary:ko,...vo},vu=hm});function jt(r,e="utf8"){let t=vu[e];if(t==null)throw new Error(`Unsupported encoding "${e}"`);return t.decoder.decode(`${t.prefix}${r}`)}var As=p(()=>{"use strict";ku()});function Eo(r){let e=r??8192,t=e>>>1,n,s=e;return function(o){if(o<1||o>t)return ie(o);s+o>e&&(n=ie(e),s=0);let a=n.subarray(s,s+=o);return(s&7)!==0&&(s=(s|7)+1),a}}var Eu=p(()=>{"use strict";ut()});function Co(){}function pm(r){return globalThis.Buffer!=null?ie(r):fm(r)}function Po(r,e,t){e[t]=r&255}function mm(r,e,t){for(;r>127;)e[t++]=r&127|128,r>>>=7;e[t]=r}function xs(r,e,t){for(;r.hi!==0;)e[t++]=r.lo&127|128,r.lo=(r.lo>>>7|r.hi<<25)>>>0,r.hi>>>=7;for(;r.lo>127;)e[t++]=r.lo&127|128,r.lo=r.lo>>>7;e[t++]=r.lo}function Qr(r,e,t){e[t]=r&255,e[t+1]=r>>>8&255,e[t+2]=r>>>16&255,e[t+3]=r>>>24}function gm(r,e,t){e.set(r,t)}function ym(r,e,t){e.set(r,t)}function wm(r,e,t){r.length<40?io(r,e,t):e.utf8Write!=null?e.utf8Write(r,t):e.set(jt(r),t)}function Do(){return new Zr}var gt,Io,fm,Zr,Bo,To=p(()=>{"use strict";eo();ut();As();no();so();Eu();oo();gt=class{constructor(e,t,n){f(this,"fn");f(this,"len");f(this,"next");f(this,"val");this.fn=e,this.len=t,this.next=void 0,this.val=n}};Io=class{constructor(e){f(this,"head");f(this,"tail");f(this,"len");f(this,"next");this.head=e.head,this.tail=e.tail,this.len=e.len,this.next=e.states}},fm=Eo();Zr=class{constructor(){f(this,"len");f(this,"head");f(this,"tail");f(this,"states");this.len=0,this.head=new gt(Co,0,0),this.tail=this.head,this.states=null}_push(e,t,n){return this.tail=this.tail.next=new gt(e,t,n),this.len+=t,this}uint32(e){return this.len+=(this.tail=this.tail.next=new Bo((e=e>>>0)<128?1:e<16384?2:e<2097152?3:e<268435456?4:5,e)).len,this}int32(e){return e<0?this._push(xs,10,oe.fromNumber(e)):this.uint32(e)}sint32(e){return this.uint32((e<<1^e>>31)>>>0)}uint64(e){let t=oe.fromBigInt(e);return this._push(xs,t.length(),t)}uint64Number(e){return this._push(zl,Gr(e),e)}uint64String(e){return this.uint64(BigInt(e))}int64(e){return this.uint64(e)}int64Number(e){return this.uint64Number(e)}int64String(e){return this.uint64String(e)}sint64(e){let t=oe.fromBigInt(e).zzEncode();return this._push(xs,t.length(),t)}sint64Number(e){let t=oe.fromNumber(e).zzEncode();return this._push(xs,t.length(),t)}sint64String(e){return this.sint64(BigInt(e))}bool(e){return this._push(Po,1,e?1:0)}fixed32(e){return this._push(Qr,4,e>>>0)}sfixed32(e){return this.fixed32(e)}fixed64(e){let t=oe.fromBigInt(e);return this._push(Qr,4,t.lo)._push(Qr,4,t.hi)}fixed64Number(e){let t=oe.fromNumber(e);return this._push(Qr,4,t.lo)._push(Qr,4,t.hi)}fixed64String(e){return this.fixed64(BigInt(e))}sfixed64(e){return this.fixed64(e)}sfixed64Number(e){return this.fixed64Number(e)}sfixed64String(e){return this.fixed64String(e)}float(e){return this._push(Hl,4,e)}double(e){return this._push(Gl,8,e)}bytes(e){let t=e.length>>>0;return t===0?this._push(Po,1,0):this.uint32(t)._push(gm,t,e)}string(e){let t=Jl(e);return t!==0?this.uint32(t)._push(io,t,e):this._push(Po,1,0)}fork(){return this.states=new Io(this),this.head=this.tail=new gt(Co,0,0),this.len=0,this}reset(){return this.states!=null?(this.head=this.states.head,this.tail=this.states.tail,this.len=this.states.len,this.states=this.states.next):(this.head=this.tail=new gt(Co,0,0),this.len=0),this}ldelim(){let e=this.head,t=this.tail,n=this.len;return this.reset().uint32(n),n!==0&&(this.tail.next=e.next,this.tail=t,this.len+=n),this}finish(){let e=this.head.next,t=pm(this.len),n=0;for(;e!=null;)e.fn(e.val,t,n),n+=e.len,e=e.next;return t}};Bo=class extends gt{constructor(t,n){super(mm,t,n);f(this,"next");this.next=void 0}};globalThis.Buffer!=null&&(Zr.prototype.bytes=function(r){let e=r.length>>>0;return this.uint32(e),e>0&&this._push(ym,e,r),this},Zr.prototype.string=function(r){let e=globalThis.Buffer.byteLength(r);return this.uint32(e),e>0&&this._push(wm,e,r),this})});function Xr(r,e){let t=Do();return e.encode(r,t,{lengthDelimited:!1}),t.finish()}var Cu=p(()=>{"use strict";To()});function*en(r,e,t){let n=Yr(r);yield*e.stream(n,void 0,"$",t)}var Pu=p(()=>{"use strict";bs()});function ks(r,e,t,n,s){return{name:r,type:e,encode:t,decode:n,stream:s}}var vs,Ro=p(()=>{"use strict";vs={VARINT:0,BIT64:1,LENGTH_DELIMITED:2,START_GROUP:3,END_GROUP:4,BIT32:5}});function Fo(r){function e(i){if(r[i.toString()]==null)throw new Error("Invalid enum value");return r[i]}let t=function(o,a){let c=e(o);a.int32(c)},n=function(o){let a=o.int32();return e(a)},s=function*(o){let a=o.int32();yield e(a)};return ks("enum",vs.VARINT,t,n,s)}var Iu=p(()=>{"use strict";Ro()});function tn(r,e,t){return ks("message",vs.LENGTH_DELIMITED,r,e,t)}var Bu=p(()=>{"use strict";Ro()});var rn,Du=p(()=>{"use strict";Xl();Cu();Pu();Iu();Bu();bs();To();rn=class extends Error{constructor(){super(...arguments);f(this,"code","ERR_MAX_LENGTH");f(this,"name","MaxLengthError")}}});var Ae,nn,Tu,Ru=p(()=>{"use strict";Du();(function(r){let e;(function(a){a.Raw="Raw",a.Directory="Directory",a.File="File",a.Metadata="Metadata",a.Symlink="Symlink",a.HAMTShard="HAMTShard"})(e=r.DataType||(r.DataType={}));let t;(function(a){a[a.Raw=0]="Raw",a[a.Directory=1]="Directory",a[a.File=2]="File",a[a.Metadata=3]="Metadata",a[a.Symlink=4]="Symlink",a[a.HAMTShard=5]="HAMTShard"})(t||(t={})),(function(a){a.codec=()=>Fo(t)})(e=r.DataType||(r.DataType={}));let n;r.codec=()=>(n==null&&(n=tn((a,c,l={})=>{if(l.lengthDelimited!==!1&&c.fork(),a.Type!=null&&(c.uint32(8),r.DataType.codec().encode(a.Type,c)),a.Data!=null&&(c.uint32(18),c.bytes(a.Data)),a.filesize!=null&&(c.uint32(24),c.uint64(a.filesize)),a.blocksizes!=null&&a.blocksizes.length>0)for(let u of a.blocksizes)c.uint32(32),c.uint64(u);a.hashType!=null&&(c.uint32(40),c.uint64(a.hashType)),a.fanout!=null&&(c.uint32(48),c.uint64(a.fanout)),a.mode!=null&&(c.uint32(56),c.uint32(a.mode)),a.mtime!=null&&(c.uint32(66),nn.codec().encode(a.mtime,c)),l.lengthDelimited!==!1&&c.ldelim()},(a,c,l={})=>{let u={blocksizes:[]},d=c==null?a.len:a.pos+c;for(;a.pos<d;){let h=a.uint32();switch(h>>>3){case 1:{u.Type=r.DataType.codec().decode(a);break}case 2:{u.Data=a.bytes();break}case 3:{u.filesize=a.uint64();break}case 4:{if(l.limits?.blocksizes!=null&&u.blocksizes.length===l.limits.blocksizes)throw new rn('Decode error - repeated field "blocksizes" had too many elements');u.blocksizes.push(a.uint64());break}case 5:{u.hashType=a.uint64();break}case 6:{u.fanout=a.uint64();break}case 7:{u.mode=a.uint32();break}case 8:{u.mtime=nn.codec().decode(a,a.uint32(),{limits:l.limits?.mtime});break}default:{a.skipType(h&7);break}}}return u},function*(a,c,l,u={}){let d={blocksizes:0},h=c==null?a.len:a.pos+c;for(;a.pos<h;){let m=a.uint32();switch(m>>>3){case 1:{yield{field:`${l}.Type`,value:r.DataType.codec().decode(a)};break}case 2:{yield{field:`${l}.Data`,value:a.bytes()};break}case 3:{yield{field:`${l}.filesize`,value:a.uint64()};break}case 4:{if(u.limits?.blocksizes!=null&&d.blocksizes===u.limits.blocksizes)throw new rn('Streaming decode error - repeated field "blocksizes" had too many elements');yield{field:`${l}.blocksizes[]`,index:d.blocksizes,value:a.uint64()},d.blocksizes++;break}case 5:{yield{field:`${l}.hashType`,value:a.uint64()};break}case 6:{yield{field:`${l}.fanout`,value:a.uint64()};break}case 7:{yield{field:`${l}.mode`,value:a.uint32()};break}case 8:{yield*nn.codec().stream(a,a.uint32(),`${l}.mtime`,{limits:u.limits?.mtime});break}default:{a.skipType(m&7);break}}}})),n);function s(a){return Xr(a,r.codec())}r.encode=s;function i(a,c){return jr(a,r.codec(),c)}r.decode=i;function o(a,c){return en(a,r.codec(),c)}r.stream=o})(Ae||(Ae={}));(function(r){let e;r.codec=()=>(e==null&&(e=tn((i,o,a={})=>{a.lengthDelimited!==!1&&o.fork(),i.Seconds!=null&&(o.uint32(8),o.int64(i.Seconds)),i.FractionalNanoseconds!=null&&(o.uint32(21),o.fixed32(i.FractionalNanoseconds)),a.lengthDelimited!==!1&&o.ldelim()},(i,o,a={})=>{let c={},l=o==null?i.len:i.pos+o;for(;i.pos<l;){let u=i.uint32();switch(u>>>3){case 1:{c.Seconds=i.int64();break}case 2:{c.FractionalNanoseconds=i.fixed32();break}default:{i.skipType(u&7);break}}}return c},function*(i,o,a,c={}){let l=o==null?i.len:i.pos+o;for(;i.pos<l;){let u=i.uint32();switch(u>>>3){case 1:{yield{field:`${a}.Seconds`,value:i.int64()};break}case 2:{yield{field:`${a}.FractionalNanoseconds`,value:i.fixed32()};break}default:{i.skipType(u&7);break}}}})),e);function t(i){return Xr(i,r.codec())}r.encode=t;function n(i,o){return jr(i,r.codec(),o)}r.decode=n;function s(i,o){return en(i,r.codec(),o)}r.stream=s})(nn||(nn={}));(function(r){let e;r.codec=()=>(e==null&&(e=tn((i,o,a={})=>{a.lengthDelimited!==!1&&o.fork(),i.MimeType!=null&&(o.uint32(10),o.string(i.MimeType)),a.lengthDelimited!==!1&&o.ldelim()},(i,o,a={})=>{let c={},l=o==null?i.len:i.pos+o;for(;i.pos<l;){let u=i.uint32();u>>>3===1?c.MimeType=i.string():i.skipType(u&7)}return c},function*(i,o,a,c={}){let l=o==null?i.len:i.pos+o;for(;i.pos<l;){let u=i.uint32();u>>>3===1?yield{field:`${a}.MimeType`,value:i.string()}:i.skipType(u&7)}})),e);function t(i){return Xr(i,r.codec())}r.encode=t;function n(i,o){return jr(i,r.codec(),o)}r.decode=n;function s(i,o){return en(i,r.codec(),o)}r.stream=s})(Tu||(Tu={}))});var Fu,bm,Mu,Nu,Y,Jt=p(()=>{"use strict";Xi();Ru();Xi();Fu={Raw:"raw",Directory:"directory",File:"file",Metadata:"metadata",Symlink:"symlink",HAMTShard:"hamt-sharded-directory"},bm=["directory","hamt-sharded-directory"],Mu=parseInt("0644",8),Nu=parseInt("0755",8),Y=class r{constructor(e={type:"file"}){f(this,"type");f(this,"data");f(this,"blockSizes");f(this,"hashType");f(this,"fanout");f(this,"mtime");f(this,"_mode");f(this,"_originalMode");let{type:t,data:n,blockSizes:s,hashType:i,fanout:o,mtime:a,mode:c}=e;if(t!=null&&!Object.values(Fu).includes(t))throw new Vr("Type: "+t+" is not valid");this.type=t??"file",this.data=n,this.hashType=i,this.fanout=o,this.blockSizes=s??[],this._originalMode=0,this.mode=c,this.mtime=a}static unmarshal(e){let t=Ae.decode(e),n=new r({type:Fu[t.Type!=null?t.Type.toString():"File"],data:t.Data,blockSizes:t.blocksizes,mode:t.mode,mtime:t.mtime!=null?{secs:t.mtime.Seconds??0n,nsecs:t.mtime.FractionalNanoseconds}:void 0,fanout:t.fanout});return n._originalMode=t.mode??0,n}set mode(e){e==null?this._mode=this.isDirectory()?Nu:Mu:this._mode=e&4095}get mode(){return this._mode}isDirectory(){return bm.includes(this.type)}addBlockSize(e){this.blockSizes.push(e)}removeBlockSize(e){this.blockSizes.splice(e,1)}fileSize(){if(this.isDirectory())return 0n;let e=0n;return this.blockSizes.forEach(t=>{e+=t}),this.data!=null&&(e+=BigInt(this.data.length)),e}marshal(){let e;switch(this.type){case"raw":e=Ae.DataType.Raw;break;case"directory":e=Ae.DataType.Directory;break;case"file":e=Ae.DataType.File;break;case"metadata":e=Ae.DataType.Metadata;break;case"symlink":e=Ae.DataType.Symlink;break;case"hamt-sharded-directory":e=Ae.DataType.HAMTShard;break;default:throw new Vr(`Type: ${e} is not valid`)}let t=this.data;(this.data==null||this.data.length===0)&&(t=void 0);let n;this.mode!=null&&(n=this._originalMode&4294963200|(this.mode??0),n===Mu&&!this.isDirectory()&&(n=void 0),n===Nu&&this.isDirectory()&&(n=void 0));let s;return this.mtime!=null&&(s={Seconds:this.mtime.secs,FractionalNanoseconds:this.mtime.nsecs}),Ae.encode({Type:e,Data:t,filesize:this.isDirectory()?void 0:this.fileSize(),blocksizes:this.blockSizes,hashType:this.hashType,fanout:this.fanout,mode:n,mtime:s})}}});var Me,Es=p(()=>{"use strict";Me=class extends Event{constructor(t,n){super(t);f(this,"type");f(this,"detail");this.type=t,this.detail=n}}});var de,Qt=p(()=>{"use strict";ft();ht();xo();de=async(r,e,t)=>{t.codec==null&&(t.codec=Hr);let n=await So.digest(r),s=V.create(t.cidVersion??1,t.codec.code,n);return await e.put(s,r,t),s}});function Lu(r){return async function*(t,n){let s=0n;for await(let i of t.content)yield async()=>{let o,a={codec:Hr,cidVersion:r.cidVersion,onProgress:r.onProgress};r.rawLeaves?(a.codec=Yt,a.cidVersion=1):(o=new Y({type:r.leafType,data:i}),i=X({Data:o.marshal(),Links:[]}));let c=await de(i,n,a);return s+=BigInt(i.byteLength),r.onProgress?.(new Me("unixfs:importer:progress:file:write",{bytesWritten:s,cid:c,path:t.path})),{cid:c,unixfs:o,size:BigInt(i.length),block:i}}}}var _u=p(()=>{"use strict";ft();Jt();Jr();Es();Qt()});var Zt,nr,Xt,Mo,er,No,tr,Uo,rr,xe,Ye,sn=p(()=>{"use strict";Zt=class Zt extends Error{constructor(t="Invalid parameters"){super(t);f(this,"name",Zt.name);f(this,"code",Zt.code)}};f(Zt,"name","InvalidParametersError"),f(Zt,"code","ERR_INVALID_PARAMS");nr=Zt,Xt=class Xt extends Error{constructor(t="Invalid avg chunk size"){super(t);f(this,"name",Xt.name);f(this,"code",Xt.code)}};f(Xt,"name","InvalidAvgChunkSizeError"),f(Xt,"code","ERR_INVALID_AVG_CHUNK_SIZE");Mo=Xt,er=class er extends Error{constructor(t="Invalid chunk size"){super(t);f(this,"name",er.name);f(this,"code",er.code)}};f(er,"name","InvalidChunkSizeError"),f(er,"code","ERR_INVALID_CHUNK_SIZE");No=er,tr=class tr extends Error{constructor(t="Invalid min chunk size"){super(t);f(this,"name",tr.name);f(this,"code",tr.code)}};f(tr,"name","InvalidMinChunkSizeError"),f(tr,"code","ERR_INVALID_MIN_CHUNK_SIZE");Uo=tr,rr=class rr extends Error{constructor(t="Invalid content"){super(t);f(this,"name",rr.name);f(this,"code",rr.code)}};f(rr,"name","InvalidContentError"),f(rr,"code","ERR_INVALID_CONTENT");xe=rr,Ye=class extends Error{constructor(){super(...arguments);f(this,"name",xe.name);f(this,"code",xe.code)}};f(Ye,"name","InvalidShardingStrategyError"),f(Ye,"code","ERR_SHARDING_STRATEGY")});var Ku,Ou=p(()=>{"use strict";ft();Jt();Qt();Ku=async(r,e,t)=>{let n=new Y({type:"directory",mtime:r.mtime,mode:r.mode}),s=X(Z({Data:n.marshal()})),i=await de(s,e,t),o=r.path;return{cid:i,path:o,unixfs:n,size:BigInt(s.length),originalPath:r.originalPath,block:s}}});async function*Sm(r,e,t){let n=-1,s;for await(let i of Ur(t.bufferImporter(r,e),t.blockWriteConcurrency)){if(n++,n===0){s={...i,single:!0};continue}else n===1&&s!=null&&(yield{...s,block:void 0,single:void 0},s=void 0);yield{...i,block:void 0}}s!=null&&(yield s)}function zu(r){return r.single===!0}var Am,Wu,$u=p(()=>{"use strict";ft();Jt();Ui();Jr();Es();Qt();Am=(r,e,t)=>async function(s){if(s.length===1&&zu(s[0])&&t.reduceSingleLeafToSelf){let u=s[0],d=u.block;return zu(u)&&(r.mtime!==void 0||r.mode!==void 0)&&(u.unixfs=new Y({type:"file",mtime:r.mtime,mode:r.mode,data:u.block}),d={Data:u.unixfs.marshal(),Links:[]},u.block=X(Z(d)),u.cid=await de(u.block,e,{...t,cidVersion:t.cidVersion}),u.size=BigInt(u.block.length)),t.onProgress?.(new Me("unixfs:importer:progress:file:layout",{cid:u.cid,path:r.originalPath})),{cid:u.cid,path:r.path,unixfs:u.unixfs,size:u.size,originalPath:r.originalPath}}let i=new Y({type:"file",mtime:r.mtime,mode:r.mode}),o=s.filter(u=>u.cid.code===Gt&&u.size>0||u.unixfs!=null&&u.unixfs.data==null&&u.unixfs.fileSize()>0n?!0:!!u.unixfs?.data?.length).map(u=>u.cid.code===Gt?(i.addBlockSize(u.size),{Name:"",Tsize:Number(u.size),Hash:u.cid}):(u.unixfs?.data==null?i.addBlockSize(u.unixfs?.fileSize()??0n):i.addBlockSize(BigInt(u.unixfs.data.length)),{Name:"",Tsize:Number(u.size),Hash:u.cid})),a={Data:i.marshal(),Links:o},c=X(Z(a)),l=await de(c,e,t);return t.onProgress?.(new Me("unixfs:importer:progress:file:layout",{cid:l,path:r.originalPath})),{cid:l,path:r.path,unixfs:i,size:BigInt(c.length+a.Links.reduce((u,d)=>u+(d.Tsize??0),0)),originalPath:r.originalPath,block:c}},Wu=async(r,e,t)=>t.layout(Sm(r,e,t),Am(r,e,t))});function xm(r){return Symbol.iterator in r}function vm(r){return Symbol.asyncIterator in r}function km(r){try{if(r instanceof Uint8Array)return(async function*(){yield r})();if(xm(r))return(async function*(){yield*r})();if(vm(r))return r}catch{throw new xe("Content was invalid")}throw new xe("Content was invalid")}function qu(r){return async function*(t,n){for await(let s of t){let i;if(s.path!=null&&(i=s.path,s.path=s.path.split("/").filter(o=>o!=null&&o!==".").join("/")),Em(s)){let o={path:s.path,mtime:s.mtime,mode:s.mode,content:(async function*(){let c=0n;for await(let l of r.chunker(r.chunkValidator(km(s.content)))){let u=BigInt(l.byteLength);c+=u,r.onProgress?.(new Me("unixfs:importer:progress:file:read",{bytesRead:c,chunkSize:u,path:s.path})),yield l}})(),originalPath:i},a=r.fileBuilder??Wu;yield async()=>a(o,n,r)}else if(s.path!=null){let o={path:s.path,mtime:s.mtime,mode:s.mode,originalPath:i},a=r.dirBuilder??Ku;yield async()=>a(o,n,r)}else throw new Error("Import candidate must have content or path or both")}}}function Em(r){return r.content!=null}var Hu=p(()=>{"use strict";Es();sn();Ou();$u()});var Vu,Gu=p(()=>{"use strict";As();sn();Vu=()=>async function*(e){for await(let t of e){if(t.length===void 0)throw new xe("Content was invalid");if(typeof t=="string"||t instanceof String)yield jt(t.toString());else if(Array.isArray(t))yield Uint8Array.from(t);else if(t instanceof Uint8Array)yield t;else throw new xe("Content was invalid")}}});function Lo(r){let e=r?.maxChildrenPerNode??Cm;return async function t(n,s){let i=[];for await(let o of cs(n,e))i.push(await s(o));return i.length>1?t(i,s):i[0]}}var Cm,Yu=p(()=>{"use strict";Ni();Cm=174});function Pm(r){return r[Symbol.asyncIterator]!=null}function Im(r){if(Pm(r))return(async()=>{let t=[];for await(let n of r)t.push(n);return t})();let e=[];for(let t of r)e.push(t);return e}var ju,Ju=p(()=>{"use strict";ju=Im});var Qu=p(()=>{"use strict";Yu()});var Pe,Cs=p(()=>{"use strict";ht();Pe=class{constructor(e,t){f(this,"options");f(this,"root");f(this,"dir");f(this,"path");f(this,"dirty");f(this,"flat");f(this,"parent");f(this,"parentKey");f(this,"unixfs");f(this,"mode");f(this,"mtime");f(this,"cid");f(this,"size");f(this,"nodeSize");this.options=t??{},this.root=e.root,this.dir=e.dir,this.path=e.path,this.dirty=e.dirty,this.flat=e.flat,this.parent=e.parent,this.parentKey=e.parentKey,this.unixfs=e.unixfs,this.mode=e.mode,this.mtime=e.mtime}}});function Dm(r){let e=0;return r>=4294967296&&(r=Math.floor(r/4294967296),e=32),r>=65536&&(r>>>=16,e+=16),r>=256&&(r>>>=8,e+=8),e+Bm[r]}function je(r){return r%2===0&&r++,Math.floor((Dm(r)+6)/7)}function Ps(r){let e=0;for(let t=0;t<r.length;t++){let n=r.charCodeAt(t);n<128?e++:n<2048?e+=2:n>=55296&&n<=56319&&t+1<r.length?(t++,e+=4):e+=3}return e}function Zu(r,e,t){let n=1+je(e)+e;return n+=1+je(r)+r,n+=1+je(t),1+je(n)+n}function Xu(r,e){let t=2;if(r!==void 0&&r!==Tm&&(t+=1+je(r)),e!=null){let n=0,s=Number(e.secs);s<0?n+=11:n+=1+je(s),e.nsecs!=null&&(n+=5),t+=1+je(n)+n}return 1+je(t)+t}var Bm,Tm,ed=p(()=>{"use strict";Bm=[0,1,2,2,3,3,3,3,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8];Tm=493});function _o(r,e){return e?.cid!=null&&e?.size!=null?r+e.cid.byteLength:0}function Ko(r,e){return e?.cid!=null&&e?.size!=null?Zu(r,e.cid.byteLength,Number(e.size)):0}var yt,Oo=p(()=>{"use strict";ft();Jt();Cs();zo();ed();Qt();yt=class extends Pe{constructor(t,n){super(t,n);f(this,"_children");this._children=new Map}async put(t,n){if(this.nodeSize!==void 0){let s=this._children.get(t),i=Ps(t),o=this.options?.shardSplitStrategy;if(o==="links-bytes")this.nodeSize-=_o(i,s),this.nodeSize+=_o(i,n);else if(o==="block-bytes")this.nodeSize-=Ko(i,s),this.nodeSize+=Ko(i,n);else throw new Ye(`Invalid shardSplitStrategy: ${o}`);this.nodeSize<0&&(this.nodeSize=void 0)}this.cid=void 0,this.size=void 0,this._children.set(t,n)}async get(t){return Promise.resolve(this._children.get(t))}childCount(){return this._children.size}directChildrenCount(){return this.childCount()}onlyChild(){return this._children.values().next().value}*eachChildSeries(){for(let[t,n]of this._children.entries())yield{key:t,child:n}}marshal(){let t=new Y({type:"directory",mtime:this.mtime,mode:this.mode}),n=[];for(let[i,o]of this._children.entries())if(!(o.size==null||o.cid==null)){if(o.cid==null)throw new Error("Directory contents must be flushed before marshaling");n.push({Hash:o.cid,Name:i,Tsize:o.size==null?void 0:Number(o.size)})}let s={Data:t.marshal(),Links:n};return X(Z(s))}async estimateNodeSize(){if(this.nodeSize!==void 0)return this.nodeSize;let t=this.options?.shardSplitStrategy;if(t==="links-bytes"){this.nodeSize=0;for(let[n,s]of this._children.entries())this.nodeSize+=_o(Ps(n),s)}else if(t==="block-bytes"){this.nodeSize=Xu(this.mode,this.mtime);for(let[n,s]of this._children.entries())this.nodeSize+=Ko(Ps(n),s)}else throw new Ye(`Invalid shardSplitStrategy: ${t}`);return this.nodeSize}async*flush(t){let n=[];for(let[l,u]of this._children.entries()){let d=u;if(u instanceof Pe)for await(let h of u.flush(t))d=h,yield h;d.size!=null&&d.cid!=null&&n.push({Name:l,Tsize:Number(d.size),Hash:d.cid})}let s=new Y({type:"directory",mtime:this.mtime,mode:this.mode}),i={Data:s.marshal(),Links:n},o=X(Z(i)),a=await de(o,t,this.options),c=o.length+i.Links.reduce((l,u)=>l+(u.Tsize??0),0);this.cid=a,this.size=c,yield{cid:a,unixfs:s,path:this.path,size:BigInt(c)}}}});function Je(r,e){let t=r.lo+e.lo>>>0,n=r.hi+e.hi+(t<r.lo?1:0)>>>0;return{lo:t,hi:n}}function Rm(r,e){return r+e>>>0}function he(r,e){let t=r.lo&65535,n=r.lo>>>16,s=e.lo&65535,i=e.lo>>>16,o=t*s,a=t*i,c=n*s,l=n*i,u=(o>>>16)+(a&65535)+(c&65535)>>>0,d=(u<<16|o&65535)>>>0,h=l+(a>>>16)+(c>>>16)+(u>>>16),m=Math.imul(r.lo,e.hi),g=Math.imul(r.hi,e.lo),w=h+m+g>>>0;return{lo:d,hi:w}}function wt(r,e){return Math.imul(r,e)>>>0}function sr(r,e){if(e===0)return r;if(e===32)return{lo:r.hi,hi:r.lo};if(e<32){let s=(r.lo<<e|r.hi>>>32-e)>>>0,i=(r.hi<<e|r.lo>>>32-e)>>>0;return{lo:s,hi:i}}e-=32;let t=(r.hi<<e|r.lo>>>32-e)>>>0,n=(r.lo<<e|r.hi>>>32-e)>>>0;return{lo:t,hi:n}}function M(r,e){return{lo:(r.lo^e.lo)>>>0,hi:(r.hi^e.hi)>>>0}}function Wo(r,e){if(e===0)return r;if(e<32){let t=(r.lo>>>e|r.hi<<32-e)>>>0,n=r.hi>>>e;return{lo:t,hi:n}}return{lo:r.hi>>>e-32,hi:0}}function D(r,e){return{lo:r>>>0,hi:e>>>0}}function $o(r,e){return(r<<e|r>>>32-e)>>>0}function td(r,e){let t=e*8,n=r[t]|r[t+1]<<8|r[t+2]<<16|r[t+3]<<24,s=r[t+4]|r[t+5]<<8|r[t+6]<<16|r[t+7]<<24;return{lo:n>>>0,hi:s>>>0}}function Fm(r,e){let t=e*4;return(r[t]|r[t+1]<<8|r[t+2]<<16|r[t+3]<<24)>>>0}function rd(r){return r=M(r,Wo(r,33)),r=he(r,D(3981806797,4283543511)),r=M(r,Wo(r,33)),r=he(r,D(444984403,3301882366)),r=M(r,Wo(r,33)),r}function Mm(r){return r^=r>>>16,r=wt(r,2246822507),r^=r>>>13,r=wt(r,3266489909),r^=r>>>16,r}function qo(r,e=0){let t=D(e,0),n=D(e,0),s=r.length,i=Math.floor(s/16),o=D(289559509,2277735313),a=D(658871167,1291169091);for(let h=0;h<i;h++){let m=td(r,h*2),g=td(r,h*2+1);m=he(m,o),m=sr(m,31),m=he(m,a),t=M(t,m),t=sr(t,27),t=Je(t,n),t=Je(he(t,D(5,0)),D(1390208809,0)),g=he(g,a),g=sr(g,33),g=he(g,o),n=M(n,g),n=sr(n,31),n=Je(n,t),n=Je(he(n,D(5,0)),D(944331445,0))}let c=D(0,0),l=D(0,0),u=r.slice(i*16);switch(u.length){case 15:l=M(l,D(0,u[14]<<16));case 14:l=M(l,D(0,u[13]<<8));case 13:l=M(l,D(0,u[12]));case 12:l=M(l,D(u[11]<<24,0));case 11:l=M(l,D(u[10]<<16,0));case 10:l=M(l,D(u[9]<<8,0));case 9:l=M(l,D(u[8],0)),l=he(l,a),l=sr(l,33),l=he(l,o),n=M(n,l);case 8:c=M(c,D(0,u[7]<<24));case 7:c=M(c,D(0,u[6]<<16));case 6:c=M(c,D(0,u[5]<<8));case 5:c=M(c,D(0,u[4]));case 4:c=M(c,D(u[3]<<24,0));case 3:c=M(c,D(u[2]<<16,0));case 2:c=M(c,D(u[1]<<8,0));case 1:c=M(c,D(u[0],0)),c=he(c,o),c=sr(c,31),c=he(c,a),t=M(t,c)}let d=D(s,0);return t=M(t,d),n=M(n,d),t=Je(t,n),n=Je(n,t),t=rd(t),n=rd(n),t=Je(t,n),n=Je(n,t),new Uint8Array([t.hi>>>24&255,t.hi>>>16&255,t.hi>>>8&255,t.hi&255,t.lo>>>24&255,t.lo>>>16&255,t.lo>>>8&255,t.lo&255,n.hi>>>24&255,n.hi>>>16&255,n.hi>>>8&255,n.hi&255,n.lo>>>24&255,n.lo>>>16&255,n.lo>>>8&255,n.lo&255])}function nd(r,e=0){let t=e>>>0,n=r.length,s=Math.floor(n/4),i=3432918353,o=461845907;for(let l=0;l<s;l++){let u=Fm(r,l);u=wt(u,i),u=$o(u,15),u=wt(u,o),t^=u,t=$o(t,13),t=Rm(wt(t,5),3864292196)}let a=r.slice(s*4),c=0;switch(a.length){case 3:c^=a[2]<<16;case 2:c^=a[1]<<8;case 1:c^=a[0],c=wt(c,i),c=$o(c,15),c=wt(c,o),t^=c}return t^=n,t=Mm(t),t}var sd=p(()=>{"use strict"});function Um(r){let e=new Array(4);for(let t=0;t<4;t++)e[t]=r&255,r=r>>8;return new Uint8Array(e)}var nS,id,sS,od=p(()=>{"use strict";Ss();sd();nS=mt({name:"murmur3-32",code:35,encode:r=>Um(nd(r))}),id=mt({name:"murmur3-128",code:34,encode:r=>qo(r)}),sS=mt({name:"murmur3-x64-64",code:34,encode:r=>qo(r).subarray(0,8)})});var ir,Qe,ad=p(()=>{"use strict";ir=class ir extends Error{constructor(t="Not Found"){super(t);f(this,"name",ir.name);f(this,"code",ir.code)}};f(ir,"name","NotFoundError"),f(ir,"code","ERR_NOT_FOUND");Qe=ir});var Is=p(()=>{"use strict";ad()});var Ie,on=p(()=>{"use strict";Ie=class{has(e,t){return Promise.reject(new Error(".has is not implemented"))}put(e,t,n){return Promise.reject(new Error(".put is not implemented"))}async*putMany(e,t){for await(let{cid:n,bytes:s}of e)await this.put(n,s,t),yield n}get(e,t){throw new Error(".get is not implemented")}async*getMany(e,t){for await(let n of e)yield{cid:n,bytes:this.get(n,t)}}delete(e,t){return Promise.reject(new Error(".delete is not implemented"))}async*deleteMany(e,t){for await(let n of e)await this.delete(n,t),yield n}async*getAll(e){throw new Error(".getAll is not implemented")}}});var or,Ho=p(()=>{"use strict";Is();on();or=class extends Ie{put(e,t,n){return n?.signal?.throwIfAborted(),e}get(e,t){throw t?.signal?.throwIfAborted(),new Qe}has(e,t){return t?.signal?.throwIfAborted(),!1}async delete(e,t){t?.signal?.throwIfAborted()}async*getAll(e){e?.signal?.throwIfAborted()}}});var ud=P((mS,ld)=>{"use strict";ld.exports=class{constructor(){this._bitArrays=[],this._data=[],this._length=0,this._changedLength=!1,this._changedData=!1}set(e,t){let n=this._internalPositionFor(e,!1);if(t===void 0)n!==-1&&(this._unsetInternalPos(n),this._unsetBit(e),this._changedLength=!0,this._changedData=!0);else{let s=!1;n===-1?(n=this._data.length,this._setBit(e),this._changedData=!0):s=!0,this._setInternalPos(n,e,t,s),this._changedLength=!0}}unset(e){this.set(e,void 0)}get(e){this._sortData();let t=this._internalPositionFor(e,!0);if(t!==-1)return this._data[t][1]}push(e){return this.set(this.length,e),this.length}get length(){if(this._sortData(),this._changedLength){let e=this._data[this._data.length-1];this._length=e?e[0]+1:0,this._changedLength=!1}return this._length}forEach(e){let t=0;for(;t<this.length;)e(this.get(t),t,this),t++}map(e){let t=0,n=new Array(this.length);for(;t<this.length;)n[t]=e(this.get(t),t,this),t++;return n}reduce(e,t){let n=0,s=t;for(;n<this.length;){let i=this.get(n);s=e(s,i,n),n++}return s}find(e){let t=0,n,s;for(;t<this.length&&!n;)s=this.get(t),n=e(s),t++;return n?s:void 0}_internalPositionFor(e,t){let n=this._bytePosFor(e,t);if(n>=this._bitArrays.length)return-1;let s=this._bitArrays[n],i=e-n*7;if(!((s&1<<i)>0))return-1;let a=this._bitArrays.slice(0,n).reduce(Lm,0),c=~(4294967295<<i+1),l=cd(s&c);return a+l-1}_bytePosFor(e,t){let n=Math.floor(e/7),s=n+1;for(;!t&&this._bitArrays.length<s;)this._bitArrays.push(0);return n}_setBit(e){let t=this._bytePosFor(e,!1);this._bitArrays[t]|=1<<e-t*7}_unsetBit(e){let t=this._bytePosFor(e,!1);this._bitArrays[t]&=~(1<<e-t*7)}_setInternalPos(e,t,n,s){let i=this._data,o=[t,n];if(s)this._sortData(),i[e]=o;else{if(i.length)if(i[i.length-1][0]>=t)i.push(o);else if(i[0][0]<=t)i.unshift(o);else{let a=Math.round(i.length/2);this._data=i.slice(0,a).concat(o).concat(i.slice(a))}else this._data.push(o);this._changedData=!0,this._changedLength=!0}}_unsetInternalPos(e){this._data.splice(e,1)}_sortData(){this._changedData&&this._data.sort(_m),this._changedData=!1}bitField(){let e=[],t=8,n=0,s=0,i,o=this._bitArrays.slice();for(;o.length||n;){n===0&&(i=o.shift(),n=7);let c=Math.min(n,t),l=~(255<<c),u=i&l;s|=u<<8-t,i=i>>>c,n-=c,t-=c,(!t||!n&&!o.length)&&(e.push(s),s=0,t=8)}for(var a=e.length-1;a>0&&e[a]===0;a--)e.pop();return e}compactArray(){return this._sortData(),this._data.map(Km)}};function Lm(r,e){return r+cd(e)}function cd(r){let e=r;return e=e-(e>>1&1431655765),e=(e&858993459)+(e>>2&858993459),(e+(e>>4)&252645135)*16843009>>24}function _m(r,e){return r[0]-e[0]}function Km(r){return r[1]}});function Om(r){return!!r}function zm(r,e){return r.key}function Wm(r){return r}async function hd(r,e,t){let n=[];for(let s of r._children.compactArray())if(s instanceof Ze)await hd(s,e,t);else{let i=await e(s);n.push({bitField:r._children.bitField(),children:i})}return t(n)}var dd,Ze,fd=p(()=>{"use strict";dd=z(ud(),1);As();Ze=class r{constructor(e,t,n=0){f(this,"_options");f(this,"_popCount");f(this,"_parent");f(this,"_posAtParent");f(this,"_children");f(this,"key");this._options=e,this._popCount=0,this._parent=t,this._posAtParent=n,this._children=new dd.default,this.key=null}async put(e,t){let n=await this._findNewBucketAndPos(e);n.bucket._putAt(n,e,t)}async get(e){let t=await this._findChild(e);if(t!=null)return t.value}async del(e){let t=await this._findPlace(e),n=t.bucket._at(t.pos);n!=null&&n.key===e&&t.bucket._delAt(t.pos)}leafCount(){return this._children.compactArray().reduce((t,n)=>n instanceof r?t+n.leafCount():t+1,0)}childrenCount(){return this._children.length}onlyChild(){return this._children.get(0)}*eachLeafSeries(){let e=this._children.compactArray();for(let t of e)t instanceof r?yield*t.eachLeafSeries():yield t}serialize(e,t){let n=[];return t(this._children.reduce((s,i,o)=>(i!=null&&(i instanceof r?s.push(i.serialize(e,t)):s.push(e(i,o))),s),n))}async asyncTransform(e,t){return hd(this,e,t)}toJSON(){return this.serialize(zm,Wm)}prettyPrint(){return JSON.stringify(this.toJSON(),null," ")}tableSize(){return Math.pow(2,this._options.bits)}async _findChild(e){let t=await this._findPlace(e),n=t.bucket._at(t.pos);if(!(n instanceof r)&&n!=null&&n.key===e)return n}async _findPlace(e){let t=this._options.hash(typeof e=="string"?jt(e):e),n=await t.take(this._options.bits),s=this._children.get(n);return s instanceof r?s._findPlace(t):{bucket:this,pos:n,hash:t,existingChild:s}}async _findNewBucketAndPos(e){let t=await this._findPlace(e);if(t.existingChild!=null&&t.existingChild.key!==e){let n=new r(this._options,t.bucket,t.pos);t.bucket._putObjectAt(t.pos,n);let s=await n._findPlace(t.existingChild.hash);return s.bucket._putAt(s,t.existingChild.key,t.existingChild.value),n._findNewBucketAndPos(t.hash)}return t}_putAt(e,t,n){this._putObjectAt(e.pos,{key:t,value:n,hash:e.hash})}_putObjectAt(e,t){this._children.get(e)==null&&this._popCount++,this._children.set(e,t)}_delAt(e){if(e===-1)throw new Error("Invalid position");this._children.get(e)!=null&&this._popCount--,this._children.unset(e),this._level()}_level(){if(this._parent!=null&&this._popCount<=1)if(this._popCount===1){let e=this._children.find(Om);if(e!=null&&!(e instanceof r)){let t=e.hash;t.untake(this._options.bits);let n={pos:this._posAtParent,hash:t,bucket:this._parent};this._parent._putAt(n,e.key,e.value)}}else this._parent._delAt(this._posAtParent)}_at(e){return this._children.get(e)}}});function Hm(r,e,t){let n=Vm(e,t);return(r&n)>>>e}function Vm(r,e){return $m[r]&qm[Math.min(e+r-1,7)]}var $m,qm,Bs,pd=p(()=>{"use strict";$m=[255,254,252,248,240,224,192,128],qm=[1,3,7,15,31,63,127,255],Bs=class{constructor(e){f(this,"_value");f(this,"_currentBytePos");f(this,"_currentBitPos");this._value=e,this._currentBytePos=e.length-1,this._currentBitPos=7}availableBits(){return this._currentBitPos+1+this._currentBytePos*8}totalBits(){return this._value.length*8}take(e){let t=e,n=0;for(;t>0&&this._haveBits();){let s=this._value[this._currentBytePos],i=this._currentBitPos+1,o=Math.min(i,t),a=Hm(s,i-o,o);n=(n<<o)+a,t-=o,this._currentBitPos-=o,this._currentBitPos<0&&(this._currentBitPos=7,this._currentBytePos--)}return n}untake(e){for(this._currentBitPos+=e;this._currentBitPos>7;)this._currentBitPos-=8,this._currentBytePos+=1}_haveBits(){return this._currentBytePos>=0}}});function md(r){function e(t){return t instanceof Ds?t:new Ds(t,r)}return e}var Ds,gd=p(()=>{"use strict";Li();pd();Ds=class{constructor(e,t){f(this,"_value");f(this,"_hashFn");f(this,"_depth");f(this,"_availableBits");f(this,"_currentBufferIndex");f(this,"_buffers");if(!(e instanceof Uint8Array))throw new Error("can only hash Uint8Arrays");this._value=e,this._hashFn=t,this._depth=-1,this._availableBits=0,this._currentBufferIndex=0,this._buffers=[]}async take(e){let t=e;for(;this._availableBits<t;)await this._produceMoreBits();let n=0;for(;t>0;){let s=this._buffers[this._currentBufferIndex],i=Math.min(s.availableBits(),t),o=s.take(i);n=(n<<i)+o,t-=i,this._availableBits-=i,s.availableBits()===0&&this._currentBufferIndex++}return n}untake(e){let t=e;for(;t>0;){let n=this._buffers[this._currentBufferIndex],s=Math.min(n.totalBits()-n.availableBits(),t);n.untake(s),t-=s,this._availableBits+=s,this._currentBufferIndex>0&&n.totalBits()===n.availableBits()&&(this._depth--,this._currentBufferIndex--)}}async _produceMoreBits(){this._depth++;let e=this._depth>0?Lr([this._value,Uint8Array.from([this._depth])]):this._value,t=await this._hashFn(e),n=new Bs(t);this._buffers.push(n),this._availableBits+=n.availableBits()}}});function yd(r){if(r==null||r.hashFn==null)throw new Error("please define an options.hashFn");let e={bits:r.bits??8,hash:md(r.hashFn)};return new Ze(e)}var wd=p(()=>{"use strict";fd();gd()});async function Gm(r){return(await id.encode(r)).slice(0,8).reverse()}async function*Sd(r,e,t,n){let s=r._children,i=(r.tableSize()-1).toString(16).length,o=[],a=0n;for(let g=0;g<s.length;g++){let w=s.get(g);if(w==null)continue;let b=g.toString(16).toUpperCase().padStart(i,"0");if(w instanceof Ze){let S;for await(let A of Sd(w,e,null,n))S=A;if(S==null)throw new Error("Could not flush sharded directory, no sub-shard found");o.push({Name:b,Tsize:Number(S.size),Hash:S.cid}),a+=S.size}else if(Ad(w.value)){let S=w.value,A;for await(let E of S.flush(e))A=E,yield A;if(A==null)throw new Error("Did not flush dir");let v=b+w.key;o.push({Name:v,Tsize:Number(A.size),Hash:A.cid}),a+=A.size}else{let S=w.value;if(S.cid==null)continue;let A=b+w.key,v=S.size;o.push({Name:A,Tsize:Number(v),Hash:S.cid}),a+=BigInt(v??0)}}let c=Uint8Array.from(s.bitField().reverse()),l=new Y({type:"hamt-sharded-directory",data:c,fanout:BigInt(r.tableSize()),hashType:_i,mtime:t?.mtime,mode:t?.mode}),u={Data:l.marshal(),Links:o},d=X(Z(u)),h=await de(d,e,n),m=BigInt(d.byteLength)+a;yield{cid:h,unixfs:l,size:m}}function Ad(r){return typeof r.flush=="function"}async function xd(r,e,t,n){let s=r._children,i=(r.tableSize()-1).toString(16).length,o=[],a=0;for(let h=0;h<s.length;h++){let m=s.get(h);if(m==null)continue;let g=h.toString(16).toUpperCase().padStart(i,"0");if(m instanceof Ze){let{size:w,cid:b}=await xd(m,null,t,n);o.push({Name:g,Tsize:Number(w),Hash:b}),a+=g.length+b.byteLength}else if(Ad(m.value)){let w=m.value,b=w.nodeSize;if(w.cid==null)throw new Error("Child directory has not been persisted");o.push({Name:g+m.key,Tsize:Number(b),Hash:w.cid}),a+=g.length+w.cid.byteLength}else{let w=m.value,b=g+m.key,S=w.size;o.push({Name:b,Tsize:Number(S),Hash:w.cid}),a+=g.length+w.cid.byteLength}}let c=Uint8Array.from(s.bitField().reverse()),l=new Y({type:"hamt-sharded-directory",data:c,fanout:BigInt(r.tableSize()),hashType:_i,mtime:e?.mtime,mode:e?.mode}),u=X(Z({Data:l.marshal(),Links:o}));return{cid:await de(u,t,n),size:n.shardSplitStrategy==="links-bytes"?a:u.length}}var Vo,bd,vd=p(()=>{"use strict";ft();od();Ho();wd();Jt();_r();Cs();Qt();Vo=class extends Pe{constructor(t,n){super(t,n);f(this,"bucket");this.bucket=yd({hashFn:Gm,bits:n.shardFanoutBits??us})}async put(t,n){this.cid=void 0,this.size=void 0,this.nodeSize=void 0,await this.bucket.put(t,n)}async get(t){return this.bucket.get(t)}childCount(){return this.bucket.leafCount()}directChildrenCount(){return this.bucket.childrenCount()}onlyChild(){return this.bucket.onlyChild()}*eachChildSeries(){for(let{key:t,value:n}of this.bucket.eachLeafSeries())yield{key:t,child:n}}async estimateNodeSize(){if(this.nodeSize!==void 0)return this.nodeSize;let t=new or,n=await xd(this.bucket,this,t,this.options);return this.nodeSize=n.size,this.nodeSize}async*flush(t){for await(let n of Sd(this.bucket,t,this,this.options))yield{...n,path:this.path}}},bd=Vo});async function Go(r,e){let t=e,n=e.options.shardSplitThresholdBytes??ds;e instanceof yt&&await e.estimateNodeSize()>n&&(t=await Ym(e));let s=t.parent;if(s!=null){if(t!==e){if(r!=null&&(r.parent=t),t.parentKey==null)throw new Error("No parent key found");await s.put(t.parentKey,t)}return Go(t,s)}return t}async function Ym(r){let e=new bd({root:r.root,dir:!0,parent:r.parent,parentKey:r.parentKey,path:r.path,dirty:r.dirty,flat:!1,mtime:r.mtime,mode:r.mode},r.options);for(let{key:t,child:n}of r.eachChildSeries())await e.put(t,n);return e}var kd=p(()=>{"use strict";_r();Oo();vd()});var Ed,Cd=p(()=>{"use strict";Ed=(r="")=>r.split(/(?<!\\)\//).filter(Boolean)});async function jm(r,e,t){let n=Ed(r.path??""),s=n.length-1,i=e,o="";for(let a=0;a<n.length;a++){let c=n[a];o+=`${o!==""?"/":""}${c}`;let l=a===s;if(i.dirty=!0,i.cid=void 0,i.size=void 0,l)await i.put(c,r),e=await Go(null,i);else{let u=await i.get(c);(u==null||!(u instanceof Pe))&&(u=new yt({root:!1,dir:!0,parent:i,parentKey:c,path:o,dirty:!0,flat:!0,mtime:u?.unixfs?.mtime,mode:u?.unixfs?.mode},t)),await i.put(c,u),i=u}}return e}async function*Pd(r,e){if(!(r instanceof Pe)){r.unixfs?.isDirectory()===!0&&(yield r);return}yield*r.flush(e)}function Id(r){return async function*(t,n){let s=new yt({root:!0,dir:!0,path:"",dirty:!0,flat:!0},r),i,o=!1;for await(let a of t){if(a==null)continue;let c=`${a.originalPath??""}`.split("/")[0];c!=null&&c!==""&&(i==null?(i=c,o=!0):i!==c&&(o=!1)),s=await jm(a,s,r),a.unixfs?.isDirectory()!==!0&&(yield a)}if(r.wrapWithDirectory||o&&s.childCount()>1)yield*Pd(s,n);else for(let a of s.eachChildSeries())a!=null&&(yield*Pd(a.child,n))}}var Bd=p(()=>{"use strict";Oo();Cs();kd();Cd()});var Dd={};k(Dd,{InvalidAvgChunkSizeError:()=>Mo,InvalidChunkSizeError:()=>No,InvalidContentError:()=>xe,InvalidMinChunkSizeError:()=>Uo,InvalidParametersError:()=>nr,InvalidShardingStrategyError:()=>Ye,importByteStream:()=>Zm,importBytes:()=>Qm,importDirectory:()=>Jm,importFile:()=>jo,importer:()=>Yo});async function*Yo(r,e,t={}){let n;Symbol.asyncIterator in r||Symbol.iterator in r?n=r:n=[r];let s,i;t.profile==="unixfs-v0-2015"?(t.shardSplitStrategy=t.shardSplitStrategy??"links-bytes",t.cidVersion=t.cidVersion??0,t.rawLeaves=t.rawLeaves??!1,s=hs,i=174):t.profile==="unixfs-v1-2025"&&(t.shardSplitStrategy=t.shardSplitStrategy??"block-bytes",t.cidVersion=t.cidVersion??1,t.rawLeaves=t.rawLeaves??!0,s=Zc,i=1024);let o=t.wrapWithDirectory??nl,a=t.shardSplitThresholdBytes??ds,c=t.shardSplitStrategy??Qc,l=t.shardFanoutBits??us,u=t.cidVersion??1,d=t.rawLeaves??rl,h=t.leafType??sl,m=t.fileImportConcurrency??Xc,g=t.blockWriteConcurrency??el,w=t.reduceSingleLeafToSelf??tl,b=t.chunker??il({chunkSize:s}),S=t.chunkValidator??Vu(),A=t.dagBuilder??qu({chunker:b,chunkValidator:S,wrapWithDirectory:o,layout:t.layout??Lo({maxChildrenPerNode:i}),bufferImporter:t.bufferImporter??Lu({cidVersion:u,rawLeaves:d,leafType:h,onProgress:t.onProgress}),blockWriteConcurrency:g,reduceSingleLeafToSelf:w,cidVersion:u,onProgress:t.onProgress,dirBuilder:t.dirBuilder,fileBuilder:t.fileBuilder}),v=t.treeBuilder??Id({wrapWithDirectory:o,shardSplitThresholdBytes:a,shardSplitStrategy:c,shardFanoutBits:l,cidVersion:u,onProgress:t.onProgress});for await(let E of v(Ur(A(n,e),m),e))yield{cid:E.cid,path:E.path,unixfs:E.unixfs,size:E.size}}async function jo(r,e,t={}){let n=await Mi(Yo([r],e,t));if(n==null)throw new nr("Nothing imported");return n}async function Jm(r,e,t={}){let n=await Mi(Yo([r],e,t));if(n==null)throw new nr("Nothing imported");return n}async function Qm(r,e,t={}){return jo({content:r},e,t)}async function Zm(r,e,t={}){return jo({content:r},e,t)}var zo=p(()=>{"use strict";Wc();Ui();ol();_r();_u();Hu();Gu();sn();Qu();Bd();sn()});function Xm(r){return typeof r?.then=="function"}var Ts,Td=p(()=>{"use strict";Is();Ju();Kr();ht();Jr();qt();on();Ts=class extends Ie{constructor(){super();f(this,"data");this.data=new Map}put(t,n,s){s?.signal?.throwIfAborted();let i;if(n instanceof Uint8Array)i=[n];else{let o=ju(n);if(Xm(o))return o.then(a=>this._put(t,a,s));i=o}return this._put(t,i,s)}_put(t,n,s){return s?.signal?.throwIfAborted(),this.data.set(Q.encode(t.multihash.bytes),n),t}*get(t,n){n?.signal?.throwIfAborted();let s=this.data.get(Q.encode(t.multihash.bytes));if(s==null)throw new Qe;yield*s}has(t,n){return n?.signal?.throwIfAborted(),this.data.has(Q.encode(t.multihash.bytes))}async delete(t,n){n?.signal?.throwIfAborted(),this.data.delete(Q.encode(t.multihash.bytes))}*getAll(t){t?.signal?.throwIfAborted();for(let[n,s]of this.data.entries())yield{cid:V.createV1(Gt,gs(Q.decode(n))),bytes:(async function*(){yield*s})()},t?.signal?.throwIfAborted()}}});function Rs(r,e){if(typeof r=="string")return eg(r);if(typeof r=="number")return ng(r,e);throw new Error(`Value provided to ms() must be a string or number. value=${JSON.stringify(r)}`)}function eg(r){if(typeof r!="string"||r.length===0||r.length>100)throw new Error(`Value provided to ms.parse() must be a string with length between 1 and 99. value=${JSON.stringify(r)}`);let e=/^(?<value>-?\d*\.?\d+) *(?<unit>milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|months?|mo|years?|yrs?|y)?$/i.exec(r);if(!e?.groups)return NaN;let{value:t,unit:n="ms"}=e.groups,s=parseFloat(t),i=n.toLowerCase();switch(i){case"years":case"year":case"yrs":case"yr":case"y":return s*315576e5;case"months":case"month":case"mo":return s*26298e5;case"weeks":case"week":case"w":return s*6048e5;case"days":case"day":case"d":return s*864e5;case"hours":case"hour":case"hrs":case"hr":case"h":return s*36e5;case"minutes":case"minute":case"mins":case"min":case"m":return s*6e4;case"seconds":case"second":case"secs":case"sec":case"s":return s*1e3;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return s;default:throw new Error(`Unknown unit "${i}" provided to ms.parse(). value=${JSON.stringify(r)}`)}}function tg(r){let e=Math.abs(r);return e>=315576e5?`${Math.round(r/315576e5)}y`:e>=26298e5?`${Math.round(r/26298e5)}mo`:e>=6048e5?`${Math.round(r/6048e5)}w`:e>=864e5?`${Math.round(r/864e5)}d`:e>=36e5?`${Math.round(r/36e5)}h`:e>=6e4?`${Math.round(r/6e4)}m`:e>=1e3?`${Math.round(r/1e3)}s`:`${r}ms`}function rg(r){let e=Math.abs(r);return e>=315576e5?bt(r,e,315576e5,"year"):e>=26298e5?bt(r,e,26298e5,"month"):e>=6048e5?bt(r,e,6048e5,"week"):e>=864e5?bt(r,e,864e5,"day"):e>=36e5?bt(r,e,36e5,"hour"):e>=6e4?bt(r,e,6e4,"minute"):e>=1e3?bt(r,e,1e3,"second"):`${r} ms`}function ng(r,e){if(typeof r!="number"||!Number.isFinite(r))throw new Error("Value provided to ms.format() must be of type number.");return e?.long?rg(r):tg(r)}function bt(r,e,t,n){let s=e>=t*1.5;return`${Math.round(r/t)} ${n}${s?"s":""}`}var Jo=p(()=>{"use strict"});function Qo(r){t.debug=t,t.default=t,t.coerce=c,t.disable=i,t.enable=s,t.enabled=o,t.humanize=Rs,t.destroy=l,Object.keys(r).forEach(u=>{t[u]=r[u]}),t.names=[],t.skips=[],t.formatters={};function e(u){let d=0;for(let h=0;h<u.length;h++)d=(d<<5)-d+u.charCodeAt(h),d|=0;return t.colors[Math.abs(d)%t.colors.length]}t.selectColor=e;function t(u,d){let h,m=null,g,w;function b(...S){if(!b.enabled)return;let A=b,v=Number(new Date),E=v-(h||v);A.diff=E,A.prev=h,A.curr=v,h=v,S[0]=t.coerce(S[0]),typeof S[0]!="string"&&S.unshift("%O");let C=0;S[0]=S[0].replace(/%([a-zA-Z%])/g,(T,O)=>{if(T==="%%")return"%";C++;let Be=t.formatters[O];if(typeof Be=="function"){let St=S[C];T=Be.call(A,St),S.splice(C,1),C--}return T}),t.formatArgs.call(A,S),d?.onLog!=null&&d.onLog(...S),(A.log||t.log).apply(A,S)}return b.namespace=u,b.useColors=t.useColors(),b.color=t.selectColor(u),b.extend=n,b.destroy=t.destroy,Object.defineProperty(b,"enabled",{enumerable:!0,configurable:!1,get:()=>m!==null?m:(g!==t.namespaces&&(g=t.namespaces,w=t.enabled(u)),w),set:S=>{m=S}}),typeof t.init=="function"&&t.init(b),b}function n(u,d){let h=t(this.namespace+(typeof d>"u"?":":d)+u);return h.log=this.log,h}function s(u){t.save(u),t.namespaces=u,t.names=[],t.skips=[];let d,h=(typeof u=="string"?u:"").split(/[\s,]+/),m=h.length;for(d=0;d<m;d++)h[d]&&(u=h[d].replace(/\*/g,".*?"),u[0]==="-"?t.skips.push(new RegExp("^"+u.substr(1)+"$")):t.names.push(new RegExp("^"+u+"$")))}function i(){let u=[...t.names.map(a),...t.skips.map(a).map(d=>"-"+d)].join(",");return t.enable(""),u}function o(u){if(u[u.length-1]==="*")return!0;let d,h;for(d=0,h=t.skips.length;d<h;d++)if(t.skips[d].test(u))return!1;for(d=0,h=t.names.length;d<h;d++)if(t.names[d].test(u))return!0;return!1}function a(u){return u.toString().substring(2,u.toString().length-2).replace(/\.\*\?$/,"*")}function c(u){return u instanceof Error?u.stack??u.message:u}function l(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return t.setupFormatters(t.formatters),t.enable(t.load()),t}var Rd=p(()=>{"use strict";Jo()});function ig(){return typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs)?!0:typeof navigator<"u"&&navigator.userAgent?.toLowerCase().match(/(edge|trident)\/(\d+)/)!=null?!1:typeof document<"u"&&document.documentElement?.style?.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent?.toLowerCase().match(/firefox\/(\d+)/)!=null&&parseInt(RegExp.$1,10)>=31||typeof navigator<"u"&&navigator.userAgent?.toLowerCase().match(/applewebkit\/(\d+)/)}function og(r){if(r[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+r[0]+(this.useColors?"%c ":" ")+"+"+Rs(this.diff),!this.useColors)return;let e="color: "+this.color;r.splice(1,0,e,"color: inherit");let t=0,n=0;r[0].replace(/%[a-zA-Z%]/g,s=>{s!=="%%"&&(t++,s==="%c"&&(n=t))}),r.splice(n,0,e)}function cg(r){try{r?Fs?.setItem("debug",r):Fs?.removeItem("debug")}catch{}}function lg(){let r;try{r=Fs?.getItem("debug")}catch{}return!r&&typeof globalThis.process<"u"&&"env"in globalThis.process&&(r=globalThis.process.env.DEBUG),r}function ug(){try{return localStorage}catch{}}function dg(r){r.j=function(e){try{return JSON.stringify(e)}catch(t){return"[UnexpectedJSONParseError]: "+t.message}}}var Fs,sg,ag,Fd,Md=p(()=>{"use strict";Jo();Rd();Fs=ug(),sg=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];ag=console.debug??console.log??(()=>{});Fd=Qo({formatArgs:og,save:cg,load:lg,useColors:ig,setupFormatters:dg,colors:sg,storage:Fs,log:ag})});var ee,Nd=p(()=>{"use strict";Md();ee=Fd});function Ud(r,e=""){let t=Ld(r.message),n=Ld(r.stack);return t!=null&&n!=null?n.includes(t)?`${n.split(`
|
|
951
951
|
`).join(`
|
|
952
952
|
${e}`)}`:`${t}
|
|
953
953
|
${e}${n.split(`
|
|
954
954
|
`).join(`
|
|
955
955
|
${e}`)}`:n!=null?`${n.split(`
|
|
956
956
|
`).join(`
|
|
957
|
-
${e}`)}`:t!=null?`${t}`:`${r.toString()}`}function
|
|
958
|
-
${e}${r.errors.map(n=>`${
|
|
957
|
+
${e}`)}`:t!=null?`${t}`:`${r.toString()}`}function hg(r){return r instanceof AggregateError||r?.name==="AggregateError"&&Array.isArray(r.errors)}function _d(r,e=""){if(hg(r)){let t=Ud(r,e);return r.errors.length>0?(e=`${e} `,t+=`
|
|
958
|
+
${e}${r.errors.map(n=>`${_d(n,`${e}`)}`).join(`
|
|
959
959
|
${e}`)}`):t+=`
|
|
960
|
-
${e}[Error list was empty]`,t.trim()}return _d(r,e)}function pg(r){let e=()=>{};return e.enabled=!1,e.color="",e.diff=0,e.log=()=>{},e.namespace=r,e.destroy=()=>!0,e.extend=()=>e,e.useColors=()=>!1,e}function Zo(r,e){let t=pg(`${r}:trace`);return te.enabled(`${r}:trace`)&&te.names.map(n=>n.toString()).find(n=>n.includes(":trace"))!=null&&(t=te(`${r}:trace`,e)),Object.assign(te(r,e),{error:te(`${r}:error`,e),trace:t,newScope:n=>Zo(`${r}:${n}`,e)})}function Kd(r){if(r!=null&&(r=r.trim(),r.length!==0))return r}var zd=p(()=>{"use strict";Lr();ds();mo();Ld();te.formatters.b=r=>r==null?"undefined":he.baseEncode(r);te.formatters.t=r=>r==null?"undefined":Z.baseEncode(r);te.formatters.m=r=>r==null?"undefined":fo.baseEncode(r);te.formatters.p=r=>r==null?"undefined":r.toString();te.formatters.c=r=>r==null?"undefined":r.toString();te.formatters.k=r=>r==null?"undefined":r.toString();te.formatters.a=r=>r==null?"undefined":r.toString();te.formatters.e=r=>r==null?"undefined":Od(r)});function mg(r){let[e,t]=r[Symbol.asyncIterator]!=null?[r[Symbol.asyncIterator](),Symbol.asyncIterator]:[r[Symbol.iterator](),Symbol.iterator],n=[];return{peek:()=>e.next(),push:s=>{n.push(s)},next:()=>n.length>0?{done:!1,value:n.shift()}:e.next(),[t](){return this}}}var Wd,$d=p(()=>{"use strict";Wd=mg});function gg(r){return r[Symbol.asyncIterator]!=null}function yg(r,e){let t=0;if(gg(r))return(async function*(){for await(let c of r)await e(c,t++)&&(yield c)})();let n=Wd(r),{value:s,done:i}=n.next();if(i===!0)return(function*(){})();let o=e(s,t++);if(typeof o.then=="function")return(async function*(){await o&&(yield s);for(let c of n)await e(c,t++)&&(yield c)})();let a=e;return(function*(){o===!0&&(yield s);for(let c of n)a(c,t++)&&(yield c)})()}var qd,Hd=p(()=>{"use strict";$d();qd=yg});function or(){let r={};return r.promise=new Promise((e,t)=>{r.resolve=e,r.reject=t}),r}var Vd=p(()=>{"use strict"});function wg(r){return r.reason}async function Gd(r,e,t){if(e==null)return r;let n=t?.translateError??wg;if(e.aborted)return r.catch(()=>{}),Promise.reject(n(e));let s;try{return await Promise.race([r,new Promise((i,o)=>{s=()=>{o(n(e))},e.addEventListener("abort",s)})])}finally{s!=null&&e.removeEventListener("abort",s)}}var Yd=p(()=>{"use strict"});function jd(){return new Xo}var Xo,Jd=p(()=>{"use strict";Vd();Yd();Xo=class{constructor(){f(this,"readNext");f(this,"haveNext");f(this,"ended");f(this,"nextResult");f(this,"error");this.ended=!1,this.readNext=or(),this.haveNext=or()}[Symbol.asyncIterator](){return this}async next(){if(this.nextResult==null&&await this.haveNext.promise,this.nextResult==null)throw new Error("HaveNext promise resolved but nextResult was undefined");let e=this.nextResult;return this.nextResult=void 0,this.readNext.resolve(),this.readNext=or(),e}async throw(e){return this.ended=!0,this.error=e,e!=null&&(this.haveNext.promise.catch(()=>{}),this.haveNext.reject(e)),{done:!0,value:void 0}}async return(){let e={done:!0,value:void 0};return this.ended=!0,this.nextResult=e,this.haveNext.resolve(),e}async push(e,t){await this._push(e,t)}async end(e,t){e!=null?await this.throw(e):await this._push(void 0,t)}async _push(e,t){if(e!=null&&this.ended)throw this.error??new Error("Cannot push value onto an ended pushable");for(;this.nextResult!=null;)await this.readNext.promise;e!=null?this.nextResult={done:!1,value:e}:(this.ended=!0,this.nextResult={done:!0,value:void 0}),this.haveNext.resolve(),this.haveNext=or(),await Gd(this.readNext.promise,t?.signal,t)}}});function bg(r){return r[Symbol.asyncIterator]!=null}async function Sg(r,e,t){try{await Promise.all(r.map(async n=>{for await(let s of n)await e.push(s,{signal:t}),t.throwIfAborted()})),await e.end(void 0,{signal:t})}catch(n){await e.end(n,{signal:t}).catch(()=>{})}}async function*Ag(r){let e=new AbortController,t=jd();Sg(r,t,e.signal).catch(()=>{});try{yield*t}finally{e.abort()}}function*xg(r){for(let e of r)yield*e}function vg(...r){let e=[];for(let t of r)bg(t)||e.push(t);return e.length===r.length?xg(e):Ag(r)}var Qd,Zd=p(()=>{"use strict";Jd();Qd=vg});var Eg,Rs,Xd=p(()=>{"use strict";zd();Cs();Hd();Zd();nn();Eg=Zo("blockstore:core:tiered"),Rs=class extends Ie{constructor(t){super();f(this,"stores");this.stores=t.slice()}async put(t,n,s){return await Promise.all(this.stores.map(async i=>{await i.put(t,n,s)})),t}async*get(t,n){let s;for(let i of this.stores)try{yield*i.get(t,n);return}catch(o){s=o,Eg.error(o)}throw s??new Qe}async has(t,n){for(let s of this.stores)if(await s.has(t,n))return!0;return!1}async delete(t,n){await Promise.all(this.stores.map(async s=>{await s.delete(t,n)}))}async*putMany(t,n={}){for await(let s of t)await this.put(s.cid,s.bytes,n),yield s.cid}async*deleteMany(t,n={}){for await(let s of t)await this.delete(s,n),yield s}async*getAll(t){let n=new Set;yield*qd(Qd(...this.stores.map(s=>s.getAll(t))),s=>{let i=s.cid.toString();return n.has(i)?!1:(n.add(i),!0)})}}});var eh={};E(eh,{BaseBlockstore:()=>Ie,BlackHoleBlockstore:()=>ir,MemoryBlockstore:()=>Bs,TieredBlockstore:()=>Rs});var th=p(()=>{"use strict";nn();Fd();Ho();Xd()});var rh=P((jA,kg)=>{kg.exports={name:"w3pk",version:"0.10.1",description:"WebAuthn SDK for passwordless authentication, encrypted wallets, ERC-5564 stealth addresses, and zero-knowledge proofs",author:"Julien B\xE9ranger",license:"GPL-3.0",repository:{type:"git",url:"https://github.com/w3hc/w3pk.git"},bugs:{url:"https://github.com/w3hc/w3pk/issues"},homepage:"https://github.com/w3hc/w3pk#readme",keywords:["webauthn","passkey","authentication","passwordless","fido2","biometric","ethereum","web3","encryption","zero-knowledge","zk-proofs","zk-snarks","privacy","stealth-address","erc-5564","erc-6538","unlinkable","anonymous-transactions","privacy-preserving","ecdh","secp256k1","view-tags","circom","groth16","merkle-tree","commitment-scheme"],main:"./dist/index.js",module:"./dist/index.mjs",types:"./dist/index.d.ts",exports:{".":{types:"./dist/index.d.ts",import:"./dist/index.mjs",require:"./dist/index.js"},"./zk":{types:"./dist/zk/index.d.ts",import:"./dist/zk/index.mjs",require:"./dist/zk/index.js"},"./zk/utils":{types:"./dist/zk/utils.d.ts",import:"./dist/zk/utils.mjs",require:"./dist/zk/utils.js"},"./chainlist":{types:"./dist/chainlist/index.d.ts",import:"./dist/chainlist/index.mjs",require:"./dist/chainlist/index.js"},"./inspect":{types:"./dist/inspect/index.d.ts",import:"./dist/inspect/index.mjs",require:"./dist/inspect/index.js"},"./inspect/node":{types:"./dist/inspect/node.d.ts",import:"./dist/inspect/node.mjs",require:"./dist/inspect/node.js"}},sideEffects:!1,files:["dist","README.md","LICENSE","docs/","scripts/compute-build-hash.mjs"],scripts:{build:"tsup","build:zk":"npm run build && npm run compile:circuits","compile:circuits":"node scripts/compile-circuits.js",dev:"tsup --watch",test:"tsx test/test.ts && tsx test/comprehensive.test.ts && tsx test/backup.test.ts && tsx test/social-recovery.test.ts && tsx test/recovery-education.test.ts && tsx test/zk/zk.test.ts && tsx test/nft-ownership.test.ts && tsx test/chainlist.test.ts && tsx test/eip7702.test.ts && tsx test/external-wallet.test.ts && tsx test/erc5564.test.ts && tsx test/zk/key-stretching.test.ts && tsx test/username-encoding.test.ts && tsx test/username-validation.test.ts && tsx test/origin-derivation.test.ts && tsx test/build-hash.test.ts && tsx test/credential-checking.test.ts && tsx test/webauthn-native.test.ts && tsx test/persistent-session.test.ts && tsx test/sign-message.test.ts && tsx test/siwe.test.ts && tsx test/requirereauth.test.ts && tsx test/eip7951.test.ts && tsx test/send-transaction.test.ts && tsx test/eip1193-provider.test.ts && tsx test/mlkem.test.ts","test:basic":"tsx test/test.ts","test:comprehensive":"tsx test/comprehensive.test.ts","test:backup":"tsx test/backup.test.ts","test:social-recovery":"tsx test/social-recovery.test.ts","test:education":"tsx test/recovery-education.test.ts","test:username":"tsx test/username-encoding.test.ts && tsx test/username-validation.test.ts","test:recovery":"tsx test/backup.test.ts && tsx test/social-recovery.test.ts && tsx test/recovery-education.test.ts","test:zk":"tsx test/zk/zk.test.ts","test:nft":"tsx test/nft-ownership.test.ts","test:chainlist":"tsx test/chainlist.test.ts","test:eip7702":"tsx test/eip7702.test.ts","test:external-wallet":"tsx test/external-wallet.test.ts","test:eip7951":"tsx test/eip7951.test.ts","test:erc5564":"tsx test/erc5564.test.ts","test:sign-message":"tsx test/sign-message.test.ts","test:siwe":"tsx test/siwe.test.ts",prepublishOnly:"pnpm build","build:hash":"node scripts/compute-build-hash.mjs",html:"lsof -ti:3000 | xargs kill -9 2>/dev/null || true && tsup && npx serve . -l 3000 & sleep 5 && open http://localhost:3000/standalone/checker.html"},packageManager:"pnpm@10.6.4",devDependencies:{"@types/node":"^25.9.2","@types/qrcode":"^1.5.5",circomlib:"^2.0.5",tsup:"^8.5.1",tsx:"^4.22.4",typescript:"^6.0.3"},peerDependencies:{ethers:"^6.0.0"},optionalDependencies:{"@ipld/car":"^5.4.6","blockstore-core":"^7.0.1",circomlibjs:"^0.1.7","ipfs-unixfs-importer":"^17.0.1",qrcode:"^1.5.4",snarkjs:"^0.7.6"},dependencies:{"@noble/hashes":"^2.2.0",mlkem:"^2.7.0"},pnpm:{overrides:{"jsonpath@<1.2.0":">=1.2.0","bn.js@>=5.0.0 <5.2.3":">=5.2.3","bn.js@<4.12.3":">=4.12.3","minimatch@>=5.0.0 <5.1.7":">=5.1.7","rollup@>=4.0.0 <4.59.0":">=4.59.0","minimatch@>=5.0.0 <5.1.8":">=5.1.8","jsonpath@<=1.2.1":">=1.3.0","brace-expansion@>=2.0.0 <2.0.3":">=2.0.3","picomatch@>=4.0.0 <4.0.4":">=4.0.4","underscore@<=1.13.7":">=1.13.8","ws@>=8.0.0 <8.20.1":">=8.20.1"}}}});var Tg={};E(Tg,{ApiError:()=>sn,AuthenticationError:()=>K,CryptoError:()=>M,DEFAULT_MODE:()=>ge,DEFAULT_TAG:()=>Q,RecoverySimulator:()=>Ft,RegistrationError:()=>At,SocialRecoveryManager:()=>at,StealthAddressModule:()=>Ct,StorageError:()=>I,WalletError:()=>y,Web3Passkey:()=>Ut,Web3PasskeyError:()=>$,arrayBufferToBase64Url:()=>oe,assertEthereumAddress:()=>on,assertMnemonic:()=>ia,assertUsername:()=>an,authenticateWithPasskey:()=>Pi,base64ToArrayBuffer:()=>Ls,base64UrlDecode:()=>Ks,base64UrlToArrayBuffer:()=>N,canControlStealthAddress:()=>pa,checkStealthAddress:()=>hr,clearCache:()=>xa,computeStealthPrivateKey:()=>fr,createSiweMessage:()=>ih,createWalletFromMnemonic:()=>$s,createWeb3Passkey:()=>lh,default:()=>Dg,deriveAddressFromP256PublicKey:()=>qs,deriveIndexFromOriginModeAndTag:()=>fn,deriveMLKemKeypair:()=>Rr,deriveStealthKeys:()=>kt,deriveWalletFromMnemonic:()=>ur,detectWalletProvider:()=>En,encodeEIP7702AuthorizationMessage:()=>mr,extractRS:()=>Qs,generateBIP39Wallet:()=>lr,generateSiweNonce:()=>sh,generateStealthAddress:()=>mn,getAllChains:()=>Sa,getAllTopics:()=>Di,getChainById:()=>Aa,getCurrentBuildHash:()=>ra,getCurrentOrigin:()=>we,getDefaultProvider:()=>vn,getEndpoints:()=>bn,getExplainer:()=>Bi,getOriginSpecificAddress:()=>ye,getPackageVersion:()=>ta,getW3pkBuildHash:()=>ea,hashEIP7702AuthorizationMessage:()=>gr,inspect:()=>na,inspectNow:()=>ch,isStrongPassword:()=>oa,mlkemDecrypt:()=>ss,mlkemDecryptWithKey:()=>Fi,mlkemEncrypt:()=>ns,mlkemEncryptWithKey:()=>Ri,normalizeOrigin:()=>dr,parseSiweMessage:()=>Fs,promptPasskeySelection:()=>Ci,requestExternalWalletAuthorization:()=>xn,safeAtob:()=>Xe,safeBtoa:()=>_s,searchExplainers:()=>Ti,supportsEIP7702Authorization:()=>kn,validateEthereumAddress:()=>Ms,validateMnemonic:()=>Ns,validateSiweMessage:()=>oh,validateUsername:()=>Us,verifyBuildHash:()=>nh,verifyEIP7702Authorization:()=>Sn,verifySiweSignature:()=>ah});module.exports=Sh(Tg);j();function Ms(r){return/^0x[a-fA-F0-9]{40}$/.test(r)}function Us(r){return r.length<3||r.length>50?!1:/^[a-zA-Z0-9]([a-zA-Z0-9_-]*[a-zA-Z0-9])?$/.test(r)}function Ns(r){let e=r.trim().split(/\s+/);return e.length===12||e.length===24}function on(r){if(!Ms(r))throw new Error("Invalid Ethereum address format")}function an(r){if(!Us(r))throw new Error("Username must be 3-50 characters long and contain only letters, numbers, underscores, and hyphens. Must start and end with a letter or number.")}function ia(r){if(!Ns(r))throw new Error("Invalid mnemonic: must be 12 or 24 words")}function oa(r){if(r.length<12)return!1;let e=/[A-Z]/.test(r),t=/[a-z]/.test(r),n=/[0-9]/.test(r),s=/[!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?]/.test(r);return!(!e||!t||!n||!s||["password","12345678","qwerty","abc123","password123","admin","letmein"].some(o=>r.toLowerCase().includes(o)))}Le();me();q();async function xh(r){try{let e=new Uint8Array(r),t=vh(e);if(t===-1)return null;let n=e.slice(t);if(!((n[32]&64)!==0))return null;let o=37;o+=16;let a=n[o]<<8|n[o+1];o+=2,o+=a;let c=n.slice(o),l=await Eh(c);return oe(l)}catch(e){return console.error("Failed to extract public key:",e),null}}function vh(r){let e=new Uint8Array([104,97,117,116,104,68,97,116,97]);for(let t=0;t<r.length-e.length;t++){let n=!0;for(let s=0;s<e.length;s++)if(r[t+s]!==e[s]){n=!1;break}if(n){let s=r[t+e.length],i=t+e.length+1;if(s>=88&&s<=91){let o=s-87;i+=o}return i}}return-1}async function Eh(r){let e=la(r,-2),t=la(r,-3);if(!e||!t)throw new Error("Failed to extract EC coordinates from COSE key");let n=new Uint8Array(65);n[0]=4,n.set(e,1),n.set(t,33);let s=new Uint8Array([48,89,48,19,6,7,42,134,72,206,61,2,1,6,8,42,134,72,206,61,3,1,7,3,66,0]),i=new Uint8Array(s.length+n.length);return i.set(s,0),i.set(n,s.length),i.buffer}function la(r,e){let t=e<0?32+(-1-e):e;for(let n=0;n<r.length-33;n++)if(r[n]===t&&(r[n+1]===88&&r[n+2]===32||r[n+1]===88&&r[n+2]===32))return r.slice(n+3,n+35);return null}async function ua(r){try{let{username:e,ethereumAddress:t}=r;an(e),on(t);let n=new R;if(await n.userExists(e))throw new Error("Username already registered");let s=Ue(),o=new TextEncoder().encode(e),a=oe(o),c=N(s),l=N(a),u={challenge:c,rp:{name:"w3pk",id:window.location.hostname},user:{id:l,name:e,displayName:e},pubKeyCredParams:[{type:"public-key",alg:-7},{type:"public-key",alg:-257}],authenticatorSelection:{authenticatorAttachment:"platform",userVerification:"required",residentKey:"required",requireResidentKey:!0},timeout:6e4,attestation:"none",extensions:{prf:{}}},d=await navigator.credentials.create({publicKey:u});if(!d)throw new Error("Failed to create credential");let h=d.getClientExtensionResults().prf?.enabled;h||console.warn("\u26A0\uFE0F PRF extension not supported - falling back to legacy encryption");let m=await xh(d.response.attestationObject);if(!m)throw new Error("Public key not returned from authenticator");return await n.saveCredential({id:d.id,publicKey:m,username:e,ethereumAddress:t,createdAt:new Date().toISOString(),lastUsed:new Date().toISOString(),signCount:0,prfEnabled:h||!1}),{signature:d.response.attestationObject}}catch(e){throw new At(e instanceof Error?e.message:"Registration failed",e)}}j();Le();me();q();async function dn(){try{let r=new R,e=Ue(),t=[];try{let d=await r.getAllCredentials();d.length>0&&(t=d.map(h=>({id:h.id,type:"public-key",transports:["internal","hybrid","usb","nfc","ble"]})))}catch{}let n=N(e),s=new Uint8Array(32);crypto.getRandomValues(s);let i={challenge:n,rpId:window.location.hostname,userVerification:"required",timeout:6e4,extensions:{prf:{eval:{first:s}}}};t.length>0&&(i.allowCredentials=t.map(d=>({id:N(d.id),type:d.type,transports:d.transports})));let o;try{let d=await navigator.credentials.get({publicKey:i});if(!d)throw new Error("Authentication failed - no credential returned");o=d}catch(d){throw d?.name==="NotAllowedError"||d?.message?.toLowerCase().includes("no credentials available")||d?.message?.toLowerCase().includes("no access key")?(await r.getAllCredentials()).length>0?new K("Your passkey is not available on this device. You may need to restore your wallet from a backup, or login on the device where you registered."):new K("No passkey found. Please register first or restore from a backup."):d}let a=await r.getCredentialById(o.id);if(!a)throw new K("Passkey authenticated but wallet data not found on this device. To sync your account: 1) Select your passkey when prompted, then 2) Provide your backup file. This allows you to use the same passkey on multiple devices.");if(!await kh(o,a,r))throw new Error("Signature verification failed");let u=o.getClientExtensionResults().prf?.results?.first;return!u&&a.prfEnabled&&console.warn("\u26A0\uFE0F PRF was enabled but output not available"),{verified:!0,user:{username:a.username,ethereumAddress:a.ethereumAddress,credentialId:a.id},signature:o.response.signature,prfOutput:u||void 0}}catch(r){throw new K(r instanceof Error?r.message:"Authentication failed",r)}}async function kh(r,e,t){try{let n=r.response.authenticatorData,s=new DataView(n),o=new Uint8Array(n).slice(0,32),a=window.location.hostname,c=new Uint8Array(await crypto.subtle.digest("SHA-256",new TextEncoder().encode(a)));if(!Ch(o,c))return console.error("RP ID hash mismatch - possible phishing attack"),!1;let l=s.getUint32(33,!1);if(l>0||e.signCount&&e.signCount>0){let A=e.signCount||0;if(l<=A)return console.error(`Authenticator cloning detected! Counter did not increase: stored=${A}, received=${l}`),!1}let u=N(e.publicKey),d=await crypto.subtle.importKey("spki",u,{name:"ECDSA",namedCurve:"P-256"},!1,["verify"]),h=r.response.clientDataJSON,m=await crypto.subtle.digest("SHA-256",h),g=new Uint8Array(n.byteLength+m.byteLength);g.set(new Uint8Array(n),0),g.set(new Uint8Array(m),n.byteLength);let w=r.response.signature,b=Ph(new Uint8Array(w));return await crypto.subtle.verify({name:"ECDSA",hash:"SHA-256"},d,b,g)?(await t.updateSignatureCounter(e.id,l),!0):!1}catch(n){return console.error("Signature verification error:",n),!1}}function Ch(r,e){if(r.length!==e.length)return!1;for(let t=0;t<r.length;t++)if(r[t]!==e[t])return!1;return!0}function Ph(r){let e=2;e++;let t=r[e++];t>32&&(e++,t--);let n=r.slice(e,e+t);e+=t,e++;let s=r[e++];s>32&&(e++,s--);let i=r.slice(e,e+s),o=new Uint8Array(64);return o.set(n,32-n.length),o.set(i,64-i.length),o.buffer}j();var Ih="Web3PasskeyWallet",Bh=1,ke="wallets",hn=class{constructor(){this.db=null}async init(){return new Promise((e,t)=>{let n=indexedDB.open(Ih,Bh);n.onerror=()=>t(new I("Failed to open database",n.error)),n.onsuccess=()=>{this.db=n.result,e()},n.onupgradeneeded=()=>{let s=n.result;s.objectStoreNames.contains(ke)||s.createObjectStore(ke,{keyPath:"ethereumAddress"})}})}async store(e){return this.db||await this.init(),new Promise((t,n)=>{let o=this.db.transaction([ke],"readwrite").objectStore(ke).put(e);o.onerror=()=>n(new I("Failed to store wallet data",o.error)),o.onsuccess=()=>t()})}async retrieve(e){return this.db||await this.init(),new Promise((t,n)=>{let o=this.db.transaction([ke],"readonly").objectStore(ke).get(e);o.onerror=()=>n(new I("Failed to retrieve wallet data",o.error)),o.onsuccess=()=>t(o.result||null)})}async delete(e){return this.db||await this.init(),new Promise((t,n)=>{let o=this.db.transaction([ke],"readwrite").objectStore(ke).delete(e);o.onerror=()=>n(new I("Failed to delete wallet data",o.error)),o.onsuccess=()=>t()})}async clear(){return this.db||await this.init(),new Promise((e,t)=>{let i=this.db.transaction([ke],"readwrite").objectStore(ke).clear();i.onerror=()=>t(new I("Failed to clear wallet data",i.error)),i.onsuccess=()=>e()})}};De();Et();q();me();j();var H=require("ethers");j();function kt(r){try{let e=H.ethers.HDNodeWallet.fromPhrase(r,void 0,"m/44'/60'/1'/0/0"),t=H.ethers.HDNodeWallet.fromPhrase(r,void 0,"m/44'/60'/1'/0/1"),n=t.signingKey.compressedPublicKey,s=e.signingKey.compressedPublicKey;return{stealthMetaAddress:n+s.slice(2),spendingPubKey:n,viewingPubKey:s,viewingKey:e.privateKey,spendingKey:t.privateKey}}catch(e){throw new M("Failed to derive stealth keys",e)}}function mn(r){try{let e="0x"+r.slice(2,68),t="0x"+r.slice(68),n=H.ethers.Wallet.createRandom(),s=n.signingKey.compressedPublicKey,i=Hs(n.privateKey,t),o=H.ethers.keccak256(i),a="0x"+o.slice(2,4),c=Vs(o),l=ga(e,ma(c));return{stealthAddress:ya(l),ephemeralPubKey:s,viewTag:a}}catch(e){throw new M("Failed to generate stealth address",e)}}function hr(r,e,t,n,s){try{let i=Hs(r,t),o=H.ethers.keccak256(i);if(s&&("0x"+o.slice(2,4)).toLowerCase()!==s.toLowerCase())return{isForUser:!1};let a=Vs(o),c=ga(e,ma(a)),l=ya(c);return l.toLowerCase()!==n.toLowerCase()?{isForUser:!1}:{isForUser:!0,stealthAddress:l}}catch{return{isForUser:!1}}}function fr(r,e,t){try{let n=Hs(r,t),s=H.ethers.keccak256(n),i=Vs(s);return Th(e,i)}catch(n){throw new M("Failed to compute stealth private key",n)}}function pa(r,e,t,n,s,i){try{if(!hr(r,t,n,s,i).isForUser)return!1;let a=fr(r,e,n);return new H.ethers.Wallet(a).address.toLowerCase()===s.toLowerCase()}catch{return!1}}function Hs(r,e){try{return new H.ethers.Wallet(r).signingKey.computeSharedSecret(e)}catch(t){throw new M("Failed to compute shared secret",t)}}function ma(r){try{return new H.ethers.Wallet(r).signingKey.compressedPublicKey}catch(e){throw new M("Failed to multiply generator by scalar",e)}}function ga(r,e){try{let t=H.ethers.SigningKey.computePublicKey(r,!1),n=H.ethers.SigningKey.computePublicKey(e,!1),s=BigInt("0x"+t.slice(4,68)),i=BigInt("0x"+t.slice(68)),o=BigInt("0x"+n.slice(4,68)),a=BigInt("0x"+n.slice(68)),c=BigInt("0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFC2F");if(s===o&&i===a){let g=3n*s*s%c,w=2n*i%c,b=g*fa(w,c)%c,S=(b*b-2n*s)%c,A=(b*(s-S)-i)%c;return ha((S+c)%c,(A+c)%c)}let l=((a-i)%c+c)%c,u=((o-s)%c+c)%c,d=l*fa(u,c)%c,h=(d*d-s-o)%c,m=(d*(s-h)-i)%c;return ha((h+c)%c,(m+c)%c)}catch(t){throw new M("Failed to add public keys",t)}}function Vs(r){try{let e=BigInt("0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141"),n=BigInt(r)%e;if(n===0n)throw new Error("Scalar reduced to zero (invalid)");return"0x"+n.toString(16).padStart(64,"0")}catch(e){throw new M("Failed to reduce scalar modulo curve order",e)}}function Th(r,e){try{let t=BigInt("0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141"),n=BigInt(r),s=BigInt(e);return"0x"+((n+s)%t).toString(16).padStart(64,"0")}catch(t){throw new M("Failed to add private keys",t)}}function ha(r,e){return"0x"+(e%2n===0n?"02":"03")+r.toString(16).padStart(64,"0")}function fa(r,e){r=(r%e+e)%e;let[t,n]=[r,e],[s,i]=[1n,0n];for(;n!==0n;){let o=t/n;[t,n]=[n,t-o*n],[s,i]=[i,s-o*i]}return(s%e+e)%e}function ya(r){try{let e=H.ethers.SigningKey.computePublicKey(r,!1),t=H.ethers.keccak256("0x"+e.slice(4));return H.ethers.getAddress("0x"+t.slice(-40))}catch(e){throw new M("Failed to derive address from public key",e)}}var Ct=class{constructor(e,t){this.getMnemonic=t}async generateStealthAddress(e){try{let t=await this.getMnemonic(e?.requireAuth),n=kt(t),s=mn(n.stealthMetaAddress);return{stealthAddress:s.stealthAddress,ephemeralPublicKey:s.ephemeralPubKey,viewTag:s.viewTag}}catch(t){throw new $("Failed to generate stealth address","STEALTH_GENERATION_ERROR",t)}}async parseAnnouncement(e,t){try{let n=await this.getMnemonic(t?.requireAuth),s=kt(n),i=hr(s.viewingKey,s.spendingPubKey,e.ephemeralPublicKey,e.stealthAddress,e.viewTag);if(!i.isForUser)return{isForUser:!1};let o=fr(s.viewingKey,s.spendingKey,e.ephemeralPublicKey);return{isForUser:!0,stealthAddress:i.stealthAddress,stealthPrivateKey:o}}catch(n){throw new $("Failed to parse announcement","ANNOUNCEMENT_PARSE_ERROR",n)}}async scanAnnouncements(e,t){let n=[];for(let s of e){let i=await this.parseAnnouncement(s,t);i.isForUser&&n.push(i)}return n}async getKeys(e){try{let t=await this.getMnemonic(e?.requireAuth);return kt(t)}catch(t){throw new $("Failed to get stealth keys","STEALTH_KEYS_ERROR",t)}}async getStealthMetaAddress(e){try{return(await this.getKeys(e)).stealthMetaAddress}catch(t){throw new $("Failed to get stealth meta-address","STEALTH_META_ADDRESS_ERROR",t)}}get isAvailable(){return!0}};j();q();var Rh="Web3PasskeyPersistentSessions",Fh=2,le="sessions",gn=class{constructor(){this.db=null;this.initPromise=null}async init(){return this.initPromise?this.initPromise:this.db?Promise.resolve():(this.initPromise=new Promise((e,t)=>{let n=indexedDB.open(Rh,Fh);n.onupgradeneeded=s=>{let i=s.target.result;i.objectStoreNames.contains(le)||i.createObjectStore(le,{keyPath:"ethereumAddress"}).createIndex("expiresAt","expiresAt",{unique:!1})},n.onsuccess=()=>{this.db=n.result,this.initPromise=null,e()},n.onerror=()=>{this.initPromise=null,t(new I("Failed to open persistent session database",n.error))}}),this.initPromise)}async store(e){if(e.securityMode==="STRICT")throw new I("Cannot persist STRICT mode sessions");return this.db||await this.init(),new Promise((t,n)=>{let o=this.db.transaction([le],"readwrite").objectStore(le).put(e);o.onerror=()=>n(new I("Failed to store persistent session",o.error)),o.onsuccess=()=>t()})}async retrieve(e){return this.db||await this.init(),new Promise((t,n)=>{let o=this.db.transaction([le],"readonly").objectStore(le).get(e);o.onerror=()=>n(new I("Failed to retrieve persistent session",o.error)),o.onsuccess=()=>{let a=o.result||null;if(a&&Date.now()>a.expiresAt){this.delete(e).catch(console.error),t(null);return}t(a)}})}async delete(e){return this.db||await this.init(),new Promise((t,n)=>{let o=this.db.transaction([le],"readwrite").objectStore(le).delete(e);o.onerror=()=>n(new I("Failed to delete persistent session",o.error)),o.onsuccess=()=>t()})}async clear(){return this.db||await this.init(),new Promise((e,t)=>{let i=this.db.transaction([le],"readwrite").objectStore(le).clear();i.onerror=()=>t(new I("Failed to clear persistent sessions",i.error)),i.onsuccess=()=>e()})}async cleanupExpired(){return this.db||await this.init(),new Promise((e,t)=>{let i=this.db.transaction([le],"readwrite").objectStore(le).index("expiresAt"),o=Date.now(),a=IDBKeyRange.upperBound(o),c=i.openCursor(a);c.onsuccess=l=>{let u=l.target.result;u?(u.delete(),u.continue()):e()},c.onerror=()=>t(new I("Failed to cleanup expired sessions",c.error))})}};async function wa(r,e,t){try{let n=await J(void 0,void 0,e,t);return await ae(r,n)}catch(n){throw new M("Failed to encrypt mnemonic for persistence",n)}}async function Gs(r,e,t){try{let n=await J(void 0,void 0,e,t);return await ce(r,n)}catch(n){throw new M("Failed to decrypt mnemonic from persistence",n)}}var yn=class{constructor(e=1,t){this.session=null;this.sessionDuration=e*60*60*1e3,this.persistentConfig={enabled:t?.enabled??!1,duration:t?.duration??168,requireReauth:t?.requireReauth??!0},this.persistentStorage=new gn}async startSession(e,t,n,s,i){let o=new Date(Date.now()+this.sessionDuration).toISOString();if(this.session={mnemonic:e,expiresAt:o,credentialId:t},this.persistentConfig.enabled&&i!=="STRICT"&&n&&s)try{let a=await wa(e,t,s),c=Date.now()+this.persistentConfig.duration*60*60*1e3;await this.persistentStorage.store({encryptedMnemonic:a,expiresAt:c,credentialId:t,ethereumAddress:n,securityMode:i||"STANDARD",createdAt:Date.now()})}catch(a){console.warn("[w3pk] Failed to persist session:",a)}}getMnemonic(){return this.session?new Date>new Date(this.session.expiresAt)?(this.clearSession(),null):this.session.mnemonic:null}getCredentialId(){return this.session?new Date>new Date(this.session.expiresAt)?(this.clearSession(),null):this.session.credentialId:null}isActive(){return this.getMnemonic()!==null}getRemainingTime(){return this.session?new Date>new Date(this.session.expiresAt)?(this.clearSession(),0):Math.floor((new Date(this.session.expiresAt).getTime()-Date.now())/1e3):0}extendSession(){if(!this.session)throw new Error("No active session to extend");if(new Date>new Date(this.session.expiresAt))throw this.clearSession(),new Error("Session expired, cannot extend");this.session.expiresAt=new Date(Date.now()+this.sessionDuration).toISOString()}async restoreFromPersistentStorage(e,t,n){if(!this.persistentConfig.enabled)return null;try{let s=await this.persistentStorage.retrieve(e);if(!s)return null;if(s.credentialId!==t)return console.warn("[w3pk] Credential ID mismatch, clearing persistent session"),await this.persistentStorage.delete(e),null;let i=await Gs(s.encryptedMnemonic,t,n),o=new Date(Date.now()+this.sessionDuration).toISOString();return this.session={mnemonic:i,expiresAt:o,credentialId:t},i}catch(s){console.warn("[w3pk] Failed to restore persistent session:",s);try{await this.persistentStorage.delete(e)}catch{}return null}}async attemptSilentRestore(){if(!this.persistentConfig.enabled||this.persistentConfig.requireReauth)return null;try{let{CredentialStorage:e}=await Promise.resolve().then(()=>(Le(),un)),n=await new e().getAllCredentials();if(n.length===0)return null;for(let s of n){let i=await this.persistentStorage.retrieve(s.ethereumAddress);if(!i)continue;if(i.credentialId!==s.id){console.warn("[w3pk] Credential ID mismatch, skipping this session");continue}let o=await Gs(i.encryptedMnemonic,s.id,s.publicKey),a=new Date(Date.now()+this.sessionDuration).toISOString();return this.session={mnemonic:o,expiresAt:a,credentialId:s.id},{mnemonic:o,ethereumAddress:s.ethereumAddress,credentialId:s.id,publicKey:s.publicKey}}return null}catch(e){return console.warn("[w3pk] Failed to attempt silent restore:",e),null}}async clearSession(){if(this.session&&(this.session.mnemonic="0".repeat(this.session.mnemonic.length)),this.session=null,this.persistentConfig.enabled)try{await this.persistentStorage.clear()}catch(e){console.warn("[w3pk] Failed to clear persistent sessions:",e)}}setSessionDuration(e){this.sessionDuration=e*60*60*1e3}};Le();var wn={debug:!1,sessionDuration:1,persistentSession:{enabled:!1,duration:168,requireReauth:!0},onError:r=>{wn.debug&&console.error("[w3pk]",r)}};j();var ba="https://chainid.network/chains.json";var pr=null,Mh=[/\$\{[\w_]+\}/i,/\{[\w_]+\}/i,/<[\w_]+>/i,/YOUR[-_]?API[-_]?KEY/i,/INSERT[-_]?API[-_]?KEY/i,/API[-_]?KEY[-_]?HERE/i];function Uh(r){return Mh.some(e=>e.test(r))}async function Nh(r=ba){let e=await fetch(r);if(!e.ok)throw new Error(`Failed to fetch chains data: ${e.status} ${e.statusText}`);return await e.json()}async function Ys(r){let e=r?.chainsJsonUrl??ba,t=r?.cacheDuration??36e5,n=Date.now();if(pr&&n-pr.timestamp<t)return pr.data;let s=await Nh(e);return pr={data:s,timestamp:n},s}async function bn(r,e){let n=(await Ys(e)).find(s=>s.chainId===r);return n?n.rpc.filter(s=>!Uh(s)&&!s.startsWith("wss://")&&!s.startsWith("ws://")):[]}async function Sa(r){return Ys(r)}async function Aa(r,e){return(await Ys(e)).find(n=>n.chainId===r)}function xa(){pr=null}Js();An();var Lh=new Set([1,10,8453,42161,57073,100,42220,137,42,15,40,41,44,46,47,50,51,56,61,71,82,83,95,97,112,123,130,146,151,153,171,180,183,185,195,215,228,247,248,252,261,267,291,293,311,332,336,395,401,416,466,480,488,510,545,634,647,648,747,831,919,938,945,957,964,970,980,995,997,1001,1003,1024,1030,1114,1125,1135,1149,1188,1284,1285,1287,1300,1301,1315,1337,1338,1339,1424,1514,1687,1727,1729,1740,1750,1829,1868,1946,1961,1962,1969,1989,1995,2017,2020,2031,2043,2109,2241,2340,2345,2440,2522,2559,2649,3068,3109,3338,3502,3799,3888,3889,4e3,4048,4078,4162,4201,4202,4460,4488,4661,4689,4690,4888,5e3,5003,5124,5234,5330,5424,5522,6283,6342,6398,6678,6806,6934,6942,6969,7117,7171,7200,7208,7368,7518,7668,7672,7744,7771,7869,7897,8008,8118,8217,8408,8700,8726,8727,8844,8880,8881,8882,8889,9372,9496,9700,9745,9746,9899,9990,9996,10011,10085,10143,10200,11221,11501,11504,11891,13370,14853,16602,16661,17e3,18880,18881,19991,21e3,21816,21912,25327,32323,33401,34443,41923,42170,43111,44787,47805,48898,48900,49049,49088,5e4,50312,53302,53456,53457,55244,56288,59141,60808,60850,62320,62850,64002,71402,72080,73114,73115,75338,78281,80002,80008,80069,80094,80451,80931,84532,88899,91342,92278,94524,96970,97476,97477,98985,100021,100501,101010,102030,102031,102032,112358,120893,121212,121213,121214,121215,129399,161803,175188,192940,193939,198989,212013,222222,240241,325e3,355110,355113,421614,555777,560048,656476,713715,743111,747474,763373,763375,777777,806582,808813,810180,839999,888991,2019775,2222222,4278608,5734951,6666689,6985385,7080969,7777777,9999999,11142220,11155111,11155420,11155931,16969696,19850818,20180427,20250825,28122024,34949059,37084624,52164803,61022448,79479957,96969696,420420421,420420422,888888888,974399131,999999999,1020352220,1273227453,1313161560,1350216234,1380996178,1417429182,1444673419,1482601649,1564830818,2046399126,11297108099,11297108109,88153591557,123420000220,123420001114]);async function _h(r,e=1e4){try{let t=new AbortController,n=setTimeout(()=>t.abort(),e),s=await fetch(r,{method:"POST",headers:{"Content-Type":"application/json"},signal:t.signal,body:JSON.stringify({jsonrpc:"2.0",method:"eth_estimateGas",params:[{from:"0xdeadbeef00000000000000000000000000000000",to:"0xdeadbeef00000000000000000000000000000000",data:"0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",value:"0x0"},"latest",{"0xdeadbeef00000000000000000000000000000000":{code:"0xef01000000000000000000000000000000000000000001"}}],id:1})});if(clearTimeout(n),!s.ok)return!1;let i=await s.json();if(i.error){let o=(i.error.message||"").toLowerCase();return!["unsupported","not supported","unknown","invalid","unrecognized","does not support","not implemented"].some(c=>o.includes(c))}return i.result!==void 0}catch{return!1}}async function Ea(r,e,t){if(Lh.has(r))return!0;let n=t?.maxEndpoints||3,s=t?.timeout||1e4;try{let i=await e(r);if(i.length===0)return!1;let o=i.slice(0,n);for(let a of o)if(await _h(a,s))return!0;return!1}catch{return!1}}function Wc(r){return typeof r=="string"&&/^0x[0-9a-fA-F]*$/.test(r)}function $c(r){let e=r.startsWith("0x")?r.slice(2):r,t=new Uint8Array(e.match(/.{1,2}/g).map(n=>parseInt(n,16)));return new TextDecoder().decode(t)}var Ut=class{constructor(e={}){this.currentUser=null;this.currentWallet=null;this.config={...wn,...e},this.walletStorage=new hn;let t={...wn.persistentSession,...e.persistentSession};this.sessionManager=new yn(e.sessionDuration||1,t),e.stealthAddresses!==void 0&&(this.stealth=new Ct(e.stealthAddresses,n=>this.getMnemonicFromSession(n)))}async loadZKModule(){if(this.zkModule)return this.zkModule;try{let e=new Function("path","return import(path)"),{ZKProofModule:t}=await e("w3pk/zk"),n=this.config.zkProofs||{};return this.zkModule=new t(n),this.zkModule}catch{throw new Error("ZK module not available. Install dependencies: npm install snarkjs circomlibjs")}}async getMnemonicFromSession(e=!1,t="STANDARD"){let n=t;if(!e){let h=this.sessionManager.getMnemonic();if(h)return h}if(!this.currentUser)throw new y("Must be authenticated. Call login() first.");let s=await this.walletStorage.retrieve(this.currentUser.ethereumAddress);if(!s)throw new y("No wallet found. Generate a wallet first.");let i=await dn();if(!i.user)throw new y("Authentication failed");let c=(await new R().getCredentialById(s.credentialId))?.publicKey,l=s.salt?N(s.salt):void 0,u=await J(i.prfOutput,l?new Uint8Array(l):void 0,s.credentialId,c),d=await ce(s.encryptedMnemonic,u);return await this.sessionManager.startSession(d,s.credentialId,this.currentUser.ethereumAddress,c,n),d}async register(e){try{this.currentWallet?.address||await this.generateWallet();let t=this.currentWallet.address,n=this.currentWallet.mnemonic;await ua({username:e.username,ethereumAddress:t});let i=await new R().getCredentialByAddress(t);if(this.currentUser={username:e.username,ethereumAddress:t,credentialId:i?.id||""},!i)throw new y("Credential not found after registration");let o=i.id,a=i.publicKey,c=zs(),l=await J(void 0,void 0,o,a),u=await ae(n,l);return await this.walletStorage.store({ethereumAddress:this.currentUser.ethereumAddress,encryptedMnemonic:u,credentialId:o,createdAt:new Date().toISOString(),salt:i.prfEnabled?oe(c):void 0}),await this.sessionManager.startSession(n,o,t,a,"STANDARD"),this.currentWallet={address:t,mnemonic:n},this.config.onAuthStateChanged?.(!0,this.currentUser),{address:t,username:e.username}}catch(t){throw this.config.onError?.(t),t}}async login(){try{let e=await this.sessionManager.attemptSilentRestore();if(e){let u=await new R().getCredentialById(e.credentialId);return this.currentUser={username:u?.username||e.ethereumAddress,ethereumAddress:e.ethereumAddress,credentialId:e.credentialId},await this.walletStorage.retrieve(this.currentUser.ethereumAddress)?(this.config.onAuthStateChanged?.(!0,this.currentUser),this.currentUser):(await this.sessionManager.clearSession(),this.login())}let t=await dn();if(!t.verified||!t.user)throw new K("Login failed");this.currentUser={username:t.user.username,ethereumAddress:t.user.ethereumAddress,credentialId:t.user.credentialId};let n=await this.walletStorage.retrieve(this.currentUser.ethereumAddress);if(!n)return this.config.onAuthStateChanged?.(!0,this.currentUser),this.currentUser;let o=(await new R().getCredentialById(n.credentialId))?.publicKey,a=await this.sessionManager.restoreFromPersistentStorage(this.currentUser.ethereumAddress,n.credentialId,o||""),c;if(a)c=a;else{let l=await J(void 0,void 0,n.credentialId,o);c=await ce(n.encryptedMnemonic,l),await this.sessionManager.startSession(c,n.credentialId,this.currentUser.ethereumAddress,o,"STANDARD")}return this.config.onAuthStateChanged?.(!0,this.currentUser),this.currentUser}catch(e){throw this.config.onError?.(e),e}}async logout(){this.currentUser=null,this.currentWallet=null,await this.sessionManager.clearSession(),this.config.onAuthStateChanged?.(!1,void 0)}get isAuthenticated(){return this.currentUser!==null}get user(){return this.currentUser}async listExistingCredentials(){try{return(await new R().getAllCredentials()).map(n=>({username:n.username,ethereumAddress:n.ethereumAddress,createdAt:n.createdAt,lastUsed:n.lastUsed}))}catch{return[]}}async hasExistingCredential(){return(await this.listExistingCredentials()).length>0}async getExistingCredentialCount(){return(await this.listExistingCredentials()).length}async generateWallet(){try{let e=lr();return this.currentWallet={address:e.address,mnemonic:e.mnemonic},{address:e.address,mnemonic:e.mnemonic}}catch(e){throw this.config.onError?.(e),new y("Failed to generate wallet",e)}}async deriveWallet(e,t,n){try{if(!this.currentUser)throw new y("Must be authenticated to derive wallet");let s=e||ge,i=t||Q,o=n?.origin||we();if(s==="PRIMARY"){let{CredentialStorage:u}=await Promise.resolve().then(()=>(Le(),un)),{deriveAddressFromP256PublicKey:d}=await Promise.resolve().then(()=>(Et(),pn)),m=await new u().getCredentialById(this.currentUser.credentialId);if(!m||!m.publicKey)throw new y("No WebAuthn credential found for PRIMARY mode");return{address:await d(m.publicKey),origin:o,mode:s,tag:i,publicKey:m.publicKey}}let a=s==="STRICT"?!0:n?.requireAuth||!1,c=await this.getMnemonicFromSession(a,s),l=await ye(c,o,s,i);return{address:l.address,privateKey:l.privateKey,index:l.index,origin:l.origin,mode:l.mode,tag:l.tag}}catch(s){throw this.config.onError?.(s),new y("Failed to derive wallet",s)}}async getAddress(e,t,n){try{if(!this.currentUser)throw new y("Must be authenticated to get address");let s=e||ge,i=t||Q,o=n?.origin||we();if(s==="PRIMARY"){let{deriveAddressFromP256PublicKey:u}=await Promise.resolve().then(()=>(Et(),pn)),h=await new R().getCredentialById(this.currentUser.credentialId);if(!h||!h.publicKey)throw new y("No WebAuthn credential found for PRIMARY mode");return await u(h.publicKey)}let a=s==="STRICT",c=await this.getMnemonicFromSession(a,s);return(await ye(c,o,s,i)).address}catch(s){throw this.config.onError?.(s),new y("Failed to get address",s)}}async importMnemonic(e){try{if(!this.currentUser)throw new y("Must be authenticated to import mnemonic");if(!e||e.trim().split(/\s+/).length<12)throw new y("Invalid mnemonic: must be at least 12 words");let t=await dn();if(!t.user)throw new y("Authentication failed");let n=t.user.credentialId,o=(await new R().getCredentialById(n))?.publicKey,a=await J(void 0,void 0,n,o),c=await ae(e.trim(),a);await this.walletStorage.store({ethereumAddress:this.currentUser.ethereumAddress,encryptedMnemonic:c,credentialId:n,createdAt:new Date().toISOString()}),this.currentWallet={address:this.currentUser.ethereumAddress,mnemonic:e.trim()},await this.sessionManager.startSession(e.trim(),n,this.currentUser.ethereumAddress,o,"STANDARD")}catch(t){throw this.config.onError?.(t),new y("Failed to import mnemonic",t)}}async signMessage(e,t){try{if(!this.currentUser)throw new y("Must be authenticated to sign message");let n=t?.mode||ge,s=t?.tag||Q,i=t?.origin||we(),o=t?.signingMethod||"EIP191",a=n==="STRICT"?!0:t?.requireAuth||!1,c=await this.getMnemonicFromSession(a,n),l=await ye(c,i,n,s),{Wallet:u}=await import("ethers"),d;if(l.privateKey)d=new u(l.privateKey);else{let{deriveWalletFromMnemonic:m}=await Promise.resolve().then(()=>(De(),vt)),{privateKey:g}=m(c,l.index);d=new u(g)}let h;switch(o){case"EIP191":case"SIWE":h=await d.signMessage(e);break;case"EIP712":if(!t?.eip712Domain||!t?.eip712Types||!t?.eip712PrimaryType)throw new y("EIP712 signing requires eip712Domain, eip712Types, and eip712PrimaryType in options");let m;try{m=typeof e=="string"?JSON.parse(e):e}catch{throw new y("EIP712 message must be valid JSON or an object")}h=await d.signTypedData(t.eip712Domain,t.eip712Types,m);break;case"rawHash":let{SigningKey:g}=await import("ethers"),w=e;if(w.startsWith("0x")&&(w=w.slice(2)),w.length!==64)throw new y("rawHash signing method requires a 32-byte hash (64 hex characters)");h=new g(d.privateKey).sign("0x"+w).serialized;break;default:throw new y(`Unsupported signing method: ${o}`)}return{signature:h,address:l.address,mode:l.mode,tag:l.tag,origin:l.origin}}catch(n){throw this.config.onError?.(n),new y("Failed to sign message",n)}}async signMessageWithPasskey(e){try{if(!this.currentUser)throw new y("Must be authenticated to sign message");let{extractRS:t}=await Promise.resolve().then(()=>(Zs(),ka)),{base64UrlDecode:n}=await Promise.resolve().then(()=>(me(),Os)),s=await crypto.subtle.digest("SHA-256",new TextEncoder().encode(e)),i="0x"+Buffer.from(s).toString("hex"),o=new Uint8Array(Buffer.from(i.slice(2),"hex")),a=this.currentUser.credentialId;if(!a)throw new y("Credential ID not found in user object");let c={challenge:o,rpId:window.location.hostname,allowCredentials:[{id:n(a),type:"public-key",transports:["internal","hybrid","usb","nfc","ble"]}],userVerification:"required",timeout:6e4},l=await navigator.credentials.get({publicKey:c});if(!l||!l.response)throw new y("WebAuthn signature failed");let u=l.response,d=new Uint8Array(u.authenticatorData),h=new Uint8Array(u.clientDataJSON),m=await crypto.subtle.digest("SHA-256",h),g=new Uint8Array(d.length+m.byteLength);g.set(d,0),g.set(new Uint8Array(m),d.length);let w=await crypto.subtle.digest("SHA-256",g.buffer),b="0x"+Buffer.from(w).toString("hex"),S=new Uint8Array(u.signature),{r:A,s:v}=t(S),{CredentialStorage:k}=await Promise.resolve().then(()=>(Le(),un)),x=await new k().getCredentialById(a);if(!x||!x.publicKey)throw new y("No WebAuthn credential found for PRIMARY mode");let{base64UrlToArrayBuffer:T}=await Promise.resolve().then(()=>(me(),Os)),O=T(x.publicKey),Be=await crypto.subtle.importKey("spki",O,{name:"ECDSA",namedCurve:"P-256"},!0,["verify"]),St=await crypto.subtle.exportKey("jwk",Be);if(!St.x||!St.y)throw new y("Invalid P-256 public key: missing x or y coordinates");let uh="0x"+Buffer.from(T(St.x)).toString("hex"),dh="0x"+Buffer.from(T(St.y)).toString("hex"),{deriveAddressFromP256PublicKey:hh}=await Promise.resolve().then(()=>(Et(),pn)),fh=await hh(x.publicKey);return{signature:{r:A,s:v},messageHash:i,signedHash:b,address:fh,publicKey:{qx:uh,qy:dh}}}catch(t){throw this.config.onError?.(t),new y("Failed to sign message with passkey",t)}}async sendTransaction(e,t){try{if(!this.currentUser)throw new y("Must be authenticated to send transaction");let n=t?.mode||ge,s=t?.tag||Q,i=t?.origin||we();if(n==="PRIMARY")throw t?.rpcUrl?new y("PRIMARY mode sendTransaction is not yet supported. Use signMessageWithPasskey() to obtain a P-256 signature and submit via a bundler manually."):new y("PRIMARY mode requires options.rpcUrl pointing to a bundler or sponsoring relayer. The P-256 address cannot pay gas directly without a deployed P-256-verifier contract via EIP-7702.");let o=n==="STRICT"?!0:t?.requireAuth||!1,a=await this.getMnemonicFromSession(o,n),c=await ye(a,i,n,s),{Wallet:l,JsonRpcProvider:u}=await import("ethers"),d;if(c.privateKey)d=new l(c.privateKey);else{let{deriveWalletFromMnemonic:b}=await Promise.resolve().then(()=>(De(),vt)),{privateKey:S}=b(a,c.index);d=new l(S)}let h=t?.rpcUrl??(await this.getEndpoints(e.chainId))[0];if(!h)throw new y(`No RPC endpoint found for chainId ${e.chainId}. Pass options.rpcUrl.`);let m=new u(h);return{hash:(await d.connect(m).sendTransaction({to:e.to,value:e.value,data:e.data??"0x",chainId:e.chainId,gasLimit:e.gasLimit,maxFeePerGas:e.maxFeePerGas,maxPriorityFeePerGas:e.maxPriorityFeePerGas,nonce:e.nonce})).hash,from:c.address,chainId:e.chainId,mode:c.mode,tag:c.tag,origin:c.origin}}catch(n){throw this.config.onError?.(n),new y("Failed to send transaction",n)}}async signAuthorization(e,t){try{if(!this.currentUser)throw new y("Must be authenticated to sign authorization");let{Wallet:n,Signature:s}=await import("ethers"),{hashEIP7702AuthorizationMessage:i,verifyEIP7702Authorization:o}=await Promise.resolve().then(()=>(An(),js)),a;if(e.privateKey)a=new n(e.privateKey);else{let w=await this.getMnemonicFromSession(t?.requireAuth);a=n.fromPhrase(w)}let c=BigInt(e.chainId||1),l=e.nonce||0n,u=i(c,e.contractAddress,l),d=a.signingKey.sign(u),h=s.from(d),m={chainId:c,address:e.contractAddress.toLowerCase(),nonce:l,yParity:h.yParity,r:h.r,s:h.s};if(!o(c,e.contractAddress,l,m,a.address))throw new y("Signature verification failed - this should not happen");return m}catch(n){throw this.config.onError?.(n),new y("Failed to sign authorization",n)}}async getEndpoints(e){return bn(e)}async supportsEIP7702(e,t){return Ea(e,this.getEndpoints.bind(this),t)}getEIP1193Provider(e){let t=e?.chainId??1,n=this,s={},i=(a,...c)=>{(s[a]??[]).forEach(l=>l(...c))};return{async request({method:a,params:c}){switch(a){case"eth_accounts":case"eth_requestAccounts":return[await n.getAddress(e?.mode??"STANDARD",e?.tag??"MAIN")];case"eth_chainId":return"0x"+t.toString(16);case"eth_sendTransaction":{let l=(c??[])[0]??{};if(!l.chainId&&!t)throw new y("eth_sendTransaction: chainId is required");let u=l.chainId?parseInt(l.chainId,16):t;return(await n.sendTransaction({to:l.to,value:l.value!==void 0?BigInt(l.value):void 0,data:l.data??"0x",chainId:u,gasLimit:l.gas!==void 0?BigInt(l.gas):void 0,maxFeePerGas:l.maxFeePerGas!==void 0?BigInt(l.maxFeePerGas):void 0,maxPriorityFeePerGas:l.maxPriorityFeePerGas!==void 0?BigInt(l.maxPriorityFeePerGas):void 0,nonce:l.nonce!==void 0?parseInt(l.nonce,16):void 0},{mode:e?.mode,tag:e?.tag,rpcUrl:e?.rpcUrl})).hash}case"personal_sign":{let[l]=c??[],u=Wc(l)?$c(l):l;return(await n.signMessage(u,{mode:e?.mode,tag:e?.tag,signingMethod:"EIP191"})).signature}case"eth_sign":{let[,l]=c??[],u=Wc(l)?$c(l):l;return(await n.signMessage(u,{mode:e?.mode,tag:e?.tag,signingMethod:"EIP191"})).signature}case"eth_signTypedData_v4":{let[,l]=c??[],u=typeof l=="string"?JSON.parse(l):l,{domain:d,types:h,message:m,primaryType:g}=u,w={...h};return delete w.EIP712Domain,(await n.signMessage(JSON.stringify(m),{mode:e?.mode,tag:e?.tag,signingMethod:"EIP712",eip712Domain:d,eip712Types:w,eip712PrimaryType:g})).signature}case"wallet_switchEthereumChain":{let l=parseInt((c??[])[0]?.chainId??"0x1",16);return t=l,i("chainChanged","0x"+l.toString(16)),null}default:throw new y(`w3pk EIP-1193: unsupported method "${a}"`)}},on(a,c){s[a]||(s[a]=[]),s[a].push(c)},removeListener(a,c){s[a]&&(s[a]=s[a].filter(l=>l!==c))}}}async requestExternalWalletDelegation(e){if(!this.currentUser)throw new y("Must be authenticated to get w3pk delegation address. Call login() or register() first.");let{requestExternalWalletAuthorization:t,getDefaultProvider:n}=await Promise.resolve().then(()=>(Js(),va)),s=e?.provider||n();if(!s)throw new y("No external wallet provider found. Please install MetaMask, Rabby, or similar wallet.");let i=this.currentUser.ethereumAddress;return t(s,{delegateToAddress:i,chainId:e?.chainId,nonce:e?.nonce,accountIndex:e?.accountIndex})}get zk(){return new Proxy({},{get:(e,t)=>async(...n)=>(await this.loadZKModule())[t](...n)})}async getBackupStatus(){if(!this.currentUser)throw new y("Must be authenticated to check backup status");let{BackupManager:e}=await Promise.resolve().then(()=>(lt(),ct));return new e().getBackupStatus(this.currentUser.ethereumAddress)}async createBackupFile(e="password",t){if(!this.currentUser)throw new y("Must be authenticated to create backup");let n=await this.getMnemonicFromSession(!0),{BackupFileManager:s}=await Promise.resolve().then(()=>(de(),be)),{BackupStorage:i}=await Promise.resolve().then(()=>(Cn(),Ca)),o=new s,a=new i,c,l;if(e==="password"){if(!t)throw new y("Password required for password-based backup");l=(await o.createPasswordBackup(n,this.currentUser.ethereumAddress,t)).backupFile,c=o.createDownloadableBackup(l)}else if(e==="passkey"){let u=await this.walletStorage.retrieve(this.currentUser.ethereumAddress);if(!u)throw new y("No wallet data found");let h=await new R().getCredentialById(u.credentialId);if(!h)throw new y("Credential not found");l=(await o.createPasskeyBackup(n,this.currentUser.ethereumAddress,h.id,h.publicKey)).backupFile,c=o.createDownloadableBackup(l)}else if(e==="hybrid"){if(!t)throw new y("Password required for hybrid backup");let u=await this.walletStorage.retrieve(this.currentUser.ethereumAddress);if(!u)throw new y("No wallet data found");let h=await new R().getCredentialById(u.credentialId);if(!h)throw new y("Credential not found");l=(await o.createHybridBackup(n,this.currentUser.ethereumAddress,t,h.id,h.publicKey)).backupFile,c=o.createDownloadableBackup(l)}else throw new y(`Unknown encryption type: ${e}`);return await a.storeBackupMetadata({id:crypto.randomUUID(),ethereumAddress:this.currentUser.ethereumAddress,method:"file",createdAt:new Date().toISOString(),addressChecksum:l.addressChecksum}),c}async setupSocialRecovery(e,t,n){if(!this.currentUser)throw new y("Must be authenticated to set up social recovery");let s=await this.getMnemonicFromSession(!0),{BackupFileManager:i}=await Promise.resolve().then(()=>(de(),be)),o=new i,a;if(n)a=(await o.createPasswordBackup(s,this.currentUser.ethereumAddress,n)).backupFile;else{let d=await this.walletStorage.retrieve(this.currentUser.ethereumAddress);if(!d)throw new y("No wallet data found");let m=await new R().getCredentialById(d.credentialId);if(!m)throw new y("Credential not found");a=(await o.createPasskeyBackup(s,this.currentUser.ethereumAddress,m.id,m.publicKey)).backupFile}let{SocialRecovery:c}=await Promise.resolve().then(()=>(jn(),Yn));return{guardianShares:(await new c().splitAmongGuardians(a,e,t)).guardianShares,setupComplete:!0}}async generateGuardianInvite(e,t){let{SocialRecovery:n}=await Promise.resolve().then(()=>(jn(),Yn)),s=new n,i=await s.createGuardianInvitation(e,t),o=s.createShareDownload(e);return{qrCodeDataURL:i.qrCodeDataURL,shareDocument:i.shareDocument,downloadBlob:o.blob,filename:o.filename}}async recoverFromGuardians(e,t){let{SocialRecovery:n}=await Promise.resolve().then(()=>(jn(),Yn)),{BackupFileManager:s}=await Promise.resolve().then(()=>(de(),be)),{BackupManager:i}=await Promise.resolve().then(()=>(lt(),ct)),o=new n,a=new s,c=new i,l=e.map(h=>typeof h=="string"?o.parseGuardianShare(h):h),u=await o.recoverFromShares(l),d;if(u.encryptionMethod==="password"){if(!t)throw new y("Password required to decrypt password-protected backup");d=await a.restoreWithPassword(u,t)}else throw new y("Passkey-encrypted backups not supported for guardian recovery. Use password-protected backups.");return c.markBackupVerified(d.ethereumAddress),d}async restoreFromBackupFile(e,t){let{BackupFileManager:n}=await Promise.resolve().then(()=>(de(),be)),{BackupManager:s}=await Promise.resolve().then(()=>(lt(),ct)),i=new n,o=new s,a=await i.parseBackupFile(e),c,l;if(a.encryptionMethod==="password"){if(!t)throw new y("Password required to restore password-encrypted backup");let u=await i.restoreWithPassword(a,t);c=u.mnemonic,l=u.ethereumAddress}else if(a.encryptionMethod==="passkey"){if(!this.currentUser)throw new y("Must be logged in with passkey to restore passkey-encrypted backup. Call login() first.");let h=(await new R().getAllCredentials()).find(g=>g.ethereumAddress.toLowerCase()===this.currentUser.ethereumAddress.toLowerCase());if(!h)throw new y("Credential not found for current user");let m=await i.restoreWithExistingPasskey(a,h.id,h.publicKey);c=m.mnemonic,l=m.ethereumAddress}else if(a.encryptionMethod==="hybrid"){if(!t)throw new y("Password required to restore hybrid backup");if(!this.currentUser)throw new y("Must be logged in with passkey to restore hybrid backup. Call login() first.");let h=(await new R().getAllCredentials()).find(g=>g.ethereumAddress.toLowerCase()===this.currentUser.ethereumAddress.toLowerCase());if(!h)throw new y("Credential not found for current user");let m=await i.restoreWithHybrid(a,t,h.id,h.publicKey);c=m.mnemonic,l=m.ethereumAddress}else throw new y(`Unknown encryption method: ${a.encryptionMethod}`);if(o.markBackupVerified(l),this.currentWallet={address:l,mnemonic:c},this.currentUser){let u=new R,h=(await u.getAllCredentials()).find(m=>m.ethereumAddress.toLowerCase()===this.currentUser.ethereumAddress.toLowerCase());if(h){let m=this.currentUser.ethereumAddress;m.toLowerCase()!==l.toLowerCase()&&await this.walletStorage.delete(m),await u.updateCredentialAddress(h.id,l);let g=await(await Promise.resolve().then(()=>(q(),Ne))).deriveEncryptionKeyAuto(void 0,void 0,h.id,h.publicKey),w=await(await Promise.resolve().then(()=>(q(),Ne))).encryptData(c,g);await this.walletStorage.store({ethereumAddress:l,encryptedMnemonic:w,credentialId:h.id,createdAt:new Date().toISOString()}),this.currentUser={...this.currentUser,ethereumAddress:l},await this.sessionManager.startSession(c,h.id,l,h.publicKey,"STANDARD"),this.config.onAuthStateChanged?.(!0,this.currentUser)}}return{mnemonic:c,ethereumAddress:l}}async syncWalletWithPasskey(e,t){let{BackupFileManager:n}=await Promise.resolve().then(()=>(de(),be)),{BackupManager:s}=await Promise.resolve().then(()=>(lt(),ct)),{promptPasskeySelection:i}=await Promise.resolve().then(()=>(Ii(),Tc)),o=new n,a=new s,c=await i(),l=await o.parseBackupFile(e),u,d;if(l.encryptionMethod==="password"){if(!t)throw new y("Password required to restore password-encrypted backup");let g=await o.restoreWithPassword(l,t);u=g.mnemonic,d=g.ethereumAddress}else if(l.encryptionMethod==="passkey"){if(!c.publicKey)throw new y("Passkey public key not found. The passkey may not be registered on this device yet.");let g=await o.restoreWithExistingPasskey(l,c.credentialId,c.publicKey);u=g.mnemonic,d=g.ethereumAddress}else if(l.encryptionMethod==="hybrid"){if(!t)throw new y("Password required to restore hybrid backup");if(!c.publicKey)throw new y("Passkey public key not found. The passkey may not be registered on this device yet.");let g=await o.restoreWithHybrid(l,t,c.credentialId,c.publicKey);u=g.mnemonic,d=g.ethereumAddress}else throw new y(`Unknown encryption method: ${l.encryptionMethod}`);a.markBackupVerified(d);let m=await new R().getCredentialById(c.credentialId);if(m){let{deriveEncryptionKeyAuto:g,encryptData:w}=await Promise.resolve().then(()=>(q(),Ne)),b=await g(void 0,void 0,m.id,m.publicKey),S=await w(u,b);await this.walletStorage.store({ethereumAddress:d,encryptedMnemonic:S,credentialId:m.id,createdAt:new Date().toISOString()}),this.currentUser={username:m.username,ethereumAddress:d,credentialId:m.id},await this.sessionManager.startSession(u,m.id,d,m.publicKey,"STANDARD"),this.config.onAuthStateChanged?.(!0,this.currentUser)}return{mnemonic:u,ethereumAddress:d}}async registerWithBackupFile(e,t,n){let{BackupFileManager:s}=await Promise.resolve().then(()=>(de(),be)),{BackupManager:i}=await Promise.resolve().then(()=>(lt(),ct)),o=new s,a=new i,c=await o.parseBackupFile(e);if(c.encryptionMethod!=="password")throw new y("Can only register with password-encrypted backups. Use restoreFromBackupFile() for passkey-encrypted backups.");let{mnemonic:l,ethereumAddress:u}=await o.restoreWithPassword(c,t),{Wallet:d}=await import("ethers");if(d.fromPhrase(l).address.toLowerCase()!==u.toLowerCase())throw new y("Backup verification failed: address mismatch");return a.markBackupVerified(u),this.currentWallet={address:u,mnemonic:l},this.register({username:n})}async getSyncStatus(){let{DeviceSyncManager:e}=await Promise.resolve().then(()=>(Dr(),Jn));return new e().getSyncInfo()}async exportForSync(){if(!this.currentUser)throw new y("Must be authenticated to export for sync");let e=await this.getMnemonicFromSession(!0),t=await this.walletStorage.retrieve(this.currentUser.ethereumAddress);if(!t)throw new y("No wallet data found");let s=await new R().getCredentialById(t.credentialId);if(!s)throw new y("Credential not found");let{DeviceSyncManager:i}=await Promise.resolve().then(()=>(Dr(),Jn)),o=new i,{backupFile:a,blob:c}=await o.exportForSync(e,this.currentUser.ethereumAddress,s.id,s.publicKey),l=`w3pk-sync-${this.currentUser.ethereumAddress.substring(0,8)}.json`,u;try{u=await o.generateSyncQR(a)}catch(d){console.warn("QR code generation failed:",d)}return{blob:c,filename:l,qrCode:u}}async importFromSync(e){if(!this.currentUser)throw new y("Must be logged in to import from sync. Call login() first.");let{DeviceSyncManager:t}=await Promise.resolve().then(()=>(Dr(),Jn)),{BackupFileManager:n}=await Promise.resolve().then(()=>(de(),be)),{BackupManager:s}=await Promise.resolve().then(()=>(lt(),ct)),i=new n,o=new t,a=new s,c=await i.parseBackupFile(e),l=await this.walletStorage.retrieve(this.currentUser.ethereumAddress);if(!l)throw new y("No wallet data found for current user");let d=await new R().getCredentialById(l.credentialId);if(!d)throw new y("Credential not found");let{mnemonic:h,ethereumAddress:m}=await o.importFromSync(c,d.id,d.publicKey);a.markBackupVerified(m);let g=await(await Promise.resolve().then(()=>(q(),Ne))).deriveEncryptionKeyAuto(void 0,void 0,d.id,d.publicKey),w=await(await Promise.resolve().then(()=>(q(),Ne))).encryptData(h,g);return await this.walletStorage.store({ethereumAddress:m,encryptedMnemonic:w,credentialId:d.id,createdAt:new Date().toISOString()}),{ethereumAddress:m,success:!0}}async detectSyncCapabilities(){let{PlatformDetector:e}=await Promise.resolve().then(()=>(Lc(),Nc));return new e().detectSyncCapabilities()}async simulateRecoveryScenario(e){if(!this.currentUser)throw new y("Must be authenticated to run recovery simulation");let t=await this.getBackupStatus(),{RecoverySimulator:n}=await Promise.resolve().then(()=>(Tr(),ts));return new n().simulateScenario(e,t)}async runRecoveryTest(){if(!this.currentUser)throw new y("Must be authenticated to run recovery test");let e=await this.getBackupStatus(),{RecoverySimulator:t}=await Promise.resolve().then(()=>(Tr(),ts));return new t().runInteractiveTest(e)}async getEducation(e){let{getExplainer:t}=await Promise.resolve().then(()=>(Tr(),ts)),n=t(e);if(!n)throw new y(`Unknown education topic: ${e}`);return n}hasActiveSession(){return this.sessionManager.isActive()}getSessionRemainingTime(){return this.sessionManager.getRemainingTime()}extendSession(){try{this.sessionManager.extendSession()}catch(e){throw new y("Cannot extend session",e)}}async clearSession(){await this.sessionManager.clearSession()}setSessionDuration(e){this.sessionManager.setSessionDuration(e)}async deriveMLKemPublicKey(e){if(!this.currentUser)throw new y("Must be authenticated to derive ML-KEM public key");let{deriveMLKemKeypair:t}=await Promise.resolve().then(()=>(Fr(),is)),{Wallet:n}=await import("ethers"),s=e?.mode||"STANDARD",i=e?.tag||Q,o=e?.origin||we(),a=e?.context||"mlkem-v1",c=s==="STRICT"?!0:e?.requireAuth||!1;if(s==="PRIMARY")throw new y("ML-KEM encryption is not supported in PRIMARY mode. PRIMARY mode uses P-256 WebAuthn keys which cannot derive ML-KEM keypairs. Use STANDARD, STRICT, or YOLO mode instead.");let l=await this.getMnemonicFromSession(c,s),u=await ye(l,o,s,i),d;if(u.privateKey)d=u.privateKey;else{let{deriveWalletFromMnemonic:m}=await Promise.resolve().then(()=>(De(),vt));d=m(l,u.index).privateKey}let h=await t(d,a);return typeof Buffer<"u"?Buffer.from(h.publicKey).toString("base64"):btoa(String.fromCharCode(...Array.from(h.publicKey)))}async mlkemEncrypt(e,t,n){if(!this.currentUser)throw new y("Must be authenticated to encrypt data");let{mlkemEncryptWithKey:s}=await Promise.resolve().then(()=>(Fr(),is)),i=n?.mode||"STANDARD",o=n?.tag||Q,a=n?.origin||we(),c=n?.context||"mlkem-v1",l=i==="STRICT"?!0:n?.requireAuth||!1;if(i==="PRIMARY")throw new y("ML-KEM encryption is not supported in PRIMARY mode. Use STANDARD, STRICT, or YOLO mode instead.");let u=await this.getMnemonicFromSession(l,i),d=await ye(u,a,i,o),h;if(d.privateKey)h=d.privateKey;else{let{deriveWalletFromMnemonic:m}=await Promise.resolve().then(()=>(De(),vt));h=m(u,d.index).privateKey}return await s(e,h,t,c)}async mlkemDecrypt(e,t){if(!this.currentUser)throw new y("Must be authenticated to decrypt data");let{mlkemDecryptWithKey:n}=await Promise.resolve().then(()=>(Fr(),is)),s=t?.mode||"STANDARD",i=t?.tag||Q,o=t?.origin||we(),a=t?.context||"mlkem-v1",c=s==="STRICT"?!0:t?.requireAuth||!1;if(s==="PRIMARY")throw new y("ML-KEM encryption is not supported in PRIMARY mode. Use STANDARD, STRICT, or YOLO mode instead.");let l=await this.getMnemonicFromSession(c,s),u=await ye(l,o,s,i),d;if(u.privateKey)d=u.privateKey;else{let{deriveWalletFromMnemonic:h}=await Promise.resolve().then(()=>(De(),vt));d=h(l,u.index).privateKey}return await n(e,d,a)}};j();Ii();Et();Tr();async function Cg(r,e="build"){let{importer:t}=await Promise.resolve().then(()=>(zo(),Rd)),{MemoryBlockstore:n}=await Promise.resolve().then(()=>(th(),eh)),s=new n,o=t(async function*(){yield{path:e,content:r}}(),s,{cidVersion:1,rawLeaves:!0,wrapWithDirectory:!1});for await(let a of o)return a.cid.toString();throw new Error("Failed to generate CID")}async function Pg(r){let e=["index.js","index.mjs","index.d.ts"],t=[],n=0;for(let o of e){let a=`${r}/${o}`,c=await fetch(a);if(!c.ok)throw new Error(`Failed to fetch ${o}: ${c.statusText}`);let l=await c.arrayBuffer(),u=new Uint8Array(l);t.push(u),n+=u.length}let s=new Uint8Array(n),i=0;for(let o of t)s.set(o,i),i+=o.length;return s}async function ea(r){let e=await Pg(r);return Cg(e)}function ta(){try{return rh().version}catch{throw new Error("Failed to read package version")}}async function ra(){let r=ta();return ea(`https://unpkg.com/w3pk@${r}/dist`)}async function nh(r){return await ra()===r}me();Zs();De();function sh(r=11){let e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",t=new Uint8Array(r);return crypto.getRandomValues(t),Array.from(t).map(n=>e[n%e.length]).join("")}function ih(r){if(!r.domain||!r.address||!r.uri||!r.version||r.chainId===void 0||!r.nonce||!r.issuedAt)throw new Error("Missing required SIWE message fields");if(r.version!=="1")throw new Error('SIWE version must be "1"');if(r.nonce.length<8||!/^[a-zA-Z0-9]+$/.test(r.nonce))throw new Error("Nonce must be at least 8 alphanumeric characters");if(r.statement&&r.statement.includes(`
|
|
960
|
+
${e}[Error list was empty]`,t.trim()}return Ud(r,e)}function fg(r){let e=()=>{};return e.enabled=!1,e.color="",e.diff=0,e.log=()=>{},e.namespace=r,e.destroy=()=>!0,e.extend=()=>e,e.useColors=()=>!1,e}function Zo(r,e){let t=fg(`${r}:trace`);return ee.enabled(`${r}:trace`)&&ee.names.map(n=>n.toString()).find(n=>n.includes(":trace"))!=null&&(t=ee(`${r}:trace`,e)),Object.assign(ee(r,e),{error:ee(`${r}:error`,e),trace:t,newScope:n=>Zo(`${r}:${n}`,e)})}function Ld(r){if(r!=null&&(r=r.trim(),r.length!==0))return r}var Kd=p(()=>{"use strict";Kr();fs();mo();Nd();ee.formatters.b=r=>r==null?"undefined":ue.baseEncode(r);ee.formatters.t=r=>r==null?"undefined":Q.baseEncode(r);ee.formatters.m=r=>r==null?"undefined":fo.baseEncode(r);ee.formatters.p=r=>r==null?"undefined":r.toString();ee.formatters.c=r=>r==null?"undefined":r.toString();ee.formatters.k=r=>r==null?"undefined":r.toString();ee.formatters.a=r=>r==null?"undefined":r.toString();ee.formatters.e=r=>r==null?"undefined":_d(r)});function pg(r){let[e,t]=r[Symbol.asyncIterator]!=null?[r[Symbol.asyncIterator](),Symbol.asyncIterator]:[r[Symbol.iterator](),Symbol.iterator],n=[];return{peek:()=>e.next(),push:s=>{n.push(s)},next:()=>n.length>0?{done:!1,value:n.shift()}:e.next(),[t](){return this}}}var Od,zd=p(()=>{"use strict";Od=pg});function mg(r){return r[Symbol.asyncIterator]!=null}function gg(r,e){let t=0;if(mg(r))return(async function*(){for await(let c of r)await e(c,t++)&&(yield c)})();let n=Od(r),{value:s,done:i}=n.next();if(i===!0)return(function*(){})();let o=e(s,t++);if(typeof o.then=="function")return(async function*(){await o&&(yield s);for(let c of n)await e(c,t++)&&(yield c)})();let a=e;return(function*(){o===!0&&(yield s);for(let c of n)a(c,t++)&&(yield c)})()}var Wd,$d=p(()=>{"use strict";zd();Wd=gg});function ar(){let r={};return r.promise=new Promise((e,t)=>{r.resolve=e,r.reject=t}),r}var qd=p(()=>{"use strict"});function yg(r){return r.reason}async function Hd(r,e,t){if(e==null)return r;let n=t?.translateError??yg;if(e.aborted)return r.catch(()=>{}),Promise.reject(n(e));let s;try{return await Promise.race([r,new Promise((i,o)=>{s=()=>{o(n(e))},e.addEventListener("abort",s)})])}finally{s!=null&&e.removeEventListener("abort",s)}}var Vd=p(()=>{"use strict"});function Gd(){return new Xo}var Xo,Yd=p(()=>{"use strict";qd();Vd();Xo=class{constructor(){f(this,"readNext");f(this,"haveNext");f(this,"ended");f(this,"nextResult");f(this,"error");this.ended=!1,this.readNext=ar(),this.haveNext=ar()}[Symbol.asyncIterator](){return this}async next(){if(this.nextResult==null&&await this.haveNext.promise,this.nextResult==null)throw new Error("HaveNext promise resolved but nextResult was undefined");let e=this.nextResult;return this.nextResult=void 0,this.readNext.resolve(),this.readNext=ar(),e}async throw(e){return this.ended=!0,this.error=e,e!=null&&(this.haveNext.promise.catch(()=>{}),this.haveNext.reject(e)),{done:!0,value:void 0}}async return(){let e={done:!0,value:void 0};return this.ended=!0,this.nextResult=e,this.haveNext.resolve(),e}async push(e,t){await this._push(e,t)}async end(e,t){e!=null?await this.throw(e):await this._push(void 0,t)}async _push(e,t){if(e!=null&&this.ended)throw this.error??new Error("Cannot push value onto an ended pushable");for(;this.nextResult!=null;)await this.readNext.promise;e!=null?this.nextResult={done:!1,value:e}:(this.ended=!0,this.nextResult={done:!0,value:void 0}),this.haveNext.resolve(),this.haveNext=ar(),await Hd(this.readNext.promise,t?.signal,t)}}});function wg(r){return r[Symbol.asyncIterator]!=null}async function bg(r,e,t){try{await Promise.all(r.map(async n=>{for await(let s of n)await e.push(s,{signal:t}),t.throwIfAborted()})),await e.end(void 0,{signal:t})}catch(n){await e.end(n,{signal:t}).catch(()=>{})}}async function*Sg(r){let e=new AbortController,t=Gd();bg(r,t,e.signal).catch(()=>{});try{yield*t}finally{e.abort()}}function*Ag(r){for(let e of r)yield*e}function xg(...r){let e=[];for(let t of r)wg(t)||e.push(t);return e.length===r.length?Ag(e):Sg(r)}var jd,Jd=p(()=>{"use strict";Yd();jd=xg});var vg,Ms,Qd=p(()=>{"use strict";Kd();Is();$d();Jd();on();vg=Zo("blockstore:core:tiered"),Ms=class extends Ie{constructor(t){super();f(this,"stores");this.stores=t.slice()}async put(t,n,s){return await Promise.all(this.stores.map(async i=>{await i.put(t,n,s)})),t}async*get(t,n){let s;for(let i of this.stores)try{yield*i.get(t,n);return}catch(o){s=o,vg.error(o)}throw s??new Qe}async has(t,n){for(let s of this.stores)if(await s.has(t,n))return!0;return!1}async delete(t,n){await Promise.all(this.stores.map(async s=>{await s.delete(t,n)}))}async*putMany(t,n={}){for await(let s of t)await this.put(s.cid,s.bytes,n),yield s.cid}async*deleteMany(t,n={}){for await(let s of t)await this.delete(s,n),yield s}async*getAll(t){let n=new Set;yield*Wd(jd(...this.stores.map(s=>s.getAll(t))),s=>{let i=s.cid.toString();return n.has(i)?!1:(n.add(i),!0)})}}});var Zd={};k(Zd,{BaseBlockstore:()=>Ie,BlackHoleBlockstore:()=>or,MemoryBlockstore:()=>Ts,TieredBlockstore:()=>Ms});var Xd=p(()=>{"use strict";on();Td();Ho();Qd()});var eh=P((GA,kg)=>{kg.exports={name:"w3pk",version:"0.10.2",description:"WebAuthn SDK for passwordless authentication, encrypted wallets, ERC-5564 stealth addresses, and zero-knowledge proofs",author:"Julien B\xE9ranger",license:"GPL-3.0",repository:{type:"git",url:"https://github.com/w3hc/w3pk.git"},bugs:{url:"https://github.com/w3hc/w3pk/issues"},homepage:"https://github.com/w3hc/w3pk#readme",keywords:["webauthn","passkey","authentication","passwordless","fido2","biometric","ethereum","web3","encryption","zero-knowledge","zk-proofs","zk-snarks","privacy","stealth-address","erc-5564","erc-6538","unlinkable","anonymous-transactions","privacy-preserving","ecdh","secp256k1","view-tags","circom","groth16","merkle-tree","commitment-scheme"],main:"./dist/index.js",module:"./dist/index.mjs",types:"./dist/index.d.ts",exports:{".":{types:"./dist/index.d.ts",import:"./dist/index.mjs",require:"./dist/index.js"},"./zk":{types:"./dist/zk/index.d.ts",import:"./dist/zk/index.mjs",require:"./dist/zk/index.js"},"./zk/utils":{types:"./dist/zk/utils.d.ts",import:"./dist/zk/utils.mjs",require:"./dist/zk/utils.js"},"./chainlist":{types:"./dist/chainlist/index.d.ts",import:"./dist/chainlist/index.mjs",require:"./dist/chainlist/index.js"},"./inspect":{types:"./dist/inspect/index.d.ts",import:"./dist/inspect/index.mjs",require:"./dist/inspect/index.js"},"./inspect/node":{types:"./dist/inspect/node.d.ts",import:"./dist/inspect/node.mjs",require:"./dist/inspect/node.js"}},sideEffects:!1,files:["dist","README.md","LICENSE","docs/","scripts/compute-build-hash.mjs"],scripts:{build:"tsup","build:zk":"npm run build && npm run compile:circuits","compile:circuits":"node scripts/compile-circuits.js",dev:"tsup --watch",test:"tsx test/test.ts && tsx test/comprehensive.test.ts && tsx test/backup.test.ts && tsx test/social-recovery.test.ts && tsx test/recovery-education.test.ts && tsx test/zk/zk.test.ts && tsx test/nft-ownership.test.ts && tsx test/chainlist.test.ts && tsx test/eip7702.test.ts && tsx test/external-wallet.test.ts && tsx test/erc5564.test.ts && tsx test/zk/key-stretching.test.ts && tsx test/username-encoding.test.ts && tsx test/username-validation.test.ts && tsx test/origin-derivation.test.ts && tsx test/build-hash.test.ts && tsx test/credential-checking.test.ts && tsx test/webauthn-native.test.ts && tsx test/persistent-session.test.ts && tsx test/sign-message.test.ts && tsx test/siwe.test.ts && tsx test/requirereauth.test.ts && tsx test/eip7951.test.ts && tsx test/send-transaction.test.ts && tsx test/eip1193-provider.test.ts && tsx test/mlkem.test.ts","test:basic":"tsx test/test.ts","test:comprehensive":"tsx test/comprehensive.test.ts","test:backup":"tsx test/backup.test.ts","test:social-recovery":"tsx test/social-recovery.test.ts","test:education":"tsx test/recovery-education.test.ts","test:username":"tsx test/username-encoding.test.ts && tsx test/username-validation.test.ts","test:recovery":"tsx test/backup.test.ts && tsx test/social-recovery.test.ts && tsx test/recovery-education.test.ts","test:zk":"tsx test/zk/zk.test.ts","test:nft":"tsx test/nft-ownership.test.ts","test:chainlist":"tsx test/chainlist.test.ts","test:eip7702":"tsx test/eip7702.test.ts","test:external-wallet":"tsx test/external-wallet.test.ts","test:eip7951":"tsx test/eip7951.test.ts","test:erc5564":"tsx test/erc5564.test.ts","test:sign-message":"tsx test/sign-message.test.ts","test:siwe":"tsx test/siwe.test.ts",prepublishOnly:"pnpm build","build:hash":"node scripts/compute-build-hash.mjs",html:"lsof -ti:3000 | xargs kill -9 2>/dev/null || true && tsup && npx serve . -l 3000 & sleep 5 && open http://localhost:3000/standalone/checker.html"},packageManager:"pnpm@10.6.4",devDependencies:{"@types/node":"^25.9.2","@types/qrcode":"^1.5.5",circomlib:"^2.0.5",tsup:"^8.5.1",tsx:"^4.22.4",typescript:"^6.0.3"},peerDependencies:{ethers:"^6.0.0"},optionalDependencies:{"@ipld/car":"^5.4.6","blockstore-core":"^7.0.1",circomlibjs:"^0.1.7","ipfs-unixfs-importer":"^17.0.1",qrcode:"^1.5.4",snarkjs:"^0.7.6"},dependencies:{"@noble/hashes":"^2.2.0",mlkem:"^2.7.0"},pnpm:{overrides:{"jsonpath@<1.2.0":">=1.2.0","bn.js@>=5.0.0 <5.2.3":">=5.2.3","bn.js@<4.12.3":">=4.12.3","minimatch@>=5.0.0 <5.1.7":">=5.1.7","rollup@>=4.0.0 <4.59.0":">=4.59.0","minimatch@>=5.0.0 <5.1.8":">=5.1.8","jsonpath@<=1.2.1":">=1.3.0","brace-expansion@>=2.0.0 <2.0.3":">=2.0.3","picomatch@>=4.0.0 <4.0.4":">=4.0.4","underscore@<=1.13.7":">=1.13.8","ws@>=8.0.0 <8.20.1":">=8.20.1"}}}});var Dg={};k(Dg,{ApiError:()=>an,AuthenticationError:()=>K,CryptoError:()=>N,DEFAULT_MODE:()=>pe,DEFAULT_TAG:()=>J,RecoverySimulator:()=>Mt,RegistrationError:()=>At,SocialRecoveryManager:()=>at,StealthAddressModule:()=>Pt,StorageError:()=>I,WalletError:()=>y,Web3Passkey:()=>Ut,Web3PasskeyError:()=>$,arrayBufferToBase64Url:()=>ve,assertEthereumAddress:()=>cn,assertMnemonic:()=>ia,assertUsername:()=>ln,authenticateWithPasskey:()=>Pi,base64ToArrayBuffer:()=>Ks,base64UrlDecode:()=>zs,base64UrlToArrayBuffer:()=>L,canControlStealthAddress:()=>fa,checkStealthAddress:()=>pr,clearCache:()=>Sa,computeStealthPrivateKey:()=>mr,createSiweMessage:()=>nh,createWalletFromMnemonic:()=>qs,createWeb3Passkey:()=>ah,default:()=>Bg,deriveAddressFromP256PublicKey:()=>Hs,deriveIndexFromOriginModeAndTag:()=>mn,deriveMLKemKeypair:()=>Mr,deriveStealthKeys:()=>Ct,deriveWalletFromMnemonic:()=>hr,detectWalletProvider:()=>Cn,encodeEIP7702AuthorizationMessage:()=>yr,extractRS:()=>Qs,generateBIP39Wallet:()=>dr,generateSiweNonce:()=>rh,generateStealthAddress:()=>yn,getAllChains:()=>wa,getAllTopics:()=>Di,getChainById:()=>ba,getCurrentBuildHash:()=>ra,getCurrentOrigin:()=>ge,getDefaultProvider:()=>En,getEndpoints:()=>An,getExplainer:()=>Bi,getOriginSpecificAddress:()=>me,getPackageVersion:()=>ta,getW3pkBuildHash:()=>ea,hashEIP7702AuthorizationMessage:()=>wr,inspect:()=>na,inspectNow:()=>oh,isStrongPassword:()=>oa,mlkemDecrypt:()=>os,mlkemDecryptWithKey:()=>Fi,mlkemEncrypt:()=>is,mlkemEncryptWithKey:()=>Ri,normalizeOrigin:()=>fr,parseSiweMessage:()=>Ns,promptPasskeySelection:()=>Ci,requestExternalWalletAuthorization:()=>kn,safeAtob:()=>Xe,safeBtoa:()=>Os,searchExplainers:()=>Ti,supportsEIP7702Authorization:()=>Pn,validateEthereumAddress:()=>Us,validateMnemonic:()=>_s,validateSiweMessage:()=>sh,validateUsername:()=>Ls,verifyBuildHash:()=>th,verifyEIP7702Authorization:()=>xn,verifySiweSignature:()=>ih});module.exports=wh(Dg);j();function Us(r){return/^0x[a-fA-F0-9]{40}$/.test(r)}function Ls(r){return r.length<3||r.length>50?!1:/^[a-zA-Z0-9]([a-zA-Z0-9_-]*[a-zA-Z0-9])?$/.test(r)}function _s(r){let e=r.trim().split(/\s+/);return e.length===12||e.length===24}function cn(r){if(!Us(r))throw new Error("Invalid Ethereum address format")}function ln(r){if(!Ls(r))throw new Error("Username must be 3-50 characters long and contain only letters, numbers, underscores, and hyphens. Must start and end with a letter or number.")}function ia(r){if(!_s(r))throw new Error("Invalid mnemonic: must be 12 or 24 words")}function oa(r){if(r.length<12)return!1;let e=/[A-Z]/.test(r),t=/[a-z]/.test(r),n=/[0-9]/.test(r),s=/[!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?]/.test(r);return!(!e||!t||!n||!s||["password","12345678","qwerty","abc123","password123","admin","letmein"].some(o=>r.toLowerCase().includes(o)))}Le();ke();q();async function Ah(r){try{let e=new Uint8Array(r),t=xh(e);if(t===-1)return null;let n=e.slice(t);if(!((n[32]&64)!==0))return null;let o=37;o+=16;let a=n[o]<<8|n[o+1];o+=2,o+=a;let c=n.slice(o),l=await vh(c);return ve(l)}catch(e){return console.error("Failed to extract public key:",e),null}}function xh(r){let e=new Uint8Array([104,97,117,116,104,68,97,116,97]);for(let t=0;t<r.length-e.length;t++){let n=!0;for(let s=0;s<e.length;s++)if(r[t+s]!==e[s]){n=!1;break}if(n){let s=r[t+e.length],i=t+e.length+1;if(s>=88&&s<=91){let o=s-87;i+=o}return i}}return-1}async function vh(r){let e=ca(r,-2),t=ca(r,-3);if(!e||!t)throw new Error("Failed to extract EC coordinates from COSE key");let n=new Uint8Array(65);n[0]=4,n.set(e,1),n.set(t,33);let s=new Uint8Array([48,89,48,19,6,7,42,134,72,206,61,2,1,6,8,42,134,72,206,61,3,1,7,3,66,0]),i=new Uint8Array(s.length+n.length);return i.set(s,0),i.set(n,s.length),i.buffer}function ca(r,e){let t=e<0?32+(-1-e):e;for(let n=0;n<r.length-33;n++)if(r[n]===t&&(r[n+1]===88&&r[n+2]===32||r[n+1]===88&&r[n+2]===32))return r.slice(n+3,n+35);return null}async function la(r){try{let{username:e,ethereumAddress:t}=r;ln(e),cn(t);let n=new R;if(await n.userExists(e))throw new Error("Username already registered");let s=Ne(),o=new TextEncoder().encode(e),a=ve(o),c=L(s),l=L(a),u={challenge:c,rp:{name:"w3pk",id:window.location.hostname},user:{id:l,name:e,displayName:e},pubKeyCredParams:[{type:"public-key",alg:-7},{type:"public-key",alg:-257}],authenticatorSelection:{authenticatorAttachment:"platform",userVerification:"required",residentKey:"required",requireResidentKey:!0},timeout:6e4,attestation:"none",extensions:{prf:{eval:{first:lr}}}},d=await navigator.credentials.create({publicKey:u});if(!d)throw new Error("Failed to create credential");let h=await Ah(d.response.attestationObject);if(!h)throw new Error("Public key not returned from authenticator");await n.saveCredential({id:d.id,publicKey:h,username:e,ethereumAddress:t,createdAt:new Date().toISOString(),lastUsed:new Date().toISOString(),signCount:0});let m=d.response.attestationObject,g=d.getClientExtensionResults?.().prf?.results?.first;return{signature:m,prfOutput:g}}catch(e){throw new At(e instanceof Error?e.message:"Registration failed",e)}}j();Le();ke();q();async function fn(){try{let r=new R,e=Ne(),t=[];try{let l=await r.getAllCredentials();l.length>0&&(t=l.map(u=>({id:u.id,type:"public-key",transports:["internal","hybrid","usb","nfc","ble"]})))}catch{}let s={challenge:L(e),rpId:window.location.hostname,userVerification:"required",timeout:6e4,extensions:{prf:{eval:{first:lr}}}};t.length>0&&(s.allowCredentials=t.map(l=>({id:L(l.id),type:l.type,transports:l.transports})));let i;try{let l=await navigator.credentials.get({publicKey:s});if(!l)throw new Error("Authentication failed - no credential returned");i=l}catch(l){throw l?.name==="NotAllowedError"||l?.message?.toLowerCase().includes("no credentials available")||l?.message?.toLowerCase().includes("no access key")?(await r.getAllCredentials()).length>0?new K("Your passkey is not available on this device. You may need to restore your wallet from a backup, or login on the device where you registered."):new K("No passkey found. Please register first or restore from a backup."):l}let o=await r.getCredentialById(i.id);if(!o)throw new K("Passkey authenticated but wallet data not found on this device. To sync your account: 1) Select your passkey when prompted, then 2) Provide your backup file. This allows you to use the same passkey on multiple devices.");if(!await kh(i,o,r))throw new Error("Signature verification failed");let c=i.getClientExtensionResults?.().prf?.results?.first;return{verified:!0,user:{username:o.username,ethereumAddress:o.ethereumAddress,credentialId:o.id},signature:i.response.signature,prfOutput:c}}catch(r){throw new K(r instanceof Error?r.message:"Authentication failed",r)}}async function kh(r,e,t){try{let n=r.response.authenticatorData,s=new DataView(n),o=new Uint8Array(n).slice(0,32),a=window.location.hostname,c=new Uint8Array(await crypto.subtle.digest("SHA-256",new TextEncoder().encode(a)));if(!Eh(o,c))return console.error("RP ID hash mismatch - possible phishing attack"),!1;let l=s.getUint32(33,!1);if(l>0||e.signCount&&e.signCount>0){let A=e.signCount||0;if(l<=A)return console.error(`Authenticator cloning detected! Counter did not increase: stored=${A}, received=${l}`),!1}let u=L(e.publicKey),d=await crypto.subtle.importKey("spki",u,{name:"ECDSA",namedCurve:"P-256"},!1,["verify"]),h=r.response.clientDataJSON,m=await crypto.subtle.digest("SHA-256",h),g=new Uint8Array(n.byteLength+m.byteLength);g.set(new Uint8Array(n),0),g.set(new Uint8Array(m),n.byteLength);let w=r.response.signature,b=Ch(new Uint8Array(w));return await crypto.subtle.verify({name:"ECDSA",hash:"SHA-256"},d,b,g)?(await t.updateSignatureCounter(e.id,l),!0):!1}catch(n){return console.error("Signature verification error:",n),!1}}function Eh(r,e){if(r.length!==e.length)return!1;for(let t=0;t<r.length;t++)if(r[t]!==e[t])return!1;return!0}function Ch(r){let e=2;e++;let t=r[e++];t>32&&(e++,t--);let n=r.slice(e,e+t);e+=t,e++;let s=r[e++];s>32&&(e++,s--);let i=r.slice(e,e+s),o=new Uint8Array(64);return o.set(n,32-n.length),o.set(i,64-i.length),o.buffer}j();var Ph="Web3PasskeyWallet",Ih=1,Ee="wallets",pn=class{constructor(){this.db=null}async init(){return new Promise((e,t)=>{let n=indexedDB.open(Ph,Ih);n.onerror=()=>t(new I("Failed to open database",n.error)),n.onsuccess=()=>{this.db=n.result,e()},n.onupgradeneeded=()=>{let s=n.result;s.objectStoreNames.contains(Ee)||s.createObjectStore(Ee,{keyPath:"ethereumAddress"})}})}async store(e){return this.db||await this.init(),new Promise((t,n)=>{let o=this.db.transaction([Ee],"readwrite").objectStore(Ee).put(e);o.onerror=()=>n(new I("Failed to store wallet data",o.error)),o.onsuccess=()=>t()})}async retrieve(e){return this.db||await this.init(),new Promise((t,n)=>{let o=this.db.transaction([Ee],"readonly").objectStore(Ee).get(e);o.onerror=()=>n(new I("Failed to retrieve wallet data",o.error)),o.onsuccess=()=>t(o.result||null)})}async delete(e){return this.db||await this.init(),new Promise((t,n)=>{let o=this.db.transaction([Ee],"readwrite").objectStore(Ee).delete(e);o.onerror=()=>n(new I("Failed to delete wallet data",o.error)),o.onsuccess=()=>t()})}async clear(){return this.db||await this.init(),new Promise((e,t)=>{let i=this.db.transaction([Ee],"readwrite").objectStore(Ee).clear();i.onerror=()=>t(new I("Failed to clear wallet data",i.error)),i.onsuccess=()=>e()})}};De();Et();q();j();var H=require("ethers");j();function Ct(r){try{let e=H.ethers.HDNodeWallet.fromPhrase(r,void 0,"m/44'/60'/1'/0/0"),t=H.ethers.HDNodeWallet.fromPhrase(r,void 0,"m/44'/60'/1'/0/1"),n=t.signingKey.compressedPublicKey,s=e.signingKey.compressedPublicKey;return{stealthMetaAddress:n+s.slice(2),spendingPubKey:n,viewingPubKey:s,viewingKey:e.privateKey,spendingKey:t.privateKey}}catch(e){throw new N("Failed to derive stealth keys",e)}}function yn(r){try{let e="0x"+r.slice(2,68),t="0x"+r.slice(68),n=H.ethers.Wallet.createRandom(),s=n.signingKey.compressedPublicKey,i=Vs(n.privateKey,t),o=H.ethers.keccak256(i),a="0x"+o.slice(2,4),c=Gs(o),l=ma(e,pa(c));return{stealthAddress:ga(l),ephemeralPubKey:s,viewTag:a}}catch(e){throw new N("Failed to generate stealth address",e)}}function pr(r,e,t,n,s){try{let i=Vs(r,t),o=H.ethers.keccak256(i);if(s&&("0x"+o.slice(2,4)).toLowerCase()!==s.toLowerCase())return{isForUser:!1};let a=Gs(o),c=ma(e,pa(a)),l=ga(c);return l.toLowerCase()!==n.toLowerCase()?{isForUser:!1}:{isForUser:!0,stealthAddress:l}}catch{return{isForUser:!1}}}function mr(r,e,t){try{let n=Vs(r,t),s=H.ethers.keccak256(n),i=Gs(s);return Dh(e,i)}catch(n){throw new N("Failed to compute stealth private key",n)}}function fa(r,e,t,n,s,i){try{if(!pr(r,t,n,s,i).isForUser)return!1;let a=mr(r,e,n);return new H.ethers.Wallet(a).address.toLowerCase()===s.toLowerCase()}catch{return!1}}function Vs(r,e){try{return new H.ethers.Wallet(r).signingKey.computeSharedSecret(e)}catch(t){throw new N("Failed to compute shared secret",t)}}function pa(r){try{return new H.ethers.Wallet(r).signingKey.compressedPublicKey}catch(e){throw new N("Failed to multiply generator by scalar",e)}}function ma(r,e){try{let t=H.ethers.SigningKey.computePublicKey(r,!1),n=H.ethers.SigningKey.computePublicKey(e,!1),s=BigInt("0x"+t.slice(4,68)),i=BigInt("0x"+t.slice(68)),o=BigInt("0x"+n.slice(4,68)),a=BigInt("0x"+n.slice(68)),c=BigInt("0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFC2F");if(s===o&&i===a){let g=3n*s*s%c,w=2n*i%c,b=g*ha(w,c)%c,S=(b*b-2n*s)%c,A=(b*(s-S)-i)%c;return da((S+c)%c,(A+c)%c)}let l=((a-i)%c+c)%c,u=((o-s)%c+c)%c,d=l*ha(u,c)%c,h=(d*d-s-o)%c,m=(d*(s-h)-i)%c;return da((h+c)%c,(m+c)%c)}catch(t){throw new N("Failed to add public keys",t)}}function Gs(r){try{let e=BigInt("0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141"),n=BigInt(r)%e;if(n===0n)throw new Error("Scalar reduced to zero (invalid)");return"0x"+n.toString(16).padStart(64,"0")}catch(e){throw new N("Failed to reduce scalar modulo curve order",e)}}function Dh(r,e){try{let t=BigInt("0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141"),n=BigInt(r),s=BigInt(e);return"0x"+((n+s)%t).toString(16).padStart(64,"0")}catch(t){throw new N("Failed to add private keys",t)}}function da(r,e){return"0x"+(e%2n===0n?"02":"03")+r.toString(16).padStart(64,"0")}function ha(r,e){r=(r%e+e)%e;let[t,n]=[r,e],[s,i]=[1n,0n];for(;n!==0n;){let o=t/n;[t,n]=[n,t-o*n],[s,i]=[i,s-o*i]}return(s%e+e)%e}function ga(r){try{let e=H.ethers.SigningKey.computePublicKey(r,!1),t=H.ethers.keccak256("0x"+e.slice(4));return H.ethers.getAddress("0x"+t.slice(-40))}catch(e){throw new N("Failed to derive address from public key",e)}}var Pt=class{constructor(e,t){this.getMnemonic=t}async generateStealthAddress(e){try{let t=await this.getMnemonic(e?.requireAuth),n=Ct(t),s=yn(n.stealthMetaAddress);return{stealthAddress:s.stealthAddress,ephemeralPublicKey:s.ephemeralPubKey,viewTag:s.viewTag}}catch(t){throw new $("Failed to generate stealth address","STEALTH_GENERATION_ERROR",t)}}async parseAnnouncement(e,t){try{let n=await this.getMnemonic(t?.requireAuth),s=Ct(n),i=pr(s.viewingKey,s.spendingPubKey,e.ephemeralPublicKey,e.stealthAddress,e.viewTag);if(!i.isForUser)return{isForUser:!1};let o=mr(s.viewingKey,s.spendingKey,e.ephemeralPublicKey);return{isForUser:!0,stealthAddress:i.stealthAddress,stealthPrivateKey:o}}catch(n){throw new $("Failed to parse announcement","ANNOUNCEMENT_PARSE_ERROR",n)}}async scanAnnouncements(e,t){let n=[];for(let s of e){let i=await this.parseAnnouncement(s,t);i.isForUser&&n.push(i)}return n}async getKeys(e){try{let t=await this.getMnemonic(e?.requireAuth);return Ct(t)}catch(t){throw new $("Failed to get stealth keys","STEALTH_KEYS_ERROR",t)}}async getStealthMetaAddress(e){try{return(await this.getKeys(e)).stealthMetaAddress}catch(t){throw new $("Failed to get stealth meta-address","STEALTH_META_ADDRESS_ERROR",t)}}get isAvailable(){return!0}};j();var Th="Web3PasskeyPersistentSessions",Rh=3,re="sessions",wn=class{constructor(){this.db=null;this.initPromise=null}async init(){return this.initPromise?this.initPromise:this.db?Promise.resolve():(this.initPromise=new Promise((e,t)=>{let n=indexedDB.open(Th,Rh);n.onupgradeneeded=s=>{let i=s.target.result;i.objectStoreNames.contains(re)&&i.deleteObjectStore(re),i.createObjectStore(re,{keyPath:"ethereumAddress"}).createIndex("expiresAt","expiresAt",{unique:!1})},n.onsuccess=()=>{this.db=n.result,this.initPromise=null,e()},n.onerror=()=>{this.initPromise=null,t(new I("Failed to open persistent session database",n.error))}}),this.initPromise)}async store(e){if(e.securityMode==="STRICT")throw new I("Cannot persist STRICT mode sessions");return this.db||await this.init(),new Promise((t,n)=>{let o=this.db.transaction([re],"readwrite").objectStore(re).put(e);o.onerror=()=>n(new I("Failed to store persistent session",o.error)),o.onsuccess=()=>t()})}async retrieve(e){return this.db||await this.init(),new Promise((t,n)=>{let o=this.db.transaction([re],"readonly").objectStore(re).get(e);o.onerror=()=>n(new I("Failed to retrieve persistent session",o.error)),o.onsuccess=()=>{let a=o.result||null;if(a&&Date.now()>a.expiresAt){this.delete(e).catch(console.error),t(null);return}t(a)}})}async delete(e){return this.db||await this.init(),new Promise((t,n)=>{let o=this.db.transaction([re],"readwrite").objectStore(re).delete(e);o.onerror=()=>n(new I("Failed to delete persistent session",o.error)),o.onsuccess=()=>t()})}async clear(){return this.db||await this.init(),new Promise((e,t)=>{let i=this.db.transaction([re],"readwrite").objectStore(re).clear();i.onerror=()=>t(new I("Failed to clear persistent sessions",i.error)),i.onsuccess=()=>e()})}async cleanupExpired(){return this.db||await this.init(),new Promise((e,t)=>{let i=this.db.transaction([re],"readwrite").objectStore(re).index("expiresAt"),o=Date.now(),a=IDBKeyRange.upperBound(o),c=i.openCursor(a);c.onsuccess=l=>{let u=l.target.result;u?(u.delete(),u.continue()):e()},c.onerror=()=>t(new I("Failed to cleanup expired sessions",c.error))})}};q();var bn=class{constructor(e=1,t){this.session=null;this.sessionDuration=e*60*60*1e3,this.persistentConfig={enabled:t?.enabled??!1,duration:t?.duration??168,requireReauth:t?.requireReauth??!0},this.persistentStorage=new wn}async startSession(e,t,n,s,i){let o=new Date(Date.now()+this.sessionDuration).toISOString();if(this.session={mnemonic:e,expiresAt:o,credentialId:t},this.persistentConfig.enabled&&i!=="STRICT"&&n){if(!s){console.info("[w3pk] Authenticator did not provide a PRF output \u2014 persistent session not stored on this device (in-memory session only)");return}try{let a=await ae(e,s),c=Date.now()+this.persistentConfig.duration*60*60*1e3;await this.persistentStorage.store({encryptedMnemonic:a,sessionKey:this.persistentConfig.requireReauth?void 0:s,expiresAt:c,credentialId:t,ethereumAddress:n,securityMode:i||"STANDARD",createdAt:Date.now()})}catch(a){console.warn("[w3pk] Failed to persist session:",a)}}}getMnemonic(){return this.session?new Date>new Date(this.session.expiresAt)?(this.clearSession().catch(e=>console.warn("[w3pk] Failed to clear expired session:",e)),null):this.session.mnemonic:null}getCredentialId(){return this.session?new Date>new Date(this.session.expiresAt)?(this.clearSession().catch(e=>console.warn("[w3pk] Failed to clear expired session:",e)),null):this.session.credentialId:null}isActive(){return this.getMnemonic()!==null}getRemainingTime(){return this.session?new Date>new Date(this.session.expiresAt)?(this.clearSession().catch(e=>console.warn("[w3pk] Failed to clear expired session:",e)),0):Math.floor((new Date(this.session.expiresAt).getTime()-Date.now())/1e3):0}extendSession(){if(!this.session)throw new Error("No active session to extend");if(new Date>new Date(this.session.expiresAt))throw this.clearSession().catch(e=>console.warn("[w3pk] Failed to clear expired session:",e)),new Error("Session expired, cannot extend");this.session.expiresAt=new Date(Date.now()+this.sessionDuration).toISOString()}async restoreFromPersistentStorage(e,t,n){if(!this.persistentConfig.enabled||!n)return null;try{let s=await this.persistentStorage.retrieve(e);if(!s)return null;if(s.credentialId!==t)return console.warn("[w3pk] Credential ID mismatch, clearing persistent session"),await this.persistentStorage.delete(e),null;let i=await te(s.encryptedMnemonic,n),o=new Date(Date.now()+this.sessionDuration).toISOString();return this.session={mnemonic:i,expiresAt:o,credentialId:t},i}catch(s){console.warn("[w3pk] Failed to restore persistent session:",s);try{await this.persistentStorage.delete(e)}catch{}return null}}async attemptSilentRestore(){if(!this.persistentConfig.enabled||this.persistentConfig.requireReauth)return null;try{let{CredentialStorage:e}=await Promise.resolve().then(()=>(Le(),hn)),n=await new e().getAllCredentials();if(n.length===0)return null;for(let s of n){let i=await this.persistentStorage.retrieve(s.ethereumAddress);if(!i)continue;if(i.credentialId!==s.id){console.warn("[w3pk] Credential ID mismatch, skipping this session");continue}if(!i.sessionKey)continue;let o=await te(i.encryptedMnemonic,i.sessionKey),a=new Date(Date.now()+this.sessionDuration).toISOString();return this.session={mnemonic:o,expiresAt:a,credentialId:s.id},{mnemonic:o,ethereumAddress:s.ethereumAddress,credentialId:s.id}}return null}catch(e){return console.warn("[w3pk] Failed to attempt silent restore:",e),null}}async clearSession(){this.session&&(this.session.mnemonic="0".repeat(this.session.mnemonic.length)),this.session=null,this.persistentConfig.enabled&&await this.persistentStorage.clear()}setSessionDuration(e){this.sessionDuration=e*60*60*1e3}setPersistentSessionDuration(e){this.persistentConfig.duration=e}};Le();var Sn={debug:!1,sessionDuration:1,persistentSession:{enabled:!1,duration:168,requireReauth:!0},onError:r=>{Sn.debug&&console.error("[w3pk]",r)}};j();var ya="https://chainid.network/chains.json";var gr=null,Fh=[/\$\{[\w_]+\}/i,/\{[\w_]+\}/i,/<[\w_]+>/i,/YOUR[-_]?API[-_]?KEY/i,/INSERT[-_]?API[-_]?KEY/i,/API[-_]?KEY[-_]?HERE/i];function Mh(r){return Fh.some(e=>e.test(r))}async function Nh(r=ya){let e=await fetch(r);if(!e.ok)throw new Error(`Failed to fetch chains data: ${e.status} ${e.statusText}`);return await e.json()}async function Ys(r){let e=r?.chainsJsonUrl??ya,t=r?.cacheDuration??36e5,n=Date.now();if(gr&&n-gr.timestamp<t)return gr.data;let s=await Nh(e);return gr={data:s,timestamp:n},s}async function An(r,e){let n=(await Ys(e)).find(s=>s.chainId===r);return n?n.rpc.filter(s=>!Mh(s)&&!s.startsWith("wss://")&&!s.startsWith("ws://")):[]}async function wa(r){return Ys(r)}async function ba(r,e){return(await Ys(e)).find(n=>n.chainId===r)}function Sa(){gr=null}Js();vn();var Uh=new Set([1,10,8453,42161,57073,100,42220,137,42,15,40,41,44,46,47,50,51,56,61,71,82,83,95,97,112,123,130,146,151,153,171,180,183,185,195,215,228,247,248,252,261,267,291,293,311,332,336,395,401,416,466,480,488,510,545,634,647,648,747,831,919,938,945,957,964,970,980,995,997,1001,1003,1024,1030,1114,1125,1135,1149,1188,1284,1285,1287,1300,1301,1315,1337,1338,1339,1424,1514,1687,1727,1729,1740,1750,1829,1868,1946,1961,1962,1969,1989,1995,2017,2020,2031,2043,2109,2241,2340,2345,2440,2522,2559,2649,3068,3109,3338,3502,3799,3888,3889,4e3,4048,4078,4162,4201,4202,4460,4488,4661,4689,4690,4888,5e3,5003,5124,5234,5330,5424,5522,6283,6342,6398,6678,6806,6934,6942,6969,7117,7171,7200,7208,7368,7518,7668,7672,7744,7771,7869,7897,8008,8118,8217,8408,8700,8726,8727,8844,8880,8881,8882,8889,9372,9496,9700,9745,9746,9899,9990,9996,10011,10085,10143,10200,11221,11501,11504,11891,13370,14853,16602,16661,17e3,18880,18881,19991,21e3,21816,21912,25327,32323,33401,34443,41923,42170,43111,44787,47805,48898,48900,49049,49088,5e4,50312,53302,53456,53457,55244,56288,59141,60808,60850,62320,62850,64002,71402,72080,73114,73115,75338,78281,80002,80008,80069,80094,80451,80931,84532,88899,91342,92278,94524,96970,97476,97477,98985,100021,100501,101010,102030,102031,102032,112358,120893,121212,121213,121214,121215,129399,161803,175188,192940,193939,198989,212013,222222,240241,325e3,355110,355113,421614,555777,560048,656476,713715,743111,747474,763373,763375,777777,806582,808813,810180,839999,888991,2019775,2222222,4278608,5734951,6666689,6985385,7080969,7777777,9999999,11142220,11155111,11155420,11155931,16969696,19850818,20180427,20250825,28122024,34949059,37084624,52164803,61022448,79479957,96969696,420420421,420420422,888888888,974399131,999999999,1020352220,1273227453,1313161560,1350216234,1380996178,1417429182,1444673419,1482601649,1564830818,2046399126,11297108099,11297108109,88153591557,123420000220,123420001114]);async function Lh(r,e=1e4){try{let t=new AbortController,n=setTimeout(()=>t.abort(),e),s=await fetch(r,{method:"POST",headers:{"Content-Type":"application/json"},signal:t.signal,body:JSON.stringify({jsonrpc:"2.0",method:"eth_estimateGas",params:[{from:"0xdeadbeef00000000000000000000000000000000",to:"0xdeadbeef00000000000000000000000000000000",data:"0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",value:"0x0"},"latest",{"0xdeadbeef00000000000000000000000000000000":{code:"0xef01000000000000000000000000000000000000000001"}}],id:1})});if(clearTimeout(n),!s.ok)return!1;let i=await s.json();if(i.error){let o=(i.error.message||"").toLowerCase();return!["unsupported","not supported","unknown","invalid","unrecognized","does not support","not implemented"].some(c=>o.includes(c))}return i.result!==void 0}catch{return!1}}async function xa(r,e,t){if(Uh.has(r))return!0;let n=t?.maxEndpoints||3,s=t?.timeout||1e4;try{let i=await e(r);if(i.length===0)return!1;let o=i.slice(0,n);for(let a of o)if(await Lh(a,s))return!0;return!1}catch{return!1}}function Oc(r){return typeof r=="string"&&/^0x[0-9a-fA-F]*$/.test(r)}function zc(r){let e=r.startsWith("0x")?r.slice(2):r,t=new Uint8Array(e.match(/.{1,2}/g).map(n=>parseInt(n,16)));return new TextDecoder().decode(t)}var Ut=class{constructor(e={}){this.currentUser=null;this.currentWallet=null;this.config={...Sn,...e},this.walletStorage=new pn;let t={...Sn.persistentSession,...e.persistentSession};this.sessionManager=new bn(e.sessionDuration||1,t),e.stealthAddresses!==void 0&&(this.stealth=new Pt(e.stealthAddresses,n=>this.getMnemonicFromSession(n)))}async loadZKModule(){if(this.zkModule)return this.zkModule;try{let e=new Function("path","return import(path)"),{ZKProofModule:t}=await e("w3pk/zk"),n=this.config.zkProofs||{};return this.zkModule=new t(n),this.zkModule}catch{throw new Error("ZK module not available. Install dependencies: npm install snarkjs circomlibjs")}}async getMnemonicFromSession(e=!1,t="STANDARD"){let n=t;if(!e){let h=this.sessionManager.getMnemonic();if(h)return h}if(!this.currentUser)throw new y("Must be authenticated. Call login() first.");let s=await this.walletStorage.retrieve(this.currentUser.ethereumAddress);if(!s)throw new y("No wallet found. Generate a wallet first.");let i=await fn();if(!i.user)throw new y("Authentication failed");let c=(await new R().getCredentialById(s.credentialId))?.publicKey,l=await fe(s.credentialId,c),u=await te(s.encryptedMnemonic,l),d=i.prfOutput?await xt(i.prfOutput):void 0;return await this.sessionManager.startSession(u,s.credentialId,this.currentUser.ethereumAddress,d,n),u}async register(e){try{this.currentWallet?.address||await this.generateWallet();let t=this.currentWallet.address,n=this.currentWallet.mnemonic,s=await la({username:e.username,ethereumAddress:t}),o=await new R().getCredentialByAddress(t);if(this.currentUser={username:e.username,ethereumAddress:t,credentialId:o?.id||""},!o)throw new y("Credential not found after registration");let a=o.id,c=o.publicKey,l=await fe(a,c),u=await ae(n,l);await this.walletStorage.store({ethereumAddress:this.currentUser.ethereumAddress,encryptedMnemonic:u,credentialId:a,createdAt:new Date().toISOString()});let d=s.prfOutput?await xt(s.prfOutput):void 0;return await this.sessionManager.startSession(n,a,t,d,"STANDARD"),this.currentWallet={address:t,mnemonic:n},this.config.onAuthStateChanged?.(!0,this.currentUser),{address:t,username:e.username}}catch(t){throw this.config.onError?.(t),t}}async login(){try{let e=await this.sessionManager.attemptSilentRestore();if(e){let d=await new R().getCredentialById(e.credentialId);return this.currentUser={username:d?.username||e.ethereumAddress,ethereumAddress:e.ethereumAddress,credentialId:e.credentialId},await this.walletStorage.retrieve(this.currentUser.ethereumAddress)?(this.config.onAuthStateChanged?.(!0,this.currentUser),this.currentUser):(await this.sessionManager.clearSession().catch(m=>console.warn("[w3pk] Failed to clear stale session:",m)),this.login())}let t=await fn();if(!t.verified||!t.user)throw new K("Login failed");this.currentUser={username:t.user.username,ethereumAddress:t.user.ethereumAddress,credentialId:t.user.credentialId};let n=await this.walletStorage.retrieve(this.currentUser.ethereumAddress);if(!n)return this.config.onAuthStateChanged?.(!0,this.currentUser),this.currentUser;let o=(await new R().getCredentialById(n.credentialId))?.publicKey,a=t.prfOutput?await xt(t.prfOutput):void 0,c=await this.sessionManager.restoreFromPersistentStorage(this.currentUser.ethereumAddress,n.credentialId,a),l;if(c)l=c;else{let u=await fe(n.credentialId,o);l=await te(n.encryptedMnemonic,u),await this.sessionManager.startSession(l,n.credentialId,this.currentUser.ethereumAddress,a,"STANDARD")}return this.config.onAuthStateChanged?.(!0,this.currentUser),this.currentUser}catch(e){throw this.config.onError?.(e),e}}async logout(){this.currentUser=null,this.currentWallet=null;try{await this.sessionManager.clearSession()}finally{this.config.onAuthStateChanged?.(!1,void 0)}}get isAuthenticated(){return this.currentUser!==null}get user(){return this.currentUser}async listExistingCredentials(){try{return(await new R().getAllCredentials()).map(n=>({username:n.username,ethereumAddress:n.ethereumAddress,createdAt:n.createdAt,lastUsed:n.lastUsed}))}catch{return[]}}async hasExistingCredential(){return(await this.listExistingCredentials()).length>0}async getExistingCredentialCount(){return(await this.listExistingCredentials()).length}async generateWallet(){try{let e=dr();return this.currentWallet={address:e.address,mnemonic:e.mnemonic},{address:e.address,mnemonic:e.mnemonic}}catch(e){throw this.config.onError?.(e),new y("Failed to generate wallet",e)}}async deriveWallet(e,t,n){try{if(!this.currentUser)throw new y("Must be authenticated to derive wallet");let s=e||pe,i=t||J,o=n?.origin||ge();if(s==="PRIMARY"){let{CredentialStorage:u}=await Promise.resolve().then(()=>(Le(),hn)),{deriveAddressFromP256PublicKey:d}=await Promise.resolve().then(()=>(Et(),gn)),m=await new u().getCredentialById(this.currentUser.credentialId);if(!m||!m.publicKey)throw new y("No WebAuthn credential found for PRIMARY mode");return{address:await d(m.publicKey),origin:o,mode:s,tag:i,publicKey:m.publicKey}}let a=s==="STRICT"?!0:n?.requireAuth||!1,c=await this.getMnemonicFromSession(a,s),l=await me(c,o,s,i);return{address:l.address,privateKey:l.privateKey,index:l.index,origin:l.origin,mode:l.mode,tag:l.tag}}catch(s){throw this.config.onError?.(s),new y("Failed to derive wallet",s)}}async getAddress(e,t,n){try{if(!this.currentUser)throw new y("Must be authenticated to get address");let s=e||pe,i=t||J,o=n?.origin||ge();if(s==="PRIMARY"){let{deriveAddressFromP256PublicKey:u}=await Promise.resolve().then(()=>(Et(),gn)),h=await new R().getCredentialById(this.currentUser.credentialId);if(!h||!h.publicKey)throw new y("No WebAuthn credential found for PRIMARY mode");return await u(h.publicKey)}let a=s==="STRICT",c=await this.getMnemonicFromSession(a,s);return(await me(c,o,s,i)).address}catch(s){throw this.config.onError?.(s),new y("Failed to get address",s)}}async importMnemonic(e){try{if(!this.currentUser)throw new y("Must be authenticated to import mnemonic");if(!e||e.trim().split(/\s+/).length<12)throw new y("Invalid mnemonic: must be at least 12 words");let t=await fn();if(!t.user)throw new y("Authentication failed");let n=t.user.credentialId,o=(await new R().getCredentialById(n))?.publicKey,a=await fe(n,o),c=await ae(e.trim(),a);await this.walletStorage.store({ethereumAddress:this.currentUser.ethereumAddress,encryptedMnemonic:c,credentialId:n,createdAt:new Date().toISOString()}),this.currentWallet={address:this.currentUser.ethereumAddress,mnemonic:e.trim()};let l=t.prfOutput?await xt(t.prfOutput):void 0;await this.sessionManager.startSession(e.trim(),n,this.currentUser.ethereumAddress,l,"STANDARD")}catch(t){throw this.config.onError?.(t),new y("Failed to import mnemonic",t)}}async signMessage(e,t){try{if(!this.currentUser)throw new y("Must be authenticated to sign message");let n=t?.mode||pe,s=t?.tag||J,i=t?.origin||ge(),o=t?.signingMethod||"EIP191",a=n==="STRICT"?!0:t?.requireAuth||!1,c=await this.getMnemonicFromSession(a,n),l=await me(c,i,n,s),{Wallet:u}=await import("ethers"),d;if(l.privateKey)d=new u(l.privateKey);else{let{deriveWalletFromMnemonic:m}=await Promise.resolve().then(()=>(De(),kt)),{privateKey:g}=m(c,l.index);d=new u(g)}let h;switch(o){case"EIP191":case"SIWE":h=await d.signMessage(e);break;case"EIP712":if(!t?.eip712Domain||!t?.eip712Types||!t?.eip712PrimaryType)throw new y("EIP712 signing requires eip712Domain, eip712Types, and eip712PrimaryType in options");let m;try{m=typeof e=="string"?JSON.parse(e):e}catch{throw new y("EIP712 message must be valid JSON or an object")}h=await d.signTypedData(t.eip712Domain,t.eip712Types,m);break;case"rawHash":let{SigningKey:g}=await import("ethers"),w=e;if(w.startsWith("0x")&&(w=w.slice(2)),w.length!==64)throw new y("rawHash signing method requires a 32-byte hash (64 hex characters)");h=new g(d.privateKey).sign("0x"+w).serialized;break;default:throw new y(`Unsupported signing method: ${o}`)}return{signature:h,address:l.address,mode:l.mode,tag:l.tag,origin:l.origin}}catch(n){throw this.config.onError?.(n),new y("Failed to sign message",n)}}async signMessageWithPasskey(e){try{if(!this.currentUser)throw new y("Must be authenticated to sign message");let{extractRS:t}=await Promise.resolve().then(()=>(Zs(),va)),{base64UrlDecode:n}=await Promise.resolve().then(()=>(ke(),Ws)),s=await crypto.subtle.digest("SHA-256",new TextEncoder().encode(e)),i="0x"+Buffer.from(s).toString("hex"),o=new Uint8Array(Buffer.from(i.slice(2),"hex")),a=this.currentUser.credentialId;if(!a)throw new y("Credential ID not found in user object");let c={challenge:o,rpId:window.location.hostname,allowCredentials:[{id:n(a),type:"public-key",transports:["internal","hybrid","usb","nfc","ble"]}],userVerification:"required",timeout:6e4},l=await navigator.credentials.get({publicKey:c});if(!l||!l.response)throw new y("WebAuthn signature failed");let u=l.response,d=new Uint8Array(u.authenticatorData),h=new Uint8Array(u.clientDataJSON),m=await crypto.subtle.digest("SHA-256",h),g=new Uint8Array(d.length+m.byteLength);g.set(d,0),g.set(new Uint8Array(m),d.length);let w=await crypto.subtle.digest("SHA-256",g.buffer),b="0x"+Buffer.from(w).toString("hex"),S=new Uint8Array(u.signature),{r:A,s:v}=t(S),{CredentialStorage:E}=await Promise.resolve().then(()=>(Le(),hn)),x=await new E().getCredentialById(a);if(!x||!x.publicKey)throw new y("No WebAuthn credential found for PRIMARY mode");let{base64UrlToArrayBuffer:T}=await Promise.resolve().then(()=>(ke(),Ws)),O=T(x.publicKey),Be=await crypto.subtle.importKey("spki",O,{name:"ECDSA",namedCurve:"P-256"},!0,["verify"]),St=await crypto.subtle.exportKey("jwk",Be);if(!St.x||!St.y)throw new y("Invalid P-256 public key: missing x or y coordinates");let ch="0x"+Buffer.from(T(St.x)).toString("hex"),lh="0x"+Buffer.from(T(St.y)).toString("hex"),{deriveAddressFromP256PublicKey:uh}=await Promise.resolve().then(()=>(Et(),gn)),dh=await uh(x.publicKey);return{signature:{r:A,s:v},messageHash:i,signedHash:b,address:dh,publicKey:{qx:ch,qy:lh}}}catch(t){throw this.config.onError?.(t),new y("Failed to sign message with passkey",t)}}async sendTransaction(e,t){try{if(!this.currentUser)throw new y("Must be authenticated to send transaction");let n=t?.mode||pe,s=t?.tag||J,i=t?.origin||ge();if(n==="PRIMARY")throw t?.rpcUrl?new y("PRIMARY mode sendTransaction is not yet supported. Use signMessageWithPasskey() to obtain a P-256 signature and submit via a bundler manually."):new y("PRIMARY mode requires options.rpcUrl pointing to a bundler or sponsoring relayer. The P-256 address cannot pay gas directly without a deployed P-256-verifier contract via EIP-7702.");let o=n==="STRICT"?!0:t?.requireAuth||!1,a=await this.getMnemonicFromSession(o,n),c=await me(a,i,n,s),{Wallet:l,JsonRpcProvider:u}=await import("ethers"),d;if(c.privateKey)d=new l(c.privateKey);else{let{deriveWalletFromMnemonic:b}=await Promise.resolve().then(()=>(De(),kt)),{privateKey:S}=b(a,c.index);d=new l(S)}let h=t?.rpcUrl??(await this.getEndpoints(e.chainId))[0];if(!h)throw new y(`No RPC endpoint found for chainId ${e.chainId}. Pass options.rpcUrl.`);let m=new u(h);return{hash:(await d.connect(m).sendTransaction({to:e.to,value:e.value,data:e.data??"0x",chainId:e.chainId,gasLimit:e.gasLimit,maxFeePerGas:e.maxFeePerGas,maxPriorityFeePerGas:e.maxPriorityFeePerGas,nonce:e.nonce})).hash,from:c.address,chainId:e.chainId,mode:c.mode,tag:c.tag,origin:c.origin}}catch(n){throw this.config.onError?.(n),new y("Failed to send transaction",n)}}async signAuthorization(e,t){try{if(!this.currentUser)throw new y("Must be authenticated to sign authorization");let{Wallet:n,Signature:s}=await import("ethers"),{hashEIP7702AuthorizationMessage:i,verifyEIP7702Authorization:o}=await Promise.resolve().then(()=>(vn(),js)),a;if(e.privateKey)a=new n(e.privateKey);else{let w=await this.getMnemonicFromSession(t?.requireAuth);a=n.fromPhrase(w)}let c=BigInt(e.chainId||1),l=e.nonce||0n,u=i(c,e.contractAddress,l),d=a.signingKey.sign(u),h=s.from(d),m={chainId:c,address:e.contractAddress.toLowerCase(),nonce:l,yParity:h.yParity,r:h.r,s:h.s};if(!o(c,e.contractAddress,l,m,a.address))throw new y("Signature verification failed - this should not happen");return m}catch(n){throw this.config.onError?.(n),new y("Failed to sign authorization",n)}}async getEndpoints(e){return An(e)}async supportsEIP7702(e,t){return xa(e,this.getEndpoints.bind(this),t)}getEIP1193Provider(e){let t=e?.chainId??1,n=this,s={},i=(a,...c)=>{(s[a]??[]).forEach(l=>l(...c))};return{async request({method:a,params:c}){switch(a){case"eth_accounts":case"eth_requestAccounts":return[await n.getAddress(e?.mode??"STANDARD",e?.tag??"MAIN")];case"eth_chainId":return"0x"+t.toString(16);case"eth_sendTransaction":{let l=(c??[])[0]??{};if(!l.chainId&&!t)throw new y("eth_sendTransaction: chainId is required");let u=l.chainId?parseInt(l.chainId,16):t;return(await n.sendTransaction({to:l.to,value:l.value!==void 0?BigInt(l.value):void 0,data:l.data??"0x",chainId:u,gasLimit:l.gas!==void 0?BigInt(l.gas):void 0,maxFeePerGas:l.maxFeePerGas!==void 0?BigInt(l.maxFeePerGas):void 0,maxPriorityFeePerGas:l.maxPriorityFeePerGas!==void 0?BigInt(l.maxPriorityFeePerGas):void 0,nonce:l.nonce!==void 0?parseInt(l.nonce,16):void 0},{mode:e?.mode,tag:e?.tag,rpcUrl:e?.rpcUrl})).hash}case"personal_sign":{let[l]=c??[],u=Oc(l)?zc(l):l;return(await n.signMessage(u,{mode:e?.mode,tag:e?.tag,signingMethod:"EIP191"})).signature}case"eth_sign":{let[,l]=c??[],u=Oc(l)?zc(l):l;return(await n.signMessage(u,{mode:e?.mode,tag:e?.tag,signingMethod:"EIP191"})).signature}case"eth_signTypedData_v4":{let[,l]=c??[],u=typeof l=="string"?JSON.parse(l):l,{domain:d,types:h,message:m,primaryType:g}=u,w={...h};return delete w.EIP712Domain,(await n.signMessage(JSON.stringify(m),{mode:e?.mode,tag:e?.tag,signingMethod:"EIP712",eip712Domain:d,eip712Types:w,eip712PrimaryType:g})).signature}case"wallet_switchEthereumChain":{let l=parseInt((c??[])[0]?.chainId??"0x1",16);return t=l,i("chainChanged","0x"+l.toString(16)),null}default:throw new y(`w3pk EIP-1193: unsupported method "${a}"`)}},on(a,c){s[a]||(s[a]=[]),s[a].push(c)},removeListener(a,c){s[a]&&(s[a]=s[a].filter(l=>l!==c))}}}async requestExternalWalletDelegation(e){if(!this.currentUser)throw new y("Must be authenticated to get w3pk delegation address. Call login() or register() first.");let{requestExternalWalletAuthorization:t,getDefaultProvider:n}=await Promise.resolve().then(()=>(Js(),Aa)),s=e?.provider||n();if(!s)throw new y("No external wallet provider found. Please install MetaMask, Rabby, or similar wallet.");let i=this.currentUser.ethereumAddress;return t(s,{delegateToAddress:i,chainId:e?.chainId,nonce:e?.nonce,accountIndex:e?.accountIndex})}get zk(){return new Proxy({},{get:(e,t)=>async(...n)=>(await this.loadZKModule())[t](...n)})}async getBackupStatus(){if(!this.currentUser)throw new y("Must be authenticated to check backup status");let{BackupManager:e}=await Promise.resolve().then(()=>(lt(),ct));return new e().getBackupStatus(this.currentUser.ethereumAddress)}async createBackupFile(e="password",t){if(!this.currentUser)throw new y("Must be authenticated to create backup");let n=await this.getMnemonicFromSession(!0),{BackupFileManager:s}=await Promise.resolve().then(()=>(le(),ye)),{BackupStorage:i}=await Promise.resolve().then(()=>(In(),ka)),o=new s,a=new i,c,l;if(e==="password"){if(!t)throw new y("Password required for password-based backup");l=(await o.createPasswordBackup(n,this.currentUser.ethereumAddress,t)).backupFile,c=o.createDownloadableBackup(l)}else if(e==="passkey"){let u=await this.walletStorage.retrieve(this.currentUser.ethereumAddress);if(!u)throw new y("No wallet data found");let h=await new R().getCredentialById(u.credentialId);if(!h)throw new y("Credential not found");l=(await o.createPasskeyBackup(n,this.currentUser.ethereumAddress,h.id,h.publicKey)).backupFile,c=o.createDownloadableBackup(l)}else if(e==="hybrid"){if(!t)throw new y("Password required for hybrid backup");let u=await this.walletStorage.retrieve(this.currentUser.ethereumAddress);if(!u)throw new y("No wallet data found");let h=await new R().getCredentialById(u.credentialId);if(!h)throw new y("Credential not found");l=(await o.createHybridBackup(n,this.currentUser.ethereumAddress,t,h.id,h.publicKey)).backupFile,c=o.createDownloadableBackup(l)}else throw new y(`Unknown encryption type: ${e}`);return await a.storeBackupMetadata({id:crypto.randomUUID(),ethereumAddress:this.currentUser.ethereumAddress,method:"file",createdAt:new Date().toISOString(),addressChecksum:l.addressChecksum}),c}async setupSocialRecovery(e,t,n){if(!this.currentUser)throw new y("Must be authenticated to set up social recovery");let s=await this.getMnemonicFromSession(!0),{BackupFileManager:i}=await Promise.resolve().then(()=>(le(),ye)),o=new i,a;if(n)a=(await o.createPasswordBackup(s,this.currentUser.ethereumAddress,n)).backupFile;else{let d=await this.walletStorage.retrieve(this.currentUser.ethereumAddress);if(!d)throw new y("No wallet data found");let m=await new R().getCredentialById(d.credentialId);if(!m)throw new y("Credential not found");a=(await o.createPasskeyBackup(s,this.currentUser.ethereumAddress,m.id,m.publicKey)).backupFile}let{SocialRecovery:c}=await Promise.resolve().then(()=>(Qn(),Jn));return{guardianShares:(await new c().splitAmongGuardians(a,e,t)).guardianShares,setupComplete:!0}}async generateGuardianInvite(e,t){let{SocialRecovery:n}=await Promise.resolve().then(()=>(Qn(),Jn)),s=new n,i=await s.createGuardianInvitation(e,t),o=s.createShareDownload(e);return{qrCodeDataURL:i.qrCodeDataURL,shareDocument:i.shareDocument,downloadBlob:o.blob,filename:o.filename}}async recoverFromGuardians(e,t){let{SocialRecovery:n}=await Promise.resolve().then(()=>(Qn(),Jn)),{BackupFileManager:s}=await Promise.resolve().then(()=>(le(),ye)),{BackupManager:i}=await Promise.resolve().then(()=>(lt(),ct)),o=new n,a=new s,c=new i,l=e.map(h=>typeof h=="string"?o.parseGuardianShare(h):h),u=await o.recoverFromShares(l),d;if(u.encryptionMethod==="password"){if(!t)throw new y("Password required to decrypt password-protected backup");d=await a.restoreWithPassword(u,t)}else throw new y("Passkey-encrypted backups not supported for guardian recovery. Use password-protected backups.");return c.markBackupVerified(d.ethereumAddress),d}async restoreFromBackupFile(e,t){let{BackupFileManager:n}=await Promise.resolve().then(()=>(le(),ye)),{BackupManager:s}=await Promise.resolve().then(()=>(lt(),ct)),i=new n,o=new s,a=await i.parseBackupFile(e),c,l;if(a.encryptionMethod==="password"){if(!t)throw new y("Password required to restore password-encrypted backup");let u=await i.restoreWithPassword(a,t);c=u.mnemonic,l=u.ethereumAddress}else if(a.encryptionMethod==="passkey"){if(!this.currentUser)throw new y("Must be logged in with passkey to restore passkey-encrypted backup. Call login() first.");let h=(await new R().getAllCredentials()).find(g=>g.ethereumAddress.toLowerCase()===this.currentUser.ethereumAddress.toLowerCase());if(!h)throw new y("Credential not found for current user");let m=await i.restoreWithExistingPasskey(a,h.id,h.publicKey);c=m.mnemonic,l=m.ethereumAddress}else if(a.encryptionMethod==="hybrid"){if(!t)throw new y("Password required to restore hybrid backup");if(!this.currentUser)throw new y("Must be logged in with passkey to restore hybrid backup. Call login() first.");let h=(await new R().getAllCredentials()).find(g=>g.ethereumAddress.toLowerCase()===this.currentUser.ethereumAddress.toLowerCase());if(!h)throw new y("Credential not found for current user");let m=await i.restoreWithHybrid(a,t,h.id,h.publicKey);c=m.mnemonic,l=m.ethereumAddress}else throw new y(`Unknown encryption method: ${a.encryptionMethod}`);if(o.markBackupVerified(l),this.currentWallet={address:l,mnemonic:c},this.currentUser){let u=new R,h=(await u.getAllCredentials()).find(m=>m.ethereumAddress.toLowerCase()===this.currentUser.ethereumAddress.toLowerCase());if(h){let m=this.currentUser.ethereumAddress;m.toLowerCase()!==l.toLowerCase()&&await this.walletStorage.delete(m),await u.updateCredentialAddress(h.id,l);let g=await(await Promise.resolve().then(()=>(q(),Ue))).deriveEncryptionKeyFromWebAuthn(h.id,h.publicKey),w=await(await Promise.resolve().then(()=>(q(),Ue))).encryptData(c,g);await this.walletStorage.store({ethereumAddress:l,encryptedMnemonic:w,credentialId:h.id,createdAt:new Date().toISOString()}),this.currentUser={...this.currentUser,ethereumAddress:l},await this.sessionManager.startSession(c,h.id,l,void 0,"STANDARD"),this.config.onAuthStateChanged?.(!0,this.currentUser)}}return{mnemonic:c,ethereumAddress:l}}async syncWalletWithPasskey(e,t){let{BackupFileManager:n}=await Promise.resolve().then(()=>(le(),ye)),{BackupManager:s}=await Promise.resolve().then(()=>(lt(),ct)),{promptPasskeySelection:i}=await Promise.resolve().then(()=>(Ii(),Bc)),o=new n,a=new s,c=await i(),l=await o.parseBackupFile(e),u,d;if(l.encryptionMethod==="password"){if(!t)throw new y("Password required to restore password-encrypted backup");let g=await o.restoreWithPassword(l,t);u=g.mnemonic,d=g.ethereumAddress}else if(l.encryptionMethod==="passkey"){if(!c.publicKey)throw new y("Passkey public key not found. The passkey may not be registered on this device yet.");let g=await o.restoreWithExistingPasskey(l,c.credentialId,c.publicKey);u=g.mnemonic,d=g.ethereumAddress}else if(l.encryptionMethod==="hybrid"){if(!t)throw new y("Password required to restore hybrid backup");if(!c.publicKey)throw new y("Passkey public key not found. The passkey may not be registered on this device yet.");let g=await o.restoreWithHybrid(l,t,c.credentialId,c.publicKey);u=g.mnemonic,d=g.ethereumAddress}else throw new y(`Unknown encryption method: ${l.encryptionMethod}`);a.markBackupVerified(d);let m=await new R().getCredentialById(c.credentialId);if(m){let{deriveEncryptionKeyFromWebAuthn:g,encryptData:w}=await Promise.resolve().then(()=>(q(),Ue)),b=await g(m.id,m.publicKey),S=await w(u,b);await this.walletStorage.store({ethereumAddress:d,encryptedMnemonic:S,credentialId:m.id,createdAt:new Date().toISOString()}),this.currentUser={username:m.username,ethereumAddress:d,credentialId:m.id},await this.sessionManager.startSession(u,m.id,d,void 0,"STANDARD"),this.config.onAuthStateChanged?.(!0,this.currentUser)}return{mnemonic:u,ethereumAddress:d}}async registerWithBackupFile(e,t,n){let{BackupFileManager:s}=await Promise.resolve().then(()=>(le(),ye)),{BackupManager:i}=await Promise.resolve().then(()=>(lt(),ct)),o=new s,a=new i,c=await o.parseBackupFile(e);if(c.encryptionMethod!=="password")throw new y("Can only register with password-encrypted backups. Use restoreFromBackupFile() for passkey-encrypted backups.");let{mnemonic:l,ethereumAddress:u}=await o.restoreWithPassword(c,t),{Wallet:d}=await import("ethers");if(d.fromPhrase(l).address.toLowerCase()!==u.toLowerCase())throw new y("Backup verification failed: address mismatch");return a.markBackupVerified(u),this.currentWallet={address:u,mnemonic:l},this.register({username:n})}async getSyncStatus(){let{DeviceSyncManager:e}=await Promise.resolve().then(()=>(Rr(),Zn));return new e().getSyncInfo()}async exportForSync(){if(!this.currentUser)throw new y("Must be authenticated to export for sync");let e=await this.getMnemonicFromSession(!0),t=await this.walletStorage.retrieve(this.currentUser.ethereumAddress);if(!t)throw new y("No wallet data found");let s=await new R().getCredentialById(t.credentialId);if(!s)throw new y("Credential not found");let{DeviceSyncManager:i}=await Promise.resolve().then(()=>(Rr(),Zn)),o=new i,{backupFile:a,blob:c}=await o.exportForSync(e,this.currentUser.ethereumAddress,s.id,s.publicKey),l=`w3pk-sync-${this.currentUser.ethereumAddress.substring(0,8)}.json`,u;try{u=await o.generateSyncQR(a)}catch(d){console.warn("QR code generation failed:",d)}return{blob:c,filename:l,qrCode:u}}async importFromSync(e){if(!this.currentUser)throw new y("Must be logged in to import from sync. Call login() first.");let{DeviceSyncManager:t}=await Promise.resolve().then(()=>(Rr(),Zn)),{BackupFileManager:n}=await Promise.resolve().then(()=>(le(),ye)),{BackupManager:s}=await Promise.resolve().then(()=>(lt(),ct)),i=new n,o=new t,a=new s,c=await i.parseBackupFile(e),l=await this.walletStorage.retrieve(this.currentUser.ethereumAddress);if(!l)throw new y("No wallet data found for current user");let d=await new R().getCredentialById(l.credentialId);if(!d)throw new y("Credential not found");let{mnemonic:h,ethereumAddress:m}=await o.importFromSync(c,d.id,d.publicKey);a.markBackupVerified(m);let g=await(await Promise.resolve().then(()=>(q(),Ue))).deriveEncryptionKeyFromWebAuthn(d.id,d.publicKey),w=await(await Promise.resolve().then(()=>(q(),Ue))).encryptData(h,g);return await this.walletStorage.store({ethereumAddress:m,encryptedMnemonic:w,credentialId:d.id,createdAt:new Date().toISOString()}),{ethereumAddress:m,success:!0}}async detectSyncCapabilities(){let{PlatformDetector:e}=await Promise.resolve().then(()=>(Nc(),Mc));return new e().detectSyncCapabilities()}async simulateRecoveryScenario(e){if(!this.currentUser)throw new y("Must be authenticated to run recovery simulation");let t=await this.getBackupStatus(),{RecoverySimulator:n}=await Promise.resolve().then(()=>(Fr(),ns));return new n().simulateScenario(e,t)}async runRecoveryTest(){if(!this.currentUser)throw new y("Must be authenticated to run recovery test");let e=await this.getBackupStatus(),{RecoverySimulator:t}=await Promise.resolve().then(()=>(Fr(),ns));return new t().runInteractiveTest(e)}async getEducation(e){let{getExplainer:t}=await Promise.resolve().then(()=>(Fr(),ns)),n=t(e);if(!n)throw new y(`Unknown education topic: ${e}`);return n}hasActiveSession(){return this.sessionManager.isActive()}getSessionRemainingTime(){return this.sessionManager.getRemainingTime()}extendSession(){try{this.sessionManager.extendSession()}catch(e){throw new y("Cannot extend session",e)}}async clearSession(){await this.sessionManager.clearSession()}setSessionDuration(e){this.sessionManager.setSessionDuration(e)}setPersistentSessionDuration(e){this.sessionManager.setPersistentSessionDuration(e)}async deriveMLKemPublicKey(e){if(!this.currentUser)throw new y("Must be authenticated to derive ML-KEM public key");let{deriveMLKemKeypair:t}=await Promise.resolve().then(()=>(Nr(),as)),{Wallet:n}=await import("ethers"),s=e?.mode||"STANDARD",i=e?.tag||J,o=e?.origin||ge(),a=e?.context||"mlkem-v1",c=s==="STRICT"?!0:e?.requireAuth||!1;if(s==="PRIMARY")throw new y("ML-KEM encryption is not supported in PRIMARY mode. PRIMARY mode uses P-256 WebAuthn keys which cannot derive ML-KEM keypairs. Use STANDARD, STRICT, or YOLO mode instead.");let l=await this.getMnemonicFromSession(c,s),u=await me(l,o,s,i),d;if(u.privateKey)d=u.privateKey;else{let{deriveWalletFromMnemonic:m}=await Promise.resolve().then(()=>(De(),kt));d=m(l,u.index).privateKey}let h=await t(d,a);return typeof Buffer<"u"?Buffer.from(h.publicKey).toString("base64"):btoa(String.fromCharCode(...Array.from(h.publicKey)))}async mlkemEncrypt(e,t,n){if(!this.currentUser)throw new y("Must be authenticated to encrypt data");let{mlkemEncryptWithKey:s}=await Promise.resolve().then(()=>(Nr(),as)),i=n?.mode||"STANDARD",o=n?.tag||J,a=n?.origin||ge(),c=n?.context||"mlkem-v1",l=i==="STRICT"?!0:n?.requireAuth||!1;if(i==="PRIMARY")throw new y("ML-KEM encryption is not supported in PRIMARY mode. Use STANDARD, STRICT, or YOLO mode instead.");let u=await this.getMnemonicFromSession(l,i),d=await me(u,a,i,o),h;if(d.privateKey)h=d.privateKey;else{let{deriveWalletFromMnemonic:m}=await Promise.resolve().then(()=>(De(),kt));h=m(u,d.index).privateKey}return await s(e,h,t,c)}async mlkemDecrypt(e,t){if(!this.currentUser)throw new y("Must be authenticated to decrypt data");let{mlkemDecryptWithKey:n}=await Promise.resolve().then(()=>(Nr(),as)),s=t?.mode||"STANDARD",i=t?.tag||J,o=t?.origin||ge(),a=t?.context||"mlkem-v1",c=s==="STRICT"?!0:t?.requireAuth||!1;if(s==="PRIMARY")throw new y("ML-KEM encryption is not supported in PRIMARY mode. Use STANDARD, STRICT, or YOLO mode instead.");let l=await this.getMnemonicFromSession(c,s),u=await me(l,o,s,i),d;if(u.privateKey)d=u.privateKey;else{let{deriveWalletFromMnemonic:h}=await Promise.resolve().then(()=>(De(),kt));d=h(l,u.index).privateKey}return await n(e,d,a)}};j();Ii();Et();Fr();async function Eg(r,e="build"){let{importer:t}=await Promise.resolve().then(()=>(zo(),Dd)),{MemoryBlockstore:n}=await Promise.resolve().then(()=>(Xd(),Zd)),s=new n,o=t(async function*(){yield{path:e,content:r}}(),s,{cidVersion:1,rawLeaves:!0,wrapWithDirectory:!1});for await(let a of o)return a.cid.toString();throw new Error("Failed to generate CID")}async function Cg(r){let e=["index.js","index.mjs","index.d.ts"],t=[],n=0;for(let o of e){let a=`${r}/${o}`,c=await fetch(a);if(!c.ok)throw new Error(`Failed to fetch ${o}: ${c.statusText}`);let l=await c.arrayBuffer(),u=new Uint8Array(l);t.push(u),n+=u.length}let s=new Uint8Array(n),i=0;for(let o of t)s.set(o,i),i+=o.length;return s}async function ea(r){let e=await Cg(r);return Eg(e)}function ta(){try{return eh().version}catch{throw new Error("Failed to read package version")}}async function ra(){let r=ta();return ea(`https://unpkg.com/w3pk@${r}/dist`)}async function th(r){return await ra()===r}ke();Zs();De();function rh(r=11){let e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",t=new Uint8Array(r);return crypto.getRandomValues(t),Array.from(t).map(n=>e[n%e.length]).join("")}function nh(r){if(!r.domain||!r.address||!r.uri||!r.version||r.chainId===void 0||!r.nonce||!r.issuedAt)throw new Error("Missing required SIWE message fields");if(r.version!=="1")throw new Error('SIWE version must be "1"');if(r.nonce.length<8||!/^[a-zA-Z0-9]+$/.test(r.nonce))throw new Error("Nonce must be at least 8 alphanumeric characters");if(r.statement&&r.statement.includes(`
|
|
961
961
|
`))throw new Error("Statement cannot contain newlines");let e=`${r.domain} wants you to sign in with your Ethereum account:
|
|
962
962
|
`;if(e+=`${r.address}
|
|
963
963
|
`,e+=`
|
|
@@ -972,12 +972,12 @@ Expiration Time: ${r.expirationTime}`),r.notBefore&&(e+=`
|
|
|
972
972
|
Not Before: ${r.notBefore}`),r.requestId&&(e+=`
|
|
973
973
|
Request ID: ${r.requestId}`),r.resources&&r.resources.length>0){e+=`
|
|
974
974
|
Resources:`;for(let t of r.resources)e+=`
|
|
975
|
-
- ${t}`}return e}function
|
|
976
|
-
`);if(e.length<7)throw new Error("Invalid SIWE message: too few lines");let n=e[0].match(/^(.+) wants you to sign in with your Ethereum account:$/);if(!n)throw new Error("Invalid SIWE message: malformed domain line");let s=n[1],i=e[1];if(!i.match(/^0x[a-fA-F0-9]{40}$/))throw new Error("Invalid SIWE message: malformed address");if(e[2]!=="")throw new Error("Invalid SIWE message: expected empty line after address");let o,a="",c="",l=0,u="",d="",h,m,g,w=[],b=3;for(e[b]&&!e[b].startsWith("URI: ")&&(o=e[b],b++,e[b]===""&&b++);b<e.length;b++){let S=e[b];if(S.startsWith("URI: "))a=S.substring(5);else if(S.startsWith("Version: "))c=S.substring(9);else if(S.startsWith("Chain ID: "))l=parseInt(S.substring(10),10);else if(S.startsWith("Nonce: "))u=S.substring(7);else if(S.startsWith("Issued At: "))d=S.substring(11);else if(S.startsWith("Expiration Time: "))h=S.substring(17);else if(S.startsWith("Not Before: "))m=S.substring(12);else if(S.startsWith("Request ID: "))g=S.substring(12);else if(S.startsWith("Resources:")){for(b++;b<e.length&&e[b].startsWith("- ");)w.push(e[b].substring(2)),b++;break}}if(!a||!c||!l||!u||!d)throw new Error("Invalid SIWE message: missing required fields");return{domain:s,address:i,statement:o,uri:a,version:c,chainId:l,nonce:u,issuedAt:d,expirationTime:h,notBefore:m,requestId:g,resources:w.length>0?w:void 0}}function
|
|
975
|
+
- ${t}`}return e}function Ns(r){let e=r.split(`
|
|
976
|
+
`);if(e.length<7)throw new Error("Invalid SIWE message: too few lines");let n=e[0].match(/^(.+) wants you to sign in with your Ethereum account:$/);if(!n)throw new Error("Invalid SIWE message: malformed domain line");let s=n[1],i=e[1];if(!i.match(/^0x[a-fA-F0-9]{40}$/))throw new Error("Invalid SIWE message: malformed address");if(e[2]!=="")throw new Error("Invalid SIWE message: expected empty line after address");let o,a="",c="",l=0,u="",d="",h,m,g,w=[],b=3;for(e[b]&&!e[b].startsWith("URI: ")&&(o=e[b],b++,e[b]===""&&b++);b<e.length;b++){let S=e[b];if(S.startsWith("URI: "))a=S.substring(5);else if(S.startsWith("Version: "))c=S.substring(9);else if(S.startsWith("Chain ID: "))l=parseInt(S.substring(10),10);else if(S.startsWith("Nonce: "))u=S.substring(7);else if(S.startsWith("Issued At: "))d=S.substring(11);else if(S.startsWith("Expiration Time: "))h=S.substring(17);else if(S.startsWith("Not Before: "))m=S.substring(12);else if(S.startsWith("Request ID: "))g=S.substring(12);else if(S.startsWith("Resources:")){for(b++;b<e.length&&e[b].startsWith("- ");)w.push(e[b].substring(2)),b++;break}}if(!a||!c||!l||!u||!d)throw new Error("Invalid SIWE message: missing required fields");return{domain:s,address:i,statement:o,uri:a,version:c,chainId:l,nonce:u,issuedAt:d,expirationTime:h,notBefore:m,requestId:g,resources:w.length>0?w:void 0}}function sh(r,e){let t=[];try{let n=typeof r=="string"?Ns(r):r;return e?.domain&&n.domain!==e.domain&&t.push(`Domain mismatch: expected "${e.domain}", got "${n.domain}"`),e?.chainId!==void 0&&n.chainId!==e.chainId&&t.push(`Chain ID mismatch: expected ${e.chainId}, got ${n.chainId}`),n.version!=="1"&&t.push(`Invalid version: must be "1", got "${n.version}"`),(n.nonce.length<8||!/^[a-zA-Z0-9]+$/.test(n.nonce))&&t.push("Nonce must be at least 8 alphanumeric characters"),e?.checkExpiration&&n.expirationTime&&new Date(n.expirationTime)<new Date&&t.push("Message has expired"),e?.checkNotBefore&&n.notBefore&&new Date(n.notBefore)>new Date&&t.push("Message is not yet valid (not-before constraint)"),{valid:t.length===0,errors:t,parsed:n}}catch(n){return t.push(n.message),{valid:!1,errors:t}}}async function ih(r,e,t){try{let{verifyMessage:n}=await import("ethers"),s=n(r,e),i=Ns(r);return s.toLowerCase()!==i.address.toLowerCase()?{valid:!1,error:"Signature does not match address in message"}:t&&s.toLowerCase()!==t.toLowerCase()?{valid:!1,error:"Signature does not match expected address"}:{valid:!0,address:s}}catch(n){return{valid:!1,error:n.message}}}ki();Yn();function Pg(r,e=3e4){let t=["signMessage","signTypedData","sign(","signature","sendTransaction","transaction","eth_sign","Contract(","ethers.Contract","new Contract","w3pk","Web3Passkey","useW3PK","wallet","signer","provider","authorization","delegation","EIP7702"],n=r.split(`
|
|
977
977
|
`),s=[],i=500;for(let a=0;a<n.length&&s.length<i;a++){let l=n[a].toLowerCase();if(t.some(u=>l.includes(u.toLowerCase()))){let u=Math.max(0,a-2),d=Math.min(n.length,a+3);for(let h=u;h<d;h++)s.includes(n[h])||s.push(n[h])}}let o=s.join(`
|
|
978
978
|
`);return o.length>e?o.substring(0,e)+`
|
|
979
979
|
|
|
980
|
-
// ... (truncated)`:o||"// No transaction code found"}async function
|
|
980
|
+
// ... (truncated)`:o||"// No transaction code found"}async function Ig(r,e=100){let t=`# Application Code Analysis
|
|
981
981
|
|
|
982
982
|
`;t+=`**App URL:** ${r}
|
|
983
983
|
|
|
@@ -989,7 +989,7 @@ Resources:`;for(let t of r.resources)e+=`
|
|
|
989
989
|
|
|
990
990
|
`;let i=0,o=0,a=e*1024;for(let c of s.slice(0,15)){if(o>=e){console.warn(`[W3PK Inspect] Reached total size limit of ${e} KB - stopping collection`),t+=`
|
|
991
991
|
**Note:** Collection stopped - reached ${e} KB limit
|
|
992
|
-
`;break}try{let l=await fetch(c);if(!l.ok)continue;let u=await l.text(),d=
|
|
992
|
+
`;break}try{let l=await fetch(c);if(!l.ok)continue;let u=await l.text(),d=Pg(u);if(d&&!d.includes("No transaction code found")){let h=new Blob([d]).size/1024;if(o+h>e){console.warn(`[W3PK Inspect] Skipping ${new URL(c).pathname} - would exceed total size limit`);break}t+=`### \`${new URL(c).pathname}\`
|
|
993
993
|
|
|
994
994
|
`,t+="```javascript\n",t+=d,t+=`
|
|
995
995
|
\`\`\`
|
|
@@ -997,8 +997,8 @@ Resources:`;for(let t of r.resources)e+=`
|
|
|
997
997
|
---
|
|
998
998
|
|
|
999
999
|
`,i++,o+=h}}catch{}}return i===0&&(t+=`No transaction-related code found in JavaScript files.
|
|
1000
|
-
`),t}async function na(r={}){if(typeof window>"u")throw new Error("Browser inspect() can only be called in browser environments. For Node.js, use the CLI or Node.js API.");let{appUrl:e=window.location.origin,rukhUrl:t="https://rukh.w3hc.org",context:n="w3pk",model:s="anthropic",focusMode:i="transactions",maxTotalSizeKB:o=100}=r;console.log("[W3PK Inspect] Starting inspection of",e),console.log("[W3PK Inspect] Focus mode:",i),console.log("[W3PK Inspect] Max total size:",o,"KB");let a=await
|
|
1000
|
+
`),t}async function na(r={}){if(typeof window>"u")throw new Error("Browser inspect() can only be called in browser environments. For Node.js, use the CLI or Node.js API.");let{appUrl:e=window.location.origin,rukhUrl:t="https://rukh.w3hc.org",context:n="w3pk",model:s="anthropic",focusMode:i="transactions",maxTotalSizeKB:o=100}=r;console.log("[W3PK Inspect] Starting inspection of",e),console.log("[W3PK Inspect] Focus mode:",i),console.log("[W3PK Inspect] Max total size:",o,"KB");let a=await Ig(e,o);console.log("[W3PK Inspect] Collected source code, sending to Rukh API...");let c="Analyze this web application and provide a security report listing all transaction and signing methods.",l=new FormData;l.append("message",c),l.append("model",s),l.append("context",n);let u=new Blob([a],{type:"text/markdown"});l.append("file",u,"app-source.md");let d=await fetch(`${t}/ask`,{method:"POST",body:l});if(!d.ok){let b=await d.text();throw new Error(`Rukh API error: ${d.status} - ${b}`)}let h=await d.json(),m=h.output||h.response||h.message||JSON.stringify(h);console.log("[W3PK Inspect] Analysis complete!");let w=Array.from(document.querySelectorAll("script[src]")).map(b=>new URL(b.src).pathname).filter(b=>b&&!b.includes("node_modules"));return{report:m,analyzedFiles:w,appUrl:e}}async function oh(r){console.log(`\u{1F50D} W3PK Security Inspection Starting...
|
|
1001
1001
|
`);try{let e=await na(r);console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log("\u{1F4CB} SECURITY REPORT"),console.log(`\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501
|
|
1002
1002
|
`),console.log(e.report),console.log(`
|
|
1003
|
-
\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501`),console.log(`\u2705 Analyzed ${e.analyzedFiles.length} files from ${e.appUrl}`),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501")}catch(e){throw console.error("\u274C Inspection failed:",e),e}}
|
|
1003
|
+
\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501`),console.log(`\u2705 Analyzed ${e.analyzedFiles.length} files from ${e.appUrl}`),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501")}catch(e){throw console.error("\u274C Inspection failed:",e),e}}Nr();function ah(r={}){return new Ut(r)}var Bg=ah;
|
|
1004
1004
|
//# sourceMappingURL=index.js.map
|