@bitgo/sdk-core 3.0.0 → 4.1.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/CHANGELOG.md +63 -0
- package/dist/src/account-lib/mpc/hdTree.d.ts +8 -2
- package/dist/src/account-lib/mpc/hdTree.d.ts.map +1 -1
- package/dist/src/account-lib/mpc/hdTree.js +58 -12
- package/dist/src/account-lib/mpc/tss/ecdsa/ecdsa.d.ts +12 -1
- package/dist/src/account-lib/mpc/tss/ecdsa/ecdsa.d.ts.map +1 -1
- package/dist/src/account-lib/mpc/tss/ecdsa/ecdsa.js +73 -5
- package/dist/src/account-lib/mpc/tss/ecdsa/types.d.ts +6 -0
- package/dist/src/account-lib/mpc/tss/ecdsa/types.d.ts.map +1 -1
- package/dist/src/account-lib/mpc/tss/ecdsa/types.js +1 -1
- package/dist/src/account-lib/mpc/tss/eddsa/eddsa.js +1 -1
- package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts +2 -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/config.d.ts +6 -0
- package/dist/src/bitgo/config.d.ts.map +1 -1
- package/dist/src/bitgo/features/constructFinalSignedMessageHash.d.ts +5 -0
- package/dist/src/bitgo/features/constructFinalSignedMessageHash.d.ts.map +1 -0
- package/dist/src/bitgo/features/constructFinalSignedMessageHash.js +8 -0
- package/dist/src/bitgo/keychain/iKeychains.d.ts +2 -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/lightning/iLightning.d.ts +24 -17
- package/dist/src/bitgo/lightning/iLightning.d.ts.map +1 -1
- package/dist/src/bitgo/lightning/iLightning.js +18 -4
- package/dist/src/bitgo/lightning/lightning.d.ts +7 -1
- package/dist/src/bitgo/lightning/lightning.d.ts.map +1 -1
- package/dist/src/bitgo/lightning/lightning.js +25 -3
- package/dist/src/bitgo/staking/stakingWallet.d.ts +6 -0
- package/dist/src/bitgo/staking/stakingWallet.d.ts.map +1 -1
- package/dist/src/bitgo/staking/stakingWallet.js +9 -1
- package/dist/src/bitgo/tss/common.d.ts +14 -0
- package/dist/src/bitgo/tss/common.d.ts.map +1 -1
- package/dist/src/bitgo/tss/common.js +34 -2
- package/dist/src/bitgo/tss/ecdsa/ecdsa.d.ts +1 -1
- package/dist/src/bitgo/tss/ecdsa/ecdsa.d.ts.map +1 -1
- package/dist/src/bitgo/tss/ecdsa/ecdsa.js +18 -18
- package/dist/src/bitgo/tss/ecdsa/types.d.ts +1 -0
- package/dist/src/bitgo/tss/ecdsa/types.d.ts.map +1 -1
- package/dist/src/bitgo/tss/ecdsa/types.js +1 -1
- package/dist/src/bitgo/tss/eddsa/eddsa.d.ts +15 -0
- package/dist/src/bitgo/tss/eddsa/eddsa.d.ts.map +1 -1
- package/dist/src/bitgo/tss/eddsa/eddsa.js +25 -3
- package/dist/src/bitgo/utils/tss/baseTSSUtils.d.ts +2 -2
- package/dist/src/bitgo/utils/tss/baseTSSUtils.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/baseTSSUtils.js +5 -2
- package/dist/src/bitgo/utils/tss/baseTypes.d.ts +26 -7
- 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/ecdsa.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/ecdsa/ecdsa.js +14 -7
- package/dist/src/bitgo/utils/tss/eddsa/eddsa.d.ts +1 -0
- package/dist/src/bitgo/utils/tss/eddsa/eddsa.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/eddsa/eddsa.js +56 -11
- package/dist/src/bitgo/wallet/iWallet.d.ts +6 -3
- 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 +1 -1
- package/dist/src/bitgo/wallet/wallet.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/wallet.js +70 -41
- package/dist/src/coins/ofc.d.ts +1 -0
- package/dist/src/coins/ofc.d.ts.map +1 -1
- package/dist/src/coins/ofc.js +4 -1
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +2 -1
- package/dist/src/units.d.ts +29 -0
- package/dist/src/units.d.ts.map +1 -0
- package/dist/src/units.js +52 -0
- package/dist/tsconfig.tsbuildinfo +145 -93
- package/package.json +8 -5
|
@@ -25,6 +25,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
25
25
|
const paillierBigint = __importStar(require("paillier-bigint"));
|
|
26
26
|
const bigintCryptoUtils = __importStar(require("bigint-crypto-utils"));
|
|
27
27
|
const secp = __importStar(require("@noble/secp256k1"));
|
|
28
|
+
const hdTree_1 = require("../../hdTree");
|
|
28
29
|
const crypto_1 = require("crypto");
|
|
29
30
|
const crypto_2 = require("../../../util/crypto");
|
|
30
31
|
const util_1 = require("../../util");
|
|
@@ -62,9 +63,11 @@ class Ecdsa {
|
|
|
62
63
|
const { shares: uShares, v } = Ecdsa.shamir.split(u, threshold, numShares);
|
|
63
64
|
const currentParticipant = {
|
|
64
65
|
i: index,
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
66
|
+
t: threshold,
|
|
67
|
+
c: numShares,
|
|
68
|
+
l: util_1.bigIntToBufferBE(privateKey.lambda, 192).toString('hex'),
|
|
69
|
+
m: util_1.bigIntToBufferBE(privateKey.mu, 192).toString('hex'),
|
|
70
|
+
n: util_1.bigIntToBufferBE(publicKey.n, 384).toString('hex'),
|
|
68
71
|
y: util_1.bigIntToBufferBE(y, 33).toString('hex'),
|
|
69
72
|
u: util_1.bigIntToBufferBE(uShares[index], 32).toString('hex'),
|
|
70
73
|
uu: u.toString(),
|
|
@@ -105,7 +108,7 @@ class Ecdsa {
|
|
|
105
108
|
const x = allShares.map((participant) => crypto_2.hexToBigInt(participant['u'])).reduce(Ecdsa.curve.scalarAdd);
|
|
106
109
|
// Verify shares.
|
|
107
110
|
for (const share of nShares) {
|
|
108
|
-
if (
|
|
111
|
+
if (share.v) {
|
|
109
112
|
try {
|
|
110
113
|
Ecdsa.shamir.verify(crypto_2.hexToBigInt(share.u), [crypto_2.hexToBigInt(share.y), crypto_2.hexToBigInt(share.v)], pShare.i);
|
|
111
114
|
}
|
|
@@ -140,6 +143,70 @@ class Ecdsa {
|
|
|
140
143
|
}
|
|
141
144
|
return participants;
|
|
142
145
|
}
|
|
146
|
+
/**
|
|
147
|
+
* Derive shares for a BIP-32 subkey.
|
|
148
|
+
* @param {PShare} The user's p-share.
|
|
149
|
+
* @param {NShare[]} The n-shares received from the other participants.
|
|
150
|
+
* @param {string} The BIP-32 path to derive.
|
|
151
|
+
* @returns {SubkeyShare} Returns the private x-share and n-shares to
|
|
152
|
+
* be distributed to participants at their corresponding index.
|
|
153
|
+
*/
|
|
154
|
+
keyDerive(pShare, nShares, path) {
|
|
155
|
+
const yValues = [pShare, ...nShares].map((share) => crypto_2.hexToBigInt(share.y));
|
|
156
|
+
const y = yValues.reduce((partial, share) => Ecdsa.curve.pointAdd(partial, share));
|
|
157
|
+
const u = BigInt(pShare.uu);
|
|
158
|
+
let contribChaincode = crypto_2.hexToBigInt(pShare.chaincode);
|
|
159
|
+
const chaincodes = [contribChaincode, ...nShares.map(({ chaincode }) => crypto_2.hexToBigInt(chaincode))];
|
|
160
|
+
const chaincode = chaincodes.reduce((acc, chaincode) => (acc + chaincode) % hdTree_1.chaincodeBase);
|
|
161
|
+
// Verify shares.
|
|
162
|
+
for (const share of nShares) {
|
|
163
|
+
if (share.v) {
|
|
164
|
+
try {
|
|
165
|
+
Ecdsa.shamir.verify(crypto_2.hexToBigInt(share.u), [crypto_2.hexToBigInt(share.y), crypto_2.hexToBigInt(share.v)], pShare.i);
|
|
166
|
+
}
|
|
167
|
+
catch (err) {
|
|
168
|
+
throw new Error(`Could not verify share from participant ${share.j}. Verification error: ${err}`);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
// Derive subkey.
|
|
173
|
+
const subkey = Ecdsa.hdTree.privateDerive({ pk: y, sk: u, chaincode }, path);
|
|
174
|
+
// Calculate new public key contribution.
|
|
175
|
+
const contribY = Ecdsa.curve.basePointMult(subkey.sk);
|
|
176
|
+
// Calculate new chaincode contribution.
|
|
177
|
+
const chaincodeDelta = (hdTree_1.chaincodeBase + subkey.chaincode - chaincode) % hdTree_1.chaincodeBase;
|
|
178
|
+
contribChaincode = (contribChaincode + chaincodeDelta) % hdTree_1.chaincodeBase;
|
|
179
|
+
// Calculate new u values.
|
|
180
|
+
const { shares: split_u, v } = Ecdsa.shamir.split(subkey.sk, pShare.t || 2, pShare.c || 3);
|
|
181
|
+
// Calculate new signing key.
|
|
182
|
+
const x = [split_u[pShare.i], ...nShares.map(({ u }) => crypto_2.hexToBigInt(u))].reduce(Ecdsa.curve.scalarAdd);
|
|
183
|
+
const P_i = {
|
|
184
|
+
i: pShare.i,
|
|
185
|
+
l: pShare.l,
|
|
186
|
+
m: pShare.m,
|
|
187
|
+
n: pShare.n,
|
|
188
|
+
y: util_1.bigIntToBufferBE(subkey.pk, 33).toString('hex'),
|
|
189
|
+
x: util_1.bigIntToBufferBE(x, 32).toString('hex'),
|
|
190
|
+
chaincode: util_1.bigIntToBufferBE(subkey.chaincode, 32).toString('hex'),
|
|
191
|
+
};
|
|
192
|
+
const shares = {
|
|
193
|
+
xShare: P_i,
|
|
194
|
+
nShares: {},
|
|
195
|
+
};
|
|
196
|
+
for (let ind = 0; ind < nShares.length; ind++) {
|
|
197
|
+
const P_j = nShares[ind];
|
|
198
|
+
shares.nShares[P_j.j] = {
|
|
199
|
+
i: P_j.j,
|
|
200
|
+
j: P_i.i,
|
|
201
|
+
n: P_j.n,
|
|
202
|
+
u: util_1.bigIntToBufferBE(split_u[P_j.j], 32).toString('hex'),
|
|
203
|
+
y: util_1.bigIntToBufferBE(contribY, 32).toString('hex'),
|
|
204
|
+
v: util_1.bigIntToBufferBE(v[0], 32).toString('hex'),
|
|
205
|
+
chaincode: util_1.bigIntToBufferBE(contribChaincode, 32).toString('hex'),
|
|
206
|
+
};
|
|
207
|
+
}
|
|
208
|
+
return shares;
|
|
209
|
+
}
|
|
143
210
|
/**
|
|
144
211
|
* Create signing shares.
|
|
145
212
|
* @param {xShare} xShare Private xShare of current participant signer
|
|
@@ -357,5 +424,6 @@ class Ecdsa {
|
|
|
357
424
|
}
|
|
358
425
|
exports.default = Ecdsa;
|
|
359
426
|
Ecdsa.curve = new curves_1.Secp256k1Curve();
|
|
427
|
+
Ecdsa.hdTree = new hdTree_1.BIP32();
|
|
360
428
|
Ecdsa.shamir = new shamir_1.default(Ecdsa.curve);
|
|
361
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNkc2EuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYWNjb3VudC1saWIvbXBjL3Rzcy9lY2RzYS9lY2RzYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxnRUFBa0Q7QUFDbEQsdUVBQXlEO0FBQ3pELHVEQUF5QztBQUN6QyxtQ0FBdUQ7QUFDdkQsaURBQW1EO0FBQ25ELHFDQUF5RztBQUN6Ryx5Q0FBOEM7QUFDOUMsMERBQWtDO0FBd0JsQyxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdEIsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBRXRCOztHQUVHO0FBQ0gsTUFBcUIsS0FBSztJQUd4Qjs7Ozs7Ozs7T0FRRztJQUNILEtBQUssQ0FBQyxRQUFRLENBQUMsS0FBYSxFQUFFLFNBQWlCLEVBQUUsU0FBaUIsRUFBRSxJQUFhOztRQUMvRSxJQUFJLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxJQUFJLEtBQUssSUFBSSxTQUFTLElBQUksU0FBUyxJQUFJLFNBQVMsSUFBSSxTQUFTLEtBQUssQ0FBQyxDQUFDLEVBQUU7WUFDbkYsTUFBTSx5QkFBeUIsQ0FBQztTQUNqQztRQUVELElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssRUFBRSxFQUFFO1lBQzlCLE1BQU0sSUFBSSxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQztTQUM3QztRQUNELGtEQUFrRDtRQUNsRCxNQUFNLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxHQUFHLE1BQU0sY0FBYyxDQUFDLGtCQUFrQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN0RixNQUFNLENBQUMsR0FBRyxNQUFBLENBQUMsSUFBSSxJQUFJLHNCQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENB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ZXItYmlnaW50JztcbmltcG9ydCAqIGFzIGJpZ2ludENyeXB0b1V0aWxzIGZyb20gJ2JpZ2ludC1jcnlwdG8tdXRpbHMnO1xuaW1wb3J0ICogYXMgc2VjcCBmcm9tICdAbm9ibGUvc2VjcDI1NmsxJztcbmltcG9ydCB7IHJhbmRvbUJ5dGVzLCBjcmVhdGVIYXNoLCBIYXNoIH0gZnJvbSAnY3J5cHRvJztcbmltcG9ydCB7IGhleFRvQmlnSW50IH0gZnJvbSAnLi4vLi4vLi4vdXRpbC9jcnlwdG8nO1xuaW1wb3J0IHsgYmlnSW50RnJvbUJ1ZmZlckJFLCBiaWdJbnRUb0J1ZmZlckJFLCBiaWdJbnRGcm9tVThBQkUsIGdldFBhaWxsaWVyUHVibGljS2V5IH0gZnJvbSAnLi4vLi4vdXRpbCc7XG5pbXBvcnQgeyBTZWNwMjU2azFDdXJ2ZSB9IGZyb20gJy4uLy4uL2N1cnZlcyc7XG5pbXBvcnQgU2hhbWlyIGZyb20gJy4uLy4uL3NoYW1pcic7XG5pbXBvcnQge1xuICBOU2hhcmUsXG4gIFBTaGFyZSxcbiAgS2V5U2hhcmUsXG4gIEtleUNvbWJpbmVkLFxuICBCU2hhcmUsXG4gIEFTaGFyZSxcbiAgU2lnbmF0dXJlLFxuICBTaWduQ29udmVydFJULFxuICBTaWduQ29udmVydCxcbiAgR1NoYXJlLFxuICBNVVNoYXJlLFxuICBTaWduQ29tYmluZSxcbiAgU2lnbkNvbWJpbmVSVCxcbiAgRFNoYXJlLFxuICBPU2hhcmUsXG4gIFNTaGFyZSxcbiAgU2lnblNoYXJlUlQsXG4gIEtTaGFyZSxcbiAgWFNoYXJlLFxuICBZU2hhcmUsXG59IGZyb20gJy4vdHlwZXMnO1xuXG5jb25zdCBfMW4gPSBCaWdJbnQoMSk7XG5jb25zdCBfM24gPSBCaWdJbnQoMyk7XG5cbi8qKlxuICogRUNEU0EgVFNTIGltcGxlbWVudGF0aW9uIHN1cHBvcnRpbmcgMjpuIFRocmVzaG9sZFxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFY2RzYSB7XG4gIHN0YXRpYyBjdXJ2ZTogU2VjcDI1NmsxQ3VydmUgPSBuZXcgU2VjcDI1NmsxQ3VydmUoKTtcbiAgc3RhdGljIHNoYW1pcjogU2hhbWlyID0gbmV3IFNoYW1pcihFY2RzYS5jdXJ2ZSk7XG4gIC8qKlxuICAgKiBHZW5lcmF0ZSBzaGFyZXMgZm9yIHBhcnRpY2lwYW50IGF0IGluZGV4IGFuZCBzcGxpdCBrZXlzIGAodGhyZXNob2xkLG51bVNoYXJlcylgIHdheXMuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleCBwYXJ0aWNpcGFudCBpbmRleFxuICAgKiBAcGFyYW0ge251bWJlcn0gdGhyZXNob2xkIFNpZ25pbmcgdGhyZXNob2xkXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBudW1TaGFyZXMgIE51bWJlciBvZiBzaGFyZXNcbiAgICogQHBhcmFtIHtCdWZmZXJ9IHNlZWQgb3B0aW9uYWwgc2VlZCB0byB1c2UgZm9yIGtleSBnZW5lcmF0aW9uXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPEtleVNoYXJlPn0gUmV0dXJucyB0aGUgcHJpdmF0ZSBwLXNoYXJlXG4gICAqIGFuZCBuLXNoYXJlcyB0byBiZSBkaXN0cmlidXRlZCB0byBwYXJ0aWNpcGFudHMgYXQgdGhlaXIgY29ycmVzcG9uZGluZyBpbmRleC5cbiAgICovXG4gIGFzeW5jIGtleVNoYXJlKGluZGV4OiBudW1iZXIsIHRocmVzaG9sZDogbnVtYmVyLCBudW1TaGFyZXM6IG51bWJlciwgc2VlZD86IEJ1ZmZlcik6IFByb21pc2U8S2V5U2hhcmU+IHtcbiAgICBpZiAoIShpbmRleCA+IDAgJiYgaW5kZXggPD0gbnVtU2hhcmVzICYmIHRocmVzaG9sZCA8PSBudW1TaGFyZXMgJiYgdGhyZXNob2xkID09PSAyKSkge1xuICAgICAgdGhyb3cgJ0ludmFsaWQgS2V5U2hhcmUgQ29uZmlnJztcbiAgICB9XG5cbiAgICBpZiAoc2VlZCAmJiBzZWVkLmxlbmd0aCAhPT0gNzIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignU2VlZCBtdXN0IGhhdmUgbGVuZ3RoIDcyJyk7XG4gICAgfVxuICAgIC8vIEdlbmVyYXRlIGFkZGl0aXZlbHkgaG9tb21vcnBoaWMgZW5jcnlwdGlvbiBrZXkuXG4gICAgY29uc3QgeyBwdWJsaWNLZXksIHByaXZhdGVLZXkgfSA9IGF3YWl0IHBhaWxsaWVyQmlnaW50LmdlbmVyYXRlUmFuZG9tS2V5cygzMDcyLCB0cnVlKTtcbiAgICBjb25zdCB1ID0gKHNlZWQgJiYgYmlnSW50RnJvbVU4QUJFKHNlY3AudXRpbHMuaGFzaFRvUHJpdmF0ZUtleShzZWVkLnNsaWNlKDAsIDQwKSkpKSA/PyBFY2RzYS5jdXJ2ZS5zY2FsYXJSYW5kb20oKTtcbiAgICBjb25zdCB5ID0gRWNkc2EuY3VydmUuYmFzZVBvaW50TXVsdCh1KTtcbiAgICBjb25zdCBjaGFpbmNvZGUgPSBzZWVkPy5zbGljZSg0MCkgPz8gcmFuZG9tQnl0ZXMoMzIpO1xuICAgIC8vIENvbXB1dGUgc2VjcmV0IHNoYXJlcyBvZiB0aGUgcHJpdmF0ZSBrZXlcbiAgICBjb25zdCB7IHNoYXJlczogdVNoYXJlcywgdiB9ID0gRWNkc2Euc2hhbWlyLnNwbGl0KHUsIHRocmVzaG9sZCwgbnVtU2hhcmVzKTtcbiAgICBjb25zdCBjdXJyZW50UGFydGljaXBhbnQ6IFBTaGFyZSA9IHtcbiAgICAgIGk6IGluZGV4LFxuICAgICAgbDogcHJpdmF0ZUtleS5sYW1iZGEudG9TdHJpbmcoMTYpLFxuICAgICAgbTogcHJpdmF0ZUtleS5tdS50b1N0cmluZygxNiksXG4gICAgICBuOiBwdWJsaWNLZXkubi50b1N0cmluZygxNiksXG4gICAgICB5OiBiaWdJbnRUb0J1ZmZlckJFKHksIDMzKS50b1N0cmluZygnaGV4JyksXG4gICAgICB1OiBiaWdJbnRUb0J1ZmZlckJFKHVTaGFyZXNbaW5kZXhdLCAzMikudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgdXU6IHUudG9TdHJpbmcoKSxcbiAgICAgIGNoYWluY29kZTogY2hhaW5jb2RlLnRvU3RyaW5nKCdoZXgnKSxcbiAgICB9O1xuICAgIGNvbnN0IGtleVNoYXJlOiBLZXlTaGFyZSA9IHtcbiAgICAgIHBTaGFyZTogY3VycmVudFBhcnRpY2lwYW50LFxuICAgICAgblNoYXJlczoge30sXG4gICAgfTtcblxuICAgIGZvciAoY29uc3Qgc2hhcmUgaW4gdVNoYXJlcykge1xuICAgICAgY29uc3QgcGFydGljaXBhbnRJbmRleCA9IHBhcnNlSW50KHNoYXJlLCAxMCk7XG4gICAgICBpZiAocGFydGljaXBhbnRJbmRleCAhPT0gaW5kZXgpIHtcbiAgICAgICAga2V5U2hhcmUublNoYXJlc1twYXJ0aWNpcGFudEluZGV4XSA9IHtcbiAgICAgICAgICBpOiBwYXJ0aWNpcGFudEluZGV4LFxuICAgICAgICAgIGo6IGN1cnJlbnRQYXJ0aWNpcGFudFsnaSddLFxuICAgICAgICAgIG46IHB1YmxpY0tleS5uLnRvU3RyaW5nKDE2KSxcbiAgICAgICAgICB5OiBiaWdJbnRUb0J1ZmZlckJFKHksIDMzKS50b1N0cmluZygnaGV4JyksXG4gICAgICAgICAgdjogYmlnSW50VG9CdWZmZXJCRSh2WzBdLCAzMykudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgICAgIHU6IGJpZ0ludFRvQnVmZmVyQkUodVNoYXJlc1twYXJ0aWNpcGFudEluZGV4XSwgMzIpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgICAgICBjaGFpbmNvZGU6IGNoYWluY29kZS50b1N0cmluZygnaGV4JyksXG4gICAgICAgIH0gYXMgTlNoYXJlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4ga2V5U2hhcmU7XG4gIH1cblxuICAvKipcbiAgICogQ29tYmluZSBkYXRhIHNoYXJlZCBkdXJpbmcgdGhlIGtleSBnZW5lcmF0aW9uIHByb3RvY29sLlxuICAgKiBAcGFyYW0ge0tleVNoYXJlfSBwYXJ0aWNpcGFudFNoYXJlcyBwcml2YXRlIHAtc2hhcmUgYW5kXG4gICAqIG4tc2hhcmVzIHJlY2VpdmVkIGZyb20gYWxsIG90aGVyIHBhcnRpY2lwYW50cy5cbiAgICogQHJldHVybnMge0tleUNvbWJpbmVkfSBSZXR1cm5zIHRoZSBwYXJ0aWNpcGFudCBwcml2YXRlIHgtc2hhcmVcbiAgICogYW5kIHktc2hhcmVzIHRvIGJlIHVzZWQgd2hlbiBnZW5lcmF0aW5nIHNpZ25pbmcgc2hhcmVzLlxuICAgKi9cbiAga2V5Q29tYmluZShwU2hhcmU6IFBTaGFyZSwgblNoYXJlczogTlNoYXJlW10pOiBLZXlDb21iaW5lZCB7XG4gICAgY29uc3QgYWxsU2hhcmVzID0gW3BTaGFyZSwgLi4ublNoYXJlc107XG4gICAgLy8gQ29tcHV0ZSB0aGUgcHVibGljIGtleS5cbiAgICBjb25zdCB5ID0gYWxsU2hhcmVzLm1hcCgocGFydGljaXBhbnQpID0+IGhleFRvQmlnSW50KHBhcnRpY2lwYW50Wyd5J10pKS5yZWR1Y2UoRWNkc2EuY3VydmUucG9pbnRBZGQpO1xuICAgIC8vIEFkZCBzZWNyZXQgc2hhcmVzXG4gICAgY29uc3QgeCA9IGFsbFNoYXJlcy5tYXAoKHBhcnRpY2lwYW50KSA9PiBoZXhUb0JpZ0ludChwYXJ0aWNpcGFudFsndSddKSkucmVkdWNlKEVjZHNhLmN1cnZlLnNjYWxhckFkZCk7XG5cbiAgICAvLyBWZXJpZnkgc2hhcmVzLlxuICAgIGZvciAoY29uc3Qgc2hhcmUgb2YgblNoYXJlcykge1xuICAgICAgaWYgKCd2JyBpbiBzaGFyZSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIEVjZHNhLnNoYW1pci52ZXJpZnkoaGV4VG9CaWdJbnQoc2hhcmUudSksIFtoZXhUb0JpZ0ludChzaGFyZS55KSwgaGV4VG9CaWdJbnQoc2hhcmUudiEpXSwgcFNoYXJlLmkpO1xuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENvdWxkIG5vdCB2ZXJpZnkgc2hhcmUgZnJvbSBwYXJ0aWNpcGFudCAke3NoYXJlLmp9LiBWZXJpZmljYXRpb24gZXJyb3I6ICR7ZXJyfWApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gQ2hhaW5jb2RlIHdpbGwgYmUgdXNlZCBpbiBmdXR1cmUgd2hlbiB3ZSBhZGQgc3VwcG9ydCBmb3Iga2V5IGRlcml2YXRpb24gZm9yIGVjZHNhXG4gICAgY29uc3QgY2hhaW5jb2RlcyA9IFtwU2hhcmUsIC4uLm5TaGFyZXNdLm1hcCgoeyBjaGFpbmNvZGUgfSkgPT4gYmlnSW50RnJvbUJ1ZmZlckJFKEJ1ZmZlci5mcm9tKGNoYWluY29kZSwgJ2hleCcpKSk7XG4gICAgY29uc3QgY2hhaW5jb2RlID0gY2hhaW5jb2Rlcy5yZWR1Y2UoXG4gICAgICAoYWNjLCBjaGFpbmNvZGUpID0+XG4gICAgICAgIChhY2MgKyBjaGFpbmNvZGUpICUgQmlnSW50KCcweDAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcpIC8vIDJeMjU2XG4gICAgKTtcblxuICAgIGNvbnN0IHBhcnRpY2lwYW50czogS2V5Q29tYmluZWQgPSB7XG4gICAgICB4U2hhcmU6IHtcbiAgICAgICAgaTogcFNoYXJlLmksXG4gICAgICAgIGw6IHBTaGFyZS5sLFxuICAgICAgICBtOiBwU2hhcmUubSxcbiAgICAgICAgbjogcFNoYXJlLm4sXG4gICAgICAgIHk6IGJpZ0ludFRvQnVmZmVyQkUoeSwgMzMpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgICAgeDogYmlnSW50VG9CdWZmZXJCRSh4LCAzMikudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgICBjaGFpbmNvZGU6IGJpZ0ludFRvQnVmZmVyQkUoY2hhaW5jb2RlLCAzMikudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgfSxcbiAgICAgIHlTaGFyZXM6IHt9LFxuICAgIH07XG5cbiAgICBmb3IgKGNvbnN0IHNoYXJlIGluIG5TaGFyZXMpIHtcbiAgICAgIGNvbnN0IHBhcnRpY2lwYW50SW5kZXggPSBuU2hhcmVzW3NoYXJlXVsnaiddO1xuICAgICAgcGFydGljaXBhbnRzLnlTaGFyZXNbcGFydGljaXBhbnRJbmRleF0gPSB7XG4gICAgICAgIGk6IHBTaGFyZS5pLFxuICAgICAgICBqOiBuU2hhcmVzW3NoYXJlXVsnaiddLFxuICAgICAgICBuOiBuU2hhcmVzW3NoYXJlXVsnbiddLFxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHBhcnRpY2lwYW50cztcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgc2lnbmluZyBzaGFyZXMuXG4gICAqIEBwYXJhbSB7eFNoYXJlfSB4U2hhcmUgUHJpdmF0ZSB4U2hhcmUgb2YgY3VycmVudCBwYXJ0aWNpcGFudCBzaWduZXJcbiAgICogQHBhcmFtIHtZU2hhcmV9IHlTaGFyZSB5U2hhcmUgY29ycmVzcG9uZGluZyB0byB0aGUgb3RoZXIgcGFydGljaXBhbnQgc2lnbmVyXG4gICAqIEByZXR1cm5zIHtTaWduU2hhcmVSVH0gUmV0dXJucyB0aGUgcGFydGljaXBhbnQgcHJpdmF0ZSB3LXNoYXJlXG4gICAqIGFuZCBrLXNoYXJlIHRvIGJlIGRpc3RyaWJ1dGVkIHRvIG90aGVyIHBhcnRpY2lwYW50IHNpZ25lclxuICAgKi9cbiAgc2lnblNoYXJlKHhTaGFyZTogWFNoYXJlLCB5U2hhcmU6IFlTaGFyZSk6IFNpZ25TaGFyZVJUIHtcbiAgICBjb25zdCBwayA9IGdldFBhaWxsaWVyUHVibGljS2V5KGhleFRvQmlnSW50KHhTaGFyZS5uKSk7XG5cbiAgICBjb25zdCBrID0gRWNkc2EuY3VydmUuc2NhbGFyUmFuZG9tKCk7XG4gICAgY29uc3QgZ2FtbWEgPSBFY2RzYS5jdXJ2ZS5zY2FsYXJSYW5kb20oKTtcblxuICAgIGNvbnN0IGQgPSBFY2RzYS5jdXJ2ZS5zY2FsYXJNdWx0KEVjZHNhLmN1cnZlLnNjYWxhclN1YihCaWdJbnQoeVNoYXJlLmopLCBCaWdJbnQoeFNoYXJlLmkpKSwgQmlnSW50KHhTaGFyZS5pKSk7XG5cbiAgICBjb25zdCB3ID0gW1xuICAgICAgRWNkc2EuY3VydmUuc2NhbGFyTXVsdChCaWdJbnQoeVNoYXJlLmopLCBCaWdJbnQoeFNoYXJlLmkpKSxcbiAgICAgIGhleFRvQmlnSW50KHhTaGFyZVsneCddKSxcbiAgICAgIEVjZHNhLmN1cnZlLnNjYWxhckludmVydChkKSxcbiAgICBdLnJlZHVjZShFY2RzYS5jdXJ2ZS5zY2FsYXJNdWx0KTtcblxuICAgIGNvbnN0IHNpZ25lcnM6IFNpZ25TaGFyZVJUID0ge1xuICAgICAgd1NoYXJlOiB7XG4gICAgICAgIGk6IHhTaGFyZS5pLFxuICAgICAgICBsOiB4U2hhcmUubCxcbiAgICAgICAgbTogeFNoYXJlLm0sXG4gICAgICAgIG46IHhTaGFyZS5uLFxuICAgICAgICB5OiB4U2hhcmUueSxcbiAgICAgICAgazogYmlnSW50VG9CdWZmZXJCRShrLCAzMikudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgICB3OiBiaWdJbnRUb0J1ZmZlckJFKHcsIDMyKS50b1N0cmluZygnaGV4JyksXG4gICAgICAgIGdhbW1hOiBiaWdJbnRUb0J1ZmZlckJFKGdhbW1hLCAzMikudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgfSxcbiAgICAgIGtTaGFyZToge30gYXMgS1NoYXJlLFxuICAgIH07XG5cbiAgICBzaWduZXJzLmtTaGFyZSA9IHtcbiAgICAgIGk6IHlTaGFyZS5qLFxuICAgICAgajogeFNoYXJlLmksXG4gICAgICBuOiBway5uLnRvU3RyaW5nKDE2KSxcbiAgICAgIGs6IGJpZ0ludFRvQnVmZmVyQkUocGsuZW5jcnlwdChrKSwgMzIpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHNpZ25lcnM7XG4gIH1cblxuICAvKipcbiAgICogUGVyZm9ybSBtdWx0aXBsaWNpdGl2ZS10by1hZGRpdGl2ZSAoTXRBKSBzaGFyZSBjb252ZXJzaW9uIHdpdGggYW5vdGhlclxuICAgKiBzaWduZXIuXG4gICAqIEBwYXJhbSB7U2lnbkNvbnZlcnR9XG4gICAqIEByZXR1cm5zIHtTaWduQ29udmVydFJUfVxuICAgKi9cbiAgc2lnbkNvbnZlcnQoc2hhcmVzOiBTaWduQ29udmVydCk6IFNpZ25Db252ZXJ0UlQge1xuICAgIGxldCBzaGFyZVBhcnRpY2lwYW50OiBCU2hhcmUgfCBHU2hhcmUsIHNoYXJlVG9CZVNlbmQ6IEFTaGFyZSB8IE1VU2hhcmU7XG4gICAgbGV0IGlzR2FtbWFTaGFyZSA9IGZhbHNlO1xuICAgIGlmIChzaGFyZXMueFNoYXJlICYmIHNoYXJlcy55U2hhcmUgJiYgc2hhcmVzLmtTaGFyZSkge1xuICAgICAgY29uc3QgeFNoYXJlID0gc2hhcmVzLnhTaGFyZTsgLy8gY3VycmVudFBhcnRpY2lwYW50IHNlY3JldCB4U2hhcmVcbiAgICAgIGNvbnN0IHlTaGFyZSA9IHNoYXJlcy55U2hhcmU7XG4gICAgICBjb25zdCBzaWduU2hhcmUgPSB0aGlzLnNpZ25TaGFyZSh4U2hhcmUsIHlTaGFyZSk7XG4gICAgICBzaGFyZVRvQmVTZW5kID0geyAuLi5zaGFyZXMua1NoYXJlLCBhbHBoYTogJycsIG11OiAnJyB9IGFzIEFTaGFyZTtcbiAgICAgIHNoYXJlUGFydGljaXBhbnQgPSB7IC4uLnNpZ25TaGFyZS53U2hhcmUsIGJldGE6ICcnLCBudTogJycgfSBhcyBCU2hhcmU7XG4gICAgfSBlbHNlIGlmICgoc2hhcmVzLmJTaGFyZSAmJiBzaGFyZXMubXVTaGFyZSkgfHwgKHNoYXJlcy5hU2hhcmUgJiYgc2hhcmVzLndTaGFyZSkpIHtcbiAgICAgIGlzR2FtbWFTaGFyZSA9IHRydWU7XG4gICAgICBzaGFyZVRvQmVTZW5kID0gc2hhcmVzLmFTaGFyZSA/ICh7IC4uLnNoYXJlcy5hU2hhcmUgfSBhcyBNVVNoYXJlKSA6ICh7IC4uLnNoYXJlcy5tdVNoYXJlIH0gYXMgTVVTaGFyZSk7XG4gICAgICBzaGFyZVBhcnRpY2lwYW50ID0gc2hhcmVzLndTaGFyZSA/ICh7IC4uLnNoYXJlcy53U2hhcmUgfSBhcyBHU2hhcmUpIDogKHsgLi4uc2hhcmVzLmJTaGFyZSB9IGFzIEdTaGFyZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBjb25maWcgZm9yIFNpZ24gQ29udmVydCcpO1xuICAgIH1cbiAgICBpZiAoc2hhcmVQYXJ0aWNpcGFudC5pICE9PSBzaGFyZVRvQmVTZW5kLmkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignU2hhcmVzIGZyb20gc2FtZSBwYXJ0aWNpcGFudCcpO1xuICAgIH1cbiAgICBpZiAoc2hhcmVUb0JlU2VuZFsnYWxwaGEnXSkge1xuICAgICAgY29uc3QgcGsgPSBnZXRQYWlsbGllclB1YmxpY0tleShoZXhUb0JpZ0ludChzaGFyZVBhcnRpY2lwYW50Lm4pKTtcbiAgICAgIGNvbnN0IHNrID0gbmV3IHBhaWxsaWVyQmlnaW50LlByaXZhdGVLZXkoXG4gICAgICAgIGhleFRvQmlnSW50KHNoYXJlUGFydGljaXBhbnQubCBhcyBzdHJpbmcpLFxuICAgICAgICBoZXhUb0JpZ0ludChzaGFyZVBhcnRpY2lwYW50Lm0gYXMgc3RyaW5nKSxcbiAgICAgICAgcGtcbiAgICAgICk7XG4gICAgICBjb25zdCBhbHBoYSA9IHNrLmRlY3J5cHQoaGV4VG9CaWdJbnQoc2hhcmVUb0JlU2VuZC5hbHBoYSkpO1xuICAgICAgc2hhcmVQYXJ0aWNpcGFudFsnYWxwaGEnXSA9IGJpZ0ludFRvQnVmZmVyQkUoRWNkc2EuY3VydmUuc2NhbGFyUmVkdWNlKGFscGhhKSwgMzIpLnRvU3RyaW5nKCdoZXgnKTtcbiAgICAgIGNvbnN0IG11ID0gc2suZGVjcnlwdChoZXhUb0JpZ0ludChzaGFyZVRvQmVTZW5kLm11IGFzIHN0cmluZykpOyAvLyByZWNoZWNrIGVuY3J5cHRlZCBudW1iZXJcbiAgICAgIHNoYXJlUGFydGljaXBhbnRbJ211J10gPSBiaWdJbnRUb0J1ZmZlckJFKEVjZHNhLmN1cnZlLnNjYWxhclJlZHVjZShtdSksIDMyKS50b1N0cmluZygnaGV4Jyk7XG4gICAgICBkZWxldGUgc2hhcmVQYXJ0aWNpcGFudFsnbCddO1xuICAgICAgZGVsZXRlIHNoYXJlUGFydGljaXBhbnRbJ20nXTtcbiAgICAgIGRlbGV0ZSBzaGFyZVRvQmVTZW5kWydhbHBoYSddO1xuICAgICAgZGVsZXRlIHNoYXJlVG9CZVNlbmRbJ211J107XG4gICAgfVxuICAgIGlmIChzaGFyZVRvQmVTZW5kWydrJ10pIHtcbiAgICAgIGNvbnN0IG4gPSBoZXhUb0JpZ0ludChzaGFyZVRvQmVTZW5kWyduJ10pOyAvLyBQYWlsbGllciBwdWIgZnJvbSBvdGhlciBzaWduZXJcbiAgICAgIGxldCBwayA9IGdldFBhaWxsaWVyUHVibGljS2V5KG4pO1xuICAgICAgY29uc3QgayA9IGhleFRvQmlnSW50KHNoYXJlVG9CZVNlbmRbJ2snXSk7XG5cbiAgICAgIGNvbnN0IGJldGEwID0gYmlnaW50Q3J5cHRvVXRpbHMucmFuZEJldHdlZW4obiAvIF8zbiAtIF8xbik7XG4gICAgICBzaGFyZVBhcnRpY2lwYW50LmJldGEgPSBiaWdJbnRUb0J1ZmZlckJFKEVjZHNhLmN1cnZlLnNjYWxhck5lZ2F0ZShFY2RzYS5jdXJ2ZS5zY2FsYXJSZWR1Y2UoYmV0YTApKSwgMzIpLnRvU3RyaW5nKFxuICAgICAgICAnaGV4J1xuICAgICAgKTtcbiAgICAgIGNvbnN0IGFscGhhID0gcGsuYWRkaXRpb24ocGsubXVsdGlwbHkoaywgaGV4VG9CaWdJbnQoc2hhcmVQYXJ0aWNpcGFudC5nYW1tYSkpLCBway5lbmNyeXB0KGJldGEwKSk7XG4gICAgICBzaGFyZVRvQmVTZW5kLmFscGhhID0gYmlnSW50VG9CdWZmZXJCRShhbHBoYSwgMzIpLnRvU3RyaW5nKCdoZXgnKTtcblxuICAgICAgY29uc3QgbnUwID0gYmlnaW50Q3J5cHRvVXRpbHMucmFuZEJldHdlZW4obiAvIF8zbiAtIF8xbik7XG4gICAgICBzaGFyZVBhcnRpY2lwYW50Lm51ID0gYmlnSW50VG9CdWZmZXJCRShFY2RzYS5jdXJ2ZS5zY2FsYXJOZWdhdGUoRWNkc2EuY3VydmUuc2NhbGFyUmVkdWNlKG51MCkpLCAzMikudG9TdHJpbmcoXG4gICAgICAgICdoZXgnXG4gICAgICApO1xuICAgICAgY29uc3QgbXUgPSBway5hZGRpdGlvbihway5tdWx0aXBseShrLCBoZXhUb0JpZ0ludChzaGFyZVBhcnRpY2lwYW50LncpKSwgcGsuZW5jcnlwdChudTApKTtcbiAgICAgIHNoYXJlVG9CZVNlbmQubXUgPSBiaWdJbnRUb0J1ZmZlckJFKG11LCAzMikudG9TdHJpbmcoJ2hleCcpO1xuICAgICAgaWYgKHNoYXJlUGFydGljaXBhbnRbJ2FscGhhJ10pIHtcbiAgICAgICAgZGVsZXRlIHNoYXJlVG9CZVNlbmRbJ24nXTtcbiAgICAgICAgZGVsZXRlIHNoYXJlVG9CZVNlbmRbJ2snXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBrID0gZ2V0UGFpbGxpZXJQdWJsaWNLZXkoaGV4VG9CaWdJbnQoc2hhcmVQYXJ0aWNpcGFudC5uKSk7XG4gICAgICAgIHNoYXJlVG9CZVNlbmRbJ24nXSA9IHBrLm4udG9TdHJpbmcoMTYpO1xuICAgICAgICBzaGFyZVRvQmVTZW5kWydrJ10gPSBiaWdJbnRUb0J1ZmZlckJFKHBrLmVuY3J5cHQoaGV4VG9CaWdJbnQoc2hhcmVQYXJ0aWNpcGFudC5rKSksIDMyKS50b1N0cmluZygnaGV4Jyk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICghKCdhbHBoYScgaW4gc2hhcmVUb0JlU2VuZCkgJiYgISgnaycgaW4gc2hhcmVUb0JlU2VuZCkpIHtcbiAgICAgIHNoYXJlVG9CZVNlbmQgPSB7XG4gICAgICAgIGk6IHNoYXJlVG9CZVNlbmRbJ2knXSxcbiAgICAgICAgajogc2hhcmVUb0JlU2VuZFsnaiddLFxuICAgICAgfTtcbiAgICB9XG4gICAgW3NoYXJlVG9CZVNlbmRbJ2knXSwgc2hhcmVUb0JlU2VuZFsnaiddXSA9IFtzaGFyZVRvQmVTZW5kWydqJ10sIHNoYXJlVG9CZVNlbmRbJ2knXV07XG4gICAgaWYgKGlzR2FtbWFTaGFyZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbXVTaGFyZTogc2hhcmVUb0JlU2VuZCBhcyBNVVNoYXJlLFxuICAgICAgICBnU2hhcmU6IHNoYXJlUGFydGljaXBhbnQgYXMgR1NoYXJlLFxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIGFTaGFyZTogc2hhcmVUb0JlU2VuZCxcbiAgICAgIGJTaGFyZTogc2hhcmVQYXJ0aWNpcGFudCBhcyBCU2hhcmUsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb21iaW5lIGdhbW1hIHNoYXJlcyB0byBnZXQgdGhlIHByaXZhdGUgb21pY3JvbiAvIGRlbHRhIHNoYXJlc1xuICAgKiBAcGFyYW0ge1NpZ25Db21iaW5lfSBzaGFyZXNcbiAgICogQHJldHVybnMge1NpZ25Db21iaW5lUlR9XG4gICAqL1xuICBzaWduQ29tYmluZShzaGFyZXM6IFNpZ25Db21iaW5lKTogU2lnbkNvbWJpbmVSVCB7XG4gICAgY29uc3QgZ1NoYXJlID0gc2hhcmVzLmdTaGFyZTtcbiAgICBjb25zdCBTID0gc2hhcmVzLnNpZ25JbmRleDtcbiAgICBjb25zdCBnYW1tYSA9IGhleFRvQmlnSW50KGdTaGFyZS5nYW1tYSk7XG4gICAgY29uc3QgYWxwaGEgPSBoZXhUb0JpZ0ludChnU2hhcmUuYWxwaGEpO1xuICAgIGNvbnN0IGJldGEgPSBoZXhUb0JpZ0ludChnU2hhcmUuYmV0YSk7XG4gICAgY29uc3QgbXUgPSBoZXhUb0JpZ0ludChnU2hhcmUubXUpO1xuICAgIGNvbnN0IG51ID0gaGV4VG9CaWdJbnQoZ1NoYXJlLm51KTtcbiAgICBjb25zdCBrID0gaGV4VG9CaWdJbnQoZ1NoYXJlLmspO1xuICAgIGNvbnN0IHcgPSBoZXhUb0JpZ0ludChnU2hhcmUudyk7XG5cbiAgICBjb25zdCBkZWx0YSA9IEVjZHNhLmN1cnZlLnNjYWxhckFkZChFY2RzYS5jdXJ2ZS5zY2FsYXJNdWx0KGssIGdhbW1hKSwgRWNkc2EuY3VydmUuc2NhbGFyQWRkKGFscGhhLCBiZXRhKSk7XG4gICAgY29uc3Qgb21pY3JvbiA9IEVjZHNhLmN1cnZlLnNjYWxhckFkZChFY2RzYS5jdXJ2ZS5zY2FsYXJNdWx0KGssIHcpLCBFY2RzYS5jdXJ2ZS5zY2FsYXJBZGQobXUsIG51KSk7XG4gICAgY29uc3QgR2FtbWEgPSBFY2RzYS5jdXJ2ZS5iYXNlUG9pbnRNdWx0KGdhbW1hKTtcblxuICAgIHJldHVybiB7XG4gICAgICBvU2hhcmU6IHtcbiAgICAgICAgaTogZ1NoYXJlLmksXG4gICAgICAgIHk6IGdTaGFyZS55LFxuICAgICAgICBrOiBiaWdJbnRUb0J1ZmZlckJFKGssIDMyKS50b1N0cmluZygnaGV4JyksXG4gICAgICAgIG9taWNyb246IGJpZ0ludFRvQnVmZmVyQkUob21pY3JvbiwgMzIpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgICAgZGVsdGE6IGJpZ0ludFRvQnVmZmVyQkUoZGVsdGEsIDMyKS50b1N0cmluZygnaGV4JyksXG4gICAgICAgIEdhbW1hOiBiaWdJbnRUb0J1ZmZlckJFKEdhbW1hLCAzMykudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgfSxcbiAgICAgIGRTaGFyZToge1xuICAgICAgICBpOiBTLmksXG4gICAgICAgIGo6IGdTaGFyZS5pLFxuICAgICAgICBkZWx0YTogYmlnSW50VG9CdWZmZXJCRShkZWx0YSwgMzIpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgICAgR2FtbWE6IGJpZ0ludFRvQnVmZmVyQkUoR2FtbWEsIDMzKS50b1N0cmluZygnaGV4JyksXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogU2lnbiBhIG1lc3NhZ2UuXG4gICAqIEBwYXJhbSB7QnVmZmVyfSBNIE1lc3NhZ2UgdG8gYmUgc2lnbmVkXG4gICAqIEBwYXJhbSB7T1NoYXJlfSBvU2hhcmUgcHJpdmF0ZSBvbWljcm9uIHNoYXJlIG9mIGN1cnJlbnQgcGFydGljaXBhbnRcbiAgICogQHBhcmFtIHtEU2hhcmV9IGRTaGFyZSBkZWx0YSBzaGFyZSByZWNlaXZlZCBmcm9tIHRoZSBvdGhlciBwYXJ0aWNpcGFudFxuICAgKiBAcGFyYW0ge0hhc2h9IGhhc2ggaGFzaGluZyBhbGdvcml0aG0gaW1wbGVtZW50aW5nIE5vZGVgcyBzdGFuZGFyZCBjcnlwdG8gaGFzaCBpbnRlcmZhY2VcbiAgICogQHBhcmFtIHtib29sZWFufSBzaG91bGRIYXNoIGlmIHRydWUsIHdlIGhhc2ggdGhlIHByb3ZpZGVkIGJ1ZmZlciBiZWZvcmUgc2lnbmluZ1xuICAgKiBAcmV0dXJucyB7U1NoYXJlfVxuICAgKi9cbiAgc2lnbihNOiBCdWZmZXIsIG9TaGFyZTogT1NoYXJlLCBkU2hhcmU6IERTaGFyZSwgaGFzaD86IEhhc2gsIHNob3VsZEhhc2ggPSB0cnVlKTogU1NoYXJlIHtcbiAgICBjb25zdCBtID0gc2hvdWxkSGFzaCA/IChoYXNoIHx8IGNyZWF0ZUhhc2goJ3NoYTI1NicpKS51cGRhdGUoTSkuZGlnZXN0KCkgOiBNO1xuXG4gICAgY29uc3QgZGVsdGEgPSBFY2RzYS5jdXJ2ZS5zY2FsYXJBZGQoaGV4VG9CaWdJbnQob1NoYXJlLmRlbHRhKSwgaGV4VG9CaWdJbnQoZFNoYXJlLmRlbHRhKSk7XG5cbiAgICBjb25zdCBSID0gRWNkc2EuY3VydmUucG9pbnRNdWx0aXBseShcbiAgICAgIEVjZHNhLmN1cnZlLnBvaW50QWRkKGhleFRvQmlnSW50KG9TaGFyZS5HYW1tYSksIGhleFRvQmlnSW50KGRTaGFyZS5HYW1tYSkpLFxuICAgICAgRWNkc2EuY3VydmUuc2NhbGFySW52ZXJ0KGRlbHRhKVxuICAgICk7XG4gICAgY29uc3QgcG9pbnRSID0gc2VjcC5Qb2ludC5mcm9tSGV4KGJpZ0ludFRvQnVmZmVyQkUoUiwgMzIpKTtcbiAgICBjb25zdCByID0gcG9pbnRSLng7XG5cbiAgICBjb25zdCBzID0gRWNkc2EuY3VydmUuc2NhbGFyQWRkKFxuICAgICAgRWNkc2EuY3VydmUuc2NhbGFyTXVsdChiaWdJbnRGcm9tVThBQkUobSksIGhleFRvQmlnSW50KG9TaGFyZS5rKSksXG4gICAgICBFY2RzYS5jdXJ2ZS5zY2FsYXJNdWx0KHIsIGhleFRvQmlnSW50KG9TaGFyZS5vbWljcm9uKSlcbiAgICApO1xuICAgIHJldHVybiB7XG4gICAgICBpOiBvU2hhcmUuaSxcbiAgICAgIHk6IG9TaGFyZS55LFxuICAgICAgUjogcG9pbnRSLnRvSGV4KHRydWUpLFxuICAgICAgczogYmlnSW50VG9CdWZmZXJCRShzLCAzMikudG9TdHJpbmcoJ2hleCcpLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQ29uc3RydWN0IGZ1bGwgc2lnbmF0dXJlIGJ5IGNvbWJpbmluZyBTaWduIFNoYXJlc1xuICAgKiBAcGFyYW0ge1NTaGFyZVtdfSBzaGFyZXNcbiAgICogQHJldHVybnMge1NpZ25hdHVyZX1cbiAgICovXG4gIGNvbnN0cnVjdFNpZ25hdHVyZShzaGFyZXM6IFNTaGFyZVtdKTogU2lnbmF0dXJlIHtcbiAgICAvLyBFdmVyeSBSIG11c3QgbWF0Y2guXG4gICAgY29uc3QgUiA9IHNoYXJlc1swXVsnUiddO1xuICAgIGNvbnN0IGlzUk1hdGNoaW5nID0gc2hhcmVzLm1hcCgoc2hhcmUpID0+IHNoYXJlWydSJ10gPT09IFIpLnJlZHVjZSgoYSwgYikgPT4gYSAmJiBiKTtcbiAgICBpZiAoIWlzUk1hdGNoaW5nKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1IgdmFsdWUgc2hvdWxkIGJlIGNvbnNpc3RlbnQgYWNyb3NzIGFsbCBzaGFyZXMnKTtcbiAgICB9XG5cbiAgICBsZXQgcyA9IHNoYXJlcy5tYXAoKHNoYXJlKSA9PiBoZXhUb0JpZ0ludChzaGFyZVsncyddKSkucmVkdWNlKEVjZHNhLmN1cnZlLnNjYWxhckFkZCk7XG4gICAgY29uc3QgcmVjaWQgPSAoUi5zbGljZSgwLCAyKSA9PT0gJzAzJyA/IDEgOiAwKSBeIChzID4gRWNkc2EuY3VydmUub3JkZXIoKSAvIEJpZ0ludCgyKSA/IDEgOiAwKTtcblxuICAgIC8vIE5vcm1hbGl6ZSBzLlxuICAgIHMgPSBzID4gRWNkc2EuY3VydmUub3JkZXIoKSAvIEJpZ0ludCgyKSA/IEVjZHNhLmN1cnZlLm9yZGVyKCkgLSBzIDogcztcbiAgICByZXR1cm4ge1xuICAgICAgeTogc2hhcmVzWzBdWyd5J10sXG4gICAgICByOiBSLnNsaWNlKDIpLFxuICAgICAgczogYmlnSW50VG9CdWZmZXJCRShzLCAzMikudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgcmVjaWQ6IHJlY2lkLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogVmVyaWZ5IGVjZHNhIHNpZ25hdHVyZXNcbiAgICogQHBhcmFtIHtCdWZmZXJ9IG1lc3NhZ2VcbiAgICogQHBhcmFtIHtTaWduYXR1cmUgfSBzaWduYXR1cmVcbiAgICogQHBhcmFtIHtIYXNofSBoYXNoIGhhc2hpbmcgYWxnb3JpdGhtIGltcGxlbWVudGluZyBOb2RlYHMgc3RhbmRhcmQgY3J5cHRvIGhhc2ggaW50ZXJmYWNlXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gc2hvdWxkSGFzaCBpZiB0cnVlLCB3ZSBoYXNoIHRoZSBwcm92aWRlZCBidWZmZXIgYmVmb3JlIHZlcmlmeWluZ1xuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiBzaWduYXR1cmUgaXMgdmFsaWQ7IEZhbHNlIG90aGVyd2lzZVxuICAgKi9cbiAgdmVyaWZ5KG1lc3NhZ2U6IEJ1ZmZlciwgc2lnbmF0dXJlOiBTaWduYXR1cmUsIGhhc2g/OiBIYXNoLCBzaG91bGRIYXNoID0gdHJ1ZSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IG1lc3NhZ2VUb1ZlcmlmeSA9IHNob3VsZEhhc2ggPyAoaGFzaCB8fCBjcmVhdGVIYXNoKCdzaGEyNTYnKSkudXBkYXRlKG1lc3NhZ2UpLmRpZ2VzdCgpIDogbWVzc2FnZTtcbiAgICByZXR1cm4gRWNkc2EuY3VydmUudmVyaWZ5KFxuICAgICAgbWVzc2FnZVRvVmVyaWZ5LFxuICAgICAgQnVmZmVyLmNvbmNhdChbXG4gICAgICAgIEJ1ZmZlci5mcm9tKFtzaWduYXR1cmVbJ3JlY2lkJ11dKSxcbiAgICAgICAgYmlnSW50VG9CdWZmZXJCRShoZXhUb0JpZ0ludChzaWduYXR1cmVbJ3InXSksIDMyKSxcbiAgICAgICAgYmlnSW50VG9CdWZmZXJCRShoZXhUb0JpZ0ludChzaWduYXR1cmVbJ3MnXSksIDMyKSxcbiAgICAgIF0pLFxuICAgICAgaGV4VG9CaWdJbnQoc2lnbmF0dXJlWyd5J10pXG4gICAgKTtcbiAgfVxufVxuIl19
|
|
429
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNkc2EuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYWNjb3VudC1saWIvbXBjL3Rzcy9lY2RzYS9lY2RzYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxnRUFBa0Q7QUFDbEQsdUVBQXlEO0FBQ3pELHVEQUF5QztBQUN6Qyx5Q0FBNEQ7QUFDNUQsbUNBQXVEO0FBQ3ZELGlEQUFtRDtBQUNuRCxxQ0FBeUc7QUFDekcseUNBQThDO0FBQzlDLDBEQUFrQztBQXlCbEMsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3RCLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUV0Qjs7R0FFRztBQUNILE1BQXFCLEtBQUs7SUFJeEI7Ozs7Ozs7O09BUUc7SUFDSCxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQWEsRUFBRSxTQUFpQixFQUFFLFNBQWlCLEVBQUUsSUFBYTs7UUFDL0UsSUFBSSxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsSUFBSSxLQUFLLElBQUksU0FBUyxJQUFJLFNBQVMsSUFBSSxTQUFTLElBQUksU0FBUyxLQUFLLENBQUMsQ0FBQyxFQUFFO1lBQ25GLE1BQU0seUJBQXlCLENBQUM7U0FDakM7UUFFRCxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLEVBQUUsRUFBRTtZQUM5QixNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUM7U0FDN0M7UUFDRCxrREFBa0Q7UUFDbEQsTUFBTSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsR0FBRyxNQUFNLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDdEYsTUFBTSxDQUFDLEdBQUcsTUFBQSxDQUFDLElBQUksSUFBSSxzQkFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdC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LENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDakMsdUJBQWdCLENBQUMsb0JBQVcsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDakQsdUJBQWdCLENBQUMsb0JBQVcsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7U0FDbEQsQ0FBQyxFQUNGLG9CQUFXLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQzVCLENBQUM7SUFDSixDQUFDOztBQXhiSCx3QkF5YkM7QUF4YlEsV0FBSyxHQUFtQixJQUFJLHVCQUFjLEVBQUUsQ0FBQztBQUM3QyxZQUFNLEdBQVcsSUFBSSxjQUFLLEVBQUUsQ0FBQztBQUM3QixZQUFNLEdBQVcsSUFBSSxnQkFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHBhaWxsaWVyQmlnaW50IGZyb20gJ3BhaWxsaWVyLWJpZ2ludCc7XG5pbXBvcnQgKiBhcyBiaWdpbnRDcnlwdG9VdGlscyBmcm9tICdiaWdpbnQtY3J5cHRvLXV0aWxzJztcbmltcG9ydCAqIGFzIHNlY3AgZnJvbSAnQG5vYmxlL3NlY3AyNTZrMSc7XG5pbXBvcnQgSERUcmVlLCB7IEJJUDMyLCBjaGFpbmNvZGVCYXNlIH0gZnJvbSAnLi4vLi4vaGRUcmVlJztcbmltcG9ydCB7IHJhbmRvbUJ5dGVzLCBjcmVhdGVIYXNoLCBIYXNoIH0gZnJvbSAnY3J5cHRvJztcbmltcG9ydCB7IGhleFRvQmlnSW50IH0gZnJvbSAnLi4vLi4vLi4vdXRpbC9jcnlwdG8nO1xuaW1wb3J0IHsgYmlnSW50RnJvbUJ1ZmZlckJFLCBiaWdJbnRUb0J1ZmZlckJFLCBiaWdJbnRGcm9tVThBQkUsIGdldFBhaWxsaWVyUHVibGljS2V5IH0gZnJvbSAnLi4vLi4vdXRpbCc7XG5pbXBvcnQgeyBTZWNwMjU2azFDdXJ2ZSB9IGZyb20gJy4uLy4uL2N1cnZlcyc7XG5pbXBvcnQgU2hhbWlyIGZyb20gJy4uLy4uL3NoYW1pcic7XG5pbXBvcnQge1xuICBOU2hhcmUsXG4gIFBTaGFyZSxcbiAgS2V5U2hhcmUsXG4gIEtleUNvbWJpbmVkLFxuICBTdWJrZXlTaGFyZSxcbiAgQlNoYXJlLFxuICBBU2hhcmUsXG4gIFNpZ25hdHVyZSxcbiAgU2lnbkNvbnZlcnRSVCxcbiAgU2lnbkNvbnZlcnQsXG4gIEdTaGFyZSxcbiAgTVVTaGFyZSxcbiAgU2lnbkNvbWJpbmUsXG4gIFNpZ25Db21iaW5lUlQsXG4gIERTaGFyZSxcbiAgT1NoYXJlLFxuICBTU2hhcmUsXG4gIFNpZ25TaGFyZVJULFxuICBLU2hhcmUsXG4gIFhTaGFyZSxcbiAgWVNoYXJlLFxufSBmcm9tICcuL3R5cGVzJztcblxuY29uc3QgXzFuID0gQmlnSW50KDEpO1xuY29uc3QgXzNuID0gQmlnSW50KDMpO1xuXG4vKipcbiAqIEVDRFNBIFRTUyBpbXBsZW1lbnRhdGlvbiBzdXBwb3J0aW5nIDI6biBUaHJlc2hvbGRcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRWNkc2Ege1xuICBzdGF0aWMgY3VydmU6IFNlY3AyNTZrMUN1cnZlID0gbmV3IFNlY3AyNTZrMUN1cnZlKCk7XG4gIHN0YXRpYyBoZFRyZWU6IEhEVHJlZSA9IG5ldyBCSVAzMigpO1xuICBzdGF0aWMgc2hhbWlyOiBTaGFtaXIgPSBuZXcgU2hhbWlyKEVjZHNhLmN1cnZlKTtcbiAgLyoqXG4gICAqIEdlbmVyYXRlIHNoYXJlcyBmb3IgcGFydGljaXBhbnQgYXQgaW5kZXggYW5kIHNwbGl0IGtleXMgYCh0aHJlc2hvbGQsbnVtU2hhcmVzKWAgd2F5cy5cbiAgICogQHBhcmFtIHtudW1iZXJ9IGluZGV4IHBhcnRpY2lwYW50IGluZGV4XG4gICAqIEBwYXJhbSB7bnVtYmVyfSB0aHJlc2hvbGQgU2lnbmluZyB0aHJlc2hvbGRcbiAgICogQHBhcmFtIHtudW1iZXJ9IG51bVNoYXJlcyAgTnVtYmVyIG9mIHNoYXJlc1xuICAgKiBAcGFyYW0ge0J1ZmZlcn0gc2VlZCBvcHRpb25hbCBzZWVkIHRvIHVzZSBmb3Iga2V5IGdlbmVyYXRpb25cbiAgICogQHJldHVybnMge1Byb21pc2U8S2V5U2hhcmU+fSBSZXR1cm5zIHRoZSBwcml2YXRlIHAtc2hhcmVcbiAgICogYW5kIG4tc2hhcmVzIHRvIGJlIGRpc3RyaWJ1dGVkIHRvIHBhcnRpY2lwYW50cyBhdCB0aGVpciBjb3JyZXNwb25kaW5nIGluZGV4LlxuICAgKi9cbiAgYXN5bmMga2V5U2hhcmUoaW5kZXg6IG51bWJlciwgdGhyZXNob2xkOiBudW1iZXIsIG51bVNoYXJlczogbnVtYmVyLCBzZWVkPzogQnVmZmVyKTogUHJvbWlzZTxLZXlTaGFyZT4ge1xuICAgIGlmICghKGluZGV4ID4gMCAmJiBpbmRleCA8PSBudW1TaGFyZXMgJiYgdGhyZXNob2xkIDw9IG51bVNoYXJlcyAmJiB0aHJlc2hvbGQgPT09IDIpKSB7XG4gICAgICB0aHJvdyAnSW52YWxpZCBLZXlTaGFyZSBDb25maWcnO1xuICAgIH1cblxuICAgIGlmIChzZWVkICYmIHNlZWQubGVuZ3RoICE9PSA3Mikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdTZWVkIG11c3QgaGF2ZSBsZW5ndGggNzInKTtcbiAgICB9XG4gICAgLy8gR2VuZXJhdGUgYWRkaXRpdmVseSBob21vbW9ycGhpYyBlbmNyeXB0aW9uIGtleS5cbiAgICBjb25zdCB7IHB1YmxpY0tleSwgcHJpdmF0ZUtleSB9ID0gYXdhaXQgcGFpbGxpZXJCaWdpbnQuZ2VuZXJhdGVSYW5kb21LZXlzKDMwNzIsIHRydWUpO1xuICAgIGNvbnN0IHUgPSAoc2VlZCAmJiBiaWdJbnRGcm9tVThBQkUoc2VjcC51dGlscy5oYXNoVG9Qcml2YXRlS2V5KHNlZWQuc2xpY2UoMCwgNDApKSkpID8/IEVjZHNhLmN1cnZlLnNjYWxhclJhbmRvbSgpO1xuICAgIGNvbnN0IHkgPSBFY2RzYS5jdXJ2ZS5iYXNlUG9pbnRNdWx0KHUpO1xuICAgIGNvbnN0IGNoYWluY29kZSA9IHNlZWQ/LnNsaWNlKDQwKSA/PyByYW5kb21CeXRlcygzMik7XG4gICAgLy8gQ29tcHV0ZSBzZWNyZXQgc2hhcmVzIG9mIHRoZSBwcml2YXRlIGtleVxuICAgIGNvbnN0IHsgc2hhcmVzOiB1U2hhcmVzLCB2IH0gPSBFY2RzYS5zaGFtaXIuc3BsaXQodSwgdGhyZXNob2xkLCBudW1TaGFyZXMpO1xuICAgIGNvbnN0IGN1cnJlbnRQYXJ0aWNpcGFudDogUFNoYXJlID0ge1xuICAgICAgaTogaW5kZXgsXG4gICAgICB0OiB0aHJlc2hvbGQsXG4gICAgICBjOiBudW1TaGFyZXMsXG4gICAgICBsOiBiaWdJbnRUb0J1ZmZlckJFKHByaXZhdGVLZXkubGFtYmRhLCAxOTIpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgIG06IGJpZ0ludFRvQnVmZmVyQkUocHJpdmF0ZUtleS5tdSwgMTkyKS50b1N0cmluZygnaGV4JyksXG4gICAgICBuOiBiaWdJbnRUb0J1ZmZlckJFKHB1YmxpY0tleS5uLCAzODQpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgIHk6IGJpZ0ludFRvQnVmZmVyQkUoeSwgMzMpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgIHU6IGJpZ0ludFRvQnVmZmVyQkUodVNoYXJlc1tpbmRleF0sIDMyKS50b1N0cmluZygnaGV4JyksXG4gICAgICB1dTogdS50b1N0cmluZygpLFxuICAgICAgY2hhaW5jb2RlOiBjaGFpbmNvZGUudG9TdHJpbmcoJ2hleCcpLFxuICAgIH07XG4gICAgY29uc3Qga2V5U2hhcmU6IEtleVNoYXJlID0ge1xuICAgICAgcFNoYXJlOiBjdXJyZW50UGFydGljaXBhbnQsXG4gICAgICBuU2hhcmVzOiB7fSxcbiAgICB9O1xuXG4gICAgZm9yIChjb25zdCBzaGFyZSBpbiB1U2hhcmVzKSB7XG4gICAgICBjb25zdCBwYXJ0aWNpcGFudEluZGV4ID0gcGFyc2VJbnQoc2hhcmUsIDEwKTtcbiAgICAgIGlmIChwYXJ0aWNpcGFudEluZGV4ICE9PSBpbmRleCkge1xuICAgICAgICBrZXlTaGFyZS5uU2hhcmVzW3BhcnRpY2lwYW50SW5kZXhdID0ge1xuICAgICAgICAgIGk6IHBhcnRpY2lwYW50SW5kZXgsXG4gICAgICAgICAgajogY3VycmVudFBhcnRpY2lwYW50WydpJ10sXG4gICAgICAgICAgbjogcHVibGljS2V5Lm4udG9TdHJpbmcoMTYpLFxuICAgICAgICAgIHk6IGJpZ0ludFRvQnVmZmVyQkUoeSwgMzMpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgICAgICB2OiBiaWdJbnRUb0J1ZmZlckJFKHZbMF0sIDMzKS50b1N0cmluZygnaGV4JyksXG4gICAgICAgICAgdTogYmlnSW50VG9CdWZmZXJCRSh1U2hhcmVzW3BhcnRpY2lwYW50SW5kZXhdLCAzMikudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgICAgIGNoYWluY29kZTogY2hhaW5jb2RlLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgICAgfSBhcyBOU2hhcmU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBrZXlTaGFyZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb21iaW5lIGRhdGEgc2hhcmVkIGR1cmluZyB0aGUga2V5IGdlbmVyYXRpb24gcHJvdG9jb2wuXG4gICAqIEBwYXJhbSB7S2V5U2hhcmV9IHBhcnRpY2lwYW50U2hhcmVzIHByaXZhdGUgcC1zaGFyZSBhbmRcbiAgICogbi1zaGFyZXMgcmVjZWl2ZWQgZnJvbSBhbGwgb3RoZXIgcGFydGljaXBhbnRzLlxuICAgKiBAcmV0dXJucyB7S2V5Q29tYmluZWR9IFJldHVybnMgdGhlIHBhcnRpY2lwYW50IHByaXZhdGUgeC1zaGFyZVxuICAgKiBhbmQgeS1zaGFyZXMgdG8gYmUgdXNlZCB3aGVuIGdlbmVyYXRpbmcgc2lnbmluZyBzaGFyZXMuXG4gICAqL1xuICBrZXlDb21iaW5lKHBTaGFyZTogUFNoYXJlLCBuU2hhcmVzOiBOU2hhcmVbXSk6IEtleUNvbWJpbmVkIHtcbiAgICBjb25zdCBhbGxTaGFyZXMgPSBbcFNoYXJlLCAuLi5uU2hhcmVzXTtcbiAgICAvLyBDb21wdXRlIHRoZSBwdWJsaWMga2V5LlxuICAgIGNvbnN0IHkgPSBhbGxTaGFyZXMubWFwKChwYXJ0aWNpcGFudCkgPT4gaGV4VG9CaWdJbnQocGFydGljaXBhbnRbJ3knXSkpLnJlZHVjZShFY2RzYS5jdXJ2ZS5wb2ludEFkZCk7XG4gICAgLy8gQWRkIHNlY3JldCBzaGFyZXNcbiAgICBjb25zdCB4ID0gYWxsU2hhcmVzLm1hcCgocGFydGljaXBhbnQpID0+IGhleFRvQmlnSW50KHBhcnRpY2lwYW50Wyd1J10pKS5yZWR1Y2UoRWNkc2EuY3VydmUuc2NhbGFyQWRkKTtcblxuICAgIC8vIFZlcmlmeSBzaGFyZXMuXG4gICAgZm9yIChjb25zdCBzaGFyZSBvZiBuU2hhcmVzKSB7XG4gICAgICBpZiAoc2hhcmUudikge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIEVjZHNhLnNoYW1pci52ZXJpZnkoaGV4VG9CaWdJbnQoc2hhcmUudSksIFtoZXhUb0JpZ0ludChzaGFyZS55KSwgaGV4VG9CaWdJbnQoc2hhcmUudiEpXSwgcFNoYXJlLmkpO1xuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENvdWxkIG5vdCB2ZXJpZnkgc2hhcmUgZnJvbSBwYXJ0aWNpcGFudCAke3NoYXJlLmp9LiBWZXJpZmljYXRpb24gZXJyb3I6ICR7ZXJyfWApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gQ2hhaW5jb2RlIHdpbGwgYmUgdXNlZCBpbiBmdXR1cmUgd2hlbiB3ZSBhZGQgc3VwcG9ydCBmb3Iga2V5IGRlcml2YXRpb24gZm9yIGVjZHNhXG4gICAgY29uc3QgY2hhaW5jb2RlcyA9IFtwU2hhcmUsIC4uLm5TaGFyZXNdLm1hcCgoeyBjaGFpbmNvZGUgfSkgPT4gYmlnSW50RnJvbUJ1ZmZlckJFKEJ1ZmZlci5mcm9tKGNoYWluY29kZSwgJ2hleCcpKSk7XG4gICAgY29uc3QgY2hhaW5jb2RlID0gY2hhaW5jb2Rlcy5yZWR1Y2UoXG4gICAgICAoYWNjLCBjaGFpbmNvZGUpID0+XG4gICAgICAgIChhY2MgKyBjaGFpbmNvZGUpICUgQmlnSW50KCcweDAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcpIC8vIDJeMjU2XG4gICAgKTtcblxuICAgIGNvbnN0IHBhcnRpY2lwYW50czogS2V5Q29tYmluZWQgPSB7XG4gICAgICB4U2hhcmU6IHtcbiAgICAgICAgaTogcFNoYXJlLmksXG4gICAgICAgIGw6IHBTaGFyZS5sLFxuICAgICAgICBtOiBwU2hhcmUubSxcbiAgICAgICAgbjogcFNoYXJlLm4sXG4gICAgICAgIHk6IGJpZ0ludFRvQnVmZmVyQkUoeSwgMzMpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgICAgeDogYmlnSW50VG9CdWZmZXJCRSh4LCAzMikudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgICBjaGFpbmNvZGU6IGJpZ0ludFRvQnVmZmVyQkUoY2hhaW5jb2RlLCAzMikudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgfSxcbiAgICAgIHlTaGFyZXM6IHt9LFxuICAgIH07XG5cbiAgICBmb3IgKGNvbnN0IHNoYXJlIGluIG5TaGFyZXMpIHtcbiAgICAgIGNvbnN0IHBhcnRpY2lwYW50SW5kZXggPSBuU2hhcmVzW3NoYXJlXVsnaiddO1xuICAgICAgcGFydGljaXBhbnRzLnlTaGFyZXNbcGFydGljaXBhbnRJbmRleF0gPSB7XG4gICAgICAgIGk6IHBTaGFyZS5pLFxuICAgICAgICBqOiBuU2hhcmVzW3NoYXJlXVsnaiddLFxuICAgICAgICBuOiBuU2hhcmVzW3NoYXJlXVsnbiddLFxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHBhcnRpY2lwYW50cztcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXJpdmUgc2hhcmVzIGZvciBhIEJJUC0zMiBzdWJrZXkuXG4gICAqIEBwYXJhbSB7UFNoYXJlfSBUaGUgdXNlcidzIHAtc2hhcmUuXG4gICAqIEBwYXJhbSB7TlNoYXJlW119IFRoZSBuLXNoYXJlcyByZWNlaXZlZCBmcm9tIHRoZSBvdGhlciBwYXJ0aWNpcGFudHMuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBUaGUgQklQLTMyIHBhdGggdG8gZGVyaXZlLlxuICAgKiBAcmV0dXJucyB7U3Via2V5U2hhcmV9IFJldHVybnMgdGhlIHByaXZhdGUgeC1zaGFyZSBhbmQgbi1zaGFyZXMgdG9cbiAgICogYmUgZGlzdHJpYnV0ZWQgdG8gcGFydGljaXBhbnRzIGF0IHRoZWlyIGNvcnJlc3BvbmRpbmcgaW5kZXguXG4gICAqL1xuICBrZXlEZXJpdmUocFNoYXJlOiBQU2hhcmUsIG5TaGFyZXM6IE5TaGFyZVtdLCBwYXRoOiBzdHJpbmcpOiBTdWJrZXlTaGFyZSB7XG4gICAgY29uc3QgeVZhbHVlcyA9IFtwU2hhcmUsIC4uLm5TaGFyZXNdLm1hcCgoc2hhcmUpID0+IGhleFRvQmlnSW50KHNoYXJlLnkpKTtcbiAgICBjb25zdCB5ID0geVZhbHVlcy5yZWR1Y2UoKHBhcnRpYWwsIHNoYXJlKSA9PiBFY2RzYS5jdXJ2ZS5wb2ludEFkZChwYXJ0aWFsLCBzaGFyZSkpO1xuICAgIGNvbnN0IHUgPSBCaWdJbnQocFNoYXJlLnV1KTtcbiAgICBsZXQgY29udHJpYkNoYWluY29kZSA9IGhleFRvQmlnSW50KHBTaGFyZS5jaGFpbmNvZGUpO1xuICAgIGNvbnN0IGNoYWluY29kZXMgPSBbY29udHJpYkNoYWluY29kZSwgLi4ublNoYXJlcy5tYXAoKHsgY2hhaW5jb2RlIH0pID0+IGhleFRvQmlnSW50KGNoYWluY29kZSkpXTtcbiAgICBjb25zdCBjaGFpbmNvZGUgPSBjaGFpbmNvZGVzLnJlZHVjZSgoYWNjLCBjaGFpbmNvZGUpID0+IChhY2MgKyBjaGFpbmNvZGUpICUgY2hhaW5jb2RlQmFzZSk7XG5cbiAgICAvLyBWZXJpZnkgc2hhcmVzLlxuICAgIGZvciAoY29uc3Qgc2hhcmUgb2YgblNoYXJlcykge1xuICAgICAgaWYgKHNoYXJlLnYpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBFY2RzYS5zaGFtaXIudmVyaWZ5KGhleFRvQmlnSW50KHNoYXJlLnUpLCBbaGV4VG9CaWdJbnQoc2hhcmUueSksIGhleFRvQmlnSW50KHNoYXJlLnYhKV0sIHBTaGFyZS5pKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb3VsZCBub3QgdmVyaWZ5IHNoYXJlIGZyb20gcGFydGljaXBhbnQgJHtzaGFyZS5qfS4gVmVyaWZpY2F0aW9uIGVycm9yOiAke2Vycn1gKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIERlcml2ZSBzdWJrZXkuXG4gICAgY29uc3Qgc3Via2V5ID0gRWNkc2EuaGRUcmVlLnByaXZhdGVEZXJpdmUoeyBwazogeSwgc2s6IHUsIGNoYWluY29kZSB9LCBwYXRoKTtcblxuICAgIC8vIENhbGN1bGF0ZSBuZXcgcHVibGljIGtleSBjb250cmlidXRpb24uXG4gICAgY29uc3QgY29udHJpYlkgPSBFY2RzYS5jdXJ2ZS5iYXNlUG9pbnRNdWx0KHN1YmtleS5zayk7XG5cbiAgICAvLyBDYWxjdWxhdGUgbmV3IGNoYWluY29kZSBjb250cmlidXRpb24uXG4gICAgY29uc3QgY2hhaW5jb2RlRGVsdGEgPSAoY2hhaW5jb2RlQmFzZSArIHN1YmtleS5jaGFpbmNvZGUgLSBjaGFpbmNvZGUpICUgY2hhaW5jb2RlQmFzZTtcbiAgICBjb250cmliQ2hhaW5jb2RlID0gKGNvbnRyaWJDaGFpbmNvZGUgKyBjaGFpbmNvZGVEZWx0YSkgJSBjaGFpbmNvZGVCYXNlO1xuXG4gICAgLy8gQ2FsY3VsYXRlIG5ldyB1IHZhbHVlcy5cbiAgICBjb25zdCB7IHNoYXJlczogc3BsaXRfdSwgdiB9ID0gRWNkc2Euc2hhbWlyLnNwbGl0KHN1YmtleS5zaywgcFNoYXJlLnQgfHwgMiwgcFNoYXJlLmMgfHwgMyk7XG5cbiAgICAvLyBDYWxjdWxhdGUgbmV3IHNpZ25pbmcga2V5LlxuICAgIGNvbnN0IHggPSBbc3BsaXRfdVtwU2hhcmUuaV0sIC4uLm5TaGFyZXMubWFwKCh7IHUgfSkgPT4gaGV4VG9CaWdJbnQodSkpXS5yZWR1Y2UoRWNkc2EuY3VydmUuc2NhbGFyQWRkKTtcblxuICAgIGNvbnN0IFBfaTogWFNoYXJlID0ge1xuICAgICAgaTogcFNoYXJlLmksXG4gICAgICBsOiBwU2hhcmUubCxcbiAgICAgIG06IHBTaGFyZS5tLFxuICAgICAgbjogcFNoYXJlLm4sXG4gICAgICB5OiBiaWdJbnRUb0J1ZmZlckJFKHN1YmtleS5waywgMzMpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgIHg6IGJpZ0ludFRvQnVmZmVyQkUoeCwgMzIpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgIGNoYWluY29kZTogYmlnSW50VG9CdWZmZXJCRShzdWJrZXkuY2hhaW5jb2RlLCAzMikudG9TdHJpbmcoJ2hleCcpLFxuICAgIH07XG5cbiAgICBjb25zdCBzaGFyZXM6IFN1YmtleVNoYXJlID0ge1xuICAgICAgeFNoYXJlOiBQX2ksXG4gICAgICBuU2hhcmVzOiB7fSxcbiAgICB9O1xuXG4gICAgZm9yIChsZXQgaW5kID0gMDsgaW5kIDwgblNoYXJlcy5sZW5ndGg7IGluZCsrKSB7XG4gICAgICBjb25zdCBQX2ogPSBuU2hhcmVzW2luZF07XG4gICAgICBzaGFyZXMublNoYXJlc1tQX2oual0gPSB7XG4gICAgICAgIGk6IFBfai5qLFxuICAgICAgICBqOiBQX2kuaSxcbiAgICAgICAgbjogUF9qLm4sXG4gICAgICAgIHU6IGJpZ0ludFRvQnVmZmVyQkUoc3BsaXRfdVtQX2oual0sIDMyKS50b1N0cmluZygnaGV4JyksXG4gICAgICAgIHk6IGJpZ0ludFRvQnVmZmVyQkUoY29udHJpYlksIDMyKS50b1N0cmluZygnaGV4JyksXG4gICAgICAgIHY6IGJpZ0ludFRvQnVmZmVyQkUodlswXSwgMzIpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgICAgY2hhaW5jb2RlOiBiaWdJbnRUb0J1ZmZlckJFKGNvbnRyaWJDaGFpbmNvZGUsIDMyKS50b1N0cmluZygnaGV4JyksXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiBzaGFyZXM7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIHNpZ25pbmcgc2hhcmVzLlxuICAgKiBAcGFyYW0ge3hTaGFyZX0geFNoYXJlIFByaXZhdGUgeFNoYXJlIG9mIGN1cnJlbnQgcGFydGljaXBhbnQgc2lnbmVyXG4gICAqIEBwYXJhbSB7WVNoYXJlfSB5U2hhcmUgeVNoYXJlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIG90aGVyIHBhcnRpY2lwYW50IHNpZ25lclxuICAgKiBAcmV0dXJucyB7U2lnblNoYXJlUlR9IFJldHVybnMgdGhlIHBhcnRpY2lwYW50IHByaXZhdGUgdy1zaGFyZVxuICAgKiBhbmQgay1zaGFyZSB0byBiZSBkaXN0cmlidXRlZCB0byBvdGhlciBwYXJ0aWNpcGFudCBzaWduZXJcbiAgICovXG4gIHNpZ25TaGFyZSh4U2hhcmU6IFhTaGFyZSwgeVNoYXJlOiBZU2hhcmUpOiBTaWduU2hhcmVSVCB7XG4gICAgY29uc3QgcGsgPSBnZXRQYWlsbGllclB1YmxpY0tleShoZXhUb0JpZ0ludCh4U2hhcmUubikpO1xuXG4gICAgY29uc3QgayA9IEVjZHNhLmN1cnZlLnNjYWxhclJhbmRvbSgpO1xuICAgIGNvbnN0IGdhbW1hID0gRWNkc2EuY3VydmUuc2NhbGFyUmFuZG9tKCk7XG5cbiAgICBjb25zdCBkID0gRWNkc2EuY3VydmUuc2NhbGFyTXVsdChFY2RzYS5jdXJ2ZS5zY2FsYXJTdWIoQmlnSW50KHlTaGFyZS5qKSwgQmlnSW50KHhTaGFyZS5pKSksIEJpZ0ludCh4U2hhcmUuaSkpO1xuXG4gICAgY29uc3QgdyA9IFtcbiAgICAgIEVjZHNhLmN1cnZlLnNjYWxhck11bHQoQmlnSW50KHlTaGFyZS5qKSwgQmlnSW50KHhTaGFyZS5pKSksXG4gICAgICBoZXhUb0JpZ0ludCh4U2hhcmVbJ3gnXSksXG4gICAgICBFY2RzYS5jdXJ2ZS5zY2FsYXJJbnZlcnQoZCksXG4gICAgXS5yZWR1Y2UoRWNkc2EuY3VydmUuc2NhbGFyTXVsdCk7XG5cbiAgICBjb25zdCBzaWduZXJzOiBTaWduU2hhcmVSVCA9IHtcbiAgICAgIHdTaGFyZToge1xuICAgICAgICBpOiB4U2hhcmUuaSxcbiAgICAgICAgbDogeFNoYXJlLmwsXG4gICAgICAgIG06IHhTaGFyZS5tLFxuICAgICAgICBuOiB4U2hhcmUubixcbiAgICAgICAgeTogeFNoYXJlLnksXG4gICAgICAgIGs6IGJpZ0ludFRvQnVmZmVyQkUoaywgMzIpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgICAgdzogYmlnSW50VG9CdWZmZXJCRSh3LCAzMikudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgICBnYW1tYTogYmlnSW50VG9CdWZmZXJCRShnYW1tYSwgMzIpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgIH0sXG4gICAgICBrU2hhcmU6IHt9IGFzIEtTaGFyZSxcbiAgICB9O1xuXG4gICAgc2lnbmVycy5rU2hhcmUgPSB7XG4gICAgICBpOiB5U2hhcmUuaixcbiAgICAgIGo6IHhTaGFyZS5pLFxuICAgICAgbjogcGsubi50b1N0cmluZygxNiksXG4gICAgICBrOiBiaWdJbnRUb0J1ZmZlckJFKHBrLmVuY3J5cHQoayksIDMyKS50b1N0cmluZygnaGV4JyksXG4gICAgfTtcblxuICAgIHJldHVybiBzaWduZXJzO1xuICB9XG5cbiAgLyoqXG4gICAqIFBlcmZvcm0gbXVsdGlwbGljaXRpdmUtdG8tYWRkaXRpdmUgKE10QSkgc2hhcmUgY29udmVyc2lvbiB3aXRoIGFub3RoZXJcbiAgICogc2lnbmVyLlxuICAgKiBAcGFyYW0ge1NpZ25Db252ZXJ0fVxuICAgKiBAcmV0dXJucyB7U2lnbkNvbnZlcnRSVH1cbiAgICovXG4gIHNpZ25Db252ZXJ0KHNoYXJlczogU2lnbkNvbnZlcnQpOiBTaWduQ29udmVydFJUIHtcbiAgICBsZXQgc2hhcmVQYXJ0aWNpcGFudDogQlNoYXJlIHwgR1NoYXJlLCBzaGFyZVRvQmVTZW5kOiBBU2hhcmUgfCBNVVNoYXJlO1xuICAgIGxldCBpc0dhbW1hU2hhcmUgPSBmYWxzZTtcbiAgICBpZiAoc2hhcmVzLnhTaGFyZSAmJiBzaGFyZXMueVNoYXJlICYmIHNoYXJlcy5rU2hhcmUpIHtcbiAgICAgIGNvbnN0IHhTaGFyZSA9IHNoYXJlcy54U2hhcmU7IC8vIGN1cnJlbnRQYXJ0aWNpcGFudCBzZWNyZXQgeFNoYXJlXG4gICAgICBjb25zdCB5U2hhcmUgPSBzaGFyZXMueVNoYXJlO1xuICAgICAgY29uc3Qgc2lnblNoYXJlID0gdGhpcy5zaWduU2hhcmUoeFNoYXJlLCB5U2hhcmUpO1xuICAgICAgc2hhcmVUb0JlU2VuZCA9IHsgLi4uc2hhcmVzLmtTaGFyZSwgYWxwaGE6ICcnLCBtdTogJycgfSBhcyBBU2hhcmU7XG4gICAgICBzaGFyZVBhcnRpY2lwYW50ID0geyAuLi5zaWduU2hhcmUud1NoYXJlLCBiZXRhOiAnJywgbnU6ICcnIH0gYXMgQlNoYXJlO1xuICAgIH0gZWxzZSBpZiAoKHNoYXJlcy5iU2hhcmUgJiYgc2hhcmVzLm11U2hhcmUpIHx8IChzaGFyZXMuYVNoYXJlICYmIHNoYXJlcy53U2hhcmUpKSB7XG4gICAgICBpc0dhbW1hU2hhcmUgPSB0cnVlO1xuICAgICAgc2hhcmVUb0JlU2VuZCA9IHNoYXJlcy5hU2hhcmUgPyAoeyAuLi5zaGFyZXMuYVNoYXJlIH0gYXMgTVVTaGFyZSkgOiAoeyAuLi5zaGFyZXMubXVTaGFyZSB9IGFzIE1VU2hhcmUpO1xuICAgICAgc2hhcmVQYXJ0aWNpcGFudCA9IHNoYXJlcy53U2hhcmUgPyAoeyAuLi5zaGFyZXMud1NoYXJlIH0gYXMgR1NoYXJlKSA6ICh7IC4uLnNoYXJlcy5iU2hhcmUgfSBhcyBHU2hhcmUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgY29uZmlnIGZvciBTaWduIENvbnZlcnQnKTtcbiAgICB9XG4gICAgaWYgKHNoYXJlUGFydGljaXBhbnQuaSAhPT0gc2hhcmVUb0JlU2VuZC5pKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1NoYXJlcyBmcm9tIHNhbWUgcGFydGljaXBhbnQnKTtcbiAgICB9XG4gICAgaWYgKHNoYXJlVG9CZVNlbmRbJ2FscGhhJ10pIHtcbiAgICAgIGNvbnN0IHBrID0gZ2V0UGFpbGxpZXJQdWJsaWNLZXkoaGV4VG9CaWdJbnQoc2hhcmVQYXJ0aWNpcGFudC5uKSk7XG4gICAgICBjb25zdCBzayA9IG5ldyBwYWlsbGllckJpZ2ludC5Qcml2YXRlS2V5KFxuICAgICAgICBoZXhUb0JpZ0ludChzaGFyZVBhcnRpY2lwYW50LmwgYXMgc3RyaW5nKSxcbiAgICAgICAgaGV4VG9CaWdJbnQoc2hhcmVQYXJ0aWNpcGFudC5tIGFzIHN0cmluZyksXG4gICAgICAgIHBrXG4gICAgICApO1xuICAgICAgY29uc3QgYWxwaGEgPSBzay5kZWNyeXB0KGhleFRvQmlnSW50KHNoYXJlVG9CZVNlbmQuYWxwaGEpKTtcbiAgICAgIHNoYXJlUGFydGljaXBhbnRbJ2FscGhhJ10gPSBiaWdJbnRUb0J1ZmZlckJFKEVjZHNhLmN1cnZlLnNjYWxhclJlZHVjZShhbHBoYSksIDMyKS50b1N0cmluZygnaGV4Jyk7XG4gICAgICBjb25zdCBtdSA9IHNrLmRlY3J5cHQoaGV4VG9CaWdJbnQoc2hhcmVUb0JlU2VuZC5tdSBhcyBzdHJpbmcpKTsgLy8gcmVjaGVjayBlbmNyeXB0ZWQgbnVtYmVyXG4gICAgICBzaGFyZVBhcnRpY2lwYW50WydtdSddID0gYmlnSW50VG9CdWZmZXJCRShFY2RzYS5jdXJ2ZS5zY2FsYXJSZWR1Y2UobXUpLCAzMikudG9TdHJpbmcoJ2hleCcpO1xuICAgICAgZGVsZXRlIHNoYXJlUGFydGljaXBhbnRbJ2wnXTtcbiAgICAgIGRlbGV0ZSBzaGFyZVBhcnRpY2lwYW50WydtJ107XG4gICAgICBkZWxldGUgc2hhcmVUb0JlU2VuZFsnYWxwaGEnXTtcbiAgICAgIGRlbGV0ZSBzaGFyZVRvQmVTZW5kWydtdSddO1xuICAgIH1cbiAgICBpZiAoc2hhcmVUb0JlU2VuZFsnayddKSB7XG4gICAgICBjb25zdCBuID0gaGV4VG9CaWdJbnQoc2hhcmVUb0JlU2VuZFsnbiddKTsgLy8gUGFpbGxpZXIgcHViIGZyb20gb3RoZXIgc2lnbmVyXG4gICAgICBsZXQgcGsgPSBnZXRQYWlsbGllclB1YmxpY0tleShuKTtcbiAgICAgIGNvbnN0IGsgPSBoZXhUb0JpZ0ludChzaGFyZVRvQmVTZW5kWydrJ10pO1xuXG4gICAgICBjb25zdCBiZXRhMCA9IGJpZ2ludENyeXB0b1V0aWxzLnJhbmRCZXR3ZWVuKG4gLyBfM24gLSBfMW4pO1xuICAgICAgc2hhcmVQYXJ0aWNpcGFudC5iZXRhID0gYmlnSW50VG9CdWZmZXJCRShFY2RzYS5jdXJ2ZS5zY2FsYXJOZWdhdGUoRWNkc2EuY3VydmUuc2NhbGFyUmVkdWNlKGJldGEwKSksIDMyKS50b1N0cmluZyhcbiAgICAgICAgJ2hleCdcbiAgICAgICk7XG4gICAgICBjb25zdCBhbHBoYSA9IHBrLmFkZGl0aW9uKHBrLm11bHRpcGx5KGssIGhleFRvQmlnSW50KHNoYXJlUGFydGljaXBhbnQuZ2FtbWEpKSwgcGsuZW5jcnlwdChiZXRhMCkpO1xuICAgICAgc2hhcmVUb0JlU2VuZC5hbHBoYSA9IGJpZ0ludFRvQnVmZmVyQkUoYWxwaGEsIDMyKS50b1N0cmluZygnaGV4Jyk7XG5cbiAgICAgIGNvbnN0IG51MCA9IGJpZ2ludENyeXB0b1V0aWxzLnJhbmRCZXR3ZWVuKG4gLyBfM24gLSBfMW4pO1xuICAgICAgc2hhcmVQYXJ0aWNpcGFudC5udSA9IGJpZ0ludFRvQnVmZmVyQkUoRWNkc2EuY3VydmUuc2NhbGFyTmVnYXRlKEVjZHNhLmN1cnZlLnNjYWxhclJlZHVjZShudTApKSwgMzIpLnRvU3RyaW5nKFxuICAgICAgICAnaGV4J1xuICAgICAgKTtcbiAgICAgIGNvbnN0IG11ID0gcGsuYWRkaXRpb24ocGsubXVsdGlwbHkoaywgaGV4VG9CaWdJbnQoc2hhcmVQYXJ0aWNpcGFudC53KSksIHBrLmVuY3J5cHQobnUwKSk7XG4gICAgICBzaGFyZVRvQmVTZW5kLm11ID0gYmlnSW50VG9CdWZmZXJCRShtdSwgMzIpLnRvU3RyaW5nKCdoZXgnKTtcbiAgICAgIGlmIChzaGFyZVBhcnRpY2lwYW50WydhbHBoYSddKSB7XG4gICAgICAgIGRlbGV0ZSBzaGFyZVRvQmVTZW5kWyduJ107XG4gICAgICAgIGRlbGV0ZSBzaGFyZVRvQmVTZW5kWydrJ107XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwayA9IGdldFBhaWxsaWVyUHVibGljS2V5KGhleFRvQmlnSW50KHNoYXJlUGFydGljaXBhbnQubikpO1xuICAgICAgICBzaGFyZVRvQmVTZW5kWyduJ10gPSBway5uLnRvU3RyaW5nKDE2KTtcbiAgICAgICAgc2hhcmVUb0JlU2VuZFsnayddID0gYmlnSW50VG9CdWZmZXJCRShway5lbmNyeXB0KGhleFRvQmlnSW50KHNoYXJlUGFydGljaXBhbnQuaykpLCAzMikudG9TdHJpbmcoJ2hleCcpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoISgnYWxwaGEnIGluIHNoYXJlVG9CZVNlbmQpICYmICEoJ2snIGluIHNoYXJlVG9CZVNlbmQpKSB7XG4gICAgICBzaGFyZVRvQmVTZW5kID0ge1xuICAgICAgICBpOiBzaGFyZVRvQmVTZW5kWydpJ10sXG4gICAgICAgIGo6IHNoYXJlVG9CZVNlbmRbJ2onXSxcbiAgICAgIH07XG4gICAgfVxuICAgIFtzaGFyZVRvQmVTZW5kWydpJ10sIHNoYXJlVG9CZVNlbmRbJ2onXV0gPSBbc2hhcmVUb0JlU2VuZFsnaiddLCBzaGFyZVRvQmVTZW5kWydpJ11dO1xuICAgIGlmIChpc0dhbW1hU2hhcmUpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG11U2hhcmU6IHNoYXJlVG9CZVNlbmQgYXMgTVVTaGFyZSxcbiAgICAgICAgZ1NoYXJlOiBzaGFyZVBhcnRpY2lwYW50IGFzIEdTaGFyZSxcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBhU2hhcmU6IHNoYXJlVG9CZVNlbmQsXG4gICAgICBiU2hhcmU6IHNoYXJlUGFydGljaXBhbnQgYXMgQlNoYXJlLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQ29tYmluZSBnYW1tYSBzaGFyZXMgdG8gZ2V0IHRoZSBwcml2YXRlIG9taWNyb24gLyBkZWx0YSBzaGFyZXNcbiAgICogQHBhcmFtIHtTaWduQ29tYmluZX0gc2hhcmVzXG4gICAqIEByZXR1cm5zIHtTaWduQ29tYmluZVJUfVxuICAgKi9cbiAgc2lnbkNvbWJpbmUoc2hhcmVzOiBTaWduQ29tYmluZSk6IFNpZ25Db21iaW5lUlQge1xuICAgIGNvbnN0IGdTaGFyZSA9IHNoYXJlcy5nU2hhcmU7XG4gICAgY29uc3QgUyA9IHNoYXJlcy5zaWduSW5kZXg7XG4gICAgY29uc3QgZ2FtbWEgPSBoZXhUb0JpZ0ludChnU2hhcmUuZ2FtbWEpO1xuICAgIGNvbnN0IGFscGhhID0gaGV4VG9CaWdJbnQoZ1NoYXJlLmFscGhhKTtcbiAgICBjb25zdCBiZXRhID0gaGV4VG9CaWdJbnQoZ1NoYXJlLmJldGEpO1xuICAgIGNvbnN0IG11ID0gaGV4VG9CaWdJbnQoZ1NoYXJlLm11KTtcbiAgICBjb25zdCBudSA9IGhleFRvQmlnSW50KGdTaGFyZS5udSk7XG4gICAgY29uc3QgayA9IGhleFRvQmlnSW50KGdTaGFyZS5rKTtcbiAgICBjb25zdCB3ID0gaGV4VG9CaWdJbnQoZ1NoYXJlLncpO1xuXG4gICAgY29uc3QgZGVsdGEgPSBFY2RzYS5jdXJ2ZS5zY2FsYXJBZGQoRWNkc2EuY3VydmUuc2NhbGFyTXVsdChrLCBnYW1tYSksIEVjZHNhLmN1cnZlLnNjYWxhckFkZChhbHBoYSwgYmV0YSkpO1xuICAgIGNvbnN0IG9taWNyb24gPSBFY2RzYS5jdXJ2ZS5zY2FsYXJBZGQoRWNkc2EuY3VydmUuc2NhbGFyTXVsdChrLCB3KSwgRWNkc2EuY3VydmUuc2NhbGFyQWRkKG11LCBudSkpO1xuICAgIGNvbnN0IEdhbW1hID0gRWNkc2EuY3VydmUuYmFzZVBvaW50TXVsdChnYW1tYSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgb1NoYXJlOiB7XG4gICAgICAgIGk6IGdTaGFyZS5pLFxuICAgICAgICB5OiBnU2hhcmUueSxcbiAgICAgICAgazogYmlnSW50VG9CdWZmZXJCRShrLCAzMikudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgICBvbWljcm9uOiBiaWdJbnRUb0J1ZmZlckJFKG9taWNyb24sIDMyKS50b1N0cmluZygnaGV4JyksXG4gICAgICAgIGRlbHRhOiBiaWdJbnRUb0J1ZmZlckJFKGRlbHRhLCAzMikudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgICBHYW1tYTogYmlnSW50VG9CdWZmZXJCRShHYW1tYSwgMzMpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgIH0sXG4gICAgICBkU2hhcmU6IHtcbiAgICAgICAgaTogUy5pLFxuICAgICAgICBqOiBnU2hhcmUuaSxcbiAgICAgICAgZGVsdGE6IGJpZ0ludFRvQnVmZmVyQkUoZGVsdGEsIDMyKS50b1N0cmluZygnaGV4JyksXG4gICAgICAgIEdhbW1hOiBiaWdJbnRUb0J1ZmZlckJFKEdhbW1hLCAzMykudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFNpZ24gYSBtZXNzYWdlLlxuICAgKiBAcGFyYW0ge0J1ZmZlcn0gTSBNZXNzYWdlIHRvIGJlIHNpZ25lZFxuICAgKiBAcGFyYW0ge09TaGFyZX0gb1NoYXJlIHByaXZhdGUgb21pY3JvbiBzaGFyZSBvZiBjdXJyZW50IHBhcnRpY2lwYW50XG4gICAqIEBwYXJhbSB7RFNoYXJlfSBkU2hhcmUgZGVsdGEgc2hhcmUgcmVjZWl2ZWQgZnJvbSB0aGUgb3RoZXIgcGFydGljaXBhbnRcbiAgICogQHBhcmFtIHtIYXNofSBoYXNoIGhhc2hpbmcgYWxnb3JpdGhtIGltcGxlbWVudGluZyBOb2RlYHMgc3RhbmRhcmQgY3J5cHRvIGhhc2ggaW50ZXJmYWNlXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gc2hvdWxkSGFzaCBpZiB0cnVlLCB3ZSBoYXNoIHRoZSBwcm92aWRlZCBidWZmZXIgYmVmb3JlIHNpZ25pbmdcbiAgICogQHJldHVybnMge1NTaGFyZX1cbiAgICovXG4gIHNpZ24oTTogQnVmZmVyLCBvU2hhcmU6IE9TaGFyZSwgZFNoYXJlOiBEU2hhcmUsIGhhc2g/OiBIYXNoLCBzaG91bGRIYXNoID0gdHJ1ZSk6IFNTaGFyZSB7XG4gICAgY29uc3QgbSA9IHNob3VsZEhhc2ggPyAoaGFzaCB8fCBjcmVhdGVIYXNoKCdzaGEyNTYnKSkudXBkYXRlKE0pLmRpZ2VzdCgpIDogTTtcblxuICAgIGNvbnN0IGRlbHRhID0gRWNkc2EuY3VydmUuc2NhbGFyQWRkKGhleFRvQmlnSW50KG9TaGFyZS5kZWx0YSksIGhleFRvQmlnSW50KGRTaGFyZS5kZWx0YSkpO1xuXG4gICAgY29uc3QgUiA9IEVjZHNhLmN1cnZlLnBvaW50TXVsdGlwbHkoXG4gICAgICBFY2RzYS5jdXJ2ZS5wb2ludEFkZChoZXhUb0JpZ0ludChvU2hhcmUuR2FtbWEpLCBoZXhUb0JpZ0ludChkU2hhcmUuR2FtbWEpKSxcbiAgICAgIEVjZHNhLmN1cnZlLnNjYWxhckludmVydChkZWx0YSlcbiAgICApO1xuICAgIGNvbnN0IHBvaW50UiA9IHNlY3AuUG9pbnQuZnJvbUhleChiaWdJbnRUb0J1ZmZlckJFKFIsIDMyKSk7XG4gICAgY29uc3QgciA9IHBvaW50Ui54O1xuXG4gICAgY29uc3QgcyA9IEVjZHNhLmN1cnZlLnNjYWxhckFkZChcbiAgICAgIEVjZHNhLmN1cnZlLnNjYWxhck11bHQoYmlnSW50RnJvbVU4QUJFKG0pLCBoZXhUb0JpZ0ludChvU2hhcmUuaykpLFxuICAgICAgRWNkc2EuY3VydmUuc2NhbGFyTXVsdChyLCBoZXhUb0JpZ0ludChvU2hhcmUub21pY3JvbikpXG4gICAgKTtcbiAgICByZXR1cm4ge1xuICAgICAgaTogb1NoYXJlLmksXG4gICAgICB5OiBvU2hhcmUueSxcbiAgICAgIFI6IHBvaW50Ui50b0hleCh0cnVlKSxcbiAgICAgIHM6IGJpZ0ludFRvQnVmZmVyQkUocywgMzIpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdCBmdWxsIHNpZ25hdHVyZSBieSBjb21iaW5pbmcgU2lnbiBTaGFyZXNcbiAgICogQHBhcmFtIHtTU2hhcmVbXX0gc2hhcmVzXG4gICAqIEByZXR1cm5zIHtTaWduYXR1cmV9XG4gICAqL1xuICBjb25zdHJ1Y3RTaWduYXR1cmUoc2hhcmVzOiBTU2hhcmVbXSk6IFNpZ25hdHVyZSB7XG4gICAgLy8gRXZlcnkgUiBtdXN0IG1hdGNoLlxuICAgIGNvbnN0IFIgPSBzaGFyZXNbMF1bJ1InXTtcbiAgICBjb25zdCBpc1JNYXRjaGluZyA9IHNoYXJlcy5tYXAoKHNoYXJlKSA9PiBzaGFyZVsnUiddID09PSBSKS5yZWR1Y2UoKGEsIGIpID0+IGEgJiYgYik7XG4gICAgaWYgKCFpc1JNYXRjaGluZykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdSIHZhbHVlIHNob3VsZCBiZSBjb25zaXN0ZW50IGFjcm9zcyBhbGwgc2hhcmVzJyk7XG4gICAgfVxuXG4gICAgbGV0IHMgPSBzaGFyZXMubWFwKChzaGFyZSkgPT4gaGV4VG9CaWdJbnQoc2hhcmVbJ3MnXSkpLnJlZHVjZShFY2RzYS5jdXJ2ZS5zY2FsYXJBZGQpO1xuICAgIGNvbnN0IHJlY2lkID0gKFIuc2xpY2UoMCwgMikgPT09ICcwMycgPyAxIDogMCkgXiAocyA+IEVjZHNhLmN1cnZlLm9yZGVyKCkgLyBCaWdJbnQoMikgPyAxIDogMCk7XG5cbiAgICAvLyBOb3JtYWxpemUgcy5cbiAgICBzID0gcyA+IEVjZHNhLmN1cnZlLm9yZGVyKCkgLyBCaWdJbnQoMikgPyBFY2RzYS5jdXJ2ZS5vcmRlcigpIC0gcyA6IHM7XG4gICAgcmV0dXJuIHtcbiAgICAgIHk6IHNoYXJlc1swXVsneSddLFxuICAgICAgcjogUi5zbGljZSgyKSxcbiAgICAgIHM6IGJpZ0ludFRvQnVmZmVyQkUocywgMzIpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgIHJlY2lkOiByZWNpZCxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFZlcmlmeSBlY2RzYSBzaWduYXR1cmVzXG4gICAqIEBwYXJhbSB7QnVmZmVyfSBtZXNzYWdlXG4gICAqIEBwYXJhbSB7U2lnbmF0dXJlIH0gc2lnbmF0dXJlXG4gICAqIEBwYXJhbSB7SGFzaH0gaGFzaCBoYXNoaW5nIGFsZ29yaXRobSBpbXBsZW1lbnRpbmcgTm9kZWBzIHN0YW5kYXJkIGNyeXB0byBoYXNoIGludGVyZmFjZVxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHNob3VsZEhhc2ggaWYgdHJ1ZSwgd2UgaGFzaCB0aGUgcHJvdmlkZWQgYnVmZmVyIGJlZm9yZSB2ZXJpZnlpbmdcbiAgICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgc2lnbmF0dXJlIGlzIHZhbGlkOyBGYWxzZSBvdGhlcndpc2VcbiAgICovXG4gIHZlcmlmeShtZXNzYWdlOiBCdWZmZXIsIHNpZ25hdHVyZTogU2lnbmF0dXJlLCBoYXNoPzogSGFzaCwgc2hvdWxkSGFzaCA9IHRydWUpOiBib29sZWFuIHtcbiAgICBjb25zdCBtZXNzYWdlVG9WZXJpZnkgPSBzaG91bGRIYXNoID8gKGhhc2ggfHwgY3JlYXRlSGFzaCgnc2hhMjU2JykpLnVwZGF0ZShtZXNzYWdlKS5kaWdlc3QoKSA6IG1lc3NhZ2U7XG4gICAgcmV0dXJuIEVjZHNhLmN1cnZlLnZlcmlmeShcbiAgICAgIG1lc3NhZ2VUb1ZlcmlmeSxcbiAgICAgIEJ1ZmZlci5jb25jYXQoW1xuICAgICAgICBCdWZmZXIuZnJvbShbc2lnbmF0dXJlWydyZWNpZCddXSksXG4gICAgICAgIGJpZ0ludFRvQnVmZmVyQkUoaGV4VG9CaWdJbnQoc2lnbmF0dXJlWydyJ10pLCAzMiksXG4gICAgICAgIGJpZ0ludFRvQnVmZmVyQkUoaGV4VG9CaWdJbnQoc2lnbmF0dXJlWydzJ10pLCAzMiksXG4gICAgICBdKSxcbiAgICAgIGhleFRvQmlnSW50KHNpZ25hdHVyZVsneSddKVxuICAgICk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
export interface PShare {
|
|
2
2
|
i: number;
|
|
3
|
+
t?: number;
|
|
4
|
+
c?: number;
|
|
3
5
|
l: string;
|
|
4
6
|
m: string;
|
|
5
7
|
u: string;
|
|
@@ -39,6 +41,10 @@ export interface KeyCombined {
|
|
|
39
41
|
xShare: XShare;
|
|
40
42
|
yShares: Record<number, YShare>;
|
|
41
43
|
}
|
|
44
|
+
export interface SubkeyShare {
|
|
45
|
+
xShare: XShare;
|
|
46
|
+
nShares: Record<number, NShare>;
|
|
47
|
+
}
|
|
42
48
|
export interface WShare {
|
|
43
49
|
i: number;
|
|
44
50
|
l: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../src/account-lib/mpc/tss/ecdsa/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../src/account-lib/mpc/tss/ecdsa/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYWNjb3VudC1saWIvbXBjL3Rzcy9lY2RzYS90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLy8gUHJpdmF0ZSBzaGFyZSBvZiB0aGUgdXNlciBnZW5lcmF0ZWQgZHVyaW5nIGtleSBnZW5lcmF0aW9uXG5leHBvcnQgaW50ZXJmYWNlIFBTaGFyZSB7XG4gIGk6IG51bWJlcjsgLy8gcGFydGljaXBhbnQgaW5kZXhcbiAgdD86IG51bWJlcjsgLy8gdGhyZXNob2xkXG4gIGM/OiBudW1iZXI7IC8vIG51bWJlciBvZiBzaGFyZXNcbiAgbDogc3RyaW5nOyAvLyBsYW1iZGEgdmFsdWUgZm9yIHBhaWxsaWVyIHNlY3JldCBrZXlcbiAgbTogc3RyaW5nOyAvLyBtdSB2YWx1ZSBmb3IgcGFpbGxpZXIgc2VjcmV0IGtleVxuICB1OiBzdHJpbmc7IC8vIHNoYW1pciBzaGFyZSBvZiBzZWNyZXRcbiAgdXU6IHN0cmluZzsgLy8gdW5zcGxpdCBzaGFtaXIgc2hhcmUgb2Ygc2VjcmV0XG4gIG46IHN0cmluZzsgLy8gbiA9PiAocCAuIHEpIHdoZXJlIHAgYW5kIHEgYXJlIHRoZSB0d28gcmFuZG9tIHByaW1lIG51bWJlcnMgY2hvc2VuIGZvciBwYWlsbGllciBlbmNyeXB0aW9uXG4gIHk6IHN0cmluZztcbiAgY2hhaW5jb2RlOiBzdHJpbmc7XG59XG5cbi8vIE5TaGFyZXMgd2hpY2ggaXMgc2hhcmVkIHRvIHRoZSBvdGhlciBwYXJ0aWNpcGFudHMgZHVyaW5nIGtleSBnZW5lcmF0aW9uXG5leHBvcnQgaW50ZXJmYWNlIE5TaGFyZSB7XG4gIGk6IG51bWJlcjsgLy8gcGFydGljaXBhbnQgaW5kZXhcbiAgajogbnVtYmVyOyAvLyB0YXJnZXQgcGFydGljaXBhbnQgaW5kZXhcbiAgbjogc3RyaW5nO1xuICB1OiBzdHJpbmc7IC8vIHNoYW1pciBzaGFyZSBvZiBzZWNyZXQgYXQgaid0aCBpbmRleFxuICB5OiBzdHJpbmc7XG4gIHY/OiBzdHJpbmc7XG4gIGNoYWluY29kZTogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBLZXlTaGFyZSA9IHtcbiAgcFNoYXJlOiBQU2hhcmU7XG4gIG5TaGFyZXM6IFJlY29yZDxudW1iZXIsIE5TaGFyZT47XG59O1xuXG4vLyBQcml2YXRlIFhTaGFyZSBvZiB0aGUgY3VycmVudCBwYXJ0aWNpcGFudFxuZXhwb3J0IGludGVyZmFjZSBYU2hhcmUge1xuICBpOiBudW1iZXI7XG4gIGw6IHN0cmluZztcbiAgbTogc3RyaW5nO1xuICBuOiBzdHJpbmc7XG4gIHk6IHN0cmluZzsgLy8gY29tYmluZWQgcHVibGljIGtleVxuICB4OiBzdHJpbmc7IC8vIGNvbWJpbmVkIHNlY3JldFxuICBjaGFpbmNvZGU6IHN0cmluZztcbn1cblxuLy8gWVNoYXJlcyB1c2VkIGR1cmluZyBzaWduYXR1cmUgZ2VuZXJhdGlvblxuZXhwb3J0IGludGVyZmFjZSBZU2hhcmUge1xuICBpOiBudW1iZXI7XG4gIGo6IG51bWJlcjtcbiAgbjogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEtleUNvbWJpbmVkIHtcbiAgeFNoYXJlOiBYU2hhcmU7XG4gIHlTaGFyZXM6IFJlY29yZDxudW1iZXIsIFlTaGFyZT47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3Via2V5U2hhcmUge1xuICB4U2hhcmU6IFhTaGFyZTtcbiAgblNoYXJlczogUmVjb3JkPG51bWJlciwgTlNoYXJlPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBXU2hhcmUge1xuICBpOiBudW1iZXI7XG4gIGw6IHN0cmluZztcbiAgbTogc3RyaW5nO1xuICBuOiBzdHJpbmc7XG4gIHk6IHN0cmluZzsgLy8gY29tYmluZWQgcHVibGljIGtleVxuICBrOiBzdHJpbmc7XG4gIHc6IHN0cmluZztcbiAgZ2FtbWE6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBLU2hhcmUge1xuICBpOiBudW1iZXI7XG4gIGo6IG51bWJlcjtcbiAgbjogc3RyaW5nO1xuICBrOiBzdHJpbmc7XG59XG5leHBvcnQgaW50ZXJmYWNlIFNpZ25TaGFyZVJUIHtcbiAgd1NoYXJlOiBXU2hhcmU7XG4gIGtTaGFyZTogS1NoYXJlO1xufVxuXG4vLyBBbHBoYSBTaGFyZVxuZXhwb3J0IGludGVyZmFjZSBBU2hhcmUge1xuICBpOiBudW1iZXI7XG4gIGo6IG51bWJlcjtcbiAgbj86IHN0cmluZztcbiAgaz86IHN0cmluZztcbiAgYWxwaGE/OiBzdHJpbmc7XG4gIG11Pzogc3RyaW5nO1xufVxuXG4vLyBCZXRhIFNoYXJlXG5leHBvcnQgaW50ZXJmYWNlIEJTaGFyZSBleHRlbmRzIFdTaGFyZSB7XG4gIGdhbW1hOiBzdHJpbmc7XG4gIGJldGE6IHN0cmluZztcbiAgbnU6IHN0cmluZztcbn1cblxuLy8gTXUgU2hhcmVcbmV4cG9ydCBpbnRlcmZhY2UgTVVTaGFyZSB7XG4gIGk6IG51bWJlcjtcbiAgajogbnVtYmVyO1xuICBhbHBoYTogc3RyaW5nO1xuICBtdTogc3RyaW5nO1xufVxuXG4vLyBHYW1tYSBTaGFyZVxuZXhwb3J0IGludGVyZmFjZSBHU2hhcmUge1xuICBpOiBudW1iZXI7XG4gIGw/OiBzdHJpbmc7XG4gIG0/OiBzdHJpbmc7XG4gIG46IHN0cmluZztcbiAgeTogc3RyaW5nOyAvLyBjb21iaW5lZCBwdWJsaWMga2V5XG4gIGs6IHN0cmluZztcbiAgdzogc3RyaW5nO1xuICBnYW1tYTogc3RyaW5nO1xuICBhbHBoYTogc3RyaW5nO1xuICBtdTogc3RyaW5nO1xuICBiZXRhOiBzdHJpbmc7XG4gIG51OiBzdHJpbmc7XG59XG5leHBvcnQgaW50ZXJmYWNlIFNpZ25Db252ZXJ0IHtcbiAgeFNoYXJlPzogWFNoYXJlOyAvLyBYU2hhcmUgb2YgdGhlIGN1cnJlbnQgcGFydGljaXBhbnRcbiAgeVNoYXJlPzogWVNoYXJlOyAvLyBZU2hhcmUgY29ycmVzcG9uZGluZyB0byB0aGUgb3RoZXIgcGFydGljaXBhbnRcbiAga1NoYXJlPzogS1NoYXJlOyAvLyBLU2hhcmUgcmVjZWl2ZWQgZnJvbSB0aGUgb3RoZXIgcGFydGljaXBhbnRcbiAgYlNoYXJlPzogQlNoYXJlOyAvLyBQcml2YXRlIEJldGEgc2hhcmUgb2YgdGhlIHBhcnRpY2lwYW50XG4gIG11U2hhcmU/OiBNVVNoYXJlOyAvLyBtdVNoYXJlIHJlY2VpdmVkIGZyb20gdGhlIG90aGVyIHBhcnRpY2lwYW50XG4gIGFTaGFyZT86IEFTaGFyZTtcbiAgd1NoYXJlPzogV1NoYXJlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNpZ25Db252ZXJ0UlQge1xuICBhU2hhcmU/OiBBU2hhcmU7XG4gIGJTaGFyZT86IEJTaGFyZTtcbiAgbXVTaGFyZT86IE1VU2hhcmU7XG4gIGdTaGFyZT86IEdTaGFyZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPU2hhcmUge1xuICBpOiBudW1iZXI7XG4gIHk6IHN0cmluZztcbiAgazogc3RyaW5nO1xuICBvbWljcm9uOiBzdHJpbmc7XG4gIGRlbHRhOiBzdHJpbmc7XG4gIEdhbW1hOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRFNoYXJlIHtcbiAgaTogbnVtYmVyO1xuICBqOiBudW1iZXI7XG4gIGRlbHRhOiBzdHJpbmc7XG4gIEdhbW1hOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU1NoYXJlIHtcbiAgaTogbnVtYmVyO1xuICBSOiBzdHJpbmc7XG4gIHM6IHN0cmluZztcbiAgeTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNpZ25Db21iaW5lIHtcbiAgZ1NoYXJlOiBHU2hhcmU7XG4gIHNpZ25JbmRleDoge1xuICAgIGk6IG51bWJlcjtcbiAgICBqOiBudW1iZXI7XG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2lnbkNvbWJpbmVSVCB7XG4gIG9TaGFyZTogT1NoYXJlO1xuICBkU2hhcmU6IERTaGFyZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTaWduYXR1cmUge1xuICB5OiBzdHJpbmc7XG4gIHJlY2lkOiBudW1iZXI7XG4gIHI6IHN0cmluZztcbiAgczogc3RyaW5nO1xufVxuIl19
|
|
@@ -289,4 +289,4 @@ exports.default = Eddsa;
|
|
|
289
289
|
Eddsa.curve = new curves_1.Ed25519Curve();
|
|
290
290
|
Eddsa.shamir = new shamir_1.default(Eddsa.curve);
|
|
291
291
|
Eddsa.initialized = false;
|
|
292
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRkc2EuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYWNjb3VudC1saWIvbXBjL3Rzcy9lZGRzYS9lZGRzYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E4Qkc7QUFDSCxtQ0FBaUQ7QUFDakQseUNBQTRDO0FBQzVDLDBEQUFrQztBQUVsQyxxQ0FBK0c7QUFnQi9HLFFBQVE7QUFDUixNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsc0VBQXNFLENBQUMsQ0FBQztBQUU1RixNQUFxQixLQUFLO0lBZ0J4QixZQUFZLE1BQWU7UUFDekIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7SUFDdkIsQ0FBQztJQWJELE1BQU0sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLE1BQWU7UUFDckMsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUU7WUFDdEIsTUFBTSxxQkFBWSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2hDLEtBQUssQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1NBQzFCO1FBRUQsT0FBTyxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBUUQsUUFBUSxDQUFDLEtBQWEsRUFBRSxTQUFpQixFQUFFLFNBQWlCLEVBQUUsSUFBYTtRQUN6RSxJQUFJLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxJQUFJLEtBQUssSUFBSSxTQUFTLENBQUMsRUFBRTtZQUN0QyxNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7U0FDNUM7UUFDRCxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLEVBQUUsRUFBRTtZQUM5QixNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUM7U0FDN0M7UUFDRCxNQUFNLFNBQVMsR0FBRyxJQUFJLGFBQUosSUFBSSxjQUFKLElBQUksR0FBSSxv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Q0FBQyxDQUFDO1FBQzVHLE9BQU8sS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUMvRCxDQUFDOztBQTFTSCx3QkEyU0M7QUExU1EsV0FBSyxHQUFpQixJQUFJLHFCQUFZLEVBQUUsQ0FBQztBQUN6QyxZQUFNLEdBQVcsSUFBSSxnQkFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN6QyxpQkFBVyxHQUFHLEtBQUssQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogTW9kdWxlIHByb3ZpZGVzIGZ1bmN0aW9ucyBmb3IgTVBDIHVzaW5nIHRocmVzaG9sZCBzaWduYXR1cmUgc2NoZW1lIChUU1MpLiBJdCBjb250YWluc1xuICogZnVuY3Rpb25zIGZvciBrZXkgZ2VuZXJhdGlvbiBhbmQgbWVzc2FnZSBzaWduaW5nIHdpdGggRWREU0EuXG4gKlxuICpcbiAqID09PT09PT09PT09PT09PT09PT09PT1cbiAqIEVkRFNBIEtleSBHZW5lcmF0aW9uXG4gKiA9PT09PT09PT09PT09PT09PT09PT09XG4gKiAxLiBFYWNoIHNpZ25lciBnZW5lcmF0ZXMgdGhlaXIgb3duIGtleSBzaGFyZSwgd2hpY2ggaW52b2x2ZXMgYSBwcml2YXRlIHUtc2hhcmUgYW5kIGEgcHVibGljIHktc2hhcmUuXG4gKiAyLiBTaWduZXJzIGRpc3RyaWJ1dGUgdGhlaXIgeS1zaGFyZSB0byBvdGhlciBzaWduZXJzLlxuICogMy4gQWZ0ZXIgZXhjaGFuZ2luZyB5LXNoYXJlcyB0aGUgbmV4dCBwaGFzZSBpcyB0byBjb21iaW5lIGtleSBzaGFyZXMuIEVhY2ggc2lnbmVyIGNvbWJpbmVzIHRoZWlyIHUtc2hhcmVcbiAqICAgIHdpdGggdGhlIHktc2hhcmVzIHJlY2VpdmVkIGZyb20gb3RoZXIgc2lnbmVycyBpbiBvcmRlciB0byBnZW5lcmF0ZSBhIHAtc2hhcmUgZm9yIHRoZW1zZWx2ZXMuIFdlXG4gKiAgICBhbHNvIHNhdmUgai1zaGFyZXMgZm9yIG90aGVyIHNpZ25lcnMuXG4gKiA0LiBBdCB0aGlzIHBvaW50IHRoZSBwbGF5ZXJzIGRvIG5vdCBkaXN0cmlidXRlIGFueSBzaGFyZXMgYW5kIHRoZSBmaXJzdCBwaGFzZSBvZiB0aGVcbiAqICAgIHNpZ25pbmcgcHJvdG9jb2wgaXMgY29tcGxldGUuXG4gKlxuICogPT09PT09PT09PT09PT09PT09PT09PVxuICogRWREU0EgU2lnbmluZ1xuICogPT09PT09PT09PT09PT09PT09PT09PVxuICogMS4gVGhlIHBhcnRpZXMgZnJvbSBrZXkgZ2VuZXJhdGlvbiBkZWNpZGUgdGhleSB3YW50IHRvIHNpZ24gc29tZXRoaW5nLiBUaGV5IGJlZ2luIHRoZSBzaWduaW5nIHByb3RvY29sXG4gKiAgICBieSBnZW5lcmF0aW5nIHNoYXJlcyBvZiBhbiBlcGhlbWVyYWwga2V5LlxuICpcbiAqICAgIGEpIEVhY2ggc2lnbmVyIHVzZXMgaGlzIHAtc2hhcmUgYW5kIHRoZSBqLXNoYXJlcyBzdG9yZWQgZm9yIG90aGVyIHBsYXllcnMgdG8gZ2VuZXJhdGUgaGlzIHNpZ25pbmcgc2hhcmUuXG4gKiAgICBiKSBUaGlzIHJlc3VsdHMgaW4gZWFjaCBzaWduZXIgaGF2aW5nIGEgcHJpdmF0ZSB4LXNoYXJlIGFuZCBwdWJsaWMgci1zaGFyZXMuXG4gKlxuICogMi4gU2lnbmVycyBkaXN0cmlidXRlIHRoZWlyIHItc2hhcmVzIHRvIG90aGVyIHNpZ25lcnMuXG4gKiAzLiBBZnRlciBleGNoYW5naW5nIHItc2hhcmVzLCBlYWNoIHNpZ25lciBzaWducyB0aGVpciBzaGFyZSBvZiB0aGUgZXBoZW1lcmFsIGtleSB1c2luZyB0aGVpciBwcml2YXRlXG4gKiAgICB4LXNoYXJlIHdpdGggdGhlIHItc2hhcmVzIGZyb20gb3RoZXIgc2lnbmVycy5cbiAqIDQuIFRoaXMgcmVzdWx0cyBpbiBlYWNoIHNpZ25lciBoYXZpbmcgYSBwdWJsaWMgZy1zaGFyZSB3aGljaCB0aGV5IHNlbmQgdG8gdGhlIG90aGVyIHNpZ25lcnMuXG4gKiA1LiBBZnRlciB0aGUgc2lnbmVycyBicm9hZGNhc3QgdGhlaXIgZy1zaGFyZXMsIHRoZSBmaW5hbCBzaWduYXR1cmUgY2FuIGJlIHJlLWNvbnN0cnVjdGVkIGluZGVwZW5kZW50bHkuXG4gKi9cbmltcG9ydCB7IHJhbmRvbUJ5dGVzLCBjcmVhdGVIYXNoIH0gZnJvbSAnY3J5cHRvJztcbmltcG9ydCB7IEVkMjU1MTlDdXJ2ZSB9IGZyb20gJy4uLy4uL2N1cnZlcyc7XG5pbXBvcnQgU2hhbWlyIGZyb20gJy4uLy4uL3NoYW1pcic7XG5pbXBvcnQgSERUcmVlIGZyb20gJy4uLy4uL2hkVHJlZSc7XG5pbXBvcnQgeyBiaWdJbnRGcm9tQnVmZmVyTEUsIGJpZ0ludFRvQnVmZmVyTEUsIGJpZ0ludEZyb21CdWZmZXJCRSwgYmlnSW50VG9CdWZmZXJCRSwgY2xhbXAgfSBmcm9tICcuLi8uLi91dGlsJztcbmltcG9ydCB7XG4gIEtleVNoYXJlLFxuICBVU2hhcmUsXG4gIFlTaGFyZSxcbiAgS2V5Q29tYmluZSxcbiAgUFNoYXJlLFxuICBTdWJrZXlTaGFyZSxcbiAgSlNoYXJlLFxuICBTaWduU2hhcmUsXG4gIFNpZ25hdHVyZSxcbiAgWFNoYXJlLFxuICBSU2hhcmUsXG4gIEdTaGFyZSxcbn0gZnJvbSAnLi90eXBlcyc7XG5cbi8vIDJeMjU2XG5jb25zdCBiYXNlID0gQmlnSW50KCcweDAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcpO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFZGRzYSB7XG4gIHN0YXRpYyBjdXJ2ZTogRWQyNTUxOUN1cnZlID0gbmV3IEVkMjU1MTlDdXJ2ZSgpO1xuICBzdGF0aWMgc2hhbWlyOiBTaGFtaXIgPSBuZXcgU2hhbWlyKEVkZHNhLmN1cnZlKTtcbiAgc3RhdGljIGluaXRpYWxpemVkID0gZmFsc2U7XG5cbiAgc3RhdGljIGFzeW5jIGluaXRpYWxpemUoaGRUcmVlPzogSERUcmVlKTogUHJvbWlzZTxFZGRzYT4ge1xuICAgIGlmICghRWRkc2EuaW5pdGlhbGl6ZWQpIHtcbiAgICAgIGF3YWl0IEVkMjU1MTlDdXJ2ZS5pbml0aWFsaXplKCk7XG4gICAgICBFZGRzYS5pbml0aWFsaXplZCA9IHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBFZGRzYShoZFRyZWUpO1xuICB9XG5cbiAgaGRUcmVlPzogSERUcmVlO1xuXG4gIGNvbnN0cnVjdG9yKGhkVHJlZT86IEhEVHJlZSkge1xuICAgIHRoaXMuaGRUcmVlID0gaGRUcmVlO1xuICB9XG5cbiAga2V5U2hhcmUoaW5kZXg6IG51bWJlciwgdGhyZXNob2xkOiBudW1iZXIsIG51bVNoYXJlczogbnVtYmVyLCBzZWVkPzogQnVmZmVyKTogS2V5U2hhcmUge1xuICAgIGlmICghKGluZGV4ID4gMCAmJiBpbmRleCA8PSBudW1TaGFyZXMpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgS2V5U2hhcmUgY29uZmlnJyk7XG4gICAgfVxuICAgIGlmIChzZWVkICYmIHNlZWQubGVuZ3RoICE9PSA2NCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdTZWVkIG11c3QgaGF2ZSBsZW5ndGggNjQnKTtcbiAgICB9XG4gICAgY29uc3Qgc2VlZGNoYWluID0gc2VlZCA/PyByYW5kb21CeXRlcyg2NCk7XG4gICAgY29uc3QgYWN0dWFsU2VlZCA9IHNlZWRjaGFpbi5zbGljZSgwLCAzMik7XG4gICAgY29uc3QgY2hhaW5jb2RlID0gc2VlZGNoYWluLnNsaWNlKDMyKTtcbiAgICBjb25zdCBoID0gY3JlYXRlSGFzaCgnc2hhNTEyJykudXBkYXRlKGFjdHVhbFNlZWQpLmRpZ2VzdCgpO1xuICAgIGNvbnN0IHUgPSBjbGFtcChiaWdJbnRGcm9tQnVmZmVyTEUoaC5zbGljZSgwLCAzMikpKTtcbiAgICBjb25zdCB5ID0gRWRkc2EuY3VydmUuYmFzZVBvaW50TXVsdCh1KTtcbiAgICBjb25zdCB7IHNoYXJlczogc3BsaXRfdSwgdiB9ID0gRWRkc2Euc2hhbWlyLnNwbGl0KHUsIHRocmVzaG9sZCwgbnVtU2hhcmVzKTtcblxuICAgIGNvbnN0IFBfaTogVVNoYXJlID0ge1xuICAgICAgaTogaW5kZXgsXG4gICAgICB0OiB0aHJlc2hvbGQsXG4gICAgICBuOiBudW1TaGFyZXMsXG4gICAgICB5OiBiaWdJbnRUb0J1ZmZlckxFKHksIDMyKS50b1N0cmluZygnaGV4JyksXG4gICAgICBzZWVkOiBhY3R1YWxTZWVkLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgIGNoYWluY29kZTogY2hhaW5jb2RlLnRvU3RyaW5nKCdoZXgnKSxcbiAgICB9O1xuICAgIGNvbnN0IHNoYXJlczogS2V5U2hhcmUgPSB7XG4gICAgICB1U2hhcmU6IFBfaSxcbiAgICAgIHlTaGFyZXM6IHt9LFxuICAgIH07XG5cbiAgICBmb3IgKGNvbnN0IGluZCBpbiBzcGxpdF91KSB7XG4gICAgICBjb25zdCBpID0gcGFyc2VJbnQoaW5kLCAxMCk7XG4gICAgICBpZiAoaSA9PT0gaW5kZXgpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBzaGFyZXMueVNoYXJlc1tpXSA9IHtcbiAgICAgICAgaSxcbiAgICAgICAgajogUF9pLmksXG4gICAgICAgIHk6IGJpZ0ludFRvQnVmZmVyTEUoeSwgMzIpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgICAgdjogYmlnSW50VG9CdWZmZXJMRSh2WzBdLCAzMikudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgICB1OiBiaWdJbnRUb0J1ZmZlckxFKHNwbGl0X3VbaW5kXSwgMzIpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgICAgY2hhaW5jb2RlOiBjaGFpbmNvZGUudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHNoYXJlcztcbiAgfVxuXG4gIGtleUNvbWJpbmUodVNoYXJlOiBVU2hhcmUsIHlTaGFyZXM6IFlTaGFyZVtdKTogS2V5Q29tYmluZSB7XG4gICAgY29uc3QgaCA9IGNyZWF0ZUhhc2goJ3NoYTUxMicpLnVwZGF0ZShCdWZmZXIuZnJvbSh1U2hhcmUuc2VlZCwgJ2hleCcpKS5kaWdlc3QoKTtcbiAgICBjb25zdCB1ID0gY2xhbXAoYmlnSW50RnJvbUJ1ZmZlckxFKGguc2xpY2UoMCwgMzIpKSk7XG4gICAgY29uc3QgeVZhbHVlcyA9IFt1U2hhcmUsIC4uLnlTaGFyZXNdLm1hcCgoc2hhcmUpID0+IGJpZ0ludEZyb21CdWZmZXJMRShCdWZmZXIuZnJvbShzaGFyZS55LCAnaGV4JykpKTtcbiAgICBjb25zdCB5ID0geVZhbHVlcy5yZWR1Y2UoKHBhcnRpYWwsIHNoYXJlKSA9PiBFZGRzYS5jdXJ2ZS5wb2ludEFkZChwYXJ0aWFsLCBzaGFyZSkpO1xuICAgIGNvbnN0IGNoYWluY29kZXMgPSBbdVNoYXJlLCAuLi55U2hhcmVzXS5tYXAoKHsgY2hhaW5jb2RlIH0pID0+IGJpZ0ludEZyb21CdWZmZXJCRShCdWZmZXIuZnJvbShjaGFpbmNvZGUsICdoZXgnKSkpO1xuICAgIGNvbnN0IGNoYWluY29kZSA9IGNoYWluY29kZXMucmVkdWNlKChhY2MsIGNoYWluY29kZSkgPT4gKGFjYyArIGNoYWluY29kZSkgJSBiYXNlKTtcblxuICAgIC8vIFZlcmlmeSBzaGFyZXMuXG4gICAgZm9yIChjb25zdCBzaGFyZSBvZiB5U2hhcmVzKSB7XG4gICAgICBpZiAoJ3YnIGluIHNoYXJlKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgRWRkc2Euc2hhbWlyLnZlcmlmeShcbiAgICAgICAgICAgIGJpZ0ludEZyb21CdWZmZXJMRShCdWZmZXIuZnJvbShzaGFyZS51LCAnaGV4JykpLFxuICAgICAgICAgICAgW2JpZ0ludEZyb21CdWZmZXJMRShCdWZmZXIuZnJvbShzaGFyZS55LCAnaGV4JykpLCBiaWdJbnRGcm9tQnVmZmVyTEUoQnVmZmVyLmZyb20oc2hhcmUudiEsICdoZXgnKSldLFxuICAgICAgICAgICAgdVNoYXJlLmlcbiAgICAgICAgICApO1xuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAvLyBUT0RPKEJHLTYxMDM2KTogRml4IFZlcmlmaWNhdGlvblxuICAgICAgICAgIC8vIHRocm93IG5ldyBFcnJvcihgQ291bGQgbm90IHZlcmlmeSBzaGFyZSBmcm9tIHBhcnRpY2lwYW50ICR7c2hhcmUuan0uIFZlcmlmaWNhdGlvbiBlcnJvcjogJHtlcnJ9YCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBQX2k6IFBTaGFyZSA9IHtcbiAgICAgIGk6IHVTaGFyZS5pLFxuICAgICAgdDogdVNoYXJlLnQsXG4gICAgICBuOiB1U2hhcmUubixcbiAgICAgIHk6IGJpZ0ludFRvQnVmZmVyTEUoeSwgMzIpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgIHU6IGJpZ0ludFRvQnVmZmVyTEUodSwgMzIpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgIHByZWZpeDogaC5zbGljZSgzMikudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgY2hhaW5jb2RlOiBiaWdJbnRUb0J1ZmZlckJFKGNoYWluY29kZSwgMzIpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICB9O1xuICAgIGNvbnN0IHBsYXllcnM6IEtleUNvbWJpbmUgPSB7XG4gICAgICBwU2hhcmU6IFBfaSxcbiAgICAgIGpTaGFyZXM6IHt9LFxuICAgIH07XG5cbiAgICBmb3IgKGxldCBpbmQgPSAwOyBpbmQgPCB5U2hhcmVzLmxlbmd0aDsgaW5kKyspIHtcbiAgICAgIGNvbnN0IFBfaiA9IHlTaGFyZXNbaW5kXTtcbiAgICAgIHBsYXllcnMualNoYXJlc1tQX2oual0gPSB7XG4gICAgICAgIGk6IFBfai5qLFxuICAgICAgICBqOiBQX2kuaSxcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBwbGF5ZXJzO1xuICB9XG5cbiAgLyoqXG4gICAqIERlcml2ZXMgYSBjaGlsZCBjb21tb24ga2V5Y2hhaW4gZnJvbSBjb21tb24ga2V5Y2hhaW5cbiAgICpcbiAgICogQHBhcmFtIGNvbW1vbktleWNoYWluIC0gY29tbW9uIGtleWNoYWluIGFzIGEgaGV4IHN0cmluZ1xuICAgKiBAcGFyYW0gcGF0aCAtIGJpcDMyIHBhdGhcbiAgICogQHJldHVybiB7c3RyaW5nfSBkZXJpdmVkIGNvbW1vbiBrZXljaGFpbiBhcyBhIGhleCBzdHJpbmdcbiAgICovXG4gIGRlcml2ZVVuaGFyZGVuZWQoY29tbW9uS2V5Y2hhaW46IHN0cmluZywgcGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5oZFRyZWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ2FuJ3QgZGVyaXZlIGtleSB3aXRob3V0IEhEVHJlZSBpbXBsZW1lbnRhdGlvblwiKTtcbiAgICB9XG5cbiAgICBjb25zdCBrZXljaGFpbiA9IEJ1ZmZlci5mcm9tKGNvbW1vbktleWNoYWluLCAnaGV4Jyk7XG5cbiAgICBjb25zdCBkZXJpdmVkUHVibGljS2V5Y2hhaW4gPSB0aGlzLmhkVHJlZS5wdWJsaWNEZXJpdmUoXG4gICAgICB7XG4gICAgICAgIHBrOiBiaWdJbnRGcm9tQnVmZmVyTEUoa2V5Y2hhaW4uc2xpY2UoMCwgMzIpKSxcbiAgICAgICAgY2hhaW5jb2RlOiBiaWdJbnRGcm9tQnVmZmVyQkUoa2V5Y2hhaW4uc2xpY2UoMzIpKSxcbiAgICAgIH0sXG4gICAgICBwYXRoXG4gICAgKTtcblxuICAgIGNvbnN0IGRlcml2ZWRQayA9IGJpZ0ludFRvQnVmZmVyTEUoZGVyaXZlZFB1YmxpY0tleWNoYWluLnBrLCAzMikudG9TdHJpbmcoJ2hleCcpO1xuICAgIGNvbnN0IGRlcml2ZWRDaGFpbmNvZGUgPSBiaWdJbnRUb0J1ZmZlckJFKGRlcml2ZWRQdWJsaWNLZXljaGFpbi5jaGFpbmNvZGUsIDMyKS50b1N0cmluZygnaGV4Jyk7XG5cbiAgICByZXR1cm4gZGVyaXZlZFBrICsgZGVyaXZlZENoYWluY29kZTtcbiAgfVxuXG4gIGtleURlcml2ZSh1U2hhcmU6IFVTaGFyZSwgeVNoYXJlczogWVNoYXJlW10sIHBhdGg6IHN0cmluZyk6IFN1YmtleVNoYXJlIHtcbiAgICBpZiAodGhpcy5oZFRyZWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ2FuJ3QgZGVyaXZlIGtleSB3aXRob3V0IEhEVHJlZSBpbXBsZW1lbnRhdGlvblwiKTtcbiAgICB9XG4gICAgY29uc3QgaCA9IGNyZWF0ZUhhc2goJ3NoYTUxMicpLnVwZGF0ZShCdWZmZXIuZnJvbSh1U2hhcmUuc2VlZCwgJ2hleCcpKS5kaWdlc3QoKTtcbiAgICBjb25zdCB5VmFsdWVzID0gW3VTaGFyZSwgLi4ueVNoYXJlc10ubWFwKChzaGFyZSkgPT4gYmlnSW50RnJvbUJ1ZmZlckxFKEJ1ZmZlci5mcm9tKHNoYXJlLnksICdoZXgnKSkpO1xuICAgIGNvbnN0IHkgPSB5VmFsdWVzLnJlZHVjZSgocGFydGlhbCwgc2hhcmUpID0+IEVkZHNhLmN1cnZlLnBvaW50QWRkKHBhcnRpYWwsIHNoYXJlKSk7XG4gICAgY29uc3QgdSA9IGNsYW1wKGJpZ0ludEZyb21CdWZmZXJMRShoLnNsaWNlKDAsIDMyKSkpO1xuICAgIGNvbnN0IHByZWZpeCA9IGJpZ0ludEZyb21CdWZmZXJCRShoLnNsaWNlKDMyKSk7XG4gICAgbGV0IGNvbnRyaWJDaGFpbmNvZGUgPSBiaWdJbnRGcm9tQnVmZmVyQkUoQnVmZmVyLmZyb20odVNoYXJlLmNoYWluY29kZSwgJ2hleCcpKTtcbiAgICBjb25zdCBjaGFpbmNvZGVzID0gW1xuICAgICAgY29udHJpYkNoYWluY29kZSxcbiAgICAgIC4uLnlTaGFyZXMubWFwKCh7IGNoYWluY29kZSB9KSA9PiBiaWdJbnRGcm9tQnVmZmVyQkUoQnVmZmVyLmZyb20oY2hhaW5jb2RlLCAnaGV4JykpKSxcbiAgICBdO1xuICAgIGNvbnN0IGNoYWluY29kZSA9IGNoYWluY29kZXMucmVkdWNlKChhY2MsIGNoYWluY29kZSkgPT4gKGFjYyArIGNoYWluY29kZSkgJSBiYXNlKTtcblxuICAgIC8vIERlcml2ZSBzdWJrZXkuXG4gICAgY29uc3Qgc3Via2V5ID0gdGhpcy5oZFRyZWUucHJpdmF0ZURlcml2ZSh7IHBrOiB5LCBzazogdSwgcHJlZml4LCBjaGFpbmNvZGUgfSwgcGF0aCk7XG5cbiAgICAvLyBDYWxjdWxhdGUgbmV3IHB1YmxpYyBrZXkgY29udHJpYnV0aW9uLlxuICAgIGNvbnN0IGNvbnRyaWJZID0gRWRkc2EuY3VydmUuYmFzZVBvaW50TXVsdChzdWJrZXkuc2spO1xuXG4gICAgLy8gQ2FsY3VsYXRlIG5ldyBjaGFpbmNvZGUgY29udHJpYnV0aW9uLlxuICAgIGNvbnN0IGNoYWluY29kZURlbHRhID0gKGJhc2UgKyBzdWJrZXkuY2hhaW5jb2RlIC0gY2hhaW5jb2RlKSAlIGJhc2U7XG4gICAgY29udHJpYkNoYWluY29kZSA9IChjb250cmliQ2hhaW5jb2RlICsgY2hhaW5jb2RlRGVsdGEpICUgYmFzZTtcblxuICAgIC8vIENhbGN1bGF0ZSBuZXcgdSB2YWx1ZXMuXG4gICAgY29uc3QgeyBzaGFyZXM6IHNwbGl0X3UsIHYgfSA9IEVkZHNhLnNoYW1pci5zcGxpdChzdWJrZXkuc2ssIHVTaGFyZS50LCB1U2hhcmUubik7XG5cbiAgICBjb25zdCBQX2k6IFBTaGFyZSA9IHtcbiAgICAgIGk6IHVTaGFyZS5pLFxuICAgICAgdDogdVNoYXJlLnQsXG4gICAgICBuOiB1U2hhcmUubixcbiAgICAgIHk6IGJpZ0ludFRvQnVmZmVyTEUoc3Via2V5LnBrLCAzMikudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgdTogYmlnSW50VG9CdWZmZXJMRShzdWJrZXkuc2ssIDMyKS50b1N0cmluZygnaGV4JyksXG4gICAgICBwcmVmaXg6IGJpZ0ludFRvQnVmZmVyQkUoc3Via2V5LnByZWZpeCwgMzIpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgIGNoYWluY29kZTogYmlnSW50VG9CdWZmZXJCRShzdWJrZXkuY2hhaW5jb2RlLCAzMikudG9TdHJpbmcoJ2hleCcpLFxuICAgIH07XG5cbiAgICBjb25zdCBzaGFyZXM6IFN1YmtleVNoYXJlID0ge1xuICAgICAgcFNoYXJlOiBQX2ksXG4gICAgICB5U2hhcmVzOiB7fSxcbiAgICB9O1xuXG4gICAgZm9yIChsZXQgaW5kID0gMDsgaW5kIDwgeVNoYXJlcy5sZW5ndGg7IGluZCsrKSB7XG4gICAgICBjb25zdCBQX2ogPSB5U2hhcmVzW2luZF07XG4gICAgICBzaGFyZXMueVNoYXJlc1tQX2oual0gPSB7XG4gICAgICAgIGk6IFBfai5qLFxuICAgICAgICBqOiBQX2kuaSxcbiAgICAgICAgeTogYmlnSW50VG9CdWZmZXJMRShjb250cmliWSwgMzIpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgICAgdjogYmlnSW50VG9CdWZmZXJMRSh2WzBdLCAzMikudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgICB1OiBiaWdJbnRUb0J1ZmZlckxFKHNwbGl0X3VbUF9qLmpdLCAzMikudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgICBjaGFpbmNvZGU6IGJpZ0ludFRvQnVmZmVyQkUoY29udHJpYkNoYWluY29kZSwgMzIpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHNoYXJlcztcbiAgfVxuXG4gIHNpZ25TaGFyZShtZXNzYWdlOiBCdWZmZXIsIHBTaGFyZTogUFNoYXJlLCBqU2hhcmVzOiBKU2hhcmVbXSwgc2VlZD86IEJ1ZmZlcik6IFNpZ25TaGFyZSB7XG4gICAgaWYgKHNlZWQgJiYgc2VlZC5sZW5ndGggIT09IDY0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1NlZWQgbXVzdCBoYXZlIGxlbmd0aCA2NCcpO1xuICAgIH1cbiAgICBjb25zdCBpbmRpY2VzID0gW3BTaGFyZSwgLi4ualNoYXJlc10ubWFwKCh7IGkgfSkgPT4gaSk7XG4gICAgY29uc3QgeyBzaGFyZXM6IHNwbGl0X3UsIHYgfSA9IEVkZHNhLnNoYW1pci5zcGxpdChcbiAgICAgIGJpZ0ludEZyb21CdWZmZXJMRShCdWZmZXIuZnJvbShwU2hhcmUudSwgJ2hleCcpKSxcbiAgICAgIHBTaGFyZS50LFxuICAgICAgcFNoYXJlLm5cbiAgICApO1xuXG4gICAgLy8gR2VuZXJhdGUgbm9uY2UgY29udHJpYnV0aW9uLlxuICAgIGNvbnN0IHByZWZpeCA9IEJ1ZmZlci5mcm9tKHBTaGFyZS5wcmVmaXgsICdoZXgnKTtcbiAgICBjb25zdCByYW5kb21CdWZmZXIgPSBzZWVkID8/IHJhbmRvbUJ5dGVzKDY0KTtcblxuICAgIGNvbnN0IGRpZ2VzdCA9IGNyZWF0ZUhhc2goJ3NoYTUxMicpXG4gICAgICAudXBkYXRlKEJ1ZmZlci5jb25jYXQoW3ByZWZpeCwgbWVzc2FnZSwgcmFuZG9tQnVmZmVyXSkpXG4gICAgICAuZGlnZXN0KCk7XG5cbiAgICBjb25zdCByID0gRWRkc2EuY3VydmUuc2NhbGFyUmVkdWNlKGJpZ0ludEZyb21CdWZmZXJMRShkaWdlc3QpKTtcbiAgICBjb25zdCBSID0gRWRkc2EuY3VydmUuYmFzZVBvaW50TXVsdChyKTtcbiAgICBjb25zdCB7IHNoYXJlczogc3BsaXRfciB9ID0gRWRkc2Euc2hhbWlyLnNwbGl0KHIsIGluZGljZXMubGVuZ3RoLCBpbmRpY2VzLmxlbmd0aCwgaW5kaWNlcyk7XG5cbiAgICBjb25zdCBQX2k6IFhTaGFyZSA9IHtcbiAgICAgIGk6IHBTaGFyZS5pLFxuICAgICAgeTogcFNoYXJlLnksXG4gICAgICB1OiBiaWdJbnRUb0J1ZmZlckxFKHNwbGl0X3VbcFNoYXJlLmldLCAzMikudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgcjogYmlnSW50VG9CdWZmZXJMRShzcGxpdF9yW3BTaGFyZS5pXSwgMzIpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgIFI6IGJpZ0ludFRvQnVmZmVyTEUoUiwgMzIpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICB9O1xuXG4gICAgY29uc3QgcmVzdWx0U2hhcmVzOiBTaWduU2hhcmUgPSB7XG4gICAgICB4U2hhcmU6IFBfaSxcbiAgICAgIHJTaGFyZXM6IHt9LFxuICAgIH07XG5cbiAgICBmb3IgKGxldCBpbmQgPSAwOyBpbmQgPCBqU2hhcmVzLmxlbmd0aDsgaW5kKyspIHtcbiAgICAgIGNvbnN0IFNfaiA9IGpTaGFyZXNbaW5kXTtcbiAgICAgIHJlc3VsdFNoYXJlcy5yU2hhcmVzW1Nfai5pXSA9IHtcbiAgICAgICAgaTogU19qLmksXG4gICAgICAgIGo6IHBTaGFyZS5pLFxuICAgICAgICB1OiBiaWdJbnRUb0J1ZmZlckxFKHNwbGl0X3VbU19qLmldLCAzMikudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgICB2OiBiaWdJbnRUb0J1ZmZlckxFKHZbMF0sIDMyKS50b1N0cmluZygnaGV4JyksXG4gICAgICAgIHI6IGJpZ0ludFRvQnVmZmVyTEUoc3BsaXRfcltTX2ouaV0sIDMyKS50b1N0cmluZygnaGV4JyksXG4gICAgICAgIFI6IGJpZ0ludFRvQnVmZmVyTEUoUiwgMzIpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiByZXN1bHRTaGFyZXM7XG4gIH1cblxuICBzaWduKG1lc3NhZ2U6IEJ1ZmZlciwgcGxheWVyU2hhcmU6IFhTaGFyZSwgclNoYXJlczogUlNoYXJlW10sIHlTaGFyZXM6IFlTaGFyZVtdID0gW10pOiBHU2hhcmUge1xuICAgIGNvbnN0IFNfaSA9IHBsYXllclNoYXJlO1xuXG4gICAgY29uc3QgdVZhbHVlcyA9IFtwbGF5ZXJTaGFyZSwgLi4uclNoYXJlcywgLi4ueVNoYXJlc10ubWFwKCh7IHUgfSkgPT4gYmlnSW50RnJvbUJ1ZmZlckxFKEJ1ZmZlci5mcm9tKHUsICdoZXgnKSkpO1xuICAgIGNvbnN0IHggPSB1VmFsdWVzLnJlZHVjZSgoYWNjLCB1KSA9PiBFZGRzYS5jdXJ2ZS5zY2FsYXJBZGQoYWNjLCB1KSk7XG5cbiAgICBjb25zdCBSVmFsdWVzID0gW3BsYXllclNoYXJlLCAuLi5yU2hhcmVzXS5tYXAoKHsgUiB9KSA9PiBiaWdJbnRGcm9tQnVmZmVyTEUoQnVmZmVyLmZyb20oUiwgJ2hleCcpKSk7XG4gICAgY29uc3QgUiA9IFJWYWx1ZXMucmVkdWNlKChwYXJ0aWFsLCBzaGFyZSkgPT4gRWRkc2EuY3VydmUucG9pbnRBZGQocGFydGlhbCwgc2hhcmUpKTtcblxuICAgIGNvbnN0IHJWYWx1ZXMgPSBbcGxheWVyU2hhcmUsIC4uLnJTaGFyZXNdLm1hcCgoeyByIH0pID0+IGJpZ0ludEZyb21CdWZmZXJMRShCdWZmZXIuZnJvbShyLCAnaGV4JykpKTtcbiAgICBjb25zdCByID0gclZhbHVlcy5yZWR1Y2UoKHBhcnRpYWwsIHNoYXJlKSA9PiBFZGRzYS5jdXJ2ZS5zY2FsYXJBZGQocGFydGlhbCwgc2hhcmUpKTtcblxuICAgIGNvbnN0IGNvbWJpbmVkQnVmZmVyID0gQnVmZmVyLmNvbmNhdChbYmlnSW50VG9CdWZmZXJMRShSLCAzMiksIEJ1ZmZlci5mcm9tKFNfaS55LCAnaGV4JyksIG1lc3NhZ2VdKTtcbiAgICBjb25zdCBkaWdlc3QgPSBjcmVhdGVIYXNoKCdzaGE1MTInKS51cGRhdGUoY29tYmluZWRCdWZmZXIpLmRpZ2VzdCgpO1xuICAgIGNvbnN0IGsgPSBFZGRzYS5jdXJ2ZS5zY2FsYXJSZWR1Y2UoYmlnSW50RnJvbUJ1ZmZlckxFKGRpZ2VzdCkpO1xuXG4gICAgY29uc3QgZ2FtbWEgPSBFZGRzYS5jdXJ2ZS5zY2FsYXJBZGQociwgRWRkc2EuY3VydmUuc2NhbGFyTXVsdChrLCB4KSk7XG4gICAgY29uc3QgcmVzdWx0ID0ge1xuICAgICAgaTogcGxheWVyU2hhcmUuaSxcbiAgICAgIHk6IHBsYXllclNoYXJlLnksXG4gICAgICBnYW1tYTogYmlnSW50VG9CdWZmZXJMRShnYW1tYSwgMzIpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgIFI6IGJpZ0ludFRvQnVmZmVyTEUoUiwgMzIpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICB9O1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBzaWduQ29tYmluZShzaGFyZXM6IEdTaGFyZVtdKTogU2lnbmF0dXJlIHtcbiAgICBjb25zdCB5ID0gc2hhcmVzWzBdLnk7XG4gICAgY29uc3QgUiA9IHNoYXJlc1swXS5SO1xuXG4gICAgY29uc3QgcmVzdWx0U2hhcmVzID0ge307XG4gICAgZm9yIChjb25zdCBpbmQgaW4gc2hhcmVzKSB7XG4gICAgICBjb25zdCBTX2kgPSBzaGFyZXNbaW5kXTtcbiAgICAgIHJlc3VsdFNoYXJlc1tTX2kuaV0gPSBiaWdJbnRGcm9tQnVmZmVyTEUoQnVmZmVyLmZyb20oU19pLmdhbW1hLCAnaGV4JykpO1xuICAgIH1cbiAgICBjb25zdCBzaWdtYTogYmlnaW50ID0gRWRkc2Euc2hhbWlyLmNvbWJpbmUocmVzdWx0U2hhcmVzKTtcbiAgICBjb25zdCByZXN1bHQgPSB7XG4gICAgICB5LFxuICAgICAgUixcbiAgICAgIHNpZ21hOiBiaWdJbnRUb0J1ZmZlckxFKHNpZ21hLCAzMikudG9TdHJpbmcoJ2hleCcpLFxuICAgIH07XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHZlcmlmeShtZXNzYWdlOiBCdWZmZXIsIHNpZ25hdHVyZTogU2lnbmF0dXJlKTogYm9vbGVhbiB7XG4gICAgY29uc3QgcHVibGljS2V5ID0gYmlnSW50RnJvbUJ1ZmZlckxFKEJ1ZmZlci5mcm9tKHNpZ25hdHVyZS55LCAnaGV4JykpO1xuICAgIGNvbnN0IHNpZ25lZE1lc3NhZ2UgPSBCdWZmZXIuY29uY2F0KFtCdWZmZXIuZnJvbShzaWduYXR1cmUuUiwgJ2hleCcpLCBCdWZmZXIuZnJvbShzaWduYXR1cmUuc2lnbWEsICdoZXgnKV0pO1xuICAgIHJldHVybiBFZGRzYS5jdXJ2ZS52ZXJpZnkobWVzc2FnZSwgc2lnbmVkTWVzc2FnZSwgcHVibGljS2V5KTtcbiAgfVxufVxuIl19
|
|
292
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRkc2EuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYWNjb3VudC1saWIvbXBjL3Rzcy9lZGRzYS9lZGRzYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E4Qkc7QUFDSCxtQ0FBaUQ7QUFDakQseUNBQTRDO0FBQzVDLDBEQUFrQztBQUVsQyxxQ0FBK0c7QUFnQi9HLFFBQVE7QUFDUixNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsc0VBQXNFLENBQUMsQ0FBQztBQUU1RixNQUFxQixLQUFLO0lBZ0J4QixZQUFZLE1BQWU7UUFDekIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7SUFDdkIsQ0FBQztJQWJELE1BQU0sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLE1BQWU7UUFDckMsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUU7WUFDdEIsTUFBTSxxQkFBWSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2hDLEtBQUssQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1NBQzFCO1FBRUQsT0FBTyxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBUUQsUUFBUSxDQUFDLEtBQWEsRUFBRSxTQUFpQixFQUFFLFNBQWlCLEVBQUUsSUFBYTtRQUN6RSxJQUFJLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxJQUFJLEtBQUssSUFBSSxTQUFTLENBQUMsRUFBRTtZQUN0QyxNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7U0FDNUM7UUFDRCxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLEVBQUUsRUFBRTtZQUM5QixNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUM7U0FDN0M7UUFDRCxNQUFNLFNBQVMsR0FBRyxJQUFJLGFBQUosSUFBSSxjQUFKLElBQUksR0FBSSxv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Q0FBQyxDQUFDO1FBQzVHLE9BQU8sS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUMvRCxDQUFDOztBQTFTSCx3QkEyU0M7QUExU1EsV0FBSyxHQUFpQixJQUFJLHFCQUFZLEVBQUUsQ0FBQztBQUN6QyxZQUFNLEdBQVcsSUFBSSxnQkFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN6QyxpQkFBVyxHQUFHLEtBQUssQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogTW9kdWxlIHByb3ZpZGVzIGZ1bmN0aW9ucyBmb3IgTVBDIHVzaW5nIHRocmVzaG9sZCBzaWduYXR1cmUgc2NoZW1lIChUU1MpLiBJdCBjb250YWluc1xuICogZnVuY3Rpb25zIGZvciBrZXkgZ2VuZXJhdGlvbiBhbmQgbWVzc2FnZSBzaWduaW5nIHdpdGggRWREU0EuXG4gKlxuICpcbiAqID09PT09PT09PT09PT09PT09PT09PT1cbiAqIEVkRFNBIEtleSBHZW5lcmF0aW9uXG4gKiA9PT09PT09PT09PT09PT09PT09PT09XG4gKiAxLiBFYWNoIHNpZ25lciBnZW5lcmF0ZXMgdGhlaXIgb3duIGtleSBzaGFyZSwgd2hpY2ggaW52b2x2ZXMgYSBwcml2YXRlIHUtc2hhcmUgYW5kIGEgcHVibGljIHktc2hhcmUuXG4gKiAyLiBTaWduZXJzIGRpc3RyaWJ1dGUgdGhlaXIgeS1zaGFyZSB0byBvdGhlciBzaWduZXJzLlxuICogMy4gQWZ0ZXIgZXhjaGFuZ2luZyB5LXNoYXJlcyB0aGUgbmV4dCBwaGFzZSBpcyB0byBjb21iaW5lIGtleSBzaGFyZXMuIEVhY2ggc2lnbmVyIGNvbWJpbmVzIHRoZWlyIHUtc2hhcmVcbiAqICAgIHdpdGggdGhlIHktc2hhcmVzIHJlY2VpdmVkIGZyb20gb3RoZXIgc2lnbmVycyBpbiBvcmRlciB0byBnZW5lcmF0ZSBhIHAtc2hhcmUgZm9yIHRoZW1zZWx2ZXMuIFdlXG4gKiAgICBhbHNvIHNhdmUgai1zaGFyZXMgZm9yIG90aGVyIHNpZ25lcnMuXG4gKiA0LiBBdCB0aGlzIHBvaW50IHRoZSBwbGF5ZXJzIGRvIG5vdCBkaXN0cmlidXRlIGFueSBzaGFyZXMgYW5kIHRoZSBmaXJzdCBwaGFzZSBvZiB0aGVcbiAqICAgIHNpZ25pbmcgcHJvdG9jb2wgaXMgY29tcGxldGUuXG4gKlxuICogPT09PT09PT09PT09PT09PT09PT09PVxuICogRWREU0EgU2lnbmluZ1xuICogPT09PT09PT09PT09PT09PT09PT09PVxuICogMS4gVGhlIHBhcnRpZXMgZnJvbSBrZXkgZ2VuZXJhdGlvbiBkZWNpZGUgdGhleSB3YW50IHRvIHNpZ24gc29tZXRoaW5nLiBUaGV5IGJlZ2luIHRoZSBzaWduaW5nIHByb3RvY29sXG4gKiAgICBieSBnZW5lcmF0aW5nIHNoYXJlcyBvZiBhbiBlcGhlbWVyYWwga2V5LlxuICpcbiAqICAgIGEpIEVhY2ggc2lnbmVyIHVzZXMgaGlzIHAtc2hhcmUgYW5kIHRoZSBqLXNoYXJlcyBzdG9yZWQgZm9yIG90aGVyIHBsYXllcnMgdG8gZ2VuZXJhdGUgaGlzIHNpZ25pbmcgc2hhcmUuXG4gKiAgICBiKSBUaGlzIHJlc3VsdHMgaW4gZWFjaCBzaWduZXIgaGF2aW5nIGEgcHJpdmF0ZSB4LXNoYXJlIGFuZCBwdWJsaWMgci1zaGFyZXMuXG4gKlxuICogMi4gU2lnbmVycyBkaXN0cmlidXRlIHRoZWlyIHItc2hhcmVzIHRvIG90aGVyIHNpZ25lcnMuXG4gKiAzLiBBZnRlciBleGNoYW5naW5nIHItc2hhcmVzLCBlYWNoIHNpZ25lciBzaWducyB0aGVpciBzaGFyZSBvZiB0aGUgZXBoZW1lcmFsIGtleSB1c2luZyB0aGVpciBwcml2YXRlXG4gKiAgICB4LXNoYXJlIHdpdGggdGhlIHItc2hhcmVzIGZyb20gb3RoZXIgc2lnbmVycy5cbiAqIDQuIFRoaXMgcmVzdWx0cyBpbiBlYWNoIHNpZ25lciBoYXZpbmcgYSBwdWJsaWMgZy1zaGFyZSB3aGljaCB0aGV5IHNlbmQgdG8gdGhlIG90aGVyIHNpZ25lcnMuXG4gKiA1LiBBZnRlciB0aGUgc2lnbmVycyBicm9hZGNhc3QgdGhlaXIgZy1zaGFyZXMsIHRoZSBmaW5hbCBzaWduYXR1cmUgY2FuIGJlIHJlLWNvbnN0cnVjdGVkIGluZGVwZW5kZW50bHkuXG4gKi9cbmltcG9ydCB7IHJhbmRvbUJ5dGVzLCBjcmVhdGVIYXNoIH0gZnJvbSAnY3J5cHRvJztcbmltcG9ydCB7IEVkMjU1MTlDdXJ2ZSB9IGZyb20gJy4uLy4uL2N1cnZlcyc7XG5pbXBvcnQgU2hhbWlyIGZyb20gJy4uLy4uL3NoYW1pcic7XG5pbXBvcnQgSERUcmVlIGZyb20gJy4uLy4uL2hkVHJlZSc7XG5pbXBvcnQgeyBiaWdJbnRGcm9tQnVmZmVyTEUsIGJpZ0ludFRvQnVmZmVyTEUsIGJpZ0ludEZyb21CdWZmZXJCRSwgYmlnSW50VG9CdWZmZXJCRSwgY2xhbXAgfSBmcm9tICcuLi8uLi91dGlsJztcbmltcG9ydCB7XG4gIEtleVNoYXJlLFxuICBVU2hhcmUsXG4gIFlTaGFyZSxcbiAgS2V5Q29tYmluZSxcbiAgUFNoYXJlLFxuICBTdWJrZXlTaGFyZSxcbiAgSlNoYXJlLFxuICBTaWduU2hhcmUsXG4gIFNpZ25hdHVyZSxcbiAgWFNoYXJlLFxuICBSU2hhcmUsXG4gIEdTaGFyZSxcbn0gZnJvbSAnLi90eXBlcyc7XG5cbi8vIDJeMjU2XG5jb25zdCBiYXNlID0gQmlnSW50KCcweDAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcpO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFZGRzYSB7XG4gIHN0YXRpYyBjdXJ2ZTogRWQyNTUxOUN1cnZlID0gbmV3IEVkMjU1MTlDdXJ2ZSgpO1xuICBzdGF0aWMgc2hhbWlyOiBTaGFtaXIgPSBuZXcgU2hhbWlyKEVkZHNhLmN1cnZlKTtcbiAgc3RhdGljIGluaXRpYWxpemVkID0gZmFsc2U7XG5cbiAgc3RhdGljIGFzeW5jIGluaXRpYWxpemUoaGRUcmVlPzogSERUcmVlKTogUHJvbWlzZTxFZGRzYT4ge1xuICAgIGlmICghRWRkc2EuaW5pdGlhbGl6ZWQpIHtcbiAgICAgIGF3YWl0IEVkMjU1MTlDdXJ2ZS5pbml0aWFsaXplKCk7XG4gICAgICBFZGRzYS5pbml0aWFsaXplZCA9IHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBFZGRzYShoZFRyZWUpO1xuICB9XG5cbiAgaGRUcmVlPzogSERUcmVlO1xuXG4gIGNvbnN0cnVjdG9yKGhkVHJlZT86IEhEVHJlZSkge1xuICAgIHRoaXMuaGRUcmVlID0gaGRUcmVlO1xuICB9XG5cbiAga2V5U2hhcmUoaW5kZXg6IG51bWJlciwgdGhyZXNob2xkOiBudW1iZXIsIG51bVNoYXJlczogbnVtYmVyLCBzZWVkPzogQnVmZmVyKTogS2V5U2hhcmUge1xuICAgIGlmICghKGluZGV4ID4gMCAmJiBpbmRleCA8PSBudW1TaGFyZXMpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgS2V5U2hhcmUgY29uZmlnJyk7XG4gICAgfVxuICAgIGlmIChzZWVkICYmIHNlZWQubGVuZ3RoICE9PSA2NCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdTZWVkIG11c3QgaGF2ZSBsZW5ndGggNjQnKTtcbiAgICB9XG4gICAgY29uc3Qgc2VlZGNoYWluID0gc2VlZCA/PyByYW5kb21CeXRlcyg2NCk7XG4gICAgY29uc3QgYWN0dWFsU2VlZCA9IHNlZWRjaGFpbi5zbGljZSgwLCAzMik7XG4gICAgY29uc3QgY2hhaW5jb2RlID0gc2VlZGNoYWluLnNsaWNlKDMyKTtcbiAgICBjb25zdCBoID0gY3JlYXRlSGFzaCgnc2hhNTEyJykudXBkYXRlKGFjdHVhbFNlZWQpLmRpZ2VzdCgpO1xuICAgIGNvbnN0IHUgPSBjbGFtcChiaWdJbnRGcm9tQnVmZmVyTEUoaC5zbGljZSgwLCAzMikpKTtcbiAgICBjb25zdCB5ID0gRWRkc2EuY3VydmUuYmFzZVBvaW50TXVsdCh1KTtcbiAgICBjb25zdCB7IHNoYXJlczogc3BsaXRfdSwgdiB9ID0gRWRkc2Euc2hhbWlyLnNwbGl0KHUsIHRocmVzaG9sZCwgbnVtU2hhcmVzKTtcblxuICAgIGNvbnN0IFBfaTogVVNoYXJlID0ge1xuICAgICAgaTogaW5kZXgsXG4gICAgICB0OiB0aHJlc2hvbGQsXG4gICAgICBuOiBudW1TaGFyZXMsXG4gICAgICB5OiBiaWdJbnRUb0J1ZmZlckxFKHksIDMyKS50b1N0cmluZygnaGV4JyksXG4gICAgICBzZWVkOiBhY3R1YWxTZWVkLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgIGNoYWluY29kZTogY2hhaW5jb2RlLnRvU3RyaW5nKCdoZXgnKSxcbiAgICB9O1xuICAgIGNvbnN0IHNoYXJlczogS2V5U2hhcmUgPSB7XG4gICAgICB1U2hhcmU6IFBfaSxcbiAgICAgIHlTaGFyZXM6IHt9LFxuICAgIH07XG5cbiAgICBmb3IgKGNvbnN0IGluZCBpbiBzcGxpdF91KSB7XG4gICAgICBjb25zdCBpID0gcGFyc2VJbnQoaW5kLCAxMCk7XG4gICAgICBpZiAoaSA9PT0gaW5kZXgpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBzaGFyZXMueVNoYXJlc1tpXSA9IHtcbiAgICAgICAgaSxcbiAgICAgICAgajogUF9pLmksXG4gICAgICAgIHk6IGJpZ0ludFRvQnVmZmVyTEUoeSwgMzIpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgICAgdjogYmlnSW50VG9CdWZmZXJMRSh2WzBdLCAzMikudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgICB1OiBiaWdJbnRUb0J1ZmZlckxFKHNwbGl0X3VbaW5kXSwgMzIpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgICAgY2hhaW5jb2RlOiBjaGFpbmNvZGUudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHNoYXJlcztcbiAgfVxuXG4gIGtleUNvbWJpbmUodVNoYXJlOiBVU2hhcmUsIHlTaGFyZXM6IFlTaGFyZVtdKTogS2V5Q29tYmluZSB7XG4gICAgY29uc3QgaCA9IGNyZWF0ZUhhc2goJ3NoYTUxMicpLnVwZGF0ZShCdWZmZXIuZnJvbSh1U2hhcmUuc2VlZCwgJ2hleCcpKS5kaWdlc3QoKTtcbiAgICBjb25zdCB1ID0gY2xhbXAoYmlnSW50RnJvbUJ1ZmZlckxFKGguc2xpY2UoMCwgMzIpKSk7XG4gICAgY29uc3QgeVZhbHVlcyA9IFt1U2hhcmUsIC4uLnlTaGFyZXNdLm1hcCgoc2hhcmUpID0+IGJpZ0ludEZyb21CdWZmZXJMRShCdWZmZXIuZnJvbShzaGFyZS55LCAnaGV4JykpKTtcbiAgICBjb25zdCB5ID0geVZhbHVlcy5yZWR1Y2UoKHBhcnRpYWwsIHNoYXJlKSA9PiBFZGRzYS5jdXJ2ZS5wb2ludEFkZChwYXJ0aWFsLCBzaGFyZSkpO1xuICAgIGNvbnN0IGNoYWluY29kZXMgPSBbdVNoYXJlLCAuLi55U2hhcmVzXS5tYXAoKHsgY2hhaW5jb2RlIH0pID0+IGJpZ0ludEZyb21CdWZmZXJCRShCdWZmZXIuZnJvbShjaGFpbmNvZGUsICdoZXgnKSkpO1xuICAgIGNvbnN0IGNoYWluY29kZSA9IGNoYWluY29kZXMucmVkdWNlKChhY2MsIGNoYWluY29kZSkgPT4gKGFjYyArIGNoYWluY29kZSkgJSBiYXNlKTtcblxuICAgIC8vIFZlcmlmeSBzaGFyZXMuXG4gICAgZm9yIChjb25zdCBzaGFyZSBvZiB5U2hhcmVzKSB7XG4gICAgICBpZiAoJ3YnIGluIHNoYXJlKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgRWRkc2Euc2hhbWlyLnZlcmlmeShcbiAgICAgICAgICAgIGJpZ0ludEZyb21CdWZmZXJMRShCdWZmZXIuZnJvbShzaGFyZS51LCAnaGV4JykpLFxuICAgICAgICAgICAgW2JpZ0ludEZyb21CdWZmZXJMRShCdWZmZXIuZnJvbShzaGFyZS55LCAnaGV4JykpLCBiaWdJbnRGcm9tQnVmZmVyTEUoQnVmZmVyLmZyb20oc2hhcmUudiEsICdoZXgnKSldLFxuICAgICAgICAgICAgdVNoYXJlLmlcbiAgICAgICAgICApO1xuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAvLyBUT0RPKEJHLTYxMDM2KTogRml4IFZlcmlmaWNhdGlvblxuICAgICAgICAgIC8vIHRocm93IG5ldyBFcnJvcihgQ291bGQgbm90IHZlcmlmeSBzaGFyZSBmcm9tIHBhcnRpY2lwYW50ICR7c2hhcmUuan0uIFZlcmlmaWNhdGlvbiBlcnJvcjogJHtlcnJ9YCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBQX2k6IFBTaGFyZSA9IHtcbiAgICAgIGk6IHVTaGFyZS5pLFxuICAgICAgdDogdVNoYXJlLnQsXG4gICAgICBuOiB1U2hhcmUubixcbiAgICAgIHk6IGJpZ0ludFRvQnVmZmVyTEUoeSwgMzIpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgIHU6IGJpZ0ludFRvQnVmZmVyTEUodSwgMzIpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgIHByZWZpeDogaC5zbGljZSgzMikudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgY2hhaW5jb2RlOiBiaWdJbnRUb0J1ZmZlckJFKGNoYWluY29kZSwgMzIpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICB9O1xuICAgIGNvbnN0IHBsYXllcnM6IEtleUNvbWJpbmUgPSB7XG4gICAgICBwU2hhcmU6IFBfaSxcbiAgICAgIGpTaGFyZXM6IHt9LFxuICAgIH07XG5cbiAgICBmb3IgKGxldCBpbmQgPSAwOyBpbmQgPCB5U2hhcmVzLmxlbmd0aDsgaW5kKyspIHtcbiAgICAgIGNvbnN0IFBfaiA9IHlTaGFyZXNbaW5kXTtcbiAgICAgIHBsYXllcnMualNoYXJlc1tQX2oual0gPSB7XG4gICAgICAgIGk6IFBfai5qLFxuICAgICAgICBqOiBQX2kuaSxcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBwbGF5ZXJzO1xuICB9XG5cbiAgLyoqXG4gICAqIERlcml2ZXMgYSBjaGlsZCBjb21tb24ga2V5Y2hhaW4gZnJvbSBjb21tb24ga2V5Y2hhaW5cbiAgICpcbiAgICogQHBhcmFtIGNvbW1vbktleWNoYWluIC0gY29tbW9uIGtleWNoYWluIGFzIGEgaGV4IHN0cmluZ1xuICAgKiBAcGFyYW0gcGF0aCAtIGJpcDMyIHBhdGhcbiAgICogQHJldHVybiB7c3RyaW5nfSBkZXJpdmVkIGNvbW1vbiBrZXljaGFpbiBhcyBhIGhleCBzdHJpbmdcbiAgICovXG4gIGRlcml2ZVVuaGFyZGVuZWQoY29tbW9uS2V5Y2hhaW46IHN0cmluZywgcGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5oZFRyZWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ2FuJ3QgZGVyaXZlIGtleSB3aXRob3V0IEhEVHJlZSBpbXBsZW1lbnRhdGlvblwiKTtcbiAgICB9XG5cbiAgICBjb25zdCBrZXljaGFpbiA9IEJ1ZmZlci5mcm9tKGNvbW1vbktleWNoYWluLCAnaGV4Jyk7XG5cbiAgICBjb25zdCBkZXJpdmVkUHVibGljS2V5Y2hhaW4gPSB0aGlzLmhkVHJlZS5wdWJsaWNEZXJpdmUoXG4gICAgICB7XG4gICAgICAgIHBrOiBiaWdJbnRGcm9tQnVmZmVyTEUoa2V5Y2hhaW4uc2xpY2UoMCwgMzIpKSxcbiAgICAgICAgY2hhaW5jb2RlOiBiaWdJbnRGcm9tQnVmZmVyQkUoa2V5Y2hhaW4uc2xpY2UoMzIpKSxcbiAgICAgIH0sXG4gICAgICBwYXRoXG4gICAgKTtcblxuICAgIGNvbnN0IGRlcml2ZWRQayA9IGJpZ0ludFRvQnVmZmVyTEUoZGVyaXZlZFB1YmxpY0tleWNoYWluLnBrLCAzMikudG9TdHJpbmcoJ2hleCcpO1xuICAgIGNvbnN0IGRlcml2ZWRDaGFpbmNvZGUgPSBiaWdJbnRUb0J1ZmZlckJFKGRlcml2ZWRQdWJsaWNLZXljaGFpbi5jaGFpbmNvZGUsIDMyKS50b1N0cmluZygnaGV4Jyk7XG5cbiAgICByZXR1cm4gZGVyaXZlZFBrICsgZGVyaXZlZENoYWluY29kZTtcbiAgfVxuXG4gIGtleURlcml2ZSh1U2hhcmU6IFVTaGFyZSwgeVNoYXJlczogWVNoYXJlW10sIHBhdGg6IHN0cmluZyk6IFN1YmtleVNoYXJlIHtcbiAgICBpZiAodGhpcy5oZFRyZWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ2FuJ3QgZGVyaXZlIGtleSB3aXRob3V0IEhEVHJlZSBpbXBsZW1lbnRhdGlvblwiKTtcbiAgICB9XG4gICAgY29uc3QgaCA9IGNyZWF0ZUhhc2goJ3NoYTUxMicpLnVwZGF0ZShCdWZmZXIuZnJvbSh1U2hhcmUuc2VlZCwgJ2hleCcpKS5kaWdlc3QoKTtcbiAgICBjb25zdCB5VmFsdWVzID0gW3VTaGFyZSwgLi4ueVNoYXJlc10ubWFwKChzaGFyZSkgPT4gYmlnSW50RnJvbUJ1ZmZlckxFKEJ1ZmZlci5mcm9tKHNoYXJlLnksICdoZXgnKSkpO1xuICAgIGNvbnN0IHkgPSB5VmFsdWVzLnJlZHVjZSgocGFydGlhbCwgc2hhcmUpID0+IEVkZHNhLmN1cnZlLnBvaW50QWRkKHBhcnRpYWwsIHNoYXJlKSk7XG4gICAgY29uc3QgdSA9IGNsYW1wKGJpZ0ludEZyb21CdWZmZXJMRShoLnNsaWNlKDAsIDMyKSkpO1xuICAgIGNvbnN0IHByZWZpeCA9IGJpZ0ludEZyb21CdWZmZXJCRShoLnNsaWNlKDMyKSk7XG4gICAgbGV0IGNvbnRyaWJDaGFpbmNvZGUgPSBiaWdJbnRGcm9tQnVmZmVyQkUoQnVmZmVyLmZyb20odVNoYXJlLmNoYWluY29kZSwgJ2hleCcpKTtcbiAgICBjb25zdCBjaGFpbmNvZGVzID0gW1xuICAgICAgY29udHJpYkNoYWluY29kZSxcbiAgICAgIC4uLnlTaGFyZXMubWFwKCh7IGNoYWluY29kZSB9KSA9PiBiaWdJbnRGcm9tQnVmZmVyQkUoQnVmZmVyLmZyb20oY2hhaW5jb2RlLCAnaGV4JykpKSxcbiAgICBdO1xuICAgIGNvbnN0IGNoYWluY29kZSA9IGNoYWluY29kZXMucmVkdWNlKChhY2MsIGNoYWluY29kZSkgPT4gKGFjYyArIGNoYWluY29kZSkgJSBiYXNlKTtcblxuICAgIC8vIERlcml2ZSBzdWJrZXkuXG4gICAgY29uc3Qgc3Via2V5ID0gdGhpcy5oZFRyZWUucHJpdmF0ZURlcml2ZSh7IHBrOiB5LCBzazogdSwgcHJlZml4LCBjaGFpbmNvZGUgfSwgcGF0aCk7XG5cbiAgICAvLyBDYWxjdWxhdGUgbmV3IHB1YmxpYyBrZXkgY29udHJpYnV0aW9uLlxuICAgIGNvbnN0IGNvbnRyaWJZID0gRWRkc2EuY3VydmUuYmFzZVBvaW50TXVsdChzdWJrZXkuc2spO1xuXG4gICAgLy8gQ2FsY3VsYXRlIG5ldyBjaGFpbmNvZGUgY29udHJpYnV0aW9uLlxuICAgIGNvbnN0IGNoYWluY29kZURlbHRhID0gKGJhc2UgKyBzdWJrZXkuY2hhaW5jb2RlIC0gY2hhaW5jb2RlKSAlIGJhc2U7XG4gICAgY29udHJpYkNoYWluY29kZSA9IChjb250cmliQ2hhaW5jb2RlICsgY2hhaW5jb2RlRGVsdGEpICUgYmFzZTtcblxuICAgIC8vIENhbGN1bGF0ZSBuZXcgdSB2YWx1ZXMuXG4gICAgY29uc3QgeyBzaGFyZXM6IHNwbGl0X3UsIHYgfSA9IEVkZHNhLnNoYW1pci5zcGxpdChzdWJrZXkuc2ssIHVTaGFyZS50LCB1U2hhcmUubik7XG5cbiAgICBjb25zdCBQX2k6IFBTaGFyZSA9IHtcbiAgICAgIGk6IHVTaGFyZS5pLFxuICAgICAgdDogdVNoYXJlLnQsXG4gICAgICBuOiB1U2hhcmUubixcbiAgICAgIHk6IGJpZ0ludFRvQnVmZmVyTEUoc3Via2V5LnBrLCAzMikudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgdTogYmlnSW50VG9CdWZmZXJMRShzdWJrZXkuc2ssIDMyKS50b1N0cmluZygnaGV4JyksXG4gICAgICBwcmVmaXg6IGJpZ0ludFRvQnVmZmVyQkUoc3Via2V5LnByZWZpeCEsIDMyKS50b1N0cmluZygnaGV4JyksXG4gICAgICBjaGFpbmNvZGU6IGJpZ0ludFRvQnVmZmVyQkUoc3Via2V5LmNoYWluY29kZSwgMzIpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICB9O1xuXG4gICAgY29uc3Qgc2hhcmVzOiBTdWJrZXlTaGFyZSA9IHtcbiAgICAgIHBTaGFyZTogUF9pLFxuICAgICAgeVNoYXJlczoge30sXG4gICAgfTtcblxuICAgIGZvciAobGV0IGluZCA9IDA7IGluZCA8IHlTaGFyZXMubGVuZ3RoOyBpbmQrKykge1xuICAgICAgY29uc3QgUF9qID0geVNoYXJlc1tpbmRdO1xuICAgICAgc2hhcmVzLnlTaGFyZXNbUF9qLmpdID0ge1xuICAgICAgICBpOiBQX2ouaixcbiAgICAgICAgajogUF9pLmksXG4gICAgICAgIHk6IGJpZ0ludFRvQnVmZmVyTEUoY29udHJpYlksIDMyKS50b1N0cmluZygnaGV4JyksXG4gICAgICAgIHY6IGJpZ0ludFRvQnVmZmVyTEUodlswXSwgMzIpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgICAgdTogYmlnSW50VG9CdWZmZXJMRShzcGxpdF91W1Bfai5qXSwgMzIpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgICAgY2hhaW5jb2RlOiBiaWdJbnRUb0J1ZmZlckJFKGNvbnRyaWJDaGFpbmNvZGUsIDMyKS50b1N0cmluZygnaGV4JyksXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiBzaGFyZXM7XG4gIH1cblxuICBzaWduU2hhcmUobWVzc2FnZTogQnVmZmVyLCBwU2hhcmU6IFBTaGFyZSwgalNoYXJlczogSlNoYXJlW10sIHNlZWQ/OiBCdWZmZXIpOiBTaWduU2hhcmUge1xuICAgIGlmIChzZWVkICYmIHNlZWQubGVuZ3RoICE9PSA2NCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdTZWVkIG11c3QgaGF2ZSBsZW5ndGggNjQnKTtcbiAgICB9XG4gICAgY29uc3QgaW5kaWNlcyA9IFtwU2hhcmUsIC4uLmpTaGFyZXNdLm1hcCgoeyBpIH0pID0+IGkpO1xuICAgIGNvbnN0IHsgc2hhcmVzOiBzcGxpdF91LCB2IH0gPSBFZGRzYS5zaGFtaXIuc3BsaXQoXG4gICAgICBiaWdJbnRGcm9tQnVmZmVyTEUoQnVmZmVyLmZyb20ocFNoYXJlLnUsICdoZXgnKSksXG4gICAgICBwU2hhcmUudCxcbiAgICAgIHBTaGFyZS5uXG4gICAgKTtcblxuICAgIC8vIEdlbmVyYXRlIG5vbmNlIGNvbnRyaWJ1dGlvbi5cbiAgICBjb25zdCBwcmVmaXggPSBCdWZmZXIuZnJvbShwU2hhcmUucHJlZml4LCAnaGV4Jyk7XG4gICAgY29uc3QgcmFuZG9tQnVmZmVyID0gc2VlZCA/PyByYW5kb21CeXRlcyg2NCk7XG5cbiAgICBjb25zdCBkaWdlc3QgPSBjcmVhdGVIYXNoKCdzaGE1MTInKVxuICAgICAgLnVwZGF0ZShCdWZmZXIuY29uY2F0KFtwcmVmaXgsIG1lc3NhZ2UsIHJhbmRvbUJ1ZmZlcl0pKVxuICAgICAgLmRpZ2VzdCgpO1xuXG4gICAgY29uc3QgciA9IEVkZHNhLmN1cnZlLnNjYWxhclJlZHVjZShiaWdJbnRGcm9tQnVmZmVyTEUoZGlnZXN0KSk7XG4gICAgY29uc3QgUiA9IEVkZHNhLmN1cnZlLmJhc2VQb2ludE11bHQocik7XG4gICAgY29uc3QgeyBzaGFyZXM6IHNwbGl0X3IgfSA9IEVkZHNhLnNoYW1pci5zcGxpdChyLCBpbmRpY2VzLmxlbmd0aCwgaW5kaWNlcy5sZW5ndGgsIGluZGljZXMpO1xuXG4gICAgY29uc3QgUF9pOiBYU2hhcmUgPSB7XG4gICAgICBpOiBwU2hhcmUuaSxcbiAgICAgIHk6IHBTaGFyZS55LFxuICAgICAgdTogYmlnSW50VG9CdWZmZXJMRShzcGxpdF91W3BTaGFyZS5pXSwgMzIpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgIHI6IGJpZ0ludFRvQnVmZmVyTEUoc3BsaXRfcltwU2hhcmUuaV0sIDMyKS50b1N0cmluZygnaGV4JyksXG4gICAgICBSOiBiaWdJbnRUb0J1ZmZlckxFKFIsIDMyKS50b1N0cmluZygnaGV4JyksXG4gICAgfTtcblxuICAgIGNvbnN0IHJlc3VsdFNoYXJlczogU2lnblNoYXJlID0ge1xuICAgICAgeFNoYXJlOiBQX2ksXG4gICAgICByU2hhcmVzOiB7fSxcbiAgICB9O1xuXG4gICAgZm9yIChsZXQgaW5kID0gMDsgaW5kIDwgalNoYXJlcy5sZW5ndGg7IGluZCsrKSB7XG4gICAgICBjb25zdCBTX2ogPSBqU2hhcmVzW2luZF07XG4gICAgICByZXN1bHRTaGFyZXMuclNoYXJlc1tTX2ouaV0gPSB7XG4gICAgICAgIGk6IFNfai5pLFxuICAgICAgICBqOiBwU2hhcmUuaSxcbiAgICAgICAgdTogYmlnSW50VG9CdWZmZXJMRShzcGxpdF91W1Nfai5pXSwgMzIpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgICAgdjogYmlnSW50VG9CdWZmZXJMRSh2WzBdLCAzMikudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgICByOiBiaWdJbnRUb0J1ZmZlckxFKHNwbGl0X3JbU19qLmldLCAzMikudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgICBSOiBiaWdJbnRUb0J1ZmZlckxFKFIsIDMyKS50b1N0cmluZygnaGV4JyksXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0U2hhcmVzO1xuICB9XG5cbiAgc2lnbihtZXNzYWdlOiBCdWZmZXIsIHBsYXllclNoYXJlOiBYU2hhcmUsIHJTaGFyZXM6IFJTaGFyZVtdLCB5U2hhcmVzOiBZU2hhcmVbXSA9IFtdKTogR1NoYXJlIHtcbiAgICBjb25zdCBTX2kgPSBwbGF5ZXJTaGFyZTtcblxuICAgIGNvbnN0IHVWYWx1ZXMgPSBbcGxheWVyU2hhcmUsIC4uLnJTaGFyZXMsIC4uLnlTaGFyZXNdLm1hcCgoeyB1IH0pID0+IGJpZ0ludEZyb21CdWZmZXJMRShCdWZmZXIuZnJvbSh1LCAnaGV4JykpKTtcbiAgICBjb25zdCB4ID0gdVZhbHVlcy5yZWR1Y2UoKGFjYywgdSkgPT4gRWRkc2EuY3VydmUuc2NhbGFyQWRkKGFjYywgdSkpO1xuXG4gICAgY29uc3QgUlZhbHVlcyA9IFtwbGF5ZXJTaGFyZSwgLi4uclNoYXJlc10ubWFwKCh7IFIgfSkgPT4gYmlnSW50RnJvbUJ1ZmZlckxFKEJ1ZmZlci5mcm9tKFIsICdoZXgnKSkpO1xuICAgIGNvbnN0IFIgPSBSVmFsdWVzLnJlZHVjZSgocGFydGlhbCwgc2hhcmUpID0+IEVkZHNhLmN1cnZlLnBvaW50QWRkKHBhcnRpYWwsIHNoYXJlKSk7XG5cbiAgICBjb25zdCByVmFsdWVzID0gW3BsYXllclNoYXJlLCAuLi5yU2hhcmVzXS5tYXAoKHsgciB9KSA9PiBiaWdJbnRGcm9tQnVmZmVyTEUoQnVmZmVyLmZyb20ociwgJ2hleCcpKSk7XG4gICAgY29uc3QgciA9IHJWYWx1ZXMucmVkdWNlKChwYXJ0aWFsLCBzaGFyZSkgPT4gRWRkc2EuY3VydmUuc2NhbGFyQWRkKHBhcnRpYWwsIHNoYXJlKSk7XG5cbiAgICBjb25zdCBjb21iaW5lZEJ1ZmZlciA9IEJ1ZmZlci5jb25jYXQoW2JpZ0ludFRvQnVmZmVyTEUoUiwgMzIpLCBCdWZmZXIuZnJvbShTX2kueSwgJ2hleCcpLCBtZXNzYWdlXSk7XG4gICAgY29uc3QgZGlnZXN0ID0gY3JlYXRlSGFzaCgnc2hhNTEyJykudXBkYXRlKGNvbWJpbmVkQnVmZmVyKS5kaWdlc3QoKTtcbiAgICBjb25zdCBrID0gRWRkc2EuY3VydmUuc2NhbGFyUmVkdWNlKGJpZ0ludEZyb21CdWZmZXJMRShkaWdlc3QpKTtcblxuICAgIGNvbnN0IGdhbW1hID0gRWRkc2EuY3VydmUuc2NhbGFyQWRkKHIsIEVkZHNhLmN1cnZlLnNjYWxhck11bHQoaywgeCkpO1xuICAgIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAgIGk6IHBsYXllclNoYXJlLmksXG4gICAgICB5OiBwbGF5ZXJTaGFyZS55LFxuICAgICAgZ2FtbWE6IGJpZ0ludFRvQnVmZmVyTEUoZ2FtbWEsIDMyKS50b1N0cmluZygnaGV4JyksXG4gICAgICBSOiBiaWdJbnRUb0J1ZmZlckxFKFIsIDMyKS50b1N0cmluZygnaGV4JyksXG4gICAgfTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgc2lnbkNvbWJpbmUoc2hhcmVzOiBHU2hhcmVbXSk6IFNpZ25hdHVyZSB7XG4gICAgY29uc3QgeSA9IHNoYXJlc1swXS55O1xuICAgIGNvbnN0IFIgPSBzaGFyZXNbMF0uUjtcblxuICAgIGNvbnN0IHJlc3VsdFNoYXJlcyA9IHt9O1xuICAgIGZvciAoY29uc3QgaW5kIGluIHNoYXJlcykge1xuICAgICAgY29uc3QgU19pID0gc2hhcmVzW2luZF07XG4gICAgICByZXN1bHRTaGFyZXNbU19pLmldID0gYmlnSW50RnJvbUJ1ZmZlckxFKEJ1ZmZlci5mcm9tKFNfaS5nYW1tYSwgJ2hleCcpKTtcbiAgICB9XG4gICAgY29uc3Qgc2lnbWE6IGJpZ2ludCA9IEVkZHNhLnNoYW1pci5jb21iaW5lKHJlc3VsdFNoYXJlcyk7XG4gICAgY29uc3QgcmVzdWx0ID0ge1xuICAgICAgeSxcbiAgICAgIFIsXG4gICAgICBzaWdtYTogYmlnSW50VG9CdWZmZXJMRShzaWdtYSwgMzIpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICB9O1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICB2ZXJpZnkobWVzc2FnZTogQnVmZmVyLCBzaWduYXR1cmU6IFNpZ25hdHVyZSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHB1YmxpY0tleSA9IGJpZ0ludEZyb21CdWZmZXJMRShCdWZmZXIuZnJvbShzaWduYXR1cmUueSwgJ2hleCcpKTtcbiAgICBjb25zdCBzaWduZWRNZXNzYWdlID0gQnVmZmVyLmNvbmNhdChbQnVmZmVyLmZyb20oc2lnbmF0dXJlLlIsICdoZXgnKSwgQnVmZmVyLmZyb20oc2lnbmF0dXJlLnNpZ21hLCAnaGV4JyldKTtcbiAgICByZXR1cm4gRWRkc2EuY3VydmUudmVyaWZ5KG1lc3NhZ2UsIHNpZ25lZE1lc3NhZ2UsIHB1YmxpY0tleSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -11,6 +11,7 @@ import EddsaUtils from '../utils/tss/eddsa';
|
|
|
11
11
|
import { IWallet, IWallets, Wallet, WalletData } from '../wallet';
|
|
12
12
|
import { IWebhooks } from '../webhook/iWebhooks';
|
|
13
13
|
import { BaseTokenConfig } from '@bitgo/statics';
|
|
14
|
+
import { TransactionType } from '../../account-lib';
|
|
14
15
|
export interface Output extends ITransactionRecipient {
|
|
15
16
|
address: string;
|
|
16
17
|
coinName?: string;
|
|
@@ -155,6 +156,7 @@ export interface FeeEstimateOptions {
|
|
|
155
156
|
recipient?: string;
|
|
156
157
|
data?: string;
|
|
157
158
|
amount?: string;
|
|
159
|
+
type?: keyof typeof TransactionType;
|
|
158
160
|
}
|
|
159
161
|
export interface ExtraPrebuildParamsOptions {
|
|
160
162
|
[index: string]: unknown;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"iBaseCoin.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/baseCoin/iBaseCoin.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"iBaseCoin.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/baseCoin/iBaseCoin.ts"],"names":[],"mappings":"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"}
|