You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							3068 lines
						
					
					
						
							91 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							3068 lines
						
					
					
						
							91 KiB
						
					
					
				| "use strict"; | |
| var nobleHashes = (() => { | |
|   var __defProp = Object.defineProperty; | |
|   var __getOwnPropDesc = Object.getOwnPropertyDescriptor; | |
|   var __getOwnPropNames = Object.getOwnPropertyNames; | |
|   var __hasOwnProp = Object.prototype.hasOwnProperty; | |
|   var __export = (target, all) => { | |
|     for (var name in all) | |
|       __defProp(target, name, { get: all[name], enumerable: true }); | |
|   }; | |
|   var __copyProps = (to, from, except, desc) => { | |
|     if ((from && typeof from === "object") || typeof from === "function") { | |
|       for (let key of __getOwnPropNames(from)) | |
|         if (!__hasOwnProp.call(to, key) && key !== except) | |
|           __defProp(to, key, { | |
|             get: () => from[key], | |
|             enumerable: | |
|               !(desc = __getOwnPropDesc(from, key)) || desc.enumerable, | |
|           }); | |
|     } | |
|     return to; | |
|   }; | |
|   var __toCommonJS = (mod) => | |
|     __copyProps(__defProp({}, "__esModule", { value: true }), mod); | |
| 
 | |
|   // input.js | |
|   var input_exports = {}; | |
|   __export(input_exports, { | |
|     argon2id: () => argon2id, | |
|     blake2b: () => blake2b, | |
|     blake2s: () => blake2s, | |
|     blake3: () => blake3, | |
|     cshake128: () => cshake128, | |
|     cshake256: () => cshake256, | |
|     eskdf: () => eskdf, | |
|     hkdf: () => hkdf, | |
|     hmac: () => hmac, | |
|     k12: () => k12, | |
|     keccak_224: () => keccak_224, | |
|     keccak_256: () => keccak_256, | |
|     keccak_384: () => keccak_384, | |
|     keccak_512: () => keccak_512, | |
|     kmac128: () => kmac128, | |
|     kmac256: () => kmac256, | |
|     m14: () => m14, | |
|     pbkdf2: () => pbkdf2, | |
|     pbkdf2Async: () => pbkdf2Async, | |
|     ripemd160: () => ripemd160, | |
|     scrypt: () => scrypt, | |
|     scryptAsync: () => scryptAsync, | |
|     sha1: () => sha1, | |
|     sha256: () => sha256, | |
|     sha3_224: () => sha3_224, | |
|     sha3_256: () => sha3_256, | |
|     sha3_384: () => sha3_384, | |
|     sha3_512: () => sha3_512, | |
|     sha512: () => sha512, | |
|     utils: () => utils, | |
|   }); | |
| 
 | |
|   // ../src/crypto.ts | |
|   var crypto = | |
|     typeof globalThis === "object" && "crypto" in globalThis | |
|       ? globalThis.crypto | |
|       : void 0; | |
| 
 | |
|   // ../esm/utils.js | |
|   var u8a = (a) => a instanceof Uint8Array; | |
|   var u8 = (arr) => new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength); | |
|   var u32 = (arr) => | |
|     new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4)); | |
|   var createView = (arr) => | |
|     new DataView(arr.buffer, arr.byteOffset, arr.byteLength); | |
|   var rotr = (word, shift) => (word << (32 - shift)) | (word >>> shift); | |
|   var isLE = new Uint8Array(new Uint32Array([287454020]).buffer)[0] === 68; | |
|   if (!isLE) throw new Error("Non little-endian hardware is not supported"); | |
|   var hexes = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) => | |
|     i.toString(16).padStart(2, "0"), | |
|   ); | |
|   function bytesToHex(bytes2) { | |
|     if (!u8a(bytes2)) throw new Error("Uint8Array expected"); | |
|     let hex = ""; | |
|     for (let i = 0; i < bytes2.length; i++) { | |
|       hex += hexes[bytes2[i]]; | |
|     } | |
|     return hex; | |
|   } | |
|   function hexToBytes(hex) { | |
|     if (typeof hex !== "string") | |
|       throw new Error("hex string expected, got " + typeof hex); | |
|     const len = hex.length; | |
|     if (len % 2) | |
|       throw new Error( | |
|         "padded hex string expected, got unpadded hex of length " + len, | |
|       ); | |
|     const array = new Uint8Array(len / 2); | |
|     for (let i = 0; i < array.length; i++) { | |
|       const j = i * 2; | |
|       const hexByte = hex.slice(j, j + 2); | |
|       const byte = Number.parseInt(hexByte, 16); | |
|       if (Number.isNaN(byte) || byte < 0) | |
|         throw new Error("Invalid byte sequence"); | |
|       array[i] = byte; | |
|     } | |
|     return array; | |
|   } | |
|   var nextTick = async () => {}; | |
|   async function asyncLoop(iters, tick, cb) { | |
|     let ts = Date.now(); | |
|     for (let i = 0; i < iters; i++) { | |
|       cb(i); | |
|       const diff = Date.now() - ts; | |
|       if (diff >= 0 && diff < tick) continue; | |
|       await nextTick(); | |
|       ts += diff; | |
|     } | |
|   } | |
|   function utf8ToBytes(str) { | |
|     if (typeof str !== "string") | |
|       throw new Error(`utf8ToBytes expected string, got ${typeof str}`); | |
|     return new Uint8Array(new TextEncoder().encode(str)); | |
|   } | |
|   function toBytes(data) { | |
|     if (typeof data === "string") data = utf8ToBytes(data); | |
|     if (!u8a(data)) throw new Error(`expected Uint8Array, got ${typeof data}`); | |
|     return data; | |
|   } | |
|   var Hash = class { | |
|     // Safe version that clones internal state | |
|     clone() { | |
|       return this._cloneInto(); | |
|     } | |
|   }; | |
|   var toStr = {}.toString; | |
|   function checkOpts(defaults, opts) { | |
|     if (opts !== void 0 && toStr.call(opts) !== "[object Object]") | |
|       throw new Error("Options should be object or undefined"); | |
|     const merged = Object.assign(defaults, opts); | |
|     return merged; | |
|   } | |
|   function wrapConstructor(hashCons) { | |
|     const hashC = (msg) => hashCons().update(toBytes(msg)).digest(); | |
|     const tmp = hashCons(); | |
|     hashC.outputLen = tmp.outputLen; | |
|     hashC.blockLen = tmp.blockLen; | |
|     hashC.create = () => hashCons(); | |
|     return hashC; | |
|   } | |
|   function wrapConstructorWithOpts(hashCons) { | |
|     const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest(); | |
|     const tmp = hashCons({}); | |
|     hashC.outputLen = tmp.outputLen; | |
|     hashC.blockLen = tmp.blockLen; | |
|     hashC.create = (opts) => hashCons(opts); | |
|     return hashC; | |
|   } | |
|   function wrapXOFConstructorWithOpts(hashCons) { | |
|     const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest(); | |
|     const tmp = hashCons({}); | |
|     hashC.outputLen = tmp.outputLen; | |
|     hashC.blockLen = tmp.blockLen; | |
|     hashC.create = (opts) => hashCons(opts); | |
|     return hashC; | |
|   } | |
|   function randomBytes(bytesLength = 32) { | |
|     if (crypto && typeof crypto.getRandomValues === "function") { | |
|       return crypto.getRandomValues(new Uint8Array(bytesLength)); | |
|     } | |
|     throw new Error("crypto.getRandomValues must be defined"); | |
|   } | |
| 
 | |
|   // ../esm/_assert.js | |
|   function number(n) { | |
|     if (!Number.isSafeInteger(n) || n < 0) | |
|       throw new Error(`Wrong positive integer: ${n}`); | |
|   } | |
|   function bytes(b, ...lengths) { | |
|     if (!(b instanceof Uint8Array)) throw new Error("Expected Uint8Array"); | |
|     if (lengths.length > 0 && !lengths.includes(b.length)) | |
|       throw new Error( | |
|         `Expected Uint8Array of length ${lengths}, not of length=${b.length}`, | |
|       ); | |
|   } | |
|   function hash(hash2) { | |
|     if (typeof hash2 !== "function" || typeof hash2.create !== "function") | |
|       throw new Error("Hash should be wrapped by utils.wrapConstructor"); | |
|     number(hash2.outputLen); | |
|     number(hash2.blockLen); | |
|   } | |
|   function exists(instance, checkFinished = true) { | |
|     if (instance.destroyed) throw new Error("Hash instance has been destroyed"); | |
|     if (checkFinished && instance.finished) | |
|       throw new Error("Hash#digest() has already been called"); | |
|   } | |
|   function output(out, instance) { | |
|     bytes(out); | |
|     const min = instance.outputLen; | |
|     if (out.length < min) { | |
|       throw new Error( | |
|         `digestInto() expects output buffer of length at least ${min}`, | |
|       ); | |
|     } | |
|   } | |
| 
 | |
|   // ../esm/_blake2.js | |
|   var SIGMA = /* @__PURE__ */ new Uint8Array([ | |
|     0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 14, 10, 4, 8, 9, 15, | |
|     13, 6, 1, 12, 0, 2, 11, 7, 5, 3, 11, 8, 12, 0, 5, 2, 15, 13, 10, 14, 3, 6, | |
|     7, 1, 9, 4, 7, 9, 3, 1, 13, 12, 11, 14, 2, 6, 5, 10, 4, 0, 15, 8, 9, 0, 5, | |
|     7, 2, 4, 10, 15, 14, 1, 11, 12, 6, 8, 3, 13, 2, 12, 6, 10, 0, 11, 8, 3, 4, | |
|     13, 7, 5, 15, 14, 1, 9, 12, 5, 1, 15, 14, 13, 4, 10, 0, 7, 6, 3, 9, 2, 8, | |
|     11, 13, 11, 7, 14, 12, 1, 3, 9, 5, 0, 15, 4, 8, 6, 2, 10, 6, 15, 14, 9, 11, | |
|     3, 0, 8, 12, 2, 13, 7, 1, 4, 10, 5, 10, 2, 8, 4, 7, 6, 1, 5, 15, 11, 9, 14, | |
|     3, 12, 13, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 14, 10, | |
|     4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3, | |
|   ]); | |
|   var BLAKE2 = class extends Hash { | |
|     constructor(blockLen, outputLen, opts = {}, keyLen, saltLen, persLen) { | |
|       super(); | |
|       this.blockLen = blockLen; | |
|       this.outputLen = outputLen; | |
|       this.length = 0; | |
|       this.pos = 0; | |
|       this.finished = false; | |
|       this.destroyed = false; | |
|       number(blockLen); | |
|       number(outputLen); | |
|       number(keyLen); | |
|       if (outputLen < 0 || outputLen > keyLen) | |
|         throw new Error("outputLen bigger than keyLen"); | |
|       if ( | |
|         opts.key !== void 0 && | |
|         (opts.key.length < 1 || opts.key.length > keyLen) | |
|       ) | |
|         throw new Error(`key must be up 1..${keyLen} byte long or undefined`); | |
|       if (opts.salt !== void 0 && opts.salt.length !== saltLen) | |
|         throw new Error(`salt must be ${saltLen} byte long or undefined`); | |
|       if ( | |
|         opts.personalization !== void 0 && | |
|         opts.personalization.length !== persLen | |
|       ) | |
|         throw new Error( | |
|           `personalization must be ${persLen} byte long or undefined`, | |
|         ); | |
|       this.buffer32 = u32((this.buffer = new Uint8Array(blockLen))); | |
|     } | |
|     update(data) { | |
|       exists(this); | |
|       const { blockLen, buffer, buffer32 } = this; | |
|       data = toBytes(data); | |
|       const len = data.length; | |
|       const offset = data.byteOffset; | |
|       const buf = data.buffer; | |
|       for (let pos = 0; pos < len; ) { | |
|         if (this.pos === blockLen) { | |
|           this.compress(buffer32, 0, false); | |
|           this.pos = 0; | |
|         } | |
|         const take = Math.min(blockLen - this.pos, len - pos); | |
|         const dataOffset = offset + pos; | |
|         if (take === blockLen && !(dataOffset % 4) && pos + take < len) { | |
|           const data32 = new Uint32Array( | |
|             buf, | |
|             dataOffset, | |
|             Math.floor((len - pos) / 4), | |
|           ); | |
|           for ( | |
|             let pos32 = 0; | |
|             pos + blockLen < len; | |
|             pos32 += buffer32.length, pos += blockLen | |
|           ) { | |
|             this.length += blockLen; | |
|             this.compress(data32, pos32, false); | |
|           } | |
|           continue; | |
|         } | |
|         buffer.set(data.subarray(pos, pos + take), this.pos); | |
|         this.pos += take; | |
|         this.length += take; | |
|         pos += take; | |
|       } | |
|       return this; | |
|     } | |
|     digestInto(out) { | |
|       exists(this); | |
|       output(out, this); | |
|       const { pos, buffer32 } = this; | |
|       this.finished = true; | |
|       this.buffer.subarray(pos).fill(0); | |
|       this.compress(buffer32, 0, true); | |
|       const out32 = u32(out); | |
|       this.get().forEach((v, i) => (out32[i] = v)); | |
|     } | |
|     digest() { | |
|       const { buffer, outputLen } = this; | |
|       this.digestInto(buffer); | |
|       const res = buffer.slice(0, outputLen); | |
|       this.destroy(); | |
|       return res; | |
|     } | |
|     _cloneInto(to) { | |
|       const { buffer, length, finished, destroyed, outputLen, pos } = this; | |
|       to || (to = new this.constructor({ dkLen: outputLen })); | |
|       to.set(...this.get()); | |
|       to.length = length; | |
|       to.finished = finished; | |
|       to.destroyed = destroyed; | |
|       to.outputLen = outputLen; | |
|       to.buffer.set(buffer); | |
|       to.pos = pos; | |
|       return to; | |
|     } | |
|   }; | |
| 
 | |
|   // ../esm/_u64.js | |
|   var U32_MASK64 = /* @__PURE__ */ BigInt(2 ** 32 - 1); | |
|   var _32n = /* @__PURE__ */ BigInt(32); | |
|   function fromBig(n, le = false) { | |
|     if (le) | |
|       return { h: Number(n & U32_MASK64), l: Number((n >> _32n) & U32_MASK64) }; | |
|     return { | |
|       h: Number((n >> _32n) & U32_MASK64) | 0, | |
|       l: Number(n & U32_MASK64) | 0, | |
|     }; | |
|   } | |
|   function split(lst, le = false) { | |
|     let Ah = new Uint32Array(lst.length); | |
|     let Al = new Uint32Array(lst.length); | |
|     for (let i = 0; i < lst.length; i++) { | |
|       const { h, l } = fromBig(lst[i], le); | |
|       [Ah[i], Al[i]] = [h, l]; | |
|     } | |
|     return [Ah, Al]; | |
|   } | |
|   var toBig = (h, l) => (BigInt(h >>> 0) << _32n) | BigInt(l >>> 0); | |
|   var shrSH = (h, _l, s) => h >>> s; | |
|   var shrSL = (h, l, s) => (h << (32 - s)) | (l >>> s); | |
|   var rotrSH = (h, l, s) => (h >>> s) | (l << (32 - s)); | |
|   var rotrSL = (h, l, s) => (h << (32 - s)) | (l >>> s); | |
|   var rotrBH = (h, l, s) => (h << (64 - s)) | (l >>> (s - 32)); | |
|   var rotrBL = (h, l, s) => (h >>> (s - 32)) | (l << (64 - s)); | |
|   var rotr32H = (_h, l) => l; | |
|   var rotr32L = (h, _l) => h; | |
|   var rotlSH = (h, l, s) => (h << s) | (l >>> (32 - s)); | |
|   var rotlSL = (h, l, s) => (l << s) | (h >>> (32 - s)); | |
|   var rotlBH = (h, l, s) => (l << (s - 32)) | (h >>> (64 - s)); | |
|   var rotlBL = (h, l, s) => (h << (s - 32)) | (l >>> (64 - s)); | |
|   function add(Ah, Al, Bh, Bl) { | |
|     const l = (Al >>> 0) + (Bl >>> 0); | |
|     return { h: (Ah + Bh + ((l / 2 ** 32) | 0)) | 0, l: l | 0 }; | |
|   } | |
|   var add3L = (Al, Bl, Cl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0); | |
|   var add3H = (low, Ah, Bh, Ch) => (Ah + Bh + Ch + ((low / 2 ** 32) | 0)) | 0; | |
|   var add4L = (Al, Bl, Cl, Dl) => | |
|     (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0); | |
|   var add4H = (low, Ah, Bh, Ch, Dh) => | |
|     (Ah + Bh + Ch + Dh + ((low / 2 ** 32) | 0)) | 0; | |
|   var add5L = (Al, Bl, Cl, Dl, El) => | |
|     (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0) + (El >>> 0); | |
|   var add5H = (low, Ah, Bh, Ch, Dh, Eh) => | |
|     (Ah + Bh + Ch + Dh + Eh + ((low / 2 ** 32) | 0)) | 0; | |
|   var u64 = { | |
|     fromBig, | |
|     split, | |
|     toBig, | |
|     shrSH, | |
|     shrSL, | |
|     rotrSH, | |
|     rotrSL, | |
|     rotrBH, | |
|     rotrBL, | |
|     rotr32H, | |
|     rotr32L, | |
|     rotlSH, | |
|     rotlSL, | |
|     rotlBH, | |
|     rotlBL, | |
|     add, | |
|     add3L, | |
|     add3H, | |
|     add4L, | |
|     add4H, | |
|     add5H, | |
|     add5L, | |
|   }; | |
|   var u64_default = u64; | |
| 
 | |
|   // ../esm/blake2b.js | |
|   var IV = /* @__PURE__ */ new Uint32Array([ | |
|     4089235720, 1779033703, 2227873595, 3144134277, 4271175723, 1013904242, | |
|     1595750129, 2773480762, 2917565137, 1359893119, 725511199, 2600822924, | |
|     4215389547, 528734635, 327033209, 1541459225, | |
|   ]); | |
|   var BUF = /* @__PURE__ */ new Uint32Array(32); | |
|   function G1(a, b, c, d, msg, x) { | |
|     const Xl = msg[x], | |
|       Xh = msg[x + 1]; | |
|     let Al = BUF[2 * a], | |
|       Ah = BUF[2 * a + 1]; | |
|     let Bl = BUF[2 * b], | |
|       Bh = BUF[2 * b + 1]; | |
|     let Cl = BUF[2 * c], | |
|       Ch = BUF[2 * c + 1]; | |
|     let Dl = BUF[2 * d], | |
|       Dh = BUF[2 * d + 1]; | |
|     let ll = u64_default.add3L(Al, Bl, Xl); | |
|     Ah = u64_default.add3H(ll, Ah, Bh, Xh); | |
|     Al = ll | 0; | |
|     ({ Dh, Dl } = { Dh: Dh ^ Ah, Dl: Dl ^ Al }); | |
|     ({ Dh, Dl } = { | |
|       Dh: u64_default.rotr32H(Dh, Dl), | |
|       Dl: u64_default.rotr32L(Dh, Dl), | |
|     }); | |
|     ({ h: Ch, l: Cl } = u64_default.add(Ch, Cl, Dh, Dl)); | |
|     ({ Bh, Bl } = { Bh: Bh ^ Ch, Bl: Bl ^ Cl }); | |
|     ({ Bh, Bl } = { | |
|       Bh: u64_default.rotrSH(Bh, Bl, 24), | |
|       Bl: u64_default.rotrSL(Bh, Bl, 24), | |
|     }); | |
|     (BUF[2 * a] = Al), (BUF[2 * a + 1] = Ah); | |
|     (BUF[2 * b] = Bl), (BUF[2 * b + 1] = Bh); | |
|     (BUF[2 * c] = Cl), (BUF[2 * c + 1] = Ch); | |
|     (BUF[2 * d] = Dl), (BUF[2 * d + 1] = Dh); | |
|   } | |
|   function G2(a, b, c, d, msg, x) { | |
|     const Xl = msg[x], | |
|       Xh = msg[x + 1]; | |
|     let Al = BUF[2 * a], | |
|       Ah = BUF[2 * a + 1]; | |
|     let Bl = BUF[2 * b], | |
|       Bh = BUF[2 * b + 1]; | |
|     let Cl = BUF[2 * c], | |
|       Ch = BUF[2 * c + 1]; | |
|     let Dl = BUF[2 * d], | |
|       Dh = BUF[2 * d + 1]; | |
|     let ll = u64_default.add3L(Al, Bl, Xl); | |
|     Ah = u64_default.add3H(ll, Ah, Bh, Xh); | |
|     Al = ll | 0; | |
|     ({ Dh, Dl } = { Dh: Dh ^ Ah, Dl: Dl ^ Al }); | |
|     ({ Dh, Dl } = { | |
|       Dh: u64_default.rotrSH(Dh, Dl, 16), | |
|       Dl: u64_default.rotrSL(Dh, Dl, 16), | |
|     }); | |
|     ({ h: Ch, l: Cl } = u64_default.add(Ch, Cl, Dh, Dl)); | |
|     ({ Bh, Bl } = { Bh: Bh ^ Ch, Bl: Bl ^ Cl }); | |
|     ({ Bh, Bl } = { | |
|       Bh: u64_default.rotrBH(Bh, Bl, 63), | |
|       Bl: u64_default.rotrBL(Bh, Bl, 63), | |
|     }); | |
|     (BUF[2 * a] = Al), (BUF[2 * a + 1] = Ah); | |
|     (BUF[2 * b] = Bl), (BUF[2 * b + 1] = Bh); | |
|     (BUF[2 * c] = Cl), (BUF[2 * c + 1] = Ch); | |
|     (BUF[2 * d] = Dl), (BUF[2 * d + 1] = Dh); | |
|   } | |
|   var BLAKE2b = class extends BLAKE2 { | |
|     constructor(opts = {}) { | |
|       super(128, opts.dkLen === void 0 ? 64 : opts.dkLen, opts, 64, 16, 16); | |
|       this.v0l = IV[0] | 0; | |
|       this.v0h = IV[1] | 0; | |
|       this.v1l = IV[2] | 0; | |
|       this.v1h = IV[3] | 0; | |
|       this.v2l = IV[4] | 0; | |
|       this.v2h = IV[5] | 0; | |
|       this.v3l = IV[6] | 0; | |
|       this.v3h = IV[7] | 0; | |
|       this.v4l = IV[8] | 0; | |
|       this.v4h = IV[9] | 0; | |
|       this.v5l = IV[10] | 0; | |
|       this.v5h = IV[11] | 0; | |
|       this.v6l = IV[12] | 0; | |
|       this.v6h = IV[13] | 0; | |
|       this.v7l = IV[14] | 0; | |
|       this.v7h = IV[15] | 0; | |
|       const keyLength = opts.key ? opts.key.length : 0; | |
|       this.v0l ^= this.outputLen | (keyLength << 8) | (1 << 16) | (1 << 24); | |
|       if (opts.salt) { | |
|         const salt = u32(toBytes(opts.salt)); | |
|         this.v4l ^= salt[0]; | |
|         this.v4h ^= salt[1]; | |
|         this.v5l ^= salt[2]; | |
|         this.v5h ^= salt[3]; | |
|       } | |
|       if (opts.personalization) { | |
|         const pers = u32(toBytes(opts.personalization)); | |
|         this.v6l ^= pers[0]; | |
|         this.v6h ^= pers[1]; | |
|         this.v7l ^= pers[2]; | |
|         this.v7h ^= pers[3]; | |
|       } | |
|       if (opts.key) { | |
|         const tmp = new Uint8Array(this.blockLen); | |
|         tmp.set(toBytes(opts.key)); | |
|         this.update(tmp); | |
|       } | |
|     } | |
|     // prettier-ignore | |
|     get() { | |
|       let { v0l, v0h, v1l, v1h, v2l, v2h, v3l, v3h, v4l, v4h, v5l, v5h, v6l, v6h, v7l, v7h } = this; | |
|       return [v0l, v0h, v1l, v1h, v2l, v2h, v3l, v3h, v4l, v4h, v5l, v5h, v6l, v6h, v7l, v7h]; | |
|     } | |
|     // prettier-ignore | |
|     set(v0l, v0h, v1l, v1h, v2l, v2h, v3l, v3h, v4l, v4h, v5l, v5h, v6l, v6h, v7l, v7h) { | |
|       this.v0l = v0l | 0; | |
|       this.v0h = v0h | 0; | |
|       this.v1l = v1l | 0; | |
|       this.v1h = v1h | 0; | |
|       this.v2l = v2l | 0; | |
|       this.v2h = v2h | 0; | |
|       this.v3l = v3l | 0; | |
|       this.v3h = v3h | 0; | |
|       this.v4l = v4l | 0; | |
|       this.v4h = v4h | 0; | |
|       this.v5l = v5l | 0; | |
|       this.v5h = v5h | 0; | |
|       this.v6l = v6l | 0; | |
|       this.v6h = v6h | 0; | |
|       this.v7l = v7l | 0; | |
|       this.v7h = v7h | 0; | |
|     } | |
|     compress(msg, offset, isLast) { | |
|       this.get().forEach((v, i) => (BUF[i] = v)); | |
|       BUF.set(IV, 16); | |
|       let { h, l } = u64_default.fromBig(BigInt(this.length)); | |
|       BUF[24] = IV[8] ^ l; | |
|       BUF[25] = IV[9] ^ h; | |
|       if (isLast) { | |
|         BUF[28] = ~BUF[28]; | |
|         BUF[29] = ~BUF[29]; | |
|       } | |
|       let j = 0; | |
|       const s = SIGMA; | |
|       for (let i = 0; i < 12; i++) { | |
|         G1(0, 4, 8, 12, msg, offset + 2 * s[j++]); | |
|         G2(0, 4, 8, 12, msg, offset + 2 * s[j++]); | |
|         G1(1, 5, 9, 13, msg, offset + 2 * s[j++]); | |
|         G2(1, 5, 9, 13, msg, offset + 2 * s[j++]); | |
|         G1(2, 6, 10, 14, msg, offset + 2 * s[j++]); | |
|         G2(2, 6, 10, 14, msg, offset + 2 * s[j++]); | |
|         G1(3, 7, 11, 15, msg, offset + 2 * s[j++]); | |
|         G2(3, 7, 11, 15, msg, offset + 2 * s[j++]); | |
|         G1(0, 5, 10, 15, msg, offset + 2 * s[j++]); | |
|         G2(0, 5, 10, 15, msg, offset + 2 * s[j++]); | |
|         G1(1, 6, 11, 12, msg, offset + 2 * s[j++]); | |
|         G2(1, 6, 11, 12, msg, offset + 2 * s[j++]); | |
|         G1(2, 7, 8, 13, msg, offset + 2 * s[j++]); | |
|         G2(2, 7, 8, 13, msg, offset + 2 * s[j++]); | |
|         G1(3, 4, 9, 14, msg, offset + 2 * s[j++]); | |
|         G2(3, 4, 9, 14, msg, offset + 2 * s[j++]); | |
|       } | |
|       this.v0l ^= BUF[0] ^ BUF[16]; | |
|       this.v0h ^= BUF[1] ^ BUF[17]; | |
|       this.v1l ^= BUF[2] ^ BUF[18]; | |
|       this.v1h ^= BUF[3] ^ BUF[19]; | |
|       this.v2l ^= BUF[4] ^ BUF[20]; | |
|       this.v2h ^= BUF[5] ^ BUF[21]; | |
|       this.v3l ^= BUF[6] ^ BUF[22]; | |
|       this.v3h ^= BUF[7] ^ BUF[23]; | |
|       this.v4l ^= BUF[8] ^ BUF[24]; | |
|       this.v4h ^= BUF[9] ^ BUF[25]; | |
|       this.v5l ^= BUF[10] ^ BUF[26]; | |
|       this.v5h ^= BUF[11] ^ BUF[27]; | |
|       this.v6l ^= BUF[12] ^ BUF[28]; | |
|       this.v6h ^= BUF[13] ^ BUF[29]; | |
|       this.v7l ^= BUF[14] ^ BUF[30]; | |
|       this.v7h ^= BUF[15] ^ BUF[31]; | |
|       BUF.fill(0); | |
|     } | |
|     destroy() { | |
|       this.destroyed = true; | |
|       this.buffer32.fill(0); | |
|       this.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); | |
|     } | |
|   }; | |
|   var blake2b = /* @__PURE__ */ wrapConstructorWithOpts( | |
|     (opts) => new BLAKE2b(opts), | |
|   ); | |
| 
 | |
|   // ../esm/blake2s.js | |
|   var IV2 = /* @__PURE__ */ new Uint32Array([ | |
|     1779033703, 3144134277, 1013904242, 2773480762, 1359893119, 2600822924, | |
|     528734635, 1541459225, | |
|   ]); | |
|   function G12(a, b, c, d, x) { | |
|     a = (a + b + x) | 0; | |
|     d = rotr(d ^ a, 16); | |
|     c = (c + d) | 0; | |
|     b = rotr(b ^ c, 12); | |
|     return { a, b, c, d }; | |
|   } | |
|   function G22(a, b, c, d, x) { | |
|     a = (a + b + x) | 0; | |
|     d = rotr(d ^ a, 8); | |
|     c = (c + d) | 0; | |
|     b = rotr(b ^ c, 7); | |
|     return { a, b, c, d }; | |
|   } | |
|   function compress( | |
|     s, | |
|     offset, | |
|     msg, | |
|     rounds, | |
|     v0, | |
|     v1, | |
|     v2, | |
|     v3, | |
|     v4, | |
|     v5, | |
|     v6, | |
|     v7, | |
|     v8, | |
|     v9, | |
|     v10, | |
|     v11, | |
|     v12, | |
|     v13, | |
|     v14, | |
|     v15, | |
|   ) { | |
|     let j = 0; | |
|     for (let i = 0; i < rounds; i++) { | |
|       ({ | |
|         a: v0, | |
|         b: v4, | |
|         c: v8, | |
|         d: v12, | |
|       } = G12(v0, v4, v8, v12, msg[offset + s[j++]])); | |
|       ({ | |
|         a: v0, | |
|         b: v4, | |
|         c: v8, | |
|         d: v12, | |
|       } = G22(v0, v4, v8, v12, msg[offset + s[j++]])); | |
|       ({ | |
|         a: v1, | |
|         b: v5, | |
|         c: v9, | |
|         d: v13, | |
|       } = G12(v1, v5, v9, v13, msg[offset + s[j++]])); | |
|       ({ | |
|         a: v1, | |
|         b: v5, | |
|         c: v9, | |
|         d: v13, | |
|       } = G22(v1, v5, v9, v13, msg[offset + s[j++]])); | |
|       ({ | |
|         a: v2, | |
|         b: v6, | |
|         c: v10, | |
|         d: v14, | |
|       } = G12(v2, v6, v10, v14, msg[offset + s[j++]])); | |
|       ({ | |
|         a: v2, | |
|         b: v6, | |
|         c: v10, | |
|         d: v14, | |
|       } = G22(v2, v6, v10, v14, msg[offset + s[j++]])); | |
|       ({ | |
|         a: v3, | |
|         b: v7, | |
|         c: v11, | |
|         d: v15, | |
|       } = G12(v3, v7, v11, v15, msg[offset + s[j++]])); | |
|       ({ | |
|         a: v3, | |
|         b: v7, | |
|         c: v11, | |
|         d: v15, | |
|       } = G22(v3, v7, v11, v15, msg[offset + s[j++]])); | |
|       ({ | |
|         a: v0, | |
|         b: v5, | |
|         c: v10, | |
|         d: v15, | |
|       } = G12(v0, v5, v10, v15, msg[offset + s[j++]])); | |
|       ({ | |
|         a: v0, | |
|         b: v5, | |
|         c: v10, | |
|         d: v15, | |
|       } = G22(v0, v5, v10, v15, msg[offset + s[j++]])); | |
|       ({ | |
|         a: v1, | |
|         b: v6, | |
|         c: v11, | |
|         d: v12, | |
|       } = G12(v1, v6, v11, v12, msg[offset + s[j++]])); | |
|       ({ | |
|         a: v1, | |
|         b: v6, | |
|         c: v11, | |
|         d: v12, | |
|       } = G22(v1, v6, v11, v12, msg[offset + s[j++]])); | |
|       ({ | |
|         a: v2, | |
|         b: v7, | |
|         c: v8, | |
|         d: v13, | |
|       } = G12(v2, v7, v8, v13, msg[offset + s[j++]])); | |
|       ({ | |
|         a: v2, | |
|         b: v7, | |
|         c: v8, | |
|         d: v13, | |
|       } = G22(v2, v7, v8, v13, msg[offset + s[j++]])); | |
|       ({ | |
|         a: v3, | |
|         b: v4, | |
|         c: v9, | |
|         d: v14, | |
|       } = G12(v3, v4, v9, v14, msg[offset + s[j++]])); | |
|       ({ | |
|         a: v3, | |
|         b: v4, | |
|         c: v9, | |
|         d: v14, | |
|       } = G22(v3, v4, v9, v14, msg[offset + s[j++]])); | |
|     } | |
|     return { | |
|       v0, | |
|       v1, | |
|       v2, | |
|       v3, | |
|       v4, | |
|       v5, | |
|       v6, | |
|       v7, | |
|       v8, | |
|       v9, | |
|       v10, | |
|       v11, | |
|       v12, | |
|       v13, | |
|       v14, | |
|       v15, | |
|     }; | |
|   } | |
|   var BLAKE2s = class extends BLAKE2 { | |
|     constructor(opts = {}) { | |
|       super(64, opts.dkLen === void 0 ? 32 : opts.dkLen, opts, 32, 8, 8); | |
|       this.v0 = IV2[0] | 0; | |
|       this.v1 = IV2[1] | 0; | |
|       this.v2 = IV2[2] | 0; | |
|       this.v3 = IV2[3] | 0; | |
|       this.v4 = IV2[4] | 0; | |
|       this.v5 = IV2[5] | 0; | |
|       this.v6 = IV2[6] | 0; | |
|       this.v7 = IV2[7] | 0; | |
|       const keyLength = opts.key ? opts.key.length : 0; | |
|       this.v0 ^= this.outputLen | (keyLength << 8) | (1 << 16) | (1 << 24); | |
|       if (opts.salt) { | |
|         const salt = u32(toBytes(opts.salt)); | |
|         this.v4 ^= salt[0]; | |
|         this.v5 ^= salt[1]; | |
|       } | |
|       if (opts.personalization) { | |
|         const pers = u32(toBytes(opts.personalization)); | |
|         this.v6 ^= pers[0]; | |
|         this.v7 ^= pers[1]; | |
|       } | |
|       if (opts.key) { | |
|         const tmp = new Uint8Array(this.blockLen); | |
|         tmp.set(toBytes(opts.key)); | |
|         this.update(tmp); | |
|       } | |
|     } | |
|     get() { | |
|       const { v0, v1, v2, v3, v4, v5, v6, v7 } = this; | |
|       return [v0, v1, v2, v3, v4, v5, v6, v7]; | |
|     } | |
|     // prettier-ignore | |
|     set(v0, v1, v2, v3, v4, v5, v6, v7) { | |
|       this.v0 = v0 | 0; | |
|       this.v1 = v1 | 0; | |
|       this.v2 = v2 | 0; | |
|       this.v3 = v3 | 0; | |
|       this.v4 = v4 | 0; | |
|       this.v5 = v5 | 0; | |
|       this.v6 = v6 | 0; | |
|       this.v7 = v7 | 0; | |
|     } | |
|     compress(msg, offset, isLast) { | |
|       const { h, l } = fromBig(BigInt(this.length)); | |
|       const { | |
|         v0, | |
|         v1, | |
|         v2, | |
|         v3, | |
|         v4, | |
|         v5, | |
|         v6, | |
|         v7, | |
|         v8, | |
|         v9, | |
|         v10, | |
|         v11, | |
|         v12, | |
|         v13, | |
|         v14, | |
|         v15, | |
|       } = compress( | |
|         SIGMA, | |
|         offset, | |
|         msg, | |
|         10, | |
|         this.v0, | |
|         this.v1, | |
|         this.v2, | |
|         this.v3, | |
|         this.v4, | |
|         this.v5, | |
|         this.v6, | |
|         this.v7, | |
|         IV2[0], | |
|         IV2[1], | |
|         IV2[2], | |
|         IV2[3], | |
|         l ^ IV2[4], | |
|         h ^ IV2[5], | |
|         isLast ? ~IV2[6] : IV2[6], | |
|         IV2[7], | |
|       ); | |
|       this.v0 ^= v0 ^ v8; | |
|       this.v1 ^= v1 ^ v9; | |
|       this.v2 ^= v2 ^ v10; | |
|       this.v3 ^= v3 ^ v11; | |
|       this.v4 ^= v4 ^ v12; | |
|       this.v5 ^= v5 ^ v13; | |
|       this.v6 ^= v6 ^ v14; | |
|       this.v7 ^= v7 ^ v15; | |
|     } | |
|     destroy() { | |
|       this.destroyed = true; | |
|       this.buffer32.fill(0); | |
|       this.set(0, 0, 0, 0, 0, 0, 0, 0); | |
|     } | |
|   }; | |
|   var blake2s = /* @__PURE__ */ wrapConstructorWithOpts( | |
|     (opts) => new BLAKE2s(opts), | |
|   ); | |
| 
 | |
|   // ../esm/blake3.js | |
|   var SIGMA2 = /* @__PURE__ */ (() => { | |
|     const Id2 = Array.from({ length: 16 }, (_, i) => i); | |
|     const permute = (arr) => | |
|       [2, 6, 3, 10, 7, 0, 4, 13, 1, 11, 12, 5, 9, 14, 15, 8].map((i) => arr[i]); | |
|     const res = []; | |
|     for (let i = 0, v = Id2; i < 7; i++, v = permute(v)) res.push(...v); | |
|     return Uint8Array.from(res); | |
|   })(); | |
|   var BLAKE3 = class _BLAKE3 extends BLAKE2 { | |
|     constructor(opts = {}, flags = 0) { | |
|       super( | |
|         64, | |
|         opts.dkLen === void 0 ? 32 : opts.dkLen, | |
|         {}, | |
|         Number.MAX_SAFE_INTEGER, | |
|         0, | |
|         0, | |
|       ); | |
|       this.flags = 0 | 0; | |
|       this.chunkPos = 0; | |
|       this.chunksDone = 0; | |
|       this.stack = []; | |
|       this.posOut = 0; | |
|       this.bufferOut32 = new Uint32Array(16); | |
|       this.chunkOut = 0; | |
|       this.enableXOF = true; | |
|       this.outputLen = opts.dkLen === void 0 ? 32 : opts.dkLen; | |
|       number(this.outputLen); | |
|       if (opts.key !== void 0 && opts.context !== void 0) | |
|         throw new Error( | |
|           "Blake3: only key or context can be specified at same time", | |
|         ); | |
|       else if (opts.key !== void 0) { | |
|         const key = toBytes(opts.key).slice(); | |
|         if (key.length !== 32) throw new Error("Blake3: key should be 32 byte"); | |
|         this.IV = u32(key); | |
|         this.flags = flags | 16; | |
|       } else if (opts.context !== void 0) { | |
|         const context_key = new _BLAKE3( | |
|           { dkLen: 32 }, | |
|           32, | |
|           /* Flags.DERIVE_KEY_CONTEXT */ | |
|         ) | |
|           .update(opts.context) | |
|           .digest(); | |
|         this.IV = u32(context_key); | |
|         this.flags = flags | 64; | |
|       } else { | |
|         this.IV = IV2.slice(); | |
|         this.flags = flags; | |
|       } | |
|       this.state = this.IV.slice(); | |
|       this.bufferOut = u8(this.bufferOut32); | |
|     } | |
|     // Unused | |
|     get() { | |
|       return []; | |
|     } | |
|     set() {} | |
|     b2Compress(counter, flags, buf, bufPos = 0) { | |
|       const { state: s, pos } = this; | |
|       const { h, l } = fromBig(BigInt(counter), true); | |
|       const { | |
|         v0, | |
|         v1, | |
|         v2, | |
|         v3, | |
|         v4, | |
|         v5, | |
|         v6, | |
|         v7, | |
|         v8, | |
|         v9, | |
|         v10, | |
|         v11, | |
|         v12, | |
|         v13, | |
|         v14, | |
|         v15, | |
|       } = compress( | |
|         SIGMA2, | |
|         bufPos, | |
|         buf, | |
|         7, | |
|         s[0], | |
|         s[1], | |
|         s[2], | |
|         s[3], | |
|         s[4], | |
|         s[5], | |
|         s[6], | |
|         s[7], | |
|         IV2[0], | |
|         IV2[1], | |
|         IV2[2], | |
|         IV2[3], | |
|         h, | |
|         l, | |
|         pos, | |
|         flags, | |
|       ); | |
|       s[0] = v0 ^ v8; | |
|       s[1] = v1 ^ v9; | |
|       s[2] = v2 ^ v10; | |
|       s[3] = v3 ^ v11; | |
|       s[4] = v4 ^ v12; | |
|       s[5] = v5 ^ v13; | |
|       s[6] = v6 ^ v14; | |
|       s[7] = v7 ^ v15; | |
|     } | |
|     compress(buf, bufPos = 0, isLast = false) { | |
|       let flags = this.flags; | |
|       if (!this.chunkPos) flags |= 1; | |
|       if (this.chunkPos === 15 || isLast) flags |= 2; | |
|       if (!isLast) this.pos = this.blockLen; | |
|       this.b2Compress(this.chunksDone, flags, buf, bufPos); | |
|       this.chunkPos += 1; | |
|       if (this.chunkPos === 16 || isLast) { | |
|         let chunk = this.state; | |
|         this.state = this.IV.slice(); | |
|         for ( | |
|           let last, chunks = this.chunksDone + 1; | |
|           isLast || !(chunks & 1); | |
|           chunks >>= 1 | |
|         ) { | |
|           if (!(last = this.stack.pop())) break; | |
|           this.buffer32.set(last, 0); | |
|           this.buffer32.set(chunk, 8); | |
|           this.pos = this.blockLen; | |
|           this.b2Compress(0, this.flags | 4, this.buffer32, 0); | |
|           chunk = this.state; | |
|           this.state = this.IV.slice(); | |
|         } | |
|         this.chunksDone++; | |
|         this.chunkPos = 0; | |
|         this.stack.push(chunk); | |
|       } | |
|       this.pos = 0; | |
|     } | |
|     _cloneInto(to) { | |
|       to = super._cloneInto(to); | |
|       const { | |
|         IV: IV5, | |
|         flags, | |
|         state, | |
|         chunkPos, | |
|         posOut, | |
|         chunkOut, | |
|         stack, | |
|         chunksDone, | |
|       } = this; | |
|       to.state.set(state.slice()); | |
|       to.stack = stack.map((i) => Uint32Array.from(i)); | |
|       to.IV.set(IV5); | |
|       to.flags = flags; | |
|       to.chunkPos = chunkPos; | |
|       to.chunksDone = chunksDone; | |
|       to.posOut = posOut; | |
|       to.chunkOut = chunkOut; | |
|       to.enableXOF = this.enableXOF; | |
|       to.bufferOut32.set(this.bufferOut32); | |
|       return to; | |
|     } | |
|     destroy() { | |
|       this.destroyed = true; | |
|       this.state.fill(0); | |
|       this.buffer32.fill(0); | |
|       this.IV.fill(0); | |
|       this.bufferOut32.fill(0); | |
|       for (let i of this.stack) i.fill(0); | |
|     } | |
|     // Same as b2Compress, but doesn't modify state and returns 16 u32 array (instead of 8) | |
|     b2CompressOut() { | |
|       const { state: s, pos, flags, buffer32, bufferOut32: out32 } = this; | |
|       const { h, l } = fromBig(BigInt(this.chunkOut++)); | |
|       const { | |
|         v0, | |
|         v1, | |
|         v2, | |
|         v3, | |
|         v4, | |
|         v5, | |
|         v6, | |
|         v7, | |
|         v8, | |
|         v9, | |
|         v10, | |
|         v11, | |
|         v12, | |
|         v13, | |
|         v14, | |
|         v15, | |
|       } = compress( | |
|         SIGMA2, | |
|         0, | |
|         buffer32, | |
|         7, | |
|         s[0], | |
|         s[1], | |
|         s[2], | |
|         s[3], | |
|         s[4], | |
|         s[5], | |
|         s[6], | |
|         s[7], | |
|         IV2[0], | |
|         IV2[1], | |
|         IV2[2], | |
|         IV2[3], | |
|         l, | |
|         h, | |
|         pos, | |
|         flags, | |
|       ); | |
|       out32[0] = v0 ^ v8; | |
|       out32[1] = v1 ^ v9; | |
|       out32[2] = v2 ^ v10; | |
|       out32[3] = v3 ^ v11; | |
|       out32[4] = v4 ^ v12; | |
|       out32[5] = v5 ^ v13; | |
|       out32[6] = v6 ^ v14; | |
|       out32[7] = v7 ^ v15; | |
|       out32[8] = s[0] ^ v8; | |
|       out32[9] = s[1] ^ v9; | |
|       out32[10] = s[2] ^ v10; | |
|       out32[11] = s[3] ^ v11; | |
|       out32[12] = s[4] ^ v12; | |
|       out32[13] = s[5] ^ v13; | |
|       out32[14] = s[6] ^ v14; | |
|       out32[15] = s[7] ^ v15; | |
|       this.posOut = 0; | |
|     } | |
|     finish() { | |
|       if (this.finished) return; | |
|       this.finished = true; | |
|       this.buffer.fill(0, this.pos); | |
|       let flags = this.flags | 8; | |
|       if (this.stack.length) { | |
|         flags |= 4; | |
|         this.compress(this.buffer32, 0, true); | |
|         this.chunksDone = 0; | |
|         this.pos = this.blockLen; | |
|       } else { | |
|         flags |= (!this.chunkPos ? 1 : 0) | 2; | |
|       } | |
|       this.flags = flags; | |
|       this.b2CompressOut(); | |
|     } | |
|     writeInto(out) { | |
|       exists(this, false); | |
|       bytes(out); | |
|       this.finish(); | |
|       const { blockLen, bufferOut } = this; | |
|       for (let pos = 0, len = out.length; pos < len; ) { | |
|         if (this.posOut >= blockLen) this.b2CompressOut(); | |
|         const take = Math.min(blockLen - this.posOut, len - pos); | |
|         out.set(bufferOut.subarray(this.posOut, this.posOut + take), pos); | |
|         this.posOut += take; | |
|         pos += take; | |
|       } | |
|       return out; | |
|     } | |
|     xofInto(out) { | |
|       if (!this.enableXOF) | |
|         throw new Error("XOF is not possible after digest call"); | |
|       return this.writeInto(out); | |
|     } | |
|     xof(bytes2) { | |
|       number(bytes2); | |
|       return this.xofInto(new Uint8Array(bytes2)); | |
|     } | |
|     digestInto(out) { | |
|       output(out, this); | |
|       if (this.finished) throw new Error("digest() was already called"); | |
|       this.enableXOF = false; | |
|       this.writeInto(out); | |
|       this.destroy(); | |
|       return out; | |
|     } | |
|     digest() { | |
|       return this.digestInto(new Uint8Array(this.outputLen)); | |
|     } | |
|   }; | |
|   var blake3 = /* @__PURE__ */ wrapXOFConstructorWithOpts( | |
|     (opts) => new BLAKE3(opts), | |
|   ); | |
| 
 | |
|   // ../esm/hmac.js | |
|   var HMAC = class extends Hash { | |
|     constructor(hash2, _key) { | |
|       super(); | |
|       this.finished = false; | |
|       this.destroyed = false; | |
|       hash(hash2); | |
|       const key = toBytes(_key); | |
|       this.iHash = hash2.create(); | |
|       if (typeof this.iHash.update !== "function") | |
|         throw new Error("Expected instance of class which extends utils.Hash"); | |
|       this.blockLen = this.iHash.blockLen; | |
|       this.outputLen = this.iHash.outputLen; | |
|       const blockLen = this.blockLen; | |
|       const pad = new Uint8Array(blockLen); | |
|       pad.set( | |
|         key.length > blockLen ? hash2.create().update(key).digest() : key, | |
|       ); | |
|       for (let i = 0; i < pad.length; i++) pad[i] ^= 54; | |
|       this.iHash.update(pad); | |
|       this.oHash = hash2.create(); | |
|       for (let i = 0; i < pad.length; i++) pad[i] ^= 54 ^ 92; | |
|       this.oHash.update(pad); | |
|       pad.fill(0); | |
|     } | |
|     update(buf) { | |
|       exists(this); | |
|       this.iHash.update(buf); | |
|       return this; | |
|     } | |
|     digestInto(out) { | |
|       exists(this); | |
|       bytes(out, this.outputLen); | |
|       this.finished = true; | |
|       this.iHash.digestInto(out); | |
|       this.oHash.update(out); | |
|       this.oHash.digestInto(out); | |
|       this.destroy(); | |
|     } | |
|     digest() { | |
|       const out = new Uint8Array(this.oHash.outputLen); | |
|       this.digestInto(out); | |
|       return out; | |
|     } | |
|     _cloneInto(to) { | |
|       to || (to = Object.create(Object.getPrototypeOf(this), {})); | |
|       const { oHash, iHash, finished, destroyed, blockLen, outputLen } = this; | |
|       to = to; | |
|       to.finished = finished; | |
|       to.destroyed = destroyed; | |
|       to.blockLen = blockLen; | |
|       to.outputLen = outputLen; | |
|       to.oHash = oHash._cloneInto(to.oHash); | |
|       to.iHash = iHash._cloneInto(to.iHash); | |
|       return to; | |
|     } | |
|     destroy() { | |
|       this.destroyed = true; | |
|       this.oHash.destroy(); | |
|       this.iHash.destroy(); | |
|     } | |
|   }; | |
|   var hmac = (hash2, key, message) => | |
|     new HMAC(hash2, key).update(message).digest(); | |
|   hmac.create = (hash2, key) => new HMAC(hash2, key); | |
| 
 | |
|   // ../esm/hkdf.js | |
|   function extract(hash2, ikm, salt) { | |
|     hash(hash2); | |
|     if (salt === void 0) salt = new Uint8Array(hash2.outputLen); | |
|     return hmac(hash2, toBytes(salt), toBytes(ikm)); | |
|   } | |
|   var HKDF_COUNTER = /* @__PURE__ */ new Uint8Array([0]); | |
|   var EMPTY_BUFFER = /* @__PURE__ */ new Uint8Array(); | |
|   function expand(hash2, prk, info, length = 32) { | |
|     hash(hash2); | |
|     number(length); | |
|     if (length > 255 * hash2.outputLen) | |
|       throw new Error("Length should be <= 255*HashLen"); | |
|     const blocks = Math.ceil(length / hash2.outputLen); | |
|     if (info === void 0) info = EMPTY_BUFFER; | |
|     const okm = new Uint8Array(blocks * hash2.outputLen); | |
|     const HMAC2 = hmac.create(hash2, prk); | |
|     const HMACTmp = HMAC2._cloneInto(); | |
|     const T = new Uint8Array(HMAC2.outputLen); | |
|     for (let counter = 0; counter < blocks; counter++) { | |
|       HKDF_COUNTER[0] = counter + 1; | |
|       HMACTmp.update(counter === 0 ? EMPTY_BUFFER : T) | |
|         .update(info) | |
|         .update(HKDF_COUNTER) | |
|         .digestInto(T); | |
|       okm.set(T, hash2.outputLen * counter); | |
|       HMAC2._cloneInto(HMACTmp); | |
|     } | |
|     HMAC2.destroy(); | |
|     HMACTmp.destroy(); | |
|     T.fill(0); | |
|     HKDF_COUNTER.fill(0); | |
|     return okm.slice(0, length); | |
|   } | |
|   var hkdf = (hash2, ikm, salt, info, length) => | |
|     expand(hash2, extract(hash2, ikm, salt), info, length); | |
| 
 | |
|   // ../esm/pbkdf2.js | |
|   function pbkdf2Init(hash2, _password, _salt, _opts) { | |
|     hash(hash2); | |
|     const opts = checkOpts({ dkLen: 32, asyncTick: 10 }, _opts); | |
|     const { c, dkLen, asyncTick } = opts; | |
|     number(c); | |
|     number(dkLen); | |
|     number(asyncTick); | |
|     if (c < 1) throw new Error("PBKDF2: iterations (c) should be >= 1"); | |
|     const password = toBytes(_password); | |
|     const salt = toBytes(_salt); | |
|     const DK = new Uint8Array(dkLen); | |
|     const PRF = hmac.create(hash2, password); | |
|     const PRFSalt = PRF._cloneInto().update(salt); | |
|     return { c, dkLen, asyncTick, DK, PRF, PRFSalt }; | |
|   } | |
|   function pbkdf2Output(PRF, PRFSalt, DK, prfW, u) { | |
|     PRF.destroy(); | |
|     PRFSalt.destroy(); | |
|     if (prfW) prfW.destroy(); | |
|     u.fill(0); | |
|     return DK; | |
|   } | |
|   function pbkdf2(hash2, password, salt, opts) { | |
|     const { c, dkLen, DK, PRF, PRFSalt } = pbkdf2Init( | |
|       hash2, | |
|       password, | |
|       salt, | |
|       opts, | |
|     ); | |
|     let prfW; | |
|     const arr = new Uint8Array(4); | |
|     const view = createView(arr); | |
|     const u = new Uint8Array(PRF.outputLen); | |
|     for (let ti = 1, pos = 0; pos < dkLen; ti++, pos += PRF.outputLen) { | |
|       const Ti = DK.subarray(pos, pos + PRF.outputLen); | |
|       view.setInt32(0, ti, false); | |
|       (prfW = PRFSalt._cloneInto(prfW)).update(arr).digestInto(u); | |
|       Ti.set(u.subarray(0, Ti.length)); | |
|       for (let ui = 1; ui < c; ui++) { | |
|         PRF._cloneInto(prfW).update(u).digestInto(u); | |
|         for (let i = 0; i < Ti.length; i++) Ti[i] ^= u[i]; | |
|       } | |
|     } | |
|     return pbkdf2Output(PRF, PRFSalt, DK, prfW, u); | |
|   } | |
|   async function pbkdf2Async(hash2, password, salt, opts) { | |
|     const { c, dkLen, asyncTick, DK, PRF, PRFSalt } = pbkdf2Init( | |
|       hash2, | |
|       password, | |
|       salt, | |
|       opts, | |
|     ); | |
|     let prfW; | |
|     const arr = new Uint8Array(4); | |
|     const view = createView(arr); | |
|     const u = new Uint8Array(PRF.outputLen); | |
|     for (let ti = 1, pos = 0; pos < dkLen; ti++, pos += PRF.outputLen) { | |
|       const Ti = DK.subarray(pos, pos + PRF.outputLen); | |
|       view.setInt32(0, ti, false); | |
|       (prfW = PRFSalt._cloneInto(prfW)).update(arr).digestInto(u); | |
|       Ti.set(u.subarray(0, Ti.length)); | |
|       await asyncLoop(c - 1, asyncTick, () => { | |
|         PRF._cloneInto(prfW).update(u).digestInto(u); | |
|         for (let i = 0; i < Ti.length; i++) Ti[i] ^= u[i]; | |
|       }); | |
|     } | |
|     return pbkdf2Output(PRF, PRFSalt, DK, prfW, u); | |
|   } | |
| 
 | |
|   // ../esm/_sha2.js | |
|   function setBigUint64(view, byteOffset, value, isLE2) { | |
|     if (typeof view.setBigUint64 === "function") | |
|       return view.setBigUint64(byteOffset, value, isLE2); | |
|     const _32n2 = BigInt(32); | |
|     const _u32_max = BigInt(4294967295); | |
|     const wh = Number((value >> _32n2) & _u32_max); | |
|     const wl = Number(value & _u32_max); | |
|     const h = isLE2 ? 4 : 0; | |
|     const l = isLE2 ? 0 : 4; | |
|     view.setUint32(byteOffset + h, wh, isLE2); | |
|     view.setUint32(byteOffset + l, wl, isLE2); | |
|   } | |
|   var SHA2 = class extends Hash { | |
|     constructor(blockLen, outputLen, padOffset, isLE2) { | |
|       super(); | |
|       this.blockLen = blockLen; | |
|       this.outputLen = outputLen; | |
|       this.padOffset = padOffset; | |
|       this.isLE = isLE2; | |
|       this.finished = false; | |
|       this.length = 0; | |
|       this.pos = 0; | |
|       this.destroyed = false; | |
|       this.buffer = new Uint8Array(blockLen); | |
|       this.view = createView(this.buffer); | |
|     } | |
|     update(data) { | |
|       exists(this); | |
|       const { view, buffer, blockLen } = this; | |
|       data = toBytes(data); | |
|       const len = data.length; | |
|       for (let pos = 0; pos < len; ) { | |
|         const take = Math.min(blockLen - this.pos, len - pos); | |
|         if (take === blockLen) { | |
|           const dataView = createView(data); | |
|           for (; blockLen <= len - pos; pos += blockLen) | |
|             this.process(dataView, pos); | |
|           continue; | |
|         } | |
|         buffer.set(data.subarray(pos, pos + take), this.pos); | |
|         this.pos += take; | |
|         pos += take; | |
|         if (this.pos === blockLen) { | |
|           this.process(view, 0); | |
|           this.pos = 0; | |
|         } | |
|       } | |
|       this.length += data.length; | |
|       this.roundClean(); | |
|       return this; | |
|     } | |
|     digestInto(out) { | |
|       exists(this); | |
|       output(out, this); | |
|       this.finished = true; | |
|       const { buffer, view, blockLen, isLE: isLE2 } = this; | |
|       let { pos } = this; | |
|       buffer[pos++] = 128; | |
|       this.buffer.subarray(pos).fill(0); | |
|       if (this.padOffset > blockLen - pos) { | |
|         this.process(view, 0); | |
|         pos = 0; | |
|       } | |
|       for (let i = pos; i < blockLen; i++) buffer[i] = 0; | |
|       setBigUint64(view, blockLen - 8, BigInt(this.length * 8), isLE2); | |
|       this.process(view, 0); | |
|       const oview = createView(out); | |
|       const len = this.outputLen; | |
|       if (len % 4) | |
|         throw new Error("_sha2: outputLen should be aligned to 32bit"); | |
|       const outLen = len / 4; | |
|       const state = this.get(); | |
|       if (outLen > state.length) | |
|         throw new Error("_sha2: outputLen bigger than state"); | |
|       for (let i = 0; i < outLen; i++) oview.setUint32(4 * i, state[i], isLE2); | |
|     } | |
|     digest() { | |
|       const { buffer, outputLen } = this; | |
|       this.digestInto(buffer); | |
|       const res = buffer.slice(0, outputLen); | |
|       this.destroy(); | |
|       return res; | |
|     } | |
|     _cloneInto(to) { | |
|       to || (to = new this.constructor()); | |
|       to.set(...this.get()); | |
|       const { blockLen, buffer, length, finished, destroyed, pos } = this; | |
|       to.length = length; | |
|       to.pos = pos; | |
|       to.finished = finished; | |
|       to.destroyed = destroyed; | |
|       if (length % blockLen) to.buffer.set(buffer); | |
|       return to; | |
|     } | |
|   }; | |
| 
 | |
|   // ../esm/ripemd160.js | |
|   var Rho = /* @__PURE__ */ new Uint8Array([ | |
|     7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, | |
|   ]); | |
|   var Id = /* @__PURE__ */ Uint8Array.from({ length: 16 }, (_, i) => i); | |
|   var Pi = /* @__PURE__ */ Id.map((i) => (9 * i + 5) % 16); | |
|   var idxL = [Id]; | |
|   var idxR = [Pi]; | |
|   for (let i = 0; i < 4; i++) | |
|     for (let j of [idxL, idxR]) j.push(j[i].map((k) => Rho[k])); | |
|   var shifts = /* @__PURE__ */ [ | |
|     [11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8], | |
|     [12, 13, 11, 15, 6, 9, 9, 7, 12, 15, 11, 13, 7, 8, 7, 7], | |
|     [13, 15, 14, 11, 7, 7, 6, 8, 13, 14, 13, 12, 5, 5, 6, 9], | |
|     [14, 11, 12, 14, 8, 6, 5, 5, 15, 12, 15, 14, 9, 9, 8, 6], | |
|     [15, 12, 13, 13, 9, 5, 8, 6, 14, 11, 12, 11, 8, 6, 5, 5], | |
|   ].map((i) => new Uint8Array(i)); | |
|   var shiftsL = /* @__PURE__ */ idxL.map((idx, i) => | |
|     idx.map((j) => shifts[i][j]), | |
|   ); | |
|   var shiftsR = /* @__PURE__ */ idxR.map((idx, i) => | |
|     idx.map((j) => shifts[i][j]), | |
|   ); | |
|   var Kl = /* @__PURE__ */ new Uint32Array([ | |
|     0, 1518500249, 1859775393, 2400959708, 2840853838, | |
|   ]); | |
|   var Kr = /* @__PURE__ */ new Uint32Array([ | |
|     1352829926, 1548603684, 1836072691, 2053994217, 0, | |
|   ]); | |
|   var rotl = (word, shift) => (word << shift) | (word >>> (32 - shift)); | |
|   function f(group, x, y, z) { | |
|     if (group === 0) return x ^ y ^ z; | |
|     else if (group === 1) return (x & y) | (~x & z); | |
|     else if (group === 2) return (x | ~y) ^ z; | |
|     else if (group === 3) return (x & z) | (y & ~z); | |
|     else return x ^ (y | ~z); | |
|   } | |
|   var BUF2 = /* @__PURE__ */ new Uint32Array(16); | |
|   var RIPEMD160 = class extends SHA2 { | |
|     constructor() { | |
|       super(64, 20, 8, true); | |
|       this.h0 = 1732584193 | 0; | |
|       this.h1 = 4023233417 | 0; | |
|       this.h2 = 2562383102 | 0; | |
|       this.h3 = 271733878 | 0; | |
|       this.h4 = 3285377520 | 0; | |
|     } | |
|     get() { | |
|       const { h0, h1, h2, h3, h4 } = this; | |
|       return [h0, h1, h2, h3, h4]; | |
|     } | |
|     set(h0, h1, h2, h3, h4) { | |
|       this.h0 = h0 | 0; | |
|       this.h1 = h1 | 0; | |
|       this.h2 = h2 | 0; | |
|       this.h3 = h3 | 0; | |
|       this.h4 = h4 | 0; | |
|     } | |
|     process(view, offset) { | |
|       for (let i = 0; i < 16; i++, offset += 4) | |
|         BUF2[i] = view.getUint32(offset, true); | |
|       let al = this.h0 | 0, | |
|         ar = al, | |
|         bl = this.h1 | 0, | |
|         br = bl, | |
|         cl = this.h2 | 0, | |
|         cr = cl, | |
|         dl = this.h3 | 0, | |
|         dr = dl, | |
|         el = this.h4 | 0, | |
|         er = el; | |
|       for (let group = 0; group < 5; group++) { | |
|         const rGroup = 4 - group; | |
|         const hbl = Kl[group], | |
|           hbr = Kr[group]; | |
|         const rl = idxL[group], | |
|           rr = idxR[group]; | |
|         const sl = shiftsL[group], | |
|           sr = shiftsR[group]; | |
|         for (let i = 0; i < 16; i++) { | |
|           const tl = | |
|             (rotl(al + f(group, bl, cl, dl) + BUF2[rl[i]] + hbl, sl[i]) + el) | | |
|             0; | |
|           (al = el), (el = dl), (dl = rotl(cl, 10) | 0), (cl = bl), (bl = tl); | |
|         } | |
|         for (let i = 0; i < 16; i++) { | |
|           const tr = | |
|             (rotl(ar + f(rGroup, br, cr, dr) + BUF2[rr[i]] + hbr, sr[i]) + er) | | |
|             0; | |
|           (ar = er), (er = dr), (dr = rotl(cr, 10) | 0), (cr = br), (br = tr); | |
|         } | |
|       } | |
|       this.set( | |
|         (this.h1 + cl + dr) | 0, | |
|         (this.h2 + dl + er) | 0, | |
|         (this.h3 + el + ar) | 0, | |
|         (this.h4 + al + br) | 0, | |
|         (this.h0 + bl + cr) | 0, | |
|       ); | |
|     } | |
|     roundClean() { | |
|       BUF2.fill(0); | |
|     } | |
|     destroy() { | |
|       this.destroyed = true; | |
|       this.buffer.fill(0); | |
|       this.set(0, 0, 0, 0, 0); | |
|     } | |
|   }; | |
|   var ripemd160 = /* @__PURE__ */ wrapConstructor(() => new RIPEMD160()); | |
| 
 | |
|   // ../esm/sha256.js | |
|   var Chi = (a, b, c) => (a & b) ^ (~a & c); | |
|   var Maj = (a, b, c) => (a & b) ^ (a & c) ^ (b & c); | |
|   var SHA256_K = /* @__PURE__ */ new Uint32Array([ | |
|     1116352408, 1899447441, 3049323471, 3921009573, 961987163, 1508970993, | |
|     2453635748, 2870763221, 3624381080, 310598401, 607225278, 1426881987, | |
|     1925078388, 2162078206, 2614888103, 3248222580, 3835390401, 4022224774, | |
|     264347078, 604807628, 770255983, 1249150122, 1555081692, 1996064986, | |
|     2554220882, 2821834349, 2952996808, 3210313671, 3336571891, 3584528711, | |
|     113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, | |
|     1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, | |
|     3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, | |
|     430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, | |
|     1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, | |
|     2428436474, 2756734187, 3204031479, 3329325298, | |
|   ]); | |
|   var IV3 = /* @__PURE__ */ new Uint32Array([ | |
|     1779033703, 3144134277, 1013904242, 2773480762, 1359893119, 2600822924, | |
|     528734635, 1541459225, | |
|   ]); | |
|   var SHA256_W = /* @__PURE__ */ new Uint32Array(64); | |
|   var SHA256 = class extends SHA2 { | |
|     constructor() { | |
|       super(64, 32, 8, false); | |
|       this.A = IV3[0] | 0; | |
|       this.B = IV3[1] | 0; | |
|       this.C = IV3[2] | 0; | |
|       this.D = IV3[3] | 0; | |
|       this.E = IV3[4] | 0; | |
|       this.F = IV3[5] | 0; | |
|       this.G = IV3[6] | 0; | |
|       this.H = IV3[7] | 0; | |
|     } | |
|     get() { | |
|       const { A, B, C, D, E, F, G: G3, H } = this; | |
|       return [A, B, C, D, E, F, G3, H]; | |
|     } | |
|     // prettier-ignore | |
|     set(A, B, C, D, E, F, G3, H) { | |
|       this.A = A | 0; | |
|       this.B = B | 0; | |
|       this.C = C | 0; | |
|       this.D = D | 0; | |
|       this.E = E | 0; | |
|       this.F = F | 0; | |
|       this.G = G3 | 0; | |
|       this.H = H | 0; | |
|     } | |
|     process(view, offset) { | |
|       for (let i = 0; i < 16; i++, offset += 4) | |
|         SHA256_W[i] = view.getUint32(offset, false); | |
|       for (let i = 16; i < 64; i++) { | |
|         const W15 = SHA256_W[i - 15]; | |
|         const W2 = SHA256_W[i - 2]; | |
|         const s0 = rotr(W15, 7) ^ rotr(W15, 18) ^ (W15 >>> 3); | |
|         const s1 = rotr(W2, 17) ^ rotr(W2, 19) ^ (W2 >>> 10); | |
|         SHA256_W[i] = (s1 + SHA256_W[i - 7] + s0 + SHA256_W[i - 16]) | 0; | |
|       } | |
|       let { A, B, C, D, E, F, G: G3, H } = this; | |
|       for (let i = 0; i < 64; i++) { | |
|         const sigma1 = rotr(E, 6) ^ rotr(E, 11) ^ rotr(E, 25); | |
|         const T1 = (H + sigma1 + Chi(E, F, G3) + SHA256_K[i] + SHA256_W[i]) | 0; | |
|         const sigma0 = rotr(A, 2) ^ rotr(A, 13) ^ rotr(A, 22); | |
|         const T2 = (sigma0 + Maj(A, B, C)) | 0; | |
|         H = G3; | |
|         G3 = F; | |
|         F = E; | |
|         E = (D + T1) | 0; | |
|         D = C; | |
|         C = B; | |
|         B = A; | |
|         A = (T1 + T2) | 0; | |
|       } | |
|       A = (A + this.A) | 0; | |
|       B = (B + this.B) | 0; | |
|       C = (C + this.C) | 0; | |
|       D = (D + this.D) | 0; | |
|       E = (E + this.E) | 0; | |
|       F = (F + this.F) | 0; | |
|       G3 = (G3 + this.G) | 0; | |
|       H = (H + this.H) | 0; | |
|       this.set(A, B, C, D, E, F, G3, H); | |
|     } | |
|     roundClean() { | |
|       SHA256_W.fill(0); | |
|     } | |
|     destroy() { | |
|       this.set(0, 0, 0, 0, 0, 0, 0, 0); | |
|       this.buffer.fill(0); | |
|     } | |
|   }; | |
|   var sha256 = /* @__PURE__ */ wrapConstructor(() => new SHA256()); | |
| 
 | |
|   // ../esm/scrypt.js | |
|   var rotl2 = (a, b) => (a << b) | (a >>> (32 - b)); | |
|   function XorAndSalsa(prev, pi, input, ii, out, oi) { | |
|     let y00 = prev[pi++] ^ input[ii++], | |
|       y01 = prev[pi++] ^ input[ii++]; | |
|     let y02 = prev[pi++] ^ input[ii++], | |
|       y03 = prev[pi++] ^ input[ii++]; | |
|     let y04 = prev[pi++] ^ input[ii++], | |
|       y05 = prev[pi++] ^ input[ii++]; | |
|     let y06 = prev[pi++] ^ input[ii++], | |
|       y07 = prev[pi++] ^ input[ii++]; | |
|     let y08 = prev[pi++] ^ input[ii++], | |
|       y09 = prev[pi++] ^ input[ii++]; | |
|     let y10 = prev[pi++] ^ input[ii++], | |
|       y11 = prev[pi++] ^ input[ii++]; | |
|     let y12 = prev[pi++] ^ input[ii++], | |
|       y13 = prev[pi++] ^ input[ii++]; | |
|     let y14 = prev[pi++] ^ input[ii++], | |
|       y15 = prev[pi++] ^ input[ii++]; | |
|     let x00 = y00, | |
|       x01 = y01, | |
|       x02 = y02, | |
|       x03 = y03, | |
|       x04 = y04, | |
|       x05 = y05, | |
|       x06 = y06, | |
|       x07 = y07, | |
|       x08 = y08, | |
|       x09 = y09, | |
|       x10 = y10, | |
|       x11 = y11, | |
|       x12 = y12, | |
|       x13 = y13, | |
|       x14 = y14, | |
|       x15 = y15; | |
|     for (let i = 0; i < 8; i += 2) { | |
|       x04 ^= rotl2((x00 + x12) | 0, 7); | |
|       x08 ^= rotl2((x04 + x00) | 0, 9); | |
|       x12 ^= rotl2((x08 + x04) | 0, 13); | |
|       x00 ^= rotl2((x12 + x08) | 0, 18); | |
|       x09 ^= rotl2((x05 + x01) | 0, 7); | |
|       x13 ^= rotl2((x09 + x05) | 0, 9); | |
|       x01 ^= rotl2((x13 + x09) | 0, 13); | |
|       x05 ^= rotl2((x01 + x13) | 0, 18); | |
|       x14 ^= rotl2((x10 + x06) | 0, 7); | |
|       x02 ^= rotl2((x14 + x10) | 0, 9); | |
|       x06 ^= rotl2((x02 + x14) | 0, 13); | |
|       x10 ^= rotl2((x06 + x02) | 0, 18); | |
|       x03 ^= rotl2((x15 + x11) | 0, 7); | |
|       x07 ^= rotl2((x03 + x15) | 0, 9); | |
|       x11 ^= rotl2((x07 + x03) | 0, 13); | |
|       x15 ^= rotl2((x11 + x07) | 0, 18); | |
|       x01 ^= rotl2((x00 + x03) | 0, 7); | |
|       x02 ^= rotl2((x01 + x00) | 0, 9); | |
|       x03 ^= rotl2((x02 + x01) | 0, 13); | |
|       x00 ^= rotl2((x03 + x02) | 0, 18); | |
|       x06 ^= rotl2((x05 + x04) | 0, 7); | |
|       x07 ^= rotl2((x06 + x05) | 0, 9); | |
|       x04 ^= rotl2((x07 + x06) | 0, 13); | |
|       x05 ^= rotl2((x04 + x07) | 0, 18); | |
|       x11 ^= rotl2((x10 + x09) | 0, 7); | |
|       x08 ^= rotl2((x11 + x10) | 0, 9); | |
|       x09 ^= rotl2((x08 + x11) | 0, 13); | |
|       x10 ^= rotl2((x09 + x08) | 0, 18); | |
|       x12 ^= rotl2((x15 + x14) | 0, 7); | |
|       x13 ^= rotl2((x12 + x15) | 0, 9); | |
|       x14 ^= rotl2((x13 + x12) | 0, 13); | |
|       x15 ^= rotl2((x14 + x13) | 0, 18); | |
|     } | |
|     out[oi++] = (y00 + x00) | 0; | |
|     out[oi++] = (y01 + x01) | 0; | |
|     out[oi++] = (y02 + x02) | 0; | |
|     out[oi++] = (y03 + x03) | 0; | |
|     out[oi++] = (y04 + x04) | 0; | |
|     out[oi++] = (y05 + x05) | 0; | |
|     out[oi++] = (y06 + x06) | 0; | |
|     out[oi++] = (y07 + x07) | 0; | |
|     out[oi++] = (y08 + x08) | 0; | |
|     out[oi++] = (y09 + x09) | 0; | |
|     out[oi++] = (y10 + x10) | 0; | |
|     out[oi++] = (y11 + x11) | 0; | |
|     out[oi++] = (y12 + x12) | 0; | |
|     out[oi++] = (y13 + x13) | 0; | |
|     out[oi++] = (y14 + x14) | 0; | |
|     out[oi++] = (y15 + x15) | 0; | |
|   } | |
|   function BlockMix(input, ii, out, oi, r) { | |
|     let head = oi + 0; | |
|     let tail = oi + 16 * r; | |
|     for (let i = 0; i < 16; i++) | |
|       out[tail + i] = input[ii + (2 * r - 1) * 16 + i]; | |
|     for (let i = 0; i < r; i++, head += 16, ii += 16) { | |
|       XorAndSalsa(out, tail, input, ii, out, head); | |
|       if (i > 0) tail += 16; | |
|       XorAndSalsa(out, head, input, (ii += 16), out, tail); | |
|     } | |
|   } | |
|   function scryptInit(password, salt, _opts) { | |
|     const opts = checkOpts( | |
|       { | |
|         dkLen: 32, | |
|         asyncTick: 10, | |
|         maxmem: 1024 ** 3 + 1024, | |
|       }, | |
|       _opts, | |
|     ); | |
|     const { N, r, p, dkLen, asyncTick, maxmem, onProgress } = opts; | |
|     number(N); | |
|     number(r); | |
|     number(p); | |
|     number(dkLen); | |
|     number(asyncTick); | |
|     number(maxmem); | |
|     if (onProgress !== void 0 && typeof onProgress !== "function") | |
|       throw new Error("progressCb should be function"); | |
|     const blockSize = 128 * r; | |
|     const blockSize32 = blockSize / 4; | |
|     if ( | |
|       N <= 1 || | |
|       (N & (N - 1)) !== 0 || | |
|       N >= 2 ** (blockSize / 8) || | |
|       N > 2 ** 32 | |
|     ) { | |
|       throw new Error( | |
|         "Scrypt: N must be larger than 1, a power of 2, less than 2^(128 * r / 8) and less than 2^32", | |
|       ); | |
|     } | |
|     if (p < 0 || p > ((2 ** 32 - 1) * 32) / blockSize) { | |
|       throw new Error( | |
|         "Scrypt: p must be a positive integer less than or equal to ((2^32 - 1) * 32) / (128 * r)", | |
|       ); | |
|     } | |
|     if (dkLen < 0 || dkLen > (2 ** 32 - 1) * 32) { | |
|       throw new Error( | |
|         "Scrypt: dkLen should be positive integer less than or equal to (2^32 - 1) * 32", | |
|       ); | |
|     } | |
|     const memUsed = blockSize * (N + p); | |
|     if (memUsed > maxmem) { | |
|       throw new Error( | |
|         `Scrypt: parameters too large, ${memUsed} (128 * r * (N + p)) > ${maxmem} (maxmem)`, | |
|       ); | |
|     } | |
|     const B = pbkdf2(sha256, password, salt, { c: 1, dkLen: blockSize * p }); | |
|     const B32 = u32(B); | |
|     const V = u32(new Uint8Array(blockSize * N)); | |
|     const tmp = u32(new Uint8Array(blockSize)); | |
|     let blockMixCb = () => {}; | |
|     if (onProgress) { | |
|       const totalBlockMix = 2 * N * p; | |
|       const callbackPer = Math.max(Math.floor(totalBlockMix / 1e4), 1); | |
|       let blockMixCnt = 0; | |
|       blockMixCb = () => { | |
|         blockMixCnt++; | |
|         if ( | |
|           onProgress && | |
|           (!(blockMixCnt % callbackPer) || blockMixCnt === totalBlockMix) | |
|         ) | |
|           onProgress(blockMixCnt / totalBlockMix); | |
|       }; | |
|     } | |
|     return { | |
|       N, | |
|       r, | |
|       p, | |
|       dkLen, | |
|       blockSize32, | |
|       V, | |
|       B32, | |
|       B, | |
|       tmp, | |
|       blockMixCb, | |
|       asyncTick, | |
|     }; | |
|   } | |
|   function scryptOutput(password, dkLen, B, V, tmp) { | |
|     const res = pbkdf2(sha256, password, B, { c: 1, dkLen }); | |
|     B.fill(0); | |
|     V.fill(0); | |
|     tmp.fill(0); | |
|     return res; | |
|   } | |
|   function scrypt(password, salt, opts) { | |
|     const { N, r, p, dkLen, blockSize32, V, B32, B, tmp, blockMixCb } = | |
|       scryptInit(password, salt, opts); | |
|     for (let pi = 0; pi < p; pi++) { | |
|       const Pi2 = blockSize32 * pi; | |
|       for (let i = 0; i < blockSize32; i++) V[i] = B32[Pi2 + i]; | |
|       for (let i = 0, pos = 0; i < N - 1; i++) { | |
|         BlockMix(V, pos, V, (pos += blockSize32), r); | |
|         blockMixCb(); | |
|       } | |
|       BlockMix(V, (N - 1) * blockSize32, B32, Pi2, r); | |
|       blockMixCb(); | |
|       for (let i = 0; i < N; i++) { | |
|         const j = B32[Pi2 + blockSize32 - 16] % N; | |
|         for (let k = 0; k < blockSize32; k++) | |
|           tmp[k] = B32[Pi2 + k] ^ V[j * blockSize32 + k]; | |
|         BlockMix(tmp, 0, B32, Pi2, r); | |
|         blockMixCb(); | |
|       } | |
|     } | |
|     return scryptOutput(password, dkLen, B, V, tmp); | |
|   } | |
|   async function scryptAsync(password, salt, opts) { | |
|     const { | |
|       N, | |
|       r, | |
|       p, | |
|       dkLen, | |
|       blockSize32, | |
|       V, | |
|       B32, | |
|       B, | |
|       tmp, | |
|       blockMixCb, | |
|       asyncTick, | |
|     } = scryptInit(password, salt, opts); | |
|     for (let pi = 0; pi < p; pi++) { | |
|       const Pi2 = blockSize32 * pi; | |
|       for (let i = 0; i < blockSize32; i++) V[i] = B32[Pi2 + i]; | |
|       let pos = 0; | |
|       await asyncLoop(N - 1, asyncTick, () => { | |
|         BlockMix(V, pos, V, (pos += blockSize32), r); | |
|         blockMixCb(); | |
|       }); | |
|       BlockMix(V, (N - 1) * blockSize32, B32, Pi2, r); | |
|       blockMixCb(); | |
|       await asyncLoop(N, asyncTick, () => { | |
|         const j = B32[Pi2 + blockSize32 - 16] % N; | |
|         for (let k = 0; k < blockSize32; k++) | |
|           tmp[k] = B32[Pi2 + k] ^ V[j * blockSize32 + k]; | |
|         BlockMix(tmp, 0, B32, Pi2, r); | |
|         blockMixCb(); | |
|       }); | |
|     } | |
|     return scryptOutput(password, dkLen, B, V, tmp); | |
|   } | |
| 
 | |
|   // ../esm/sha512.js | |
|   var [SHA512_Kh, SHA512_Kl] = /* @__PURE__ */ (() => | |
|     u64_default.split( | |
|       [ | |
|         "0x428a2f98d728ae22", | |
|         "0x7137449123ef65cd", | |
|         "0xb5c0fbcfec4d3b2f", | |
|         "0xe9b5dba58189dbbc", | |
|         "0x3956c25bf348b538", | |
|         "0x59f111f1b605d019", | |
|         "0x923f82a4af194f9b", | |
|         "0xab1c5ed5da6d8118", | |
|         "0xd807aa98a3030242", | |
|         "0x12835b0145706fbe", | |
|         "0x243185be4ee4b28c", | |
|         "0x550c7dc3d5ffb4e2", | |
|         "0x72be5d74f27b896f", | |
|         "0x80deb1fe3b1696b1", | |
|         "0x9bdc06a725c71235", | |
|         "0xc19bf174cf692694", | |
|         "0xe49b69c19ef14ad2", | |
|         "0xefbe4786384f25e3", | |
|         "0x0fc19dc68b8cd5b5", | |
|         "0x240ca1cc77ac9c65", | |
|         "0x2de92c6f592b0275", | |
|         "0x4a7484aa6ea6e483", | |
|         "0x5cb0a9dcbd41fbd4", | |
|         "0x76f988da831153b5", | |
|         "0x983e5152ee66dfab", | |
|         "0xa831c66d2db43210", | |
|         "0xb00327c898fb213f", | |
|         "0xbf597fc7beef0ee4", | |
|         "0xc6e00bf33da88fc2", | |
|         "0xd5a79147930aa725", | |
|         "0x06ca6351e003826f", | |
|         "0x142929670a0e6e70", | |
|         "0x27b70a8546d22ffc", | |
|         "0x2e1b21385c26c926", | |
|         "0x4d2c6dfc5ac42aed", | |
|         "0x53380d139d95b3df", | |
|         "0x650a73548baf63de", | |
|         "0x766a0abb3c77b2a8", | |
|         "0x81c2c92e47edaee6", | |
|         "0x92722c851482353b", | |
|         "0xa2bfe8a14cf10364", | |
|         "0xa81a664bbc423001", | |
|         "0xc24b8b70d0f89791", | |
|         "0xc76c51a30654be30", | |
|         "0xd192e819d6ef5218", | |
|         "0xd69906245565a910", | |
|         "0xf40e35855771202a", | |
|         "0x106aa07032bbd1b8", | |
|         "0x19a4c116b8d2d0c8", | |
|         "0x1e376c085141ab53", | |
|         "0x2748774cdf8eeb99", | |
|         "0x34b0bcb5e19b48a8", | |
|         "0x391c0cb3c5c95a63", | |
|         "0x4ed8aa4ae3418acb", | |
|         "0x5b9cca4f7763e373", | |
|         "0x682e6ff3d6b2b8a3", | |
|         "0x748f82ee5defb2fc", | |
|         "0x78a5636f43172f60", | |
|         "0x84c87814a1f0ab72", | |
|         "0x8cc702081a6439ec", | |
|         "0x90befffa23631e28", | |
|         "0xa4506cebde82bde9", | |
|         "0xbef9a3f7b2c67915", | |
|         "0xc67178f2e372532b", | |
|         "0xca273eceea26619c", | |
|         "0xd186b8c721c0c207", | |
|         "0xeada7dd6cde0eb1e", | |
|         "0xf57d4f7fee6ed178", | |
|         "0x06f067aa72176fba", | |
|         "0x0a637dc5a2c898a6", | |
|         "0x113f9804bef90dae", | |
|         "0x1b710b35131c471b", | |
|         "0x28db77f523047d84", | |
|         "0x32caab7b40c72493", | |
|         "0x3c9ebe0a15c9bebc", | |
|         "0x431d67c49c100d4c", | |
|         "0x4cc5d4becb3e42b6", | |
|         "0x597f299cfc657e2a", | |
|         "0x5fcb6fab3ad6faec", | |
|         "0x6c44198c4a475817", | |
|       ].map((n) => BigInt(n)), | |
|     ))(); | |
|   var SHA512_W_H = /* @__PURE__ */ new Uint32Array(80); | |
|   var SHA512_W_L = /* @__PURE__ */ new Uint32Array(80); | |
|   var SHA512 = class extends SHA2 { | |
|     constructor() { | |
|       super(128, 64, 16, false); | |
|       this.Ah = 1779033703 | 0; | |
|       this.Al = 4089235720 | 0; | |
|       this.Bh = 3144134277 | 0; | |
|       this.Bl = 2227873595 | 0; | |
|       this.Ch = 1013904242 | 0; | |
|       this.Cl = 4271175723 | 0; | |
|       this.Dh = 2773480762 | 0; | |
|       this.Dl = 1595750129 | 0; | |
|       this.Eh = 1359893119 | 0; | |
|       this.El = 2917565137 | 0; | |
|       this.Fh = 2600822924 | 0; | |
|       this.Fl = 725511199 | 0; | |
|       this.Gh = 528734635 | 0; | |
|       this.Gl = 4215389547 | 0; | |
|       this.Hh = 1541459225 | 0; | |
|       this.Hl = 327033209 | 0; | |
|     } | |
|     // prettier-ignore | |
|     get() { | |
|       const { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this; | |
|       return [Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl]; | |
|     } | |
|     // prettier-ignore | |
|     set(Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl) { | |
|       this.Ah = Ah | 0; | |
|       this.Al = Al | 0; | |
|       this.Bh = Bh | 0; | |
|       this.Bl = Bl | 0; | |
|       this.Ch = Ch | 0; | |
|       this.Cl = Cl | 0; | |
|       this.Dh = Dh | 0; | |
|       this.Dl = Dl | 0; | |
|       this.Eh = Eh | 0; | |
|       this.El = El | 0; | |
|       this.Fh = Fh | 0; | |
|       this.Fl = Fl | 0; | |
|       this.Gh = Gh | 0; | |
|       this.Gl = Gl | 0; | |
|       this.Hh = Hh | 0; | |
|       this.Hl = Hl | 0; | |
|     } | |
|     process(view, offset) { | |
|       for (let i = 0; i < 16; i++, offset += 4) { | |
|         SHA512_W_H[i] = view.getUint32(offset); | |
|         SHA512_W_L[i] = view.getUint32((offset += 4)); | |
|       } | |
|       for (let i = 16; i < 80; i++) { | |
|         const W15h = SHA512_W_H[i - 15] | 0; | |
|         const W15l = SHA512_W_L[i - 15] | 0; | |
|         const s0h = | |
|           u64_default.rotrSH(W15h, W15l, 1) ^ | |
|           u64_default.rotrSH(W15h, W15l, 8) ^ | |
|           u64_default.shrSH(W15h, W15l, 7); | |
|         const s0l = | |
|           u64_default.rotrSL(W15h, W15l, 1) ^ | |
|           u64_default.rotrSL(W15h, W15l, 8) ^ | |
|           u64_default.shrSL(W15h, W15l, 7); | |
|         const W2h = SHA512_W_H[i - 2] | 0; | |
|         const W2l = SHA512_W_L[i - 2] | 0; | |
|         const s1h = | |
|           u64_default.rotrSH(W2h, W2l, 19) ^ | |
|           u64_default.rotrBH(W2h, W2l, 61) ^ | |
|           u64_default.shrSH(W2h, W2l, 6); | |
|         const s1l = | |
|           u64_default.rotrSL(W2h, W2l, 19) ^ | |
|           u64_default.rotrBL(W2h, W2l, 61) ^ | |
|           u64_default.shrSL(W2h, W2l, 6); | |
|         const SUMl = u64_default.add4L( | |
|           s0l, | |
|           s1l, | |
|           SHA512_W_L[i - 7], | |
|           SHA512_W_L[i - 16], | |
|         ); | |
|         const SUMh = u64_default.add4H( | |
|           SUMl, | |
|           s0h, | |
|           s1h, | |
|           SHA512_W_H[i - 7], | |
|           SHA512_W_H[i - 16], | |
|         ); | |
|         SHA512_W_H[i] = SUMh | 0; | |
|         SHA512_W_L[i] = SUMl | 0; | |
|       } | |
|       let { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = | |
|         this; | |
|       for (let i = 0; i < 80; i++) { | |
|         const sigma1h = | |
|           u64_default.rotrSH(Eh, El, 14) ^ | |
|           u64_default.rotrSH(Eh, El, 18) ^ | |
|           u64_default.rotrBH(Eh, El, 41); | |
|         const sigma1l = | |
|           u64_default.rotrSL(Eh, El, 14) ^ | |
|           u64_default.rotrSL(Eh, El, 18) ^ | |
|           u64_default.rotrBL(Eh, El, 41); | |
|         const CHIh = (Eh & Fh) ^ (~Eh & Gh); | |
|         const CHIl = (El & Fl) ^ (~El & Gl); | |
|         const T1ll = u64_default.add5L( | |
|           Hl, | |
|           sigma1l, | |
|           CHIl, | |
|           SHA512_Kl[i], | |
|           SHA512_W_L[i], | |
|         ); | |
|         const T1h = u64_default.add5H( | |
|           T1ll, | |
|           Hh, | |
|           sigma1h, | |
|           CHIh, | |
|           SHA512_Kh[i], | |
|           SHA512_W_H[i], | |
|         ); | |
|         const T1l = T1ll | 0; | |
|         const sigma0h = | |
|           u64_default.rotrSH(Ah, Al, 28) ^ | |
|           u64_default.rotrBH(Ah, Al, 34) ^ | |
|           u64_default.rotrBH(Ah, Al, 39); | |
|         const sigma0l = | |
|           u64_default.rotrSL(Ah, Al, 28) ^ | |
|           u64_default.rotrBL(Ah, Al, 34) ^ | |
|           u64_default.rotrBL(Ah, Al, 39); | |
|         const MAJh = (Ah & Bh) ^ (Ah & Ch) ^ (Bh & Ch); | |
|         const MAJl = (Al & Bl) ^ (Al & Cl) ^ (Bl & Cl); | |
|         Hh = Gh | 0; | |
|         Hl = Gl | 0; | |
|         Gh = Fh | 0; | |
|         Gl = Fl | 0; | |
|         Fh = Eh | 0; | |
|         Fl = El | 0; | |
|         ({ h: Eh, l: El } = u64_default.add(Dh | 0, Dl | 0, T1h | 0, T1l | 0)); | |
|         Dh = Ch | 0; | |
|         Dl = Cl | 0; | |
|         Ch = Bh | 0; | |
|         Cl = Bl | 0; | |
|         Bh = Ah | 0; | |
|         Bl = Al | 0; | |
|         const All = u64_default.add3L(T1l, sigma0l, MAJl); | |
|         Ah = u64_default.add3H(All, T1h, sigma0h, MAJh); | |
|         Al = All | 0; | |
|       } | |
|       ({ h: Ah, l: Al } = u64_default.add( | |
|         this.Ah | 0, | |
|         this.Al | 0, | |
|         Ah | 0, | |
|         Al | 0, | |
|       )); | |
|       ({ h: Bh, l: Bl } = u64_default.add( | |
|         this.Bh | 0, | |
|         this.Bl | 0, | |
|         Bh | 0, | |
|         Bl | 0, | |
|       )); | |
|       ({ h: Ch, l: Cl } = u64_default.add( | |
|         this.Ch | 0, | |
|         this.Cl | 0, | |
|         Ch | 0, | |
|         Cl | 0, | |
|       )); | |
|       ({ h: Dh, l: Dl } = u64_default.add( | |
|         this.Dh | 0, | |
|         this.Dl | 0, | |
|         Dh | 0, | |
|         Dl | 0, | |
|       )); | |
|       ({ h: Eh, l: El } = u64_default.add( | |
|         this.Eh | 0, | |
|         this.El | 0, | |
|         Eh | 0, | |
|         El | 0, | |
|       )); | |
|       ({ h: Fh, l: Fl } = u64_default.add( | |
|         this.Fh | 0, | |
|         this.Fl | 0, | |
|         Fh | 0, | |
|         Fl | 0, | |
|       )); | |
|       ({ h: Gh, l: Gl } = u64_default.add( | |
|         this.Gh | 0, | |
|         this.Gl | 0, | |
|         Gh | 0, | |
|         Gl | 0, | |
|       )); | |
|       ({ h: Hh, l: Hl } = u64_default.add( | |
|         this.Hh | 0, | |
|         this.Hl | 0, | |
|         Hh | 0, | |
|         Hl | 0, | |
|       )); | |
|       this.set(Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl); | |
|     } | |
|     roundClean() { | |
|       SHA512_W_H.fill(0); | |
|       SHA512_W_L.fill(0); | |
|     } | |
|     destroy() { | |
|       this.buffer.fill(0); | |
|       this.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); | |
|     } | |
|   }; | |
|   var sha512 = /* @__PURE__ */ wrapConstructor(() => new SHA512()); | |
| 
 | |
|   // ../esm/sha3.js | |
|   var [SHA3_PI, SHA3_ROTL, _SHA3_IOTA] = [[], [], []]; | |
|   var _0n = /* @__PURE__ */ BigInt(0); | |
|   var _1n = /* @__PURE__ */ BigInt(1); | |
|   var _2n = /* @__PURE__ */ BigInt(2); | |
|   var _7n = /* @__PURE__ */ BigInt(7); | |
|   var _256n = /* @__PURE__ */ BigInt(256); | |
|   var _0x71n = /* @__PURE__ */ BigInt(113); | |
|   for (let round = 0, R = _1n, x = 1, y = 0; round < 24; round++) { | |
|     [x, y] = [y, (2 * x + 3 * y) % 5]; | |
|     SHA3_PI.push(2 * (5 * y + x)); | |
|     SHA3_ROTL.push((((round + 1) * (round + 2)) / 2) % 64); | |
|     let t = _0n; | |
|     for (let j = 0; j < 7; j++) { | |
|       R = ((R << _1n) ^ ((R >> _7n) * _0x71n)) % _256n; | |
|       if (R & _2n) t ^= _1n << ((_1n << /* @__PURE__ */ BigInt(j)) - _1n); | |
|     } | |
|     _SHA3_IOTA.push(t); | |
|   } | |
|   var [SHA3_IOTA_H, SHA3_IOTA_L] = /* @__PURE__ */ split(_SHA3_IOTA, true); | |
|   var rotlH = (h, l, s) => (s > 32 ? rotlBH(h, l, s) : rotlSH(h, l, s)); | |
|   var rotlL = (h, l, s) => (s > 32 ? rotlBL(h, l, s) : rotlSL(h, l, s)); | |
|   function keccakP(s, rounds = 24) { | |
|     const B = new Uint32Array(5 * 2); | |
|     for (let round = 24 - rounds; round < 24; round++) { | |
|       for (let x = 0; x < 10; x++) | |
|         B[x] = s[x] ^ s[x + 10] ^ s[x + 20] ^ s[x + 30] ^ s[x + 40]; | |
|       for (let x = 0; x < 10; x += 2) { | |
|         const idx1 = (x + 8) % 10; | |
|         const idx0 = (x + 2) % 10; | |
|         const B0 = B[idx0]; | |
|         const B1 = B[idx0 + 1]; | |
|         const Th = rotlH(B0, B1, 1) ^ B[idx1]; | |
|         const Tl = rotlL(B0, B1, 1) ^ B[idx1 + 1]; | |
|         for (let y = 0; y < 50; y += 10) { | |
|           s[x + y] ^= Th; | |
|           s[x + y + 1] ^= Tl; | |
|         } | |
|       } | |
|       let curH = s[2]; | |
|       let curL = s[3]; | |
|       for (let t = 0; t < 24; t++) { | |
|         const shift = SHA3_ROTL[t]; | |
|         const Th = rotlH(curH, curL, shift); | |
|         const Tl = rotlL(curH, curL, shift); | |
|         const PI = SHA3_PI[t]; | |
|         curH = s[PI]; | |
|         curL = s[PI + 1]; | |
|         s[PI] = Th; | |
|         s[PI + 1] = Tl; | |
|       } | |
|       for (let y = 0; y < 50; y += 10) { | |
|         for (let x = 0; x < 10; x++) B[x] = s[y + x]; | |
|         for (let x = 0; x < 10; x++) | |
|           s[y + x] ^= ~B[(x + 2) % 10] & B[(x + 4) % 10]; | |
|       } | |
|       s[0] ^= SHA3_IOTA_H[round]; | |
|       s[1] ^= SHA3_IOTA_L[round]; | |
|     } | |
|     B.fill(0); | |
|   } | |
|   var Keccak = class _Keccak extends Hash { | |
|     // NOTE: we accept arguments in bytes instead of bits here. | |
|     constructor(blockLen, suffix, outputLen, enableXOF = false, rounds = 24) { | |
|       super(); | |
|       this.blockLen = blockLen; | |
|       this.suffix = suffix; | |
|       this.outputLen = outputLen; | |
|       this.enableXOF = enableXOF; | |
|       this.rounds = rounds; | |
|       this.pos = 0; | |
|       this.posOut = 0; | |
|       this.finished = false; | |
|       this.destroyed = false; | |
|       number(outputLen); | |
|       if (0 >= this.blockLen || this.blockLen >= 200) | |
|         throw new Error("Sha3 supports only keccak-f1600 function"); | |
|       this.state = new Uint8Array(200); | |
|       this.state32 = u32(this.state); | |
|     } | |
|     keccak() { | |
|       keccakP(this.state32, this.rounds); | |
|       this.posOut = 0; | |
|       this.pos = 0; | |
|     } | |
|     update(data) { | |
|       exists(this); | |
|       const { blockLen, state } = this; | |
|       data = toBytes(data); | |
|       const len = data.length; | |
|       for (let pos = 0; pos < len; ) { | |
|         const take = Math.min(blockLen - this.pos, len - pos); | |
|         for (let i = 0; i < take; i++) state[this.pos++] ^= data[pos++]; | |
|         if (this.pos === blockLen) this.keccak(); | |
|       } | |
|       return this; | |
|     } | |
|     finish() { | |
|       if (this.finished) return; | |
|       this.finished = true; | |
|       const { state, suffix, pos, blockLen } = this; | |
|       state[pos] ^= suffix; | |
|       if ((suffix & 128) !== 0 && pos === blockLen - 1) this.keccak(); | |
|       state[blockLen - 1] ^= 128; | |
|       this.keccak(); | |
|     } | |
|     writeInto(out) { | |
|       exists(this, false); | |
|       bytes(out); | |
|       this.finish(); | |
|       const bufferOut = this.state; | |
|       const { blockLen } = this; | |
|       for (let pos = 0, len = out.length; pos < len; ) { | |
|         if (this.posOut >= blockLen) this.keccak(); | |
|         const take = Math.min(blockLen - this.posOut, len - pos); | |
|         out.set(bufferOut.subarray(this.posOut, this.posOut + take), pos); | |
|         this.posOut += take; | |
|         pos += take; | |
|       } | |
|       return out; | |
|     } | |
|     xofInto(out) { | |
|       if (!this.enableXOF) | |
|         throw new Error("XOF is not possible for this instance"); | |
|       return this.writeInto(out); | |
|     } | |
|     xof(bytes2) { | |
|       number(bytes2); | |
|       return this.xofInto(new Uint8Array(bytes2)); | |
|     } | |
|     digestInto(out) { | |
|       output(out, this); | |
|       if (this.finished) throw new Error("digest() was already called"); | |
|       this.writeInto(out); | |
|       this.destroy(); | |
|       return out; | |
|     } | |
|     digest() { | |
|       return this.digestInto(new Uint8Array(this.outputLen)); | |
|     } | |
|     destroy() { | |
|       this.destroyed = true; | |
|       this.state.fill(0); | |
|     } | |
|     _cloneInto(to) { | |
|       const { blockLen, suffix, outputLen, rounds, enableXOF } = this; | |
|       to || (to = new _Keccak(blockLen, suffix, outputLen, enableXOF, rounds)); | |
|       to.state32.set(this.state32); | |
|       to.pos = this.pos; | |
|       to.posOut = this.posOut; | |
|       to.finished = this.finished; | |
|       to.rounds = rounds; | |
|       to.suffix = suffix; | |
|       to.outputLen = outputLen; | |
|       to.enableXOF = enableXOF; | |
|       to.destroyed = this.destroyed; | |
|       return to; | |
|     } | |
|   }; | |
|   var gen = (suffix, blockLen, outputLen) => | |
|     wrapConstructor(() => new Keccak(blockLen, suffix, outputLen)); | |
|   var sha3_224 = /* @__PURE__ */ gen(6, 144, 224 / 8); | |
|   var sha3_256 = /* @__PURE__ */ gen(6, 136, 256 / 8); | |
|   var sha3_384 = /* @__PURE__ */ gen(6, 104, 384 / 8); | |
|   var sha3_512 = /* @__PURE__ */ gen(6, 72, 512 / 8); | |
|   var keccak_224 = /* @__PURE__ */ gen(1, 144, 224 / 8); | |
|   var keccak_256 = /* @__PURE__ */ gen(1, 136, 256 / 8); | |
|   var keccak_384 = /* @__PURE__ */ gen(1, 104, 384 / 8); | |
|   var keccak_512 = /* @__PURE__ */ gen(1, 72, 512 / 8); | |
|   var genShake = (suffix, blockLen, outputLen) => | |
|     wrapXOFConstructorWithOpts( | |
|       (opts = {}) => | |
|         new Keccak( | |
|           blockLen, | |
|           suffix, | |
|           opts.dkLen === void 0 ? outputLen : opts.dkLen, | |
|           true, | |
|         ), | |
|     ); | |
|   var shake128 = /* @__PURE__ */ genShake(31, 168, 128 / 8); | |
|   var shake256 = /* @__PURE__ */ genShake(31, 136, 256 / 8); | |
| 
 | |
|   // ../esm/sha3-addons.js | |
|   function leftEncode(n) { | |
|     const res = [n & 255]; | |
|     n >>= 8; | |
|     for (; n > 0; n >>= 8) res.unshift(n & 255); | |
|     res.unshift(res.length); | |
|     return new Uint8Array(res); | |
|   } | |
|   function rightEncode(n) { | |
|     const res = [n & 255]; | |
|     n >>= 8; | |
|     for (; n > 0; n >>= 8) res.unshift(n & 255); | |
|     res.push(res.length); | |
|     return new Uint8Array(res); | |
|   } | |
|   function chooseLen(opts, outputLen) { | |
|     return opts.dkLen === void 0 ? outputLen : opts.dkLen; | |
|   } | |
|   var toBytesOptional = (buf) => | |
|     buf !== void 0 ? toBytes(buf) : new Uint8Array([]); | |
|   var getPadding = (len, block2) => | |
|     new Uint8Array((block2 - (len % block2)) % block2); | |
|   function cshakePers(hash2, opts = {}) { | |
|     if (!opts || (!opts.personalization && !opts.NISTfn)) return hash2; | |
|     const blockLenBytes = leftEncode(hash2.blockLen); | |
|     const fn = toBytesOptional(opts.NISTfn); | |
|     const fnLen = leftEncode(8 * fn.length); | |
|     const pers = toBytesOptional(opts.personalization); | |
|     const persLen = leftEncode(8 * pers.length); | |
|     if (!fn.length && !pers.length) return hash2; | |
|     hash2.suffix = 4; | |
|     hash2 | |
|       .update(blockLenBytes) | |
|       .update(fnLen) | |
|       .update(fn) | |
|       .update(persLen) | |
|       .update(pers); | |
|     let totalLen = | |
|       blockLenBytes.length + | |
|       fnLen.length + | |
|       fn.length + | |
|       persLen.length + | |
|       pers.length; | |
|     hash2.update(getPadding(totalLen, hash2.blockLen)); | |
|     return hash2; | |
|   } | |
|   var gencShake = (suffix, blockLen, outputLen) => | |
|     wrapConstructorWithOpts((opts = {}) => | |
|       cshakePers( | |
|         new Keccak(blockLen, suffix, chooseLen(opts, outputLen), true), | |
|         opts, | |
|       ), | |
|     ); | |
|   var cshake128 = /* @__PURE__ */ (() => gencShake(31, 168, 128 / 8))(); | |
|   var cshake256 = /* @__PURE__ */ (() => gencShake(31, 136, 256 / 8))(); | |
|   var KMAC = class extends Keccak { | |
|     constructor(blockLen, outputLen, enableXOF, key, opts = {}) { | |
|       super(blockLen, 31, outputLen, enableXOF); | |
|       cshakePers(this, { | |
|         NISTfn: "KMAC", | |
|         personalization: opts.personalization, | |
|       }); | |
|       key = toBytes(key); | |
|       const blockLenBytes = leftEncode(this.blockLen); | |
|       const keyLen = leftEncode(8 * key.length); | |
|       this.update(blockLenBytes).update(keyLen).update(key); | |
|       const totalLen = blockLenBytes.length + keyLen.length + key.length; | |
|       this.update(getPadding(totalLen, this.blockLen)); | |
|     } | |
|     finish() { | |
|       if (!this.finished) | |
|         this.update(rightEncode(this.enableXOF ? 0 : this.outputLen * 8)); | |
|       super.finish(); | |
|     } | |
|     _cloneInto(to) { | |
|       if (!to) { | |
|         to = Object.create(Object.getPrototypeOf(this), {}); | |
|         to.state = this.state.slice(); | |
|         to.blockLen = this.blockLen; | |
|         to.state32 = u32(to.state); | |
|       } | |
|       return super._cloneInto(to); | |
|     } | |
|     clone() { | |
|       return this._cloneInto(); | |
|     } | |
|   }; | |
|   function genKmac(blockLen, outputLen, xof = false) { | |
|     const kmac = (key, message, opts) => | |
|       kmac.create(key, opts).update(message).digest(); | |
|     kmac.create = (key, opts = {}) => | |
|       new KMAC(blockLen, chooseLen(opts, outputLen), xof, key, opts); | |
|     return kmac; | |
|   } | |
|   var kmac128 = /* @__PURE__ */ (() => genKmac(168, 128 / 8))(); | |
|   var kmac256 = /* @__PURE__ */ (() => genKmac(136, 256 / 8))(); | |
|   function rightEncodeK12(n) { | |
|     const res = []; | |
|     for (; n > 0; n >>= 8) res.unshift(n & 255); | |
|     res.push(res.length); | |
|     return new Uint8Array(res); | |
|   } | |
|   var EMPTY = new Uint8Array([]); | |
|   var KangarooTwelve = class _KangarooTwelve extends Keccak { | |
|     constructor(blockLen, leafLen, outputLen, rounds, opts) { | |
|       super(blockLen, 7, outputLen, true, rounds); | |
|       this.leafLen = leafLen; | |
|       this.chunkLen = 8192; | |
|       this.chunkPos = 0; | |
|       this.chunksDone = 0; | |
|       const { personalization } = opts; | |
|       this.personalization = toBytesOptional(personalization); | |
|     } | |
|     update(data) { | |
|       data = toBytes(data); | |
|       const { chunkLen, blockLen, leafLen, rounds } = this; | |
|       for (let pos = 0, len = data.length; pos < len; ) { | |
|         if (this.chunkPos == chunkLen) { | |
|           if (this.leafHash) super.update(this.leafHash.digest()); | |
|           else { | |
|             this.suffix = 6; | |
|             super.update(new Uint8Array([3, 0, 0, 0, 0, 0, 0, 0])); | |
|           } | |
|           this.leafHash = new Keccak(blockLen, 11, leafLen, false, rounds); | |
|           this.chunksDone++; | |
|           this.chunkPos = 0; | |
|         } | |
|         const take = Math.min(chunkLen - this.chunkPos, len - pos); | |
|         const chunk = data.subarray(pos, pos + take); | |
|         if (this.leafHash) this.leafHash.update(chunk); | |
|         else super.update(chunk); | |
|         this.chunkPos += take; | |
|         pos += take; | |
|       } | |
|       return this; | |
|     } | |
|     finish() { | |
|       if (this.finished) return; | |
|       const { personalization } = this; | |
|       this.update(personalization).update( | |
|         rightEncodeK12(personalization.length), | |
|       ); | |
|       if (this.leafHash) { | |
|         super.update(this.leafHash.digest()); | |
|         super.update(rightEncodeK12(this.chunksDone)); | |
|         super.update(new Uint8Array([255, 255])); | |
|       } | |
|       super.finish.call(this); | |
|     } | |
|     destroy() { | |
|       super.destroy.call(this); | |
|       if (this.leafHash) this.leafHash.destroy(); | |
|       this.personalization = EMPTY; | |
|     } | |
|     _cloneInto(to) { | |
|       const { blockLen, leafLen, leafHash, outputLen, rounds } = this; | |
|       to || | |
|         (to = new _KangarooTwelve(blockLen, leafLen, outputLen, rounds, {})); | |
|       super._cloneInto(to); | |
|       if (leafHash) to.leafHash = leafHash._cloneInto(to.leafHash); | |
|       to.personalization.set(this.personalization); | |
|       to.leafLen = this.leafLen; | |
|       to.chunkPos = this.chunkPos; | |
|       to.chunksDone = this.chunksDone; | |
|       return to; | |
|     } | |
|     clone() { | |
|       return this._cloneInto(); | |
|     } | |
|   }; | |
|   var k12 = /* @__PURE__ */ (() => | |
|     wrapConstructorWithOpts( | |
|       (opts = {}) => new KangarooTwelve(168, 32, chooseLen(opts, 32), 12, opts), | |
|     ))(); | |
|   var m14 = /* @__PURE__ */ (() => | |
|     wrapConstructorWithOpts( | |
|       (opts = {}) => new KangarooTwelve(136, 64, chooseLen(opts, 64), 14, opts), | |
|     ))(); | |
| 
 | |
|   // ../esm/sha1.js | |
|   var rotl3 = (word, shift) => | |
|     (word << shift) | ((word >>> (32 - shift)) >>> 0); | |
|   var Chi2 = (a, b, c) => (a & b) ^ (~a & c); | |
|   var Maj2 = (a, b, c) => (a & b) ^ (a & c) ^ (b & c); | |
|   var IV4 = /* @__PURE__ */ new Uint32Array([ | |
|     1732584193, 4023233417, 2562383102, 271733878, 3285377520, | |
|   ]); | |
|   var SHA1_W = /* @__PURE__ */ new Uint32Array(80); | |
|   var SHA1 = class extends SHA2 { | |
|     constructor() { | |
|       super(64, 20, 8, false); | |
|       this.A = IV4[0] | 0; | |
|       this.B = IV4[1] | 0; | |
|       this.C = IV4[2] | 0; | |
|       this.D = IV4[3] | 0; | |
|       this.E = IV4[4] | 0; | |
|     } | |
|     get() { | |
|       const { A, B, C, D, E } = this; | |
|       return [A, B, C, D, E]; | |
|     } | |
|     set(A, B, C, D, E) { | |
|       this.A = A | 0; | |
|       this.B = B | 0; | |
|       this.C = C | 0; | |
|       this.D = D | 0; | |
|       this.E = E | 0; | |
|     } | |
|     process(view, offset) { | |
|       for (let i = 0; i < 16; i++, offset += 4) | |
|         SHA1_W[i] = view.getUint32(offset, false); | |
|       for (let i = 16; i < 80; i++) | |
|         SHA1_W[i] = rotl3( | |
|           SHA1_W[i - 3] ^ SHA1_W[i - 8] ^ SHA1_W[i - 14] ^ SHA1_W[i - 16], | |
|           1, | |
|         ); | |
|       let { A, B, C, D, E } = this; | |
|       for (let i = 0; i < 80; i++) { | |
|         let F, K; | |
|         if (i < 20) { | |
|           F = Chi2(B, C, D); | |
|           K = 1518500249; | |
|         } else if (i < 40) { | |
|           F = B ^ C ^ D; | |
|           K = 1859775393; | |
|         } else if (i < 60) { | |
|           F = Maj2(B, C, D); | |
|           K = 2400959708; | |
|         } else { | |
|           F = B ^ C ^ D; | |
|           K = 3395469782; | |
|         } | |
|         const T = (rotl3(A, 5) + F + E + K + SHA1_W[i]) | 0; | |
|         E = D; | |
|         D = C; | |
|         C = rotl3(B, 30); | |
|         B = A; | |
|         A = T; | |
|       } | |
|       A = (A + this.A) | 0; | |
|       B = (B + this.B) | 0; | |
|       C = (C + this.C) | 0; | |
|       D = (D + this.D) | 0; | |
|       E = (E + this.E) | 0; | |
|       this.set(A, B, C, D, E); | |
|     } | |
|     roundClean() { | |
|       SHA1_W.fill(0); | |
|     } | |
|     destroy() { | |
|       this.set(0, 0, 0, 0, 0); | |
|       this.buffer.fill(0); | |
|     } | |
|   }; | |
|   var sha1 = /* @__PURE__ */ wrapConstructor(() => new SHA1()); | |
| 
 | |
|   // ../esm/argon2.js | |
|   var ARGON2_SYNC_POINTS = 4; | |
|   var toBytesOptional2 = (buf) => | |
|     buf !== void 0 ? toBytes(buf) : new Uint8Array([]); | |
|   function mul(a, b) { | |
|     const aL = a & 65535; | |
|     const aH = a >>> 16; | |
|     const bL = b & 65535; | |
|     const bH = b >>> 16; | |
|     const ll = Math.imul(aL, bL); | |
|     const hl = Math.imul(aH, bL); | |
|     const lh = Math.imul(aL, bH); | |
|     const hh = Math.imul(aH, bH); | |
|     const BUF4 = ((ll >>> 16) + (hl & 65535) + lh) | 0; | |
|     const h = ((hl >>> 16) + (BUF4 >>> 16) + hh) | 0; | |
|     return { h, l: (BUF4 << 16) | (ll & 65535) }; | |
|   } | |
|   function relPos(areaSize, relativePos) { | |
|     return areaSize - 1 - mul(areaSize, mul(relativePos, relativePos).h).h; | |
|   } | |
|   function mul2(a, b) { | |
|     const { h, l } = mul(a, b); | |
|     return { | |
|       h: ((h << 1) | (l >>> 31)) & 4294967295, | |
|       l: (l << 1) & 4294967295, | |
|     }; | |
|   } | |
|   function blamka(Ah, Al, Bh, Bl) { | |
|     const { h: Ch, l: Cl } = mul2(Al, Bl); | |
|     const Rll = add3L(Al, Bl, Cl); | |
|     return { h: add3H(Rll, Ah, Bh, Ch), l: Rll | 0 }; | |
|   } | |
|   var BUF3 = new Uint32Array(256); | |
|   function G(a, b, c, d) { | |
|     let Al = BUF3[2 * a], | |
|       Ah = BUF3[2 * a + 1]; | |
|     let Bl = BUF3[2 * b], | |
|       Bh = BUF3[2 * b + 1]; | |
|     let Cl = BUF3[2 * c], | |
|       Ch = BUF3[2 * c + 1]; | |
|     let Dl = BUF3[2 * d], | |
|       Dh = BUF3[2 * d + 1]; | |
|     ({ h: Ah, l: Al } = blamka(Ah, Al, Bh, Bl)); | |
|     ({ Dh, Dl } = { Dh: Dh ^ Ah, Dl: Dl ^ Al }); | |
|     ({ Dh, Dl } = { Dh: rotr32H(Dh, Dl), Dl: rotr32L(Dh, Dl) }); | |
|     ({ h: Ch, l: Cl } = blamka(Ch, Cl, Dh, Dl)); | |
|     ({ Bh, Bl } = { Bh: Bh ^ Ch, Bl: Bl ^ Cl }); | |
|     ({ Bh, Bl } = { Bh: rotrSH(Bh, Bl, 24), Bl: rotrSL(Bh, Bl, 24) }); | |
|     ({ h: Ah, l: Al } = blamka(Ah, Al, Bh, Bl)); | |
|     ({ Dh, Dl } = { Dh: Dh ^ Ah, Dl: Dl ^ Al }); | |
|     ({ Dh, Dl } = { Dh: rotrSH(Dh, Dl, 16), Dl: rotrSL(Dh, Dl, 16) }); | |
|     ({ h: Ch, l: Cl } = blamka(Ch, Cl, Dh, Dl)); | |
|     ({ Bh, Bl } = { Bh: Bh ^ Ch, Bl: Bl ^ Cl }); | |
|     ({ Bh, Bl } = { Bh: rotrBH(Bh, Bl, 63), Bl: rotrBL(Bh, Bl, 63) }); | |
|     (BUF3[2 * a] = Al), (BUF3[2 * a + 1] = Ah); | |
|     (BUF3[2 * b] = Bl), (BUF3[2 * b + 1] = Bh); | |
|     (BUF3[2 * c] = Cl), (BUF3[2 * c + 1] = Ch); | |
|     (BUF3[2 * d] = Dl), (BUF3[2 * d + 1] = Dh); | |
|   } | |
|   function P( | |
|     v00, | |
|     v01, | |
|     v02, | |
|     v03, | |
|     v04, | |
|     v05, | |
|     v06, | |
|     v07, | |
|     v08, | |
|     v09, | |
|     v10, | |
|     v11, | |
|     v12, | |
|     v13, | |
|     v14, | |
|     v15, | |
|   ) { | |
|     G(v00, v04, v08, v12); | |
|     G(v01, v05, v09, v13); | |
|     G(v02, v06, v10, v14); | |
|     G(v03, v07, v11, v15); | |
|     G(v00, v05, v10, v15); | |
|     G(v01, v06, v11, v12); | |
|     G(v02, v07, v08, v13); | |
|     G(v03, v04, v09, v14); | |
|   } | |
|   function block(x, xPos, yPos, outPos, needXor) { | |
|     for (let i = 0; i < 256; i++) BUF3[i] = x[xPos + i] ^ x[yPos + i]; | |
|     for (let i = 0; i < 128; i += 16) { | |
|       P( | |
|         i, | |
|         i + 1, | |
|         i + 2, | |
|         i + 3, | |
|         i + 4, | |
|         i + 5, | |
|         i + 6, | |
|         i + 7, | |
|         i + 8, | |
|         i + 9, | |
|         i + 10, | |
|         i + 11, | |
|         i + 12, | |
|         i + 13, | |
|         i + 14, | |
|         i + 15, | |
|       ); | |
|     } | |
|     for (let i = 0; i < 16; i += 2) { | |
|       P( | |
|         i, | |
|         i + 1, | |
|         i + 16, | |
|         i + 17, | |
|         i + 32, | |
|         i + 33, | |
|         i + 48, | |
|         i + 49, | |
|         i + 64, | |
|         i + 65, | |
|         i + 80, | |
|         i + 81, | |
|         i + 96, | |
|         i + 97, | |
|         i + 112, | |
|         i + 113, | |
|       ); | |
|     } | |
|     if (needXor) | |
|       for (let i = 0; i < 256; i++) | |
|         x[outPos + i] ^= BUF3[i] ^ x[xPos + i] ^ x[yPos + i]; | |
|     else | |
|       for (let i = 0; i < 256; i++) | |
|         x[outPos + i] = BUF3[i] ^ x[xPos + i] ^ x[yPos + i]; | |
|   } | |
|   function Hp(A, dkLen) { | |
|     const A8 = u8(A); | |
|     const T = new Uint32Array(1); | |
|     const T8 = u8(T); | |
|     T[0] = dkLen; | |
|     if (dkLen <= 64) | |
|       return blake2b.create({ dkLen }).update(T8).update(A8).digest(); | |
|     const out = new Uint8Array(dkLen); | |
|     let V = blake2b.create({}).update(T8).update(A8).digest(); | |
|     let pos = 0; | |
|     out.set(V.subarray(0, 32)); | |
|     pos += 32; | |
|     for (; dkLen - pos > 64; pos += 32) | |
|       out.set((V = blake2b(V)).subarray(0, 32), pos); | |
|     out.set(blake2b(V, { dkLen: dkLen - pos }), pos); | |
|     return u32(out); | |
|   } | |
|   function indexAlpha( | |
|     r, | |
|     s, | |
|     laneLen, | |
|     segmentLen, | |
|     index, | |
|     randL, | |
|     sameLane = false, | |
|   ) { | |
|     let area; | |
|     if (0 == r) { | |
|       if (0 == s) area = index - 1; | |
|       else if (sameLane) area = s * segmentLen + index - 1; | |
|       else area = s * segmentLen + (index == 0 ? -1 : 0); | |
|     } else if (sameLane) area = laneLen - segmentLen + index - 1; | |
|     else area = laneLen - segmentLen + (index == 0 ? -1 : 0); | |
|     const startPos = | |
|       r !== 0 && s !== ARGON2_SYNC_POINTS - 1 ? (s + 1) * segmentLen : 0; | |
|     const rel = relPos(area, randL); | |
|     return (startPos + rel) % laneLen; | |
|   } | |
|   function argon2Init(type, password, salt, opts) { | |
|     password = toBytes(password); | |
|     salt = toBytes(salt); | |
|     let { p, dkLen, m, t, version, key, personalization, maxmem, onProgress } = | |
|       { | |
|         ...opts, | |
|         version: opts.version || 19, | |
|         dkLen: opts.dkLen || 32, | |
|         maxmem: 2 ** 32, | |
|       }; | |
|     number(p); | |
|     number(dkLen); | |
|     number(m); | |
|     number(t); | |
|     number(version); | |
|     if (dkLen < 4 || dkLen >= 2 ** 32) | |
|       throw new Error("Argon2: dkLen should be at least 4 bytes"); | |
|     if (p < 1 || p >= 2 ** 32) | |
|       throw new Error("Argon2: p (parallelism) should be at least 1"); | |
|     if (t < 1 || t >= 2 ** 32) | |
|       throw new Error("Argon2: t (iterations) should be at least 1"); | |
|     if (m < 8 * p) | |
|       throw new Error(`Argon2: memory should be at least 8*p bytes`); | |
|     if (version !== 16 && version !== 19) | |
|       throw new Error(`Argon2: unknown version=${version}`); | |
|     password = toBytes(password); | |
|     if (password.length < 0 || password.length >= 2 ** 32) | |
|       throw new Error("Argon2: password should be less than 4 GB"); | |
|     salt = toBytes(salt); | |
|     if (salt.length < 8) | |
|       throw new Error("Argon2: salt should be at least 8 bytes"); | |
|     key = toBytesOptional2(key); | |
|     personalization = toBytesOptional2(personalization); | |
|     if (onProgress !== void 0 && typeof onProgress !== "function") | |
|       throw new Error("progressCb should be function"); | |
|     const lanes = p; | |
|     const mP = 4 * p * Math.floor(m / (ARGON2_SYNC_POINTS * p)); | |
|     const laneLen = Math.floor(mP / p); | |
|     const segmentLen = Math.floor(laneLen / ARGON2_SYNC_POINTS); | |
|     const h = blake2b.create({}); | |
|     const BUF4 = new Uint32Array(1); | |
|     const BUF8 = u8(BUF4); | |
|     for (const i of [p, dkLen, m, t, version, type]) { | |
|       if (i < 0 || i >= 2 ** 32) | |
|         throw new Error(`Argon2: wrong parameter=${i}, expected uint32`); | |
|       BUF4[0] = i; | |
|       h.update(BUF8); | |
|     } | |
|     for (let i of [password, salt, key, personalization]) { | |
|       BUF4[0] = i.length; | |
|       h.update(BUF8).update(i); | |
|     } | |
|     const H0 = new Uint32Array(18); | |
|     const H0_8 = u8(H0); | |
|     h.digestInto(H0_8); | |
|     const memUsed = mP * 256; | |
|     if (memUsed < 0 || memUsed >= 2 ** 32 || memUsed > maxmem) { | |
|       throw new Error( | |
|         `Argon2: wrong params (memUsed=${memUsed} maxmem=${maxmem}), should be less than 2**32`, | |
|       ); | |
|     } | |
|     const B = new Uint32Array(memUsed); | |
|     for (let l = 0; l < p; l++) { | |
|       const i = 256 * laneLen * l; | |
|       H0[17] = l; | |
|       H0[16] = 0; | |
|       B.set(Hp(H0, 1024), i); | |
|       H0[16] = 1; | |
|       B.set(Hp(H0, 1024), i + 256); | |
|     } | |
|     let perBlock = () => {}; | |
|     if (onProgress) { | |
|       const totalBlock = t * ARGON2_SYNC_POINTS * p * segmentLen; | |
|       const callbackPer = Math.max(Math.floor(totalBlock / 1e4), 1); | |
|       let blockCnt = 0; | |
|       perBlock = () => { | |
|         blockCnt++; | |
|         if ( | |
|           onProgress && | |
|           (!(blockCnt % callbackPer) || blockCnt === totalBlock) | |
|         ) | |
|           onProgress(blockCnt / totalBlock); | |
|       }; | |
|     } | |
|     return { | |
|       type, | |
|       mP, | |
|       p, | |
|       t, | |
|       version, | |
|       B, | |
|       laneLen, | |
|       lanes, | |
|       segmentLen, | |
|       dkLen, | |
|       perBlock, | |
|     }; | |
|   } | |
|   function argon2Output(B, p, laneLen, dkLen) { | |
|     const B_final = new Uint32Array(256); | |
|     for (let l = 0; l < p; l++) | |
|       for (let j = 0; j < 256; j++) | |
|         B_final[j] ^= B[256 * (laneLen * l + laneLen - 1) + j]; | |
|     return u8(Hp(B_final, dkLen)); | |
|   } | |
|   function processBlock( | |
|     B, | |
|     address, | |
|     l, | |
|     r, | |
|     s, | |
|     index, | |
|     laneLen, | |
|     segmentLen, | |
|     lanes, | |
|     offset, | |
|     prev, | |
|     dataIndependent, | |
|     needXor, | |
|   ) { | |
|     if (offset % laneLen) prev = offset - 1; | |
|     let randL, randH; | |
|     if (dataIndependent) { | |
|       if (index % 128 === 0) { | |
|         address[256 + 12]++; | |
|         block(address, 256, 2 * 256, 0, false); | |
|         block(address, 0, 2 * 256, 0, false); | |
|       } | |
|       randL = address[2 * (index % 128)]; | |
|       randH = address[2 * (index % 128) + 1]; | |
|     } else { | |
|       const T = 256 * prev; | |
|       randL = B[T]; | |
|       randH = B[T + 1]; | |
|     } | |
|     const refLane = r === 0 && s === 0 ? l : randH % lanes; | |
|     const refPos = indexAlpha( | |
|       r, | |
|       s, | |
|       laneLen, | |
|       segmentLen, | |
|       index, | |
|       randL, | |
|       refLane == l, | |
|     ); | |
|     const refBlock = laneLen * refLane + refPos; | |
|     block(B, 256 * prev, 256 * refBlock, offset * 256, needXor); | |
|   } | |
|   function argon2(type, password, salt, opts) { | |
|     const { | |
|       mP, | |
|       p, | |
|       t, | |
|       version, | |
|       B, | |
|       laneLen, | |
|       lanes, | |
|       segmentLen, | |
|       dkLen, | |
|       perBlock, | |
|     } = argon2Init(type, password, salt, opts); | |
|     const address = new Uint32Array(3 * 256); | |
|     address[256 + 6] = mP; | |
|     address[256 + 8] = t; | |
|     address[256 + 10] = type; | |
|     for (let r = 0; r < t; r++) { | |
|       const needXor = r !== 0 && version === 19; | |
|       address[256 + 0] = r; | |
|       for (let s = 0; s < ARGON2_SYNC_POINTS; s++) { | |
|         address[256 + 4] = s; | |
|         const dataIndependent = type == 1 || (type == 2 && r === 0 && s < 2); | |
|         for (let l = 0; l < p; l++) { | |
|           address[256 + 2] = l; | |
|           address[256 + 12] = 0; | |
|           let startPos = 0; | |
|           if (r === 0 && s === 0) { | |
|             startPos = 2; | |
|             if (dataIndependent) { | |
|               address[256 + 12]++; | |
|               block(address, 256, 2 * 256, 0, false); | |
|               block(address, 0, 2 * 256, 0, false); | |
|             } | |
|           } | |
|           let offset = l * laneLen + s * segmentLen + startPos; | |
|           let prev = offset % laneLen ? offset - 1 : offset + laneLen - 1; | |
|           for ( | |
|             let index = startPos; | |
|             index < segmentLen; | |
|             index++, offset++, prev++ | |
|           ) { | |
|             perBlock(); | |
|             processBlock( | |
|               B, | |
|               address, | |
|               l, | |
|               r, | |
|               s, | |
|               index, | |
|               laneLen, | |
|               segmentLen, | |
|               lanes, | |
|               offset, | |
|               prev, | |
|               dataIndependent, | |
|               needXor, | |
|             ); | |
|           } | |
|         } | |
|       } | |
|     } | |
|     return argon2Output(B, p, laneLen, dkLen); | |
|   } | |
|   var argon2id = (password, salt, opts) => argon2(2, password, salt, opts); | |
| 
 | |
|   // ../esm/eskdf.js | |
|   var SCRYPT_FACTOR = 2 ** 19; | |
|   var PBKDF2_FACTOR = 2 ** 17; | |
|   function scrypt2(password, salt) { | |
|     return scrypt(password, salt, { N: SCRYPT_FACTOR, r: 8, p: 1, dkLen: 32 }); | |
|   } | |
|   function pbkdf22(password, salt) { | |
|     return pbkdf2(sha256, password, salt, { c: PBKDF2_FACTOR, dkLen: 32 }); | |
|   } | |
|   function xor32(a, b) { | |
|     bytes(a, 32); | |
|     bytes(b, 32); | |
|     const arr = new Uint8Array(32); | |
|     for (let i = 0; i < 32; i++) { | |
|       arr[i] = a[i] ^ b[i]; | |
|     } | |
|     return arr; | |
|   } | |
|   function strHasLength(str, min, max) { | |
|     return typeof str === "string" && str.length >= min && str.length <= max; | |
|   } | |
|   function deriveMainSeed(username, password) { | |
|     if (!strHasLength(username, 8, 255)) throw new Error("invalid username"); | |
|     if (!strHasLength(password, 8, 255)) throw new Error("invalid password"); | |
|     const scr = scrypt2(password + "", username + ""); | |
|     const pbk = pbkdf22(password + "", username + ""); | |
|     const res = xor32(scr, pbk); | |
|     scr.fill(0); | |
|     pbk.fill(0); | |
|     return res; | |
|   } | |
|   function getSaltInfo(protocol, accountId = 0) { | |
|     if (!(strHasLength(protocol, 3, 15) && /^[a-z0-9]{3,15}$/.test(protocol))) { | |
|       throw new Error("invalid protocol"); | |
|     } | |
|     const allowsStr = /^password\d{0,3}|ssh|tor|file$/.test(protocol); | |
|     let salt; | |
|     if (typeof accountId === "string") { | |
|       if (!allowsStr) throw new Error("accountId must be a number"); | |
|       if (!strHasLength(accountId, 1, 255)) | |
|         throw new Error("accountId must be valid string"); | |
|       salt = toBytes(accountId); | |
|     } else if (Number.isSafeInteger(accountId)) { | |
|       if (accountId < 0 || accountId > 2 ** 32 - 1) | |
|         throw new Error("invalid accountId"); | |
|       salt = new Uint8Array(4); | |
|       createView(salt).setUint32(0, accountId, false); | |
|     } else { | |
|       throw new Error( | |
|         `accountId must be a number${allowsStr ? " or string" : ""}`, | |
|       ); | |
|     } | |
|     const info = toBytes(protocol); | |
|     return { salt, info }; | |
|   } | |
|   function countBytes(num) { | |
|     if (typeof num !== "bigint" || num <= BigInt(128)) | |
|       throw new Error("invalid number"); | |
|     return Math.ceil(num.toString(2).length / 8); | |
|   } | |
|   function getKeyLength(options) { | |
|     if (!options || typeof options !== "object") return 32; | |
|     const hasLen = "keyLength" in options; | |
|     const hasMod = "modulus" in options; | |
|     if (hasLen && hasMod) | |
|       throw new Error("cannot combine keyLength and modulus options"); | |
|     if (!hasLen && !hasMod) | |
|       throw new Error("must have either keyLength or modulus option"); | |
|     const l = hasMod ? countBytes(options.modulus) + 8 : options.keyLength; | |
|     if (!(typeof l === "number" && l >= 16 && l <= 8192)) | |
|       throw new Error("invalid keyLength"); | |
|     return l; | |
|   } | |
|   function modReduceKey(key, modulus) { | |
|     const _1 = BigInt(1); | |
|     const num = BigInt("0x" + bytesToHex(key)); | |
|     const res = (num % (modulus - _1)) + _1; | |
|     if (res < _1) throw new Error("expected positive number"); | |
|     const len = key.length - 8; | |
|     const hex = res.toString(16).padStart(len * 2, "0"); | |
|     const bytes2 = hexToBytes(hex); | |
|     if (bytes2.length !== len) throw new Error("invalid length of result key"); | |
|     return bytes2; | |
|   } | |
|   async function eskdf(username, password) { | |
|     let seed = deriveMainSeed(username, password); | |
|     function deriveCK(protocol, accountId = 0, options) { | |
|       bytes(seed, 32); | |
|       const { salt, info } = getSaltInfo(protocol, accountId); | |
|       const keyLength = getKeyLength(options); | |
|       const key = hkdf(sha256, seed, salt, info, keyLength); | |
|       return options && "modulus" in options | |
|         ? modReduceKey(key, options.modulus) | |
|         : key; | |
|     } | |
|     function expire() { | |
|       if (seed) seed.fill(1); | |
|       seed = void 0; | |
|     } | |
|     const fingerprint = Array.from(deriveCK("fingerprint", 0)) | |
|       .slice(0, 6) | |
|       .map((char) => char.toString(16).padStart(2, "0").toUpperCase()) | |
|       .join(":"); | |
|     return Object.freeze({ deriveChildKey: deriveCK, expire, fingerprint }); | |
|   } | |
| 
 | |
|   // input.js | |
|   var utils = { bytesToHex, randomBytes }; | |
|   return __toCommonJS(input_exports); | |
| })(); | |
| /*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */
 | |
| 
 |