@idos-network/client 1.0.0-rc.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +11 -0
- package/dist/index.d.ts +322 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +5633 -0
- package/dist/index.js.map +1 -0
- package/package.json +53 -0
- package/src/enclave/iframe-enclave.ts +237 -0
- package/src/enclave/index.ts +3 -0
- package/src/enclave/metamask-snap-enclave.ts +91 -0
- package/src/enclave/types.ts +44 -0
- package/src/index.ts +472 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["encode","decode","SHA256","encode","decode","ALPHABET","encode","decode","__extends","d","b","Coder","URLSafeCoder","EncodeBuffer","DecodeBuffer","d","b","ErrorSchema","BorshSerializer","BorshDeserializer","data: Uint8Array","data: string","kwilClient: KwilActionClient","attribute: idOSUserAttribute","kwilClient: KwilActionClient","id: string","credential: ShareableCredential","params: CreateCredentialCopyParams","kwilClient: KwilActionClient","params: { user_id: string | null }","params: GetGrantsParams","id: string","params: idOSDAGSignatureParams","params: DelegatedWriteGrant","kwilClient: KwilActionClient","address: string","kwilClient: KwilActionClient","params: AddWalletParams","params: AddWalletParams[]","id: string","ids: string[]","DataType: typeof Utils.DataType","actionSchema: Record<string, ActionSchemaElem[]>","client: NodeKwil | WebKwil","actionName: string","params: Record<string, unknown>","params: KwilCallActionRequestParams","signer: KwilSigner | undefined","action: CallBody","#createActionInputs","#actionTypes","params: KwilExecuteActionRequestParams","action: ActionBody","Cls: new (opts: Config) => NodeKwil | WebKwil","createNodeKwilClient: (params: CreateKwilClientParams) => Promise<KwilActionClient>","createWebKwilClient: (params: CreateKwilClientParams) => Promise<KwilActionClient>","nacl","K","add","crypto","publicKey: string","NEAR_WALLET_TYPES: string[]","signer: unknown","wallet: NearWallet","currentAddress: string","store: Store","kwilClient: KwilActionClient","publicKey","nonce","callbackUrl","message: string | Uint8Array","store: Store","kwilClient: KwilActionClient","wallet: Wallet","_: never","storage: Storage","key: string","value: string","value: any","#getLocalStorage","days?: number | string","#removeLocalStorage","#setLocalStorage","str: string","userId: string","publicNotes: string","content: string","recipientEncryptionPublicKey: string","encryptorPublicKey: string","options: EnclaveOptions","options: Omit<EnclaveOptions, \"container\" | \"url\">","userId: string","expectedUserEncryptionPublicKey?: string","message: string","message: Uint8Array","receiverPublicKey: Uint8Array","senderPublicKey: Uint8Array","credentials: idOSCredential[]","privateFieldFilters: { pick: Record<string, unknown[]>; omit: Record<string, unknown[]> }","el: HTMLElement | null","request: any","ErrorClass: ErrorConstructor","params: {\n chainId?: string;\n nodeUrl: string;\n enclaveOptions: Omit<EnclaveOptions, \"mode\">;\n }","store: Store","kwilClient: KwilActionClient","enclaveProvider: EnclaveProvider","params: idOSClientConfiguration","address: string","signer: Wallet","idOSClientIdle: idOSClientIdle","kwilSigner: KwilSigner","walletIdentifier: string","idOSClientIdle","userId: string","idOSClientWithUserSigner: idOSClientWithUserSigner","user: idOSUser","idOSClientWithUserSigner","params: DelegatedWriteGrant","id: string","credential: ShareableCredential","attribute: idOSUserAttribute","consumerRecipientEncryptionPublicKey: string","consumerAddress: string","lockedUntil: number","params: idOSDAGSignatureParams","params: GetGrantsParams","params: AddWalletParams[]","grantId: string","params: AddWalletParams","ids: string[]","requirements: {\n acceptedIssuers: {\n authPublicKey: string;\n }[];\n publicNotesFieldFilters?: {\n pick: Record<string, unknown[]>;\n omit: Record<string, unknown[]>;\n };\n privateFieldFilters?: {\n pick: Record<string, unknown[]>;\n omit: Record<string, unknown[]>;\n };\n }","content: Record<string, unknown>","criteria: Record<string, unknown[]>","publicNotes: Record<string, string>","credentialId: string","params: {\n nodeUrl: string;\n enclaveOptions: Omit<EnclaveOptions, \"mode\">;\n}"],"sources":["../../../node_modules/.pnpm/@stablelib+hex@1.0.1/node_modules/@stablelib/hex/lib/hex.js","../../../node_modules/.pnpm/@stablelib+int@1.0.1/node_modules/@stablelib/int/lib/int.js","../../../node_modules/.pnpm/@stablelib+binary@1.0.1/node_modules/@stablelib/binary/lib/binary.js","../../../node_modules/.pnpm/@stablelib+wipe@1.0.1/node_modules/@stablelib/wipe/lib/wipe.js","../../../node_modules/.pnpm/@stablelib+sha256@1.0.1/node_modules/@stablelib/sha256/lib/sha256.js","../../../node_modules/.pnpm/@stablelib+utf8@1.0.2/node_modules/@stablelib/utf8/lib/utf8.js","../../../node_modules/.pnpm/base-x@5.0.0/node_modules/base-x/src/esm/index.js","../../../node_modules/.pnpm/bs58@6.0.0/node_modules/bs58/src/esm/index.js","../../../node_modules/.pnpm/@stablelib+base64@1.0.1/node_modules/@stablelib/base64/lib/base64.js","../../../node_modules/.pnpm/@stablelib+bytes@1.0.1/node_modules/@stablelib/bytes/lib/bytes.js","../../../node_modules/.pnpm/borsh@1.0.0/node_modules/borsh/lib/esm/types.js","../../../node_modules/.pnpm/borsh@1.0.0/node_modules/borsh/lib/esm/buffer.js","../../../node_modules/.pnpm/borsh@1.0.0/node_modules/borsh/lib/esm/utils.js","../../../node_modules/.pnpm/borsh@1.0.0/node_modules/borsh/lib/esm/serialize.js","../../../node_modules/.pnpm/borsh@1.0.0/node_modules/borsh/lib/esm/deserialize.js","../../../node_modules/.pnpm/borsh@1.0.0/node_modules/borsh/lib/esm/index.js","../../@core/src/codecs/index.ts","../../@core/src/kwil-actions/attributes.ts","../../@core/src/kwil-actions/credentials.ts","../../@core/src/kwil-actions/grants.ts","../../@core/src/kwil-actions/user.ts","../../@core/src/kwil-actions/wallets.ts","../../@core/src/kwil-actions/schema.ts","../../@core/src/kwil-infra/create-kwil-client.ts","../../../node_modules/.pnpm/tweetnacl@1.0.3/node_modules/tweetnacl","../../../node_modules/.pnpm/tweetnacl@1.0.3/node_modules/tweetnacl/nacl-fast.js","../../@core/src/kwil-nep413-signer/index.ts","../../@core/src/kwil-infra/create-near-wallet-kwil-signer.ts","../../@core/src/kwil-infra/create-kwil-signer.ts","../../@core/src/store/index.ts","../../@core/src/utils/index.ts","../src/enclave/iframe-enclave.ts","../src/index.ts"],"sourcesContent":["\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Package hex implements hex encoder and decoder.\n */\n// 0123456789 ABCDEF | abcdef\n// Index: 0 - 9 10-15 | 10-15\n// ASCII: 48 - 57 65-70 | 97-102\nfunction encodeNibble(b) {\n // b >= 0\n var result = b + 48;\n // b > 9\n result += ((9 - b) >>> 8) & (-48 + 65 - 10);\n return String.fromCharCode(result);\n}\nfunction encodeNibbleLower(b) {\n // b >= 0\n var result = b + 48;\n // b > 9\n result += ((9 - b) >>> 8) & (-48 + 97 - 10);\n return String.fromCharCode(result);\n}\n// Invalid character used in decoding to indicate\n// that the character to decode is out of range of\n// hex alphabet and cannot be decoded.\nvar INVALID_HEX_NIBBLE = 256;\nfunction decodeNibble(c) {\n var result = INVALID_HEX_NIBBLE;\n // 0-9: c > 47 and c < 58\n result += (((47 - c) & (c - 58)) >> 8) & (-INVALID_HEX_NIBBLE + c - 48);\n // A-F: c > 64 and c < 71\n result += (((64 - c) & (c - 71)) >> 8) & (-INVALID_HEX_NIBBLE + c - 65 + 10);\n // a-f: c > 96 and c < 103\n result += (((96 - c) & (c - 103)) >> 8) & (-INVALID_HEX_NIBBLE + c - 97 + 10);\n return result;\n}\n/**\n * Returns string with hex-encoded data.\n */\nfunction encode(data, lowerCase) {\n if (lowerCase === void 0) { lowerCase = false; }\n var enc = lowerCase ? encodeNibbleLower : encodeNibble;\n var s = \"\";\n for (var i = 0; i < data.length; i++) {\n s += enc(data[i] >>> 4);\n s += enc(data[i] & 0x0f);\n }\n return s;\n}\nexports.encode = encode;\n/**\n * Returns Uint8Array with data decoded from hex string.\n *\n * Throws error if hex string length is not divisible by 2 or has non-hex\n * characters.\n */\nfunction decode(hex) {\n if (hex.length === 0) {\n return new Uint8Array(0);\n }\n if (hex.length % 2 !== 0) {\n throw new Error(\"hex: input string must be divisible by two\");\n }\n var result = new Uint8Array(hex.length / 2);\n var haveBad = 0;\n for (var i = 0; i < hex.length; i += 2) {\n var v0 = decodeNibble(hex.charCodeAt(i));\n var v1 = decodeNibble(hex.charCodeAt(i + 1));\n result[i / 2] = v0 << 4 | v1;\n haveBad |= v0 & INVALID_HEX_NIBBLE;\n haveBad |= v1 & INVALID_HEX_NIBBLE;\n }\n if (haveBad !== 0) {\n throw new Error(\"hex: incorrect characters for decoding\");\n }\n return result;\n}\nexports.decode = decode;\n//# sourceMappingURL=hex.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Package int provides helper functions for integerss.\n */\n// Shim using 16-bit pieces.\nfunction imulShim(a, b) {\n var ah = (a >>> 16) & 0xffff, al = a & 0xffff;\n var bh = (b >>> 16) & 0xffff, bl = b & 0xffff;\n return ((al * bl) + (((ah * bl + al * bh) << 16) >>> 0) | 0);\n}\n/** 32-bit integer multiplication. */\n// Use system Math.imul if available, otherwise use our shim.\nexports.mul = Math.imul || imulShim;\n/** 32-bit integer addition. */\nfunction add(a, b) {\n return (a + b) | 0;\n}\nexports.add = add;\n/** 32-bit integer subtraction. */\nfunction sub(a, b) {\n return (a - b) | 0;\n}\nexports.sub = sub;\n/** 32-bit integer left rotation */\nfunction rotl(x, n) {\n return x << n | x >>> (32 - n);\n}\nexports.rotl = rotl;\n/** 32-bit integer left rotation */\nfunction rotr(x, n) {\n return x << (32 - n) | x >>> n;\n}\nexports.rotr = rotr;\nfunction isIntegerShim(n) {\n return typeof n === \"number\" && isFinite(n) && Math.floor(n) === n;\n}\n/**\n * Returns true if the argument is an integer number.\n *\n * In ES2015, Number.isInteger.\n */\nexports.isInteger = Number.isInteger || isIntegerShim;\n/**\n * Math.pow(2, 53) - 1\n *\n * In ES2015 Number.MAX_SAFE_INTEGER.\n */\nexports.MAX_SAFE_INTEGER = 9007199254740991;\n/**\n * Returns true if the argument is a safe integer number\n * (-MIN_SAFE_INTEGER < number <= MAX_SAFE_INTEGER)\n *\n * In ES2015, Number.isSafeInteger.\n */\nexports.isSafeInteger = function (n) {\n return exports.isInteger(n) && (n >= -exports.MAX_SAFE_INTEGER && n <= exports.MAX_SAFE_INTEGER);\n};\n//# sourceMappingURL=int.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Package binary provides functions for encoding and decoding numbers in byte arrays.\n */\nvar int_1 = require(\"@stablelib/int\");\n// TODO(dchest): add asserts for correct value ranges and array offsets.\n/**\n * Reads 2 bytes from array starting at offset as big-endian\n * signed 16-bit integer and returns it.\n */\nfunction readInt16BE(array, offset) {\n if (offset === void 0) { offset = 0; }\n return (((array[offset + 0] << 8) | array[offset + 1]) << 16) >> 16;\n}\nexports.readInt16BE = readInt16BE;\n/**\n * Reads 2 bytes from array starting at offset as big-endian\n * unsigned 16-bit integer and returns it.\n */\nfunction readUint16BE(array, offset) {\n if (offset === void 0) { offset = 0; }\n return ((array[offset + 0] << 8) | array[offset + 1]) >>> 0;\n}\nexports.readUint16BE = readUint16BE;\n/**\n * Reads 2 bytes from array starting at offset as little-endian\n * signed 16-bit integer and returns it.\n */\nfunction readInt16LE(array, offset) {\n if (offset === void 0) { offset = 0; }\n return (((array[offset + 1] << 8) | array[offset]) << 16) >> 16;\n}\nexports.readInt16LE = readInt16LE;\n/**\n * Reads 2 bytes from array starting at offset as little-endian\n * unsigned 16-bit integer and returns it.\n */\nfunction readUint16LE(array, offset) {\n if (offset === void 0) { offset = 0; }\n return ((array[offset + 1] << 8) | array[offset]) >>> 0;\n}\nexports.readUint16LE = readUint16LE;\n/**\n * Writes 2-byte big-endian representation of 16-bit unsigned\n * value to byte array starting at offset.\n *\n * If byte array is not given, creates a new 2-byte one.\n *\n * Returns the output byte array.\n */\nfunction writeUint16BE(value, out, offset) {\n if (out === void 0) { out = new Uint8Array(2); }\n if (offset === void 0) { offset = 0; }\n out[offset + 0] = value >>> 8;\n out[offset + 1] = value >>> 0;\n return out;\n}\nexports.writeUint16BE = writeUint16BE;\nexports.writeInt16BE = writeUint16BE;\n/**\n * Writes 2-byte little-endian representation of 16-bit unsigned\n * value to array starting at offset.\n *\n * If byte array is not given, creates a new 2-byte one.\n *\n * Returns the output byte array.\n */\nfunction writeUint16LE(value, out, offset) {\n if (out === void 0) { out = new Uint8Array(2); }\n if (offset === void 0) { offset = 0; }\n out[offset + 0] = value >>> 0;\n out[offset + 1] = value >>> 8;\n return out;\n}\nexports.writeUint16LE = writeUint16LE;\nexports.writeInt16LE = writeUint16LE;\n/**\n * Reads 4 bytes from array starting at offset as big-endian\n * signed 32-bit integer and returns it.\n */\nfunction readInt32BE(array, offset) {\n if (offset === void 0) { offset = 0; }\n return (array[offset] << 24) |\n (array[offset + 1] << 16) |\n (array[offset + 2] << 8) |\n array[offset + 3];\n}\nexports.readInt32BE = readInt32BE;\n/**\n * Reads 4 bytes from array starting at offset as big-endian\n * unsigned 32-bit integer and returns it.\n */\nfunction readUint32BE(array, offset) {\n if (offset === void 0) { offset = 0; }\n return ((array[offset] << 24) |\n (array[offset + 1] << 16) |\n (array[offset + 2] << 8) |\n array[offset + 3]) >>> 0;\n}\nexports.readUint32BE = readUint32BE;\n/**\n * Reads 4 bytes from array starting at offset as little-endian\n * signed 32-bit integer and returns it.\n */\nfunction readInt32LE(array, offset) {\n if (offset === void 0) { offset = 0; }\n return (array[offset + 3] << 24) |\n (array[offset + 2] << 16) |\n (array[offset + 1] << 8) |\n array[offset];\n}\nexports.readInt32LE = readInt32LE;\n/**\n * Reads 4 bytes from array starting at offset as little-endian\n * unsigned 32-bit integer and returns it.\n */\nfunction readUint32LE(array, offset) {\n if (offset === void 0) { offset = 0; }\n return ((array[offset + 3] << 24) |\n (array[offset + 2] << 16) |\n (array[offset + 1] << 8) |\n array[offset]) >>> 0;\n}\nexports.readUint32LE = readUint32LE;\n/**\n * Writes 4-byte big-endian representation of 32-bit unsigned\n * value to byte array starting at offset.\n *\n * If byte array is not given, creates a new 4-byte one.\n *\n * Returns the output byte array.\n */\nfunction writeUint32BE(value, out, offset) {\n if (out === void 0) { out = new Uint8Array(4); }\n if (offset === void 0) { offset = 0; }\n out[offset + 0] = value >>> 24;\n out[offset + 1] = value >>> 16;\n out[offset + 2] = value >>> 8;\n out[offset + 3] = value >>> 0;\n return out;\n}\nexports.writeUint32BE = writeUint32BE;\nexports.writeInt32BE = writeUint32BE;\n/**\n * Writes 4-byte little-endian representation of 32-bit unsigned\n * value to array starting at offset.\n *\n * If byte array is not given, creates a new 4-byte one.\n *\n * Returns the output byte array.\n */\nfunction writeUint32LE(value, out, offset) {\n if (out === void 0) { out = new Uint8Array(4); }\n if (offset === void 0) { offset = 0; }\n out[offset + 0] = value >>> 0;\n out[offset + 1] = value >>> 8;\n out[offset + 2] = value >>> 16;\n out[offset + 3] = value >>> 24;\n return out;\n}\nexports.writeUint32LE = writeUint32LE;\nexports.writeInt32LE = writeUint32LE;\n/**\n * Reads 8 bytes from array starting at offset as big-endian\n * signed 64-bit integer and returns it.\n *\n * IMPORTANT: due to JavaScript limitation, supports exact\n * numbers in range -9007199254740991 to 9007199254740991.\n * If the number stored in the byte array is outside this range,\n * the result is not exact.\n */\nfunction readInt64BE(array, offset) {\n if (offset === void 0) { offset = 0; }\n var hi = readInt32BE(array, offset);\n var lo = readInt32BE(array, offset + 4);\n return hi * 0x100000000 + lo - ((lo >> 31) * 0x100000000);\n}\nexports.readInt64BE = readInt64BE;\n/**\n * Reads 8 bytes from array starting at offset as big-endian\n * unsigned 64-bit integer and returns it.\n *\n * IMPORTANT: due to JavaScript limitation, supports values up to 2^53-1.\n */\nfunction readUint64BE(array, offset) {\n if (offset === void 0) { offset = 0; }\n var hi = readUint32BE(array, offset);\n var lo = readUint32BE(array, offset + 4);\n return hi * 0x100000000 + lo;\n}\nexports.readUint64BE = readUint64BE;\n/**\n * Reads 8 bytes from array starting at offset as little-endian\n * signed 64-bit integer and returns it.\n *\n * IMPORTANT: due to JavaScript limitation, supports exact\n * numbers in range -9007199254740991 to 9007199254740991.\n * If the number stored in the byte array is outside this range,\n * the result is not exact.\n */\nfunction readInt64LE(array, offset) {\n if (offset === void 0) { offset = 0; }\n var lo = readInt32LE(array, offset);\n var hi = readInt32LE(array, offset + 4);\n return hi * 0x100000000 + lo - ((lo >> 31) * 0x100000000);\n}\nexports.readInt64LE = readInt64LE;\n/**\n * Reads 8 bytes from array starting at offset as little-endian\n * unsigned 64-bit integer and returns it.\n *\n * IMPORTANT: due to JavaScript limitation, supports values up to 2^53-1.\n */\nfunction readUint64LE(array, offset) {\n if (offset === void 0) { offset = 0; }\n var lo = readUint32LE(array, offset);\n var hi = readUint32LE(array, offset + 4);\n return hi * 0x100000000 + lo;\n}\nexports.readUint64LE = readUint64LE;\n/**\n * Writes 8-byte big-endian representation of 64-bit unsigned\n * value to byte array starting at offset.\n *\n * Due to JavaScript limitation, supports values up to 2^53-1.\n *\n * If byte array is not given, creates a new 8-byte one.\n *\n * Returns the output byte array.\n */\nfunction writeUint64BE(value, out, offset) {\n if (out === void 0) { out = new Uint8Array(8); }\n if (offset === void 0) { offset = 0; }\n writeUint32BE(value / 0x100000000 >>> 0, out, offset);\n writeUint32BE(value >>> 0, out, offset + 4);\n return out;\n}\nexports.writeUint64BE = writeUint64BE;\nexports.writeInt64BE = writeUint64BE;\n/**\n * Writes 8-byte little-endian representation of 64-bit unsigned\n * value to byte array starting at offset.\n *\n * Due to JavaScript limitation, supports values up to 2^53-1.\n *\n * If byte array is not given, creates a new 8-byte one.\n *\n * Returns the output byte array.\n */\nfunction writeUint64LE(value, out, offset) {\n if (out === void 0) { out = new Uint8Array(8); }\n if (offset === void 0) { offset = 0; }\n writeUint32LE(value >>> 0, out, offset);\n writeUint32LE(value / 0x100000000 >>> 0, out, offset + 4);\n return out;\n}\nexports.writeUint64LE = writeUint64LE;\nexports.writeInt64LE = writeUint64LE;\n/**\n * Reads bytes from array starting at offset as big-endian\n * unsigned bitLen-bit integer and returns it.\n *\n * Supports bit lengths divisible by 8, up to 48.\n */\nfunction readUintBE(bitLength, array, offset) {\n if (offset === void 0) { offset = 0; }\n // TODO(dchest): implement support for bitLengths non-divisible by 8\n if (bitLength % 8 !== 0) {\n throw new Error(\"readUintBE supports only bitLengths divisible by 8\");\n }\n if (bitLength / 8 > array.length - offset) {\n throw new Error(\"readUintBE: array is too short for the given bitLength\");\n }\n var result = 0;\n var mul = 1;\n for (var i = bitLength / 8 + offset - 1; i >= offset; i--) {\n result += array[i] * mul;\n mul *= 256;\n }\n return result;\n}\nexports.readUintBE = readUintBE;\n/**\n * Reads bytes from array starting at offset as little-endian\n * unsigned bitLen-bit integer and returns it.\n *\n * Supports bit lengths divisible by 8, up to 48.\n */\nfunction readUintLE(bitLength, array, offset) {\n if (offset === void 0) { offset = 0; }\n // TODO(dchest): implement support for bitLengths non-divisible by 8\n if (bitLength % 8 !== 0) {\n throw new Error(\"readUintLE supports only bitLengths divisible by 8\");\n }\n if (bitLength / 8 > array.length - offset) {\n throw new Error(\"readUintLE: array is too short for the given bitLength\");\n }\n var result = 0;\n var mul = 1;\n for (var i = offset; i < offset + bitLength / 8; i++) {\n result += array[i] * mul;\n mul *= 256;\n }\n return result;\n}\nexports.readUintLE = readUintLE;\n/**\n * Writes a big-endian representation of bitLen-bit unsigned\n * value to array starting at offset.\n *\n * Supports bit lengths divisible by 8, up to 48.\n *\n * If byte array is not given, creates a new one.\n *\n * Returns the output byte array.\n */\nfunction writeUintBE(bitLength, value, out, offset) {\n if (out === void 0) { out = new Uint8Array(bitLength / 8); }\n if (offset === void 0) { offset = 0; }\n // TODO(dchest): implement support for bitLengths non-divisible by 8\n if (bitLength % 8 !== 0) {\n throw new Error(\"writeUintBE supports only bitLengths divisible by 8\");\n }\n if (!int_1.isSafeInteger(value)) {\n throw new Error(\"writeUintBE value must be an integer\");\n }\n var div = 1;\n for (var i = bitLength / 8 + offset - 1; i >= offset; i--) {\n out[i] = (value / div) & 0xff;\n div *= 256;\n }\n return out;\n}\nexports.writeUintBE = writeUintBE;\n/**\n * Writes a little-endian representation of bitLen-bit unsigned\n * value to array starting at offset.\n *\n * Supports bit lengths divisible by 8, up to 48.\n *\n * If byte array is not given, creates a new one.\n *\n * Returns the output byte array.\n */\nfunction writeUintLE(bitLength, value, out, offset) {\n if (out === void 0) { out = new Uint8Array(bitLength / 8); }\n if (offset === void 0) { offset = 0; }\n // TODO(dchest): implement support for bitLengths non-divisible by 8\n if (bitLength % 8 !== 0) {\n throw new Error(\"writeUintLE supports only bitLengths divisible by 8\");\n }\n if (!int_1.isSafeInteger(value)) {\n throw new Error(\"writeUintLE value must be an integer\");\n }\n var div = 1;\n for (var i = offset; i < offset + bitLength / 8; i++) {\n out[i] = (value / div) & 0xff;\n div *= 256;\n }\n return out;\n}\nexports.writeUintLE = writeUintLE;\n/**\n * Reads 4 bytes from array starting at offset as big-endian\n * 32-bit floating-point number and returns it.\n */\nfunction readFloat32BE(array, offset) {\n if (offset === void 0) { offset = 0; }\n var view = new DataView(array.buffer, array.byteOffset, array.byteLength);\n return view.getFloat32(offset);\n}\nexports.readFloat32BE = readFloat32BE;\n/**\n * Reads 4 bytes from array starting at offset as little-endian\n * 32-bit floating-point number and returns it.\n */\nfunction readFloat32LE(array, offset) {\n if (offset === void 0) { offset = 0; }\n var view = new DataView(array.buffer, array.byteOffset, array.byteLength);\n return view.getFloat32(offset, true);\n}\nexports.readFloat32LE = readFloat32LE;\n/**\n * Reads 8 bytes from array starting at offset as big-endian\n * 64-bit floating-point number (\"double\") and returns it.\n */\nfunction readFloat64BE(array, offset) {\n if (offset === void 0) { offset = 0; }\n var view = new DataView(array.buffer, array.byteOffset, array.byteLength);\n return view.getFloat64(offset);\n}\nexports.readFloat64BE = readFloat64BE;\n/**\n * Reads 8 bytes from array starting at offset as little-endian\n * 64-bit floating-point number (\"double\") and returns it.\n */\nfunction readFloat64LE(array, offset) {\n if (offset === void 0) { offset = 0; }\n var view = new DataView(array.buffer, array.byteOffset, array.byteLength);\n return view.getFloat64(offset, true);\n}\nexports.readFloat64LE = readFloat64LE;\n/**\n * Writes 4-byte big-endian floating-point representation of value\n * to byte array starting at offset.\n *\n * If byte array is not given, creates a new 4-byte one.\n *\n * Returns the output byte array.\n */\nfunction writeFloat32BE(value, out, offset) {\n if (out === void 0) { out = new Uint8Array(4); }\n if (offset === void 0) { offset = 0; }\n var view = new DataView(out.buffer, out.byteOffset, out.byteLength);\n view.setFloat32(offset, value);\n return out;\n}\nexports.writeFloat32BE = writeFloat32BE;\n/**\n * Writes 4-byte little-endian floating-point representation of value\n * to byte array starting at offset.\n *\n * If byte array is not given, creates a new 4-byte one.\n *\n * Returns the output byte array.\n */\nfunction writeFloat32LE(value, out, offset) {\n if (out === void 0) { out = new Uint8Array(4); }\n if (offset === void 0) { offset = 0; }\n var view = new DataView(out.buffer, out.byteOffset, out.byteLength);\n view.setFloat32(offset, value, true);\n return out;\n}\nexports.writeFloat32LE = writeFloat32LE;\n/**\n * Writes 8-byte big-endian floating-point representation of value\n * to byte array starting at offset.\n *\n * If byte array is not given, creates a new 8-byte one.\n *\n * Returns the output byte array.\n */\nfunction writeFloat64BE(value, out, offset) {\n if (out === void 0) { out = new Uint8Array(8); }\n if (offset === void 0) { offset = 0; }\n var view = new DataView(out.buffer, out.byteOffset, out.byteLength);\n view.setFloat64(offset, value);\n return out;\n}\nexports.writeFloat64BE = writeFloat64BE;\n/**\n * Writes 8-byte little-endian floating-point representation of value\n * to byte array starting at offset.\n *\n * If byte array is not given, creates a new 8-byte one.\n *\n * Returns the output byte array.\n */\nfunction writeFloat64LE(value, out, offset) {\n if (out === void 0) { out = new Uint8Array(8); }\n if (offset === void 0) { offset = 0; }\n var view = new DataView(out.buffer, out.byteOffset, out.byteLength);\n view.setFloat64(offset, value, true);\n return out;\n}\nexports.writeFloat64LE = writeFloat64LE;\n//# sourceMappingURL=binary.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Sets all values in the given array to zero and returns it.\n *\n * The fact that it sets bytes to zero can be relied on.\n *\n * There is no guarantee that this function makes data disappear from memory,\n * as runtime implementation can, for example, have copying garbage collector\n * that will make copies of sensitive data before we wipe it. Or that an\n * operating system will write our data to swap or sleep image. Another thing\n * is that an optimizing compiler can remove calls to this function or make it\n * no-op. There's nothing we can do with it, so we just do our best and hope\n * that everything will be okay and good will triumph over evil.\n */\nfunction wipe(array) {\n // Right now it's similar to array.fill(0). If it turns\n // out that runtimes optimize this call away, maybe\n // we can try something else.\n for (var i = 0; i < array.length; i++) {\n array[i] = 0;\n }\n return array;\n}\nexports.wipe = wipe;\n//# sourceMappingURL=wipe.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar binary_1 = require(\"@stablelib/binary\");\nvar wipe_1 = require(\"@stablelib/wipe\");\nexports.DIGEST_LENGTH = 32;\nexports.BLOCK_SIZE = 64;\n/**\n * SHA2-256 cryptographic hash algorithm.\n */\nvar SHA256 = /** @class */ (function () {\n function SHA256() {\n /** Length of hash output */\n this.digestLength = exports.DIGEST_LENGTH;\n /** Block size */\n this.blockSize = exports.BLOCK_SIZE;\n // Note: Int32Array is used instead of Uint32Array for performance reasons.\n this._state = new Int32Array(8); // hash state\n this._temp = new Int32Array(64); // temporary state\n this._buffer = new Uint8Array(128); // buffer for data to hash\n this._bufferLength = 0; // number of bytes in buffer\n this._bytesHashed = 0; // number of total bytes hashed\n this._finished = false; // indicates whether the hash was finalized\n this.reset();\n }\n SHA256.prototype._initState = function () {\n this._state[0] = 0x6a09e667;\n this._state[1] = 0xbb67ae85;\n this._state[2] = 0x3c6ef372;\n this._state[3] = 0xa54ff53a;\n this._state[4] = 0x510e527f;\n this._state[5] = 0x9b05688c;\n this._state[6] = 0x1f83d9ab;\n this._state[7] = 0x5be0cd19;\n };\n /**\n * Resets hash state making it possible\n * to re-use this instance to hash other data.\n */\n SHA256.prototype.reset = function () {\n this._initState();\n this._bufferLength = 0;\n this._bytesHashed = 0;\n this._finished = false;\n return this;\n };\n /**\n * Cleans internal buffers and resets hash state.\n */\n SHA256.prototype.clean = function () {\n wipe_1.wipe(this._buffer);\n wipe_1.wipe(this._temp);\n this.reset();\n };\n /**\n * Updates hash state with the given data.\n *\n * Throws error when trying to update already finalized hash:\n * instance must be reset to update it again.\n */\n SHA256.prototype.update = function (data, dataLength) {\n if (dataLength === void 0) { dataLength = data.length; }\n if (this._finished) {\n throw new Error(\"SHA256: can't update because hash was finished.\");\n }\n var dataPos = 0;\n this._bytesHashed += dataLength;\n if (this._bufferLength > 0) {\n while (this._bufferLength < this.blockSize && dataLength > 0) {\n this._buffer[this._bufferLength++] = data[dataPos++];\n dataLength--;\n }\n if (this._bufferLength === this.blockSize) {\n hashBlocks(this._temp, this._state, this._buffer, 0, this.blockSize);\n this._bufferLength = 0;\n }\n }\n if (dataLength >= this.blockSize) {\n dataPos = hashBlocks(this._temp, this._state, data, dataPos, dataLength);\n dataLength %= this.blockSize;\n }\n while (dataLength > 0) {\n this._buffer[this._bufferLength++] = data[dataPos++];\n dataLength--;\n }\n return this;\n };\n /**\n * Finalizes hash state and puts hash into out.\n * If hash was already finalized, puts the same value.\n */\n SHA256.prototype.finish = function (out) {\n if (!this._finished) {\n var bytesHashed = this._bytesHashed;\n var left = this._bufferLength;\n var bitLenHi = (bytesHashed / 0x20000000) | 0;\n var bitLenLo = bytesHashed << 3;\n var padLength = (bytesHashed % 64 < 56) ? 64 : 128;\n this._buffer[left] = 0x80;\n for (var i = left + 1; i < padLength - 8; i++) {\n this._buffer[i] = 0;\n }\n binary_1.writeUint32BE(bitLenHi, this._buffer, padLength - 8);\n binary_1.writeUint32BE(bitLenLo, this._buffer, padLength - 4);\n hashBlocks(this._temp, this._state, this._buffer, 0, padLength);\n this._finished = true;\n }\n for (var i = 0; i < this.digestLength / 4; i++) {\n binary_1.writeUint32BE(this._state[i], out, i * 4);\n }\n return this;\n };\n /**\n * Returns the final hash digest.\n */\n SHA256.prototype.digest = function () {\n var out = new Uint8Array(this.digestLength);\n this.finish(out);\n return out;\n };\n /**\n * Function useful for HMAC/PBKDF2 optimization.\n * Returns hash state to be used with restoreState().\n * Only chain value is saved, not buffers or other\n * state variables.\n */\n SHA256.prototype.saveState = function () {\n if (this._finished) {\n throw new Error(\"SHA256: cannot save finished state\");\n }\n return {\n state: new Int32Array(this._state),\n buffer: this._bufferLength > 0 ? new Uint8Array(this._buffer) : undefined,\n bufferLength: this._bufferLength,\n bytesHashed: this._bytesHashed\n };\n };\n /**\n * Function useful for HMAC/PBKDF2 optimization.\n * Restores state saved by saveState() and sets bytesHashed\n * to the given value.\n */\n SHA256.prototype.restoreState = function (savedState) {\n this._state.set(savedState.state);\n this._bufferLength = savedState.bufferLength;\n if (savedState.buffer) {\n this._buffer.set(savedState.buffer);\n }\n this._bytesHashed = savedState.bytesHashed;\n this._finished = false;\n return this;\n };\n /**\n * Cleans state returned by saveState().\n */\n SHA256.prototype.cleanSavedState = function (savedState) {\n wipe_1.wipe(savedState.state);\n if (savedState.buffer) {\n wipe_1.wipe(savedState.buffer);\n }\n savedState.bufferLength = 0;\n savedState.bytesHashed = 0;\n };\n return SHA256;\n}());\nexports.SHA256 = SHA256;\n// Constants\nvar K = new Int32Array([\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b,\n 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01,\n 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7,\n 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152,\n 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147,\n 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc,\n 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819,\n 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08,\n 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f,\n 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n]);\nfunction hashBlocks(w, v, p, pos, len) {\n while (len >= 64) {\n var a = v[0];\n var b = v[1];\n var c = v[2];\n var d = v[3];\n var e = v[4];\n var f = v[5];\n var g = v[6];\n var h = v[7];\n for (var i = 0; i < 16; i++) {\n var j = pos + i * 4;\n w[i] = binary_1.readUint32BE(p, j);\n }\n for (var i = 16; i < 64; i++) {\n var u = w[i - 2];\n var t1 = (u >>> 17 | u << (32 - 17)) ^ (u >>> 19 | u << (32 - 19)) ^ (u >>> 10);\n u = w[i - 15];\n var t2 = (u >>> 7 | u << (32 - 7)) ^ (u >>> 18 | u << (32 - 18)) ^ (u >>> 3);\n w[i] = (t1 + w[i - 7] | 0) + (t2 + w[i - 16] | 0);\n }\n for (var i = 0; i < 64; i++) {\n var t1 = (((((e >>> 6 | e << (32 - 6)) ^ (e >>> 11 | e << (32 - 11)) ^\n (e >>> 25 | e << (32 - 25))) + ((e & f) ^ (~e & g))) | 0) +\n ((h + ((K[i] + w[i]) | 0)) | 0)) | 0;\n var t2 = (((a >>> 2 | a << (32 - 2)) ^ (a >>> 13 | a << (32 - 13)) ^\n (a >>> 22 | a << (32 - 22))) + ((a & b) ^ (a & c) ^ (b & c))) | 0;\n h = g;\n g = f;\n f = e;\n e = (d + t1) | 0;\n d = c;\n c = b;\n b = a;\n a = (t1 + t2) | 0;\n }\n v[0] += a;\n v[1] += b;\n v[2] += c;\n v[3] += d;\n v[4] += e;\n v[5] += f;\n v[6] += g;\n v[7] += h;\n pos += 64;\n len -= 64;\n }\n return pos;\n}\nfunction hash(data) {\n var h = new SHA256();\n h.update(data);\n var digest = h.digest();\n h.clean();\n return digest;\n}\nexports.hash = hash;\n//# sourceMappingURL=sha256.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.decode = exports.encodedLength = exports.encode = void 0;\n/**\n * Package utf8 implements UTF-8 encoding and decoding.\n */\nconst INVALID_UTF16 = \"utf8: invalid string\";\nconst INVALID_UTF8 = \"utf8: invalid source encoding\";\n/**\n * Encodes the given string into UTF-8 byte array.\n * Throws if the source string has invalid UTF-16 encoding.\n */\nfunction encode(s) {\n // Calculate result length and allocate output array.\n // encodedLength() validates string and throws errors,\n // so we don't need repeat validation here.\n const arr = new Uint8Array(encodedLength(s));\n let pos = 0;\n for (let i = 0; i < s.length; i++) {\n let c = s.charCodeAt(i);\n if (c >= 0xd800 && c <= 0xdbff) {\n c = ((c - 0xd800) << 10) + (s.charCodeAt(++i) - 0xdc00) + 0x10000;\n }\n if (c < 0x80) {\n arr[pos++] = c;\n }\n else if (c < 0x800) {\n arr[pos++] = 0xc0 | (c >> 6);\n arr[pos++] = 0x80 | (c & 0x3f);\n }\n else if (c < 0x10000) {\n arr[pos++] = 0xe0 | (c >> 12);\n arr[pos++] = 0x80 | ((c >> 6) & 0x3f);\n arr[pos++] = 0x80 | (c & 0x3f);\n }\n else {\n arr[pos++] = 0xf0 | (c >> 18);\n arr[pos++] = 0x80 | ((c >> 12) & 0x3f);\n arr[pos++] = 0x80 | ((c >> 6) & 0x3f);\n arr[pos++] = 0x80 | (c & 0x3f);\n }\n }\n return arr;\n}\nexports.encode = encode;\n/**\n * Returns the number of bytes required to encode the given string into UTF-8.\n * Throws if the source string has invalid UTF-16 encoding.\n */\nfunction encodedLength(s) {\n let result = 0;\n for (let i = 0; i < s.length; i++) {\n let c = s.charCodeAt(i);\n if (c >= 0xd800 && c <= 0xdbff) {\n // surrogate pair\n if (i === s.length - 1) {\n throw new Error(INVALID_UTF16);\n }\n i++;\n const c2 = s.charCodeAt(i);\n if (c2 < 0xdc00 || c2 > 0xdfff) {\n throw new Error(INVALID_UTF16);\n }\n c = ((c - 0xd800) << 10) + (c2 - 0xdc00) + 0x10000;\n }\n if (c < 0x80) {\n result += 1;\n }\n else if (c < 0x800) {\n result += 2;\n }\n else if (c < 0x10000) {\n result += 3;\n }\n else {\n result += 4;\n }\n }\n return result;\n}\nexports.encodedLength = encodedLength;\n/**\n * Decodes the given byte array from UTF-8 into a string.\n * Throws if encoding is invalid.\n */\nfunction decode(arr) {\n const chars = [];\n for (let i = 0; i < arr.length; i++) {\n let b = arr[i];\n if (b & 0x80) {\n let min;\n if (b < 0xe0) {\n // Need 1 more byte.\n if (i >= arr.length) {\n throw new Error(INVALID_UTF8);\n }\n const n1 = arr[++i];\n if ((n1 & 0xc0) !== 0x80) {\n throw new Error(INVALID_UTF8);\n }\n b = (b & 0x1f) << 6 | (n1 & 0x3f);\n min = 0x80;\n }\n else if (b < 0xf0) {\n // Need 2 more bytes.\n if (i >= arr.length - 1) {\n throw new Error(INVALID_UTF8);\n }\n const n1 = arr[++i];\n const n2 = arr[++i];\n if ((n1 & 0xc0) !== 0x80 || (n2 & 0xc0) !== 0x80) {\n throw new Error(INVALID_UTF8);\n }\n b = (b & 0x0f) << 12 | (n1 & 0x3f) << 6 | (n2 & 0x3f);\n min = 0x800;\n }\n else if (b < 0xf8) {\n // Need 3 more bytes.\n if (i >= arr.length - 2) {\n throw new Error(INVALID_UTF8);\n }\n const n1 = arr[++i];\n const n2 = arr[++i];\n const n3 = arr[++i];\n if ((n1 & 0xc0) !== 0x80 || (n2 & 0xc0) !== 0x80 || (n3 & 0xc0) !== 0x80) {\n throw new Error(INVALID_UTF8);\n }\n b = (b & 0x0f) << 18 | (n1 & 0x3f) << 12 | (n2 & 0x3f) << 6 | (n3 & 0x3f);\n min = 0x10000;\n }\n else {\n throw new Error(INVALID_UTF8);\n }\n if (b < min || (b >= 0xd800 && b <= 0xdfff)) {\n throw new Error(INVALID_UTF8);\n }\n if (b >= 0x10000) {\n // Surrogate pair.\n if (b > 0x10ffff) {\n throw new Error(INVALID_UTF8);\n }\n b -= 0x10000;\n chars.push(String.fromCharCode(0xd800 | (b >> 10)));\n b = 0xdc00 | (b & 0x3ff);\n }\n }\n chars.push(String.fromCharCode(b));\n }\n return chars.join(\"\");\n}\nexports.decode = decode;\n//# sourceMappingURL=utf8.js.map","// base-x encoding / decoding\n// Copyright (c) 2018 base-x contributors\n// Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)\n// Distributed under the MIT software license, see the accompanying\n// file LICENSE or http://www.opensource.org/licenses/mit-license.php.\nfunction base (ALPHABET) {\n if (ALPHABET.length >= 255) { throw new TypeError('Alphabet too long') }\n const BASE_MAP = new Uint8Array(256)\n for (let j = 0; j < BASE_MAP.length; j++) {\n BASE_MAP[j] = 255\n }\n for (let i = 0; i < ALPHABET.length; i++) {\n const x = ALPHABET.charAt(i)\n const xc = x.charCodeAt(0)\n if (BASE_MAP[xc] !== 255) { throw new TypeError(x + ' is ambiguous') }\n BASE_MAP[xc] = i\n }\n const BASE = ALPHABET.length\n const LEADER = ALPHABET.charAt(0)\n const FACTOR = Math.log(BASE) / Math.log(256) // log(BASE) / log(256), rounded up\n const iFACTOR = Math.log(256) / Math.log(BASE) // log(256) / log(BASE), rounded up\n function encode (source) {\n // eslint-disable-next-line no-empty\n if (source instanceof Uint8Array) { } else if (ArrayBuffer.isView(source)) {\n source = new Uint8Array(source.buffer, source.byteOffset, source.byteLength)\n } else if (Array.isArray(source)) {\n source = Uint8Array.from(source)\n }\n if (!(source instanceof Uint8Array)) { throw new TypeError('Expected Uint8Array') }\n if (source.length === 0) { return '' }\n // Skip & count leading zeroes.\n let zeroes = 0\n let length = 0\n let pbegin = 0\n const pend = source.length\n while (pbegin !== pend && source[pbegin] === 0) {\n pbegin++\n zeroes++\n }\n // Allocate enough space in big-endian base58 representation.\n const size = ((pend - pbegin) * iFACTOR + 1) >>> 0\n const b58 = new Uint8Array(size)\n // Process the bytes.\n while (pbegin !== pend) {\n let carry = source[pbegin]\n // Apply \"b58 = b58 * 256 + ch\".\n let i = 0\n for (let it1 = size - 1; (carry !== 0 || i < length) && (it1 !== -1); it1--, i++) {\n carry += (256 * b58[it1]) >>> 0\n b58[it1] = (carry % BASE) >>> 0\n carry = (carry / BASE) >>> 0\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i\n pbegin++\n }\n // Skip leading zeroes in base58 result.\n let it2 = size - length\n while (it2 !== size && b58[it2] === 0) {\n it2++\n }\n // Translate the result into a string.\n let str = LEADER.repeat(zeroes)\n for (; it2 < size; ++it2) { str += ALPHABET.charAt(b58[it2]) }\n return str\n }\n function decodeUnsafe (source) {\n if (typeof source !== 'string') { throw new TypeError('Expected String') }\n if (source.length === 0) { return new Uint8Array() }\n let psz = 0\n // Skip and count leading '1's.\n let zeroes = 0\n let length = 0\n while (source[psz] === LEADER) {\n zeroes++\n psz++\n }\n // Allocate enough space in big-endian base256 representation.\n const size = (((source.length - psz) * FACTOR) + 1) >>> 0 // log(58) / log(256), rounded up.\n const b256 = new Uint8Array(size)\n // Process the characters.\n while (source[psz]) {\n // Decode character\n let carry = BASE_MAP[source.charCodeAt(psz)]\n // Invalid character\n if (carry === 255) { return }\n let i = 0\n for (let it3 = size - 1; (carry !== 0 || i < length) && (it3 !== -1); it3--, i++) {\n carry += (BASE * b256[it3]) >>> 0\n b256[it3] = (carry % 256) >>> 0\n carry = (carry / 256) >>> 0\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i\n psz++\n }\n // Skip leading zeroes in b256.\n let it4 = size - length\n while (it4 !== size && b256[it4] === 0) {\n it4++\n }\n const vch = new Uint8Array(zeroes + (size - it4))\n let j = zeroes\n while (it4 !== size) {\n vch[j++] = b256[it4++]\n }\n return vch\n }\n function decode (string) {\n const buffer = decodeUnsafe(string)\n if (buffer) { return buffer }\n throw new Error('Non-base' + BASE + ' character')\n }\n return {\n encode,\n decodeUnsafe,\n decode\n }\n}\nexport default base\n","import basex from 'base-x';\nvar ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';\nexport default basex(ALPHABET);\n","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Package base64 implements Base64 encoding and decoding.\n */\n// Invalid character used in decoding to indicate\n// that the character to decode is out of range of\n// alphabet and cannot be decoded.\nvar INVALID_BYTE = 256;\n/**\n * Implements standard Base64 encoding.\n *\n * Operates in constant time.\n */\nvar Coder = /** @class */ (function () {\n // TODO(dchest): methods to encode chunk-by-chunk.\n function Coder(_paddingCharacter) {\n if (_paddingCharacter === void 0) { _paddingCharacter = \"=\"; }\n this._paddingCharacter = _paddingCharacter;\n }\n Coder.prototype.encodedLength = function (length) {\n if (!this._paddingCharacter) {\n return (length * 8 + 5) / 6 | 0;\n }\n return (length + 2) / 3 * 4 | 0;\n };\n Coder.prototype.encode = function (data) {\n var out = \"\";\n var i = 0;\n for (; i < data.length - 2; i += 3) {\n var c = (data[i] << 16) | (data[i + 1] << 8) | (data[i + 2]);\n out += this._encodeByte((c >>> 3 * 6) & 63);\n out += this._encodeByte((c >>> 2 * 6) & 63);\n out += this._encodeByte((c >>> 1 * 6) & 63);\n out += this._encodeByte((c >>> 0 * 6) & 63);\n }\n var left = data.length - i;\n if (left > 0) {\n var c = (data[i] << 16) | (left === 2 ? data[i + 1] << 8 : 0);\n out += this._encodeByte((c >>> 3 * 6) & 63);\n out += this._encodeByte((c >>> 2 * 6) & 63);\n if (left === 2) {\n out += this._encodeByte((c >>> 1 * 6) & 63);\n }\n else {\n out += this._paddingCharacter || \"\";\n }\n out += this._paddingCharacter || \"\";\n }\n return out;\n };\n Coder.prototype.maxDecodedLength = function (length) {\n if (!this._paddingCharacter) {\n return (length * 6 + 7) / 8 | 0;\n }\n return length / 4 * 3 | 0;\n };\n Coder.prototype.decodedLength = function (s) {\n return this.maxDecodedLength(s.length - this._getPaddingLength(s));\n };\n Coder.prototype.decode = function (s) {\n if (s.length === 0) {\n return new Uint8Array(0);\n }\n var paddingLength = this._getPaddingLength(s);\n var length = s.length - paddingLength;\n var out = new Uint8Array(this.maxDecodedLength(length));\n var op = 0;\n var i = 0;\n var haveBad = 0;\n var v0 = 0, v1 = 0, v2 = 0, v3 = 0;\n for (; i < length - 4; i += 4) {\n v0 = this._decodeChar(s.charCodeAt(i + 0));\n v1 = this._decodeChar(s.charCodeAt(i + 1));\n v2 = this._decodeChar(s.charCodeAt(i + 2));\n v3 = this._decodeChar(s.charCodeAt(i + 3));\n out[op++] = (v0 << 2) | (v1 >>> 4);\n out[op++] = (v1 << 4) | (v2 >>> 2);\n out[op++] = (v2 << 6) | v3;\n haveBad |= v0 & INVALID_BYTE;\n haveBad |= v1 & INVALID_BYTE;\n haveBad |= v2 & INVALID_BYTE;\n haveBad |= v3 & INVALID_BYTE;\n }\n if (i < length - 1) {\n v0 = this._decodeChar(s.charCodeAt(i));\n v1 = this._decodeChar(s.charCodeAt(i + 1));\n out[op++] = (v0 << 2) | (v1 >>> 4);\n haveBad |= v0 & INVALID_BYTE;\n haveBad |= v1 & INVALID_BYTE;\n }\n if (i < length - 2) {\n v2 = this._decodeChar(s.charCodeAt(i + 2));\n out[op++] = (v1 << 4) | (v2 >>> 2);\n haveBad |= v2 & INVALID_BYTE;\n }\n if (i < length - 3) {\n v3 = this._decodeChar(s.charCodeAt(i + 3));\n out[op++] = (v2 << 6) | v3;\n haveBad |= v3 & INVALID_BYTE;\n }\n if (haveBad !== 0) {\n throw new Error(\"Base64Coder: incorrect characters for decoding\");\n }\n return out;\n };\n // Standard encoding have the following encoded/decoded ranges,\n // which we need to convert between.\n //\n // ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789 + /\n // Index: 0 - 25 26 - 51 52 - 61 62 63\n // ASCII: 65 - 90 97 - 122 48 - 57 43 47\n //\n // Encode 6 bits in b into a new character.\n Coder.prototype._encodeByte = function (b) {\n // Encoding uses constant time operations as follows:\n //\n // 1. Define comparison of A with B using (A - B) >>> 8:\n // if A > B, then result is positive integer\n // if A <= B, then result is 0\n //\n // 2. Define selection of C or 0 using bitwise AND: X & C:\n // if X == 0, then result is 0\n // if X != 0, then result is C\n //\n // 3. Start with the smallest comparison (b >= 0), which is always\n // true, so set the result to the starting ASCII value (65).\n //\n // 4. Continue comparing b to higher ASCII values, and selecting\n // zero if comparison isn't true, otherwise selecting a value\n // to add to result, which:\n //\n // a) undoes the previous addition\n // b) provides new value to add\n //\n var result = b;\n // b >= 0\n result += 65;\n // b > 25\n result += ((25 - b) >>> 8) & ((0 - 65) - 26 + 97);\n // b > 51\n result += ((51 - b) >>> 8) & ((26 - 97) - 52 + 48);\n // b > 61\n result += ((61 - b) >>> 8) & ((52 - 48) - 62 + 43);\n // b > 62\n result += ((62 - b) >>> 8) & ((62 - 43) - 63 + 47);\n return String.fromCharCode(result);\n };\n // Decode a character code into a byte.\n // Must return 256 if character is out of alphabet range.\n Coder.prototype._decodeChar = function (c) {\n // Decoding works similar to encoding: using the same comparison\n // function, but now it works on ranges: result is always incremented\n // by value, but this value becomes zero if the range is not\n // satisfied.\n //\n // Decoding starts with invalid value, 256, which is then\n // subtracted when the range is satisfied. If none of the ranges\n // apply, the function returns 256, which is then checked by\n // the caller to throw error.\n var result = INVALID_BYTE; // start with invalid character\n // c == 43 (c > 42 and c < 44)\n result += (((42 - c) & (c - 44)) >>> 8) & (-INVALID_BYTE + c - 43 + 62);\n // c == 47 (c > 46 and c < 48)\n result += (((46 - c) & (c - 48)) >>> 8) & (-INVALID_BYTE + c - 47 + 63);\n // c > 47 and c < 58\n result += (((47 - c) & (c - 58)) >>> 8) & (-INVALID_BYTE + c - 48 + 52);\n // c > 64 and c < 91\n result += (((64 - c) & (c - 91)) >>> 8) & (-INVALID_BYTE + c - 65 + 0);\n // c > 96 and c < 123\n result += (((96 - c) & (c - 123)) >>> 8) & (-INVALID_BYTE + c - 97 + 26);\n return result;\n };\n Coder.prototype._getPaddingLength = function (s) {\n var paddingLength = 0;\n if (this._paddingCharacter) {\n for (var i = s.length - 1; i >= 0; i--) {\n if (s[i] !== this._paddingCharacter) {\n break;\n }\n paddingLength++;\n }\n if (s.length < 4 || paddingLength > 2) {\n throw new Error(\"Base64Coder: incorrect padding\");\n }\n }\n return paddingLength;\n };\n return Coder;\n}());\nexports.Coder = Coder;\nvar stdCoder = new Coder();\nfunction encode(data) {\n return stdCoder.encode(data);\n}\nexports.encode = encode;\nfunction decode(s) {\n return stdCoder.decode(s);\n}\nexports.decode = decode;\n/**\n * Implements URL-safe Base64 encoding.\n * (Same as Base64, but '+' is replaced with '-', and '/' with '_').\n *\n * Operates in constant time.\n */\nvar URLSafeCoder = /** @class */ (function (_super) {\n __extends(URLSafeCoder, _super);\n function URLSafeCoder() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n // URL-safe encoding have the following encoded/decoded ranges:\n //\n // ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789 - _\n // Index: 0 - 25 26 - 51 52 - 61 62 63\n // ASCII: 65 - 90 97 - 122 48 - 57 45 95\n //\n URLSafeCoder.prototype._encodeByte = function (b) {\n var result = b;\n // b >= 0\n result += 65;\n // b > 25\n result += ((25 - b) >>> 8) & ((0 - 65) - 26 + 97);\n // b > 51\n result += ((51 - b) >>> 8) & ((26 - 97) - 52 + 48);\n // b > 61\n result += ((61 - b) >>> 8) & ((52 - 48) - 62 + 45);\n // b > 62\n result += ((62 - b) >>> 8) & ((62 - 45) - 63 + 95);\n return String.fromCharCode(result);\n };\n URLSafeCoder.prototype._decodeChar = function (c) {\n var result = INVALID_BYTE;\n // c == 45 (c > 44 and c < 46)\n result += (((44 - c) & (c - 46)) >>> 8) & (-INVALID_BYTE + c - 45 + 62);\n // c == 95 (c > 94 and c < 96)\n result += (((94 - c) & (c - 96)) >>> 8) & (-INVALID_BYTE + c - 95 + 63);\n // c > 47 and c < 58\n result += (((47 - c) & (c - 58)) >>> 8) & (-INVALID_BYTE + c - 48 + 52);\n // c > 64 and c < 91\n result += (((64 - c) & (c - 91)) >>> 8) & (-INVALID_BYTE + c - 65 + 0);\n // c > 96 and c < 123\n result += (((96 - c) & (c - 123)) >>> 8) & (-INVALID_BYTE + c - 97 + 26);\n return result;\n };\n return URLSafeCoder;\n}(Coder));\nexports.URLSafeCoder = URLSafeCoder;\nvar urlSafeCoder = new URLSafeCoder();\nfunction encodeURLSafe(data) {\n return urlSafeCoder.encode(data);\n}\nexports.encodeURLSafe = encodeURLSafe;\nfunction decodeURLSafe(s) {\n return urlSafeCoder.decode(s);\n}\nexports.decodeURLSafe = decodeURLSafe;\nexports.encodedLength = function (length) {\n return stdCoder.encodedLength(length);\n};\nexports.maxDecodedLength = function (length) {\n return stdCoder.maxDecodedLength(length);\n};\nexports.decodedLength = function (s) {\n return stdCoder.decodedLength(s);\n};\n//# sourceMappingURL=base64.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction concat() {\n // Calculate sum of lengths of all arrays.\n var totalLength = 0;\n for (var i = 0; i < arguments.length; i++) {\n totalLength += arguments[i].length;\n }\n // Allocate new array of calculated length.\n var result = new Uint8Array(totalLength);\n // Copy all arrays into result.\n var offset = 0;\n for (var i = 0; i < arguments.length; i++) {\n var arg = arguments[i];\n result.set(arg, offset);\n offset += arg.length;\n }\n return result;\n}\nexports.concat = concat;\n//# sourceMappingURL=bytes.js.map","export var integers = ['u8', 'u16', 'u32', 'u64', 'u128', 'i8', 'i16', 'i32', 'i64', 'i128', 'f32', 'f64'];\n","var EncodeBuffer = /** @class */ (function () {\n function EncodeBuffer() {\n this.offset = 0;\n this.buffer_size = 256;\n this.buffer = new ArrayBuffer(this.buffer_size);\n this.view = new DataView(this.buffer);\n }\n EncodeBuffer.prototype.resize_if_necessary = function (needed_space) {\n if (this.buffer_size - this.offset < needed_space) {\n this.buffer_size = Math.max(this.buffer_size * 2, this.buffer_size + needed_space);\n var new_buffer = new ArrayBuffer(this.buffer_size);\n new Uint8Array(new_buffer).set(new Uint8Array(this.buffer));\n this.buffer = new_buffer;\n this.view = new DataView(new_buffer);\n }\n };\n EncodeBuffer.prototype.get_used_buffer = function () {\n return new Uint8Array(this.buffer).slice(0, this.offset);\n };\n EncodeBuffer.prototype.store_value = function (value, type) {\n var bSize = type.substring(1);\n var size = parseInt(bSize) / 8;\n this.resize_if_necessary(size);\n var toCall = type[0] === 'f' ? \"setFloat\".concat(bSize) : type[0] === 'i' ? \"setInt\".concat(bSize) : \"setUint\".concat(bSize);\n this.view[toCall](this.offset, value, true);\n this.offset += size;\n };\n EncodeBuffer.prototype.store_bytes = function (from) {\n this.resize_if_necessary(from.length);\n new Uint8Array(this.buffer).set(new Uint8Array(from), this.offset);\n this.offset += from.length;\n };\n return EncodeBuffer;\n}());\nexport { EncodeBuffer };\nvar DecodeBuffer = /** @class */ (function () {\n function DecodeBuffer(buf) {\n this.offset = 0;\n this.buffer_size = buf.length;\n this.buffer = new ArrayBuffer(buf.length);\n new Uint8Array(this.buffer).set(buf);\n this.view = new DataView(this.buffer);\n }\n DecodeBuffer.prototype.assert_enough_buffer = function (size) {\n if (this.offset + size > this.buffer.byteLength) {\n throw new Error('Error in schema, the buffer is smaller than expected');\n }\n };\n DecodeBuffer.prototype.consume_value = function (type) {\n var bSize = type.substring(1);\n var size = parseInt(bSize) / 8;\n this.assert_enough_buffer(size);\n var toCall = type[0] === 'f' ? \"getFloat\".concat(bSize) : type[0] === 'i' ? \"getInt\".concat(bSize) : \"getUint\".concat(bSize);\n var ret = this.view[toCall](this.offset, true);\n this.offset += size;\n return ret;\n };\n DecodeBuffer.prototype.consume_bytes = function (size) {\n this.assert_enough_buffer(size);\n var ret = this.buffer.slice(this.offset, this.offset + size);\n this.offset += size;\n return ret;\n };\n return DecodeBuffer;\n}());\nexport { DecodeBuffer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { integers } from './types.js';\nexport function isArrayLike(value) {\n // source: https://stackoverflow.com/questions/24048547/checking-if-an-object-is-array-like\n return (Array.isArray(value) ||\n (!!value &&\n typeof value === 'object' &&\n 'length' in value &&\n typeof (value.length) === 'number' &&\n (value.length === 0 ||\n (value.length > 0 &&\n (value.length - 1) in value))));\n}\nexport function expect_type(value, type, fieldPath) {\n if (typeof (value) !== type) {\n throw new Error(\"Expected \".concat(type, \" not \").concat(typeof (value), \"(\").concat(value, \") at \").concat(fieldPath.join('.')));\n }\n}\nexport function expect_bigint(value, fieldPath) {\n var basicType = ['number', 'string', 'bigint', 'boolean'].includes(typeof (value));\n var strObject = typeof (value) === 'object' && value !== null && 'toString' in value;\n if (!basicType && !strObject) {\n throw new Error(\"Expected bigint, number, boolean or string not \".concat(typeof (value), \"(\").concat(value, \") at \").concat(fieldPath.join('.')));\n }\n}\nexport function expect_same_size(length, expected, fieldPath) {\n if (length !== expected) {\n throw new Error(\"Array length \".concat(length, \" does not match schema length \").concat(expected, \" at \").concat(fieldPath.join('.')));\n }\n}\nexport function expect_enum(value, fieldPath) {\n if (typeof (value) !== 'object' || value === null) {\n throw new Error(\"Expected object not \".concat(typeof (value), \"(\").concat(value, \") at \").concat(fieldPath.join('.')));\n }\n}\n// Validate Schema\nvar VALID_STRING_TYPES = integers.concat(['bool', 'string']);\nvar VALID_OBJECT_KEYS = ['option', 'enum', 'array', 'set', 'map', 'struct'];\nvar ErrorSchema = /** @class */ (function (_super) {\n __extends(ErrorSchema, _super);\n function ErrorSchema(schema, expected) {\n var message = \"Invalid schema: \".concat(JSON.stringify(schema), \" expected \").concat(expected);\n return _super.call(this, message) || this;\n }\n return ErrorSchema;\n}(Error));\nexport { ErrorSchema };\nexport function validate_schema(schema) {\n if (typeof (schema) === 'string' && VALID_STRING_TYPES.includes(schema)) {\n return;\n }\n if (schema && typeof (schema) === 'object') {\n var keys = Object.keys(schema);\n if (keys.length === 1 && VALID_OBJECT_KEYS.includes(keys[0])) {\n var key = keys[0];\n if (key === 'option')\n return validate_schema(schema[key]);\n if (key === 'enum')\n return validate_enum_schema(schema[key]);\n if (key === 'array')\n return validate_array_schema(schema[key]);\n if (key === 'set')\n return validate_schema(schema[key]);\n if (key === 'map')\n return validate_map_schema(schema[key]);\n if (key === 'struct')\n return validate_struct_schema(schema[key]);\n }\n }\n throw new ErrorSchema(schema, VALID_OBJECT_KEYS.join(', ') + ' or ' + VALID_STRING_TYPES.join(', '));\n}\nfunction validate_enum_schema(schema) {\n if (!Array.isArray(schema))\n throw new ErrorSchema(schema, 'Array');\n for (var _i = 0, schema_1 = schema; _i < schema_1.length; _i++) {\n var sch = schema_1[_i];\n if (typeof sch !== 'object' || !('struct' in sch)) {\n throw new Error('Missing \"struct\" key in enum schema');\n }\n if (typeof sch.struct !== 'object' || Object.keys(sch.struct).length !== 1) {\n throw new Error('The \"struct\" in each enum must have a single key');\n }\n validate_schema({ struct: sch.struct });\n }\n}\nfunction validate_array_schema(schema) {\n if (typeof schema !== 'object')\n throw new ErrorSchema(schema, '{ type, len? }');\n if (schema.len && typeof schema.len !== 'number') {\n throw new Error(\"Invalid schema: \".concat(schema));\n }\n if ('type' in schema)\n return validate_schema(schema.type);\n throw new ErrorSchema(schema, '{ type, len? }');\n}\nfunction validate_map_schema(schema) {\n if (typeof schema === 'object' && 'key' in schema && 'value' in schema) {\n validate_schema(schema.key);\n validate_schema(schema.value);\n }\n else {\n throw new ErrorSchema(schema, '{ key, value }');\n }\n}\nfunction validate_struct_schema(schema) {\n if (typeof schema !== 'object')\n throw new ErrorSchema(schema, 'object');\n for (var key in schema) {\n validate_schema(schema[key]);\n }\n}\n","import { integers } from './types.js';\nimport { EncodeBuffer } from './buffer.js';\nimport * as utils from './utils.js';\nvar BorshSerializer = /** @class */ (function () {\n function BorshSerializer(checkTypes) {\n this.encoded = new EncodeBuffer();\n this.fieldPath = ['value'];\n this.checkTypes = checkTypes;\n }\n BorshSerializer.prototype.encode = function (value, schema) {\n this.encode_value(value, schema);\n return this.encoded.get_used_buffer();\n };\n BorshSerializer.prototype.encode_value = function (value, schema) {\n if (typeof schema === 'string') {\n if (integers.includes(schema))\n return this.encode_integer(value, schema);\n if (schema === 'string')\n return this.encode_string(value);\n if (schema === 'bool')\n return this.encode_boolean(value);\n }\n if (typeof schema === 'object') {\n if ('option' in schema)\n return this.encode_option(value, schema);\n if ('enum' in schema)\n return this.encode_enum(value, schema);\n if ('array' in schema)\n return this.encode_array(value, schema);\n if ('set' in schema)\n return this.encode_set(value, schema);\n if ('map' in schema)\n return this.encode_map(value, schema);\n if ('struct' in schema)\n return this.encode_struct(value, schema);\n }\n };\n BorshSerializer.prototype.encode_integer = function (value, schema) {\n var size = parseInt(schema.substring(1));\n if (size <= 32 || schema == 'f64') {\n this.checkTypes && utils.expect_type(value, 'number', this.fieldPath);\n this.encoded.store_value(value, schema);\n }\n else {\n this.checkTypes && utils.expect_bigint(value, this.fieldPath);\n this.encode_bigint(BigInt(value), size);\n }\n };\n BorshSerializer.prototype.encode_bigint = function (value, size) {\n var buffer_len = size / 8;\n var buffer = new Uint8Array(buffer_len);\n for (var i = 0; i < buffer_len; i++) {\n buffer[i] = Number(value & BigInt(0xff));\n value = value >> BigInt(8);\n }\n this.encoded.store_bytes(new Uint8Array(buffer));\n };\n BorshSerializer.prototype.encode_string = function (value) {\n this.checkTypes && utils.expect_type(value, 'string', this.fieldPath);\n var _value = value;\n // 4 bytes for length\n this.encoded.store_value(_value.length, 'u32');\n // string bytes\n for (var i = 0; i < _value.length; i++) {\n this.encoded.store_value(_value.charCodeAt(i), 'u8');\n }\n };\n BorshSerializer.prototype.encode_boolean = function (value) {\n this.checkTypes && utils.expect_type(value, 'boolean', this.fieldPath);\n this.encoded.store_value(value ? 1 : 0, 'u8');\n };\n BorshSerializer.prototype.encode_option = function (value, schema) {\n if (value === null || value === undefined) {\n this.encoded.store_value(0, 'u8');\n }\n else {\n this.encoded.store_value(1, 'u8');\n this.encode_value(value, schema.option);\n }\n };\n BorshSerializer.prototype.encode_enum = function (value, schema) {\n this.checkTypes && utils.expect_enum(value, this.fieldPath);\n var valueKey = Object.keys(value)[0];\n for (var i = 0; i < schema[\"enum\"].length; i++) {\n var valueSchema = schema[\"enum\"][i];\n if (valueKey === Object.keys(valueSchema.struct)[0]) {\n this.encoded.store_value(i, 'u8');\n return this.encode_struct(value, valueSchema);\n }\n }\n throw new Error(\"Enum key (\".concat(valueKey, \") not found in enum schema: \").concat(JSON.stringify(schema), \" at \").concat(this.fieldPath.join('.')));\n };\n BorshSerializer.prototype.encode_array = function (value, schema) {\n if (utils.isArrayLike(value))\n return this.encode_arraylike(value, schema);\n if (value instanceof ArrayBuffer)\n return this.encode_buffer(value, schema);\n throw new Error(\"Expected Array-like not \".concat(typeof (value), \"(\").concat(value, \") at \").concat(this.fieldPath.join('.')));\n };\n BorshSerializer.prototype.encode_arraylike = function (value, schema) {\n if (schema.array.len) {\n utils.expect_same_size(value.length, schema.array.len, this.fieldPath);\n }\n else {\n // 4 bytes for length\n this.encoded.store_value(value.length, 'u32');\n }\n // array values\n for (var i = 0; i < value.length; i++) {\n this.encode_value(value[i], schema.array.type);\n }\n };\n BorshSerializer.prototype.encode_buffer = function (value, schema) {\n if (schema.array.len) {\n utils.expect_same_size(value.byteLength, schema.array.len, this.fieldPath);\n }\n else {\n // 4 bytes for length\n this.encoded.store_value(value.byteLength, 'u32');\n }\n // array values\n this.encoded.store_bytes(new Uint8Array(value));\n };\n BorshSerializer.prototype.encode_set = function (value, schema) {\n this.checkTypes && utils.expect_type(value, 'object', this.fieldPath);\n var isSet = value instanceof Set;\n var values = isSet ? Array.from(value.values()) : Object.values(value);\n // 4 bytes for length\n this.encoded.store_value(values.length, 'u32');\n // set values\n for (var _i = 0, values_1 = values; _i < values_1.length; _i++) {\n var value_1 = values_1[_i];\n this.encode_value(value_1, schema.set);\n }\n };\n BorshSerializer.prototype.encode_map = function (value, schema) {\n this.checkTypes && utils.expect_type(value, 'object', this.fieldPath);\n var isMap = value instanceof Map;\n var keys = isMap ? Array.from(value.keys()) : Object.keys(value);\n // 4 bytes for length\n this.encoded.store_value(keys.length, 'u32');\n // store key/values\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n this.encode_value(key, schema.map.key);\n this.encode_value(isMap ? value.get(key) : value[key], schema.map.value);\n }\n };\n BorshSerializer.prototype.encode_struct = function (value, schema) {\n this.checkTypes && utils.expect_type(value, 'object', this.fieldPath);\n for (var _i = 0, _a = Object.keys(schema.struct); _i < _a.length; _i++) {\n var key = _a[_i];\n this.fieldPath.push(key);\n this.encode_value(value[key], schema.struct[key]);\n this.fieldPath.pop();\n }\n };\n return BorshSerializer;\n}());\nexport { BorshSerializer };\n","import { integers } from './types.js';\nimport { DecodeBuffer } from './buffer.js';\nvar BorshDeserializer = /** @class */ (function () {\n function BorshDeserializer(bufferArray) {\n this.buffer = new DecodeBuffer(bufferArray);\n }\n BorshDeserializer.prototype.decode = function (schema) {\n return this.decode_value(schema);\n };\n BorshDeserializer.prototype.decode_value = function (schema) {\n if (typeof schema === 'string') {\n if (integers.includes(schema))\n return this.decode_integer(schema);\n if (schema === 'string')\n return this.decode_string();\n if (schema === 'bool')\n return this.decode_boolean();\n }\n if (typeof schema === 'object') {\n if ('option' in schema)\n return this.decode_option(schema);\n if ('enum' in schema)\n return this.decode_enum(schema);\n if ('array' in schema)\n return this.decode_array(schema);\n if ('set' in schema)\n return this.decode_set(schema);\n if ('map' in schema)\n return this.decode_map(schema);\n if ('struct' in schema)\n return this.decode_struct(schema);\n }\n throw new Error(\"Unsupported type: \".concat(schema));\n };\n BorshDeserializer.prototype.decode_integer = function (schema) {\n var size = parseInt(schema.substring(1));\n if (size <= 32 || schema == 'f64') {\n return this.buffer.consume_value(schema);\n }\n return this.decode_bigint(size, schema.startsWith('i'));\n };\n BorshDeserializer.prototype.decode_bigint = function (size, signed) {\n if (signed === void 0) { signed = false; }\n var buffer_len = size / 8;\n var buffer = new Uint8Array(this.buffer.consume_bytes(buffer_len));\n var bits = buffer.reduceRight(function (r, x) { return r + x.toString(16).padStart(2, '0'); }, '');\n if (signed && buffer[buffer_len - 1]) {\n return BigInt.asIntN(size, BigInt(\"0x\".concat(bits)));\n }\n return BigInt(\"0x\".concat(bits));\n };\n BorshDeserializer.prototype.decode_string = function () {\n var len = this.decode_integer('u32');\n var buffer = new Uint8Array(this.buffer.consume_bytes(len));\n return String.fromCharCode.apply(null, buffer);\n };\n BorshDeserializer.prototype.decode_boolean = function () {\n return this.buffer.consume_value('u8') > 0;\n };\n BorshDeserializer.prototype.decode_option = function (schema) {\n var option = this.buffer.consume_value('u8');\n if (option === 1) {\n return this.decode_value(schema.option);\n }\n if (option !== 0) {\n throw new Error(\"Invalid option \".concat(option));\n }\n return null;\n };\n BorshDeserializer.prototype.decode_enum = function (schema) {\n var _a;\n var valueIndex = this.buffer.consume_value('u8');\n if (valueIndex > schema[\"enum\"].length) {\n throw new Error(\"Enum option \".concat(valueIndex, \" is not available\"));\n }\n var struct = schema[\"enum\"][valueIndex].struct;\n var key = Object.keys(struct)[0];\n return _a = {}, _a[key] = this.decode_value(struct[key]), _a;\n };\n BorshDeserializer.prototype.decode_array = function (schema) {\n var result = [];\n var len = schema.array.len ? schema.array.len : this.decode_integer('u32');\n for (var i = 0; i < len; ++i) {\n result.push(this.decode_value(schema.array.type));\n }\n return result;\n };\n BorshDeserializer.prototype.decode_set = function (schema) {\n var len = this.decode_integer('u32');\n var result = new Set();\n for (var i = 0; i < len; ++i) {\n result.add(this.decode_value(schema.set));\n }\n return result;\n };\n BorshDeserializer.prototype.decode_map = function (schema) {\n var len = this.decode_integer('u32');\n var result = new Map();\n for (var i = 0; i < len; ++i) {\n var key = this.decode_value(schema.map.key);\n var value = this.decode_value(schema.map.value);\n result.set(key, value);\n }\n return result;\n };\n BorshDeserializer.prototype.decode_struct = function (schema) {\n var result = {};\n for (var key in schema.struct) {\n result[key] = this.decode_value(schema.struct[key]);\n }\n return result;\n };\n return BorshDeserializer;\n}());\nexport { BorshDeserializer };\n","import { BorshSerializer } from './serialize.js';\nimport { BorshDeserializer } from './deserialize.js';\nimport * as utils from './utils.js';\nexport function serialize(schema, value, validate) {\n if (validate === void 0) { validate = true; }\n if (validate)\n utils.validate_schema(schema);\n var serializer = new BorshSerializer(validate);\n return serializer.encode(value, schema);\n}\nexport function deserialize(schema, buffer, validate) {\n if (validate === void 0) { validate = true; }\n if (validate)\n utils.validate_schema(schema);\n var deserializer = new BorshDeserializer(buffer);\n return deserializer.decode(schema);\n}\n","import { encode as hexEncode } from \"@stablelib/hex\";\nimport { hash as sha256Hash } from \"@stablelib/sha256\";\nimport { encode as utf8Encode } from \"@stablelib/utf8\";\nimport bs58 from \"bs58\";\n\nexport { decode as base64Decode, encode as base64Encode } from \"@stablelib/base64\";\nexport { writeUint16BE as binaryWriteUint16BE } from \"@stablelib/binary\";\nexport { concat as bytesConcat } from \"@stablelib/bytes\";\nexport { decode as hexDecode } from \"@stablelib/hex\";\nexport { decode as utf8Decode, encode as utf8Encode } from \"@stablelib/utf8\";\nexport { serialize as borshSerialize } from \"borsh\";\n\nexport { hexEncode, sha256Hash };\n\nexport function hexEncodeSha256Hash(data: Uint8Array): string {\n return hexEncode(sha256Hash(data), true);\n}\n\nexport function bs58Encode(data: Uint8Array): string {\n return bs58.encode(data);\n}\n\nexport function bs58Decode(data: string): Uint8Array {\n return bs58.decode(data);\n}\n\nexport function toBytes(obj: Parameters<typeof JSON.stringify>[0]): Uint8Array {\n return utf8Encode(JSON.stringify(obj));\n}\n","import type { KwilActionClient } from \"../kwil-infra\";\nimport type { idOSUserAttribute } from \"../types\";\n\n/**\n * Returns all the attributes for the given `signer`.\n */\nexport async function getAttributes(kwilClient: KwilActionClient): Promise<idOSUserAttribute[]> {\n return kwilClient.call<idOSUserAttribute[]>({\n name: \"get_attributes\",\n inputs: {},\n });\n}\n\n/**\n * Creates a new attribute for the given `signer`.\n */\nexport async function createAttribute(\n kwilClient: KwilActionClient,\n attribute: idOSUserAttribute,\n): Promise<idOSUserAttribute> {\n await kwilClient.execute({\n name: \"add_attribute\",\n description: \"Create a new attribute in your idOS profile\",\n inputs: attribute,\n });\n\n return attribute;\n}\n","import type { KwilActionClient } from \"../kwil-infra\";\nimport type { idOSCredential, idOSGrant } from \"../types\";\n\n/**\n * Returns the shared idOS Credential for the given `dataId`.\n */\nexport async function getSharedCredential(\n kwilClient: KwilActionClient,\n id: string,\n): Promise<idOSCredential | undefined> {\n const [credential] = await kwilClient.call<idOSCredential[]>({\n name: \"get_credential_shared\",\n inputs: { id },\n });\n\n return credential;\n}\n\n/**\n * Returns the owned idOS Credential for the given `id`.\n */\nexport async function getCredentialOwned(\n kwilClient: KwilActionClient,\n id: string,\n): Promise<idOSCredential | undefined> {\n const [credential] = await kwilClient.call<idOSCredential[]>({\n name: \"get_credential_owned\",\n inputs: { id },\n });\n\n return credential;\n}\n\n/**\n * Returns the idOSCredential `id` which content hash matches the given `contentHash`.\n */\nexport async function getCredentialIdByContentHash(\n kwilClient: KwilActionClient,\n content_hash: string,\n): Promise<string | null> {\n const response = await kwilClient.call<[{ id: string }]>({\n name: \"get_sibling_credential_id\",\n inputs: { content_hash },\n });\n\n return response[0]?.id ?? null;\n}\n\nexport interface GetAccessGrantByCredentialIdParams {\n credential_id: string;\n}\n\n/**\n * Returns a list of matching idOSGrants that associated with the given `credentialId`.\n */\nexport async function getAccessGrantsForCredential(\n kwilClient: KwilActionClient,\n params: GetAccessGrantByCredentialIdParams,\n): Promise<idOSGrant[]> {\n return kwilClient.call<idOSGrant[]>({\n name: \"get_access_grants_for_credential\",\n inputs: params,\n });\n}\n\nexport interface EditCredentialAsIssuerParams {\n public_notes_id: string;\n public_notes: string;\n}\n\n/**\n * Edits the public notes of an idOSCredential if the signer is a permissioned issuer.\n * This is how a credential is edited (modified) by a permissioned issuer.\n */\nexport async function editCredentialAsIssuer(\n kwilClient: KwilActionClient,\n params: EditCredentialAsIssuerParams,\n): Promise<EditCredentialAsIssuerParams> {\n await kwilClient.execute({\n name: \"edit_public_notes_as_issuer\",\n description: \"Edit a credential in your idOS profile\",\n inputs: params,\n });\n\n return params;\n}\n\n/**\n * Returns a list of idOSCredentials that have been shared with the given `userId`.\n */\nexport async function getCredentialsSharedByUser(\n kwilClient: KwilActionClient,\n userId: string,\n): Promise<idOSCredential[]> {\n return kwilClient.call<idOSCredential[]>({\n name: \"get_credentials_shared_by_user\",\n inputs: { user_id: userId, issuer_auth_public_key: null },\n });\n}\n\n/**\n * Returns all idOSCredentials\n */\nexport async function getAllCredentials(kwilClient: KwilActionClient): Promise<idOSCredential[]> {\n return kwilClient.call<idOSCredential[]>({\n name: \"get_credentials\",\n inputs: {},\n });\n}\n\nexport interface CreateCredentialByDelegatedWriteGrantParams {\n issuer_auth_public_key: string;\n original_encryptor_public_key: string;\n original_credential_id: string;\n original_content: string;\n original_public_notes: string;\n original_public_notes_signature: string;\n original_broader_signature: string;\n copy_encryptor_public_key: string;\n copy_credential_id: string;\n copy_content: string;\n copy_public_notes_signature: string;\n copy_broader_signature: string;\n content_hash: string;\n dwg_owner: string;\n dwg_grantee: string;\n dwg_issuer_public_key: string;\n dwg_id: string;\n dwg_access_grant_timelock: string;\n dwg_not_before: string;\n dwg_not_after: string;\n dwg_signature: string;\n}\n\n/**\n * Creates a new credential from a delegated write grant.\n */\nexport async function createCredentialByDelegatedWriteGrant(\n kwilClient: KwilActionClient,\n params: CreateCredentialByDelegatedWriteGrantParams,\n): Promise<CreateCredentialByDelegatedWriteGrantParams> {\n await kwilClient.execute({\n name: \"create_credentials_by_dwg\",\n description: \"Create a new credential in your idOS profile\",\n inputs: params,\n });\n\n return params;\n}\n\n/**\n * Removes an idOSCredential by the given `id`.\n */\nexport async function removeCredential(\n kwilClient: KwilActionClient,\n id: string,\n): Promise<{ id: string }> {\n await kwilClient.execute({\n name: \"remove_credential\",\n description: \"Remove a credential from your idOS profile\",\n inputs: { id },\n });\n\n return { id };\n}\n\n/**\n * Returns an idOSCredential by the given `id`.\n */\nexport async function getCredentialById(\n kwilClient: KwilActionClient,\n id: string,\n): Promise<idOSCredential | undefined> {\n const response = await kwilClient.call<idOSCredential[]>({\n name: \"get_credential_owned\",\n inputs: { id },\n });\n\n return response.find((r) => r.id === id);\n}\n\nexport type ShareableCredential = {\n id: string;\n original_credential_id: string;\n public_notes: string;\n public_notes_signature: string;\n broader_signature: string;\n content: string;\n encryptor_public_key: string;\n issuer_auth_public_key: string;\n grantee_wallet_identifier: string;\n locked_until: number;\n};\n/**\n * Shares an idOSCredential to the given `userId`.\n */\nexport async function shareCredential(\n kwilClient: KwilActionClient,\n credential: ShareableCredential,\n): Promise<ShareableCredential> {\n await kwilClient.execute({\n name: \"share_credential\",\n description: \"Share a credential with another user on idOS\",\n inputs: credential,\n });\n\n return credential;\n}\n\nexport type CreateCredentialCopyParams = {\n id: string;\n original_credential_id: string;\n public_notes: string;\n public_notes_signature: string;\n broader_signature: string;\n content: string;\n encryptor_public_key: string;\n issuer_auth_public_key: string;\n};\n\n/**\n * Creates a new idOSCredential as a copy of the given `originalCredentialId` without creating an Access Grant\n * Used only for passporting flows\n */\nexport async function createCredentialCopy(\n kwilClient: KwilActionClient,\n params: CreateCredentialCopyParams,\n): Promise<CreateCredentialCopyParams> {\n await kwilClient.execute({\n name: \"create_credential_copy\",\n description: \"Share a credential with another user on idOS\",\n inputs: params,\n });\n\n return params;\n}\n","import type { KwilActionClient } from \"../kwil-infra\";\nimport type { DelegatedWriteGrant, idOSGrant } from \"../types\";\n\n/**\n * Returns the amount of Access Grants that have been granted for the given `signer`.\n */\nexport async function getGrantsCount(\n kwilClient: KwilActionClient,\n params: { user_id: string | null } = { user_id: null },\n): Promise<number> {\n const [{ count }] = await kwilClient.call<[{ count: number }]>({\n name: \"get_access_grants_granted_count\",\n inputs: params,\n });\n return count;\n}\n\n/**\n * Returns the Access Grants for the given `signer` in a paginated manner.\n */\n\nexport interface GetGrantsParams {\n page?: number;\n size?: number;\n user_id?: string | null;\n}\n\nexport const GET_GRANTS_DEFAULT_RECORDS_PER_PAGE = 10;\n\nexport async function getGrants(\n kwilClient: KwilActionClient,\n params: GetGrantsParams = { page: 1, size: GET_GRANTS_DEFAULT_RECORDS_PER_PAGE, user_id: null },\n): Promise<idOSGrant[]> {\n //@todo: add pagination values to the response\n return kwilClient.call<idOSGrant[]>({\n name: \"get_access_grants_granted\",\n inputs: {\n page: params.page ?? 1,\n size: params.size ?? 10,\n user_id: params.user_id ?? null,\n },\n });\n}\nexport interface CreateAccessGrantByDAGParams {\n dag_data_id: string;\n dag_owner_wallet_identifier: string;\n dag_grantee_wallet_identifier: string;\n dag_signature: string;\n dag_locked_until: number;\n dag_content_hash: string;\n}\n\n/**\n * Creates a new Access Grant from the given Delegated Access Grant payload.\n */\nexport async function createAccessGrantByDag(\n kwilClient: KwilActionClient,\n params: CreateAccessGrantByDAGParams,\n): Promise<CreateAccessGrantByDAGParams> {\n await kwilClient.execute({\n name: \"create_ag_by_dag_for_copy\",\n description: \"Create an Access Grant in idOS\",\n inputs: params,\n });\n\n return params;\n}\n\n/**\n * Revokes an Access Grant for the given `id`.\n */\nexport async function revokeAccessGrant(\n kwilClient: KwilActionClient,\n id: string,\n): Promise<{ id: string }> {\n await kwilClient.execute({\n name: \"revoke_access_grant\",\n description: \"Revoke an Access Grant from idOS\",\n inputs: { id },\n });\n\n return { id };\n}\n\n/**\n * Returns all the Access Grants that have been granted by the given `signer`.\n */\nexport async function getAccessGrantsOwned(kwilClient: KwilActionClient): Promise<idOSGrant[]> {\n return kwilClient.call<idOSGrant[]>({\n name: \"get_access_grants_owned\",\n inputs: {},\n });\n}\n\nexport interface idOSDAGSignatureParams {\n dag_owner_wallet_identifier: string;\n dag_grantee_wallet_identifier: string;\n dag_data_id: string;\n dag_locked_until: number;\n dag_content_hash: string;\n}\n\n/**\n * Request a signature for a Delegated Access Grant\n */\nexport async function requestDAGMessage(\n kwilClient: KwilActionClient,\n params: idOSDAGSignatureParams,\n): Promise<string> {\n const [{ message }] = await kwilClient.call<[{ message: string }]>({\n name: \"dag_message\",\n inputs: params,\n });\n\n return message;\n}\n\n/**\n * Request a signature for a delegated write grant.\n */\nexport async function requestDWGMessage(\n kwilClient: KwilActionClient,\n params: DelegatedWriteGrant,\n): Promise<string> {\n const [{ message }] = await kwilClient.call<[{ message: string }]>({\n name: \"dwg_message\",\n inputs: params,\n });\n\n return message;\n}\n","import type { KwilActionClient } from \"../kwil-infra\";\nimport type { idOSUser } from \"../types\";\n\n/**\n * Checks if the user has a profile in the idOS associated with its wallet address.\n */\nexport async function hasProfile(kwilClient: KwilActionClient, address: string): Promise<boolean> {\n const [{ has_profile }] = await kwilClient.call<[{ has_profile: boolean }]>(\n {\n name: \"has_profile\",\n inputs: {\n address,\n },\n },\n undefined, // Don't use the signer to avoid causing an unnecessary signature.\n );\n\n return has_profile;\n}\n\nexport interface CreateUserReqParams {\n id: string;\n recipient_encryption_public_key: string;\n}\n/**\n * Creates a user profile in the idOS.\n */\nexport async function createUser(\n kwilClient: KwilActionClient,\n params: CreateUserReqParams,\n): Promise<CreateUserReqParams> {\n await kwilClient.execute({\n name: \"add_user_as_inserter\",\n description: \"Create a user profile in idOS\",\n inputs: params,\n });\n\n return params;\n}\n\n/**\n * Get the profile of the current user.\n */\nexport async function getUserProfile(kwilClient: KwilActionClient): Promise<idOSUser> {\n const [user] = await kwilClient.call<[idOSUser]>({\n name: \"get_user\",\n inputs: {},\n });\n\n return user;\n}\n","import type { KwilActionClient } from \"../kwil-infra\";\nimport type { idOSWallet } from \"../types\";\n\nexport interface UpsertWalletParams {\n id: string;\n user_id: string;\n address: string;\n wallet_type: string;\n message: string;\n public_key: string;\n signature: string;\n}\n\n/**\n * Upserts a wallet as an `inserter`.\n */\nexport async function upsertWalletAsInserter(\n kwilClient: KwilActionClient,\n params: UpsertWalletParams,\n): Promise<UpsertWalletParams> {\n await kwilClient.execute({\n name: \"upsert_wallet_as_inserter\",\n description: \"Add a wallet to idOS\",\n inputs: params,\n });\n\n return params;\n}\n\nexport interface AddWalletParams {\n id: string;\n address: string;\n public_key: string | null;\n message: string;\n signature: string;\n}\n\nexport async function addWallet(\n kwilClient: KwilActionClient,\n params: AddWalletParams,\n): Promise<AddWalletParams> {\n await kwilClient.execute({\n name: \"add_wallet\",\n description: \"Add a wallet to idOS\",\n inputs: params,\n });\n\n return params;\n}\n\nexport async function addWallets(\n kwilClient: KwilActionClient,\n params: AddWalletParams[],\n): Promise<AddWalletParams[]> {\n await Promise.all(\n params.map((param) =>\n kwilClient.execute({\n name: \"add_wallet\",\n description: \"Add a wallet to idOS\",\n inputs: param,\n }),\n ),\n );\n\n return params;\n}\n\nexport async function getWallets(kwilClient: KwilActionClient): Promise<idOSWallet[]> {\n return kwilClient.call<idOSWallet[]>({\n name: \"get_wallets\",\n inputs: {},\n });\n}\n\nexport async function removeWallet(\n kwilClient: KwilActionClient,\n id: string,\n): Promise<{ id: string }> {\n await kwilClient.execute({\n name: \"remove_wallet\",\n description: \"Remove a wallet from idOS\",\n inputs: { id },\n });\n\n return { id };\n}\n\nexport async function removeWallets(\n kwilClient: KwilActionClient,\n ids: string[],\n): Promise<string[]> {\n await Promise.all(\n ids.map((id) =>\n kwilClient.execute({\n name: \"remove_wallet\",\n description: \"Remove a wallet from idOS\",\n inputs: { id },\n }),\n ),\n );\n\n return ids;\n}\n","import { Utils } from \"@kwilteam/kwil-js\";\n\nexport const DataType: typeof Utils.DataType = Utils.DataType;\n\nexport interface ActionSchemaElem {\n name: string;\n type: typeof DataType.Uuid | typeof DataType.Text | typeof DataType.Int;\n}\n\nexport const actionSchema: Record<string, ActionSchemaElem[]> = {\n add_user_as_inserter: [\n {\n name: \"id\",\n type: DataType.Uuid,\n },\n {\n name: \"recipient_encryption_public_key\",\n type: DataType.Text,\n },\n ],\n update_user_pub_key_as_inserter: [\n {\n name: \"id\",\n type: DataType.Uuid,\n },\n {\n name: \"recipient_encryption_public_key\",\n type: DataType.Text,\n },\n ],\n get_user: [],\n get_user_as_inserter: [\n {\n name: \"id\",\n type: DataType.Uuid,\n },\n ],\n upsert_wallet_as_inserter: [\n {\n name: \"id\",\n type: DataType.Uuid,\n },\n {\n name: \"user_id\",\n type: DataType.Uuid,\n },\n {\n name: \"address\",\n type: DataType.Text,\n },\n {\n name: \"public_key\",\n type: DataType.Text,\n },\n {\n name: \"wallet_type\",\n type: DataType.Text,\n },\n {\n name: \"message\",\n type: DataType.Text,\n },\n {\n name: \"signature\",\n type: DataType.Text,\n },\n ],\n add_wallet: [\n {\n name: \"id\",\n type: DataType.Uuid,\n },\n {\n name: \"address\",\n type: DataType.Text,\n },\n {\n name: \"public_key\",\n type: DataType.Text,\n },\n {\n name: \"message\",\n type: DataType.Text,\n },\n {\n name: \"signature\",\n type: DataType.Text,\n },\n ],\n get_wallets: [],\n remove_wallet: [\n {\n name: \"id\",\n type: DataType.Uuid,\n },\n ],\n upsert_credential_as_inserter: [\n {\n name: \"id\",\n type: DataType.Uuid,\n },\n {\n name: \"user_id\",\n type: DataType.Uuid,\n },\n {\n name: \"issuer_auth_public_key\",\n type: DataType.Text,\n },\n {\n name: \"encryptor_public_key\",\n type: DataType.Text,\n },\n {\n name: \"content\",\n type: DataType.Text,\n },\n {\n name: \"public_notes\",\n type: DataType.Text,\n },\n {\n name: \"public_notes_signature\",\n type: DataType.Text,\n },\n {\n name: \"broader_signature\",\n type: DataType.Text,\n },\n ],\n add_credential: [\n {\n name: \"id\",\n type: DataType.Uuid,\n },\n {\n name: \"issuer_auth_public_key\",\n type: DataType.Text,\n },\n {\n name: \"encryptor_public_key\",\n type: DataType.Text,\n },\n {\n name: \"content\",\n type: DataType.Text,\n },\n {\n name: \"public_notes\",\n type: DataType.Text,\n },\n {\n name: \"public_notes_signature\",\n type: DataType.Text,\n },\n {\n name: \"broader_signature\",\n type: DataType.Text,\n },\n ],\n get_credentials: [],\n get_credentials_shared_by_user: [\n {\n name: \"user_id\",\n type: DataType.Uuid,\n },\n {\n name: \"issuer_auth_public_key\",\n type: DataType.Text,\n },\n ],\n edit_public_notes_as_issuer: [\n {\n name: \"public_notes_id\",\n type: DataType.Text,\n },\n {\n name: \"public_notes\",\n type: DataType.Text,\n },\n ],\n remove_credential: [\n {\n name: \"id\",\n type: DataType.Uuid,\n },\n ],\n share_credential: [\n {\n name: \"id\",\n type: DataType.Uuid,\n },\n {\n name: \"original_credential_id\",\n type: DataType.Uuid,\n },\n {\n name: \"public_notes\",\n type: DataType.Text,\n },\n {\n name: \"public_notes_signature\",\n type: DataType.Text,\n },\n {\n name: \"broader_signature\",\n type: DataType.Text,\n },\n {\n name: \"content\",\n type: DataType.Text,\n },\n {\n name: \"content_hash\",\n type: DataType.Text,\n },\n {\n name: \"encryptor_public_key\",\n type: DataType.Text,\n },\n {\n name: \"issuer_auth_public_key\",\n type: DataType.Text,\n },\n {\n name: \"grantee_wallet_identifier\",\n type: DataType.Text,\n },\n {\n name: \"locked_until\",\n type: DataType.Int,\n },\n ],\n create_credential_copy: [\n {\n name: \"id\",\n type: DataType.Uuid,\n },\n {\n name: \"original_credential_id\",\n type: DataType.Uuid,\n },\n {\n name: \"public_notes\",\n type: DataType.Text,\n },\n {\n name: \"public_notes_signature\",\n type: DataType.Text,\n },\n {\n name: \"broader_signature\",\n type: DataType.Text,\n },\n {\n name: \"content\",\n type: DataType.Text,\n },\n {\n name: \"encryptor_public_key\",\n type: DataType.Text,\n },\n {\n name: \"issuer_auth_public_key\",\n type: DataType.Text,\n },\n ],\n share_credential_through_dag: [\n {\n name: \"id\",\n type: DataType.Uuid,\n },\n {\n name: \"user_id\",\n type: DataType.Uuid,\n },\n {\n name: \"issuer_auth_public_key\",\n type: DataType.Text,\n },\n {\n name: \"encryptor_public_key\",\n type: DataType.Text,\n },\n {\n name: \"content\",\n type: DataType.Text,\n },\n {\n name: \"content_hash\",\n type: DataType.Text,\n },\n {\n name: \"public_notes\",\n type: DataType.Text,\n },\n {\n name: \"public_notes_signature\",\n type: DataType.Text,\n },\n {\n name: \"broader_signature\",\n type: DataType.Text,\n },\n {\n name: \"original_credential_id\",\n type: DataType.Uuid,\n },\n {\n name: \"dag_owner_wallet_identifier\",\n type: DataType.Text,\n },\n {\n name: \"dag_grantee_wallet_identifier\",\n type: DataType.Text,\n },\n {\n name: \"dag_locked_until\",\n type: DataType.Int,\n },\n {\n name: \"dag_signature\",\n type: DataType.Text,\n },\n ],\n create_credentials_by_dwg: [\n {\n name: \"issuer_auth_public_key\",\n type: DataType.Text,\n },\n {\n name: \"original_encryptor_public_key\",\n type: DataType.Text,\n },\n {\n name: \"original_credential_id\",\n type: DataType.Uuid,\n },\n {\n name: \"original_content\",\n type: DataType.Text,\n },\n {\n name: \"original_public_notes\",\n type: DataType.Text,\n },\n {\n name: \"original_public_notes_signature\",\n type: DataType.Text,\n },\n {\n name: \"original_broader_signature\",\n type: DataType.Text,\n },\n {\n name: \"copy_encryptor_public_key\",\n type: DataType.Text,\n },\n {\n name: \"copy_credential_id\",\n type: DataType.Uuid,\n },\n {\n name: \"copy_content\",\n type: DataType.Text,\n },\n {\n name: \"copy_public_notes_signature\",\n type: DataType.Text,\n },\n {\n name: \"copy_broader_signature\",\n type: DataType.Text,\n },\n {\n name: \"content_hash\",\n type: DataType.Text,\n },\n {\n name: \"dwg_owner\",\n type: DataType.Text,\n },\n {\n name: \"dwg_grantee\",\n type: DataType.Text,\n },\n {\n name: \"dwg_issuer_public_key\",\n type: DataType.Text,\n },\n {\n name: \"dwg_id\",\n type: DataType.Uuid,\n },\n {\n name: \"dwg_access_grant_timelock\",\n type: DataType.Text,\n },\n {\n name: \"dwg_not_before\",\n type: DataType.Text,\n },\n {\n name: \"dwg_not_after\",\n type: DataType.Text,\n },\n {\n name: \"dwg_signature\",\n type: DataType.Text,\n },\n ],\n get_credential_owned: [\n {\n name: \"id\",\n type: DataType.Uuid,\n },\n ],\n get_credential_shared: [\n {\n name: \"id\",\n type: DataType.Uuid,\n },\n ],\n get_sibling_credential_id: [\n {\n name: \"content_hash\",\n type: DataType.Text,\n },\n ],\n add_attribute: [\n {\n name: \"id\",\n type: DataType.Uuid,\n },\n {\n name: \"attribute_key\",\n type: DataType.Text,\n },\n {\n name: \"value\",\n type: DataType.Text,\n },\n ],\n get_attributes: [],\n edit_attribute: [\n {\n name: \"id\",\n type: DataType.Uuid,\n },\n {\n name: \"attribute_key\",\n type: DataType.Text,\n },\n {\n name: \"value\",\n type: DataType.Text,\n },\n ],\n remove_attribute: [\n {\n name: \"id\",\n type: DataType.Uuid,\n },\n ],\n share_attribute: [\n {\n name: \"id\",\n type: DataType.Uuid,\n },\n {\n name: \"original_attribute_id\",\n type: DataType.Uuid,\n },\n {\n name: \"attribute_key\",\n type: DataType.Text,\n },\n {\n name: \"value\",\n type: DataType.Text,\n },\n ],\n dwg_message: [\n {\n name: \"owner_wallet_identifier\",\n type: DataType.Text,\n },\n {\n name: \"grantee_wallet_identifier\",\n type: DataType.Text,\n },\n {\n name: \"issuer_public_key\",\n type: DataType.Text,\n },\n {\n name: \"id\",\n type: DataType.Uuid,\n },\n {\n name: \"access_grant_timelock\",\n type: DataType.Text,\n },\n {\n name: \"not_usable_before\",\n type: DataType.Text,\n },\n {\n name: \"not_usable_after\",\n type: DataType.Text,\n },\n ],\n revoke_access_grant: [\n {\n name: \"id\",\n type: DataType.Uuid,\n },\n ],\n get_access_grants_owned: [],\n get_access_grants_granted: [\n {\n name: \"user_id\",\n type: DataType.Uuid,\n },\n {\n name: \"page\",\n type: DataType.Int,\n },\n {\n name: \"size\",\n type: DataType.Int,\n },\n ],\n get_access_grants_granted_count: [\n {\n name: \"user_id\",\n type: DataType.Uuid,\n },\n ],\n has_locked_access_grants: [\n {\n name: \"id\",\n type: DataType.Uuid,\n },\n ],\n dag_message: [\n {\n name: \"dag_owner_wallet_identifier\",\n type: DataType.Text,\n },\n {\n name: \"dag_grantee_wallet_identifier\",\n type: DataType.Text,\n },\n {\n name: \"dag_data_id\",\n type: DataType.Uuid,\n },\n {\n name: \"dag_locked_until\",\n type: DataType.Int,\n },\n {\n name: \"dag_content_hash\",\n type: DataType.Text,\n },\n ],\n create_ag_by_dag_for_copy: [\n {\n name: \"dag_owner_wallet_identifier\",\n type: DataType.Text,\n },\n {\n name: \"dag_grantee_wallet_identifier\",\n type: DataType.Text,\n },\n {\n name: \"dag_data_id\",\n type: DataType.Uuid,\n },\n {\n name: \"dag_locked_until\",\n type: DataType.Int,\n },\n {\n name: \"dag_content_hash\",\n type: DataType.Text,\n },\n {\n name: \"dag_signature\",\n type: DataType.Text,\n },\n ],\n get_access_grants_for_credential: [\n {\n name: \"credential_id\",\n type: DataType.Uuid,\n },\n ],\n has_profile: [\n {\n name: \"address\",\n type: DataType.Text,\n },\n ],\n} as const;\n","import { type KwilSigner, NodeKwil, WebKwil } from \"@kwilteam/kwil-js\";\nimport type { Config } from \"@kwilteam/kwil-js/dist/api_client/config\";\nimport type { ActionBody, CallBody, PositionalParams } from \"@kwilteam/kwil-js/dist/core/action\";\nimport type { DataInfo } from \"@kwilteam/kwil-js/dist/core/database\";\nimport invariant from \"tiny-invariant\";\nimport type { ActionSchemaElem } from \"../kwil-actions/schema\";\nimport { actionSchema } from \"../kwil-actions/schema\";\n\ntype CreateKwilClientParams = {\n chainId?: string;\n nodeUrl: string;\n};\n\ntype KwilActions = typeof actionSchema;\ntype ActionName = keyof KwilActions;\n\ntype AllKwilCallAction = {\n [Name in ActionName]: {\n name: Name;\n // biome-ignore lint/suspicious/noExplicitAny: This is fine\n inputs: Record<KwilActions[Name][number][\"name\"], any>;\n };\n};\n\ntype KwilCallActionRequestParams = AllKwilCallAction[ActionName];\n\ntype AllKwilExecuteAction = {\n [Name in ActionName]: AllKwilCallAction[Name] & { description: string };\n};\n\ntype KwilExecuteActionRequestParams = AllKwilExecuteAction[ActionName];\n\n/**\n * A client for interacting with kwil with type-safe abstractions for `call` and `execute`.\n * Has utility methods for creating actions and setting a signer.\n */\nexport class KwilActionClient {\n signer?: KwilSigner;\n readonly client: NodeKwil | WebKwil;\n\n constructor(client: NodeKwil | WebKwil) {\n this.client = client;\n }\n\n #createActionInputs(actionName: string, params: Record<string, unknown> = {}): PositionalParams {\n if (!params || !Object.keys(params).length) return [];\n\n const args = (actionSchema as Record<string, readonly ActionSchemaElem[]>)[actionName];\n\n return args.map(({ name }) => {\n const value = params[name];\n // Handle falsy values appropriately\n if (value === \"\" || value === 0) return value;\n return value ?? null;\n }) as PositionalParams;\n }\n\n #actionTypes(actionName: string): DataInfo[] {\n const args = actionSchema[actionName];\n return args.map((arg) => arg.type);\n }\n\n /**\n * Calls an action on the kwil nodes. This similar to `GET` like request.\n */\n async call<T = unknown>(\n params: KwilCallActionRequestParams,\n signer: KwilSigner | undefined = this.signer,\n ): Promise<T> {\n const action: CallBody = {\n name: params.name,\n namespace: \"main\",\n inputs: this.#createActionInputs(params.name, params.inputs),\n types: this.#actionTypes(params.name),\n };\n\n const response = await this.client.call(action as CallBody, signer);\n return response?.data?.result as T;\n }\n\n /**\n * Executes an action on the kwil nodes. This similar to `POST` like request.\n */\n async execute(\n params: KwilExecuteActionRequestParams,\n signer: KwilSigner | undefined = this.signer,\n synchronous = true,\n ): Promise<string | undefined> {\n invariant(signer, \"Signer is not set, you must set it before executing an action\");\n const action: ActionBody = {\n name: params.name,\n namespace: \"main\",\n description: params.description,\n inputs: [this.#createActionInputs(params.name, params.inputs)],\n types: this.#actionTypes(params.name),\n };\n const response = await this.client.execute(action, signer, synchronous);\n return response.data?.tx_hash;\n }\n\n setSigner(signer: KwilSigner | undefined): void {\n this.signer = signer;\n }\n\n /**\n * Creates action inputs from the given parameters that are used in the action body.\n */\n}\n\nconst DEFAULT_TIMEOUT = 30_000;\n\nconst createKwilClient =\n (Cls: new (opts: Config) => NodeKwil | WebKwil) =>\n async ({ nodeUrl: kwilProvider, chainId }: CreateKwilClientParams): Promise<KwilActionClient> => {\n const _kwil = new Cls({ kwilProvider, chainId: \"\" });\n chainId ||= (await _kwil.chainInfo({ disableWarning: true })).data?.chain_id;\n invariant(chainId, \"Can't discover `chainId`. You must pass it explicitly.\");\n\n return new KwilActionClient(new Cls({ kwilProvider, chainId, timeout: DEFAULT_TIMEOUT }));\n };\n\n/**\n * Create a kwil client for node.js environment\n */\nexport const createNodeKwilClient: (params: CreateKwilClientParams) => Promise<KwilActionClient> =\n createKwilClient(NodeKwil);\n\n/**\n * Create a kwil client for browser environment\n */\nexport const createWebKwilClient: (params: CreateKwilClientParams) => Promise<KwilActionClient> =\n createKwilClient(WebKwil);\n","","(function(nacl) {\n'use strict';\n\n// Ported in 2014 by Dmitry Chestnykh and Devi Mandiri.\n// Public domain.\n//\n// Implementation derived from TweetNaCl version 20140427.\n// See for details: http://tweetnacl.cr.yp.to/\n\nvar gf = function(init) {\n var i, r = new Float64Array(16);\n if (init) for (i = 0; i < init.length; i++) r[i] = init[i];\n return r;\n};\n\n// Pluggable, initialized in high-level API below.\nvar randombytes = function(/* x, n */) { throw new Error('no PRNG'); };\n\nvar _0 = new Uint8Array(16);\nvar _9 = new Uint8Array(32); _9[0] = 9;\n\nvar gf0 = gf(),\n gf1 = gf([1]),\n _121665 = gf([0xdb41, 1]),\n D = gf([0x78a3, 0x1359, 0x4dca, 0x75eb, 0xd8ab, 0x4141, 0x0a4d, 0x0070, 0xe898, 0x7779, 0x4079, 0x8cc7, 0xfe73, 0x2b6f, 0x6cee, 0x5203]),\n D2 = gf([0xf159, 0x26b2, 0x9b94, 0xebd6, 0xb156, 0x8283, 0x149a, 0x00e0, 0xd130, 0xeef3, 0x80f2, 0x198e, 0xfce7, 0x56df, 0xd9dc, 0x2406]),\n X = gf([0xd51a, 0x8f25, 0x2d60, 0xc956, 0xa7b2, 0x9525, 0xc760, 0x692c, 0xdc5c, 0xfdd6, 0xe231, 0xc0a4, 0x53fe, 0xcd6e, 0x36d3, 0x2169]),\n Y = gf([0x6658, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666]),\n I = gf([0xa0b0, 0x4a0e, 0x1b27, 0xc4ee, 0xe478, 0xad2f, 0x1806, 0x2f43, 0xd7a7, 0x3dfb, 0x0099, 0x2b4d, 0xdf0b, 0x4fc1, 0x2480, 0x2b83]);\n\nfunction ts64(x, i, h, l) {\n x[i] = (h >> 24) & 0xff;\n x[i+1] = (h >> 16) & 0xff;\n x[i+2] = (h >> 8) & 0xff;\n x[i+3] = h & 0xff;\n x[i+4] = (l >> 24) & 0xff;\n x[i+5] = (l >> 16) & 0xff;\n x[i+6] = (l >> 8) & 0xff;\n x[i+7] = l & 0xff;\n}\n\nfunction vn(x, xi, y, yi, n) {\n var i,d = 0;\n for (i = 0; i < n; i++) d |= x[xi+i]^y[yi+i];\n return (1 & ((d - 1) >>> 8)) - 1;\n}\n\nfunction crypto_verify_16(x, xi, y, yi) {\n return vn(x,xi,y,yi,16);\n}\n\nfunction crypto_verify_32(x, xi, y, yi) {\n return vn(x,xi,y,yi,32);\n}\n\nfunction core_salsa20(o, p, k, c) {\n var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n x15 = j15, u;\n\n for (var i = 0; i < 20; i += 2) {\n u = x0 + x12 | 0;\n x4 ^= u<<7 | u>>>(32-7);\n u = x4 + x0 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x4 | 0;\n x12 ^= u<<13 | u>>>(32-13);\n u = x12 + x8 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x1 | 0;\n x9 ^= u<<7 | u>>>(32-7);\n u = x9 + x5 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x9 | 0;\n x1 ^= u<<13 | u>>>(32-13);\n u = x1 + x13 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x6 | 0;\n x14 ^= u<<7 | u>>>(32-7);\n u = x14 + x10 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x14 | 0;\n x6 ^= u<<13 | u>>>(32-13);\n u = x6 + x2 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x11 | 0;\n x3 ^= u<<7 | u>>>(32-7);\n u = x3 + x15 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x3 | 0;\n x11 ^= u<<13 | u>>>(32-13);\n u = x11 + x7 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n\n u = x0 + x3 | 0;\n x1 ^= u<<7 | u>>>(32-7);\n u = x1 + x0 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x1 | 0;\n x3 ^= u<<13 | u>>>(32-13);\n u = x3 + x2 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x4 | 0;\n x6 ^= u<<7 | u>>>(32-7);\n u = x6 + x5 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x6 | 0;\n x4 ^= u<<13 | u>>>(32-13);\n u = x4 + x7 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x9 | 0;\n x11 ^= u<<7 | u>>>(32-7);\n u = x11 + x10 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x11 | 0;\n x9 ^= u<<13 | u>>>(32-13);\n u = x9 + x8 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x14 | 0;\n x12 ^= u<<7 | u>>>(32-7);\n u = x12 + x15 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x12 | 0;\n x14 ^= u<<13 | u>>>(32-13);\n u = x14 + x13 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n }\n x0 = x0 + j0 | 0;\n x1 = x1 + j1 | 0;\n x2 = x2 + j2 | 0;\n x3 = x3 + j3 | 0;\n x4 = x4 + j4 | 0;\n x5 = x5 + j5 | 0;\n x6 = x6 + j6 | 0;\n x7 = x7 + j7 | 0;\n x8 = x8 + j8 | 0;\n x9 = x9 + j9 | 0;\n x10 = x10 + j10 | 0;\n x11 = x11 + j11 | 0;\n x12 = x12 + j12 | 0;\n x13 = x13 + j13 | 0;\n x14 = x14 + j14 | 0;\n x15 = x15 + j15 | 0;\n\n o[ 0] = x0 >>> 0 & 0xff;\n o[ 1] = x0 >>> 8 & 0xff;\n o[ 2] = x0 >>> 16 & 0xff;\n o[ 3] = x0 >>> 24 & 0xff;\n\n o[ 4] = x1 >>> 0 & 0xff;\n o[ 5] = x1 >>> 8 & 0xff;\n o[ 6] = x1 >>> 16 & 0xff;\n o[ 7] = x1 >>> 24 & 0xff;\n\n o[ 8] = x2 >>> 0 & 0xff;\n o[ 9] = x2 >>> 8 & 0xff;\n o[10] = x2 >>> 16 & 0xff;\n o[11] = x2 >>> 24 & 0xff;\n\n o[12] = x3 >>> 0 & 0xff;\n o[13] = x3 >>> 8 & 0xff;\n o[14] = x3 >>> 16 & 0xff;\n o[15] = x3 >>> 24 & 0xff;\n\n o[16] = x4 >>> 0 & 0xff;\n o[17] = x4 >>> 8 & 0xff;\n o[18] = x4 >>> 16 & 0xff;\n o[19] = x4 >>> 24 & 0xff;\n\n o[20] = x5 >>> 0 & 0xff;\n o[21] = x5 >>> 8 & 0xff;\n o[22] = x5 >>> 16 & 0xff;\n o[23] = x5 >>> 24 & 0xff;\n\n o[24] = x6 >>> 0 & 0xff;\n o[25] = x6 >>> 8 & 0xff;\n o[26] = x6 >>> 16 & 0xff;\n o[27] = x6 >>> 24 & 0xff;\n\n o[28] = x7 >>> 0 & 0xff;\n o[29] = x7 >>> 8 & 0xff;\n o[30] = x7 >>> 16 & 0xff;\n o[31] = x7 >>> 24 & 0xff;\n\n o[32] = x8 >>> 0 & 0xff;\n o[33] = x8 >>> 8 & 0xff;\n o[34] = x8 >>> 16 & 0xff;\n o[35] = x8 >>> 24 & 0xff;\n\n o[36] = x9 >>> 0 & 0xff;\n o[37] = x9 >>> 8 & 0xff;\n o[38] = x9 >>> 16 & 0xff;\n o[39] = x9 >>> 24 & 0xff;\n\n o[40] = x10 >>> 0 & 0xff;\n o[41] = x10 >>> 8 & 0xff;\n o[42] = x10 >>> 16 & 0xff;\n o[43] = x10 >>> 24 & 0xff;\n\n o[44] = x11 >>> 0 & 0xff;\n o[45] = x11 >>> 8 & 0xff;\n o[46] = x11 >>> 16 & 0xff;\n o[47] = x11 >>> 24 & 0xff;\n\n o[48] = x12 >>> 0 & 0xff;\n o[49] = x12 >>> 8 & 0xff;\n o[50] = x12 >>> 16 & 0xff;\n o[51] = x12 >>> 24 & 0xff;\n\n o[52] = x13 >>> 0 & 0xff;\n o[53] = x13 >>> 8 & 0xff;\n o[54] = x13 >>> 16 & 0xff;\n o[55] = x13 >>> 24 & 0xff;\n\n o[56] = x14 >>> 0 & 0xff;\n o[57] = x14 >>> 8 & 0xff;\n o[58] = x14 >>> 16 & 0xff;\n o[59] = x14 >>> 24 & 0xff;\n\n o[60] = x15 >>> 0 & 0xff;\n o[61] = x15 >>> 8 & 0xff;\n o[62] = x15 >>> 16 & 0xff;\n o[63] = x15 >>> 24 & 0xff;\n}\n\nfunction core_hsalsa20(o,p,k,c) {\n var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n x15 = j15, u;\n\n for (var i = 0; i < 20; i += 2) {\n u = x0 + x12 | 0;\n x4 ^= u<<7 | u>>>(32-7);\n u = x4 + x0 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x4 | 0;\n x12 ^= u<<13 | u>>>(32-13);\n u = x12 + x8 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x1 | 0;\n x9 ^= u<<7 | u>>>(32-7);\n u = x9 + x5 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x9 | 0;\n x1 ^= u<<13 | u>>>(32-13);\n u = x1 + x13 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x6 | 0;\n x14 ^= u<<7 | u>>>(32-7);\n u = x14 + x10 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x14 | 0;\n x6 ^= u<<13 | u>>>(32-13);\n u = x6 + x2 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x11 | 0;\n x3 ^= u<<7 | u>>>(32-7);\n u = x3 + x15 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x3 | 0;\n x11 ^= u<<13 | u>>>(32-13);\n u = x11 + x7 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n\n u = x0 + x3 | 0;\n x1 ^= u<<7 | u>>>(32-7);\n u = x1 + x0 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x1 | 0;\n x3 ^= u<<13 | u>>>(32-13);\n u = x3 + x2 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x4 | 0;\n x6 ^= u<<7 | u>>>(32-7);\n u = x6 + x5 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x6 | 0;\n x4 ^= u<<13 | u>>>(32-13);\n u = x4 + x7 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x9 | 0;\n x11 ^= u<<7 | u>>>(32-7);\n u = x11 + x10 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x11 | 0;\n x9 ^= u<<13 | u>>>(32-13);\n u = x9 + x8 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x14 | 0;\n x12 ^= u<<7 | u>>>(32-7);\n u = x12 + x15 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x12 | 0;\n x14 ^= u<<13 | u>>>(32-13);\n u = x14 + x13 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n }\n\n o[ 0] = x0 >>> 0 & 0xff;\n o[ 1] = x0 >>> 8 & 0xff;\n o[ 2] = x0 >>> 16 & 0xff;\n o[ 3] = x0 >>> 24 & 0xff;\n\n o[ 4] = x5 >>> 0 & 0xff;\n o[ 5] = x5 >>> 8 & 0xff;\n o[ 6] = x5 >>> 16 & 0xff;\n o[ 7] = x5 >>> 24 & 0xff;\n\n o[ 8] = x10 >>> 0 & 0xff;\n o[ 9] = x10 >>> 8 & 0xff;\n o[10] = x10 >>> 16 & 0xff;\n o[11] = x10 >>> 24 & 0xff;\n\n o[12] = x15 >>> 0 & 0xff;\n o[13] = x15 >>> 8 & 0xff;\n o[14] = x15 >>> 16 & 0xff;\n o[15] = x15 >>> 24 & 0xff;\n\n o[16] = x6 >>> 0 & 0xff;\n o[17] = x6 >>> 8 & 0xff;\n o[18] = x6 >>> 16 & 0xff;\n o[19] = x6 >>> 24 & 0xff;\n\n o[20] = x7 >>> 0 & 0xff;\n o[21] = x7 >>> 8 & 0xff;\n o[22] = x7 >>> 16 & 0xff;\n o[23] = x7 >>> 24 & 0xff;\n\n o[24] = x8 >>> 0 & 0xff;\n o[25] = x8 >>> 8 & 0xff;\n o[26] = x8 >>> 16 & 0xff;\n o[27] = x8 >>> 24 & 0xff;\n\n o[28] = x9 >>> 0 & 0xff;\n o[29] = x9 >>> 8 & 0xff;\n o[30] = x9 >>> 16 & 0xff;\n o[31] = x9 >>> 24 & 0xff;\n}\n\nfunction crypto_core_salsa20(out,inp,k,c) {\n core_salsa20(out,inp,k,c);\n}\n\nfunction crypto_core_hsalsa20(out,inp,k,c) {\n core_hsalsa20(out,inp,k,c);\n}\n\nvar sigma = new Uint8Array([101, 120, 112, 97, 110, 100, 32, 51, 50, 45, 98, 121, 116, 101, 32, 107]);\n // \"expand 32-byte k\"\n\nfunction crypto_stream_salsa20_xor(c,cpos,m,mpos,b,n,k) {\n var z = new Uint8Array(16), x = new Uint8Array(64);\n var u, i;\n for (i = 0; i < 16; i++) z[i] = 0;\n for (i = 0; i < 8; i++) z[i] = n[i];\n while (b >= 64) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < 64; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n u = 1;\n for (i = 8; i < 16; i++) {\n u = u + (z[i] & 0xff) | 0;\n z[i] = u & 0xff;\n u >>>= 8;\n }\n b -= 64;\n cpos += 64;\n mpos += 64;\n }\n if (b > 0) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < b; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n }\n return 0;\n}\n\nfunction crypto_stream_salsa20(c,cpos,b,n,k) {\n var z = new Uint8Array(16), x = new Uint8Array(64);\n var u, i;\n for (i = 0; i < 16; i++) z[i] = 0;\n for (i = 0; i < 8; i++) z[i] = n[i];\n while (b >= 64) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < 64; i++) c[cpos+i] = x[i];\n u = 1;\n for (i = 8; i < 16; i++) {\n u = u + (z[i] & 0xff) | 0;\n z[i] = u & 0xff;\n u >>>= 8;\n }\n b -= 64;\n cpos += 64;\n }\n if (b > 0) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < b; i++) c[cpos+i] = x[i];\n }\n return 0;\n}\n\nfunction crypto_stream(c,cpos,d,n,k) {\n var s = new Uint8Array(32);\n crypto_core_hsalsa20(s,n,k,sigma);\n var sn = new Uint8Array(8);\n for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n return crypto_stream_salsa20(c,cpos,d,sn,s);\n}\n\nfunction crypto_stream_xor(c,cpos,m,mpos,d,n,k) {\n var s = new Uint8Array(32);\n crypto_core_hsalsa20(s,n,k,sigma);\n var sn = new Uint8Array(8);\n for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n return crypto_stream_salsa20_xor(c,cpos,m,mpos,d,sn,s);\n}\n\n/*\n* Port of Andrew Moon's Poly1305-donna-16. Public domain.\n* https://github.com/floodyberry/poly1305-donna\n*/\n\nvar poly1305 = function(key) {\n this.buffer = new Uint8Array(16);\n this.r = new Uint16Array(10);\n this.h = new Uint16Array(10);\n this.pad = new Uint16Array(8);\n this.leftover = 0;\n this.fin = 0;\n\n var t0, t1, t2, t3, t4, t5, t6, t7;\n\n t0 = key[ 0] & 0xff | (key[ 1] & 0xff) << 8; this.r[0] = ( t0 ) & 0x1fff;\n t1 = key[ 2] & 0xff | (key[ 3] & 0xff) << 8; this.r[1] = ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n t2 = key[ 4] & 0xff | (key[ 5] & 0xff) << 8; this.r[2] = ((t1 >>> 10) | (t2 << 6)) & 0x1f03;\n t3 = key[ 6] & 0xff | (key[ 7] & 0xff) << 8; this.r[3] = ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n t4 = key[ 8] & 0xff | (key[ 9] & 0xff) << 8; this.r[4] = ((t3 >>> 4) | (t4 << 12)) & 0x00ff;\n this.r[5] = ((t4 >>> 1)) & 0x1ffe;\n t5 = key[10] & 0xff | (key[11] & 0xff) << 8; this.r[6] = ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n t6 = key[12] & 0xff | (key[13] & 0xff) << 8; this.r[7] = ((t5 >>> 11) | (t6 << 5)) & 0x1f81;\n t7 = key[14] & 0xff | (key[15] & 0xff) << 8; this.r[8] = ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n this.r[9] = ((t7 >>> 5)) & 0x007f;\n\n this.pad[0] = key[16] & 0xff | (key[17] & 0xff) << 8;\n this.pad[1] = key[18] & 0xff | (key[19] & 0xff) << 8;\n this.pad[2] = key[20] & 0xff | (key[21] & 0xff) << 8;\n this.pad[3] = key[22] & 0xff | (key[23] & 0xff) << 8;\n this.pad[4] = key[24] & 0xff | (key[25] & 0xff) << 8;\n this.pad[5] = key[26] & 0xff | (key[27] & 0xff) << 8;\n this.pad[6] = key[28] & 0xff | (key[29] & 0xff) << 8;\n this.pad[7] = key[30] & 0xff | (key[31] & 0xff) << 8;\n};\n\npoly1305.prototype.blocks = function(m, mpos, bytes) {\n var hibit = this.fin ? 0 : (1 << 11);\n var t0, t1, t2, t3, t4, t5, t6, t7, c;\n var d0, d1, d2, d3, d4, d5, d6, d7, d8, d9;\n\n var h0 = this.h[0],\n h1 = this.h[1],\n h2 = this.h[2],\n h3 = this.h[3],\n h4 = this.h[4],\n h5 = this.h[5],\n h6 = this.h[6],\n h7 = this.h[7],\n h8 = this.h[8],\n h9 = this.h[9];\n\n var r0 = this.r[0],\n r1 = this.r[1],\n r2 = this.r[2],\n r3 = this.r[3],\n r4 = this.r[4],\n r5 = this.r[5],\n r6 = this.r[6],\n r7 = this.r[7],\n r8 = this.r[8],\n r9 = this.r[9];\n\n while (bytes >= 16) {\n t0 = m[mpos+ 0] & 0xff | (m[mpos+ 1] & 0xff) << 8; h0 += ( t0 ) & 0x1fff;\n t1 = m[mpos+ 2] & 0xff | (m[mpos+ 3] & 0xff) << 8; h1 += ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n t2 = m[mpos+ 4] & 0xff | (m[mpos+ 5] & 0xff) << 8; h2 += ((t1 >>> 10) | (t2 << 6)) & 0x1fff;\n t3 = m[mpos+ 6] & 0xff | (m[mpos+ 7] & 0xff) << 8; h3 += ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n t4 = m[mpos+ 8] & 0xff | (m[mpos+ 9] & 0xff) << 8; h4 += ((t3 >>> 4) | (t4 << 12)) & 0x1fff;\n h5 += ((t4 >>> 1)) & 0x1fff;\n t5 = m[mpos+10] & 0xff | (m[mpos+11] & 0xff) << 8; h6 += ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n t6 = m[mpos+12] & 0xff | (m[mpos+13] & 0xff) << 8; h7 += ((t5 >>> 11) | (t6 << 5)) & 0x1fff;\n t7 = m[mpos+14] & 0xff | (m[mpos+15] & 0xff) << 8; h8 += ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n h9 += ((t7 >>> 5)) | hibit;\n\n c = 0;\n\n d0 = c;\n d0 += h0 * r0;\n d0 += h1 * (5 * r9);\n d0 += h2 * (5 * r8);\n d0 += h3 * (5 * r7);\n d0 += h4 * (5 * r6);\n c = (d0 >>> 13); d0 &= 0x1fff;\n d0 += h5 * (5 * r5);\n d0 += h6 * (5 * r4);\n d0 += h7 * (5 * r3);\n d0 += h8 * (5 * r2);\n d0 += h9 * (5 * r1);\n c += (d0 >>> 13); d0 &= 0x1fff;\n\n d1 = c;\n d1 += h0 * r1;\n d1 += h1 * r0;\n d1 += h2 * (5 * r9);\n d1 += h3 * (5 * r8);\n d1 += h4 * (5 * r7);\n c = (d1 >>> 13); d1 &= 0x1fff;\n d1 += h5 * (5 * r6);\n d1 += h6 * (5 * r5);\n d1 += h7 * (5 * r4);\n d1 += h8 * (5 * r3);\n d1 += h9 * (5 * r2);\n c += (d1 >>> 13); d1 &= 0x1fff;\n\n d2 = c;\n d2 += h0 * r2;\n d2 += h1 * r1;\n d2 += h2 * r0;\n d2 += h3 * (5 * r9);\n d2 += h4 * (5 * r8);\n c = (d2 >>> 13); d2 &= 0x1fff;\n d2 += h5 * (5 * r7);\n d2 += h6 * (5 * r6);\n d2 += h7 * (5 * r5);\n d2 += h8 * (5 * r4);\n d2 += h9 * (5 * r3);\n c += (d2 >>> 13); d2 &= 0x1fff;\n\n d3 = c;\n d3 += h0 * r3;\n d3 += h1 * r2;\n d3 += h2 * r1;\n d3 += h3 * r0;\n d3 += h4 * (5 * r9);\n c = (d3 >>> 13); d3 &= 0x1fff;\n d3 += h5 * (5 * r8);\n d3 += h6 * (5 * r7);\n d3 += h7 * (5 * r6);\n d3 += h8 * (5 * r5);\n d3 += h9 * (5 * r4);\n c += (d3 >>> 13); d3 &= 0x1fff;\n\n d4 = c;\n d4 += h0 * r4;\n d4 += h1 * r3;\n d4 += h2 * r2;\n d4 += h3 * r1;\n d4 += h4 * r0;\n c = (d4 >>> 13); d4 &= 0x1fff;\n d4 += h5 * (5 * r9);\n d4 += h6 * (5 * r8);\n d4 += h7 * (5 * r7);\n d4 += h8 * (5 * r6);\n d4 += h9 * (5 * r5);\n c += (d4 >>> 13); d4 &= 0x1fff;\n\n d5 = c;\n d5 += h0 * r5;\n d5 += h1 * r4;\n d5 += h2 * r3;\n d5 += h3 * r2;\n d5 += h4 * r1;\n c = (d5 >>> 13); d5 &= 0x1fff;\n d5 += h5 * r0;\n d5 += h6 * (5 * r9);\n d5 += h7 * (5 * r8);\n d5 += h8 * (5 * r7);\n d5 += h9 * (5 * r6);\n c += (d5 >>> 13); d5 &= 0x1fff;\n\n d6 = c;\n d6 += h0 * r6;\n d6 += h1 * r5;\n d6 += h2 * r4;\n d6 += h3 * r3;\n d6 += h4 * r2;\n c = (d6 >>> 13); d6 &= 0x1fff;\n d6 += h5 * r1;\n d6 += h6 * r0;\n d6 += h7 * (5 * r9);\n d6 += h8 * (5 * r8);\n d6 += h9 * (5 * r7);\n c += (d6 >>> 13); d6 &= 0x1fff;\n\n d7 = c;\n d7 += h0 * r7;\n d7 += h1 * r6;\n d7 += h2 * r5;\n d7 += h3 * r4;\n d7 += h4 * r3;\n c = (d7 >>> 13); d7 &= 0x1fff;\n d7 += h5 * r2;\n d7 += h6 * r1;\n d7 += h7 * r0;\n d7 += h8 * (5 * r9);\n d7 += h9 * (5 * r8);\n c += (d7 >>> 13); d7 &= 0x1fff;\n\n d8 = c;\n d8 += h0 * r8;\n d8 += h1 * r7;\n d8 += h2 * r6;\n d8 += h3 * r5;\n d8 += h4 * r4;\n c = (d8 >>> 13); d8 &= 0x1fff;\n d8 += h5 * r3;\n d8 += h6 * r2;\n d8 += h7 * r1;\n d8 += h8 * r0;\n d8 += h9 * (5 * r9);\n c += (d8 >>> 13); d8 &= 0x1fff;\n\n d9 = c;\n d9 += h0 * r9;\n d9 += h1 * r8;\n d9 += h2 * r7;\n d9 += h3 * r6;\n d9 += h4 * r5;\n c = (d9 >>> 13); d9 &= 0x1fff;\n d9 += h5 * r4;\n d9 += h6 * r3;\n d9 += h7 * r2;\n d9 += h8 * r1;\n d9 += h9 * r0;\n c += (d9 >>> 13); d9 &= 0x1fff;\n\n c = (((c << 2) + c)) | 0;\n c = (c + d0) | 0;\n d0 = c & 0x1fff;\n c = (c >>> 13);\n d1 += c;\n\n h0 = d0;\n h1 = d1;\n h2 = d2;\n h3 = d3;\n h4 = d4;\n h5 = d5;\n h6 = d6;\n h7 = d7;\n h8 = d8;\n h9 = d9;\n\n mpos += 16;\n bytes -= 16;\n }\n this.h[0] = h0;\n this.h[1] = h1;\n this.h[2] = h2;\n this.h[3] = h3;\n this.h[4] = h4;\n this.h[5] = h5;\n this.h[6] = h6;\n this.h[7] = h7;\n this.h[8] = h8;\n this.h[9] = h9;\n};\n\npoly1305.prototype.finish = function(mac, macpos) {\n var g = new Uint16Array(10);\n var c, mask, f, i;\n\n if (this.leftover) {\n i = this.leftover;\n this.buffer[i++] = 1;\n for (; i < 16; i++) this.buffer[i] = 0;\n this.fin = 1;\n this.blocks(this.buffer, 0, 16);\n }\n\n c = this.h[1] >>> 13;\n this.h[1] &= 0x1fff;\n for (i = 2; i < 10; i++) {\n this.h[i] += c;\n c = this.h[i] >>> 13;\n this.h[i] &= 0x1fff;\n }\n this.h[0] += (c * 5);\n c = this.h[0] >>> 13;\n this.h[0] &= 0x1fff;\n this.h[1] += c;\n c = this.h[1] >>> 13;\n this.h[1] &= 0x1fff;\n this.h[2] += c;\n\n g[0] = this.h[0] + 5;\n c = g[0] >>> 13;\n g[0] &= 0x1fff;\n for (i = 1; i < 10; i++) {\n g[i] = this.h[i] + c;\n c = g[i] >>> 13;\n g[i] &= 0x1fff;\n }\n g[9] -= (1 << 13);\n\n mask = (c ^ 1) - 1;\n for (i = 0; i < 10; i++) g[i] &= mask;\n mask = ~mask;\n for (i = 0; i < 10; i++) this.h[i] = (this.h[i] & mask) | g[i];\n\n this.h[0] = ((this.h[0] ) | (this.h[1] << 13) ) & 0xffff;\n this.h[1] = ((this.h[1] >>> 3) | (this.h[2] << 10) ) & 0xffff;\n this.h[2] = ((this.h[2] >>> 6) | (this.h[3] << 7) ) & 0xffff;\n this.h[3] = ((this.h[3] >>> 9) | (this.h[4] << 4) ) & 0xffff;\n this.h[4] = ((this.h[4] >>> 12) | (this.h[5] << 1) | (this.h[6] << 14)) & 0xffff;\n this.h[5] = ((this.h[6] >>> 2) | (this.h[7] << 11) ) & 0xffff;\n this.h[6] = ((this.h[7] >>> 5) | (this.h[8] << 8) ) & 0xffff;\n this.h[7] = ((this.h[8] >>> 8) | (this.h[9] << 5) ) & 0xffff;\n\n f = this.h[0] + this.pad[0];\n this.h[0] = f & 0xffff;\n for (i = 1; i < 8; i++) {\n f = (((this.h[i] + this.pad[i]) | 0) + (f >>> 16)) | 0;\n this.h[i] = f & 0xffff;\n }\n\n mac[macpos+ 0] = (this.h[0] >>> 0) & 0xff;\n mac[macpos+ 1] = (this.h[0] >>> 8) & 0xff;\n mac[macpos+ 2] = (this.h[1] >>> 0) & 0xff;\n mac[macpos+ 3] = (this.h[1] >>> 8) & 0xff;\n mac[macpos+ 4] = (this.h[2] >>> 0) & 0xff;\n mac[macpos+ 5] = (this.h[2] >>> 8) & 0xff;\n mac[macpos+ 6] = (this.h[3] >>> 0) & 0xff;\n mac[macpos+ 7] = (this.h[3] >>> 8) & 0xff;\n mac[macpos+ 8] = (this.h[4] >>> 0) & 0xff;\n mac[macpos+ 9] = (this.h[4] >>> 8) & 0xff;\n mac[macpos+10] = (this.h[5] >>> 0) & 0xff;\n mac[macpos+11] = (this.h[5] >>> 8) & 0xff;\n mac[macpos+12] = (this.h[6] >>> 0) & 0xff;\n mac[macpos+13] = (this.h[6] >>> 8) & 0xff;\n mac[macpos+14] = (this.h[7] >>> 0) & 0xff;\n mac[macpos+15] = (this.h[7] >>> 8) & 0xff;\n};\n\npoly1305.prototype.update = function(m, mpos, bytes) {\n var i, want;\n\n if (this.leftover) {\n want = (16 - this.leftover);\n if (want > bytes)\n want = bytes;\n for (i = 0; i < want; i++)\n this.buffer[this.leftover + i] = m[mpos+i];\n bytes -= want;\n mpos += want;\n this.leftover += want;\n if (this.leftover < 16)\n return;\n this.blocks(this.buffer, 0, 16);\n this.leftover = 0;\n }\n\n if (bytes >= 16) {\n want = bytes - (bytes % 16);\n this.blocks(m, mpos, want);\n mpos += want;\n bytes -= want;\n }\n\n if (bytes) {\n for (i = 0; i < bytes; i++)\n this.buffer[this.leftover + i] = m[mpos+i];\n this.leftover += bytes;\n }\n};\n\nfunction crypto_onetimeauth(out, outpos, m, mpos, n, k) {\n var s = new poly1305(k);\n s.update(m, mpos, n);\n s.finish(out, outpos);\n return 0;\n}\n\nfunction crypto_onetimeauth_verify(h, hpos, m, mpos, n, k) {\n var x = new Uint8Array(16);\n crypto_onetimeauth(x,0,m,mpos,n,k);\n return crypto_verify_16(h,hpos,x,0);\n}\n\nfunction crypto_secretbox(c,m,d,n,k) {\n var i;\n if (d < 32) return -1;\n crypto_stream_xor(c,0,m,0,d,n,k);\n crypto_onetimeauth(c, 16, c, 32, d - 32, c);\n for (i = 0; i < 16; i++) c[i] = 0;\n return 0;\n}\n\nfunction crypto_secretbox_open(m,c,d,n,k) {\n var i;\n var x = new Uint8Array(32);\n if (d < 32) return -1;\n crypto_stream(x,0,32,n,k);\n if (crypto_onetimeauth_verify(c, 16,c, 32,d - 32,x) !== 0) return -1;\n crypto_stream_xor(m,0,c,0,d,n,k);\n for (i = 0; i < 32; i++) m[i] = 0;\n return 0;\n}\n\nfunction set25519(r, a) {\n var i;\n for (i = 0; i < 16; i++) r[i] = a[i]|0;\n}\n\nfunction car25519(o) {\n var i, v, c = 1;\n for (i = 0; i < 16; i++) {\n v = o[i] + c + 65535;\n c = Math.floor(v / 65536);\n o[i] = v - c * 65536;\n }\n o[0] += c-1 + 37 * (c-1);\n}\n\nfunction sel25519(p, q, b) {\n var t, c = ~(b-1);\n for (var i = 0; i < 16; i++) {\n t = c & (p[i] ^ q[i]);\n p[i] ^= t;\n q[i] ^= t;\n }\n}\n\nfunction pack25519(o, n) {\n var i, j, b;\n var m = gf(), t = gf();\n for (i = 0; i < 16; i++) t[i] = n[i];\n car25519(t);\n car25519(t);\n car25519(t);\n for (j = 0; j < 2; j++) {\n m[0] = t[0] - 0xffed;\n for (i = 1; i < 15; i++) {\n m[i] = t[i] - 0xffff - ((m[i-1]>>16) & 1);\n m[i-1] &= 0xffff;\n }\n m[15] = t[15] - 0x7fff - ((m[14]>>16) & 1);\n b = (m[15]>>16) & 1;\n m[14] &= 0xffff;\n sel25519(t, m, 1-b);\n }\n for (i = 0; i < 16; i++) {\n o[2*i] = t[i] & 0xff;\n o[2*i+1] = t[i]>>8;\n }\n}\n\nfunction neq25519(a, b) {\n var c = new Uint8Array(32), d = new Uint8Array(32);\n pack25519(c, a);\n pack25519(d, b);\n return crypto_verify_32(c, 0, d, 0);\n}\n\nfunction par25519(a) {\n var d = new Uint8Array(32);\n pack25519(d, a);\n return d[0] & 1;\n}\n\nfunction unpack25519(o, n) {\n var i;\n for (i = 0; i < 16; i++) o[i] = n[2*i] + (n[2*i+1] << 8);\n o[15] &= 0x7fff;\n}\n\nfunction A(o, a, b) {\n for (var i = 0; i < 16; i++) o[i] = a[i] + b[i];\n}\n\nfunction Z(o, a, b) {\n for (var i = 0; i < 16; i++) o[i] = a[i] - b[i];\n}\n\nfunction M(o, a, b) {\n var v, c,\n t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0,\n t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0,\n t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0,\n t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0,\n b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3],\n b4 = b[4],\n b5 = b[5],\n b6 = b[6],\n b7 = b[7],\n b8 = b[8],\n b9 = b[9],\n b10 = b[10],\n b11 = b[11],\n b12 = b[12],\n b13 = b[13],\n b14 = b[14],\n b15 = b[15];\n\n v = a[0];\n t0 += v * b0;\n t1 += v * b1;\n t2 += v * b2;\n t3 += v * b3;\n t4 += v * b4;\n t5 += v * b5;\n t6 += v * b6;\n t7 += v * b7;\n t8 += v * b8;\n t9 += v * b9;\n t10 += v * b10;\n t11 += v * b11;\n t12 += v * b12;\n t13 += v * b13;\n t14 += v * b14;\n t15 += v * b15;\n v = a[1];\n t1 += v * b0;\n t2 += v * b1;\n t3 += v * b2;\n t4 += v * b3;\n t5 += v * b4;\n t6 += v * b5;\n t7 += v * b6;\n t8 += v * b7;\n t9 += v * b8;\n t10 += v * b9;\n t11 += v * b10;\n t12 += v * b11;\n t13 += v * b12;\n t14 += v * b13;\n t15 += v * b14;\n t16 += v * b15;\n v = a[2];\n t2 += v * b0;\n t3 += v * b1;\n t4 += v * b2;\n t5 += v * b3;\n t6 += v * b4;\n t7 += v * b5;\n t8 += v * b6;\n t9 += v * b7;\n t10 += v * b8;\n t11 += v * b9;\n t12 += v * b10;\n t13 += v * b11;\n t14 += v * b12;\n t15 += v * b13;\n t16 += v * b14;\n t17 += v * b15;\n v = a[3];\n t3 += v * b0;\n t4 += v * b1;\n t5 += v * b2;\n t6 += v * b3;\n t7 += v * b4;\n t8 += v * b5;\n t9 += v * b6;\n t10 += v * b7;\n t11 += v * b8;\n t12 += v * b9;\n t13 += v * b10;\n t14 += v * b11;\n t15 += v * b12;\n t16 += v * b13;\n t17 += v * b14;\n t18 += v * b15;\n v = a[4];\n t4 += v * b0;\n t5 += v * b1;\n t6 += v * b2;\n t7 += v * b3;\n t8 += v * b4;\n t9 += v * b5;\n t10 += v * b6;\n t11 += v * b7;\n t12 += v * b8;\n t13 += v * b9;\n t14 += v * b10;\n t15 += v * b11;\n t16 += v * b12;\n t17 += v * b13;\n t18 += v * b14;\n t19 += v * b15;\n v = a[5];\n t5 += v * b0;\n t6 += v * b1;\n t7 += v * b2;\n t8 += v * b3;\n t9 += v * b4;\n t10 += v * b5;\n t11 += v * b6;\n t12 += v * b7;\n t13 += v * b8;\n t14 += v * b9;\n t15 += v * b10;\n t16 += v * b11;\n t17 += v * b12;\n t18 += v * b13;\n t19 += v * b14;\n t20 += v * b15;\n v = a[6];\n t6 += v * b0;\n t7 += v * b1;\n t8 += v * b2;\n t9 += v * b3;\n t10 += v * b4;\n t11 += v * b5;\n t12 += v * b6;\n t13 += v * b7;\n t14 += v * b8;\n t15 += v * b9;\n t16 += v * b10;\n t17 += v * b11;\n t18 += v * b12;\n t19 += v * b13;\n t20 += v * b14;\n t21 += v * b15;\n v = a[7];\n t7 += v * b0;\n t8 += v * b1;\n t9 += v * b2;\n t10 += v * b3;\n t11 += v * b4;\n t12 += v * b5;\n t13 += v * b6;\n t14 += v * b7;\n t15 += v * b8;\n t16 += v * b9;\n t17 += v * b10;\n t18 += v * b11;\n t19 += v * b12;\n t20 += v * b13;\n t21 += v * b14;\n t22 += v * b15;\n v = a[8];\n t8 += v * b0;\n t9 += v * b1;\n t10 += v * b2;\n t11 += v * b3;\n t12 += v * b4;\n t13 += v * b5;\n t14 += v * b6;\n t15 += v * b7;\n t16 += v * b8;\n t17 += v * b9;\n t18 += v * b10;\n t19 += v * b11;\n t20 += v * b12;\n t21 += v * b13;\n t22 += v * b14;\n t23 += v * b15;\n v = a[9];\n t9 += v * b0;\n t10 += v * b1;\n t11 += v * b2;\n t12 += v * b3;\n t13 += v * b4;\n t14 += v * b5;\n t15 += v * b6;\n t16 += v * b7;\n t17 += v * b8;\n t18 += v * b9;\n t19 += v * b10;\n t20 += v * b11;\n t21 += v * b12;\n t22 += v * b13;\n t23 += v * b14;\n t24 += v * b15;\n v = a[10];\n t10 += v * b0;\n t11 += v * b1;\n t12 += v * b2;\n t13 += v * b3;\n t14 += v * b4;\n t15 += v * b5;\n t16 += v * b6;\n t17 += v * b7;\n t18 += v * b8;\n t19 += v * b9;\n t20 += v * b10;\n t21 += v * b11;\n t22 += v * b12;\n t23 += v * b13;\n t24 += v * b14;\n t25 += v * b15;\n v = a[11];\n t11 += v * b0;\n t12 += v * b1;\n t13 += v * b2;\n t14 += v * b3;\n t15 += v * b4;\n t16 += v * b5;\n t17 += v * b6;\n t18 += v * b7;\n t19 += v * b8;\n t20 += v * b9;\n t21 += v * b10;\n t22 += v * b11;\n t23 += v * b12;\n t24 += v * b13;\n t25 += v * b14;\n t26 += v * b15;\n v = a[12];\n t12 += v * b0;\n t13 += v * b1;\n t14 += v * b2;\n t15 += v * b3;\n t16 += v * b4;\n t17 += v * b5;\n t18 += v * b6;\n t19 += v * b7;\n t20 += v * b8;\n t21 += v * b9;\n t22 += v * b10;\n t23 += v * b11;\n t24 += v * b12;\n t25 += v * b13;\n t26 += v * b14;\n t27 += v * b15;\n v = a[13];\n t13 += v * b0;\n t14 += v * b1;\n t15 += v * b2;\n t16 += v * b3;\n t17 += v * b4;\n t18 += v * b5;\n t19 += v * b6;\n t20 += v * b7;\n t21 += v * b8;\n t22 += v * b9;\n t23 += v * b10;\n t24 += v * b11;\n t25 += v * b12;\n t26 += v * b13;\n t27 += v * b14;\n t28 += v * b15;\n v = a[14];\n t14 += v * b0;\n t15 += v * b1;\n t16 += v * b2;\n t17 += v * b3;\n t18 += v * b4;\n t19 += v * b5;\n t20 += v * b6;\n t21 += v * b7;\n t22 += v * b8;\n t23 += v * b9;\n t24 += v * b10;\n t25 += v * b11;\n t26 += v * b12;\n t27 += v * b13;\n t28 += v * b14;\n t29 += v * b15;\n v = a[15];\n t15 += v * b0;\n t16 += v * b1;\n t17 += v * b2;\n t18 += v * b3;\n t19 += v * b4;\n t20 += v * b5;\n t21 += v * b6;\n t22 += v * b7;\n t23 += v * b8;\n t24 += v * b9;\n t25 += v * b10;\n t26 += v * b11;\n t27 += v * b12;\n t28 += v * b13;\n t29 += v * b14;\n t30 += v * b15;\n\n t0 += 38 * t16;\n t1 += 38 * t17;\n t2 += 38 * t18;\n t3 += 38 * t19;\n t4 += 38 * t20;\n t5 += 38 * t21;\n t6 += 38 * t22;\n t7 += 38 * t23;\n t8 += 38 * t24;\n t9 += 38 * t25;\n t10 += 38 * t26;\n t11 += 38 * t27;\n t12 += 38 * t28;\n t13 += 38 * t29;\n t14 += 38 * t30;\n // t15 left as is\n\n // first car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n // second car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n o[ 0] = t0;\n o[ 1] = t1;\n o[ 2] = t2;\n o[ 3] = t3;\n o[ 4] = t4;\n o[ 5] = t5;\n o[ 6] = t6;\n o[ 7] = t7;\n o[ 8] = t8;\n o[ 9] = t9;\n o[10] = t10;\n o[11] = t11;\n o[12] = t12;\n o[13] = t13;\n o[14] = t14;\n o[15] = t15;\n}\n\nfunction S(o, a) {\n M(o, a, a);\n}\n\nfunction inv25519(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 253; a >= 0; a--) {\n S(c, c);\n if(a !== 2 && a !== 4) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction pow2523(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 250; a >= 0; a--) {\n S(c, c);\n if(a !== 1) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction crypto_scalarmult(q, n, p) {\n var z = new Uint8Array(32);\n var x = new Float64Array(80), r, i;\n var a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf();\n for (i = 0; i < 31; i++) z[i] = n[i];\n z[31]=(n[31]&127)|64;\n z[0]&=248;\n unpack25519(x,p);\n for (i = 0; i < 16; i++) {\n b[i]=x[i];\n d[i]=a[i]=c[i]=0;\n }\n a[0]=d[0]=1;\n for (i=254; i>=0; --i) {\n r=(z[i>>>3]>>>(i&7))&1;\n sel25519(a,b,r);\n sel25519(c,d,r);\n A(e,a,c);\n Z(a,a,c);\n A(c,b,d);\n Z(b,b,d);\n S(d,e);\n S(f,a);\n M(a,c,a);\n M(c,b,e);\n A(e,a,c);\n Z(a,a,c);\n S(b,a);\n Z(c,d,f);\n M(a,c,_121665);\n A(a,a,d);\n M(c,c,a);\n M(a,d,f);\n M(d,b,x);\n S(b,e);\n sel25519(a,b,r);\n sel25519(c,d,r);\n }\n for (i = 0; i < 16; i++) {\n x[i+16]=a[i];\n x[i+32]=c[i];\n x[i+48]=b[i];\n x[i+64]=d[i];\n }\n var x32 = x.subarray(32);\n var x16 = x.subarray(16);\n inv25519(x32,x32);\n M(x16,x16,x32);\n pack25519(q,x16);\n return 0;\n}\n\nfunction crypto_scalarmult_base(q, n) {\n return crypto_scalarmult(q, n, _9);\n}\n\nfunction crypto_box_keypair(y, x) {\n randombytes(x, 32);\n return crypto_scalarmult_base(y, x);\n}\n\nfunction crypto_box_beforenm(k, y, x) {\n var s = new Uint8Array(32);\n crypto_scalarmult(s, x, y);\n return crypto_core_hsalsa20(k, _0, s, sigma);\n}\n\nvar crypto_box_afternm = crypto_secretbox;\nvar crypto_box_open_afternm = crypto_secretbox_open;\n\nfunction crypto_box(c, m, d, n, y, x) {\n var k = new Uint8Array(32);\n crypto_box_beforenm(k, y, x);\n return crypto_box_afternm(c, m, d, n, k);\n}\n\nfunction crypto_box_open(m, c, d, n, y, x) {\n var k = new Uint8Array(32);\n crypto_box_beforenm(k, y, x);\n return crypto_box_open_afternm(m, c, d, n, k);\n}\n\nvar K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction crypto_hashblocks_hl(hh, hl, m, n) {\n var wh = new Int32Array(16), wl = new Int32Array(16),\n bh0, bh1, bh2, bh3, bh4, bh5, bh6, bh7,\n bl0, bl1, bl2, bl3, bl4, bl5, bl6, bl7,\n th, tl, i, j, h, l, a, b, c, d;\n\n var ah0 = hh[0],\n ah1 = hh[1],\n ah2 = hh[2],\n ah3 = hh[3],\n ah4 = hh[4],\n ah5 = hh[5],\n ah6 = hh[6],\n ah7 = hh[7],\n\n al0 = hl[0],\n al1 = hl[1],\n al2 = hl[2],\n al3 = hl[3],\n al4 = hl[4],\n al5 = hl[5],\n al6 = hl[6],\n al7 = hl[7];\n\n var pos = 0;\n while (n >= 128) {\n for (i = 0; i < 16; i++) {\n j = 8 * i + pos;\n wh[i] = (m[j+0] << 24) | (m[j+1] << 16) | (m[j+2] << 8) | m[j+3];\n wl[i] = (m[j+4] << 24) | (m[j+5] << 16) | (m[j+6] << 8) | m[j+7];\n }\n for (i = 0; i < 80; i++) {\n bh0 = ah0;\n bh1 = ah1;\n bh2 = ah2;\n bh3 = ah3;\n bh4 = ah4;\n bh5 = ah5;\n bh6 = ah6;\n bh7 = ah7;\n\n bl0 = al0;\n bl1 = al1;\n bl2 = al2;\n bl3 = al3;\n bl4 = al4;\n bl5 = al5;\n bl6 = al6;\n bl7 = al7;\n\n // add\n h = ah7;\n l = al7;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n // Sigma1\n h = ((ah4 >>> 14) | (al4 << (32-14))) ^ ((ah4 >>> 18) | (al4 << (32-18))) ^ ((al4 >>> (41-32)) | (ah4 << (32-(41-32))));\n l = ((al4 >>> 14) | (ah4 << (32-14))) ^ ((al4 >>> 18) | (ah4 << (32-18))) ^ ((ah4 >>> (41-32)) | (al4 << (32-(41-32))));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // Ch\n h = (ah4 & ah5) ^ (~ah4 & ah6);\n l = (al4 & al5) ^ (~al4 & al6);\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // K\n h = K[i*2];\n l = K[i*2+1];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // w\n h = wh[i%16];\n l = wl[i%16];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n th = c & 0xffff | d << 16;\n tl = a & 0xffff | b << 16;\n\n // add\n h = th;\n l = tl;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n // Sigma0\n h = ((ah0 >>> 28) | (al0 << (32-28))) ^ ((al0 >>> (34-32)) | (ah0 << (32-(34-32)))) ^ ((al0 >>> (39-32)) | (ah0 << (32-(39-32))));\n l = ((al0 >>> 28) | (ah0 << (32-28))) ^ ((ah0 >>> (34-32)) | (al0 << (32-(34-32)))) ^ ((ah0 >>> (39-32)) | (al0 << (32-(39-32))));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // Maj\n h = (ah0 & ah1) ^ (ah0 & ah2) ^ (ah1 & ah2);\n l = (al0 & al1) ^ (al0 & al2) ^ (al1 & al2);\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n bh7 = (c & 0xffff) | (d << 16);\n bl7 = (a & 0xffff) | (b << 16);\n\n // add\n h = bh3;\n l = bl3;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = th;\n l = tl;\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n bh3 = (c & 0xffff) | (d << 16);\n bl3 = (a & 0xffff) | (b << 16);\n\n ah1 = bh0;\n ah2 = bh1;\n ah3 = bh2;\n ah4 = bh3;\n ah5 = bh4;\n ah6 = bh5;\n ah7 = bh6;\n ah0 = bh7;\n\n al1 = bl0;\n al2 = bl1;\n al3 = bl2;\n al4 = bl3;\n al5 = bl4;\n al6 = bl5;\n al7 = bl6;\n al0 = bl7;\n\n if (i%16 === 15) {\n for (j = 0; j < 16; j++) {\n // add\n h = wh[j];\n l = wl[j];\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = wh[(j+9)%16];\n l = wl[(j+9)%16];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // sigma0\n th = wh[(j+1)%16];\n tl = wl[(j+1)%16];\n h = ((th >>> 1) | (tl << (32-1))) ^ ((th >>> 8) | (tl << (32-8))) ^ (th >>> 7);\n l = ((tl >>> 1) | (th << (32-1))) ^ ((tl >>> 8) | (th << (32-8))) ^ ((tl >>> 7) | (th << (32-7)));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // sigma1\n th = wh[(j+14)%16];\n tl = wl[(j+14)%16];\n h = ((th >>> 19) | (tl << (32-19))) ^ ((tl >>> (61-32)) | (th << (32-(61-32)))) ^ (th >>> 6);\n l = ((tl >>> 19) | (th << (32-19))) ^ ((th >>> (61-32)) | (tl << (32-(61-32)))) ^ ((tl >>> 6) | (th << (32-6)));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n wh[j] = (c & 0xffff) | (d << 16);\n wl[j] = (a & 0xffff) | (b << 16);\n }\n }\n }\n\n // add\n h = ah0;\n l = al0;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[0];\n l = hl[0];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[0] = ah0 = (c & 0xffff) | (d << 16);\n hl[0] = al0 = (a & 0xffff) | (b << 16);\n\n h = ah1;\n l = al1;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[1];\n l = hl[1];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[1] = ah1 = (c & 0xffff) | (d << 16);\n hl[1] = al1 = (a & 0xffff) | (b << 16);\n\n h = ah2;\n l = al2;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[2];\n l = hl[2];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[2] = ah2 = (c & 0xffff) | (d << 16);\n hl[2] = al2 = (a & 0xffff) | (b << 16);\n\n h = ah3;\n l = al3;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[3];\n l = hl[3];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[3] = ah3 = (c & 0xffff) | (d << 16);\n hl[3] = al3 = (a & 0xffff) | (b << 16);\n\n h = ah4;\n l = al4;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[4];\n l = hl[4];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[4] = ah4 = (c & 0xffff) | (d << 16);\n hl[4] = al4 = (a & 0xffff) | (b << 16);\n\n h = ah5;\n l = al5;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[5];\n l = hl[5];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[5] = ah5 = (c & 0xffff) | (d << 16);\n hl[5] = al5 = (a & 0xffff) | (b << 16);\n\n h = ah6;\n l = al6;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[6];\n l = hl[6];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[6] = ah6 = (c & 0xffff) | (d << 16);\n hl[6] = al6 = (a & 0xffff) | (b << 16);\n\n h = ah7;\n l = al7;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[7];\n l = hl[7];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[7] = ah7 = (c & 0xffff) | (d << 16);\n hl[7] = al7 = (a & 0xffff) | (b << 16);\n\n pos += 128;\n n -= 128;\n }\n\n return n;\n}\n\nfunction crypto_hash(out, m, n) {\n var hh = new Int32Array(8),\n hl = new Int32Array(8),\n x = new Uint8Array(256),\n i, b = n;\n\n hh[0] = 0x6a09e667;\n hh[1] = 0xbb67ae85;\n hh[2] = 0x3c6ef372;\n hh[3] = 0xa54ff53a;\n hh[4] = 0x510e527f;\n hh[5] = 0x9b05688c;\n hh[6] = 0x1f83d9ab;\n hh[7] = 0x5be0cd19;\n\n hl[0] = 0xf3bcc908;\n hl[1] = 0x84caa73b;\n hl[2] = 0xfe94f82b;\n hl[3] = 0x5f1d36f1;\n hl[4] = 0xade682d1;\n hl[5] = 0x2b3e6c1f;\n hl[6] = 0xfb41bd6b;\n hl[7] = 0x137e2179;\n\n crypto_hashblocks_hl(hh, hl, m, n);\n n %= 128;\n\n for (i = 0; i < n; i++) x[i] = m[b-n+i];\n x[n] = 128;\n\n n = 256-128*(n<112?1:0);\n x[n-9] = 0;\n ts64(x, n-8, (b / 0x20000000) | 0, b << 3);\n crypto_hashblocks_hl(hh, hl, x, n);\n\n for (i = 0; i < 8; i++) ts64(out, 8*i, hh[i], hl[i]);\n\n return 0;\n}\n\nfunction add(p, q) {\n var a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf(),\n g = gf(), h = gf(), t = gf();\n\n Z(a, p[1], p[0]);\n Z(t, q[1], q[0]);\n M(a, a, t);\n A(b, p[0], p[1]);\n A(t, q[0], q[1]);\n M(b, b, t);\n M(c, p[3], q[3]);\n M(c, c, D2);\n M(d, p[2], q[2]);\n A(d, d, d);\n Z(e, b, a);\n Z(f, d, c);\n A(g, d, c);\n A(h, b, a);\n\n M(p[0], e, f);\n M(p[1], h, g);\n M(p[2], g, f);\n M(p[3], e, h);\n}\n\nfunction cswap(p, q, b) {\n var i;\n for (i = 0; i < 4; i++) {\n sel25519(p[i], q[i], b);\n }\n}\n\nfunction pack(r, p) {\n var tx = gf(), ty = gf(), zi = gf();\n inv25519(zi, p[2]);\n M(tx, p[0], zi);\n M(ty, p[1], zi);\n pack25519(r, ty);\n r[31] ^= par25519(tx) << 7;\n}\n\nfunction scalarmult(p, q, s) {\n var b, i;\n set25519(p[0], gf0);\n set25519(p[1], gf1);\n set25519(p[2], gf1);\n set25519(p[3], gf0);\n for (i = 255; i >= 0; --i) {\n b = (s[(i/8)|0] >> (i&7)) & 1;\n cswap(p, q, b);\n add(q, p);\n add(p, p);\n cswap(p, q, b);\n }\n}\n\nfunction scalarbase(p, s) {\n var q = [gf(), gf(), gf(), gf()];\n set25519(q[0], X);\n set25519(q[1], Y);\n set25519(q[2], gf1);\n M(q[3], X, Y);\n scalarmult(p, q, s);\n}\n\nfunction crypto_sign_keypair(pk, sk, seeded) {\n var d = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()];\n var i;\n\n if (!seeded) randombytes(sk, 32);\n crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n scalarbase(p, d);\n pack(pk, p);\n\n for (i = 0; i < 32; i++) sk[i+32] = pk[i];\n return 0;\n}\n\nvar L = new Float64Array([0xed, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12, 0x58, 0xd6, 0x9c, 0xf7, 0xa2, 0xde, 0xf9, 0xde, 0x14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x10]);\n\nfunction modL(r, x) {\n var carry, i, j, k;\n for (i = 63; i >= 32; --i) {\n carry = 0;\n for (j = i - 32, k = i - 12; j < k; ++j) {\n x[j] += carry - 16 * x[i] * L[j - (i - 32)];\n carry = Math.floor((x[j] + 128) / 256);\n x[j] -= carry * 256;\n }\n x[j] += carry;\n x[i] = 0;\n }\n carry = 0;\n for (j = 0; j < 32; j++) {\n x[j] += carry - (x[31] >> 4) * L[j];\n carry = x[j] >> 8;\n x[j] &= 255;\n }\n for (j = 0; j < 32; j++) x[j] -= carry * L[j];\n for (i = 0; i < 32; i++) {\n x[i+1] += x[i] >> 8;\n r[i] = x[i] & 255;\n }\n}\n\nfunction reduce(r) {\n var x = new Float64Array(64), i;\n for (i = 0; i < 64; i++) x[i] = r[i];\n for (i = 0; i < 64; i++) r[i] = 0;\n modL(r, x);\n}\n\n// Note: difference from C - smlen returned, not passed as argument.\nfunction crypto_sign(sm, m, n, sk) {\n var d = new Uint8Array(64), h = new Uint8Array(64), r = new Uint8Array(64);\n var i, j, x = new Float64Array(64);\n var p = [gf(), gf(), gf(), gf()];\n\n crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n var smlen = n + 64;\n for (i = 0; i < n; i++) sm[64 + i] = m[i];\n for (i = 0; i < 32; i++) sm[32 + i] = d[32 + i];\n\n crypto_hash(r, sm.subarray(32), n+32);\n reduce(r);\n scalarbase(p, r);\n pack(sm, p);\n\n for (i = 32; i < 64; i++) sm[i] = sk[i];\n crypto_hash(h, sm, n + 64);\n reduce(h);\n\n for (i = 0; i < 64; i++) x[i] = 0;\n for (i = 0; i < 32; i++) x[i] = r[i];\n for (i = 0; i < 32; i++) {\n for (j = 0; j < 32; j++) {\n x[i+j] += h[i] * d[j];\n }\n }\n\n modL(sm.subarray(32), x);\n return smlen;\n}\n\nfunction unpackneg(r, p) {\n var t = gf(), chk = gf(), num = gf(),\n den = gf(), den2 = gf(), den4 = gf(),\n den6 = gf();\n\n set25519(r[2], gf1);\n unpack25519(r[1], p);\n S(num, r[1]);\n M(den, num, D);\n Z(num, num, r[2]);\n A(den, r[2], den);\n\n S(den2, den);\n S(den4, den2);\n M(den6, den4, den2);\n M(t, den6, num);\n M(t, t, den);\n\n pow2523(t, t);\n M(t, t, num);\n M(t, t, den);\n M(t, t, den);\n M(r[0], t, den);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) M(r[0], r[0], I);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) return -1;\n\n if (par25519(r[0]) === (p[31]>>7)) Z(r[0], gf0, r[0]);\n\n M(r[3], r[0], r[1]);\n return 0;\n}\n\nfunction crypto_sign_open(m, sm, n, pk) {\n var i;\n var t = new Uint8Array(32), h = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()],\n q = [gf(), gf(), gf(), gf()];\n\n if (n < 64) return -1;\n\n if (unpackneg(q, pk)) return -1;\n\n for (i = 0; i < n; i++) m[i] = sm[i];\n for (i = 0; i < 32; i++) m[i+32] = pk[i];\n crypto_hash(h, m, n);\n reduce(h);\n scalarmult(p, q, h);\n\n scalarbase(q, sm.subarray(32));\n add(p, q);\n pack(t, p);\n\n n -= 64;\n if (crypto_verify_32(sm, 0, t, 0)) {\n for (i = 0; i < n; i++) m[i] = 0;\n return -1;\n }\n\n for (i = 0; i < n; i++) m[i] = sm[i + 64];\n return n;\n}\n\nvar crypto_secretbox_KEYBYTES = 32,\n crypto_secretbox_NONCEBYTES = 24,\n crypto_secretbox_ZEROBYTES = 32,\n crypto_secretbox_BOXZEROBYTES = 16,\n crypto_scalarmult_BYTES = 32,\n crypto_scalarmult_SCALARBYTES = 32,\n crypto_box_PUBLICKEYBYTES = 32,\n crypto_box_SECRETKEYBYTES = 32,\n crypto_box_BEFORENMBYTES = 32,\n crypto_box_NONCEBYTES = crypto_secretbox_NONCEBYTES,\n crypto_box_ZEROBYTES = crypto_secretbox_ZEROBYTES,\n crypto_box_BOXZEROBYTES = crypto_secretbox_BOXZEROBYTES,\n crypto_sign_BYTES = 64,\n crypto_sign_PUBLICKEYBYTES = 32,\n crypto_sign_SECRETKEYBYTES = 64,\n crypto_sign_SEEDBYTES = 32,\n crypto_hash_BYTES = 64;\n\nnacl.lowlevel = {\n crypto_core_hsalsa20: crypto_core_hsalsa20,\n crypto_stream_xor: crypto_stream_xor,\n crypto_stream: crypto_stream,\n crypto_stream_salsa20_xor: crypto_stream_salsa20_xor,\n crypto_stream_salsa20: crypto_stream_salsa20,\n crypto_onetimeauth: crypto_onetimeauth,\n crypto_onetimeauth_verify: crypto_onetimeauth_verify,\n crypto_verify_16: crypto_verify_16,\n crypto_verify_32: crypto_verify_32,\n crypto_secretbox: crypto_secretbox,\n crypto_secretbox_open: crypto_secretbox_open,\n crypto_scalarmult: crypto_scalarmult,\n crypto_scalarmult_base: crypto_scalarmult_base,\n crypto_box_beforenm: crypto_box_beforenm,\n crypto_box_afternm: crypto_box_afternm,\n crypto_box: crypto_box,\n crypto_box_open: crypto_box_open,\n crypto_box_keypair: crypto_box_keypair,\n crypto_hash: crypto_hash,\n crypto_sign: crypto_sign,\n crypto_sign_keypair: crypto_sign_keypair,\n crypto_sign_open: crypto_sign_open,\n\n crypto_secretbox_KEYBYTES: crypto_secretbox_KEYBYTES,\n crypto_secretbox_NONCEBYTES: crypto_secretbox_NONCEBYTES,\n crypto_secretbox_ZEROBYTES: crypto_secretbox_ZEROBYTES,\n crypto_secretbox_BOXZEROBYTES: crypto_secretbox_BOXZEROBYTES,\n crypto_scalarmult_BYTES: crypto_scalarmult_BYTES,\n crypto_scalarmult_SCALARBYTES: crypto_scalarmult_SCALARBYTES,\n crypto_box_PUBLICKEYBYTES: crypto_box_PUBLICKEYBYTES,\n crypto_box_SECRETKEYBYTES: crypto_box_SECRETKEYBYTES,\n crypto_box_BEFORENMBYTES: crypto_box_BEFORENMBYTES,\n crypto_box_NONCEBYTES: crypto_box_NONCEBYTES,\n crypto_box_ZEROBYTES: crypto_box_ZEROBYTES,\n crypto_box_BOXZEROBYTES: crypto_box_BOXZEROBYTES,\n crypto_sign_BYTES: crypto_sign_BYTES,\n crypto_sign_PUBLICKEYBYTES: crypto_sign_PUBLICKEYBYTES,\n crypto_sign_SECRETKEYBYTES: crypto_sign_SECRETKEYBYTES,\n crypto_sign_SEEDBYTES: crypto_sign_SEEDBYTES,\n crypto_hash_BYTES: crypto_hash_BYTES,\n\n gf: gf,\n D: D,\n L: L,\n pack25519: pack25519,\n unpack25519: unpack25519,\n M: M,\n A: A,\n S: S,\n Z: Z,\n pow2523: pow2523,\n add: add,\n set25519: set25519,\n modL: modL,\n scalarmult: scalarmult,\n scalarbase: scalarbase,\n};\n\n/* High-level API */\n\nfunction checkLengths(k, n) {\n if (k.length !== crypto_secretbox_KEYBYTES) throw new Error('bad key size');\n if (n.length !== crypto_secretbox_NONCEBYTES) throw new Error('bad nonce size');\n}\n\nfunction checkBoxLengths(pk, sk) {\n if (pk.length !== crypto_box_PUBLICKEYBYTES) throw new Error('bad public key size');\n if (sk.length !== crypto_box_SECRETKEYBYTES) throw new Error('bad secret key size');\n}\n\nfunction checkArrayTypes() {\n for (var i = 0; i < arguments.length; i++) {\n if (!(arguments[i] instanceof Uint8Array))\n throw new TypeError('unexpected type, use Uint8Array');\n }\n}\n\nfunction cleanup(arr) {\n for (var i = 0; i < arr.length; i++) arr[i] = 0;\n}\n\nnacl.randomBytes = function(n) {\n var b = new Uint8Array(n);\n randombytes(b, n);\n return b;\n};\n\nnacl.secretbox = function(msg, nonce, key) {\n checkArrayTypes(msg, nonce, key);\n checkLengths(key, nonce);\n var m = new Uint8Array(crypto_secretbox_ZEROBYTES + msg.length);\n var c = new Uint8Array(m.length);\n for (var i = 0; i < msg.length; i++) m[i+crypto_secretbox_ZEROBYTES] = msg[i];\n crypto_secretbox(c, m, m.length, nonce, key);\n return c.subarray(crypto_secretbox_BOXZEROBYTES);\n};\n\nnacl.secretbox.open = function(box, nonce, key) {\n checkArrayTypes(box, nonce, key);\n checkLengths(key, nonce);\n var c = new Uint8Array(crypto_secretbox_BOXZEROBYTES + box.length);\n var m = new Uint8Array(c.length);\n for (var i = 0; i < box.length; i++) c[i+crypto_secretbox_BOXZEROBYTES] = box[i];\n if (c.length < 32) return null;\n if (crypto_secretbox_open(m, c, c.length, nonce, key) !== 0) return null;\n return m.subarray(crypto_secretbox_ZEROBYTES);\n};\n\nnacl.secretbox.keyLength = crypto_secretbox_KEYBYTES;\nnacl.secretbox.nonceLength = crypto_secretbox_NONCEBYTES;\nnacl.secretbox.overheadLength = crypto_secretbox_BOXZEROBYTES;\n\nnacl.scalarMult = function(n, p) {\n checkArrayTypes(n, p);\n if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n if (p.length !== crypto_scalarmult_BYTES) throw new Error('bad p size');\n var q = new Uint8Array(crypto_scalarmult_BYTES);\n crypto_scalarmult(q, n, p);\n return q;\n};\n\nnacl.scalarMult.base = function(n) {\n checkArrayTypes(n);\n if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n var q = new Uint8Array(crypto_scalarmult_BYTES);\n crypto_scalarmult_base(q, n);\n return q;\n};\n\nnacl.scalarMult.scalarLength = crypto_scalarmult_SCALARBYTES;\nnacl.scalarMult.groupElementLength = crypto_scalarmult_BYTES;\n\nnacl.box = function(msg, nonce, publicKey, secretKey) {\n var k = nacl.box.before(publicKey, secretKey);\n return nacl.secretbox(msg, nonce, k);\n};\n\nnacl.box.before = function(publicKey, secretKey) {\n checkArrayTypes(publicKey, secretKey);\n checkBoxLengths(publicKey, secretKey);\n var k = new Uint8Array(crypto_box_BEFORENMBYTES);\n crypto_box_beforenm(k, publicKey, secretKey);\n return k;\n};\n\nnacl.box.after = nacl.secretbox;\n\nnacl.box.open = function(msg, nonce, publicKey, secretKey) {\n var k = nacl.box.before(publicKey, secretKey);\n return nacl.secretbox.open(msg, nonce, k);\n};\n\nnacl.box.open.after = nacl.secretbox.open;\n\nnacl.box.keyPair = function() {\n var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_box_SECRETKEYBYTES);\n crypto_box_keypair(pk, sk);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.box.keyPair.fromSecretKey = function(secretKey) {\n checkArrayTypes(secretKey);\n if (secretKey.length !== crypto_box_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n crypto_scalarmult_base(pk, secretKey);\n return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.box.publicKeyLength = crypto_box_PUBLICKEYBYTES;\nnacl.box.secretKeyLength = crypto_box_SECRETKEYBYTES;\nnacl.box.sharedKeyLength = crypto_box_BEFORENMBYTES;\nnacl.box.nonceLength = crypto_box_NONCEBYTES;\nnacl.box.overheadLength = nacl.secretbox.overheadLength;\n\nnacl.sign = function(msg, secretKey) {\n checkArrayTypes(msg, secretKey);\n if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var signedMsg = new Uint8Array(crypto_sign_BYTES+msg.length);\n crypto_sign(signedMsg, msg, msg.length, secretKey);\n return signedMsg;\n};\n\nnacl.sign.open = function(signedMsg, publicKey) {\n checkArrayTypes(signedMsg, publicKey);\n if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n throw new Error('bad public key size');\n var tmp = new Uint8Array(signedMsg.length);\n var mlen = crypto_sign_open(tmp, signedMsg, signedMsg.length, publicKey);\n if (mlen < 0) return null;\n var m = new Uint8Array(mlen);\n for (var i = 0; i < m.length; i++) m[i] = tmp[i];\n return m;\n};\n\nnacl.sign.detached = function(msg, secretKey) {\n var signedMsg = nacl.sign(msg, secretKey);\n var sig = new Uint8Array(crypto_sign_BYTES);\n for (var i = 0; i < sig.length; i++) sig[i] = signedMsg[i];\n return sig;\n};\n\nnacl.sign.detached.verify = function(msg, sig, publicKey) {\n checkArrayTypes(msg, sig, publicKey);\n if (sig.length !== crypto_sign_BYTES)\n throw new Error('bad signature size');\n if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n throw new Error('bad public key size');\n var sm = new Uint8Array(crypto_sign_BYTES + msg.length);\n var m = new Uint8Array(crypto_sign_BYTES + msg.length);\n var i;\n for (i = 0; i < crypto_sign_BYTES; i++) sm[i] = sig[i];\n for (i = 0; i < msg.length; i++) sm[i+crypto_sign_BYTES] = msg[i];\n return (crypto_sign_open(m, sm, sm.length, publicKey) >= 0);\n};\n\nnacl.sign.keyPair = function() {\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n crypto_sign_keypair(pk, sk);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.keyPair.fromSecretKey = function(secretKey) {\n checkArrayTypes(secretKey);\n if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n for (var i = 0; i < pk.length; i++) pk[i] = secretKey[32+i];\n return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.sign.keyPair.fromSeed = function(seed) {\n checkArrayTypes(seed);\n if (seed.length !== crypto_sign_SEEDBYTES)\n throw new Error('bad seed size');\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n for (var i = 0; i < 32; i++) sk[i] = seed[i];\n crypto_sign_keypair(pk, sk, true);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.publicKeyLength = crypto_sign_PUBLICKEYBYTES;\nnacl.sign.secretKeyLength = crypto_sign_SECRETKEYBYTES;\nnacl.sign.seedLength = crypto_sign_SEEDBYTES;\nnacl.sign.signatureLength = crypto_sign_BYTES;\n\nnacl.hash = function(msg) {\n checkArrayTypes(msg);\n var h = new Uint8Array(crypto_hash_BYTES);\n crypto_hash(h, msg, msg.length);\n return h;\n};\n\nnacl.hash.hashLength = crypto_hash_BYTES;\n\nnacl.verify = function(x, y) {\n checkArrayTypes(x, y);\n // Zero length arguments are considered not equal.\n if (x.length === 0 || y.length === 0) return false;\n if (x.length !== y.length) return false;\n return (vn(x, 0, y, 0, x.length) === 0) ? true : false;\n};\n\nnacl.setPRNG = function(fn) {\n randombytes = fn;\n};\n\n(function() {\n // Initialize PRNG if environment provides CSPRNG.\n // If not, methods calling randombytes will throw.\n var crypto = typeof self !== 'undefined' ? (self.crypto || self.msCrypto) : null;\n if (crypto && crypto.getRandomValues) {\n // Browsers.\n var QUOTA = 65536;\n nacl.setPRNG(function(x, n) {\n var i, v = new Uint8Array(n);\n for (i = 0; i < n; i += QUOTA) {\n crypto.getRandomValues(v.subarray(i, i + Math.min(n - i, QUOTA)));\n }\n for (i = 0; i < n; i++) x[i] = v[i];\n cleanup(v);\n });\n } else if (typeof require !== 'undefined') {\n // Node.js.\n crypto = require('crypto');\n if (crypto && crypto.randomBytes) {\n nacl.setPRNG(function(x, n) {\n var i, v = crypto.randomBytes(n);\n for (i = 0; i < n; i++) x[i] = v[i];\n cleanup(v);\n });\n }\n }\n})();\n\n})(typeof module !== 'undefined' && module.exports ? module.exports : (self.nacl = self.nacl || {}));\n","import type { KeyPair } from \"near-api-js\";\nimport {\n binaryWriteUint16BE,\n borshSerialize,\n bs58Decode,\n bytesConcat,\n hexEncode,\n sha256Hash,\n utf8Decode,\n} from \"../codecs\";\n\nexport function implicitAddressFromPublicKey(publicKey: string): string {\n const key_without_prefix = publicKey.replace(/^ed25519:/, \"\");\n const implicitAddress = hexEncode(bs58Decode(key_without_prefix));\n return implicitAddress;\n}\n\nexport function kwilNep413Signer(\n recipient: string,\n): (keyPair: KeyPair) => (messageBytes: Uint8Array) => Promise<Uint8Array> {\n return (keyPair: KeyPair) =>\n async (messageBytes: Uint8Array): Promise<Uint8Array> => {\n const message = utf8Decode(messageBytes);\n const nonceLength = 32;\n const nonce = crypto.getRandomValues(new Uint8Array(nonceLength));\n\n const nep413BorschSchema = {\n struct: {\n message: \"string\",\n nonce: { array: { type: \"u8\", len: nonceLength } },\n recipient: \"string\",\n callbackUrl: { option: \"string\" },\n },\n } as const;\n\n const tag = 2147484061; // 2**31 + 413\n\n const { signature } = keyPair.sign(\n sha256Hash(\n bytesConcat(\n borshSerialize(\"u32\", tag),\n borshSerialize(nep413BorschSchema, { message, nonce, recipient }),\n ),\n ),\n );\n\n const kwilNep413BorschSchema = {\n struct: {\n tag: \"u32\",\n ...nep413BorschSchema.struct,\n },\n };\n\n const kwilNep413BorshParams = {\n tag,\n message,\n nonce,\n recipient,\n };\n\n const kwilNep413BorshPayload = borshSerialize(kwilNep413BorschSchema, kwilNep413BorshParams);\n\n return bytesConcat(\n binaryWriteUint16BE(kwilNep413BorshPayload.length),\n kwilNep413BorshPayload,\n signature,\n );\n };\n}\n","import { KwilSigner } from \"@kwilteam/kwil-js\";\nimport type {\n Wallet as NearWallet,\n SignMessageParams,\n SignedMessage,\n} from \"@near-wallet-selector/core\";\nimport {\n base64Decode,\n binaryWriteUint16BE,\n borshSerialize,\n bytesConcat,\n utf8Decode,\n} from \"../codecs\";\nimport type { KwilActionClient } from \"../kwil-infra/create-kwil-client\";\nimport { implicitAddressFromPublicKey } from \"../kwil-nep413-signer\";\nimport type { Store } from \"../store\";\n\nconst NEAR_WALLET_TYPES: string[] = [\n \"browser\",\n \"injected\",\n \"instant-link\",\n \"hardware\",\n \"bridge\",\n] satisfies NearWallet[\"type\"][];\n\nexport function looksLikeNearWallet(signer: unknown): signer is NearWallet {\n return (\n signer !== null &&\n typeof signer === \"object\" &&\n \"id\" in signer &&\n \"metadata\" in signer &&\n \"type\" in signer &&\n typeof signer.type === \"string\" &&\n NEAR_WALLET_TYPES.includes(signer.type)\n );\n}\n\nclass KwilNonce {\n bytes: Uint8Array;\n\n constructor(length = 32) {\n // We're in the browser, so there's a window.crypto for sure.\n /* global crypto */\n this.bytes = crypto.getRandomValues(new Uint8Array(length));\n }\n\n get clampUTF8() {\n return this.bytes.map((byte) => byte & 127);\n }\n}\n\nexport async function createNearWalletKwilSigner(\n wallet: NearWallet,\n currentAddress: string,\n store: Store,\n kwilClient: KwilActionClient,\n recipient = \"idos.network\",\n): Promise<KwilSigner> {\n if (!wallet.signMessage) throw new Error(\"Only wallets with signMessage are supported.\");\n\n if (wallet.id === \"my-near-wallet\") {\n const { accountId, signature, publicKey, error } = Object.fromEntries(\n new URLSearchParams(window.location.hash.slice(1)).entries(),\n );\n\n if (signature) {\n store.set(\"signer-address\", accountId);\n store.set(\"signer-public-key\", publicKey);\n }\n\n const signMessageOriginal = wallet.signMessage.bind(wallet);\n\n wallet.signMessage = async ({\n message,\n recipient,\n }: SignMessageParams): Promise<SignedMessage & { nonce?: Uint8Array }> => {\n if (error) return Promise.reject();\n\n const lastMessage = store.get(\"sign-last-message\");\n if (signature && message === lastMessage) {\n const nonce = Buffer.from(store.get(\"sign-last-nonce\"));\n const callbackUrl = store.get(\"sign-last-url\");\n\n return Promise.resolve({\n accountId: currentAddress,\n publicKey,\n signature,\n nonce,\n message,\n callbackUrl,\n } as SignedMessage);\n }\n const callbackUrl = window.location.href;\n const nonce = Buffer.from(new KwilNonce(32).clampUTF8);\n\n store.set(\"sign-last-message\", message);\n store.set(\"sign-last-nonce\", Array.from(nonce));\n store.set(\"sign-last-url\", callbackUrl);\n\n signMessageOriginal({ message, nonce, recipient, callbackUrl });\n\n return new Promise(() => ({}) as SignedMessage);\n };\n }\n\n const storedAddress = store.get(\"signer-address\");\n\n let publicKey = store.get(\"signer-public-key\");\n\n if (storedAddress !== currentAddress || !publicKey) {\n store.reset();\n // To avoid re-using the old signer's kgw cookie.\n // When kwil-js supports multi cookies, we can remove this.\n await kwilClient.client.auth.logoutKGW();\n\n const message = \"idOS authentication\";\n const nonce = Buffer.from(new KwilNonce(32).bytes);\n // biome-ignore lint/style/noNonNullAssertion: Only non-signing wallets return void.\n ({ publicKey } = (await wallet.signMessage({ message, recipient, nonce }))!);\n\n store.set(\"signer-address\", currentAddress);\n store.set(\"signer-public-key\", publicKey);\n }\n\n const signer = async (message: string | Uint8Array): Promise<Uint8Array> => {\n if (typeof message !== \"string\") {\n // biome-ignore lint/style/noParameterAssign: we're narrowing the type on purpose.\n message = utf8Decode(message);\n }\n\n if (!wallet.signMessage) {\n throw new Error(\"Only wallets with signMessage are supported.\");\n }\n\n const nonceSuggestion = Buffer.from(new KwilNonce(32).bytes);\n\n const {\n nonce = nonceSuggestion,\n signature,\n // @ts-ignore Signatures don't seem to be updated for NEP413 yet.\n callbackUrl,\n // biome-ignore lint/style/noNonNullAssertion: Only non-signing wallets return void.\n } = (await (\n wallet.signMessage as (\n _: SignMessageParams,\n ) => Promise<SignedMessage & { nonce?: Uint8Array }>\n )({\n message,\n recipient,\n nonce: nonceSuggestion,\n }))!;\n\n const nep413BorschSchema = {\n struct: {\n tag: \"u32\",\n message: \"string\",\n nonce: { array: { type: \"u8\", len: 32 } },\n recipient: \"string\",\n callbackUrl: { option: \"string\" },\n },\n };\n\n const nep413BorshParams = {\n tag: 2147484061,\n message,\n nonce: Array.from(nonce),\n recipient,\n callbackUrl,\n };\n\n const nep413BorshPayload = borshSerialize(nep413BorschSchema, nep413BorshParams);\n\n return bytesConcat(\n binaryWriteUint16BE(nep413BorshPayload.length),\n nep413BorshPayload,\n base64Decode(signature),\n );\n };\n\n return new KwilSigner(signer, implicitAddressFromPublicKey(publicKey), \"nep413\");\n}\n","import { KwilSigner } from \"@kwilteam/kwil-js\";\nimport type { Wallet as EthersWallet, JsonRpcSigner } from \"ethers\";\nimport type { KeyPair } from \"near-api-js\";\nimport nacl from \"tweetnacl\";\nimport { bs58Encode } from \"../codecs\";\nimport type { KwilActionClient } from \"../kwil-infra/create-kwil-client\";\nimport { implicitAddressFromPublicKey, kwilNep413Signer } from \"../kwil-nep413-signer\";\nimport type { Store } from \"../store\";\nimport type { Wallet } from \"../types\";\nimport { createNearWalletKwilSigner, looksLikeNearWallet } from \"./create-near-wallet-kwil-signer\";\n\n/**\n * Helper function to check if the given object is a `nacl.SignKeyPair`.\n */\nfunction isNaclSignKeyPair(object: unknown): object is nacl.SignKeyPair {\n return (\n object !== null &&\n typeof object === \"object\" &&\n \"publicKey\" in object &&\n object.publicKey instanceof Uint8Array &&\n object.publicKey.length === nacl.sign.publicKeyLength &&\n \"secretKey\" in object &&\n object.secretKey instanceof Uint8Array &&\n object.secretKey.length === nacl.sign.secretKeyLength\n );\n}\n\n/**\n * Helper function to check if the given object is a NEAR KeyPair.\n */\nfunction isNearKeyPair(object: unknown): object is KeyPair {\n return (\n object !== null &&\n typeof object === \"object\" &&\n \"getPublicKey\" in object &&\n \"sign\" in object &&\n typeof object.getPublicKey === \"function\" &&\n typeof object.sign === \"function\"\n );\n}\n\nexport type KwilSignerType = KeyPair | EthersWallet | nacl.SignKeyPair | JsonRpcSigner;\nexport type SignerAddress = string;\n\n/**\n * Creates a `KwilSigner` and its associated `SignerAddress`.\n *\n * This function is explicitly marked as being for backend use only because it doesn't reset\n * the KGW cookie when logging out and re-logging in with a different wallet.\n */\nexport function createServerKwilSigner(signer: KwilSignerType): [KwilSigner, SignerAddress] {\n if (isNaclSignKeyPair(signer)) {\n return [\n new KwilSigner(\n async (msg: Uint8Array) => nacl.sign.detached(msg, signer.secretKey),\n signer.publicKey,\n \"ed25519\",\n ),\n implicitAddressFromPublicKey(bs58Encode(signer.publicKey)),\n ];\n }\n\n if (isNearKeyPair(signer)) {\n const publicKey = implicitAddressFromPublicKey(signer.getPublicKey().toString());\n return [\n new KwilSigner(kwilNep413Signer(\"idos-issuer\")(signer), publicKey, \"nep413\"),\n publicKey,\n ];\n }\n\n if (\"address\" in signer) {\n return [new KwilSigner(signer, signer.address), signer.address];\n }\n\n // Force the check that `signer` is never.\n // If these lines start complaining, that means we're missing an `if` above.\n return ((_: never) => {\n throw new Error(\"Invalid `signer` type\");\n })(signer);\n}\n\nexport async function createClientKwilSigner(\n store: Store,\n kwilClient: KwilActionClient,\n wallet: Wallet,\n): Promise<[KwilSigner, SignerAddress]> {\n if (\"connect\" in wallet && \"address\" in wallet) {\n //biome-ignore lint/style/noParameterAssign: we're narrowing the type on purpose.\n wallet = wallet as unknown as JsonRpcSigner;\n const currentAddress = await wallet.getAddress();\n\n const storedAddress = store.get(\"signer-address\");\n\n if (storedAddress !== currentAddress) {\n // To avoid re-using the old signer's kgw cookie.\n // When kwil-js supports multi cookies, we can remove this.\n await kwilClient.client.auth.logoutKGW();\n\n store.set(\"signer-address\", currentAddress);\n }\n\n return [new KwilSigner(wallet, currentAddress), currentAddress];\n }\n\n if (looksLikeNearWallet(wallet)) {\n const accountId = (await wallet.getAccounts())[0].accountId;\n\n return [await createNearWalletKwilSigner(wallet, accountId, store, kwilClient), accountId];\n }\n\n // Force the check that `signer` is `never`.\n // If these lines start complaining, that means we're missing an `if` above.\n return ((_: never) => {\n throw new Error(\"Invalid `signer` type\");\n })(wallet);\n}\n","interface PipeCodecArgs<T> {\n encode: (o: string) => T;\n decode: (o: T) => string;\n}\n\nexport class Store {\n keyPrefix = \"idOS-\";\n readonly storage: Storage;\n readonly REMEMBER_DURATION_KEY = \"storage-expiration\";\n\n constructor(storage: Storage) {\n this.storage = storage;\n if (this.hasRememberDurationElapsed()) {\n this.reset();\n }\n }\n\n #setLocalStorage(key: string, value: string): void {\n this.storage.setItem(`${this.keyPrefix}${key}`, value);\n }\n\n #getLocalStorage(key: string): string | null {\n return this.storage.getItem(`${this.keyPrefix}${key}`);\n }\n\n #removeLocalStorage(key: string): void {\n this.storage.removeItem(`${this.keyPrefix}${key}`);\n }\n\n pipeCodec<T>({ encode, decode }: PipeCodecArgs<T>): Store {\n return {\n ...this,\n // biome-ignore lint/suspicious/noExplicitAny: `any` is fine here.\n get: (key: string): any => {\n const result = this.get(key);\n if (result) return decode(result);\n },\n // biome-ignore lint/suspicious/noExplicitAny: `any` is fine here.\n set: (key: string, value: any): void => this.set.call(this, key, encode(value)),\n };\n }\n\n // biome-ignore lint/suspicious/noExplicitAny: `any` is fine here.\n get(key: string): any {\n const value = this.#getLocalStorage(key);\n\n if (!value) {\n return undefined;\n }\n\n return JSON.parse(value);\n }\n\n setRememberDuration(days?: number | string): void {\n const daysNumber =\n !days || Number.isNaN(Number(days)) ? undefined : Number.parseInt(days.toString());\n\n if (!daysNumber) {\n this.#removeLocalStorage(this.REMEMBER_DURATION_KEY);\n return;\n }\n\n const date = new Date();\n date.setTime(date.getTime() + daysNumber * 24 * 60 * 60 * 1000);\n this.#setLocalStorage(this.REMEMBER_DURATION_KEY, JSON.stringify(date.toISOString()));\n }\n\n hasRememberDurationElapsed(): boolean {\n const value = this.#getLocalStorage(this.REMEMBER_DURATION_KEY);\n if (!value) return false;\n\n // If the value doesn't decode right, we're going to assume that somebody messed around with it.\n // The absence of a value means `false` today. So, we're following suit on the reasoning: consider it absent.\n // Furthermore, since this is not really a recoverable situation, we're going to clean up that stored value.\n\n let str: string;\n try {\n str = JSON.parse(value);\n } catch (_) {\n this.#removeLocalStorage(this.REMEMBER_DURATION_KEY);\n return false;\n }\n\n const expires = Date.parse(str);\n if (Number.isNaN(expires)) {\n this.#removeLocalStorage(this.REMEMBER_DURATION_KEY);\n return false;\n }\n\n return expires < Date.now();\n }\n\n // biome-ignore lint/suspicious/noExplicitAny: `any` is fine here.\n set(key: string, value: any): void {\n if (!key || typeof key !== \"string\") {\n throw new Error(`Bad key: ${key}`);\n }\n\n if (!value) {\n return;\n }\n\n this.#setLocalStorage(key, JSON.stringify(value));\n }\n\n reset(): void {\n for (const key of Object.keys(this.storage)) {\n if (key.startsWith(this.keyPrefix)) {\n this.storage.removeItem(key);\n }\n }\n }\n}\n","import invariant from \"tiny-invariant\";\nimport nacl from \"tweetnacl\";\nimport { base64Decode, base64Encode, hexEncode, utf8Encode } from \"../codecs\";\nimport type { InsertableIDOSCredential } from \"../types\";\n\nexport async function buildInsertableIDOSCredential(\n userId: string,\n publicNotes: string,\n content: string,\n recipientEncryptionPublicKey: string,\n encryptorPublicKey: string,\n): Promise<InsertableIDOSCredential> {\n invariant(recipientEncryptionPublicKey, \"Missing `recipientEncryptionPublicKey`\");\n invariant(encryptorPublicKey, \"Missing `encryptorPublicKey`\");\n\n const ephemeralAuthenticationKeyPair = nacl.sign.keyPair();\n\n const publicNotesSignature = nacl.sign.detached(\n utf8Encode(publicNotes),\n ephemeralAuthenticationKeyPair.secretKey,\n );\n\n return {\n user_id: userId,\n content,\n\n public_notes: publicNotes,\n public_notes_signature: base64Encode(publicNotesSignature),\n\n broader_signature: base64Encode(\n nacl.sign.detached(\n Uint8Array.from([...publicNotesSignature, ...base64Decode(content)]),\n ephemeralAuthenticationKeyPair.secretKey,\n ),\n ),\n\n issuer_auth_public_key: hexEncode(ephemeralAuthenticationKeyPair.publicKey, true),\n encryptor_public_key: encryptorPublicKey,\n };\n}\n","import { base64Encode, type idOSCredential } from \"@idos-network/core\";\n\nimport type {\n DiscoverUserEncryptionPublicKeyResponse,\n EnclaveOptions,\n EnclaveProvider,\n StoredData,\n} from \"./types\";\n\nexport class IframeEnclave implements EnclaveProvider {\n options: Omit<EnclaveOptions, \"container\" | \"url\">;\n container: string;\n iframe: HTMLIFrameElement;\n hostUrl: URL;\n\n constructor(options: EnclaveOptions) {\n const { container, ...other } = options;\n\n this.container = container;\n this.options = other;\n this.hostUrl = new URL(other.url ?? \"https://enclave.idos.network\");\n this.iframe = document.createElement(\"iframe\");\n this.iframe.id = \"idos-enclave-iframe\";\n }\n\n async load(): Promise<void> {\n await this.loadEnclave();\n await this.requestToEnclave({ configure: this.options });\n }\n\n async reconfigure(options: Omit<EnclaveOptions, \"container\" | \"url\">): Promise<void> {\n Object.assign(this.options, options);\n await this.requestToEnclave({ configure: this.options });\n }\n\n async ready(userId: string, expectedUserEncryptionPublicKey?: string): Promise<Uint8Array> {\n let { encryptionPublicKey: userEncryptionPublicKey } = (await this.requestToEnclave({\n storage: {\n userId,\n expectedUserEncryptionPublicKey,\n },\n })) as StoredData;\n\n while (!userEncryptionPublicKey) {\n this.showEnclave();\n try {\n userEncryptionPublicKey = (await this.requestToEnclave({\n keys: {},\n })) as Uint8Array;\n } catch (e) {\n if (this.options.throwOnUserCancelUnlock) throw e;\n } finally {\n this.hideEnclave();\n }\n }\n\n return userEncryptionPublicKey;\n }\n\n async reset(): Promise<void> {\n this.requestToEnclave({ reset: {} });\n }\n\n async confirm(message: string): Promise<boolean> {\n this.showEnclave();\n\n return this.requestToEnclave({ confirm: { message } }).then((response) => {\n this.hideEnclave();\n return response as boolean;\n });\n }\n\n async encrypt(\n message: Uint8Array,\n receiverPublicKey: Uint8Array,\n ): Promise<{ content: Uint8Array; encryptorPublicKey: Uint8Array }> {\n return this.requestToEnclave({\n encrypt: { message, receiverPublicKey },\n }) as Promise<{ content: Uint8Array; encryptorPublicKey: Uint8Array }>;\n }\n\n async decrypt(message: Uint8Array, senderPublicKey: Uint8Array): Promise<Uint8Array> {\n return this.requestToEnclave({\n decrypt: { fullMessage: message, senderPublicKey },\n }) as Promise<Uint8Array>;\n }\n\n filterCredentials(\n credentials: idOSCredential[],\n privateFieldFilters: { pick: Record<string, unknown[]>; omit: Record<string, unknown[]> },\n ): Promise<idOSCredential[]> {\n return this.requestToEnclave({\n filterCredentials: { credentials, privateFieldFilters },\n }) as Promise<idOSCredential[]>;\n }\n\n async loadEnclave(): Promise<void> {\n const container =\n document.querySelector(this.container) ||\n throwNewError(Error, `Can't find container with selector ${this.container}`);\n\n // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Permissions-Policy#directives\n const permissionsPolicies = [\"publickey-credentials-get\", \"storage-access\"];\n\n // https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe#sandbox\n const liftedSandboxRestrictions = [\n \"forms\",\n \"modals\",\n \"popups\",\n \"popups-to-escape-sandbox\",\n \"same-origin\",\n \"scripts\",\n ].map((toLift) => `allow-${toLift}`);\n\n // https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe#referrerpolicy\n const referrerPolicy = \"origin\";\n\n const styles = {\n \"aspect-ratio\": \"4/1\",\n \"background-color\": \"transparent\",\n border: \"none\",\n display: \"block\",\n width: \"100%\",\n };\n\n this.iframe.allow = permissionsPolicies.join(\"; \");\n this.iframe.referrerPolicy = referrerPolicy;\n this.iframe.sandbox.add(...liftedSandboxRestrictions);\n this.iframe.src = this.hostUrl.toString();\n for (const [k, v] of Object.entries(styles)) {\n this.iframe.style.setProperty(k, v);\n }\n\n let el: HTMLElement | null;\n // biome-ignore lint/suspicious/noAssignInExpressions: it's on purpose\n while ((el = document.getElementById(this.iframe.id))) {\n console.log(\"reinstalling idOS iframe...\");\n container.removeChild(el);\n }\n container.appendChild(this.iframe);\n\n return new Promise((resolve) =>\n this.iframe.addEventListener(\n \"load\",\n () => {\n resolve();\n },\n { once: true },\n ),\n );\n }\n\n showEnclave(): void {\n // biome-ignore lint/style/noNonNullAssertion: Make the explosion visible.\n this.iframe.parentElement!.classList.add(\"visible\");\n }\n\n hideEnclave(): void {\n // biome-ignore lint/style/noNonNullAssertion: Make the explosion visible.\n this.iframe.parentElement!.classList.remove(\"visible\");\n }\n\n // biome-ignore lint/suspicious/noExplicitAny: `any` is fine here. We will type it properly later.\n async requestToEnclave(request: any): Promise<any> {\n return new Promise((resolve, reject) => {\n const { port1, port2 } = new MessageChannel();\n\n port1.onmessage = ({ data }) => {\n port1.close();\n data.error ? reject(data.error) : resolve(data.result);\n };\n\n // biome-ignore lint/style/noNonNullAssertion: Make the explosion visible.\n this.iframe.contentWindow!.postMessage(request, this.hostUrl.origin, [port2]);\n });\n }\n\n async backupPasswordOrSecret(): Promise<void> {\n const abortController = new AbortController();\n this.showEnclave();\n\n window.addEventListener(\n \"message\",\n async (event) => {\n if (event.data.type !== \"idOS:store\" || event.origin !== this.hostUrl.origin) return;\n\n let status = \"\";\n\n try {\n status = \"success\";\n this.hideEnclave();\n } catch (_) {\n status = \"failure\";\n this.hideEnclave();\n }\n\n event.ports[0].postMessage({\n result: {\n type: \"idOS:store\",\n status,\n },\n });\n event.ports[0].close();\n abortController.abort();\n },\n { signal: abortController.signal },\n );\n\n try {\n await this.requestToEnclave({\n backupPasswordOrSecret: {},\n });\n } catch (error) {\n console.error(error);\n } finally {\n this.hideEnclave();\n }\n }\n\n async discoverUserEncryptionPublicKey(\n userId: string,\n ): Promise<DiscoverUserEncryptionPublicKeyResponse> {\n if (this.options.mode !== \"new\")\n throw new Error(\"You can only call `discoverUserEncryptionPublicKey` when mode is `new`.\");\n\n const userEncryptionPublicKey = await this.ready(userId);\n\n return {\n userId,\n userEncryptionPublicKey: base64Encode(userEncryptionPublicKey),\n };\n }\n}\n\nfunction throwNewError(ErrorClass: ErrorConstructor, ...args: Parameters<ErrorConstructor>): never {\n throw new ErrorClass(...args);\n}\n","import {\n base64Decode,\n base64Encode,\n hexEncodeSha256Hash,\n utf8Decode,\n utf8Encode,\n} from \"@idos-network/core/codecs\";\nimport {\n type AddWalletParams,\n type GetGrantsParams,\n type ShareableCredential,\n addWallet,\n addWallets,\n createAttribute,\n createCredentialCopy,\n getAccessGrantsOwned,\n getAllCredentials,\n getAttributes,\n getCredentialById,\n getCredentialOwned,\n getGrants,\n getGrantsCount,\n getSharedCredential,\n getUserProfile,\n getWallets,\n hasProfile,\n type idOSDAGSignatureParams,\n removeCredential,\n removeWallet,\n removeWallets,\n requestDAGMessage,\n requestDWGMessage,\n revokeAccessGrant,\n shareCredential,\n} from \"@idos-network/core/kwil-actions\";\nimport {\n type KwilActionClient,\n createClientKwilSigner,\n createWebKwilClient,\n} from \"@idos-network/core/kwil-infra\";\nimport { Store } from \"@idos-network/core/store\";\nimport type {\n DelegatedWriteGrant,\n Wallet,\n idOSCredential,\n idOSGrant,\n idOSUser,\n idOSUserAttribute,\n idOSWallet,\n} from \"@idos-network/core/types\";\nimport { buildInsertableIDOSCredential } from \"@idos-network/core/utils\";\nimport type { KwilSigner } from \"@kwilteam/kwil-js\";\nimport { negate } from \"es-toolkit\";\nimport { every, get } from \"es-toolkit/compat\";\nimport invariant from \"tiny-invariant\";\nimport { type EnclaveOptions, type EnclaveProvider, IframeEnclave } from \"./enclave\";\n\ntype Properties<T> = {\n // biome-ignore lint/complexity/noBannedTypes: All functions are to be removed.\n [K in keyof T as Exclude<T[K], Function> extends never ? never : K]: T[K];\n};\n\nexport type idOSClient =\n | idOSClientConfiguration\n | idOSClientIdle\n | idOSClientWithUserSigner\n | idOSClientLoggedIn;\n\nexport class idOSClientConfiguration {\n readonly state: \"configuration\";\n readonly chainId?: string;\n readonly nodeUrl: string;\n readonly enclaveOptions: Omit<EnclaveOptions, \"mode\">;\n\n constructor(params: {\n chainId?: string;\n nodeUrl: string;\n enclaveOptions: Omit<EnclaveOptions, \"mode\">;\n }) {\n this.state = \"configuration\";\n this.chainId = params.chainId;\n this.nodeUrl = params.nodeUrl;\n this.enclaveOptions = params.enclaveOptions;\n }\n\n async createClient(): Promise<idOSClientIdle> {\n return idOSClientIdle.fromConfig(this);\n }\n}\n\nexport class idOSClientIdle {\n readonly state: \"idle\";\n readonly store: Store;\n readonly kwilClient: KwilActionClient;\n readonly enclaveProvider: EnclaveProvider;\n\n constructor(store: Store, kwilClient: KwilActionClient, enclaveProvider: EnclaveProvider) {\n this.state = \"idle\";\n this.store = store;\n this.kwilClient = kwilClient;\n this.enclaveProvider = enclaveProvider;\n }\n\n static async fromConfig(params: idOSClientConfiguration): Promise<idOSClientIdle> {\n const store = new Store(window.localStorage);\n const kwilClient = await createWebKwilClient({\n nodeUrl: params.nodeUrl,\n chainId: params.chainId,\n });\n\n const enclaveProvider = new IframeEnclave({ ...params.enclaveOptions });\n await enclaveProvider.load();\n\n return new idOSClientIdle(store, kwilClient, enclaveProvider);\n }\n\n async addressHasProfile(address: string): Promise<boolean> {\n return hasProfile(this.kwilClient, address);\n }\n\n async withUserSigner(signer: Wallet): Promise<idOSClientWithUserSigner> {\n const [kwilSigner, walletIdentifier] = await createClientKwilSigner(\n this.store,\n this.kwilClient,\n signer,\n );\n this.kwilClient.setSigner(kwilSigner);\n\n return new idOSClientWithUserSigner(this, signer, kwilSigner, walletIdentifier);\n }\n\n async logOut(): Promise<idOSClientIdle> {\n return this;\n }\n}\n\nexport class idOSClientWithUserSigner implements Omit<Properties<idOSClientIdle>, \"state\"> {\n readonly state: \"with-user-signer\";\n readonly store: Store;\n readonly kwilClient: KwilActionClient;\n readonly enclaveProvider: EnclaveProvider;\n readonly signer: Wallet;\n readonly kwilSigner: KwilSigner;\n readonly walletIdentifier: string;\n\n constructor(\n idOSClientIdle: idOSClientIdle,\n signer: Wallet,\n kwilSigner: KwilSigner,\n walletIdentifier: string,\n ) {\n this.state = \"with-user-signer\";\n this.store = idOSClientIdle.store;\n this.kwilClient = idOSClientIdle.kwilClient;\n this.enclaveProvider = idOSClientIdle.enclaveProvider;\n this.signer = signer;\n this.kwilSigner = kwilSigner;\n this.walletIdentifier = walletIdentifier;\n }\n\n async logOut(): Promise<idOSClientIdle> {\n this.kwilClient.setSigner(undefined);\n return new idOSClientIdle(this.store, this.kwilClient, this.enclaveProvider);\n }\n\n async hasProfile(): Promise<boolean> {\n return hasProfile(this.kwilClient, this.walletIdentifier);\n }\n\n async getUserEncryptionPublicKey(userId: string): Promise<string> {\n await this.enclaveProvider.reconfigure({ mode: \"new\" });\n const { userEncryptionPublicKey } =\n await this.enclaveProvider.discoverUserEncryptionPublicKey(userId);\n return userEncryptionPublicKey;\n }\n\n async logIn(): Promise<idOSClientLoggedIn> {\n if (!(await this.hasProfile())) throw new Error(\"User does not have a profile\");\n\n await this.enclaveProvider.reconfigure({ mode: \"existing\" });\n const kwilUser = await getUserProfile(this.kwilClient);\n\n return new idOSClientLoggedIn(this, kwilUser);\n }\n}\n\nexport class idOSClientLoggedIn implements Omit<Properties<idOSClientWithUserSigner>, \"state\"> {\n readonly state: \"logged-in\";\n readonly store: Store;\n readonly kwilClient: KwilActionClient;\n readonly enclaveProvider: EnclaveProvider;\n readonly signer: Wallet;\n readonly kwilSigner: KwilSigner;\n readonly walletIdentifier: string;\n readonly user: idOSUser;\n\n constructor(idOSClientWithUserSigner: idOSClientWithUserSigner, user: idOSUser) {\n this.state = \"logged-in\";\n this.store = idOSClientWithUserSigner.store;\n this.kwilClient = idOSClientWithUserSigner.kwilClient;\n this.enclaveProvider = idOSClientWithUserSigner.enclaveProvider;\n this.signer = idOSClientWithUserSigner.signer;\n this.kwilSigner = idOSClientWithUserSigner.kwilSigner;\n this.walletIdentifier = idOSClientWithUserSigner.walletIdentifier;\n this.user = user;\n }\n\n async logOut(): Promise<idOSClientIdle> {\n this.kwilClient.setSigner(undefined);\n return new idOSClientIdle(this.store, this.kwilClient, this.enclaveProvider);\n }\n\n async requestDWGMessage(params: DelegatedWriteGrant): Promise<string> {\n return requestDWGMessage(this.kwilClient, params);\n }\n\n async removeCredential(id: string): Promise<{ id: string }> {\n return await removeCredential(this.kwilClient, id);\n }\n\n async getCredentialById(id: string): Promise<idOSCredential | undefined> {\n return getCredentialById(this.kwilClient, id);\n }\n\n async shareCredential(credential: ShareableCredential): Promise<ShareableCredential> {\n return shareCredential(this.kwilClient, credential);\n }\n\n async getAllCredentials(): Promise<idOSCredential[]> {\n return getAllCredentials(this.kwilClient);\n }\n\n async getAccessGrantsOwned(): Promise<idOSGrant[]> {\n return getAccessGrantsOwned(this.kwilClient);\n }\n\n async getCredentialOwned(id: string): Promise<idOSCredential | undefined> {\n return getCredentialOwned(this.kwilClient, id);\n }\n\n async getAttributes(): Promise<idOSUserAttribute[]> {\n return getAttributes(this.kwilClient);\n }\n\n async createAttribute(attribute: idOSUserAttribute): Promise<idOSUserAttribute> {\n return createAttribute(this.kwilClient, attribute);\n }\n\n async getCredentialContentSha256Hash(id: string): Promise<string> {\n const credential = await getCredentialById(this.kwilClient, id);\n\n invariant(credential, `\"idOSCredential\" with id ${id} not found`);\n\n await this.enclaveProvider.ready(this.user.id, this.user.recipient_encryption_public_key);\n\n const plaintext = await this.enclaveProvider.decrypt(\n base64Decode(credential.content),\n base64Decode(credential.encryptor_public_key),\n );\n\n return hexEncodeSha256Hash(plaintext);\n }\n\n async createCredentialCopy(\n id: string,\n consumerRecipientEncryptionPublicKey: string,\n consumerAddress: string,\n lockedUntil: number,\n ): Promise<{ id: string }> {\n const originalCredential = await getCredentialById(this.kwilClient, id);\n invariant(originalCredential, `\"idOSCredential\" with id ${id} not found`);\n\n await this.enclaveProvider.ready(this.user.id, this.user.recipient_encryption_public_key);\n\n const decryptedContent = await this.enclaveProvider.decrypt(\n base64Decode(originalCredential.content),\n base64Decode(originalCredential.encryptor_public_key),\n );\n const { content, encryptorPublicKey } = await this.enclaveProvider.encrypt(\n decryptedContent,\n base64Decode(consumerRecipientEncryptionPublicKey),\n );\n\n const insertableCredential = {\n ...(await buildInsertableIDOSCredential(\n originalCredential.user_id,\n \"\",\n base64Encode(content),\n consumerRecipientEncryptionPublicKey,\n base64Encode(encryptorPublicKey),\n )),\n grantee_wallet_identifier: consumerAddress,\n locked_until: lockedUntil,\n };\n\n const copyId = crypto.randomUUID();\n\n await createCredentialCopy(this.kwilClient, {\n original_credential_id: originalCredential.id,\n ...originalCredential,\n ...insertableCredential,\n id: copyId,\n });\n\n return { id: copyId };\n }\n\n async requestDAGMessage(params: idOSDAGSignatureParams): Promise<string> {\n return requestDAGMessage(this.kwilClient, params);\n }\n\n async getGrants(params: GetGrantsParams): Promise<{ grants: idOSGrant[]; totalCount: number }> {\n return {\n grants: await getGrants(this.kwilClient, params),\n totalCount: await this.getGrantsCount(),\n };\n }\n\n async addWallets(params: AddWalletParams[]): Promise<AddWalletParams[]> {\n return addWallets(this.kwilClient, params);\n }\n\n async getGrantsCount(): Promise<number> {\n return getGrantsCount(this.kwilClient);\n }\n\n async getSharedCredential(id: string): Promise<idOSCredential | undefined> {\n return getSharedCredential(this.kwilClient, id);\n }\n\n async revokeAccessGrant(grantId: string): Promise<{ id: string }> {\n return revokeAccessGrant(this.kwilClient, grantId);\n }\n\n async addWallet(params: AddWalletParams): Promise<AddWalletParams> {\n return addWallet(this.kwilClient, params);\n }\n\n async getWallets(): Promise<idOSWallet[]> {\n return getWallets(this.kwilClient);\n }\n\n async removeWallet(id: string): Promise<{ id: string }> {\n return removeWallet(this.kwilClient, id);\n }\n\n async removeWallets(ids: string[]): Promise<string[]> {\n return removeWallets(this.kwilClient, ids);\n }\n\n async filterCredentials(requirements: {\n acceptedIssuers: {\n authPublicKey: string;\n }[];\n publicNotesFieldFilters?: {\n pick: Record<string, unknown[]>;\n omit: Record<string, unknown[]>;\n };\n privateFieldFilters?: {\n pick: Record<string, unknown[]>;\n omit: Record<string, unknown[]>;\n };\n }): Promise<idOSCredential[]> {\n const matchCriteria = (content: Record<string, unknown>, criteria: Record<string, unknown[]>) =>\n every(Object.entries(criteria), ([path, targetSet]) =>\n targetSet.includes(get(content, path)),\n );\n\n const credentials = await this.getAllCredentials();\n const originalCredentials = credentials.filter(\n (cred) => !cred.original_id && !!cred.public_notes,\n );\n\n invariant(originalCredentials.length, \"No original credentials found\");\n let result = originalCredentials.filter((cred) => {\n return requirements.acceptedIssuers?.some(\n (issuer) => issuer.authPublicKey === cred.issuer_auth_public_key,\n );\n });\n\n const publicNotesFieldFilters = requirements.publicNotesFieldFilters;\n if (publicNotesFieldFilters) {\n result = result.filter((credential) => {\n let publicNotes: Record<string, string>;\n try {\n publicNotes = JSON.parse(credential.public_notes);\n } catch (_) {\n throw new Error(`Credential ${credential.id} has non-JSON public notes\".replace(\"{}`);\n }\n return (\n matchCriteria(publicNotes, publicNotesFieldFilters.pick) &&\n negate(() => matchCriteria(publicNotes, publicNotesFieldFilters.omit))\n );\n });\n }\n\n const privateFieldFilters = requirements.privateFieldFilters;\n if (privateFieldFilters) {\n result = await this.enclaveProvider.filterCredentials(result, privateFieldFilters);\n }\n\n return result;\n }\n\n async requestAccessGrant(\n credentialId: string,\n {\n consumerEncryptionPublicKey,\n consumerAuthPublicKey,\n }: { consumerEncryptionPublicKey: string; consumerAuthPublicKey: string },\n ): Promise<idOSCredential> {\n const credential = await getCredentialById(this.kwilClient, credentialId);\n const contentHash = await this.getCredentialContentSha256Hash(credentialId);\n\n invariant(credential, `\"idOSCredential\" with id ${credentialId} not found`);\n\n const plaintextContent = utf8Decode(\n await this.enclaveProvider.decrypt(\n base64Decode(credential.content),\n base64Decode(credential.encryptor_public_key),\n ),\n );\n\n await this.enclaveProvider.ready(this.user.id, this.user.recipient_encryption_public_key);\n\n const { content, encryptorPublicKey } = await this.enclaveProvider.encrypt(\n utf8Encode(plaintextContent),\n base64Decode(consumerEncryptionPublicKey),\n );\n\n const insertableCredential = {\n ...credential,\n ...(await buildInsertableIDOSCredential(\n credential.user_id,\n \"\",\n base64Encode(content),\n consumerAuthPublicKey,\n base64Encode(encryptorPublicKey),\n )),\n original_credential_id: credential.id,\n id: crypto.randomUUID(),\n grantee_wallet_identifier: consumerAuthPublicKey,\n locked_until: 0,\n content_hash: contentHash,\n };\n\n await this.shareCredential(insertableCredential);\n\n return insertableCredential;\n }\n}\n\nexport type {\n DelegatedWriteGrant,\n idOSCredential,\n idOSGrant,\n idOSUser,\n idOSUserAttribute,\n idOSWallet,\n EnclaveOptions,\n EnclaveProvider,\n};\n\nexport function createIDOSClient(params: {\n nodeUrl: string;\n enclaveOptions: Omit<EnclaveOptions, \"mode\">;\n}): idOSClientConfiguration {\n return new idOSClientConfiguration({\n nodeUrl: params.nodeUrl,\n enclaveOptions: params.enclaveOptions,\n });\n}\n"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,24,25],"mappings":"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EAC7B;GACE,MAAM;GACN,MAAM,SAAS;EAChB;EACD;GACE,MAAM;GACN,MAAM,SAAS;EAChB;EACD;GACE,MAAM;GACN,MAAM,SAAS;EAChB;EACD;GACE,MAAM;GACN,MAAM,SAAS;EAChB;EACD;GACE,MAAM;GACN,MAAM,SAAS;EAChB;EACD;GACE,MAAM;GACN,MAAM,SAAS;EAChB;EACD;GACE,MAAM;GACN,MAAM,SAAS;EAChB;EACD;GACE,MAAM;GACN,MAAM,SAAS;EAChB;CACF;CACD,gBAAgB;EACd;GACE,MAAM;GACN,MAAM,SAAS;EAChB;EACD;GACE,MAAM;GACN,MAAM,SAAS;EAChB;EACD;GACE,MAAM;GACN,MAAM,SAAS;EAChB;EACD;GACE,MAAM;GACN,MAAM,SAAS;EAChB;EACD;GACE,MAAM;GACN,MAAM,SAAS;EAChB;EACD;GACE,MAAM;GACN,MAAM,SAAS;EAChB;EACD;GACE,MAAM;GACN,MAAM,SAAS;EAChB;CACF;CACD,iBAAiB,CAAE;CACnB,gCAAgC,CAC9B;EACE,MAAM;EACN,MAAM,SAAS;CAChB,GACD;EACE,MAAM;EACN,MAAM,SAAS;CAChB,CACF;CACD,6BAA6B,CAC3B;EACE,MAAM;EACN,MAAM,SAAS;CAChB,GACD;EACE,MAAM;EACN,MAAM,SAAS;CAChB,CACF;CACD,mBAAmB,CACjB;EACE,MAAM;EACN,MAAM,SAAS;CAChB,CACF;CACD,kBAAkB;EAChB;GACE,MAAM;GACN,MAAM,SAAS;EAChB;EACD;GACE,MAAM;GACN,MAAM,SAAS;EAChB;EACD;GACE,MAAM;GACN,MAAM,SAAS;EAChB;EACD;GACE,MAAM;GACN,MAAM,SAAS;EAChB;EACD;GACE,MAAM;GACN,MAAM,SAAS;EAChB;EACD;GACE,MAAM;GACN,MAAM,SAAS;EAChB;EACD;GACE,MAAM;GACN,MAAM,SAAS;EAChB;EACD;GACE,MAAM;GACN,MAAM,SAAS;EAChB;EACD;GACE,MAAM;GACN,MAAM,SAAS;EAChB;EACD;GACE,MAAM;GACN,MAAM,SAAS;EAChB;EACD;GACE,MAAM;GACN,MAAM,SAAS;EAChB;CACF;CACD,wBAAwB;EACtB;GACE,MAAM;GACN,MAAM,SAAS;EAChB;EACD;GACE,MAAM;GACN,MAAM,SAAS;EAChB;EACD;GACE,MAAM;GACN,MAAM,SAAS;EAChB;EACD;GACE,MAAM;GACN,MAAM,SAAS;EAChB;EACD;GACE,MAAM;GACN,MAAM,SAAS;EAChB;EACD;GACE,MAAM;GACN,MAAM,SAAS;EAChB;EACD;GACE,MAAM;GACN,MAAM,SAAS;EAChB;EACD;GACE,MAAM;GACN,MAAM,SAAS;EAChB;CACF;CACD,8BAA8B;EAC5B;GACE,MAAM;GACN,MAAM,SAAS;EAChB;EACD;GACE,MAAM;GACN,MAAM,SAAS;EAChB;EACD;GACE,MAAM;GACN,MAAM,SAAS;EAChB;EACD;GACE,MAAM;GACN,MAAM,SAAS;EAChB;EACD;GACE,MAAM;GACN,MAAM,SAAS;EAChB;EACD;GACE,MAAM;GACN,MAAM,SAAS;EAChB;EACD;GACE,MAAM;GACN,MAAM,SAAS;EAChB;EACD;GACE,MAAM;GACN,MAAM,SAAS;EAChB;EACD;GACE,MAAM;GACN,MAAM,SAAS;EAChB;EACD;GACE,MAAM;GACN,MAAM,SAAS;EAChB;EACD;GACE,MAAM;GACN,MAAM,SAAS;EAChB;EACD;GACE,MAAM;GACN,MAAM,SAAS;EAChB;EACD;GACE,MAAM;GACN,MAAM,SAAS;EAChB;EACD;GACE,MAAM;GACN,MAAM,SAAS;EAChB;CACF;CACD,2BAA2B;EACzB;GACE,MAAM;GACN,MAAM,SAAS;EAChB;EACD;GACE,MAAM;GACN,MAAM,SAAS;EAChB;EACD;GACE,MAAM;GACN,MAAM,SAAS;EAChB;EACD;GACE,MAAM;GACN,MAAM,SAAS;EAChB;EACD;GACE,MAAM;GACN,MAAM,SAAS;EAChB;EACD;GACE,MAAM;GACN,MAAM,SAAS;EAChB;EACD;GACE,MAAM;GACN,MAAM,SAAS;EAChB;EACD;GACE,MAAM;GACN,MAAM,SAAS;EAChB;EACD;GACE,MAAM;GACN,MAAM,SAAS;EAChB;EACD;GACE,MAAM;GACN,MAAM,SAAS;EAChB;EACD;GACE,MAAM;GACN,MAAM,SAAS;EAChB;EACD;GACE,MAAM;GACN,MAAM,SAAS;EAChB;EACD;GACE,MAAM;GACN,MAAM,SAAS;EAChB;EACD;GACE,MAAM;GACN,MAAM,SAAS;EAChB;EACD;GACE,MAAM;GACN,MAAM,SAAS;EAChB;EACD;GACE,MAAM;GACN,MAAM,SAAS;EAChB;EACD;GACE,MAAM;GACN,MAAM,SAAS;EAChB;EACD;GACE,MAAM;GACN,MAAM,SAAS;EAChB;EACD;GACE,MAAM;GACN,MAAM,SAAS;EAChB;EACD;GACE,MAAM;GACN,MAAM,SAAS;EAChB;EACD;GACE,MAAM;GACN,MAAM,SAAS;EAChB;CACF;CACD,sBAAsB,CACpB;EACE,MAAM;EACN,MAAM,SAAS;CAChB,CACF;CACD,uBAAuB,CACrB;EACE,MAAM;EACN,MAAM,SAAS;CAChB,CACF;CACD,2BAA2B,CACzB;EACE,MAAM;EACN,MAAM,SAAS;CAChB,CACF;CACD,eAAe;EACb;GACE,MAAM;GACN,MAAM,SAAS;EAChB;EACD;GACE,MAAM;GACN,MAAM,SAAS;EAChB;EACD;GACE,MAAM;GACN,MAAM,SAAS;EAChB;CACF;CACD,gBAAgB,CAAE;CAClB,gBAAgB;EACd;GACE,MAAM;GACN,MAAM,SAAS;EAChB;EACD;GACE,MAAM;GACN,MAAM,SAAS;EAChB;EACD;GACE,MAAM;GACN,MAAM,SAAS;EAChB;CACF;CACD,kBAAkB,CAChB;EACE,MAAM;EACN,MAAM,SAAS;CAChB,CACF;CACD,iBAAiB;EACf;GACE,MAAM;GACN,MAAM,SAAS;EAChB;EACD;GACE,MAAM;GACN,MAAM,SAAS;EAChB;EACD;GACE,MAAM;GACN,MAAM,SAAS;EAChB;EACD;GACE,MAAM;GACN,MAAM,SAAS;EAChB;CACF;CACD,aAAa;EACX;GACE,MAAM;GACN,MAAM,SAAS;EAChB;EACD;GACE,MAAM;GACN,MAAM,SAAS;EAChB;EACD;GACE,MAAM;GACN,MAAM,SAAS;EAChB;EACD;GACE,MAAM;GACN,MAAM,SAAS;EAChB;EACD;GACE,MAAM;GACN,MAAM,SAAS;EAChB;EACD;GACE,MAAM;GACN,MAAM,SAAS;EAChB;EACD;GACE,MAAM;GACN,MAAM,SAAS;EAChB;CACF;CACD,qBAAqB,CACnB;EACE,MAAM;EACN,MAAM,SAAS;CAChB,CACF;CACD,yBAAyB,CAAE;CAC3B,2BAA2B;EACzB;GACE,MAAM;GACN,MAAM,SAAS;EAChB;EACD;GACE,MAAM;GACN,MAAM,SAAS;EAChB;EACD;GACE,MAAM;GACN,MAAM,SAAS;EAChB;CACF;CACD,iCAAiC,CAC/B;EACE,MAAM;EACN,MAAM,SAAS;CAChB,CACF;CACD,0BAA0B,CACxB;EACE,MAAM;EACN,MAAM,SAAS;CAChB,CACF;CACD,aAAa;EACX;GACE,MAAM;GACN,MAAM,SAAS;EAChB;EACD;GACE,MAAM;GACN,MAAM,SAAS;EAChB;EACD;GACE,MAAM;GACN,MAAM,SAAS;EAChB;EACD;GACE,MAAM;GACN,MAAM,SAAS;EAChB;EACD;GACE,MAAM;GACN,MAAM,SAAS;EAChB;CACF;CACD,2BAA2B;EACzB;GACE,MAAM;GACN,MAAM,SAAS;EAChB;EACD;GACE,MAAM;GACN,MAAM,SAAS;EAChB;EACD;GACE,MAAM;GACN,MAAM,SAAS;EAChB;EACD;GACE,MAAM;GACN,MAAM,SAAS;EAChB;EACD;GACE,MAAM;GACN,MAAM,SAAS;EAChB;EACD;GACE,MAAM;GACN,MAAM,SAAS;EAChB;CACF;CACD,kCAAkC,CAChC;EACE,MAAM;EACN,MAAM,SAAS;CAChB,CACF;CACD,aAAa,CACX;EACE,MAAM;EACN,MAAM,SAAS;CAChB,CACF;AACF;;;;;;;;ACzjBD,IAAa,mBAAb,MAA8B;CAC5B;CACA,AAAS;CAET,YAAYC,QAA4B;AACtC,OAAK,SAAS;CACf;CAED,oBAAoBC,YAAoBC,SAAkC,CAAE,GAAoB;AAC9F,OAAK,WAAW,OAAO,KAAK,OAAO,CAAC,OAAQ,QAAO,CAAE;EAErD,MAAM,OAAQ,aAA6D;AAE3E,SAAO,KAAK,IAA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AM,IAAI;AACV,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,OAAI,EAAE;AACN,SAAM,IAAI;AACV,SAAM,IAAI;AACV,SAAM,IAAI;AACV,SAAM,IAAI;AACV,SAAM,IAAI;AACV,SAAM,IAAI;AACV,SAAM,IAAI;AACV,SAAM,IAAI;AACV,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,OAAI,EAAE;AACN,SAAM,IAAI;AACV,SAAM,IAAI;AACV,SAAM,IAAI;AACV,SAAM,IAAI;AACV,SAAM,IAAI;AACV,SAAM,IAAI;AACV,SAAM,IAAI;AACV,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,OAAI,EAAE;AACN,SAAM,IAAI;AACV,SAAM,IAAI;AACV,SAAM,IAAI;AACV,SAAM,IAAI;AACV,SAAM,IAAI;AACV,SAAM,IAAI;AACV,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,OAAI,EAAE;AACN,SAAM,IAAI;AACV,SAAM,IAAI;AACV,SAAM,IAAI;AACV,SAAM,IAAI;AACV,SAAM,IAAI;AACV,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,OAAI,EAAE;AACN,SAAM,IAAI;AACV,SAAM,IAAI;AACV,SAAM,IAAI;AACV,SAAM,IAAI;AACV,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,OAAI,EAAE;AACN,SAAM,IAAI;AACV,SAAM,IAAI;AACV,SAAM,IAAI;AACV,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,OAAI,EAAE;AACN,SAAM,IAAI;AACV,SAAM,IAAI;AACV,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,OAAI,EAAE;AACN,SAAM,IAAI;AACV,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,OAAI,EAAE;AACN,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,OAAI,EAAE;AACN,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,OAAI,EAAE;AACN,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,OAAI,EAAE;AACN,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,OAAI,EAAE;AACN,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,OAAI,EAAE;AACN,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UAAO,IAAI;AACX,UA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"}
|