@pooflabs/web 0.0.76 → 0.0.77

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.
Files changed (80) hide show
  1. package/README.md +32 -0
  2. package/dist/{index-BilNgDSc.js → index-Bfk81d8_.js} +883 -25
  3. package/dist/index-Bfk81d8_.js.map +1 -0
  4. package/dist/{index-C5Cnn7Hq.esm.js → index-CFh1x-M0.esm.js} +353 -156
  5. package/dist/index-CFh1x-M0.esm.js.map +1 -0
  6. package/dist/index-CdOv7Nw2.esm.js +6 -0
  7. package/dist/index-CdOv7Nw2.esm.js.map +1 -0
  8. package/dist/{index-DeVykeX4.esm.js → index-CeQ8hE3s.esm.js} +881 -24
  9. package/dist/index-CeQ8hE3s.esm.js.map +1 -0
  10. package/dist/index-DDXzCx2W.js +8 -0
  11. package/dist/index-DDXzCx2W.js.map +1 -0
  12. package/dist/{index-BrlvWT1Q.js → index-DQVpAl5t.js} +353 -156
  13. package/dist/index-DQVpAl5t.js.map +1 -0
  14. package/dist/{index-COMIXUxl.js → index-KUU0aVzP.js} +882 -24
  15. package/dist/index-KUU0aVzP.js.map +1 -0
  16. package/dist/{index-Dsh0H37n.esm.js → index-R7t9pRt_.esm.js} +882 -23
  17. package/dist/index-R7t9pRt_.esm.js.map +1 -0
  18. package/dist/{index.browser-CSTWylhG.esm.js → index.browser-BE44CEaJ.esm.js} +3 -3
  19. package/dist/{index.browser-CSTWylhG.esm.js.map → index.browser-BE44CEaJ.esm.js.map} +1 -1
  20. package/dist/{index.browser-DZjyUgtx.esm.js → index.browser-C-_FEr5M.esm.js} +449 -479
  21. package/dist/index.browser-C-_FEr5M.esm.js.map +1 -0
  22. package/dist/index.browser-C9bFQZyQ.esm.js +1373 -0
  23. package/dist/index.browser-C9bFQZyQ.esm.js.map +1 -0
  24. package/dist/index.browser-Dbq5Qf1G.esm.js +242 -0
  25. package/dist/index.browser-Dbq5Qf1G.esm.js.map +1 -0
  26. package/dist/index.browser-Df7yN8D5.js +245 -0
  27. package/dist/index.browser-Df7yN8D5.js.map +1 -0
  28. package/dist/{index.browser-CMO2pjaF.js → index.browser-Di1_YZpi.js} +3 -3
  29. package/dist/{index.browser-CMO2pjaF.js.map → index.browser-Di1_YZpi.js.map} +1 -1
  30. package/dist/{index.browser-BOJRGZWX.js → index.browser-DjEZSiqI.js} +449 -479
  31. package/dist/index.browser-DjEZSiqI.js.map +1 -0
  32. package/dist/index.browser-dszs5oe5.js +1376 -0
  33. package/dist/index.browser-dszs5oe5.js.map +1 -0
  34. package/dist/index.esm.js +1 -1
  35. package/dist/index.js +2 -1
  36. package/dist/index.js.map +1 -1
  37. package/dist/{index.native-CkUXrvPQ.js → index.native-CKd2b3_F.js} +2756 -188
  38. package/dist/index.native-CKd2b3_F.js.map +1 -0
  39. package/dist/{index.native-H-fEcP_L.esm.js → index.native-DAyMVhFq.esm.js} +2755 -189
  40. package/dist/index.native-DAyMVhFq.esm.js.map +1 -0
  41. package/dist/index.native.esm.js +1 -1
  42. package/dist/index.native.js +2 -1
  43. package/dist/index.native.js.map +1 -1
  44. package/dist/{phantom-wallet-provider-DrNrxSUL.js → phantom-wallet-provider-DJ6qf2VB.js} +4 -4
  45. package/dist/{phantom-wallet-provider-DrNrxSUL.js.map → phantom-wallet-provider-DJ6qf2VB.js.map} +1 -1
  46. package/dist/{phantom-wallet-provider-5IQi4ihD.esm.js → phantom-wallet-provider-DQ0uhl2v.esm.js} +4 -4
  47. package/dist/{phantom-wallet-provider-5IQi4ihD.esm.js.map → phantom-wallet-provider-DQ0uhl2v.esm.js.map} +1 -1
  48. package/dist/{privy-wallet-provider-BtLH1dpY.esm.js → privy-wallet-provider-BhiHnphv.esm.js} +3 -3
  49. package/dist/privy-wallet-provider-BhiHnphv.esm.js.map +1 -0
  50. package/dist/{privy-wallet-provider-CrRfcONv.js → privy-wallet-provider-CMCv5g3O.js} +3 -3
  51. package/dist/privy-wallet-provider-CMCv5g3O.js.map +1 -0
  52. package/dist/{solana-mobile-wallet-provider-C3l6mxSm.esm.js → solana-mobile-wallet-provider-DSSk_6CR.esm.js} +4 -4
  53. package/dist/{solana-mobile-wallet-provider-C3l6mxSm.esm.js.map → solana-mobile-wallet-provider-DSSk_6CR.esm.js.map} +1 -1
  54. package/dist/{solana-mobile-wallet-provider-QcGazewW.js → solana-mobile-wallet-provider-DaFNesCe.js} +4 -4
  55. package/dist/{solana-mobile-wallet-provider-QcGazewW.js.map → solana-mobile-wallet-provider-DaFNesCe.js.map} +1 -1
  56. package/package.json +2 -2
  57. package/dist/index-Bdcc5821.js +0 -2375
  58. package/dist/index-Bdcc5821.js.map +0 -1
  59. package/dist/index-BilNgDSc.js.map +0 -1
  60. package/dist/index-BrlvWT1Q.js.map +0 -1
  61. package/dist/index-C5Cnn7Hq.esm.js.map +0 -1
  62. package/dist/index-COMIXUxl.js.map +0 -1
  63. package/dist/index-CrOVJFX9.esm.js +0 -2373
  64. package/dist/index-CrOVJFX9.esm.js.map +0 -1
  65. package/dist/index-DeVykeX4.esm.js.map +0 -1
  66. package/dist/index-Dsh0H37n.esm.js.map +0 -1
  67. package/dist/index.browser--rDwfvXH.esm.js +0 -307
  68. package/dist/index.browser--rDwfvXH.esm.js.map +0 -1
  69. package/dist/index.browser-BOJRGZWX.js.map +0 -1
  70. package/dist/index.browser-CLZv9v_y.js +0 -310
  71. package/dist/index.browser-CLZv9v_y.js.map +0 -1
  72. package/dist/index.browser-DQKnuR3q.esm.js +0 -1468
  73. package/dist/index.browser-DQKnuR3q.esm.js.map +0 -1
  74. package/dist/index.browser-DZjyUgtx.esm.js.map +0 -1
  75. package/dist/index.browser-DqO3G-HJ.js +0 -1471
  76. package/dist/index.browser-DqO3G-HJ.js.map +0 -1
  77. package/dist/index.native-CkUXrvPQ.js.map +0 -1
  78. package/dist/index.native-H-fEcP_L.esm.js.map +0 -1
  79. package/dist/privy-wallet-provider-BtLH1dpY.esm.js.map +0 -1
  80. package/dist/privy-wallet-provider-CrRfcONv.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.browser-C9bFQZyQ.esm.js","sources":["../node_modules/@solana/wallet-standard-util/lib/esm/signIn.js","../node_modules/@solana-mobile/mobile-wallet-adapter-protocol/node_modules/@solana/codecs-core/dist/index.browser.mjs","../node_modules/@solana-mobile/mobile-wallet-adapter-protocol/node_modules/@solana/codecs-strings/dist/index.browser.mjs","../node_modules/@solana-mobile/mobile-wallet-adapter-protocol/lib/esm/index.browser.js","../node_modules/@solana-mobile/mobile-wallet-adapter-protocol-web3js/node_modules/base-x/src/esm/index.js","../node_modules/@solana-mobile/mobile-wallet-adapter-protocol-web3js/node_modules/bs58/src/esm/index.js","../node_modules/@solana-mobile/mobile-wallet-adapter-protocol-web3js/lib/esm/index.browser.js"],"sourcesContent":["import { verifyMessageSignature } from './signMessage.js';\nimport { arraysEqual } from './util.js';\n/**\n * TODO: docs\n */\nexport function verifySignIn(input, output) {\n const { signedMessage, signature, account: { publicKey }, } = output;\n const message = deriveSignInMessage(input, output);\n return (!!message && verifyMessageSignature({ message, signedMessage, signature, publicKey: publicKey }));\n}\n/**\n * TODO: docs\n */\nexport function deriveSignInMessage(input, output) {\n const text = deriveSignInMessageText(input, output);\n if (!text)\n return null;\n return new TextEncoder().encode(text);\n}\n/**\n * TODO: docs\n */\nexport function deriveSignInMessageText(input, output) {\n const parsed = parseSignInMessage(output.signedMessage);\n if (!parsed)\n return null;\n if (input.domain && input.domain !== parsed.domain)\n return null;\n if (input.address && input.address !== parsed.address)\n return null;\n if (input.statement !== parsed.statement)\n return null;\n if (input.uri !== parsed.uri)\n return null;\n if (input.version !== parsed.version)\n return null;\n if (input.chainId !== parsed.chainId)\n return null;\n if (input.nonce !== parsed.nonce)\n return null;\n if (input.issuedAt !== parsed.issuedAt)\n return null;\n if (input.expirationTime !== parsed.expirationTime)\n return null;\n if (input.notBefore !== parsed.notBefore)\n return null;\n if (input.requestId !== parsed.requestId)\n return null;\n if (input.resources) {\n if (!parsed.resources)\n return null;\n if (!arraysEqual(input.resources, parsed.resources))\n return null;\n }\n else if (parsed.resources)\n return null;\n return createSignInMessageText(parsed);\n}\n/**\n * TODO: docs\n */\nexport function parseSignInMessage(message) {\n const text = new TextDecoder().decode(message);\n return parseSignInMessageText(text);\n}\n// TODO: implement https://github.com/solana-labs/solana/blob/master/docs/src/proposals/off-chain-message-signing.md\nconst DOMAIN = '(?<domain>[^\\\\n]+?) wants you to sign in with your Solana account:\\\\n';\nconst ADDRESS = '(?<address>[^\\\\n]+)(?:\\\\n|$)';\nconst STATEMENT = '(?:\\\\n(?<statement>[\\\\S\\\\s]*?)(?:\\\\n|$))??';\nconst URI = '(?:\\\\nURI: (?<uri>[^\\\\n]+))?';\nconst VERSION = '(?:\\\\nVersion: (?<version>[^\\\\n]+))?';\nconst CHAIN_ID = '(?:\\\\nChain ID: (?<chainId>[^\\\\n]+))?';\nconst NONCE = '(?:\\\\nNonce: (?<nonce>[^\\\\n]+))?';\nconst ISSUED_AT = '(?:\\\\nIssued At: (?<issuedAt>[^\\\\n]+))?';\nconst EXPIRATION_TIME = '(?:\\\\nExpiration Time: (?<expirationTime>[^\\\\n]+))?';\nconst NOT_BEFORE = '(?:\\\\nNot Before: (?<notBefore>[^\\\\n]+))?';\nconst REQUEST_ID = '(?:\\\\nRequest ID: (?<requestId>[^\\\\n]+))?';\nconst RESOURCES = '(?:\\\\nResources:(?<resources>(?:\\\\n- [^\\\\n]+)*))?';\nconst FIELDS = `${URI}${VERSION}${CHAIN_ID}${NONCE}${ISSUED_AT}${EXPIRATION_TIME}${NOT_BEFORE}${REQUEST_ID}${RESOURCES}`;\nconst MESSAGE = new RegExp(`^${DOMAIN}${ADDRESS}${STATEMENT}${FIELDS}\\\\n*$`);\n/**\n * TODO: docs\n */\nexport function parseSignInMessageText(text) {\n const match = MESSAGE.exec(text);\n if (!match)\n return null;\n const groups = match.groups;\n if (!groups)\n return null;\n return {\n domain: groups.domain,\n address: groups.address,\n statement: groups.statement,\n uri: groups.uri,\n version: groups.version,\n nonce: groups.nonce,\n chainId: groups.chainId,\n issuedAt: groups.issuedAt,\n expirationTime: groups.expirationTime,\n notBefore: groups.notBefore,\n requestId: groups.requestId,\n resources: groups.resources?.split('\\n- ').slice(1),\n };\n}\n/**\n * TODO: docs\n */\nexport function createSignInMessage(input) {\n const text = createSignInMessageText(input);\n return new TextEncoder().encode(text);\n}\n/**\n * TODO: docs\n */\nexport function createSignInMessageText(input) {\n // ${domain} wants you to sign in with your Solana account:\n // ${address}\n //\n // ${statement}\n //\n // URI: ${uri}\n // Version: ${version}\n // Chain ID: ${chain}\n // Nonce: ${nonce}\n // Issued At: ${issued-at}\n // Expiration Time: ${expiration-time}\n // Not Before: ${not-before}\n // Request ID: ${request-id}\n // Resources:\n // - ${resources[0]}\n // - ${resources[1]}\n // ...\n // - ${resources[n]}\n let message = `${input.domain} wants you to sign in with your Solana account:\\n`;\n message += `${input.address}`;\n if (input.statement) {\n message += `\\n\\n${input.statement}`;\n }\n const fields = [];\n if (input.uri) {\n fields.push(`URI: ${input.uri}`);\n }\n if (input.version) {\n fields.push(`Version: ${input.version}`);\n }\n if (input.chainId) {\n fields.push(`Chain ID: ${input.chainId}`);\n }\n if (input.nonce) {\n fields.push(`Nonce: ${input.nonce}`);\n }\n if (input.issuedAt) {\n fields.push(`Issued At: ${input.issuedAt}`);\n }\n if (input.expirationTime) {\n fields.push(`Expiration Time: ${input.expirationTime}`);\n }\n if (input.notBefore) {\n fields.push(`Not Before: ${input.notBefore}`);\n }\n if (input.requestId) {\n fields.push(`Request ID: ${input.requestId}`);\n }\n if (input.resources) {\n fields.push(`Resources:`);\n for (const resource of input.resources) {\n fields.push(`- ${resource}`);\n }\n }\n if (fields.length) {\n message += `\\n\\n${fields.join('\\n')}`;\n }\n return message;\n}\n//# sourceMappingURL=signIn.js.map","import { SolanaError, SOLANA_ERROR__CODECS__EXPECTED_FIXED_LENGTH, SOLANA_ERROR__CODECS__EXPECTED_VARIABLE_LENGTH, SOLANA_ERROR__CODECS__ENCODER_DECODER_SIZE_COMPATIBILITY_MISMATCH, SOLANA_ERROR__CODECS__ENCODER_DECODER_FIXED_SIZE_MISMATCH, SOLANA_ERROR__CODECS__ENCODER_DECODER_MAX_SIZE_MISMATCH, SOLANA_ERROR__CODECS__CANNOT_DECODE_EMPTY_BYTE_ARRAY, SOLANA_ERROR__CODECS__INVALID_BYTE_LENGTH, SOLANA_ERROR__CODECS__OFFSET_OUT_OF_RANGE, SOLANA_ERROR__CODECS__EXPECTED_DECODER_TO_CONSUME_ENTIRE_BYTE_ARRAY, SOLANA_ERROR__CODECS__EXPECTED_POSITIVE_BYTE_LENGTH, SOLANA_ERROR__CODECS__SENTINEL_MISSING_IN_DECODED_BYTES, SOLANA_ERROR__CODECS__ENCODED_BYTES_MUST_NOT_INCLUDE_SENTINEL } from '@solana/errors';\n\n// src/add-codec-sentinel.ts\n\n// src/bytes.ts\nvar mergeBytes = (byteArrays) => {\n const nonEmptyByteArrays = byteArrays.filter((arr) => arr.length);\n if (nonEmptyByteArrays.length === 0) {\n return byteArrays.length ? byteArrays[0] : new Uint8Array();\n }\n if (nonEmptyByteArrays.length === 1) {\n return nonEmptyByteArrays[0];\n }\n const totalLength = nonEmptyByteArrays.reduce((total, arr) => total + arr.length, 0);\n const result = new Uint8Array(totalLength);\n let offset = 0;\n nonEmptyByteArrays.forEach((arr) => {\n result.set(arr, offset);\n offset += arr.length;\n });\n return result;\n};\nfunction padBytes(bytes, length) {\n if (bytes.length >= length) return bytes;\n const paddedBytes = new Uint8Array(length).fill(0);\n paddedBytes.set(bytes);\n return paddedBytes;\n}\nvar fixBytes = (bytes, length) => padBytes(bytes.length <= length ? bytes : bytes.slice(0, length), length);\nfunction containsBytes(data, bytes, offset) {\n const slice = offset === 0 && data.length === bytes.length ? data : data.slice(offset, offset + bytes.length);\n if (slice.length !== bytes.length) return false;\n return bytes.every((b, i) => b === slice[i]);\n}\nfunction getEncodedSize(value, encoder) {\n return \"fixedSize\" in encoder ? encoder.fixedSize : encoder.getSizeFromValue(value);\n}\nfunction createEncoder(encoder) {\n return Object.freeze({\n ...encoder,\n encode: (value) => {\n const bytes = new Uint8Array(getEncodedSize(value, encoder));\n encoder.write(value, bytes, 0);\n return bytes;\n }\n });\n}\nfunction createDecoder(decoder) {\n return Object.freeze({\n ...decoder,\n decode: (bytes, offset = 0) => decoder.read(bytes, offset)[0]\n });\n}\nfunction createCodec(codec) {\n return Object.freeze({\n ...codec,\n decode: (bytes, offset = 0) => codec.read(bytes, offset)[0],\n encode: (value) => {\n const bytes = new Uint8Array(getEncodedSize(value, codec));\n codec.write(value, bytes, 0);\n return bytes;\n }\n });\n}\nfunction isFixedSize(codec) {\n return \"fixedSize\" in codec && typeof codec.fixedSize === \"number\";\n}\nfunction assertIsFixedSize(codec) {\n if (!isFixedSize(codec)) {\n throw new SolanaError(SOLANA_ERROR__CODECS__EXPECTED_FIXED_LENGTH);\n }\n}\nfunction isVariableSize(codec) {\n return !isFixedSize(codec);\n}\nfunction assertIsVariableSize(codec) {\n if (!isVariableSize(codec)) {\n throw new SolanaError(SOLANA_ERROR__CODECS__EXPECTED_VARIABLE_LENGTH);\n }\n}\nfunction combineCodec(encoder, decoder) {\n if (isFixedSize(encoder) !== isFixedSize(decoder)) {\n throw new SolanaError(SOLANA_ERROR__CODECS__ENCODER_DECODER_SIZE_COMPATIBILITY_MISMATCH);\n }\n if (isFixedSize(encoder) && isFixedSize(decoder) && encoder.fixedSize !== decoder.fixedSize) {\n throw new SolanaError(SOLANA_ERROR__CODECS__ENCODER_DECODER_FIXED_SIZE_MISMATCH, {\n decoderFixedSize: decoder.fixedSize,\n encoderFixedSize: encoder.fixedSize\n });\n }\n if (!isFixedSize(encoder) && !isFixedSize(decoder) && encoder.maxSize !== decoder.maxSize) {\n throw new SolanaError(SOLANA_ERROR__CODECS__ENCODER_DECODER_MAX_SIZE_MISMATCH, {\n decoderMaxSize: decoder.maxSize,\n encoderMaxSize: encoder.maxSize\n });\n }\n return {\n ...decoder,\n ...encoder,\n decode: decoder.decode,\n encode: encoder.encode,\n read: decoder.read,\n write: encoder.write\n };\n}\n\n// src/add-codec-sentinel.ts\nfunction addEncoderSentinel(encoder, sentinel) {\n const write = (value, bytes, offset) => {\n const encoderBytes = encoder.encode(value);\n if (findSentinelIndex(encoderBytes, sentinel) >= 0) {\n throw new SolanaError(SOLANA_ERROR__CODECS__ENCODED_BYTES_MUST_NOT_INCLUDE_SENTINEL, {\n encodedBytes: encoderBytes,\n hexEncodedBytes: hexBytes(encoderBytes),\n hexSentinel: hexBytes(sentinel),\n sentinel\n });\n }\n bytes.set(encoderBytes, offset);\n offset += encoderBytes.length;\n bytes.set(sentinel, offset);\n offset += sentinel.length;\n return offset;\n };\n if (isFixedSize(encoder)) {\n return createEncoder({ ...encoder, fixedSize: encoder.fixedSize + sentinel.length, write });\n }\n return createEncoder({\n ...encoder,\n ...encoder.maxSize != null ? { maxSize: encoder.maxSize + sentinel.length } : {},\n getSizeFromValue: (value) => encoder.getSizeFromValue(value) + sentinel.length,\n write\n });\n}\nfunction addDecoderSentinel(decoder, sentinel) {\n const read = (bytes, offset) => {\n const candidateBytes = offset === 0 ? bytes : bytes.slice(offset);\n const sentinelIndex = findSentinelIndex(candidateBytes, sentinel);\n if (sentinelIndex === -1) {\n throw new SolanaError(SOLANA_ERROR__CODECS__SENTINEL_MISSING_IN_DECODED_BYTES, {\n decodedBytes: candidateBytes,\n hexDecodedBytes: hexBytes(candidateBytes),\n hexSentinel: hexBytes(sentinel),\n sentinel\n });\n }\n const preSentinelBytes = candidateBytes.slice(0, sentinelIndex);\n return [decoder.decode(preSentinelBytes), offset + preSentinelBytes.length + sentinel.length];\n };\n if (isFixedSize(decoder)) {\n return createDecoder({ ...decoder, fixedSize: decoder.fixedSize + sentinel.length, read });\n }\n return createDecoder({\n ...decoder,\n ...decoder.maxSize != null ? { maxSize: decoder.maxSize + sentinel.length } : {},\n read\n });\n}\nfunction addCodecSentinel(codec, sentinel) {\n return combineCodec(addEncoderSentinel(codec, sentinel), addDecoderSentinel(codec, sentinel));\n}\nfunction findSentinelIndex(bytes, sentinel) {\n return bytes.findIndex((byte, index, arr) => {\n if (sentinel.length === 1) return byte === sentinel[0];\n return containsBytes(arr, sentinel, index);\n });\n}\nfunction hexBytes(bytes) {\n return bytes.reduce((str, byte) => str + byte.toString(16).padStart(2, \"0\"), \"\");\n}\nfunction assertByteArrayIsNotEmptyForCodec(codecDescription, bytes, offset = 0) {\n if (bytes.length - offset <= 0) {\n throw new SolanaError(SOLANA_ERROR__CODECS__CANNOT_DECODE_EMPTY_BYTE_ARRAY, {\n codecDescription\n });\n }\n}\nfunction assertByteArrayHasEnoughBytesForCodec(codecDescription, expected, bytes, offset = 0) {\n const bytesLength = bytes.length - offset;\n if (bytesLength < expected) {\n throw new SolanaError(SOLANA_ERROR__CODECS__INVALID_BYTE_LENGTH, {\n bytesLength,\n codecDescription,\n expected\n });\n }\n}\nfunction assertByteArrayOffsetIsNotOutOfRange(codecDescription, offset, bytesLength) {\n if (offset < 0 || offset > bytesLength) {\n throw new SolanaError(SOLANA_ERROR__CODECS__OFFSET_OUT_OF_RANGE, {\n bytesLength,\n codecDescription,\n offset\n });\n }\n}\n\n// src/add-codec-size-prefix.ts\nfunction addEncoderSizePrefix(encoder, prefix) {\n const write = (value, bytes, offset) => {\n const encoderBytes = encoder.encode(value);\n offset = prefix.write(encoderBytes.length, bytes, offset);\n bytes.set(encoderBytes, offset);\n return offset + encoderBytes.length;\n };\n if (isFixedSize(prefix) && isFixedSize(encoder)) {\n return createEncoder({ ...encoder, fixedSize: prefix.fixedSize + encoder.fixedSize, write });\n }\n const prefixMaxSize = isFixedSize(prefix) ? prefix.fixedSize : prefix.maxSize ?? null;\n const encoderMaxSize = isFixedSize(encoder) ? encoder.fixedSize : encoder.maxSize ?? null;\n const maxSize = prefixMaxSize !== null && encoderMaxSize !== null ? prefixMaxSize + encoderMaxSize : null;\n return createEncoder({\n ...encoder,\n ...maxSize !== null ? { maxSize } : {},\n getSizeFromValue: (value) => {\n const encoderSize = getEncodedSize(value, encoder);\n return getEncodedSize(encoderSize, prefix) + encoderSize;\n },\n write\n });\n}\nfunction addDecoderSizePrefix(decoder, prefix) {\n const read = (bytes, offset) => {\n const [bigintSize, decoderOffset] = prefix.read(bytes, offset);\n const size = Number(bigintSize);\n offset = decoderOffset;\n if (offset > 0 || bytes.length > size) {\n bytes = bytes.slice(offset, offset + size);\n }\n assertByteArrayHasEnoughBytesForCodec(\"addDecoderSizePrefix\", size, bytes);\n return [decoder.decode(bytes), offset + size];\n };\n if (isFixedSize(prefix) && isFixedSize(decoder)) {\n return createDecoder({ ...decoder, fixedSize: prefix.fixedSize + decoder.fixedSize, read });\n }\n const prefixMaxSize = isFixedSize(prefix) ? prefix.fixedSize : prefix.maxSize ?? null;\n const decoderMaxSize = isFixedSize(decoder) ? decoder.fixedSize : decoder.maxSize ?? null;\n const maxSize = prefixMaxSize !== null && decoderMaxSize !== null ? prefixMaxSize + decoderMaxSize : null;\n return createDecoder({ ...decoder, ...maxSize !== null ? { maxSize } : {}, read });\n}\nfunction addCodecSizePrefix(codec, prefix) {\n return combineCodec(addEncoderSizePrefix(codec, prefix), addDecoderSizePrefix(codec, prefix));\n}\nfunction createDecoderThatConsumesEntireByteArray(decoder) {\n return createDecoder({\n ...decoder,\n read(bytes, offset) {\n const [value, newOffset] = decoder.read(bytes, offset);\n if (bytes.length > newOffset) {\n throw new SolanaError(SOLANA_ERROR__CODECS__EXPECTED_DECODER_TO_CONSUME_ENTIRE_BYTE_ARRAY, {\n expectedLength: newOffset,\n numExcessBytes: bytes.length - newOffset\n });\n }\n return [value, newOffset];\n }\n });\n}\n\n// src/fix-codec-size.ts\nfunction fixEncoderSize(encoder, fixedBytes) {\n return createEncoder({\n fixedSize: fixedBytes,\n write: (value, bytes, offset) => {\n const variableByteArray = encoder.encode(value);\n const fixedByteArray = variableByteArray.length > fixedBytes ? variableByteArray.slice(0, fixedBytes) : variableByteArray;\n bytes.set(fixedByteArray, offset);\n return offset + fixedBytes;\n }\n });\n}\nfunction fixDecoderSize(decoder, fixedBytes) {\n return createDecoder({\n fixedSize: fixedBytes,\n read: (bytes, offset) => {\n assertByteArrayHasEnoughBytesForCodec(\"fixCodecSize\", fixedBytes, bytes, offset);\n if (offset > 0 || bytes.length > fixedBytes) {\n bytes = bytes.slice(offset, offset + fixedBytes);\n }\n if (isFixedSize(decoder)) {\n bytes = fixBytes(bytes, decoder.fixedSize);\n }\n const [value] = decoder.read(bytes, 0);\n return [value, offset + fixedBytes];\n }\n });\n}\nfunction fixCodecSize(codec, fixedBytes) {\n return combineCodec(fixEncoderSize(codec, fixedBytes), fixDecoderSize(codec, fixedBytes));\n}\n\n// src/offset-codec.ts\nfunction offsetEncoder(encoder, config) {\n return createEncoder({\n ...encoder,\n write: (value, bytes, preOffset) => {\n const wrapBytes = (offset) => modulo(offset, bytes.length);\n const newPreOffset = config.preOffset ? config.preOffset({ bytes, preOffset, wrapBytes }) : preOffset;\n assertByteArrayOffsetIsNotOutOfRange(\"offsetEncoder\", newPreOffset, bytes.length);\n const postOffset = encoder.write(value, bytes, newPreOffset);\n const newPostOffset = config.postOffset ? config.postOffset({ bytes, newPreOffset, postOffset, preOffset, wrapBytes }) : postOffset;\n assertByteArrayOffsetIsNotOutOfRange(\"offsetEncoder\", newPostOffset, bytes.length);\n return newPostOffset;\n }\n });\n}\nfunction offsetDecoder(decoder, config) {\n return createDecoder({\n ...decoder,\n read: (bytes, preOffset) => {\n const wrapBytes = (offset) => modulo(offset, bytes.length);\n const newPreOffset = config.preOffset ? config.preOffset({ bytes, preOffset, wrapBytes }) : preOffset;\n assertByteArrayOffsetIsNotOutOfRange(\"offsetDecoder\", newPreOffset, bytes.length);\n const [value, postOffset] = decoder.read(bytes, newPreOffset);\n const newPostOffset = config.postOffset ? config.postOffset({ bytes, newPreOffset, postOffset, preOffset, wrapBytes }) : postOffset;\n assertByteArrayOffsetIsNotOutOfRange(\"offsetDecoder\", newPostOffset, bytes.length);\n return [value, newPostOffset];\n }\n });\n}\nfunction offsetCodec(codec, config) {\n return combineCodec(offsetEncoder(codec, config), offsetDecoder(codec, config));\n}\nfunction modulo(dividend, divisor) {\n if (divisor === 0) return 0;\n return (dividend % divisor + divisor) % divisor;\n}\nfunction resizeEncoder(encoder, resize) {\n if (isFixedSize(encoder)) {\n const fixedSize = resize(encoder.fixedSize);\n if (fixedSize < 0) {\n throw new SolanaError(SOLANA_ERROR__CODECS__EXPECTED_POSITIVE_BYTE_LENGTH, {\n bytesLength: fixedSize,\n codecDescription: \"resizeEncoder\"\n });\n }\n return createEncoder({ ...encoder, fixedSize });\n }\n return createEncoder({\n ...encoder,\n getSizeFromValue: (value) => {\n const newSize = resize(encoder.getSizeFromValue(value));\n if (newSize < 0) {\n throw new SolanaError(SOLANA_ERROR__CODECS__EXPECTED_POSITIVE_BYTE_LENGTH, {\n bytesLength: newSize,\n codecDescription: \"resizeEncoder\"\n });\n }\n return newSize;\n }\n });\n}\nfunction resizeDecoder(decoder, resize) {\n if (isFixedSize(decoder)) {\n const fixedSize = resize(decoder.fixedSize);\n if (fixedSize < 0) {\n throw new SolanaError(SOLANA_ERROR__CODECS__EXPECTED_POSITIVE_BYTE_LENGTH, {\n bytesLength: fixedSize,\n codecDescription: \"resizeDecoder\"\n });\n }\n return createDecoder({ ...decoder, fixedSize });\n }\n return decoder;\n}\nfunction resizeCodec(codec, resize) {\n return combineCodec(resizeEncoder(codec, resize), resizeDecoder(codec, resize));\n}\n\n// src/pad-codec.ts\nfunction padLeftEncoder(encoder, offset) {\n return offsetEncoder(\n resizeEncoder(encoder, (size) => size + offset),\n { preOffset: ({ preOffset }) => preOffset + offset }\n );\n}\nfunction padRightEncoder(encoder, offset) {\n return offsetEncoder(\n resizeEncoder(encoder, (size) => size + offset),\n { postOffset: ({ postOffset }) => postOffset + offset }\n );\n}\nfunction padLeftDecoder(decoder, offset) {\n return offsetDecoder(\n resizeDecoder(decoder, (size) => size + offset),\n { preOffset: ({ preOffset }) => preOffset + offset }\n );\n}\nfunction padRightDecoder(decoder, offset) {\n return offsetDecoder(\n resizeDecoder(decoder, (size) => size + offset),\n { postOffset: ({ postOffset }) => postOffset + offset }\n );\n}\nfunction padLeftCodec(codec, offset) {\n return combineCodec(padLeftEncoder(codec, offset), padLeftDecoder(codec, offset));\n}\nfunction padRightCodec(codec, offset) {\n return combineCodec(padRightEncoder(codec, offset), padRightDecoder(codec, offset));\n}\n\n// src/reverse-codec.ts\nfunction copySourceToTargetInReverse(source, target_WILL_MUTATE, sourceOffset, sourceLength, targetOffset = 0) {\n while (sourceOffset < --sourceLength) {\n const leftValue = source[sourceOffset];\n target_WILL_MUTATE[sourceOffset + targetOffset] = source[sourceLength];\n target_WILL_MUTATE[sourceLength + targetOffset] = leftValue;\n sourceOffset++;\n }\n if (sourceOffset === sourceLength) {\n target_WILL_MUTATE[sourceOffset + targetOffset] = source[sourceOffset];\n }\n}\nfunction reverseEncoder(encoder) {\n assertIsFixedSize(encoder);\n return createEncoder({\n ...encoder,\n write: (value, bytes, offset) => {\n const newOffset = encoder.write(value, bytes, offset);\n copySourceToTargetInReverse(\n bytes,\n bytes,\n offset,\n offset + encoder.fixedSize\n );\n return newOffset;\n }\n });\n}\nfunction reverseDecoder(decoder) {\n assertIsFixedSize(decoder);\n return createDecoder({\n ...decoder,\n read: (bytes, offset) => {\n const reversedBytes = bytes.slice();\n copySourceToTargetInReverse(\n bytes,\n reversedBytes,\n offset,\n offset + decoder.fixedSize\n );\n return decoder.read(reversedBytes, offset);\n }\n });\n}\nfunction reverseCodec(codec) {\n return combineCodec(reverseEncoder(codec), reverseDecoder(codec));\n}\n\n// src/transform-codec.ts\nfunction transformEncoder(encoder, unmap) {\n return createEncoder({\n ...isVariableSize(encoder) ? { ...encoder, getSizeFromValue: (value) => encoder.getSizeFromValue(unmap(value)) } : encoder,\n write: (value, bytes, offset) => encoder.write(unmap(value), bytes, offset)\n });\n}\nfunction transformDecoder(decoder, map) {\n return createDecoder({\n ...decoder,\n read: (bytes, offset) => {\n const [value, newOffset] = decoder.read(bytes, offset);\n return [map(value, bytes, offset), newOffset];\n }\n });\n}\nfunction transformCodec(codec, unmap, map) {\n return createCodec({\n ...transformEncoder(codec, unmap),\n read: map ? transformDecoder(codec, map).read : codec.read\n });\n}\n\nexport { addCodecSentinel, addCodecSizePrefix, addDecoderSentinel, addDecoderSizePrefix, addEncoderSentinel, addEncoderSizePrefix, assertByteArrayHasEnoughBytesForCodec, assertByteArrayIsNotEmptyForCodec, assertByteArrayOffsetIsNotOutOfRange, assertIsFixedSize, assertIsVariableSize, combineCodec, containsBytes, createCodec, createDecoder, createDecoderThatConsumesEntireByteArray, createEncoder, fixBytes, fixCodecSize, fixDecoderSize, fixEncoderSize, getEncodedSize, isFixedSize, isVariableSize, mergeBytes, offsetCodec, offsetDecoder, offsetEncoder, padBytes, padLeftCodec, padLeftDecoder, padLeftEncoder, padRightCodec, padRightDecoder, padRightEncoder, resizeCodec, resizeDecoder, resizeEncoder, reverseCodec, reverseDecoder, reverseEncoder, transformCodec, transformDecoder, transformEncoder };\n//# sourceMappingURL=index.browser.mjs.map\n//# sourceMappingURL=index.browser.mjs.map","import { SolanaError, SOLANA_ERROR__CODECS__INVALID_STRING_FOR_BASE } from '@solana/errors';\nimport { combineCodec, createDecoder, createEncoder } from '@solana/codecs-core';\n\n// src/assertions.ts\nfunction assertValidBaseString(alphabet4, testValue, givenValue = testValue) {\n if (!testValue.match(new RegExp(`^[${alphabet4}]*$`))) {\n throw new SolanaError(SOLANA_ERROR__CODECS__INVALID_STRING_FOR_BASE, {\n alphabet: alphabet4,\n base: alphabet4.length,\n value: givenValue\n });\n }\n}\nvar getBaseXEncoder = (alphabet4) => {\n return createEncoder({\n getSizeFromValue: (value) => {\n const [leadingZeroes, tailChars] = partitionLeadingZeroes(value, alphabet4[0]);\n if (!tailChars) return value.length;\n const base10Number = getBigIntFromBaseX(tailChars, alphabet4);\n return leadingZeroes.length + Math.ceil(base10Number.toString(16).length / 2);\n },\n write(value, bytes, offset) {\n assertValidBaseString(alphabet4, value);\n if (value === \"\") return offset;\n const [leadingZeroes, tailChars] = partitionLeadingZeroes(value, alphabet4[0]);\n if (!tailChars) {\n bytes.set(new Uint8Array(leadingZeroes.length).fill(0), offset);\n return offset + leadingZeroes.length;\n }\n let base10Number = getBigIntFromBaseX(tailChars, alphabet4);\n const tailBytes = [];\n while (base10Number > 0n) {\n tailBytes.unshift(Number(base10Number % 256n));\n base10Number /= 256n;\n }\n const bytesToAdd = [...Array(leadingZeroes.length).fill(0), ...tailBytes];\n bytes.set(bytesToAdd, offset);\n return offset + bytesToAdd.length;\n }\n });\n};\nvar getBaseXDecoder = (alphabet4) => {\n return createDecoder({\n read(rawBytes, offset) {\n const bytes = offset === 0 ? rawBytes : rawBytes.slice(offset);\n if (bytes.length === 0) return [\"\", 0];\n let trailIndex = bytes.findIndex((n) => n !== 0);\n trailIndex = trailIndex === -1 ? bytes.length : trailIndex;\n const leadingZeroes = alphabet4[0].repeat(trailIndex);\n if (trailIndex === bytes.length) return [leadingZeroes, rawBytes.length];\n const base10Number = bytes.slice(trailIndex).reduce((sum, byte) => sum * 256n + BigInt(byte), 0n);\n const tailChars = getBaseXFromBigInt(base10Number, alphabet4);\n return [leadingZeroes + tailChars, rawBytes.length];\n }\n });\n};\nvar getBaseXCodec = (alphabet4) => combineCodec(getBaseXEncoder(alphabet4), getBaseXDecoder(alphabet4));\nfunction partitionLeadingZeroes(value, zeroCharacter) {\n const [leadingZeros, tailChars] = value.split(new RegExp(`((?!${zeroCharacter}).*)`));\n return [leadingZeros, tailChars];\n}\nfunction getBigIntFromBaseX(value, alphabet4) {\n const base = BigInt(alphabet4.length);\n let sum = 0n;\n for (const char of value) {\n sum *= base;\n sum += BigInt(alphabet4.indexOf(char));\n }\n return sum;\n}\nfunction getBaseXFromBigInt(value, alphabet4) {\n const base = BigInt(alphabet4.length);\n const tailChars = [];\n while (value > 0n) {\n tailChars.unshift(alphabet4[Number(value % base)]);\n value /= base;\n }\n return tailChars.join(\"\");\n}\n\n// src/base10.ts\nvar alphabet = \"0123456789\";\nvar getBase10Encoder = () => getBaseXEncoder(alphabet);\nvar getBase10Decoder = () => getBaseXDecoder(alphabet);\nvar getBase10Codec = () => getBaseXCodec(alphabet);\nvar INVALID_STRING_ERROR_BASE_CONFIG = {\n alphabet: \"0123456789abcdef\",\n base: 16\n};\nfunction charCodeToBase16(char) {\n if (char >= 48 /* ZERO */ && char <= 57 /* NINE */) return char - 48 /* ZERO */;\n if (char >= 65 /* A_UP */ && char <= 70 /* F_UP */) return char - (65 /* A_UP */ - 10);\n if (char >= 97 /* A_LO */ && char <= 102 /* F_LO */) return char - (97 /* A_LO */ - 10);\n}\nvar getBase16Encoder = () => createEncoder({\n getSizeFromValue: (value) => Math.ceil(value.length / 2),\n write(value, bytes, offset) {\n const len = value.length;\n const al = len / 2;\n if (len === 1) {\n const c = value.charCodeAt(0);\n const n = charCodeToBase16(c);\n if (n === void 0) {\n throw new SolanaError(SOLANA_ERROR__CODECS__INVALID_STRING_FOR_BASE, {\n ...INVALID_STRING_ERROR_BASE_CONFIG,\n value\n });\n }\n bytes.set([n], offset);\n return 1 + offset;\n }\n const hexBytes = new Uint8Array(al);\n for (let i = 0, j = 0; i < al; i++) {\n const c1 = value.charCodeAt(j++);\n const c2 = value.charCodeAt(j++);\n const n1 = charCodeToBase16(c1);\n const n2 = charCodeToBase16(c2);\n if (n1 === void 0 || n2 === void 0 && !Number.isNaN(c2)) {\n throw new SolanaError(SOLANA_ERROR__CODECS__INVALID_STRING_FOR_BASE, {\n ...INVALID_STRING_ERROR_BASE_CONFIG,\n value\n });\n }\n hexBytes[i] = !Number.isNaN(c2) ? n1 << 4 | (n2 ?? 0) : n1;\n }\n bytes.set(hexBytes, offset);\n return hexBytes.length + offset;\n }\n});\nvar getBase16Decoder = () => createDecoder({\n read(bytes, offset) {\n const value = bytes.slice(offset).reduce((str, byte) => str + byte.toString(16).padStart(2, \"0\"), \"\");\n return [value, bytes.length];\n }\n});\nvar getBase16Codec = () => combineCodec(getBase16Encoder(), getBase16Decoder());\n\n// src/base58.ts\nvar alphabet2 = \"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz\";\nvar getBase58Encoder = () => getBaseXEncoder(alphabet2);\nvar getBase58Decoder = () => getBaseXDecoder(alphabet2);\nvar getBase58Codec = () => getBaseXCodec(alphabet2);\nvar getBaseXResliceEncoder = (alphabet4, bits) => createEncoder({\n getSizeFromValue: (value) => Math.floor(value.length * bits / 8),\n write(value, bytes, offset) {\n assertValidBaseString(alphabet4, value);\n if (value === \"\") return offset;\n const charIndices = [...value].map((c) => alphabet4.indexOf(c));\n const reslicedBytes = reslice(charIndices, bits, 8, false);\n bytes.set(reslicedBytes, offset);\n return reslicedBytes.length + offset;\n }\n});\nvar getBaseXResliceDecoder = (alphabet4, bits) => createDecoder({\n read(rawBytes, offset = 0) {\n const bytes = offset === 0 ? rawBytes : rawBytes.slice(offset);\n if (bytes.length === 0) return [\"\", rawBytes.length];\n const charIndices = reslice([...bytes], 8, bits, true);\n return [charIndices.map((i) => alphabet4[i]).join(\"\"), rawBytes.length];\n }\n});\nvar getBaseXResliceCodec = (alphabet4, bits) => combineCodec(getBaseXResliceEncoder(alphabet4, bits), getBaseXResliceDecoder(alphabet4, bits));\nfunction reslice(input, inputBits, outputBits, useRemainder) {\n const output = [];\n let accumulator = 0;\n let bitsInAccumulator = 0;\n const mask = (1 << outputBits) - 1;\n for (const value of input) {\n accumulator = accumulator << inputBits | value;\n bitsInAccumulator += inputBits;\n while (bitsInAccumulator >= outputBits) {\n bitsInAccumulator -= outputBits;\n output.push(accumulator >> bitsInAccumulator & mask);\n }\n }\n if (useRemainder && bitsInAccumulator > 0) {\n output.push(accumulator << outputBits - bitsInAccumulator & mask);\n }\n return output;\n}\n\n// src/base64.ts\nvar alphabet3 = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\nvar getBase64Encoder = () => {\n {\n return createEncoder({\n getSizeFromValue: (value) => {\n try {\n return atob(value).length;\n } catch {\n throw new SolanaError(SOLANA_ERROR__CODECS__INVALID_STRING_FOR_BASE, {\n alphabet: alphabet3,\n base: 64,\n value\n });\n }\n },\n write(value, bytes, offset) {\n try {\n const bytesToAdd = atob(value).split(\"\").map((c) => c.charCodeAt(0));\n bytes.set(bytesToAdd, offset);\n return bytesToAdd.length + offset;\n } catch {\n throw new SolanaError(SOLANA_ERROR__CODECS__INVALID_STRING_FOR_BASE, {\n alphabet: alphabet3,\n base: 64,\n value\n });\n }\n }\n });\n }\n};\nvar getBase64Decoder = () => {\n {\n return createDecoder({\n read(bytes, offset = 0) {\n const slice = bytes.slice(offset);\n const value = btoa(String.fromCharCode(...slice));\n return [value, bytes.length];\n }\n });\n }\n};\nvar getBase64Codec = () => combineCodec(getBase64Encoder(), getBase64Decoder());\n\n// src/null-characters.ts\nvar removeNullCharacters = (value) => (\n // eslint-disable-next-line no-control-regex\n value.replace(/\\u0000/g, \"\")\n);\nvar padNullCharacters = (value, chars) => value.padEnd(chars, \"\\0\");\n\n// ../text-encoding-impl/dist/index.browser.mjs\nvar e = globalThis.TextDecoder;\nvar o = globalThis.TextEncoder;\n\n// src/utf8.ts\nvar getUtf8Encoder = () => {\n let textEncoder;\n return createEncoder({\n getSizeFromValue: (value) => (textEncoder ||= new o()).encode(value).length,\n write: (value, bytes, offset) => {\n const bytesToAdd = (textEncoder ||= new o()).encode(value);\n bytes.set(bytesToAdd, offset);\n return offset + bytesToAdd.length;\n }\n });\n};\nvar getUtf8Decoder = () => {\n let textDecoder;\n return createDecoder({\n read(bytes, offset) {\n const value = (textDecoder ||= new e()).decode(bytes.slice(offset));\n return [removeNullCharacters(value), bytes.length];\n }\n });\n};\nvar getUtf8Codec = () => combineCodec(getUtf8Encoder(), getUtf8Decoder());\n\nexport { assertValidBaseString, getBase10Codec, getBase10Decoder, getBase10Encoder, getBase16Codec, getBase16Decoder, getBase16Encoder, getBase58Codec, getBase58Decoder, getBase58Encoder, getBase64Codec, getBase64Decoder, getBase64Encoder, getBaseXCodec, getBaseXDecoder, getBaseXEncoder, getBaseXResliceCodec, getBaseXResliceDecoder, getBaseXResliceEncoder, getUtf8Codec, getUtf8Decoder, getUtf8Encoder, padNullCharacters, removeNullCharacters };\n//# sourceMappingURL=index.browser.mjs.map\n//# sourceMappingURL=index.browser.mjs.map","import { createSignInMessageText } from '@solana/wallet-standard-util';\nimport { getBase58Decoder } from '@solana/codecs-strings';\n\n// Typescript `enums` thwart tree-shaking. See https://bargsten.org/jsts/enums/\nconst SolanaMobileWalletAdapterErrorCode = {\n ERROR_ASSOCIATION_PORT_OUT_OF_RANGE: 'ERROR_ASSOCIATION_PORT_OUT_OF_RANGE',\n ERROR_REFLECTOR_ID_OUT_OF_RANGE: 'ERROR_REFLECTOR_ID_OUT_OF_RANGE',\n ERROR_FORBIDDEN_WALLET_BASE_URL: 'ERROR_FORBIDDEN_WALLET_BASE_URL',\n ERROR_SECURE_CONTEXT_REQUIRED: 'ERROR_SECURE_CONTEXT_REQUIRED',\n ERROR_SESSION_CLOSED: 'ERROR_SESSION_CLOSED',\n ERROR_SESSION_TIMEOUT: 'ERROR_SESSION_TIMEOUT',\n ERROR_WALLET_NOT_FOUND: 'ERROR_WALLET_NOT_FOUND',\n ERROR_INVALID_PROTOCOL_VERSION: 'ERROR_INVALID_PROTOCOL_VERSION',\n ERROR_BROWSER_NOT_SUPPORTED: 'ERROR_BROWSER_NOT_SUPPORTED',\n ERROR_LOOPBACK_ACCESS_BLOCKED: 'ERROR_LOOPBACK_ACCESS_BLOCKED',\n ERROR_ASSOCIATION_CANCELLED: 'ERROR_ASSOCIATION_CANCELLED',\n};\nclass SolanaMobileWalletAdapterError extends Error {\n data;\n code;\n constructor(...args) {\n const [code, message, data] = args;\n super(message);\n this.code = code;\n this.data = data;\n this.name = 'SolanaMobileWalletAdapterError';\n }\n}\n// Typescript `enums` thwart tree-shaking. See https://bargsten.org/jsts/enums/\nconst SolanaMobileWalletAdapterProtocolErrorCode = {\n // Keep these in sync with `mobilewalletadapter/common/ProtocolContract.java`.\n ERROR_AUTHORIZATION_FAILED: -1,\n ERROR_INVALID_PAYLOADS: -2,\n ERROR_NOT_SIGNED: -3,\n ERROR_NOT_SUBMITTED: -4,\n ERROR_TOO_MANY_PAYLOADS: -5,\n ERROR_ATTEST_ORIGIN_ANDROID: -100,\n};\nclass SolanaMobileWalletAdapterProtocolError extends Error {\n data;\n code;\n jsonRpcMessageId;\n constructor(...args) {\n const [jsonRpcMessageId, code, message, data] = args;\n super(message);\n this.code = code;\n this.data = data;\n this.jsonRpcMessageId = jsonRpcMessageId;\n this.name = 'SolanaMobileWalletAdapterProtocolError';\n }\n}\n\nfunction encode(input) {\n return window.btoa(input);\n}\nfunction fromUint8Array$1(byteArray, urlsafe) {\n const base64 = window.btoa(String.fromCharCode.call(null, ...byteArray));\n if (urlsafe) {\n return base64\n .replace(/\\+/g, '-')\n .replace(/\\//g, '_')\n .replace(/=+$/, '');\n }\n else\n return base64;\n}\nfunction toUint8Array(base64EncodedByteArray) {\n return new Uint8Array(window\n .atob(base64EncodedByteArray)\n .split('')\n .map((c) => c.charCodeAt(0)));\n}\n\nasync function createHelloReq(ecdhPublicKey, associationKeypairPrivateKey) {\n const publicKeyBuffer = await crypto.subtle.exportKey('raw', ecdhPublicKey);\n const signatureBuffer = await crypto.subtle.sign({ hash: 'SHA-256', name: 'ECDSA' }, associationKeypairPrivateKey, publicKeyBuffer);\n const response = new Uint8Array(publicKeyBuffer.byteLength + signatureBuffer.byteLength);\n response.set(new Uint8Array(publicKeyBuffer), 0);\n response.set(new Uint8Array(signatureBuffer), publicKeyBuffer.byteLength);\n return response;\n}\n\nfunction createSIWSMessage(payload) {\n return createSignInMessageText(payload);\n}\nfunction createSIWSMessageBase64Url(payload) {\n return encode(createSIWSMessage(payload))\n .replace(/\\+/g, '-')\n .replace(/\\//g, '_')\n .replace(/=+$/, ''); // convert to base64url encoding;\n}\n\n// optional features\nconst SolanaSignTransactions = 'solana:signTransactions';\nconst SolanaCloneAuthorization = 'solana:cloneAuthorization';\nconst SolanaSignInWithSolana = 'solana:signInWithSolana';\n\nfunction fromUint8Array(byteArray) {\n return getBase58Decoder().decode(byteArray);\n}\nfunction base64ToBase58(base64EncodedString) {\n return fromUint8Array(toUint8Array(base64EncodedString));\n}\n\n/**\n * Creates a {@link MobileWallet} proxy that handles backwards compatibility and API to RPC conversion.\n *\n * @param protocolVersion the protocol version in use for this session/request\n * @param protocolRequestHandler callback function that handles sending the RPC request to the wallet endpoint.\n * @returns a {@link MobileWallet} proxy\n */\nfunction createMobileWalletProxy(protocolVersion, protocolRequestHandler) {\n return new Proxy({}, {\n get(target, p) {\n // Wrapping a Proxy in a promise results in the Proxy being asked for a 'then' property so must \n // return null if 'then' is called on this proxy to let the 'resolve()' call know this is not a promise.\n // see: https://stackoverflow.com/a/53890904\n //@ts-ignore\n if (p === 'then') {\n return null;\n }\n if (target[p] == null) {\n target[p] = async function (inputParams) {\n const { method, params } = handleMobileWalletRequest(p, inputParams, protocolVersion);\n const result = await protocolRequestHandler(method, params);\n // if the request tried to sign in but the wallet did not return a sign in result, fallback on message signing\n if (method === 'authorize' && params.sign_in_payload && !result.sign_in_result) {\n result['sign_in_result'] = await signInFallback(params.sign_in_payload, result, protocolRequestHandler);\n }\n return handleMobileWalletResponse(p, result, protocolVersion);\n };\n }\n return target[p];\n },\n defineProperty() {\n return false;\n },\n deleteProperty() {\n return false;\n },\n });\n}\n/**\n * Handles all {@link MobileWallet} API requests and determines the correct MWA RPC method and params to call.\n * This handles backwards compatibility, based on the provided @protocolVersion.\n *\n * @param methodName the name of {@link MobileWallet} method that was called\n * @param methodParams the parameters that were passed to the method\n * @param protocolVersion the protocol version in use for this session/request\n * @returns the RPC request method and params that should be sent to the wallet endpoint\n */\nfunction handleMobileWalletRequest(methodName, methodParams, protocolVersion) {\n let params = methodParams;\n let method = methodName\n .toString()\n .replace(/[A-Z]/g, (letter) => `_${letter.toLowerCase()}`)\n .toLowerCase();\n switch (methodName) {\n case 'authorize': {\n let { chain } = params;\n if (protocolVersion === 'legacy') {\n switch (chain) {\n case 'solana:testnet': {\n chain = 'testnet';\n break;\n }\n case 'solana:devnet': {\n chain = 'devnet';\n break;\n }\n case 'solana:mainnet': {\n chain = 'mainnet-beta';\n break;\n }\n default: {\n chain = params.cluster;\n }\n }\n params.cluster = chain;\n }\n else {\n switch (chain) {\n case 'testnet':\n case 'devnet': {\n chain = `solana:${chain}`;\n break;\n }\n case 'mainnet-beta': {\n chain = 'solana:mainnet';\n break;\n }\n }\n params.chain = chain;\n }\n }\n case 'reauthorize': {\n const { auth_token, identity } = params;\n if (auth_token) {\n switch (protocolVersion) {\n case 'legacy': {\n method = 'reauthorize';\n params = { auth_token: auth_token, identity: identity };\n break;\n }\n default: {\n method = 'authorize';\n break;\n }\n }\n }\n break;\n }\n }\n return { method, params };\n}\n/**\n * Handles all {@link MobileWallet} API responses and modifies the response for backwards compatibility, if needed\n *\n * @param method the {@link MobileWallet} method that was called\n * @param response the original response that was returned by the method call\n * @param protocolVersion the protocol version in use for this session/request\n * @returns the possibly modified response\n */\nfunction handleMobileWalletResponse(method, response, protocolVersion) {\n switch (method) {\n case 'getCapabilities': {\n const capabilities = response;\n switch (protocolVersion) {\n case 'legacy': {\n const features = [SolanaSignTransactions];\n if (capabilities.supports_clone_authorization === true) {\n features.push(SolanaCloneAuthorization);\n }\n return {\n ...capabilities,\n features: features,\n };\n }\n case 'v1': {\n return {\n ...capabilities,\n supports_sign_and_send_transactions: true,\n supports_clone_authorization: capabilities.features.includes(SolanaCloneAuthorization)\n };\n }\n }\n }\n }\n return response;\n}\nasync function signInFallback(signInPayload, authorizationResult, protocolRequestHandler) {\n const domain = signInPayload.domain ?? window.location.host;\n const address = authorizationResult.accounts[0].address;\n const siwsMessage = createSIWSMessageBase64Url({ ...signInPayload, domain, address: base64ToBase58(address) });\n const signMessageResult = await protocolRequestHandler('sign_messages', {\n addresses: [address],\n payloads: [siwsMessage]\n });\n const signedPayload = toUint8Array(signMessageResult.signed_payloads[0]);\n const signedMessage = fromUint8Array$1(signedPayload.slice(0, signedPayload.length - 64));\n const signature = fromUint8Array$1(signedPayload.slice(signedPayload.length - 64));\n const signInResult = {\n address: address,\n // Workaround: some wallets have been observed to only reply with the message signature.\n // This is non-compliant with the spec, but in the interest of maximizing compatibility,\n // detect this case and reuse the original message.\n signed_message: signedMessage.length == 0 ? siwsMessage : signedMessage,\n signature\n };\n return signInResult;\n}\n\nconst SEQUENCE_NUMBER_BYTES = 4;\nfunction createSequenceNumberVector(sequenceNumber) {\n if (sequenceNumber >= 4294967296) {\n throw new Error('Outbound sequence number overflow. The maximum sequence number is 32-bytes.');\n }\n const byteArray = new ArrayBuffer(SEQUENCE_NUMBER_BYTES);\n const view = new DataView(byteArray);\n view.setUint32(0, sequenceNumber, /* littleEndian */ false);\n return new Uint8Array(byteArray);\n}\n\nconst INITIALIZATION_VECTOR_BYTES = 12;\nconst ENCODED_PUBLIC_KEY_LENGTH_BYTES = 65;\nasync function encryptMessage(plaintext, sequenceNumber, sharedSecret) {\n const sequenceNumberVector = createSequenceNumberVector(sequenceNumber);\n const initializationVector = new Uint8Array(INITIALIZATION_VECTOR_BYTES);\n crypto.getRandomValues(initializationVector);\n const ciphertext = await crypto.subtle.encrypt(getAlgorithmParams(sequenceNumberVector, initializationVector), sharedSecret, new TextEncoder().encode(plaintext));\n const response = new Uint8Array(sequenceNumberVector.byteLength + initializationVector.byteLength + ciphertext.byteLength);\n response.set(new Uint8Array(sequenceNumberVector), 0);\n response.set(new Uint8Array(initializationVector), sequenceNumberVector.byteLength);\n response.set(new Uint8Array(ciphertext), sequenceNumberVector.byteLength + initializationVector.byteLength);\n return response;\n}\nasync function decryptMessage(message, sharedSecret) {\n const sequenceNumberVector = message.slice(0, SEQUENCE_NUMBER_BYTES);\n const initializationVector = message.slice(SEQUENCE_NUMBER_BYTES, SEQUENCE_NUMBER_BYTES + INITIALIZATION_VECTOR_BYTES);\n const ciphertext = message.slice(SEQUENCE_NUMBER_BYTES + INITIALIZATION_VECTOR_BYTES);\n const plaintextBuffer = await crypto.subtle.decrypt(getAlgorithmParams(sequenceNumberVector, initializationVector), sharedSecret, ciphertext);\n const plaintext = getUtf8Decoder().decode(plaintextBuffer);\n return plaintext;\n}\nfunction getAlgorithmParams(sequenceNumber, initializationVector) {\n return {\n additionalData: sequenceNumber,\n iv: initializationVector,\n name: 'AES-GCM',\n tagLength: 128, // 16 byte tag => 128 bits\n };\n}\nlet _utf8Decoder;\nfunction getUtf8Decoder() {\n if (_utf8Decoder === undefined) {\n _utf8Decoder = new TextDecoder('utf-8');\n }\n return _utf8Decoder;\n}\n\nasync function generateAssociationKeypair() {\n return await crypto.subtle.generateKey({\n name: 'ECDSA',\n namedCurve: 'P-256',\n }, false /* extractable */, ['sign'] /* keyUsages */);\n}\n\nasync function generateECDHKeypair() {\n return await crypto.subtle.generateKey({\n name: 'ECDH',\n namedCurve: 'P-256',\n }, false /* extractable */, ['deriveKey', 'deriveBits'] /* keyUsages */);\n}\n\n// https://stackoverflow.com/a/9458996/802047\nfunction arrayBufferToBase64String(buffer) {\n let binary = '';\n const bytes = new Uint8Array(buffer);\n const len = bytes.byteLength;\n for (let ii = 0; ii < len; ii++) {\n binary += String.fromCharCode(bytes[ii]);\n }\n return window.btoa(binary);\n}\n\nfunction getRandomAssociationPort() {\n return assertAssociationPort(49152 + Math.floor(Math.random() * (65535 - 49152 + 1)));\n}\nfunction assertAssociationPort(port) {\n if (port < 49152 || port > 65535) {\n throw new SolanaMobileWalletAdapterError(SolanaMobileWalletAdapterErrorCode.ERROR_ASSOCIATION_PORT_OUT_OF_RANGE, `Association port number must be between 49152 and 65535. ${port} given.`, { port });\n }\n return port;\n}\n\nfunction getStringWithURLUnsafeCharactersReplaced(unsafeBase64EncodedString) {\n return unsafeBase64EncodedString.replace(/[/+=]/g, (m) => ({\n '/': '_',\n '+': '-',\n '=': '.',\n }[m]));\n}\n\nconst INTENT_NAME = 'solana-wallet';\nfunction getPathParts(pathString) {\n return (pathString\n // Strip leading and trailing slashes\n .replace(/(^\\/+|\\/+$)/g, '')\n // Return an array of directories\n .split('/'));\n}\nfunction getIntentURL(methodPathname, intentUrlBase) {\n let baseUrl = null;\n if (intentUrlBase) {\n try {\n baseUrl = new URL(intentUrlBase);\n }\n catch { } // eslint-disable-line no-empty\n if (baseUrl?.protocol !== 'https:') {\n throw new SolanaMobileWalletAdapterError(SolanaMobileWalletAdapterErrorCode.ERROR_FORBIDDEN_WALLET_BASE_URL, 'Base URLs supplied by wallets must be valid `https` URLs');\n }\n }\n baseUrl ||= new URL(`${INTENT_NAME}:/`);\n const pathname = methodPathname.startsWith('/')\n ? // Method is an absolute path. Replace it wholesale.\n methodPathname\n : // Method is a relative path. Merge it with the existing one.\n [...getPathParts(baseUrl.pathname), ...getPathParts(methodPathname)].join('/');\n return new URL(pathname, baseUrl);\n}\nasync function getAssociateAndroidIntentURL(associationPublicKey, putativePort, associationURLBase, protocolVersions = ['v1']) {\n const associationPort = assertAssociationPort(putativePort);\n const exportedKey = await crypto.subtle.exportKey('raw', associationPublicKey);\n const encodedKey = arrayBufferToBase64String(exportedKey);\n const url = getIntentURL('v1/associate/local', associationURLBase);\n url.searchParams.set('association', getStringWithURLUnsafeCharactersReplaced(encodedKey));\n url.searchParams.set('port', `${associationPort}`);\n protocolVersions.forEach((version) => {\n url.searchParams.set('v', version);\n });\n return url;\n}\nasync function getRemoteAssociateAndroidIntentURL(associationPublicKey, hostAuthority, reflectorId, associationURLBase, protocolVersions = ['v1']) {\n const exportedKey = await crypto.subtle.exportKey('raw', associationPublicKey);\n const encodedKey = arrayBufferToBase64String(exportedKey);\n const url = getIntentURL('v1/associate/remote', associationURLBase);\n url.searchParams.set('association', getStringWithURLUnsafeCharactersReplaced(encodedKey));\n url.searchParams.set('reflector', `${hostAuthority}`);\n url.searchParams.set('id', `${fromUint8Array$1(reflectorId, true)}`);\n protocolVersions.forEach((version) => {\n url.searchParams.set('v', version);\n });\n return url;\n}\n\nasync function encryptJsonRpcMessage(jsonRpcMessage, sharedSecret) {\n const plaintext = JSON.stringify(jsonRpcMessage);\n const sequenceNumber = jsonRpcMessage.id;\n return encryptMessage(plaintext, sequenceNumber, sharedSecret);\n}\nasync function decryptJsonRpcMessage(message, sharedSecret) {\n const plaintext = await decryptMessage(message, sharedSecret);\n const jsonRpcMessage = JSON.parse(plaintext);\n if (Object.hasOwnProperty.call(jsonRpcMessage, 'error')) {\n throw new SolanaMobileWalletAdapterProtocolError(jsonRpcMessage.id, jsonRpcMessage.error.code, jsonRpcMessage.error.message);\n }\n return jsonRpcMessage;\n}\n\nasync function parseHelloRsp(payloadBuffer, // The X9.62-encoded wallet endpoint ephemeral ECDH public keypoint.\nassociationPublicKey, ecdhPrivateKey) {\n const [associationPublicKeyBuffer, walletPublicKey] = await Promise.all([\n crypto.subtle.exportKey('raw', associationPublicKey),\n crypto.subtle.importKey('raw', payloadBuffer.slice(0, ENCODED_PUBLIC_KEY_LENGTH_BYTES), { name: 'ECDH', namedCurve: 'P-256' }, false /* extractable */, [] /* keyUsages */),\n ]);\n const sharedSecret = await crypto.subtle.deriveBits({ name: 'ECDH', public: walletPublicKey }, ecdhPrivateKey, 256);\n const ecdhSecretKey = await crypto.subtle.importKey('raw', sharedSecret, 'HKDF', false /* extractable */, ['deriveKey'] /* keyUsages */);\n const aesKeyMaterialVal = await crypto.subtle.deriveKey({\n name: 'HKDF',\n hash: 'SHA-256',\n salt: new Uint8Array(associationPublicKeyBuffer),\n info: new Uint8Array(),\n }, ecdhSecretKey, { name: 'AES-GCM', length: 128 }, false /* extractable */, ['encrypt', 'decrypt']);\n return aesKeyMaterialVal;\n}\n\nasync function parseSessionProps(message, sharedSecret) {\n const plaintext = await decryptMessage(message, sharedSecret);\n const jsonProperties = JSON.parse(plaintext);\n let protocolVersion = 'legacy';\n if (Object.hasOwnProperty.call(jsonProperties, 'v')) {\n switch (jsonProperties.v) {\n case 1:\n case '1':\n case 'v1':\n protocolVersion = 'v1';\n break;\n case 'legacy':\n protocolVersion = 'legacy';\n break;\n default:\n throw new SolanaMobileWalletAdapterError(SolanaMobileWalletAdapterErrorCode.ERROR_INVALID_PROTOCOL_VERSION, `Unknown/unsupported protocol version: ${jsonProperties.v}`);\n }\n }\n return ({\n protocol_version: protocolVersion\n });\n}\n\n// Typescript `enums` thwart tree-shaking. See https://bargsten.org/jsts/enums/\nconst Browser = {\n Firefox: 0,\n Other: 1,\n};\nfunction assertUnreachable(x) {\n return x;\n}\nfunction getBrowser() {\n return navigator.userAgent.indexOf('Firefox/') !== -1 ? Browser.Firefox : Browser.Other;\n}\nfunction getDetectionPromise() {\n // Chrome and others silently fail if a custom protocol is not supported.\n // For these, we wait to see if the browser is navigated away from in\n // a reasonable amount of time (ie. the native wallet opened).\n return new Promise((resolve, reject) => {\n function cleanup() {\n clearTimeout(timeoutId);\n window.removeEventListener('blur', handleBlur);\n }\n function handleBlur() {\n cleanup();\n resolve();\n }\n window.addEventListener('blur', handleBlur);\n const timeoutId = setTimeout(() => {\n cleanup();\n reject();\n }, 3000);\n });\n}\nlet _frame = null;\nfunction launchUrlThroughHiddenFrame(url) {\n if (_frame == null) {\n _frame = document.createElement('iframe');\n _frame.style.display = 'none';\n document.body.appendChild(_frame);\n }\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n _frame.contentWindow.location.href = url.toString();\n}\nasync function launchAssociation(associationUrl) {\n if (associationUrl.protocol === 'https:') {\n // The association URL is an Android 'App Link' or iOS 'Universal Link'.\n // These are regular web URLs that are designed to launch an app if it\n // is installed or load the actual target webpage if not.\n window.location.assign(associationUrl);\n }\n else {\n // The association URL has a custom protocol (eg. `solana-wallet:`)\n try {\n const browser = getBrowser();\n switch (browser) {\n case Browser.Firefox:\n // If a custom protocol is not supported in Firefox, it throws.\n launchUrlThroughHiddenFrame(associationUrl);\n // If we reached this line, it's supported.\n break;\n case Browser.Other: {\n const detectionPromise = getDetectionPromise();\n window.location.assign(associationUrl);\n await detectionPromise;\n break;\n }\n default:\n assertUnreachable(browser);\n }\n }\n catch (e) {\n throw new SolanaMobileWalletAdapterError(SolanaMobileWalletAdapterErrorCode.ERROR_WALLET_NOT_FOUND, 'Found no installed wallet that supports the mobile wallet protocol.');\n }\n }\n}\nasync function startSession(associationPublicKey, associationURLBase) {\n const randomAssociationPort = getRandomAssociationPort();\n const associationUrl = await getAssociateAndroidIntentURL(associationPublicKey, randomAssociationPort, associationURLBase);\n await launchAssociation(associationUrl);\n return randomAssociationPort;\n}\n\nconst WEBSOCKET_CONNECTION_CONFIG = {\n /**\n * 300 milliseconds is a generally accepted threshold for what someone\n * would consider an acceptable response time for a user interface\n * after having performed a low-attention tapping task. We set the initial\n * interval at which we wait for the wallet to set up the websocket at\n * half this, as per the Nyquist frequency, with a progressive backoff\n * sequence from there. The total wait time is 30s, which allows for the\n * user to be presented with a disambiguation dialog, select a wallet, and\n * for the wallet app to subsequently start.\n */\n retryDelayScheduleMs: [150, 150, 200, 500, 500, 750, 750, 1000],\n timeoutMs: 30000,\n};\nconst WEBSOCKET_PROTOCOL_BINARY = 'com.solana.mobilewalletadapter.v1';\nconst WEBSOCKET_PROTOCOL_BASE64 = 'com.solana.mobilewalletadapter.v1.base64';\nfunction assertSecureContext() {\n if (typeof window === 'undefined' || window.isSecureContext !== true) {\n throw new SolanaMobileWalletAdapterError(SolanaMobileWalletAdapterErrorCode.ERROR_SECURE_CONTEXT_REQUIRED, 'The mobile wallet adapter protocol must be used in a secure context (`https`).');\n }\n}\nfunction assertSecureEndpointSpecificURI(walletUriBase) {\n let url;\n try {\n url = new URL(walletUriBase);\n }\n catch {\n throw new SolanaMobileWalletAdapterError(SolanaMobileWalletAdapterErrorCode.ERROR_FORBIDDEN_WALLET_BASE_URL, 'Invalid base URL supplied by wallet');\n }\n if (url.protocol !== 'https:') {\n throw new SolanaMobileWalletAdapterError(SolanaMobileWalletAdapterErrorCode.ERROR_FORBIDDEN_WALLET_BASE_URL, 'Base URLs supplied by wallets must be valid `https` URLs');\n }\n}\nfunction getSequenceNumberFromByteArray(byteArray) {\n const view = new DataView(byteArray);\n return view.getUint32(0, /* littleEndian */ false);\n}\nfunction decodeVarLong(byteArray) {\n var bytes = new Uint8Array(byteArray), l = byteArray.byteLength, limit = 10, value = 0, offset = 0, b;\n do {\n if (offset >= l || offset > limit)\n throw new RangeError('Failed to decode varint');\n b = bytes[offset++];\n value |= (b & 0x7F) << (7 * offset);\n } while (b >= 0x80);\n return { value, offset };\n}\nfunction getReflectorIdFromByteArray(byteArray) {\n let { value: length, offset } = decodeVarLong(byteArray);\n return new Uint8Array(byteArray.slice(offset, offset + length));\n}\nasync function transact(callback, config) {\n const { wallet, close } = await startScenario(config);\n try {\n return await callback(await wallet);\n }\n finally {\n close();\n }\n}\nasync function startScenario(config) {\n assertSecureContext();\n const associationKeypair = await generateAssociationKeypair();\n const sessionPort = await startSession(associationKeypair.publicKey, config?.baseUri);\n const websocketURL = `ws://localhost:${sessionPort}/solana-wallet`;\n let connectionStartTime;\n const getNextRetryDelayMs = (() => {\n const schedule = [...WEBSOCKET_CONNECTION_CONFIG.retryDelayScheduleMs];\n return () => (schedule.length > 1 ? schedule.shift() : schedule[0]);\n })();\n let nextJsonRpcMessageId = 1;\n let lastKnownInboundSequenceNumber = 0;\n let state = { __type: 'disconnected' };\n let socket;\n let sessionEstablished = false;\n let handleForceClose;\n return { close: () => {\n socket.close();\n handleForceClose();\n }, wallet: new Promise((resolve, reject) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const jsonRpcResponsePromises = {};\n const handleOpen = async () => {\n if (state.__type !== 'connecting') {\n console.warn('Expected adapter state to be `connecting` at the moment the websocket opens. ' +\n `Got \\`${state.__type}\\`.`);\n return;\n }\n socket.removeEventListener('open', handleOpen);\n // previous versions of this library and walletlib incorrectly implemented the MWA session \n // establishment protocol for local connections. The dapp is supposed to wait for the \n // APP_PING message before sending the HELLO_REQ. Instead, the dapp was sending the HELLO_REQ \n // immediately upon connection to the websocket server regardless of wether or not an \n // APP_PING was sent by the wallet/websocket server. We must continue to support this behavior \n // in case the user is using a wallet that has not updated their walletlib implementation. \n const { associationKeypair } = state;\n const ecdhKeypair = await generateECDHKeypair();\n socket.send(await createHelloReq(ecdhKeypair.publicKey, associationKeypair.privateKey));\n state = {\n __type: 'hello_req_sent',\n associationPublicKey: associationKeypair.publicKey,\n ecdhPrivateKey: ecdhKeypair.privateKey,\n };\n };\n const handleClose = (evt) => {\n if (evt.wasClean) {\n state = { __type: 'disconnected' };\n }\n else {\n reject(new SolanaMobileWalletAdapterError(SolanaMobileWalletAdapterErrorCode.ERROR_SESSION_CLOSED, `The wallet session dropped unexpectedly (${evt.code}: ${evt.reason}).`, { closeEvent: evt }));\n }\n disposeSocket();\n };\n const handleError = async (_evt) => {\n disposeSocket();\n if (Date.now() - connectionStartTime >= WEBSOCKET_CONNECTION_CONFIG.timeoutMs) {\n reject(new SolanaMobileWalletAdapterError(SolanaMobileWalletAdapterErrorCode.ERROR_SESSION_TIMEOUT, `Failed to connect to the wallet websocket at ${websocketURL}.`));\n }\n else {\n await new Promise((resolve) => {\n const retryDelayMs = getNextRetryDelayMs();\n retryWaitTimeoutId = window.setTimeout(resolve, retryDelayMs);\n });\n attemptSocketConnection();\n }\n };\n const handleMessage = async (evt) => {\n const responseBuffer = await evt.data.arrayBuffer();\n switch (state.__type) {\n case 'connecting':\n if (responseBuffer.byteLength !== 0) {\n throw new Error('Encountered unexpected message while connecting');\n }\n const ecdhKeypair = await generateECDHKeypair();\n socket.send(await createHelloReq(ecdhKeypair.publicKey, associationKeypair.privateKey));\n state = {\n __type: 'hello_req_sent',\n associationPublicKey: associationKeypair.publicKey,\n ecdhPrivateKey: ecdhKeypair.privateKey,\n };\n break;\n case 'connected':\n try {\n const sequenceNumberVector = responseBuffer.slice(0, SEQUENCE_NUMBER_BYTES);\n const sequenceNumber = getSequenceNumberFromByteArray(sequenceNumberVector);\n if (sequenceNumber !== (lastKnownInboundSequenceNumber + 1)) {\n throw new Error('Encrypted message has invalid sequence number');\n }\n lastKnownInboundSequenceNumber = sequenceNumber;\n const jsonRpcMessage = await decryptJsonRpcMessage(responseBuffer, state.sharedSecret);\n const responsePromise = jsonRpcResponsePromises[jsonRpcMessage.id];\n delete jsonRpcResponsePromises[jsonRpcMessage.id];\n responsePromise.resolve(jsonRpcMessage.result);\n }\n catch (e) {\n if (e instanceof SolanaMobileWalletAdapterProtocolError) {\n const responsePromise = jsonRpcResponsePromises[e.jsonRpcMessageId];\n delete jsonRpcResponsePromises[e.jsonRpcMessageId];\n responsePromise.reject(e);\n }\n else {\n throw e;\n }\n }\n break;\n case 'hello_req_sent': {\n // if we receive an APP_PING message (empty message), resend the HELLO_REQ (see above)\n if (responseBuffer.byteLength === 0) {\n const ecdhKeypair = await generateECDHKeypair();\n socket.send(await createHelloReq(ecdhKeypair.publicKey, associationKeypair.privateKey));\n state = {\n __type: 'hello_req_sent',\n associationPublicKey: associationKeypair.publicKey,\n ecdhPrivateKey: ecdhKeypair.privateKey,\n };\n break;\n }\n const sharedSecret = await parseHelloRsp(responseBuffer, state.associationPublicKey, state.ecdhPrivateKey);\n const sessionPropertiesBuffer = responseBuffer.slice(ENCODED_PUBLIC_KEY_LENGTH_BYTES);\n const sessionProperties = sessionPropertiesBuffer.byteLength !== 0\n ? await (async () => {\n const sequenceNumberVector = sessionPropertiesBuffer.slice(0, SEQUENCE_NUMBER_BYTES);\n const sequenceNumber = getSequenceNumberFromByteArray(sequenceNumberVector);\n if (sequenceNumber !== (lastKnownInboundSequenceNumber + 1)) {\n throw new Error('Encrypted message has invalid sequence number');\n }\n lastKnownInboundSequenceNumber = sequenceNumber;\n return parseSessionProps(sessionPropertiesBuffer, sharedSecret);\n })() : { protocol_version: 'legacy' };\n state = { __type: 'connected', sharedSecret, sessionProperties };\n const wallet = createMobileWalletProxy(sessionProperties.protocol_version, async (method, params) => {\n const id = nextJsonRpcMessageId++;\n socket.send(await encryptJsonRpcMessage({\n id,\n jsonrpc: '2.0',\n method,\n params: params ?? {},\n }, sharedSecret));\n return new Promise((resolve, reject) => {\n jsonRpcResponsePromises[id] = {\n resolve(result) {\n switch (method) {\n case 'authorize':\n case 'reauthorize': {\n const { wallet_uri_base } = result;\n if (wallet_uri_base != null) {\n try {\n assertSecureEndpointSpecificURI(wallet_uri_base);\n }\n catch (e) {\n reject(e);\n return;\n }\n }\n break;\n }\n }\n resolve(result);\n },\n reject,\n };\n });\n });\n sessionEstablished = true;\n try {\n resolve(wallet);\n }\n catch (e) {\n reject(e);\n }\n break;\n }\n }\n };\n handleForceClose = () => {\n socket.removeEventListener('message', handleMessage);\n disposeSocket();\n if (!sessionEstablished) {\n reject(new SolanaMobileWalletAdapterError(SolanaMobileWalletAdapterErrorCode.ERROR_SESSION_CLOSED, `The wallet session was closed before connection.`, { closeEvent: new CloseEvent('socket was closed before connection') }));\n }\n };\n let disposeSocket;\n let retryWaitTimeoutId;\n const attemptSocketConnection = () => {\n if (disposeSocket) {\n disposeSocket();\n }\n state = { __type: 'connecting', associationKeypair };\n if (connectionStartTime === undefined) {\n connectionStartTime = Date.now();\n }\n socket = new WebSocket(websocketURL, [WEBSOCKET_PROTOCOL_BINARY]);\n socket.addEventListener('open', handleOpen);\n socket.addEventListener('close', handleClose);\n socket.addEventListener('error', handleError);\n socket.addEventListener('message', handleMessage);\n disposeSocket = () => {\n window.clearTimeout(retryWaitTimeoutId);\n socket.removeEventListener('open', handleOpen);\n socket.removeEventListener('close', handleClose);\n socket.removeEventListener('error', handleError);\n socket.removeEventListener('message', handleMessage);\n };\n };\n attemptSocketConnection();\n }) };\n}\nasync function startRemoteScenario(config) {\n assertSecureContext();\n const associationKeypair = await generateAssociationKeypair();\n const websocketURL = `wss://${config?.remoteHostAuthority}/reflect`;\n let connectionStartTime;\n const getNextRetryDelayMs = (() => {\n const schedule = [...WEBSOCKET_CONNECTION_CONFIG.retryDelayScheduleMs];\n return () => (schedule.length > 1 ? schedule.shift() : schedule[0]);\n })();\n let nextJsonRpcMessageId = 1;\n let lastKnownInboundSequenceNumber = 0;\n let encoding;\n let state = { __type: 'disconnected' };\n let socket;\n let disposeSocket;\n let decodeBytes = async (evt) => {\n if (encoding == 'base64') { // base64 encoding\n const message = await evt.data;\n return toUint8Array(message).buffer;\n }\n else {\n return await evt.data.arrayBuffer();\n }\n };\n // Reflector Connection Phase\n // here we connect to the reflector and wait for the REFLECTOR_ID message \n // so we build the association URL and return that back to the caller\n const associationUrl = await new Promise((resolve, reject) => {\n const handleOpen = async () => {\n if (state.__type !== 'connecting') {\n console.warn('Expected adapter state to be `connecting` at the moment the websocket opens. ' +\n `Got \\`${state.__type}\\`.`);\n return;\n }\n if (socket.protocol.includes(WEBSOCKET_PROTOCOL_BASE64)) {\n encoding = 'base64';\n }\n else {\n encoding = 'binary';\n }\n socket.removeEventListener('open', handleOpen);\n };\n const handleClose = (evt) => {\n if (evt.wasClean) {\n state = { __type: 'disconnected' };\n }\n else {\n reject(new SolanaMobileWalletAdapterError(SolanaMobileWalletAdapterErrorCode.ERROR_SESSION_CLOSED, `The wallet session dropped unexpectedly (${evt.code}: ${evt.reason}).`, { closeEvent: evt }));\n }\n disposeSocket();\n };\n const handleError = async (_evt) => {\n disposeSocket();\n if (Date.now() - connectionStartTime >= WEBSOCKET_CONNECTION_CONFIG.timeoutMs) {\n reject(new SolanaMobileWalletAdapterError(SolanaMobileWalletAdapterErrorCode.ERROR_SESSION_TIMEOUT, `Failed to connect to the wallet websocket at ${websocketURL}.`));\n }\n else {\n await new Promise((resolve) => {\n const retryDelayMs = getNextRetryDelayMs();\n retryWaitTimeoutId = window.setTimeout(resolve, retryDelayMs);\n });\n attemptSocketConnection();\n }\n };\n const handleReflectorIdMessage = async (evt) => {\n const responseBuffer = await decodeBytes(evt);\n if (state.__type === 'connecting') {\n if (responseBuffer.byteLength == 0) {\n throw new Error('Encountered unexpected message while connecting');\n }\n const reflectorId = getReflectorIdFromByteArray(responseBuffer);\n state = {\n __type: 'reflector_id_received',\n reflectorId: reflectorId\n };\n const associationUrl = await getRemoteAssociateAndroidIntentURL(associationKeypair.publicKey, config.remoteHostAuthority, reflectorId, config?.baseUri);\n socket.removeEventListener('message', handleReflectorIdMessage);\n resolve(associationUrl);\n }\n };\n let retryWaitTimeoutId;\n const attemptSocketConnection = () => {\n if (disposeSocket) {\n disposeSocket();\n }\n state = { __type: 'connecting', associationKeypair };\n if (connectionStartTime === undefined) {\n connectionStartTime = Date.now();\n }\n socket = new WebSocket(websocketURL, [WEBSOCKET_PROTOCOL_BINARY, WEBSOCKET_PROTOCOL_BASE64]);\n socket.addEventListener('open', handleOpen);\n socket.addEventListener('close', handleClose);\n socket.addEventListener('error', handleError);\n socket.addEventListener('message', handleReflectorIdMessage);\n disposeSocket = () => {\n window.clearTimeout(retryWaitTimeoutId);\n socket.removeEventListener('open', handleOpen);\n socket.removeEventListener('close', handleClose);\n socket.removeEventListener('error', handleError);\n socket.removeEventListener('message', handleReflectorIdMessage);\n };\n };\n attemptSocketConnection();\n });\n // Wallet Connection Phase\n // here we return the association URL (containing the reflector ID) to the caller + \n // a promise that will resolve the MobileWallet object once the wallet connects.\n let sessionEstablished = false;\n let handleClose;\n return { associationUrl, close: () => {\n socket.close();\n handleClose();\n }, wallet: new Promise((resolve, reject) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const jsonRpcResponsePromises = {};\n const handleMessage = async (evt) => {\n const responseBuffer = await decodeBytes(evt);\n switch (state.__type) {\n case 'reflector_id_received':\n if (responseBuffer.byteLength !== 0) {\n throw new Error('Encountered unexpected message while awaiting reflection');\n }\n const ecdhKeypair = await generateECDHKeypair();\n const binaryMsg = await createHelloReq(ecdhKeypair.publicKey, associationKeypair.privateKey);\n if (encoding == 'base64') {\n socket.send(fromUint8Array$1(binaryMsg));\n }\n else {\n socket.send(binaryMsg);\n }\n state = {\n __type: 'hello_req_sent',\n associationPublicKey: associationKeypair.publicKey,\n ecdhPrivateKey: ecdhKeypair.privateKey,\n };\n break;\n case 'connected':\n try {\n const sequenceNumberVector = responseBuffer.slice(0, SEQUENCE_NUMBER_BYTES);\n const sequenceNumber = getSequenceNumberFromByteArray(sequenceNumberVector);\n if (sequenceNumber !== (lastKnownInboundSequenceNumber + 1)) {\n throw new Error('Encrypted message has invalid sequence number');\n }\n lastKnownInboundSequenceNumber = sequenceNumber;\n const jsonRpcMessage = await decryptJsonRpcMessage(responseBuffer, state.sharedSecret);\n const responsePromise = jsonRpcResponsePromises[jsonRpcMessage.id];\n delete jsonRpcResponsePromises[jsonRpcMessage.id];\n responsePromise.resolve(jsonRpcMessage.result);\n }\n catch (e) {\n if (e instanceof SolanaMobileWalletAdapterProtocolError) {\n const responsePromise = jsonRpcResponsePromises[e.jsonRpcMessageId];\n delete jsonRpcResponsePromises[e.jsonRpcMessageId];\n responsePromise.reject(e);\n }\n else {\n throw e;\n }\n }\n break;\n case 'hello_req_sent': {\n const sharedSecret = await parseHelloRsp(responseBuffer, state.associationPublicKey, state.ecdhPrivateKey);\n const sessionPropertiesBuffer = responseBuffer.slice(ENCODED_PUBLIC_KEY_LENGTH_BYTES);\n const sessionProperties = sessionPropertiesBuffer.byteLength !== 0\n ? await (async () => {\n const sequenceNumberVector = sessionPropertiesBuffer.slice(0, SEQUENCE_NUMBER_BYTES);\n const sequenceNumber = getSequenceNumberFromByteArray(sequenceNumberVector);\n if (sequenceNumber !== (lastKnownInboundSequenceNumber + 1)) {\n throw new Error('Encrypted message has invalid sequence number');\n }\n lastKnownInboundSequenceNumber = sequenceNumber;\n return parseSessionProps(sessionPropertiesBuffer, sharedSecret);\n })() : { protocol_version: 'legacy' };\n state = { __type: 'connected', sharedSecret, sessionProperties };\n const wallet = createMobileWalletProxy(sessionProperties.protocol_version, async (method, params) => {\n const id = nextJsonRpcMessageId++;\n const binaryMsg = await encryptJsonRpcMessage({\n id,\n jsonrpc: '2.0',\n method,\n params: params ?? {},\n }, sharedSecret);\n if (encoding == 'base64') {\n socket.send(fromUint8Array$1(binaryMsg));\n }\n else {\n socket.send(binaryMsg);\n }\n return new Promise((resolve, reject) => {\n jsonRpcResponsePromises[id] = {\n resolve(result) {\n switch (method) {\n case 'authorize':\n case 'reauthorize': {\n const { wallet_uri_base } = result;\n if (wallet_uri_base != null) {\n try {\n assertSecureEndpointSpecificURI(wallet_uri_base);\n }\n catch (e) {\n reject(e);\n return;\n }\n }\n break;\n }\n }\n resolve(result);\n },\n reject,\n };\n });\n });\n sessionEstablished = true;\n try {\n resolve(wallet);\n }\n catch (e) {\n reject(e);\n }\n break;\n }\n }\n };\n socket.addEventListener('message', handleMessage);\n handleClose = () => {\n socket.removeEventListener('message', handleMessage);\n disposeSocket();\n if (!sessionEstablished) {\n reject(new SolanaMobileWalletAdapterError(SolanaMobileWalletAdapterErrorCode.ERROR_SESSION_CLOSED, `The wallet session was closed before connection.`, { closeEvent: new CloseEvent('socket was closed before connection') }));\n }\n };\n }) };\n}\n\nexport { SolanaCloneAuthorization, SolanaMobileWalletAdapterError, SolanaMobileWalletAdapterErrorCode, SolanaMobileWalletAdapterProtocolError, SolanaMobileWalletAdapterProtocolErrorCode, SolanaSignInWithSolana, SolanaSignTransactions, startRemoteScenario, startScenario, transact };\n","// 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 (psz < source.length) {\n // Find code of next character\n const charCode = source.charCodeAt(psz)\n // Base map can not be indexed using char code\n if (charCode > 255) { return }\n // Decode character\n let carry = BASE_MAP[charCode]\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","import { VersionedMessage, Transaction, VersionedTransaction, SIGNATURE_LENGTH_IN_BYTES } from '@solana/web3.js';\nimport { startRemoteScenario as startRemoteScenario$1, transact as transact$1 } from '@solana-mobile/mobile-wallet-adapter-protocol';\nimport bs58 from 'bs58';\n\nfunction fromUint8Array(byteArray) {\n return window.btoa(String.fromCharCode.call(null, ...byteArray));\n}\nfunction toUint8Array(base64EncodedByteArray) {\n return new Uint8Array(window\n .atob(base64EncodedByteArray)\n .split('')\n .map((c) => c.charCodeAt(0)));\n}\n\nfunction getPayloadFromTransaction(transaction) {\n const serializedTransaction = 'version' in transaction\n ? transaction.serialize()\n : transaction.serialize({\n requireAllSignatures: false,\n verifySignatures: false,\n });\n const payload = fromUint8Array(serializedTransaction);\n return payload;\n}\nfunction getTransactionFromWireMessage(byteArray) {\n const numSignatures = byteArray[0];\n const messageOffset = numSignatures * SIGNATURE_LENGTH_IN_BYTES + 1;\n const version = VersionedMessage.deserializeMessageVersion(byteArray.slice(messageOffset, byteArray.length));\n if (version === 'legacy') {\n return Transaction.from(byteArray);\n }\n else {\n return VersionedTransaction.deserialize(byteArray);\n }\n}\nasync function transact(callback, config) {\n const augmentedCallback = (wallet) => {\n return callback(augmentWalletAPI(wallet));\n };\n return await transact$1(augmentedCallback, config);\n}\nasync function startRemoteScenario(config) {\n const { wallet, close, associationUrl } = await startRemoteScenario$1(config);\n const augmentedPromise = wallet.then((wallet) => {\n return augmentWalletAPI(wallet);\n });\n return { wallet: augmentedPromise, close, associationUrl };\n}\nfunction augmentWalletAPI(wallet) {\n return new Proxy({}, {\n get(target, p) {\n if (target[p] == null) {\n switch (p) {\n case 'signAndSendTransactions':\n target[p] = async function ({ minContextSlot, commitment, skipPreflight, maxRetries, waitForCommitmentToSendNextTransaction, transactions, ...rest }) {\n const payloads = transactions.map(getPayloadFromTransaction);\n const options = {\n min_context_slot: minContextSlot,\n commitment: commitment,\n skip_preflight: skipPreflight,\n max_retries: maxRetries,\n wait_for_commitment_to_send_next_transaction: waitForCommitmentToSendNextTransaction\n };\n const { signatures: base64EncodedSignatures } = await wallet.signAndSendTransactions({\n ...rest,\n ...(Object.values(options).some(element => element != null)\n ? { options: options }\n : null),\n payloads,\n });\n const signatures = base64EncodedSignatures.map(toUint8Array).map(bs58.encode);\n return signatures;\n };\n break;\n case 'signMessages':\n target[p] = async function ({ payloads, ...rest }) {\n const base64EncodedPayloads = payloads.map(fromUint8Array);\n const { signed_payloads: base64EncodedSignedMessages } = await wallet.signMessages({\n ...rest,\n payloads: base64EncodedPayloads,\n });\n const signedMessages = base64EncodedSignedMessages.map(toUint8Array);\n return signedMessages;\n };\n break;\n case 'signTransactions':\n target[p] = async function ({ transactions, ...rest }) {\n const payloads = transactions.map(getPayloadFromTransaction);\n const { signed_payloads: base64EncodedCompiledTransactions } = await wallet.signTransactions({\n ...rest,\n payloads,\n });\n const compiledTransactions = base64EncodedCompiledTransactions.map(toUint8Array);\n const signedTransactions = compiledTransactions.map(getTransactionFromWireMessage);\n return signedTransactions;\n };\n break;\n default: {\n target[p] = wallet[p];\n break;\n }\n }\n }\n return target[p];\n },\n defineProperty() {\n return false;\n },\n deleteProperty() {\n return false;\n },\n });\n}\n\nexport { startRemoteScenario, transact };\n"],"names":["toUint8Array","fromUint8Array","transact","startRemoteScenario","basex"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6]}
@@ -0,0 +1,242 @@
1
+ import { VersionedMessage, Transaction, VersionedTransaction, SIGNATURE_LENGTH_IN_BYTES } from '@solana/web3.js';
2
+ import { s as startRemoteScenario$1, t as transact$1 } from './index.browser-C-_FEr5M.esm.js';
3
+
4
+ // base-x encoding / decoding
5
+ // Copyright (c) 2018 base-x contributors
6
+ // Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)
7
+ // Distributed under the MIT software license, see the accompanying
8
+ // file LICENSE or http://www.opensource.org/licenses/mit-license.php.
9
+ function base (ALPHABET) {
10
+ if (ALPHABET.length >= 255) { throw new TypeError('Alphabet too long') }
11
+ const BASE_MAP = new Uint8Array(256);
12
+ for (let j = 0; j < BASE_MAP.length; j++) {
13
+ BASE_MAP[j] = 255;
14
+ }
15
+ for (let i = 0; i < ALPHABET.length; i++) {
16
+ const x = ALPHABET.charAt(i);
17
+ const xc = x.charCodeAt(0);
18
+ if (BASE_MAP[xc] !== 255) { throw new TypeError(x + ' is ambiguous') }
19
+ BASE_MAP[xc] = i;
20
+ }
21
+ const BASE = ALPHABET.length;
22
+ const LEADER = ALPHABET.charAt(0);
23
+ const FACTOR = Math.log(BASE) / Math.log(256); // log(BASE) / log(256), rounded up
24
+ const iFACTOR = Math.log(256) / Math.log(BASE); // log(256) / log(BASE), rounded up
25
+ function encode (source) {
26
+ // eslint-disable-next-line no-empty
27
+ if (source instanceof Uint8Array) ; else if (ArrayBuffer.isView(source)) {
28
+ source = new Uint8Array(source.buffer, source.byteOffset, source.byteLength);
29
+ } else if (Array.isArray(source)) {
30
+ source = Uint8Array.from(source);
31
+ }
32
+ if (!(source instanceof Uint8Array)) { throw new TypeError('Expected Uint8Array') }
33
+ if (source.length === 0) { return '' }
34
+ // Skip & count leading zeroes.
35
+ let zeroes = 0;
36
+ let length = 0;
37
+ let pbegin = 0;
38
+ const pend = source.length;
39
+ while (pbegin !== pend && source[pbegin] === 0) {
40
+ pbegin++;
41
+ zeroes++;
42
+ }
43
+ // Allocate enough space in big-endian base58 representation.
44
+ const size = ((pend - pbegin) * iFACTOR + 1) >>> 0;
45
+ const b58 = new Uint8Array(size);
46
+ // Process the bytes.
47
+ while (pbegin !== pend) {
48
+ let carry = source[pbegin];
49
+ // Apply "b58 = b58 * 256 + ch".
50
+ let i = 0;
51
+ for (let it1 = size - 1; (carry !== 0 || i < length) && (it1 !== -1); it1--, i++) {
52
+ carry += (256 * b58[it1]) >>> 0;
53
+ b58[it1] = (carry % BASE) >>> 0;
54
+ carry = (carry / BASE) >>> 0;
55
+ }
56
+ if (carry !== 0) { throw new Error('Non-zero carry') }
57
+ length = i;
58
+ pbegin++;
59
+ }
60
+ // Skip leading zeroes in base58 result.
61
+ let it2 = size - length;
62
+ while (it2 !== size && b58[it2] === 0) {
63
+ it2++;
64
+ }
65
+ // Translate the result into a string.
66
+ let str = LEADER.repeat(zeroes);
67
+ for (; it2 < size; ++it2) { str += ALPHABET.charAt(b58[it2]); }
68
+ return str
69
+ }
70
+ function decodeUnsafe (source) {
71
+ if (typeof source !== 'string') { throw new TypeError('Expected String') }
72
+ if (source.length === 0) { return new Uint8Array() }
73
+ let psz = 0;
74
+ // Skip and count leading '1's.
75
+ let zeroes = 0;
76
+ let length = 0;
77
+ while (source[psz] === LEADER) {
78
+ zeroes++;
79
+ psz++;
80
+ }
81
+ // Allocate enough space in big-endian base256 representation.
82
+ const size = (((source.length - psz) * FACTOR) + 1) >>> 0; // log(58) / log(256), rounded up.
83
+ const b256 = new Uint8Array(size);
84
+ // Process the characters.
85
+ while (psz < source.length) {
86
+ // Find code of next character
87
+ const charCode = source.charCodeAt(psz);
88
+ // Base map can not be indexed using char code
89
+ if (charCode > 255) { return }
90
+ // Decode character
91
+ let carry = BASE_MAP[charCode];
92
+ // Invalid character
93
+ if (carry === 255) { return }
94
+ let i = 0;
95
+ for (let it3 = size - 1; (carry !== 0 || i < length) && (it3 !== -1); it3--, i++) {
96
+ carry += (BASE * b256[it3]) >>> 0;
97
+ b256[it3] = (carry % 256) >>> 0;
98
+ carry = (carry / 256) >>> 0;
99
+ }
100
+ if (carry !== 0) { throw new Error('Non-zero carry') }
101
+ length = i;
102
+ psz++;
103
+ }
104
+ // Skip leading zeroes in b256.
105
+ let it4 = size - length;
106
+ while (it4 !== size && b256[it4] === 0) {
107
+ it4++;
108
+ }
109
+ const vch = new Uint8Array(zeroes + (size - it4));
110
+ let j = zeroes;
111
+ while (it4 !== size) {
112
+ vch[j++] = b256[it4++];
113
+ }
114
+ return vch
115
+ }
116
+ function decode (string) {
117
+ const buffer = decodeUnsafe(string);
118
+ if (buffer) { return buffer }
119
+ throw new Error('Non-base' + BASE + ' character')
120
+ }
121
+ return {
122
+ encode,
123
+ decodeUnsafe,
124
+ decode
125
+ }
126
+ }
127
+
128
+ var ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';
129
+ var bs58 = base(ALPHABET);
130
+
131
+ function fromUint8Array(byteArray) {
132
+ return window.btoa(String.fromCharCode.call(null, ...byteArray));
133
+ }
134
+ function toUint8Array(base64EncodedByteArray) {
135
+ return new Uint8Array(window
136
+ .atob(base64EncodedByteArray)
137
+ .split('')
138
+ .map((c) => c.charCodeAt(0)));
139
+ }
140
+
141
+ function getPayloadFromTransaction(transaction) {
142
+ const serializedTransaction = 'version' in transaction
143
+ ? transaction.serialize()
144
+ : transaction.serialize({
145
+ requireAllSignatures: false,
146
+ verifySignatures: false,
147
+ });
148
+ const payload = fromUint8Array(serializedTransaction);
149
+ return payload;
150
+ }
151
+ function getTransactionFromWireMessage(byteArray) {
152
+ const numSignatures = byteArray[0];
153
+ const messageOffset = numSignatures * SIGNATURE_LENGTH_IN_BYTES + 1;
154
+ const version = VersionedMessage.deserializeMessageVersion(byteArray.slice(messageOffset, byteArray.length));
155
+ if (version === 'legacy') {
156
+ return Transaction.from(byteArray);
157
+ }
158
+ else {
159
+ return VersionedTransaction.deserialize(byteArray);
160
+ }
161
+ }
162
+ async function transact(callback, config) {
163
+ const augmentedCallback = (wallet) => {
164
+ return callback(augmentWalletAPI(wallet));
165
+ };
166
+ return await transact$1(augmentedCallback, config);
167
+ }
168
+ async function startRemoteScenario(config) {
169
+ const { wallet, close, associationUrl } = await startRemoteScenario$1(config);
170
+ const augmentedPromise = wallet.then((wallet) => {
171
+ return augmentWalletAPI(wallet);
172
+ });
173
+ return { wallet: augmentedPromise, close, associationUrl };
174
+ }
175
+ function augmentWalletAPI(wallet) {
176
+ return new Proxy({}, {
177
+ get(target, p) {
178
+ if (target[p] == null) {
179
+ switch (p) {
180
+ case 'signAndSendTransactions':
181
+ target[p] = async function ({ minContextSlot, commitment, skipPreflight, maxRetries, waitForCommitmentToSendNextTransaction, transactions, ...rest }) {
182
+ const payloads = transactions.map(getPayloadFromTransaction);
183
+ const options = {
184
+ min_context_slot: minContextSlot,
185
+ commitment: commitment,
186
+ skip_preflight: skipPreflight,
187
+ max_retries: maxRetries,
188
+ wait_for_commitment_to_send_next_transaction: waitForCommitmentToSendNextTransaction
189
+ };
190
+ const { signatures: base64EncodedSignatures } = await wallet.signAndSendTransactions({
191
+ ...rest,
192
+ ...(Object.values(options).some(element => element != null)
193
+ ? { options: options }
194
+ : null),
195
+ payloads,
196
+ });
197
+ const signatures = base64EncodedSignatures.map(toUint8Array).map(bs58.encode);
198
+ return signatures;
199
+ };
200
+ break;
201
+ case 'signMessages':
202
+ target[p] = async function ({ payloads, ...rest }) {
203
+ const base64EncodedPayloads = payloads.map(fromUint8Array);
204
+ const { signed_payloads: base64EncodedSignedMessages } = await wallet.signMessages({
205
+ ...rest,
206
+ payloads: base64EncodedPayloads,
207
+ });
208
+ const signedMessages = base64EncodedSignedMessages.map(toUint8Array);
209
+ return signedMessages;
210
+ };
211
+ break;
212
+ case 'signTransactions':
213
+ target[p] = async function ({ transactions, ...rest }) {
214
+ const payloads = transactions.map(getPayloadFromTransaction);
215
+ const { signed_payloads: base64EncodedCompiledTransactions } = await wallet.signTransactions({
216
+ ...rest,
217
+ payloads,
218
+ });
219
+ const compiledTransactions = base64EncodedCompiledTransactions.map(toUint8Array);
220
+ const signedTransactions = compiledTransactions.map(getTransactionFromWireMessage);
221
+ return signedTransactions;
222
+ };
223
+ break;
224
+ default: {
225
+ target[p] = wallet[p];
226
+ break;
227
+ }
228
+ }
229
+ }
230
+ return target[p];
231
+ },
232
+ defineProperty() {
233
+ return false;
234
+ },
235
+ deleteProperty() {
236
+ return false;
237
+ },
238
+ });
239
+ }
240
+
241
+ export { startRemoteScenario, transact };
242
+ //# sourceMappingURL=index.browser-Dbq5Qf1G.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.browser-Dbq5Qf1G.esm.js","sources":["../node_modules/@solana-mobile/mobile-wallet-adapter-protocol-web3js/node_modules/base-x/src/esm/index.js","../node_modules/@solana-mobile/mobile-wallet-adapter-protocol-web3js/node_modules/bs58/src/esm/index.js","../node_modules/@solana-mobile/mobile-wallet-adapter-protocol-web3js/lib/esm/index.browser.js"],"sourcesContent":["// 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 (psz < source.length) {\n // Find code of next character\n const charCode = source.charCodeAt(psz)\n // Base map can not be indexed using char code\n if (charCode > 255) { return }\n // Decode character\n let carry = BASE_MAP[charCode]\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","import { VersionedMessage, Transaction, VersionedTransaction, SIGNATURE_LENGTH_IN_BYTES } from '@solana/web3.js';\nimport { startRemoteScenario as startRemoteScenario$1, transact as transact$1 } from '@solana-mobile/mobile-wallet-adapter-protocol';\nimport bs58 from 'bs58';\n\nfunction fromUint8Array(byteArray) {\n return window.btoa(String.fromCharCode.call(null, ...byteArray));\n}\nfunction toUint8Array(base64EncodedByteArray) {\n return new Uint8Array(window\n .atob(base64EncodedByteArray)\n .split('')\n .map((c) => c.charCodeAt(0)));\n}\n\nfunction getPayloadFromTransaction(transaction) {\n const serializedTransaction = 'version' in transaction\n ? transaction.serialize()\n : transaction.serialize({\n requireAllSignatures: false,\n verifySignatures: false,\n });\n const payload = fromUint8Array(serializedTransaction);\n return payload;\n}\nfunction getTransactionFromWireMessage(byteArray) {\n const numSignatures = byteArray[0];\n const messageOffset = numSignatures * SIGNATURE_LENGTH_IN_BYTES + 1;\n const version = VersionedMessage.deserializeMessageVersion(byteArray.slice(messageOffset, byteArray.length));\n if (version === 'legacy') {\n return Transaction.from(byteArray);\n }\n else {\n return VersionedTransaction.deserialize(byteArray);\n }\n}\nasync function transact(callback, config) {\n const augmentedCallback = (wallet) => {\n return callback(augmentWalletAPI(wallet));\n };\n return await transact$1(augmentedCallback, config);\n}\nasync function startRemoteScenario(config) {\n const { wallet, close, associationUrl } = await startRemoteScenario$1(config);\n const augmentedPromise = wallet.then((wallet) => {\n return augmentWalletAPI(wallet);\n });\n return { wallet: augmentedPromise, close, associationUrl };\n}\nfunction augmentWalletAPI(wallet) {\n return new Proxy({}, {\n get(target, p) {\n if (target[p] == null) {\n switch (p) {\n case 'signAndSendTransactions':\n target[p] = async function ({ minContextSlot, commitment, skipPreflight, maxRetries, waitForCommitmentToSendNextTransaction, transactions, ...rest }) {\n const payloads = transactions.map(getPayloadFromTransaction);\n const options = {\n min_context_slot: minContextSlot,\n commitment: commitment,\n skip_preflight: skipPreflight,\n max_retries: maxRetries,\n wait_for_commitment_to_send_next_transaction: waitForCommitmentToSendNextTransaction\n };\n const { signatures: base64EncodedSignatures } = await wallet.signAndSendTransactions({\n ...rest,\n ...(Object.values(options).some(element => element != null)\n ? { options: options }\n : null),\n payloads,\n });\n const signatures = base64EncodedSignatures.map(toUint8Array).map(bs58.encode);\n return signatures;\n };\n break;\n case 'signMessages':\n target[p] = async function ({ payloads, ...rest }) {\n const base64EncodedPayloads = payloads.map(fromUint8Array);\n const { signed_payloads: base64EncodedSignedMessages } = await wallet.signMessages({\n ...rest,\n payloads: base64EncodedPayloads,\n });\n const signedMessages = base64EncodedSignedMessages.map(toUint8Array);\n return signedMessages;\n };\n break;\n case 'signTransactions':\n target[p] = async function ({ transactions, ...rest }) {\n const payloads = transactions.map(getPayloadFromTransaction);\n const { signed_payloads: base64EncodedCompiledTransactions } = await wallet.signTransactions({\n ...rest,\n payloads,\n });\n const compiledTransactions = base64EncodedCompiledTransactions.map(toUint8Array);\n const signedTransactions = compiledTransactions.map(getTransactionFromWireMessage);\n return signedTransactions;\n };\n break;\n default: {\n target[p] = wallet[p];\n break;\n }\n }\n }\n return target[p];\n },\n defineProperty() {\n return false;\n },\n deleteProperty() {\n return false;\n },\n });\n}\n\nexport { startRemoteScenario, transact };\n"],"names":["basex"],"mappings":";;;AAAA;AACA;AACA;AACA;AACA;AACA,SAAS,IAAI,EAAE,QAAQ,EAAE;AACzB,EAAE,IAAI,QAAQ,CAAC,MAAM,IAAI,GAAG,EAAE,EAAE,MAAM,IAAI,SAAS,CAAC,mBAAmB,CAAC,CAAC;AACzE,EAAE,MAAM,QAAQ,GAAG,IAAI,UAAU,CAAC,GAAG;AACrC,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC5C,IAAI,QAAQ,CAAC,CAAC,CAAC,GAAG;AAClB,EAAE;AACF,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC5C,IAAI,MAAM,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC/B,IAAI,MAAM,EAAE,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC;AAC7B,IAAI,IAAI,QAAQ,CAAC,EAAE,CAAC,KAAK,GAAG,EAAE,EAAE,MAAM,IAAI,SAAS,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC;AACzE,IAAI,QAAQ,CAAC,EAAE,CAAC,GAAG;AACnB,EAAE;AACF,EAAE,MAAM,IAAI,GAAG,QAAQ,CAAC;AACxB,EAAE,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;AAClC,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAC;AAC/C,EAAE,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAC;AAChD,EAAE,SAAS,MAAM,EAAE,MAAM,EAAE;AAC3B;AACA,IAAI,IAAI,MAAM,YAAY,UAAU,EAAE,CAAG,MAAM,IAAI,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;AAC/E,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,UAAU;AACjF,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AACtC,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM;AACrC,IAAI;AACJ,IAAI,IAAI,EAAE,MAAM,YAAY,UAAU,CAAC,EAAE,EAAE,MAAM,IAAI,SAAS,CAAC,qBAAqB,CAAC,CAAC;AACtF,IAAI,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC;AACzC;AACA,IAAI,IAAI,MAAM,GAAG;AACjB,IAAI,IAAI,MAAM,GAAG;AACjB,IAAI,IAAI,MAAM,GAAG;AACjB,IAAI,MAAM,IAAI,GAAG,MAAM,CAAC;AACxB,IAAI,OAAO,MAAM,KAAK,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;AACpD,MAAM,MAAM;AACZ,MAAM,MAAM;AACZ,IAAI;AACJ;AACA,IAAI,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,MAAM,IAAI,OAAO,GAAG,CAAC,MAAM;AACrD,IAAI,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,IAAI;AACnC;AACA,IAAI,OAAO,MAAM,KAAK,IAAI,EAAE;AAC5B,MAAM,IAAI,KAAK,GAAG,MAAM,CAAC,MAAM;AAC/B;AACA,MAAM,IAAI,CAAC,GAAG;AACd,MAAM,KAAK,IAAI,GAAG,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,MAAM,GAAG,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;AACxF,QAAQ,KAAK,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM;AACtC,QAAQ,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,MAAM;AACtC,QAAQ,KAAK,GAAG,CAAC,KAAK,GAAG,IAAI,MAAM;AACnC,MAAM;AACN,MAAM,IAAI,KAAK,KAAK,CAAC,EAAE,EAAE,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;AAC3D,MAAM,MAAM,GAAG;AACf,MAAM,MAAM;AACZ,IAAI;AACJ;AACA,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG;AACrB,IAAI,OAAO,GAAG,KAAK,IAAI,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;AAC3C,MAAM,GAAG;AACT,IAAI;AACJ;AACA,IAAI,IAAI,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM;AAClC,IAAI,OAAO,GAAG,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAC,CAAC;AACjE,IAAI,OAAO;AACX,EAAE;AACF,EAAE,SAAS,YAAY,EAAE,MAAM,EAAE;AACjC,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,EAAE,MAAM,IAAI,SAAS,CAAC,iBAAiB,CAAC,CAAC;AAC7E,IAAI,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,EAAE,OAAO,IAAI,UAAU,EAAE,CAAC;AACvD,IAAI,IAAI,GAAG,GAAG;AACd;AACA,IAAI,IAAI,MAAM,GAAG;AACjB,IAAI,IAAI,MAAM,GAAG;AACjB,IAAI,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,MAAM,EAAE;AACnC,MAAM,MAAM;AACZ,MAAM,GAAG;AACT,IAAI;AACJ;AACA,IAAI,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,GAAG,IAAI,MAAM,IAAI,CAAC,MAAM,EAAC;AAC7D,IAAI,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,IAAI;AACpC;AACA,IAAI,OAAO,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE;AAChC;AACA,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG;AAC5C;AACA,MAAM,IAAI,QAAQ,GAAG,GAAG,EAAE,EAAE,MAAM,CAAC;AACnC;AACA,MAAM,IAAI,KAAK,GAAG,QAAQ,CAAC,QAAQ;AACnC;AACA,MAAM,IAAI,KAAK,KAAK,GAAG,EAAE,EAAE,MAAM,CAAC;AAClC,MAAM,IAAI,CAAC,GAAG;AACd,MAAM,KAAK,IAAI,GAAG,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,MAAM,GAAG,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;AACxF,QAAQ,KAAK,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM;AACxC,QAAQ,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,GAAG,GAAG,MAAM;AACtC,QAAQ,KAAK,GAAG,CAAC,KAAK,GAAG,GAAG,MAAM;AAClC,MAAM;AACN,MAAM,IAAI,KAAK,KAAK,CAAC,EAAE,EAAE,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;AAC3D,MAAM,MAAM,GAAG;AACf,MAAM,GAAG;AACT,IAAI;AACJ;AACA,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG;AACrB,IAAI,OAAO,GAAG,KAAK,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;AAC5C,MAAM,GAAG;AACT,IAAI;AACJ,IAAI,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,MAAM,IAAI,IAAI,GAAG,GAAG,CAAC;AACpD,IAAI,IAAI,CAAC,GAAG;AACZ,IAAI,OAAO,GAAG,KAAK,IAAI,EAAE;AACzB,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE;AAC3B,IAAI;AACJ,IAAI,OAAO;AACX,EAAE;AACF,EAAE,SAAS,MAAM,EAAE,MAAM,EAAE;AAC3B,IAAI,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM;AACtC,IAAI,IAAI,MAAM,EAAE,EAAE,OAAO,MAAM,CAAC;AAChC,IAAI,MAAM,IAAI,KAAK,CAAC,UAAU,GAAG,IAAI,GAAG,YAAY;AACpD,EAAE;AACF,EAAE,OAAO;AACT,IAAI,MAAM;AACV,IAAI,YAAY;AAChB,IAAI;AACJ;AACA;;ACzHA,IAAI,QAAQ,GAAG,4DAA4D;AAC3E,WAAeA,IAAK,CAAC,QAAQ,CAAC;;ACE9B,SAAS,cAAc,CAAC,SAAS,EAAE;AACnC,IAAI,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,SAAS,CAAC,CAAC;AACpE;AACA,SAAS,YAAY,CAAC,sBAAsB,EAAE;AAC9C,IAAI,OAAO,IAAI,UAAU,CAAC;AAC1B,SAAS,IAAI,CAAC,sBAAsB;AACpC,SAAS,KAAK,CAAC,EAAE;AACjB,SAAS,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;AACrC;;AAEA,SAAS,yBAAyB,CAAC,WAAW,EAAE;AAChD,IAAI,MAAM,qBAAqB,GAAG,SAAS,IAAI;AAC/C,UAAU,WAAW,CAAC,SAAS;AAC/B,UAAU,WAAW,CAAC,SAAS,CAAC;AAChC,YAAY,oBAAoB,EAAE,KAAK;AACvC,YAAY,gBAAgB,EAAE,KAAK;AACnC,SAAS,CAAC;AACV,IAAI,MAAM,OAAO,GAAG,cAAc,CAAC,qBAAqB,CAAC;AACzD,IAAI,OAAO,OAAO;AAClB;AACA,SAAS,6BAA6B,CAAC,SAAS,EAAE;AAClD,IAAI,MAAM,aAAa,GAAG,SAAS,CAAC,CAAC,CAAC;AACtC,IAAI,MAAM,aAAa,GAAG,aAAa,GAAG,yBAAyB,GAAG,CAAC;AACvE,IAAI,MAAM,OAAO,GAAG,gBAAgB,CAAC,yBAAyB,CAAC,SAAS,CAAC,KAAK,CAAC,aAAa,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;AAChH,IAAI,IAAI,OAAO,KAAK,QAAQ,EAAE;AAC9B,QAAQ,OAAO,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC;AAC1C,IAAI;AACJ,SAAS;AACT,QAAQ,OAAO,oBAAoB,CAAC,WAAW,CAAC,SAAS,CAAC;AAC1D,IAAI;AACJ;AACA,eAAe,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE;AAC1C,IAAI,MAAM,iBAAiB,GAAG,CAAC,MAAM,KAAK;AAC1C,QAAQ,OAAO,QAAQ,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;AACjD,IAAI,CAAC;AACL,IAAI,OAAO,MAAM,UAAU,CAAC,iBAAiB,EAAE,MAAM,CAAC;AACtD;AACA,eAAe,mBAAmB,CAAC,MAAM,EAAE;AAC3C,IAAI,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,GAAG,MAAM,qBAAqB,CAAC,MAAM,CAAC;AACjF,IAAI,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK;AACrD,QAAQ,OAAO,gBAAgB,CAAC,MAAM,CAAC;AACvC,IAAI,CAAC,CAAC;AACN,IAAI,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,KAAK,EAAE,cAAc,EAAE;AAC9D;AACA,SAAS,gBAAgB,CAAC,MAAM,EAAE;AAClC,IAAI,OAAO,IAAI,KAAK,CAAC,EAAE,EAAE;AACzB,QAAQ,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE;AACvB,YAAY,IAAI,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE;AACnC,gBAAgB,QAAQ,CAAC;AACzB,oBAAoB,KAAK,yBAAyB;AAClD,wBAAwB,MAAM,CAAC,CAAC,CAAC,GAAG,gBAAgB,EAAE,cAAc,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,sCAAsC,EAAE,YAAY,EAAE,GAAG,IAAI,EAAE,EAAE;AAC9K,4BAA4B,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,yBAAyB,CAAC;AACxF,4BAA4B,MAAM,OAAO,GAAG;AAC5C,gCAAgC,gBAAgB,EAAE,cAAc;AAChE,gCAAgC,UAAU,EAAE,UAAU;AACtD,gCAAgC,cAAc,EAAE,aAAa;AAC7D,gCAAgC,WAAW,EAAE,UAAU;AACvD,gCAAgC,4CAA4C,EAAE;AAC9E,6BAA6B;AAC7B,4BAA4B,MAAM,EAAE,UAAU,EAAE,uBAAuB,EAAE,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC;AACjH,gCAAgC,GAAG,IAAI;AACvC,gCAAgC,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI,OAAO,IAAI,IAAI;AAC1F,sCAAsC,EAAE,OAAO,EAAE,OAAO;AACxD,sCAAsC,IAAI,CAAC;AAC3C,gCAAgC,QAAQ;AACxC,6BAA6B,CAAC;AAC9B,4BAA4B,MAAM,UAAU,GAAG,uBAAuB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;AACzG,4BAA4B,OAAO,UAAU;AAC7C,wBAAwB,CAAC;AACzB,wBAAwB;AACxB,oBAAoB,KAAK,cAAc;AACvC,wBAAwB,MAAM,CAAC,CAAC,CAAC,GAAG,gBAAgB,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,EAAE;AAC3E,4BAA4B,MAAM,qBAAqB,GAAG,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC;AACtF,4BAA4B,MAAM,EAAE,eAAe,EAAE,2BAA2B,EAAE,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC;AAC/G,gCAAgC,GAAG,IAAI;AACvC,gCAAgC,QAAQ,EAAE,qBAAqB;AAC/D,6BAA6B,CAAC;AAC9B,4BAA4B,MAAM,cAAc,GAAG,2BAA2B,CAAC,GAAG,CAAC,YAAY,CAAC;AAChG,4BAA4B,OAAO,cAAc;AACjD,wBAAwB,CAAC;AACzB,wBAAwB;AACxB,oBAAoB,KAAK,kBAAkB;AAC3C,wBAAwB,MAAM,CAAC,CAAC,CAAC,GAAG,gBAAgB,EAAE,YAAY,EAAE,GAAG,IAAI,EAAE,EAAE;AAC/E,4BAA4B,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,yBAAyB,CAAC;AACxF,4BAA4B,MAAM,EAAE,eAAe,EAAE,iCAAiC,EAAE,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC;AACzH,gCAAgC,GAAG,IAAI;AACvC,gCAAgC,QAAQ;AACxC,6BAA6B,CAAC;AAC9B,4BAA4B,MAAM,oBAAoB,GAAG,iCAAiC,CAAC,GAAG,CAAC,YAAY,CAAC;AAC5G,4BAA4B,MAAM,kBAAkB,GAAG,oBAAoB,CAAC,GAAG,CAAC,6BAA6B,CAAC;AAC9G,4BAA4B,OAAO,kBAAkB;AACrD,wBAAwB,CAAC;AACzB,wBAAwB;AACxB,oBAAoB,SAAS;AAC7B,wBAAwB,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;AAC7C,wBAAwB;AACxB,oBAAoB;AACpB;AACA,YAAY;AACZ,YAAY,OAAO,MAAM,CAAC,CAAC,CAAC;AAC5B,QAAQ,CAAC;AACT,QAAQ,cAAc,GAAG;AACzB,YAAY,OAAO,KAAK;AACxB,QAAQ,CAAC;AACT,QAAQ,cAAc,GAAG;AACzB,YAAY,OAAO,KAAK;AACxB,QAAQ,CAAC;AACT,KAAK,CAAC;AACN;;;;","x_google_ignoreList":[0,1,2]}