@bitgo/abstract-utxo 10.9.0 → 10.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. package/dist/cjs/src/abstractUtxoCoin.d.ts +13 -5
  2. package/dist/cjs/src/abstractUtxoCoin.d.ts.map +1 -1
  3. package/dist/cjs/src/abstractUtxoCoin.js +35 -20
  4. package/dist/cjs/src/transaction/decode.d.ts +1 -0
  5. package/dist/cjs/src/transaction/decode.d.ts.map +1 -1
  6. package/dist/cjs/src/transaction/decode.js +13 -1
  7. package/dist/cjs/src/transaction/explainTransaction.js +2 -2
  8. package/dist/cjs/src/transaction/fixedScript/explainPsbtWasm.d.ts +1 -1
  9. package/dist/cjs/src/transaction/fixedScript/explainPsbtWasm.d.ts.map +1 -1
  10. package/dist/cjs/src/transaction/fixedScript/explainPsbtWasm.js +1 -1
  11. package/dist/cjs/src/transaction/fixedScript/index.d.ts +0 -1
  12. package/dist/cjs/src/transaction/fixedScript/index.d.ts.map +1 -1
  13. package/dist/cjs/src/transaction/fixedScript/index.js +1 -1
  14. package/dist/cjs/src/transaction/fixedScript/musig2.d.ts +4 -0
  15. package/dist/cjs/src/transaction/fixedScript/musig2.d.ts.map +1 -0
  16. package/dist/cjs/src/transaction/fixedScript/musig2.js +3 -0
  17. package/dist/cjs/src/transaction/fixedScript/replayProtection.d.ts +4 -2
  18. package/dist/cjs/src/transaction/fixedScript/replayProtection.d.ts.map +1 -1
  19. package/dist/cjs/src/transaction/fixedScript/replayProtection.js +29 -9
  20. package/dist/cjs/src/transaction/fixedScript/signPsbt.d.ts +3 -5
  21. package/dist/cjs/src/transaction/fixedScript/signPsbt.d.ts.map +1 -1
  22. package/dist/cjs/src/transaction/fixedScript/signPsbt.js +1 -1
  23. package/dist/cjs/src/transaction/fixedScript/signPsbtWasm.d.ts +22 -0
  24. package/dist/cjs/src/transaction/fixedScript/signPsbtWasm.d.ts.map +1 -0
  25. package/dist/cjs/src/transaction/fixedScript/signPsbtWasm.js +129 -0
  26. package/dist/cjs/src/transaction/fixedScript/signTransaction.d.ts +4 -4
  27. package/dist/cjs/src/transaction/fixedScript/signTransaction.d.ts.map +1 -1
  28. package/dist/cjs/src/transaction/fixedScript/signTransaction.js +19 -1
  29. package/dist/cjs/src/transaction/signTransaction.d.ts.map +1 -1
  30. package/dist/cjs/src/transaction/signTransaction.js +4 -2
  31. package/dist/cjs/src/transaction/types.d.ts +3 -1
  32. package/dist/cjs/src/transaction/types.d.ts.map +1 -1
  33. package/dist/cjs/src/transaction/types.js +5 -1
  34. package/dist/cjs/test/unit/transaction/fixedScript/explainPsbt.js +3 -3
  35. package/dist/cjs/test/unit/transaction/fixedScript/parsePsbt.js +2 -2
  36. package/dist/cjs/test/unit/transaction/fixedScript/replayProtection.d.ts +2 -0
  37. package/dist/cjs/test/unit/transaction/fixedScript/replayProtection.d.ts.map +1 -0
  38. package/dist/cjs/test/unit/transaction/fixedScript/replayProtection.js +59 -0
  39. package/dist/cjs/test/unit/transaction/fixedScript/signPsbt.js +102 -31
  40. package/dist/cjs/test/unit/transaction/fixedScript/util.d.ts.map +1 -1
  41. package/dist/cjs/test/unit/transaction/fixedScript/util.js +2 -1
  42. package/dist/cjs/test/unit/transaction.js +65 -42
  43. package/dist/cjs/tsconfig.tsbuildinfo +1 -1
  44. package/dist/esm/abstractUtxoCoin.d.ts +13 -5
  45. package/dist/esm/abstractUtxoCoin.d.ts.map +1 -1
  46. package/dist/esm/abstractUtxoCoin.js +36 -21
  47. package/dist/esm/transaction/decode.d.ts +1 -0
  48. package/dist/esm/transaction/decode.d.ts.map +1 -1
  49. package/dist/esm/transaction/decode.js +12 -1
  50. package/dist/esm/transaction/explainTransaction.js +3 -3
  51. package/dist/esm/transaction/fixedScript/explainPsbtWasm.d.ts +1 -1
  52. package/dist/esm/transaction/fixedScript/explainPsbtWasm.d.ts.map +1 -1
  53. package/dist/esm/transaction/fixedScript/explainPsbtWasm.js +1 -1
  54. package/dist/esm/transaction/fixedScript/index.d.ts +0 -1
  55. package/dist/esm/transaction/fixedScript/index.d.ts.map +1 -1
  56. package/dist/esm/transaction/fixedScript/index.js +1 -1
  57. package/dist/esm/transaction/fixedScript/musig2.d.ts +4 -0
  58. package/dist/esm/transaction/fixedScript/musig2.d.ts.map +1 -0
  59. package/dist/esm/transaction/fixedScript/musig2.js +2 -0
  60. package/dist/esm/transaction/fixedScript/replayProtection.d.ts +4 -2
  61. package/dist/esm/transaction/fixedScript/replayProtection.d.ts.map +1 -1
  62. package/dist/esm/transaction/fixedScript/replayProtection.js +27 -8
  63. package/dist/esm/transaction/fixedScript/signPsbt.d.ts +3 -5
  64. package/dist/esm/transaction/fixedScript/signPsbt.d.ts.map +1 -1
  65. package/dist/esm/transaction/fixedScript/signPsbt.js +1 -1
  66. package/dist/esm/transaction/fixedScript/signPsbtWasm.d.ts +22 -0
  67. package/dist/esm/transaction/fixedScript/signPsbtWasm.d.ts.map +1 -0
  68. package/dist/esm/transaction/fixedScript/signPsbtWasm.js +122 -0
  69. package/dist/esm/transaction/fixedScript/signTransaction.d.ts +4 -4
  70. package/dist/esm/transaction/fixedScript/signTransaction.d.ts.map +1 -1
  71. package/dist/esm/transaction/fixedScript/signTransaction.js +19 -1
  72. package/dist/esm/transaction/signTransaction.d.ts.map +1 -1
  73. package/dist/esm/transaction/signTransaction.js +4 -2
  74. package/dist/esm/transaction/types.d.ts +3 -1
  75. package/dist/esm/transaction/types.d.ts.map +1 -1
  76. package/dist/esm/transaction/types.js +4 -2
  77. package/package.json +10 -10
@@ -38,38 +38,106 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
39
  const strict_1 = __importDefault(require("node:assert/strict"));
40
40
  const utxolib = __importStar(require("@bitgo/utxo-lib"));
41
+ const wasm_utxo_1 = require("@bitgo/wasm-utxo");
42
+ const decode_1 = require("../../../../src/transaction/decode");
41
43
  const signPsbt_1 = require("../../../../src/transaction/fixedScript/signPsbt");
42
- function describeSignPsbtWithMusig2Participant(acidTest) {
43
- describe(`${acidTest.name}`, function () {
44
+ const signPsbtWasm_1 = require("../../../../src/transaction/fixedScript/signPsbtWasm");
45
+ const util_1 = require("./util");
46
+ function getMockCoinUtxolib(keys) {
47
+ return {
48
+ async getMusig2Nonces(psbt, walletId) {
49
+ psbt.setAllInputsMusig2NonceHD(keys.bitgo, { deterministic: true });
50
+ return psbt;
51
+ },
52
+ };
53
+ }
54
+ function getMockCoinWasm(keys, network) {
55
+ // Convert utxolib RootWalletKeys to wasm BIP32 using base58 string
56
+ // This ensures the private key is properly transferred
57
+ const bitgoXprv = keys.bitgo.toBase58();
58
+ const bitgoKey = wasm_utxo_1.BIP32.fromBase58(bitgoXprv);
59
+ const networkName = utxolib.getNetworkName(network);
60
+ (0, strict_1.default)(networkName, 'network name is required');
61
+ return {
62
+ async getMusig2Nonces(psbt, walletId) {
63
+ // Generate nonces using the bitgo key
64
+ psbt.generateMusig2Nonces(bitgoKey);
65
+ // Serialize and deserialize to simulate remote response
66
+ // This creates a new object so we don't get "recursive use of an object" error
67
+ return wasm_utxo_1.fixedScriptWallet.BitGoPsbt.fromBytes(psbt.serialize(), networkName);
68
+ },
69
+ };
70
+ }
71
+ function assertSignedUtxolib(psbt, userKey) {
72
+ // Verify that all wallet inputs have been signed by user key
73
+ psbt.data.inputs.forEach((input, inputIndex) => {
74
+ const { scriptType } = utxolib.bitgo.parsePsbtInput(input);
75
+ // Skip replay protection inputs (p2shP2pk)
76
+ if (scriptType === 'p2shP2pk') {
77
+ return;
78
+ }
79
+ // Verify user signature is present
80
+ const isValid = psbt.validateSignaturesOfInputHD(inputIndex, userKey);
81
+ (0, strict_1.default)(isValid, `input ${inputIndex} should have valid user signature`);
82
+ });
83
+ }
84
+ function assertSignedWasm(psbt, userKey, rootWalletKeys, replayProtection) {
85
+ const wasmUserKey = wasm_utxo_1.BIP32.from(userKey);
86
+ const parsed = psbt.parseTransactionWithWalletKeys(rootWalletKeys, replayProtection);
87
+ // Verify that all wallet inputs have been signed by user key
88
+ parsed.inputs.forEach((input, inputIndex) => {
89
+ // Skip replay protection inputs (p2shP2pk)
90
+ if (input.scriptType === 'p2shP2pk') {
91
+ return;
92
+ }
93
+ // Verify user signature is present
94
+ const isValid = psbt.verifySignature(inputIndex, wasmUserKey);
95
+ (0, strict_1.default)(isValid, `input ${inputIndex} should have valid user signature (scriptType=${input.scriptType})`);
96
+ });
97
+ }
98
+ function toWasmWalletKeys(keys) {
99
+ return {
100
+ triple: [keys.user, keys.backup, keys.bitgo],
101
+ derivationPrefixes: keys.derivationPrefixes,
102
+ };
103
+ }
104
+ function getReplayProtectionKeys(keys) {
105
+ // Replay protection inputs use the underived user public key
106
+ return {
107
+ publicKeys: [keys.user.publicKey],
108
+ };
109
+ }
110
+ function describeSignPsbtWithMusig2Participant(acidTest, { decodeWith }) {
111
+ describe(`${acidTest.name} ${decodeWith}`, function () {
44
112
  it('should sign unsigned psbt to halfsigned', async function () {
45
113
  // Create unsigned PSBT
46
- const psbt = acidTest.createPsbt();
47
- // Create mock Musig2Participant that sets BitGo nonces
48
- const mockCoin = {
49
- async getMusig2Nonces(psbt, walletId) {
50
- psbt.setAllInputsMusig2NonceHD(acidTest.rootWalletKeys.bitgo, { deterministic: true });
51
- return psbt;
52
- },
53
- };
54
- // Sign with user key through signPsbtWithMusig2Participant
55
- const result = await (0, signPsbt_1.signPsbtWithMusig2Participant)(mockCoin, psbt, acidTest.rootWalletKeys.user, {
56
- isLastSignature: false,
57
- signingStep: undefined,
58
- walletId: 'test-wallet-id',
59
- });
60
- // Result should be a PSBT (not finalized)
61
- (0, strict_1.default)(result instanceof utxolib.bitgo.UtxoPsbt, 'should return UtxoPsbt when not last signature');
62
- // Verify that all wallet inputs have been signed by user key
63
- result.data.inputs.forEach((input, inputIndex) => {
64
- const { scriptType } = utxolib.bitgo.parsePsbtInput(input);
65
- // Skip replay protection inputs (p2shP2pk)
66
- if (scriptType === 'p2shP2pk') {
67
- return;
68
- }
69
- // Verify user signature is present
70
- const isValid = result.validateSignaturesOfInputHD(inputIndex, acidTest.rootWalletKeys.user);
71
- (0, strict_1.default)(isValid, `input ${inputIndex} should have valid user signature`);
72
- });
114
+ const psbt = (0, decode_1.decodePsbtWith)(acidTest.createPsbt().toBuffer(), acidTest.network, decodeWith);
115
+ let result;
116
+ if (decodeWith === 'utxolib') {
117
+ (0, strict_1.default)(psbt instanceof utxolib.bitgo.UtxoPsbt, 'psbt should be a UtxoPsbt');
118
+ result = await (0, signPsbt_1.signPsbtWithMusig2Participant)(getMockCoinUtxolib(acidTest.rootWalletKeys), psbt, acidTest.rootWalletKeys.user, {
119
+ isLastSignature: false,
120
+ signingStep: undefined,
121
+ walletId: 'test-wallet-id',
122
+ });
123
+ // Result should be a PSBT (not finalized)
124
+ (0, strict_1.default)(result instanceof utxolib.bitgo.UtxoPsbt, 'should return UtxoPsbt when not last signature');
125
+ assertSignedUtxolib(result, acidTest.rootWalletKeys.user);
126
+ }
127
+ else {
128
+ (0, strict_1.default)(psbt instanceof wasm_utxo_1.fixedScriptWallet.BitGoPsbt, 'psbt should be a BitGoPsbt');
129
+ const wasmWalletKeys = toWasmWalletKeys(acidTest.rootWalletKeys);
130
+ const replayProtection = getReplayProtectionKeys(acidTest.rootWalletKeys);
131
+ result = await (0, signPsbtWasm_1.signPsbtWithMusig2ParticipantWasm)(getMockCoinWasm(acidTest.rootWalletKeys, acidTest.network), psbt, acidTest.rootWalletKeys.user, wasm_utxo_1.fixedScriptWallet.RootWalletKeys.from(acidTest.rootWalletKeys), {
132
+ replayProtection,
133
+ isLastSignature: false,
134
+ signingStep: undefined,
135
+ walletId: 'test-wallet-id',
136
+ });
137
+ // Result should be a PSBT (not finalized)
138
+ (0, strict_1.default)(result instanceof wasm_utxo_1.fixedScriptWallet.BitGoPsbt, 'should return BitGoPsbt when not last signature');
139
+ assertSignedWasm(result, acidTest.rootWalletKeys.user, wasmWalletKeys, replayProtection);
140
+ }
73
141
  });
74
142
  });
75
143
  }
@@ -80,7 +148,10 @@ describe('signPsbtWithMusig2Participant', function () {
80
148
  utxolib.testutil.AcidTest.suite({ includeP2trMusig2ScriptPath: false })
81
149
  .filter((test) => test.signStage === 'unsigned')
82
150
  .forEach((test) => {
83
- describeSignPsbtWithMusig2Participant(test);
151
+ describeSignPsbtWithMusig2Participant(test, { decodeWith: 'utxolib' });
152
+ if ((0, util_1.hasWasmUtxoSupport)(test.network)) {
153
+ describeSignPsbtWithMusig2Participant(test, { decodeWith: 'wasm-utxo' });
154
+ }
84
155
  });
85
156
  });
86
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnblBzYnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi90ZXN0L3VuaXQvdHJhbnNhY3Rpb24vZml4ZWRTY3JpcHQvc2lnblBzYnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxnRUFBd0M7QUFFeEMseURBQTJDO0FBRTNDLCtFQUFvSDtBQUVwSCxTQUFTLHFDQUFxQyxDQUFDLFFBQW1DO0lBQ2hGLFFBQVEsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRTtRQUMzQixFQUFFLENBQUMseUNBQXlDLEVBQUUsS0FBSztZQUNqRCx1QkFBdUI7WUFDdkIsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBRW5DLHVEQUF1RDtZQUN2RCxNQUFNLFFBQVEsR0FBc0I7Z0JBQ2xDLEtBQUssQ0FBQyxlQUFlLENBQUMsSUFBNEIsRUFBRSxRQUFnQjtvQkFDbEUsSUFBSSxDQUFDLHlCQUF5QixDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7b0JBQ3ZGLE9BQU8sSUFBSSxDQUFDO2dCQUNkLENBQUM7YUFDRixDQUFDO1lBRUYsMkRBQTJEO1lBQzNELE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBQSx3Q0FBNkIsRUFBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLFFBQVEsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFO2dCQUMvRixlQUFlLEVBQUUsS0FBSztnQkFDdEIsV0FBVyxFQUFFLFNBQVM7Z0JBQ3RCLFFBQVEsRUFBRSxnQkFBZ0I7YUFDM0IsQ0FBQyxDQUFDO1lBRUgsMENBQTBDO1lBQzFDLElBQUEsZ0JBQU0sRUFBQyxNQUFNLFlBQVksT0FBTyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsZ0RBQWdELENBQUMsQ0FBQztZQUVuRyw2REFBNkQ7WUFDN0QsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxFQUFFO2dCQUMvQyxNQUFNLEVBQUUsVUFBVSxFQUFFLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBRTNELDJDQUEyQztnQkFDM0MsSUFBSSxVQUFVLEtBQUssVUFBVSxFQUFFLENBQUM7b0JBQzlCLE9BQU87Z0JBQ1QsQ0FBQztnQkFFRCxtQ0FBbUM7Z0JBQ25DLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQywyQkFBMkIsQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDN0YsSUFBQSxnQkFBTSxFQUFDLE9BQU8sRUFBRSxTQUFTLFVBQVUsbUNBQW1DLENBQUMsQ0FBQztZQUMxRSxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsUUFBUSxDQUFDLCtCQUErQixFQUFFO0lBQ3hDLGtFQUFrRTtJQUNsRSxvRUFBb0U7SUFDcEUsMEVBQTBFO0lBQzFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLDJCQUEyQixFQUFFLEtBQUssRUFBRSxDQUFDO1NBQ3BFLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsS0FBSyxVQUFVLENBQUM7U0FDL0MsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7UUFDaEIscUNBQXFDLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDOUMsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSAnbm9kZTphc3NlcnQvc3RyaWN0JztcblxuaW1wb3J0ICogYXMgdXR4b2xpYiBmcm9tICdAYml0Z28vdXR4by1saWInO1xuXG5pbXBvcnQgeyBNdXNpZzJQYXJ0aWNpcGFudCwgc2lnblBzYnRXaXRoTXVzaWcyUGFydGljaXBhbnQgfSBmcm9tICcuLi8uLi8uLi8uLi9zcmMvdHJhbnNhY3Rpb24vZml4ZWRTY3JpcHQvc2lnblBzYnQnO1xuXG5mdW5jdGlvbiBkZXNjcmliZVNpZ25Qc2J0V2l0aE11c2lnMlBhcnRpY2lwYW50KGFjaWRUZXN0OiB1dHhvbGliLnRlc3R1dGlsLkFjaWRUZXN0KSB7XG4gIGRlc2NyaWJlKGAke2FjaWRUZXN0Lm5hbWV9YCwgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdzaG91bGQgc2lnbiB1bnNpZ25lZCBwc2J0IHRvIGhhbGZzaWduZWQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBDcmVhdGUgdW5zaWduZWQgUFNCVFxuICAgICAgY29uc3QgcHNidCA9IGFjaWRUZXN0LmNyZWF0ZVBzYnQoKTtcblxuICAgICAgLy8gQ3JlYXRlIG1vY2sgTXVzaWcyUGFydGljaXBhbnQgdGhhdCBzZXRzIEJpdEdvIG5vbmNlc1xuICAgICAgY29uc3QgbW9ja0NvaW46IE11c2lnMlBhcnRpY2lwYW50ID0ge1xuICAgICAgICBhc3luYyBnZXRNdXNpZzJOb25jZXMocHNidDogdXR4b2xpYi5iaXRnby5VdHhvUHNidCwgd2FsbGV0SWQ6IHN0cmluZyk6IFByb21pc2U8dXR4b2xpYi5iaXRnby5VdHhvUHNidD4ge1xuICAgICAgICAgIHBzYnQuc2V0QWxsSW5wdXRzTXVzaWcyTm9uY2VIRChhY2lkVGVzdC5yb290V2FsbGV0S2V5cy5iaXRnbywgeyBkZXRlcm1pbmlzdGljOiB0cnVlIH0pO1xuICAgICAgICAgIHJldHVybiBwc2J0O1xuICAgICAgICB9LFxuICAgICAgfTtcblxuICAgICAgLy8gU2lnbiB3aXRoIHVzZXIga2V5IHRocm91Z2ggc2lnblBzYnRXaXRoTXVzaWcyUGFydGljaXBhbnRcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHNpZ25Qc2J0V2l0aE11c2lnMlBhcnRpY2lwYW50KG1vY2tDb2luLCBwc2J0LCBhY2lkVGVzdC5yb290V2FsbGV0S2V5cy51c2VyLCB7XG4gICAgICAgIGlzTGFzdFNpZ25hdHVyZTogZmFsc2UsXG4gICAgICAgIHNpZ25pbmdTdGVwOiB1bmRlZmluZWQsXG4gICAgICAgIHdhbGxldElkOiAndGVzdC13YWxsZXQtaWQnLFxuICAgICAgfSk7XG5cbiAgICAgIC8vIFJlc3VsdCBzaG91bGQgYmUgYSBQU0JUIChub3QgZmluYWxpemVkKVxuICAgICAgYXNzZXJ0KHJlc3VsdCBpbnN0YW5jZW9mIHV0eG9saWIuYml0Z28uVXR4b1BzYnQsICdzaG91bGQgcmV0dXJuIFV0eG9Qc2J0IHdoZW4gbm90IGxhc3Qgc2lnbmF0dXJlJyk7XG5cbiAgICAgIC8vIFZlcmlmeSB0aGF0IGFsbCB3YWxsZXQgaW5wdXRzIGhhdmUgYmVlbiBzaWduZWQgYnkgdXNlciBrZXlcbiAgICAgIHJlc3VsdC5kYXRhLmlucHV0cy5mb3JFYWNoKChpbnB1dCwgaW5wdXRJbmRleCkgPT4ge1xuICAgICAgICBjb25zdCB7IHNjcmlwdFR5cGUgfSA9IHV0eG9saWIuYml0Z28ucGFyc2VQc2J0SW5wdXQoaW5wdXQpO1xuXG4gICAgICAgIC8vIFNraXAgcmVwbGF5IHByb3RlY3Rpb24gaW5wdXRzIChwMnNoUDJwaylcbiAgICAgICAgaWYgKHNjcmlwdFR5cGUgPT09ICdwMnNoUDJwaycpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBWZXJpZnkgdXNlciBzaWduYXR1cmUgaXMgcHJlc2VudFxuICAgICAgICBjb25zdCBpc1ZhbGlkID0gcmVzdWx0LnZhbGlkYXRlU2lnbmF0dXJlc09mSW5wdXRIRChpbnB1dEluZGV4LCBhY2lkVGVzdC5yb290V2FsbGV0S2V5cy51c2VyKTtcbiAgICAgICAgYXNzZXJ0KGlzVmFsaWQsIGBpbnB1dCAke2lucHV0SW5kZXh9IHNob3VsZCBoYXZlIHZhbGlkIHVzZXIgc2lnbmF0dXJlYCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG59XG5cbmRlc2NyaWJlKCdzaWduUHNidFdpdGhNdXNpZzJQYXJ0aWNpcGFudCcsIGZ1bmN0aW9uICgpIHtcbiAgLy8gQ3JlYXRlIHRlc3Qgc3VpdGUgd2l0aCBpbmNsdWRlUDJ0ck11c2lnMlNjcmlwdFBhdGggc2V0IHRvIGZhbHNlXG4gIC8vIHAydHJNdXNpZzIgc2NyaXB0IHBhdGggaW5wdXRzIGFyZSBzaWduZWQgYnkgdXNlciBhbmQgYmFja3VwIGtleXMsXG4gIC8vIHdoaWNoIGlzIG5vdCB0aGUgdHlwaWNhbCBzaWduaW5nIHBhdHRlcm4gYW5kIG1ha2VzIHRlc3RpbmcgbW9yZSBjb21wbGV4XG4gIHV0eG9saWIudGVzdHV0aWwuQWNpZFRlc3Quc3VpdGUoeyBpbmNsdWRlUDJ0ck11c2lnMlNjcmlwdFBhdGg6IGZhbHNlIH0pXG4gICAgLmZpbHRlcigodGVzdCkgPT4gdGVzdC5zaWduU3RhZ2UgPT09ICd1bnNpZ25lZCcpXG4gICAgLmZvckVhY2goKHRlc3QpID0+IHtcbiAgICAgIGRlc2NyaWJlU2lnblBzYnRXaXRoTXVzaWcyUGFydGljaXBhbnQodGVzdCk7XG4gICAgfSk7XG59KTtcbiJdfQ==
157
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnblBzYnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi90ZXN0L3VuaXQvdHJhbnNhY3Rpb24vZml4ZWRTY3JpcHQvc2lnblBzYnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxnRUFBd0M7QUFFeEMseURBQTJDO0FBQzNDLGdEQUE0RDtBQUU1RCwrREFBb0U7QUFFcEUsK0VBQWlHO0FBQ2pHLHVGQUc4RDtBQUc5RCxpQ0FBNEM7QUFFNUMsU0FBUyxrQkFBa0IsQ0FBQyxJQUFrQztJQUM1RCxPQUFPO1FBQ0wsS0FBSyxDQUFDLGVBQWUsQ0FBQyxJQUE0QixFQUFFLFFBQWdCO1lBQ2xFLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7WUFDcEUsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO0tBQ0YsQ0FBQztBQUNKLENBQUM7QUFFRCxTQUFTLGVBQWUsQ0FDdEIsSUFBa0MsRUFDbEMsT0FBd0I7SUFFeEIsbUVBQW1FO0lBQ25FLHVEQUF1RDtJQUN2RCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3hDLE1BQU0sUUFBUSxHQUFHLGlCQUFLLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzdDLE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDcEQsSUFBQSxnQkFBTSxFQUFDLFdBQVcsRUFBRSwwQkFBMEIsQ0FBQyxDQUFDO0lBQ2hELE9BQU87UUFDTCxLQUFLLENBQUMsZUFBZSxDQUFDLElBQWlDLEVBQUUsUUFBZ0I7WUFDdkUsc0NBQXNDO1lBQ3RDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNwQyx3REFBd0Q7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LGdCQUFNLEVBQUMsTUFBTSxZQUFZLDZCQUFpQixDQUFDLFNBQVMsRUFBRSxpREFBaUQsQ0FBQyxDQUFDO2dCQUV6RyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsY0FBYyxFQUFFLGdCQUFnQixDQUFDLENBQUM7WUFDM0YsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsUUFBUSxDQUFDLCtCQUErQixFQUFFO0lBQ3hDLGtFQUFrRTtJQUNsRSxvRUFBb0U7SUFDcEUsMEVBQTBFO0lBQzFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLDJCQUEyQixFQUFFLEtBQUssRUFBRSxDQUFDO1NBQ3BFLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsS0FBSyxVQUFVLENBQUM7U0FDL0MsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7UUFDaEIscUNBQXFDLENBQUMsSUFBSSxFQUFFLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7UUFDdkUsSUFBSSxJQUFBLHlCQUFrQixFQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ3JDLHFDQUFxQyxDQUFDLElBQUksRUFBRSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQzNFLENBQUM7SUFDSCxDQUFDLENBQUMsQ0FBQztBQUNQLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tICdub2RlOmFzc2VydC9zdHJpY3QnO1xuXG5pbXBvcnQgKiBhcyB1dHhvbGliIGZyb20gJ0BiaXRnby91dHhvLWxpYic7XG5pbXBvcnQgeyBCSVAzMiwgZml4ZWRTY3JpcHRXYWxsZXQgfSBmcm9tICdAYml0Z28vd2FzbS11dHhvJztcblxuaW1wb3J0IHsgZGVjb2RlUHNidFdpdGggfSBmcm9tICcuLi8uLi8uLi8uLi9zcmMvdHJhbnNhY3Rpb24vZGVjb2RlJztcbmltcG9ydCB7IE11c2lnMlBhcnRpY2lwYW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vc3JjL3RyYW5zYWN0aW9uL2ZpeGVkU2NyaXB0L211c2lnMic7XG5pbXBvcnQgeyBzaWduUHNidFdpdGhNdXNpZzJQYXJ0aWNpcGFudCB9IGZyb20gJy4uLy4uLy4uLy4uL3NyYy90cmFuc2FjdGlvbi9maXhlZFNjcmlwdC9zaWduUHNidCc7XG5pbXBvcnQge1xuICBSZXBsYXlQcm90ZWN0aW9uS2V5cyxcbiAgc2lnblBzYnRXaXRoTXVzaWcyUGFydGljaXBhbnRXYXNtLFxufSBmcm9tICcuLi8uLi8uLi8uLi9zcmMvdHJhbnNhY3Rpb24vZml4ZWRTY3JpcHQvc2lnblBzYnRXYXNtJztcbmltcG9ydCB7IFNka0JhY2tlbmQgfSBmcm9tICcuLi8uLi8uLi8uLi9zcmMvdHJhbnNhY3Rpb24vdHlwZXMnO1xuXG5pbXBvcnQgeyBoYXNXYXNtVXR4b1N1cHBvcnQgfSBmcm9tICcuL3V0aWwnO1xuXG5mdW5jdGlvbiBnZXRNb2NrQ29pblV0eG9saWIoa2V5czogdXR4b2xpYi5iaXRnby5Sb290V2FsbGV0S2V5cyk6IE11c2lnMlBhcnRpY2lwYW50PHV0eG9saWIuYml0Z28uVXR4b1BzYnQ+IHtcbiAgcmV0dXJuIHtcbiAgICBhc3luYyBnZXRNdXNpZzJOb25jZXMocHNidDogdXR4b2xpYi5iaXRnby5VdHhvUHNidCwgd2FsbGV0SWQ6IHN0cmluZyk6IFByb21pc2U8dXR4b2xpYi5iaXRnby5VdHhvUHNidD4ge1xuICAgICAgcHNidC5zZXRBbGxJbnB1dHNNdXNpZzJOb25jZUhEKGtleXMuYml0Z28sIHsgZGV0ZXJtaW5pc3RpYzogdHJ1ZSB9KTtcbiAgICAgIHJldHVybiBwc2J0O1xuICAgIH0sXG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldE1vY2tDb2luV2FzbShcbiAga2V5czogdXR4b2xpYi5iaXRnby5Sb290V2FsbGV0S2V5cyxcbiAgbmV0d29yazogdXR4b2xpYi5OZXR3b3JrXG4pOiBNdXNpZzJQYXJ0aWNpcGFudDxmaXhlZFNjcmlwdFdhbGxldC5CaXRHb1BzYnQ+IHtcbiAgLy8gQ29udmVydCB1dHhvbGliIFJvb3RXYWxsZXRLZXlzIHRvIHdhc20gQklQMzIgdXNpbmcgYmFzZTU4IHN0cmluZ1xuICAvLyBUaGlzIGVuc3VyZXMgdGhlIHByaXZhdGUga2V5IGlzIHByb3Blcmx5IHRyYW5zZmVycmVkXG4gIGNvbnN0IGJpdGdvWHBydiA9IGtleXMuYml0Z28udG9CYXNlNTgoKTtcbiAgY29uc3QgYml0Z29LZXkgPSBCSVAzMi5mcm9tQmFzZTU4KGJpdGdvWHBydik7XG4gIGNvbnN0IG5ldHdvcmtOYW1lID0gdXR4b2xpYi5nZXROZXR3b3JrTmFtZShuZXR3b3JrKTtcbiAgYXNzZXJ0KG5ldHdvcmtOYW1lLCAnbmV0d29yayBuYW1lIGlzIHJlcXVpcmVkJyk7XG4gIHJldHVybiB7XG4gICAgYXN5bmMgZ2V0TXVzaWcyTm9uY2VzKHBzYnQ6IGZpeGVkU2NyaXB0V2FsbGV0LkJpdEdvUHNidCwgd2FsbGV0SWQ6IHN0cmluZyk6IFByb21pc2U8Zml4ZWRTY3JpcHRXYWxsZXQuQml0R29Qc2J0PiB7XG4gICAgICAvLyBHZW5lcmF0ZSBub25jZXMgdXNpbmcgdGhlIGJpdGdvIGtleVxuICAgICAgcHNidC5nZW5lcmF0ZU11c2lnMk5vbmNlcyhiaXRnb0tleSk7XG4gICAgICAvLyBTZXJpYWxpemUgYW5kIGRlc2VyaWFsaXplIHRvIHNpbXVsYXRlIHJlbW90ZSByZXNwb25zZVxuICAgICAgLy8gVGhpcyBjcmVhdGVzIGEgbmV3IG9iamVjdCBzbyB3ZSBkb24ndCBnZXQgXCJyZWN1cnNpdmUgdXNlIG9mIGFuIG9iamVjdFwiIGVycm9yXG4gICAgICByZXR1cm4gZml4ZWRTY3JpcHRXYWxsZXQuQml0R29Qc2J0LmZyb21CeXRlcyhwc2J0LnNlcmlhbGl6ZSgpLCBuZXR3b3JrTmFtZSk7XG4gICAgfSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gYXNzZXJ0U2lnbmVkVXR4b2xpYihwc2J0OiB1dHhvbGliLmJpdGdvLlV0eG9Qc2J0LCB1c2VyS2V5OiB1dHhvbGliLkJJUDMySW50ZXJmYWNlKTogdm9pZCB7XG4gIC8vIFZlcmlmeSB0aGF0IGFsbCB3YWxsZXQgaW5wdXRzIGhhdmUgYmVlbiBzaWduZWQgYnkgdXNlciBrZXlcbiAgcHNidC5kYXRhLmlucHV0cy5mb3JFYWNoKChpbnB1dCwgaW5wdXRJbmRleCkgPT4ge1xuICAgIGNvbnN0IHsgc2NyaXB0VHlwZSB9ID0gdXR4b2xpYi5iaXRnby5wYXJzZVBzYnRJbnB1dChpbnB1dCk7XG5cbiAgICAvLyBTa2lwIHJlcGxheSBwcm90ZWN0aW9uIGlucHV0cyAocDJzaFAycGspXG4gICAgaWYgKHNjcmlwdFR5cGUgPT09ICdwMnNoUDJwaycpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBWZXJpZnkgdXNlciBzaWduYXR1cmUgaXMgcHJlc2VudFxuICAgIGNvbnN0IGlzVmFsaWQgPSBwc2J0LnZhbGlkYXRlU2lnbmF0dXJlc09mSW5wdXRIRChpbnB1dEluZGV4LCB1c2VyS2V5KTtcbiAgICBhc3NlcnQoaXNWYWxpZCwgYGlucHV0ICR7aW5wdXRJbmRleH0gc2hvdWxkIGhhdmUgdmFsaWQgdXNlciBzaWduYXR1cmVgKTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGFzc2VydFNpZ25lZFdhc20oXG4gIHBzYnQ6IGZpeGVkU2NyaXB0V2FsbGV0LkJpdEdvUHNidCxcbiAgdXNlcktleTogdXR4b2xpYi5CSVAzMkludGVyZmFjZSxcbiAgcm9vdFdhbGxldEtleXM6IGZpeGVkU2NyaXB0V2FsbGV0LklXYWxsZXRLZXlzLFxuICByZXBsYXlQcm90ZWN0aW9uOiBSZXBsYXlQcm90ZWN0aW9uS2V5c1xuKTogdm9pZCB7XG4gIGNvbnN0IHdhc21Vc2VyS2V5ID0gQklQMzIuZnJvbSh1c2VyS2V5KTtcbiAgY29uc3QgcGFyc2VkID0gcHNidC5wYXJzZVRyYW5zYWN0aW9uV2l0aFdhbGxldEtleXMocm9vdFdhbGxldEtleXMsIHJlcGxheVByb3RlY3Rpb24pO1xuXG4gIC8vIFZlcmlmeSB0aGF0IGFsbCB3YWxsZXQgaW5wdXRzIGhhdmUgYmVlbiBzaWduZWQgYnkgdXNlciBrZXlcbiAgcGFyc2VkLmlucHV0cy5mb3JFYWNoKChpbnB1dCwgaW5wdXRJbmRleCkgPT4ge1xuICAgIC8vIFNraXAgcmVwbGF5IHByb3RlY3Rpb24gaW5wdXRzIChwMnNoUDJwaylcbiAgICBpZiAoaW5wdXQuc2NyaXB0VHlwZSA9PT0gJ3Ayc2hQMnBrJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFZlcmlmeSB1c2VyIHNpZ25hdHVyZSBpcyBwcmVzZW50XG4gICAgY29uc3QgaXNWYWxpZCA9IHBzYnQudmVyaWZ5U2lnbmF0dXJlKGlucHV0SW5kZXgsIHdhc21Vc2VyS2V5KTtcbiAgICBhc3NlcnQoaXNWYWxpZCwgYGlucHV0ICR7aW5wdXRJbmRleH0gc2hvdWxkIGhhdmUgdmFsaWQgdXNlciBzaWduYXR1cmUgKHNjcmlwdFR5cGU9JHtpbnB1dC5zY3JpcHRUeXBlfSlgKTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHRvV2FzbVdhbGxldEtleXMoa2V5czogdXR4b2xpYi5iaXRnby5Sb290V2FsbGV0S2V5cyk6IGZpeGVkU2NyaXB0V2FsbGV0LklXYWxsZXRLZXlzIHtcbiAgcmV0dXJuIHtcbiAgICB0cmlwbGU6IFtrZXlzLnVzZXIsIGtleXMuYmFja3VwLCBrZXlzLmJpdGdvXSxcbiAgICBkZXJpdmF0aW9uUHJlZml4ZXM6IGtleXMuZGVyaXZhdGlvblByZWZpeGVzLFxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXRSZXBsYXlQcm90ZWN0aW9uS2V5cyhrZXlzOiB1dHhvbGliLmJpdGdvLlJvb3RXYWxsZXRLZXlzKTogUmVwbGF5UHJvdGVjdGlvbktleXMge1xuICAvLyBSZXBsYXkgcHJvdGVjdGlvbiBpbnB1dHMgdXNlIHRoZSB1bmRlcml2ZWQgdXNlciBwdWJsaWMga2V5XG4gIHJldHVybiB7XG4gICAgcHVibGljS2V5czogW2tleXMudXNlci5wdWJsaWNLZXldLFxuICB9O1xufVxuXG5mdW5jdGlvbiBkZXNjcmliZVNpZ25Qc2J0V2l0aE11c2lnMlBhcnRpY2lwYW50KFxuICBhY2lkVGVzdDogdXR4b2xpYi50ZXN0dXRpbC5BY2lkVGVzdCxcbiAgeyBkZWNvZGVXaXRoIH06IHsgZGVjb2RlV2l0aDogU2RrQmFja2VuZCB9XG4pIHtcbiAgZGVzY3JpYmUoYCR7YWNpZFRlc3QubmFtZX0gJHtkZWNvZGVXaXRofWAsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgnc2hvdWxkIHNpZ24gdW5zaWduZWQgcHNidCB0byBoYWxmc2lnbmVkJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgLy8gQ3JlYXRlIHVuc2lnbmVkIFBTQlRcbiAgICAgIGNvbnN0IHBzYnQgPSBkZWNvZGVQc2J0V2l0aChhY2lkVGVzdC5jcmVhdGVQc2J0KCkudG9CdWZmZXIoKSwgYWNpZFRlc3QubmV0d29yaywgZGVjb2RlV2l0aCk7XG5cbiAgICAgIGxldCByZXN1bHQ7XG4gICAgICBpZiAoZGVjb2RlV2l0aCA9PT0gJ3V0eG9saWInKSB7XG4gICAgICAgIGFzc2VydChwc2J0IGluc3RhbmNlb2YgdXR4b2xpYi5iaXRnby5VdHhvUHNidCwgJ3BzYnQgc2hvdWxkIGJlIGEgVXR4b1BzYnQnKTtcbiAgICAgICAgcmVzdWx0ID0gYXdhaXQgc2lnblBzYnRXaXRoTXVzaWcyUGFydGljaXBhbnQoXG4gICAgICAgICAgZ2V0TW9ja0NvaW5VdHhvbGliKGFjaWRUZXN0LnJvb3RXYWxsZXRLZXlzKSxcbiAgICAgICAgICBwc2J0LFxuICAgICAgICAgIGFjaWRUZXN0LnJvb3RXYWxsZXRLZXlzLnVzZXIsXG4gICAgICAgICAge1xuICAgICAgICAgICAgaXNMYXN0U2lnbmF0dXJlOiBmYWxzZSxcbiAgICAgICAgICAgIHNpZ25pbmdTdGVwOiB1bmRlZmluZWQsXG4gICAgICAgICAgICB3YWxsZXRJZDogJ3Rlc3Qtd2FsbGV0LWlkJyxcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICAgIC8vIFJlc3VsdCBzaG91bGQgYmUgYSBQU0JUIChub3QgZmluYWxpemVkKVxuICAgICAgICBhc3NlcnQocmVzdWx0IGluc3RhbmNlb2YgdXR4b2xpYi5iaXRnby5VdHhvUHNidCwgJ3Nob3VsZCByZXR1cm4gVXR4b1BzYnQgd2hlbiBub3QgbGFzdCBzaWduYXR1cmUnKTtcblxuICAgICAgICBhc3NlcnRTaWduZWRVdHhvbGliKHJlc3VsdCwgYWNpZFRlc3Qucm9vdFdhbGxldEtleXMudXNlcik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhc3NlcnQocHNidCBpbnN0YW5jZW9mIGZpeGVkU2NyaXB0V2FsbGV0LkJpdEdvUHNidCwgJ3BzYnQgc2hvdWxkIGJlIGEgQml0R29Qc2J0Jyk7XG4gICAgICAgIGNvbnN0IHdhc21XYWxsZXRLZXlzID0gdG9XYXNtV2FsbGV0S2V5cyhhY2lkVGVzdC5yb290V2FsbGV0S2V5cyk7XG4gICAgICAgIGNvbnN0IHJlcGxheVByb3RlY3Rpb24gPSBnZXRSZXBsYXlQcm90ZWN0aW9uS2V5cyhhY2lkVGVzdC5yb290V2FsbGV0S2V5cyk7XG4gICAgICAgIHJlc3VsdCA9IGF3YWl0IHNpZ25Qc2J0V2l0aE11c2lnMlBhcnRpY2lwYW50V2FzbShcbiAgICAgICAgICBnZXRNb2NrQ29pbldhc20oYWNpZFRlc3Qucm9vdFdhbGxldEtleXMsIGFjaWRUZXN0Lm5ldHdvcmspLFxuICAgICAgICAgIHBzYnQsXG4gICAgICAgICAgYWNpZFRlc3Qucm9vdFdhbGxldEtleXMudXNlcixcbiAgICAgICAgICBmaXhlZFNjcmlwdFdhbGxldC5Sb290V2FsbGV0S2V5cy5mcm9tKGFjaWRUZXN0LnJvb3RXYWxsZXRLZXlzKSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICByZXBsYXlQcm90ZWN0aW9uLFxuICAgICAgICAgICAgaXNMYXN0U2lnbmF0dXJlOiBmYWxzZSxcbiAgICAgICAgICAgIHNpZ25pbmdTdGVwOiB1bmRlZmluZWQsXG4gICAgICAgICAgICB3YWxsZXRJZDogJ3Rlc3Qtd2FsbGV0LWlkJyxcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICAgIC8vIFJlc3VsdCBzaG91bGQgYmUgYSBQU0JUIChub3QgZmluYWxpemVkKVxuICAgICAgICBhc3NlcnQocmVzdWx0IGluc3RhbmNlb2YgZml4ZWRTY3JpcHRXYWxsZXQuQml0R29Qc2J0LCAnc2hvdWxkIHJldHVybiBCaXRHb1BzYnQgd2hlbiBub3QgbGFzdCBzaWduYXR1cmUnKTtcblxuICAgICAgICBhc3NlcnRTaWduZWRXYXNtKHJlc3VsdCwgYWNpZFRlc3Qucm9vdFdhbGxldEtleXMudXNlciwgd2FzbVdhbGxldEtleXMsIHJlcGxheVByb3RlY3Rpb24pO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcbn1cblxuZGVzY3JpYmUoJ3NpZ25Qc2J0V2l0aE11c2lnMlBhcnRpY2lwYW50JywgZnVuY3Rpb24gKCkge1xuICAvLyBDcmVhdGUgdGVzdCBzdWl0ZSB3aXRoIGluY2x1ZGVQMnRyTXVzaWcyU2NyaXB0UGF0aCBzZXQgdG8gZmFsc2VcbiAgLy8gcDJ0ck11c2lnMiBzY3JpcHQgcGF0aCBpbnB1dHMgYXJlIHNpZ25lZCBieSB1c2VyIGFuZCBiYWNrdXAga2V5cyxcbiAgLy8gd2hpY2ggaXMgbm90IHRoZSB0eXBpY2FsIHNpZ25pbmcgcGF0dGVybiBhbmQgbWFrZXMgdGVzdGluZyBtb3JlIGNvbXBsZXhcbiAgdXR4b2xpYi50ZXN0dXRpbC5BY2lkVGVzdC5zdWl0ZSh7IGluY2x1ZGVQMnRyTXVzaWcyU2NyaXB0UGF0aDogZmFsc2UgfSlcbiAgICAuZmlsdGVyKCh0ZXN0KSA9PiB0ZXN0LnNpZ25TdGFnZSA9PT0gJ3Vuc2lnbmVkJylcbiAgICAuZm9yRWFjaCgodGVzdCkgPT4ge1xuICAgICAgZGVzY3JpYmVTaWduUHNidFdpdGhNdXNpZzJQYXJ0aWNpcGFudCh0ZXN0LCB7IGRlY29kZVdpdGg6ICd1dHhvbGliJyB9KTtcbiAgICAgIGlmIChoYXNXYXNtVXR4b1N1cHBvcnQodGVzdC5uZXR3b3JrKSkge1xuICAgICAgICBkZXNjcmliZVNpZ25Qc2J0V2l0aE11c2lnMlBhcnRpY2lwYW50KHRlc3QsIHsgZGVjb2RlV2l0aDogJ3dhc20tdXR4bycgfSk7XG4gICAgICB9XG4gICAgfSk7XG59KTtcbiJdfQ==
@@ -1 +1 @@
1
- {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../../../../test/unit/transaction/fixedScript/util.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAC;AAE3C,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,GAAG,OAAO,CAOpE"}
1
+ {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../../../../test/unit/transaction/fixedScript/util.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAC;AAE3C,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,GAAG,OAAO,CAQpE"}
@@ -39,8 +39,9 @@ function hasWasmUtxoSupport(network) {
39
39
  return ![
40
40
  utxolib.networks.bitcoincash,
41
41
  utxolib.networks.bitcoingold,
42
+ utxolib.networks.bitcoinsv,
42
43
  utxolib.networks.ecash,
43
44
  utxolib.networks.zcash,
44
45
  ].includes(utxolib.getMainnet(network));
45
46
  }
46
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Rlc3QvdW5pdC90cmFuc2FjdGlvbi9maXhlZFNjcmlwdC91dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUEsZ0RBT0M7QUFURCx5REFBMkM7QUFFM0MsU0FBZ0Isa0JBQWtCLENBQUMsT0FBd0I7SUFDekQsT0FBTyxDQUFDO1FBQ04sT0FBTyxDQUFDLFFBQVEsQ0FBQyxXQUFXO1FBQzVCLE9BQU8sQ0FBQyxRQUFRLENBQUMsV0FBVztRQUM1QixPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUs7UUFDdEIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLO0tBQ3ZCLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUMxQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgdXR4b2xpYiBmcm9tICdAYml0Z28vdXR4by1saWInO1xuXG5leHBvcnQgZnVuY3Rpb24gaGFzV2FzbVV0eG9TdXBwb3J0KG5ldHdvcms6IHV0eG9saWIuTmV0d29yayk6IGJvb2xlYW4ge1xuICByZXR1cm4gIVtcbiAgICB1dHhvbGliLm5ldHdvcmtzLmJpdGNvaW5jYXNoLFxuICAgIHV0eG9saWIubmV0d29ya3MuYml0Y29pbmdvbGQsXG4gICAgdXR4b2xpYi5uZXR3b3Jrcy5lY2FzaCxcbiAgICB1dHhvbGliLm5ldHdvcmtzLnpjYXNoLFxuICBdLmluY2x1ZGVzKHV0eG9saWIuZ2V0TWFpbm5ldChuZXR3b3JrKSk7XG59XG4iXX0=
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Rlc3QvdW5pdC90cmFuc2FjdGlvbi9maXhlZFNjcmlwdC91dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUEsZ0RBUUM7QUFWRCx5REFBMkM7QUFFM0MsU0FBZ0Isa0JBQWtCLENBQUMsT0FBd0I7SUFDekQsT0FBTyxDQUFDO1FBQ04sT0FBTyxDQUFDLFFBQVEsQ0FBQyxXQUFXO1FBQzVCLE9BQU8sQ0FBQyxRQUFRLENBQUMsV0FBVztRQUM1QixPQUFPLENBQUMsUUFBUSxDQUFDLFNBQVM7UUFDMUIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLO1FBQ3RCLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSztLQUN2QixDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7QUFDMUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHV0eG9saWIgZnJvbSAnQGJpdGdvL3V0eG8tbGliJztcblxuZXhwb3J0IGZ1bmN0aW9uIGhhc1dhc21VdHhvU3VwcG9ydChuZXR3b3JrOiB1dHhvbGliLk5ldHdvcmspOiBib29sZWFuIHtcbiAgcmV0dXJuICFbXG4gICAgdXR4b2xpYi5uZXR3b3Jrcy5iaXRjb2luY2FzaCxcbiAgICB1dHhvbGliLm5ldHdvcmtzLmJpdGNvaW5nb2xkLFxuICAgIHV0eG9saWIubmV0d29ya3MuYml0Y29pbnN2LFxuICAgIHV0eG9saWIubmV0d29ya3MuZWNhc2gsXG4gICAgdXR4b2xpYi5uZXR3b3Jrcy56Y2FzaCxcbiAgXS5pbmNsdWRlcyh1dHhvbGliLmdldE1haW5uZXQobmV0d29yaykpO1xufVxuIl19