@bitgo-beta/sdk-coin-canton 1.0.1-beta.24 → 1.0.1-beta.241

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 (89) hide show
  1. package/dist/resources/hash/hash.js +3 -2
  2. package/dist/resources/proto/damlTransaction.js +4 -4
  3. package/dist/resources/proto/damlTransactionNode.js +3 -3
  4. package/dist/resources/proto/damlTransactionNodeSeed.js +2 -2
  5. package/dist/resources/proto/metadata/metadataGlobalKeyMappingEntry.js +4 -4
  6. package/dist/resources/proto/metadata/metadataInputContract.js +3 -3
  7. package/dist/resources/proto/metadata/metadataSubmitterInfo.js +2 -2
  8. package/dist/resources/proto/metadata.js +5 -5
  9. package/dist/resources/proto/node/empty.js +2 -2
  10. package/dist/resources/proto/node/globalKey.js +4 -4
  11. package/dist/resources/proto/node/identifier.js +2 -2
  12. package/dist/resources/proto/node/node.js +16 -8
  13. package/dist/resources/proto/node/timestamp.js +3 -3
  14. package/dist/resources/proto/node/value.js +28 -14
  15. package/dist/resources/proto/preparedTransaction.js +4 -4
  16. package/dist/src/canton.d.ts +18 -2
  17. package/dist/src/canton.d.ts.map +1 -1
  18. package/dist/src/canton.js +107 -6
  19. package/dist/src/index.d.ts +1 -0
  20. package/dist/src/index.d.ts.map +1 -1
  21. package/dist/src/index.js +2 -1
  22. package/dist/src/lib/constant.d.ts +4 -0
  23. package/dist/src/lib/constant.d.ts.map +1 -1
  24. package/dist/src/lib/constant.js +6 -2
  25. package/dist/src/lib/iface.d.ts +77 -20
  26. package/dist/src/lib/iface.d.ts.map +1 -1
  27. package/dist/src/lib/iface.js +1 -1
  28. package/dist/src/lib/index.d.ts +7 -0
  29. package/dist/src/lib/index.d.ts.map +1 -1
  30. package/dist/src/lib/index.js +16 -2
  31. package/dist/src/lib/oneStepPreApprovalBuilder.d.ts +7 -41
  32. package/dist/src/lib/oneStepPreApprovalBuilder.d.ts.map +1 -1
  33. package/dist/src/lib/oneStepPreApprovalBuilder.js +18 -82
  34. package/dist/src/lib/transaction/transaction.d.ts +13 -2
  35. package/dist/src/lib/transaction/transaction.d.ts.map +1 -1
  36. package/dist/src/lib/transaction/transaction.js +178 -9
  37. package/dist/src/lib/transactionBuilder.d.ts +4 -4
  38. package/dist/src/lib/transactionBuilder.d.ts.map +1 -1
  39. package/dist/src/lib/transactionBuilder.js +1 -5
  40. package/dist/src/lib/transactionBuilderFactory.d.ts +17 -3
  41. package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
  42. package/dist/src/lib/transactionBuilderFactory.js +63 -6
  43. package/dist/src/lib/transferAcceptanceBuilder.d.ts +59 -0
  44. package/dist/src/lib/transferAcceptanceBuilder.d.ts.map +1 -0
  45. package/dist/src/lib/transferAcceptanceBuilder.js +116 -0
  46. package/dist/src/lib/transferAcknowledgeBuilder.d.ts +72 -0
  47. package/dist/src/lib/transferAcknowledgeBuilder.d.ts.map +1 -0
  48. package/dist/src/lib/transferAcknowledgeBuilder.js +133 -0
  49. package/dist/src/lib/transferBuilder.d.ts +79 -3
  50. package/dist/src/lib/transferBuilder.d.ts.map +1 -1
  51. package/dist/src/lib/transferBuilder.js +153 -1
  52. package/dist/src/lib/transferRejectionBuilder.d.ts +59 -0
  53. package/dist/src/lib/transferRejectionBuilder.d.ts.map +1 -0
  54. package/dist/src/lib/transferRejectionBuilder.js +116 -0
  55. package/dist/src/lib/utils.d.ts +22 -2
  56. package/dist/src/lib/utils.d.ts.map +1 -1
  57. package/dist/src/lib/utils.js +148 -28
  58. package/dist/src/lib/walletInitBuilder.d.ts +5 -10
  59. package/dist/src/lib/walletInitBuilder.d.ts.map +1 -1
  60. package/dist/src/lib/walletInitBuilder.js +13 -18
  61. package/dist/src/lib/walletInitialization/walletInitTransaction.d.ts +2 -1
  62. package/dist/src/lib/walletInitialization/walletInitTransaction.d.ts.map +1 -1
  63. package/dist/src/lib/walletInitialization/walletInitTransaction.js +46 -5
  64. package/dist/test/helper.d.ts +3 -0
  65. package/dist/test/helper.d.ts.map +1 -0
  66. package/dist/test/helper.js +9 -0
  67. package/dist/test/integration/canton.integration.d.ts +2 -0
  68. package/dist/test/integration/canton.integration.d.ts.map +1 -0
  69. package/dist/test/integration/canton.integration.js +157 -0
  70. package/dist/test/resources.d.ts +78 -7
  71. package/dist/test/resources.d.ts.map +1 -1
  72. package/dist/test/resources.js +83 -10
  73. package/dist/test/unit/builder/oneStepEnablement/oneStepEnablementBuilder.js +14 -29
  74. package/dist/test/unit/builder/transfer/transferBuilder.d.ts +2 -0
  75. package/dist/test/unit/builder/transfer/transferBuilder.d.ts.map +1 -0
  76. package/dist/test/unit/builder/transfer/transferBuilder.js +63 -0
  77. package/dist/test/unit/builder/transferAccept/transferAcceptBuilder.d.ts +2 -0
  78. package/dist/test/unit/builder/transferAccept/transferAcceptBuilder.d.ts.map +1 -0
  79. package/dist/test/unit/builder/transferAccept/transferAcceptBuilder.js +57 -0
  80. package/dist/test/unit/builder/transferAcknowledge/transferAcknowledgeBuilder.d.ts +2 -0
  81. package/dist/test/unit/builder/transferAcknowledge/transferAcknowledgeBuilder.d.ts.map +1 -0
  82. package/dist/test/unit/builder/transferAcknowledge/transferAcknowledgeBuilder.js +32 -0
  83. package/dist/test/unit/builder/transferReject/transferRejectBuilder.d.ts +2 -0
  84. package/dist/test/unit/builder/transferReject/transferRejectBuilder.d.ts.map +1 -0
  85. package/dist/test/unit/builder/transferReject/transferRejectBuilder.js +57 -0
  86. package/dist/test/unit/builder/walletInit/walletInitBuilder.js +10 -13
  87. package/dist/test/unit/utils.js +101 -3
  88. package/dist/tsconfig.tsbuildinfo +1 -1
  89. package/package.json +24 -7
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.WalletInitTransaction = void 0;
4
4
  const sdk_core_1 = require("@bitgo-beta/sdk-core");
5
+ const constant_1 = require("../constant");
5
6
  class WalletInitTransaction extends sdk_core_1.BaseTransaction {
6
7
  constructor(coinConfig) {
7
8
  super(coinConfig);
@@ -24,7 +25,29 @@ class WalletInitTransaction extends sdk_core_1.BaseTransaction {
24
25
  if (!this._preparedParty) {
25
26
  throw new sdk_core_1.InvalidTransactionError('Empty transaction data');
26
27
  }
27
- return Buffer.from(JSON.stringify(this._preparedParty)).toString('base64');
28
+ const multiHashSignatures = [];
29
+ if (this.signature.length > 0) {
30
+ this.signature.map((signature) => {
31
+ const multiHashSignature = {
32
+ format: constant_1.SIGNATURE_FORMAT,
33
+ signature: signature,
34
+ signedBy: this._preparedParty.publicKeyFingerprint,
35
+ signingAlgorithmSpec: constant_1.SIGNATURE_ALGORITHM_SPEC,
36
+ };
37
+ multiHashSignatures.push(multiHashSignature);
38
+ });
39
+ }
40
+ const walletInitBroadcastData = {
41
+ preparedParty: this._preparedParty,
42
+ onboardingTransactions: this._preparedParty.topologyTransactions.map((txn) => {
43
+ const onboardingTransaction = {
44
+ transaction: txn,
45
+ };
46
+ return onboardingTransaction;
47
+ }),
48
+ multiHashSignatures: multiHashSignatures,
49
+ };
50
+ return Buffer.from(JSON.stringify(walletInitBroadcastData)).toString('base64');
28
51
  }
29
52
  toJson() {
30
53
  if (!this._preparedParty) {
@@ -41,19 +64,37 @@ class WalletInitTransaction extends sdk_core_1.BaseTransaction {
41
64
  if (!this._preparedParty) {
42
65
  throw new sdk_core_1.InvalidTransactionError('Empty transaction data');
43
66
  }
44
- return Buffer.from(this._preparedParty.multiHash);
67
+ return Buffer.from(this._preparedParty.multiHash, 'base64');
45
68
  }
46
69
  fromRawTransaction(rawTx) {
47
70
  try {
48
71
  const decoded = JSON.parse(Buffer.from(rawTx, 'base64').toString('utf8'));
49
- this._preparedParty = decoded;
72
+ this._preparedParty = decoded.preparedParty;
50
73
  this._type = sdk_core_1.TransactionType.WalletInitialization;
51
- this._id = decoded.multiHash;
74
+ this._id = decoded.preparedParty.multiHash;
75
+ if (decoded.multiHashSignatures.length > 0) {
76
+ decoded.multiHashSignatures.map((multiHashSignature) => {
77
+ this.signatures = multiHashSignature.signature;
78
+ });
79
+ }
52
80
  }
53
81
  catch (e) {
54
82
  throw new sdk_core_1.InvalidTransactionError('Unable to parse raw transaction data');
55
83
  }
56
84
  }
85
+ explainTransaction() {
86
+ const displayOrder = ['id', 'outputs', 'outputAmount', 'changeOutputs', 'changeAmount', 'fee', 'type'];
87
+ return {
88
+ id: this.id,
89
+ displayOrder,
90
+ outputs: [],
91
+ outputAmount: '0',
92
+ changeOutputs: [],
93
+ changeAmount: '0',
94
+ fee: { fee: '0' },
95
+ type: this.type,
96
+ };
97
+ }
57
98
  }
58
99
  exports.WalletInitTransaction = WalletInitTransaction;
59
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2FsbGV0SW5pdFRyYW5zYWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi93YWxsZXRJbml0aWFsaXphdGlvbi93YWxsZXRJbml0VHJhbnNhY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbURBQTBHO0FBSTFHLE1BQWEscUJBQXNCLFNBQVEsMEJBQWU7SUFHeEQsWUFBWSxVQUFnQztRQUMxQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDcEIsQ0FBQztJQUVELElBQUksYUFBYTtRQUNmLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUM3QixDQUFDO0lBRUQsSUFBSSxhQUFhLENBQUMsV0FBMEI7UUFDMUMsSUFBSSxDQUFDLGNBQWMsR0FBRyxXQUFXLENBQUM7UUFDbEMsSUFBSSxDQUFDLEdBQUcsR0FBRyxXQUFXLENBQUMsU0FBUyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxLQUFLLEdBQUcsMEJBQWUsQ0FBQyxvQkFBb0IsQ0FBQztJQUNwRCxDQUFDO0lBRUQsT0FBTyxDQUFDLEdBQVk7UUFDbEIsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsSUFBSSxVQUFVLENBQUMsU0FBaUI7UUFDOUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELGlCQUFpQjtRQUNmLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDekIsTUFBTSxJQUFJLGtDQUF1QixDQUFDLHdCQUF3QixDQUFDLENBQUM7UUFDOUQsQ0FBQztRQUNELE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDekIsTUFBTSxJQUFJLGtDQUF1QixDQUFDLHdCQUF3QixDQUFDLENBQUM7UUFDOUQsQ0FBQztRQUNELE1BQU0sTUFBTSxHQUFxQjtZQUMvQixFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUU7WUFDWCxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQXdCO1lBQ25DLGFBQWEsRUFBRSxJQUFJLENBQUMsY0FBYztTQUNuQyxDQUFDO1FBQ0YsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVELElBQUksZUFBZTtRQUNqQixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3pCLE1BQU0sSUFBSSxrQ0FBdUIsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBQzlELENBQUM7UUFDRCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQsa0JBQWtCLENBQUMsS0FBYTtRQUM5QixJQUFJLENBQUM7WUFDSCxNQUFNLE9BQU8sR0FBa0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztZQUN6RixJQUFJLENBQUMsY0FBYyxHQUFHLE9BQU8sQ0FBQztZQUM5QixJQUFJLENBQUMsS0FBSyxHQUFHLDBCQUFlLENBQUMsb0JBQW9CLENBQUM7WUFDbEQsSUFBSSxDQUFDLEdBQUcsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDO1FBQy9CLENBQUM7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ1gsTUFBTSxJQUFJLGtDQUF1QixDQUFDLHNDQUFzQyxDQUFDLENBQUM7UUFDNUUsQ0FBQztJQUNILENBQUM7Q0FDRjtBQTdERCxzREE2REMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlS2V5LCBCYXNlVHJhbnNhY3Rpb24sIEludmFsaWRUcmFuc2FjdGlvbkVycm9yLCBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgeyBQcmVwYXJlZFBhcnR5LCBXYWxsZXRJbml0VHhEYXRhIH0gZnJvbSAnLi4vaWZhY2UnO1xuXG5leHBvcnQgY2xhc3MgV2FsbGV0SW5pdFRyYW5zYWN0aW9uIGV4dGVuZHMgQmFzZVRyYW5zYWN0aW9uIHtcbiAgcHJpdmF0ZSBfcHJlcGFyZWRQYXJ0eTogUHJlcGFyZWRQYXJ0eTtcblxuICBjb25zdHJ1Y3Rvcihjb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKGNvaW5Db25maWcpO1xuICB9XG5cbiAgZ2V0IHByZXBhcmVkUGFydHkoKTogUHJlcGFyZWRQYXJ0eSB7XG4gICAgcmV0dXJuIHRoaXMuX3ByZXBhcmVkUGFydHk7XG4gIH1cblxuICBzZXQgcHJlcGFyZWRQYXJ0eSh0cmFuc2FjdGlvbjogUHJlcGFyZWRQYXJ0eSkge1xuICAgIHRoaXMuX3ByZXBhcmVkUGFydHkgPSB0cmFuc2FjdGlvbjtcbiAgICB0aGlzLl9pZCA9IHRyYW5zYWN0aW9uLm11bHRpSGFzaDtcbiAgICB0aGlzLl90eXBlID0gVHJhbnNhY3Rpb25UeXBlLldhbGxldEluaXRpYWxpemF0aW9uO1xuICB9XG5cbiAgY2FuU2lnbihrZXk6IEJhc2VLZXkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBzZXQgc2lnbmF0dXJlcyhzaWduYXR1cmU6IHN0cmluZykge1xuICAgIHRoaXMuX3NpZ25hdHVyZXMucHVzaChzaWduYXR1cmUpO1xuICB9XG5cbiAgdG9Ccm9hZGNhc3RGb3JtYXQoKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMuX3ByZXBhcmVkUGFydHkpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignRW1wdHkgdHJhbnNhY3Rpb24gZGF0YScpO1xuICAgIH1cbiAgICByZXR1cm4gQnVmZmVyLmZyb20oSlNPTi5zdHJpbmdpZnkodGhpcy5fcHJlcGFyZWRQYXJ0eSkpLnRvU3RyaW5nKCdiYXNlNjQnKTtcbiAgfVxuXG4gIHRvSnNvbigpOiBXYWxsZXRJbml0VHhEYXRhIHtcbiAgICBpZiAoIXRoaXMuX3ByZXBhcmVkUGFydHkpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignRW1wdHkgdHJhbnNhY3Rpb24gZGF0YScpO1xuICAgIH1cbiAgICBjb25zdCByZXN1bHQ6IFdhbGxldEluaXRUeERhdGEgPSB7XG4gICAgICBpZDogdGhpcy5pZCxcbiAgICAgIHR5cGU6IHRoaXMuX3R5cGUgYXMgVHJhbnNhY3Rpb25UeXBlLFxuICAgICAgcHJlcGFyZWRQYXJ0eTogdGhpcy5fcHJlcGFyZWRQYXJ0eSxcbiAgICB9O1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBnZXQgc2lnbmFibGVQYXlsb2FkKCk6IEJ1ZmZlciB7XG4gICAgaWYgKCF0aGlzLl9wcmVwYXJlZFBhcnR5KSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ0VtcHR5IHRyYW5zYWN0aW9uIGRhdGEnKTtcbiAgICB9XG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKHRoaXMuX3ByZXBhcmVkUGFydHkubXVsdGlIYXNoKTtcbiAgfVxuXG4gIGZyb21SYXdUcmFuc2FjdGlvbihyYXdUeDogc3RyaW5nKTogdm9pZCB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGRlY29kZWQ6IFByZXBhcmVkUGFydHkgPSBKU09OLnBhcnNlKEJ1ZmZlci5mcm9tKHJhd1R4LCAnYmFzZTY0JykudG9TdHJpbmcoJ3V0ZjgnKSk7XG4gICAgICB0aGlzLl9wcmVwYXJlZFBhcnR5ID0gZGVjb2RlZDtcbiAgICAgIHRoaXMuX3R5cGUgPSBUcmFuc2FjdGlvblR5cGUuV2FsbGV0SW5pdGlhbGl6YXRpb247XG4gICAgICB0aGlzLl9pZCA9IGRlY29kZWQubXVsdGlIYXNoO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignVW5hYmxlIHRvIHBhcnNlIHJhdyB0cmFuc2FjdGlvbiBkYXRhJyk7XG4gICAgfVxuICB9XG59XG4iXX0=
100
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2FsbGV0SW5pdFRyYW5zYWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi93YWxsZXRJbml0aWFsaXphdGlvbi93YWxsZXRJbml0VHJhbnNhY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbURBQTBHO0FBVTFHLDBDQUF5RTtBQUV6RSxNQUFhLHFCQUFzQixTQUFRLDBCQUFlO0lBR3hELFlBQVksVUFBZ0M7UUFDMUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3BCLENBQUM7SUFFRCxJQUFJLGFBQWE7UUFDZixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDN0IsQ0FBQztJQUVELElBQUksYUFBYSxDQUFDLFdBQTBCO1FBQzFDLElBQUksQ0FBQyxjQUFjLEdBQUcsV0FBVyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxHQUFHLEdBQUcsV0FBVyxDQUFDLFNBQVMsQ0FBQztRQUNqQyxJQUFJLENBQUMsS0FBSyxHQUFHLDBCQUFlLENBQUMsb0JBQW9CLENBQUM7SUFDcEQsQ0FBQztJQUVELE9BQU8sQ0FBQyxHQUFZO1FBQ2xCLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELElBQUksVUFBVSxDQUFDLFNBQWlCO1FBQzlCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxpQkFBaUI7UUFDZixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3pCLE1BQU0sSUFBSSxrQ0FBdUIsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBQzlELENBQUM7UUFDRCxNQUFNLG1CQUFtQixHQUF5QixFQUFFLENBQUM7UUFDckQsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUM5QixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO2dC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LEVBQUUsSUFBSSxDQUFDLEVBQUU7WUFDWCxZQUFZO1lBQ1osT0FBTyxFQUFFLEVBQUU7WUFDWCxZQUFZLEVBQUUsR0FBRztZQUNqQixhQUFhLEVBQUUsRUFBRTtZQUNqQixZQUFZLEVBQUUsR0FBRztZQUNqQixHQUFHLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFO1lBQ2pCLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtTQUNoQixDQUFDO0lBQ0osQ0FBQztDQUNGO0FBdEdELHNEQXNHQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VLZXksIEJhc2VUcmFuc2FjdGlvbiwgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IsIFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7XG4gIE11bHRpSGFzaFNpZ25hdHVyZSxcbiAgT25ib2FyZGluZ1RyYW5zYWN0aW9uLFxuICBQcmVwYXJlZFBhcnR5LFxuICBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uLFxuICBXYWxsZXRJbml0QnJvYWRjYXN0RGF0YSxcbiAgV2FsbGV0SW5pdFR4RGF0YSxcbn0gZnJvbSAnLi4vaWZhY2UnO1xuaW1wb3J0IHsgU0lHTkFUVVJFX0FMR09SSVRITV9TUEVDLCBTSUdOQVRVUkVfRk9STUFUIH0gZnJvbSAnLi4vY29uc3RhbnQnO1xuXG5leHBvcnQgY2xhc3MgV2FsbGV0SW5pdFRyYW5zYWN0aW9uIGV4dGVuZHMgQmFzZVRyYW5zYWN0aW9uIHtcbiAgcHJpdmF0ZSBfcHJlcGFyZWRQYXJ0eTogUHJlcGFyZWRQYXJ0eTtcblxuICBjb25zdHJ1Y3Rvcihjb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKGNvaW5Db25maWcpO1xuICB9XG5cbiAgZ2V0IHByZXBhcmVkUGFydHkoKTogUHJlcGFyZWRQYXJ0eSB7XG4gICAgcmV0dXJuIHRoaXMuX3ByZXBhcmVkUGFydHk7XG4gIH1cblxuICBzZXQgcHJlcGFyZWRQYXJ0eSh0cmFuc2FjdGlvbjogUHJlcGFyZWRQYXJ0eSkge1xuICAgIHRoaXMuX3ByZXBhcmVkUGFydHkgPSB0cmFuc2FjdGlvbjtcbiAgICB0aGlzLl9pZCA9IHRyYW5zYWN0aW9uLm11bHRpSGFzaDtcbiAgICB0aGlzLl90eXBlID0gVHJhbnNhY3Rpb25UeXBlLldhbGxldEluaXRpYWxpemF0aW9uO1xuICB9XG5cbiAgY2FuU2lnbihrZXk6IEJhc2VLZXkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBzZXQgc2lnbmF0dXJlcyhzaWduYXR1cmU6IHN0cmluZykge1xuICAgIHRoaXMuX3NpZ25hdHVyZXMucHVzaChzaWduYXR1cmUpO1xuICB9XG5cbiAgdG9Ccm9hZGNhc3RGb3JtYXQoKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMuX3ByZXBhcmVkUGFydHkpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignRW1wdHkgdHJhbnNhY3Rpb24gZGF0YScpO1xuICAgIH1cbiAgICBjb25zdCBtdWx0aUhhc2hTaWduYXR1cmVzOiBNdWx0aUhhc2hTaWduYXR1cmVbXSA9IFtdO1xuICAgIGlmICh0aGlzLnNpZ25hdHVyZS5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnNpZ25hdHVyZS5tYXAoKHNpZ25hdHVyZSkgPT4ge1xuICAgICAgICBjb25zdCBtdWx0aUhhc2hTaWduYXR1cmU6IE11bHRpSGFzaFNpZ25hdHVyZSA9IHtcbiAgICAgICAgICBmb3JtYXQ6IFNJR05BVFVSRV9GT1JNQVQsXG4gICAgICAgICAgc2lnbmF0dXJlOiBzaWduYXR1cmUsXG4gICAgICAgICAgc2lnbmVkQnk6IHRoaXMuX3ByZXBhcmVkUGFydHkucHVibGljS2V5RmluZ2VycHJpbnQsXG4gICAgICAgICAgc2lnbmluZ0FsZ29yaXRobVNwZWM6IFNJR05BVFVSRV9BTEdPUklUSE1fU1BFQyxcbiAgICAgICAgfTtcbiAgICAgICAgbXVsdGlIYXNoU2lnbmF0dXJlcy5wdXNoKG11bHRpSGFzaFNpZ25hdHVyZSk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgY29uc3Qgd2FsbGV0SW5pdEJyb2FkY2FzdERhdGE6IFdhbGxldEluaXRCcm9hZGNhc3REYXRhID0ge1xuICAgICAgcHJlcGFyZWRQYXJ0eTogdGhpcy5fcHJlcGFyZWRQYXJ0eSxcbiAgICAgIG9uYm9hcmRpbmdUcmFuc2FjdGlvbnM6IHRoaXMuX3ByZXBhcmVkUGFydHkudG9wb2xvZ3lUcmFuc2FjdGlvbnMubWFwKCh0eG4pID0+IHtcbiAgICAgICAgY29uc3Qgb25ib2FyZGluZ1RyYW5zYWN0aW9uOiBPbmJvYXJkaW5nVHJhbnNhY3Rpb24gPSB7XG4gICAgICAgICAgdHJhbnNhY3Rpb246IHR4bixcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIG9uYm9hcmRpbmdUcmFuc2FjdGlvbjtcbiAgICAgIH0pLFxuICAgICAgbXVsdGlIYXNoU2lnbmF0dXJlczogbXVsdGlIYXNoU2lnbmF0dXJlcyxcbiAgICB9O1xuICAgIHJldHVybiBCdWZmZXIuZnJvbShKU09OLnN0cmluZ2lmeSh3YWxsZXRJbml0QnJvYWRjYXN0RGF0YSkpLnRvU3RyaW5nKCdiYXNlNjQnKTtcbiAgfVxuXG4gIHRvSnNvbigpOiBXYWxsZXRJbml0VHhEYXRhIHtcbiAgICBpZiAoIXRoaXMuX3ByZXBhcmVkUGFydHkpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignRW1wdHkgdHJhbnNhY3Rpb24gZGF0YScpO1xuICAgIH1cbiAgICBjb25zdCByZXN1bHQ6IFdhbGxldEluaXRUeERhdGEgPSB7XG4gICAgICBpZDogdGhpcy5pZCxcbiAgICAgIHR5cGU6IHRoaXMuX3R5cGUgYXMgVHJhbnNhY3Rpb25UeXBlLFxuICAgICAgcHJlcGFyZWRQYXJ0eTogdGhpcy5fcHJlcGFyZWRQYXJ0eSxcbiAgICB9O1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBnZXQgc2lnbmFibGVQYXlsb2FkKCk6IEJ1ZmZlciB7XG4gICAgaWYgKCF0aGlzLl9wcmVwYXJlZFBhcnR5KSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ0VtcHR5IHRyYW5zYWN0aW9uIGRhdGEnKTtcbiAgICB9XG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKHRoaXMuX3ByZXBhcmVkUGFydHkubXVsdGlIYXNoLCAnYmFzZTY0Jyk7XG4gIH1cblxuICBmcm9tUmF3VHJhbnNhY3Rpb24ocmF3VHg6IHN0cmluZyk6IHZvaWQge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBkZWNvZGVkOiBXYWxsZXRJbml0QnJvYWRjYXN0RGF0YSA9IEpTT04ucGFyc2UoQnVmZmVyLmZyb20ocmF3VHgsICdiYXNlNjQnKS50b1N0cmluZygndXRmOCcpKTtcbiAgICAgIHRoaXMuX3ByZXBhcmVkUGFydHkgPSBkZWNvZGVkLnByZXBhcmVkUGFydHk7XG4gICAgICB0aGlzLl90eXBlID0gVHJhbnNhY3Rpb25UeXBlLldhbGxldEluaXRpYWxpemF0aW9uO1xuICAgICAgdGhpcy5faWQgPSBkZWNvZGVkLnByZXBhcmVkUGFydHkubXVsdGlIYXNoO1xuICAgICAgaWYgKGRlY29kZWQubXVsdGlIYXNoU2lnbmF0dXJlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGRlY29kZWQubXVsdGlIYXNoU2lnbmF0dXJlcy5tYXAoKG11bHRpSGFzaFNpZ25hdHVyZTogTXVsdGlIYXNoU2lnbmF0dXJlKSA9PiB7XG4gICAgICAgICAgdGhpcy5zaWduYXR1cmVzID0gbXVsdGlIYXNoU2lnbmF0dXJlLnNpZ25hdHVyZTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdVbmFibGUgdG8gcGFyc2UgcmF3IHRyYW5zYWN0aW9uIGRhdGEnKTtcbiAgICB9XG4gIH1cblxuICBleHBsYWluVHJhbnNhY3Rpb24oKTogVHJhbnNhY3Rpb25FeHBsYW5hdGlvbiB7XG4gICAgY29uc3QgZGlzcGxheU9yZGVyID0gWydpZCcsICdvdXRwdXRzJywgJ291dHB1dEFtb3VudCcsICdjaGFuZ2VPdXRwdXRzJywgJ2NoYW5nZUFtb3VudCcsICdmZWUnLCAndHlwZSddO1xuICAgIHJldHVybiB7XG4gICAgICBpZDogdGhpcy5pZCxcbiAgICAgIGRpc3BsYXlPcmRlcixcbiAgICAgIG91dHB1dHM6IFtdLFxuICAgICAgb3V0cHV0QW1vdW50OiAnMCcsXG4gICAgICBjaGFuZ2VPdXRwdXRzOiBbXSxcbiAgICAgIGNoYW5nZUFtb3VudDogJzAnLFxuICAgICAgZmVlOiB7IGZlZTogJzAnIH0sXG4gICAgICB0eXBlOiB0aGlzLnR5cGUsXG4gICAgfTtcbiAgfVxufVxuIl19
@@ -0,0 +1,3 @@
1
+ import { TransactionBuilderFactory } from '../src';
2
+ export declare function getCantonBuilderFactory(coinName: string): TransactionBuilderFactory;
3
+ //# sourceMappingURL=helper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helper.d.ts","sourceRoot":"","sources":["../../test/helper.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,yBAAyB,EAAE,MAAM,QAAQ,CAAC;AAEnD,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,yBAAyB,CAEnF"}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getCantonBuilderFactory = getCantonBuilderFactory;
4
+ const statics_1 = require("@bitgo-beta/statics");
5
+ const src_1 = require("../src");
6
+ function getCantonBuilderFactory(coinName) {
7
+ return new src_1.TransactionBuilderFactory(statics_1.coins.get(coinName));
8
+ }
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdGVzdC9oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFHQSwwREFFQztBQUxELGlEQUE0QztBQUM1QyxnQ0FBbUQ7QUFFbkQsU0FBZ0IsdUJBQXVCLENBQUMsUUFBZ0I7SUFDdEQsT0FBTyxJQUFJLCtCQUF5QixDQUFDLGVBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztBQUM1RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29pbnMgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkgfSBmcm9tICcuLi9zcmMnO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q2FudG9uQnVpbGRlckZhY3RvcnkoY29pbk5hbWU6IHN0cmluZyk6IFRyYW5zYWN0aW9uQnVpbGRlckZhY3Rvcnkge1xuICByZXR1cm4gbmV3IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkoY29pbnMuZ2V0KGNvaW5OYW1lKSk7XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=canton.integration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canton.integration.d.ts","sourceRoot":"","sources":["../../../test/integration/canton.integration.ts"],"names":[],"mappings":""}
@@ -0,0 +1,157 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const assert_1 = __importDefault(require("assert"));
7
+ const sdk_api_1 = require("@bitgo-beta/sdk-api");
8
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
9
+ const sdk_test_1 = require("@bitgo-beta/sdk-test");
10
+ const helper_1 = require("../helper");
11
+ const resources_1 = require("../resources");
12
+ const src_1 = require("../../src");
13
+ describe('Canton integration tests', function () {
14
+ let bitgo;
15
+ let basecoin;
16
+ let newTxPrebuild;
17
+ let newTxParams;
18
+ let wallet;
19
+ const txPrebuild = {
20
+ txHex: resources_1.TransferRawTxn,
21
+ txInfo: {},
22
+ };
23
+ const txParams = {
24
+ recipients: [
25
+ {
26
+ address: resources_1.TxParams.RECIPIENT_ADDRESS,
27
+ amount: resources_1.TxParams.AMOUNT,
28
+ },
29
+ ],
30
+ };
31
+ before(() => {
32
+ bitgo = sdk_test_1.TestBitGo.decorate(sdk_api_1.BitGoAPI, { env: 'mock' });
33
+ bitgo.safeRegister('tcanton', src_1.Tcanton.createInstance);
34
+ basecoin = bitgo.coin('tcanton');
35
+ newTxPrebuild = () => {
36
+ return structuredClone(txPrebuild);
37
+ };
38
+ newTxParams = () => {
39
+ return structuredClone(txParams);
40
+ };
41
+ wallet = new sdk_core_1.Wallet(bitgo, basecoin, {});
42
+ });
43
+ describe('Verify Transaction', function () {
44
+ it('should verify transfer transaction', async function () {
45
+ const txPrebuild = newTxPrebuild();
46
+ const txParams = newTxParams();
47
+ const isTxnVerifies = await basecoin.verifyTransaction({ txPrebuild: txPrebuild, txParams: txParams, wallet });
48
+ isTxnVerifies.should.equal(true);
49
+ });
50
+ it('should verify transfer transaction with memo', async function () {
51
+ const txPrebuild = {
52
+ txHex: resources_1.TransferRawTxnWithMemo,
53
+ txInfo: {},
54
+ };
55
+ const txParams = {
56
+ recipients: [
57
+ {
58
+ address: resources_1.TxParamsWithMemo.RECIPIENT_ADDRESS,
59
+ amount: resources_1.TxParamsWithMemo.AMOUNT,
60
+ },
61
+ ],
62
+ };
63
+ const isTxnVerifies = await basecoin.verifyTransaction({ txPrebuild: txPrebuild, txParams: txParams, wallet });
64
+ isTxnVerifies.should.equal(true);
65
+ });
66
+ });
67
+ describe('Explain raw transaction', function () {
68
+ const factory = (0, helper_1.getCantonBuilderFactory)('tcanton');
69
+ it('should explain raw wallet init transaction', function () {
70
+ const builder = factory.from(resources_1.WalletInitRawTransaction);
71
+ const txn = builder.transaction;
72
+ const explainTxData = txn.explainTransaction();
73
+ (0, assert_1.default)(explainTxData);
74
+ assert_1.default.equal(explainTxData.id, resources_1.GenerateTopologyResponse.multiHash);
75
+ assert_1.default.equal(explainTxData.type, sdk_core_1.TransactionType.WalletInitialization);
76
+ });
77
+ it('should explain raw transfer acceptance transaction', function () {
78
+ const builder = factory.from(resources_1.TransferAcceptRawTransaction);
79
+ const txn = builder.transaction;
80
+ const explainTxData = txn.explainTransaction();
81
+ (0, assert_1.default)(explainTxData);
82
+ (0, assert_1.default)(explainTxData.id);
83
+ assert_1.default.equal(explainTxData.type, sdk_core_1.TransactionType.TransferAccept);
84
+ assert_1.default.equal(explainTxData.inputAmount, '50000000000');
85
+ });
86
+ it('should explain raw transfer rejection transaction', function () {
87
+ const builder = factory.from(resources_1.TransferRejectRawTransaction);
88
+ const txn = builder.transaction;
89
+ const explainTxData = txn.explainTransaction();
90
+ (0, assert_1.default)(explainTxData);
91
+ assert_1.default.equal(explainTxData.type, sdk_core_1.TransactionType.TransferReject);
92
+ assert_1.default.equal(explainTxData.inputAmount, '50000000000');
93
+ });
94
+ });
95
+ describe('isWalletAddress', function () {
96
+ let keychains;
97
+ let commonKeychain;
98
+ before(function () {
99
+ commonKeychain =
100
+ '19bdfe2a4b498a05511381235a8892d54267807c4a3f654e310b938b8b424ff4adedbe92f4c146de641c67508a961324c8504cdf8e0c0acbb68d6104ccccd781';
101
+ keychains = [
102
+ {
103
+ id: '6424c353eaf78d000766e95949868468',
104
+ source: 'user',
105
+ type: 'tss',
106
+ commonKeychain: '19bdfe2a4b498a05511381235a8892d54267807c4a3f654e310b938b8b424ff4adedbe92f4c146de641c67508a961324c8504cdf8e0c0acbb68d6104ccccd781',
107
+ encryptedPrv: '{"iv":"cZd5i7L4RxtwrALW2rK7UA==","v":1,"iter":10000,"ks":256,"ts":64,"mode":"ccm","adata":"","cipher":"aes","salt":"5zgoH1Bd3Fw=","ct":"9vVlnXFRtrM9FVEo+d2chbGHlM9lFZemueBuAs3BIkPo33Fo7jzwwNK/kIWkEyg+NmEBd5IaqAS157nvvvwzzsmMWlQdUz9qbmXNv3pg987cXFR08exS+4uhwP1YNOjJTRvRNcO9ZqHb46d4fmyJ/yC9/susCge7r/EsbaN5C3afv1dzybuq912FwaQElZLYYp5BICudFOMZ9k0UDMfKM/PMDkH7WexoGHr9GKq/bgCH2B39TZZyHKU6Uy47lXep2s6h0DrMwHOrnmiL3DZjOj88Ynvphlzxuo4eOlD2UHia2+nvIaISYs29Pr0DAvREutchvcBpExj1kWWPv7hQYrv8F0NAdatsbWl3w+xKyfiMKo1USlrwyJviypGtQtXOJyw0XPN0rv2+L5lW8BbjpzHfYYN13fJTedlGTFhhkzVtbbPAKE02kx7zCJcjYaiexdSTsrDLScYNT9/Jhdt27KpsooehwVohLfSKz4vbFfRu2MPZw3/+c/hfiJNgtz6esWbnxGrcE8U2IwPYCaK+Ghk4DcqWNIni59RI5B5kAsQOToII40qPN510uTgxBSPO7q7MHgkxdd4CqBq+ojr9j0P7oao8E5Y+CBDJrojDoCh1oCCDW9vo2dXlVcD8SIbw7U/9AfvEbA4xyE/5md1M7CIwLnWs2Ynv0YtaKoqhdS9x6FmHlMDhN/DKHinrwmowtrTT82fOkpO5g9saSmgU7Qy3gLt8t+VwdEyeFeQUKRSyci8qgqXQaZIg4+aXgaSOnlCFMtmB8ekYxEhTY5uzRfrNgS4s1QeqFBpNtUF+Ydi297pbVXnJoXAN+SVWd80GCx+yI2dpVC89k3rOWK9WeyqlnzuLJWp2RIOB9cdW8GFv/fN+QAJpYeVxOE4+nZDsKnsj8nKcg9t4Dlx1G6gLM1/Vq9YxNLbuzuRC0asUYvdMnoMvszmpm++TxndYisgNYscpZSoz7wvcazJNEPfhPVjEkd6tUUuN4GM35H0DmKCUQNT+a6B6hmHlTZvjxiyGAg5bY59hdjvJ+22QduazlEEC6LI3HrA7uK0TpplWzS1tCIFvTMUhj65DEZmNJ2+ZY9bQ4vsMf+DRR3OOG4t+DMlNfjOd3zNv3QoY95BjfWpryFwPzDq7bCP67JDsoj7j2TY5FRSrRkD77H0Ewlux2cWfjRTwcMHcdQxxuV0OP0aNjGDjybFN"}',
108
+ },
109
+ {
110
+ id: '6424c353eaf78d000766e96137d4404b',
111
+ source: 'backup',
112
+ type: 'tss',
113
+ commonKeychain: '19bdfe2a4b498a05511381235a8892d54267807c4a3f654e310b938b8b424ff4adedbe92f4c146de641c67508a961324c8504cdf8e0c0acbb68d6104ccccd781',
114
+ encryptedPrv: '{"iv":"vi0dPef/Rx7kG/pRySQi6Q==","v":1,"iter":10000,"ks":256,"ts":64,"mode":"ccm","adata":"","cipher":"aes","salt":"9efhQsiEvVs=","ct":"Gw6atvf6gxKzsjtl3xseipO3rAxp1mAz7Yu1ihFsi5/lf2vMZegApgZx+pyILFS9KKLHbNF3U6WgSYdrr2t4vzdLsXkH1WIxfHS+cd2C5N59yADZDnPJBT6pv/IRvaYelP0Ck3nIYQ2hSMm8op+VOWC/SzHeh7slYDqwEHTGan0Wigfvk1yRd7CCJTaEAomnc/4eFi2NY3X3gt/3opy9IAgknnwUFohn96EWpEQ0F6pbzH/Z8VF6gF+DUcrrByAxExUPnHQZiFk3YHU/vVV4FxBU/mVAE8xBsBn5ul5e5SUMPfc7TBuJWv4BByTNg9xDShF/91Yx2nbfUm5d9QmM8lpKgzzQvcK8POAPk87gRCuKnsGh5vNS0UppkHc+ocfzRQlGA6jze7QyyQO0rMj5Ly8kWjwk2vISvKYHYS1NR7VU549UIXo7NXjatunKSc3+IreoRUHIshiaLg6hl+pxCCuc0qQ43V0mdIfCjTN8gkGWLNk8R7tAGPz9jyapQPcPEGHgEz0ATIi6yMNWCsibS2eLiE1uVEJONoM4lk6FPl3Q2CHbW2MeEbqjY8hbaw18mNb2xSBH/Fwpiial+Tvi2imqgnCO4ZpO9bllKftZPcQy0stN+eGBlb5ufyflKkDSiChHYroGjEpmiFicdde48cJszF52uKNnf1q67fA9/S2FAHQab3EXojxH2Gbk+kkV2h/TYKFFZSWC3vi4e8mO+vjMUcR0AdsgPFyEIz0SCGuba3CnTLNdEuZwsauAeHkx2vUTnRgJPVgNeeuXmsVG76Sy2ggJHuals0Hj8U2Xda0qO1RuFfoCWfss9wn6HGRwPPkhSB/8oNguAqmRVGKkd8Zwt3IvrTd9fk0/rFFDJKGz7WyNHkYgUmNiGcItD12v0jx7FZ52EJzl3Av1RyJUQK18+8EYPh3SGiU9dt7VX0aF0uo6JouKhOeldUvMP+AugQz8fUclwTQsbboVg27Yxo0DyATVwThW5a56R6Qf5ZiQJluFuzs5y98rq0S5q046lE6o3vVmJpEdwjeSCJoET5CL4nTgkXyWvhm4eB8u/e66l3o0qbaSx8q9YYmT9EpRcl5TP4ThLBKETYdzVvg4exjQfektMatk5EyUpEIhZPXh5vXpJZesdfO9LJ8zTaHBsBjDPU7cdNgQMbebpataRi8A0el2/IJXl+E+olgAz5zC4i2O1Q=="}',
115
+ },
116
+ {
117
+ id: '6424c353eaf78d000766e9510b125fba',
118
+ source: 'bitgo',
119
+ type: 'tss',
120
+ commonKeychain: '19bdfe2a4b498a05511381235a8892d54267807c4a3f654e310b938b8b424ff4adedbe92f4c146de641c67508a961324c8504cdf8e0c0acbb68d6104ccccd781',
121
+ verifiedVssProof: true,
122
+ isBitGo: true,
123
+ },
124
+ ];
125
+ });
126
+ it('should return true when receive address is valid', async function () {
127
+ const address = resources_1.CANTON_RECEIVE_ADDRESS.VALID_ADDRESS;
128
+ const index = '1';
129
+ const params = { commonKeychain, address: address, index, keychains };
130
+ const isValid = await basecoin.isWalletAddress(params);
131
+ isValid.should.equal(true);
132
+ });
133
+ it('should throw error when receive address is invalid', async function () {
134
+ const address = resources_1.CANTON_RECEIVE_ADDRESS.INVALID_ADDRESS;
135
+ const index = '1';
136
+ const params = { commonKeychain, address: address, index, keychains };
137
+ try {
138
+ await basecoin.isWalletAddress(params);
139
+ }
140
+ catch (e) {
141
+ assert_1.default.equal(e.message, 'invalid address: ' + address);
142
+ }
143
+ });
144
+ it('should throw error when receive address memoId is incorrect index', async function () {
145
+ const address = resources_1.CANTON_RECEIVE_ADDRESS.VALID_ADDRESS;
146
+ const index = '2';
147
+ const params = { commonKeychain, address: address, index, keychains };
148
+ try {
149
+ await basecoin.isWalletAddress(params);
150
+ }
151
+ catch (e) {
152
+ assert_1.default.equal(e.message, 'invalid memoId index: 1');
153
+ }
154
+ });
155
+ });
156
+ });
157
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FudG9uLmludGVncmF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdGVzdC9pbnRlZ3JhdGlvbi9jYW50b24uaW50ZWdyYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxvREFBNEI7QUFFNUIsaURBQStDO0FBQy9DLG1EQUFzRjtBQUN0RixtREFBK0Q7QUFFL0Qsc0NBQW9EO0FBQ3BELDRDQVVzQjtBQUN0QixtQ0FBb0M7QUFFcEMsUUFBUSxDQUFDLDBCQUEwQixFQUFFO0lBQ25DLElBQUksS0FBbUIsQ0FBQztJQUN4QixJQUFJLFFBQWlCLENBQUM7SUFDdEIsSUFBSSxhQUF1RSxDQUFDO0lBQzVFLElBQUksV0FBMEQsQ0FBQztJQUMvRCxJQUFJLE1BQWMsQ0FBQztJQUNuQixNQUFNLFVBQVUsR0FBRztRQUNqQixLQUFLLEVBQUUsMEJBQWM7UUFDckIsTUFBTSxFQUFFLEVBQUU7S0FDWCxDQUFDO0lBQ0YsTUFBTSxRQUFRLEdBQUc7UUFDZixVQUFVLEVBQUU7WUFDVjtnQkFDRSxPQUFPLEVBQUUsb0JBQVEsQ0FBQyxpQkFBaUI7Z0JBQ25DLE1BQU0sRUFBRSxvQkFBUSxDQUFDLE1BQU07YUFDeEI7U0FDRjtLQUNGLENBQUM7SUFDRixNQUFNLENBQUMsR0FBRyxFQUFFO1FBQ1YsS0FBSyxHQUFHLG9CQUFTLENBQUMsUUFBUSxDQUFDLGtCQUFRLEVBQUUsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUN0RCxLQUFLLENBQUMsWUFBWSxDQUFDLFNBQVMsRUFBRSxhQUFPLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDdEQsUUFBUSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFZLENBQUM7UUFDNUMsYUFBYSxHQUFHLEdBQUcsRUFBRTtZQUNuQixPQUFPLGVBQWUsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNyQyxDQUFDLENBQUM7UUFDRixXQUFXLEdBQUcsR0FBRyxFQUFF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QUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsQ0FBQztZQUN0RSxJQUFJLENBQUM7Z0JBQ0gsTUFBTSxRQUFRLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3pDLENBQUM7WUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO2dCQUNYLGdCQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUseUJBQXlCLENBQUMsQ0FBQztZQUNyRCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuXG5pbXBvcnQgeyBCaXRHb0FQSSB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1hcGknO1xuaW1wb3J0IHsgSVRyYW5zYWN0aW9uUmVjaXBpZW50LCBUcmFuc2FjdGlvblR5cGUsIFdhbGxldCB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IFRlc3RCaXRHbywgVGVzdEJpdEdvQVBJIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLXRlc3QnO1xuXG5pbXBvcnQgeyBnZXRDYW50b25CdWlsZGVyRmFjdG9yeSB9IGZyb20gJy4uL2hlbHBlcic7XG5pbXBvcnQge1xuICBDQU5UT05fUkVDRUlWRV9BRERSRVNTLFxuICBHZW5lcmF0ZVRvcG9sb2d5UmVzcG9uc2UsXG4gIFRyYW5zZmVyQWNjZXB0UmF3VHJhbnNhY3Rpb24sXG4gIFRyYW5zZmVyUmF3VHhuLFxuICBUcmFuc2ZlclJhd1R4bldpdGhNZW1vLFxuICBUcmFuc2ZlclJlamVjdFJhd1RyYW5zYWN0aW9uLFxuICBUeFBhcmFtcyxcbiAgVHhQYXJhbXNXaXRoTWVtbyxcbiAgV2FsbGV0SW5pdFJhd1RyYW5zYWN0aW9uLFxufSBmcm9tICcuLi9yZXNvdXJjZXMnO1xuaW1wb3J0IHsgVGNhbnRvbiB9IGZyb20gJy4uLy4uL3NyYyc7XG5cbmRlc2NyaWJlKCdDYW50b24gaW50ZWdyYXRpb24gdGVzdHMnLCBmdW5jdGlvbiAoKSB7XG4gIGxldCBiaXRnbzogVGVzdEJpdEdvQVBJO1xuICBsZXQgYmFzZWNvaW46IFRjYW50b247XG4gIGxldCBuZXdUeFByZWJ1aWxkOiAoKSA9PiB7IHR4SGV4OiBzdHJpbmc7IHR4SW5mbzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfTtcbiAgbGV0IG5ld1R4UGFyYW1zOiAoKSA9PiB7IHJlY2lwaWVudHM6IElUcmFuc2FjdGlvblJlY2lwaWVudFtdIH07XG4gIGxldCB3YWxsZXQ6IFdhbGxldDtcbiAgY29uc3QgdHhQcmVidWlsZCA9IHtcbiAgICB0eEhleDogVHJhbnNmZXJSYXdUeG4sXG4gICAgdHhJbmZvOiB7fSxcbiAgfTtcbiAgY29uc3QgdHhQYXJhbXMgPSB7XG4gICAgcmVjaXBpZW50czogW1xuICAgICAge1xuICAgICAgICBhZGRyZXNzOiBUeFBhcmFtcy5SRUNJUElFTlRfQUREUkVTUyxcbiAgICAgICAgYW1vdW50OiBUeFBhcmFtcy5BTU9VTlQsXG4gICAgICB9LFxuICAgIF0sXG4gIH07XG4gIGJlZm9yZSgoKSA9PiB7XG4gICAgYml0Z28gPSBUZXN0Qml0R28uZGVjb3JhdGUoQml0R29BUEksIHsgZW52OiAnbW9jaycgfSk7XG4gICAgYml0Z28uc2FmZVJlZ2lzdGVyKCd0Y2FudG9uJywgVGNhbnRvbi5jcmVhdGVJbnN0YW5jZSk7XG4gICAgYmFzZWNvaW4gPSBiaXRnby5jb2luKCd0Y2FudG9uJykgYXMgVGNhbnRvbjtcbiAgICBuZXdUeFByZWJ1aWxkID0gKCkgPT4ge1xuICAgICAgcmV0dXJuIHN0cnVjdHVyZWRDbG9uZSh0eFByZWJ1aWxkKTtcbiAgICB9O1xuICAgIG5ld1R4UGFyYW1zID0gKCkgPT4ge1xuICAgICAgcmV0dXJuIHN0cnVjdHVyZWRDbG9uZSh0eFBhcmFtcyk7XG4gICAgfTtcbiAgICB3YWxsZXQgPSBuZXcgV2FsbGV0KGJpdGdvLCBiYXNlY29pbiwge30pO1xuICB9KTtcblxuICBkZXNjcmliZSgnVmVyaWZ5IFRyYW5zYWN0aW9uJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdzaG91bGQgdmVyaWZ5IHRyYW5zZmVyIHRyYW5zYWN0aW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHhQcmVidWlsZCA9IG5ld1R4UHJlYnVpbGQoKTtcbiAgICAgIGNvbnN0IHR4UGFyYW1zID0gbmV3VHhQYXJhbXMoKTtcbiAgICAgIGNvbnN0IGlzVHhuVmVyaWZpZXMgPSBhd2FpdCBiYXNlY29pbi52ZXJpZnlUcmFuc2FjdGlvbih7IHR4UHJlYnVpbGQ6IHR4UHJlYnVpbGQsIHR4UGFyYW1zOiB0eFBhcmFtcywgd2FsbGV0IH0pO1xuICAgICAgaXNUeG5WZXJpZmllcy5zaG91bGQuZXF1YWwodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHZlcmlmeSB0cmFuc2ZlciB0cmFuc2FjdGlvbiB3aXRoIG1lbW8nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eFByZWJ1aWxkID0ge1xuICAgICAgICB0eEhleDogVHJhbnNmZXJSYXdUeG5XaXRoTWVtbyxcbiAgICAgICAgdHhJbmZvOiB7fSxcbiAgICAgIH07XG4gICAgICBjb25zdCB0eFBhcmFtcyA9IHtcbiAgICAgICAgcmVjaXBpZW50czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFkZHJlc3M6IFR4UGFyYW1zV2l0aE1lbW8uUkVDSVBJRU5UX0FERFJFU1MsXG4gICAgICAgICAgICBhbW91bnQ6IFR4UGFyYW1zV2l0aE1lbW8uQU1PVU5ULFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9O1xuICAgICAgY29uc3QgaXNUeG5WZXJpZmllcyA9IGF3YWl0IGJhc2Vjb2luLnZlcmlmeVRyYW5zYWN0aW9uKHsgdHhQcmVidWlsZDogdHhQcmVidWlsZCwgdHhQYXJhbXM6IHR4UGFyYW1zLCB3YWxsZXQgfSk7XG4gICAgICBpc1R4blZlcmlmaWVzLnNob3VsZC5lcXVhbCh0cnVlKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ0V4cGxhaW4gcmF3IHRyYW5zYWN0aW9uJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IGZhY3RvcnkgPSBnZXRDYW50b25CdWlsZGVyRmFjdG9yeSgndGNhbnRvbicpO1xuICAgIGl0KCdzaG91bGQgZXhwbGFpbiByYXcgd2FsbGV0IGluaXQgdHJhbnNhY3Rpb24nLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBidWlsZGVyID0gZmFjdG9yeS5mcm9tKFdhbGxldEluaXRSYXdUcmFuc2FjdGlvbik7XG4gICAgICBjb25zdCB0eG4gPSBidWlsZGVyLnRyYW5zYWN0aW9uO1xuICAgICAgY29uc3QgZXhwbGFpblR4RGF0YSA9IHR4bi5leHBsYWluVHJhbnNhY3Rpb24oKTtcbiAgICAgIGFzc2VydChleHBsYWluVHhEYXRhKTtcbiAgICAgIGFzc2VydC5lcXVhbChleHBsYWluVHhEYXRhLmlkLCBHZW5lcmF0ZVRvcG9sb2d5UmVzcG9uc2UubXVsdGlIYXNoKTtcbiAgICAgIGFzc2VydC5lcXVhbChleHBsYWluVHhEYXRhLnR5cGUsIFRyYW5zYWN0aW9uVHlwZS5XYWxsZXRJbml0aWFsaXphdGlvbik7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGV4cGxhaW4gcmF3IHRyYW5zZmVyIGFjY2VwdGFuY2UgdHJhbnNhY3Rpb24nLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBidWlsZGVyID0gZmFjdG9yeS5mcm9tKFRyYW5zZmVyQWNjZXB0UmF3VHJhbnNhY3Rpb24pO1xuICAgICAgY29uc3QgdHhuID0gYnVpbGRlci50cmFuc2FjdGlvbjtcbiAgICAgIGNvbnN0IGV4cGxhaW5UeERhdGEgPSB0eG4uZXhwbGFpblRyYW5zYWN0aW9uKCk7XG4gICAgICBhc3NlcnQoZXhwbGFpblR4RGF0YSk7XG4gICAgICBhc3NlcnQoZXhwbGFpblR4RGF0YS5pZCk7XG4gICAgICBhc3NlcnQuZXF1YWwoZXhwbGFpblR4RGF0YS50eXBlLCBUcmFuc2FjdGlvblR5cGUuVHJhbnNmZXJBY2NlcHQpO1xuICAgICAgYXNzZXJ0LmVxdWFsKGV4cGxhaW5UeERhdGEuaW5wdXRBbW91bnQsICc1MDAwMDAwMDAwMCcpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBleHBsYWluIHJhdyB0cmFuc2ZlciByZWplY3Rpb24gdHJhbnNhY3Rpb24nLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBidWlsZGVyID0gZmFjdG9yeS5mcm9tKFRyYW5zZmVyUmVqZWN0UmF3VHJhbnNhY3Rpb24pO1xuICAgICAgY29uc3QgdHhuID0gYnVpbGRlci50cmFuc2FjdGlvbjtcbiAgICAgIGNvbnN0IGV4cGxhaW5UeERhdGEgPSB0eG4uZXhwbGFpblRyYW5zYWN0aW9uKCk7XG4gICAgICBhc3NlcnQoZXhwbGFpblR4RGF0YSk7XG4gICAgICBhc3NlcnQuZXF1YWwoZXhwbGFpblR4RGF0YS50eXBlLCBUcmFuc2FjdGlvblR5cGUuVHJhbnNmZXJSZWplY3QpO1xuICAgICAgYXNzZXJ0LmVxdWFsKGV4cGxhaW5UeERhdGEuaW5wdXRBbW91bnQsICc1MDAwMDAwMDAwMCcpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnaXNXYWxsZXRBZGRyZXNzJywgZnVuY3Rpb24gKCkge1xuICAgIGxldCBrZXljaGFpbnM7XG4gICAgbGV0IGNvbW1vbktleWNoYWluOiBzdHJpbmc7XG4gICAgYmVmb3JlKGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbW1vbktleWNoYWluID1cbiAgICAgICAgJzE5YmRmZTJhNGI0OThhMDU1MTEzODEyMzVhODg5MmQ1NDI2NzgwN2M0YTNmNjU0ZTMxMGI5MzhiOGI0MjRmZjRhZGVkYmU5MmY0YzE0NmRlNjQxYzY3NTA4YTk2MTMyNGM4NTA0Y2RmOGUwYzBhY2JiNjhkNjEwNGNjY2NkNzgxJztcbiAgICAgIGtleWNoYWlucyA9IFtcbiAgICAgICAge1xuICAgICAgICAgIGlkOiAnNjQyNGMzNTNlYWY3OGQwMDA3NjZlOTU5NDk4Njg0NjgnLFxuICAgICAgICAgIHNvdXJjZTogJ3VzZXInLFxuICAgICAgICAgIHR5cGU6ICd0c3MnLFxuICAgICAgICAgIGNvbW1vbktleWNoYWluOlxuICAgICAgICAgICAgJzE5YmRmZTJhNGI0OThhMDU1MTEzODEyMzVhODg5MmQ1NDI2NzgwN2M0YTNmNjU0ZTMxMGI5MzhiOGI0MjRmZjRhZGVkYmU5MmY0YzE0NmRlNjQxYzY3NTA4YTk2MTMyNGM4NTA0Y2RmOGUwYzBhY2JiNjhkNjEwNGNjY2NkNzgxJyxcbiAgICAgICAgICBlbmNyeXB0ZWRQcnY6XG4gICAgICAgICAgICAne1wiaXZcIjpcImNaZDVpN0w0Unh0d3JBTFcycks3VUE9PVwiLFwidlwiOjEsXCJpdGVyXCI6MTAwMDAsXCJrc1wiOjI1NixcInRzXCI6NjQsXCJtb2RlXCI6XCJjY21cIixcImFkYXRhXCI6XCJcIixcImNpcGhlclwiOlwiYWVzXCIsXCJzYWx0XCI6XCI1emdvSDFCZDNGdz1cIixcImN0XCI6XCI5dlZsblhGUnRyTTlGVkVvK2QyY2hiR0hsTTlsRlplbXVlQnVBczNCSWtQbzMzRm83anp3d05LL2tJV2tFeWcrTm1FQmQ1SWFxQVMxNTdudnZ2d3p6c21NV2xRZFV6OXFibVhOdjNwZzk4N2NYRlIwOGV4Uys0dWh3UDFZTk9qSlRSdlJOY085WnFIYjQ2ZDRmbXlKL3lDOS9zdXNDZ2U3ci9Fc2JhTjVDM2FmdjFkenlidXE5MTJGd2FRRWxaTFlZcDVCSUN1ZEZPTVo5azBVRE1mS00vUE1Ea0g3V2V4b0dIcjlHS3EvYmdDSDJCMzlUWlp5SEtVNlV5NDdsWGVwMnM2aDBEck13SE9ybm1pTDNEWmpPajg4WW52cGhsenh1bzRlT2xEMlVIaWEyK252SWFJU1lzMjlQcjBEQXZSRXV0Y2h2Y0JwRXhqMWtXV1B2N2hRWXJ2OEYwTkFkYXRzYldsM3creEt5ZmlNS28xVVNscnd5SnZpeXBHdFF0WE9KeXcwWFBOMHJ2MitMNWxXOEJianB6SGZZWU4xM2ZKVGVkbEdURmhoa3pWdGJiUEFLRTAya3g3ekNKY2pZYWlleGRTVHNyRExTY1lOVDkvSmhkdDI3S3Bzb29laHdWb2hMZlNLejR2YkZmUnUyTVBadzMvK2MvaGZpSk5ndHo2ZXNXYm54R3JjRThVMkl3UFlDYUsrR2hrNERjcVdOSW5pNTlSSTVCNWtBc1FPVG9JSTQwcVBONTEwdVRneEJTUE83cTdNSGdreGRkNENxQnErb2pyOWowUDdvYW84RTVZK0NCREpyb2pEb0NoMW9DQ0RXOXZvMmRYbFZjRDhTSWJ3N1UvOUFmdkViQTR4eUUvNW1kMU03Q0l3TG5XczJZbnYwWXRhS29xaGRTOXg2Rm1IbE1EaE4vREtIaW5yd21vd3RyVFQ4MmZPa3BPNWc5c2FTbWdVN1F5M2dMdDh0K1Z3ZEV5ZUZlUVVLUlN5Y2k4cWdxWFFhWklnNCthWGdhU09ubENGTXRtQjhla1l4RWhUWTV1elJmck5nUzRzMVFlcUZCcE50VUYrWWRpMjk3cGJWWG5Kb1hBTitTVldkODBHQ3greUkyZHBWQzg5azNyT1dLOVdleXFsbnp1TEpXcDJSSU9COWNkVzhHRnYvZk4rUUFKcFllVnhPRTQrblpEc0tuc2o4bktjZzl0NERseDFHNmdMTTEvVnE5WXhOTGJ1enVSQzBhc1VZdmRNbm9NdnN6bXBtKytUeG5kWWlzZ05Zc2NwWlNvejd3dmNhekpORVBmaFBWakVrZDZ0VVV1TjRHTTM1SDBEbUtDVVFOVCthNkI2aG1IbFRadmp4aXlHQWc1Ylk1OWhkanZKKzIyUWR1YXpsRUVDNkxJM0hyQTd1SzBUcHBsV3pTMXRDSUZ2VE1VaGo2NURFWm1OSjIrWlk5YlE0dnNNZitEUlIzT09HNHQrRE1sTmZqT2Qzek52M1FvWTk1QmpmV3ByeUZ3UHpEcTdiQ1A2N0pEc29qN2oyVFk1RlJTclJrRDc3SDBFd2x1eDJjV2ZqUlR3Y01IY2RReHh1VjBPUDBhTmpHRGp5YkZOXCJ9JyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGlkOiAnNjQyNGMzNTNlYWY3OGQwMDA3NjZlOTYxMzdkNDQwNGInLFxuICAgICAgICAgIHNvdXJjZTogJ2JhY2t1cCcsXG4gICAgICAgICAgdHlwZTogJ3RzcycsXG4gICAgICAgICAgY29tbW9uS2V5Y2hhaW46XG4gICAgICAgICAgICAnMTliZGZlMmE0YjQ5OGEwNTUxMTM4MTIzNWE4ODkyZDU0MjY3ODA3YzRhM2Y2NTRlMzEwYjkzOGI4YjQyNGZmNGFkZWRiZTkyZjRjMTQ2ZGU2NDFjNjc1MDhhOTYxMzI0Yzg1MDRjZGY4ZTBjMGFjYmI2OGQ2MTA0Y2NjY2Q3ODEnLFxuICAgICAgICAgIGVuY3J5cHRlZFBydjpcbiAgICAgICAgICAgICd7XCJpdlwiOlwidmkwZFBlZi9SeDdrRy9wUnlTUWk2UT09XCIsXCJ2XCI6MSxcIml0ZXJcIjoxMDAwMCxcImtzXCI6MjU2LFwidHNcIjo2NCxcIm1vZGVcIjpcImNjbVwiLFwiYWRhdGFcIjpcIlwiLFwiY2lwaGVyXCI6XCJhZXNcIixcInNhbHRcIjpcIjllZmhRc2lFdlZzPVwiLFwiY3RcIjpcIkd3NmF0dmY2Z3hLenNqdGwzeHNlaXBPM3JBeHAxbUF6N1l1MWloRnNpNS9sZjJ2TVplZ0FwZ1p4K3B5SUxGUzlLS0xIYk5GM1U2V2dTWWRycjJ0NHZ6ZExzWGtIMVdJeGZIUytjZDJDNU41OXlBRFpEblBKQlQ2cHYvSVJ2YVllbFAwQ2szbklZUTJoU01tOG9wK1ZPV0MvU3pIZWg3c2xZRHF3RUhUR2FuMFdpZ2Z2azF5UmQ3Q0NKVGFFQW9tbmMvNGVGaTJOWTNYM2d0LzNvcHk5SUFna25ud1VGb2huOTZFV3BFUTBGNnBiekgvWjhWRjZnRitEVWNyckJ5QXhFeFVQbkhRWmlGazNZSFUvdlZWNEZ4QlUvbVZBRTh4QnNCbjV1bDVlNVNVTVBmYzdUQnVKV3Y0QkJ5VE5nOXhEU2hGLzkxWXgybmJmVW01ZDlRbU04bHBLZ3p6UXZjSzhQT0FQazg3Z1JDdUtuc0doNXZOUzBVcHBrSGMrb2NmelJRbEdBNmp6ZTdReXlRTzByTWo1THk4a1dqd2sydklTdktZSFlTMU5SN1ZVNTQ5VUlYbzdOWGphdHVuS1NjMytJcmVvUlVISXNoaWFMZzZobCtweENDdWMwcVE0M1YwbWRJZkNqVE44Z2tHV0xOazhSN3RBR1B6OWp5YXBRUGNQRUdIZ0V6MEFUSWk2eU1OV0NzaWJTMmVMaUUxdVZFSk9Ob000bGs2RlBsM1EyQ0hiVzJNZUVicWpZOGhiYXcxOG1OYjJ4U0JIL0Z3cGlpYWwrVHZpMmltcWduQ080WnBPOWJsbEtmdFpQY1F5MHN0TitlR0JsYjV1ZnlmbEtrRFNpQ2hIWXJvR2pFcG1pRmljZGRlNDhjSnN6RjUydUtObmYxcTY3ZkE5L1MyRkFIUWFiM0VYb2p4SDJHYmsra2tWMmgvVFlLRkZaU1dDM3ZpNGU4bU8rdmpNVWNSMEFkc2dQRnlFSXowU0NHdWJhM0NuVExOZEV1WndzYXVBZUhreDJ2VVRuUmdKUFZnTmVldVhtc1ZHNzZTeTJnZ0pIdWFsczBIajhVMlhkYTBxTzFSdUZmb0NXZnNzOXduNkhHUndQUGtoU0IvOG9OZ3VBcW1SVkdLa2Q4Wnd0M0l2clRkOWZrMC9yRkZESktHejdXeU5Ia1lnVW1OaUdjSXREMTJ2MGp4N0ZaNTJFSnpsM0F2MVJ5SlVRSzE4KzhFWVBoM1NHaVU5ZHQ3VlgwYUYwdW82Sm91S2hPZWxkVXZNUCtBdWdRejhmVWNsd1RRc2Jib1ZnMjdZeG8wRHlBVFZ3VGhXNWE1NlI2UWY1WmlRSmx1RnV6czV5OThycTBTNXEwNDZsRTZvM3ZWbUpwRWR3amVTQ0pvRVQ1Q0w0blRna1h5V3ZobTRlQjh1L2U2NmwzbzBxYmFTeDhxOVlZbVQ5RXBSY2w1VFA0VGhMQktFVFlkelZ2ZzRleGpRZmVrdE1hdGs1RXlVcEVJaFpQWGg1dlhwSlplc2RmTzlMSjh6VGFIQnNCakRQVTdjZE5nUU1iZWJwYXRhUmk4QTBlbDIvSUpYbCtFK29sZ0F6NXpDNGkyTzFRPT1cIn0nLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgaWQ6ICc2NDI0YzM1M2VhZjc4ZDAwMDc2NmU5NTEwYjEyNWZiYScsXG4gICAgICAgICAgc291cmNlOiAnYml0Z28nLFxuICAgICAgICAgIHR5cGU6ICd0c3MnLFxuICAgICAgICAgIGNvbW1vbktleWNoYWluOlxuICAgICAgICAgICAgJzE5YmRmZTJhNGI0OThhMDU1MTEzODEyMzVhODg5MmQ1NDI2NzgwN2M0YTNmNjU0ZTMxMGI5MzhiOGI0MjRmZjRhZGVkYmU5MmY0YzE0NmRlNjQxYzY3NTA4YTk2MTMyNGM4NTA0Y2RmOGUwYzBhY2JiNjhkNjEwNGNjY2NkNzgxJyxcbiAgICAgICAgICB2ZXJpZmllZFZzc1Byb29mOiB0cnVlLFxuICAgICAgICAgIGlzQml0R286IHRydWUsXG4gICAgICAgIH0sXG4gICAgICBdO1xuICAgIH0pO1xuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRydWUgd2hlbiByZWNlaXZlIGFkZHJlc3MgaXMgdmFsaWQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBhZGRyZXNzID0gQ0FOVE9OX1JFQ0VJVkVfQUREUkVTUy5WQUxJRF9BRERSRVNTO1xuICAgICAgY29uc3QgaW5kZXggPSAnMSc7XG4gICAgICBjb25zdCBwYXJhbXMgPSB7IGNvbW1vbktleWNoYWluLCBhZGRyZXNzOiBhZGRyZXNzLCBpbmRleCwga2V5Y2hhaW5zIH07XG4gICAgICBjb25zdCBpc1ZhbGlkID0gYXdhaXQgYmFzZWNvaW4uaXNXYWxsZXRBZGRyZXNzKHBhcmFtcyk7XG4gICAgICBpc1ZhbGlkLnNob3VsZC5lcXVhbCh0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdGhyb3cgZXJyb3Igd2hlbiByZWNlaXZlIGFkZHJlc3MgaXMgaW52YWxpZCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGFkZHJlc3MgPSBDQU5UT05fUkVDRUlWRV9BRERSRVNTLklOVkFMSURfQUREUkVTUztcbiAgICAgIGNvbnN0IGluZGV4ID0gJzEnO1xuICAgICAgY29uc3QgcGFyYW1zID0geyBjb21tb25LZXljaGFpbiwgYWRkcmVzczogYWRkcmVzcywgaW5kZXgsIGtleWNoYWlucyB9O1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgYmFzZWNvaW4uaXNXYWxsZXRBZGRyZXNzKHBhcmFtcyk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGFzc2VydC5lcXVhbChlLm1lc3NhZ2UsICdpbnZhbGlkIGFkZHJlc3M6ICcgKyBhZGRyZXNzKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdGhyb3cgZXJyb3Igd2hlbiByZWNlaXZlIGFkZHJlc3MgbWVtb0lkIGlzIGluY29ycmVjdCBpbmRleCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGFkZHJlc3MgPSBDQU5UT05fUkVDRUlWRV9BRERSRVNTLlZBTElEX0FERFJFU1M7XG4gICAgICBjb25zdCBpbmRleCA9ICcyJztcbiAgICAgIGNvbnN0IHBhcmFtcyA9IHsgY29tbW9uS2V5Y2hhaW4sIGFkZHJlc3M6IGFkZHJlc3MsIGluZGV4LCBrZXljaGFpbnMgfTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IGJhc2Vjb2luLmlzV2FsbGV0QWRkcmVzcyhwYXJhbXMpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBhc3NlcnQuZXF1YWwoZS5tZXNzYWdlLCAnaW52YWxpZCBtZW1vSWQgaW5kZXg6IDEnKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==