@bitgo/sdk-core 38.18.0 → 38.20.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.
- package/dist/src/account-lib/baseCoin/enum.d.ts +2 -1
- package/dist/src/account-lib/baseCoin/enum.d.ts.map +1 -1
- package/dist/src/account-lib/baseCoin/enum.js +4 -1
- package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts +5 -0
- package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts.map +1 -1
- package/dist/src/bitgo/baseCoin/iBaseCoin.js +1 -1
- package/dist/src/bitgo/coinFactory.d.ts +7 -0
- package/dist/src/bitgo/coinFactory.d.ts.map +1 -1
- package/dist/src/bitgo/coinFactory.js +10 -1
- package/dist/src/bitgo/environments.js +2 -2
- package/dist/src/bitgo/index.d.ts +1 -0
- package/dist/src/bitgo/index.d.ts.map +1 -1
- package/dist/src/bitgo/index.js +2 -1
- package/dist/src/bitgo/keychain/iKeychains.d.ts +28 -0
- package/dist/src/bitgo/keychain/iKeychains.d.ts.map +1 -1
- package/dist/src/bitgo/keychain/iKeychains.js +1 -1
- package/dist/src/bitgo/keychain/keychains.d.ts +51 -6
- package/dist/src/bitgo/keychain/keychains.d.ts.map +1 -1
- package/dist/src/bitgo/keychain/keychains.js +104 -24
- package/dist/src/bitgo/safe/iSafe.d.ts +32 -3
- package/dist/src/bitgo/safe/iSafe.d.ts.map +1 -1
- package/dist/src/bitgo/safe/iSafe.js +1 -1
- package/dist/src/bitgo/safe/rootCoin.d.ts +15 -0
- package/dist/src/bitgo/safe/rootCoin.d.ts.map +1 -0
- package/dist/src/bitgo/safe/rootCoin.js +47 -0
- package/dist/src/bitgo/safe/safe.d.ts +17 -1
- package/dist/src/bitgo/safe/safe.d.ts.map +1 -1
- package/dist/src/bitgo/safe/safe.js +129 -14
- package/dist/src/bitgo/safe/safes.d.ts +0 -5
- package/dist/src/bitgo/safe/safes.d.ts.map +1 -1
- package/dist/src/bitgo/safe/safes.js +6 -42
- package/dist/src/bitgo/utils/messageTypes.d.ts +6 -0
- package/dist/src/bitgo/utils/messageTypes.d.ts.map +1 -1
- package/dist/src/bitgo/utils/messageTypes.js +8 -2
- package/dist/src/bitgo/utils/mpcUtils.d.ts.map +1 -1
- package/dist/src/bitgo/utils/mpcUtils.js +19 -1
- package/dist/src/bitgo/utils/tss/baseTSSUtils.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/baseTSSUtils.js +6 -1
- package/dist/src/bitgo/utils/tss/baseTypes.d.ts +17 -0
- package/dist/src/bitgo/utils/tss/baseTypes.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/baseTypes.js +1 -1
- package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2.d.ts +6 -2
- package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2.js +18 -14
- package/dist/src/bitgo/utils/tss/ecdsa/ecdsaVrfMPCv2.d.ts +0 -19
- package/dist/src/bitgo/utils/tss/ecdsa/ecdsaVrfMPCv2.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/ecdsa/ecdsaVrfMPCv2.js +4 -64
- package/dist/src/bitgo/utils/tss/eddsa/SMC/utils.d.ts +2 -2
- package/dist/src/bitgo/utils/tss/eddsa/SMC/utils.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/eddsa/SMC/utils.js +5 -4
- package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2.d.ts +32 -6
- package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2.js +56 -13
- package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2KeyGenSender.d.ts +7 -2
- package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2KeyGenSender.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2KeyGenSender.js +11 -1
- package/dist/src/bitgo/utils/tss/eddsa/eddsaVrfMPCv2.d.ts +20 -9
- package/dist/src/bitgo/utils/tss/eddsa/eddsaVrfMPCv2.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/eddsa/eddsaVrfMPCv2.js +58 -23
- package/dist/src/bitgo/utils/tss/eddsa/types.d.ts +3 -0
- package/dist/src/bitgo/utils/tss/eddsa/types.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/eddsa/types.js +1 -1
- package/dist/src/bitgo/utils/tss/eddsa/typesEddsaMPCv2.d.ts +3 -0
- package/dist/src/bitgo/utils/tss/eddsa/typesEddsaMPCv2.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/eddsa/typesEddsaMPCv2.js +1 -1
- package/dist/src/bitgo/utils/tss/index.d.ts +1 -0
- package/dist/src/bitgo/utils/tss/index.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/index.js +2 -1
- package/dist/src/bitgo/utils/tss/keyShareEnvelope.d.ts +40 -0
- package/dist/src/bitgo/utils/tss/keyShareEnvelope.d.ts.map +1 -0
- package/dist/src/bitgo/utils/tss/keyShareEnvelope.js +103 -0
- package/dist/src/bitgo/utils/tss/recipientUtils.d.ts +2 -1
- package/dist/src/bitgo/utils/tss/recipientUtils.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/recipientUtils.js +9 -3
- package/dist/src/bitgo/wallet/BuildParams.d.ts +1 -0
- package/dist/src/bitgo/wallet/BuildParams.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/BuildParams.js +3 -1
- package/dist/src/bitgo/wallet/iWallet.d.ts +24 -0
- package/dist/src/bitgo/wallet/iWallet.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/iWallet.js +1 -1
- package/dist/src/bitgo/wallet/wallet.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/wallet.js +33 -4
- package/dist/src/bitgo/webauthn/base64url.d.ts +16 -0
- package/dist/src/bitgo/webauthn/base64url.d.ts.map +1 -0
- package/dist/src/bitgo/webauthn/base64url.js +27 -0
- package/dist/src/bitgo/webauthn/deriveEnterpriseSalt.d.ts +18 -0
- package/dist/src/bitgo/webauthn/deriveEnterpriseSalt.d.ts.map +1 -0
- package/dist/src/bitgo/webauthn/deriveEnterpriseSalt.js +26 -0
- package/dist/src/bitgo/webauthn/derivePassword.d.ts +11 -0
- package/dist/src/bitgo/webauthn/derivePassword.d.ts.map +1 -0
- package/dist/src/bitgo/webauthn/derivePassword.js +16 -0
- package/dist/src/bitgo/webauthn/index.d.ts +5 -0
- package/dist/src/bitgo/webauthn/index.d.ts.map +1 -0
- package/dist/src/bitgo/webauthn/index.js +21 -0
- package/dist/src/bitgo/webauthn/types.d.ts +18 -0
- package/dist/src/bitgo/webauthn/types.d.ts.map +1 -0
- package/dist/src/bitgo/webauthn/types.js +3 -0
- package/dist/test/unit/bitgo/keychain/keychains.js +261 -1
- package/dist/test/unit/bitgo/recovery/initiate.js +30 -1
- package/dist/test/unit/bitgo/safe/safe.js +185 -2
- package/dist/test/unit/bitgo/utils/mpcUtils.unwrap.d.ts +2 -0
- package/dist/test/unit/bitgo/utils/mpcUtils.unwrap.d.ts.map +1 -0
- package/dist/test/unit/bitgo/utils/mpcUtils.unwrap.js +109 -0
- package/dist/test/unit/bitgo/utils/tss/eddsa/eddsaMPCv2.js +76 -1
- package/dist/test/unit/bitgo/utils/tss/eddsa/eddsaVrfMPCv2.js +227 -20
- package/dist/test/unit/bitgo/utils/tss/eddsa/smcUtil.js +66 -1
- package/dist/test/unit/bitgo/utils/tss/keyShareEnvelope.d.ts +2 -0
- package/dist/test/unit/bitgo/utils/tss/keyShareEnvelope.d.ts.map +1 -0
- package/dist/test/unit/bitgo/utils/tss/keyShareEnvelope.js +83 -0
- package/dist/test/unit/bitgo/utils/tss/recipientUtils.js +29 -1
- package/dist/test/unit/bitgo/wallet/BuildParams.js +14 -1
- package/dist/test/unit/bitgo/wallet/tokenApproval.js +10 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +6 -6
|
@@ -0,0 +1,109 @@
|
|
|
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
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
const assert_1 = __importDefault(require("assert"));
|
|
40
|
+
const sinon = __importStar(require("sinon"));
|
|
41
|
+
const mpcUtils_1 = require("../../../../src/bitgo/utils/mpcUtils");
|
|
42
|
+
const src_1 = require("../../../../src");
|
|
43
|
+
class TestMpcUtils extends mpcUtils_1.MpcUtils {
|
|
44
|
+
createKeychains() {
|
|
45
|
+
return Promise.reject(new Error('unused'));
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
describe('populateIntent unwrap', function () {
|
|
49
|
+
const reqId = new src_1.RequestTracer();
|
|
50
|
+
let mpcUtils;
|
|
51
|
+
let coin;
|
|
52
|
+
beforeEach(function () {
|
|
53
|
+
const mockBitgo = { getEnv: sinon.stub().returns('test') };
|
|
54
|
+
coin = {
|
|
55
|
+
getChain: () => 'hteth',
|
|
56
|
+
getFamily: () => 'eth',
|
|
57
|
+
isEVM: () => true,
|
|
58
|
+
supportsTss: () => true,
|
|
59
|
+
};
|
|
60
|
+
mpcUtils = new TestMpcUtils(mockBitgo, coin);
|
|
61
|
+
});
|
|
62
|
+
afterEach(function () {
|
|
63
|
+
sinon.restore();
|
|
64
|
+
});
|
|
65
|
+
it('flattens unwrapParams onto unwrap intent', function () {
|
|
66
|
+
const unwrapParams = { tokenName: 'hteth:cusdt', amount: '1000000' };
|
|
67
|
+
const feeOptions = { maxFeePerGas: 3000000000, maxPriorityFeePerGas: 2000000000 };
|
|
68
|
+
const intent = mpcUtils.populateIntent(coin, {
|
|
69
|
+
reqId,
|
|
70
|
+
intentType: 'unwrap',
|
|
71
|
+
unwrapParams,
|
|
72
|
+
feeOptions,
|
|
73
|
+
});
|
|
74
|
+
assert_1.default.strictEqual(intent.intentType, 'unwrap');
|
|
75
|
+
assert_1.default.strictEqual(intent.tokenName, unwrapParams.tokenName);
|
|
76
|
+
assert_1.default.strictEqual(intent.amount, unwrapParams.amount);
|
|
77
|
+
assert_1.default.deepStrictEqual(intent.feeOptions, feeOptions);
|
|
78
|
+
assert_1.default.strictEqual(intent.recipients, undefined);
|
|
79
|
+
});
|
|
80
|
+
it('allows partial unshield amounts', function () {
|
|
81
|
+
const unwrapParams = { tokenName: 'hteth:cusdt', amount: '1' };
|
|
82
|
+
const intent = mpcUtils.populateIntent(coin, {
|
|
83
|
+
reqId,
|
|
84
|
+
intentType: 'unwrap',
|
|
85
|
+
unwrapParams,
|
|
86
|
+
});
|
|
87
|
+
assert_1.default.strictEqual(intent.amount, '1');
|
|
88
|
+
});
|
|
89
|
+
it('requires unwrapParams for unwrap', function () {
|
|
90
|
+
assert_1.default.throws(() => mpcUtils.populateIntent(coin, {
|
|
91
|
+
reqId,
|
|
92
|
+
intentType: 'unwrap',
|
|
93
|
+
}), /unwrapParams/);
|
|
94
|
+
});
|
|
95
|
+
it('rejects non-positive unwrapParams.amount', function () {
|
|
96
|
+
assert_1.default.throws(() => mpcUtils.populateIntent(coin, {
|
|
97
|
+
reqId,
|
|
98
|
+
intentType: 'unwrap',
|
|
99
|
+
unwrapParams: { tokenName: 'hteth:cusdt', amount: '0' },
|
|
100
|
+
}), /unwrapParams.amount/);
|
|
101
|
+
});
|
|
102
|
+
it('rejects client-side finalizeUnwrap creation (WP-created only, CHALO-1139)', function () {
|
|
103
|
+
assert_1.default.throws(() => mpcUtils.populateIntent(coin, {
|
|
104
|
+
reqId,
|
|
105
|
+
intentType: 'finalizeUnwrap',
|
|
106
|
+
}), /created by Wallet Platform/);
|
|
107
|
+
});
|
|
108
|
+
});
|
|
109
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXBjVXRpbHMudW53cmFwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vdGVzdC91bml0L2JpdGdvL3V0aWxzL21wY1V0aWxzLnVud3JhcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9EQUE0QjtBQUM1Qiw2Q0FBK0I7QUFHL0IsbUVBQWdFO0FBQ2hFLHlDQUFnRDtBQUVoRCxNQUFNLFlBQWEsU0FBUSxtQkFBUTtJQUNqQyxlQUFlO1FBQ2IsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDN0MsQ0FBQztDQUNGO0FBRUQsUUFBUSxDQUFDLHVCQUF1QixFQUFFO0lBQ2hDLE1BQU0sS0FBSyxHQUFHLElBQUksbUJBQWEsRUFBRSxDQUFDO0lBQ2xDLElBQUksUUFBc0IsQ0FBQztJQUMzQixJQUFJLElBQWUsQ0FBQztJQUVwQixVQUFVLENBQUM7UUFDVCxNQUFNLFNBQVMsR0FBRyxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUEwQixDQUFDO1FBQ25GLElBQUksR0FBRztZQUNMLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxPQUFPO1lBQ3ZCLFNBQVMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxLQUFLO1lBQ3RCLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJO1lBQ2pCLFdBQVcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJO1NBQ0EsQ0FBQztRQUMxQixRQUFRLEdBQUcsSUFBSSxZQUFZLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQy9DLENBQUMsQ0FBQyxDQUFDO0lBRUgsU0FBUyxDQUFDO1FBQ1IsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2xCLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLDBDQUEwQyxFQUFFO1FBQzdDLE1BQU0sWUFBWSxHQUFHLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLENBQUM7UUFDckUsTUFBTSxVQUFVLEdBQUcsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLG9CQUFvQixFQUFFLFVBQVUsRUFBRSxDQUFDO1FBRWxGLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFO1lBQzNDLEtBQUs7WUFDTCxVQUFVLEVBQUUsUUFBUTtZQUNwQixZQUFZO1lBQ1osVUFBVTtTQUNYLENBQUMsQ0FBQztRQUVILGdCQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDaEQsZ0JBQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDN0QsZ0JBQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdkQsZ0JBQU0sQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUN0RCxnQkFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ25ELENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLGlDQUFpQyxFQUFFO1FBQ3BDLE1BQU0sWUFBWSxHQUFHLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUM7UUFFL0QsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUU7WUFDM0MsS0FBSztZQUNMLFVBQVUsRUFBRSxRQUFRO1lBQ3BCLFlBQVk7U0FDYixDQUFDLENBQUM7UUFFSCxnQkFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3pDLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLGtDQUFrQyxFQUFFO1FBQ3JDLGdCQUFNLENBQUMsTUFBTSxDQUNYLEdBQUcsRUFBRSxDQUNILFFBQVEsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFO1lBQzVCLEtBQUs7WUFDTCxVQUFVLEVBQUUsUUFBUTtTQUNyQixDQUFDLEVBQ0osY0FBYyxDQUNmLENBQUM7SUFDSixDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQywwQ0FBMEMsRUFBRTtRQUM3QyxnQkFBTSxDQUFDLE1BQU0sQ0FDWCxHQUFHLEVBQUUsQ0FDSCxRQUFRLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRTtZQUM1QixLQUFLO1lBQ0wsVUFBVSxFQUFFLFFBQVE7WUFDcEIsWUFBWSxFQUFFLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFO1NBQ3hELENBQUMsRUFDSixxQkFBcUIsQ0FDdEIsQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLDJFQUEyRSxFQUFFO1FBQzlFLGdCQUFNLENBQUMsTUFBTSxDQUNYLEdBQUcsRUFBRSxDQUNILFFBQVEsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFO1lBQzVCLEtBQUs7WUFDTCxVQUFVLEVBQUUsZ0JBQWdCO1NBQzdCLENBQUMsRUFDSiw0QkFBNEIsQ0FDN0IsQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQgKiBhcyBzaW5vbiBmcm9tICdzaW5vbic7XG5pbXBvcnQgeyBJQmFzZUNvaW4sIEtleWNoYWluc1RyaXBsZXQgfSBmcm9tICcuLi8uLi8uLi8uLi9zcmMvYml0Z28vYmFzZUNvaW4nO1xuaW1wb3J0IHsgQml0R29CYXNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vc3JjL2JpdGdvL2JpdGdvQmFzZSc7XG5pbXBvcnQgeyBNcGNVdGlscyB9IGZyb20gJy4uLy4uLy4uLy4uL3NyYy9iaXRnby91dGlscy9tcGNVdGlscyc7XG5pbXBvcnQgeyBSZXF1ZXN0VHJhY2VyIH0gZnJvbSAnLi4vLi4vLi4vLi4vc3JjJztcblxuY2xhc3MgVGVzdE1wY1V0aWxzIGV4dGVuZHMgTXBjVXRpbHMge1xuICBjcmVhdGVLZXljaGFpbnMoKTogUHJvbWlzZTxLZXljaGFpbnNUcmlwbGV0PiB7XG4gICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcigndW51c2VkJykpO1xuICB9XG59XG5cbmRlc2NyaWJlKCdwb3B1bGF0ZUludGVudCB1bndyYXAnLCBmdW5jdGlvbiAoKSB7XG4gIGNvbnN0IHJlcUlkID0gbmV3IFJlcXVlc3RUcmFjZXIoKTtcbiAgbGV0IG1wY1V0aWxzOiBUZXN0TXBjVXRpbHM7XG4gIGxldCBjb2luOiBJQmFzZUNvaW47XG5cbiAgYmVmb3JlRWFjaChmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgbW9ja0JpdGdvID0geyBnZXRFbnY6IHNpbm9uLnN0dWIoKS5yZXR1cm5zKCd0ZXN0JykgfSBhcyB1bmtub3duIGFzIEJpdEdvQmFzZTtcbiAgICBjb2luID0ge1xuICAgICAgZ2V0Q2hhaW46ICgpID0+ICdodGV0aCcsXG4gICAgICBnZXRGYW1pbHk6ICgpID0+ICdldGgnLFxuICAgICAgaXNFVk06ICgpID0+IHRydWUsXG4gICAgICBzdXBwb3J0c1RzczogKCkgPT4gdHJ1ZSxcbiAgICB9IGFzIHVua25vd24gYXMgSUJhc2VDb2luO1xuICAgIG1wY1V0aWxzID0gbmV3IFRlc3RNcGNVdGlscyhtb2NrQml0Z28sIGNvaW4pO1xuICB9KTtcblxuICBhZnRlckVhY2goZnVuY3Rpb24gKCkge1xuICAgIHNpbm9uLnJlc3RvcmUoKTtcbiAgfSk7XG5cbiAgaXQoJ2ZsYXR0ZW5zIHVud3JhcFBhcmFtcyBvbnRvIHVud3JhcCBpbnRlbnQnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgdW53cmFwUGFyYW1zID0geyB0b2tlbk5hbWU6ICdodGV0aDpjdXNkdCcsIGFtb3VudDogJzEwMDAwMDAnIH07XG4gICAgY29uc3QgZmVlT3B0aW9ucyA9IHsgbWF4RmVlUGVyR2FzOiAzMDAwMDAwMDAwLCBtYXhQcmlvcml0eUZlZVBlckdhczogMjAwMDAwMDAwMCB9O1xuXG4gICAgY29uc3QgaW50ZW50ID0gbXBjVXRpbHMucG9wdWxhdGVJbnRlbnQoY29pbiwge1xuICAgICAgcmVxSWQsXG4gICAgICBpbnRlbnRUeXBlOiAndW53cmFwJyxcbiAgICAgIHVud3JhcFBhcmFtcyxcbiAgICAgIGZlZU9wdGlvbnMsXG4gICAgfSk7XG5cbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwoaW50ZW50LmludGVudFR5cGUsICd1bndyYXAnKTtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwoaW50ZW50LnRva2VuTmFtZSwgdW53cmFwUGFyYW1zLnRva2VuTmFtZSk7XG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKGludGVudC5hbW91bnQsIHVud3JhcFBhcmFtcy5hbW91bnQpO1xuICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoaW50ZW50LmZlZU9wdGlvbnMsIGZlZU9wdGlvbnMpO1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbChpbnRlbnQucmVjaXBpZW50cywgdW5kZWZpbmVkKTtcbiAgfSk7XG5cbiAgaXQoJ2FsbG93cyBwYXJ0aWFsIHVuc2hpZWxkIGFtb3VudHMnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgdW53cmFwUGFyYW1zID0geyB0b2tlbk5hbWU6ICdodGV0aDpjdXNkdCcsIGFtb3VudDogJzEnIH07XG5cbiAgICBjb25zdCBpbnRlbnQgPSBtcGNVdGlscy5wb3B1bGF0ZUludGVudChjb2luLCB7XG4gICAgICByZXFJZCxcbiAgICAgIGludGVudFR5cGU6ICd1bndyYXAnLFxuICAgICAgdW53cmFwUGFyYW1zLFxuICAgIH0pO1xuXG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKGludGVudC5hbW91bnQsICcxJyk7XG4gIH0pO1xuXG4gIGl0KCdyZXF1aXJlcyB1bndyYXBQYXJhbXMgZm9yIHVud3JhcCcsIGZ1bmN0aW9uICgpIHtcbiAgICBhc3NlcnQudGhyb3dzKFxuICAgICAgKCkgPT5cbiAgICAgICAgbXBjVXRpbHMucG9wdWxhdGVJbnRlbnQoY29pbiwge1xuICAgICAgICAgIHJlcUlkLFxuICAgICAgICAgIGludGVudFR5cGU6ICd1bndyYXAnLFxuICAgICAgICB9KSxcbiAgICAgIC91bndyYXBQYXJhbXMvXG4gICAgKTtcbiAgfSk7XG5cbiAgaXQoJ3JlamVjdHMgbm9uLXBvc2l0aXZlIHVud3JhcFBhcmFtcy5hbW91bnQnLCBmdW5jdGlvbiAoKSB7XG4gICAgYXNzZXJ0LnRocm93cyhcbiAgICAgICgpID0+XG4gICAgICAgIG1wY1V0aWxzLnBvcHVsYXRlSW50ZW50KGNvaW4sIHtcbiAgICAgICAgICByZXFJZCxcbiAgICAgICAgICBpbnRlbnRUeXBlOiAndW53cmFwJyxcbiAgICAgICAgICB1bndyYXBQYXJhbXM6IHsgdG9rZW5OYW1lOiAnaHRldGg6Y3VzZHQnLCBhbW91bnQ6ICcwJyB9LFxuICAgICAgICB9KSxcbiAgICAgIC91bndyYXBQYXJhbXMuYW1vdW50L1xuICAgICk7XG4gIH0pO1xuXG4gIGl0KCdyZWplY3RzIGNsaWVudC1zaWRlIGZpbmFsaXplVW53cmFwIGNyZWF0aW9uIChXUC1jcmVhdGVkIG9ubHksIENIQUxPLTExMzkpJywgZnVuY3Rpb24gKCkge1xuICAgIGFzc2VydC50aHJvd3MoXG4gICAgICAoKSA9PlxuICAgICAgICBtcGNVdGlscy5wb3B1bGF0ZUludGVudChjb2luLCB7XG4gICAgICAgICAgcmVxSWQsXG4gICAgICAgICAgaW50ZW50VHlwZTogJ2ZpbmFsaXplVW53cmFwJyxcbiAgICAgICAgfSksXG4gICAgICAvY3JlYXRlZCBieSBXYWxsZXQgUGxhdGZvcm0vXG4gICAgKTtcbiAgfSk7XG59KTtcbiJdfQ==
|