@bitgo/sdk-core 37.5.0 → 37.7.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 (104) hide show
  1. package/dist/src/api/types.d.ts +1 -0
  2. package/dist/src/api/types.d.ts.map +1 -1
  3. package/dist/src/api/types.js +1 -1
  4. package/dist/src/bitgo/baseCoin/baseCoin.d.ts +14 -1
  5. package/dist/src/bitgo/baseCoin/baseCoin.d.ts.map +1 -1
  6. package/dist/src/bitgo/baseCoin/baseCoin.js +16 -1
  7. package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts +57 -0
  8. package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts.map +1 -1
  9. package/dist/src/bitgo/baseCoin/iBaseCoin.js +1 -1
  10. package/dist/src/bitgo/defi/defiVault.d.ts +80 -0
  11. package/dist/src/bitgo/defi/defiVault.d.ts.map +1 -0
  12. package/dist/src/bitgo/defi/defiVault.js +201 -0
  13. package/dist/src/bitgo/defi/iDefiVault.d.ts +59 -0
  14. package/dist/src/bitgo/defi/iDefiVault.d.ts.map +1 -0
  15. package/dist/src/bitgo/defi/iDefiVault.js +6 -0
  16. package/dist/src/bitgo/defi/index.d.ts +3 -0
  17. package/dist/src/bitgo/defi/index.d.ts.map +1 -0
  18. package/dist/src/bitgo/defi/index.js +22 -0
  19. package/dist/src/bitgo/index.d.ts +1 -0
  20. package/dist/src/bitgo/index.d.ts.map +1 -1
  21. package/dist/src/bitgo/index.js +2 -1
  22. package/dist/src/bitgo/internal/keycard.d.ts +2 -1
  23. package/dist/src/bitgo/internal/keycard.d.ts.map +1 -1
  24. package/dist/src/bitgo/internal/keycard.js +6 -3
  25. package/dist/src/bitgo/keychain/iKeychains.d.ts +4 -1
  26. package/dist/src/bitgo/keychain/iKeychains.d.ts.map +1 -1
  27. package/dist/src/bitgo/keychain/iKeychains.js +1 -1
  28. package/dist/src/bitgo/keychain/keychains.d.ts +2 -1
  29. package/dist/src/bitgo/keychain/keychains.d.ts.map +1 -1
  30. package/dist/src/bitgo/keychain/keychains.js +8 -3
  31. package/dist/src/bitgo/tss/common.d.ts +2 -1
  32. package/dist/src/bitgo/tss/common.d.ts.map +1 -1
  33. package/dist/src/bitgo/tss/common.js +14 -4
  34. package/dist/src/bitgo/utils/messageTypes.d.ts +3 -1
  35. package/dist/src/bitgo/utils/messageTypes.d.ts.map +1 -1
  36. package/dist/src/bitgo/utils/messageTypes.js +3 -1
  37. package/dist/src/bitgo/utils/mpcUtils.d.ts.map +1 -1
  38. package/dist/src/bitgo/utils/mpcUtils.js +23 -3
  39. package/dist/src/bitgo/utils/tss/addressVerification.d.ts +25 -0
  40. package/dist/src/bitgo/utils/tss/addressVerification.d.ts.map +1 -1
  41. package/dist/src/bitgo/utils/tss/addressVerification.js +31 -13
  42. package/dist/src/bitgo/utils/tss/baseTypes.d.ts +25 -3
  43. package/dist/src/bitgo/utils/tss/baseTypes.d.ts.map +1 -1
  44. package/dist/src/bitgo/utils/tss/baseTypes.js +1 -1
  45. package/dist/src/bitgo/utils/tss/ecdsa/ecdsa.d.ts +5 -2
  46. package/dist/src/bitgo/utils/tss/ecdsa/ecdsa.d.ts.map +1 -1
  47. package/dist/src/bitgo/utils/tss/ecdsa/ecdsa.js +25 -16
  48. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2.d.ts +8 -1
  49. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2.d.ts.map +1 -1
  50. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2.js +47 -49
  51. package/dist/src/bitgo/utils/tss/eddsa/eddsa.d.ts +2 -2
  52. package/dist/src/bitgo/utils/tss/eddsa/eddsa.d.ts.map +1 -1
  53. package/dist/src/bitgo/utils/tss/eddsa/eddsa.js +25 -15
  54. package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2.d.ts +18 -1
  55. package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2.d.ts.map +1 -1
  56. package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2.js +77 -33
  57. package/dist/src/bitgo/utils/tss/eddsa/types.d.ts +5 -0
  58. package/dist/src/bitgo/utils/tss/eddsa/types.d.ts.map +1 -1
  59. package/dist/src/bitgo/utils/tss/eddsa/types.js +1 -1
  60. package/dist/src/bitgo/utils/tss/index.d.ts +1 -0
  61. package/dist/src/bitgo/utils/tss/index.d.ts.map +1 -1
  62. package/dist/src/bitgo/utils/tss/index.js +2 -1
  63. package/dist/src/bitgo/utils/tss/preHashedSignable.d.ts +23 -0
  64. package/dist/src/bitgo/utils/tss/preHashedSignable.d.ts.map +1 -0
  65. package/dist/src/bitgo/utils/tss/preHashedSignable.js +26 -0
  66. package/dist/src/bitgo/wallet/iWallet.d.ts +6 -1
  67. package/dist/src/bitgo/wallet/iWallet.d.ts.map +1 -1
  68. package/dist/src/bitgo/wallet/iWallet.js +1 -1
  69. package/dist/src/bitgo/wallet/iWallets.d.ts +26 -1
  70. package/dist/src/bitgo/wallet/iWallets.d.ts.map +1 -1
  71. package/dist/src/bitgo/wallet/iWallets.js +1 -1
  72. package/dist/src/bitgo/wallet/wallet.d.ts +9 -3
  73. package/dist/src/bitgo/wallet/wallet.d.ts.map +1 -1
  74. package/dist/src/bitgo/wallet/wallet.js +79 -9
  75. package/dist/src/bitgo/wallet/wallets.d.ts +12 -2
  76. package/dist/src/bitgo/wallet/wallets.d.ts.map +1 -1
  77. package/dist/src/bitgo/wallet/wallets.js +179 -20
  78. package/dist/src/coins/ofc.d.ts +4 -0
  79. package/dist/src/coins/ofc.d.ts.map +1 -1
  80. package/dist/src/coins/ofc.js +17 -2
  81. package/dist/test/unit/bitgo/defi/defiVault.d.ts +2 -0
  82. package/dist/test/unit/bitgo/defi/defiVault.d.ts.map +1 -0
  83. package/dist/test/unit/bitgo/defi/defiVault.js +283 -0
  84. package/dist/test/unit/bitgo/utils/tss/addressVerification.js +45 -1
  85. package/dist/test/unit/bitgo/utils/tss/ecdsa/ecdsaEncryptionVersion.d.ts +2 -0
  86. package/dist/test/unit/bitgo/utils/tss/ecdsa/ecdsaEncryptionVersion.d.ts.map +1 -0
  87. package/dist/test/unit/bitgo/utils/tss/ecdsa/ecdsaEncryptionVersion.js +94 -0
  88. package/dist/test/unit/bitgo/utils/tss/ecdsa/ecdsaMPCv2.js +53 -1
  89. package/dist/test/unit/bitgo/utils/tss/eddsa/eddsaMPCv2.js +88 -3
  90. package/dist/test/unit/bitgo/utils/tss/preHashedSignable.d.ts +2 -0
  91. package/dist/test/unit/bitgo/utils/tss/preHashedSignable.d.ts.map +1 -0
  92. package/dist/test/unit/bitgo/utils/tss/preHashedSignable.js +55 -0
  93. package/dist/test/unit/bitgo/wallet/ofcWalletAddressCreation.d.ts +2 -0
  94. package/dist/test/unit/bitgo/wallet/ofcWalletAddressCreation.d.ts.map +1 -0
  95. package/dist/test/unit/bitgo/wallet/ofcWalletAddressCreation.js +141 -0
  96. package/dist/test/unit/bitgo/wallet/walletsEncryptionVersion.d.ts +2 -0
  97. package/dist/test/unit/bitgo/wallet/walletsEncryptionVersion.d.ts.map +1 -0
  98. package/dist/test/unit/bitgo/wallet/walletsEncryptionVersion.js +228 -0
  99. package/dist/test/unit/bitgo/wallet/walletsExternalSigner.d.ts +2 -0
  100. package/dist/test/unit/bitgo/wallet/walletsExternalSigner.d.ts.map +1 -0
  101. package/dist/test/unit/bitgo/wallet/walletsExternalSigner.js +320 -0
  102. package/dist/test/unit/bitgo/wallet/walletsWebauthn.js +16 -12
  103. package/dist/tsconfig.tsbuildinfo +1 -1
  104. package/package.json +3 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ecdsaEncryptionVersion.d.ts","sourceRoot":"","sources":["../../../../../../../test/unit/bitgo/utils/tss/ecdsa/ecdsaEncryptionVersion.ts"],"names":[],"mappings":""}
@@ -0,0 +1,94 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ const assert = __importStar(require("assert"));
37
+ const sinon = __importStar(require("sinon"));
38
+ const ecdsa_1 = require("../../../../../../src/bitgo/utils/tss/ecdsa/ecdsa");
39
+ /**
40
+ * Regression tests for the ECDSA MPCv1 createKeychains encryptionVersion bug.
41
+ *
42
+ * Previously, EcdsaUtils.createKeychains dropped `encryptionVersion` silently —
43
+ * it was not declared in the params and was never forwarded to createUserKeychain
44
+ * or createBackupKeychain, causing a version mismatch within a wallet: v2 for
45
+ * encryptedWalletPassphrase but v1 for the user/backup keychains.
46
+ */
47
+ describe('EcdsaUtils.createKeychains - encryptionVersion forwarding', function () {
48
+ let ecdsaUtils;
49
+ let createUserKeychainStub;
50
+ let createBackupKeychainStub;
51
+ const fakeKeychain = { id: 'key-id', pub: 'pub', commonKeychain: 'ckc', type: 'tss' };
52
+ const fakeGpgKey = { publicKey: 'pub', privateKey: 'prv' };
53
+ const fakeKeyShare = { userHeldKeyShare: {} };
54
+ beforeEach(function () {
55
+ const mockBitgo = { getEnv: sinon.stub().returns('test') };
56
+ const mockCoin = {};
57
+ ecdsaUtils = new ecdsa_1.EcdsaUtils(mockBitgo, mockCoin);
58
+ createUserKeychainStub = sinon.stub(ecdsaUtils, 'createUserKeychain').resolves(fakeKeychain);
59
+ createBackupKeychainStub = sinon.stub(ecdsaUtils, 'createBackupKeychain').resolves(fakeKeychain);
60
+ sinon.stub(ecdsaUtils, 'createBitgoKeychain').resolves(fakeKeychain);
61
+ sinon.stub(ecdsaUtils, 'createBackupKeyShares').resolves(fakeKeyShare);
62
+ sinon.stub(ecdsaUtils, 'getBitgoGpgPubkeyBasedOnFeatureFlags').resolves({ mpcv2PublicKey: undefined });
63
+ sinon.stub(ecdsaUtils, 'getBackupGpgPubKey').resolves(fakeGpgKey);
64
+ sinon.stub(require('../../../../../../src/bitgo/utils/opengpgUtils'), 'generateGPGKeyPair').resolves(fakeGpgKey);
65
+ });
66
+ afterEach(function () {
67
+ sinon.restore();
68
+ });
69
+ it('forwards encryptionVersion: 2 to createUserKeychain', async function () {
70
+ await ecdsaUtils.createKeychains({ passphrase: 'pass', encryptionVersion: 2 });
71
+ assert.ok(createUserKeychainStub.calledOnce);
72
+ const userParams = createUserKeychainStub.firstCall.args[0];
73
+ assert.strictEqual(userParams.encryptionVersion, 2);
74
+ });
75
+ it('forwards encryptionVersion: 2 to createBackupKeychain', async function () {
76
+ await ecdsaUtils.createKeychains({ passphrase: 'pass', encryptionVersion: 2 });
77
+ assert.ok(createBackupKeychainStub.calledOnce);
78
+ const backupParams = createBackupKeychainStub.firstCall.args[0];
79
+ assert.strictEqual(backupParams.encryptionVersion, 2);
80
+ });
81
+ it('forwards encryptionVersion: undefined when not set', async function () {
82
+ await ecdsaUtils.createKeychains({ passphrase: 'pass' });
83
+ assert.ok(createUserKeychainStub.calledOnce);
84
+ assert.ok(createBackupKeychainStub.calledOnce);
85
+ assert.strictEqual(createUserKeychainStub.firstCall.args[0].encryptionVersion, undefined);
86
+ assert.strictEqual(createBackupKeychainStub.firstCall.args[0].encryptionVersion, undefined);
87
+ });
88
+ it('forwards encryptionVersion: 1 explicitly', async function () {
89
+ await ecdsaUtils.createKeychains({ passphrase: 'pass', encryptionVersion: 1 });
90
+ assert.strictEqual(createUserKeychainStub.firstCall.args[0].encryptionVersion, 1);
91
+ assert.strictEqual(createBackupKeychainStub.firstCall.args[0].encryptionVersion, 1);
92
+ });
93
+ });
94
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNkc2FFbmNyeXB0aW9uVmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Rlc3QvdW5pdC9iaXRnby91dGlscy90c3MvZWNkc2EvZWNkc2FFbmNyeXB0aW9uVmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLCtDQUFpQztBQUNqQyw2Q0FBK0I7QUFDL0IsNkVBQStFO0FBRy9FOzs7Ozs7O0dBT0c7QUFDSCxRQUFRLENBQUMsMkRBQTJELEVBQUU7SUFDcEUsSUFBSSxVQUFzQixDQUFDO0lBQzNCLElBQUksc0JBQXVDLENBQUM7SUFDNUMsSUFBSSx3QkFBeUMsQ0FBQztJQUU5QyxNQUFNLFlBQVksR0FBRyxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFjLEVBQUUsQ0FBQztJQUMvRixNQUFNLFVBQVUsR0FBRyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxDQUFDO0lBQzNELE1BQU0sWUFBWSxHQUFHLEVBQUUsZ0JBQWdCLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFFOUMsVUFBVSxDQUFDO1FBQ1QsTUFBTSxTQUFTLEdBQUcsRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBMEIsQ0FBQztRQUNuRixNQUFNLFFBQVEsR0FBRyxFQUEwQixDQUFDO1FBRTVDLFVBQVUsR0FBRyxJQUFJLGtCQUFVLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBRWpELHNCQUFzQixHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLG9CQUFvQixDQUFDLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzdGLHdCQUF3QixH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QUMsV0FBVyxDQUFDLHNCQUFzQixDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDbEYsTUFBTSxDQUFDLFdBQVcsQ0FBQyx3QkFBd0IsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RGLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCAqIGFzIHNpbm9uIGZyb20gJ3Npbm9uJztcbmltcG9ydCB7IEVjZHNhVXRpbHMgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYml0Z28vdXRpbHMvdHNzL2VjZHNhL2VjZHNhJztcbmltcG9ydCB7IEJpdEdvQmFzZSwgSUJhc2VDb2luIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vc3JjJztcblxuLyoqXG4gKiBSZWdyZXNzaW9uIHRlc3RzIGZvciB0aGUgRUNEU0EgTVBDdjEgY3JlYXRlS2V5Y2hhaW5zIGVuY3J5cHRpb25WZXJzaW9uIGJ1Zy5cbiAqXG4gKiBQcmV2aW91c2x5LCBFY2RzYVV0aWxzLmNyZWF0ZUtleWNoYWlucyBkcm9wcGVkIGBlbmNyeXB0aW9uVmVyc2lvbmAgc2lsZW50bHkg4oCUXG4gKiBpdCB3YXMgbm90IGRlY2xhcmVkIGluIHRoZSBwYXJhbXMgYW5kIHdhcyBuZXZlciBmb3J3YXJkZWQgdG8gY3JlYXRlVXNlcktleWNoYWluXG4gKiBvciBjcmVhdGVCYWNrdXBLZXljaGFpbiwgY2F1c2luZyBhIHZlcnNpb24gbWlzbWF0Y2ggd2l0aGluIGEgd2FsbGV0OiB2MiBmb3JcbiAqIGVuY3J5cHRlZFdhbGxldFBhc3NwaHJhc2UgYnV0IHYxIGZvciB0aGUgdXNlci9iYWNrdXAga2V5Y2hhaW5zLlxuICovXG5kZXNjcmliZSgnRWNkc2FVdGlscy5jcmVhdGVLZXljaGFpbnMgLSBlbmNyeXB0aW9uVmVyc2lvbiBmb3J3YXJkaW5nJywgZnVuY3Rpb24gKCkge1xuICBsZXQgZWNkc2FVdGlsczogRWNkc2FVdGlscztcbiAgbGV0IGNyZWF0ZVVzZXJLZXljaGFpblN0dWI6IHNpbm9uLlNpbm9uU3R1YjtcbiAgbGV0IGNyZWF0ZUJhY2t1cEtleWNoYWluU3R1Yjogc2lub24uU2lub25TdHViO1xuXG4gIGNvbnN0IGZha2VLZXljaGFpbiA9IHsgaWQ6ICdrZXktaWQnLCBwdWI6ICdwdWInLCBjb21tb25LZXljaGFpbjogJ2NrYycsIHR5cGU6ICd0c3MnIGFzIGNvbnN0IH07XG4gIGNvbnN0IGZha2VHcGdLZXkgPSB7IHB1YmxpY0tleTogJ3B1YicsIHByaXZhdGVLZXk6ICdwcnYnIH07XG4gIGNvbnN0IGZha2VLZXlTaGFyZSA9IHsgdXNlckhlbGRLZXlTaGFyZToge30gfTtcblxuICBiZWZvcmVFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBtb2NrQml0Z28gPSB7IGdldEVudjogc2lub24uc3R1YigpLnJldHVybnMoJ3Rlc3QnKSB9IGFzIHVua25vd24gYXMgQml0R29CYXNlO1xuICAgIGNvbnN0IG1vY2tDb2luID0ge30gYXMgdW5rbm93biBhcyBJQmFzZUNvaW47XG5cbiAgICBlY2RzYVV0aWxzID0gbmV3IEVjZHNhVXRpbHMobW9ja0JpdGdvLCBtb2NrQ29pbik7XG5cbiAgICBjcmVhdGVVc2VyS2V5Y2hhaW5TdHViID0gc2lub24uc3R1YihlY2RzYVV0aWxzLCAnY3JlYXRlVXNlcktleWNoYWluJykucmVzb2x2ZXMoZmFrZUtleWNoYWluKTtcbiAgICBjcmVhdGVCYWNrdXBLZXljaGFpblN0dWIgPSBzaW5vbi5zdHViKGVjZHNhVXRpbHMsICdjcmVhdGVCYWNrdXBLZXljaGFpbicpLnJlc29sdmVzKGZha2VLZXljaGFpbik7XG4gICAgc2lub24uc3R1YihlY2RzYVV0aWxzLCAnY3JlYXRlQml0Z29LZXljaGFpbicpLnJlc29sdmVzKGZha2VLZXljaGFpbik7XG4gICAgc2lub24uc3R1YihlY2RzYVV0aWxzLCAnY3JlYXRlQmFja3VwS2V5U2hhcmVzJykucmVzb2x2ZXMoZmFrZUtleVNoYXJlIGFzIGFueSk7XG4gICAgc2lub24uc3R1YihlY2RzYVV0aWxzLCAnZ2V0Qml0Z29HcGdQdWJrZXlCYXNlZE9uRmVhdHVyZUZsYWdzJykucmVzb2x2ZXMoeyBtcGN2MlB1YmxpY0tleTogdW5kZWZpbmVkIH0gYXMgYW55KTtcblxuICAgIHNpbm9uLnN0dWIoZWNkc2FVdGlscyBhcyBhbnksICdnZXRCYWNrdXBHcGdQdWJLZXknKS5yZXNvbHZlcyhmYWtlR3BnS2V5KTtcbiAgICBzaW5vbi5zdHViKHJlcXVpcmUoJy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9iaXRnby91dGlscy9vcGVuZ3BnVXRpbHMnKSwgJ2dlbmVyYXRlR1BHS2V5UGFpcicpLnJlc29sdmVzKGZha2VHcGdLZXkpO1xuICB9KTtcblxuICBhZnRlckVhY2goZnVuY3Rpb24gKCkge1xuICAgIHNpbm9uLnJlc3RvcmUoKTtcbiAgfSk7XG5cbiAgaXQoJ2ZvcndhcmRzIGVuY3J5cHRpb25WZXJzaW9uOiAyIHRvIGNyZWF0ZVVzZXJLZXljaGFpbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBhd2FpdCBlY2RzYVV0aWxzLmNyZWF0ZUtleWNoYWlucyh7IHBhc3NwaHJhc2U6ICdwYXNzJywgZW5jcnlwdGlvblZlcnNpb246IDIgfSk7XG5cbiAgICBhc3NlcnQub2soY3JlYXRlVXNlcktleWNoYWluU3R1Yi5jYWxsZWRPbmNlKTtcbiAgICBjb25zdCB1c2VyUGFyYW1zID0gY3JlYXRlVXNlcktleWNoYWluU3R1Yi5maXJzdENhbGwuYXJnc1swXTtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwodXNlclBhcmFtcy5lbmNyeXB0aW9uVmVyc2lvbiwgMik7XG4gIH0pO1xuXG4gIGl0KCdmb3J3YXJkcyBlbmNyeXB0aW9uVmVyc2lvbjogMiB0byBjcmVhdGVCYWNrdXBLZXljaGFpbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBhd2FpdCBlY2RzYVV0aWxzLmNyZWF0ZUtleWNoYWlucyh7IHBhc3NwaHJhc2U6ICdwYXNzJywgZW5jcnlwdGlvblZlcnNpb246IDIgfSk7XG5cbiAgICBhc3NlcnQub2soY3JlYXRlQmFja3VwS2V5Y2hhaW5TdHViLmNhbGxlZE9uY2UpO1xuICAgIGNvbnN0IGJhY2t1cFBhcmFtcyA9IGNyZWF0ZUJhY2t1cEtleWNoYWluU3R1Yi5maXJzdENhbGwuYXJnc1swXTtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwoYmFja3VwUGFyYW1zLmVuY3J5cHRpb25WZXJzaW9uLCAyKTtcbiAgfSk7XG5cbiAgaXQoJ2ZvcndhcmRzIGVuY3J5cHRpb25WZXJzaW9uOiB1bmRlZmluZWQgd2hlbiBub3Qgc2V0JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGF3YWl0IGVjZHNhVXRpbHMuY3JlYXRlS2V5Y2hhaW5zKHsgcGFzc3BocmFzZTogJ3Bhc3MnIH0pO1xuXG4gICAgYXNzZXJ0Lm9rKGNyZWF0ZVVzZXJLZXljaGFpblN0dWIuY2FsbGVkT25jZSk7XG4gICAgYXNzZXJ0Lm9rKGNyZWF0ZUJhY2t1cEtleWNoYWluU3R1Yi5jYWxsZWRPbmNlKTtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwoY3JlYXRlVXNlcktleWNoYWluU3R1Yi5maXJzdENhbGwuYXJnc1swXS5lbmNyeXB0aW9uVmVyc2lvbiwgdW5kZWZpbmVkKTtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwoY3JlYXRlQmFja3VwS2V5Y2hhaW5TdHViLmZpcnN0Q2FsbC5hcmdzWzBdLmVuY3J5cHRpb25WZXJzaW9uLCB1bmRlZmluZWQpO1xuICB9KTtcblxuICBpdCgnZm9yd2FyZHMgZW5jcnlwdGlvblZlcnNpb246IDEgZXhwbGljaXRseScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBhd2FpdCBlY2RzYVV0aWxzLmNyZWF0ZUtleWNoYWlucyh7IHBhc3NwaHJhc2U6ICdwYXNzJywgZW5jcnlwdGlvblZlcnNpb246IDEgfSk7XG5cbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwoY3JlYXRlVXNlcktleWNoYWluU3R1Yi5maXJzdENhbGwuYXJnc1swXS5lbmNyeXB0aW9uVmVyc2lvbiwgMSk7XG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKGNyZWF0ZUJhY2t1cEtleWNoYWluU3R1Yi5maXJzdENhbGwuYXJnc1swXS5lbmNyeXB0aW9uVmVyc2lvbiwgMSk7XG4gIH0pO1xufSk7XG4iXX0=