@notabene/verify-proof 1.11.0 → 1.11.1-next.1

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 (75) hide show
  1. package/README.md +21 -15
  2. package/dist/bitcoin-3CW4MNAW.cjs +314 -0
  3. package/dist/bitcoin-3CW4MNAW.cjs.map +1 -0
  4. package/dist/bitcoin-QK53ILBF.js +312 -0
  5. package/dist/bitcoin-QK53ILBF.js.map +1 -0
  6. package/dist/cardano-DYBYEAAF.cjs +53 -0
  7. package/dist/cardano-DYBYEAAF.cjs.map +1 -0
  8. package/dist/cardano-WE6YXYLW.js +31 -0
  9. package/dist/cardano-WE6YXYLW.js.map +1 -0
  10. package/dist/chunk-E3V5ATTC.js +38 -0
  11. package/dist/chunk-E3V5ATTC.js.map +1 -0
  12. package/dist/chunk-OAXNH5XR.cjs +42 -0
  13. package/dist/chunk-OAXNH5XR.cjs.map +1 -0
  14. package/dist/concordium-HQC37GCK.cjs +188 -0
  15. package/dist/concordium-HQC37GCK.cjs.map +1 -0
  16. package/dist/concordium-XX4XYLLU.js +186 -0
  17. package/dist/concordium-XX4XYLLU.js.map +1 -0
  18. package/dist/cosmos-64MKE5FJ.cjs +683 -0
  19. package/dist/cosmos-64MKE5FJ.cjs.map +1 -0
  20. package/dist/cosmos-QMH7BK7S.js +681 -0
  21. package/dist/cosmos-QMH7BK7S.js.map +1 -0
  22. package/dist/eth-3DX3PXDU.cjs +37 -0
  23. package/dist/eth-3DX3PXDU.cjs.map +1 -0
  24. package/dist/eth-ICLGRJE5.js +34 -0
  25. package/dist/eth-ICLGRJE5.js.map +1 -0
  26. package/dist/index.cjs +69 -1
  27. package/dist/index.cjs.map +1 -1
  28. package/dist/index.d.cts +5 -0
  29. package/dist/index.d.ts +5 -2
  30. package/dist/index.js +67 -1
  31. package/dist/index.js.map +1 -1
  32. package/dist/solana-4KQFLZUC.js +342 -0
  33. package/dist/solana-4KQFLZUC.js.map +1 -0
  34. package/dist/solana-PQ5K4NGO.cjs +365 -0
  35. package/dist/solana-PQ5K4NGO.cjs.map +1 -0
  36. package/dist/tron-F5AARBY4.cjs +58 -0
  37. package/dist/tron-F5AARBY4.cjs.map +1 -0
  38. package/dist/tron-OBLPB2LN.js +53 -0
  39. package/dist/tron-OBLPB2LN.js.map +1 -0
  40. package/dist/xlm-5GODWWL2.cjs +28 -0
  41. package/dist/xlm-5GODWWL2.cjs.map +1 -0
  42. package/dist/xlm-GX2QGFLI.js +26 -0
  43. package/dist/xlm-GX2QGFLI.js.map +1 -0
  44. package/dist/xrpl-7HQLIDAK.cjs +1174 -0
  45. package/dist/xrpl-7HQLIDAK.cjs.map +1 -0
  46. package/dist/xrpl-YCDFXBGQ.js +1169 -0
  47. package/dist/xrpl-YCDFXBGQ.js.map +1 -0
  48. package/package.json +11 -2
  49. package/src/cardano.ts +2 -2
  50. package/src/index.ts +31 -19
  51. package/src/solana.ts +1 -1
  52. package/src/tests/solana.test.ts +1 -1
  53. package/dist/bitcoin.d.ts +0 -2
  54. package/dist/cardano.d.ts +0 -2
  55. package/dist/concordium.d.ts +0 -15
  56. package/dist/cosmos.d.ts +0 -2
  57. package/dist/eth.d.ts +0 -4
  58. package/dist/index.modern.js +0 -2
  59. package/dist/index.modern.js.map +0 -1
  60. package/dist/index.umd.js +0 -2
  61. package/dist/index.umd.js.map +0 -1
  62. package/dist/solana.d.ts +0 -17
  63. package/dist/tests/bitcoin.test.d.ts +0 -1
  64. package/dist/tests/cardano.test.d.ts +0 -1
  65. package/dist/tests/concordium.test.d.ts +0 -1
  66. package/dist/tests/cosmos.test.d.ts +0 -1
  67. package/dist/tests/eth.test.d.ts +0 -1
  68. package/dist/tests/index.test.d.ts +0 -1
  69. package/dist/tests/solana.test.d.ts +0 -1
  70. package/dist/tests/tron.test.d.ts +0 -1
  71. package/dist/tests/xlm.test.d.ts +0 -1
  72. package/dist/tests/xrpl.test.d.ts +0 -1
  73. package/dist/tron.d.ts +0 -6
  74. package/dist/xlm.d.ts +0 -2
  75. package/dist/xrpl.d.ts +0 -5
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../node_modules/@noble/hashes/src/cryptoNode.ts","../node_modules/@noble/hashes/src/utils.ts","../node_modules/@xrplf/isomorphic/src/utils/shared.ts","../node_modules/@xrplf/isomorphic/src/utils/index.ts","../node_modules/@xrplf/isomorphic/src/internal/normalizeInput.ts","../node_modules/@xrplf/isomorphic/src/internal/wrapCryptoCreateHash.ts","../node_modules/@xrplf/isomorphic/src/sha256/index.ts","../node_modules/ripple-address-codec/src/utils.ts","../node_modules/ripple-address-codec/src/xrp-codec.ts","../node_modules/ripple-address-codec/src/index.ts","../node_modules/@xrplf/isomorphic/src/ripemd160/index.ts","../node_modules/@xrplf/isomorphic/src/sha512/index.ts","../node_modules/ripple-keypairs/src/utils/Sha512.ts","../node_modules/ripple-keypairs/src/signing-schemes/secp256k1/utils.ts","../node_modules/ripple-keypairs/src/utils/assert.ts","../node_modules/ripple-keypairs/src/utils/getAlgorithmFromKey.ts","../node_modules/ripple-keypairs/src/signing-schemes/secp256k1/index.ts","../node_modules/ripple-keypairs/src/signing-schemes/ed25519/index.ts","../node_modules/ripple-keypairs/src/index.ts","../src/xrpl.ts"],"names":["__require","Buffer","Prefix","verify","__toESM","Client","ProofStatus"],"mappings":";;;;;;;;;;;;;;AAQA,IAAA,IAAA,EAAA,GAAAA,4BAAA,QAAA,CAAA;AACa,IAAA,OAAA,CAAA,MAAA,GACX,EAAA,IAAM,OAAO,EAAA,KAAO,YAAY,WAAA,IAAe,EAAA,GAC1C,EAAA,CAAG,SAAA,GACJ,MAAM,OAAO,EAAA,KAAO,QAAA,IAAY,aAAA,IAAiB,KAC/C,EAAA,GACA,MAAA;;;;;;;;;ACCR,IAAA,OAAA,CAAA,OAAA,GAAA,OAAA;AAKA,IAAA,OAAA,CAAA,OAAA,GAAA,OAAA;AAKA,IAAA,OAAA,CAAA,MAAA,GAAA,MAAA;AAOA,IAAA,OAAA,CAAA,KAAA,GAAA,KAAA;AAQA,IAAA,OAAA,CAAA,OAAA,GAAA,OAAA;AAMA,IAAA,OAAA,CAAA,OAAA,GAAA,OAAA;AAcA,IAAA,OAAA,CAAA,EAAA,GAAA,EAAA;AAKA,IAAA,OAAA,CAAA,GAAA,GAAA,GAAA;AAKA,IAAA,OAAA,CAAA,KAAA,GAAA,KAAA;AAOA,IAAA,OAAA,CAAA,UAAA,GAAA,UAAA;AAKA,IAAA,OAAA,CAAA,IAAA,GAAA,IAAA;AAKA,IAAA,OAAA,CAAA,IAAA,GAAA,IAAA;AASA,IAAA,OAAA,CAAA,QAAA,GAAA,QAAA;AAgBA,IAAA,OAAA,CAAA,UAAA,GAAA,UAAA;AAyBA,IAAA,OAAA,CAAA,UAAA,GAAA,UAAA;AAyBA,IAAA,OAAA,CAAA,UAAA,GAAA,UAAA;AA4BA,IAAA,OAAA,CAAA,SAAA,GAAA,SAAA;AAwBA,IAAA,OAAA,CAAA,WAAA,GAAA,WAAA;AASA,IAAA,OAAA,CAAA,WAAA,GAAA,WAAA;AAWA,IAAA,OAAA,CAAA,OAAA,GAAA,OAAA;AAYA,IAAA,OAAA,CAAA,eAAA,GAAA,eAAA;AAOA,IAAA,OAAA,CAAA,WAAA,GAAA,WAAA;AAiBA,IAAA,OAAA,CAAA,SAAA,GAAA,SAAA;AA+DA,IAAA,OAAA,CAAA,YAAA,GAAA,YAAA;AAgBA,IAAA,OAAA,CAAA,eAAA,GAAA,eAAA;AAgBA,IAAA,OAAA,CAAA,WAAA,GAAA,WAAA;AAoBA,IAAA,OAAA,CAAA,WAAA,GAAA,WAAA;AArXA,IAAA,IAAA,QAAA,GAAA,kBAAA,EAAA;AAGA,IAAA,SAAgB,QAAQ,CAAA,EAAU;AAChC,MAAA,OAAO,CAAA,YAAa,cAAe,WAAA,CAAY,MAAA,CAAO,CAAC,CAAA,IAAK,CAAA,CAAE,YAAY,IAAA,KAAS,YAAA;AACrF,IAAA;AAGA,IAAA,SAAgB,QAAQ,CAAA,EAAS;AAC/B,MAAA,IAAI,CAAC,MAAA,CAAO,aAAA,CAAc,CAAC,KAAK,CAAA,GAAI,CAAA;AAAG,QAAA,MAAM,IAAI,KAAA,CAAM,iCAAA,GAAoC,CAAC,CAAA;AAC9F,IAAA;AAGA,IAAA,SAAgB,MAAA,CAAO,MAA8B,OAAA,EAAiB;AACpE,MAAA,IAAI,CAAC,QAAQ,CAAC,CAAA;AAAG,QAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AACtD,MAAA,IAAI,QAAQ,MAAA,GAAS,CAAA,IAAK,CAAC,OAAA,CAAQ,QAAA,CAAS,EAAE,MAAM,CAAA;AAClD,QAAA,MAAM,IAAI,KAAA,CAAM,gCAAA,GAAmC,OAAA,GAAU,eAAA,GAAkB,EAAE,MAAM,CAAA;AAC3F,IAAA;AAGA,IAAA,SAAgB,MAAM,CAAA,EAAQ;AAC5B,MAAA,IAAI,OAAO,CAAA,KAAM,UAAA,IAAc,OAAO,EAAE,MAAA,KAAW,UAAA;AACjD,QAAA,MAAM,IAAI,MAAM,8CAA8C,CAAA;AAChE,MAAA,OAAA,CAAQ,EAAE,SAAS,CAAA;AACnB,MAAA,OAAA,CAAQ,EAAE,QAAQ,CAAA;AACpB,IAAA;AAGA,IAAA,SAAgB,OAAA,CAAQ,QAAA,EAAe,aAAA,GAAgB,IAAA,EAAI;AACzD,MAAA,IAAI,QAAA,CAAS,SAAA;AAAW,QAAA,MAAM,IAAI,MAAM,kCAAkC,CAAA;AAC1E,MAAA,IAAI,iBAAiB,QAAA,CAAS,QAAA;AAAU,QAAA,MAAM,IAAI,MAAM,uCAAuC,CAAA;AACjG,IAAA;AAGA,IAAA,SAAgB,OAAA,CAAQ,KAAU,QAAA,EAAa;AAC7C,MAAA,MAAA,CAAO,GAAG,CAAA;AACV,MAAA,MAAM,MAAM,QAAA,CAAS,SAAA;AACrB,MAAA,IAAI,GAAA,CAAI,SAAS,GAAA,EAAK;AACpB,QAAA,MAAM,IAAI,KAAA,CAAM,wDAAA,GAA2D,GAAG,CAAA;AAChF,MAAA;AACF,IAAA;AAQA,IAAA,SAAgB,GAAG,GAAA,EAAe;AAChC,MAAA,OAAO,IAAI,UAAA,CAAW,GAAA,CAAI,QAAQ,GAAA,CAAI,UAAA,EAAY,IAAI,UAAU,CAAA;AAClE,IAAA;AAGA,IAAA,SAAgB,IAAI,GAAA,EAAe;AACjC,MAAA,OAAO,IAAI,WAAA,CAAY,GAAA,CAAI,MAAA,EAAQ,GAAA,CAAI,UAAA,EAAY,IAAA,CAAK,KAAA,CAAM,GAAA,CAAI,UAAA,GAAa,CAAC,CAAC,CAAA;AACnF,IAAA;AAGA,IAAA,SAAgB,SAAS,MAAA,EAAoB;AAC3C,MAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,MAAA,CAAO,QAAQ,CAAA,EAAA,EAAK;AACtC,QAAA,MAAA,CAAO,CAAC,CAAA,CAAE,IAAA,CAAK,CAAC,CAAA;AAClB,MAAA;AACF,IAAA;AAGA,IAAA,SAAgB,WAAW,GAAA,EAAe;AACxC,MAAA,OAAO,IAAI,QAAA,CAAS,GAAA,CAAI,QAAQ,GAAA,CAAI,UAAA,EAAY,IAAI,UAAU,CAAA;AAChE,IAAA;AAGA,IAAA,SAAgB,IAAA,CAAK,MAAc,KAAA,EAAa;AAC9C,MAAA,OAAQ,IAAA,IAAS,EAAA,GAAK,KAAA,GAAW,IAAA,KAAS,KAAA;AAC5C,IAAA;AAGA,IAAA,SAAgB,IAAA,CAAK,MAAc,KAAA,EAAa;AAC9C,MAAA,OAAQ,IAAA,IAAQ,KAAA,GAAW,IAAA,KAAU,EAAA,GAAK,KAAA,KAAY,CAAA;AACxD,IAAA;AAGa,IAAA,OAAA,CAAA,IAAA,GAAA,CAAiC,MAC5C,IAAI,UAAA,CAAW,IAAI,WAAA,CAAY,CAAC,SAAU,CAAC,CAAA,CAAE,MAAM,CAAA,CAAE,CAAC,MAAM,EAAA,GAAK;AAGnE,IAAA,SAAgB,SAAS,IAAA,EAAY;AACnC,MAAA,OACI,IAAA,IAAQ,EAAA,GAAM,UAAA,GACd,IAAA,IAAQ,CAAA,GAAK,WACb,IAAA,KAAS,CAAA,GAAK,KAAA,GACd,IAAA,KAAS,EAAA,GAAM,GAAA;AAErB,IAAA;AAEa,IAAA,OAAA,CAAA,SAAA,GAAmC,QAAA,IAAA,GAC5C,CAAC,MAAc,CAAA,GACf,CAAC,CAAA,KAAc,QAAA,CAAS,CAAC,CAAA;AAGhB,IAAA,OAAA,CAAA,eAAiC,OAAA,CAAA,SAAA;AAE9C,IAAA,SAAgB,WAAW,GAAA,EAAgB;AACzC,MAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,GAAA,CAAI,QAAQ,CAAA,EAAA,EAAK;AACnC,QAAA,GAAA,CAAI,CAAC,CAAA,GAAI,QAAA,CAAS,GAAA,CAAI,CAAC,CAAC,CAAA;AAC1B,MAAA;AACA,MAAA,OAAO,GAAA;AACT,IAAA;AAEa,IAAA,OAAA,CAAA,UAAA,GAA8C,OAAA,CAAA,IAAA,GACvD,CAAC,MAAmB,CAAA,GACpB,UAAA;AAGJ,IAAA,IAAM,aAAA,mBAA0C,CAAA;;MAE9C,OAAO,UAAA,CAAW,KAAK,EAAE,EAAE,KAAA,KAAU,UAAA,IAAc,OAAO,UAAA,CAAW,OAAA,KAAY;AAAW,KAAA,GAAA;AAG9F,IAAA,IAAM,wBAAwB,KAAA,CAAM,IAAA,CAAK,EAAE,MAAA,EAAQ,KAAG,EAAI,CAAC,CAAA,EAAG,CAAA,KAC5D,EAAE,QAAA,CAAS,EAAE,EAAE,QAAA,CAAS,CAAA,EAAG,GAAG,CAAC,CAAA;AAOjC,IAAA,SAAgB,WAAW,KAAA,EAAiB;AAC1C,MAAA,MAAA,CAAO,KAAK,CAAA;AAEZ,MAAA,IAAI,aAAA;AAAe,QAAA,OAAO,MAAM,KAAA,EAAK;AAErC,MAAA,IAAI,GAAA,GAAM,EAAA;AACV,MAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,KAAA,CAAM,QAAQ,CAAA,EAAA,EAAK;AACrC,QAAA,GAAA,IAAO,KAAA,CAAM,KAAA,CAAM,CAAC,CAAC,CAAA;AACvB,MAAA;AACA,MAAA,OAAO,GAAA;AACT,IAAA;AAGA,IAAA,IAAM,MAAA,GAAS,EAAE,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,CAAA,EAAG,EAAA,EAAI,CAAA,EAAG,EAAA,EAAI,CAAA,EAAG,EAAA,EAAI,GAAG,GAAA,EAAG;AAC5D,IAAA,SAAS,cAAc,EAAA,EAAU;AAC/B,MAAA,IAAI,EAAA,IAAM,MAAA,CAAO,EAAA,IAAM,EAAA,IAAM,MAAA,CAAO,EAAA;AAAI,QAAA,OAAO,KAAK,MAAA,CAAO,EAAA;AAC3D,MAAA,IAAI,EAAA,IAAM,MAAA,CAAO,CAAA,IAAK,EAAA,IAAM,MAAA,CAAO,CAAA;AAAG,QAAA,OAAO,EAAA,IAAM,OAAO,CAAA,GAAI,EAAA,CAAA;AAC9D,MAAA,IAAI,EAAA,IAAM,MAAA,CAAO,CAAA,IAAK,EAAA,IAAM,MAAA,CAAO,CAAA;AAAG,QAAA,OAAO,EAAA,IAAM,OAAO,CAAA,GAAI,EAAA,CAAA;AAC9D,MAAA;AACF,IAAA;AAMA,IAAA,SAAgB,WAAW,GAAA,EAAW;AACpC,MAAA,IAAI,OAAO,GAAA,KAAQ,QAAA;AAAU,QAAA,MAAM,IAAI,KAAA,CAAM,2BAAA,GAA8B,OAAO,GAAG,CAAA;AAErF,MAAA,IAAI,aAAA;AAAe,QAAA,OAAO,UAAA,CAAW,QAAQ,GAAG,CAAA;AAChD,MAAA,MAAM,KAAK,GAAA,CAAI,MAAA;AACf,MAAA,MAAM,KAAK,EAAA,GAAK,CAAA;AAChB,MAAA,IAAI,EAAA,GAAK,CAAA;AAAG,QAAA,MAAM,IAAI,KAAA,CAAM,kDAAA,GAAqD,EAAE,CAAA;AACnF,MAAA,MAAM,KAAA,GAAQ,IAAI,UAAA,CAAW,EAAE,CAAA;AAC/B,MAAA,KAAA,IAAS,EAAA,GAAK,GAAG,EAAA,GAAK,CAAA,EAAG,KAAK,EAAA,EAAI,EAAA,EAAA,EAAM,MAAM,CAAA,EAAG;AAC/C,QAAA,MAAM,EAAA,GAAK,aAAA,CAAc,GAAA,CAAI,UAAA,CAAW,EAAE,CAAC,CAAA;AAC3C,QAAA,MAAM,KAAK,aAAA,CAAc,GAAA,CAAI,UAAA,CAAW,EAAA,GAAK,CAAC,CAAC,CAAA;AAC/C,QAAA,IAAI,EAAA,KAAO,MAAA,IAAa,EAAA,KAAO,MAAA,EAAW;AACxC,UAAA,MAAM,OAAO,GAAA,CAAI,EAAE,CAAA,GAAI,GAAA,CAAI,KAAK,CAAC,CAAA;AACjC,UAAA,MAAM,IAAI,KAAA,CAAM,8CAAA,GAAiD,IAAA,GAAO,gBAAgB,EAAE,CAAA;AAC5F,QAAA;AACA,QAAA,KAAA,CAAM,EAAE,CAAA,GAAI,EAAA,GAAK,EAAA,GAAK,EAAA;AACxB,MAAA;AACA,MAAA,OAAO,KAAA;AACT,IAAA;AAOO,IAAA,IAAM,WAAW,YAA0B;AAAE,IAAA,CAAA;AAAvC,IAAA,OAAA,CAAA,QAAA,GAAQ,QAAA;AAGd,IAAA,eAAe,SAAA,CACpB,KAAA,EACA,IAAA,EACA,EAAA,EAAuB;AAEvB,MAAA,IAAI,EAAA,GAAK,KAAK,GAAA,EAAG;AACjB,MAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,KAAA,EAAO,CAAA,EAAA,EAAK;AAC9B,QAAA,EAAA,CAAG,CAAC,CAAA;AAEJ,QAAA,MAAM,IAAA,GAAO,IAAA,CAAK,GAAA,EAAG,GAAK,EAAA;AAC1B,QAAA,IAAI,IAAA,IAAQ,KAAK,IAAA,GAAO,IAAA;AAAM,UAAA;AAC9B,QAAA,MAAA,IAAM,QAAA,QAAA,GAAQ;AACd,QAAA,EAAA,IAAM,IAAA;AACR,MAAA;AACF,IAAA;AAUA,IAAA,SAAgB,YAAY,GAAA,EAAW;AACrC,MAAA,IAAI,OAAO,GAAA,KAAQ,QAAA;AAAU,QAAA,MAAM,IAAI,MAAM,iBAAiB,CAAA;AAC9D,MAAA,OAAO,IAAI,UAAA,CAAW,IAAI,aAAW,CAAG,MAAA,CAAO,GAAG,CAAC,CAAA;AACrD,IAAA;AAMA,IAAA,SAAgB,YAAY,KAAA,EAAiB;AAC3C,MAAA,OAAO,IAAI,WAAA,EAAW,CAAG,MAAA,CAAO,KAAK,CAAA;AACvC,IAAA;AASA,IAAA,SAAgB,QAAQ,IAAA,EAAW;AACjC,MAAA,IAAI,OAAO,IAAA,KAAS,QAAA;AAAU,QAAA,IAAA,GAAO,YAAY,IAAI,CAAA;AACrD,MAAA,MAAA,CAAO,IAAI,CAAA;AACX,MAAA,OAAO,IAAA;AACT,IAAA;AAQA,IAAA,SAAgB,gBAAgB,IAAA,EAAc;AAC5C,MAAA,IAAI,OAAO,IAAA,KAAS,QAAA;AAAU,QAAA,IAAA,GAAO,YAAY,IAAI,CAAA;AACrD,MAAA,MAAA,CAAO,IAAI,CAAA;AACX,MAAA,OAAO,IAAA;AACT,IAAA;AAGA,IAAA,SAAgB,eAAe,MAAA,EAAoB;AACjD,MAAA,IAAI,GAAA,GAAM,CAAA;AACV,MAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,MAAA,CAAO,QAAQ,CAAA,EAAA,EAAK;AACtC,QAAA,MAAM,CAAA,GAAI,OAAO,CAAC,CAAA;AAClB,QAAA,MAAA,CAAO,CAAC,CAAA;AACR,QAAA,GAAA,IAAO,CAAA,CAAE,MAAA;AACX,MAAA;AACA,MAAA,MAAM,GAAA,GAAM,IAAI,UAAA,CAAW,GAAG,CAAA;AAC9B,MAAA,KAAA,IAAS,IAAI,CAAA,EAAG,GAAA,GAAM,GAAG,CAAA,GAAI,MAAA,CAAO,QAAQ,CAAA,EAAA,EAAK;AAC/C,QAAA,MAAM,CAAA,GAAI,OAAO,CAAC,CAAA;AAClB,QAAA,GAAA,CAAI,GAAA,CAAI,GAAG,GAAG,CAAA;AACd,QAAA,GAAA,IAAO,CAAA,CAAE,MAAA;AACX,MAAA;AACA,MAAA,OAAO,GAAA;AACT,IAAA;AAGA,IAAA,SAAgB,SAAA,CACd,UACA,IAAA,EAAS;AAET,MAAA,IAAI,SAAS,MAAA,IAAa,GAAG,QAAA,CAAS,IAAA,CAAK,IAAI,CAAA,KAAM,iBAAA;AACnD,QAAA,MAAM,IAAI,MAAM,uCAAuC,CAAA;AACzD,MAAA,MAAM,MAAA,GAAS,MAAA,CAAO,MAAA,CAAO,QAAA,EAAU,IAAI,CAAA;AAC3C,MAAA,OAAO,MAAA;AACT,IAAA;AAWA,IAAA,IAAsB,OAAtB,MAA0B;;AAA1B,IAAA,OAAA,CAAA,IAAA,GAAA,IAAA;AA4CA,IAAA,SAAgB,aACd,QAAA,EAAuB;AAOvB,MAAA,MAAM,KAAA,GAAQ,CAAC,GAAA,KAA2B,QAAA,EAAQ,CAAG,OAAO,OAAA,CAAQ,GAAG,CAAC,CAAA,CAAE,MAAA,EAAM;AAChF,MAAA,MAAM,MAAM,QAAA,EAAQ;AACpB,MAAA,KAAA,CAAM,YAAY,GAAA,CAAI,SAAA;AACtB,MAAA,KAAA,CAAM,WAAW,GAAA,CAAI,QAAA;AACrB,MAAA,KAAA,CAAM,MAAA,GAAS,MAAM,QAAA,EAAQ;AAC7B,MAAA,OAAO,KAAA;AACT,IAAA;AAEA,IAAA,SAAgB,gBACd,QAAA,EAA+B;AAO/B,MAAA,MAAM,KAAA,GAAQ,CAAC,GAAA,EAAY,IAAA,KAAyB,QAAA,CAAS,IAAI,CAAA,CAAE,MAAA,CAAO,OAAA,CAAQ,GAAG,CAAC,CAAA,CAAE,MAAA,EAAM;AAC9F,MAAA,MAAM,GAAA,GAAM,QAAA,CAAS,EAAO,CAAA;AAC5B,MAAA,KAAA,CAAM,YAAY,GAAA,CAAI,SAAA;AACtB,MAAA,KAAA,CAAM,WAAW,GAAA,CAAI,QAAA;AACrB,MAAA,KAAA,CAAM,MAAA,GAAS,CAAC,IAAA,KAAa,QAAA,CAAS,IAAI,CAAA;AAC1C,MAAA,OAAO,KAAA;AACT,IAAA;AAEA,IAAA,SAAgB,YACd,QAAA,EAAkC;AAOlC,MAAA,MAAM,KAAA,GAAQ,CAAC,GAAA,EAAY,IAAA,KAAyB,QAAA,CAAS,IAAI,CAAA,CAAE,MAAA,CAAO,OAAA,CAAQ,GAAG,CAAC,CAAA,CAAE,MAAA,EAAM;AAC9F,MAAA,MAAM,GAAA,GAAM,QAAA,CAAS,EAAO,CAAA;AAC5B,MAAA,KAAA,CAAM,YAAY,GAAA,CAAI,SAAA;AACtB,MAAA,KAAA,CAAM,WAAW,GAAA,CAAI,QAAA;AACrB,MAAA,KAAA,CAAM,MAAA,GAAS,CAAC,IAAA,KAAa,QAAA,CAAS,IAAI,CAAA;AAC1C,MAAA,OAAO,KAAA;AACT,IAAA;AACa,IAAA,OAAA,CAAA,eAAA,GAAuC,YAAA;AACvC,IAAA,OAAA,CAAA,uBAAA,GAAkD,eAAA;AAClD,IAAA,OAAA,CAAA,0BAAA,GAAiD,WAAA;AAG9D,IAAA,SAAgB,WAAA,CAAY,cAAc,EAAA,EAAE;AAC1C,MAAA,IAAI,SAAA,MAAA,IAAU,OAAO,QAAA,CAAA,MAAA,CAAO,oBAAoB,UAAA,EAAY;AAC1D,QAAA,OAAO,SAAA,MAAA,CAAO,eAAA,CAAgB,IAAI,UAAA,CAAW,WAAW,CAAC,CAAA;AAC3D,MAAA;AAEA,MAAA,IAAI,SAAA,MAAA,IAAU,OAAO,QAAA,CAAA,MAAA,CAAO,gBAAgB,UAAA,EAAY;AACtD,QAAA,OAAO,WAAW,IAAA,CAAK,QAAA,CAAA,MAAA,CAAO,WAAA,CAAY,WAAW,CAAC,CAAA;AACxD,MAAA;AACA,MAAA,MAAM,IAAI,MAAM,wCAAwC,CAAA;AAC1D,IAAA;;;;;;;;;AC1YA,IAAA,IAAA,OAAA,GAAA,aAAA,EAAA;AAEa,IAAA,OAAA,CAAA,SAAA,GAAY,eAAA;AAEzB,IAAA,SAAgB,OAAO,KAAA,EAAmB;AACxC,MAAA,OAAA,IAAO,OAAA,CAAA,WAAA,EAAY,GAAG,KAAK,CAAA;AAC7B,IAAA;AAFA,IAAA,OAAA,CAAA,MAAA,GAAA,MAAA;AAIA,IAAA,SAAgB,KAAA,CAAM,MAAkB,IAAA,EAAgB;AACtD,MAAA,IAAI,IAAA,CAAK,UAAA,KAAe,IAAA,CAAK,UAAA,EAAY;AACvC,QAAA,OAAO,KAAA;;AAET,MAAA,MAAM,GAAA,GAAM,IAAI,SAAA,CAAU,IAAI,CAAA;AAC9B,MAAA,MAAM,GAAA,GAAM,IAAI,SAAA,CAAU,IAAI,CAAA;AAC9B,MAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,KAAM,IAAA,CAAK,YAAY,CAAA,EAAA,EAAK;AAC1C,QAAA,IAAI,GAAA,CAAI,CAAC,CAAA,KAAM,GAAA,CAAI,CAAC,CAAA,EAAG;AACrB,UAAA,OAAO,KAAA;;;AAGX,MAAA,OAAO,IAAA;AACT,IAAA;AAZA,IAAA,OAAA,CAAA,KAAA,GAAA,KAAA;;;;;;;;;;;;;;;;;;;;;;;;;ACRA,IAAA,IAAA,QAAA,GAAAA,4BAAA,QAAA,CAAA;AAGA,IAAA,IAAA,QAAA,GAAA,cAAA,EAAA;AAEA,IAAA,IAAM,cAAA,GAAiB,OAAO,gBAAgB,CAAA;AA4C9C,IAAA,SAAS,aAAa,MAAA,EAAc;AAClC,MAAA,MAAM,OAAA,GAAU,IAAI,UAAA,CAClB,MAAA,CAAO,MAAA,CAAO,KAAA,CACZ,MAAA,CAAO,UAAA,EACP,MAAA,CAAO,UAAA,GAAa,MAAA,CAAO,UAAU,CACtC,CAAA;AAEH,MAAA,OAAA,CAAQ,cAAc,CAAA,GAAI,MAAA;AAC1B,MAAA,OAAO,OAAA;AACT,IAAA;AAGO,IAAA,IAAM,UAAA,GAAkC,CAAC,KAAA,KAAS;AACvD,MAAA,MAAM,GAAA,GAAMC,aAAA,CAAO,IAAA,CAAK,KAAK,CAAA;AAC7B,MAAA,OAAO,GAAA,CAAI,QAAA,CAAS,KAAK,CAAA,CAAE,WAAA,EAAW;AACxC,IAAA,CAAA;AAHa,IAAA,OAAA,CAAA,UAAA,GAAU,UAAA;AAKhB,IAAA,IAAM,UAAA,GAAkC,CAAC,GAAA,KAAO;AACrD,MAAA,IAAI,CAAC,QAAA,CAAA,SAAA,CAAU,IAAA,CAAK,GAAG,CAAA,EAAG;AACxB,QAAA,MAAM,IAAI,MAAM,oBAAoB,CAAA;;AAEtC,MAAA,OAAO,YAAA,CAAaA,aAAA,CAAO,IAAA,CAAK,GAAA,EAAK,KAAK,CAAC,CAAA;AAC7C,IAAA,CAAA;AALa,IAAA,OAAA,CAAA,UAAA,GAAU,UAAA;AAOhB,IAAA,IAAM,WAAA,GAAoC,CAAC,IAAA,KAAQ;AACxD,MAAA,OAAO,YAAA,CAAA,IAAa,QAAA,CAAA,WAAA,EAAkB,IAAI,CAAC,CAAA;AAC7C,IAAA,CAAA;AAFa,IAAA,OAAA,CAAA,WAAA,GAAW,WAAA;AAIjB,IAAA,IAAM,WAAA,GAAoC,CAC/C,GAAA,EACA,QAAA,GAAW,MAAA,KACD;AACV,MAAA,IAAI,CAAC,QAAA,CAAA,SAAA,CAAU,IAAA,CAAK,GAAG,CAAA,EAAG;AACxB,QAAA,MAAM,IAAI,MAAM,oBAAoB,CAAA;;AAEtC,MAAA,OAAO,IAAI,YAAY,QAAQ,CAAA,CAAE,WAAO,OAAA,CAAA,UAAA,EAAW,GAAG,CAAC,CAAA;AACzD,IAAA,CAAA;AARa,IAAA,OAAA,CAAA,WAAA,GAAW,WAAA;AAUjB,IAAA,IAAM,WAAA,GAAoC,CAAC,MAAA,KAA0B;AAC1E,MAAA,OAAA,IAAO,QAAA,UAAA,EAAW,IAAI,aAAW,CAAG,MAAA,CAAO,MAAM,CAAC,CAAA;AACpD,IAAA,CAAA;AAFa,IAAA,OAAA,CAAA,WAAA,GAAW,WAAA;AAKxB,IAAA,YAAA,CAAA,kBAAA,OAAA,CAAA;;;;;;;;ACpFA,IAAA,SAAwB,eAAe,KAAA,EAAY;AACjD,MAAA,OAAO,MAAM,OAAA,CAAQ,KAAK,IAAI,IAAI,UAAA,CAAW,KAAK,CAAA,GAAI,KAAA;AACxD,IAAA;AAFA,IAAA,OAAA,CAAA,OAAA,GAAA,cAAA;;;;;;;;;;;ACNA,IAAA,IAAA,gBAAA,GAAA,gBAAA,sBAAA,EAAA,CAAA;AAQA,IAAA,SAAwB,oBAAA,CACtB,MACA,EAAA,EAAqB;AAErB,MAAA,SAAS,OAAO,KAAA,EAAY;AAC1B,QAAA,OAAO,EAAA,CAAG,IAAI,CAAA,CAAE,MAAA,CAAA,IAAO,iBAAA,OAAA,EAAe,KAAK,CAAC,CAAA,CAAE,MAAA,EAAM;AACtD,MAAA;AAEA,MAAA,MAAA,CAAO,SAAS,MAAW;AACzB,QAAA,MAAM,IAAA,GAAO,GAAG,IAAI,CAAA;AACpB,QAAA,OAAO;AACL,UAAA,MAAA,CAAO,KAAA,EAAY;AACjB,YAAA,IAAA,CAAK,MAAA,CAAA,IAAO,gBAAA,CAAA,OAAA,EAAe,KAAK,CAAC,CAAA;AACjC,YAAA,OAAO,IAAA;AACT,UAAA,CAAA;UACA,MAAA,GAAM;AACJ,YAAA,OAAO,KAAK,MAAA,EAAM;AACpB,UAAA;;AAEJ,MAAA,CAAA;AACA,MAAA,OAAO,MAAA;AACT,IAAA;AArBA,IAAA,OAAA,CAAA,OAAA,GAAA,oBAAA;;;;;;;;;;;;ACVA,IAAA,IAAA,QAAA,GAAAD,4BAAA,QAAA,CAAA;AACA,IAAA,IAAA,sBAAA,GAAA,gBAAA,4BAAA,EAAA,CAAA;AAKa,IAAA,OAAA,CAAA,aAAS,sBAAA,CAAA,OAAA,EAAqB,QAAA,EAAU,SAAA,UAAU,CAAA;;;;;;;;;ACE/D,IAAA,SAAgB,UAAA,CAAW,MAAiB,IAAA,EAAe;AACzD,MAAA,IAAI,IAAA,CAAK,MAAA,KAAW,IAAA,CAAK,MAAA,EAAQ;AAC/B,QAAA,OAAO,KAAA;;AAET,MAAA,OAAO,IAAA,CAAK,MAAM,CAAC,KAAA,EAAO,UAAU,KAAA,KAAU,IAAA,CAAK,KAAK,CAAC,CAAA;AAC3D,IAAA;AALA,IAAA,OAAA,CAAA,UAAA,GAAA,UAAA;AAYA,IAAA,SAAS,SAAS,GAAA,EAAuB;AACvC,MAAA,OAAO,OAAO,GAAA,KAAQ,QAAA;AACxB,IAAA;AAcA,IAAA,SAAgB,cAAc,IAAA,EAA+B;AAC3D,MAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,CAAC,GAAA,KAAO;AAC1B,QAAA,OAAO,QAAA,CAAS,GAAG,CAAA,GAAI,CAAC,GAAG,CAAA,GAAI,KAAA,CAAM,KAAK,GAAG,CAAA;MAC/C,CAAC,CAAA;AACH,IAAA;AAJA,IAAA,OAAA,CAAA,UAAA,GAAA,UAAA;;;;;;;;;AChCA,IAAA,IAAA,MAAA,GAAAA,4BAAA,aAAA,CAAA;AACA,IAAA,IAAA,QAAA,GAAA,cAAA,EAAA;AAEA,IAAA,IAAA,OAAA,GAAA,cAAA,EAAA;AAEA,IAAA,IAAM,QAAN,MAAW;AAIT,MAAA,WAAA,CAAmB,OAAA,EAAqD;AACtE,QAAA,IAAA,CAAK,UAAU,OAAA,CAAQ,MAAA;AACvB,QAAA,IAAA,CAAK,SAAS,MAAA,CAAA,SAAA;AAChB,MAAA;;;;;;;AAQO,MAAA,MAAA,CACL,OACA,IAAA,EAGC;AAED,QAAA,MAAM,WAAW,IAAA,CAAK,QAAA;AACtB,QAAA,OAAO,IAAA,CAAK,gBAAA,CAAiB,KAAA,EAAO,QAAA,EAAU,KAAK,cAAc,CAAA;AACnE,MAAA;;;;;;;;;AAUO,MAAA,MAAA,CACL,cACA,IAAA,EAIC;;AAMD,QAAA,MAAM,WAAW,IAAA,CAAK,QAAA;AACtB,QAAA,MAAM,QAAQ,IAAA,CAAK,YAAA;AAEnB,QAAA,MAAM,UAAA,GAAa,IAAA,CAAK,aAAA,CAAc,YAAY,CAAA;AAElD,QAAA,IAAI,QAAA,CAAS,MAAA,GAAS,CAAA,IAAK,CAAC,KAAK,cAAA,EAAgB;AAC/C,UAAA,MAAM,IAAI,MACR,qEAAqE,CAAA;;AAGzE,QAAA,MAAM,kBAAA,GACJ,OAAO,QAAA,CAAS,CAAC,MAAM,QAAA,GAAW,CAAA,GAAI,QAAA,CAAS,CAAC,CAAA,CAAE,MAAA;AACpD,QAAA,MAAM,aAAA,GAAA,CACJ,KAAA,IAAA,CAAK,cAAA,MAAc,QAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,UAAA,CAAW,MAAA,GAAS,kBAAA;AAC7C,QAAA,MAAM,YAAA,GAAe,UAAA,CAAW,KAAA,CAAM,CAAA,EAAG,CAAC,aAAa,CAAA;AACvD,QAAA,MAAM,OAAA,GAAU,UAAA,CAAW,KAAA,CAAM,CAAC,aAAa,CAAA;AAE/C,QAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,QAAA,CAAS,QAAQ,CAAA,EAAA,EAAK;AAGxC,UAAA,MAAM,OAAA,GAAoB,KAAA,CAAM,OAAA,CAAQ,QAAA,CAAS,CAAC,CAAC,CAAA,GAC9C,QAAA,CAAS,CAAC,CAAA,GACX,CAAC,QAAA,CAAS,CAAC,CAAW,CAAA;AAC1B,UAAA,IAAA,IAAI,OAAA,CAAA,UAAA,EAAW,YAAA,EAAc,OAAO,CAAA,EAAG;AACrC,YAAA,OAAO;AACL,cAAA,OAAA;cACA,KAAA,EAAO,OAAA;cACP,IAAA,EAAM,KAAA,GAAQ,KAAA,CAAM,CAAC,CAAA,GAAI;;;;AAM/B,QAAA,MAAM,IAAI,MACR,4EAA4E,CAAA;AAEhF,MAAA;AAEO,MAAA,aAAA,CAAc,KAAA,EAAgB;AACnC,QAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,OAAA,CAAQ,IAAA,CAAK,OAAA,CAAQ,KAAK,CAAC,CAAA,CAAE,KAAA,CAAM,CAAA,EAAG,CAAC,CAAA;AAC1D,QAAA,OAAO,IAAA,CAAK,UAAA,CAAW,UAAA,CAAW,IAAA,CAAA,IAAK,QAAA,UAAA,EAAW,KAAA,EAAO,KAAK,CAAC,CAAC,CAAA;AAClE,MAAA;AAEO,MAAA,aAAA,CAAc,YAAA,EAAoB;AACvC,QAAA,MAAM,QAAA,GAAW,IAAA,CAAK,UAAA,CAAW,YAAY,CAAA;AAC7C,QAAA,IAAI,QAAA,CAAS,aAAa,CAAA,EAAG;AAC3B,UAAA,MAAM,IAAI,MAAM,wDAAwD,CAAA;;AAE1E,QAAA,IAAI,CAAC,IAAA,CAAK,eAAA,CAAgB,QAAQ,CAAA,EAAG;AACnC,UAAA,MAAM,IAAI,MAAM,kBAAkB,CAAA;;AAEpC,QAAA,OAAO,QAAA,CAAS,KAAA,CAAM,CAAA,EAAG,EAAE,CAAA;AAC7B,MAAA;MAEQ,gBAAA,CACN,KAAA,EACA,UACA,cAAA,EAAsB;AAEtB,QAAA,IAAI,CAAC,eAAA,CAAgB,KAAA,EAAO,cAAc,CAAA,EAAG;AAC3C,UAAA,MAAM,IAAI,MACR,gHAC4C,CAAA;;AAGhD,QAAA,OAAO,KAAK,aAAA,CAAA,IAAc,QAAA,UAAA,EAAW,QAAA,EAAU,KAAK,CAAC,CAAA;AACvD,MAAA;AAEQ,MAAA,UAAA,CAAW,KAAA,EAAgB;AACjC,QAAA,OAAO,KAAK,MAAA,CAAO,MAAA,CAAO,UAAA,CAAW,IAAA,CAAK,KAAK,CAAC,CAAA;AAClD,MAAA;;AAGQ,MAAA,UAAA,CAAW,YAAA,EAAoB;AACrC,QAAA,OAAO,IAAA,CAAK,MAAA,CAAO,MAAA,CAAO,YAAY,CAAA;AACxC,MAAA;AAEQ,MAAA,eAAA,CAAgB,KAAA,EAAgB;AACtC,QAAA,MAAM,QAAA,GAAW,IAAA,CAAK,OAAA,CAAQ,IAAA,CAAK,QAAQ,KAAA,CAAM,KAAA,CAAM,CAAA,EAAG,EAAE,CAAC,CAAC,CAAA,CAAE,KAAA,CAAM,GAAG,CAAC,CAAA;AAC1E,QAAA,MAAM,QAAA,GAAW,KAAA,CAAM,KAAA,CAAM,EAAE,CAAA;AAC/B,QAAA,OAAA,IAAO,OAAA,CAAA,UAAA,EAAW,QAAA,EAAU,QAAQ,CAAA;AACtC,MAAA;;AASF,IAAA,IAAM,UAAA,GAAa,CAAA;AAEnB,IAAA,IAAM,kBAAA,GAAqB,EAAA;AAE3B,IAAA,IAAM,WAAA,GAAc,EAAA;AAEpB,IAAA,IAAM,WAAA,GAAc,EAAA;AAGpB,IAAA,IAAM,YAAA,GAAe,CAAC,CAAA,EAAM,GAAA,EAAM,EAAI,CAAA;AAEtC,IAAA,IAAM,YAAA,GAAe;AACnB,MAAA,MAAA,EAAA,QAAA,CAAA;;AAGF,IAAA,IAAM,oBAAA,GAAuB,IAAI,KAAA,CAAM,YAAY,CAAA;AAEtC,IAAA,OAAA,CAAA,KAAA,GAAQ,oBAAA;AAIrB,IAAA,SAAgB,UAAA,CACd,SACA,IAAA,EAA6B;AAE7B,MAAA,IAAI,CAAC,eAAA,CAAgB,OAAA,EAAS,EAAE,CAAA,EAAG;AACjC,QAAA,MAAM,IAAI,MAAM,6BAA6B,CAAA;;AAE/C,MAAA,MAAM,IAAA,GAAO;QACX,cAAA,EAAgB,EAAA;;AAGhB,QAAA,QAAA,EAAU,IAAA,KAAS,SAAA,GAAY,YAAA,GAAe,CAAC,WAAW;;AAI5D,MAAA,OAAO,oBAAA,CAAqB,MAAA,CAAO,OAAA,EAAS,IAAI,CAAA;AAClD,IAAA;AAhBA,IAAA,OAAA,CAAA,UAAA,GAAA,UAAA;AAkBA,IAAA,SAAgB,UAAA,CACd,MACA,IAAA,GAII;MACF,YAAA,EAAc,CAAC,WAAW,WAAW,CAAA;MACrC,QAAA,EAAU,CAAC,cAAc,WAAW,CAAA;MACpC,cAAA,EAAgB;AACjB,KAAA,EAAA;AAMD,MAAA,OAAO,oBAAA,CAAqB,MAAA,CAAO,IAAA,EAAM,IAAI,CAAA;AAC/C,IAAA;AAjBA,IAAA,OAAA,CAAA,UAAA,GAAA,UAAA;AAmBA,IAAA,SAAgB,gBAAgB,KAAA,EAAgB;AAC9C,MAAA,MAAM,OAAO,EAAE,QAAA,EAAU,CAAC,UAAU,CAAA,EAAG,gBAAgB,EAAA,EAAE;AACzD,MAAA,OAAO,oBAAA,CAAqB,MAAA,CAAO,KAAA,EAAO,IAAI,CAAA;AAChD,IAAA;AAHA,IAAA,OAAA,CAAA,eAAA,GAAA,eAAA;AAQa,IAAA,OAAA,CAAA,aAAA,GAAgB,eAAA;AAG7B,IAAA,SAAgB,gBAAgB,SAAA,EAAiB;AAC/C,MAAA,MAAM,OAAO,EAAE,QAAA,EAAU,CAAC,UAAU,CAAA,EAAG,gBAAgB,EAAA,EAAE;AACzD,MAAA,OAAO,oBAAA,CAAqB,MAAA,CAAO,SAAA,EAAW,IAAI,CAAA,CAAE,KAAA;AACtD,IAAA;AAHA,IAAA,OAAA,CAAA,eAAA,GAAA,eAAA;AAQa,IAAA,OAAA,CAAA,aAAA,GAAgB,eAAA;AAG7B,IAAA,SAAgB,iBAAiB,YAAA,EAAoB;AACnD,MAAA,MAAM,OAAO,EAAE,QAAA,EAAU,CAAC,WAAW,CAAA,EAAG,gBAAgB,EAAA,EAAE;AAC1D,MAAA,OAAO,oBAAA,CAAqB,MAAA,CAAO,YAAA,EAAc,IAAI,CAAA,CAAE,KAAA;AACzD,IAAA;AAHA,IAAA,OAAA,CAAA,gBAAA,GAAA,gBAAA;AAKA,IAAA,SAAgB,iBAAiB,KAAA,EAAgB;AAC/C,MAAA,MAAM,OAAO,EAAE,QAAA,EAAU,CAAC,WAAW,CAAA,EAAG,gBAAgB,EAAA,EAAE;AAC1D,MAAA,OAAO,oBAAA,CAAqB,MAAA,CAAO,KAAA,EAAO,IAAI,CAAA;AAChD,IAAA;AAHA,IAAA,OAAA,CAAA,gBAAA,GAAA,gBAAA;AAKA,IAAA,SAAgB,oBAAoB,KAAA,EAAgB;AAClD,MAAA,MAAM,OAAO,EAAE,QAAA,EAAU,CAAC,kBAAkB,CAAA,EAAG,gBAAgB,EAAA,EAAE;AACjE,MAAA,OAAO,oBAAA,CAAqB,MAAA,CAAO,KAAA,EAAO,IAAI,CAAA;AAChD,IAAA;AAHA,IAAA,OAAA,CAAA,mBAAA,GAAA,mBAAA;AAKA,IAAA,SAAgB,oBAAoB,YAAA,EAAoB;AACtD,MAAA,MAAM,OAAO,EAAE,QAAA,EAAU,CAAC,kBAAkB,CAAA,EAAG,gBAAgB,EAAA,EAAE;AACjE,MAAA,OAAO,oBAAA,CAAqB,MAAA,CAAO,YAAA,EAAc,IAAI,CAAA,CAAE,KAAA;AACzD,IAAA;AAHA,IAAA,OAAA,CAAA,mBAAA,GAAA,mBAAA;AAKA,IAAA,SAAgB,sBAAsB,OAAA,EAAe;AACnD,MAAA,IAAI;AACF,QAAA,eAAA,CAAgB,OAAO,CAAA;eAChB,MAAA,EAAQ;AACf,QAAA,OAAO,KAAA;;AAET,MAAA,OAAO,IAAA;AACT,IAAA;AAPA,IAAA,OAAA,CAAA,qBAAA,GAAA,qBAAA;AASA,IAAA,SAAS,eAAA,CAAgB,OAAkB,cAAA,EAAsB;AAC/D,MAAA,OAAO,gBAAgB,KAAA,GACnB,KAAA,CAAM,UAAA,KAAe,cAAA,GACrB,MAAM,MAAA,KAAW,cAAA;AACvB,IAAA;;;;;;;;;AClQA,IAAA,IAAA,OAAA,GAAA,cAAA,EAAA;AAEA,IAAA,IAAA,WAAA,GAAA,iBAAA,EAAA;AAyJE,IAAA,MAAA,CAAA,eAAA,OAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,IAAA,EAAA,KAAA,WAAA;AAAA,MAAA,OAxJA,WAAA,CAAA,KAAA;AAAK,IAAA,CAAA,EAAA,CAAA;AA0JL,IAAA,MAAA,CAAA,eAAA,OAAA,EAAA,YAAA,EAAA,EAAA,UAAA,EAAA,IAAA,EAAA,KAAA,WAAA;AAAA,MAAA,OAzJA,WAAA,CAAA,UAAA;AAAU,IAAA,CAAA,EAAA,CAAA;AA2JV,IAAA,MAAA,CAAA,eAAA,OAAA,EAAA,YAAA,EAAA,EAAA,UAAA,EAAA,IAAA,EAAA,KAAA,WAAA;AAAA,MAAA,OA1JA,WAAA,CAAA,UAAA;AAAU,IAAA,CAAA,EAAA,CAAA;AA4JV,IAAA,MAAA,CAAA,eAAA,OAAA,EAAA,iBAAA,EAAA,EAAA,UAAA,EAAA,IAAA,EAAA,KAAA,WAAA;AAAA,MAAA,OA3JA,WAAA,CAAA,eAAA;AAAe,IAAA,CAAA,EAAA,CAAA;AA6Jf,IAAA,MAAA,CAAA,eAAA,OAAA,EAAA,iBAAA,EAAA,EAAA,UAAA,EAAA,IAAA,EAAA,KAAA,WAAA;AAAA,MAAA,OA5JA,WAAA,CAAA,eAAA;AAAe,IAAA,CAAA,EAAA,CAAA;AA8Jf,IAAA,MAAA,CAAA,eAAA,OAAA,EAAA,kBAAA,EAAA,EAAA,UAAA,EAAA,IAAA,EAAA,KAAA,WAAA;AAAA,MAAA,OA7JA,WAAA,CAAA,gBAAA;AAAgB,IAAA,CAAA,EAAA,CAAA;AA+JhB,IAAA,MAAA,CAAA,eAAA,OAAA,EAAA,kBAAA,EAAA,EAAA,UAAA,EAAA,IAAA,EAAA,KAAA,WAAA;AAAA,MAAA,OA9JA,WAAA,CAAA,gBAAA;AAAgB,IAAA,CAAA,EAAA,CAAA;AAgKhB,IAAA,MAAA,CAAA,eAAA,OAAA,EAAA,qBAAA,EAAA,EAAA,UAAA,EAAA,IAAA,EAAA,KAAA,WAAA;AAAA,MAAA,OA/JA,WAAA,CAAA,mBAAA;AAAmB,IAAA,CAAA,EAAA,CAAA;AAiKnB,IAAA,MAAA,CAAA,eAAA,OAAA,EAAA,qBAAA,EAAA,EAAA,UAAA,EAAA,IAAA,EAAA,KAAA,WAAA;AAAA,MAAA,OAhKA,WAAA,CAAA,mBAAA;AAAmB,IAAA,CAAA,EAAA,CAAA;AAkKnB,IAAA,MAAA,CAAA,eAAA,OAAA,EAAA,uBAAA,EAAA,EAAA,UAAA,EAAA,IAAA,EAAA,KAAA,WAAA;AAAA,MAAA,OAjKA,WAAA,CAAA,qBAAA;AAAqB,IAAA,CAAA,EAAA,CAAA;AAGvB,IAAA,IAAM,YAAA,GAAe;;AAEnB,MAAA,IAAA,EAAM,UAAA,CAAW,IAAA,CAAK,CAAC,CAAA,EAAM,EAAI,CAAC,CAAA;;AAElC,MAAA,IAAA,EAAM,UAAA,CAAW,IAAA,CAAK,CAAC,CAAA,EAAM,GAAI,CAAC;;AAGpC,IAAA,IAAM,uBAAA,GAA0B,UAAA;AAEhC,IAAA,SAAS,wBAAA,CACP,cAAA,EACA,GAAA,EACA,IAAA,EAAa;AAEb,MAAA,MAAM,SAAA,GAAA,IAAY,WAAA,CAAA,eAAA,EAAgB,cAAc,CAAA;AAChD,MAAA,OAAO,cAAA,CAAe,SAAA,EAAW,GAAA,EAAK,IAAI,CAAA;AAC5C,IAAA;AAgJE,IAAA,OAAA,CAAA,wBAAA,GAAA,wBAAA;AA9IF,IAAA,SAAS,cAAA,CACP,SAAA,EACA,GAAA,EACA,IAAA,EAAa;AAEb,MAAA,IAAI,SAAA,CAAU,WAAW,EAAA,EAAI;AAE3B,QAAA,MAAM,IAAI,MAAM,6BAA6B,CAAA;;AAE/C,MAAA,IAAI,GAAA,KAAQ,KAAA,IAAS,GAAA,GAAM,uBAAA,EAAyB;AAClD,QAAA,MAAM,IAAI,MAAM,aAAa,CAAA;;AAE/B,MAAA,MAAM,SAAS,GAAA,IAAO,CAAA;AAEtB,MAAA,MAAM,IAAA,GAAO,GAAA,KAAQ,KAAA,IAAS,GAAA,IAAO,OAAO,CAAA,GAAI,CAAA;AAGhD,MAAA,MAAM,KAAA,GAAA,IAAQ,OAAA,CAAA,MAAA,EAAO;QACnB,IAAA,GAAO,YAAA,CAAa,OAAO,YAAA,CAAa,IAAA;AACxC,QAAA,SAAA;AACA,QAAA,UAAA,CAAW,IAAA,CAAK;;AAEd,UAAA,IAAA;;UAEA,MAAA,GAAS,GAAA;;AAER,UAAA,MAAA,IAAU,CAAA,GAAK,GAAA;;AAEf,UAAA,MAAA,IAAU,EAAA,GAAM,GAAA;;AAEhB,UAAA,MAAA,IAAU,EAAA,GAAM,GAAA;AACjB,UAAA,CAAA;AACA,UAAA,CAAA;AACA,UAAA,CAAA;;AAEA,UAAA;AACD,SAAA;AACF,OAAA,CAAA;AAED,MAAA,OAAO,WAAA,CAAA,KAAA,CAAM,aAAA,CAAc,KAAK,CAAA;AAClC,IAAA;AAwGE,IAAA,OAAA,CAAA,cAAA,GAAA,cAAA;AAtGF,IAAA,SAAS,yBAAyB,QAAA,EAAgB;AAQhD,MAAA,MAAM,EAAE,SAAA,EAAW,GAAA,EAAK,IAAA,EAAI,GAAK,eAAe,QAAQ,CAAA;AAExD,MAAA,MAAM,cAAA,GAAA,IAAiB,WAAA,CAAA,eAAA,EAAgB,SAAS,CAAA;AAChD,MAAA,OAAO;AACL,QAAA,cAAA;AACA,QAAA,GAAA;AACA,QAAA;;AAEJ,IAAA;AAwFE,IAAA,OAAA,CAAA,wBAAA,GAAA,wBAAA;AAtFF,IAAA,SAAS,eAAe,QAAA,EAAgB;AAKtC,MAAA,MAAM,OAAA,GAAU,WAAA,CAAA,KAAA,CAAM,aAAA,CAAc,QAAQ,CAAA;AAI5C,MAAA,MAAM,IAAA,GAAO,2BAA2B,OAAO,CAAA;AAE/C,MAAA,MAAM,SAAA,GAAY,OAAA,CAAQ,KAAA,CAAM,CAAA,EAAG,EAAE,CAAA;AACrC,MAAA,MAAM,GAAA,GAAM,kBAAkB,OAAO,CAAA;AACrC,MAAA,OAAO;AACL,QAAA,SAAA;AACA,QAAA,GAAA;AACA,QAAA;;AAEJ,IAAA;AAsEE,IAAA,OAAA,CAAA,cAAA,GAAA,cAAA;AApEF,IAAA,SAAS,2BAA2B,GAAA,EAAe;AACjD,MAAA,MAAM,aAAA,GAAgB,GAAA,CAAI,KAAA,CAAM,CAAA,EAAG,CAAC,CAAA;AACpC,MAAA,IAAA,IAAI,OAAA,CAAA,KAAA,EAAM,YAAA,CAAa,IAAA,EAAM,aAAa,CAAA,EAAG;AAC3C,QAAA,OAAO,KAAA;;AAET,MAAA,IAAA,IAAI,OAAA,CAAA,KAAA,EAAM,YAAA,CAAa,IAAA,EAAM,aAAa,CAAA,EAAG;AAC3C,QAAA,OAAO,IAAA;;AAGT,MAAA,MAAM,IAAI,MAAM,+BAA+B,CAAA;AACjD,IAAA;AAEA,IAAA,SAAS,kBAAkB,GAAA,EAAe;AACxC,MAAA,MAAM,IAAA,GAAO,IAAI,EAAE,CAAA;AACnB,MAAA,IAAI,QAAQ,CAAA,EAAG;AAEb,QAAA,MAAM,IAAI,MAAM,uBAAuB,CAAA;;AAEzC,MAAA,IAAI,SAAS,CAAA,EAAG;AAEd,QAAA,OAAO,GAAA,CAAI,EAAE,CAAA,GAAI,GAAA,CAAI,EAAE,CAAA,GAAI,GAAA,GAAQ,GAAA,CAAI,EAAE,CAAA,GAAI,KAAA,GAAU,GAAA,CAAI,EAAE,CAAA,GAAI,QAAA;;AAEnE,MAAA,IAAI,SAAS,CAAA,EAAG;AACd,QAAA,MAAM,IAAI,MAAM,sCAAsC,CAAA;;AAExD,MAAA,IAAI,CAAA,IAAC,OAAA,CAAA,KAAA,EAAA,IAAM,OAAA,CAAA,UAAA,EAAW,kBAAkB,CAAA,EAAG,IAAI,KAAA,CAAM,EAAA,EAAI,EAAA,GAAK,CAAC,CAAC,CAAA,EAAG;AACjE,QAAA,MAAM,IAAI,MAAM,8BAA8B,CAAA;;AAEhD,MAAA,OAAO,KAAA;AACT,IAAA;AAEA,IAAA,SAAS,gBAAgB,QAAA,EAAgB;AACvC,MAAA,IAAI;AACF,QAAA,cAAA,CAAe,QAAQ,CAAA;eAChB,MAAA,EAAQ;AACf,QAAA,OAAO,KAAA;;AAET,MAAA,OAAO,IAAA;AACT,IAAA;AAgCE,IAAA,OAAA,CAAA,eAAA,GAAA,eAAA;;;;;;;;;;;;ACvLF,IAAA,IAAA,QAAA,GAAAA,4BAAA,QAAA,CAAA;AACA,IAAA,IAAA,sBAAA,GAAA,gBAAA,4BAAA,EAAA,CAAA;AAKa,IAAA,OAAA,CAAA,gBAAY,sBAAA,CAAA,OAAA,EAAqB,WAAA,EAAa,SAAA,UAAU,CAAA;;;;;;;;;;;;ACNrE,IAAA,IAAA,QAAA,GAAAA,4BAAA,QAAA,CAAA;AACA,IAAA,IAAA,sBAAA,GAAA,gBAAA,4BAAA,EAAA,CAAA;AAKa,IAAA,OAAA,CAAA,aAAS,sBAAA,CAAA,OAAA,EAAqB,QAAA,EAAU,SAAA,UAAU,CAAA;;;;;;;;ACN/D,IAAA,IAAA,QAAA,GAAA,cAAA,EAAA;AACA,IAAA,IAAA,OAAA,GAAAA,4BAAA,8BAAA,CAAA;AAIA,IAAA,IAAqB,MAAA,GAArB,MAAqB,OAAA,CAAM;MAA3B,WAAA,GAAA;AAEE,QAAA,IAAA,CAAA,IAAA,GAAO,QAAA,CAAA,MAAA,CAAO,MAAA,EAAM;AA4BtB,MAAA;AA1BE,MAAA,OAAO,KAAK,KAAA,EAAY;AACtB,QAAA,OAAO,IAAI,OAAA,EAAM,CAAG,GAAA,CAAI,KAAK,EAAE,QAAA,EAAQ;AACzC,MAAA;AAEA,MAAA,GAAA,CAAI,KAAA,EAAY;AACd,QAAA,IAAA,CAAK,IAAA,CAAK,OAAO,KAAK,CAAA;AACtB,QAAA,OAAO,IAAA;AACT,MAAA;AAEA,MAAA,MAAA,CAAO,CAAA,EAAS;AACd,QAAA,MAAM,MAAA,GAAS,IAAI,UAAA,CAAW,CAAC,CAAA;AAC/B,QAAA,IAAI,SAAS,MAAA,CAAO,MAAM,CAAA,CAAE,SAAA,CAAU,GAAG,CAAC,CAAA;AAC1C,QAAA,OAAO,IAAA,CAAK,IAAI,MAAM,CAAA;AACxB,MAAA;MAEA,MAAA,GAAM;AACJ,QAAA,OAAO,IAAA,CAAK,KAAK,MAAA,EAAM;AACzB,MAAA;MAEA,QAAA,GAAQ;AACN,QAAA,OAAO,IAAA,CAAK,MAAA,EAAM,CAAG,KAAA,CAAM,GAAG,EAAE,CAAA;AAClC,MAAA;MAEA,cAAA,GAAc;AACZ,QAAA,OAAA,IAAO,OAAA,CAAA,eAAA,EAAgB,IAAA,CAAK,UAAU,CAAA;AACxC,MAAA;;AA7BF,IAAA,OAAA,CAAA,OAAA,GAAA,MAAA;;;;;;;;;;;;ACLA,IAAA,IAAA,WAAA,GAAAA,4BAAA,yBAAA,CAAA;AAEA,IAAA,IAAA,QAAA,GAAA,gBAAA,cAAA,EAAA,CAAA;AAEA,IAAA,IAAM,IAAA,GAAO,OAAO,CAAC,CAAA;AAErB,IAAA,SAAS,YAAA,CAAa,OAAmB,OAAA,EAAgB;AACvD,MAAA,MAAM,KAAA,GAAQ,WAAA,CAAA,SAAA,CAAU,KAAA,CAAM,CAAA;AAC9B,MAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,IAAK,UAAA,EAAa,CAAA,EAAA,EAAK;AAGrC,QAAA,MAAM,SAAS,IAAI,QAAA,CAAA,OAAA,EAAM,CAAG,IAAI,KAAK,CAAA;AAErC,QAAA,IAAI,YAAY,MAAA,EAAW;AACzB,UAAA,MAAA,CAAO,OAAO,OAAO,CAAA;;AAEvB,QAAA,MAAA,CAAO,OAAO,CAAC,CAAA;AACf,QAAA,MAAM,GAAA,GAAM,OAAO,cAAA,EAAc;AAEjC,QAAA,IAAI,GAAA,GAAM,IAAA,IAAQ,GAAA,GAAM,KAAA,EAAO;AAC7B,UAAA,OAAO,GAAA;;;AAYX,MAAA,MAAM,IAAI,MAAM,uBAAuB,CAAA;AACzC,IAAA;AAWA,IAAA,SAAgB,gBAAA,CACd,IAAA,EACA,IAAA,GAGI,EAAA,EAAE;AAEN,MAAA,MAAM,OAAO,IAAA,CAAK,SAAA;AAClB,MAAA,MAAM,KAAA,GAAQ,WAAA,CAAA,SAAA,CAAU,KAAA,CAAM,CAAA;AAI9B,MAAA,MAAM,UAAA,GAAa,aAAa,IAAI,CAAA;AACpC,MAAA,IAAI,IAAA,EAAM;AAER,QAAA,OAAO,UAAA;;AAET,MAAA,MAAM,SAAA,GACJ,YAAA,SAAA,CAAU,eAAA,CAAgB,KAAK,QAAA,CAAS,UAAU,CAAA,CAAE,UAAA,CAAW,IAAI,CAAA;AAGrE,MAAA,MAAM,YAAA,GAAe,KAAK,YAAA,IAAgB,CAAA;AAC1C,MAAA,OAAA,CAAQ,YAAA,CAAa,SAAA,EAAW,YAAY,CAAA,GAAI,UAAA,IAAc,KAAA;AAChE,IAAA;AAvBA,IAAA,OAAA,CAAA,gBAAA,GAAA,gBAAA;AAyBA,IAAA,SAAgB,iCAAiC,cAAA,EAA0B;AACzE,MAAA,MAAM,YAAA,GAAe,WAAA,CAAA,SAAA,CAAU,eAAA,CAAgB,QAAQ,cAAc,CAAA;AACrE,MAAA,MAAM,MAAA,GAAS,YAAA,CAAa,cAAA,EAAgB,CAAC,CAAA;AAC7C,MAAA,MAAM,QAAQ,WAAA,CAAA,SAAA,CAAU,eAAA,CAAgB,IAAA,CAAK,SAAS,MAAM,CAAA;AAC5D,MAAA,MAAM,MAAA,GAAS,YAAA,CAAa,GAAA,CAAI,KAAK,CAAA;AACrC,MAAA,OAAO,MAAA,CAAO,WAAW,IAAI,CAAA;AAC/B,IAAA;AANA,IAAA,OAAA,CAAA,gCAAA,GAAA,gCAAA;;;;;;;;ACrEA,IAAA,IAAM,YAAA,GAEF;AACF,MAAA,EAAA,CAAG,MAAM,OAAA,EAAO;AACd,QAAA,IAAI,CAAC,IAAA,EAAM;AACT,UAAA,MAAM,IAAI,MAAM,OAAO,CAAA;;AAE3B,MAAA;;AAGF,IAAA,OAAA,CAAA,OAAA,GAAe,YAAA;;;;;;;;;ACRf,IAAA,IAAK,MAAA;AAAL,IAAA,CAAA,SAAKE,OAAAA,EAAM;AACT,MAAAA,OAAAA,CAAAA,OAAAA,CAAA,MAAA,CAAA,GAAA,EAAA,CAAA,GAAA,MAAA;AACA,MAAAA,OAAAA,CAAAA,OAAAA,CAAA,SAAA,CAAA,GAAA,GAAA,CAAA,GAAA,SAAA;AACA,MAAAA,OAAAA,CAAAA,OAAAA,CAAA,iBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,iBAAA;AACA,MAAAA,OAAAA,CAAAA,OAAAA,CAAA,uBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,uBAAA;AACA,MAAAA,OAAAA,CAAAA,OAAAA,CAAA,kBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,kBAAA;AACA,MAAAA,OAAAA,CAAAA,OAAAA,CAAA,mBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,mBAAA;IACF,CAAA,EAPK,MAAA,KAAA,MAAA,GAAM,EAAA,CAAA,CAAA;AAyBX,IAAA,IAAM,SAAA,GAA6C;AACjD,MAAA,CAAC,CAAA,QAAA,EAAW,MAAA,CAAO,IAAI,CAAA,GAAA,CAAK,GAAG,iBAAA;AAC/B,MAAA,CAAC,CAAA,QAAA,EAAW,MAAA,CAAO,iBAAiB,CAAA,GAAA,CAAK,GAAG,iBAAA;AAC5C,MAAA,CAAC,CAAA,QAAA,EAAW,MAAA,CAAO,OAAO,CAAA,GAAA,CAAK,GAAG,SAAA;AAClC,MAAA,CAAC,CAAA,OAAA,EAAU,MAAA,CAAO,OAAO,CAAA,GAAA,CAAK,GAAG,SAAA;AACjC,MAAA,CAAC,CAAA,OAAA,EAAU,MAAA,CAAO,eAAe,CAAA,GAAA,CAAK,GAAG,iBAAA;AACzC,MAAA,CAAC,CAAA,OAAA,EAAU,MAAA,CAAO,qBAAqB,CAAA,GAAA,CAAK,GAAG,iBAAA;AAC/C,MAAA,CAAC,CAAA,OAAA,EAAU,MAAA,CAAO,gBAAgB,CAAA,GAAA,CAAK,GAAG;;AAG5C,IAAA,SAAS,WAAW,GAAA,EAAc;AAChC,MAAA,OAAO;QACL,MAAA,EAAQ,GAAA,CAAI,MAAA,GAAS,CAAA,GAAI,MAAA,CAAO,IAAA,GAAO,QAAA,CAAS,GAAA,CAAI,KAAA,CAAM,CAAA,EAAG,CAAC,CAAA,EAAG,EAAE,CAAA;AACnE,QAAA,GAAA,EAAK,IAAI,MAAA,GAAS;;AAEtB,IAAA;AAEA,IAAA,SAAS,WAAW,MAAA,EAAc;AAChC,MAAA,OAAO,MAAA,KAAW,MAAA,CAAO,IAAA,GACrB,MAAA,GACA,CAAA,EAAA,EAAK,MAAA,CAAO,QAAA,CAAS,EAAE,CAAA,CAAE,QAAA,CAAS,CAAA,EAAG,GAAG,CAAC,CAAA,CAAA;AAC/C,IAAA;AAEA,IAAA,SAAS,qBAAqB,IAAA,EAAa;AAEzC,MAAA,MAAM,OAAA,GAAU,CAAA;AAChB,MAAA,MAAM,QAAA,GAAW;AACf,QAAA,SAAA,EAAW,kBAAkB,MAAA,GAAS,OAAA;AACtC,QAAA,MAAA,EAAQ,OAAO,MAAA,GAAS;;AAG1B,MAAA,OAAO,OAAO,OAAA,CAAQ,SAAS,EAC5B,MAAA,CAAO,CAAC,CAAC,GAAG,CAAA,KAAM,IAAI,UAAA,CAAW,IAAI,CAAC,CAAA,CACtC,GAAA,CAAI,CAAC,CAAC,GAAA,EAAK,SAAS,CAAA,KAAK;AACxB,QAAA,MAAM,GAAG,MAAA,EAAQ,MAAM,CAAA,GAAI,GAAA,CAAI,MAAM,GAAG,CAAA;AACxC,QAAA,MAAM,UAAA,GAAa,SAAA,CAAU,MAAA,CAAO,QAAA,CAAS,SAAS,CAAA;AACtD,QAAA,MAAM,YAAA,GAAe,WAAW,MAAA,CAAO,MAAM,CAAC,CAAA,CAAE,MAAA,CAAO,SAAS,MAAM,CAAA;AACtE,QAAA,OAAO,CAAA,EAAG,UAAU,CAAA,WAAA,EAAc,YAAY,YAAY,MAAM,CAAA,MAAA,CAAA;MAClE,CAAC,CAAA,CACA,KAAK,IAAI,CAAA;AACd,IAAA;AAEA,IAAA,SAAS,SAAS,EAChB,GAAA,EACA,IAAA,EACA,MAAA,EACA,KAAG,EAMJ;AACC,MAAA,MAAM,YAAA,GAAe,qBAAqB,IAAI,CAAA;AAE9C,MAAA,OAAO,CAAA;;QAED,IAAI;OACL,GAAG;AACA,QAAA,EAAA,UAAA,CAAW,MAAM,CAAC,CAAA;UAClB,GAAG,CAAA;;aAEA,IAAI,CAAA;EACf,YAAY;;AAEd,IAAA;AAUA,IAAA,SAAgB,mBAAA,CAAoB,KAAgB,IAAA,EAAa;AAC/D,MAAA,MAAM,EAAE,MAAA,EAAQ,GAAA,EAAG,GAAK,WAAW,GAAG,CAAA;AAEtC,MAAA,MAAM,aAAa,IAAA,KAAS,SAAA,IAAa,GAAA,KAAQ,EAAA,GAAK,OAAO,IAAA,GAAO,MAAA;AACpE,MAAA,MAAM,SAAA,GAAY,UAAU,CAAA,EAAG,IAAI,IAAI,UAAU,CAAA,CAAA,EAAI,GAAG,CAAA,CAAE,CAAA;AAE1D,MAAA,IAAI,CAAC,SAAA,EAAW;AACd,QAAA,MAAM,IAAI,KAAA,CAAM,QAAA,CAAS,EAAE,GAAA,EAAK,MAAM,GAAA,EAAK,MAAA,EAAQ,UAAA,EAAY,CAAC,CAAA;;AAElE,MAAA,OAAO,SAAA;AACT,IAAA;AAVA,IAAA,OAAA,CAAA,mBAAA,GAAA,mBAAA;AAYA,IAAA,SAAgB,0BAA0B,GAAA,EAAc;AACtD,MAAA,OAAO,mBAAA,CAAoB,KAAK,QAAQ,CAAA;AAC1C,IAAA;AAFA,IAAA,OAAA,CAAA,yBAAA,GAAA,yBAAA;AAIA,IAAA,SAAgB,2BAA2B,GAAA,EAAc;AACvD,MAAA,OAAO,mBAAA,CAAoB,KAAK,SAAS,CAAA;AAC3C,IAAA;AAFA,IAAA,OAAA,CAAA,0BAAA,GAAA,0BAAA;;;;;;;;;;;ACtHA,IAAA,IAAA,OAAA,GAAAF,4BAAA,8BAAA,CAAA;AACA,IAAA,IAAA,WAAA,GAAAA,4BAAA,yBAAA,CAAA;AACA,IAAA,IAAA,OAAA,GAAA,cAAA,EAAA;AAQA,IAAA,IAAA,OAAA,GAAA,cAAA,EAAA;AACA,IAAA,IAAA,QAAA,GAAA,gBAAA,cAAA,EAAA,CAAA;AACA,IAAA,IAAA,QAAA,GAAA,gBAAA,cAAA,EAAA,CAAA;AAEA,IAAA,IAAM,gBAAA,GAAmB,IAAA;AAEzB,IAAA,IAAM,SAAA,GAA2B;AAC/B,MAAA,aAAA,CACE,SACA,OAAA,EAA8B;AAK9B,QAAA,MAAM,OAAA,GAAA,IAAU,OAAA,CAAA,gBAAA,EAAiB,SAAS,OAAO,CAAA;AACjD,QAAA,MAAM,UAAA,GACJ,gBAAA,GAAA,IAAmB,OAAA,CAAA,UAAA,EAAA,IAAW,OAAA,CAAA,eAAA,EAAgB,OAAA,EAAS,EAAE,CAAC,CAAA;AAE5D,QAAA,MAAM,SAAA,GAAA,IAAY,OAAA,CAAA,UAAA,EAAW,YAAA,SAAA,CAAe,YAAA,CAAa,OAAA,EAAS,IAAI,CAAC,CAAA;AACvE,QAAA,OAAO,EAAE,YAAY,SAAA,EAAS;AAChC,MAAA,CAAA;AAEA,MAAA,IAAA,CAAK,SAAqB,UAAA,EAAqB;AAI7C,QAAA,QAAA,CAAA,OAAA,CAAO,EAAA,CACJ,UAAA,CAAW,MAAA,KAAW,EAAA,IAAM,UAAA,CAAW,UAAA,CAAW,gBAAgB,CAAA,IACjE,UAAA,CAAW,MAAA,KAAW,EAAE,CAAA;AAE5B,QAAA,MAAM,mBACJ,UAAA,CAAW,MAAA,KAAW,KAAK,UAAA,CAAW,KAAA,CAAM,CAAC,CAAA,GAAI,UAAA;AACnD,QAAA,OAAO,WAAA,CAAA,UACJ,IAAA,CAAK,QAAA,CAAA,QAAO,IAAA,CAAK,OAAO,GAAG,gBAAA,EAAkB;;UAE5C,IAAA,EAAM,IAAA;;UAEN,YAAA,EAAc;SACf,CAAA,CACA,QAAA,CAAS,IAAI,CAAA,CACb,WAAA,EAAW;AAChB,MAAA,CAAA;MAEA,MAAA,CACE,OAAA,EACA,WACA,SAAA,EAAoB;AAEpB,QAAA,MAAM,OAAA,GAAU,WAAA,CAAA,SAAA,CAAe,SAAA,CAAU,QAAQ,SAAS,CAAA;AAC1D,QAAA,OAAO,WAAA,CAAA,UAAe,MAAA,CAAO,OAAA,EAAS,SAAA,OAAA,CAAO,IAAA,CAAK,OAAO,CAAA,EAAG,SAAS,CAAA;AACvE,MAAA;;AAGF,IAAA,OAAA,CAAA,OAAA,GAAe,SAAA;;;;;;;;;;;AC/Df,IAAA,IAAA,SAAA,GAAAA,4BAAA,uBAAA,CAAA;AACA,IAAA,IAAA,OAAA,GAAA,cAAA,EAAA;AAGA,IAAA,IAAA,QAAA,GAAA,gBAAA,cAAA,EAAA,CAAA;AACA,IAAA,IAAA,QAAA,GAAA,gBAAA,cAAA,EAAA,CAAA;AAEA,IAAA,IAAM,SAAA,GAAY,IAAA;AAElB,IAAA,IAAM,OAAA,GAAyB;AAC7B,MAAA,aAAA,CAAc,OAAA,EAAmB;AAI/B,QAAA,MAAM,aAAA,GAAgB,QAAA,CAAA,OAAA,CAAO,IAAA,CAAK,OAAO,CAAA;AACzC,QAAA,MAAM,UAAA,GAAa,SAAA,GAAA,IAAY,OAAA,CAAA,YAAW,aAAa,CAAA;AACvD,QAAA,MAAM,SAAA,GACJ,gBAAY,OAAA,CAAA,YAAW,SAAA,CAAA,OAAA,CAAa,YAAA,CAAa,aAAa,CAAC,CAAA;AACjE,QAAA,OAAO,EAAE,YAAY,SAAA,EAAS;AAChC,MAAA,CAAA;AAEA,MAAA,IAAA,CAAK,SAAqB,UAAA,EAAqB;AAC7C,QAAA,QAAA,CAAA,OAAA,CAAO,EAAA,CAAG,OAAA,YAAmB,UAAA,EAAY,iCAAiC,CAAA;AAC1E,QAAA,QAAA,CAAA,OAAA,CAAO,EAAA,CACL,UAAA,CAAW,MAAA,KAAW,IACtB,+CAA+C,CAAA;AAEjD,QAAA,OAAA,IAAO,OAAA,CAAA,UAAA,EAAW,SAAA,CAAA,OAAA,CAAa,IAAA,CAAK,OAAA,EAAS,UAAA,CAAW,KAAA,CAAM,CAAC,CAAC,CAAC,CAAA;AACnE,MAAA,CAAA;MAEA,MAAA,CACE,OAAA,EACA,WACA,SAAA,EAAiB;AAGjB,QAAA,QAAA,CAAA,OAAA,CAAO,EAAA,CACL,SAAA,CAAU,MAAA,KAAW,IACrB,8CAA8C,CAAA;AAEhD,QAAA,OAAO,UAAA,OAAA,CAAa,MAAA;AAClB,UAAA,SAAA;AACA,UAAA,OAAA;;AAEA,UAAA,SAAA,CAAU,MAAM,CAAC,CAAA;;;;;;AAMjB,UAAA,EAAE,QAAQ,KAAA;AAAO,SAAA;AAErB,MAAA;;AAGF,IAAA,OAAA,CAAA,OAAA,GAAe,OAAA;;;;;;;;;;;;ACvDf,IAAA,IAAA,sBAAA,GAAA,YAAA,EAAA;AA8GE,IAAA,MAAA,CAAA,eAAA,OAAA,EAAA,YAAA,EAAA,EAAA,UAAA,EAAA,IAAA,EAAA,KAAA,WAAA;AAAA,MAAA,OA5GA,sBAAA,CAAA,UAAA;AAAU,IAAA,CAAA,EAAA,CAAA;AAIZ,IAAA,IAAA,WAAA,GAAA,iBAAA,EAAA;AACA,IAAA,IAAA,QAAA,GAAA,cAAA,EAAA;AACA,IAAA,IAAA,OAAA,GAAA,cAAA,EAAA;AAEA,IAAA,IAAA,OAAA,GAAA,cAAA,EAAA;AACA,IAAA,IAAA,QAAA,GAAA,gBAAA,cAAA,EAAA,CAAA;AACA,IAAA,IAAA,QAAA,GAAA,gBAAA,cAAA,EAAA,CAAA;AAEA,IAAA,IAAA,qBAAA,GAAA,2BAAA,EAAA;AAKA,IAAA,IAAA,WAAA,GAAA,gBAAA,iBAAA,EAAA,CAAA;AACA,IAAA,IAAA,SAAA,GAAA,gBAAA,eAAA,EAAA,CAAA;AAEA,IAAA,SAAS,iBAAiB,SAAA,EAAoB;AAC5C,MAAA,MAAM,UAAU,EAAE,iBAAA,EAAmB,YAAA,OAAA,EAAW,OAAA,EAAA,UAAA,OAAA,EAAO;AACvD,MAAA,OAAO,QAAQ,SAAS,CAAA;AAC1B,IAAA;AAEA,IAAA,SAAS,YAAA,CACP,OAAA,GAGI,EAAA,EAAE;AAEN,MAAA,QAAA,CAAA,OAAA,CAAO,GACL,CAAC,OAAA,CAAQ,WAAW,OAAA,CAAQ,OAAA,CAAQ,MAAA,IAAU,EAAA,EAC9C,mBAAmB,CAAA;AAErB,MAAA,MAAM,OAAA,GAAU,OAAA,CAAQ,OAAA,GACpB,OAAA,CAAQ,OAAA,CAAQ,KAAA,CAAM,CAAA,EAAG,EAAE,CAAA,GAAA,IAC3B,OAAA,CAAA,WAAA,EAAY,EAAE,CAAA;AAClB,MAAA,MAAM,IAAA,GAAO,OAAA,CAAQ,SAAA,KAAc,SAAA,GAAY,SAAA,GAAY,WAAA;AAC3D,MAAA,OAAA,IAAO,sBAAA,CAAA,UAAA,EAAW,OAAA,EAAS,IAAI,CAAA;AACjC,IAAA;AA8DE,IAAA,OAAA,CAAA,YAAA,GAAA,YAAA;AA5DF,IAAA,SAAS,aAAA,CACP,MACA,OAAA,EAIC;;AAED,MAAA,MAAM,OAAA,GAAA,IAAU,sBAAA,CAAA,UAAA,EAAW,IAAI,CAAA;AAC/B,MAAA,MAAM,iBAAA,GAAA,CAAoB,EAAA,GAAA,OAAA,KAAO,IAAA,IAAP,OAAA,KAAO,MAAA,GAAA,MAAA,GAAP,OAAA,CAAS,SAAA,MAAS,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,KAAI,OAAA,CAAQ,IAAA;AACxD,MAAA,MAAM,SAAA,GACJ,iBAAA,KAAsB,SAAA,GAAY,SAAA,GAAY,iBAAA;AAChD,MAAA,MAAM,MAAA,GAAS,iBAAiB,SAAS,CAAA;AACzC,MAAA,MAAM,OAAA,GAAU,MAAA,CAAO,aAAA,CAAc,OAAA,CAAQ,OAAO,OAAO,CAAA;AAC3D,MAAA,MAAM,eAAA,GAAkB,QAAA,CAAA,OAAA,CAAO,IAAA,CAAK,kCAAkC,CAAA;AACtE,MAAA,MAAM,SAAA,GAAY,MAAA,CAAO,IAAA,CAAK,eAAA,EAAiB,QAAQ,UAAU,CAAA;AAEjE,MAAA,IAAI,CAAC,MAAA,CAAO,MAAA,CAAO,iBAAiB,SAAA,EAAW,OAAA,CAAQ,SAAS,CAAA,EAAG;AACjE,QAAA,MAAM,IAAI,MAAM,uDAAuD,CAAA;;AAEzE,MAAA,OAAO,OAAA;AACT,IAAA;AAwCE,IAAA,OAAA,CAAA,aAAA,GAAA,aAAA;AAtCF,IAAA,SAAS,IAAA,CAAK,YAAuB,UAAA,EAAqB;AACxD,MAAA,MAAM,SAAA,GAAA,IAAY,qBAAA,CAAA,0BAAA,EAA2B,UAAU,CAAA;AACvD,MAAA,OAAO,gBAAA,CAAiB,SAAS,CAAA,CAAE,IAAA,CAAA,IAAK,OAAA,CAAA,UAAA,EAAW,UAAU,CAAA,EAAG,UAAU,CAAA;AAC5E,IAAA;AAoCE,IAAA,OAAA,CAAA,IAAA,GAAA,IAAA;AAlCF,IAAA,SAASG,OAAAA,CACP,UAAA,EACA,SAAA,EACA,SAAA,EAAoB;AAEpB,MAAA,MAAM,SAAA,GAAA,IAAY,qBAAA,CAAA,yBAAA,EAA0B,SAAS,CAAA;AACrD,MAAA,OAAO,gBAAA,CAAiB,SAAS,CAAA,CAAE,MAAA,CAAA,IACjC,QAAA,UAAA,EAAW,UAAU,CAAA,EACrB,SAAA,EACA,SAAS,CAAA;AAEb,IAAA;AAwBE,IAAA,OAAA,CAAA,MAAA,GAAAA,OAAAA;AAtBF,IAAA,SAAS,qBAAqB,cAAA,EAA0B;AACtD,MAAA,OAAA,IAAO,WAAA,CAAA,SAAA,EAAA,IAAU,QAAA,CAAA,MAAA,EAAO,cAAc,CAAC,CAAA;AACzC,IAAA;AAEA,IAAA,SAAS,uBAAuB,cAAA,EAA0B;AACxD,MAAA,OAAA,IAAO,sBAAA,CAAA,eAAA,EAAgB,oBAAA,CAAqB,cAAc,CAAC,CAAA;AAC7D,IAAA;AAEA,IAAA,SAAS,cAAc,SAAA,EAAiB;AACtC,MAAA,OAAO,sBAAA,CAAA,IAAuB,OAAA,CAAA,UAAA,EAAW,SAAS,CAAC,CAAA;AACrD,IAAA;AAaE,IAAA,OAAA,CAAA,aAAA,GAAA,aAAA;AAXF,IAAA,SAAS,kBAAkB,SAAA,EAAiB;AAC1C,MAAA,MAAM,cAAA,GAAA,IAAiB,sBAAA,CAAA,gBAAA,EAAiB,SAAS,CAAA;AACjD,MAAA,MAAM,kBAAA,GAAA,IAAqB,OAAA,CAAA,gCAAA,EAAiC,cAAc,CAAA;AAC1E,MAAA,OAAO,uBAAuB,kBAAkB,CAAA;AAClD,IAAA;AAQE,IAAA,OAAA,CAAA,iBAAA,GAAA,iBAAA;;;;;AC3GF,IAAA,sBAAA,GAAuBC,yBAAA,CAAA,aAAA,EAAA,EAAA,CAAA,CAAA;AAEhB,SAAS,UAAA,CACd,OAAA,EACA,SAAA,EACA,KAAA,EACS;AACT,EAAA,OAAA,IAAO,sBAAA,CAAA,MAAA,EAAOH,cAAO,IAAA,CAAK,OAAO,EAAE,QAAA,CAAS,KAAK,CAAA,EAAG,KAAA,EAAO,SAAS,CAAA;AACtE;AAEO,IAAM,aAAA,GAAgB;AAAA,EAC3B,qCAAA;AAAA,EACA;AACF;AAEO,IAAM,aAAA,GAAgB;AAAA,EAC3B,qBAAA;AAAA,EACA,wBAAA;AAAA;AAAA,EACA;AACF;AAGA,eAAe,YAAA,CACb,SACA,MAAA,EAC6B;AAC7B,EAAA,MAAM,OAAA,GAAU,SAAS,aAAA,GAAgB,aAAA;AAEzC,EAAA,KAAA,MAAW,UAAU,OAAA,EAAS;AAC5B,IAAA,IAAI;AACF,MAAA,MAAM,MAAA,GAAS,IAAII,WAAA,CAAO,MAAM,CAAA;AAChC,MAAA,MAAM,OAAO,OAAA,EAAQ;AAErB,MAAA,MAAM,QAAA,GAAW,MAAM,MAAA,CAAO,OAAA,CAAQ;AAAA,QACpC,OAAA,EAAS,YAAA;AAAA,QACT,OAAA,EAAS,OAAA;AAAA,QACT,MAAA,EAAQ,KAAA;AAAA,QACR,KAAA,EAAO,CAAA;AAAA,QACP,OAAA,EAAS;AAAA,OACV,CAAA;AAED,MAAA,MAAM,OAAO,UAAA,EAAW;AACxB,MAAA,OAAO,4BAAA,CAA6B,QAAA,CAAS,MAAA,EAAQ,YAAY,CAAA;AAAA,IACnE,SAAS,KAAA,EAAO;AACd,MAAA,IAAI,YAAA,GAAe,kCAAA;AACnB,MAAA,IAAI,iBAAiB,KAAA,EAAO;AAC1B,QAAA,YAAA,IAAgB,CAAA,EAAA,EAAK,MAAM,OAAO,CAAA,CAAA;AAAA,MACpC;AACA,MAAA,OAAA,CAAQ,MAAM,YAAY,CAAA;AAAA,IAE5B;AAAA,EACF;AACF;AAEA,SAAS,6BACP,QAAA,EACQ;AACR,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,QAAA,CAAS,QAAQ,CAAA,EAAA,EAAK;AAExC,IAAA,MAAM,aAAA,GAAgB,QAAA,CAAS,CAAC,CAAA,EAAG,SAAS,aAAA,IAAiB,IAAA;AAG7D,IAAA,OAAO,aAAA;AAAA,EACT;AACA,EAAA,MAAM,IAAI,MAAM,kDAAkD,CAAA;AACpE;AAEA,eAAsB,sBAAA,CACpB,KAAA,EACA,SAAA,EACA,MAAA,EACyB;AACzB,EAAA,MAAM,CAAC,MAAM,OAAO,IAAI,KAAA,CAAM,OAAA,CAAQ,MAAM,GAAG,CAAA;AAC/C,EAAA,IAAI,EAAA,KAAO,QAAQ,OAAO,EAAE,GAAG,KAAA,EAAO,MAAA,EAAQC,0BAAY,MAAA,EAAO;AAEjE,EAAA,IAAI,CAAC,SAAA,EAAW;AACd,IAAA,SAAA,GAAY,MAAM,YAAA,CAAa,OAAA,EAAS,MAAM,CAAA;AAAA,EAChD;AAEA,EAAA,IAAI,CAAC,SAAA,EAAW;AACd,IAAA,OAAO,EAAE,GAAG,KAAA,EAAO,MAAA,EAAQA,0BAAY,MAAA,EAAO;AAAA,EAChD;AAEA,EAAA,MAAM,WAAW,UAAA,CAAW,KAAA,CAAM,WAAA,EAAa,SAAA,EAAW,MAAM,KAAK,CAAA;AAErE,EAAA,OAAO;AAAA,IACL,GAAG,KAAA;AAAA,IACH,MAAA,EAAQ,QAAA,GAAWA,yBAAA,CAAY,QAAA,GAAWA,yBAAA,CAAY;AAAA,GACxD;AACF","file":"xrpl-7HQLIDAK.cjs","sourcesContent":["/**\n * Internal webcrypto alias.\n * We prefer WebCrypto aka globalThis.crypto, which exists in node.js 16+.\n * Falls back to Node.js built-in crypto for Node.js <=v14.\n * See utils.ts for details.\n * @module\n */\n// @ts-ignore\nimport * as nc from 'node:crypto';\nexport const crypto: any =\n nc && typeof nc === 'object' && 'webcrypto' in nc\n ? (nc.webcrypto as any)\n : nc && typeof nc === 'object' && 'randomBytes' in nc\n ? nc\n : undefined;\n","/**\n * Utilities for hex, bytes, CSPRNG.\n * @module\n */\n/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n\n// We use WebCrypto aka globalThis.crypto, which exists in browsers and node.js 16+.\n// node.js versions earlier than v19 don't declare it in global scope.\n// For node.js, package.json#exports field mapping rewrites import\n// from `crypto` to `cryptoNode`, which imports native module.\n// Makes the utils un-importable in browsers without a bundler.\n// Once node.js 18 is deprecated (2025-04-30), we can just drop the import.\nimport { crypto } from '@noble/hashes/crypto';\n\n/** Checks if something is Uint8Array. Be careful: nodejs Buffer will return true. */\nexport function isBytes(a: unknown): a is Uint8Array {\n return a instanceof Uint8Array || (ArrayBuffer.isView(a) && a.constructor.name === 'Uint8Array');\n}\n\n/** Asserts something is positive integer. */\nexport function anumber(n: number): void {\n if (!Number.isSafeInteger(n) || n < 0) throw new Error('positive integer expected, got ' + n);\n}\n\n/** Asserts something is Uint8Array. */\nexport function abytes(b: Uint8Array | undefined, ...lengths: number[]): void {\n if (!isBytes(b)) throw new Error('Uint8Array expected');\n if (lengths.length > 0 && !lengths.includes(b.length))\n throw new Error('Uint8Array expected of length ' + lengths + ', got length=' + b.length);\n}\n\n/** Asserts something is hash */\nexport function ahash(h: IHash): void {\n if (typeof h !== 'function' || typeof h.create !== 'function')\n throw new Error('Hash should be wrapped by utils.createHasher');\n anumber(h.outputLen);\n anumber(h.blockLen);\n}\n\n/** Asserts a hash instance has not been destroyed / finished */\nexport function aexists(instance: any, checkFinished = true): void {\n if (instance.destroyed) throw new Error('Hash instance has been destroyed');\n if (checkFinished && instance.finished) throw new Error('Hash#digest() has already been called');\n}\n\n/** Asserts output is properly-sized byte array */\nexport function aoutput(out: any, instance: any): void {\n abytes(out);\n const min = instance.outputLen;\n if (out.length < min) {\n throw new Error('digestInto() expects output buffer of length at least ' + min);\n }\n}\n\n/** Generic type encompassing 8/16/32-byte arrays - but not 64-byte. */\n// prettier-ignore\nexport type TypedArray = Int8Array | Uint8ClampedArray | Uint8Array |\n Uint16Array | Int16Array | Uint32Array | Int32Array;\n\n/** Cast u8 / u16 / u32 to u8. */\nexport function u8(arr: TypedArray): Uint8Array {\n return new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);\n}\n\n/** Cast u8 / u16 / u32 to u32. */\nexport function u32(arr: TypedArray): Uint32Array {\n return new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));\n}\n\n/** Zeroize a byte array. Warning: JS provides no guarantees. */\nexport function clean(...arrays: TypedArray[]): void {\n for (let i = 0; i < arrays.length; i++) {\n arrays[i].fill(0);\n }\n}\n\n/** Create DataView of an array for easy byte-level manipulation. */\nexport function createView(arr: TypedArray): DataView {\n return new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\n}\n\n/** The rotate right (circular right shift) operation for uint32 */\nexport function rotr(word: number, shift: number): number {\n return (word << (32 - shift)) | (word >>> shift);\n}\n\n/** The rotate left (circular left shift) operation for uint32 */\nexport function rotl(word: number, shift: number): number {\n return (word << shift) | ((word >>> (32 - shift)) >>> 0);\n}\n\n/** Is current platform little-endian? Most are. Big-Endian platform: IBM */\nexport const isLE: boolean = /* @__PURE__ */ (() =>\n new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44)();\n\n/** The byte swap operation for uint32 */\nexport function byteSwap(word: number): number {\n return (\n ((word << 24) & 0xff000000) |\n ((word << 8) & 0xff0000) |\n ((word >>> 8) & 0xff00) |\n ((word >>> 24) & 0xff)\n );\n}\n/** Conditionally byte swap if on a big-endian platform */\nexport const swap8IfBE: (n: number) => number = isLE\n ? (n: number) => n\n : (n: number) => byteSwap(n);\n\n/** @deprecated */\nexport const byteSwapIfBE: typeof swap8IfBE = swap8IfBE;\n/** In place byte swap for Uint32Array */\nexport function byteSwap32(arr: Uint32Array): Uint32Array {\n for (let i = 0; i < arr.length; i++) {\n arr[i] = byteSwap(arr[i]);\n }\n return arr;\n}\n\nexport const swap32IfBE: (u: Uint32Array) => Uint32Array = isLE\n ? (u: Uint32Array) => u\n : byteSwap32;\n\n// Built-in hex conversion https://caniuse.com/mdn-javascript_builtins_uint8array_fromhex\nconst hasHexBuiltin: boolean = /* @__PURE__ */ (() =>\n // @ts-ignore\n typeof Uint8Array.from([]).toHex === 'function' && typeof Uint8Array.fromHex === 'function')();\n\n// Array where index 0xf0 (240) is mapped to string 'f0'\nconst hexes = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) =>\n i.toString(16).padStart(2, '0')\n);\n\n/**\n * Convert byte array to hex string. Uses built-in function, when available.\n * @example bytesToHex(Uint8Array.from([0xca, 0xfe, 0x01, 0x23])) // 'cafe0123'\n */\nexport function bytesToHex(bytes: Uint8Array): string {\n abytes(bytes);\n // @ts-ignore\n if (hasHexBuiltin) return bytes.toHex();\n // pre-caching improves the speed 6x\n let hex = '';\n for (let i = 0; i < bytes.length; i++) {\n hex += hexes[bytes[i]];\n }\n return hex;\n}\n\n// We use optimized technique to convert hex string to byte array\nconst asciis = { _0: 48, _9: 57, A: 65, F: 70, a: 97, f: 102 } as const;\nfunction asciiToBase16(ch: number): number | undefined {\n if (ch >= asciis._0 && ch <= asciis._9) return ch - asciis._0; // '2' => 50-48\n if (ch >= asciis.A && ch <= asciis.F) return ch - (asciis.A - 10); // 'B' => 66-(65-10)\n if (ch >= asciis.a && ch <= asciis.f) return ch - (asciis.a - 10); // 'b' => 98-(97-10)\n return;\n}\n\n/**\n * Convert hex string to byte array. Uses built-in function, when available.\n * @example hexToBytes('cafe0123') // Uint8Array.from([0xca, 0xfe, 0x01, 0x23])\n */\nexport function hexToBytes(hex: string): Uint8Array {\n if (typeof hex !== 'string') throw new Error('hex string expected, got ' + typeof hex);\n // @ts-ignore\n if (hasHexBuiltin) return Uint8Array.fromHex(hex);\n const hl = hex.length;\n const al = hl / 2;\n if (hl % 2) throw new Error('hex string expected, got unpadded hex of length ' + hl);\n const array = new Uint8Array(al);\n for (let ai = 0, hi = 0; ai < al; ai++, hi += 2) {\n const n1 = asciiToBase16(hex.charCodeAt(hi));\n const n2 = asciiToBase16(hex.charCodeAt(hi + 1));\n if (n1 === undefined || n2 === undefined) {\n const char = hex[hi] + hex[hi + 1];\n throw new Error('hex string expected, got non-hex character \"' + char + '\" at index ' + hi);\n }\n array[ai] = n1 * 16 + n2; // multiply first octet, e.g. 'a3' => 10*16+3 => 160 + 3 => 163\n }\n return array;\n}\n\n/**\n * There is no setImmediate in browser and setTimeout is slow.\n * Call of async fn will return Promise, which will be fullfiled only on\n * next scheduler queue processing step and this is exactly what we need.\n */\nexport const nextTick = async (): Promise<void> => {};\n\n/** Returns control to thread each 'tick' ms to avoid blocking. */\nexport async function asyncLoop(\n iters: number,\n tick: number,\n cb: (i: number) => void\n): Promise<void> {\n let ts = Date.now();\n for (let i = 0; i < iters; i++) {\n cb(i);\n // Date.now() is not monotonic, so in case if clock goes backwards we return return control too\n const diff = Date.now() - ts;\n if (diff >= 0 && diff < tick) continue;\n await nextTick();\n ts += diff;\n }\n}\n\n// Global symbols, but ts doesn't see them: https://github.com/microsoft/TypeScript/issues/31535\ndeclare const TextEncoder: any;\ndeclare const TextDecoder: any;\n\n/**\n * Converts string to bytes using UTF8 encoding.\n * @example utf8ToBytes('abc') // Uint8Array.from([97, 98, 99])\n */\nexport function utf8ToBytes(str: string): Uint8Array {\n if (typeof str !== 'string') throw new Error('string expected');\n return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809\n}\n\n/**\n * Converts bytes to string using UTF8 encoding.\n * @example bytesToUtf8(Uint8Array.from([97, 98, 99])) // 'abc'\n */\nexport function bytesToUtf8(bytes: Uint8Array): string {\n return new TextDecoder().decode(bytes);\n}\n\n/** Accepted input of hash functions. Strings are converted to byte arrays. */\nexport type Input = string | Uint8Array;\n/**\n * Normalizes (non-hex) string or Uint8Array to Uint8Array.\n * Warning: when Uint8Array is passed, it would NOT get copied.\n * Keep in mind for future mutable operations.\n */\nexport function toBytes(data: Input): Uint8Array {\n if (typeof data === 'string') data = utf8ToBytes(data);\n abytes(data);\n return data;\n}\n\n/** KDFs can accept string or Uint8Array for user convenience. */\nexport type KDFInput = string | Uint8Array;\n/**\n * Helper for KDFs: consumes uint8array or string.\n * When string is passed, does utf8 decoding, using TextDecoder.\n */\nexport function kdfInputToBytes(data: KDFInput): Uint8Array {\n if (typeof data === 'string') data = utf8ToBytes(data);\n abytes(data);\n return data;\n}\n\n/** Copies several Uint8Arrays into one. */\nexport function concatBytes(...arrays: Uint8Array[]): Uint8Array {\n let sum = 0;\n for (let i = 0; i < arrays.length; i++) {\n const a = arrays[i];\n abytes(a);\n sum += a.length;\n }\n const res = new Uint8Array(sum);\n for (let i = 0, pad = 0; i < arrays.length; i++) {\n const a = arrays[i];\n res.set(a, pad);\n pad += a.length;\n }\n return res;\n}\n\ntype EmptyObj = {};\nexport function checkOpts<T1 extends EmptyObj, T2 extends EmptyObj>(\n defaults: T1,\n opts?: T2\n): T1 & T2 {\n if (opts !== undefined && {}.toString.call(opts) !== '[object Object]')\n throw new Error('options should be object or undefined');\n const merged = Object.assign(defaults, opts);\n return merged as T1 & T2;\n}\n\n/** Hash interface. */\nexport type IHash = {\n (data: Uint8Array): Uint8Array;\n blockLen: number;\n outputLen: number;\n create: any;\n};\n\n/** For runtime check if class implements interface */\nexport abstract class Hash<T extends Hash<T>> {\n abstract blockLen: number; // Bytes per block\n abstract outputLen: number; // Bytes in output\n abstract update(buf: Input): this;\n // Writes digest into buf\n abstract digestInto(buf: Uint8Array): void;\n abstract digest(): Uint8Array;\n /**\n * Resets internal state. Makes Hash instance unusable.\n * Reset is impossible for keyed hashes if key is consumed into state. If digest is not consumed\n * by user, they will need to manually call `destroy()` when zeroing is necessary.\n */\n abstract destroy(): void;\n /**\n * Clones hash instance. Unsafe: doesn't check whether `to` is valid. Can be used as `clone()`\n * when no options are passed.\n * Reasons to use `_cloneInto` instead of clone: 1) performance 2) reuse instance => all internal\n * buffers are overwritten => causes buffer overwrite which is used for digest in some cases.\n * There are no guarantees for clean-up because it's impossible in JS.\n */\n abstract _cloneInto(to?: T): T;\n // Safe version that clones internal state\n abstract clone(): T;\n}\n\n/**\n * XOF: streaming API to read digest in chunks.\n * Same as 'squeeze' in keccak/k12 and 'seek' in blake3, but more generic name.\n * When hash used in XOF mode it is up to user to call '.destroy' afterwards, since we cannot\n * destroy state, next call can require more bytes.\n */\nexport type HashXOF<T extends Hash<T>> = Hash<T> & {\n xof(bytes: number): Uint8Array; // Read 'bytes' bytes from digest stream\n xofInto(buf: Uint8Array): Uint8Array; // read buf.length bytes from digest stream into buf\n};\n\n/** Hash function */\nexport type CHash = ReturnType<typeof createHasher>;\n/** Hash function with output */\nexport type CHashO = ReturnType<typeof createOptHasher>;\n/** XOF with output */\nexport type CHashXO = ReturnType<typeof createXOFer>;\n\n/** Wraps hash function, creating an interface on top of it */\nexport function createHasher<T extends Hash<T>>(\n hashCons: () => Hash<T>\n): {\n (msg: Input): Uint8Array;\n outputLen: number;\n blockLen: number;\n create(): Hash<T>;\n} {\n const hashC = (msg: Input): Uint8Array => hashCons().update(toBytes(msg)).digest();\n const tmp = hashCons();\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = () => hashCons();\n return hashC;\n}\n\nexport function createOptHasher<H extends Hash<H>, T extends Object>(\n hashCons: (opts?: T) => Hash<H>\n): {\n (msg: Input, opts?: T): Uint8Array;\n outputLen: number;\n blockLen: number;\n create(opts?: T): Hash<H>;\n} {\n const hashC = (msg: Input, opts?: T): Uint8Array => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({} as T);\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts?: T) => hashCons(opts);\n return hashC;\n}\n\nexport function createXOFer<H extends HashXOF<H>, T extends Object>(\n hashCons: (opts?: T) => HashXOF<H>\n): {\n (msg: Input, opts?: T): Uint8Array;\n outputLen: number;\n blockLen: number;\n create(opts?: T): HashXOF<H>;\n} {\n const hashC = (msg: Input, opts?: T): Uint8Array => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({} as T);\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts?: T) => hashCons(opts);\n return hashC;\n}\nexport const wrapConstructor: typeof createHasher = createHasher;\nexport const wrapConstructorWithOpts: typeof createOptHasher = createOptHasher;\nexport const wrapXOFConstructorWithOpts: typeof createXOFer = createXOFer;\n\n/** Cryptographically secure PRNG. Uses internal OS-level `crypto.getRandomValues`. */\nexport function randomBytes(bytesLength = 32): Uint8Array {\n if (crypto && typeof crypto.getRandomValues === 'function') {\n return crypto.getRandomValues(new Uint8Array(bytesLength));\n }\n // Legacy Node.js compatibility\n if (crypto && typeof crypto.randomBytes === 'function') {\n return Uint8Array.from(crypto.randomBytes(bytesLength));\n }\n throw new Error('crypto.getRandomValues must be defined');\n}\n","import { concatBytes } from '@noble/hashes/utils'\n\nexport const HEX_REGEX = /^[A-F0-9]*$/iu\n\nexport function concat(views: Uint8Array[]): Uint8Array {\n return concatBytes(...views)\n}\n\nexport function equal(buf1: Uint8Array, buf2: Uint8Array): boolean {\n if (buf1.byteLength !== buf2.byteLength) {\n return false\n }\n const dv1 = new Int8Array(buf1)\n const dv2 = new Int8Array(buf2)\n for (let i = 0; i !== buf1.byteLength; i++) {\n if (dv1[i] !== dv2[i]) {\n return false\n }\n }\n return true\n}\n","import { randomBytes as cryptoRandomBytes } from 'crypto'\nimport type { BytesToHexFn, HexToBytesFn, RandomBytesFn } from './types'\nimport { HexToStringFn, StringToHexFn } from './types'\nimport { HEX_REGEX } from './shared'\n\nconst OriginalBuffer = Symbol('OriginalBuffer')\n\n/**\n * An extended Uint8Array that incorporates a reference to the original Node.js Buffer.\n *\n * When converting a Node.js Buffer to a Uint8Array, there's an optimization that shares\n * the memory of the original Buffer with the resulting Uint8Array instead of copying data.\n * The Uint8ArrayWithReference interface is used to attach a reference to the original Buffer, ensuring\n * its persistence in memory (preventing garbage collection) as long as the Uint8Array exists.\n * This strategy upholds the ownership semantics of the slice of the ArrayBuffer.\n */\ninterface Uint8ArrayWithReference extends Uint8Array {\n [OriginalBuffer]: Buffer\n}\n\n/**\n * Converts a Node.js Buffer to a Uint8Array for uniform behavior with browser implementations.\n *\n * Choices:\n * 1. Directly returning the Buffer:\n * - Operation: Return Buffer as is (a Buffer *IS* an instanceof Uint8Array).\n * - Pros: Most memory and performance efficient.\n * - Cons: Violates strict Uint8Array typing and may lead to issues where Buffer-specific features are [ab]used.\n *\n * 2. Using `new Uint8Array(buffer)` or `Uint8Array.from(buffer)`:\n * - Operation: Copies the buffer's data into a new Uint8Array.\n * - Pros: Ensures data isolation; memory-safe.\n * - Cons: Less performant due to data duplication.\n *\n * 3. Using buf.buffer slice:\n * - Operation: Shares memory between Buffer and Uint8Array.\n * - Pros: Performant.\n * - Cons: Risks with shared memory and potential for invalid references.\n *\n * 4. Using buf.buffer slice and keeping a Buffer reference for ownership semantics:\n * - Operation: Shares memory and associates the original Buffer with the resulting Uint8Array.\n * - Pros: Performant while ensuring the original Buffer isn't garbage collected.\n * - Cons: Risks with shared memory but mitigates potential for invalid references.\n *\n * The chosen method (4) prioritizes performance by sharing memory while ensuring buffer ownership.\n *\n * @param {Buffer} buffer - The Node.js Buffer to convert.\n * @returns {Uint8Array} Resulting Uint8Array sharing the same memory as the Buffer and maintaining a reference to it.\n */\nfunction toUint8Array(buffer: Buffer): Uint8Array {\n const u8Array = new Uint8Array(\n buffer.buffer.slice(\n buffer.byteOffset,\n buffer.byteOffset + buffer.byteLength,\n ),\n ) as Uint8ArrayWithReference\n u8Array[OriginalBuffer] = buffer\n return u8Array\n}\n\n/* eslint-disable func-style -- Typed to ensure uniformity between node and browser implementations and docs */\nexport const bytesToHex: typeof BytesToHexFn = (bytes) => {\n const buf = Buffer.from(bytes)\n return buf.toString('hex').toUpperCase()\n}\n\nexport const hexToBytes: typeof HexToBytesFn = (hex) => {\n if (!HEX_REGEX.test(hex)) {\n throw new Error('Invalid hex string')\n }\n return toUint8Array(Buffer.from(hex, 'hex'))\n}\n\nexport const randomBytes: typeof RandomBytesFn = (size) => {\n return toUint8Array(cryptoRandomBytes(size))\n}\n\nexport const hexToString: typeof HexToStringFn = (\n hex: string,\n encoding = 'utf8',\n): string => {\n if (!HEX_REGEX.test(hex)) {\n throw new Error('Invalid hex string')\n }\n return new TextDecoder(encoding).decode(hexToBytes(hex))\n}\n\nexport const stringToHex: typeof StringToHexFn = (string: string): string => {\n return bytesToHex(new TextEncoder().encode(string))\n}\n/* eslint-enable func-style */\n\nexport * from './shared'\n","import { Input } from './types'\n\n/**\n * Normalize a string, number array, or Uint8Array to a string or Uint8Array.\n * Both node and noble lib functions accept these types.\n *\n * @param input - value to normalize\n */\nexport default function normalizeInput(input: Input): string | Uint8Array {\n return Array.isArray(input) ? new Uint8Array(input) : input\n}\n","import { createHash } from 'crypto'\nimport { Hash, HashFn, Input } from './types'\nimport normalizeInput from './normalizeInput'\n\n/**\n * Wrap createHash from node to provide an interface that is isomorphic\n *\n * @param type - the hash name\n * @param fn - {createHash} the hash factory\n */\nexport default function wrapCryptoCreateHash(\n type: string,\n fn: typeof createHash,\n): HashFn {\n function hashFn(input: Input): Uint8Array {\n return fn(type).update(normalizeInput(input)).digest()\n }\n\n hashFn.create = (): Hash => {\n const hash = fn(type)\n return {\n update(input: Input): Hash {\n hash.update(normalizeInput(input))\n return this\n },\n digest(): Uint8Array {\n return hash.digest()\n },\n }\n }\n return hashFn\n}\n","import { createHash } from 'crypto'\nimport wrapCryptoCreateHash from '../internal/wrapCryptoCreateHash'\n\n/**\n * Wrap node's native sha256 implementation in HashFn\n */\nexport const sha256 = wrapCryptoCreateHash('sha256', createHash)\n","export type ByteArray = number[] | Uint8Array\n\n/**\n * Check whether two sequences (e.g. Arrays of numbers) are equal.\n *\n * @param arr1 - One of the arrays to compare.\n * @param arr2 - The other array to compare.\n */\nexport function arrayEqual(arr1: ByteArray, arr2: ByteArray): boolean {\n if (arr1.length !== arr2.length) {\n return false\n }\n return arr1.every((value, index) => value === arr2[index])\n}\n\n/**\n * Check whether a value is a scalar\n *\n * @param val - The value to check.\n */\nfunction isScalar(val: ByteArray | number): val is number {\n return typeof val === 'number'\n}\n\n/**\n * Concatenate all `arguments` into a single array. Each argument can be either\n * a single element or a sequence, which has a `length` property and supports\n * element retrieval via sequence[ix].\n *\n * > concatArgs(1, [2, 3], Uint8Array.from([4,5]), new Uint8Array([6, 7]));\n * [1,2,3,4,5,6,7]\n *\n * @param args - Concatenate of these args into a single array.\n * @returns Array of concatenated arguments\n */\n\nexport function concatArgs(...args: Array<number | ByteArray>): number[] {\n return args.flatMap((arg) => {\n return isScalar(arg) ? [arg] : Array.from(arg)\n })\n}\n","/**\n * Codec class\n */\n\nimport { base58xrp, BytesCoder } from '@scure/base'\nimport { sha256 } from '@xrplf/isomorphic/sha256'\n\nimport { arrayEqual, concatArgs, ByteArray } from './utils'\n\nclass Codec {\n private readonly _sha256: (bytes: ByteArray) => Uint8Array\n private readonly _codec: BytesCoder\n\n public constructor(options: { sha256: (bytes: ByteArray) => Uint8Array }) {\n this._sha256 = options.sha256\n this._codec = base58xrp\n }\n\n /**\n * Encoder.\n *\n * @param bytes - Uint8Array of data to encode.\n * @param opts - Options object including the version bytes and the expected length of the data to encode.\n */\n public encode(\n bytes: ByteArray,\n opts: {\n versions: number[]\n expectedLength: number\n },\n ): string {\n const versions = opts.versions\n return this._encodeVersioned(bytes, versions, opts.expectedLength)\n }\n\n /**\n * Decoder.\n *\n * @param base58string - Base58Check-encoded string to decode.\n * @param opts - Options object including the version byte(s) and the expected length of the data after decoding.\n */\n /* eslint-disable max-lines-per-function --\n * TODO refactor */\n public decode(\n base58string: string,\n opts: {\n versions: Array<number | number[]>\n expectedLength?: number\n versionTypes?: ['ed25519', 'secp256k1']\n },\n ): {\n version: number[]\n bytes: Uint8Array\n type: 'ed25519' | 'secp256k1' | null\n } {\n const versions = opts.versions\n const types = opts.versionTypes\n\n const withoutSum = this.decodeChecked(base58string)\n\n if (versions.length > 1 && !opts.expectedLength) {\n throw new Error(\n 'expectedLength is required because there are >= 2 possible versions',\n )\n }\n const versionLengthGuess =\n typeof versions[0] === 'number' ? 1 : versions[0].length\n const payloadLength =\n opts.expectedLength ?? withoutSum.length - versionLengthGuess\n const versionBytes = withoutSum.slice(0, -payloadLength)\n const payload = withoutSum.slice(-payloadLength)\n\n for (let i = 0; i < versions.length; i++) {\n /* eslint-disable @typescript-eslint/consistent-type-assertions --\n * TODO refactor */\n const version: number[] = Array.isArray(versions[i])\n ? (versions[i] as number[])\n : [versions[i] as number]\n if (arrayEqual(versionBytes, version)) {\n return {\n version,\n bytes: payload,\n type: types ? types[i] : null,\n }\n }\n /* eslint-enable @typescript-eslint/consistent-type-assertions */\n }\n\n throw new Error(\n 'version_invalid: version bytes do not match any of the provided version(s)',\n )\n }\n\n public encodeChecked(bytes: ByteArray): string {\n const check = this._sha256(this._sha256(bytes)).slice(0, 4)\n return this._encodeRaw(Uint8Array.from(concatArgs(bytes, check)))\n }\n\n public decodeChecked(base58string: string): Uint8Array {\n const intArray = this._decodeRaw(base58string)\n if (intArray.byteLength < 5) {\n throw new Error('invalid_input_size: decoded data must have length >= 5')\n }\n if (!this._verifyCheckSum(intArray)) {\n throw new Error('checksum_invalid')\n }\n return intArray.slice(0, -4)\n }\n\n private _encodeVersioned(\n bytes: ByteArray,\n versions: number[],\n expectedLength: number,\n ): string {\n if (!checkByteLength(bytes, expectedLength)) {\n throw new Error(\n 'unexpected_payload_length: bytes.length does not match expectedLength.' +\n ' Ensure that the bytes are a Uint8Array.',\n )\n }\n return this.encodeChecked(concatArgs(versions, bytes))\n }\n\n private _encodeRaw(bytes: ByteArray): string {\n return this._codec.encode(Uint8Array.from(bytes))\n }\n /* eslint-enable max-lines-per-function */\n\n private _decodeRaw(base58string: string): Uint8Array {\n return this._codec.decode(base58string)\n }\n\n private _verifyCheckSum(bytes: ByteArray): boolean {\n const computed = this._sha256(this._sha256(bytes.slice(0, -4))).slice(0, 4)\n const checksum = bytes.slice(-4)\n return arrayEqual(computed, checksum)\n }\n}\n\n/**\n * XRP codec\n */\n\n// base58 encodings: https://xrpl.org/base58-encodings.html\n// Account address (20 bytes)\nconst ACCOUNT_ID = 0\n// Account public key (33 bytes)\nconst ACCOUNT_PUBLIC_KEY = 0x23\n// 33; Seed value (for secret keys) (16 bytes)\nconst FAMILY_SEED = 0x21\n// 28; Validation public key (33 bytes)\nconst NODE_PUBLIC = 0x1c\n\n// [1, 225, 75]\nconst ED25519_SEED = [0x01, 0xe1, 0x4b]\n\nconst codecOptions = {\n sha256,\n}\n\nconst codecWithXrpAlphabet = new Codec(codecOptions)\n\nexport const codec = codecWithXrpAlphabet\n\n// entropy is a Uint8Array of size 16\n// type is 'ed25519' or 'secp256k1'\nexport function encodeSeed(\n entropy: ByteArray,\n type: 'ed25519' | 'secp256k1',\n): string {\n if (!checkByteLength(entropy, 16)) {\n throw new Error('entropy must have length 16')\n }\n const opts = {\n expectedLength: 16,\n\n // for secp256k1, use `FAMILY_SEED`\n versions: type === 'ed25519' ? ED25519_SEED : [FAMILY_SEED],\n }\n\n // prefixes entropy with version bytes\n return codecWithXrpAlphabet.encode(entropy, opts)\n}\n\nexport function decodeSeed(\n seed: string,\n opts: {\n versionTypes: ['ed25519', 'secp256k1']\n versions: Array<number | number[]>\n expectedLength: number\n } = {\n versionTypes: ['ed25519', 'secp256k1'],\n versions: [ED25519_SEED, FAMILY_SEED],\n expectedLength: 16,\n },\n): {\n version: number[]\n bytes: Uint8Array\n type: 'ed25519' | 'secp256k1' | null\n} {\n return codecWithXrpAlphabet.decode(seed, opts)\n}\n\nexport function encodeAccountID(bytes: ByteArray): string {\n const opts = { versions: [ACCOUNT_ID], expectedLength: 20 }\n return codecWithXrpAlphabet.encode(bytes, opts)\n}\n\n/* eslint-disable import/no-unused-modules ---\n * unclear why this is aliased but we should keep it in case someone else is\n * importing it with the aliased name */\nexport const encodeAddress = encodeAccountID\n/* eslint-enable import/no-unused-modules */\n\nexport function decodeAccountID(accountId: string): Uint8Array {\n const opts = { versions: [ACCOUNT_ID], expectedLength: 20 }\n return codecWithXrpAlphabet.decode(accountId, opts).bytes\n}\n\n/* eslint-disable import/no-unused-modules ---\n * unclear why this is aliased but we should keep it in case someone else is\n * importing it with the aliased name */\nexport const decodeAddress = decodeAccountID\n/* eslint-enable import/no-unused-modules */\n\nexport function decodeNodePublic(base58string: string): Uint8Array {\n const opts = { versions: [NODE_PUBLIC], expectedLength: 33 }\n return codecWithXrpAlphabet.decode(base58string, opts).bytes\n}\n\nexport function encodeNodePublic(bytes: ByteArray): string {\n const opts = { versions: [NODE_PUBLIC], expectedLength: 33 }\n return codecWithXrpAlphabet.encode(bytes, opts)\n}\n\nexport function encodeAccountPublic(bytes: ByteArray): string {\n const opts = { versions: [ACCOUNT_PUBLIC_KEY], expectedLength: 33 }\n return codecWithXrpAlphabet.encode(bytes, opts)\n}\n\nexport function decodeAccountPublic(base58string: string): Uint8Array {\n const opts = { versions: [ACCOUNT_PUBLIC_KEY], expectedLength: 33 }\n return codecWithXrpAlphabet.decode(base58string, opts).bytes\n}\n\nexport function isValidClassicAddress(address: string): boolean {\n try {\n decodeAccountID(address)\n } catch (_error) {\n return false\n }\n return true\n}\n\nfunction checkByteLength(bytes: ByteArray, expectedLength: number): boolean {\n return 'byteLength' in bytes\n ? bytes.byteLength === expectedLength\n : bytes.length === expectedLength\n}\n","import { concat, equal, hexToBytes } from '@xrplf/isomorphic/utils'\n\nimport {\n codec,\n encodeSeed,\n decodeSeed,\n encodeAccountID,\n decodeAccountID,\n encodeNodePublic,\n decodeNodePublic,\n encodeAccountPublic,\n decodeAccountPublic,\n isValidClassicAddress,\n} from './xrp-codec'\n\nconst PREFIX_BYTES = {\n // 5, 68\n main: Uint8Array.from([0x05, 0x44]),\n // 4, 147\n test: Uint8Array.from([0x04, 0x93]),\n}\n\nconst MAX_32_BIT_UNSIGNED_INT = 4294967295\n\nfunction classicAddressToXAddress(\n classicAddress: string,\n tag: number | false,\n test: boolean,\n): string {\n const accountId = decodeAccountID(classicAddress)\n return encodeXAddress(accountId, tag, test)\n}\n\nfunction encodeXAddress(\n accountId: Uint8Array,\n tag: number | false,\n test: boolean,\n): string {\n if (accountId.length !== 20) {\n // RIPEMD160 is 160 bits = 20 bytes\n throw new Error('Account ID must be 20 bytes')\n }\n if (tag !== false && tag > MAX_32_BIT_UNSIGNED_INT) {\n throw new Error('Invalid tag')\n }\n const theTag = tag || 0\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Passing null is a common js mistake\n const flag = tag === false || tag == null ? 0 : 1\n /* eslint-disable no-bitwise ---\n * need to use bitwise operations here */\n const bytes = concat([\n test ? PREFIX_BYTES.test : PREFIX_BYTES.main,\n accountId,\n Uint8Array.from([\n // 0x00 if no tag, 0x01 if 32-bit tag\n flag,\n // first byte\n theTag & 0xff,\n // second byte\n (theTag >> 8) & 0xff,\n // third byte\n (theTag >> 16) & 0xff,\n // fourth byte\n (theTag >> 24) & 0xff,\n 0,\n 0,\n 0,\n // four zero bytes (reserved for 64-bit tags)\n 0,\n ]),\n ])\n /* eslint-enable no-bitwise */\n return codec.encodeChecked(bytes)\n}\n\nfunction xAddressToClassicAddress(xAddress: string): {\n classicAddress: string\n tag: number | false\n test: boolean\n} {\n /* eslint-disable @typescript-eslint/naming-convention --\n * TODO 'test' should be something like 'isTest', do this later\n */\n const { accountId, tag, test } = decodeXAddress(xAddress)\n /* eslint-enable @typescript-eslint/naming-convention */\n const classicAddress = encodeAccountID(accountId)\n return {\n classicAddress,\n tag,\n test,\n }\n}\n\nfunction decodeXAddress(xAddress: string): {\n accountId: Uint8Array\n tag: number | false\n test: boolean\n} {\n const decoded = codec.decodeChecked(xAddress)\n /* eslint-disable @typescript-eslint/naming-convention --\n * TODO 'test' should be something like 'isTest', do this later\n */\n const test = isUint8ArrayForTestAddress(decoded)\n /* eslint-enable @typescript-eslint/naming-convention */\n const accountId = decoded.slice(2, 22)\n const tag = tagFromUint8Array(decoded)\n return {\n accountId,\n tag,\n test,\n }\n}\n\nfunction isUint8ArrayForTestAddress(buf: Uint8Array): boolean {\n const decodedPrefix = buf.slice(0, 2)\n if (equal(PREFIX_BYTES.main, decodedPrefix)) {\n return false\n }\n if (equal(PREFIX_BYTES.test, decodedPrefix)) {\n return true\n }\n\n throw new Error('Invalid X-address: bad prefix')\n}\n\nfunction tagFromUint8Array(buf: Uint8Array): number | false {\n const flag = buf[22]\n if (flag >= 2) {\n // No support for 64-bit tags at this time\n throw new Error('Unsupported X-address')\n }\n if (flag === 1) {\n // Little-endian to big-endian\n return buf[23] + buf[24] * 0x100 + buf[25] * 0x10000 + buf[26] * 0x1000000\n }\n if (flag !== 0) {\n throw new Error('flag must be zero to indicate no tag')\n }\n if (!equal(hexToBytes('0000000000000000'), buf.slice(23, 23 + 8))) {\n throw new Error('remaining bytes must be zero')\n }\n return false\n}\n\nfunction isValidXAddress(xAddress: string): boolean {\n try {\n decodeXAddress(xAddress)\n } catch (_error) {\n return false\n }\n return true\n}\n\nexport {\n // Codec with XRP alphabet\n codec,\n // Encode entropy as a \"seed\"\n encodeSeed,\n // Decode a seed into an object with its version, type, and bytes\n decodeSeed,\n // Encode bytes as a classic address (r...)\n encodeAccountID,\n // Decode a classic address to its raw bytes\n decodeAccountID,\n // Encode bytes to XRP Ledger node public key format\n encodeNodePublic,\n // Decode an XRP Ledger node public key into its raw bytes\n decodeNodePublic,\n // Encode a public key, as for payment channels\n encodeAccountPublic,\n // Decode a public key, as for payment channels\n decodeAccountPublic,\n // Check whether a classic address (r...) is valid\n isValidClassicAddress,\n // Derive X-address from classic address, tag, and network ID\n classicAddressToXAddress,\n // Encode account ID, tag, and network ID to X-address\n encodeXAddress,\n // Decode X-address to account ID, tag, and network ID\n xAddressToClassicAddress,\n // Convert X-address to classic address, tag, and network ID\n decodeXAddress,\n // Check whether an X-address (X...) is valid\n isValidXAddress,\n}\n","import { createHash } from 'crypto'\nimport wrapCryptoCreateHash from '../internal/wrapCryptoCreateHash'\n\n/**\n * Wrap node's native ripemd160 implementation in HashFn\n */\nexport const ripemd160 = wrapCryptoCreateHash('ripemd160', createHash)\n","import { createHash } from 'crypto'\nimport wrapCryptoCreateHash from '../internal/wrapCryptoCreateHash'\n\n/**\n * Wrap node's native sha512 implementation in HashFn\n */\nexport const sha512 = wrapCryptoCreateHash('sha512', createHash)\n","import { sha512 } from '@xrplf/isomorphic/sha512'\nimport { bytesToNumberBE } from '@noble/curves/abstract/utils'\n\ntype Input = Uint8Array | number[] | string\n\nexport default class Sha512 {\n // instantiate empty sha512 hash\n hash = sha512.create()\n\n static half(input: Input): Uint8Array {\n return new Sha512().add(input).first256()\n }\n\n add(bytes: Input): this {\n this.hash.update(bytes)\n return this\n }\n\n addU32(i: number): this {\n const buffer = new Uint8Array(4)\n new DataView(buffer.buffer).setUint32(0, i)\n return this.add(buffer)\n }\n\n finish(): Uint8Array {\n return this.hash.digest()\n }\n\n first256(): Uint8Array {\n return this.finish().slice(0, 32)\n }\n\n first256BigInt(): bigint {\n return bytesToNumberBE(this.first256())\n }\n}\n","import { secp256k1 } from '@noble/curves/secp256k1'\n\nimport Sha512 from '../../utils/Sha512'\n\nconst ZERO = BigInt(0)\n\nfunction deriveScalar(bytes: Uint8Array, discrim?: number): bigint {\n const order = secp256k1.CURVE.n\n for (let i = 0; i <= 0xffff_ffff; i++) {\n // We hash the bytes to find a 256-bit number, looping until we are sure it\n // is less than the order of the curve.\n const hasher = new Sha512().add(bytes)\n // If the optional discriminator index was passed in, update the hash.\n if (discrim !== undefined) {\n hasher.addU32(discrim)\n }\n hasher.addU32(i)\n const key = hasher.first256BigInt()\n /* istanbul ignore else */\n if (key > ZERO && key < order) {\n return key\n }\n }\n // This error is practically impossible to reach.\n // The order of the curve describes the (finite) amount of points on the curve\n // https://github.com/indutny/elliptic/blob/master/lib/elliptic/curves.js#L182\n // How often will an (essentially) random number generated by Sha512 be larger than that?\n // There's 2^32 chances (the for loop) to get a number smaller than the order,\n // and it's rare that you'll even get past the first loop iteration.\n // Note that in TypeScript we actually need the throw, otherwise the function signature would be bigint | undefined\n //\n /* istanbul ignore next */\n throw new Error('impossible unicorn ;)')\n}\n\n/**\n * @param seed - Bytes.\n * @param [opts] - Object.\n * @param [opts.accountIndex=0] - The account number to generate.\n * @param [opts.validator=false] - Generate root key-pair,\n * as used by validators.\n * @returns {bigint} 256 bit scalar value.\n *\n */\nexport function derivePrivateKey(\n seed: Uint8Array,\n opts: {\n validator?: boolean\n accountIndex?: number\n } = {},\n): bigint {\n const root = opts.validator\n const order = secp256k1.CURVE.n\n\n // This private generator represents the `root` private key, and is what's\n // used by validators for signing when a keypair is generated from a seed.\n const privateGen = deriveScalar(seed)\n if (root) {\n // As returned by validation_create for a given seed\n return privateGen\n }\n const publicGen =\n secp256k1.ProjectivePoint.BASE.multiply(privateGen).toRawBytes(true)\n // A seed can generate many keypairs as a function of the seed and a uint32.\n // Almost everyone just uses the first account, `0`.\n const accountIndex = opts.accountIndex || 0\n return (deriveScalar(publicGen, accountIndex) + privateGen) % order\n}\n\nexport function accountPublicFromPublicGenerator(publicGenBytes: Uint8Array) {\n const rootPubPoint = secp256k1.ProjectivePoint.fromHex(publicGenBytes)\n const scalar = deriveScalar(publicGenBytes, 0)\n const point = secp256k1.ProjectivePoint.BASE.multiply(scalar)\n const offset = rootPubPoint.add(point)\n return offset.toRawBytes(true)\n}\n","const assertHelper: {\n ok: (cond: boolean, message?: string) => asserts cond is true\n} = {\n ok(cond, message): asserts cond is true {\n if (!cond) {\n throw new Error(message)\n }\n },\n}\n\nexport default assertHelper\n","import type { Algorithm, HexString, KeyType } from '../types'\n\nenum Prefix {\n NONE = -1,\n ED25519 = 0xed,\n SECP256K1_PUB_X = 0x02,\n SECP256K1_PUB_X_ODD_Y = 0x03,\n SECP256K1_PUB_XY = 0x04,\n SECP256K1_PRIVATE = 0x00,\n}\n\ntype CompositeKey = `${KeyType}_${Prefix}_${number}`\n\n/**\n * | Curve | Type | Prefix | Length | Description | Algorithm |\n * |-----------|-------------|:------:|:------:|-------------------------------------------------------|----------------:|\n * | ed25519 | Private | 0xED | 33 | prefix + Uint256LE (0 < n < order ) | ed25519 |\n * | ed25519 | Public | 0xED | 33 | prefix + 32 y-bytes | ed25519 |\n * | secp256k1 | Public (1) | 0x02 | 33 | prefix + 32 x-bytes | ecdsa-secp256k1 |\n * | secp256k1 | Public (2) | 0x03 | 33 | prefix + 32 x-bytes (y is odd) | ecdsa-secp256k1 |\n * | secp256k1 | Public (3) | 0x04 | 65 | prefix + 32 x-bytes + 32 y-bytes | ecdsa-secp256k1 |\n * | secp256k1 | Private (1) | None | 32 | Uint256BE (0 < n < order) | ecdsa-secp256k1 |\n * | secp256k1 | Private (2) | 0x00 | 33 | prefix + Uint256BE (0 < n < order) | ecdsa-secp256k1 |\n *\n * Note: The 0x00 prefix for secpk256k1 Private (2) essentially 0 pads the number\n * and the interpreted number is the same as 32 bytes.\n */\nconst KEY_TYPES: Record<CompositeKey, Algorithm> = {\n [`private_${Prefix.NONE}_32`]: 'ecdsa-secp256k1',\n [`private_${Prefix.SECP256K1_PRIVATE}_33`]: 'ecdsa-secp256k1',\n [`private_${Prefix.ED25519}_33`]: 'ed25519',\n [`public_${Prefix.ED25519}_33`]: 'ed25519',\n [`public_${Prefix.SECP256K1_PUB_X}_33`]: 'ecdsa-secp256k1',\n [`public_${Prefix.SECP256K1_PUB_X_ODD_Y}_33`]: 'ecdsa-secp256k1',\n [`public_${Prefix.SECP256K1_PUB_XY}_65`]: 'ecdsa-secp256k1',\n}\n\nfunction getKeyInfo(key: HexString) {\n return {\n prefix: key.length < 2 ? Prefix.NONE : parseInt(key.slice(0, 2), 16),\n len: key.length / 2,\n }\n}\n\nfunction prefixRepr(prefix: Prefix): string {\n return prefix === Prefix.NONE\n ? 'None'\n : `0x${prefix.toString(16).padStart(2, '0')}`\n}\n\nfunction getValidFormatsTable(type: KeyType) {\n // No need overkill with renderTable method\n const padding = 2\n const colWidth = {\n algorithm: 'ecdsa-secp256k1'.length + padding,\n prefix: '0x00'.length + padding,\n }\n\n return Object.entries(KEY_TYPES)\n .filter(([key]) => key.startsWith(type))\n .map(([key, algorithm]) => {\n const [, prefix, length] = key.split('_')\n const paddedAlgo = algorithm.padEnd(colWidth.algorithm)\n const paddedPrefix = prefixRepr(Number(prefix)).padEnd(colWidth.prefix)\n return `${paddedAlgo} - Prefix: ${paddedPrefix} Length: ${length} bytes`\n })\n .join('\\n')\n}\n\nfunction keyError({\n key,\n type,\n prefix,\n len,\n}: {\n key: string\n type: KeyType\n prefix: number\n len: number\n}) {\n const validFormats = getValidFormatsTable(type)\n\n return `invalid_key:\n\nType: ${type}\nKey: ${key}\nPrefix: ${prefixRepr(prefix)} \nLength: ${len} bytes\n\nAcceptable ${type} formats are:\n${validFormats}\n`\n}\n\n/**\n * Determines the algorithm associated with a given key (public/private).\n *\n * @param key - hexadecimal string representation of the key.\n * @param type - whether expected key is public or private\n * @returns Algorithm algorithm for signing/verifying\n * @throws Error when key is invalid\n */\nexport function getAlgorithmFromKey(key: HexString, type: KeyType): Algorithm {\n const { prefix, len } = getKeyInfo(key)\n // Special case back compat support for no prefix\n const usedPrefix = type === 'private' && len === 32 ? Prefix.NONE : prefix\n const algorithm = KEY_TYPES[`${type}_${usedPrefix}_${len}`]\n\n if (!algorithm) {\n throw new Error(keyError({ key, type, len, prefix: usedPrefix }))\n }\n return algorithm\n}\n\nexport function getAlgorithmFromPublicKey(key: HexString): Algorithm {\n return getAlgorithmFromKey(key, 'public')\n}\n\nexport function getAlgorithmFromPrivateKey(key: HexString): Algorithm {\n return getAlgorithmFromKey(key, 'private')\n}\n","import { numberToBytesBE } from '@noble/curves/abstract/utils'\nimport { secp256k1 as nobleSecp256k1 } from '@noble/curves/secp256k1'\nimport { bytesToHex } from '@xrplf/isomorphic/utils'\n\nimport type {\n DeriveKeyPairOptions,\n HexString,\n SigningScheme,\n} from '../../types'\n\nimport { derivePrivateKey } from './utils'\nimport assert from '../../utils/assert'\nimport Sha512 from '../../utils/Sha512'\n\nconst SECP256K1_PREFIX = '00'\n\nconst secp256k1: SigningScheme = {\n deriveKeypair(\n entropy: Uint8Array,\n options?: DeriveKeyPairOptions,\n ): {\n privateKey: string\n publicKey: string\n } {\n const derived = derivePrivateKey(entropy, options)\n const privateKey =\n SECP256K1_PREFIX + bytesToHex(numberToBytesBE(derived, 32))\n\n const publicKey = bytesToHex(nobleSecp256k1.getPublicKey(derived, true))\n return { privateKey, publicKey }\n },\n\n sign(message: Uint8Array, privateKey: HexString): string {\n // Some callers pass the privateKey with the prefix, others without.\n // @noble/curves will throw if the key is not exactly 32 bytes, so we\n // normalize it before passing to the sign method.\n assert.ok(\n (privateKey.length === 66 && privateKey.startsWith(SECP256K1_PREFIX)) ||\n privateKey.length === 64,\n )\n const normedPrivateKey =\n privateKey.length === 66 ? privateKey.slice(2) : privateKey\n return nobleSecp256k1\n .sign(Sha512.half(message), normedPrivateKey, {\n // \"Canonical\" signatures\n lowS: true,\n // Would fail tests if signatures aren't deterministic\n extraEntropy: undefined,\n })\n .toDERHex(true)\n .toUpperCase()\n },\n\n verify(\n message: Uint8Array,\n signature: HexString,\n publicKey: HexString,\n ): boolean {\n const decoded = nobleSecp256k1.Signature.fromDER(signature)\n return nobleSecp256k1.verify(decoded, Sha512.half(message), publicKey)\n },\n}\n\nexport default secp256k1\n","import { ed25519 as nobleEd25519 } from '@noble/curves/ed25519'\nimport { bytesToHex } from '@xrplf/isomorphic/utils'\n\nimport type { HexString, SigningScheme } from '../../types'\nimport assert from '../../utils/assert'\nimport Sha512 from '../../utils/Sha512'\n\nconst ED_PREFIX = 'ED'\n\nconst ed25519: SigningScheme = {\n deriveKeypair(entropy: Uint8Array): {\n privateKey: string\n publicKey: string\n } {\n const rawPrivateKey = Sha512.half(entropy)\n const privateKey = ED_PREFIX + bytesToHex(rawPrivateKey)\n const publicKey =\n ED_PREFIX + bytesToHex(nobleEd25519.getPublicKey(rawPrivateKey))\n return { privateKey, publicKey }\n },\n\n sign(message: Uint8Array, privateKey: HexString): string {\n assert.ok(message instanceof Uint8Array, 'message must be array of octets')\n assert.ok(\n privateKey.length === 66,\n 'private key must be 33 bytes including prefix',\n )\n return bytesToHex(nobleEd25519.sign(message, privateKey.slice(2)))\n },\n\n verify(\n message: Uint8Array,\n signature: HexString,\n publicKey: string,\n ): boolean {\n // Unlikely to be triggered as these are internal and guarded by getAlgorithmFromKey\n assert.ok(\n publicKey.length === 66,\n 'public key must be 33 bytes including prefix',\n )\n return nobleEd25519.verify(\n signature,\n message,\n // Remove the 0xED prefix\n publicKey.slice(2),\n // By default, set zip215 to false for compatibility reasons.\n // ZIP 215 is a stricter Ed25519 signature verification scheme.\n // However, setting it to false adheres to the more commonly used\n // RFC8032 / NIST186-5 standards, making it compatible with systems\n // like the XRP Ledger.\n { zip215: false },\n )\n },\n}\n\nexport default ed25519\n","import {\n decodeNodePublic,\n decodeSeed,\n encodeAccountID,\n encodeSeed,\n} from 'ripple-address-codec'\nimport { ripemd160 } from '@xrplf/isomorphic/ripemd160'\nimport { sha256 } from '@xrplf/isomorphic/sha256'\nimport { hexToBytes, randomBytes } from '@xrplf/isomorphic/utils'\n\nimport { accountPublicFromPublicGenerator } from './signing-schemes/secp256k1/utils'\nimport Sha512 from './utils/Sha512'\nimport assert from './utils/assert'\nimport type { Algorithm, HexString, KeyPair, SigningScheme } from './types'\nimport {\n getAlgorithmFromPrivateKey,\n getAlgorithmFromPublicKey,\n} from './utils/getAlgorithmFromKey'\n\nimport secp256k1 from './signing-schemes/secp256k1'\nimport ed25519 from './signing-schemes/ed25519'\n\nfunction getSigningScheme(algorithm: Algorithm): SigningScheme {\n const schemes = { 'ecdsa-secp256k1': secp256k1, ed25519 }\n return schemes[algorithm]\n}\n\nfunction generateSeed(\n options: {\n entropy?: Uint8Array\n algorithm?: Algorithm\n } = {},\n): string {\n assert.ok(\n !options.entropy || options.entropy.length >= 16,\n 'entropy too short',\n )\n const entropy = options.entropy\n ? options.entropy.slice(0, 16)\n : randomBytes(16)\n const type = options.algorithm === 'ed25519' ? 'ed25519' : 'secp256k1'\n return encodeSeed(entropy, type)\n}\n\nfunction deriveKeypair(\n seed: string,\n options?: {\n algorithm?: Algorithm\n validator?: boolean\n accountIndex?: number\n },\n): KeyPair {\n const decoded = decodeSeed(seed)\n const proposedAlgorithm = options?.algorithm ?? decoded.type\n const algorithm =\n proposedAlgorithm === 'ed25519' ? 'ed25519' : 'ecdsa-secp256k1'\n const scheme = getSigningScheme(algorithm)\n const keypair = scheme.deriveKeypair(decoded.bytes, options)\n const messageToVerify = Sha512.half('This test message should verify.')\n const signature = scheme.sign(messageToVerify, keypair.privateKey)\n /* istanbul ignore if */\n if (!scheme.verify(messageToVerify, signature, keypair.publicKey)) {\n throw new Error('derived keypair did not generate verifiable signature')\n }\n return keypair\n}\n\nfunction sign(messageHex: HexString, privateKey: HexString): HexString {\n const algorithm = getAlgorithmFromPrivateKey(privateKey)\n return getSigningScheme(algorithm).sign(hexToBytes(messageHex), privateKey)\n}\n\nfunction verify(\n messageHex: HexString,\n signature: HexString,\n publicKey: HexString,\n): boolean {\n const algorithm = getAlgorithmFromPublicKey(publicKey)\n return getSigningScheme(algorithm).verify(\n hexToBytes(messageHex),\n signature,\n publicKey,\n )\n}\n\nfunction computePublicKeyHash(publicKeyBytes: Uint8Array): Uint8Array {\n return ripemd160(sha256(publicKeyBytes))\n}\n\nfunction deriveAddressFromBytes(publicKeyBytes: Uint8Array): string {\n return encodeAccountID(computePublicKeyHash(publicKeyBytes))\n}\n\nfunction deriveAddress(publicKey: string): string {\n return deriveAddressFromBytes(hexToBytes(publicKey))\n}\n\nfunction deriveNodeAddress(publicKey: string): string {\n const generatorBytes = decodeNodePublic(publicKey)\n const accountPublicBytes = accountPublicFromPublicGenerator(generatorBytes)\n return deriveAddressFromBytes(accountPublicBytes)\n}\n\nexport {\n generateSeed,\n deriveKeypair,\n sign,\n verify,\n deriveAddress,\n deriveNodeAddress,\n decodeSeed,\n}\n","import { ProofStatus, SignatureProof } from \"@notabene/javascript-sdk\";\nimport { AccountTxTransaction, Client } from \"xrpl\";\nimport { verify } from \"ripple-keypairs\";\n\nexport function verifyXRPL(\n message: string,\n publicKey: string,\n proof: string\n): boolean {\n return verify(Buffer.from(message).toString(\"hex\"), proof, publicKey);\n}\n\nexport const xrplTestnetWs = [\n \"wss://s.altnet.rippletest.net:51233\",\n \"wss://testnet.xrpl-labs.com/\",\n];\n\nexport const xrplMainnetWs = [\n \"wss://s1.ripple.com\",\n \"wss://xrplcluster.com/\", // full node\n \"wss://s2.ripple.com/\",\n];\n\n// If the public key is not provided, we need to get it directly\nasync function getPublicKey(\n address: string,\n isTest?: boolean\n): Promise<string | undefined> {\n const servers = isTest ? xrplTestnetWs : xrplMainnetWs;\n\n for (const server of servers) {\n try {\n const client = new Client(server);\n await client.connect();\n\n const response = await client.request({\n command: \"account_tx\",\n account: address,\n binary: false,\n limit: 2,\n forward: false,\n });\n\n await client.disconnect();\n return getSigningPubkeyFromLatestTx(response.result?.transactions);\n } catch (error) {\n let errorMessage = \"Connection to XRPL server failed\";\n if (error instanceof Error) {\n errorMessage += `: ${error.message}`;\n }\n console.error(errorMessage);\n // Continue to next server\n }\n }\n}\n\nfunction getSigningPubkeyFromLatestTx(\n latestTx: AccountTxTransaction[]\n): string {\n for (let i = 0; i < latestTx.length; i++) {\n // Check if the Account in the .tx is the address derived from the pubkey\n const signingPubKey = latestTx[i]?.tx_json?.SigningPubKey ?? \"0x\";\n // TODO: https://github.com/Cypher-Laboratory/xrpl-publickey-getter/blob/main/src/pubKeyGetter.ts#L98\n // Check the public key matches the address properly\n return signingPubKey;\n }\n throw new Error(\"No valid pubkey found in the latest transactions\");\n}\n\nexport async function verifyPersonalSignXRPL(\n proof: SignatureProof,\n publicKey?: string,\n isTest?: boolean\n): Promise<SignatureProof> {\n const [ns, , address] = proof.address.split(/:/);\n if (ns !== \"xrpl\") return { ...proof, status: ProofStatus.FAILED };\n\n if (!publicKey) {\n publicKey = await getPublicKey(address, isTest);\n }\n\n if (!publicKey) {\n return { ...proof, status: ProofStatus.FAILED };\n }\n\n const verified = verifyXRPL(proof.attestation, publicKey, proof.proof);\n\n return {\n ...proof,\n status: verified ? ProofStatus.VERIFIED : ProofStatus.FAILED,\n };\n}\n"]}