w3pk 0.10.2 → 0.10.4
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 +1 -8
- package/dist/chainlist/index.d.mts +96 -0
- package/dist/chainlist/index.d.ts +96 -0
- package/dist/index.d.mts +237 -113
- package/dist/index.d.ts +237 -113
- package/dist/index.js +31 -31
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +31 -31
- package/dist/index.mjs.map +1 -1
- package/dist/zk/index.js +3 -3
- package/dist/zk/index.js.map +1 -1
- package/dist/zk/index.mjs +4 -4
- package/dist/zk/index.mjs.map +1 -1
- package/dist/zk/utils.js +3 -3
- package/dist/zk/utils.js.map +1 -1
- package/dist/zk/utils.mjs +3 -3
- package/dist/zk/utils.mjs.map +1 -1
- package/docs/API_REFERENCE.md +191 -38
- package/docs/ARCHITECTURE.md +14 -13
- package/docs/BROWSER_COMPATIBILITY.md +24 -0
- package/docs/INTEGRATION_GUIDELINES.md +45 -20
- package/docs/PORTABILITY.md +66 -0
- package/docs/POST_QUANTUM.md +236 -1468
- package/docs/QUICK_START.md +4 -4
- package/docs/RECOVERY.md +93 -49
- package/docs/SECURITY.md +65 -58
- package/docs/notes/IFRAME_IMPLEMENTATION_PLAN.md +197 -0
- package/docs/notes/JULY_13_ROADMAP.md +29 -0
- package/docs/notes/NOTES.md +333 -0
- package/docs/notes/SIWE_IMPLEMENTATION.md +129 -0
- package/docs/notes/SYNCING_ACROSS_DEVICES.md +127 -0
- package/docs/notes/ethereum-post-quantum-roadmap.md +213 -0
- package/docs/notes/wulong-building-finding.md +109 -0
- package/package.json +43 -25
package/dist/index.mjs
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
var jd=Object.create;var jr=Object.defineProperty;var Jd=Object.getOwnPropertyDescriptor;var Qd=Object.getOwnPropertyNames;var Zd=Object.getPrototypeOf,Xd=Object.prototype.hasOwnProperty;var eh=(r,e,t)=>e in r?jr(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)jr(r,t,{get:e[t],enumerable:!0})},th=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of Qd(e))!Xd.call(r,s)&&s!==t&&jr(r,s,{get:()=>e[s],enumerable:!(n=Jd(e,s))||n.enumerable});return r};var tr=(r,e,t)=>(t=r!=null?jd(Zd(r)):{},th(e||!r||!r.__esModule?jr(t,"default",{value:r,enumerable:!0}):t,r));var f=(r,e,t)=>eh(r,typeof e!="symbol"?e+"":e,t);var V,K,rr,w,U,B,Ss,G=p(()=>{"use strict";V=class extends Error{constructor(t,n,s){super(t);this.code=n;this.originalError=s;this.name="Web3PasskeyError"}},K=class extends V{constructor(e,t){super(e,"AUTHENTICATION_ERROR",t),this.name="AuthenticationError"}},rr=class extends V{constructor(e,t){super(e,"REGISTRATION_ERROR",t),this.name="RegistrationError"}},w=class extends V{constructor(e,t){super(e,"WALLET_ERROR",t),this.name="WalletError"}},U=class extends V{constructor(e,t){super(e,"CRYPTO_ERROR",t),this.name="CryptoError"}},B=class extends V{constructor(e,t){super(e,"STORAGE_ERROR",t),this.name="StorageError"}},Ss=class extends V{constructor(t,n,s){super(t,"API_ERROR",s);this.statusCode=n;this.name="ApiError"}}});var vs={};k(vs,{arrayBufferToBase64Url:()=>Pe,base64ToArrayBuffer:()=>Oo,base64UrlDecode:()=>Wo,base64UrlToArrayBuffer:()=>_,safeAtob:()=>yt,safeBtoa:()=>zo});function _(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 Pe(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 Oo(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 yt(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 zo(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 Wo(r){return _(r)}var we=p(()=>{"use strict"});var Me={};k(Me,{PRF_INPUT:()=>nr,decryptData:()=>X,deriveEncryptionKey:()=>ih,deriveEncryptionKeyFromWebAuthn:()=>de,derivePrfSessionKey:()=>wt,encryptData:()=>ie,generateChallenge:()=>Fe,hashCredentialId:()=>bt,hashPublicKey:()=>ks});async function wt(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:sh},t,{name:"AES-GCM",length:256},!1,["encrypt","decrypt"])}catch(e){throw new U("Failed to derive session key from PRF output",e)}}async function de(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 U("Failed to derive encryption key from WebAuthn",t)}}async function ih(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 U("Failed to derive encryption key",t)}}function Fe(){let r=new Uint8Array(32);return crypto.getRandomValues(r),Pe(r)}async function ie(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 U("Failed to encrypt data",t)}}async function X(r,e){try{if(!r||r.length<16)throw new Error("Invalid encrypted data: too small");let t=yt(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 U(`Data decryption failed: ${t instanceof Error?t.message:"Unknown error"}`,t)}}async function bt(r){try{let e=await crypto.subtle.digest("SHA-256",new TextEncoder().encode(`w3pk-cred-id:${r}`));return Pe(e)}catch(e){throw new U("Failed to hash credential ID",e)}}async function ks(r){try{let e=await crypto.subtle.digest("SHA-256",new TextEncoder().encode(r));return Pe(e)}catch(e){throw new U("Failed to hash public key",e)}}var nr,sh,W=p(()=>{"use strict";G();we();nr=new TextEncoder().encode("w3pk-prf-input-v1"),sh=new TextEncoder().encode("w3pk-prf-session-key-v1")});var Zr={};k(Zr,{CredentialStorage:()=>R});async function $o(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 Jr,Qr,R,Ne=p(()=>{"use strict";G();W();Jr="w3pk_credential_",Qr="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 B("localStorage is not available")}async saveCredential(e){try{let t=await $o(e.id),n=await bt(e.id),s={id:n,encryptedUsername:await ie(e.username,t),encryptedAddress:await ie(e.ethereumAddress,t),publicKey:e.publicKey,publicKeyFingerprint:await ks(e.publicKey),createdAt:e.createdAt,lastUsed:e.lastUsed},i=`${Jr}${n}`;this.storage.setItem(i,JSON.stringify(s)),await this.addToIndex(e.id)}catch(t){throw new B("Failed to save credential",t)}}async getCredentialById(e){try{let t=await bt(e),n=`${Jr}${t}`,s=this.storage.getItem(n);if(!s)return null;let i=JSON.parse(s),o=await $o(e);return{id:e,publicKey:i.publicKey,username:await X(i.encryptedUsername,o),ethereumAddress:await X(i.encryptedAddress,o),createdAt:i.createdAt,lastUsed:i.lastUsed}}catch(t){throw new B("Failed to retrieve credential",t)}}async getCredentialByUsername(e){try{return(await this.getAllCredentials()).find(n=>n.username===e)||null}catch(t){throw new B("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 B("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 B("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 B("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 B("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 B("Failed to update credential address",n)}}async deleteCredential(e){try{let t=await bt(e),n=`${Jr}${t}`;this.storage.removeItem(n),await this.removeFromIndex(e)}catch(t){throw new B("Failed to delete credential",t)}}async clearAll(){try{let e=await this.getIndex();(await Promise.all(e.map(async n=>await bt(n)))).forEach(n=>{let s=`${Jr}${n}`;this.storage.removeItem(s)}),this.storage.removeItem(Qr)}catch(e){throw new B("Failed to clear credentials",e)}}async getIndex(){try{let e=this.storage.getItem(Qr);return e?JSON.parse(e):[]}catch{return[]}}async addToIndex(e){let t=await this.getIndex();t.includes(e)||(t.push(e),this.storage.setItem(Qr,JSON.stringify(t)))}async removeFromIndex(e){let n=(await this.getIndex()).filter(s=>s!==e);this.storage.setItem(Qr,JSON.stringify(n))}}});var St={};k(St,{createWalletFromMnemonic:()=>Vo,deriveWalletFromMnemonic:()=>nn,generateBIP39Wallet:()=>rn});import{ethers as tn}from"ethers";function rn(){try{let r=tn.Wallet.createRandom().mnemonic;if(!r)throw new Error("Failed to generate mnemonic");let e=r.phrase;return{address:tn.HDNodeWallet.fromPhrase(e,void 0,"m/44'/60'/0'/0/0").address,mnemonic:e}}catch(r){throw new w("Wallet generation failed",r)}}function Vo(r){try{if(!r||r.trim().split(/\s+/).length<12)throw new Error("Invalid mnemonic: must be at least 12 words");return tn.HDNodeWallet.fromPhrase(r.trim(),void 0,"m/44'/60'/0'/0/0")}catch(e){throw new w(`Wallet creation failed: ${e instanceof Error?e.message:"Invalid mnemonic"}`,e)}}function nn(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=tn.HDNodeWallet.fromPhrase(r.trim(),void 0,t);return{address:n.address,privateKey:n.privateKey}}catch(t){throw new w(`HD wallet derivation failed: ${t instanceof Error?t.message:"Unknown error"}`,t)}}var Ie=p(()=>{"use strict";G()});var on={};k(on,{DEFAULT_MODE:()=>Se,DEFAULT_TAG:()=>ee,deriveAddressFromP256PublicKey:()=>Go,deriveIndexFromOriginModeAndTag:()=>Es,getCurrentOrigin:()=>xe,getOriginSpecificAddress:()=>Ae,normalizeOrigin:()=>sn});import{keccak256 as ph}from"ethers";function sn(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 w(`Invalid origin URL: ${r}`,e)}}async function Es(r,e=Se,t=ee){try{let s=`${sn(r)}:${e}:${t.toUpperCase()}`,o=new TextEncoder().encode(s),a=await crypto.subtle.digest("SHA-256",o);return new DataView(a).getUint32(0,!1)%mh}catch(n){throw new w(`Failed to derive index from origin "${r}", mode "${e}", and tag "${t}"`,n)}}async function Ae(r,e,t,n){try{let s=t||Se,i=(n||ee).toUpperCase(),o=sn(e),a=await Es(o,s,i),{address:c,privateKey:l}=nn(r,a),u={address:c,index:a,origin:o,mode:s,tag:i};return s==="YOLO"&&(u.privateKey=l),u}catch(s){throw new w(`Failed to derive origin-specific address for "${e}" with mode "${t||Se}" and tag "${n||ee}"`,s)}}function xe(){if(typeof window>"u"||!window.location)throw new w("getCurrentOrigin() only works in browser environments");return window.location.origin}async function Go(r){try{let e=_(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.x),i=_(n.y),o=new Uint8Array(64);return o.set(new Uint8Array(s),0),o.set(new Uint8Array(i),32),"0x"+ph(o).slice(-40)}catch(e){throw new w("Failed to derive address from P-256 public key",e)}}var Se,ee,mh,At=p(()=>{"use strict";Ie();G();we();Se="STANDARD",ee="MAIN",mh=2147483647});var Rs={};k(Rs,{encodeEIP7702AuthorizationMessage:()=>hn,hashEIP7702AuthorizationMessage:()=>fn,verifyEIP7702Authorization:()=>Ts});import{encodeRlp as Ch,concat as Ph,keccak256 as Ih,toBeHex as ea,recoverAddress as Bh,Signature as Dh}from"ethers";function hn(r,e,t){let n=[r===0n?"0x":ea(r),e.toLowerCase(),t===0n?"0x":ea(t)],s=Ch(n);return Ph(["0x05",s])}function fn(r,e,t){let n=hn(r,e,t);return Ih(n)}function Ts(r,e,t,n,s){try{let i=fn(r,e,t),o;return typeof n=="string"?o=Dh.from(n):o=n,Bh(i,o).toLowerCase()===s.toLowerCase()}catch{return!1}}var pn=p(()=>{"use strict"});var ta={};k(ta,{detectWalletProvider:()=>Ns,getDefaultProvider:()=>Ms,requestExternalWalletAuthorization:()=>Fs,supportsEIP7702Authorization:()=>Us});async function Fs(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(()=>(pn(),Rs)),{Signature:l}=await import("ethers"),u=a(t,e.delegateToAddress,n),d;try{d=await r.request({method:"eth_sign",params:[o,u]})}catch(y){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: ${y.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 Ms(){if(typeof window>"u")return null;let r=window;return r.ethereum?r.ethereum:r.web3?.currentProvider?r.web3.currentProvider:null}function Ns(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 Us(r){try{let e=await r.request({method:"eth_accounts"});return Array.isArray(e)}catch{return!1}}var Ls=p(()=>{"use strict"});var sa={};k(sa,{extractRS:()=>na});function na(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 _s=p(()=>{"use strict"});var ia={};k(ia,{BackupStorage:()=>Qe});var Qe,mn=p(()=>{"use strict";Qe=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 aa={};k(aa,{decryptWithPassword:()=>cr,deriveAddressChecksum:()=>re,deriveKeyFromPassword:()=>gn,encryptWithPassword:()=>Ze,getDeviceFingerprint:()=>ve,validatePasswordStrength:()=>oa});async function gn(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 Ze(r,e,t){let s=await gn(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:ar(c),iv:ar(a),salt:ar(t),iterations:31e4}}async function cr(r,e,t,n,s=31e4){let i=Ks(t),o=await gn(e,i,s),a=Ks(n),c=Ks(r),l=await crypto.subtle.decrypt({name:"AES-GCM",iv:a},o,c);return new TextDecoder().decode(l)}async function ve(){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 ar(s)}async function re(r){let t=new TextEncoder().encode(r.toLowerCase()),n=await crypto.subtle.digest("SHA-256",t);return ar(n).substring(0,16)}function oa(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 ar(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 Ks(r){let e=yt(r),t=new Uint8Array(e.length);for(let n=0;n<e.length;n++)t[n]=e.charCodeAt(n);return t}var Xe=p(()=>{"use strict";we()});var la=P((ky,ca)=>{"use strict";ca.exports=function(){return typeof Promise=="function"&&Promise.prototype&&Promise.prototype.then}});var Ue=P(et=>{"use strict";var Os,Fh=[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];et.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};et.getSymbolTotalCodewords=function(e){return Fh[e]};et.getBCHDigit=function(r){let e=0;for(;r!==0;)e++,r>>>=1;return e};et.setToSJISFunction=function(e){if(typeof e!="function")throw new Error('"toSJISFunc" is not a valid function.');Os=e};et.isKanjiModeEnabled=function(){return typeof Os<"u"};et.toSJIS=function(e){return Os(e)}});var yn=P(oe=>{"use strict";oe.L={bit:1};oe.M={bit:0};oe.Q={bit:3};oe.H={bit:2};function Mh(r){if(typeof r!="string")throw new Error("Param is not a string");switch(r.toLowerCase()){case"l":case"low":return oe.L;case"m":case"medium":return oe.M;case"q":case"quartile":return oe.Q;case"h":case"high":return oe.H;default:throw new Error("Unknown EC Level: "+r)}}oe.isValid=function(e){return e&&typeof e.bit<"u"&&e.bit>=0&&e.bit<4};oe.from=function(e,t){if(oe.isValid(e))return e;try{return Mh(e)}catch{return t}}});var ha=P((Py,da)=>{"use strict";function ua(){this.buffer=[],this.length=0}ua.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=ua});var pa=P((Iy,fa)=>{"use strict";function lr(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)}lr.prototype.set=function(r,e,t,n){let s=r*this.size+e;this.data[s]=t,n&&(this.reservedBit[s]=!0)};lr.prototype.get=function(r,e){return this.data[r*this.size+e]};lr.prototype.xor=function(r,e,t){this.data[r*this.size+e]^=t};lr.prototype.isReserved=function(r,e){return this.reservedBit[r*this.size+e]};fa.exports=lr});var ma=P(wn=>{"use strict";var Nh=Ue().getSymbolSize;wn.getRowColCoords=function(e){if(e===1)return[];let t=Math.floor(e/7)+2,n=Nh(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()};wn.getPositions=function(e){let t=[],n=wn.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 wa=P(ya=>{"use strict";var Uh=Ue().getSymbolSize,ga=7;ya.getPositions=function(e){let t=Uh(e);return[[0,0],[t-ga,0],[0,t-ga]]}});var ba=P(F=>{"use strict";F.Patterns={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7};var tt={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+=tt.N1+(s-5)),o=u,s=1),u=e.get(l,c),u===a?i++:(i>=5&&(n+=tt.N1+(i-5)),a=u,i=1)}s>=5&&(n+=tt.N1+(s-5)),i>=5&&(n+=tt.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*tt.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*tt.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)*tt.N4};function Lh(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,Lh(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 Ws=P(zs=>{"use strict";var Le=yn(),bn=[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],Sn=[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];zs.getBlocksCount=function(e,t){switch(t){case Le.L:return bn[(e-1)*4+0];case Le.M:return bn[(e-1)*4+1];case Le.Q:return bn[(e-1)*4+2];case Le.H:return bn[(e-1)*4+3];default:return}};zs.getTotalCodewordsCount=function(e,t){switch(t){case Le.L:return Sn[(e-1)*4+0];case Le.M:return Sn[(e-1)*4+1];case Le.Q:return Sn[(e-1)*4+2];case Le.H:return Sn[(e-1)*4+3];default:return}}});var Sa=P(xn=>{"use strict";var ur=new Uint8Array(512),An=new Uint8Array(256);(function(){let e=1;for(let t=0;t<255;t++)ur[t]=e,An[e]=t,e<<=1,e&256&&(e^=285);for(let t=255;t<512;t++)ur[t]=ur[t-255]})();xn.log=function(e){if(e<1)throw new Error("log("+e+")");return An[e]};xn.exp=function(e){return ur[e]};xn.mul=function(e,t){return e===0||t===0?0:ur[An[e]+An[t]]}});var Aa=P(dr=>{"use strict";var $s=Sa();dr.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]^=$s.mul(e[s],t[i]);return n};dr.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]^=$s.mul(t[o],s);let i=0;for(;i<n.length&&n[i]===0;)i++;n=n.slice(i)}return n};dr.generateECPolynomial=function(e){let t=new Uint8Array([1]);for(let n=0;n<e;n++)t=dr.mul(t,new Uint8Array([1,$s.exp(n)]));return t}});var ka=P((Ny,va)=>{"use strict";var xa=Aa();function qs(r){this.genPoly=void 0,this.degree=r,this.degree&&this.initialize(this.degree)}qs.prototype.initialize=function(e){this.degree=e,this.genPoly=xa.generateECPolynomial(this.degree)};qs.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=xa.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};va.exports=qs});var Hs=P(Ea=>{"use strict";Ea.isValid=function(e){return!isNaN(e)&&e>=1&&e<=40}});var Vs=P(Be=>{"use strict";var Ca="[0-9]+",_h="[A-Z $%*+\\-./:]+",hr="(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+";hr=hr.replace(/u/g,"\\u");var Kh="(?:(?![A-Z0-9 $%*+\\-./:]|"+hr+`)(?:.|[\r
|
|
2
|
-
]))+`;Be.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: `+
|
|
1
|
+
var Sh=Object.create;var Zr=Object.defineProperty;var Ah=Object.getOwnPropertyDescriptor;var xh=Object.getOwnPropertyNames;var vh=Object.getPrototypeOf,kh=Object.prototype.hasOwnProperty;var Eh=(r,e,t)=>e in r?Zr(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t;var p=(r,e)=>()=>(r&&(e=r(r=0)),e);var E=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),x=(r,e)=>{for(var t in e)Zr(r,t,{get:e[t],enumerable:!0})},Ch=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of xh(e))!kh.call(r,s)&&s!==t&&Zr(r,s,{get:()=>e[s],enumerable:!(n=Ah(e,s))||n.enumerable});return r};var sr=(r,e,t)=>(t=r!=null?Sh(vh(r)):{},Ch(e||!r||!r.__esModule?Zr(t,"default",{value:r,enumerable:!0}):t,r));var f=(r,e,t)=>Eh(r,typeof e!="symbol"?e+"":e,t);var Is={};x(Is,{ApiError:()=>en,AuthenticationError:()=>L,CryptoError:()=>B,PrfUnsupportedError:()=>Qe,RegistrationError:()=>yt,StorageError:()=>C,SyncBootstrapError:()=>Se,SyncRequiredError:()=>gt,WalletError:()=>g,WalletMissingError:()=>wt,Web3PasskeyError:()=>K});var K,L,yt,g,B,C,en,gt,wt,Ph,Se,Qe,z=p(()=>{"use strict";K=class extends Error{constructor(t,n,s){super(t);this.code=n;this.originalError=s;this.name="Web3PasskeyError"}},L=class extends K{constructor(e,t){super(e,"AUTHENTICATION_ERROR",t),this.name="AuthenticationError"}},yt=class extends K{constructor(e,t){super(e,"REGISTRATION_ERROR",t),this.name="RegistrationError"}},g=class extends K{constructor(e,t){super(e,"WALLET_ERROR",t),this.name="WalletError"}},B=class extends K{constructor(e,t){super(e,"CRYPTO_ERROR",t),this.name="CryptoError"}},C=class extends K{constructor(e,t){super(e,"STORAGE_ERROR",t),this.name="StorageError"}},en=class extends K{constructor(t,n,s){super(t,"API_ERROR",s);this.statusCode=n;this.name="ApiError"}},gt=class extends K{constructor(t){super("Passkey authenticated but this device has no data for it. Sync this device or restore from a backup.","SYNC_REQUIRED");this.credentialId=t;this.name="SyncRequiredError"}},wt=class extends K{constructor(t,n){super("Passkey authenticated but no wallet was found on this device. Restore it from a backup.","WALLET_MISSING");this.credentialId=t;this.ethereumAddress=n;this.name="WalletMissingError"}},Ph={PASSKEY_BACKUP:"This device has no data for the passkey, and a passkey-encrypted backup can't set it up. Sync with a backup from exportForSync() or a password backup instead.",NO_CREDENTIAL:"This backup doesn't name its passkey, so it can't set up this device. Create a new password backup on a device where you're logged in.",CREDENTIAL_MISMATCH:"This backup belongs to a different passkey than the one selected.",PUBLIC_KEY_MISMATCH:"The passkey's signature doesn't match the public key in this backup. The backup may have been tampered with."},Se=class extends K{constructor(t,n){super(Ph[t],"SYNC_BOOTSTRAP_FAILED");this.reason=t;this.credentialId=n;this.name="SyncBootstrapError"}},Qe=class extends K{constructor(t){super("This passkey's authenticator doesn't support the WebAuthn PRF extension.","PRF_UNSUPPORTED");this.credentialId=t;this.name="PrfUnsupportedError"}}});var Rs={};x(Rs,{arrayBufferToBase64Url:()=>ie,base64ToArrayBuffer:()=>ra,base64UrlDecode:()=>sa,base64UrlToArrayBuffer:()=>R,safeAtob:()=>bt,safeBtoa:()=>na});function R(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 ie(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 ra(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 bt(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 na(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 sa(r){return R(r)}var oe=p(()=>{"use strict"});var or={};x(or,{PRF_INPUT:()=>ir,decryptData:()=>j,deriveEncryptionKey:()=>Rh,deriveEncryptionKeyFromWebAuthn:()=>ae,derivePrfSessionKey:()=>St,encryptData:()=>Y,exportSessionKey:()=>Ds,generateChallenge:()=>Ae,hashCredentialId:()=>At,hashPublicKey:()=>Ms,importSessionKey:()=>Fs});async function St(r,e=!1){try{let t=(r instanceof ArrayBuffer,r.byteLength);if(t!==32)throw new Error(`PRF output must be 32 bytes, got ${t}`);let n=await crypto.subtle.importKey("raw",r,"HKDF",!1,["deriveKey"]);return crypto.subtle.deriveKey({name:"HKDF",hash:"SHA-256",salt:new Uint8Array(32),info:Th},n,{name:"AES-GCM",length:256},e,["encrypt","decrypt"])}catch(t){throw new B("Failed to derive session key from PRF output",t)}}async function Ds(r){try{return ie(await crypto.subtle.exportKey("raw",r))}catch(e){throw new B("Failed to export session key",e)}}async function Fs(r){try{return await crypto.subtle.importKey("raw",R(r),{name:"AES-GCM",length:256},!1,["encrypt","decrypt"])}catch(e){throw new B("Failed to import session key",e)}}async function ae(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 B("Failed to derive encryption key from WebAuthn",t)}}async function Rh(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 B("Failed to derive encryption key",t)}}function Ae(){let r=new Uint8Array(32);return crypto.getRandomValues(r),ie(r)}async function Y(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 B("Failed to encrypt data",t)}}async function j(r,e){try{if(!r||r.length<16)throw new Error("Invalid encrypted data: too small");let t=bt(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 B(`Data decryption failed: ${t instanceof Error?t.message:"Unknown error"}`,t)}}async function At(r){try{let e=await crypto.subtle.digest("SHA-256",new TextEncoder().encode(`w3pk-cred-id:${r}`));return ie(e)}catch(e){throw new B("Failed to hash credential ID",e)}}async function Ms(r){try{let e=await crypto.subtle.digest("SHA-256",new TextEncoder().encode(r));return ie(e)}catch(e){throw new B("Failed to hash public key",e)}}var ir,Th,te=p(()=>{"use strict";z();oe();ir=new TextEncoder().encode("w3pk-prf-input-v1"),Th=new TextEncoder().encode("w3pk-prf-session-key-v1")});var nn={};x(nn,{CredentialStorage:()=>D});async function ia(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 tn,rn,D,Ue=p(()=>{"use strict";z();te();tn="w3pk_credential_",rn="w3pk_credential_index";D=class{constructor(e){if(e)this.storage=e;else if(typeof window<"u"&&window.localStorage)this.storage=window.localStorage;else throw new C("localStorage is not available")}async saveCredential(e){try{let t=await ia(e.id),n=await At(e.id),s={id:n,encryptedUsername:await Y(e.username,t),encryptedAddress:await Y(e.ethereumAddress,t),publicKey:e.publicKey,publicKeyFingerprint:await Ms(e.publicKey),createdAt:e.createdAt,lastUsed:e.lastUsed},i=`${tn}${n}`;this.storage.setItem(i,JSON.stringify(s)),await this.addToIndex(e.id)}catch(t){throw new C("Failed to save credential",t)}}async getCredentialById(e){try{let t=await At(e),n=`${tn}${t}`,s=this.storage.getItem(n);if(!s)return null;let i=JSON.parse(s),o=await ia(e);return{id:e,publicKey:i.publicKey,username:await j(i.encryptedUsername,o),ethereumAddress:await j(i.encryptedAddress,o),createdAt:i.createdAt,lastUsed:i.lastUsed}}catch(t){throw new C("Failed to retrieve credential",t)}}async getCredentialByUsername(e){try{return(await this.getAllCredentials()).find(n=>n.username===e)||null}catch(t){throw new C("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 C("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 C("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 C("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 C("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 C("Failed to update credential address",n)}}async deleteCredential(e){try{let t=await At(e),n=`${tn}${t}`;this.storage.removeItem(n),await this.removeFromIndex(e)}catch(t){throw new C("Failed to delete credential",t)}}async clearAll(){try{let e=await this.getIndex();(await Promise.all(e.map(async n=>await At(n)))).forEach(n=>{let s=`${tn}${n}`;this.storage.removeItem(s)}),this.storage.removeItem(rn)}catch(e){throw new C("Failed to clear credentials",e)}}async getIndex(){try{let e=this.storage.getItem(rn);return e?JSON.parse(e):[]}catch{return[]}}async addToIndex(e){let t=await this.getIndex();t.includes(e)||(t.push(e),this.storage.setItem(rn,JSON.stringify(t)))}async removeFromIndex(e){let n=(await this.getIndex()).filter(s=>s!==e);this.storage.setItem(rn,JSON.stringify(n))}}});var ca={};x(ca,{login:()=>ar,verifyAssertionSignature:()=>sn});async function ar(){try{let r=new D,e=Ae(),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:R(e),rpId:window.location.hostname,userVerification:"required",timeout:6e4,extensions:{prf:{eval:{first:ir}}}};t.length>0&&(s.allowCredentials=t.map(l=>({id:R(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 L("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 L("No passkey found. Please register first or restore from a backup."):l}let o=await r.getCredentialById(i.id);if(!o)throw new gt(i.id);if(!await Uh(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 r instanceof K?r:new L(r instanceof Error?r.message:"Authentication failed",r)}}async function Uh(r,e,t){try{if(!await sn(r,e.publicKey))return!1;let n=new DataView(r.response.authenticatorData).getUint32(33,!1);if(n>0||e.signCount&&e.signCount>0){let s=e.signCount||0;if(n<=s)return console.error(`Authenticator cloning detected! Counter did not increase: stored=${s}, received=${n}`),!1}return await t.updateSignatureCounter(e.id,n),!0}catch(n){return console.error("Signature verification error:",n),!1}}async function sn(r,e){try{let t=r.response.authenticatorData,n=new Uint8Array(t),s=n.slice(0,32),i=new Uint8Array(await crypto.subtle.digest("SHA-256",new TextEncoder().encode(window.location.hostname)));if(!Nh(s,i))return console.error("RP ID hash mismatch - possible phishing attack"),!1;let o=await crypto.subtle.importKey("spki",R(e),{name:"ECDSA",namedCurve:"P-256"},!1,["verify"]),a=await crypto.subtle.digest("SHA-256",r.response.clientDataJSON),c=new Uint8Array(t.byteLength+a.byteLength);c.set(n,0),c.set(new Uint8Array(a),t.byteLength);let l=Lh(new Uint8Array(r.response.signature));return await crypto.subtle.verify({name:"ECDSA",hash:"SHA-256"},o,l,c)}catch(t){return console.error("Signature verification error:",t),!1}}function Nh(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 Lh(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}var Us=p(()=>{"use strict";z();Ue();oe();te()});var xt={};x(xt,{createWalletFromMnemonic:()=>la,deriveWalletFromMnemonic:()=>un,generateBIP39Wallet:()=>ln});import{ethers as cn}from"ethers";function ln(){try{let r=cn.Wallet.createRandom().mnemonic;if(!r)throw new Error("Failed to generate mnemonic");let e=r.phrase;return{address:cn.HDNodeWallet.fromPhrase(e,void 0,"m/44'/60'/0'/0/0").address,mnemonic:e}}catch(r){throw new g("Wallet generation failed",r)}}function la(r){try{if(!r||r.trim().split(/\s+/).length<12)throw new Error("Invalid mnemonic: must be at least 12 words");return cn.HDNodeWallet.fromPhrase(r.trim(),void 0,"m/44'/60'/0'/0/0")}catch(e){throw new g(`Wallet creation failed: ${e instanceof Error?e.message:"Invalid mnemonic"}`,e)}}function un(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=cn.HDNodeWallet.fromPhrase(r.trim(),void 0,t);return{address:n.address,privateKey:n.privateKey}}catch(t){throw new g(`HD wallet derivation failed: ${t instanceof Error?t.message:"Unknown error"}`,t)}}var Ie=p(()=>{"use strict";z()});var dn={};x(dn,{DEFAULT_MODE:()=>xe,DEFAULT_TAG:()=>re,deriveAddressFromP256PublicKey:()=>ua,deriveIndexFromOriginModeAndTag:()=>Ns,getCurrentOrigin:()=>fe,getOriginSpecificAddress:()=>ve,normalizeOrigin:()=>vt});import{keccak256 as _h}from"ethers";function vt(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 g(`Invalid origin URL: ${r}`,e)}}async function Ns(r,e=xe,t=re){try{let s=`${vt(r)}:${e}:${t.toUpperCase()}`,o=new TextEncoder().encode(s),a=await crypto.subtle.digest("SHA-256",o);return new DataView(a).getUint32(0,!1)%Kh}catch(n){throw new g(`Failed to derive index from origin "${r}", mode "${e}", and tag "${t}"`,n)}}async function ve(r,e,t,n){try{let s=t||xe,i=(n||re).toUpperCase(),o=vt(e),a=await Ns(o,s,i),{address:c,privateKey:l}=un(r,a),u={address:c,index:a,origin:o,mode:s,tag:i};return s==="YOLO"&&(u.privateKey=l),u}catch(s){throw new g(`Failed to derive origin-specific address for "${e}" with mode "${t||xe}" and tag "${n||re}"`,s)}}function fe(){if(typeof window>"u"||!window.location)throw new g("getCurrentOrigin() only works in browser environments");return window.location.origin}async function ua(r){try{let e=R(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=R(n.x),i=R(n.y),o=new Uint8Array(64);return o.set(new Uint8Array(s),0),o.set(new Uint8Array(i),32),"0x"+_h(o).slice(-40)}catch(e){throw new g("Failed to derive address from P-256 public key",e)}}var xe,re,Kh,kt=p(()=>{"use strict";Ie();z();oe();xe="STANDARD",re="MAIN",Kh=2147483647});var zs={};x(zs,{derivePrfSecret:()=>Os,evaluatePrf:()=>ya});async function ya(r,e){let t;try{let i={challenge:R(Ae()),rpId:window.location.hostname,userVerification:"required",timeout:6e4,extensions:{prf:{eval:{first:r}}}};e&&(i.allowCredentials=[{id:R(e),type:"public-key",transports:["internal","hybrid","usb","nfc","ble"]}]);let o=await navigator.credentials.get({publicKey:i});if(!o)throw new L("Authentication failed - no credential returned");t=o}catch(i){throw i instanceof L?i:i?.name==="NotAllowedError"?new L("Authentication was cancelled or the passkey is not available on this device.",i):new L(`Passkey authentication failed: ${i instanceof Error?i.message:"Unknown error"}`,i)}let n=t.getClientExtensionResults?.().prf?.results?.first;if(!n)throw new Qe(t.id);let s=ArrayBuffer.isView(n)?new Uint8Array(n.buffer,n.byteOffset,n.byteLength).slice().buffer:n.slice(0);if(s.byteLength!==32)throw new Qe(t.id);return{output:s,credentialId:t.id,assertion:t}}function Hh(r,e){if(typeof e!="string"||e.length===0||e.includes(":"))throw new B("PRF secret tag must be a non-empty string without ':'");return new TextEncoder().encode(`${Wh}:${r}:${e}`)}async function Os(r,e,t){let n=Hh(r,e),s=await crypto.subtle.digest("SHA-256",n),i=await ya(s,t);try{let o=await crypto.subtle.importKey("raw",i.output,"HKDF",!1,["deriveBits"]),a=await crypto.subtle.deriveBits({name:"HKDF",hash:"SHA-256",salt:$h,info:n},o,256);return{secret:new Uint8Array(a),credentialId:i.credentialId}}catch(o){throw new B("Failed to derive secret from PRF output",o)}finally{new Uint8Array(i.output).fill(0)}}var Wh,$h,gn=p(()=>{"use strict";z();oe();te();Wh="w3pk-prf-v1",$h=new TextEncoder().encode("w3pk-prf-secret-v1")});function qh(r,e=0){return/iPhone|iPad|iPod/.test(r)||/Macintosh/.test(r)&&e>1?!0:/AppleWebKit/.test(r)&&!/Chrome|Chromium|Android/.test(r)}function Vh(){return navigator.standalone===!0?!0:typeof globalThis.matchMedia=="function"&&globalThis.matchMedia("(display-mode: standalone)").matches}async function wn(){if(typeof navigator>"u"||!qh(navigator.userAgent??"",navigator.maxTouchPoints??0)||Vh())return!1;try{return!await navigator.storage?.persisted?.()}catch{return!0}}var Ws=p(()=>{"use strict"});var Vs={};x(Vs,{encodeEIP7702AuthorizationMessage:()=>Sn,hashEIP7702AuthorizationMessage:()=>An,verifyEIP7702Authorization:()=>qs});import{encodeRlp as Zh,concat as ef,keccak256 as tf,toBeHex as wa,recoverAddress as rf,Signature as nf}from"ethers";function Sn(r,e,t){let n=[r===0n?"0x":wa(r),e.toLowerCase(),t===0n?"0x":wa(t)],s=Zh(n);return ef(["0x05",s])}function An(r,e,t){let n=Sn(r,e,t);return tf(n)}function qs(r,e,t,n,s){try{let i=An(r,e,t),o;return typeof n=="string"?o=nf.from(n):o=n,rf(i,o).toLowerCase()===s.toLowerCase()}catch{return!1}}var xn=p(()=>{"use strict"});var ba={};x(ba,{detectWalletProvider:()=>js,getDefaultProvider:()=>Ys,requestExternalWalletAuthorization:()=>Gs,supportsEIP7702Authorization:()=>Js});async function Gs(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(()=>(xn(),Vs)),{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 Ys(){if(typeof window>"u")return null;let r=window;return r.ethereum?r.ethereum:r.web3?.currentProvider?r.web3.currentProvider:null}function js(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 Js(r){try{let e=await r.request({method:"eth_accounts"});return Array.isArray(e)}catch{return!1}}var Qs=p(()=>{"use strict"});var xa={};x(xa,{BackupStorage:()=>Xe});var Aa,Xe,vn=p(()=>{"use strict";Aa="w3pk_backups",Xe=class{constructor(e){this.customStorage=e}get storage(){return this.customStorage?this.customStorage:typeof window<"u"&&window.localStorage?window.localStorage:null}async init(){}async storeBackupMetadata(e){let t=this.readAll().filter(n=>n.id!==e.id);t.push(e),this.writeAll(t)}async getBackupsByAddress(e){return this.readAll().filter(t=>t.ethereumAddress===e)}async getBackupById(e){return this.readAll().find(t=>t.id===e)??null}async deleteBackup(e){this.writeAll(this.readAll().filter(t=>t.id!==e))}async getBackupCountByMethod(e){return this.readAll().filter(t=>t.method===e).length}readAll(){let e=this.storage?.getItem(Aa);return e?JSON.parse(e):[]}writeAll(e){this.storage?.setItem(Aa,JSON.stringify(e))}}});var Zs={};x(Zs,{decryptWithPassword:()=>hr,deriveAddressChecksum:()=>H,deriveKeyFromPassword:()=>kn,encryptWithPassword:()=>Ze,getDeviceFingerprint:()=>ke,validatePasswordStrength:()=>va});async function kn(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 Ze(r,e,t){let s=await kn(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:dr(c),iv:dr(a),salt:dr(t),iterations:31e4}}async function hr(r,e,t,n,s=31e4){let i=Xs(t),o=await kn(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 ke(){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 dr(s)}async function H(r){let t=new TextEncoder().encode(r.toLowerCase()),n=await crypto.subtle.digest("SHA-256",t);return dr(n).substring(0,16)}function va(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 dr(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=bt(r),t=new Uint8Array(e.length);for(let n=0;n<e.length;n++)t[n]=e.charCodeAt(n);return t}var Ne=p(()=>{"use strict";oe()});var Ea=E((rw,ka)=>{"use strict";ka.exports=function(){return typeof Promise=="function"&&Promise.prototype&&Promise.prototype.then}});var Le=E(et=>{"use strict";var ei,af=[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];et.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};et.getSymbolTotalCodewords=function(e){return af[e]};et.getBCHDigit=function(r){let e=0;for(;r!==0;)e++,r>>>=1;return e};et.setToSJISFunction=function(e){if(typeof e!="function")throw new Error('"toSJISFunc" is not a valid function.');ei=e};et.isKanjiModeEnabled=function(){return typeof ei<"u"};et.toSJIS=function(e){return ei(e)}});var En=E(ce=>{"use strict";ce.L={bit:1};ce.M={bit:0};ce.Q={bit:3};ce.H={bit:2};function cf(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 cf(e)}catch{return t}}});var Ia=E((iw,Pa)=>{"use strict";function Ca(){this.buffer=[],this.length=0}Ca.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++}};Pa.exports=Ca});var Ta=E((ow,Ba)=>{"use strict";function fr(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)}fr.prototype.set=function(r,e,t,n){let s=r*this.size+e;this.data[s]=t,n&&(this.reservedBit[s]=!0)};fr.prototype.get=function(r,e){return this.data[r*this.size+e]};fr.prototype.xor=function(r,e,t){this.data[r*this.size+e]^=t};fr.prototype.isReserved=function(r,e){return this.reservedBit[r*this.size+e]};Ba.exports=fr});var Ra=E(Cn=>{"use strict";var lf=Le().getSymbolSize;Cn.getRowColCoords=function(e){if(e===1)return[];let t=Math.floor(e/7)+2,n=lf(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()};Cn.getPositions=function(e){let t=[],n=Cn.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 Ma=E(Fa=>{"use strict";var uf=Le().getSymbolSize,Da=7;Fa.getPositions=function(e){let t=uf(e);return[[0,0],[t-Da,0],[0,t-Da]]}});var Ua=E(M=>{"use strict";M.Patterns={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7};var tt={N1:3,N2:3,N3:40,N4:10};M.isValid=function(e){return e!=null&&e!==""&&!isNaN(e)&&e>=0&&e<=7};M.from=function(e){return M.isValid(e)?parseInt(e,10):void 0};M.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+=tt.N1+(s-5)),o=u,s=1),u=e.get(l,c),u===a?i++:(i>=5&&(n+=tt.N1+(i-5)),a=u,i=1)}s>=5&&(n+=tt.N1+(s-5)),i>=5&&(n+=tt.N1+(i-5))}return n};M.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*tt.N2};M.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*tt.N3};M.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)*tt.N4};function df(r,e,t){switch(r){case M.Patterns.PATTERN000:return(e+t)%2===0;case M.Patterns.PATTERN001:return e%2===0;case M.Patterns.PATTERN010:return t%3===0;case M.Patterns.PATTERN011:return(e+t)%3===0;case M.Patterns.PATTERN100:return(Math.floor(e/2)+Math.floor(t/3))%2===0;case M.Patterns.PATTERN101:return e*t%2+e*t%3===0;case M.Patterns.PATTERN110:return(e*t%2+e*t%3)%2===0;case M.Patterns.PATTERN111:return(e*t%3+(e+t)%2)%2===0;default:throw new Error("bad maskPattern:"+r)}}M.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,df(e,i,s))};M.getBestMask=function(e,t){let n=Object.keys(M.Patterns).length,s=0,i=1/0;for(let o=0;o<n;o++){t(o),M.applyMask(o,e);let a=M.getPenaltyN1(e)+M.getPenaltyN2(e)+M.getPenaltyN3(e)+M.getPenaltyN4(e);M.applyMask(o,e),a<i&&(i=a,s=o)}return s}});var ri=E(ti=>{"use strict";var _e=En(),Pn=[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],In=[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 _e.L:return Pn[(e-1)*4+0];case _e.M:return Pn[(e-1)*4+1];case _e.Q:return Pn[(e-1)*4+2];case _e.H:return Pn[(e-1)*4+3];default:return}};ti.getTotalCodewordsCount=function(e,t){switch(t){case _e.L:return In[(e-1)*4+0];case _e.M:return In[(e-1)*4+1];case _e.Q:return In[(e-1)*4+2];case _e.H:return In[(e-1)*4+3];default:return}}});var Na=E(Tn=>{"use strict";var pr=new Uint8Array(512),Bn=new Uint8Array(256);(function(){let e=1;for(let t=0;t<255;t++)pr[t]=e,Bn[e]=t,e<<=1,e&256&&(e^=285);for(let t=255;t<512;t++)pr[t]=pr[t-255]})();Tn.log=function(e){if(e<1)throw new Error("log("+e+")");return Bn[e]};Tn.exp=function(e){return pr[e]};Tn.mul=function(e,t){return e===0||t===0?0:pr[Bn[e]+Bn[t]]}});var La=E(mr=>{"use strict";var ni=Na();mr.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};mr.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};mr.generateECPolynomial=function(e){let t=new Uint8Array([1]);for(let n=0;n<e;n++)t=mr.mul(t,new Uint8Array([1,ni.exp(n)]));return t}});var Oa=E((fw,Ka)=>{"use strict";var _a=La();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};Ka.exports=si});var ii=E(za=>{"use strict";za.isValid=function(e){return!isNaN(e)&&e>=1&&e<=40}});var oi=E(Be=>{"use strict";var Wa="[0-9]+",hf="[A-Z $%*+\\-./:]+",yr="(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+";yr=yr.replace(/u/g,"\\u");var ff="(?:(?![A-Z0-9 $%*+\\-./:]|"+yr+`)(?:.|[\r
|
|
2
|
+
]))+`;Be.KANJI=new RegExp(yr,"g");Be.BYTE_KANJI=new RegExp("[^A-Z0-9 $%*+\\-./:]+","g");Be.BYTE=new RegExp(ff,"g");Be.NUMERIC=new RegExp(Wa,"g");Be.ALPHANUMERIC=new RegExp(hf,"g");var pf=new RegExp("^"+yr+"$"),mf=new RegExp("^"+Wa+"$"),yf=new RegExp("^[A-Z0-9 $%*+\\-./:]+$");Be.testKanji=function(e){return pf.test(e)};Be.testNumeric=function(e){return mf.test(e)};Be.testAlphanumeric=function(e){return yf.test(e)}});var Ke=E(O=>{"use strict";var gf=ii(),ai=oi();O.NUMERIC={id:"Numeric",bit:1,ccBits:[10,12,14]};O.ALPHANUMERIC={id:"Alphanumeric",bit:2,ccBits:[9,11,13]};O.BYTE={id:"Byte",bit:4,ccBits:[8,16,16]};O.KANJI={id:"Kanji",bit:8,ccBits:[8,10,12]};O.MIXED={bit:-1};O.getCharCountIndicator=function(e,t){if(!e.ccBits)throw new Error("Invalid mode: "+e);if(!gf.isValid(t))throw new Error("Invalid version: "+t);return t>=1&&t<10?e.ccBits[0]:t<27?e.ccBits[1]:e.ccBits[2]};O.getBestModeForData=function(e){return ai.testNumeric(e)?O.NUMERIC:ai.testAlphanumeric(e)?O.ALPHANUMERIC:ai.testKanji(e)?O.KANJI:O.BYTE};O.toString=function(e){if(e&&e.id)return e.id;throw new Error("Invalid mode")};O.isValid=function(e){return e&&e.bit&&e.ccBits};function wf(r){if(typeof r!="string")throw new Error("Param is not a string");switch(r.toLowerCase()){case"numeric":return O.NUMERIC;case"alphanumeric":return O.ALPHANUMERIC;case"kanji":return O.KANJI;case"byte":return O.BYTE;default:throw new Error("Unknown mode: "+r)}}O.from=function(e,t){if(O.isValid(e))return e;try{return wf(e)}catch{return t}}});var Ga=E(rt=>{"use strict";var Rn=Le(),bf=ri(),$a=En(),Oe=Ke(),ci=ii(),qa=7973,Ha=Rn.getBCHDigit(qa);function Sf(r,e,t){for(let n=1;n<=40;n++)if(e<=rt.getCapacity(n,t,r))return n}function Va(r,e){return Oe.getCharCountIndicator(r,e)+4}function Af(r,e){let t=0;return r.forEach(function(n){let s=Va(n.mode,e);t+=s+n.getBitsLength()}),t}function xf(r,e){for(let t=1;t<=40;t++)if(Af(r,t)<=rt.getCapacity(t,e,Oe.MIXED))return t}rt.from=function(e,t){return ci.isValid(e)?parseInt(e,10):t};rt.getCapacity=function(e,t,n){if(!ci.isValid(e))throw new Error("Invalid QR Code version");typeof n>"u"&&(n=Oe.BYTE);let s=Rn.getSymbolTotalCodewords(e),i=bf.getTotalCodewordsCount(e,t),o=(s-i)*8;if(n===Oe.MIXED)return o;let a=o-Va(n,e);switch(n){case Oe.NUMERIC:return Math.floor(a/10*3);case Oe.ALPHANUMERIC:return Math.floor(a/11*2);case Oe.KANJI:return Math.floor(a/13);case Oe.BYTE:default:return Math.floor(a/8)}};rt.getBestVersionForData=function(e,t){let n,s=$a.from(t,$a.M);if(Array.isArray(e)){if(e.length>1)return xf(e,s);if(e.length===0)return 1;n=e[0]}else n=e;return Sf(n.mode,n.getLength(),s)};rt.getEncodedBits=function(e){if(!ci.isValid(e)||e<7)throw new Error("Invalid QR Code version");let t=e<<12;for(;Rn.getBCHDigit(t)-Ha>=0;)t^=qa<<Rn.getBCHDigit(t)-Ha;return e<<12|t}});var Qa=E(Ja=>{"use strict";var li=Le(),ja=1335,vf=21522,Ya=li.getBCHDigit(ja);Ja.getEncodedBits=function(e,t){let n=e.bit<<3|t,s=n<<10;for(;li.getBCHDigit(s)-Ya>=0;)s^=ja<<li.getBCHDigit(s)-Ya;return(n<<10|s)^vf}});var Za=E((bw,Xa)=>{"use strict";var kf=Ke();function Et(r){this.mode=kf.NUMERIC,this.data=r.toString()}Et.getBitsLength=function(e){return 10*Math.floor(e/3)+(e%3?e%3*3+1:0)};Et.prototype.getLength=function(){return this.data.length};Et.prototype.getBitsLength=function(){return Et.getBitsLength(this.data.length)};Et.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))};Xa.exports=Et});var tc=E((Sw,ec)=>{"use strict";var Ef=Ke(),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 Ct(r){this.mode=Ef.ALPHANUMERIC,this.data=r}Ct.getBitsLength=function(e){return 11*Math.floor(e/2)+6*(e%2)};Ct.prototype.getLength=function(){return this.data.length};Ct.prototype.getBitsLength=function(){return Ct.getBitsLength(this.data.length)};Ct.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)};ec.exports=Ct});var nc=E((Aw,rc)=>{"use strict";var Cf=Ke();function Pt(r){this.mode=Cf.BYTE,typeof r=="string"?this.data=new TextEncoder().encode(r):this.data=new Uint8Array(r)}Pt.getBitsLength=function(e){return e*8};Pt.prototype.getLength=function(){return this.data.length};Pt.prototype.getBitsLength=function(){return Pt.getBitsLength(this.data.length)};Pt.prototype.write=function(r){for(let e=0,t=this.data.length;e<t;e++)r.put(this.data[e],8)};rc.exports=Pt});var ic=E((xw,sc)=>{"use strict";var Pf=Ke(),If=Le();function It(r){this.mode=Pf.KANJI,this.data=r}It.getBitsLength=function(e){return e*13};It.prototype.getLength=function(){return this.data.length};It.prototype.getBitsLength=function(){return It.getBitsLength(this.data.length)};It.prototype.write=function(r){let e;for(e=0;e<this.data.length;e++){let t=If.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)}};sc.exports=It});var oc=E((vw,di)=>{"use strict";var gr={single_source_shortest_paths:function(r,e,t){var n={},s={};s[e]=0;var i=gr.PriorityQueue.make();i.push(e,0);for(var o,a,c,l,u,d,h,m,y;!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],y=typeof s[c]>"u",(y||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=gr.single_source_shortest_paths(r,e,t);return gr.extract_shortest_path_from_predecessor_list(n,t)},PriorityQueue:{make:function(r){var e=gr.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=gr)});var pc=E(Bt=>{"use strict";var P=Ke(),lc=Za(),uc=tc(),dc=nc(),hc=ic(),wr=oi(),Dn=Le(),Bf=oc();function ac(r){return unescape(encodeURIComponent(r)).length}function br(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 fc(r){let e=br(wr.NUMERIC,P.NUMERIC,r),t=br(wr.ALPHANUMERIC,P.ALPHANUMERIC,r),n,s;return Dn.isKanjiModeEnabled()?(n=br(wr.BYTE,P.BYTE,r),s=br(wr.KANJI,P.KANJI,r)):(n=br(wr.BYTE_KANJI,P.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 P.NUMERIC:return lc.getBitsLength(r);case P.ALPHANUMERIC:return uc.getBitsLength(r);case P.KANJI:return hc.getBitsLength(r);case P.BYTE:return dc.getBitsLength(r)}}function Tf(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 Rf(r){let e=[];for(let t=0;t<r.length;t++){let n=r[t];switch(n.mode){case P.NUMERIC:e.push([n,{data:n.data,mode:P.ALPHANUMERIC,length:n.length},{data:n.data,mode:P.BYTE,length:n.length}]);break;case P.ALPHANUMERIC:e.push([n,{data:n.data,mode:P.BYTE,length:n.length}]);break;case P.KANJI:e.push([n,{data:n.data,mode:P.BYTE,length:ac(n.data)}]);break;case P.BYTE:e.push([{data:n.data,mode:P.BYTE,length:ac(n.data)}])}}return e}function Df(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+P.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 cc(r,e){let t,n=P.getBestModeForData(r);if(t=P.from(e,n),t!==P.BYTE&&t.bit<n.bit)throw new Error('"'+r+'" cannot be encoded with mode '+P.toString(t)+`.
|
|
4
|
+
Suggested mode is: `+P.toString(n));switch(t===P.KANJI&&!Dn.isKanjiModeEnabled()&&(t=P.BYTE),t){case P.NUMERIC:return new lc(r);case P.ALPHANUMERIC:return new uc(r);case P.KANJI:return new hc(r);case P.BYTE:return new dc(r)}}Bt.fromArray=function(e){return e.reduce(function(t,n){return typeof n=="string"?t.push(cc(n,null)):n.data&&t.push(cc(n.data,n.mode)),t},[])};Bt.fromString=function(e,t){let n=fc(e,Dn.isKanjiModeEnabled()),s=Rf(n),i=Df(s,t),o=Bf.find_path(i.map,"start","end"),a=[];for(let c=1;c<o.length-1;c++)a.push(i.table[o[c]].node);return Bt.fromArray(Tf(a))};Bt.rawSplit=function(e){return Bt.fromArray(fc(e,Dn.isKanjiModeEnabled()))}});var yc=E(mc=>{"use strict";var Mn=Le(),fi=En(),Ff=Ia(),Mf=Ta(),Uf=Ra(),Nf=Ma(),yi=Ua(),gi=ri(),Lf=Oa(),Fn=Ga(),_f=Qa(),Kf=Ke(),pi=pc();function Of(r,e){let t=r.size,n=Nf.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 zf(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 Wf(r,e){let t=Uf.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 $f(r,e){let t=r.size,n=Fn.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=_f.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 Hf(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 qf(r,e,t){let n=new Ff;t.forEach(function(c){n.put(c.mode.bit,4),n.put(c.getLength(),Kf.getCharCountIndicator(c.mode,r)),c.write(n)});let s=Mn.getSymbolTotalCodewords(r),i=gi.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 Vf(n,r,e)}function Vf(r,e,t){let n=Mn.getSymbolTotalCodewords(e),s=gi.getTotalCodewordsCount(e,t),i=n-s,o=gi.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 Lf(h),y=0,w=new Array(o),b=new Array(o),S=0,A=new Uint8Array(r.buffer);for(let F=0;F<o;F++){let W=F<c?u:d;w[F]=A.slice(y,y+W),b[F]=m.encode(w[F]),y+=W,S=Math.max(S,W)}let v=new Uint8Array(n),I=0,k,U;for(k=0;k<S;k++)for(U=0;U<o;U++)k<w[U].length&&(v[I++]=w[U][k]);for(k=0;k<h;k++)for(U=0;U<o;U++)v[I++]=b[U][k];return v}function Gf(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=Fn.getBestVersionForData(u,t)}s=pi.fromString(r,l||40)}else throw new Error("Invalid data");let i=Fn.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=qf(e,t,s),a=Mn.getSymbolSize(e),c=new Mf(a);return Of(c,e),zf(c),Wf(c,e),mi(c,t,0),e>=7&&$f(c,e),Hf(c,o),isNaN(n)&&(n=yi.getBestMask(c,mi.bind(null,c,t))),yi.applyMask(n,c),mi(c,t,n),{modules:c,version:e,errorCorrectionLevel:t,maskPattern:n,segments:s}}mc.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=Fn.from(t.version),i=yi.from(t.maskPattern),t.toSJISFunc&&Mn.setToSJISFunction(t.toSJISFunc)),Gf(e,s,n,i)}});var wi=E(nt=>{"use strict";function gc(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("")}}nt.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:gc(e.color.dark||"#000000ff"),light:gc(e.color.light||"#ffffffff")},type:e.type,rendererOpts:e.rendererOpts||{}}};nt.getScale=function(e,t){return t.width&&t.width>=e+t.margin*2?t.width/(e+t.margin*2):t.scale};nt.getImageWidth=function(e,t){let n=nt.getScale(e,t);return Math.floor((e+t.margin*2)*n)};nt.qrToImageData=function(e,t,n){let s=t.modules.size,i=t.modules.data,o=nt.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 y=Math.floor((u-c)/o),w=Math.floor((d-c)/o);m=l[i[y*s+w]?1:0]}e[h++]=m.r,e[h++]=m.g,e[h++]=m.b,e[h]=m.a}}});var wc=E(Un=>{"use strict";var bi=wi();function Yf(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 jf(){try{return document.createElement("canvas")}catch{throw new Error("You need to specify a canvas element")}}Un.render=function(e,t,n){let s=n,i=t;typeof s>"u"&&(!t||!t.getContext)&&(s=t,t=void 0),t||(i=jf()),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),Yf(a,i,o),a.putImageData(c,0,0),i};Un.renderToDataURL=function(e,t,n){let s=n;typeof s>"u"&&(!t||!t.getContext)&&(s=t,t=void 0),s||(s={});let i=Un.render(e,t,s),o=s.type||"image/png",a=s.rendererOpts||{};return i.toDataURL(o,a.quality)}});var Ac=E(Sc=>{"use strict";var Jf=wi();function bc(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 Qf(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}Sc.render=function(e,t,n){let s=Jf.getOptions(t),i=e.modules.size,o=e.modules.data,a=i+s.margin*2,c=s.color.light.a?"<path "+bc(s.color.light,"fill")+' d="M0 0h'+a+"v"+a+'H0z"/>':"",l="<path "+bc(s.color.dark,"stroke")+' d="'+Qf(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 Ar=E(Sr=>{"use strict";var Xf=Ea(),Ai=yc(),xc=wc(),Zf=Ac();function xi(r,e,t,n,s){let i=[].slice.call(arguments,1),o=i.length,a=typeof i[o-1]=="function";if(!a&&!Xf())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)}}Sr.create=Ai.create;Sr.toCanvas=xi.bind(null,xc.render);Sr.toDataURL=xi.bind(null,xc.renderToDataURL);Sr.toString=xi.bind(null,function(r,e,t){return Zf.render(r,t)})});var Tt,vi=p(()=>{"use strict";Ne();Tt=class{async createQRBackup(e,t,n={}){let s=n.errorCorrection||"H",i;if(n.password){let l=crypto.getRandomValues(new Uint8Array(32)),u=await Ze(e,n.password,l);i={version:1,type:"encrypted",data:u.encrypted,iv:u.iv,salt:u.salt,iterations:u.iterations,checksum:await H(t)}}else i={version:1,type:"plain",data:e,checksum:await H(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(()=>sr(Ar()))).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(()=>(
|
|
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(()=>(Ne(),Zs));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 H(o.address)!==n.checksum)throw new Error("Address checksum mismatch - corrupted QR or wrong password");return{mnemonic:s,ethereumAddress:o.address}}}});function ep(){let r=new Uint8Array(1);return crypto.getRandomValues(r),r[0]}function Ln(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(ep());for(let a=0;a<t;a++){let c=a+1,l=Nn.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]=Nn.interpolate(a)}return i}function Kn(r){return new TextEncoder().encode(r)}function On(r){return new TextDecoder().decode(r)}function zn(r){return Array.from(r).map(e=>e.toString(16).padStart(2,"0")).join("")}function Wn(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 ze,Nn,$n=p(()=>{"use strict";ze=class ze{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}};ze.LOG_TABLE=[],ze.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++)ze.EXP_TABLE[n]=t,ze.LOG_TABLE[t]=n,t=e(t,3);ze.EXP_TABLE[255]=ze.EXP_TABLE[0]})();Nn=ze});var vc,Rt,ki=p(()=>{"use strict";$n();vc=new Map,Rt=class{constructor(){this.storageKey="w3pk_social_recovery"}getItem(e){return typeof localStorage<"u"?localStorage.getItem(e):vc.get(e)||null}setItem(e,t){typeof localStorage<"u"?localStorage.setItem(e,t):vc.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=Kn(e),o=Ln(i,s,n.length),a=n.map((l,u)=>({id:crypto.randomUUID(),name:l.name,email:l.email,phone:l.phone,shareEncrypted:zn(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(()=>sr(Ar()))).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=>Wn(u.share)),a=_n(o,n),c=On(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 Hn,kc=p(()=>{"use strict";vn();vi();ki();Ws();Hn=class{constructor(){this.verificationStorageKey="w3pk_backup_verifications";this.storage=new Xe,this.qrCreator=new Tt,this.socialRecoveryManager=new Rt}async getBackupStatus(e){let t=await this.storage.getBackupsByAddress(e),n=await this.detectPasskeySync(),s=[...new Set(t.map(u=>u.method))],i=t.map(u=>u.createdAt).sort().pop(),o=t.filter(u=>u.method!=="phrase").map(u=>({id:u.id,method:u.method,location:"local",createdAt:u.createdAt,deviceFingerprint:u.deviceFingerprint})),a=this.getSocialRecoveryStatus(),c=this.getVerificationStatus(e);return{hasBackup:s.length>0,evictionRisk:await wn(),lastBackupAt:i,methods:s,passkeySync:n,recoveryPhrase:{verified:c.verified,verificationCount:c.count,encryptedBackups:o},socialRecovery:a,securityScore:this.calculateSecurityScore(n,o,a,c,s)}}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}}}async hasBackup(e){return(await this.storage.getBackupsByAddress(e)).length>0}async confirmRecoveryPhraseBackup(e,t){await this.storage.storeBackupMetadata({id:crypto.randomUUID(),ethereumAddress:e,method:"phrase",createdAt:new Date().toISOString(),addressChecksum:t})}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,i=[]){let o=0;n?.enabled&&(o=20,n.verifiedGuardians>=n.threshold&&(o+=10));let a=0;s?.verified&&(a=10,a+=Math.min(s.count-1,10));let c={passkeyActive:e.enabled?20:0,passkeyMultiDevice:e.deviceCount>1?10:0,phraseVerified:a,encryptedBackup:t.length>0?20:0,socialRecovery:o},l=Object.values(c).reduce((m,y)=>m+y,0),u=i.length>0?l:Math.min(l,20),d,h;return i.length===0?(d="vulnerable",h="Create a backup file or confirm your recovery phrase: browser storage can be wiped"):u<=20?(d="vulnerable",h='Create encrypted backup to reach "protected" (40+ pts)'):u<=50?(d="protected",h='Set up social recovery to reach "secured" (70+ pts)'):u<=80?(d="secured",h='Enable all methods to reach "fort-knox" (100 pts)'):(d="fort-knox",h="Maximum security achieved!"),{total:u,breakdown:c,level:d,nextMilestone:h}}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 pe={};x(pe,{BackupFileManager:()=>xr,generatePrfSalt:()=>tp,prfSyncInput:()=>rp});function tp(){return ie(crypto.getRandomValues(new Uint8Array(32)).buffer)}async function rp(r){let e=new Uint8Array(R(r));return crypto.subtle.digest("SHA-256",new Uint8Array([...Cc,...e]))}async function Ec(r,e){try{let t=await crypto.subtle.importKey("raw",r,"HKDF",!1,["deriveKey"]);return await crypto.subtle.deriveKey({name:"HKDF",hash:"SHA-256",salt:R(e),info:Cc},t,{name:"AES-GCM",length:256},!1,["encrypt","decrypt"])}catch(t){throw new B("Failed to derive backup key from PRF output",t)}}var Cc,xr,le=p(()=>{"use strict";Ne();te();z();oe();Cc=new TextEncoder().encode("w3pk-prf-sync-v1");xr=class{async createPasswordBackup(e,t,n,s){if(!n||n.length<1)throw new Error("Password is required for password-based backup");let i=crypto.getRandomValues(new Uint8Array(32)),o=await Ze(e,n,i),a=await H(t),c={createdAt:new Date().toISOString(),ethereumAddress:t,encryptedMnemonic:o.encrypted,encryptionMethod:"password",passwordEncryption:{salt:o.salt,iv:o.iv,iterations:o.iterations},...s&&{credential:{id:s.id,publicKey:s.publicKey}},addressChecksum:a},l=JSON.stringify(c,null,2),u=new Blob([l],{type:"application/json"});return{backupFile:c,json:l,blob:u}}async createPasskeyBackup(e,t,n,s){let i=await ae(n,s),o=await Y(e,i),a=await H(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},y=JSON.stringify(m,null,2),w=new Blob([y],{type:"application/json"});return{backupFile:m,json:y,blob:w}}async createHybridBackup(e,t,n,s,i){let o=await ae(s,i),a=await Y(e,o),c=crypto.getRandomValues(new Uint8Array(32)),l=await Ze(a,n,c),u=await H(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 createPrfBackup(e,t,n,s,i,o){let a=await Ec(o,i),c=await Y(e,a),l=await H(t),u={createdAt:new Date().toISOString(),ethereumAddress:t,encryptedMnemonic:c,encryptionMethod:"prf",credential:{id:n.id,publicKey:n.publicKey},prfSalt:i,username:s,addressChecksum:l},d=JSON.stringify(u,null,2),h=new Blob([d],{type:"application/json"});return{backupFile:u,json:d,blob:h}}async restoreWithPrf(e,t){if(e.encryptionMethod!=="prf"||!e.prfSalt)throw new Error("This backup is not a PRF backup.");let n=await Ec(t,e.prfSalt),s=await j(e.encryptedMnemonic,n),{Wallet:i}=await import("ethers"),o=i.fromPhrase(s);if(await H(o.address)!==e.addressChecksum||o.address.toLowerCase()!==e.ethereumAddress.toLowerCase())throw new Error("Address checksum mismatch - corrupted backup or decryption failure");return{mnemonic:s,ethereumAddress:o.address}}async restoreWithExistingPasskey(e,t,n){if(e.encryptionMethod==="password")throw new Error("This backup is password-protected. Use restoreWithPassword() instead.");if(e.encryptionMethod==="prf")throw new Error("This backup is PRF-encrypted. Use restoreWithPrf() 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 ae(t,n);s=await j(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 H(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 hr(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 H(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 hr(e.encryptedMnemonic,t,e.passwordEncryption.salt,e.passwordEncryption.iv,e.passwordEncryption.iterations),o=await ae(n,s),a=await j(i,o),{Wallet:c}=await import("ethers"),l=c.fromPhrase(a);if(await H(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");if(n.encryptionMethod==="prf"&&(!n.prfSalt||!n.credential?.id||!n.credential.publicKey))throw new Error("Invalid backup file: PRF backup without its salt or passkey");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 Pc=p(()=>{"use strict"});var Te={};x(Te,{BackupFileManager:()=>xr,BackupManager:()=>Hn,BackupStorage:()=>Xe,QRBackupCreator:()=>Tt,decryptWithPassword:()=>hr,deriveAddressChecksum:()=>H,deriveKeyFromPassword:()=>kn,encryptWithPassword:()=>Ze,getDeviceFingerprint:()=>ke,validatePasswordStrength:()=>va});var Re=p(()=>{"use strict";kc();vn();vi();le();Pc();Ne()});var Bc={};x(Bc,{extractRS:()=>Ic});function Ic(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 Ei=p(()=>{"use strict"});var qn={};x(qn,{SocialRecovery:()=>Ci});var Ci,Vn=p(()=>{"use strict";$n();Ci=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=Kn(s),o=Ln(i,n,t.length),a=t.map((c,l)=>({guardianId:crypto.randomUUID(),guardianName:c.name,shareData:zn(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=>Wn(l.shareData)),o=_n(i,t),a=On(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(()=>sr(Ar()))).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 Dc={};x(Dc,{authenticateWithPasskey:()=>Rc,promptPasskeySelection:()=>Tc});async function Tc(){try{let r=new D,e=Ae(),t=R(e),n=[];try{let u=await r.getAllCredentials();u.length>0&&(n=u.map(d=>({id:d.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(u=>({id:R(u.id),type:u.type,transports:u.transports})));let i=await navigator.credentials.get({publicKey:s});if(!i)throw new L("No passkey selected. Please select a passkey to continue with sync.");let o=i.id,a=i.response.userHandle,c=a?.byteLength?new TextDecoder().decode(a):void 0,l=await r.getCredentialById(o);return l?{credentialId:o,publicKey:l.publicKey,ethereumAddress:l.ethereumAddress,username:l.username,assertion:i}:{credentialId:o,publicKey:"",ethereumAddress:void 0,username:c,assertion:i}}catch(r){throw r?.name==="NotAllowedError"?new L("Passkey selection was cancelled. Please try again and select your passkey."):r instanceof L?r:new L(`Failed to select passkey: ${r instanceof Error?r.message:"Unknown error"}`,r)}}async function Rc(r){try{let e=Ae(),n={challenge:R(e),rpId:window.location.hostname,userVerification:"required",timeout:6e4,allowCredentials:[{id:R(r),type:"public-key",transports:["internal","hybrid","usb","nfc","ble"]}]},s=await navigator.credentials.get({publicKey:n});if(!s)throw new L("Authentication failed - no credential returned");return s}catch(e){throw e?.name==="NotAllowedError"?new L("Authentication was cancelled or the passkey is not available on this device."):new L(`Passkey authentication failed: ${e instanceof Error?e.message:"Unknown error"}`,e)}}var Pi=p(()=>{"use strict";z();Ue();oe();te()});var Gn={};x(Gn,{DeviceSyncManager:()=>vr});var vr,kr=p(()=>{"use strict";vr=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,i){let{BackupFileManager:o,generatePrfSalt:a,prfSyncInput:c}=await Promise.resolve().then(()=>(le(),pe)),{evaluatePrf:l}=await Promise.resolve().then(()=>(gn(),zs)),{PrfUnsupportedError:u}=await Promise.resolve().then(()=>(z(),Is)),d=new o,h=a(),m;try{({output:m}=await l(await c(h),n.id))}catch(y){if(y instanceof u&&i)return d.createPasswordBackup(e,t,i,n);throw y}try{return await d.createPrfBackup(e,t,n,s,h,m)}finally{new Uint8Array(m).fill(0)}}async importFromSync(e,t){let{BackupFileManager:n,prfSyncInput:s}=await Promise.resolve().then(()=>(le(),pe)),{evaluatePrf:i}=await Promise.resolve().then(()=>(gn(),zs)),{verifyAssertionSignature:o}=await Promise.resolve().then(()=>(Us(),ca)),{SyncBootstrapError:a}=await Promise.resolve().then(()=>(z(),Is)),c=new n;if(e.encryptionMethod!=="prf"||!e.prfSalt||!e.credential)throw new Error("This backup is not a PRF backup.");let l=e.credential.id,u=await i(await s(e.prfSalt),l),d;try{if(u.credentialId!==l)throw new a("CREDENTIAL_MISMATCH",u.credentialId);if(!await o(u.assertion,t))throw new a("PUBLIC_KEY_MISMATCH",l);d=await c.restoreWithPrf(e,u.output)}finally{new Uint8Array(u.output).fill(0)}return await this.updateSyncInfo(d.ethereumAddress),d}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(()=>sr(Ar())),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(),pe));return new t().parseBackupFile(e)}}});var Yn,Fc=p(()=>{"use strict";Ne();Yn=class{async createSyncPackage(e,t,n){let s=await ke(),{deriveEncryptionKeyFromWebAuthn:i,encryptData:o}=await Promise.resolve().then(()=>(te(),or)),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(()=>(te(),or)),o=await s(t,n),a=await i(e.encryptedData,o),c=await ke();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
|
|
|
@@ -236,7 +236,7 @@ Layer 1: Passkey (Auto-Syncs)
|
|
|
236
236
|
Layer 2: Encrypted Wallet (In Browser)
|
|
237
237
|
--------------------------------------
|
|
238
238
|
\u2713 Your 12-word mnemonic (encrypted)
|
|
239
|
-
\u2713 Stored in browser's
|
|
239
|
+
\u2713 Stored in browser's localStorage
|
|
240
240
|
\u2713 Can ONLY be decrypted with passkey
|
|
241
241
|
\u2713 Requires authentication to access
|
|
242
242
|
|
|
@@ -248,7 +248,7 @@ Device 1 (iPhone) iCloud Keychain Device 2 (Mac)
|
|
|
248
248
|
|-- Passkey Created -------->| |
|
|
249
249
|
| | |
|
|
250
250
|
|-- Wallet Encrypted --------| |
|
|
251
|
-
| (in
|
|
251
|
+
| (in localStorage) | |
|
|
252
252
|
| | |
|
|
253
253
|
| |<----- Login on Mac -----|
|
|
254
254
|
| | |
|
|
@@ -277,7 +277,7 @@ What Gets Synced:
|
|
|
277
277
|
What Stays Local:
|
|
278
278
|
----------------
|
|
279
279
|
|
|
280
|
-
\u2717 Encrypted mnemonic (in
|
|
280
|
+
\u2717 Encrypted mnemonic (in localStorage)
|
|
281
281
|
- Must authenticate to decrypt
|
|
282
282
|
- Requires passkey access
|
|
283
283
|
- Platform-specific storage
|
|
@@ -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 jn,Mc=p(()=>{"use strict";Ne();jn=class{constructor(){this.storageKey="w3pk_devices"}async registerDevice(){let e={id:await ke(),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 ke();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 ke();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 ke(),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 Jn,Uc=p(()=>{"use strict";Jn=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 Nc=p(()=>{"use strict"});var Lc={};x(Lc,{DeviceManager:()=>jn,DeviceSyncManager:()=>vr,PlatformDetector:()=>Jn,VaultSync:()=>Yn});var _c=p(()=>{"use strict";Fc();Mc();Uc();kr();Nc()});var Er,Kc=p(()=>{"use strict";Er=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
|
|
506
|
+
`),{scenarios:n,overallScore:i,securityScore:o,feedback:c}}}});function Oc(r){return Qn[r]||null}function zc(){return Object.keys(Qn)}function Wc(r){let e=r.toLowerCase();return Object.values(Qn).filter(t=>t.title.toLowerCase().includes(e)||t.content.toLowerCase().includes(e))}var Qn,$c=p(()=>{"use strict";Qn={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):
|
|
@@ -586,7 +586,7 @@ What DOESN'T sync:
|
|
|
586
586
|
LAYER 2: ENCRYPTED WALLET (Local)
|
|
587
587
|
----------------------------------
|
|
588
588
|
Your wallet is encrypted and stored in:
|
|
589
|
-
- Browser's
|
|
589
|
+
- Browser's localStorage
|
|
590
590
|
- Encrypted with passkey-derived key
|
|
591
591
|
- Can ONLY be decrypted with passkey
|
|
592
592
|
|
|
@@ -947,23 +947,23 @@ 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 qn={};k(qn,{RecoverySimulator:()=>Ar,educationalModules:()=>$n,getAllTopics:()=>Ac,getExplainer:()=>Sc,searchExplainers:()=>xc});var xr=p(()=>{"use strict";bc();vc()});var Vn={};k(Vn,{deriveMLKemKeypair:()=>Hn,mlkemDecrypt:()=>mi,mlkemDecryptWithKey:()=>Ec,mlkemEncrypt:()=>pi,mlkemEncryptWithKey:()=>kc});import{createMlKem1024 as fi}from"mlkem";import{hkdf as If}from"@noble/hashes/hkdf.js";import{sha256 as Bf}from"@noble/hashes/sha2.js";function De(r){r.fill(0)}function Bt(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 ze(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 Hn(r,e="mlkem-v1"){let t=await fi(),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=If(Bf,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{De(s),De(n)}}async function pi(r,e){let t=await fi(),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 y of n){let b=typeof y=="string"?ze(y):y;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:Bt(b),ciphertext:Bt(C)})}finally{De(A)}}return{recipients:g,encryptedData:Bt(h),iv:Bt(i),authTag:Bt(m)}}finally{De(s)}}async function mi(r,e,t){let n=await fi(),s=typeof e=="string"?ze(e):e;if(s.length!==3168)throw new Error(`Invalid ML-KEM private key size: ${s.length} (expected 3168)`);let i=ze(r.encryptedData),o=ze(r.iv),a=ze(r.authTag),c=null;if(t){let y=typeof t=="string"?ze(t):t,b=Bt(y);if(c=r.recipients.find(S=>S.publicKey===b),!c)throw new Error("Public key not found in recipients list")}else{for(let y of r.recipients)try{let b=ze(y.ciphertext),S=n.decap(b,s);c=y,De(S);break}catch{continue}if(!c)throw new Error("No matching recipient found for this private key")}let l=ze(c.ciphertext),u=1568,d=l.slice(0,u),h=l.slice(u),m=n.decap(d,s),g=null;try{let y=m.slice(0,32);g=new Uint8Array(32);for(let x=0;x<32;x++)g[x]=h[x]^y[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{De(m),g&&De(g)}}async function kc(r,e,t,n="mlkem-v1"){let s=await Hn(e,n);try{let i=[s.publicKey,...t];return await pi(r,i)}finally{De(s.privateKey)}}async function Ec(r,e,t="mlkem-v1"){let n=await Hn(e,t);try{return await mi(r,n.privateKey,n.publicKey)}finally{De(n.privateKey)}}var vr=p(()=>{"use strict"});function Df(r){return r[Symbol.asyncIterator]!=null}function Tf(r){if(Df(r))return(async()=>{for await(let e of r)return e})();for(let e of r)return e}var gi,Ic=p(()=>{"use strict";gi=Tf});function Rf(r){return r[Symbol.asyncIterator]!=null}function Ff(r,e=1){return e=Number(e),Rf(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 Gn,yi=p(()=>{"use strict";Gn=Ff});async function*Er(r,e=1){for await(let t of Gn(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 wi=p(()=>{"use strict";yi()});function Te(r=0){return new Uint8Array(r)}function ne(r=0){return new Uint8Array(r)}var ot=p(()=>{"use strict"});function Mf(r){return r?.buffer instanceof ArrayBuffer}function Bc(r){if(Mf(r))return r;let e=r.slice();return new Uint8Array(e.buffer,0,e.byteLength)}var Dc=p(()=>{"use strict"});function Cr(r,e){e==null&&(e=r.reduce((s,i)=>s+i.length,0));let t=ne(e),n=0;for(let s of r)t.set(s,n),n+=s.length;return Bc(t)}var bi=p(()=>{"use strict";ot();Dc()});function Tc(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 Rc=p(()=>{"use strict"});function Fc(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 Yn(r){return!!r?.[Nc]}var Nc,Mc,Dt,Uc=p(()=>{"use strict";ot();bi();Rc();Nc=Symbol.for("@achingbrain/uint8arraylist");Dt=class r{constructor(...e){f(this,"bufs");f(this,"length");f(this,Mc,!0);this.bufs=[],this.length=0,e.length>0&&this.appendAll(e)}*[(Mc=Nc,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(Yn(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(Yn(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=Fc(this.bufs,e);return t.buf[t.index]}set(e,t){let n=Fc(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(Yn(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 Cr(n,s)}subarray(e,t){let{bufs:n,length:s}=this._subList(e,t);return n.length===1?n[0]:Cr(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(!Yn(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=ne(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=Te(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=Te(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=Te(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=ne(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=Te(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=Te(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=Te(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=Te(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=Te(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(!Tc(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 Si,jn,Jn,Lc,Qn,_c,Kc,Oc,zc,Wc,$c,qc,Pr=p(()=>{"use strict";Si=BigInt(34),jn=8,Jn=262144,Lc="links-bytes",Qn=262144,_c=1048576,Kc=50,Oc=10,zc=!0,Wc=!0,$c=!1,qc="file"});var Hc,Vc=p(()=>{"use strict";Uc();Pr();Hc=(r={})=>{let e=r.chunkSize??Qn;return async function*(n){let s=new Dt,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 Dt,i=0;else{let l=new Dt;l.append(s.sublist(e)),s=l,i-=e}(!o||i>0)&&(yield s.subarray(0,i))}}});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}function fe(r){if(r instanceof Uint8Array&&r.constructor.name==="Uint8Array")return at(r);if(r instanceof ArrayBuffer)return new Uint8Array(r);if(ArrayBuffer.isView(r))return at(new Uint8Array(r.buffer,r.byteOffset,r.byteLength));throw new Error("Unknown type, must be binary type")}function Yc(r){return new TextEncoder().encode(r)}function jc(r){return new TextDecoder().decode(r)}function Nf(r){return r?.buffer instanceof ArrayBuffer}function at(r){return Nf(r)?r:r.slice()}var y0,We=p(()=>{"use strict";y0=new Uint8Array(0)});function Uf(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 y=0,b=0,S=0,A=g.length;S!==A&&g[S]===0;)S++,y++;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 Ce=c.repeat(y);O<v;++O)Ce+=r.charAt(E[O]);return Ce}function h(g){if(typeof g!="string")throw new TypeError("Expected String");if(g.length===0)return new Uint8Array;var y=0;if(g[y]!==" "){for(var b=0,S=0;g[y]===c;)b++,y++;for(var A=(g.length-y)*l+1>>>0,v=new Uint8Array(A);g[y];){var E=t[g.charCodeAt(y)];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,y++}if(g[y]!==" "){for(var T=A-S;T!==A&&v[T]===0;)T++;for(var O=new Uint8Array(b+(A-T)),Ce=b;T!==A;)O[Ce++]=v[T++];return O}}}function m(g){var y=h(g);if(y)return y;throw new Error(`Non-${e} character`)}return{encode:d,decodeUnsafe:h,decode:m}}var Lf,_f,Qc,Zc=p(()=>{"use strict";Lf=Uf,_f=Lf,Qc=_f});function Xc(r,e){return new vi({...r.decoders??{[r.prefix]:r},...e.decoders??{[e.prefix]:e}})}function Tt({name:r,prefix:e,encode:t,decode:n}){return new ki(r,e,t,n)}function $e({name:r,prefix:e,alphabet:t}){let{encode:n,decode:s}=Qc(t,r);return Tt({prefix:e,name:r,encode:n,decode:i=>fe(s(i))})}function Kf(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 Of(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 zf(r){let e={};for(let t=0;t<r.length;++t)e[r[t]]=t;return e}function N({name:r,prefix:e,bitsPerChar:t,alphabet:n}){let s=zf(n);return Tt({prefix:e,name:r,encode(i){return Of(i,n,t)},decode(i){return Kf(i,s,t,r)}})}var Ai,xi,vi,ki,pe=p(()=>{"use strict";We();Zc();Ai=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")}},xi=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 Xc(this,e)}},vi=class{constructor(e){f(this,"decoders");this.decoders=e}or(e){return Xc(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`)}};ki=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 Ai(e,t,n),this.decoder=new xi(e,t,s)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}}});var Ei={};k(Ei,{base32:()=>j,base32hex:()=>Hf,base32hexpad:()=>Gf,base32hexpadupper:()=>Yf,base32hexupper:()=>Vf,base32pad:()=>$f,base32padupper:()=>qf,base32upper:()=>Wf,base32z:()=>jf});var j,Wf,$f,qf,Hf,Vf,Gf,Yf,jf,Ir=p(()=>{"use strict";pe();j=N({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),Wf=N({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),$f=N({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),qf=N({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),Hf=N({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),Vf=N({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),Gf=N({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),Yf=N({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),jf=N({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5})});var Ci={};k(Ci,{base36:()=>Br,base36upper:()=>Jf});var Br,Jf,Pi=p(()=>{"use strict";pe();Br=$e({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),Jf=$e({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"})});var Ii={};k(Ii,{base58btc:()=>ce,base58flickr:()=>Qf});var ce,Qf,Zn=p(()=>{"use strict";pe();ce=$e({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),Qf=$e({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"})});function rl(r,e,t){e=e||[],t=t||0;for(var n=t;r>=tp;)e[t++]=r&255|el,r/=128;for(;r&ep;)e[t++]=r&255|el,r>>>=7;return e[t]=r|0,rl.bytes=t-n+1,e}function Bi(r,n){var t=0,n=n||0,s=0,i=n,o,a=r.length;do{if(i>=a)throw Bi.bytes=0,new RangeError("Could not decode varint");o=r[i++],t+=s<28?(o&tl)<<s:(o&tl)*Math.pow(2,s),s+=7}while(o>=np);return Bi.bytes=i-n,t}var Zf,el,Xf,ep,tp,rp,np,tl,sp,ip,op,ap,cp,lp,up,dp,hp,fp,pp,mp,Dr,nl=p(()=>{"use strict";Zf=rl,el=128,Xf=127,ep=~Xf,tp=Math.pow(2,31);rp=Bi,np=128,tl=127;sp=Math.pow(2,7),ip=Math.pow(2,14),op=Math.pow(2,21),ap=Math.pow(2,28),cp=Math.pow(2,35),lp=Math.pow(2,42),up=Math.pow(2,49),dp=Math.pow(2,56),hp=Math.pow(2,63),fp=function(r){return r<sp?1:r<ip?2:r<op?3:r<ap?4:r<cp?5:r<lp?6:r<up?7:r<dp?8:r<hp?9:10},pp={encode:Zf,decode:rp,encodingLength:fp},mp=pp,Dr=mp});function Tr(r,e=0){return[Dr.decode(r,e),Dr.decode.bytes]}function Rt(r,e,t=0){return Dr.encode(r,e,t),e}function Ft(r){return Dr.encodingLength(r)}var es=p(()=>{"use strict";nl()});function Nt(r,e){let t=e.byteLength,n=Ft(r),s=n+Ft(t),i=new Uint8Array(s+t);return Rt(r,i,0),Rt(t,i,n),i.set(e,s),new Mt(r,t,e,i)}function ts(r){let e=fe(r),[t,n]=Tr(e),[s,i]=Tr(e.subarray(n)),o=e.subarray(n+i);if(o.byteLength!==s)throw new Error("Incorrect length");return new Mt(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&&Gc(r.bytes,t.bytes)}}var Mt,Lt=p(()=>{"use strict";We();es();Mt=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=at(n),this.bytes=at(s)}}});var Di=p(()=>{"use strict"});function il(r,e){let{bytes:t,version:n}=r;return n===0?yp(t,Ti(r),e??ce.encoder):wp(t,Ti(r),e??j.encoder)}function Ti(r){let e=ol.get(r);if(e==null){let t=new Map;return ol.set(r,t),t}return e}function gp(r,e){switch(r[0]){case"Q":{let t=e??ce;return[ce.prefix,t.decode(`${ce.prefix}${r}`)]}case ce.prefix:{let t=e??ce;return[ce.prefix,t.decode(r)]}case j.prefix:{let t=e??j;return[j.prefix,t.decode(r)]}case Br.prefix:{let t=e??Br;return[Br.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 yp(r,e,t){let{prefix:n}=t;if(n!==ce.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 wp(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=Ft(r),s=n+Ft(e),i=new Uint8Array(s+t.byteLength);return Rt(r,i,0),Rt(e,i,n),i.set(t,s),i}var ol,cl,$,Rr,bp,Sp,ct=p(()=>{"use strict";Ir();Pi();Zn();We();Lt();es();Di();ol=new WeakMap;$=class r{constructor(e,t,n,s){f(this,"code");f(this,"version");f(this,"multihash");f(this,"bytes");f(this,"/");f(this,cl,"CID");this.code=t,this.version=e,this.multihash=n,this.bytes=at(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!==Rr)throw new Error("Cannot convert a non dag-pb CID to CIDv0");if(t.code!==bp)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=Nt(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 il(this,e)}toJSON(){return{"/":il(this)}}link(){return this}[(cl=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[Sp]===!0){let{version:n,multihash:s,code:i}=t,o=ts(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!==Rr)throw new Error(`Version 0 CID must use dag-pb (code: ${Rr}) 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,Rr,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=fe(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 Mt(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]=Tr(e.subarray(t));return t+=h,d},s=n(),i=Rr;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]=gp(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 Ti(i).set(n,e),i}};Rr=112,bp=18;Sp=Symbol.for("@ipld/js-cid/CID")});function Ri(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 rs(r,e){let t;[t,e]=Ri(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 ll(r,e){let t;return[t,e]=Ri(r,e),[t&7,t>>3,e]}function xp(r){let e={},t=r.length,n=0;for(;n<t;){let s,i;if([s,i,n]=ll(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]=rs(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]=rs(r,n),e.Name=Ap.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]=Ri(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 ul(r){let e=r.length,t=0,n,s=!1,i;for(;t<e;){let a,c;if([a,c,t]=ll(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]=rs(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]=rs(r,t),n.push(xp(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 Ap,dl=p(()=>{"use strict";Ap=new TextDecoder});function kp(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=Fr(e,t,r.Tsize)-1,e[t]=24}if(typeof r.Name=="string"){let n=fl.encode(r.Name);t-=n.length,e.set(n,t),t=Fr(e,t,n.length)-1,e[t]=18}return r.Hash&&(t-=r.Hash.length,e.set(r.Hash,t),t=Fr(e,t,r.Hash.length)-1,e[t]=10),e.length-t}function pl(r){let e=Cp(r),t=new Uint8Array(e),n=e;if(r.Data&&(n-=r.Data.length,t.set(r.Data,n),n=Fr(t,n,r.Data.length)-1,t[n]=10),r.Links)for(let s=r.Links.length-1;s>=0;s--){let i=kp(r.Links[s],t.subarray(0,n));n-=i,n=Fr(t,n,i)-1,t[n]=18}return t}function Ep(r){let e=0;if(r.Hash){let t=r.Hash.length;e+=1+t+_t(t)}if(typeof r.Name=="string"){let t=fl.encode(r.Name).length;e+=1+t+_t(t)}return typeof r.Tsize=="number"&&(e+=1+_t(r.Tsize)),e}function Cp(r){let e=0;if(r.Data){let t=r.Data.length;e+=1+t+_t(t)}if(r.Links)for(let t of r.Links){let n=Ep(t);e+=1+n+_t(n)}return e}function Fr(r,e,t){e-=_t(t);let n=e;for(;t>=vp;)r[e++]=t&127|128,t/=128;for(;t>=128;)r[e++]=t&127|128,t>>>=7;return r[e]=t,n}function _t(r){return r%2===0&&r++,Math.floor((Pp(r)+6)/7)}function Pp(r){let e=0;return r>=hl&&(r=Math.floor(r/hl),e=32),r>=65536&&(r>>>=16,e+=16),r>=256&&(r>>>=8,e+=8),e+Ip[r]}var fl,hl,vp,Ip,ml=p(()=>{"use strict";fl=new TextEncoder,hl=2**32,vp=2**31;Ip=[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 yl(r,e){if(r===e)return 0;let t=r.Name?Fi.encode(r.Name):[],n=e.Name?Fi.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 gl(r,e){return!Object.keys(r).some(t=>!e.includes(t))}function wl(r){if(typeof r.asCID=="object"){let t=$.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=$.asCID(r.Hash);try{t||(typeof r.Hash=="string"?t=$.parse(r.Hash):r.Hash instanceof Uint8Array&&(t=$.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 J(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=Fi.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(wl),e.Links.sort(yl);else throw new TypeError("Invalid DAG-PB form");else e.Links=[];return e}function Mi(r){if(!r||typeof r!="object"||Array.isArray(r)||r instanceof Uint8Array||r["/"]&&r["/"]===r.bytes)throw new TypeError("Invalid DAG-PB form");if(!gl(r,Bp))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(!gl(t,Dp))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&&yl(t,r.Links[e-1])===-1)throw new TypeError("Invalid DAG-PB form (links must be sorted by Name bytes)")}}function bl(r,e=[]){return J({Data:r,Links:e})}function Sl(r,e,t){return wl({Hash:t,Name:r,Tsize:e})}function Al(r){return r instanceof ArrayBuffer?new Uint8Array(r,0,r.byteLength):r}var Bp,Dp,Fi,xl=p(()=>{"use strict";ct();Bp=["Data","Links"],Dp=["Hash","Name","Tsize"],Fi=new TextEncoder});var Mr={};k(Mr,{code:()=>Rp,createLink:()=>Sl,createNode:()=>bl,decode:()=>Fp,encode:()=>Q,name:()=>Tp,prepare:()=>J,validate:()=>Mi});function Q(r){Mi(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),pl(e)}function Fp(r){let e=Al(r),t=ul(e),n={};return t.Data&&(n.Data=t.Data),t.Links&&(n.Links=t.Links.map(s=>{let i={};try{i.Hash=$.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 Tp,Rp,lt=p(()=>{"use strict";ct();dl();ml();xl();Tp="dag-pb",Rp=112});var Kt,Nr,Ni=p(()=>{"use strict";Kt=class Kt extends Error{constructor(t="Invalid type"){super(t);f(this,"name",Kt.name);f(this,"code",Kt.code)}};f(Kt,"name","InvalidTypeError"),f(Kt,"code","ERR_INVALID_TYPE");Nr=Kt});function Ur(r){if(r<Mp)return 1;if(r<Np)return 2;if(r<Up)return 3;if(r<vl)return 4;if(r<kl)return 5;if(r<El)return 6;if(r<Cl)return 7;if(Number.MAX_SAFE_INTEGER!=null&&r>Number.MAX_SAFE_INTEGER)throw new RangeError("Could not encode varint");return 8}function Pl(r,e,t=0){switch(Ur(r)){case 8:e[t++]=r&255|q,r/=128;case 7:e[t++]=r&255|q,r/=128;case 6:e[t++]=r&255|q,r/=128;case 5:e[t++]=r&255|q,r/=128;case 4:e[t++]=r&255|q,r>>>=7;case 3:e[t++]=r&255|q,r>>>=7;case 2:e[t++]=r&255|q,r>>>=7;case 1:{e[t++]=r&255,r>>>=7;break}default:throw new Error("unreachable")}return e}function Il(r,e){let t=r[e],n=0;if(n+=t&qe,t<q||(t=r[e+1],n+=(t&qe)<<7,t<q)||(t=r[e+2],n+=(t&qe)<<14,t<q)||(t=r[e+3],n+=(t&qe)<<21,t<q)||(t=r[e+4],n+=(t&qe)*vl,t<q)||(t=r[e+5],n+=(t&qe)*kl,t<q)||(t=r[e+6],n+=(t&qe)*El,t<q)||(t=r[e+7],n+=(t&qe)*Cl,t<q))return n;throw new RangeError("Could not decode varint")}var Mp,Np,Up,vl,kl,El,Cl,q,qe,Ui=p(()=>{"use strict";ot();Mp=Math.pow(2,7),Np=Math.pow(2,14),Up=Math.pow(2,21),vl=Math.pow(2,28),kl=Math.pow(2,35),El=Math.pow(2,42),Cl=Math.pow(2,49),q=128,qe=127});function Lp(r){return r.buffer instanceof ArrayBuffer}function Bl(r){return Lp(r)?r:r.slice()}var Dl=p(()=>{"use strict"});function Tl(r,e,t){Li[0]=r,e[t]=He[0],e[t+1]=He[1],e[t+2]=He[2],e[t+3]=He[3]}function Rl(r,e){return He[0]=r[e],He[1]=r[e+1],He[2]=r[e+2],He[3]=r[e+3],Li[0]}function Fl(r,e,t){_i[0]=r,e[t]=z[0],e[t+1]=z[1],e[t+2]=z[2],e[t+3]=z[3],e[t+4]=z[4],e[t+5]=z[5],e[t+6]=z[6],e[t+7]=z[7]}function Ml(r,e){return z[0]=r[e],z[1]=r[e+1],z[2]=r[e+2],z[3]=r[e+3],z[4]=r[e+4],z[5]=r[e+5],z[6]=r[e+6],z[7]=r[e+7],_i[0]}var Li,He,_i,z,Ki=p(()=>{"use strict";Li=new Float32Array([-0]),He=new Uint8Array(Li.buffer);_i=new Float64Array([-0]),z=new Uint8Array(_i.buffer)});var _p,Kp,se,ut,Nl,Oi=p(()=>{"use strict";_p=BigInt(Number.MAX_SAFE_INTEGER),Kp=BigInt(Number.MIN_SAFE_INTEGER),se=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 ut;if(e<_p&&e>Kp)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>Nl&&(s=0n,++n>Nl&&(n=0n))),new r(Number(s),Number(n))}static fromNumber(e){if(e===0)return ut;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):ut}},ut=new se(0,0);ut.toBigInt=function(){return 0n};ut.zzEncode=ut.zzDecode=function(){return this};ut.length=function(){return 1};Nl=4294967296n});function Ul(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 Ll(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 zi(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 Wi=p(()=>{"use strict"});function me(r,e){return RangeError(`index out of range: ${r.pos} + ${e??1} > ${r.len}`)}function ns(r,e){return(r[e-4]|r[e-3]<<8|r[e-2]<<16|r[e-1]<<24)>>>0}function Lr(r){return new $i(r instanceof Uint8Array?r:r.subarray())}var $i,ss=p(()=>{"use strict";Ui();Dl();Ki();Oi();Wi();$i=class{constructor(e){f(this,"buf");f(this,"pos");f(this,"len");f(this,"_slice",Uint8Array.prototype.subarray);this.buf=Bl(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,me(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 me(this,4);return ns(this.buf,this.pos+=4)}sfixed32(){if(this.pos+4>this.len)throw me(this,4);return ns(this.buf,this.pos+=4)|0}float(){if(this.pos+4>this.len)throw me(this,4);let e=Rl(this.buf,this.pos);return this.pos+=4,e}double(){if(this.pos+8>this.len)throw me(this,4);let e=Ml(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 me(this,e);return this.pos+=e,t===n?new Uint8Array(0):this.buf.subarray(t,n)}string(){let e=this.bytes();return Ll(e,0,e.length)}skip(e){if(typeof e=="number"){if(this.pos+e>this.len)throw me(this,e);this.pos+=e}else do if(this.pos>=this.len)throw me(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 se(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 me(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 me(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 me(this,8);let e=ns(this.buf,this.pos+=4),t=ns(this.buf,this.pos+=4);return new se(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=Il(this.buf,this.pos);return this.pos+=Ur(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 _r(r,e,t){let n=Lr(r);return e.decode(n,void 0,t)}var Kl=p(()=>{"use strict";ss()});var qi={};k(qi,{base10:()=>Op});var Op,Ol=p(()=>{"use strict";pe();Op=$e({prefix:"9",name:"base10",alphabet:"0123456789"})});var Hi={};k(Hi,{base16:()=>zp,base16upper:()=>Wp});var zp,Wp,zl=p(()=>{"use strict";pe();zp=N({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),Wp=N({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4})});var Vi={};k(Vi,{base2:()=>$p});var $p,Wl=p(()=>{"use strict";pe();$p=N({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1})});var Gi={};k(Gi,{base256emoji:()=>Yp});function Vp(r){return r.reduce((e,t)=>(e+=qp[t],e),"")}function Gp(r){let e=[];for(let t of r){let n=t.codePointAt(0);if(n==null)throw new Error(`Invalid character: ${t}`);let s=Hp[n];if(s==null)throw new Error(`Non-base256emoji character: ${t}`);e.push(s)}return new Uint8Array(e)}var $l,qp,Hp,Yp,ql=p(()=>{"use strict";pe();$l=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}"),qp=$l.reduce((r,e,t)=>(r[t]=e,r),[]),Hp=$l.reduce((r,e,t)=>{let n=e.codePointAt(0);if(n==null)throw new Error(`Invalid character: ${e}`);return r[n]=t,r},[]);Yp=Tt({prefix:"\u{1F680}",name:"base256emoji",encode:Vp,decode:Gp})});var ji={};k(ji,{base64:()=>Yi,base64pad:()=>jp,base64url:()=>Jp,base64urlpad:()=>Qp});var Yi,jp,Jp,Qp,Ji=p(()=>{"use strict";pe();Yi=N({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),jp=N({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),Jp=N({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),Qp=N({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6})});var Qi={};k(Qi,{base8:()=>Zp});var Zp,Hl=p(()=>{"use strict";pe();Zp=N({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3})});var Zi={};k(Zi,{identity:()=>Xp});var Xp,Vl=p(()=>{"use strict";We();pe();Xp=Tt({prefix:"\0",name:"identity",encode:r=>jc(r),decode:r=>Yc(r)})});var mb,gb,Gl=p(()=>{"use strict";mb=new TextEncoder,gb=new TextDecoder});var zt={};k(zt,{code:()=>Ot,decode:()=>nm,encode:()=>rm,name:()=>tm});function rm(r){return fe(r)}function nm(r){return fe(r)}var tm,Ot,Kr=p(()=>{"use strict";We();tm="raw",Ot=85});var Xi={};k(Xi,{identity:()=>om});function im(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 Nt(Yl,jl(r))}var Yl,sm,jl,om,Jl=p(()=>{"use strict";We();Lt();Yl=0,sm="identity",jl=fe;om={code:Yl,name:sm,encode:jl,digest:im}});function dt({name:r,code:e,encode:t,minDigestLength:n,maxDigestLength:s}){return new eo(r,e,t,n,s)}function Ql(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 Nt(e,r)}var am,eo,is=p(()=>{"use strict";Lt();am=20;eo=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??am,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?Ql(n,this.code,t?.truncate):n.then(s=>Ql(s,this.code,t?.truncate))}else throw Error("Unknown type, must be binary type")}}});var ro={};k(ro,{sha256:()=>to,sha512:()=>cm});function Xl(r){return async e=>new Uint8Array(await crypto.subtle.digest(r,e))}var to,cm,no=p(()=>{"use strict";is();to=dt({name:"sha2-256",code:18,encode:Xl("SHA-256")}),cm=dt({name:"sha2-512",code:19,encode:Xl("SHA-512")})});var eu=p(()=>{"use strict"});var tu=p(()=>{"use strict"});var ru=p(()=>{"use strict"});var nu=p(()=>{"use strict"});var su=p(()=>{"use strict";eu();tu();ru();Di();nu()});var iu=p(()=>{"use strict";We();ct();Lt();is();es();su()});var so,Db,ou=p(()=>{"use strict";Ol();zl();Wl();ql();Ir();Pi();Zn();Ji();Hl();Vl();Gl();Kr();Jl();no();iu();so={...Zi,...Vi,...Qi,...qi,...Hi,...Ei,...Ci,...Ii,...ji,...Gi},Db={...ro,...Xi}});function cu(r,e,t,n){return{name:r,prefix:e,encoder:{name:r,prefix:e,encode:t},decoder:{decode:n}}}var au,io,lm,lu,uu=p(()=>{"use strict";ou();ot();au=cu("utf8","u",r=>"u"+new TextDecoder("utf8").decode(r),r=>new TextEncoder().encode(r.substring(1))),io=cu("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=ne(r.length);for(let t=0;t<r.length;t++)e[t]=r.charCodeAt(t);return e}),lm={utf8:au,"utf-8":au,hex:so.base16,latin1:io,ascii:io,binary:io,...so},lu=lm});function Wt(r,e="utf8"){let t=lu[e];if(t==null)throw new Error(`Unsupported encoding "${e}"`);return t.decoder.decode(`${t.prefix}${r}`)}var os=p(()=>{"use strict";uu()});function oo(r){let e=r??8192,t=e>>>1,n,s=e;return function(o){if(o<1||o>t)return ne(o);s+o>e&&(n=ne(e),s=0);let a=n.subarray(s,s+=o);return(s&7)!==0&&(s=(s|7)+1),a}}var du=p(()=>{"use strict";ot()});function ao(){}function dm(r){return globalThis.Buffer!=null?ne(r):um(r)}function co(r,e,t){e[t]=r&255}function hm(r,e,t){for(;r>127;)e[t++]=r&127|128,r>>>=7;e[t]=r}function as(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 Or(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 fm(r,e,t){e.set(r,t)}function pm(r,e,t){e.set(r,t)}function mm(r,e,t){r.length<40?zi(r,e,t):e.utf8Write!=null?e.utf8Write(r,t):e.set(Wt(r),t)}function ho(){return new zr}var ht,lo,um,zr,uo,fo=p(()=>{"use strict";Ui();ot();os();Ki();Oi();du();Wi();ht=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}};lo=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}},um=oo();zr=class{constructor(){f(this,"len");f(this,"head");f(this,"tail");f(this,"states");this.len=0,this.head=new ht(ao,0,0),this.tail=this.head,this.states=null}_push(e,t,n){return this.tail=this.tail.next=new ht(e,t,n),this.len+=t,this}uint32(e){return this.len+=(this.tail=this.tail.next=new uo((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(as,10,se.fromNumber(e)):this.uint32(e)}sint32(e){return this.uint32((e<<1^e>>31)>>>0)}uint64(e){let t=se.fromBigInt(e);return this._push(as,t.length(),t)}uint64Number(e){return this._push(Pl,Ur(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=se.fromBigInt(e).zzEncode();return this._push(as,t.length(),t)}sint64Number(e){let t=se.fromNumber(e).zzEncode();return this._push(as,t.length(),t)}sint64String(e){return this.sint64(BigInt(e))}bool(e){return this._push(co,1,e?1:0)}fixed32(e){return this._push(Or,4,e>>>0)}sfixed32(e){return this.fixed32(e)}fixed64(e){let t=se.fromBigInt(e);return this._push(Or,4,t.lo)._push(Or,4,t.hi)}fixed64Number(e){let t=se.fromNumber(e);return this._push(Or,4,t.lo)._push(Or,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(Tl,4,e)}double(e){return this._push(Fl,8,e)}bytes(e){let t=e.length>>>0;return t===0?this._push(co,1,0):this.uint32(t)._push(fm,t,e)}string(e){let t=Ul(e);return t!==0?this.uint32(t)._push(zi,t,e):this._push(co,1,0)}fork(){return this.states=new lo(this),this.head=this.tail=new ht(ao,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 ht(ao,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=dm(this.len),n=0;for(;e!=null;)e.fn(e.val,t,n),n+=e.len,e=e.next;return t}};uo=class extends ht{constructor(t,n){super(hm,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(pm,e,r),this},zr.prototype.string=function(r){let e=globalThis.Buffer.byteLength(r);return this.uint32(e),e>0&&this._push(mm,e,r),this})});function Wr(r,e){let t=ho();return e.encode(r,t,{lengthDelimited:!1}),t.finish()}var hu=p(()=>{"use strict";fo()});function*$r(r,e,t){let n=Lr(r);yield*e.stream(n,void 0,"$",t)}var fu=p(()=>{"use strict";ss()});function ls(r,e,t,n,s){return{name:r,type:e,encode:t,decode:n,stream:s}}var cs,po=p(()=>{"use strict";cs={VARINT:0,BIT64:1,LENGTH_DELIMITED:2,START_GROUP:3,END_GROUP:4,BIT32:5}});function mo(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 ls("enum",cs.VARINT,t,n,s)}var pu=p(()=>{"use strict";po()});function qr(r,e,t){return ls("message",cs.LENGTH_DELIMITED,r,e,t)}var mu=p(()=>{"use strict";po()});var Hr,gu=p(()=>{"use strict";Kl();hu();fu();pu();mu();ss();fo();Hr=class extends Error{constructor(){super(...arguments);f(this,"code","ERR_MAX_LENGTH");f(this,"name","MaxLengthError")}}});var ge,Vr,yu,wu=p(()=>{"use strict";gu();(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=()=>mo(t)})(e=r.DataType||(r.DataType={}));let n;r.codec=()=>(n==null&&(n=qr((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),Vr.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 Hr('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=Vr.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 Hr('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*Vr.codec().stream(a,a.uint32(),`${l}.mtime`,{limits:u.limits?.mtime});break}default:{a.skipType(m&7);break}}}})),n);function s(a){return Wr(a,r.codec())}r.encode=s;function i(a,c){return _r(a,r.codec(),c)}r.decode=i;function o(a,c){return $r(a,r.codec(),c)}r.stream=o})(ge||(ge={}));(function(r){let e;r.codec=()=>(e==null&&(e=qr((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 Wr(i,r.codec())}r.encode=t;function n(i,o){return _r(i,r.codec(),o)}r.decode=n;function s(i,o){return $r(i,r.codec(),o)}r.stream=s})(Vr||(Vr={}));(function(r){let e;r.codec=()=>(e==null&&(e=qr((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 Wr(i,r.codec())}r.encode=t;function n(i,o){return _r(i,r.codec(),o)}r.decode=n;function s(i,o){return $r(i,r.codec(),o)}r.stream=s})(yu||(yu={}))});var bu,gm,Su,Au,H,$t=p(()=>{"use strict";Ni();wu();Ni();bu={Raw:"raw",Directory:"directory",File:"file",Metadata:"metadata",Symlink:"symlink",HAMTShard:"hamt-sharded-directory"},gm=["directory","hamt-sharded-directory"],Su=parseInt("0644",8),Au=parseInt("0755",8),H=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(bu).includes(t))throw new Nr("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=ge.decode(e),n=new r({type:bu[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()?Au:Su:this._mode=e&4095}get mode(){return this._mode}isDirectory(){return gm.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=ge.DataType.Raw;break;case"directory":e=ge.DataType.Directory;break;case"file":e=ge.DataType.File;break;case"metadata":e=ge.DataType.Metadata;break;case"symlink":e=ge.DataType.Symlink;break;case"hamt-sharded-directory":e=ge.DataType.HAMTShard;break;default:throw new Nr(`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===Su&&!this.isDirectory()&&(n=void 0),n===Au&&this.isDirectory()&&(n=void 0));let s;return this.mtime!=null&&(s={Seconds:this.mtime.secs,FractionalNanoseconds:this.mtime.nsecs}),ge.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 Re,us=p(()=>{"use strict";Re=class extends Event{constructor(t,n){super(t);f(this,"type");f(this,"detail");this.type=t,this.detail=n}}});var le,qt=p(()=>{"use strict";lt();ct();no();le=async(r,e,t)=>{t.codec==null&&(t.codec=Mr);let n=await to.digest(r),s=$.create(t.cidVersion??1,t.codec.code,n);return await e.put(s,r,t),s}});function vu(r){return async function*(t,n){let s=0n;for await(let i of t.content)yield async()=>{let o,a={codec:Mr,cidVersion:r.cidVersion,onProgress:r.onProgress};r.rawLeaves?(a.codec=zt,a.cidVersion=1):(o=new H({type:r.leafType,data:i}),i=Q({Data:o.marshal(),Links:[]}));let c=await le(i,n,a);return s+=BigInt(i.byteLength),r.onProgress?.(new Re("unixfs:importer:progress:file:write",{bytesWritten:s,cid:c,path:t.path})),{cid:c,unixfs:o,size:BigInt(i.length),block:i}}}}var ku=p(()=>{"use strict";lt();$t();Kr();us();qt()});var Ht,Jt,Vt,go,Gt,yo,Yt,wo,jt,ye,Ve,Gr=p(()=>{"use strict";Ht=class Ht extends Error{constructor(t="Invalid parameters"){super(t);f(this,"name",Ht.name);f(this,"code",Ht.code)}};f(Ht,"name","InvalidParametersError"),f(Ht,"code","ERR_INVALID_PARAMS");Jt=Ht,Vt=class Vt extends Error{constructor(t="Invalid avg chunk size"){super(t);f(this,"name",Vt.name);f(this,"code",Vt.code)}};f(Vt,"name","InvalidAvgChunkSizeError"),f(Vt,"code","ERR_INVALID_AVG_CHUNK_SIZE");go=Vt,Gt=class Gt extends Error{constructor(t="Invalid chunk size"){super(t);f(this,"name",Gt.name);f(this,"code",Gt.code)}};f(Gt,"name","InvalidChunkSizeError"),f(Gt,"code","ERR_INVALID_CHUNK_SIZE");yo=Gt,Yt=class Yt extends Error{constructor(t="Invalid min chunk size"){super(t);f(this,"name",Yt.name);f(this,"code",Yt.code)}};f(Yt,"name","InvalidMinChunkSizeError"),f(Yt,"code","ERR_INVALID_MIN_CHUNK_SIZE");wo=Yt,jt=class jt extends Error{constructor(t="Invalid content"){super(t);f(this,"name",jt.name);f(this,"code",jt.code)}};f(jt,"name","InvalidContentError"),f(jt,"code","ERR_INVALID_CONTENT");ye=jt,Ve=class extends Error{constructor(){super(...arguments);f(this,"name",ye.name);f(this,"code",ye.code)}};f(Ve,"name","InvalidShardingStrategyError"),f(Ve,"code","ERR_SHARDING_STRATEGY")});var Eu,Cu=p(()=>{"use strict";lt();$t();qt();Eu=async(r,e,t)=>{let n=new H({type:"directory",mtime:r.mtime,mode:r.mode}),s=Q(J({Data:n.marshal()})),i=await le(s,e,t),o=r.path;return{cid:i,path:o,unixfs:n,size:BigInt(s.length),originalPath:r.originalPath,block:s}}});async function*ym(r,e,t){let n=-1,s;for await(let i of Er(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 Pu(r){return r.single===!0}var wm,Iu,Bu=p(()=>{"use strict";lt();$t();wi();Kr();us();qt();wm=(r,e,t)=>async function(s){if(s.length===1&&Pu(s[0])&&t.reduceSingleLeafToSelf){let u=s[0],d=u.block;return Pu(u)&&(r.mtime!==void 0||r.mode!==void 0)&&(u.unixfs=new H({type:"file",mtime:r.mtime,mode:r.mode,data:u.block}),d={Data:u.unixfs.marshal(),Links:[]},u.block=Q(J(d)),u.cid=await le(u.block,e,{...t,cidVersion:t.cidVersion}),u.size=BigInt(u.block.length)),t.onProgress?.(new Re("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 H({type:"file",mtime:r.mtime,mode:r.mode}),o=s.filter(u=>u.cid.code===Ot&&u.size>0||u.unixfs!=null&&u.unixfs.data==null&&u.unixfs.fileSize()>0n?!0:!!u.unixfs?.data?.length).map(u=>u.cid.code===Ot?(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=Q(J(a)),l=await le(c,e,t);return t.onProgress?.(new Re("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}},Iu=async(r,e,t)=>t.layout(ym(r,e,t),wm(r,e,t))});function bm(r){return Symbol.iterator in r}function Sm(r){return Symbol.asyncIterator in r}function Am(r){try{if(r instanceof Uint8Array)return(async function*(){yield r})();if(bm(r))return(async function*(){yield*r})();if(Sm(r))return r}catch{throw new ye("Content was invalid")}throw new ye("Content was invalid")}function Du(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("/")),xm(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(Am(s.content)))){let u=BigInt(l.byteLength);c+=u,r.onProgress?.(new Re("unixfs:importer:progress:file:read",{bytesRead:c,chunkSize:u,path:s.path})),yield l}})(),originalPath:i},a=r.fileBuilder??Iu;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??Eu;yield async()=>a(o,n,r)}else throw new Error("Import candidate must have content or path or both")}}}function xm(r){return r.content!=null}var Tu=p(()=>{"use strict";us();Gr();Cu();Bu()});var Ru,Fu=p(()=>{"use strict";os();Gr();Ru=()=>async function*(e){for await(let t of e){if(t.length===void 0)throw new ye("Content was invalid");if(typeof t=="string"||t instanceof String)yield Wt(t.toString());else if(Array.isArray(t))yield Uint8Array.from(t);else if(t instanceof Uint8Array)yield t;else throw new ye("Content was invalid")}}});function bo(r){let e=r?.maxChildrenPerNode??vm;return async function t(n,s){let i=[];for await(let o of Gn(n,e))i.push(await s(o));return i.length>1?t(i,s):i[0]}}var vm,Mu=p(()=>{"use strict";yi();vm=174});function km(r){return r[Symbol.asyncIterator]!=null}function Em(r){if(km(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 Nu,Uu=p(()=>{"use strict";Nu=Em});var Lu=p(()=>{"use strict";Mu()});var ke,ds=p(()=>{"use strict";ct();ke=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 Pm(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+Cm[r]}function Ge(r){return r%2===0&&r++,Math.floor((Pm(r)+6)/7)}function hs(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 _u(r,e,t){let n=1+Ge(e)+e;return n+=1+Ge(r)+r,n+=1+Ge(t),1+Ge(n)+n}function Ku(r,e){let t=2;if(r!==void 0&&r!==Im&&(t+=1+Ge(r)),e!=null){let n=0,s=Number(e.secs);s<0?n+=11:n+=1+Ge(s),e.nsecs!=null&&(n+=5),t+=1+Ge(n)+n}return 1+Ge(t)+t}var Cm,Im,Ou=p(()=>{"use strict";Cm=[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];Im=493});function So(r,e){return e?.cid!=null&&e?.size!=null?r+e.cid.byteLength:0}function Ao(r,e){return e?.cid!=null&&e?.size!=null?_u(r,e.cid.byteLength,Number(e.size)):0}var ft,xo=p(()=>{"use strict";lt();$t();ds();vo();Ou();qt();ft=class extends ke{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=hs(t),o=this.options?.shardSplitStrategy;if(o==="links-bytes")this.nodeSize-=So(i,s),this.nodeSize+=So(i,n);else if(o==="block-bytes")this.nodeSize-=Ao(i,s),this.nodeSize+=Ao(i,n);else throw new Ve(`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 H({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 Q(J(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+=So(hs(n),s)}else if(t==="block-bytes"){this.nodeSize=Ku(this.mode,this.mtime);for(let[n,s]of this._children.entries())this.nodeSize+=Ao(hs(n),s)}else throw new Ve(`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 ke)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 H({type:"directory",mtime:this.mtime,mode:this.mode}),i={Data:s.marshal(),Links:n},o=Q(J(i)),a=await le(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 Ye(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 Bm(r,e){return r+e>>>0}function ue(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),y=h+m+g>>>0;return{lo:d,hi:y}}function pt(r,e){return Math.imul(r,e)>>>0}function Qt(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 ko(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 Eo(r,e){return(r<<e|r>>>32-e)>>>0}function zu(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 Dm(r,e){let t=e*4;return(r[t]|r[t+1]<<8|r[t+2]<<16|r[t+3]<<24)>>>0}function Wu(r){return r=M(r,ko(r,33)),r=ue(r,D(3981806797,4283543511)),r=M(r,ko(r,33)),r=ue(r,D(444984403,3301882366)),r=M(r,ko(r,33)),r}function Tm(r){return r^=r>>>16,r=pt(r,2246822507),r^=r>>>13,r=pt(r,3266489909),r^=r>>>16,r}function Co(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=zu(r,h*2),g=zu(r,h*2+1);m=ue(m,o),m=Qt(m,31),m=ue(m,a),t=M(t,m),t=Qt(t,27),t=Ye(t,n),t=Ye(ue(t,D(5,0)),D(1390208809,0)),g=ue(g,a),g=Qt(g,33),g=ue(g,o),n=M(n,g),n=Qt(n,31),n=Ye(n,t),n=Ye(ue(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=ue(l,a),l=Qt(l,33),l=ue(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=ue(c,o),c=Qt(c,31),c=ue(c,a),t=M(t,c)}let d=D(s,0);return t=M(t,d),n=M(n,d),t=Ye(t,n),n=Ye(n,t),t=Wu(t),n=Wu(n),t=Ye(t,n),n=Ye(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 $u(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=Dm(r,l);u=pt(u,i),u=Eo(u,15),u=pt(u,o),t^=u,t=Eo(t,13),t=Bm(pt(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=pt(c,i),c=Eo(c,15),c=pt(c,o),t^=c}return t^=n,t=Tm(t),t}var qu=p(()=>{"use strict"});function Fm(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 hS,Hu,fS,Vu=p(()=>{"use strict";is();qu();hS=dt({name:"murmur3-32",code:35,encode:r=>Fm($u(r))}),Hu=dt({name:"murmur3-128",code:34,encode:r=>Co(r)}),fS=dt({name:"murmur3-x64-64",code:34,encode:r=>Co(r).subarray(0,8)})});var Zt,je,Gu=p(()=>{"use strict";Zt=class Zt extends Error{constructor(t="Not Found"){super(t);f(this,"name",Zt.name);f(this,"code",Zt.code)}};f(Zt,"name","NotFoundError"),f(Zt,"code","ERR_NOT_FOUND");je=Zt});var fs=p(()=>{"use strict";Gu()});var Ee,Yr=p(()=>{"use strict";Ee=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 Xt,Po=p(()=>{"use strict";fs();Yr();Xt=class extends Ee{put(e,t,n){return n?.signal?.throwIfAborted(),e}get(e,t){throw t?.signal?.throwIfAborted(),new je}has(e,t){return t?.signal?.throwIfAborted(),!1}async delete(e,t){t?.signal?.throwIfAborted()}async*getAll(e){e?.signal?.throwIfAborted()}}});var Ju=P((kS,ju)=>{"use strict";ju.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(Mm,0),c=~(4294967295<<i+1),l=Yu(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(Nm),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(Um)}};function Mm(r,e){return r+Yu(e)}function Yu(r){let e=r;return e=e-(e>>1&1431655765),e=(e&858993459)+(e>>2&858993459),(e+(e>>4)&252645135)*16843009>>24}function Nm(r,e){return r[0]-e[0]}function Um(r){return r[1]}});function Lm(r){return!!r}function _m(r,e){return r.key}function Km(r){return r}async function Zu(r,e,t){let n=[];for(let s of r._children.compactArray())if(s instanceof Je)await Zu(s,e,t);else{let i=await e(s);n.push({bitField:r._children.bitField(),children:i})}return t(n)}var Qu,Je,Xu=p(()=>{"use strict";Qu=tr(Ju(),1);os();Je=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 Qu.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 Zu(this,e,t)}toJSON(){return this.serialize(_m,Km)}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"?Wt(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(Lm);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 Wm(r,e,t){let n=$m(e,t);return(r&n)>>>e}function $m(r,e){return Om[r]&zm[Math.min(e+r-1,7)]}var Om,zm,ps,ed=p(()=>{"use strict";Om=[255,254,252,248,240,224,192,128],zm=[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=Wm(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 td(r){function e(t){return t instanceof ms?t:new ms(t,r)}return e}var ms,rd=p(()=>{"use strict";bi();ed();ms=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?Cr([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 nd(r){if(r==null||r.hashFn==null)throw new Error("please define an options.hashFn");let e={bits:r.bits??8,hash:td(r.hashFn)};return new Je(e)}var sd=p(()=>{"use strict";Xu();rd()});async function qm(r){return(await Hu.encode(r)).slice(0,8).reverse()}async function*od(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 y=s.get(g);if(y==null)continue;let b=g.toString(16).toUpperCase().padStart(i,"0");if(y instanceof Je){let S;for await(let A of od(y,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(y.value)){let S=y.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+y.key;o.push({Name:v,Tsize:Number(A.size),Hash:A.cid}),a+=A.size}else{let S=y.value;if(S.cid==null)continue;let A=b+y.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 H({type:"hamt-sharded-directory",data:c,fanout:BigInt(r.tableSize()),hashType:Si,mtime:t?.mtime,mode:t?.mode}),u={Data:l.marshal(),Links:o},d=Q(J(u)),h=await le(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 cd(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 Je){let{size:y,cid:b}=await cd(m,null,t,n);o.push({Name:g,Tsize:Number(y),Hash:b}),a+=g.length+b.byteLength}else if(ad(m.value)){let y=m.value,b=y.nodeSize;if(y.cid==null)throw new Error("Child directory has not been persisted");o.push({Name:g+m.key,Tsize:Number(b),Hash:y.cid}),a+=g.length+y.cid.byteLength}else{let y=m.value,b=g+m.key,S=y.size;o.push({Name:b,Tsize:Number(S),Hash:y.cid}),a+=g.length+y.cid.byteLength}}let c=Uint8Array.from(s.bitField().reverse()),l=new H({type:"hamt-sharded-directory",data:c,fanout:BigInt(r.tableSize()),hashType:Si,mtime:e?.mtime,mode:e?.mode}),u=Q(J({Data:l.marshal(),Links:o}));return{cid:await le(u,t,n),size:n.shardSplitStrategy==="links-bytes"?a:u.length}}var Io,id,ld=p(()=>{"use strict";lt();Vu();Po();sd();$t();Pr();ds();qt();Io=class extends ke{constructor(t,n){super(t,n);f(this,"bucket");this.bucket=nd({hashFn:qm,bits:n.shardFanoutBits??jn})}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 Xt,n=await cd(this.bucket,this,t,this.options);return this.nodeSize=n.size,this.nodeSize}async*flush(t){for await(let n of od(this.bucket,t,this,this.options))yield{...n,path:this.path}}},id=Io});async function Bo(r,e){let t=e,n=e.options.shardSplitThresholdBytes??Jn;e instanceof ft&&await e.estimateNodeSize()>n&&(t=await Hm(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 Bo(t,s)}return t}async function Hm(r){let e=new id({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 ud=p(()=>{"use strict";Pr();xo();ld()});var dd,hd=p(()=>{"use strict";dd=(r="")=>r.split(/(?<!\\)\//).filter(Boolean)});async function Vm(r,e,t){let n=dd(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 Bo(null,i);else{let u=await i.get(c);(u==null||!(u instanceof ke))&&(u=new ft({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*fd(r,e){if(!(r instanceof ke)){r.unixfs?.isDirectory()===!0&&(yield r);return}yield*r.flush(e)}function pd(r){return async function*(t,n){let s=new ft({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 Vm(a,s,r),a.unixfs?.isDirectory()!==!0&&(yield a)}if(r.wrapWithDirectory||o&&s.childCount()>1)yield*fd(s,n);else for(let a of s.eachChildSeries())a!=null&&(yield*fd(a.child,n))}}var md=p(()=>{"use strict";xo();ds();ud();hd()});var gd={};k(gd,{InvalidAvgChunkSizeError:()=>go,InvalidChunkSizeError:()=>yo,InvalidContentError:()=>ye,InvalidMinChunkSizeError:()=>wo,InvalidParametersError:()=>Jt,InvalidShardingStrategyError:()=>Ve,importByteStream:()=>jm,importBytes:()=>Ym,importDirectory:()=>Gm,importFile:()=>To,importer:()=>Do});async function*Do(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=Qn,i=174):t.profile==="unixfs-v1-2025"&&(t.shardSplitStrategy=t.shardSplitStrategy??"block-bytes",t.cidVersion=t.cidVersion??1,t.rawLeaves=t.rawLeaves??!0,s=_c,i=1024);let o=t.wrapWithDirectory??$c,a=t.shardSplitThresholdBytes??Jn,c=t.shardSplitStrategy??Lc,l=t.shardFanoutBits??jn,u=t.cidVersion??1,d=t.rawLeaves??Wc,h=t.leafType??qc,m=t.fileImportConcurrency??Kc,g=t.blockWriteConcurrency??Oc,y=t.reduceSingleLeafToSelf??zc,b=t.chunker??Hc({chunkSize:s}),S=t.chunkValidator??Ru(),A=t.dagBuilder??Du({chunker:b,chunkValidator:S,wrapWithDirectory:o,layout:t.layout??bo({maxChildrenPerNode:i}),bufferImporter:t.bufferImporter??vu({cidVersion:u,rawLeaves:d,leafType:h,onProgress:t.onProgress}),blockWriteConcurrency:g,reduceSingleLeafToSelf:y,cidVersion:u,onProgress:t.onProgress,dirBuilder:t.dirBuilder,fileBuilder:t.fileBuilder}),v=t.treeBuilder??pd({wrapWithDirectory:o,shardSplitThresholdBytes:a,shardSplitStrategy:c,shardFanoutBits:l,cidVersion:u,onProgress:t.onProgress});for await(let E of v(Er(A(n,e),m),e))yield{cid:E.cid,path:E.path,unixfs:E.unixfs,size:E.size}}async function To(r,e,t={}){let n=await gi(Do([r],e,t));if(n==null)throw new Jt("Nothing imported");return n}async function Gm(r,e,t={}){let n=await gi(Do([r],e,t));if(n==null)throw new Jt("Nothing imported");return n}async function Ym(r,e,t={}){return To({content:r},e,t)}async function jm(r,e,t={}){return To({content:r},e,t)}var vo=p(()=>{"use strict";Ic();wi();Vc();Pr();ku();Tu();Fu();Gr();Lu();md();Gr()});function Jm(r){return typeof r?.then=="function"}var gs,yd=p(()=>{"use strict";fs();Uu();Ir();ct();Kr();Lt();Yr();gs=class extends Ee{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=Nu(n);if(Jm(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(j.encode(t.multihash.bytes),n),t}*get(t,n){n?.signal?.throwIfAborted();let s=this.data.get(j.encode(t.multihash.bytes));if(s==null)throw new je;yield*s}has(t,n){return n?.signal?.throwIfAborted(),this.data.has(j.encode(t.multihash.bytes))}async delete(t,n){n?.signal?.throwIfAborted(),this.data.delete(j.encode(t.multihash.bytes))}*getAll(t){t?.signal?.throwIfAborted();for(let[n,s]of this.data.entries())yield{cid:$.createV1(Ot,ts(j.decode(n))),bytes:(async function*(){yield*s})()},t?.signal?.throwIfAborted()}}});function ys(r,e){if(typeof r=="string")return Qm(r);if(typeof r=="number")return eg(r,e);throw new Error(`Value provided to ms() must be a string or number. value=${JSON.stringify(r)}`)}function Qm(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 Zm(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 Xm(r){let e=Math.abs(r);return e>=315576e5?mt(r,e,315576e5,"year"):e>=26298e5?mt(r,e,26298e5,"month"):e>=6048e5?mt(r,e,6048e5,"week"):e>=864e5?mt(r,e,864e5,"day"):e>=36e5?mt(r,e,36e5,"hour"):e>=6e4?mt(r,e,6e4,"minute"):e>=1e3?mt(r,e,1e3,"second"):`${r} ms`}function eg(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?Xm(r):Zm(r)}function mt(r,e,t,n){let s=e>=t*1.5;return`${Math.round(r/t)} ${n}${s?"s":""}`}var Ro=p(()=>{"use strict"});function Fo(r){t.debug=t,t.default=t,t.coerce=c,t.disable=i,t.enable=s,t.enabled=o,t.humanize=ys,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,y;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 Ce=t.formatters[O];if(typeof Ce=="function"){let gt=S[C];T=Ce.call(A,gt),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,y=t.enabled(u)),y),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 wd=p(()=>{"use strict";Ro()});function rg(){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 ng(r){if(r[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+r[0]+(this.useColors?"%c ":" ")+"+"+ys(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 ig(r){try{r?ws?.setItem("debug",r):ws?.removeItem("debug")}catch{}}function og(){let r;try{r=ws?.getItem("debug")}catch{}return!r&&typeof globalThis.process<"u"&&"env"in globalThis.process&&(r=globalThis.process.env.DEBUG),r}function ag(){try{return localStorage}catch{}}function cg(r){r.j=function(e){try{return JSON.stringify(e)}catch(t){return"[UnexpectedJSONParseError]: "+t.message}}}var ws,tg,sg,bd,Sd=p(()=>{"use strict";Ro();wd();ws=ag(),tg=["#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"];sg=console.debug??console.log??(()=>{});bd=Fo({formatArgs:ng,save:ig,load:og,useColors:rg,setupFormatters:cg,colors:tg,storage:ws,log:sg})});var Z,Ad=p(()=>{"use strict";Sd();Z=bd});function xd(r,e=""){let t=vd(r.message),n=vd(r.stack);return t!=null&&n!=null?n.includes(t)?`${n.split(`
|
|
950
|
+
`}}});var Xn={};x(Xn,{RecoverySimulator:()=>Er,educationalModules:()=>Qn,getAllTopics:()=>zc,getExplainer:()=>Oc,searchExplainers:()=>Wc});var Cr=p(()=>{"use strict";Kc();$c()});var es={};x(es,{deriveMLKemKeypair:()=>Zn,mlkemDecrypt:()=>Ri,mlkemDecryptWithKey:()=>Jc,mlkemEncrypt:()=>Ti,mlkemEncryptWithKey:()=>jc});import{createMlKem1024 as Bi}from"mlkem";import{hkdf as Vc}from"@noble/hashes/hkdf.js";import{sha256 as Gc}from"@noble/hashes/sha2.js";function De(r){r.fill(0)}function Dt(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 st(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 Yc(r,e){let t=Vc(Gc,r,new Uint8Array(0),new TextEncoder().encode(sp),32);try{return await crypto.subtle.importKey("raw",t,"AES-KW",!1,[e])}finally{De(t)}}async function ip(r,e,t){if(r===2){let s=await Yc(e,"unwrapKey");return crypto.subtle.unwrapKey("raw",t,s,"AES-KW",{name:"AES-GCM"},!1,["decrypt"])}let n=new Uint8Array(32);try{for(let s=0;s<32;s++)n[s]=t[s]^e[s];return await crypto.subtle.importKey("raw",n,{name:"AES-GCM"},!1,["decrypt"])}finally{De(n)}}async function Zn(r,e="mlkem-v1"){let t=await Bi(),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=Vc(Gc,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{De(s),De(n)}}async function Ti(r,e){let t=await Bi(),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"},!0,["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),y=[];for(let w of n){let b=typeof w=="string"?st(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=await Yc(A,"wrapKey"),I=new Uint8Array(await crypto.subtle.wrapKey("raw",c,v,"AES-KW")),k=new Uint8Array(S.length+I.length);k.set(S,0),k.set(I,S.length),y.push({publicKey:Dt(b),ciphertext:Dt(k)})}finally{De(A)}}return{version:2,recipients:y,encryptedData:Dt(h),iv:Dt(i),authTag:Dt(m)}}finally{De(s)}}async function Ri(r,e,t){let n=await Bi(),s=typeof e=="string"?st(e):e;if(s.length!==3168)throw new Error(`Invalid ML-KEM private key size: ${s.length} (expected 3168)`);let i=r.version??1;if(i!==1&&i!==2)throw new Error(`Unsupported payload version: ${String(i)}`);let o=st(r.encryptedData),a=st(r.iv),c=st(r.authTag);if(a.length!==Hc)throw new Error(`Invalid IV size: ${a.length} (expected ${Hc})`);if(c.length!==qc)throw new Error(`Invalid auth tag size: ${c.length} (expected ${qc})`);let l=Ii+np[i],u=async m=>{let y=st(m);if(y.length!==l)throw new Error(`Invalid combined ciphertext size: ${y.length} (expected ${l})`);let w=y.slice(0,Ii),b=y.slice(Ii),S=n.decap(w,s);try{return await ip(i,S,b)}finally{De(S)}},d=new Uint8Array(o.length+c.length);d.set(o,0),d.set(c,o.length);let h=async m=>{let y=await u(m),w=await crypto.subtle.decrypt({name:"AES-GCM",iv:a,tagLength:128},y,d);return new TextDecoder().decode(w)};if(t){let m=typeof t=="string"?st(t):t,y=Dt(m),w=r.recipients.find(b=>b.publicKey===y);if(!w)throw new Error("Public key not found in recipients list");return h(w.ciphertext)}for(let m of r.recipients)try{return await h(m.ciphertext)}catch{continue}throw new Error("No matching recipient found for this private key")}async function jc(r,e,t,n="mlkem-v1"){let s=await Zn(e,n);try{let i=[s.publicKey,...t];return await Ti(r,i)}finally{De(s.privateKey)}}async function Jc(r,e,t="mlkem-v1"){let n=await Zn(e,t);try{return await Ri(r,n.privateKey,n.publicKey)}finally{De(n.privateKey)}}var Ii,np,Hc,qc,sp,Pr=p(()=>{"use strict";Ii=1568,np={1:32,2:40},Hc=12,qc=16,sp="w3pk-mlkem-kek-v2"});function op(r){return r[Symbol.asyncIterator]!=null}function ap(r){if(op(r))return(async()=>{for await(let e of r)return e})();for(let e of r)return e}var Di,Zc=p(()=>{"use strict";Di=ap});function cp(r){return r[Symbol.asyncIterator]!=null}function lp(r,e=1){return e=Number(e),cp(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 ts,Fi=p(()=>{"use strict";ts=lp});async function*Br(r,e=1){for await(let t of ts(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 Mi=p(()=>{"use strict";Fi()});function Fe(r=0){return new Uint8Array(r)}function ne(r=0){return new Uint8Array(r)}var it=p(()=>{"use strict"});function up(r){return r?.buffer instanceof ArrayBuffer}function el(r){if(up(r))return r;let e=r.slice();return new Uint8Array(e.buffer,0,e.byteLength)}var tl=p(()=>{"use strict"});function Tr(r,e){e==null&&(e=r.reduce((s,i)=>s+i.length,0));let t=ne(e),n=0;for(let s of r)t.set(s,n),n+=s.length;return el(t)}var Ui=p(()=>{"use strict";it();tl()});function rl(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 nl=p(()=>{"use strict"});function sl(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 rs(r){return!!r?.[ol]}var ol,il,Ft,al=p(()=>{"use strict";it();Ui();nl();ol=Symbol.for("@achingbrain/uint8arraylist");Ft=class r{constructor(...e){f(this,"bufs");f(this,"length");f(this,il,!0);this.bufs=[],this.length=0,e.length>0&&this.appendAll(e)}*[(il=ol,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(rs(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(rs(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=sl(this.bufs,e);return t.buf[t.index]}set(e,t){let n=sl(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(rs(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 Tr(n,s)}subarray(e,t){let{bufs:n,length:s}=this._subList(e,t);return n.length===1?n[0]:Tr(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(!rs(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=ne(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=ne(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(!rl(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 Ni,ns,ss,cl,is,ll,ul,dl,hl,fl,pl,ml,Rr=p(()=>{"use strict";Ni=BigInt(34),ns=8,ss=262144,cl="links-bytes",is=262144,ll=1048576,ul=50,dl=10,hl=!0,fl=!0,pl=!1,ml="file"});var yl,gl=p(()=>{"use strict";al();Rr();yl=(r={})=>{let e=r.chunkSize??is;return async function*(n){let s=new Ft,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 Ft,i=0;else{let l=new Ft;l.append(s.sublist(e)),s=l,i-=e}(!o||i>0)&&(yield s.subarray(0,i))}}});function wl(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 me(r){if(r instanceof Uint8Array&&r.constructor.name==="Uint8Array")return ot(r);if(r instanceof ArrayBuffer)return new Uint8Array(r);if(ArrayBuffer.isView(r))return ot(new Uint8Array(r.buffer,r.byteOffset,r.byteLength));throw new Error("Unknown type, must be binary type")}function bl(r){return new TextEncoder().encode(r)}function Sl(r){return new TextDecoder().decode(r)}function dp(r){return r?.buffer instanceof ArrayBuffer}function ot(r){return dp(r)?r:r.slice()}var eb,We=p(()=>{"use strict";eb=new Uint8Array(0)});function hp(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(y){if(y instanceof Uint8Array||(ArrayBuffer.isView(y)?y=new Uint8Array(y.buffer,y.byteOffset,y.byteLength):Array.isArray(y)&&(y=Uint8Array.from(y))),!(y instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(y.length===0)return"";for(var w=0,b=0,S=0,A=y.length;S!==A&&y[S]===0;)S++,w++;for(var v=(A-S)*u+1>>>0,I=new Uint8Array(v);S!==A;){for(var k=y[S],U=0,F=v-1;(k!==0||U<b)&&F!==-1;F--,U++)k+=256*I[F]>>>0,I[F]=k%a>>>0,k=k/a>>>0;if(k!==0)throw new Error("Non-zero carry");b=U,S++}for(var W=v-b;W!==v&&I[W]===0;)W++;for(var Pe=c.repeat(w);W<v;++W)Pe+=r.charAt(I[W]);return Pe}function h(y){if(typeof y!="string")throw new TypeError("Expected String");if(y.length===0)return new Uint8Array;var w=0;if(y[w]!==" "){for(var b=0,S=0;y[w]===c;)b++,w++;for(var A=(y.length-w)*l+1>>>0,v=new Uint8Array(A);y[w];){var I=t[y.charCodeAt(w)];if(I===255)return;for(var k=0,U=A-1;(I!==0||k<S)&&U!==-1;U--,k++)I+=a*v[U]>>>0,v[U]=I%256>>>0,I=I/256>>>0;if(I!==0)throw new Error("Non-zero carry");S=k,w++}if(y[w]!==" "){for(var F=A-S;F!==A&&v[F]===0;)F++;for(var W=new Uint8Array(b+(A-F)),Pe=b;F!==A;)W[Pe++]=v[F++];return W}}}function m(y){var w=h(y);if(w)return w;throw new Error(`Non-${e} character`)}return{encode:d,decodeUnsafe:h,decode:m}}var fp,pp,xl,vl=p(()=>{"use strict";fp=hp,pp=fp,xl=pp});function kl(r,e){return new Ki({...r.decoders??{[r.prefix]:r},...e.decoders??{[e.prefix]:e}})}function Mt({name:r,prefix:e,encode:t,decode:n}){return new Oi(r,e,t,n)}function $e({name:r,prefix:e,alphabet:t}){let{encode:n,decode:s}=xl(t,r);return Mt({prefix:e,name:r,encode:n,decode:i=>me(s(i))})}function mp(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 yp(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 gp(r){let e={};for(let t=0;t<r.length;++t)e[r[t]]=t;return e}function _({name:r,prefix:e,bitsPerChar:t,alphabet:n}){let s=gp(n);return Mt({prefix:e,name:r,encode(i){return yp(i,n,t)},decode(i){return mp(i,s,t,r)}})}var Li,_i,Ki,Oi,ye=p(()=>{"use strict";We();vl();Li=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")}},_i=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 kl(this,e)}},Ki=class{constructor(e){f(this,"decoders");this.decoders=e}or(e){return kl(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`)}};Oi=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 Li(e,t,n),this.decoder=new _i(e,t,s)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}}});var zi={};x(zi,{base32:()=>Q,base32hex:()=>Ap,base32hexpad:()=>vp,base32hexpadupper:()=>kp,base32hexupper:()=>xp,base32pad:()=>bp,base32padupper:()=>Sp,base32upper:()=>wp,base32z:()=>Ep});var Q,wp,bp,Sp,Ap,xp,vp,kp,Ep,Dr=p(()=>{"use strict";ye();Q=_({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),wp=_({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),bp=_({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),Sp=_({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),Ap=_({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),xp=_({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),vp=_({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),kp=_({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),Ep=_({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5})});var Wi={};x(Wi,{base36:()=>Fr,base36upper:()=>Cp});var Fr,Cp,$i=p(()=>{"use strict";ye();Fr=$e({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),Cp=$e({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"})});var Hi={};x(Hi,{base58btc:()=>ue,base58flickr:()=>Pp});var ue,Pp,os=p(()=>{"use strict";ye();ue=$e({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),Pp=$e({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"})});function Pl(r,e,t){e=e||[],t=t||0;for(var n=t;r>=Rp;)e[t++]=r&255|El,r/=128;for(;r&Tp;)e[t++]=r&255|El,r>>>=7;return e[t]=r|0,Pl.bytes=t-n+1,e}function qi(r,n){var t=0,n=n||0,s=0,i=n,o,a=r.length;do{if(i>=a)throw qi.bytes=0,new RangeError("Could not decode varint");o=r[i++],t+=s<28?(o&Cl)<<s:(o&Cl)*Math.pow(2,s),s+=7}while(o>=Fp);return qi.bytes=i-n,t}var Ip,El,Bp,Tp,Rp,Dp,Fp,Cl,Mp,Up,Np,Lp,_p,Kp,Op,zp,Wp,$p,Hp,qp,Mr,Il=p(()=>{"use strict";Ip=Pl,El=128,Bp=127,Tp=~Bp,Rp=Math.pow(2,31);Dp=qi,Fp=128,Cl=127;Mp=Math.pow(2,7),Up=Math.pow(2,14),Np=Math.pow(2,21),Lp=Math.pow(2,28),_p=Math.pow(2,35),Kp=Math.pow(2,42),Op=Math.pow(2,49),zp=Math.pow(2,56),Wp=Math.pow(2,63),$p=function(r){return r<Mp?1:r<Up?2:r<Np?3:r<Lp?4:r<_p?5:r<Kp?6:r<Op?7:r<zp?8:r<Wp?9:10},Hp={encode:Ip,decode:Dp,encodingLength:$p},qp=Hp,Mr=qp});function Ur(r,e=0){return[Mr.decode(r,e),Mr.decode.bytes]}function Ut(r,e,t=0){return Mr.encode(r,e,t),e}function Nt(r){return Mr.encodingLength(r)}var cs=p(()=>{"use strict";Il()});function _t(r,e){let t=e.byteLength,n=Nt(r),s=n+Nt(t),i=new Uint8Array(s+t);return Ut(r,i,0),Ut(t,i,n),i.set(e,s),new Lt(r,t,e,i)}function ls(r){let e=me(r),[t,n]=Ur(e),[s,i]=Ur(e.subarray(n)),o=e.subarray(n+i);if(o.byteLength!==s)throw new Error("Incorrect length");return new Lt(t,s,o,e)}function Bl(r,e){if(r===e)return!0;{let t=e;return r.code===t.code&&r.size===t.size&&t.bytes instanceof Uint8Array&&wl(r.bytes,t.bytes)}}var Lt,Ot=p(()=>{"use strict";We();cs();Lt=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=ot(n),this.bytes=ot(s)}}});var Vi=p(()=>{"use strict"});function Tl(r,e){let{bytes:t,version:n}=r;return n===0?Gp(t,Gi(r),e??ue.encoder):Yp(t,Gi(r),e??Q.encoder)}function Gi(r){let e=Rl.get(r);if(e==null){let t=new Map;return Rl.set(r,t),t}return e}function Vp(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 Fr.prefix:{let t=e??Fr;return[Fr.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 Gp(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 Yp(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 Dl(r,e,t){let n=Nt(r),s=n+Nt(e),i=new Uint8Array(s+t.byteLength);return Ut(r,i,0),Ut(e,i,n),i.set(t,s),i}var Rl,Fl,q,Nr,jp,Jp,at=p(()=>{"use strict";Dr();$i();os();We();Ot();cs();Vi();Rl=new WeakMap;q=class r{constructor(e,t,n,s){f(this,"code");f(this,"version");f(this,"multihash");f(this,"bytes");f(this,"/");f(this,Fl,"CID");this.code=t,this.version=e,this.multihash=n,this.bytes=ot(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!==Nr)throw new Error("Cannot convert a non dag-pb CID to CIDv0");if(t.code!==jp)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=_t(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&&Bl(e.multihash,n.multihash)}toString(e){return Tl(this,e)}toJSON(){return{"/":Tl(this)}}link(){return this}[(Fl=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??Dl(n,s,i.bytes))}else if(t[Jp]===!0){let{version:n,multihash:s,code:i}=t,o=ls(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!==Nr)throw new Error(`Version 0 CID must use dag-pb (code: ${Nr}) block encoding`);return new r(e,t,n,n.bytes)}case 1:{let s=Dl(e,t,n.bytes);return new r(e,t,n,s)}default:throw new Error("Invalid version")}}static createV0(e){return r.create(0,Nr,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=me(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 Lt(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]=Ur(e.subarray(t));return t+=h,d},s=n(),i=Nr;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]=Vp(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 Gi(i).set(n,e),i}};Nr=112,jp=18;Jp=Symbol.for("@ipld/js-cid/CID")});function Yi(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 us(r,e){let t;[t,e]=Yi(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 Ml(r,e){let t;return[t,e]=Yi(r,e),[t&7,t>>3,e]}function Xp(r){let e={},t=r.length,n=0;for(;n<t;){let s,i;if([s,i,n]=Ml(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]=us(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]=us(r,n),e.Name=Qp.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]=Yi(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 Ul(r){let e=r.length,t=0,n,s=!1,i;for(;t<e;){let a,c;if([a,c,t]=Ml(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]=us(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]=us(r,t),n.push(Xp(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 Qp,Nl=p(()=>{"use strict";Qp=new TextDecoder});function em(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=Lr(e,t,r.Tsize)-1,e[t]=24}if(typeof r.Name=="string"){let n=_l.encode(r.Name);t-=n.length,e.set(n,t),t=Lr(e,t,n.length)-1,e[t]=18}return r.Hash&&(t-=r.Hash.length,e.set(r.Hash,t),t=Lr(e,t,r.Hash.length)-1,e[t]=10),e.length-t}function Kl(r){let e=rm(r),t=new Uint8Array(e),n=e;if(r.Data&&(n-=r.Data.length,t.set(r.Data,n),n=Lr(t,n,r.Data.length)-1,t[n]=10),r.Links)for(let s=r.Links.length-1;s>=0;s--){let i=em(r.Links[s],t.subarray(0,n));n-=i,n=Lr(t,n,i)-1,t[n]=18}return t}function tm(r){let e=0;if(r.Hash){let t=r.Hash.length;e+=1+t+zt(t)}if(typeof r.Name=="string"){let t=_l.encode(r.Name).length;e+=1+t+zt(t)}return typeof r.Tsize=="number"&&(e+=1+zt(r.Tsize)),e}function rm(r){let e=0;if(r.Data){let t=r.Data.length;e+=1+t+zt(t)}if(r.Links)for(let t of r.Links){let n=tm(t);e+=1+n+zt(n)}return e}function Lr(r,e,t){e-=zt(t);let n=e;for(;t>=Zp;)r[e++]=t&127|128,t/=128;for(;t>=128;)r[e++]=t&127|128,t>>>=7;return r[e]=t,n}function zt(r){return r%2===0&&r++,Math.floor((nm(r)+6)/7)}function nm(r){let e=0;return r>=Ll&&(r=Math.floor(r/Ll),e=32),r>=65536&&(r>>>=16,e+=16),r>=256&&(r>>>=8,e+=8),e+sm[r]}var _l,Ll,Zp,sm,Ol=p(()=>{"use strict";_l=new TextEncoder,Ll=2**32,Zp=2**31;sm=[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 Wl(r,e){if(r===e)return 0;let t=r.Name?ji.encode(r.Name):[],n=e.Name?ji.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 zl(r,e){return!Object.keys(r).some(t=>!e.includes(t))}function $l(r){if(typeof r.asCID=="object"){let t=q.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=q.asCID(r.Hash);try{t||(typeof r.Hash=="string"?t=q.parse(r.Hash):r.Hash instanceof Uint8Array&&(t=q.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=ji.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($l),e.Links.sort(Wl);else throw new TypeError("Invalid DAG-PB form");else e.Links=[];return e}function Ji(r){if(!r||typeof r!="object"||Array.isArray(r)||r instanceof Uint8Array||r["/"]&&r["/"]===r.bytes)throw new TypeError("Invalid DAG-PB form");if(!zl(r,im))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(!zl(t,om))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&&Wl(t,r.Links[e-1])===-1)throw new TypeError("Invalid DAG-PB form (links must be sorted by Name bytes)")}}function Hl(r,e=[]){return X({Data:r,Links:e})}function ql(r,e,t){return $l({Hash:t,Name:r,Tsize:e})}function Vl(r){return r instanceof ArrayBuffer?new Uint8Array(r,0,r.byteLength):r}var im,om,ji,Gl=p(()=>{"use strict";at();im=["Data","Links"],om=["Hash","Name","Tsize"],ji=new TextEncoder});var _r={};x(_r,{code:()=>cm,createLink:()=>ql,createNode:()=>Hl,decode:()=>lm,encode:()=>Z,name:()=>am,prepare:()=>X,validate:()=>Ji});function Z(r){Ji(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),Kl(e)}function lm(r){let e=Vl(r),t=Ul(e),n={};return t.Data&&(n.Data=t.Data),t.Links&&(n.Links=t.Links.map(s=>{let i={};try{i.Hash=q.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 am,cm,ct=p(()=>{"use strict";at();Nl();Ol();Gl();am="dag-pb",cm=112});var Wt,Kr,Qi=p(()=>{"use strict";Wt=class Wt extends Error{constructor(t="Invalid type"){super(t);f(this,"name",Wt.name);f(this,"code",Wt.code)}};f(Wt,"name","InvalidTypeError"),f(Wt,"code","ERR_INVALID_TYPE");Kr=Wt});function Or(r){if(r<um)return 1;if(r<dm)return 2;if(r<hm)return 3;if(r<Yl)return 4;if(r<jl)return 5;if(r<Jl)return 6;if(r<Ql)return 7;if(Number.MAX_SAFE_INTEGER!=null&&r>Number.MAX_SAFE_INTEGER)throw new RangeError("Could not encode varint");return 8}function Xl(r,e,t=0){switch(Or(r)){case 8:e[t++]=r&255|V,r/=128;case 7:e[t++]=r&255|V,r/=128;case 6:e[t++]=r&255|V,r/=128;case 5:e[t++]=r&255|V,r/=128;case 4:e[t++]=r&255|V,r>>>=7;case 3:e[t++]=r&255|V,r>>>=7;case 2:e[t++]=r&255|V,r>>>=7;case 1:{e[t++]=r&255,r>>>=7;break}default:throw new Error("unreachable")}return e}function Zl(r,e){let t=r[e],n=0;if(n+=t&He,t<V||(t=r[e+1],n+=(t&He)<<7,t<V)||(t=r[e+2],n+=(t&He)<<14,t<V)||(t=r[e+3],n+=(t&He)<<21,t<V)||(t=r[e+4],n+=(t&He)*Yl,t<V)||(t=r[e+5],n+=(t&He)*jl,t<V)||(t=r[e+6],n+=(t&He)*Jl,t<V)||(t=r[e+7],n+=(t&He)*Ql,t<V))return n;throw new RangeError("Could not decode varint")}var um,dm,hm,Yl,jl,Jl,Ql,V,He,Xi=p(()=>{"use strict";it();um=Math.pow(2,7),dm=Math.pow(2,14),hm=Math.pow(2,21),Yl=Math.pow(2,28),jl=Math.pow(2,35),Jl=Math.pow(2,42),Ql=Math.pow(2,49),V=128,He=127});function fm(r){return r.buffer instanceof ArrayBuffer}function eu(r){return fm(r)?r:r.slice()}var tu=p(()=>{"use strict"});function ru(r,e,t){Zi[0]=r,e[t]=qe[0],e[t+1]=qe[1],e[t+2]=qe[2],e[t+3]=qe[3]}function nu(r,e){return qe[0]=r[e],qe[1]=r[e+1],qe[2]=r[e+2],qe[3]=r[e+3],Zi[0]}function su(r,e,t){eo[0]=r,e[t]=$[0],e[t+1]=$[1],e[t+2]=$[2],e[t+3]=$[3],e[t+4]=$[4],e[t+5]=$[5],e[t+6]=$[6],e[t+7]=$[7]}function iu(r,e){return $[0]=r[e],$[1]=r[e+1],$[2]=r[e+2],$[3]=r[e+3],$[4]=r[e+4],$[5]=r[e+5],$[6]=r[e+6],$[7]=r[e+7],eo[0]}var Zi,qe,eo,$,to=p(()=>{"use strict";Zi=new Float32Array([-0]),qe=new Uint8Array(Zi.buffer);eo=new Float64Array([-0]),$=new Uint8Array(eo.buffer)});var pm,mm,se,lt,ou,ro=p(()=>{"use strict";pm=BigInt(Number.MAX_SAFE_INTEGER),mm=BigInt(Number.MIN_SAFE_INTEGER),se=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 lt;if(e<pm&&e>mm)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>ou&&(s=0n,++n>ou&&(n=0n))),new r(Number(s),Number(n))}static fromNumber(e){if(e===0)return lt;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):lt}},lt=new se(0,0);lt.toBigInt=function(){return 0n};lt.zzEncode=lt.zzDecode=function(){return this};lt.length=function(){return 1};ou=4294967296n});function au(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 cu(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 no(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 so=p(()=>{"use strict"});function ge(r,e){return RangeError(`index out of range: ${r.pos} + ${e??1} > ${r.len}`)}function ds(r,e){return(r[e-4]|r[e-3]<<8|r[e-2]<<16|r[e-1]<<24)>>>0}function zr(r){return new io(r instanceof Uint8Array?r:r.subarray())}var io,hs=p(()=>{"use strict";Xi();tu();to();ro();so();io=class{constructor(e){f(this,"buf");f(this,"pos");f(this,"len");f(this,"_slice",Uint8Array.prototype.subarray);this.buf=eu(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,ge(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 ge(this,4);return ds(this.buf,this.pos+=4)}sfixed32(){if(this.pos+4>this.len)throw ge(this,4);return ds(this.buf,this.pos+=4)|0}float(){if(this.pos+4>this.len)throw ge(this,4);let e=nu(this.buf,this.pos);return this.pos+=4,e}double(){if(this.pos+8>this.len)throw ge(this,4);let e=iu(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 ge(this,e);return this.pos+=e,t===n?new Uint8Array(0):this.buf.subarray(t,n)}string(){let e=this.bytes();return cu(e,0,e.length)}skip(e){if(typeof e=="number"){if(this.pos+e>this.len)throw ge(this,e);this.pos+=e}else do if(this.pos>=this.len)throw ge(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 se(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 ge(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 ge(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 ge(this,8);let e=ds(this.buf,this.pos+=4),t=ds(this.buf,this.pos+=4);return new se(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=Zl(this.buf,this.pos);return this.pos+=Or(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 Wr(r,e,t){let n=zr(r);return e.decode(n,void 0,t)}var uu=p(()=>{"use strict";hs()});var oo={};x(oo,{base10:()=>ym});var ym,du=p(()=>{"use strict";ye();ym=$e({prefix:"9",name:"base10",alphabet:"0123456789"})});var ao={};x(ao,{base16:()=>gm,base16upper:()=>wm});var gm,wm,hu=p(()=>{"use strict";ye();gm=_({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),wm=_({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4})});var co={};x(co,{base2:()=>bm});var bm,fu=p(()=>{"use strict";ye();bm=_({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1})});var lo={};x(lo,{base256emoji:()=>km});function xm(r){return r.reduce((e,t)=>(e+=Sm[t],e),"")}function vm(r){let e=[];for(let t of r){let n=t.codePointAt(0);if(n==null)throw new Error(`Invalid character: ${t}`);let s=Am[n];if(s==null)throw new Error(`Non-base256emoji character: ${t}`);e.push(s)}return new Uint8Array(e)}var pu,Sm,Am,km,mu=p(()=>{"use strict";ye();pu=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}"),Sm=pu.reduce((r,e,t)=>(r[t]=e,r),[]),Am=pu.reduce((r,e,t)=>{let n=e.codePointAt(0);if(n==null)throw new Error(`Invalid character: ${e}`);return r[n]=t,r},[]);km=Mt({prefix:"\u{1F680}",name:"base256emoji",encode:xm,decode:vm})});var ho={};x(ho,{base64:()=>uo,base64pad:()=>Em,base64url:()=>Cm,base64urlpad:()=>Pm});var uo,Em,Cm,Pm,fo=p(()=>{"use strict";ye();uo=_({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),Em=_({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),Cm=_({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),Pm=_({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6})});var po={};x(po,{base8:()=>Im});var Im,yu=p(()=>{"use strict";ye();Im=_({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3})});var mo={};x(mo,{identity:()=>Bm});var Bm,gu=p(()=>{"use strict";We();ye();Bm=Mt({prefix:"\0",name:"identity",encode:r=>Sl(r),decode:r=>bl(r)})});var Xb,Zb,wu=p(()=>{"use strict";Xb=new TextEncoder,Zb=new TextDecoder});var Ht={};x(Ht,{code:()=>$t,decode:()=>Fm,encode:()=>Dm,name:()=>Rm});function Dm(r){return me(r)}function Fm(r){return me(r)}var Rm,$t,$r=p(()=>{"use strict";We();Rm="raw",$t=85});var yo={};x(yo,{identity:()=>Nm});function Um(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 _t(bu,Su(r))}var bu,Mm,Su,Nm,Au=p(()=>{"use strict";We();Ot();bu=0,Mm="identity",Su=me;Nm={code:bu,name:Mm,encode:Su,digest:Um}});function ut({name:r,code:e,encode:t,minDigestLength:n,maxDigestLength:s}){return new go(r,e,t,n,s)}function xu(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 _t(e,r)}var Lm,go,fs=p(()=>{"use strict";Ot();Lm=20;go=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??Lm,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?xu(n,this.code,t?.truncate):n.then(s=>xu(s,this.code,t?.truncate))}else throw Error("Unknown type, must be binary type")}}});var bo={};x(bo,{sha256:()=>wo,sha512:()=>_m});function ku(r){return async e=>new Uint8Array(await crypto.subtle.digest(r,e))}var wo,_m,So=p(()=>{"use strict";fs();wo=ut({name:"sha2-256",code:18,encode:ku("SHA-256")}),_m=ut({name:"sha2-512",code:19,encode:ku("SHA-512")})});var Eu=p(()=>{"use strict"});var Cu=p(()=>{"use strict"});var Pu=p(()=>{"use strict"});var Iu=p(()=>{"use strict"});var Bu=p(()=>{"use strict";Eu();Cu();Pu();Vi();Iu()});var Tu=p(()=>{"use strict";We();at();Ot();fs();cs();Bu()});var Ao,fS,Ru=p(()=>{"use strict";du();hu();fu();mu();Dr();$i();os();fo();yu();gu();wu();$r();Au();So();Tu();Ao={...mo,...co,...po,...oo,...ao,...zi,...Wi,...Hi,...ho,...lo},fS={...bo,...yo}});function Fu(r,e,t,n){return{name:r,prefix:e,encoder:{name:r,prefix:e,encode:t},decoder:{decode:n}}}var Du,xo,Km,Mu,Uu=p(()=>{"use strict";Ru();it();Du=Fu("utf8","u",r=>"u"+new TextDecoder("utf8").decode(r),r=>new TextEncoder().encode(r.substring(1))),xo=Fu("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=ne(r.length);for(let t=0;t<r.length;t++)e[t]=r.charCodeAt(t);return e}),Km={utf8:Du,"utf-8":Du,hex:Ao.base16,latin1:xo,ascii:xo,binary:xo,...Ao},Mu=Km});function qt(r,e="utf8"){let t=Mu[e];if(t==null)throw new Error(`Unsupported encoding "${e}"`);return t.decoder.decode(`${t.prefix}${r}`)}var ps=p(()=>{"use strict";Uu()});function vo(r){let e=r??8192,t=e>>>1,n,s=e;return function(o){if(o<1||o>t)return ne(o);s+o>e&&(n=ne(e),s=0);let a=n.subarray(s,s+=o);return(s&7)!==0&&(s=(s|7)+1),a}}var Nu=p(()=>{"use strict";it()});function ko(){}function zm(r){return globalThis.Buffer!=null?ne(r):Om(r)}function Eo(r,e,t){e[t]=r&255}function Wm(r,e,t){for(;r>127;)e[t++]=r&127|128,r>>>=7;e[t]=r}function ms(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 Hr(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 $m(r,e,t){e.set(r,t)}function Hm(r,e,t){e.set(r,t)}function qm(r,e,t){r.length<40?no(r,e,t):e.utf8Write!=null?e.utf8Write(r,t):e.set(qt(r),t)}function Io(){return new qr}var dt,Co,Om,qr,Po,Bo=p(()=>{"use strict";Xi();it();ps();to();ro();Nu();so();dt=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}};Co=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}},Om=vo();qr=class{constructor(){f(this,"len");f(this,"head");f(this,"tail");f(this,"states");this.len=0,this.head=new dt(ko,0,0),this.tail=this.head,this.states=null}_push(e,t,n){return this.tail=this.tail.next=new dt(e,t,n),this.len+=t,this}uint32(e){return this.len+=(this.tail=this.tail.next=new Po((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(ms,10,se.fromNumber(e)):this.uint32(e)}sint32(e){return this.uint32((e<<1^e>>31)>>>0)}uint64(e){let t=se.fromBigInt(e);return this._push(ms,t.length(),t)}uint64Number(e){return this._push(Xl,Or(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=se.fromBigInt(e).zzEncode();return this._push(ms,t.length(),t)}sint64Number(e){let t=se.fromNumber(e).zzEncode();return this._push(ms,t.length(),t)}sint64String(e){return this.sint64(BigInt(e))}bool(e){return this._push(Eo,1,e?1:0)}fixed32(e){return this._push(Hr,4,e>>>0)}sfixed32(e){return this.fixed32(e)}fixed64(e){let t=se.fromBigInt(e);return this._push(Hr,4,t.lo)._push(Hr,4,t.hi)}fixed64Number(e){let t=se.fromNumber(e);return this._push(Hr,4,t.lo)._push(Hr,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(ru,4,e)}double(e){return this._push(su,8,e)}bytes(e){let t=e.length>>>0;return t===0?this._push(Eo,1,0):this.uint32(t)._push($m,t,e)}string(e){let t=au(e);return t!==0?this.uint32(t)._push(no,t,e):this._push(Eo,1,0)}fork(){return this.states=new Co(this),this.head=this.tail=new dt(ko,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 dt(ko,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=zm(this.len),n=0;for(;e!=null;)e.fn(e.val,t,n),n+=e.len,e=e.next;return t}};Po=class extends dt{constructor(t,n){super(Wm,t,n);f(this,"next");this.next=void 0}};globalThis.Buffer!=null&&(qr.prototype.bytes=function(r){let e=r.length>>>0;return this.uint32(e),e>0&&this._push(Hm,e,r),this},qr.prototype.string=function(r){let e=globalThis.Buffer.byteLength(r);return this.uint32(e),e>0&&this._push(qm,e,r),this})});function Vr(r,e){let t=Io();return e.encode(r,t,{lengthDelimited:!1}),t.finish()}var Lu=p(()=>{"use strict";Bo()});function*Gr(r,e,t){let n=zr(r);yield*e.stream(n,void 0,"$",t)}var _u=p(()=>{"use strict";hs()});function gs(r,e,t,n,s){return{name:r,type:e,encode:t,decode:n,stream:s}}var ys,To=p(()=>{"use strict";ys={VARINT:0,BIT64:1,LENGTH_DELIMITED:2,START_GROUP:3,END_GROUP:4,BIT32:5}});function Ro(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 gs("enum",ys.VARINT,t,n,s)}var Ku=p(()=>{"use strict";To()});function Yr(r,e,t){return gs("message",ys.LENGTH_DELIMITED,r,e,t)}var Ou=p(()=>{"use strict";To()});var jr,zu=p(()=>{"use strict";uu();Lu();_u();Ku();Ou();hs();Bo();jr=class extends Error{constructor(){super(...arguments);f(this,"code","ERR_MAX_LENGTH");f(this,"name","MaxLengthError")}}});var we,Jr,Wu,$u=p(()=>{"use strict";zu();(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=()=>Ro(t)})(e=r.DataType||(r.DataType={}));let n;r.codec=()=>(n==null&&(n=Yr((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),Jr.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 jr('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=Jr.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 jr('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*Jr.codec().stream(a,a.uint32(),`${l}.mtime`,{limits:u.limits?.mtime});break}default:{a.skipType(m&7);break}}}})),n);function s(a){return Vr(a,r.codec())}r.encode=s;function i(a,c){return Wr(a,r.codec(),c)}r.decode=i;function o(a,c){return Gr(a,r.codec(),c)}r.stream=o})(we||(we={}));(function(r){let e;r.codec=()=>(e==null&&(e=Yr((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 Vr(i,r.codec())}r.encode=t;function n(i,o){return Wr(i,r.codec(),o)}r.decode=n;function s(i,o){return Gr(i,r.codec(),o)}r.stream=s})(Jr||(Jr={}));(function(r){let e;r.codec=()=>(e==null&&(e=Yr((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 Vr(i,r.codec())}r.encode=t;function n(i,o){return Wr(i,r.codec(),o)}r.decode=n;function s(i,o){return Gr(i,r.codec(),o)}r.stream=s})(Wu||(Wu={}))});var Hu,Vm,qu,Vu,G,Vt=p(()=>{"use strict";Qi();$u();Qi();Hu={Raw:"raw",Directory:"directory",File:"file",Metadata:"metadata",Symlink:"symlink",HAMTShard:"hamt-sharded-directory"},Vm=["directory","hamt-sharded-directory"],qu=parseInt("0644",8),Vu=parseInt("0755",8),G=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(Hu).includes(t))throw new Kr("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=we.decode(e),n=new r({type:Hu[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()?Vu:qu:this._mode=e&4095}get mode(){return this._mode}isDirectory(){return Vm.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=we.DataType.Raw;break;case"directory":e=we.DataType.Directory;break;case"file":e=we.DataType.File;break;case"metadata":e=we.DataType.Metadata;break;case"symlink":e=we.DataType.Symlink;break;case"hamt-sharded-directory":e=we.DataType.HAMTShard;break;default:throw new Kr(`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===qu&&!this.isDirectory()&&(n=void 0),n===Vu&&this.isDirectory()&&(n=void 0));let s;return this.mtime!=null&&(s={Seconds:this.mtime.secs,FractionalNanoseconds:this.mtime.nsecs}),we.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,ws=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,Gt=p(()=>{"use strict";ct();at();So();de=async(r,e,t)=>{t.codec==null&&(t.codec=_r);let n=await wo.digest(r),s=q.create(t.cidVersion??1,t.codec.code,n);return await e.put(s,r,t),s}});function Yu(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=Ht,a.cidVersion=1):(o=new G({type:r.leafType,data:i}),i=Z({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 ju=p(()=>{"use strict";ct();Vt();$r();ws();Gt()});var Yt,Zt,jt,Do,Jt,Fo,Qt,Mo,Xt,be,Ve,Qr=p(()=>{"use strict";Yt=class Yt extends Error{constructor(t="Invalid parameters"){super(t);f(this,"name",Yt.name);f(this,"code",Yt.code)}};f(Yt,"name","InvalidParametersError"),f(Yt,"code","ERR_INVALID_PARAMS");Zt=Yt,jt=class jt extends Error{constructor(t="Invalid avg chunk size"){super(t);f(this,"name",jt.name);f(this,"code",jt.code)}};f(jt,"name","InvalidAvgChunkSizeError"),f(jt,"code","ERR_INVALID_AVG_CHUNK_SIZE");Do=jt,Jt=class Jt extends Error{constructor(t="Invalid chunk size"){super(t);f(this,"name",Jt.name);f(this,"code",Jt.code)}};f(Jt,"name","InvalidChunkSizeError"),f(Jt,"code","ERR_INVALID_CHUNK_SIZE");Fo=Jt,Qt=class Qt extends Error{constructor(t="Invalid min chunk size"){super(t);f(this,"name",Qt.name);f(this,"code",Qt.code)}};f(Qt,"name","InvalidMinChunkSizeError"),f(Qt,"code","ERR_INVALID_MIN_CHUNK_SIZE");Mo=Qt,Xt=class Xt extends Error{constructor(t="Invalid content"){super(t);f(this,"name",Xt.name);f(this,"code",Xt.code)}};f(Xt,"name","InvalidContentError"),f(Xt,"code","ERR_INVALID_CONTENT");be=Xt,Ve=class extends Error{constructor(){super(...arguments);f(this,"name",be.name);f(this,"code",be.code)}};f(Ve,"name","InvalidShardingStrategyError"),f(Ve,"code","ERR_SHARDING_STRATEGY")});var Ju,Qu=p(()=>{"use strict";ct();Vt();Gt();Ju=async(r,e,t)=>{let n=new G({type:"directory",mtime:r.mtime,mode:r.mode}),s=Z(X({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*Gm(r,e,t){let n=-1,s;for await(let i of Br(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 Xu(r){return r.single===!0}var Ym,Zu,ed=p(()=>{"use strict";ct();Vt();Mi();$r();ws();Gt();Ym=(r,e,t)=>async function(s){if(s.length===1&&Xu(s[0])&&t.reduceSingleLeafToSelf){let u=s[0],d=u.block;return Xu(u)&&(r.mtime!==void 0||r.mode!==void 0)&&(u.unixfs=new G({type:"file",mtime:r.mtime,mode:r.mode,data:u.block}),d={Data:u.unixfs.marshal(),Links:[]},u.block=Z(X(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 G({type:"file",mtime:r.mtime,mode:r.mode}),o=s.filter(u=>u.cid.code===$t&&u.size>0||u.unixfs!=null&&u.unixfs.data==null&&u.unixfs.fileSize()>0n?!0:!!u.unixfs?.data?.length).map(u=>u.cid.code===$t?(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=Z(X(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}},Zu=async(r,e,t)=>t.layout(Gm(r,e,t),Ym(r,e,t))});function jm(r){return Symbol.iterator in r}function Jm(r){return Symbol.asyncIterator in r}function Qm(r){try{if(r instanceof Uint8Array)return(async function*(){yield r})();if(jm(r))return(async function*(){yield*r})();if(Jm(r))return r}catch{throw new be("Content was invalid")}throw new be("Content was invalid")}function td(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("/")),Xm(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(Qm(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??Zu;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??Ju;yield async()=>a(o,n,r)}else throw new Error("Import candidate must have content or path or both")}}}function Xm(r){return r.content!=null}var rd=p(()=>{"use strict";ws();Qr();Qu();ed()});var nd,sd=p(()=>{"use strict";ps();Qr();nd=()=>async function*(e){for await(let t of e){if(t.length===void 0)throw new be("Content was invalid");if(typeof t=="string"||t instanceof String)yield qt(t.toString());else if(Array.isArray(t))yield Uint8Array.from(t);else if(t instanceof Uint8Array)yield t;else throw new be("Content was invalid")}}});function Uo(r){let e=r?.maxChildrenPerNode??Zm;return async function t(n,s){let i=[];for await(let o of ts(n,e))i.push(await s(o));return i.length>1?t(i,s):i[0]}}var Zm,id=p(()=>{"use strict";Fi();Zm=174});function ey(r){return r[Symbol.asyncIterator]!=null}function ty(r){if(ey(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 od,ad=p(()=>{"use strict";od=ty});var cd=p(()=>{"use strict";id()});var Ee,bs=p(()=>{"use strict";at();Ee=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 ny(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+ry[r]}function Ge(r){return r%2===0&&r++,Math.floor((ny(r)+6)/7)}function Ss(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 ld(r,e,t){let n=1+Ge(e)+e;return n+=1+Ge(r)+r,n+=1+Ge(t),1+Ge(n)+n}function ud(r,e){let t=2;if(r!==void 0&&r!==sy&&(t+=1+Ge(r)),e!=null){let n=0,s=Number(e.secs);s<0?n+=11:n+=1+Ge(s),e.nsecs!=null&&(n+=5),t+=1+Ge(n)+n}return 1+Ge(t)+t}var ry,sy,dd=p(()=>{"use strict";ry=[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];sy=493});function No(r,e){return e?.cid!=null&&e?.size!=null?r+e.cid.byteLength:0}function Lo(r,e){return e?.cid!=null&&e?.size!=null?ld(r,e.cid.byteLength,Number(e.size)):0}var ht,_o=p(()=>{"use strict";ct();Vt();bs();Ko();dd();Gt();ht=class extends Ee{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=Ss(t),o=this.options?.shardSplitStrategy;if(o==="links-bytes")this.nodeSize-=No(i,s),this.nodeSize+=No(i,n);else if(o==="block-bytes")this.nodeSize-=Lo(i,s),this.nodeSize+=Lo(i,n);else throw new Ve(`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 G({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 Z(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+=No(Ss(n),s)}else if(t==="block-bytes"){this.nodeSize=ud(this.mode,this.mtime);for(let[n,s]of this._children.entries())this.nodeSize+=Lo(Ss(n),s)}else throw new Ve(`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 Ee)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 G({type:"directory",mtime:this.mtime,mode:this.mode}),i={Data:s.marshal(),Links:n},o=Z(X(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 Ye(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 iy(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),y=Math.imul(r.hi,e.lo),w=h+m+y>>>0;return{lo:d,hi:w}}function ft(r,e){return Math.imul(r,e)>>>0}function er(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 N(r,e){return{lo:(r.lo^e.lo)>>>0,hi:(r.hi^e.hi)>>>0}}function Oo(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 T(r,e){return{lo:r>>>0,hi:e>>>0}}function zo(r,e){return(r<<e|r>>>32-e)>>>0}function hd(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 oy(r,e){let t=e*4;return(r[t]|r[t+1]<<8|r[t+2]<<16|r[t+3]<<24)>>>0}function fd(r){return r=N(r,Oo(r,33)),r=he(r,T(3981806797,4283543511)),r=N(r,Oo(r,33)),r=he(r,T(444984403,3301882366)),r=N(r,Oo(r,33)),r}function ay(r){return r^=r>>>16,r=ft(r,2246822507),r^=r>>>13,r=ft(r,3266489909),r^=r>>>16,r}function Wo(r,e=0){let t=T(e,0),n=T(e,0),s=r.length,i=Math.floor(s/16),o=T(289559509,2277735313),a=T(658871167,1291169091);for(let h=0;h<i;h++){let m=hd(r,h*2),y=hd(r,h*2+1);m=he(m,o),m=er(m,31),m=he(m,a),t=N(t,m),t=er(t,27),t=Ye(t,n),t=Ye(he(t,T(5,0)),T(1390208809,0)),y=he(y,a),y=er(y,33),y=he(y,o),n=N(n,y),n=er(n,31),n=Ye(n,t),n=Ye(he(n,T(5,0)),T(944331445,0))}let c=T(0,0),l=T(0,0),u=r.slice(i*16);switch(u.length){case 15:l=N(l,T(0,u[14]<<16));case 14:l=N(l,T(0,u[13]<<8));case 13:l=N(l,T(0,u[12]));case 12:l=N(l,T(u[11]<<24,0));case 11:l=N(l,T(u[10]<<16,0));case 10:l=N(l,T(u[9]<<8,0));case 9:l=N(l,T(u[8],0)),l=he(l,a),l=er(l,33),l=he(l,o),n=N(n,l);case 8:c=N(c,T(0,u[7]<<24));case 7:c=N(c,T(0,u[6]<<16));case 6:c=N(c,T(0,u[5]<<8));case 5:c=N(c,T(0,u[4]));case 4:c=N(c,T(u[3]<<24,0));case 3:c=N(c,T(u[2]<<16,0));case 2:c=N(c,T(u[1]<<8,0));case 1:c=N(c,T(u[0],0)),c=he(c,o),c=er(c,31),c=he(c,a),t=N(t,c)}let d=T(s,0);return t=N(t,d),n=N(n,d),t=Ye(t,n),n=Ye(n,t),t=fd(t),n=fd(n),t=Ye(t,n),n=Ye(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 pd(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=oy(r,l);u=ft(u,i),u=zo(u,15),u=ft(u,o),t^=u,t=zo(t,13),t=iy(ft(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=ft(c,i),c=zo(c,15),c=ft(c,o),t^=c}return t^=n,t=ay(t),t}var md=p(()=>{"use strict"});function ly(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 j1,yd,J1,gd=p(()=>{"use strict";fs();md();j1=ut({name:"murmur3-32",code:35,encode:r=>ly(pd(r))}),yd=ut({name:"murmur3-128",code:34,encode:r=>Wo(r)}),J1=ut({name:"murmur3-x64-64",code:34,encode:r=>Wo(r).subarray(0,8)})});var tr,je,wd=p(()=>{"use strict";tr=class tr extends Error{constructor(t="Not Found"){super(t);f(this,"name",tr.name);f(this,"code",tr.code)}};f(tr,"name","NotFoundError"),f(tr,"code","ERR_NOT_FOUND");je=tr});var As=p(()=>{"use strict";wd()});var Ce,Xr=p(()=>{"use strict";Ce=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 rr,$o=p(()=>{"use strict";As();Xr();rr=class extends Ce{put(e,t,n){return n?.signal?.throwIfAborted(),e}get(e,t){throw t?.signal?.throwIfAborted(),new je}has(e,t){return t?.signal?.throwIfAborted(),!1}async delete(e,t){t?.signal?.throwIfAborted()}async*getAll(e){e?.signal?.throwIfAborted()}}});var Ad=E((aA,Sd)=>{"use strict";Sd.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(uy,0),c=~(4294967295<<i+1),l=bd(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(dy),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(hy)}};function uy(r,e){return r+bd(e)}function bd(r){let e=r;return e=e-(e>>1&1431655765),e=(e&858993459)+(e>>2&858993459),(e+(e>>4)&252645135)*16843009>>24}function dy(r,e){return r[0]-e[0]}function hy(r){return r[1]}});function fy(r){return!!r}function py(r,e){return r.key}function my(r){return r}async function vd(r,e,t){let n=[];for(let s of r._children.compactArray())if(s instanceof Je)await vd(s,e,t);else{let i=await e(s);n.push({bitField:r._children.bitField(),children:i})}return t(n)}var xd,Je,kd=p(()=>{"use strict";xd=sr(Ad(),1);ps();Je=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 xd.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 vd(this,e,t)}toJSON(){return this.serialize(py,my)}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"?qt(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(fy);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 wy(r,e,t){let n=by(e,t);return(r&n)>>>e}function by(r,e){return yy[r]&gy[Math.min(e+r-1,7)]}var yy,gy,xs,Ed=p(()=>{"use strict";yy=[255,254,252,248,240,224,192,128],gy=[1,3,7,15,31,63,127,255],xs=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=wy(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 Cd(r){function e(t){return t instanceof vs?t:new vs(t,r)}return e}var vs,Pd=p(()=>{"use strict";Ui();Ed();vs=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?Tr([this._value,Uint8Array.from([this._depth])]):this._value,t=await this._hashFn(e),n=new xs(t);this._buffers.push(n),this._availableBits+=n.availableBits()}}});function Id(r){if(r==null||r.hashFn==null)throw new Error("please define an options.hashFn");let e={bits:r.bits??8,hash:Cd(r.hashFn)};return new Je(e)}var Bd=p(()=>{"use strict";kd();Pd()});async function Sy(r){return(await yd.encode(r)).slice(0,8).reverse()}async function*Rd(r,e,t,n){let s=r._children,i=(r.tableSize()-1).toString(16).length,o=[],a=0n;for(let y=0;y<s.length;y++){let w=s.get(y);if(w==null)continue;let b=y.toString(16).toUpperCase().padStart(i,"0");if(w instanceof Je){let S;for await(let A of Rd(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(Dd(w.value)){let S=w.value,A;for await(let I of S.flush(e))A=I,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 G({type:"hamt-sharded-directory",data:c,fanout:BigInt(r.tableSize()),hashType:Ni,mtime:t?.mtime,mode:t?.mode}),u={Data:l.marshal(),Links:o},d=Z(X(u)),h=await de(d,e,n),m=BigInt(d.byteLength)+a;yield{cid:h,unixfs:l,size:m}}function Dd(r){return typeof r.flush=="function"}async function Fd(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 y=h.toString(16).toUpperCase().padStart(i,"0");if(m instanceof Je){let{size:w,cid:b}=await Fd(m,null,t,n);o.push({Name:y,Tsize:Number(w),Hash:b}),a+=y.length+b.byteLength}else if(Dd(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:y+m.key,Tsize:Number(b),Hash:w.cid}),a+=y.length+w.cid.byteLength}else{let w=m.value,b=y+m.key,S=w.size;o.push({Name:b,Tsize:Number(S),Hash:w.cid}),a+=y.length+w.cid.byteLength}}let c=Uint8Array.from(s.bitField().reverse()),l=new G({type:"hamt-sharded-directory",data:c,fanout:BigInt(r.tableSize()),hashType:Ni,mtime:e?.mtime,mode:e?.mode}),u=Z(X({Data:l.marshal(),Links:o}));return{cid:await de(u,t,n),size:n.shardSplitStrategy==="links-bytes"?a:u.length}}var Ho,Td,Md=p(()=>{"use strict";ct();gd();$o();Bd();Vt();Rr();bs();Gt();Ho=class extends Ee{constructor(t,n){super(t,n);f(this,"bucket");this.bucket=Id({hashFn:Sy,bits:n.shardFanoutBits??ns})}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 rr,n=await Fd(this.bucket,this,t,this.options);return this.nodeSize=n.size,this.nodeSize}async*flush(t){for await(let n of Rd(this.bucket,t,this,this.options))yield{...n,path:this.path}}},Td=Ho});async function qo(r,e){let t=e,n=e.options.shardSplitThresholdBytes??ss;e instanceof ht&&await e.estimateNodeSize()>n&&(t=await Ay(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 qo(t,s)}return t}async function Ay(r){let e=new Td({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 Ud=p(()=>{"use strict";Rr();_o();Md()});var Nd,Ld=p(()=>{"use strict";Nd=(r="")=>r.split(/(?<!\\)\//).filter(Boolean)});async function xy(r,e,t){let n=Nd(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 qo(null,i);else{let u=await i.get(c);(u==null||!(u instanceof Ee))&&(u=new ht({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*_d(r,e){if(!(r instanceof Ee)){r.unixfs?.isDirectory()===!0&&(yield r);return}yield*r.flush(e)}function Kd(r){return async function*(t,n){let s=new ht({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 xy(a,s,r),a.unixfs?.isDirectory()!==!0&&(yield a)}if(r.wrapWithDirectory||o&&s.childCount()>1)yield*_d(s,n);else for(let a of s.eachChildSeries())a!=null&&(yield*_d(a.child,n))}}var Od=p(()=>{"use strict";_o();bs();Ud();Ld()});var zd={};x(zd,{InvalidAvgChunkSizeError:()=>Do,InvalidChunkSizeError:()=>Fo,InvalidContentError:()=>be,InvalidMinChunkSizeError:()=>Mo,InvalidParametersError:()=>Zt,InvalidShardingStrategyError:()=>Ve,importByteStream:()=>Ey,importBytes:()=>ky,importDirectory:()=>vy,importFile:()=>Go,importer:()=>Vo});async function*Vo(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=is,i=174):t.profile==="unixfs-v1-2025"&&(t.shardSplitStrategy=t.shardSplitStrategy??"block-bytes",t.cidVersion=t.cidVersion??1,t.rawLeaves=t.rawLeaves??!0,s=ll,i=1024);let o=t.wrapWithDirectory??pl,a=t.shardSplitThresholdBytes??ss,c=t.shardSplitStrategy??cl,l=t.shardFanoutBits??ns,u=t.cidVersion??1,d=t.rawLeaves??fl,h=t.leafType??ml,m=t.fileImportConcurrency??ul,y=t.blockWriteConcurrency??dl,w=t.reduceSingleLeafToSelf??hl,b=t.chunker??yl({chunkSize:s}),S=t.chunkValidator??nd(),A=t.dagBuilder??td({chunker:b,chunkValidator:S,wrapWithDirectory:o,layout:t.layout??Uo({maxChildrenPerNode:i}),bufferImporter:t.bufferImporter??Yu({cidVersion:u,rawLeaves:d,leafType:h,onProgress:t.onProgress}),blockWriteConcurrency:y,reduceSingleLeafToSelf:w,cidVersion:u,onProgress:t.onProgress,dirBuilder:t.dirBuilder,fileBuilder:t.fileBuilder}),v=t.treeBuilder??Kd({wrapWithDirectory:o,shardSplitThresholdBytes:a,shardSplitStrategy:c,shardFanoutBits:l,cidVersion:u,onProgress:t.onProgress});for await(let I of v(Br(A(n,e),m),e))yield{cid:I.cid,path:I.path,unixfs:I.unixfs,size:I.size}}async function Go(r,e,t={}){let n=await Di(Vo([r],e,t));if(n==null)throw new Zt("Nothing imported");return n}async function vy(r,e,t={}){let n=await Di(Vo([r],e,t));if(n==null)throw new Zt("Nothing imported");return n}async function ky(r,e,t={}){return Go({content:r},e,t)}async function Ey(r,e,t={}){return Go({content:r},e,t)}var Ko=p(()=>{"use strict";Zc();Mi();gl();Rr();ju();rd();sd();Qr();cd();Od();Qr()});function Cy(r){return typeof r?.then=="function"}var ks,Wd=p(()=>{"use strict";As();ad();Dr();at();$r();Ot();Xr();ks=class extends Ce{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=od(n);if(Cy(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 je;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:q.createV1($t,ls(Q.decode(n))),bytes:(async function*(){yield*s})()},t?.signal?.throwIfAborted()}}});function Es(r,e){if(typeof r=="string")return Py(r);if(typeof r=="number")return Ty(r,e);throw new Error(`Value provided to ms() must be a string or number. value=${JSON.stringify(r)}`)}function Py(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 Iy(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 By(r){let e=Math.abs(r);return e>=315576e5?pt(r,e,315576e5,"year"):e>=26298e5?pt(r,e,26298e5,"month"):e>=6048e5?pt(r,e,6048e5,"week"):e>=864e5?pt(r,e,864e5,"day"):e>=36e5?pt(r,e,36e5,"hour"):e>=6e4?pt(r,e,6e4,"minute"):e>=1e3?pt(r,e,1e3,"second"):`${r} ms`}function Ty(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?By(r):Iy(r)}function pt(r,e,t,n){let s=e>=t*1.5;return`${Math.round(r/t)} ${n}${s?"s":""}`}var Yo=p(()=>{"use strict"});function jo(r){t.debug=t,t.default=t,t.coerce=c,t.disable=i,t.enable=s,t.enabled=o,t.humanize=Es,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,y,w;function b(...S){if(!b.enabled)return;let A=b,v=Number(new Date),I=v-(h||v);A.diff=I,A.prev=h,A.curr=v,h=v,S[0]=t.coerce(S[0]),typeof S[0]!="string"&&S.unshift("%O");let k=0;S[0]=S[0].replace(/%([a-zA-Z%])/g,(F,W)=>{if(F==="%%")return"%";k++;let Pe=t.formatters[W];if(typeof Pe=="function"){let mt=S[k];F=Pe.call(A,mt),S.splice(k,1),k--}return F}),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:(y!==t.namespaces&&(y=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 $d=p(()=>{"use strict";Yo()});function Dy(){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 Fy(r){if(r[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+r[0]+(this.useColors?"%c ":" ")+"+"+Es(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 Uy(r){try{r?Cs?.setItem("debug",r):Cs?.removeItem("debug")}catch{}}function Ny(){let r;try{r=Cs?.getItem("debug")}catch{}return!r&&typeof globalThis.process<"u"&&"env"in globalThis.process&&(r=globalThis.process.env.DEBUG),r}function Ly(){try{return localStorage}catch{}}function _y(r){r.j=function(e){try{return JSON.stringify(e)}catch(t){return"[UnexpectedJSONParseError]: "+t.message}}}var Cs,Ry,My,Hd,qd=p(()=>{"use strict";Yo();$d();Cs=Ly(),Ry=["#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"];My=console.debug??console.log??(()=>{});Hd=jo({formatArgs:Fy,save:Uy,load:Ny,useColors:Dy,setupFormatters:_y,colors:Ry,storage:Cs,log:My})});var ee,Vd=p(()=>{"use strict";qd();ee=Hd});function Gd(r,e=""){let t=Yd(r.message),n=Yd(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 Ky(r){return r instanceof AggregateError||r?.name==="AggregateError"&&Array.isArray(r.errors)}function jd(r,e=""){if(Ky(r)){let t=Gd(r,e);return r.errors.length>0?(e=`${e} `,t+=`
|
|
958
|
+
${e}${r.errors.map(n=>`${jd(n,`${e}`)}`).join(`
|
|
959
959
|
${e}`)}`):t+=`
|
|
960
|
-
${e}[Error list was empty]`,t.trim()}return xd(r,e)}function ug(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 Mo(r,e){let t=ug(`${r}:trace`);return Z.enabled(`${r}:trace`)&&Z.names.map(n=>n.toString()).find(n=>n.includes(":trace"))!=null&&(t=Z(`${r}:trace`,e)),Object.assign(Z(r,e),{error:Z(`${r}:error`,e),trace:t,newScope:n=>Mo(`${r}:${n}`,e)})}function vd(r){if(r!=null&&(r=r.trim(),r.length!==0))return r}var Ed=p(()=>{"use strict";Ir();Zn();Ji();Ad();Z.formatters.b=r=>r==null?"undefined":ce.baseEncode(r);Z.formatters.t=r=>r==null?"undefined":j.baseEncode(r);Z.formatters.m=r=>r==null?"undefined":Yi.baseEncode(r);Z.formatters.p=r=>r==null?"undefined":r.toString();Z.formatters.c=r=>r==null?"undefined":r.toString();Z.formatters.k=r=>r==null?"undefined":r.toString();Z.formatters.a=r=>r==null?"undefined":r.toString();Z.formatters.e=r=>r==null?"undefined":kd(r)});function dg(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 Cd,Pd=p(()=>{"use strict";Cd=dg});function hg(r){return r[Symbol.asyncIterator]!=null}function fg(r,e){let t=0;if(hg(r))return(async function*(){for await(let c of r)await e(c,t++)&&(yield c)})();let n=Cd(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 Id,Bd=p(()=>{"use strict";Pd();Id=fg});function er(){let r={};return r.promise=new Promise((e,t)=>{r.resolve=e,r.reject=t}),r}var Dd=p(()=>{"use strict"});function pg(r){return r.reason}async function Td(r,e,t){if(e==null)return r;let n=t?.translateError??pg;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 Rd=p(()=>{"use strict"});function Fd(){return new No}var No,Md=p(()=>{"use strict";Dd();Rd();No=class{constructor(){f(this,"readNext");f(this,"haveNext");f(this,"ended");f(this,"nextResult");f(this,"error");this.ended=!1,this.readNext=er(),this.haveNext=er()}[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=er(),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=er(),await Td(this.readNext.promise,t?.signal,t)}}});function mg(r){return r[Symbol.asyncIterator]!=null}async function gg(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*yg(r){let e=new AbortController,t=Fd();gg(r,t,e.signal).catch(()=>{});try{yield*t}finally{e.abort()}}function*wg(r){for(let e of r)yield*e}function bg(...r){let e=[];for(let t of r)mg(t)||e.push(t);return e.length===r.length?wg(e):yg(r)}var Nd,Ud=p(()=>{"use strict";Md();Nd=bg});var Sg,bs,Ld=p(()=>{"use strict";Ed();fs();Bd();Ud();Yr();Sg=Mo("blockstore:core:tiered"),bs=class extends Ee{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,Sg.error(o)}throw s??new je}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*Id(Nd(...this.stores.map(s=>s.getAll(t))),s=>{let i=s.cid.toString();return n.has(i)?!1:(n.add(i),!0)})}}});var _d={};k(_d,{BaseBlockstore:()=>Ee,BlackHoleBlockstore:()=>Xt,MemoryBlockstore:()=>gs,TieredBlockstore:()=>bs});var Kd=p(()=>{"use strict";Yr();yd();Po();Ld()});var Od=P((rx,Ag)=>{Ag.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"}}}});G();function Lo(r){return/^0x[a-fA-F0-9]{40}$/.test(r)}function _o(r){return r.length<3||r.length>50?!1:/^[a-zA-Z0-9]([a-zA-Z0-9_-]*[a-zA-Z0-9])?$/.test(r)}function Ko(r){let e=r.trim().split(/\s+/);return e.length===12||e.length===24}function As(r){if(!Lo(r))throw new Error("Invalid Ethereum address format")}function xs(r){if(!_o(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 rh(r){if(!Ko(r))throw new Error("Invalid mnemonic: must be 12 or 24 words")}function nh(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)))}Ne();we();W();async function oh(r){try{let e=new Uint8Array(r),t=ah(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 ch(c);return Pe(l)}catch(e){return console.error("Failed to extract public key:",e),null}}function ah(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 ch(r){let e=qo(r,-2),t=qo(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 qo(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 Ho(r){try{let{username:e,ethereumAddress:t}=r;xs(e),As(t);let n=new R;if(await n.userExists(e))throw new Error("Username already registered");let s=Fe(),o=new TextEncoder().encode(e),a=Pe(o),c=_(s),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:nr}}}},d=await navigator.credentials.create({publicKey:u});if(!d)throw new Error("Failed to create credential");let h=await oh(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 rr(e instanceof Error?e.message:"Registration failed",e)}}G();Ne();we();W();async function Xr(){try{let r=new R,e=Fe(),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:_(e),rpId:window.location.hostname,userVerification:"required",timeout:6e4,extensions:{prf:{eval:{first:nr}}}};t.length>0&&(s.allowCredentials=t.map(l=>({id:_(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 lh(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 lh(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(!uh(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=_(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 y=r.response.signature,b=dh(new Uint8Array(y));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 uh(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 dh(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}G();var hh="Web3PasskeyWallet",fh=1,be="wallets",en=class{constructor(){this.db=null}async init(){return new Promise((e,t)=>{let n=indexedDB.open(hh,fh);n.onerror=()=>t(new B("Failed to open database",n.error)),n.onsuccess=()=>{this.db=n.result,e()},n.onupgradeneeded=()=>{let s=n.result;s.objectStoreNames.contains(be)||s.createObjectStore(be,{keyPath:"ethereumAddress"})}})}async store(e){return this.db||await this.init(),new Promise((t,n)=>{let o=this.db.transaction([be],"readwrite").objectStore(be).put(e);o.onerror=()=>n(new B("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([be],"readonly").objectStore(be).get(e);o.onerror=()=>n(new B("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([be],"readwrite").objectStore(be).delete(e);o.onerror=()=>n(new B("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([be],"readwrite").objectStore(be).clear();i.onerror=()=>t(new B("Failed to clear wallet data",i.error)),i.onsuccess=()=>e()})}};Ie();At();W();G();G();import{ethers as Y}from"ethers";function sr(r){try{let e=Y.HDNodeWallet.fromPhrase(r,void 0,"m/44'/60'/1'/0/0"),t=Y.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 U("Failed to derive stealth keys",e)}}function Cs(r){try{let e="0x"+r.slice(2,68),t="0x"+r.slice(68),n=Y.Wallet.createRandom(),s=n.signingKey.compressedPublicKey,i=Ps(n.privateKey,t),o=Y.keccak256(i),a="0x"+o.slice(2,4),c=Is(o),l=Qo(e,Jo(c));return{stealthAddress:Zo(l),ephemeralPubKey:s,viewTag:a}}catch(e){throw new U("Failed to generate stealth address",e)}}function an(r,e,t,n,s){try{let i=Ps(r,t),o=Y.keccak256(i);if(s&&("0x"+o.slice(2,4)).toLowerCase()!==s.toLowerCase())return{isForUser:!1};let a=Is(o),c=Qo(e,Jo(a)),l=Zo(c);return l.toLowerCase()!==n.toLowerCase()?{isForUser:!1}:{isForUser:!0,stealthAddress:l}}catch{return{isForUser:!1}}}function cn(r,e,t){try{let n=Ps(r,t),s=Y.keccak256(n),i=Is(s);return yh(e,i)}catch(n){throw new U("Failed to compute stealth private key",n)}}function gh(r,e,t,n,s,i){try{if(!an(r,t,n,s,i).isForUser)return!1;let a=cn(r,e,n);return new Y.Wallet(a).address.toLowerCase()===s.toLowerCase()}catch{return!1}}function Ps(r,e){try{return new Y.Wallet(r).signingKey.computeSharedSecret(e)}catch(t){throw new U("Failed to compute shared secret",t)}}function Jo(r){try{return new Y.Wallet(r).signingKey.compressedPublicKey}catch(e){throw new U("Failed to multiply generator by scalar",e)}}function Qo(r,e){try{let t=Y.SigningKey.computePublicKey(r,!1),n=Y.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,y=2n*i%c,b=g*jo(y,c)%c,S=(b*b-2n*s)%c,A=(b*(s-S)-i)%c;return Yo((S+c)%c,(A+c)%c)}let l=((a-i)%c+c)%c,u=((o-s)%c+c)%c,d=l*jo(u,c)%c,h=(d*d-s-o)%c,m=(d*(s-h)-i)%c;return Yo((h+c)%c,(m+c)%c)}catch(t){throw new U("Failed to add public keys",t)}}function Is(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 U("Failed to reduce scalar modulo curve order",e)}}function yh(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 U("Failed to add private keys",t)}}function Yo(r,e){return"0x"+(e%2n===0n?"02":"03")+r.toString(16).padStart(64,"0")}function jo(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 Zo(r){try{let e=Y.SigningKey.computePublicKey(r,!1),t=Y.keccak256("0x"+e.slice(4));return Y.getAddress("0x"+t.slice(-40))}catch(e){throw new U("Failed to derive address from public key",e)}}var ir=class{constructor(e,t){this.getMnemonic=t}async generateStealthAddress(e){try{let t=await this.getMnemonic(e?.requireAuth),n=sr(t),s=Cs(n.stealthMetaAddress);return{stealthAddress:s.stealthAddress,ephemeralPublicKey:s.ephemeralPubKey,viewTag:s.viewTag}}catch(t){throw new V("Failed to generate stealth address","STEALTH_GENERATION_ERROR",t)}}async parseAnnouncement(e,t){try{let n=await this.getMnemonic(t?.requireAuth),s=sr(n),i=an(s.viewingKey,s.spendingPubKey,e.ephemeralPublicKey,e.stealthAddress,e.viewTag);if(!i.isForUser)return{isForUser:!1};let o=cn(s.viewingKey,s.spendingKey,e.ephemeralPublicKey);return{isForUser:!0,stealthAddress:i.stealthAddress,stealthPrivateKey:o}}catch(n){throw new V("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 sr(t)}catch(t){throw new V("Failed to get stealth keys","STEALTH_KEYS_ERROR",t)}}async getStealthMetaAddress(e){try{return(await this.getKeys(e)).stealthMetaAddress}catch(t){throw new V("Failed to get stealth meta-address","STEALTH_META_ADDRESS_ERROR",t)}}get isAvailable(){return!0}};G();var wh="Web3PasskeyPersistentSessions",bh=3,te="sessions",ln=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(wh,bh);n.onupgradeneeded=s=>{let i=s.target.result;i.objectStoreNames.contains(te)&&i.deleteObjectStore(te),i.createObjectStore(te,{keyPath:"ethereumAddress"}).createIndex("expiresAt","expiresAt",{unique:!1})},n.onsuccess=()=>{this.db=n.result,this.initPromise=null,e()},n.onerror=()=>{this.initPromise=null,t(new B("Failed to open persistent session database",n.error))}}),this.initPromise)}async store(e){if(e.securityMode==="STRICT")throw new B("Cannot persist STRICT mode sessions");return this.db||await this.init(),new Promise((t,n)=>{let o=this.db.transaction([te],"readwrite").objectStore(te).put(e);o.onerror=()=>n(new B("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([te],"readonly").objectStore(te).get(e);o.onerror=()=>n(new B("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([te],"readwrite").objectStore(te).delete(e);o.onerror=()=>n(new B("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([te],"readwrite").objectStore(te).clear();i.onerror=()=>t(new B("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([te],"readwrite").objectStore(te).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 B("Failed to cleanup expired sessions",c.error))})}};W();var un=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 ln}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 ie(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 X(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(()=>(Ne(),Zr)),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 X(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}};Ne();var dn={debug:!1,sessionDuration:1,persistentSession:{enabled:!1,duration:168,requireReauth:!0},onError:r=>{dn.debug&&console.error("[w3pk]",r)}};G();var Xo="https://chainid.network/chains.json";var or=null,Sh=[/\$\{[\w_]+\}/i,/\{[\w_]+\}/i,/<[\w_]+>/i,/YOUR[-_]?API[-_]?KEY/i,/INSERT[-_]?API[-_]?KEY/i,/API[-_]?KEY[-_]?HERE/i];function Ah(r){return Sh.some(e=>e.test(r))}async function xh(r=Xo){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 Bs(r){let e=r?.chainsJsonUrl??Xo,t=r?.cacheDuration??36e5,n=Date.now();if(or&&n-or.timestamp<t)return or.data;let s=await xh(e);return or={data:s,timestamp:n},s}async function Ds(r,e){let n=(await Bs(e)).find(s=>s.chainId===r);return n?n.rpc.filter(s=>!Ah(s)&&!s.startsWith("wss://")&&!s.startsWith("ws://")):[]}async function vh(r){return Bs(r)}async function kh(r,e){return(await Bs(e)).find(n=>n.chainId===r)}function Eh(){or=null}Ls();pn();var Th=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 Rh(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 ra(r,e,t){if(Th.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 Rh(a,s))return!0;return!1}catch{return!1}}function Cc(r){return typeof r=="string"&&/^0x[0-9a-fA-F]*$/.test(r)}function Pc(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 kr=class{constructor(e={}){this.currentUser=null;this.currentWallet=null;this.config={...dn,...e},this.walletStorage=new en;let t={...dn.persistentSession,...e.persistentSession};this.sessionManager=new un(e.sessionDuration||1,t),e.stealthAddresses!==void 0&&(this.stealth=new ir(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 w("Must be authenticated. Call login() first.");let s=await this.walletStorage.retrieve(this.currentUser.ethereumAddress);if(!s)throw new w("No wallet found. Generate a wallet first.");let i=await Xr();if(!i.user)throw new w("Authentication failed");let c=(await new R().getCredentialById(s.credentialId))?.publicKey,l=await de(s.credentialId,c),u=await X(s.encryptedMnemonic,l),d=i.prfOutput?await wt(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 Ho({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 w("Credential not found after registration");let a=o.id,c=o.publicKey,l=await de(a,c),u=await ie(n,l);await this.walletStorage.store({ethereumAddress:this.currentUser.ethereumAddress,encryptedMnemonic:u,credentialId:a,createdAt:new Date().toISOString()});let d=s.prfOutput?await wt(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 Xr();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 wt(t.prfOutput):void 0,c=await this.sessionManager.restoreFromPersistentStorage(this.currentUser.ethereumAddress,n.credentialId,a),l;if(c)l=c;else{let u=await de(n.credentialId,o);l=await X(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=rn();return this.currentWallet={address:e.address,mnemonic:e.mnemonic},{address:e.address,mnemonic:e.mnemonic}}catch(e){throw this.config.onError?.(e),new w("Failed to generate wallet",e)}}async deriveWallet(e,t,n){try{if(!this.currentUser)throw new w("Must be authenticated to derive wallet");let s=e||Se,i=t||ee,o=n?.origin||xe();if(s==="PRIMARY"){let{CredentialStorage:u}=await Promise.resolve().then(()=>(Ne(),Zr)),{deriveAddressFromP256PublicKey:d}=await Promise.resolve().then(()=>(At(),on)),m=await new u().getCredentialById(this.currentUser.credentialId);if(!m||!m.publicKey)throw new w("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 Ae(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 w("Failed to derive wallet",s)}}async getAddress(e,t,n){try{if(!this.currentUser)throw new w("Must be authenticated to get address");let s=e||Se,i=t||ee,o=n?.origin||xe();if(s==="PRIMARY"){let{deriveAddressFromP256PublicKey:u}=await Promise.resolve().then(()=>(At(),on)),h=await new R().getCredentialById(this.currentUser.credentialId);if(!h||!h.publicKey)throw new w("No WebAuthn credential found for PRIMARY mode");return await u(h.publicKey)}let a=s==="STRICT",c=await this.getMnemonicFromSession(a,s);return(await Ae(c,o,s,i)).address}catch(s){throw this.config.onError?.(s),new w("Failed to get address",s)}}async importMnemonic(e){try{if(!this.currentUser)throw new w("Must be authenticated to import mnemonic");if(!e||e.trim().split(/\s+/).length<12)throw new w("Invalid mnemonic: must be at least 12 words");let t=await Xr();if(!t.user)throw new w("Authentication failed");let n=t.user.credentialId,o=(await new R().getCredentialById(n))?.publicKey,a=await de(n,o),c=await ie(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 wt(t.prfOutput):void 0;await this.sessionManager.startSession(e.trim(),n,this.currentUser.ethereumAddress,l,"STANDARD")}catch(t){throw this.config.onError?.(t),new w("Failed to import mnemonic",t)}}async signMessage(e,t){try{if(!this.currentUser)throw new w("Must be authenticated to sign message");let n=t?.mode||Se,s=t?.tag||ee,i=t?.origin||xe(),o=t?.signingMethod||"EIP191",a=n==="STRICT"?!0:t?.requireAuth||!1,c=await this.getMnemonicFromSession(a,n),l=await Ae(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(()=>(Ie(),St)),{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 w("EIP712 signing requires eip712Domain, eip712Types, and eip712PrimaryType in options");let m;try{m=typeof e=="string"?JSON.parse(e):e}catch{throw new w("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"),y=e;if(y.startsWith("0x")&&(y=y.slice(2)),y.length!==64)throw new w("rawHash signing method requires a 32-byte hash (64 hex characters)");h=new g(d.privateKey).sign("0x"+y).serialized;break;default:throw new w(`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 w("Failed to sign message",n)}}async signMessageWithPasskey(e){try{if(!this.currentUser)throw new w("Must be authenticated to sign message");let{extractRS:t}=await Promise.resolve().then(()=>(_s(),sa)),{base64UrlDecode:n}=await Promise.resolve().then(()=>(we(),vs)),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 w("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 w("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 y=await crypto.subtle.digest("SHA-256",g.buffer),b="0x"+Buffer.from(y).toString("hex"),S=new Uint8Array(u.signature),{r:A,s:v}=t(S),{CredentialStorage:E}=await Promise.resolve().then(()=>(Ne(),Zr)),x=await new E().getCredentialById(a);if(!x||!x.publicKey)throw new w("No WebAuthn credential found for PRIMARY mode");let{base64UrlToArrayBuffer:T}=await Promise.resolve().then(()=>(we(),vs)),O=T(x.publicKey),Ce=await crypto.subtle.importKey("spki",O,{name:"ECDSA",namedCurve:"P-256"},!0,["verify"]),gt=await crypto.subtle.exportKey("jwk",Ce);if(!gt.x||!gt.y)throw new w("Invalid P-256 public key: missing x or y coordinates");let Hd="0x"+Buffer.from(T(gt.x)).toString("hex"),Vd="0x"+Buffer.from(T(gt.y)).toString("hex"),{deriveAddressFromP256PublicKey:Gd}=await Promise.resolve().then(()=>(At(),on)),Yd=await Gd(x.publicKey);return{signature:{r:A,s:v},messageHash:i,signedHash:b,address:Yd,publicKey:{qx:Hd,qy:Vd}}}catch(t){throw this.config.onError?.(t),new w("Failed to sign message with passkey",t)}}async sendTransaction(e,t){try{if(!this.currentUser)throw new w("Must be authenticated to send transaction");let n=t?.mode||Se,s=t?.tag||ee,i=t?.origin||xe();if(n==="PRIMARY")throw t?.rpcUrl?new w("PRIMARY mode sendTransaction is not yet supported. Use signMessageWithPasskey() to obtain a P-256 signature and submit via a bundler manually."):new w("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 Ae(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(()=>(Ie(),St)),{privateKey:S}=b(a,c.index);d=new l(S)}let h=t?.rpcUrl??(await this.getEndpoints(e.chainId))[0];if(!h)throw new w(`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 w("Failed to send transaction",n)}}async signAuthorization(e,t){try{if(!this.currentUser)throw new w("Must be authenticated to sign authorization");let{Wallet:n,Signature:s}=await import("ethers"),{hashEIP7702AuthorizationMessage:i,verifyEIP7702Authorization:o}=await Promise.resolve().then(()=>(pn(),Rs)),a;if(e.privateKey)a=new n(e.privateKey);else{let y=await this.getMnemonicFromSession(t?.requireAuth);a=n.fromPhrase(y)}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 w("Signature verification failed - this should not happen");return m}catch(n){throw this.config.onError?.(n),new w("Failed to sign authorization",n)}}async getEndpoints(e){return Ds(e)}async supportsEIP7702(e,t){return ra(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 w("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=Cc(l)?Pc(l):l;return(await n.signMessage(u,{mode:e?.mode,tag:e?.tag,signingMethod:"EIP191"})).signature}case"eth_sign":{let[,l]=c??[],u=Cc(l)?Pc(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,y={...h};return delete y.EIP712Domain,(await n.signMessage(JSON.stringify(m),{mode:e?.mode,tag:e?.tag,signingMethod:"EIP712",eip712Domain:d,eip712Types:y,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 w(`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 w("Must be authenticated to get w3pk delegation address. Call login() or register() first.");let{requestExternalWalletAuthorization:t,getDefaultProvider:n}=await Promise.resolve().then(()=>(Ls(),ta)),s=e?.provider||n();if(!s)throw new w("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 w("Must be authenticated to check backup status");let{BackupManager:e}=await Promise.resolve().then(()=>(it(),st));return new e().getBackupStatus(this.currentUser.ethereumAddress)}async createBackupFile(e="password",t){if(!this.currentUser)throw new w("Must be authenticated to create backup");let n=await this.getMnemonicFromSession(!0),{BackupFileManager:s}=await Promise.resolve().then(()=>(ae(),he)),{BackupStorage:i}=await Promise.resolve().then(()=>(mn(),ia)),o=new s,a=new i,c,l;if(e==="password"){if(!t)throw new w("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 w("No wallet data found");let h=await new R().getCredentialById(u.credentialId);if(!h)throw new w("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 w("Password required for hybrid backup");let u=await this.walletStorage.retrieve(this.currentUser.ethereumAddress);if(!u)throw new w("No wallet data found");let h=await new R().getCredentialById(u.credentialId);if(!h)throw new w("Credential not found");l=(await o.createHybridBackup(n,this.currentUser.ethereumAddress,t,h.id,h.publicKey)).backupFile,c=o.createDownloadableBackup(l)}else throw new w(`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 w("Must be authenticated to set up social recovery");let s=await this.getMnemonicFromSession(!0),{BackupFileManager:i}=await Promise.resolve().then(()=>(ae(),he)),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 w("No wallet data found");let m=await new R().getCredentialById(d.credentialId);if(!m)throw new w("Credential not found");a=(await o.createPasskeyBackup(s,this.currentUser.ethereumAddress,m.id,m.publicKey)).backupFile}let{SocialRecovery:c}=await Promise.resolve().then(()=>(_n(),Ln));return{guardianShares:(await new c().splitAmongGuardians(a,e,t)).guardianShares,setupComplete:!0}}async generateGuardianInvite(e,t){let{SocialRecovery:n}=await Promise.resolve().then(()=>(_n(),Ln)),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(()=>(_n(),Ln)),{BackupFileManager:s}=await Promise.resolve().then(()=>(ae(),he)),{BackupManager:i}=await Promise.resolve().then(()=>(it(),st)),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 w("Password required to decrypt password-protected backup");d=await a.restoreWithPassword(u,t)}else throw new w("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(()=>(ae(),he)),{BackupManager:s}=await Promise.resolve().then(()=>(it(),st)),i=new n,o=new s,a=await i.parseBackupFile(e),c,l;if(a.encryptionMethod==="password"){if(!t)throw new w("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 w("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 w("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 w("Password required to restore hybrid backup");if(!this.currentUser)throw new w("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 w("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 w(`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(()=>(W(),Me))).deriveEncryptionKeyFromWebAuthn(h.id,h.publicKey),y=await(await Promise.resolve().then(()=>(W(),Me))).encryptData(c,g);await this.walletStorage.store({ethereumAddress:l,encryptedMnemonic:y,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(()=>(ae(),he)),{BackupManager:s}=await Promise.resolve().then(()=>(it(),st)),{promptPasskeySelection:i}=await Promise.resolve().then(()=>(hi(),hc)),o=new n,a=new s,c=await i(),l=await o.parseBackupFile(e),u,d;if(l.encryptionMethod==="password"){if(!t)throw new w("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 w("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 w("Password required to restore hybrid backup");if(!c.publicKey)throw new w("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 w(`Unknown encryption method: ${l.encryptionMethod}`);a.markBackupVerified(d);let m=await new R().getCredentialById(c.credentialId);if(m){let{deriveEncryptionKeyFromWebAuthn:g,encryptData:y}=await Promise.resolve().then(()=>(W(),Me)),b=await g(m.id,m.publicKey),S=await y(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(()=>(ae(),he)),{BackupManager:i}=await Promise.resolve().then(()=>(it(),st)),o=new s,a=new i,c=await o.parseBackupFile(e);if(c.encryptionMethod!=="password")throw new w("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 w("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(()=>(Sr(),Kn));return new e().getSyncInfo()}async exportForSync(){if(!this.currentUser)throw new w("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 w("No wallet data found");let s=await new R().getCredentialById(t.credentialId);if(!s)throw new w("Credential not found");let{DeviceSyncManager:i}=await Promise.resolve().then(()=>(Sr(),Kn)),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 w("Must be logged in to import from sync. Call login() first.");let{DeviceSyncManager:t}=await Promise.resolve().then(()=>(Sr(),Kn)),{BackupFileManager:n}=await Promise.resolve().then(()=>(ae(),he)),{BackupManager:s}=await Promise.resolve().then(()=>(it(),st)),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 w("No wallet data found for current user");let d=await new R().getCredentialById(l.credentialId);if(!d)throw new w("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(()=>(W(),Me))).deriveEncryptionKeyFromWebAuthn(d.id,d.publicKey),y=await(await Promise.resolve().then(()=>(W(),Me))).encryptData(h,g);return await this.walletStorage.store({ethereumAddress:m,encryptedMnemonic:y,credentialId:d.id,createdAt:new Date().toISOString()}),{ethereumAddress:m,success:!0}}async detectSyncCapabilities(){let{PlatformDetector:e}=await Promise.resolve().then(()=>(wc(),yc));return new e().detectSyncCapabilities()}async simulateRecoveryScenario(e){if(!this.currentUser)throw new w("Must be authenticated to run recovery simulation");let t=await this.getBackupStatus(),{RecoverySimulator:n}=await Promise.resolve().then(()=>(xr(),qn));return new n().simulateScenario(e,t)}async runRecoveryTest(){if(!this.currentUser)throw new w("Must be authenticated to run recovery test");let e=await this.getBackupStatus(),{RecoverySimulator:t}=await Promise.resolve().then(()=>(xr(),qn));return new t().runInteractiveTest(e)}async getEducation(e){let{getExplainer:t}=await Promise.resolve().then(()=>(xr(),qn)),n=t(e);if(!n)throw new w(`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 w("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 w("Must be authenticated to derive ML-KEM public key");let{deriveMLKemKeypair:t}=await Promise.resolve().then(()=>(vr(),Vn)),{Wallet:n}=await import("ethers"),s=e?.mode||"STANDARD",i=e?.tag||ee,o=e?.origin||xe(),a=e?.context||"mlkem-v1",c=s==="STRICT"?!0:e?.requireAuth||!1;if(s==="PRIMARY")throw new w("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 Ae(l,o,s,i),d;if(u.privateKey)d=u.privateKey;else{let{deriveWalletFromMnemonic:m}=await Promise.resolve().then(()=>(Ie(),St));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 w("Must be authenticated to encrypt data");let{mlkemEncryptWithKey:s}=await Promise.resolve().then(()=>(vr(),Vn)),i=n?.mode||"STANDARD",o=n?.tag||ee,a=n?.origin||xe(),c=n?.context||"mlkem-v1",l=i==="STRICT"?!0:n?.requireAuth||!1;if(i==="PRIMARY")throw new w("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 Ae(u,a,i,o),h;if(d.privateKey)h=d.privateKey;else{let{deriveWalletFromMnemonic:m}=await Promise.resolve().then(()=>(Ie(),St));h=m(u,d.index).privateKey}return await s(e,h,t,c)}async mlkemDecrypt(e,t){if(!this.currentUser)throw new w("Must be authenticated to decrypt data");let{mlkemDecryptWithKey:n}=await Promise.resolve().then(()=>(vr(),Vn)),s=t?.mode||"STANDARD",i=t?.tag||ee,o=t?.origin||xe(),a=t?.context||"mlkem-v1",c=s==="STRICT"?!0:t?.requireAuth||!1;if(s==="PRIMARY")throw new w("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 Ae(l,o,s,i),d;if(u.privateKey)d=u.privateKey;else{let{deriveWalletFromMnemonic:h}=await Promise.resolve().then(()=>(Ie(),St));d=h(l,u.index).privateKey}return await n(e,d,a)}};G();hi();At();xr();async function xg(r,e="build"){let{importer:t}=await Promise.resolve().then(()=>(vo(),gd)),{MemoryBlockstore:n}=await Promise.resolve().then(()=>(Kd(),_d)),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 vg(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 zd(r){let e=await vg(r);return xg(e)}function Wd(){try{return Od().version}catch{throw new Error("Failed to read package version")}}async function $d(){let r=Wd();return zd(`https://unpkg.com/w3pk@${r}/dist`)}async function kg(r){return await $d()===r}we();_s();Ie();function Eg(r=11){let e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",t=new Uint8Array(r);return crypto.getRandomValues(t),Array.from(t).map(n=>e[n%e.length]).join("")}function Cg(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 Gd(r,e)}function Oy(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 Jo(r,e){let t=Oy(`${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=>Jo(`${r}:${n}`,e)})}function Yd(r){if(r!=null&&(r=r.trim(),r.length!==0))return r}var Jd=p(()=>{"use strict";Dr();os();fo();Vd();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":uo.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":jd(r)});function zy(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 Qd,Xd=p(()=>{"use strict";Qd=zy});function Wy(r){return r[Symbol.asyncIterator]!=null}function $y(r,e){let t=0;if(Wy(r))return(async function*(){for await(let c of r)await e(c,t++)&&(yield c)})();let n=Qd(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 Zd,eh=p(()=>{"use strict";Xd();Zd=$y});function nr(){let r={};return r.promise=new Promise((e,t)=>{r.resolve=e,r.reject=t}),r}var th=p(()=>{"use strict"});function Hy(r){return r.reason}async function rh(r,e,t){if(e==null)return r;let n=t?.translateError??Hy;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 nh=p(()=>{"use strict"});function sh(){return new Qo}var Qo,ih=p(()=>{"use strict";th();nh();Qo=class{constructor(){f(this,"readNext");f(this,"haveNext");f(this,"ended");f(this,"nextResult");f(this,"error");this.ended=!1,this.readNext=nr(),this.haveNext=nr()}[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=nr(),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=nr(),await rh(this.readNext.promise,t?.signal,t)}}});function qy(r){return r[Symbol.asyncIterator]!=null}async function Vy(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*Gy(r){let e=new AbortController,t=sh();Vy(r,t,e.signal).catch(()=>{});try{yield*t}finally{e.abort()}}function*Yy(r){for(let e of r)yield*e}function jy(...r){let e=[];for(let t of r)qy(t)||e.push(t);return e.length===r.length?Yy(e):Gy(r)}var oh,ah=p(()=>{"use strict";ih();oh=jy});var Jy,Ps,ch=p(()=>{"use strict";Jd();As();eh();ah();Xr();Jy=Jo("blockstore:core:tiered"),Ps=class extends Ce{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,Jy.error(o)}throw s??new je}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*Zd(oh(...this.stores.map(s=>s.getAll(t))),s=>{let i=s.cid.toString();return n.has(i)?!1:(n.add(i),!0)})}}});var lh={};x(lh,{BaseBlockstore:()=>Ce,BlackHoleBlockstore:()=>rr,MemoryBlockstore:()=>ks,TieredBlockstore:()=>Ps});var uh=p(()=>{"use strict";Xr();Wd();$o();ch()});var dh=E((Kx,Qy)=>{Qy.exports={name:"w3pk",version:"0.10.4",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/local-storage.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 && tsx test/login-missing-wallet.test.ts && tsx test/backup-status.test.ts && tsx test/eviction-risk.test.ts && tsx test/fresh-device-sync.test.ts && tsx test/prf-secret.test.ts && tsx test/prf-sync.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",siwe:"3.0.0",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"}}}});z();function Zo(r){return/^0x[a-fA-F0-9]{40}$/.test(r)}function ea(r){return r.length<3||r.length>50?!1:/^[a-zA-Z0-9]([a-zA-Z0-9_-]*[a-zA-Z0-9])?$/.test(r)}function ta(r){let e=r.trim().split(/\s+/);return e.length===12||e.length===24}function Bs(r){if(!Zo(r))throw new Error("Invalid Ethereum address format")}function Ts(r){if(!ea(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 Ih(r){if(!ta(r))throw new Error("Invalid mnemonic: must be 12 or 24 words")}function Bh(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)))}Ue();oe();te();async function Dh(r){try{let e=new Uint8Array(r),t=Fh(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 Mh(c);return ie(l)}catch(e){return console.error("Failed to extract public key:",e),null}}function Fh(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 Mh(r){let e=oa(r,-2),t=oa(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 oa(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 aa(r){try{let{username:e,ethereumAddress:t}=r;Ts(e),Bs(t);let n=new D;if(await n.userExists(e))throw new Error("Username already registered");let s=Ae(),o=new TextEncoder().encode(e),a=ie(o),c=R(s),l=R(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:ir}}}},d=await navigator.credentials.create({publicKey:u});if(!d)throw new Error("Failed to create credential");let h=await Dh(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,y=d.getClientExtensionResults?.().prf?.results?.first;return{signature:m,prfOutput:y}}catch(e){throw new yt(e instanceof Error?e.message:"Registration failed",e)}}Us();z();var on="w3pk_wallet_",an=class{constructor(e){this.customStorage=e}get storage(){if(this.customStorage)return this.customStorage;if(typeof window<"u"&&window.localStorage)return window.localStorage;throw new C("localStorage is not available")}async init(){}async store(e){try{this.storage.setItem(on+e.ethereumAddress,JSON.stringify(e))}catch(t){throw new C("Failed to store wallet data",t)}}async retrieve(e){try{let t=this.storage.getItem(on+e);return t?JSON.parse(t):null}catch(t){throw new C("Failed to retrieve wallet data",t)}}async delete(e){try{this.storage.removeItem(on+e)}catch(t){throw new C("Failed to delete wallet data",t)}}async clear(){try{for(let e of this.keys())this.storage.removeItem(e)}catch(e){throw new C("Failed to clear wallet data",e)}}keys(){let e=[];for(let t=0;t<this.storage.length;t++){let n=this.storage.key(t);n?.startsWith(on)&&e.push(n)}return e}};Ie();kt();te();z();z();import{ethers as J}from"ethers";function cr(r){try{let e=J.HDNodeWallet.fromPhrase(r,void 0,"m/44'/60'/1'/0/0"),t=J.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 B("Failed to derive stealth keys",e)}}function Ls(r){try{let e="0x"+r.slice(2,68),t="0x"+r.slice(68),n=J.Wallet.createRandom(),s=n.signingKey.compressedPublicKey,i=_s(n.privateKey,t),o=J.keccak256(i),a="0x"+o.slice(2,4),c=Ks(o),l=pa(e,fa(c));return{stealthAddress:ma(l),ephemeralPubKey:s,viewTag:a}}catch(e){throw new B("Failed to generate stealth address",e)}}function hn(r,e,t,n,s){try{let i=_s(r,t),o=J.keccak256(i);if(s&&("0x"+o.slice(2,4)).toLowerCase()!==s.toLowerCase())return{isForUser:!1};let a=Ks(o),c=pa(e,fa(a)),l=ma(c);return l.toLowerCase()!==n.toLowerCase()?{isForUser:!1}:{isForUser:!0,stealthAddress:l}}catch{return{isForUser:!1}}}function fn(r,e,t){try{let n=_s(r,t),s=J.keccak256(n),i=Ks(s);return zh(e,i)}catch(n){throw new B("Failed to compute stealth private key",n)}}function Oh(r,e,t,n,s,i){try{if(!hn(r,t,n,s,i).isForUser)return!1;let a=fn(r,e,n);return new J.Wallet(a).address.toLowerCase()===s.toLowerCase()}catch{return!1}}function _s(r,e){try{return new J.Wallet(r).signingKey.computeSharedSecret(e)}catch(t){throw new B("Failed to compute shared secret",t)}}function fa(r){try{return new J.Wallet(r).signingKey.compressedPublicKey}catch(e){throw new B("Failed to multiply generator by scalar",e)}}function pa(r,e){try{let t=J.SigningKey.computePublicKey(r,!1),n=J.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 y=3n*s*s%c,w=2n*i%c,b=y*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 B("Failed to add public keys",t)}}function Ks(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 B("Failed to reduce scalar modulo curve order",e)}}function zh(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 B("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 ma(r){try{let e=J.SigningKey.computePublicKey(r,!1),t=J.keccak256("0x"+e.slice(4));return J.getAddress("0x"+t.slice(-40))}catch(e){throw new B("Failed to derive address from public key",e)}}var lr=class{constructor(e,t){this.getMnemonic=t}async generateStealthAddress(e){try{let t=await this.getMnemonic(e?.requireAuth),n=cr(t),s=Ls(n.stealthMetaAddress);return{stealthAddress:s.stealthAddress,ephemeralPublicKey:s.ephemeralPubKey,viewTag:s.viewTag}}catch(t){throw new K("Failed to generate stealth address","STEALTH_GENERATION_ERROR",t)}}async parseAnnouncement(e,t){try{let n=await this.getMnemonic(t?.requireAuth),s=cr(n),i=hn(s.viewingKey,s.spendingPubKey,e.ephemeralPublicKey,e.stealthAddress,e.viewTag);if(!i.isForUser)return{isForUser:!1};let o=fn(s.viewingKey,s.spendingKey,e.ephemeralPublicKey);return{isForUser:!0,stealthAddress:i.stealthAddress,stealthPrivateKey:o}}catch(n){throw new K("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 cr(t)}catch(t){throw new K("Failed to get stealth keys","STEALTH_KEYS_ERROR",t)}}async getStealthMetaAddress(e){try{return(await this.getKeys(e)).stealthMetaAddress}catch(t){throw new K("Failed to get stealth meta-address","STEALTH_META_ADDRESS_ERROR",t)}}get isAvailable(){return!0}};z();var pn="w3pk_session_",mn=class{constructor(e){this.customStorage=e}get storage(){if(this.customStorage)return this.customStorage;if(typeof window<"u"&&window.localStorage)return window.localStorage;throw new C("localStorage is not available")}async init(){}async store(e){if(e.securityMode==="STRICT")throw new C("Cannot persist STRICT mode sessions");try{this.storage.setItem(pn+e.ethereumAddress,JSON.stringify(e))}catch(t){throw new C("Failed to store persistent session",t)}}async retrieve(e){let t;try{let n=this.storage.getItem(pn+e);t=n?JSON.parse(n):null}catch(n){throw new C("Failed to retrieve persistent session",n)}return t&&Date.now()>t.expiresAt?(await this.delete(e),null):t}async delete(e){try{this.storage.removeItem(pn+e)}catch(t){throw new C("Failed to delete persistent session",t)}}async clear(){try{for(let e of this.keys())this.storage.removeItem(e)}catch(e){throw new C("Failed to clear persistent sessions",e)}}async cleanupExpired(){try{let e=Date.now();for(let t of this.keys()){let n=this.storage.getItem(t),s=n?JSON.parse(n):null;(!s||e>s.expiresAt)&&this.storage.removeItem(t)}}catch(e){throw new C("Failed to cleanup expired sessions",e)}}keys(){let e=[];for(let t=0;t<this.storage.length;t++){let n=this.storage.key(t);n?.startsWith(pn)&&e.push(n)}return e}};te();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 mn}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 Y(e,s),c=Date.now()+this.persistentConfig.duration*60*60*1e3;await this.persistentStorage.store({encryptedMnemonic:a,sessionKey:this.persistentConfig.requireReauth?void 0:await Ds(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 j(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(()=>(Ue(),nn)),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 j(i.encryptedMnemonic,await Fs(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()}get storesSessionKey(){return this.persistentConfig.enabled&&!this.persistentConfig.requireReauth}setSessionDuration(e){this.sessionDuration=e*60*60*1e3}setPersistentSessionDuration(e){this.persistentConfig.duration=e}};Ue();gn();Ws();var bn={debug:!1,sessionDuration:1,persistentSession:{enabled:!1,duration:168,requireReauth:!0},onError:r=>{bn.debug&&console.error("[w3pk]",r)}};z();var ga="https://chainid.network/chains.json";var ur=null,Gh=[/\$\{[\w_]+\}/i,/\{[\w_]+\}/i,/<[\w_]+>/i,/YOUR[-_]?API[-_]?KEY/i,/INSERT[-_]?API[-_]?KEY/i,/API[-_]?KEY[-_]?HERE/i];function Yh(r){return Gh.some(e=>e.test(r))}async function jh(r=ga){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 $s(r){let e=r?.chainsJsonUrl??ga,t=r?.cacheDuration??36e5,n=Date.now();if(ur&&n-ur.timestamp<t)return ur.data;let s=await jh(e);return ur={data:s,timestamp:n},s}async function Hs(r,e){let n=(await $s(e)).find(s=>s.chainId===r);return n?n.rpc.filter(s=>!Yh(s)&&!s.startsWith("wss://")&&!s.startsWith("ws://")):[]}async function Jh(r){return $s(r)}async function Qh(r,e){return(await $s(e)).find(n=>n.chainId===r)}function Xh(){ur=null}Qs();xn();var sf=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 of(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 Sa(r,e,t){if(sf.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 of(a,s))return!0;return!1}catch{return!1}}function Qc(r){return typeof r=="string"&&/^0x[0-9a-fA-F]*$/.test(r)}function Xc(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 Ir=class{constructor(e={}){this.currentUser=null;this.currentWallet=null;this.persisted=null;this.config={...bn,...e},this.walletStorage=new an;let t={...bn.persistentSession,...e.persistentSession};this.sessionManager=new yn(e.sessionDuration||1,t),e.stealthAddresses!==void 0&&(this.stealth=new lr(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 g("Must be authenticated. Call login() first.");let s=await this.walletStorage.retrieve(this.currentUser.ethereumAddress);if(!s)throw new g("No wallet found. Generate a wallet first.");let i=await ar();if(!i.user)throw new g("Authentication failed");let c=(await new D().getCredentialById(s.credentialId))?.publicKey,l=await ae(s.credentialId,c),u=await j(s.encryptedMnemonic,l),d=i.prfOutput?await St(i.prfOutput,this.sessionManager.storesSessionKey):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 aa({username:e.username,ethereumAddress:t}),o=await new D().getCredentialByAddress(t);if(this.currentUser={username:e.username,ethereumAddress:t,credentialId:o?.id||""},!o)throw new g("Credential not found after registration");let a=o.id,c=o.publicKey,l=await ae(a,c),u=await Y(n,l);await this.walletStorage.store({ethereumAddress:this.currentUser.ethereumAddress,encryptedMnemonic:u,credentialId:a,createdAt:new Date().toISOString()});let d=s.prfOutput?await St(s.prfOutput,this.sessionManager.storesSessionKey):void 0;await this.sessionManager.startSession(n,a,t,d,"STANDARD"),this.currentWallet={address:t,mnemonic:n};let{BackupManager:h}=await Promise.resolve().then(()=>(Re(),Te)),m=await new h().hasBackup(t),y=await wn();return this.requestPersistentStorage(),this.config.onAuthStateChanged?.(!0,this.currentUser),{address:t,username:e.username,hasBackup:m,evictionRisk:y}}catch(t){throw this.config.onError?.(t),t}}async login(){try{let e=await this.sessionManager.attemptSilentRestore();if(e){let d=await new D().getCredentialById(e.credentialId);return await this.walletStorage.retrieve(e.ethereumAddress)?(this.currentUser={username:d?.username||e.ethereumAddress,ethereumAddress:e.ethereumAddress,credentialId:e.credentialId},this.requestPersistentStorage(),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 ar();if(!t.verified||!t.user)throw new L("Login failed");let n=await this.walletStorage.retrieve(t.user.ethereumAddress);if(!n)throw new wt(t.user.credentialId,t.user.ethereumAddress);this.currentUser={username:t.user.username,ethereumAddress:t.user.ethereumAddress,credentialId:t.user.credentialId};let o=(await new D().getCredentialById(n.credentialId))?.publicKey,a=t.prfOutput?await St(t.prfOutput,this.sessionManager.storesSessionKey):void 0,c=await this.sessionManager.restoreFromPersistentStorage(this.currentUser.ethereumAddress,n.credentialId,a),l;if(c)l=c;else{let u=await ae(n.credentialId,o);l=await j(n.encryptedMnemonic,u),await this.sessionManager.startSession(l,n.credentialId,this.currentUser.ethereumAddress,a,"STANDARD")}return this.requestPersistentStorage(),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}get storagePersisted(){return this.persisted}async requestPersistentStorage(){if(!(typeof navigator>"u"||!navigator.storage?.persist))try{this.persisted=await navigator.storage.persist()}catch{this.persisted=!1}}async listExistingCredentials(){try{return(await new D().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=ln();return this.currentWallet={address:e.address,mnemonic:e.mnemonic},{address:e.address,mnemonic:e.mnemonic}}catch(e){throw this.config.onError?.(e),new g("Failed to generate wallet",e)}}async deriveWallet(e,t,n){try{if(!this.currentUser)throw new g("Must be authenticated to derive wallet");let s=e||xe,i=t||re,o=n?.origin||fe();if(s==="PRIMARY"){let{CredentialStorage:u}=await Promise.resolve().then(()=>(Ue(),nn)),{deriveAddressFromP256PublicKey:d}=await Promise.resolve().then(()=>(kt(),dn)),m=await new u().getCredentialById(this.currentUser.credentialId);if(!m||!m.publicKey)throw new g("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 ve(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 g("Failed to derive wallet",s)}}async getAddress(e,t,n){try{if(!this.currentUser)throw new g("Must be authenticated to get address");let s=e||xe,i=t||re,o=n?.origin||fe();if(s==="PRIMARY"){let{deriveAddressFromP256PublicKey:u}=await Promise.resolve().then(()=>(kt(),dn)),h=await new D().getCredentialById(this.currentUser.credentialId);if(!h||!h.publicKey)throw new g("No WebAuthn credential found for PRIMARY mode");return await u(h.publicKey)}let a=s==="STRICT",c=await this.getMnemonicFromSession(a,s);return(await ve(c,o,s,i)).address}catch(s){throw this.config.onError?.(s),new g("Failed to get address",s)}}async importMnemonic(e){try{if(!this.currentUser)throw new g("Must be authenticated to import mnemonic");if(!e||e.trim().split(/\s+/).length<12)throw new g("Invalid mnemonic: must be at least 12 words");let t=await ar();if(!t.user)throw new g("Authentication failed");let n=t.user.credentialId,o=(await new D().getCredentialById(n))?.publicKey,a=await ae(n,o),c=await Y(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 St(t.prfOutput,this.sessionManager.storesSessionKey):void 0;await this.sessionManager.startSession(e.trim(),n,this.currentUser.ethereumAddress,l,"STANDARD")}catch(t){throw this.config.onError?.(t),new g("Failed to import mnemonic",t)}}async signMessage(e,t){try{let n=t?.mode||xe,s=t?.signingMethod||"EIP191";if(n==="PRIMARY"&&s==="SIWE")throw new g("SIWE signing is not supported in PRIMARY mode. Use STANDARD, STRICT or YOLO mode.");if(!this.currentUser)throw new g("Must be authenticated to sign message");let i=t?.tag||re,o=t?.origin||fe(),a=n==="STRICT"?!0:t?.requireAuth||!1,c=await this.getMnemonicFromSession(a,n),l=await ve(c,o,n,i),{Wallet:u}=await import("ethers"),d;if(l.privateKey)d=new u(l.privateKey);else{let{deriveWalletFromMnemonic:m}=await Promise.resolve().then(()=>(Ie(),xt)),{privateKey:y}=m(c,l.index);d=new u(y)}let h;switch(s){case"EIP191":case"SIWE":h=await d.signMessage(e);break;case"EIP712":if(!t?.eip712Domain||!t?.eip712Types||!t?.eip712PrimaryType)throw new g("EIP712 signing requires eip712Domain, eip712Types, and eip712PrimaryType in options");let m;try{m=typeof e=="string"?JSON.parse(e):e}catch{throw new g("EIP712 message must be valid JSON or an object")}h=await d.signTypedData(t.eip712Domain,t.eip712Types,m);break;case"rawHash":let{SigningKey:y}=await import("ethers"),w=e;if(w.startsWith("0x")&&(w=w.slice(2)),w.length!==64)throw new g("rawHash signing method requires a 32-byte hash (64 hex characters)");h=new y(d.privateKey).sign("0x"+w).serialized;break;default:throw new g(`Unsupported signing method: ${s}`)}return{signature:h,address:l.address,mode:l.mode,tag:l.tag,origin:l.origin}}catch(n){throw this.config.onError?.(n),new g("Failed to sign message",n)}}async signMessageWithPasskey(e){try{if(!this.currentUser)throw new g("Must be authenticated to sign message");let{extractRS:t}=await Promise.resolve().then(()=>(Ei(),Bc)),{base64UrlDecode:n}=await Promise.resolve().then(()=>(oe(),Rs)),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 g("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 g("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),y=new Uint8Array(d.length+m.byteLength);y.set(d,0),y.set(new Uint8Array(m),d.length);let w=await crypto.subtle.digest("SHA-256",y.buffer),b="0x"+Buffer.from(w).toString("hex"),S=new Uint8Array(u.signature),{r:A,s:v}=t(S),{CredentialStorage:I}=await Promise.resolve().then(()=>(Ue(),nn)),U=await new I().getCredentialById(a);if(!U||!U.publicKey)throw new g("No WebAuthn credential found for PRIMARY mode");let{base64UrlToArrayBuffer:F}=await Promise.resolve().then(()=>(oe(),Rs)),W=F(U.publicKey),Pe=await crypto.subtle.importKey("spki",W,{name:"ECDSA",namedCurve:"P-256"},!0,["verify"]),mt=await crypto.subtle.exportKey("jwk",Pe);if(!mt.x||!mt.y)throw new g("Invalid P-256 public key: missing x or y coordinates");let yh="0x"+Buffer.from(F(mt.x)).toString("hex"),gh="0x"+Buffer.from(F(mt.y)).toString("hex"),{deriveAddressFromP256PublicKey:wh}=await Promise.resolve().then(()=>(kt(),dn)),bh=await wh(U.publicKey);return{signature:{r:A,s:v},messageHash:i,signedHash:b,address:bh,publicKey:{qx:yh,qy:gh}}}catch(t){throw this.config.onError?.(t),new g("Failed to sign message with passkey",t)}}async sendTransaction(e,t){try{if(!this.currentUser)throw new g("Must be authenticated to send transaction");let n=t?.mode||xe,s=t?.tag||re,i=t?.origin||fe();if(n==="PRIMARY")throw t?.rpcUrl?new g("PRIMARY mode sendTransaction is not yet supported. Use signMessageWithPasskey() to obtain a P-256 signature and submit via a bundler manually."):new g("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 ve(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(()=>(Ie(),xt)),{privateKey:S}=b(a,c.index);d=new l(S)}let h=t?.rpcUrl??(await this.getEndpoints(e.chainId))[0];if(!h)throw new g(`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 g("Failed to send transaction",n)}}async signAuthorization(e,t){try{if(!this.currentUser)throw new g("Must be authenticated to sign authorization");let{Wallet:n,Signature:s}=await import("ethers"),{hashEIP7702AuthorizationMessage:i,verifyEIP7702Authorization:o}=await Promise.resolve().then(()=>(xn(),Vs)),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 g("Signature verification failed - this should not happen");return m}catch(n){throw this.config.onError?.(n),new g("Failed to sign authorization",n)}}async getEndpoints(e){return Hs(e)}async supportsEIP7702(e,t){return Sa(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 g("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=Qc(l)?Xc(l):l;return(await n.signMessage(u,{mode:e?.mode,tag:e?.tag,signingMethod:"EIP191"})).signature}case"eth_sign":{let[,l]=c??[],u=Qc(l)?Xc(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:y}=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:y})).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 g(`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 g("Must be authenticated to get w3pk delegation address. Call login() or register() first.");let{requestExternalWalletAuthorization:t,getDefaultProvider:n}=await Promise.resolve().then(()=>(Qs(),ba)),s=e?.provider||n();if(!s)throw new g("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 g("Must be authenticated to check backup status");let{BackupManager:e}=await Promise.resolve().then(()=>(Re(),Te));return new e().getBackupStatus(this.currentUser.ethereumAddress)}async confirmRecoveryPhraseBackup(){if(!this.currentUser)throw new g("Must be authenticated to confirm a backup");let{BackupManager:e}=await Promise.resolve().then(()=>(Re(),Te)),{deriveAddressChecksum:t}=await Promise.resolve().then(()=>(Ne(),Zs)),{ethereumAddress:n}=this.currentUser;await new e().confirmRecoveryPhraseBackup(n,await t(n))}async createBackupFile(e="password",t){if(!this.currentUser)throw new g("Must be authenticated to create backup");let n=await this.getMnemonicFromSession(!0),{BackupFileManager:s}=await Promise.resolve().then(()=>(le(),pe)),{BackupStorage:i}=await Promise.resolve().then(()=>(vn(),xa)),o=new s,a=new i,c,l;if(e==="password"){if(!t)throw new g("Password required for password-based backup");l=(await o.createPasswordBackup(n,this.currentUser.ethereumAddress,t,await this.backupCredential())).backupFile,c=o.createDownloadableBackup(l)}else if(e==="passkey"){let u=await this.walletStorage.retrieve(this.currentUser.ethereumAddress);if(!u)throw new g("No wallet data found");let h=await new D().getCredentialById(u.credentialId);if(!h)throw new g("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 g("Password required for hybrid backup");let u=await this.walletStorage.retrieve(this.currentUser.ethereumAddress);if(!u)throw new g("No wallet data found");let h=await new D().getCredentialById(u.credentialId);if(!h)throw new g("Credential not found");l=(await o.createHybridBackup(n,this.currentUser.ethereumAddress,t,h.id,h.publicKey)).backupFile,c=o.createDownloadableBackup(l)}else throw new g(`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 backupCredential(){let e=await new D().getCredentialById(this.currentUser.credentialId);return e?{id:e.id,publicKey:e.publicKey}:void 0}async setupSocialRecovery(e,t,n){if(!this.currentUser)throw new g("Must be authenticated to set up social recovery");let s=await this.getMnemonicFromSession(!0),{BackupFileManager:i}=await Promise.resolve().then(()=>(le(),pe)),o=new i,a;if(n)a=(await o.createPasswordBackup(s,this.currentUser.ethereumAddress,n,await this.backupCredential())).backupFile;else{let d=await this.walletStorage.retrieve(this.currentUser.ethereumAddress);if(!d)throw new g("No wallet data found");let m=await new D().getCredentialById(d.credentialId);if(!m)throw new g("Credential not found");a=(await o.createPasskeyBackup(s,this.currentUser.ethereumAddress,m.id,m.publicKey)).backupFile}let{SocialRecovery:c}=await Promise.resolve().then(()=>(Vn(),qn));return{guardianShares:(await new c().splitAmongGuardians(a,e,t)).guardianShares,setupComplete:!0}}async generateGuardianInvite(e,t){let{SocialRecovery:n}=await Promise.resolve().then(()=>(Vn(),qn)),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(()=>(Vn(),qn)),{BackupFileManager:s}=await Promise.resolve().then(()=>(le(),pe)),{BackupManager:i}=await Promise.resolve().then(()=>(Re(),Te)),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 g("Password required to decrypt password-protected backup");d=await a.restoreWithPassword(u,t)}else throw new g("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(),pe)),{BackupManager:s}=await Promise.resolve().then(()=>(Re(),Te)),i=new n,o=new s,a=await i.parseBackupFile(e),c,l;if(a.encryptionMethod==="password"){if(!t)throw new g("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 g("Must be logged in with passkey to restore passkey-encrypted backup. Call login() first.");let h=(await new D().getAllCredentials()).find(y=>y.ethereumAddress.toLowerCase()===this.currentUser.ethereumAddress.toLowerCase());if(!h)throw new g("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 g("Password required to restore hybrid backup");if(!this.currentUser)throw new g("Must be logged in with passkey to restore hybrid backup. Call login() first.");let h=(await new D().getAllCredentials()).find(y=>y.ethereumAddress.toLowerCase()===this.currentUser.ethereumAddress.toLowerCase());if(!h)throw new g("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 g(`Unknown encryption method: ${a.encryptionMethod}`);if(o.markBackupVerified(l),this.currentWallet={address:l,mnemonic:c},this.currentUser){let u=new D,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 y=await(await Promise.resolve().then(()=>(te(),or))).deriveEncryptionKeyFromWebAuthn(h.id,h.publicKey),w=await(await Promise.resolve().then(()=>(te(),or))).encryptData(c,y);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.requestPersistentStorage(),this.config.onAuthStateChanged?.(!0,this.currentUser)}}return{mnemonic:c,ethereumAddress:l}}async syncWalletWithPasskey(e,t){let{BackupFileManager:n}=await Promise.resolve().then(()=>(le(),pe)),{BackupManager:s}=await Promise.resolve().then(()=>(Re(),Te)),{promptPasskeySelection:i}=await Promise.resolve().then(()=>(Pi(),Dc)),o=new n,a=new s,c=await o.parseBackupFile(e);if(c.encryptionMethod==="prf")return this.restorePrfBackup(c);let l=await i(),u=l.credentialId,d=l.publicKey;if(!d){if(c.encryptionMethod!=="password")throw new Se("PASSKEY_BACKUP",u);if(!c.credential)throw new Se("NO_CREDENTIAL",u);if(c.credential.id!==u)throw new Se("CREDENTIAL_MISMATCH",u);if(d=c.credential.publicKey,!await sn(l.assertion,d))throw new Se("PUBLIC_KEY_MISMATCH",u)}let h,m;if(c.encryptionMethod==="password"){if(!t)throw new g("Password required to restore password-encrypted backup");let y=await o.restoreWithPassword(c,t);h=y.mnemonic,m=y.ethereumAddress}else if(c.encryptionMethod==="passkey"){let y=await o.restoreWithExistingPasskey(c,u,d);h=y.mnemonic,m=y.ethereumAddress}else if(c.encryptionMethod==="hybrid"){if(!t)throw new g("Password required to restore hybrid backup");let y=await o.restoreWithHybrid(c,t,u,d);h=y.mnemonic,m=y.ethereumAddress}else throw new g(`Unknown encryption method: ${c.encryptionMethod}`);return a.markBackupVerified(m),await this.bootstrapCredential({id:u,publicKey:d,username:l.username??m},h,m),{mnemonic:h,ethereumAddress:m}}async restorePrfBackup(e){let{DeviceSyncManager:t}=await Promise.resolve().then(()=>(kr(),Gn)),{BackupManager:n}=await Promise.resolve().then(()=>(Re(),Te)),s=e.credential,o=(await new D().getCredentialById(s.id))?.publicKey??s.publicKey,{mnemonic:a,ethereumAddress:c}=await new t().importFromSync(e,o);return new n().markBackupVerified(c),await this.bootstrapCredential({id:s.id,publicKey:o,username:e.username??c},a,c),{mnemonic:a,ethereumAddress:c}}async bootstrapCredential(e,t,n){let s=new D,i=await s.getCredentialById(e.id);if(i)i.ethereumAddress.toLowerCase()!==n.toLowerCase()&&await s.updateCredentialAddress(e.id,n);else{let c=new Date().toISOString();await s.saveCredential({id:e.id,publicKey:e.publicKey,username:e.username,ethereumAddress:n,createdAt:c,lastUsed:c})}let o=await ae(e.id,e.publicKey),a=await Y(t,o);await this.walletStorage.store({ethereumAddress:n,encryptedMnemonic:a,credentialId:e.id,createdAt:new Date().toISOString()}),this.currentUser={username:i?.username??e.username,ethereumAddress:n,credentialId:e.id},await this.sessionManager.startSession(t,e.id,n,void 0,"STANDARD"),this.requestPersistentStorage(),this.config.onAuthStateChanged?.(!0,this.currentUser)}async registerWithBackupFile(e,t,n){let{BackupFileManager:s}=await Promise.resolve().then(()=>(le(),pe)),{BackupManager:i}=await Promise.resolve().then(()=>(Re(),Te)),o=new s,a=new i,c=await o.parseBackupFile(e);if(c.encryptionMethod!=="password")throw new g("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 g("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(()=>(kr(),Gn));return new e().getSyncInfo()}async exportForSync(e){if(!this.currentUser)throw new g("Must be authenticated to export for sync");let t=await this.getMnemonicFromSession(),n=await this.walletStorage.retrieve(this.currentUser.ethereumAddress);if(!n)throw new g("No wallet data found");let i=await new D().getCredentialById(n.credentialId);if(!i)throw new g("Credential not found");let{DeviceSyncManager:o}=await Promise.resolve().then(()=>(kr(),Gn)),a=new o,{backupFile:c,blob:l}=await a.exportForSync(t,this.currentUser.ethereumAddress,{id:i.id,publicKey:i.publicKey},this.currentUser.username,e),u=`w3pk-sync-${this.currentUser.ethereumAddress.substring(0,8)}.json`,d;try{d=await a.generateSyncQR(c)}catch(h){console.warn("QR code generation failed:",h)}return{blob:l,filename:u,qrCode:d}}async importFromSync(e){let{BackupFileManager:t}=await Promise.resolve().then(()=>(le(),pe)),n=await new t().parseBackupFile(e);if(n.encryptionMethod!=="prf")throw new g("importFromSync() takes PRF backups from exportForSync(). Use syncWalletWithPasskey() for other backups.");if(this.currentUser&&this.currentUser.credentialId!==n.credential.id)throw new Se("CREDENTIAL_MISMATCH",this.currentUser.credentialId);let{ethereumAddress:s}=await this.restorePrfBackup(n);return{ethereumAddress:s,success:!0}}async detectSyncCapabilities(){let{PlatformDetector:e}=await Promise.resolve().then(()=>(_c(),Lc));return new e().detectSyncCapabilities()}async simulateRecoveryScenario(e){if(!this.currentUser)throw new g("Must be authenticated to run recovery simulation");let t=await this.getBackupStatus(),{RecoverySimulator:n}=await Promise.resolve().then(()=>(Cr(),Xn));return new n().simulateScenario(e,t)}async runRecoveryTest(){if(!this.currentUser)throw new g("Must be authenticated to run recovery test");let e=await this.getBackupStatus(),{RecoverySimulator:t}=await Promise.resolve().then(()=>(Cr(),Xn));return new t().runInteractiveTest(e)}async getEducation(e){let{getExplainer:t}=await Promise.resolve().then(()=>(Cr(),Xn)),n=t(e);if(!n)throw new g(`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 g("Cannot extend session",e)}}async clearSession(){await this.sessionManager.clearSession()}setSessionDuration(e){this.sessionManager.setSessionDuration(e)}setPersistentSessionDuration(e){this.sessionManager.setPersistentSessionDuration(e)}async derivePrfSecret(e){try{return await Os(vt(fe()),e,this.currentUser?.credentialId)}catch(t){throw this.config.onError?.(t),t}}async deriveMLKemPublicKey(e){if(!this.currentUser)throw new g("Must be authenticated to derive ML-KEM public key");let{deriveMLKemKeypair:t}=await Promise.resolve().then(()=>(Pr(),es)),{Wallet:n}=await import("ethers"),s=e?.mode||"STANDARD",i=e?.tag||re,o=e?.origin||fe(),a=e?.context||"mlkem-v1",c=s==="STRICT"?!0:e?.requireAuth||!1;if(s==="PRIMARY")throw new g("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 ve(l,o,s,i),d;if(u.privateKey)d=u.privateKey;else{let{deriveWalletFromMnemonic:m}=await Promise.resolve().then(()=>(Ie(),xt));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 g("Must be authenticated to encrypt data");let{mlkemEncryptWithKey:s}=await Promise.resolve().then(()=>(Pr(),es)),i=n?.mode||"STANDARD",o=n?.tag||re,a=n?.origin||fe(),c=n?.context||"mlkem-v1",l=i==="STRICT"?!0:n?.requireAuth||!1;if(i==="PRIMARY")throw new g("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 ve(u,a,i,o),h;if(d.privateKey)h=d.privateKey;else{let{deriveWalletFromMnemonic:m}=await Promise.resolve().then(()=>(Ie(),xt));h=m(u,d.index).privateKey}return await s(e,h,t,c)}async mlkemDecrypt(e,t){if(!this.currentUser)throw new g("Must be authenticated to decrypt data");let{mlkemDecryptWithKey:n}=await Promise.resolve().then(()=>(Pr(),es)),s=t?.mode||"STANDARD",i=t?.tag||re,o=t?.origin||fe(),a=t?.context||"mlkem-v1",c=s==="STRICT"?!0:t?.requireAuth||!1;if(s==="PRIMARY")throw new g("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 ve(l,o,s,i),d;if(u.privateKey)d=u.privateKey;else{let{deriveWalletFromMnemonic:h}=await Promise.resolve().then(()=>(Ie(),xt));d=h(l,u.index).privateKey}return await n(e,d,a)}};z();Pi();kt();Cr();async function Xy(r,e="build"){let{importer:t}=await Promise.resolve().then(()=>(Ko(),zd)),{MemoryBlockstore:n}=await Promise.resolve().then(()=>(uh(),lh)),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 Zy(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 hh(r){let e=await Zy(r);return Xy(e)}function fh(){try{return dh().version}catch{throw new Error("Failed to read package version")}}async function ph(){let r=fh();return hh(`https://unpkg.com/w3pk@${r}/dist`)}async function eg(r){return await ph()===r}oe();Ei();Ie();function tg(r=11){let e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",t=new Uint8Array(r);return crypto.getRandomValues(t),Array.from(t).map(n=>e[n%e.length]).join("")}function rg(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+=`
|
|
964
964
|
`,r.statement&&(e+=`${r.statement}
|
|
965
|
-
|
|
966
|
-
|
|
965
|
+
`),e+=`
|
|
966
|
+
`,e+=`URI: ${r.uri}
|
|
967
967
|
`,e+=`Version: ${r.version}
|
|
968
968
|
`,e+=`Chain ID: ${r.chainId}
|
|
969
969
|
`,e+=`Nonce: ${r.nonce}
|
|
@@ -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,
|
|
975
|
+
- ${t}`}return e}function Xo(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,y,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: "))y=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:y,resources:w.length>0?w:void 0}}function ng(r,e){let t=[];try{let n=typeof r=="string"?Xo(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 sg(r,e,t){try{let{verifyMessage:n}=await import("ethers"),s=n(r,e),i=Xo(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();$n();function ig(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 og(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=ig(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
|
|
1001
|
-
`);try{let e=await
|
|
1000
|
+
`),t}async function mh(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 og(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 ag(r){console.log(`\u{1F50D} W3PK Security Inspection Starting...
|
|
1001
|
+
`);try{let e=await mh(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}}Pr();function cg(r={}){return new Ir(r)}var Yx=cg;export{en as ApiError,L as AuthenticationError,B as CryptoError,xe as DEFAULT_MODE,re as DEFAULT_TAG,Qe as PrfUnsupportedError,Er as RecoverySimulator,yt as RegistrationError,Rt as SocialRecoveryManager,lr as StealthAddressModule,C as StorageError,Se as SyncBootstrapError,gt as SyncRequiredError,g as WalletError,wt as WalletMissingError,Ir as Web3Passkey,K as Web3PasskeyError,ie as arrayBufferToBase64Url,Bs as assertEthereumAddress,Ih as assertMnemonic,Ts as assertUsername,Rc as authenticateWithPasskey,ra as base64ToArrayBuffer,sa as base64UrlDecode,R as base64UrlToArrayBuffer,Oh as canControlStealthAddress,hn as checkStealthAddress,Xh as clearCache,fn as computeStealthPrivateKey,rg as createSiweMessage,la as createWalletFromMnemonic,cg as createWeb3Passkey,Yx as default,ua as deriveAddressFromP256PublicKey,Ns as deriveIndexFromOriginModeAndTag,Zn as deriveMLKemKeypair,cr as deriveStealthKeys,un as deriveWalletFromMnemonic,js as detectWalletProvider,Sn as encodeEIP7702AuthorizationMessage,Ic as extractRS,ln as generateBIP39Wallet,tg as generateSiweNonce,Ls as generateStealthAddress,Jh as getAllChains,zc as getAllTopics,Qh as getChainById,ph as getCurrentBuildHash,fe as getCurrentOrigin,Ys as getDefaultProvider,Hs as getEndpoints,Oc as getExplainer,ve as getOriginSpecificAddress,fh as getPackageVersion,hh as getW3pkBuildHash,An as hashEIP7702AuthorizationMessage,mh as inspect,ag as inspectNow,Bh as isStrongPassword,Ri as mlkemDecrypt,Jc as mlkemDecryptWithKey,Ti as mlkemEncrypt,jc as mlkemEncryptWithKey,vt as normalizeOrigin,Xo as parseSiweMessage,Tc as promptPasskeySelection,Gs as requestExternalWalletAuthorization,bt as safeAtob,na as safeBtoa,Wc as searchExplainers,Js as supportsEIP7702Authorization,Zo as validateEthereumAddress,ta as validateMnemonic,ng as validateSiweMessage,ea as validateUsername,eg as verifyBuildHash,qs as verifyEIP7702Authorization,sg as verifySiweSignature};
|
|
1004
1004
|
//# sourceMappingURL=index.mjs.map
|