@bitgo/abstract-utxo 13.4.0 → 13.4.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 (48) hide show
  1. package/dist/cjs/src/descriptor/validatePolicy.d.ts +15 -0
  2. package/dist/cjs/src/descriptor/validatePolicy.d.ts.map +1 -1
  3. package/dist/cjs/src/descriptor/validatePolicy.js +72 -3
  4. package/dist/cjs/src/impl/btc/tbtcstx.d.ts +1 -2
  5. package/dist/cjs/src/impl/btc/tbtcstx.d.ts.map +1 -1
  6. package/dist/cjs/src/impl/btc/tbtcstx.js +1 -4
  7. package/dist/cjs/src/impl/btc/tbtcstxsignet.d.ts +1 -2
  8. package/dist/cjs/src/impl/btc/tbtcstxsignet.d.ts.map +1 -1
  9. package/dist/cjs/src/impl/btc/tbtcstxsignet.js +1 -4
  10. package/dist/cjs/src/names.d.ts +1 -0
  11. package/dist/cjs/src/names.d.ts.map +1 -1
  12. package/dist/cjs/src/names.js +9 -1
  13. package/dist/cjs/src/offlineVault/TransactionExplanation.d.ts +1 -0
  14. package/dist/cjs/src/offlineVault/TransactionExplanation.d.ts.map +1 -1
  15. package/dist/cjs/src/offlineVault/TransactionExplanation.js +1 -1
  16. package/dist/cjs/src/offlineVault/descriptor/pox5.d.ts +9 -0
  17. package/dist/cjs/src/offlineVault/descriptor/pox5.d.ts.map +1 -0
  18. package/dist/cjs/src/offlineVault/descriptor/pox5.js +29 -0
  19. package/dist/cjs/src/offlineVault/descriptor/transaction.d.ts.map +1 -1
  20. package/dist/cjs/src/offlineVault/descriptor/transaction.js +6 -1
  21. package/dist/cjs/test/unit/offlineVault/pox5.d.ts +2 -0
  22. package/dist/cjs/test/unit/offlineVault/pox5.d.ts.map +1 -0
  23. package/dist/cjs/test/unit/offlineVault/pox5.js +207 -0
  24. package/dist/cjs/test/unit/sweep.d.ts +2 -0
  25. package/dist/cjs/test/unit/sweep.d.ts.map +1 -0
  26. package/dist/cjs/test/unit/sweep.js +92 -0
  27. package/dist/cjs/tsconfig.tsbuildinfo +1 -1
  28. package/dist/esm/descriptor/validatePolicy.d.ts +15 -0
  29. package/dist/esm/descriptor/validatePolicy.d.ts.map +1 -1
  30. package/dist/esm/descriptor/validatePolicy.js +69 -3
  31. package/dist/esm/impl/btc/tbtcstx.d.ts +1 -2
  32. package/dist/esm/impl/btc/tbtcstx.d.ts.map +1 -1
  33. package/dist/esm/impl/btc/tbtcstx.js +1 -4
  34. package/dist/esm/impl/btc/tbtcstxsignet.d.ts +1 -2
  35. package/dist/esm/impl/btc/tbtcstxsignet.d.ts.map +1 -1
  36. package/dist/esm/impl/btc/tbtcstxsignet.js +1 -4
  37. package/dist/esm/names.d.ts +1 -0
  38. package/dist/esm/names.d.ts.map +1 -1
  39. package/dist/esm/names.js +9 -1
  40. package/dist/esm/offlineVault/TransactionExplanation.d.ts +1 -0
  41. package/dist/esm/offlineVault/TransactionExplanation.d.ts.map +1 -1
  42. package/dist/esm/offlineVault/TransactionExplanation.js +1 -1
  43. package/dist/esm/offlineVault/descriptor/pox5.d.ts +9 -0
  44. package/dist/esm/offlineVault/descriptor/pox5.d.ts.map +1 -0
  45. package/dist/esm/offlineVault/descriptor/pox5.js +26 -0
  46. package/dist/esm/offlineVault/descriptor/transaction.d.ts.map +1 -1
  47. package/dist/esm/offlineVault/descriptor/transaction.js +7 -2
  48. package/package.json +10 -10
@@ -13,6 +13,21 @@ export declare function getValidatorEvery(validators: DescriptorValidationPolicy
13
13
  export declare function getValidatorSome(validators: DescriptorValidationPolicy[]): DescriptorValidationPolicy;
14
14
  export declare function getValidatorOneOfTemplates(names: string[]): DescriptorValidationPolicy;
15
15
  export declare function getValidatorSignedByUserKey(): DescriptorValidationPolicy;
16
+ /**
17
+ * Accepts descriptors that are canonical PoX-5 lockup descriptors whose staker keys
18
+ * are the wallet keys.
19
+ */
20
+ export declare function getValidatorPox5Lockup(): DescriptorValidationPolicy;
21
+ /**
22
+ * Accepts descriptor groups where each descriptor individually satisfies at least one of
23
+ * the validators. Unlike `getValidatorSome`, different descriptors may match different validators.
24
+ */
25
+ export declare function getValidatorEachOneOf(validators: DescriptorValidationPolicy[]): DescriptorValidationPolicy;
26
+ /**
27
+ * Accepts the descriptors of a PoX-5 staking wallet: the regular 2-of-3 wallet descriptors
28
+ * together with PoX-5 lockup descriptors, all using the wallet keys.
29
+ */
30
+ export declare function getValidatorPox5Wallet(): DescriptorValidationPolicy;
16
31
  export declare class DescriptorPolicyValidationError extends Error {
17
32
  constructor(ds: NamedDescriptorNative[], policy: DescriptorValidationPolicy);
18
33
  }
@@ -1 +1 @@
1
- {"version":3,"file":"validatePolicy.d.ts","sourceRoot":"","sources":["../../../../src/descriptor/validatePolicy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,KAAK,EAAoB,MAAM,kBAAkB,CAAC;AAG3D,OAAO,EAAqB,eAAe,EAAE,qBAAqB,EAA2B,MAAM,mBAAmB,CAAC;AAEvH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7C,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;AAErD,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,MAAM,CAAC;IAEb,QAAQ,CAAC,GAAG,EAAE,qBAAqB,EAAE,EAAE,UAAU,EAAE,SAAS,GAAG,OAAO,CAAC;CACxE;AAED,eAAO,MAAM,cAAc,EAAE,0BAG5B,CAAC;AAEF,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,MAAM,GAAG,0BAA0B,CAcvF;AAED,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,0BAA0B,EAAE,GAAG,0BAA0B,CAOtG;AAED,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,0BAA0B,EAAE,GAAG,0BAA0B,CAOrG;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,0BAA0B,CAEtF;AAED,wBAAgB,2BAA2B,IAAI,0BAA0B,CAQxE;AAED,qBAAa,+BAAgC,SAAQ,KAAK;gBAC5C,EAAE,EAAE,qBAAqB,EAAE,EAAE,MAAM,EAAE,0BAA0B;CAG5E;AAED,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,qBAAqB,EAAE,EACpC,MAAM,EAAE,0BAA0B,EAClC,UAAU,EAAE,SAAS,GACpB,IAAI,CAIN;AAED,wBAAgB,uBAAuB,CACrC,WAAW,EAAE,eAAe,EAAE,EAC9B,UAAU,EAAE,SAAS,EACrB,MAAM,EAAE,0BAA0B,GACjC,aAAa,CAMf;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,eAAe,GAAG,0BAA0B,CAiBhF"}
1
+ {"version":3,"file":"validatePolicy.d.ts","sourceRoot":"","sources":["../../../../src/descriptor/validatePolicy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAE1D,OAAO,EAAE,KAAK,EAAgC,MAAM,kBAAkB,CAAC;AAGvE,OAAO,EAAqB,eAAe,EAAE,qBAAqB,EAA2B,MAAM,mBAAmB,CAAC;AAEvH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7C,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;AAErD,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,MAAM,CAAC;IAEb,QAAQ,CAAC,GAAG,EAAE,qBAAqB,EAAE,EAAE,UAAU,EAAE,SAAS,GAAG,OAAO,CAAC;CACxE;AAED,eAAO,MAAM,cAAc,EAAE,0BAG5B,CAAC;AAWF,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,MAAM,GAAG,0BAA0B,CAevF;AAED,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,0BAA0B,EAAE,GAAG,0BAA0B,CAOtG;AAED,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,0BAA0B,EAAE,GAAG,0BAA0B,CAOrG;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,0BAA0B,CAEtF;AAED,wBAAgB,2BAA2B,IAAI,0BAA0B,CAQxE;AAwBD;;;GAGG;AACH,wBAAgB,sBAAsB,IAAI,0BAA0B,CAOnE;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,0BAA0B,EAAE,GAAG,0BAA0B,CAO1G;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,IAAI,0BAA0B,CAEnE;AAED,qBAAa,+BAAgC,SAAQ,KAAK;gBAC5C,EAAE,EAAE,qBAAqB,EAAE,EAAE,MAAM,EAAE,0BAA0B;CAG5E;AAED,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,qBAAqB,EAAE,EACpC,MAAM,EAAE,0BAA0B,EAClC,UAAU,EAAE,SAAS,GACpB,IAAI,CAIN;AAED,wBAAgB,uBAAuB,CACrC,WAAW,EAAE,eAAe,EAAE,EAC9B,UAAU,EAAE,SAAS,EACrB,MAAM,EAAE,0BAA0B,GACjC,aAAa,CAMf;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,eAAe,GAAG,0BAA0B,CAmBhF"}
@@ -6,9 +6,13 @@ exports.getValidatorEvery = getValidatorEvery;
6
6
  exports.getValidatorSome = getValidatorSome;
7
7
  exports.getValidatorOneOfTemplates = getValidatorOneOfTemplates;
8
8
  exports.getValidatorSignedByUserKey = getValidatorSignedByUserKey;
9
+ exports.getValidatorPox5Lockup = getValidatorPox5Lockup;
10
+ exports.getValidatorEachOneOf = getValidatorEachOneOf;
11
+ exports.getValidatorPox5Wallet = getValidatorPox5Wallet;
9
12
  exports.assertDescriptorPolicy = assertDescriptorPolicy;
10
13
  exports.toDescriptorMapValidate = toDescriptorMapValidate;
11
14
  exports.getPolicyForEnv = getPolicyForEnv;
15
+ const utxo_descriptors_1 = require("@bitgo/utxo-descriptors");
12
16
  const wasm_utxo_1 = require("@bitgo/wasm-utxo");
13
17
  const builder_1 = require("./builder");
14
18
  const NamedDescriptor_1 = require("./NamedDescriptor");
@@ -16,13 +20,23 @@ exports.policyAllowAll = {
16
20
  name: 'allowAll',
17
21
  validate: () => true,
18
22
  };
23
+ function tryParseDescriptor(descriptor) {
24
+ try {
25
+ return (0, builder_1.parseDescriptor)(descriptor);
26
+ }
27
+ catch {
28
+ // not a descriptor we know how to parse: it cannot match any template
29
+ return undefined;
30
+ }
31
+ }
19
32
  function getValidatorDescriptorTemplate(name) {
20
33
  return {
21
34
  name: 'descriptorTemplate(' + name + ')',
22
35
  validate(arr, walletKeys) {
23
36
  return arr.every((d) => {
24
- const parsed = (0, builder_1.parseDescriptor)(d.value);
25
- return (parsed.name === name &&
37
+ const parsed = tryParseDescriptor(d.value);
38
+ return (parsed !== undefined &&
39
+ parsed.name === name &&
26
40
  parsed.keys.length === walletKeys.length &&
27
41
  parsed.keys.every((k, i) => k.toBase58() === walletKeys[i].neutered().toBase58()));
28
42
  });
@@ -57,6 +71,59 @@ function getValidatorSignedByUserKey() {
57
71
  },
58
72
  };
59
73
  }
74
+ function isCanonicalPox5Lockup(descriptor, walletKeys) {
75
+ try {
76
+ const info = utxo_descriptors_1.pox5.parsePox5LockupDescriptor(descriptor);
77
+ if (!info) {
78
+ return false;
79
+ }
80
+ // Rebuilding the canonical descriptor from the wallet keys checks both that the
81
+ // staker keys are the wallet keys (with the `/*` derivation) and that the
82
+ // descriptor has no non-canonical encoding.
83
+ const canonical = utxo_descriptors_1.pox5.createPox5LockupDescriptor({
84
+ unlockHeight: info.unlockHeight,
85
+ stakerCommitment: info.stakerCommitment,
86
+ earlyExitKey: info.earlyExitKey,
87
+ stakerKeys: [walletKeys[0], walletKeys[1], walletKeys[2]],
88
+ });
89
+ return canonical.toString() === descriptor.toString();
90
+ }
91
+ catch {
92
+ // malformed lockup parameters
93
+ return false;
94
+ }
95
+ }
96
+ /**
97
+ * Accepts descriptors that are canonical PoX-5 lockup descriptors whose staker keys
98
+ * are the wallet keys.
99
+ */
100
+ function getValidatorPox5Lockup() {
101
+ return {
102
+ name: 'pox5Lockup',
103
+ validate(arr, walletKeys) {
104
+ return arr.every((d) => isCanonicalPox5Lockup(d.value, walletKeys));
105
+ },
106
+ };
107
+ }
108
+ /**
109
+ * Accepts descriptor groups where each descriptor individually satisfies at least one of
110
+ * the validators. Unlike `getValidatorSome`, different descriptors may match different validators.
111
+ */
112
+ function getValidatorEachOneOf(validators) {
113
+ return {
114
+ name: 'eachOneOf(' + validators.map((v) => v.name).join(',') + ')',
115
+ validate(arr, walletKeys) {
116
+ return arr.every((d) => validators.some((v) => v.validate([d], walletKeys)));
117
+ },
118
+ };
119
+ }
120
+ /**
121
+ * Accepts the descriptors of a PoX-5 staking wallet: the regular 2-of-3 wallet descriptors
122
+ * together with PoX-5 lockup descriptors, all using the wallet keys.
123
+ */
124
+ function getValidatorPox5Wallet() {
125
+ return getValidatorEachOneOf([getValidatorDescriptorTemplate('Wsh2Of3'), getValidatorPox5Lockup()]);
126
+ }
60
127
  class DescriptorPolicyValidationError extends Error {
61
128
  constructor(ds, policy) {
62
129
  super(`Descriptors ${ds.map((d) => d.value.toString())} does not match policy ${policy.name}`);
@@ -84,6 +151,8 @@ function getPolicyForEnv(env) {
84
151
  getValidatorDescriptorTemplate('Wsh2Of3CltvDrop'),
85
152
  // allow sBTC peg-in deposit descriptors where the reclaim keys match the wallet keys
86
153
  getValidatorDescriptorTemplate('SbtcDeposit'),
154
+ // allow 2-of-3 wallet descriptors together with PoX-5 lockup descriptors (stacks staking)
155
+ getValidatorPox5Wallet(),
87
156
  // allow all descriptors signed by the user key
88
157
  getValidatorSignedByUserKey(),
89
158
  ]);
@@ -91,4 +160,4 @@ function getPolicyForEnv(env) {
91
160
  return exports.policyAllowAll;
92
161
  }
93
162
  }
94
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGVQb2xpY3kuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZGVzY3JpcHRvci92YWxpZGF0ZVBvbGljeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFxQkEsd0VBY0M7QUFFRCw4Q0FPQztBQUVELDRDQU9DO0FBRUQsZ0VBRUM7QUFFRCxrRUFRQztBQVFELHdEQVFDO0FBRUQsMERBVUM7QUFFRCwwQ0FpQkM7QUFqSEQsZ0RBQTJEO0FBRTNELHVDQUE0QztBQUM1Qyx1REFBdUg7QUFZMUcsUUFBQSxjQUFjLEdBQStCO0lBQ3hELElBQUksRUFBRSxVQUFVO0lBQ2hCLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJO0NBQ3JCLENBQUM7QUFFRixTQUFnQiw4QkFBOEIsQ0FBQyxJQUFZO0lBQ3pELE9BQU87UUFDTCxJQUFJLEVBQUUscUJBQXFCLEdBQUcsSUFBSSxHQUFHLEdBQUc7UUFDeEMsUUFBUSxDQUFDLEdBQTRCLEVBQUUsVUFBcUI7WUFDMUQsT0FBTyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7Z0JBQ3JCLE1BQU0sTUFBTSxHQUFHLElBQUEseUJBQWUsRUFBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3hDLE9BQU8sQ0FDTCxNQUFNLENBQUMsSUFBSSxLQUFLLElBQUk7b0JBQ3BCLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxLQUFLLFVBQVUsQ0FBQyxNQUFNO29CQUN4QyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FDbEYsQ0FBQztZQUNKLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztLQUNGLENBQUM7QUFDSixDQUFDO0FBRUQs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RSxDQUFDO1FBQ1osS0FBSyxXQUFXLENBQUM7UUFDakIsS0FBSyxNQUFNO1lBQ1QsT0FBTyxnQkFBZ0IsQ0FBQztnQkFDdEIsMEVBQTBFO2dCQUMxRSw4QkFBOEIsQ0FBQyxTQUFTLENBQUM7Z0JBQ3pDLDhGQUE4RjtnQkFDOUYsOEJBQThCLENBQUMsaUJBQWlCLENBQUM7Z0JBQ2pELHFGQUFxRjtnQkFDckYsOEJBQThCLENBQUMsYUFBYSxDQUFDO2dCQUM3QywrQ0FBK0M7Z0JBQy9DLDJCQUEyQixFQUFFO2FBQzlCLENBQUMsQ0FBQztRQUNMO1lBQ0UsT0FBTyxzQkFBYyxDQUFDO0lBQzFCLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRW52aXJvbm1lbnROYW1lLCBUcmlwbGUgfSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuaW1wb3J0IHsgYmlwMzIsIGRlc2NyaXB0b3JXYWxsZXQgfSBmcm9tICdAYml0Z28vd2FzbS11dHhvJztcblxuaW1wb3J0IHsgcGFyc2VEZXNjcmlwdG9yIH0gZnJvbSAnLi9idWlsZGVyJztcbmltcG9ydCB7IGhhc1ZhbGlkU2lnbmF0dXJlLCBOYW1lZERlc2NyaXB0b3IsIE5hbWVkRGVzY3JpcHRvck5hdGl2ZSwgdG9OYW1lZERlc2NyaXB0b3JOYXRpdmUgfSBmcm9tICcuL05hbWVkRGVzY3JpcHRvcic7XG5cbmltcG9ydCB0eXBlIHsgRGVzY3JpcHRvck1hcCB9IGZyb20gJy4vaW5kZXgnO1xuXG5leHBvcnQgdHlwZSBLZXlUcmlwbGUgPSBUcmlwbGU8YmlwMzIuQklQMzJJbnRlcmZhY2U+O1xuXG5leHBvcnQgaW50ZXJmYWNlIERlc2NyaXB0b3JWYWxpZGF0aW9uUG9saWN5IHtcbiAgbmFtZTogc3RyaW5nO1xuXG4gIHZhbGlkYXRlKGFycjogTmFtZWREZXNjcmlwdG9yTmF0aXZlW10sIHdhbGxldEtleXM6IEtleVRyaXBsZSk6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjb25zdCBwb2xpY3lBbGxvd0FsbDogRGVzY3JpcHRvclZhbGlkYXRpb25Qb2xpY3kgPSB7XG4gIG5hbWU6ICdhbGxvd0FsbCcsXG4gIHZhbGlkYXRlOiAoKSA9PiB0cnVlLFxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFZhbGlkYXRvckRlc2NyaXB0b3JUZW1wbGF0ZShuYW1lOiBzdHJpbmcpOiBEZXNjcmlwdG9yVmFsaWRhdGlvblBvbGljeSB7XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ2Rlc2NyaXB0b3JUZW1wbGF0ZSgnICsgbmFtZSArICcpJyxcbiAgICB2YWxpZGF0ZShhcnI6IE5hbWVkRGVzY3JpcHRvck5hdGl2ZVtdLCB3YWxsZXRLZXlzOiBLZXlUcmlwbGUpOiBib29sZWFuIHtcbiAgICAgIHJldHVybiBhcnIuZXZlcnkoKGQpID0+IHtcbiAgICAgICAgY29uc3QgcGFyc2VkID0gcGFyc2VEZXNjcmlwdG9yKGQudmFsdWUpO1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIHBhcnNlZC5uYW1lID09PSBuYW1lICYmXG4gICAgICAgICAgcGFyc2VkLmtleXMubGVuZ3RoID09PSB3YWxsZXRLZXlzLmxlbmd0aCAmJlxuICAgICAgICAgIHBhcnNlZC5rZXlzLmV2ZXJ5KChrLCBpKSA9PiBrLnRvQmFzZTU4KCkgPT09IHdhbGxldEtleXNbaV0ubmV1dGVyZWQoKS50b0Jhc2U1OCgpKVxuICAgICAgICApO1xuICAgICAgfSk7XG4gICAgfSxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFZhbGlkYXRvckV2ZXJ5KHZhbGlkYXRvcnM6IERlc2NyaXB0b3JWYWxpZGF0aW9uUG9saWN5W10pOiBEZXNjcmlwdG9yVmFsaWRhdGlvblBvbGljeSB7XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ2V2ZXJ5KCcgKyB2YWxpZGF0b3JzLm1hcCgodikgPT4gdi5uYW1lKS5qb2luKCcsJykgKyAnKScsXG4gICAgdmFsaWRhdGUoYXJyOiBOYW1lZERlc2NyaXB0b3JOYXRpdmVbXSwgd2FsbGV0S2V5czogS2V5VHJpcGxlKTogYm9vbGVhbiB7XG4gICAgICByZXR1cm4gdmFsaWRhdG9ycy5ldmVyeSgodikgPT4gdi52YWxpZGF0ZShhcnIsIHdhbGxldEtleXMpKTtcbiAgICB9LFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VmFsaWRhdG9yU29tZSh2YWxpZGF0b3JzOiBEZXNjcmlwdG9yVmFsaWRhdGlvblBvbGljeVtdKTogRGVzY3JpcHRvclZhbGlkYXRpb25Qb2xpY3kge1xuICByZXR1cm4ge1xuICAgIG5hbWU6ICdzb21lKCcgKyB2YWxpZGF0b3JzLm1hcCgodikgPT4gdi5uYW1lKS5qb2luKCcsJykgKyAnKScsXG4gICAgdmFsaWRhdGUoYXJyOiBOYW1lZERlc2NyaXB0b3JOYXRpdmVbXSwgd2FsbGV0S2V5czogS2V5VHJpcGxlKTogYm9vbGVhbiB7XG4gICAgICByZXR1cm4gdmFsaWRhdG9ycy5zb21lKCh2KSA9PiB2LnZhbGlkYXRlKGFyciwgd2FsbGV0S2V5cykpO1xuICAgIH0sXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRWYWxpZGF0b3JPbmVPZlRlbXBsYXRlcyhuYW1lczogc3RyaW5nW10pOiBEZXNjcmlwdG9yVmFsaWRhdGlvblBvbGljeSB7XG4gIHJldHVybiBnZXRWYWxpZGF0b3JTb21lKG5hbWVzLm1hcChnZXRWYWxpZGF0b3JEZXNjcmlwdG9yVGVtcGxhdGUpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFZhbGlkYXRvclNpZ25lZEJ5VXNlcktleSgpOiBEZXNjcmlwdG9yVmFsaWRhdGlvblBvbGljeSB7XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ3NpZ25lZEJ5VXNlcicsXG4gICAgdmFsaWRhdGUoYXJyOiBOYW1lZERlc2NyaXB0b3JOYXRpdmVbXSwgd2FsbGV0S2V5czogS2V5VHJpcGxlKTogYm9vbGVhbiB7XG4gICAgICAvLyB0aGUgZmlyc3Qga2V5IGlzIHRoZSB1c2VyIGtleSwgYnkgY29udmVudGlvblxuICAgICAgcmV0dXJuIGFyci5ldmVyeSgoZCkgPT4gaGFzVmFsaWRTaWduYXR1cmUoZC52YWx1ZSwgd2FsbGV0S2V5c1swXSwgZC5zaWduYXR1cmVzID8/IFtdKSk7XG4gICAgfSxcbiAgfTtcbn1cblxuZXhwb3J0IGNsYXNzIERlc2NyaXB0b3JQb2xpY3lWYWxpZGF0aW9uRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGNvbnN0cnVjdG9yKGRzOiBOYW1lZERlc2NyaXB0b3JOYXRpdmVbXSwgcG9saWN5OiBEZXNjcmlwdG9yVmFsaWRhdGlvblBvbGljeSkge1xuICAgIHN1cGVyKGBEZXNjcmlwdG9ycyAke2RzLm1hcCgoZCkgPT4gZC52YWx1ZS50b1N0cmluZygpKX0gZG9lcyBub3QgbWF0Y2ggcG9saWN5ICR7cG9saWN5Lm5hbWV9YCk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydERlc2NyaXB0b3JQb2xpY3koXG4gIGRlc2NyaXB0b3JzOiBOYW1lZERlc2NyaXB0b3JOYXRpdmVbXSxcbiAgcG9saWN5OiBEZXNjcmlwdG9yVmFsaWRhdGlvblBvbGljeSxcbiAgd2FsbGV0S2V5czogS2V5VHJpcGxlXG4pOiB2b2lkIHtcbiAgaWYgKCFwb2xpY3kudmFsaWRhdGUoZGVzY3JpcHRvcnMsIHdhbGxldEtleXMpKSB7XG4gICAgdGhyb3cgbmV3IERlc2NyaXB0b3JQb2xpY3lWYWxpZGF0aW9uRXJyb3IoZGVzY3JpcHRvcnMsIHBvbGljeSk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvRGVzY3JpcHRvck1hcFZhbGlkYXRlKFxuICBkZXNjcmlwdG9yczogTmFtZWREZXNjcmlwdG9yW10sXG4gIHdhbGxldEtleXM6IEtleVRyaXBsZSxcbiAgcG9saWN5OiBEZXNjcmlwdG9yVmFsaWRhdGlvblBvbGljeVxuKTogRGVzY3JpcHRvck1hcCB7XG4gIGNvbnN0IG5hbWVkRGVzY3JpcHRvcnNOYXRpdmU6IE5hbWVkRGVzY3JpcHRvck5hdGl2ZVtdID0gZGVzY3JpcHRvcnMubWFwKCh2KSA9PlxuICAgIHRvTmFtZWREZXNjcmlwdG9yTmF0aXZlKHYsICdkZXJpdmFibGUnKVxuICApO1xuICBhc3NlcnREZXNjcmlwdG9yUG9saWN5KG5hbWVkRGVzY3JpcHRvcnNOYXRpdmUsIHBvbGljeSwgd2FsbGV0S2V5cyk7XG4gIHJldHVybiBkZXNjcmlwdG9yV2FsbGV0LnRvRGVzY3JpcHRvck1hcChuYW1lZERlc2NyaXB0b3JzTmF0aXZlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFBvbGljeUZvckVudihlbnY6IEVudmlyb25tZW50TmFtZSk6IERlc2NyaXB0b3JWYWxpZGF0aW9uUG9saWN5IHtcbiAgc3dpdGNoIChlbnYpIHtcbiAgICBjYXNlICdhZG1pblByb2QnOlxuICAgIGNhc2UgJ3Byb2QnOlxuICAgICAgcmV0dXJuIGdldFZhbGlkYXRvclNvbWUoW1xuICAgICAgICAvLyBhbGxvdyAyLW9mLTMtaXNoIGRlc2NyaXB0b3IgZ3JvdXBzIHdoZXJlIHRoZSBrZXlzIG1hdGNoIHRoZSB3YWxsZXQga2V5c1xuICAgICAgICBnZXRWYWxpZGF0b3JEZXNjcmlwdG9yVGVtcGxhdGUoJ1dzaDJPZjMnKSxcbiAgICAgICAgLy8gYWxsb3cgZGVzY3JpcHRvciBncm91cHMgd2hlcmUgYWxsIGtleXMgbWF0Y2ggdGhlIHdhbGxldCBrZXlzIHBsdXMgT1BfRFJPUCAoY29yZWRhbyBzdGFraW5nKVxuICAgICAgICBnZXRWYWxpZGF0b3JEZXNjcmlwdG9yVGVtcGxhdGUoJ1dzaDJPZjNDbHR2RHJvcCcpLFxuICAgICAgICAvLyBhbGxvdyBzQlRDIHBlZy1pbiBkZXBvc2l0IGRlc2NyaXB0b3JzIHdoZXJlIHRoZSByZWNsYWltIGtleXMgbWF0Y2ggdGhlIHdhbGxldCBrZXlzXG4gICAgICAgIGdldFZhbGlkYXRvckRlc2NyaXB0b3JUZW1wbGF0ZSgnU2J0Y0RlcG9zaXQnKSxcbiAgICAgICAgLy8gYWxsb3cgYWxsIGRlc2NyaXB0b3JzIHNpZ25lZCBieSB0aGUgdXNlciBrZXlcbiAgICAgICAgZ2V0VmFsaWRhdG9yU2lnbmVkQnlVc2VyS2V5KCksXG4gICAgICBdKTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIHBvbGljeUFsbG93QWxsO1xuICB9XG59XG4iXX0=
163
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGVQb2xpY3kuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZGVzY3JpcHRvci92YWxpZGF0ZVBvbGljeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUErQkEsd0VBZUM7QUFFRCw4Q0FPQztBQUVELDRDQU9DO0FBRUQsZ0VBRUM7QUFFRCxrRUFRQztBQTRCRCx3REFPQztBQU1ELHNEQU9DO0FBTUQsd0RBRUM7QUFRRCx3REFRQztBQUVELDBEQVVDO0FBRUQsMENBbUJDO0FBdExELDhEQUErQztBQUMvQyxnREFBdUU7QUFFdkUsdUNBQStEO0FBQy9ELHVEQUF1SDtBQVkxRyxRQUFBLGNBQWMsR0FBK0I7SUFDeEQsSUFBSSxFQUFFLFVBQVU7SUFDaEIsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUk7Q0FDckIsQ0FBQztBQUVGLFNBQVMsa0JBQWtCLENBQUMsVUFBc0I7SUFDaEQsSUFBSSxDQUFDO1FBQ0gsT0FBTyxJQUFBLHlCQUFlLEVBQUMsVUFBVSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUFDLE1BQU0sQ0FBQztRQUNQLHNFQUFzRTtRQUN0RSxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0FBQ0gsQ0FBQztBQUVELFNBQWdCLDhCQUE4QixDQUFDLElBQVk7SUFDekQsT0FBTztRQUNMLElBQUksRUFBRSxxQkFBcUIsR0FBRyxJQUFJLEdBQUcsR0FBRztRQUN4QyxRQUFRLENBQUMsR0FBNEIsRUFBRSxVQUFxQjtZQUMxRCxPQUFPLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtnQkFDckIsTUFBTSxNQUFNLEdBQUcsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUMzQyxPQUFPLENBQ0wsTUFBTSxLQUFLLFNBQVM7b0JBQ3BCLE1BQU0sQ0FBQyxJQUFJLEtBQUssSUFBSTtvQkFDcEIsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLEtBQUssVUFB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MEZBQTBGO2dCQUMxRixzQkFBc0IsRUFBRTtnQkFDeEIsK0NBQStDO2dCQUMvQywyQkFBMkIsRUFBRTthQUM5QixDQUFDLENBQUM7UUFDTDtZQUNFLE9BQU8sc0JBQWMsQ0FBQztJQUMxQixDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVudmlyb25tZW50TmFtZSwgVHJpcGxlIH0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcbmltcG9ydCB7IHBveDUgfSBmcm9tICdAYml0Z28vdXR4by1kZXNjcmlwdG9ycyc7XG5pbXBvcnQgeyBiaXAzMiwgRGVzY3JpcHRvciwgZGVzY3JpcHRvcldhbGxldCB9IGZyb20gJ0BiaXRnby93YXNtLXV0eG8nO1xuXG5pbXBvcnQgeyBEZXNjcmlwdG9yQnVpbGRlciwgcGFyc2VEZXNjcmlwdG9yIH0gZnJvbSAnLi9idWlsZGVyJztcbmltcG9ydCB7IGhhc1ZhbGlkU2lnbmF0dXJlLCBOYW1lZERlc2NyaXB0b3IsIE5hbWVkRGVzY3JpcHRvck5hdGl2ZSwgdG9OYW1lZERlc2NyaXB0b3JOYXRpdmUgfSBmcm9tICcuL05hbWVkRGVzY3JpcHRvcic7XG5cbmltcG9ydCB0eXBlIHsgRGVzY3JpcHRvck1hcCB9IGZyb20gJy4vaW5kZXgnO1xuXG5leHBvcnQgdHlwZSBLZXlUcmlwbGUgPSBUcmlwbGU8YmlwMzIuQklQMzJJbnRlcmZhY2U+O1xuXG5leHBvcnQgaW50ZXJmYWNlIERlc2NyaXB0b3JWYWxpZGF0aW9uUG9saWN5IHtcbiAgbmFtZTogc3RyaW5nO1xuXG4gIHZhbGlkYXRlKGFycjogTmFtZWREZXNjcmlwdG9yTmF0aXZlW10sIHdhbGxldEtleXM6IEtleVRyaXBsZSk6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjb25zdCBwb2xpY3lBbGxvd0FsbDogRGVzY3JpcHRvclZhbGlkYXRpb25Qb2xpY3kgPSB7XG4gIG5hbWU6ICdhbGxvd0FsbCcsXG4gIHZhbGlkYXRlOiAoKSA9PiB0cnVlLFxufTtcblxuZnVuY3Rpb24gdHJ5UGFyc2VEZXNjcmlwdG9yKGRlc2NyaXB0b3I6IERlc2NyaXB0b3IpOiBEZXNjcmlwdG9yQnVpbGRlciB8IHVuZGVmaW5lZCB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHBhcnNlRGVzY3JpcHRvcihkZXNjcmlwdG9yKTtcbiAgfSBjYXRjaCB7XG4gICAgLy8gbm90IGEgZGVzY3JpcHRvciB3ZSBrbm93IGhvdyB0byBwYXJzZTogaXQgY2Fubm90IG1hdGNoIGFueSB0ZW1wbGF0ZVxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFZhbGlkYXRvckRlc2NyaXB0b3JUZW1wbGF0ZShuYW1lOiBzdHJpbmcpOiBEZXNjcmlwdG9yVmFsaWRhdGlvblBvbGljeSB7XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ2Rlc2NyaXB0b3JUZW1wbGF0ZSgnICsgbmFtZSArICcpJyxcbiAgICB2YWxpZGF0ZShhcnI6IE5hbWVkRGVzY3JpcHRvck5hdGl2ZVtdLCB3YWxsZXRLZXlzOiBLZXlUcmlwbGUpOiBib29sZWFuIHtcbiAgICAgIHJldHVybiBhcnIuZXZlcnkoKGQpID0+IHtcbiAgICAgICAgY29uc3QgcGFyc2VkID0gdHJ5UGFyc2VEZXNjcmlwdG9yKGQudmFsdWUpO1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIHBhcnNlZCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgcGFyc2VkLm5hbWUgPT09IG5hbWUgJiZcbiAgICAgICAgICBwYXJzZWQua2V5cy5sZW5ndGggPT09IHdhbGxldEtleXMubGVuZ3RoICYmXG4gICAgICAgICAgcGFyc2VkLmtleXMuZXZlcnkoKGssIGkpID0+IGsudG9CYXNlNTgoKSA9PT0gd2FsbGV0S2V5c1tpXS5uZXV0ZXJlZCgpLnRvQmFzZTU4KCkpXG4gICAgICAgICk7XG4gICAgICB9KTtcbiAgICB9LFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VmFsaWRhdG9yRXZlcnkodmFsaWRhdG9yczogRGVzY3JpcHRvclZhbGlkYXRpb25Qb2xpY3lbXSk6IERlc2NyaXB0b3JWYWxpZGF0aW9uUG9saWN5IHtcbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnZXZlcnkoJyArIHZhbGlkYXRvcnMubWFwKCh2KSA9PiB2Lm5hbWUpLmpvaW4oJywnKSArICcpJyxcbiAgICB2YWxpZGF0ZShhcnI6IE5hbWVkRGVzY3JpcHRvck5hdGl2ZVtdLCB3YWxsZXRLZXlzOiBLZXlUcmlwbGUpOiBib29sZWFuIHtcbiAgICAgIHJldHVybiB2YWxpZGF0b3JzLmV2ZXJ5KCh2KSA9PiB2LnZhbGlkYXRlKGFyciwgd2FsbGV0S2V5cykpO1xuICAgIH0sXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRWYWxpZGF0b3JTb21lKHZhbGlkYXRvcnM6IERlc2NyaXB0b3JWYWxpZGF0aW9uUG9saWN5W10pOiBEZXNjcmlwdG9yVmFsaWRhdGlvblBvbGljeSB7XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ3NvbWUoJyArIHZhbGlkYXRvcnMubWFwKCh2KSA9PiB2Lm5hbWUpLmpvaW4oJywnKSArICcpJyxcbiAgICB2YWxpZGF0ZShhcnI6IE5hbWVkRGVzY3JpcHRvck5hdGl2ZVtdLCB3YWxsZXRLZXlzOiBLZXlUcmlwbGUpOiBib29sZWFuIHtcbiAgICAgIHJldHVybiB2YWxpZGF0b3JzLnNvbWUoKHYpID0+IHYudmFsaWRhdGUoYXJyLCB3YWxsZXRLZXlzKSk7XG4gICAgfSxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFZhbGlkYXRvck9uZU9mVGVtcGxhdGVzKG5hbWVzOiBzdHJpbmdbXSk6IERlc2NyaXB0b3JWYWxpZGF0aW9uUG9saWN5IHtcbiAgcmV0dXJuIGdldFZhbGlkYXRvclNvbWUobmFtZXMubWFwKGdldFZhbGlkYXRvckRlc2NyaXB0b3JUZW1wbGF0ZSkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VmFsaWRhdG9yU2lnbmVkQnlVc2VyS2V5KCk6IERlc2NyaXB0b3JWYWxpZGF0aW9uUG9saWN5IHtcbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnc2lnbmVkQnlVc2VyJyxcbiAgICB2YWxpZGF0ZShhcnI6IE5hbWVkRGVzY3JpcHRvck5hdGl2ZVtdLCB3YWxsZXRLZXlzOiBLZXlUcmlwbGUpOiBib29sZWFuIHtcbiAgICAgIC8vIHRoZSBmaXJzdCBrZXkgaXMgdGhlIHVzZXIga2V5LCBieSBjb252ZW50aW9uXG4gICAgICByZXR1cm4gYXJyLmV2ZXJ5KChkKSA9PiBoYXNWYWxpZFNpZ25hdHVyZShkLnZhbHVlLCB3YWxsZXRLZXlzWzBdLCBkLnNpZ25hdHVyZXMgPz8gW10pKTtcbiAgICB9LFxuICB9O1xufVxuXG5mdW5jdGlvbiBpc0Nhbm9uaWNhbFBveDVMb2NrdXAoZGVzY3JpcHRvcjogRGVzY3JpcHRvciwgd2FsbGV0S2V5czogS2V5VHJpcGxlKTogYm9vbGVhbiB7XG4gIHRyeSB7XG4gICAgY29uc3QgaW5mbyA9IHBveDUucGFyc2VQb3g1TG9ja3VwRGVzY3JpcHRvcihkZXNjcmlwdG9yKTtcbiAgICBpZiAoIWluZm8pIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgLy8gUmVidWlsZGluZyB0aGUgY2Fub25pY2FsIGRlc2NyaXB0b3IgZnJvbSB0aGUgd2FsbGV0IGtleXMgY2hlY2tzIGJvdGggdGhhdCB0aGVcbiAgICAvLyBzdGFrZXIga2V5cyBhcmUgdGhlIHdhbGxldCBrZXlzICh3aXRoIHRoZSBgLypgIGRlcml2YXRpb24pIGFuZCB0aGF0IHRoZVxuICAgIC8vIGRlc2NyaXB0b3IgaGFzIG5vIG5vbi1jYW5vbmljYWwgZW5jb2RpbmcuXG4gICAgY29uc3QgY2Fub25pY2FsID0gcG94NS5jcmVhdGVQb3g1TG9ja3VwRGVzY3JpcHRvcih7XG4gICAgICB1bmxvY2tIZWlnaHQ6IGluZm8udW5sb2NrSGVpZ2h0LFxuICAgICAgc3Rha2VyQ29tbWl0bWVudDogaW5mby5zdGFrZXJDb21taXRtZW50LFxuICAgICAgZWFybHlFeGl0S2V5OiBpbmZvLmVhcmx5RXhpdEtleSxcbiAgICAgIHN0YWtlcktleXM6IFt3YWxsZXRLZXlzWzBdLCB3YWxsZXRLZXlzWzFdLCB3YWxsZXRLZXlzWzJdXSxcbiAgICB9KTtcbiAgICByZXR1cm4gY2Fub25pY2FsLnRvU3RyaW5nKCkgPT09IGRlc2NyaXB0b3IudG9TdHJpbmcoKTtcbiAgfSBjYXRjaCB7XG4gICAgLy8gbWFsZm9ybWVkIGxvY2t1cCBwYXJhbWV0ZXJzXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8qKlxuICogQWNjZXB0cyBkZXNjcmlwdG9ycyB0aGF0IGFyZSBjYW5vbmljYWwgUG9YLTUgbG9ja3VwIGRlc2NyaXB0b3JzIHdob3NlIHN0YWtlciBrZXlzXG4gKiBhcmUgdGhlIHdhbGxldCBrZXlzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VmFsaWRhdG9yUG94NUxvY2t1cCgpOiBEZXNjcmlwdG9yVmFsaWRhdGlvblBvbGljeSB7XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ3BveDVMb2NrdXAnLFxuICAgIHZhbGlkYXRlKGFycjogTmFtZWREZXNjcmlwdG9yTmF0aXZlW10sIHdhbGxldEtleXM6IEtleVRyaXBsZSk6IGJvb2xlYW4ge1xuICAgICAgcmV0dXJuIGFyci5ldmVyeSgoZCkgPT4gaXNDYW5vbmljYWxQb3g1TG9ja3VwKGQudmFsdWUsIHdhbGxldEtleXMpKTtcbiAgICB9LFxuICB9O1xufVxuXG4vKipcbiAqIEFjY2VwdHMgZGVzY3JpcHRvciBncm91cHMgd2hlcmUgZWFjaCBkZXNjcmlwdG9yIGluZGl2aWR1YWxseSBzYXRpc2ZpZXMgYXQgbGVhc3Qgb25lIG9mXG4gKiB0aGUgdmFsaWRhdG9ycy4gVW5saWtlIGBnZXRWYWxpZGF0b3JTb21lYCwgZGlmZmVyZW50IGRlc2NyaXB0b3JzIG1heSBtYXRjaCBkaWZmZXJlbnQgdmFsaWRhdG9ycy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFZhbGlkYXRvckVhY2hPbmVPZih2YWxpZGF0b3JzOiBEZXNjcmlwdG9yVmFsaWRhdGlvblBvbGljeVtdKTogRGVzY3JpcHRvclZhbGlkYXRpb25Qb2xpY3kge1xuICByZXR1cm4ge1xuICAgIG5hbWU6ICdlYWNoT25lT2YoJyArIHZhbGlkYXRvcnMubWFwKCh2KSA9PiB2Lm5hbWUpLmpvaW4oJywnKSArICcpJyxcbiAgICB2YWxpZGF0ZShhcnI6IE5hbWVkRGVzY3JpcHRvck5hdGl2ZVtdLCB3YWxsZXRLZXlzOiBLZXlUcmlwbGUpOiBib29sZWFuIHtcbiAgICAgIHJldHVybiBhcnIuZXZlcnkoKGQpID0+IHZhbGlkYXRvcnMuc29tZSgodikgPT4gdi52YWxpZGF0ZShbZF0sIHdhbGxldEtleXMpKSk7XG4gICAgfSxcbiAgfTtcbn1cblxuLyoqXG4gKiBBY2NlcHRzIHRoZSBkZXNjcmlwdG9ycyBvZiBhIFBvWC01IHN0YWtpbmcgd2FsbGV0OiB0aGUgcmVndWxhciAyLW9mLTMgd2FsbGV0IGRlc2NyaXB0b3JzXG4gKiB0b2dldGhlciB3aXRoIFBvWC01IGxvY2t1cCBkZXNjcmlwdG9ycywgYWxsIHVzaW5nIHRoZSB3YWxsZXQga2V5cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFZhbGlkYXRvclBveDVXYWxsZXQoKTogRGVzY3JpcHRvclZhbGlkYXRpb25Qb2xpY3kge1xuICByZXR1cm4gZ2V0VmFsaWRhdG9yRWFjaE9uZU9mKFtnZXRWYWxpZGF0b3JEZXNjcmlwdG9yVGVtcGxhdGUoJ1dzaDJPZjMnKSwgZ2V0VmFsaWRhdG9yUG94NUxvY2t1cCgpXSk7XG59XG5cbmV4cG9ydCBjbGFzcyBEZXNjcmlwdG9yUG9saWN5VmFsaWRhdGlvbkVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihkczogTmFtZWREZXNjcmlwdG9yTmF0aXZlW10sIHBvbGljeTogRGVzY3JpcHRvclZhbGlkYXRpb25Qb2xpY3kpIHtcbiAgICBzdXBlcihgRGVzY3JpcHRvcnMgJHtkcy5tYXAoKGQpID0+IGQudmFsdWUudG9TdHJpbmcoKSl9IGRvZXMgbm90IG1hdGNoIHBvbGljeSAke3BvbGljeS5uYW1lfWApO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnREZXNjcmlwdG9yUG9saWN5KFxuICBkZXNjcmlwdG9yczogTmFtZWREZXNjcmlwdG9yTmF0aXZlW10sXG4gIHBvbGljeTogRGVzY3JpcHRvclZhbGlkYXRpb25Qb2xpY3ksXG4gIHdhbGxldEtleXM6IEtleVRyaXBsZVxuKTogdm9pZCB7XG4gIGlmICghcG9saWN5LnZhbGlkYXRlKGRlc2NyaXB0b3JzLCB3YWxsZXRLZXlzKSkge1xuICAgIHRocm93IG5ldyBEZXNjcmlwdG9yUG9saWN5VmFsaWRhdGlvbkVycm9yKGRlc2NyaXB0b3JzLCBwb2xpY3kpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0b0Rlc2NyaXB0b3JNYXBWYWxpZGF0ZShcbiAgZGVzY3JpcHRvcnM6IE5hbWVkRGVzY3JpcHRvcltdLFxuICB3YWxsZXRLZXlzOiBLZXlUcmlwbGUsXG4gIHBvbGljeTogRGVzY3JpcHRvclZhbGlkYXRpb25Qb2xpY3lcbik6IERlc2NyaXB0b3JNYXAge1xuICBjb25zdCBuYW1lZERlc2NyaXB0b3JzTmF0aXZlOiBOYW1lZERlc2NyaXB0b3JOYXRpdmVbXSA9IGRlc2NyaXB0b3JzLm1hcCgodikgPT5cbiAgICB0b05hbWVkRGVzY3JpcHRvck5hdGl2ZSh2LCAnZGVyaXZhYmxlJylcbiAgKTtcbiAgYXNzZXJ0RGVzY3JpcHRvclBvbGljeShuYW1lZERlc2NyaXB0b3JzTmF0aXZlLCBwb2xpY3ksIHdhbGxldEtleXMpO1xuICByZXR1cm4gZGVzY3JpcHRvcldhbGxldC50b0Rlc2NyaXB0b3JNYXAobmFtZWREZXNjcmlwdG9yc05hdGl2ZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQb2xpY3lGb3JFbnYoZW52OiBFbnZpcm9ubWVudE5hbWUpOiBEZXNjcmlwdG9yVmFsaWRhdGlvblBvbGljeSB7XG4gIHN3aXRjaCAoZW52KSB7XG4gICAgY2FzZSAnYWRtaW5Qcm9kJzpcbiAgICBjYXNlICdwcm9kJzpcbiAgICAgIHJldHVybiBnZXRWYWxpZGF0b3JTb21lKFtcbiAgICAgICAgLy8gYWxsb3cgMi1vZi0zLWlzaCBkZXNjcmlwdG9yIGdyb3VwcyB3aGVyZSB0aGUga2V5cyBtYXRjaCB0aGUgd2FsbGV0IGtleXNcbiAgICAgICAgZ2V0VmFsaWRhdG9yRGVzY3JpcHRvclRlbXBsYXRlKCdXc2gyT2YzJyksXG4gICAgICAgIC8vIGFsbG93IGRlc2NyaXB0b3IgZ3JvdXBzIHdoZXJlIGFsbCBrZXlzIG1hdGNoIHRoZSB3YWxsZXQga2V5cyBwbHVzIE9QX0RST1AgKGNvcmVkYW8gc3Rha2luZylcbiAgICAgICAgZ2V0VmFsaWRhdG9yRGVzY3JpcHRvclRlbXBsYXRlKCdXc2gyT2YzQ2x0dkRyb3AnKSxcbiAgICAgICAgLy8gYWxsb3cgc0JUQyBwZWctaW4gZGVwb3NpdCBkZXNjcmlwdG9ycyB3aGVyZSB0aGUgcmVjbGFpbSBrZXlzIG1hdGNoIHRoZSB3YWxsZXQga2V5c1xuICAgICAgICBnZXRWYWxpZGF0b3JEZXNjcmlwdG9yVGVtcGxhdGUoJ1NidGNEZXBvc2l0JyksXG4gICAgICAgIC8vIGFsbG93IDItb2YtMyB3YWxsZXQgZGVzY3JpcHRvcnMgdG9nZXRoZXIgd2l0aCBQb1gtNSBsb2NrdXAgZGVzY3JpcHRvcnMgKHN0YWNrcyBzdGFraW5nKVxuICAgICAgICBnZXRWYWxpZGF0b3JQb3g1V2FsbGV0KCksXG4gICAgICAgIC8vIGFsbG93IGFsbCBkZXNjcmlwdG9ycyBzaWduZWQgYnkgdGhlIHVzZXIga2V5XG4gICAgICAgIGdldFZhbGlkYXRvclNpZ25lZEJ5VXNlcktleSgpLFxuICAgICAgXSk7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBwb2xpY3lBbGxvd0FsbDtcbiAgfVxufVxuIl19
@@ -1,10 +1,9 @@
1
1
  import { BitGoBase } from '@bitgo/sdk-core';
2
- import { UtxoCoinName, WasmUtxoCoinName } from '../../names';
2
+ import { UtxoCoinName } from '../../names';
3
3
  import { Tbtc } from './tbtc';
4
4
  export declare class Tbtcstx extends Tbtc {
5
5
  readonly name: UtxoCoinName;
6
6
  constructor(bitgo: BitGoBase);
7
7
  static createInstance(bitgo: BitGoBase): Tbtcstx;
8
- get wasmName(): WasmUtxoCoinName;
9
8
  }
10
9
  //# sourceMappingURL=tbtcstx.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tbtcstx.d.ts","sourceRoot":"","sources":["../../../../../src/impl/btc/tbtcstx.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE7D,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B,qBAAa,OAAQ,SAAQ,IAAI;IAC/B,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAa;gBAE5B,KAAK,EAAE,SAAS;IAI5B,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO;IAIhD,IAAa,QAAQ,IAAI,gBAAgB,CAExC;CACF"}
1
+ {"version":3,"file":"tbtcstx.d.ts","sourceRoot":"","sources":["../../../../../src/impl/btc/tbtcstx.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B,qBAAa,OAAQ,SAAQ,IAAI;IAC/B,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAa;gBAE5B,KAAK,EAAE,SAAS;IAI5B,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO;CAGjD"}
@@ -10,9 +10,6 @@ class Tbtcstx extends tbtc_1.Tbtc {
10
10
  static createInstance(bitgo) {
11
11
  return new Tbtcstx(bitgo);
12
12
  }
13
- get wasmName() {
14
- return 'tbtcreg';
15
- }
16
13
  }
17
14
  exports.Tbtcstx = Tbtcstx;
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGJ0Y3N0eC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9pbXBsL2J0Yy90YnRjc3R4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUlBLGlDQUE4QjtBQUU5QixNQUFhLE9BQVEsU0FBUSxXQUFJO0lBRy9CLFlBQVksS0FBZ0I7UUFDMUIsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBSE4sU0FBSSxHQUFpQixTQUFTLENBQUM7SUFJeEMsQ0FBQztJQUVELE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBZ0I7UUFDcEMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBYSxRQUFRO1FBQ25CLE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7Q0FDRjtBQWRELDBCQWNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQml0R29CYXNlIH0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcblxuaW1wb3J0IHsgVXR4b0NvaW5OYW1lLCBXYXNtVXR4b0NvaW5OYW1lIH0gZnJvbSAnLi4vLi4vbmFtZXMnO1xuXG5pbXBvcnQgeyBUYnRjIH0gZnJvbSAnLi90YnRjJztcblxuZXhwb3J0IGNsYXNzIFRidGNzdHggZXh0ZW5kcyBUYnRjIHtcbiAgcmVhZG9ubHkgbmFtZTogVXR4b0NvaW5OYW1lID0gJ3RidGNzdHgnO1xuXG4gIGNvbnN0cnVjdG9yKGJpdGdvOiBCaXRHb0Jhc2UpIHtcbiAgICBzdXBlcihiaXRnbyk7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlSW5zdGFuY2UoYml0Z286IEJpdEdvQmFzZSk6IFRidGNzdHgge1xuICAgIHJldHVybiBuZXcgVGJ0Y3N0eChiaXRnbyk7XG4gIH1cblxuICBvdmVycmlkZSBnZXQgd2FzbU5hbWUoKTogV2FzbVV0eG9Db2luTmFtZSB7XG4gICAgcmV0dXJuICd0YnRjcmVnJztcbiAgfVxufVxuIl19
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGJ0Y3N0eC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9pbXBsL2J0Yy90YnRjc3R4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUlBLGlDQUE4QjtBQUU5QixNQUFhLE9BQVEsU0FBUSxXQUFJO0lBRy9CLFlBQVksS0FBZ0I7UUFDMUIsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBSE4sU0FBSSxHQUFpQixTQUFTLENBQUM7SUFJeEMsQ0FBQztJQUVELE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBZ0I7UUFDcEMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QixDQUFDO0NBQ0Y7QUFWRCwwQkFVQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJpdEdvQmFzZSB9IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5cbmltcG9ydCB7IFV0eG9Db2luTmFtZSB9IGZyb20gJy4uLy4uL25hbWVzJztcblxuaW1wb3J0IHsgVGJ0YyB9IGZyb20gJy4vdGJ0Yyc7XG5cbmV4cG9ydCBjbGFzcyBUYnRjc3R4IGV4dGVuZHMgVGJ0YyB7XG4gIHJlYWRvbmx5IG5hbWU6IFV0eG9Db2luTmFtZSA9ICd0YnRjc3R4JztcblxuICBjb25zdHJ1Y3RvcihiaXRnbzogQml0R29CYXNlKSB7XG4gICAgc3VwZXIoYml0Z28pO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZUluc3RhbmNlKGJpdGdvOiBCaXRHb0Jhc2UpOiBUYnRjc3R4IHtcbiAgICByZXR1cm4gbmV3IFRidGNzdHgoYml0Z28pO1xuICB9XG59XG4iXX0=
@@ -1,10 +1,9 @@
1
1
  import { BitGoBase } from '@bitgo/sdk-core';
2
- import { UtxoCoinName, WasmUtxoCoinName } from '../../names';
2
+ import { UtxoCoinName } from '../../names';
3
3
  import { Tbtc } from './tbtc';
4
4
  export declare class Tbtcstxsignet extends Tbtc {
5
5
  readonly name: UtxoCoinName;
6
6
  constructor(bitgo: BitGoBase);
7
7
  static createInstance(bitgo: BitGoBase): Tbtcstxsignet;
8
- get wasmName(): WasmUtxoCoinName;
9
8
  }
10
9
  //# sourceMappingURL=tbtcstxsignet.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tbtcstxsignet.d.ts","sourceRoot":"","sources":["../../../../../src/impl/btc/tbtcstxsignet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE7D,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B,qBAAa,aAAc,SAAQ,IAAI;IACrC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAmB;gBAElC,KAAK,EAAE,SAAS;IAI5B,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,SAAS,GAAG,aAAa;IAItD,IAAa,QAAQ,IAAI,gBAAgB,CAExC;CACF"}
1
+ {"version":3,"file":"tbtcstxsignet.d.ts","sourceRoot":"","sources":["../../../../../src/impl/btc/tbtcstxsignet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B,qBAAa,aAAc,SAAQ,IAAI;IACrC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAmB;gBAElC,KAAK,EAAE,SAAS;IAI5B,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,SAAS,GAAG,aAAa;CAGvD"}
@@ -10,9 +10,6 @@ class Tbtcstxsignet extends tbtc_1.Tbtc {
10
10
  static createInstance(bitgo) {
11
11
  return new Tbtcstxsignet(bitgo);
12
12
  }
13
- get wasmName() {
14
- return 'tbtcsig';
15
- }
16
13
  }
17
14
  exports.Tbtcstxsignet = Tbtcstxsignet;
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGJ0Y3N0eHNpZ25ldC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9pbXBsL2J0Yy90YnRjc3R4c2lnbmV0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUlBLGlDQUE4QjtBQUU5QixNQUFhLGFBQWMsU0FBUSxXQUFJO0lBR3JDLFlBQVksS0FBZ0I7UUFDMUIsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBSE4sU0FBSSxHQUFpQixlQUFlLENBQUM7SUFJOUMsQ0FBQztJQUVELE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBZ0I7UUFDcEMsT0FBTyxJQUFJLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsSUFBYSxRQUFRO1FBQ25CLE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7Q0FDRjtBQWRELHNDQWNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQml0R29CYXNlIH0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcblxuaW1wb3J0IHsgVXR4b0NvaW5OYW1lLCBXYXNtVXR4b0NvaW5OYW1lIH0gZnJvbSAnLi4vLi4vbmFtZXMnO1xuXG5pbXBvcnQgeyBUYnRjIH0gZnJvbSAnLi90YnRjJztcblxuZXhwb3J0IGNsYXNzIFRidGNzdHhzaWduZXQgZXh0ZW5kcyBUYnRjIHtcbiAgcmVhZG9ubHkgbmFtZTogVXR4b0NvaW5OYW1lID0gJ3RidGNzdHhzaWduZXQnO1xuXG4gIGNvbnN0cnVjdG9yKGJpdGdvOiBCaXRHb0Jhc2UpIHtcbiAgICBzdXBlcihiaXRnbyk7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlSW5zdGFuY2UoYml0Z286IEJpdEdvQmFzZSk6IFRidGNzdHhzaWduZXQge1xuICAgIHJldHVybiBuZXcgVGJ0Y3N0eHNpZ25ldChiaXRnbyk7XG4gIH1cblxuICBvdmVycmlkZSBnZXQgd2FzbU5hbWUoKTogV2FzbVV0eG9Db2luTmFtZSB7XG4gICAgcmV0dXJuICd0YnRjc2lnJztcbiAgfVxufVxuIl19
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGJ0Y3N0eHNpZ25ldC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9pbXBsL2J0Yy90YnRjc3R4c2lnbmV0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUlBLGlDQUE4QjtBQUU5QixNQUFhLGFBQWMsU0FBUSxXQUFJO0lBR3JDLFlBQVksS0FBZ0I7UUFDMUIsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBSE4sU0FBSSxHQUFpQixlQUFlLENBQUM7SUFJOUMsQ0FBQztJQUVELE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBZ0I7UUFDcEMsT0FBTyxJQUFJLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNsQyxDQUFDO0NBQ0Y7QUFWRCxzQ0FVQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJpdEdvQmFzZSB9IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5cbmltcG9ydCB7IFV0eG9Db2luTmFtZSB9IGZyb20gJy4uLy4uL25hbWVzJztcblxuaW1wb3J0IHsgVGJ0YyB9IGZyb20gJy4vdGJ0Yyc7XG5cbmV4cG9ydCBjbGFzcyBUYnRjc3R4c2lnbmV0IGV4dGVuZHMgVGJ0YyB7XG4gIHJlYWRvbmx5IG5hbWU6IFV0eG9Db2luTmFtZSA9ICd0YnRjc3R4c2lnbmV0JztcblxuICBjb25zdHJ1Y3RvcihiaXRnbzogQml0R29CYXNlKSB7XG4gICAgc3VwZXIoYml0Z28pO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZUluc3RhbmNlKGJpdGdvOiBCaXRHb0Jhc2UpOiBUYnRjc3R4c2lnbmV0IHtcbiAgICByZXR1cm4gbmV3IFRidGNzdHhzaWduZXQoYml0Z28pO1xuICB9XG59XG4iXX0=
@@ -5,6 +5,7 @@ export declare const utxoCoinsTestnet: readonly ["tbtc", "tbtc4", "tbtcsig", "tb
5
5
  export type UtxoCoinNameMainnet = (typeof utxoCoinsMainnet)[number];
6
6
  export type UtxoCoinNameTestnet = `t${UtxoCoinNameMainnet}` | 'tbtcsig' | 'tbtc4' | 'tbtcbgsig' | 'tbtcstx' | 'tbtcstxprivate1' | 'tbtcstxsignet';
7
7
  export type UtxoCoinName = UtxoCoinNameMainnet | UtxoCoinNameTestnet;
8
+ /** Coin name used by wasm-utxo. Private Bitcoin networks map to a shared codec. */
8
9
  export declare function toWasmUtxoCoinName(coinName: UtxoCoinName | WasmUtxoCoinName): WasmUtxoCoinName;
9
10
  export declare function isUtxoCoinNameMainnet(coinName: string): coinName is UtxoCoinNameMainnet;
10
11
  export declare function isUtxoCoinNameTestnet(coinName: string): coinName is UtxoCoinNameTestnet;
@@ -1 +1 @@
1
- {"version":3,"file":"names.d.ts","sourceRoot":"","sources":["../../../src/names.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE7D,MAAM,MAAM,gBAAgB,GAAG,QAAQ,CAAC;AAExC,eAAO,MAAM,gBAAgB,sFAAuF,CAAC;AACrH,eAAO,MAAM,gBAAgB,gLAiBnB,CAAC;AAEX,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC;AACpE,MAAM,MAAM,mBAAmB,GAC3B,IAAI,mBAAmB,EAAE,GACzB,SAAS,GACT,OAAO,GACP,WAAW,GACX,SAAS,GACT,iBAAiB,GACjB,eAAe,CAAC;AACpB,MAAM,MAAM,YAAY,GAAG,mBAAmB,GAAG,mBAAmB,CAAC;AAErE,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,YAAY,GAAG,gBAAgB,GAAG,gBAAgB,CAK9F;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,IAAI,mBAAmB,CAEvF;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,IAAI,mBAAmB,CAEvF;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,IAAI,YAAY,CAEzE;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,YAAY,GAAG,mBAAmB,CAe9E;AA2BD,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,YAAY,GAAG,MAAM,CA4BtE;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAE7D;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAE7D"}
1
+ {"version":3,"file":"names.d.ts","sourceRoot":"","sources":["../../../src/names.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE7D,MAAM,MAAM,gBAAgB,GAAG,QAAQ,CAAC;AAExC,eAAO,MAAM,gBAAgB,sFAAuF,CAAC;AACrH,eAAO,MAAM,gBAAgB,gLAiBnB,CAAC;AAEX,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC;AACpE,MAAM,MAAM,mBAAmB,GAC3B,IAAI,mBAAmB,EAAE,GACzB,SAAS,GACT,OAAO,GACP,WAAW,GACX,SAAS,GACT,iBAAiB,GACjB,eAAe,CAAC;AACpB,MAAM,MAAM,YAAY,GAAG,mBAAmB,GAAG,mBAAmB,CAAC;AAErE,mFAAmF;AACnF,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,YAAY,GAAG,gBAAgB,GAAG,gBAAgB,CAY9F;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,IAAI,mBAAmB,CAEvF;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,IAAI,mBAAmB,CAEvF;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,IAAI,YAAY,CAEzE;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,YAAY,GAAG,mBAAmB,CAe9E;AA2BD,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,YAAY,GAAG,MAAM,CA4BtE;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAE7D;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAE7D"}
@@ -29,7 +29,15 @@ exports.utxoCoinsTestnet = [
29
29
  'tpearl',
30
30
  'tzec',
31
31
  ];
32
+ /** Coin name used by wasm-utxo. Private Bitcoin networks map to a shared codec. */
32
33
  function toWasmUtxoCoinName(coinName) {
34
+ switch (coinName) {
35
+ case 'tbtcstx':
36
+ case 'tbtcstxprivate1':
37
+ return 'tbtcreg';
38
+ case 'tbtcstxsignet':
39
+ return 'tbtcsig';
40
+ }
33
41
  if (!(0, wasm_utxo_1.isCoinName)(coinName)) {
34
42
  throw new Error(`coin ${coinName} is not supported by wasm-utxo`);
35
43
  }
@@ -116,4 +124,4 @@ function isTestnetCoin(coinName) {
116
124
  function isMainnetCoin(coinName) {
117
125
  return isUtxoCoinNameMainnet(coinName);
118
126
  }
119
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmFtZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbmFtZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBbUNBLGdEQUtDO0FBRUQsc0RBRUM7QUFFRCxzREFFQztBQUVELHdDQUVDO0FBRUQsZ0RBZUM7QUEyQkQsMERBNEJDO0FBRUQsc0NBRUM7QUFFRCxzQ0FFQztBQXBJRCxnREFBNkQ7QUFJaEQsUUFBQSxnQkFBZ0IsR0FBRyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssQ0FBVSxDQUFDO0FBQ3hHLFFBQUEsZ0JBQWdCLEdBQUc7SUFDOUIsTUFBTTtJQUNOLE9BQU87SUFDUCxTQUFTO0lBQ1QsV0FBVztJQUNYLFNBQVM7SUFDVCxpQkFBaUI7SUFDakIsZUFBZTtJQUNmLE1BQU07SUFDTixPQUFPO0lBQ1AsTUFBTTtJQUNOLE1BQU07SUFDTixPQUFPO0lBQ1AsT0FBTztJQUNQLE1BQU07SUFDTixRQUFRO0lBQ1IsTUFBTTtDQUNFLENBQUM7QUFhWCxTQUFnQixrQkFBa0IsQ0FBQyxRQUF5QztJQUMxRSxJQUFJLENBQUMsSUFBQSxzQkFBVSxFQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7UUFDMUIsTUFBTSxJQUFJLEtBQUssQ0FBQyxRQUFRLFFBQVEsZ0NBQWdDLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBQ0QsT0FBTyxRQUFRLENBQUM7QUFDbEIsQ0FBQztBQUVELFNBQWdCLHFCQUFxQixDQUFDLFFBQWdCO0lBQ3BELE9BQU8sd0JBQWdCLENBQUMsUUFBUSxDQUFDLFFBQStCLENBQUMsQ0FBQztBQUNwRSxDQUFDO0FBRUQsU0FBZ0IscUJBQXFCLENBQUMsUUFBZ0I7SUFDcEQsT0FBTyx3QkFBZ0IsQ0FBQyxRQUFRLENBQUMsUUFBK0IsQ0FBQyxDQUFDO0FBQ3BFLENBQUM7QUFFRCxTQUFnQixjQUFjLENBQUMsUUFBZ0I7SUFDN0MsT0FBTyxxQkFBcUIsQ0FBQyxRQUFRLENBQUMsSUFBSSxxQkFBcUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUM1RSxDQUFDO0FBRUQsU0FBZ0Isa0JBQWtCLENBQUMsUUFBc0I7SUFDdkQsSUFBSSxxQkFBcUIsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1FBQ3BDLE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFDRCxRQUFRLFFBQVEsRUFBRSxDQUFDO1FBQ2pCLEtBQUssT0FBTyxDQUFDO1FBQ2IsS0FBSyxTQUFTLENBQUM7UUFDZixLQUFLLFdBQVcsQ0FBQztRQUNqQixLQUFLLFNBQVMsQ0FBQztRQUNmLEtBQUssaUJBQWlCLENBQUM7UUFDdkIsS0FBSyxlQUFlO1lBQ2xCLE9BQU8sS0FBSyxDQUFDO1FBQ2Y7WUFDRSxPQUFPLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUF3QixDQUFDO0lBQ3BELENBQUM7QUFDSCxDQUFDO0FBRUQsU0FBUyxzQkFBc0IsQ0FBQyxRQUE2QjtJQUMzRCxRQUFRLFFBQVEsRUFBRSxDQUFDO1FBQ2pCLEtBQUssS0FBSztZQUNSLE9BQU8sU0FBUyxDQUFDO1FBQ25CLEtBQUssS0FBSztZQUNSLE9BQU8sY0FBYyxDQUFDO1FBQ3hCLEtBQUssTUFBTTtZQUNULE9BQU8sYUFBYSxDQUFDO1FBQ3ZCLEtBQUssS0FBSztZQUNSLE9BQU8sY0FBYyxDQUFDO1FBQ3hCLEtBQUssS0FBSztZQUNSLE9BQU8sWUFBWSxDQUFDO1FBQ3RCLEtBQUssTUFBTTtZQUNULE9BQU8sTUFBTSxDQUFDO1FBQ2hCLEtBQUssTUFBTTtZQUNULE9BQU8sVUFBVSxDQUFDO1FBQ3BCLEtBQUssS0FBSztZQUNSLE9BQU8sVUFBVSxDQUFDO1FBQ3BCLEtBQUssT0FBTztZQUNWLE9BQU8sT0FBTyxDQUFDO1FBQ2pCLEtBQUssS0FBSztZQUNSLE9BQU8sT0FBTyxDQUFDO0lBQ25CLENBQUM7QUFDSCxDQUFDO0FBRUQsU0FBZ0IsdUJBQXVCLENBQUMsUUFBc0I7SUFDNUQsSUFBSSxRQUFRLEtBQUssaUJBQWlCLEVBQUUsQ0FBQztRQUNuQyxPQUFPLG9DQUFvQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxJQUFJLFFBQVEsS0FBSyxlQUFlLEVBQUUsQ0FBQztRQUNqQyxPQUFPLHlCQUF5QixDQUFDO0lBQ25DLENBQUM7SUFFRCxJQUFJLE1BQWMsQ0FBQztJQUNuQixRQUFRLFFBQVEsRUFBRSxDQUFDO1FBQ2pCLEtBQUssT0FBTztZQUNWLE1BQU0sR0FBRyxXQUFXLENBQUM7WUFDckIsTUFBTTtRQUNSLEtBQUssU0FBUztZQUNaLE1BQU0sR0FBRyxnQkFBZ0IsQ0FBQztZQUMxQixNQUFNO1FBQ1IsS0FBSyxXQUFXO1lBQ2QsTUFBTSxHQUFHLGVBQWUsQ0FBQztZQUN6QixNQUFNO1FBQ1IsS0FBSyxTQUFTO1lBQ1osTUFBTSxHQUFHLFNBQVMsQ0FBQztZQUNuQixNQUFNO1FBQ1I7WUFDRSxNQUFNLEdBQUcscUJBQXFCLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQy9ELENBQUM7SUFFRCxPQUFPLE1BQU0sR0FBRyxzQkFBc0IsQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0FBQ3ZFLENBQUM7QUFFRCxTQUFnQixhQUFhLENBQUMsUUFBc0I7SUFDbEQsT0FBTyxxQkFBcUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUN6QyxDQUFDO0FBRUQsU0FBZ0IsYUFBYSxDQUFDLFFBQXNCO0lBQ2xELE9BQU8scUJBQXFCLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDekMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzQ29pbk5hbWUsIHR5cGUgQ29pbk5hbWUgfSBmcm9tICdAYml0Z28vd2FzbS11dHhvJztcblxuZXhwb3J0IHR5cGUgV2FzbVV0eG9Db2luTmFtZSA9IENvaW5OYW1lO1xuXG5leHBvcnQgY29uc3QgdXR4b0NvaW5zTWFpbm5ldCA9IFsnYnRjJywgJ2JjaCcsICdiY2hhJywgJ2JzdicsICdidGcnLCAnZGFzaCcsICdkb2dlJywgJ2x0YycsICdwZWFybCcsICd6ZWMnXSBhcyBjb25zdDtcbmV4cG9ydCBjb25zdCB1dHhvQ29pbnNUZXN0bmV0ID0gW1xuICAndGJ0YycsXG4gICd0YnRjNCcsXG4gICd0YnRjc2lnJyxcbiAgJ3RidGNiZ3NpZycsXG4gICd0YnRjc3R4JyxcbiAgJ3RidGNzdHhwcml2YXRlMScsXG4gICd0YnRjc3R4c2lnbmV0JyxcbiAgJ3RiY2gnLFxuICAndGJjaGEnLFxuICAndGJzdicsXG4gICd0YnRnJyxcbiAgJ3RkYXNoJyxcbiAgJ3Rkb2dlJyxcbiAgJ3RsdGMnLFxuICAndHBlYXJsJyxcbiAgJ3R6ZWMnLFxuXSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgVXR4b0NvaW5OYW1lTWFpbm5ldCA9ICh0eXBlb2YgdXR4b0NvaW5zTWFpbm5ldClbbnVtYmVyXTtcbmV4cG9ydCB0eXBlIFV0eG9Db2luTmFtZVRlc3RuZXQgPVxuICB8IGB0JHtVdHhvQ29pbk5hbWVNYWlubmV0fWBcbiAgfCAndGJ0Y3NpZydcbiAgfCAndGJ0YzQnXG4gIHwgJ3RidGNiZ3NpZydcbiAgfCAndGJ0Y3N0eCdcbiAgfCAndGJ0Y3N0eHByaXZhdGUxJ1xuICB8ICd0YnRjc3R4c2lnbmV0JztcbmV4cG9ydCB0eXBlIFV0eG9Db2luTmFtZSA9IFV0eG9Db2luTmFtZU1haW5uZXQgfCBVdHhvQ29pbk5hbWVUZXN0bmV0O1xuXG5leHBvcnQgZnVuY3Rpb24gdG9XYXNtVXR4b0NvaW5OYW1lKGNvaW5OYW1lOiBVdHhvQ29pbk5hbWUgfCBXYXNtVXR4b0NvaW5OYW1lKTogV2FzbVV0eG9Db2luTmFtZSB7XG4gIGlmICghaXNDb2luTmFtZShjb2luTmFtZSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYGNvaW4gJHtjb2luTmFtZX0gaXMgbm90IHN1cHBvcnRlZCBieSB3YXNtLXV0eG9gKTtcbiAgfVxuICByZXR1cm4gY29pbk5hbWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1V0eG9Db2luTmFtZU1haW5uZXQoY29pbk5hbWU6IHN0cmluZyk6IGNvaW5OYW1lIGlzIFV0eG9Db2luTmFtZU1haW5uZXQge1xuICByZXR1cm4gdXR4b0NvaW5zTWFpbm5ldC5pbmNsdWRlcyhjb2luTmFtZSBhcyBVdHhvQ29pbk5hbWVNYWlubmV0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzVXR4b0NvaW5OYW1lVGVzdG5ldChjb2luTmFtZTogc3RyaW5nKTogY29pbk5hbWUgaXMgVXR4b0NvaW5OYW1lVGVzdG5ldCB7XG4gIHJldHVybiB1dHhvQ29pbnNUZXN0bmV0LmluY2x1ZGVzKGNvaW5OYW1lIGFzIFV0eG9Db2luTmFtZVRlc3RuZXQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNVdHhvQ29pbk5hbWUoY29pbk5hbWU6IHN0cmluZyk6IGNvaW5OYW1lIGlzIFV0eG9Db2luTmFtZSB7XG4gIHJldHVybiBpc1V0eG9Db2luTmFtZU1haW5uZXQoY29pbk5hbWUpIHx8IGlzVXR4b0NvaW5OYW1lVGVzdG5ldChjb2luTmFtZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRNYWlubmV0Q29pbk5hbWUoY29pbk5hbWU6IFV0eG9Db2luTmFtZSk6IFV0eG9Db2luTmFtZU1haW5uZXQge1xuICBpZiAoaXNVdHhvQ29pbk5hbWVNYWlubmV0KGNvaW5OYW1lKSkge1xuICAgIHJldHVybiBjb2luTmFtZTtcbiAgfVxuICBzd2l0Y2ggKGNvaW5OYW1lKSB7XG4gICAgY2FzZSAndGJ0YzQnOlxuICAgIGNhc2UgJ3RidGNzaWcnOlxuICAgIGNhc2UgJ3RidGNiZ3NpZyc6XG4gICAgY2FzZSAndGJ0Y3N0eCc6XG4gICAgY2FzZSAndGJ0Y3N0eHByaXZhdGUxJzpcbiAgICBjYXNlICd0YnRjc3R4c2lnbmV0JzpcbiAgICAgIHJldHVybiAnYnRjJztcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGNvaW5OYW1lLnNsaWNlKDEpIGFzIFV0eG9Db2luTmFtZU1haW5uZXQ7XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0QmFzZU5hbWVGcm9tTWFpbm5ldChjb2luTmFtZTogVXR4b0NvaW5OYW1lTWFpbm5ldCk6IHN0cmluZyB7XG4gIHN3aXRjaCAoY29pbk5hbWUpIHtcbiAgICBjYXNlICdidGMnOlxuICAgICAgcmV0dXJuICdCaXRjb2luJztcbiAgICBjYXNlICdiY2gnOlxuICAgICAgcmV0dXJuICdCaXRjb2luIENhc2gnO1xuICAgIGNhc2UgJ2JjaGEnOlxuICAgICAgcmV0dXJuICdCaXRjb2luIEFCQyc7XG4gICAgY2FzZSAnYnRnJzpcbiAgICAgIHJldHVybiAnQml0Y29pbiBHb2xkJztcbiAgICBjYXNlICdic3YnOlxuICAgICAgcmV0dXJuICdCaXRjb2luIFNWJztcbiAgICBjYXNlICdkYXNoJzpcbiAgICAgIHJldHVybiAnRGFzaCc7XG4gICAgY2FzZSAnZG9nZSc6XG4gICAgICByZXR1cm4gJ0RvZ2Vjb2luJztcbiAgICBjYXNlICdsdGMnOlxuICAgICAgcmV0dXJuICdMaXRlY29pbic7XG4gICAgY2FzZSAncGVhcmwnOlxuICAgICAgcmV0dXJuICdQZWFybCc7XG4gICAgY2FzZSAnemVjJzpcbiAgICAgIHJldHVybiAnWkNhc2gnO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRGdWxsTmFtZUZyb21Db2luTmFtZShjb2luTmFtZTogVXR4b0NvaW5OYW1lKTogc3RyaW5nIHtcbiAgaWYgKGNvaW5OYW1lID09PSAndGJ0Y3N0eHByaXZhdGUxJykge1xuICAgIHJldHVybiAnU3RhY2tzIEJpdGNvaW4gKFByaXZhdGUtMSBSZWd0ZXN0KSc7XG4gIH1cblxuICBpZiAoY29pbk5hbWUgPT09ICd0YnRjc3R4c2lnbmV0Jykge1xuICAgIHJldHVybiAnU3RhY2tzIEJpdGNvaW4gKFNpZ25ldCknO1xuICB9XG5cbiAgbGV0IHByZWZpeDogc3RyaW5nO1xuICBzd2l0Y2ggKGNvaW5OYW1lKSB7XG4gICAgY2FzZSAndGJ0YzQnOlxuICAgICAgcHJlZml4ID0gJ1Rlc3RuZXQ0ICc7XG4gICAgICBicmVhaztcbiAgICBjYXNlICd0YnRjc2lnJzpcbiAgICAgIHByZWZpeCA9ICdQdWJsaWMgU2lnbmV0ICc7XG4gICAgICBicmVhaztcbiAgICBjYXNlICd0YnRjYmdzaWcnOlxuICAgICAgcHJlZml4ID0gJ0JpdEdvIFNpZ25ldCAnO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAndGJ0Y3N0eCc6XG4gICAgICBwcmVmaXggPSAnU3RhY2tzICc7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgcHJlZml4ID0gaXNVdHhvQ29pbk5hbWVUZXN0bmV0KGNvaW5OYW1lKSA/ICdUZXN0bmV0ICcgOiAnJztcbiAgfVxuXG4gIHJldHVybiBwcmVmaXggKyBnZXRCYXNlTmFtZUZyb21NYWlubmV0KGdldE1haW5uZXRDb2luTmFtZShjb2luTmFtZSkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNUZXN0bmV0Q29pbihjb2luTmFtZTogVXR4b0NvaW5OYW1lKTogYm9vbGVhbiB7XG4gIHJldHVybiBpc1V0eG9Db2luTmFtZVRlc3RuZXQoY29pbk5hbWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNNYWlubmV0Q29pbihjb2luTmFtZTogVXR4b0NvaW5OYW1lKTogYm9vbGVhbiB7XG4gIHJldHVybiBpc1V0eG9Db2luTmFtZU1haW5uZXQoY29pbk5hbWUpO1xufVxuIl19
127
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmFtZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbmFtZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBb0NBLGdEQVlDO0FBRUQsc0RBRUM7QUFFRCxzREFFQztBQUVELHdDQUVDO0FBRUQsZ0RBZUM7QUEyQkQsMERBNEJDO0FBRUQsc0NBRUM7QUFFRCxzQ0FFQztBQTVJRCxnREFBNkQ7QUFJaEQsUUFBQSxnQkFBZ0IsR0FBRyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssQ0FBVSxDQUFDO0FBQ3hHLFFBQUEsZ0JBQWdCLEdBQUc7SUFDOUIsTUFBTTtJQUNOLE9BQU87SUFDUCxTQUFTO0lBQ1QsV0FBVztJQUNYLFNBQVM7SUFDVCxpQkFBaUI7SUFDakIsZUFBZTtJQUNmLE1BQU07SUFDTixPQUFPO0lBQ1AsTUFBTTtJQUNOLE1BQU07SUFDTixPQUFPO0lBQ1AsT0FBTztJQUNQLE1BQU07SUFDTixRQUFRO0lBQ1IsTUFBTTtDQUNFLENBQUM7QUFhWCxtRkFBbUY7QUFDbkYsU0FBZ0Isa0JBQWtCLENBQUMsUUFBeUM7SUFDMUUsUUFBUSxRQUFRLEVBQUUsQ0FBQztRQUNqQixLQUFLLFNBQVMsQ0FBQztRQUNmLEtBQUssaUJBQWlCO1lBQ3BCLE9BQU8sU0FBUyxDQUFDO1FBQ25CLEtBQUssZUFBZTtZQUNsQixPQUFPLFNBQVMsQ0FBQztJQUNyQixDQUFDO0lBQ0QsSUFBSSxDQUFDLElBQUEsc0JBQVUsRUFBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1FBQzFCLE1BQU0sSUFBSSxLQUFLLENBQUMsUUFBUSxRQUFRLGdDQUFnQyxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUNELE9BQU8sUUFBUSxDQUFDO0FBQ2xCLENBQUM7QUFFRCxTQUFnQixxQkFBcUIsQ0FBQyxRQUFnQjtJQUNwRCxP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c0NvaW5OYW1lLCB0eXBlIENvaW5OYW1lIH0gZnJvbSAnQGJpdGdvL3dhc20tdXR4byc7XG5cbmV4cG9ydCB0eXBlIFdhc21VdHhvQ29pbk5hbWUgPSBDb2luTmFtZTtcblxuZXhwb3J0IGNvbnN0IHV0eG9Db2luc01haW5uZXQgPSBbJ2J0YycsICdiY2gnLCAnYmNoYScsICdic3YnLCAnYnRnJywgJ2Rhc2gnLCAnZG9nZScsICdsdGMnLCAncGVhcmwnLCAnemVjJ10gYXMgY29uc3Q7XG5leHBvcnQgY29uc3QgdXR4b0NvaW5zVGVzdG5ldCA9IFtcbiAgJ3RidGMnLFxuICAndGJ0YzQnLFxuICAndGJ0Y3NpZycsXG4gICd0YnRjYmdzaWcnLFxuICAndGJ0Y3N0eCcsXG4gICd0YnRjc3R4cHJpdmF0ZTEnLFxuICAndGJ0Y3N0eHNpZ25ldCcsXG4gICd0YmNoJyxcbiAgJ3RiY2hhJyxcbiAgJ3Ric3YnLFxuICAndGJ0ZycsXG4gICd0ZGFzaCcsXG4gICd0ZG9nZScsXG4gICd0bHRjJyxcbiAgJ3RwZWFybCcsXG4gICd0emVjJyxcbl0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIFV0eG9Db2luTmFtZU1haW5uZXQgPSAodHlwZW9mIHV0eG9Db2luc01haW5uZXQpW251bWJlcl07XG5leHBvcnQgdHlwZSBVdHhvQ29pbk5hbWVUZXN0bmV0ID1cbiAgfCBgdCR7VXR4b0NvaW5OYW1lTWFpbm5ldH1gXG4gIHwgJ3RidGNzaWcnXG4gIHwgJ3RidGM0J1xuICB8ICd0YnRjYmdzaWcnXG4gIHwgJ3RidGNzdHgnXG4gIHwgJ3RidGNzdHhwcml2YXRlMSdcbiAgfCAndGJ0Y3N0eHNpZ25ldCc7XG5leHBvcnQgdHlwZSBVdHhvQ29pbk5hbWUgPSBVdHhvQ29pbk5hbWVNYWlubmV0IHwgVXR4b0NvaW5OYW1lVGVzdG5ldDtcblxuLyoqIENvaW4gbmFtZSB1c2VkIGJ5IHdhc20tdXR4by4gUHJpdmF0ZSBCaXRjb2luIG5ldHdvcmtzIG1hcCB0byBhIHNoYXJlZCBjb2RlYy4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b1dhc21VdHhvQ29pbk5hbWUoY29pbk5hbWU6IFV0eG9Db2luTmFtZSB8IFdhc21VdHhvQ29pbk5hbWUpOiBXYXNtVXR4b0NvaW5OYW1lIHtcbiAgc3dpdGNoIChjb2luTmFtZSkge1xuICAgIGNhc2UgJ3RidGNzdHgnOlxuICAgIGNhc2UgJ3RidGNzdHhwcml2YXRlMSc6XG4gICAgICByZXR1cm4gJ3RidGNyZWcnO1xuICAgIGNhc2UgJ3RidGNzdHhzaWduZXQnOlxuICAgICAgcmV0dXJuICd0YnRjc2lnJztcbiAgfVxuICBpZiAoIWlzQ29pbk5hbWUoY29pbk5hbWUpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBjb2luICR7Y29pbk5hbWV9IGlzIG5vdCBzdXBwb3J0ZWQgYnkgd2FzbS11dHhvYCk7XG4gIH1cbiAgcmV0dXJuIGNvaW5OYW1lO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNVdHhvQ29pbk5hbWVNYWlubmV0KGNvaW5OYW1lOiBzdHJpbmcpOiBjb2luTmFtZSBpcyBVdHhvQ29pbk5hbWVNYWlubmV0IHtcbiAgcmV0dXJuIHV0eG9Db2luc01haW5uZXQuaW5jbHVkZXMoY29pbk5hbWUgYXMgVXR4b0NvaW5OYW1lTWFpbm5ldCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1V0eG9Db2luTmFtZVRlc3RuZXQoY29pbk5hbWU6IHN0cmluZyk6IGNvaW5OYW1lIGlzIFV0eG9Db2luTmFtZVRlc3RuZXQge1xuICByZXR1cm4gdXR4b0NvaW5zVGVzdG5ldC5pbmNsdWRlcyhjb2luTmFtZSBhcyBVdHhvQ29pbk5hbWVUZXN0bmV0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzVXR4b0NvaW5OYW1lKGNvaW5OYW1lOiBzdHJpbmcpOiBjb2luTmFtZSBpcyBVdHhvQ29pbk5hbWUge1xuICByZXR1cm4gaXNVdHhvQ29pbk5hbWVNYWlubmV0KGNvaW5OYW1lKSB8fCBpc1V0eG9Db2luTmFtZVRlc3RuZXQoY29pbk5hbWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWFpbm5ldENvaW5OYW1lKGNvaW5OYW1lOiBVdHhvQ29pbk5hbWUpOiBVdHhvQ29pbk5hbWVNYWlubmV0IHtcbiAgaWYgKGlzVXR4b0NvaW5OYW1lTWFpbm5ldChjb2luTmFtZSkpIHtcbiAgICByZXR1cm4gY29pbk5hbWU7XG4gIH1cbiAgc3dpdGNoIChjb2luTmFtZSkge1xuICAgIGNhc2UgJ3RidGM0JzpcbiAgICBjYXNlICd0YnRjc2lnJzpcbiAgICBjYXNlICd0YnRjYmdzaWcnOlxuICAgIGNhc2UgJ3RidGNzdHgnOlxuICAgIGNhc2UgJ3RidGNzdHhwcml2YXRlMSc6XG4gICAgY2FzZSAndGJ0Y3N0eHNpZ25ldCc6XG4gICAgICByZXR1cm4gJ2J0Yyc7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBjb2luTmFtZS5zbGljZSgxKSBhcyBVdHhvQ29pbk5hbWVNYWlubmV0O1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldEJhc2VOYW1lRnJvbU1haW5uZXQoY29pbk5hbWU6IFV0eG9Db2luTmFtZU1haW5uZXQpOiBzdHJpbmcge1xuICBzd2l0Y2ggKGNvaW5OYW1lKSB7XG4gICAgY2FzZSAnYnRjJzpcbiAgICAgIHJldHVybiAnQml0Y29pbic7XG4gICAgY2FzZSAnYmNoJzpcbiAgICAgIHJldHVybiAnQml0Y29pbiBDYXNoJztcbiAgICBjYXNlICdiY2hhJzpcbiAgICAgIHJldHVybiAnQml0Y29pbiBBQkMnO1xuICAgIGNhc2UgJ2J0Zyc6XG4gICAgICByZXR1cm4gJ0JpdGNvaW4gR29sZCc7XG4gICAgY2FzZSAnYnN2JzpcbiAgICAgIHJldHVybiAnQml0Y29pbiBTVic7XG4gICAgY2FzZSAnZGFzaCc6XG4gICAgICByZXR1cm4gJ0Rhc2gnO1xuICAgIGNhc2UgJ2RvZ2UnOlxuICAgICAgcmV0dXJuICdEb2dlY29pbic7XG4gICAgY2FzZSAnbHRjJzpcbiAgICAgIHJldHVybiAnTGl0ZWNvaW4nO1xuICAgIGNhc2UgJ3BlYXJsJzpcbiAgICAgIHJldHVybiAnUGVhcmwnO1xuICAgIGNhc2UgJ3plYyc6XG4gICAgICByZXR1cm4gJ1pDYXNoJztcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RnVsbE5hbWVGcm9tQ29pbk5hbWUoY29pbk5hbWU6IFV0eG9Db2luTmFtZSk6IHN0cmluZyB7XG4gIGlmIChjb2luTmFtZSA9PT0gJ3RidGNzdHhwcml2YXRlMScpIHtcbiAgICByZXR1cm4gJ1N0YWNrcyBCaXRjb2luIChQcml2YXRlLTEgUmVndGVzdCknO1xuICB9XG5cbiAgaWYgKGNvaW5OYW1lID09PSAndGJ0Y3N0eHNpZ25ldCcpIHtcbiAgICByZXR1cm4gJ1N0YWNrcyBCaXRjb2luIChTaWduZXQpJztcbiAgfVxuXG4gIGxldCBwcmVmaXg6IHN0cmluZztcbiAgc3dpdGNoIChjb2luTmFtZSkge1xuICAgIGNhc2UgJ3RidGM0JzpcbiAgICAgIHByZWZpeCA9ICdUZXN0bmV0NCAnO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAndGJ0Y3NpZyc6XG4gICAgICBwcmVmaXggPSAnUHVibGljIFNpZ25ldCAnO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAndGJ0Y2Jnc2lnJzpcbiAgICAgIHByZWZpeCA9ICdCaXRHbyBTaWduZXQgJztcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3RidGNzdHgnOlxuICAgICAgcHJlZml4ID0gJ1N0YWNrcyAnO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIHByZWZpeCA9IGlzVXR4b0NvaW5OYW1lVGVzdG5ldChjb2luTmFtZSkgPyAnVGVzdG5ldCAnIDogJyc7XG4gIH1cblxuICByZXR1cm4gcHJlZml4ICsgZ2V0QmFzZU5hbWVGcm9tTWFpbm5ldChnZXRNYWlubmV0Q29pbk5hbWUoY29pbk5hbWUpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzVGVzdG5ldENvaW4oY29pbk5hbWU6IFV0eG9Db2luTmFtZSk6IGJvb2xlYW4ge1xuICByZXR1cm4gaXNVdHhvQ29pbk5hbWVUZXN0bmV0KGNvaW5OYW1lKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzTWFpbm5ldENvaW4oY29pbk5hbWU6IFV0eG9Db2luTmFtZSk6IGJvb2xlYW4ge1xuICByZXR1cm4gaXNVdHhvQ29pbk5hbWVNYWlubmV0KGNvaW5OYW1lKTtcbn1cbiJdfQ==
@@ -6,6 +6,7 @@ export interface ExplanationOutput {
6
6
  export interface TransactionExplanation<TFee> {
7
7
  outputs: ExplanationOutput[];
8
8
  changeOutputs: ExplanationOutput[];
9
+ locktime: number;
9
10
  fee: {
10
11
  fee: TFee;
11
12
  payGoFeeString: string | number | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"TransactionExplanation.d.ts","sourceRoot":"","sources":["../../../../src/offlineVault/TransactionExplanation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAKxC,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,sBAAsB,CAAC,IAAI;IAC1C,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAC7B,aAAa,EAAE,iBAAiB,EAAE,CAAC;IACnC,GAAG,EAAE;QAEH,GAAG,EAAE,IAAI,CAAC;QACV,cAAc,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;QAC5C,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;KACrC,CAAC;CACH;AAED,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,YAAY,EAAE,EAAE,EAAE,OAAO,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAS7G"}
1
+ {"version":3,"file":"TransactionExplanation.d.ts","sourceRoot":"","sources":["../../../../src/offlineVault/TransactionExplanation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAKxC,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,sBAAsB,CAAC,IAAI;IAC1C,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAC7B,aAAa,EAAE,iBAAiB,EAAE,CAAC;IAEnC,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE;QAEH,GAAG,EAAE,IAAI,CAAC;QACV,cAAc,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;QAC5C,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;KACrC,CAAC;CACH;AAED,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,YAAY,EAAE,EAAE,EAAE,OAAO,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAS7G"}
@@ -12,4 +12,4 @@ function getTransactionExplanation(coinName, tx) {
12
12
  }
13
13
  throw new Error('unsupported transaction type');
14
14
  }
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVHJhbnNhY3Rpb25FeHBsYW5hdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9vZmZsaW5lVmF1bHQvVHJhbnNhY3Rpb25FeHBsYW5hdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQXFCQSw4REFTQztBQTVCRCxpRUFBOEQ7QUFDOUQsNkNBQXdGO0FBa0J4RixTQUFnQix5QkFBeUIsQ0FBQyxRQUFzQixFQUFFLEVBQVc7SUFDM0UsSUFBSSxDQUFDLDJDQUFvQixDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQ2pDLE1BQU0sSUFBSSxLQUFLLENBQUMsNEJBQTRCLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBQ0QsSUFBSSxrQ0FBcUIsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUNqQyxPQUFPLElBQUEsOENBQWlDLEVBQUMsRUFBRSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRCxNQUFNLElBQUksS0FBSyxDQUFDLDhCQUE4QixDQUFDLENBQUM7QUFDbEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFV0eG9Db2luTmFtZSB9IGZyb20gJy4uL25hbWVzJztcblxuaW1wb3J0IHsgT2ZmbGluZVZhdWx0U2lnbmFibGUgfSBmcm9tICcuL09mZmxpbmVWYXVsdFNpZ25hYmxlJztcbmltcG9ydCB7IERlc2NyaXB0b3JUcmFuc2FjdGlvbiwgZ2V0VHJhbnNhY3Rpb25FeHBsYW5hdGlvbkZyb21Qc2J0IH0gZnJvbSAnLi9kZXNjcmlwdG9yJztcblxuZXhwb3J0IGludGVyZmFjZSBFeHBsYW5hdGlvbk91dHB1dCB7XG4gIGFkZHJlc3M6IHN0cmluZztcbiAgYW1vdW50OiBzdHJpbmcgfCBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHJhbnNhY3Rpb25FeHBsYW5hdGlvbjxURmVlPiB7XG4gIG91dHB1dHM6IEV4cGxhbmF0aW9uT3V0cHV0W107XG4gIGNoYW5nZU91dHB1dHM6IEV4cGxhbmF0aW9uT3V0cHV0W107XG4gIGZlZToge1xuICAgIC8qIG5ldHdvcmsgZmVlICovXG4gICAgZmVlOiBURmVlO1xuICAgIHBheUdvRmVlU3RyaW5nOiBzdHJpbmcgfCBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgcGF5R29GZWVBZGRyZXNzOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRUcmFuc2FjdGlvbkV4cGxhbmF0aW9uKGNvaW5OYW1lOiBVdHhvQ29pbk5hbWUsIHR4OiB1bmtub3duKTogVHJhbnNhY3Rpb25FeHBsYW5hdGlvbjxzdHJpbmc+IHtcbiAgaWYgKCFPZmZsaW5lVmF1bHRTaWduYWJsZS5pcyh0eCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCBhIHNpZ25hYmxlIHRyYW5zYWN0aW9uJyk7XG4gIH1cbiAgaWYgKERlc2NyaXB0b3JUcmFuc2FjdGlvbi5pcyh0eCkpIHtcbiAgICByZXR1cm4gZ2V0VHJhbnNhY3Rpb25FeHBsYW5hdGlvbkZyb21Qc2J0KHR4LCBjb2luTmFtZSk7XG4gIH1cblxuICB0aHJvdyBuZXcgRXJyb3IoJ3Vuc3VwcG9ydGVkIHRyYW5zYWN0aW9uIHR5cGUnKTtcbn1cbiJdfQ==
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVHJhbnNhY3Rpb25FeHBsYW5hdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9vZmZsaW5lVmF1bHQvVHJhbnNhY3Rpb25FeHBsYW5hdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQXVCQSw4REFTQztBQTlCRCxpRUFBOEQ7QUFDOUQsNkNBQXdGO0FBb0J4RixTQUFnQix5QkFBeUIsQ0FBQyxRQUFzQixFQUFFLEVBQVc7SUFDM0UsSUFBSSxDQUFDLDJDQUFvQixDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQ2pDLE1BQU0sSUFBSSxLQUFLLENBQUMsNEJBQTRCLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBQ0QsSUFBSSxrQ0FBcUIsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUNqQyxPQUFPLElBQUEsOENBQWlDLEVBQUMsRUFBRSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRCxNQUFNLElBQUksS0FBSyxDQUFDLDhCQUE4QixDQUFDLENBQUM7QUFDbEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFV0eG9Db2luTmFtZSB9IGZyb20gJy4uL25hbWVzJztcblxuaW1wb3J0IHsgT2ZmbGluZVZhdWx0U2lnbmFibGUgfSBmcm9tICcuL09mZmxpbmVWYXVsdFNpZ25hYmxlJztcbmltcG9ydCB7IERlc2NyaXB0b3JUcmFuc2FjdGlvbiwgZ2V0VHJhbnNhY3Rpb25FeHBsYW5hdGlvbkZyb21Qc2J0IH0gZnJvbSAnLi9kZXNjcmlwdG9yJztcblxuZXhwb3J0IGludGVyZmFjZSBFeHBsYW5hdGlvbk91dHB1dCB7XG4gIGFkZHJlc3M6IHN0cmluZztcbiAgYW1vdW50OiBzdHJpbmcgfCBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHJhbnNhY3Rpb25FeHBsYW5hdGlvbjxURmVlPiB7XG4gIG91dHB1dHM6IEV4cGxhbmF0aW9uT3V0cHV0W107XG4gIGNoYW5nZU91dHB1dHM6IEV4cGxhbmF0aW9uT3V0cHV0W107XG4gIC8qIG5Mb2NrVGltZSBvZiB0aGUgdHJhbnNhY3Rpb24sIHRvIGJlIHZlcmlmaWVkIGJ5IHRoZSBzaWduZXIgZm9yIHRpbWUtbG9ja2VkIHNwZW5kcyAqL1xuICBsb2NrdGltZTogbnVtYmVyO1xuICBmZWU6IHtcbiAgICAvKiBuZXR3b3JrIGZlZSAqL1xuICAgIGZlZTogVEZlZTtcbiAgICBwYXlHb0ZlZVN0cmluZzogc3RyaW5nIHwgbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgIHBheUdvRmVlQWRkcmVzczogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VHJhbnNhY3Rpb25FeHBsYW5hdGlvbihjb2luTmFtZTogVXR4b0NvaW5OYW1lLCB0eDogdW5rbm93bik6IFRyYW5zYWN0aW9uRXhwbGFuYXRpb248c3RyaW5nPiB7XG4gIGlmICghT2ZmbGluZVZhdWx0U2lnbmFibGUuaXModHgpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdub3QgYSBzaWduYWJsZSB0cmFuc2FjdGlvbicpO1xuICB9XG4gIGlmIChEZXNjcmlwdG9yVHJhbnNhY3Rpb24uaXModHgpKSB7XG4gICAgcmV0dXJuIGdldFRyYW5zYWN0aW9uRXhwbGFuYXRpb25Gcm9tUHNidCh0eCwgY29pbk5hbWUpO1xuICB9XG5cbiAgdGhyb3cgbmV3IEVycm9yKCd1bnN1cHBvcnRlZCB0cmFuc2FjdGlvbiB0eXBlJyk7XG59XG4iXX0=
@@ -0,0 +1,9 @@
1
+ import { descriptorWallet, Psbt } from '@bitgo/wasm-utxo';
2
+ /**
3
+ * Apply the PoX-5 staking spend policy to a PSBT before it is signed.
4
+ *
5
+ * PSBTs without PoX-5 lockup inputs are not affected. Otherwise, the PSBT must spend exactly one lockup
6
+ * input through the post-CLTV (late exit) branch, with nLockTime at or above the unlock height and a non-final sequence.
7
+ */
8
+ export declare function assertPox5SpendPolicy(psbt: Psbt, descriptorMap: descriptorWallet.DescriptorMap): void;
9
+ //# sourceMappingURL=pox5.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pox5.d.ts","sourceRoot":"","sources":["../../../../../src/offlineVault/descriptor/pox5.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAQ1D;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,IAAI,EAAE,aAAa,EAAE,gBAAgB,CAAC,aAAa,GAAG,IAAI,CAcrG"}
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.assertPox5SpendPolicy = assertPox5SpendPolicy;
4
+ const utxo_descriptors_1 = require("@bitgo/utxo-descriptors");
5
+ function getPox5InputMatches(psbt, descriptorMap) {
6
+ return Array.from({ length: psbt.inputCount() }, (_, i) => utxo_descriptors_1.pox5.matchPox5Input(psbt, i, descriptorMap)).filter((match) => match !== undefined);
7
+ }
8
+ /**
9
+ * Apply the PoX-5 staking spend policy to a PSBT before it is signed.
10
+ *
11
+ * PSBTs without PoX-5 lockup inputs are not affected. Otherwise, the PSBT must spend exactly one lockup
12
+ * input through the post-CLTV (late exit) branch, with nLockTime at or above the unlock height and a non-final sequence.
13
+ */
14
+ function assertPox5SpendPolicy(psbt, descriptorMap) {
15
+ const matches = getPox5InputMatches(psbt, descriptorMap);
16
+ if (matches.length === 0) {
17
+ return;
18
+ }
19
+ if (matches.length !== 1) {
20
+ throw new Error(`expected exactly one PoX-5 lockup input, found ${matches.length}`);
21
+ }
22
+ const [match] = matches;
23
+ const branch = utxo_descriptors_1.pox5.classifyPox5Spend(psbt, match);
24
+ if (branch !== 'locktime') {
25
+ throw new Error(`unsupported PoX-5 spend branch: ${branch}`);
26
+ }
27
+ utxo_descriptors_1.pox5.assertPox5LocktimeSpend(psbt, matches);
28
+ }
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG94NS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9vZmZsaW5lVmF1bHQvZGVzY3JpcHRvci9wb3g1LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBZUEsc0RBY0M7QUE3QkQsOERBQStDO0FBRy9DLFNBQVMsbUJBQW1CLENBQUMsSUFBVSxFQUFFLGFBQTZDO0lBQ3BGLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLHVCQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQzVHLENBQUMsS0FBSyxFQUFnQyxFQUFFLENBQUMsS0FBSyxLQUFLLFNBQVMsQ0FDN0QsQ0FBQztBQUNKLENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILFNBQWdCLHFCQUFxQixDQUFDLElBQVUsRUFBRSxhQUE2QztJQUM3RixNQUFNLE9BQU8sR0FBRyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDekQsSUFBSSxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3pCLE9BQU87SUFDVCxDQUFDO0lBQ0QsSUFBSSxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3pCLE1BQU0sSUFBSSxLQUFLLENBQUMsa0RBQWtELE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ3RGLENBQUM7SUFDRCxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsT0FBTyxDQUFDO0lBQ3hCLE1BQU0sTUFBTSxHQUFHLHVCQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ25ELElBQUksTUFBTSxLQUFLLFVBQVUsRUFBRSxDQUFDO1FBQzFCLE1BQU0sSUFBSSxLQUFLLENBQUMsbUNBQW1DLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUNELHVCQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQzlDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBwb3g1IH0gZnJvbSAnQGJpdGdvL3V0eG8tZGVzY3JpcHRvcnMnO1xuaW1wb3J0IHsgZGVzY3JpcHRvcldhbGxldCwgUHNidCB9IGZyb20gJ0BiaXRnby93YXNtLXV0eG8nO1xuXG5mdW5jdGlvbiBnZXRQb3g1SW5wdXRNYXRjaGVzKHBzYnQ6IFBzYnQsIGRlc2NyaXB0b3JNYXA6IGRlc2NyaXB0b3JXYWxsZXQuRGVzY3JpcHRvck1hcCk6IHBveDUuUG94NUlucHV0TWF0Y2hbXSB7XG4gIHJldHVybiBBcnJheS5mcm9tKHsgbGVuZ3RoOiBwc2J0LmlucHV0Q291bnQoKSB9LCAoXywgaSkgPT4gcG94NS5tYXRjaFBveDVJbnB1dChwc2J0LCBpLCBkZXNjcmlwdG9yTWFwKSkuZmlsdGVyKFxuICAgIChtYXRjaCk6IG1hdGNoIGlzIHBveDUuUG94NUlucHV0TWF0Y2ggPT4gbWF0Y2ggIT09IHVuZGVmaW5lZFxuICApO1xufVxuXG4vKipcbiAqIEFwcGx5IHRoZSBQb1gtNSBzdGFraW5nIHNwZW5kIHBvbGljeSB0byBhIFBTQlQgYmVmb3JlIGl0IGlzIHNpZ25lZC5cbiAqXG4gKiBQU0JUcyB3aXRob3V0IFBvWC01IGxvY2t1cCBpbnB1dHMgYXJlIG5vdCBhZmZlY3RlZC4gT3RoZXJ3aXNlLCB0aGUgUFNCVCBtdXN0IHNwZW5kIGV4YWN0bHkgb25lIGxvY2t1cFxuICogaW5wdXQgdGhyb3VnaCB0aGUgcG9zdC1DTFRWIChsYXRlIGV4aXQpIGJyYW5jaCwgd2l0aCBuTG9ja1RpbWUgYXQgb3IgYWJvdmUgdGhlIHVubG9jayBoZWlnaHQgYW5kIGEgbm9uLWZpbmFsIHNlcXVlbmNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0UG94NVNwZW5kUG9saWN5KHBzYnQ6IFBzYnQsIGRlc2NyaXB0b3JNYXA6IGRlc2NyaXB0b3JXYWxsZXQuRGVzY3JpcHRvck1hcCk6IHZvaWQge1xuICBjb25zdCBtYXRjaGVzID0gZ2V0UG94NUlucHV0TWF0Y2hlcyhwc2J0LCBkZXNjcmlwdG9yTWFwKTtcbiAgaWYgKG1hdGNoZXMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmIChtYXRjaGVzLmxlbmd0aCAhPT0gMSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgZXhwZWN0ZWQgZXhhY3RseSBvbmUgUG9YLTUgbG9ja3VwIGlucHV0LCBmb3VuZCAke21hdGNoZXMubGVuZ3RofWApO1xuICB9XG4gIGNvbnN0IFttYXRjaF0gPSBtYXRjaGVzO1xuICBjb25zdCBicmFuY2ggPSBwb3g1LmNsYXNzaWZ5UG94NVNwZW5kKHBzYnQsIG1hdGNoKTtcbiAgaWYgKGJyYW5jaCAhPT0gJ2xvY2t0aW1lJykge1xuICAgIHRocm93IG5ldyBFcnJvcihgdW5zdXBwb3J0ZWQgUG9YLTUgc3BlbmQgYnJhbmNoOiAke2JyYW5jaH1gKTtcbiAgfVxuICBwb3g1LmFzc2VydFBveDVMb2NrdGltZVNwZW5kKHBzYnQsIG1hdGNoZXMpO1xufVxuIl19
@@ -1 +1 @@
1
- {"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../../../../src/offlineVault/descriptor/transaction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,OAAO,CAAC;AAC3B,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAAE,aAAa,EAAmB,MAAM,kBAAkB,CAAC;AASlE,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAGjC,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAE3E,wBAAgB,uCAAuC,CAAC,EAAE,EAAE,qBAAqB,GAAG,aAAa,CAUhG;AAED,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,qBAAqB,EAAE,GAAG,EAAE,KAAK,CAAC,cAAc,EAAE,QAAQ,EAAE,YAAY,GAAG,IAAI,CAKpH;AAED,wBAAgB,iCAAiC,CAC/C,EAAE,EAAE,qBAAqB,EACzB,QAAQ,EAAE,YAAY,GACrB,sBAAsB,CAAC,MAAM,CAAC,CAehC"}
1
+ {"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../../../../src/offlineVault/descriptor/transaction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,OAAO,CAAC;AAC3B,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAAE,aAAa,EAAmB,MAAM,kBAAkB,CAAC;AAUlE,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAI3C,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAGjC,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAE3E,wBAAgB,uCAAuC,CAAC,EAAE,EAAE,qBAAqB,GAAG,aAAa,CAYhG;AAED,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,qBAAqB,EAAE,GAAG,EAAE,KAAK,CAAC,cAAc,EAAE,QAAQ,EAAE,YAAY,GAAG,IAAI,CAMpH;AAED,wBAAgB,iCAAiC,CAC/C,EAAE,EAAE,qBAAqB,EACzB,QAAQ,EAAE,YAAY,GACrB,sBAAsB,CAAC,MAAM,CAAC,CAgBhC"}
@@ -43,6 +43,7 @@ const descriptor_1 = require("../../descriptor");
43
43
  const OfflineVaultSignable_1 = require("../OfflineVaultSignable");
44
44
  const validatePolicy_1 = require("../../descriptor/validatePolicy");
45
45
  const descriptor_2 = require("../../transaction/descriptor");
46
+ const pox5_1 = require("./pox5");
46
47
  exports.DescriptorTransaction = t.intersection([OfflineVaultSignable_1.OfflineVaultSignable, t.type({ descriptors: t.array(descriptor_1.NamedDescriptor) })], 'DescriptorTransaction');
47
48
  function getDescriptorsFromDescriptorTransaction(tx) {
48
49
  const { descriptors, xpubsWithDerivationPath } = tx;
@@ -50,6 +51,8 @@ function getDescriptorsFromDescriptorTransaction(tx) {
50
51
  const policy = (0, validatePolicy_1.getValidatorSome)([
51
52
  // allow all 2-of-3-ish descriptors where the keys match the wallet keys
52
53
  (0, validatePolicy_1.getValidatorOneOfTemplates)(['Wsh2Of3', 'Wsh2Of3CltvDrop', 'ShWsh2Of3CltvDrop']),
54
+ // allow 2-of-3 wallet descriptors together with PoX-5 lockup descriptors where the keys match the wallet keys
55
+ (0, validatePolicy_1.getValidatorPox5Wallet)(),
53
56
  // allow all descriptors signed by the user key
54
57
  (0, validatePolicy_1.getValidatorSignedByUserKey)(),
55
58
  ]);
@@ -58,6 +61,7 @@ function getDescriptorsFromDescriptorTransaction(tx) {
58
61
  function getHalfSignedPsbt(tx, prv, coinName) {
59
62
  const psbt = wasm_utxo_1.Psbt.deserialize(Buffer.from(tx.coinSpecific.txHex, 'hex'));
60
63
  const descriptorMap = getDescriptorsFromDescriptorTransaction(tx);
64
+ (0, pox5_1.assertPox5SpendPolicy)(psbt, descriptorMap);
61
65
  (0, descriptor_2.signPsbt)(psbt, descriptorMap, prv, { onUnknownInput: 'throw' });
62
66
  return psbt;
63
67
  }
@@ -68,6 +72,7 @@ function getTransactionExplanationFromPsbt(tx, coinName) {
68
72
  return {
69
73
  outputs,
70
74
  changeOutputs,
75
+ locktime: psbt.lockTime(),
71
76
  fee: {
72
77
  /* network fee */
73
78
  fee,
@@ -77,4 +82,4 @@ function getTransactionExplanationFromPsbt(tx, coinName) {
77
82
  },
78
83
  };
79
84
  }
80
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvb2ZmbGluZVZhdWx0L2Rlc2NyaXB0b3IvdHJhbnNhY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBc0JBLDBGQVVDO0FBRUQsOENBS0M7QUFFRCw4RUFrQkM7QUEzREQseUNBQTJCO0FBQzNCLGdEQUErQztBQUUvQyxpREFBa0U7QUFDbEUsa0VBQTRFO0FBQzVFLG9FQUt5QztBQUN6Qyw2REFBcUU7QUFJeEQsUUFBQSxxQkFBcUIsR0FBRyxDQUFDLENBQUMsWUFBWSxDQUNqRCxDQUFDLDJDQUFvQixFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyw0QkFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQ3pFLHVCQUF1QixDQUN4QixDQUFDO0FBSUYsU0FBZ0IsdUNBQXVDLENBQUMsRUFBeUI7SUFDL0UsTUFBTSxFQUFFLFdBQVcsRUFBRSx1QkFBdUIsRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUNwRCxNQUFNLE9BQU8sR0FBRyxJQUFBLGtDQUFXLEVBQUMsdUJBQXVCLENBQUMsQ0FBQztJQUNyRCxNQUFNLE1BQU0sR0FBRyxJQUFBLGlDQUFnQixFQUFDO1FBQzlCLHdFQUF3RTtRQUN4RSxJQUFBLDJDQUEwQixFQUFDLENBQUMsU0FBUyxFQUFFLGlCQUFpQixFQUFFLG1CQUFtQixDQUFDLENBQUM7UUFDL0UsK0NBQStDO1FBQy9DLElBQUEsNENBQTJCLEdBQUU7S0FDOUIsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxJQUFBLHdDQUF1QixFQUFDLFdBQVcsRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDL0QsQ0FBQztBQUVELFNBQWdCLGlCQUFpQixDQUFDLEVBQXlCLEVBQUUsR0FBeUIsRUFBRSxRQUFzQjtJQUM1RyxNQUFNLElBQUksR0FBRyxnQkFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDekUsTUFBTSxhQUFhLEdBQUcsdUNBQXVDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbEUsSUFBQSxxQkFBUSxFQUFDLElBQUksRUFBRSxhQUFhLEVBQUUsR0FBRyxFQUFFLEVBQUUsY0FBYyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDaEUsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBRUQsU0FBZ0IsaUNBQWlDLENBQy9DLEVBQXlCLEVBQ3pCLFFBQXNCO0lBRXRCLE1BQU0sSUFBSSxHQUFHLGdCQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUN6RSxNQUFNLGFBQWEsR0FBRyx1Q0FBdUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNsRSxNQUFNLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFBLHdCQUFXLEVBQUMsSUFBSSxFQUFFLGFBQWEsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNuRixPQUFPO1FBQ0wsT0FBTztRQUNQLGFBQWE7UUFDYixHQUFHLEVBQUU7WUFDSCxpQkFBaUI7WUFDakIsR0FBRztZQUNILFVBQVU7WUFDVixjQUFjLEVBQUUsU0FBUztZQUN6QixlQUFlLEVBQUUsU0FBUztTQUMzQjtLQUNGLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgdCBmcm9tICdpby10cyc7XG5pbXBvcnQgeyBiaXAzMiwgUHNidCB9IGZyb20gJ0BiaXRnby93YXNtLXV0eG8nO1xuXG5pbXBvcnQgeyBEZXNjcmlwdG9yTWFwLCBOYW1lZERlc2NyaXB0b3IgfSBmcm9tICcuLi8uLi9kZXNjcmlwdG9yJztcbmltcG9ydCB7IE9mZmxpbmVWYXVsdFNpZ25hYmxlLCB0b0tleVRyaXBsZSB9IGZyb20gJy4uL09mZmxpbmVWYXVsdFNpZ25hYmxlJztcbmltcG9ydCB7XG4gIGdldFZhbGlkYXRvck9uZU9mVGVtcGxhdGVzLFxuICBnZXRWYWxpZGF0b3JTaWduZWRCeVVzZXJLZXksXG4gIGdldFZhbGlkYXRvclNvbWUsXG4gIHRvRGVzY3JpcHRvck1hcFZhbGlkYXRlLFxufSBmcm9tICcuLi8uLi9kZXNjcmlwdG9yL3ZhbGlkYXRlUG9saWN5JztcbmltcG9ydCB7IGV4cGxhaW5Qc2J0LCBzaWduUHNidCB9IGZyb20gJy4uLy4uL3RyYW5zYWN0aW9uL2Rlc2NyaXB0b3InO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25FeHBsYW5hdGlvbiB9IGZyb20gJy4uL1RyYW5zYWN0aW9uRXhwbGFuYXRpb24nO1xuaW1wb3J0IHsgVXR4b0NvaW5OYW1lIH0gZnJvbSAnLi4vLi4vbmFtZXMnO1xuXG5leHBvcnQgY29uc3QgRGVzY3JpcHRvclRyYW5zYWN0aW9uID0gdC5pbnRlcnNlY3Rpb24oXG4gIFtPZmZsaW5lVmF1bHRTaWduYWJsZSwgdC50eXBlKHsgZGVzY3JpcHRvcnM6IHQuYXJyYXkoTmFtZWREZXNjcmlwdG9yKSB9KV0sXG4gICdEZXNjcmlwdG9yVHJhbnNhY3Rpb24nXG4pO1xuXG5leHBvcnQgdHlwZSBEZXNjcmlwdG9yVHJhbnNhY3Rpb24gPSB0LlR5cGVPZjx0eXBlb2YgRGVzY3JpcHRvclRyYW5zYWN0aW9uPjtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldERlc2NyaXB0b3JzRnJvbURlc2NyaXB0b3JUcmFuc2FjdGlvbih0eDogRGVzY3JpcHRvclRyYW5zYWN0aW9uKTogRGVzY3JpcHRvck1hcCB7XG4gIGNvbnN0IHsgZGVzY3JpcHRvcnMsIHhwdWJzV2l0aERlcml2YXRpb25QYXRoIH0gPSB0eDtcbiAgY29uc3QgcHVia2V5cyA9IHRvS2V5VHJpcGxlKHhwdWJzV2l0aERlcml2YXRpb25QYXRoKTtcbiAgY29uc3QgcG9saWN5ID0gZ2V0VmFsaWRhdG9yU29tZShbXG4gICAgLy8gYWxsb3cgYWxsIDItb2YtMy1pc2ggZGVzY3JpcHRvcnMgd2hlcmUgdGhlIGtleXMgbWF0Y2ggdGhlIHdhbGxldCBrZXlzXG4gICAgZ2V0VmFsaWRhdG9yT25lT2ZUZW1wbGF0ZXMoWydXc2gyT2YzJywgJ1dzaDJPZjNDbHR2RHJvcCcsICdTaFdzaDJPZjNDbHR2RHJvcCddKSxcbiAgICAvLyBhbGxvdyBhbGwgZGVzY3JpcHRvcnMgc2lnbmVkIGJ5IHRoZSB1c2VyIGtleVxuICAgIGdldFZhbGlkYXRvclNpZ25lZEJ5VXNlcktleSgpLFxuICBdKTtcbiAgcmV0dXJuIHRvRGVzY3JpcHRvck1hcFZhbGlkYXRlKGRlc2NyaXB0b3JzLCBwdWJrZXlzLCBwb2xpY3kpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0SGFsZlNpZ25lZFBzYnQodHg6IERlc2NyaXB0b3JUcmFuc2FjdGlvbiwgcHJ2OiBiaXAzMi5CSVAzMkludGVyZmFjZSwgY29pbk5hbWU6IFV0eG9Db2luTmFtZSk6IFBzYnQge1xuICBjb25zdCBwc2J0ID0gUHNidC5kZXNlcmlhbGl6ZShCdWZmZXIuZnJvbSh0eC5jb2luU3BlY2lmaWMudHhIZXgsICdoZXgnKSk7XG4gIGNvbnN0IGRlc2NyaXB0b3JNYXAgPSBnZXREZXNjcmlwdG9yc0Zyb21EZXNjcmlwdG9yVHJhbnNhY3Rpb24odHgpO1xuICBzaWduUHNidChwc2J0LCBkZXNjcmlwdG9yTWFwLCBwcnYsIHsgb25Vbmtub3duSW5wdXQ6ICd0aHJvdycgfSk7XG4gIHJldHVybiBwc2J0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VHJhbnNhY3Rpb25FeHBsYW5hdGlvbkZyb21Qc2J0KFxuICB0eDogRGVzY3JpcHRvclRyYW5zYWN0aW9uLFxuICBjb2luTmFtZTogVXR4b0NvaW5OYW1lXG4pOiBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uPHN0cmluZz4ge1xuICBjb25zdCBwc2J0ID0gUHNidC5kZXNlcmlhbGl6ZShCdWZmZXIuZnJvbSh0eC5jb2luU3BlY2lmaWMudHhIZXgsICdoZXgnKSk7XG4gIGNvbnN0IGRlc2NyaXB0b3JNYXAgPSBnZXREZXNjcmlwdG9yc0Zyb21EZXNjcmlwdG9yVHJhbnNhY3Rpb24odHgpO1xuICBjb25zdCB7IG91dHB1dHMsIGNoYW5nZU91dHB1dHMsIGZlZSB9ID0gZXhwbGFpblBzYnQocHNidCwgZGVzY3JpcHRvck1hcCwgY29pbk5hbWUpO1xuICByZXR1cm4ge1xuICAgIG91dHB1dHMsXG4gICAgY2hhbmdlT3V0cHV0cyxcbiAgICBmZWU6IHtcbiAgICAgIC8qIG5ldHdvcmsgZmVlICovXG4gICAgICBmZWUsXG4gICAgICAvKiBUT0RPICovXG4gICAgICBwYXlHb0ZlZVN0cmluZzogdW5kZWZpbmVkLFxuICAgICAgcGF5R29GZWVBZGRyZXNzOiB1bmRlZmluZWQsXG4gICAgfSxcbiAgfTtcbn1cbiJdfQ==
85
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvb2ZmbGluZVZhdWx0L2Rlc2NyaXB0b3IvdHJhbnNhY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBeUJBLDBGQVlDO0FBRUQsOENBTUM7QUFFRCw4RUFtQkM7QUFsRUQseUNBQTJCO0FBQzNCLGdEQUErQztBQUUvQyxpREFBa0U7QUFDbEUsa0VBQTRFO0FBQzVFLG9FQU15QztBQUN6Qyw2REFBcUU7QUFJckUsaUNBQStDO0FBRWxDLFFBQUEscUJBQXFCLEdBQUcsQ0FBQyxDQUFDLFlBQVksQ0FDakQsQ0FBQywyQ0FBb0IsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsNEJBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUN6RSx1QkFBdUIsQ0FDeEIsQ0FBQztBQUlGLFNBQWdCLHVDQUF1QyxDQUFDLEVBQXlCO0lBQy9FLE1BQU0sRUFBRSxXQUFXLEVBQUUsdUJBQXVCLEVBQUUsR0FBRyxFQUFFLENBQUM7SUFDcEQsTUFBTSxPQUFPLEdBQUcsSUFBQSxrQ0FBVyxFQUFDLHVCQUF1QixDQUFDLENBQUM7SUFDckQsTUFBTSxNQUFNLEdBQUcsSUFBQSxpQ0FBZ0IsRUFBQztRQUM5Qix3RUFBd0U7UUFDeEUsSUFBQSwyQ0FBMEIsRUFBQyxDQUFDLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO1FBQy9FLDhHQUE4RztRQUM5RyxJQUFBLHVDQUFzQixHQUFFO1FBQ3hCLCtDQUErQztRQUMvQyxJQUFBLDRDQUEyQixHQUFFO0tBQzlCLENBQUMsQ0FBQztJQUNILE9BQU8sSUFBQSx3Q0FBdUIsRUFBQyxXQUFXLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQy9ELENBQUM7QUFFRCxTQUFnQixpQkFBaUIsQ0FBQyxFQUF5QixFQUFFLEdBQXlCLEVBQUUsUUFBc0I7SUFDNUcsTUFBTSxJQUFJLEdBQUcsZ0JBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3pFLE1BQU0sYUFBYSxHQUFHLHVDQUF1QyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2xFLElBQUEsNEJBQXFCLEVBQUMsSUFBSSxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBQzNDLElBQUEscUJBQVEsRUFBQyxJQUFJLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBRSxFQUFFLGNBQWMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ2hFLE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQztBQUVELFNBQWdCLGlDQUFpQyxDQUMvQyxFQUF5QixFQUN6QixRQUFzQjtJQUV0QixNQUFNLElBQUksR0FBRyxnQkFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDekUsTUFBTSxhQUFhLEdBQUcsdUNBQXVDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbEUsTUFBTSxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBQSx3QkFBVyxFQUFDLElBQUksRUFBRSxhQUFhLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDbkYsT0FBTztRQUNMLE9BQU87UUFDUCxhQUFhO1FBQ2IsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUU7UUFDekIsR0FBRyxFQUFFO1lBQ0gsaUJBQWlCO1lBQ2pCLEdBQUc7WUFDSCxVQUFVO1lBQ1YsY0FBYyxFQUFFLFNBQVM7WUFDekIsZUFBZSxFQUFFLFNBQVM7U0FDM0I7S0FDRixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHQgZnJvbSAnaW8tdHMnO1xuaW1wb3J0IHsgYmlwMzIsIFBzYnQgfSBmcm9tICdAYml0Z28vd2FzbS11dHhvJztcblxuaW1wb3J0IHsgRGVzY3JpcHRvck1hcCwgTmFtZWREZXNjcmlwdG9yIH0gZnJvbSAnLi4vLi4vZGVzY3JpcHRvcic7XG5pbXBvcnQgeyBPZmZsaW5lVmF1bHRTaWduYWJsZSwgdG9LZXlUcmlwbGUgfSBmcm9tICcuLi9PZmZsaW5lVmF1bHRTaWduYWJsZSc7XG5pbXBvcnQge1xuICBnZXRWYWxpZGF0b3JPbmVPZlRlbXBsYXRlcyxcbiAgZ2V0VmFsaWRhdG9yUG94NVdhbGxldCxcbiAgZ2V0VmFsaWRhdG9yU2lnbmVkQnlVc2VyS2V5LFxuICBnZXRWYWxpZGF0b3JTb21lLFxuICB0b0Rlc2NyaXB0b3JNYXBWYWxpZGF0ZSxcbn0gZnJvbSAnLi4vLi4vZGVzY3JpcHRvci92YWxpZGF0ZVBvbGljeSc7XG5pbXBvcnQgeyBleHBsYWluUHNidCwgc2lnblBzYnQgfSBmcm9tICcuLi8uLi90cmFuc2FjdGlvbi9kZXNjcmlwdG9yJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uRXhwbGFuYXRpb24gfSBmcm9tICcuLi9UcmFuc2FjdGlvbkV4cGxhbmF0aW9uJztcbmltcG9ydCB7IFV0eG9Db2luTmFtZSB9IGZyb20gJy4uLy4uL25hbWVzJztcblxuaW1wb3J0IHsgYXNzZXJ0UG94NVNwZW5kUG9saWN5IH0gZnJvbSAnLi9wb3g1JztcblxuZXhwb3J0IGNvbnN0IERlc2NyaXB0b3JUcmFuc2FjdGlvbiA9IHQuaW50ZXJzZWN0aW9uKFxuICBbT2ZmbGluZVZhdWx0U2lnbmFibGUsIHQudHlwZSh7IGRlc2NyaXB0b3JzOiB0LmFycmF5KE5hbWVkRGVzY3JpcHRvcikgfSldLFxuICAnRGVzY3JpcHRvclRyYW5zYWN0aW9uJ1xuKTtcblxuZXhwb3J0IHR5cGUgRGVzY3JpcHRvclRyYW5zYWN0aW9uID0gdC5UeXBlT2Y8dHlwZW9mIERlc2NyaXB0b3JUcmFuc2FjdGlvbj47XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREZXNjcmlwdG9yc0Zyb21EZXNjcmlwdG9yVHJhbnNhY3Rpb24odHg6IERlc2NyaXB0b3JUcmFuc2FjdGlvbik6IERlc2NyaXB0b3JNYXAge1xuICBjb25zdCB7IGRlc2NyaXB0b3JzLCB4cHVic1dpdGhEZXJpdmF0aW9uUGF0aCB9ID0gdHg7XG4gIGNvbnN0IHB1YmtleXMgPSB0b0tleVRyaXBsZSh4cHVic1dpdGhEZXJpdmF0aW9uUGF0aCk7XG4gIGNvbnN0IHBvbGljeSA9IGdldFZhbGlkYXRvclNvbWUoW1xuICAgIC8vIGFsbG93IGFsbCAyLW9mLTMtaXNoIGRlc2NyaXB0b3JzIHdoZXJlIHRoZSBrZXlzIG1hdGNoIHRoZSB3YWxsZXQga2V5c1xuICAgIGdldFZhbGlkYXRvck9uZU9mVGVtcGxhdGVzKFsnV3NoMk9mMycsICdXc2gyT2YzQ2x0dkRyb3AnLCAnU2hXc2gyT2YzQ2x0dkRyb3AnXSksXG4gICAgLy8gYWxsb3cgMi1vZi0zIHdhbGxldCBkZXNjcmlwdG9ycyB0b2dldGhlciB3aXRoIFBvWC01IGxvY2t1cCBkZXNjcmlwdG9ycyB3aGVyZSB0aGUga2V5cyBtYXRjaCB0aGUgd2FsbGV0IGtleXNcbiAgICBnZXRWYWxpZGF0b3JQb3g1V2FsbGV0KCksXG4gICAgLy8gYWxsb3cgYWxsIGRlc2NyaXB0b3JzIHNpZ25lZCBieSB0aGUgdXNlciBrZXlcbiAgICBnZXRWYWxpZGF0b3JTaWduZWRCeVVzZXJLZXkoKSxcbiAgXSk7XG4gIHJldHVybiB0b0Rlc2NyaXB0b3JNYXBWYWxpZGF0ZShkZXNjcmlwdG9ycywgcHVia2V5cywgcG9saWN5KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEhhbGZTaWduZWRQc2J0KHR4OiBEZXNjcmlwdG9yVHJhbnNhY3Rpb24sIHBydjogYmlwMzIuQklQMzJJbnRlcmZhY2UsIGNvaW5OYW1lOiBVdHhvQ29pbk5hbWUpOiBQc2J0IHtcbiAgY29uc3QgcHNidCA9IFBzYnQuZGVzZXJpYWxpemUoQnVmZmVyLmZyb20odHguY29pblNwZWNpZmljLnR4SGV4LCAnaGV4JykpO1xuICBjb25zdCBkZXNjcmlwdG9yTWFwID0gZ2V0RGVzY3JpcHRvcnNGcm9tRGVzY3JpcHRvclRyYW5zYWN0aW9uKHR4KTtcbiAgYXNzZXJ0UG94NVNwZW5kUG9saWN5KHBzYnQsIGRlc2NyaXB0b3JNYXApO1xuICBzaWduUHNidChwc2J0LCBkZXNjcmlwdG9yTWFwLCBwcnYsIHsgb25Vbmtub3duSW5wdXQ6ICd0aHJvdycgfSk7XG4gIHJldHVybiBwc2J0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VHJhbnNhY3Rpb25FeHBsYW5hdGlvbkZyb21Qc2J0KFxuICB0eDogRGVzY3JpcHRvclRyYW5zYWN0aW9uLFxuICBjb2luTmFtZTogVXR4b0NvaW5OYW1lXG4pOiBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uPHN0cmluZz4ge1xuICBjb25zdCBwc2J0ID0gUHNidC5kZXNlcmlhbGl6ZShCdWZmZXIuZnJvbSh0eC5jb2luU3BlY2lmaWMudHhIZXgsICdoZXgnKSk7XG4gIGNvbnN0IGRlc2NyaXB0b3JNYXAgPSBnZXREZXNjcmlwdG9yc0Zyb21EZXNjcmlwdG9yVHJhbnNhY3Rpb24odHgpO1xuICBjb25zdCB7IG91dHB1dHMsIGNoYW5nZU91dHB1dHMsIGZlZSB9ID0gZXhwbGFpblBzYnQocHNidCwgZGVzY3JpcHRvck1hcCwgY29pbk5hbWUpO1xuICByZXR1cm4ge1xuICAgIG91dHB1dHMsXG4gICAgY2hhbmdlT3V0cHV0cyxcbiAgICBsb2NrdGltZTogcHNidC5sb2NrVGltZSgpLFxuICAgIGZlZToge1xuICAgICAgLyogbmV0d29yayBmZWUgKi9cbiAgICAgIGZlZSxcbiAgICAgIC8qIFRPRE8gKi9cbiAgICAgIHBheUdvRmVlU3RyaW5nOiB1bmRlZmluZWQsXG4gICAgICBwYXlHb0ZlZUFkZHJlc3M6IHVuZGVmaW5lZCxcbiAgICB9LFxuICB9O1xufVxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=pox5.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pox5.d.ts","sourceRoot":"","sources":["../../../../../test/unit/offlineVault/pox5.ts"],"names":[],"mappings":""}