@bitgo-beta/sdk-core 8.2.1-beta.2095 → 8.2.1-beta.2097

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (28) hide show
  1. package/dist/src/bitgo/errors.d.ts +6 -0
  2. package/dist/src/bitgo/errors.d.ts.map +1 -1
  3. package/dist/src/bitgo/errors.js +11 -2
  4. package/dist/src/bitgo/keychain/iKeychains.d.ts +20 -0
  5. package/dist/src/bitgo/keychain/iKeychains.d.ts.map +1 -1
  6. package/dist/src/bitgo/keychain/iKeychains.js +1 -1
  7. package/dist/src/bitgo/keychain/keychains.d.ts.map +1 -1
  8. package/dist/src/bitgo/keychain/keychains.js +31 -1
  9. package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2.d.ts +27 -0
  10. package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2.d.ts.map +1 -1
  11. package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2.js +91 -1
  12. package/dist/src/bitgo/utils/tss/eddsa/eddsaVrfMPCv2.d.ts +1 -3
  13. package/dist/src/bitgo/utils/tss/eddsa/eddsaVrfMPCv2.d.ts.map +1 -1
  14. package/dist/src/bitgo/utils/tss/eddsa/eddsaVrfMPCv2.js +42 -70
  15. package/dist/src/bitgo/utils/tss/eddsa/typesEddsaMPCv2.d.ts +40 -21
  16. package/dist/src/bitgo/utils/tss/eddsa/typesEddsaMPCv2.d.ts.map +1 -1
  17. package/dist/src/bitgo/utils/tss/eddsa/typesEddsaMPCv2.js +2 -13
  18. package/dist/src/bitgo/utils/tss/redpallas/redpallasMPCv2KeyGenSender.d.ts.map +1 -1
  19. package/dist/src/bitgo/wallet/iWallets.d.ts +1 -0
  20. package/dist/src/bitgo/wallet/iWallets.d.ts.map +1 -1
  21. package/dist/src/bitgo/wallet/iWallets.js +1 -1
  22. package/dist/src/bitgo/wallet/wallets.d.ts.map +1 -1
  23. package/dist/src/bitgo/wallet/wallets.js +23 -9
  24. package/dist/test/unit/bitgo/utils/tss/eddsa/eddsaMPCv2.js +422 -5
  25. package/dist/test/unit/bitgo/utils/tss/eddsa/eddsaVrfMPCv2.js +192 -23
  26. package/dist/test/unit/bitgo/wallet/walletsExternalSigner.js +180 -2
  27. package/dist/tsconfig.tsbuildinfo +1 -1
  28. package/package.json +10 -10
@@ -1,4 +1,4 @@
1
- import { DklsTypes, type MPSTypes } from '@bitgo-beta/sdk-lib-mpc';
1
+ import { type MPSTypes } from '@bitgo-beta/sdk-lib-mpc';
2
2
  import { EddsaMPCv2DeriveRound1Response, EddsaMPCv2DeriveRound2Response } from '@bitgo/public-types';
3
3
  import type { KeychainsTriplet } from '../../../baseCoin';
4
4
  import type { DecryptedRetrofitPayload } from '../../../keychain/iKeychains';
@@ -6,8 +6,6 @@ import type { EncryptionVersion } from '../../../../api';
6
6
  import type { WebauthnKeyEncryptionInfo } from '../../../keychain';
7
7
  import { EddsaMPCv2Utils } from './eddsaMPCv2';
8
8
  import { EddsaMPCv2DeriveKeySendFn } from './eddsaMPCv2KeyGenSender';
9
- export declare function serializeVrfMessages(messages: DklsTypes.DeserializedMessages): string;
10
- export declare function deserializeVrfMessages(blob: string, forParty: number): DklsTypes.DeserializedMessages;
11
9
  /**
12
10
  * EdDSA MPCv2 key generation for safe roots. The two-round MPS VRF DKG rides
13
11
  * the existing MPCv2-R1/R2 payloads and is only selected when safeId is set.
@@ -1 +1 @@
1
- {"version":3,"file":"eddsaVrfMPCv2.d.ts","sourceRoot":"","sources":["../../../../../../src/bitgo/utils/tss/eddsa/eddsaVrfMPCv2.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAA+B,KAAK,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAChG,OAAO,EAEL,8BAA8B,EAE9B,8BAA8B,EAI/B,MAAM,qBAAqB,CAAC;AAO7B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AAC7E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEzD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAGnE,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EACL,yBAAyB,EAG1B,MAAM,0BAA0B,CAAC;AAiBlC,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,SAAS,CAAC,oBAAoB,GAAG,MAAM,CAarF;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC,oBAAoB,CAyBrG;AAED;;;GAGG;AACH,qBAAa,kBAAmB,SAAQ,eAAe;IACrD,kBAAkB;IACZ,eAAe,CAAC,MAAM,EAAE;QAC5B,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,8BAA8B,CAAC,EAAE,MAAM,CAAC;QACxC,QAAQ,CAAC,EAAE,wBAAwB,CAAC;QACpC,YAAY,CAAC,EAAE,yBAAyB,CAAC;QACzC,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;QACtC,MAAM,EAAE,MAAM,CAAC;KAChB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAwMvB,4BAA4B,CAChC,QAAQ,EAAE,yBAAyB,CAAC,8BAA8B,CAAC,EACnE,gBAAgB,EAAE,MAAM,EACxB,QAAQ,EAAE,QAAQ,CAAC,gBAAgB,EACnC,WAAW,EAAE,MAAM,EACnB,eAAe,EAAE,MAAM,GACtB,OAAO,CAAC,8BAA8B,CAAC;IAcpC,4BAA4B,CAChC,QAAQ,EAAE,yBAAyB,CAAC,8BAA8B,CAAC,EACnE,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,QAAQ,CAAC,gBAAgB,GAClC,OAAO,CAAC,8BAA8B,CAAC;IAa1C,uFAAuF;IACjF,wBAAwB,CAAC,MAAM,EAAE;QACrC,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,MAAM,EAAE,MAAM,CAAC;QACf,WAAW,EAAE,MAAM,CAAC;QACpB,eAAe,EAAE,MAAM,CAAC;QACxB,aAAa,EAAE,MAAM,CAAC;QACtB,eAAe,EAAE,MAAM,CAAC;QACxB,gBAAgB,EAAE,MAAM,CAAC;QACzB,mBAAmB,EAAE,MAAM,CAAC;QAC5B,8BAA8B,CAAC,EAAE,MAAM,CAAC;QACxC,YAAY,CAAC,EAAE,yBAAyB,CAAC;QACzC,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;KACvC,GAAG,OAAO,CAAC,gBAAgB,CAAC;CA+F9B"}
1
+ {"version":3,"file":"eddsaVrfMPCv2.d.ts","sourceRoot":"","sources":["../../../../../../src/bitgo/utils/tss/eddsa/eddsaVrfMPCv2.ts"],"names":[],"mappings":"AAAA,OAAO,EAA+B,KAAK,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACrF,OAAO,EAEL,8BAA8B,EAE9B,8BAA8B,EAK/B,MAAM,qBAAqB,CAAC;AAM7B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AAC7E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEzD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAGnE,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EACL,yBAAyB,EAG1B,MAAM,0BAA0B,CAAC;AA6BlC;;;GAGG;AACH,qBAAa,kBAAmB,SAAQ,eAAe;IACrD,kBAAkB;IACZ,eAAe,CAAC,MAAM,EAAE;QAC5B,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,8BAA8B,CAAC,EAAE,MAAM,CAAC;QACxC,QAAQ,CAAC,EAAE,wBAAwB,CAAC;QACpC,YAAY,CAAC,EAAE,yBAAyB,CAAC;QACzC,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;QACtC,MAAM,EAAE,MAAM,CAAC;KAChB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IA6NvB,4BAA4B,CAChC,QAAQ,EAAE,yBAAyB,CAAC,8BAA8B,CAAC,EACnE,gBAAgB,EAAE,MAAM,EACxB,QAAQ,EAAE,QAAQ,CAAC,gBAAgB,EACnC,WAAW,EAAE,MAAM,EACnB,eAAe,EAAE,MAAM,GACtB,OAAO,CAAC,8BAA8B,CAAC;IAcpC,4BAA4B,CAChC,QAAQ,EAAE,yBAAyB,CAAC,8BAA8B,CAAC,EACnE,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,QAAQ,CAAC,gBAAgB,GAClC,OAAO,CAAC,8BAA8B,CAAC;IAa1C,uFAAuF;IACjF,wBAAwB,CAAC,MAAM,EAAE;QACrC,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,MAAM,EAAE,MAAM,CAAC;QACf,WAAW,EAAE,MAAM,CAAC;QACpB,eAAe,EAAE,MAAM,CAAC;QACxB,aAAa,EAAE,MAAM,CAAC;QACtB,eAAe,EAAE,MAAM,CAAC;QACxB,gBAAgB,EAAE,MAAM,CAAC;QACzB,mBAAmB,EAAE,MAAM,CAAC;QAC5B,8BAA8B,CAAC,EAAE,MAAM,CAAC;QACxC,YAAY,CAAC,EAAE,yBAAyB,CAAC;QACzC,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;KACvC,GAAG,OAAO,CAAC,gBAAgB,CAAC;CA+F9B"}
@@ -37,13 +37,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
37
37
  };
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
39
  exports.EddsaVrfMPCv2Utils = void 0;
40
- exports.serializeVrfMessages = serializeVrfMessages;
41
- exports.deserializeVrfMessages = deserializeVrfMessages;
42
40
  const sdk_lib_mpc_1 = require("@bitgo-beta/sdk-lib-mpc");
43
41
  const public_types_1 = require("@bitgo/public-types");
44
42
  const sdk_lib_safes_1 = require("@bitgo-beta/sdk-lib-safes");
45
43
  const assert_1 = __importDefault(require("assert"));
46
- const t = __importStar(require("io-ts"));
47
44
  const pgp = __importStar(require("openpgp"));
48
45
  const io_ts_types_1 = require("io-ts-types");
49
46
  const opengpgUtils_1 = require("../../opengpgUtils");
@@ -53,54 +50,24 @@ const eddsaMPCv2_1 = require("./eddsaMPCv2");
53
50
  const eddsaMPCv2KeyGenSender_1 = require("./eddsaMPCv2KeyGenSender");
54
51
  const typesMPCv2_1 = require("../ecdsa/typesMPCv2");
55
52
  const keyShareEnvelope_1 = require("../keyShareEnvelope");
56
- const VrfPartyId = (0, codecs_1.boundedInt)(0, 2, 'VrfPartyId');
57
- const VrfMessageTransferCodec = t.intersection([
58
- t.type({
59
- from: VrfPartyId,
60
- payload: codecs_1.base64String,
61
- }),
62
- t.partial({ to: VrfPartyId }),
63
- ]);
64
- const VrfMessageTransfersCodec = t.array(VrfMessageTransferCodec);
65
- function serializeVrfMessages(messages) {
66
- const transfers = [
67
- ...messages.broadcastMessages.map((message) => ({
68
- from: message.from,
69
- payload: Buffer.from(message.payload).toString('base64'),
70
- })),
71
- ...messages.p2pMessages.map((message) => ({
72
- from: message.from,
73
- to: message.to,
74
- payload: Buffer.from(message.payload).toString('base64'),
75
- })),
76
- ];
77
- return Buffer.from(JSON.stringify(transfers)).toString('base64');
53
+ /** Returns the single payload a VRF round produced, which is what the party signs for BitGo. */
54
+ function getSingleVrfPayload(messages, description) {
55
+ assert_1.default.equal(messages.length, 1, `${description} must produce exactly one message`);
56
+ return messages[0].payload;
78
57
  }
79
- function deserializeVrfMessages(blob, forParty) {
80
- let parsed;
81
- try {
82
- parsed = JSON.parse(Buffer.from(blob, 'base64').toString());
83
- }
84
- catch (error) {
85
- const reason = error instanceof Error ? error.message : 'malformed JSON';
86
- throw new Error(`Invalid VRF DKG message blob: ${reason}`);
87
- }
88
- const transfers = (0, codecs_1.decodeWithCodec)(VrfMessageTransfersCodec, parsed, 'VRF DKG message blob');
89
- return {
90
- broadcastMessages: transfers
91
- .filter((message) => message.to === undefined)
92
- .map((message) => ({
93
- from: message.from,
94
- payload: new Uint8Array(Buffer.from(message.payload, 'base64')),
95
- })),
96
- p2pMessages: transfers
97
- .filter((message) => message.to === forParty)
98
- .map((message) => ({
99
- from: message.from,
100
- to: message.to,
101
- payload: new Uint8Array(Buffer.from(message.payload, 'base64')),
102
- })),
103
- };
58
+ /**
59
+ * Decrypts a BitGo VRF opening encrypted to a client party's GPG key and verifies BitGo's
60
+ * detached signature over the plaintext.
61
+ */
62
+ async function decryptBitgoVrfOpening(message, partyKey, bitgoKey) {
63
+ const { data } = await pgp.decrypt({
64
+ message: await pgp.readMessage({ armoredMessage: message.message }),
65
+ decryptionKeys: partyKey,
66
+ format: 'binary',
67
+ });
68
+ const plaintext = Buffer.from(data);
69
+ await sdk_lib_mpc_1.MPSComms.verifyMpsMessage({ message: plaintext.toString('base64'), signature: message.signature }, bitgoKey);
70
+ return new Uint8Array(plaintext);
104
71
  }
105
72
  /**
106
73
  * EdDSA MPCv2 key generation for safe roots. The two-round MPS VRF DKG rides
@@ -138,6 +105,8 @@ class EddsaVrfMPCv2Utils extends eddsaMPCv2_1.EddsaMPCv2Utils {
138
105
  const backupVrfMsg1 = await backupVrfSession.initDkg();
139
106
  const userSignedMsg1 = await sdk_lib_mpc_1.MPSComms.detachSignMpsMessage(Buffer.from(userMsg1.payload), userGpgKey);
140
107
  const backupSignedMsg1 = await sdk_lib_mpc_1.MPSComms.detachSignMpsMessage(Buffer.from(backupMsg1.payload), backupGpgKey);
108
+ const userSignedVrfMsg1 = await sdk_lib_mpc_1.MPSComms.detachSignMpsMessage(getSingleVrfPayload(userVrfMsg1.broadcastMessages, 'User VRF round 0'), userGpgKey);
109
+ const backupSignedVrfMsg1 = await sdk_lib_mpc_1.MPSComms.detachSignMpsMessage(getSingleVrfPayload(backupVrfMsg1.broadcastMessages, 'Backup VRF round 0'), backupGpgKey);
141
110
  (0, assert_1.default)(io_ts_types_1.NonEmptyString.is(userGpgPublicKey), 'User GPG public key is required');
142
111
  (0, assert_1.default)(io_ts_types_1.NonEmptyString.is(backupGpgPublicKey), 'Backup GPG public key is required');
143
112
  const round1Sender = (0, eddsaMPCv2KeyGenSender_1.KeyGenSenderForEnterprise)(this.bitgo, params.enterprise, params.safeId);
@@ -146,8 +115,8 @@ class EddsaVrfMPCv2Utils extends eddsaMPCv2_1.EddsaMPCv2Utils {
146
115
  backupGpgPublicKey,
147
116
  userMsg1: userSignedMsg1,
148
117
  backupMsg1: backupSignedMsg1,
149
- userVrfMsg1: serializeVrfMessages(userVrfMsg1),
150
- backupVrfMsg1: serializeVrfMessages(backupVrfMsg1),
118
+ userVrfMsg1: userSignedVrfMsg1,
119
+ backupVrfMsg1: backupSignedVrfMsg1,
151
120
  ...(params.retrofit?.walletId ? { walletId: params.retrofit.walletId } : {}),
152
121
  });
153
122
  (0, assert_1.default)(bitgoVrfMsg1, 'BitGo VRF message 1 not found in round 1 response');
@@ -167,45 +136,48 @@ class EddsaVrfMPCv2Utils extends eddsaMPCv2_1.EddsaMPCv2Utils {
167
136
  const backupMsg2 = backupRound2Msgs[0];
168
137
  const userSignedMsg2 = await sdk_lib_mpc_1.MPSComms.detachSignMpsMessage(Buffer.from(userMsg2.payload), userGpgKey);
169
138
  const backupSignedMsg2 = await sdk_lib_mpc_1.MPSComms.detachSignMpsMessage(Buffer.from(backupMsg2.payload), backupGpgKey);
139
+ const bitgoVrfRawMsg1Bytes = await sdk_lib_mpc_1.MPSComms.verifyMpsMessage(bitgoVrfMsg1, bitgoKeyObj);
140
+ const bitgoVrfDeserializedMsg1 = {
141
+ from: typesMPCv2_1.MPCv2PartiesEnum.BITGO,
142
+ payload: new Uint8Array(bitgoVrfRawMsg1Bytes),
143
+ };
170
144
  const userVrfMsg2 = await userVrfSession.handleIncomingMessages({
171
- broadcastMessages: [
172
- ...backupVrfMsg1.broadcastMessages,
173
- ...deserializeVrfMessages(bitgoVrfMsg1, typesMPCv2_1.MPCv2PartiesEnum.USER).broadcastMessages,
174
- ],
145
+ broadcastMessages: [...backupVrfMsg1.broadcastMessages, bitgoVrfDeserializedMsg1],
175
146
  p2pMessages: [],
176
147
  });
177
148
  const backupVrfMsg2 = await backupVrfSession.handleIncomingMessages({
178
- broadcastMessages: [
179
- ...userVrfMsg1.broadcastMessages,
180
- ...deserializeVrfMessages(bitgoVrfMsg1, typesMPCv2_1.MPCv2PartiesEnum.BACKUP).broadcastMessages,
181
- ],
149
+ broadcastMessages: [...userVrfMsg1.broadcastMessages, bitgoVrfDeserializedMsg1],
182
150
  p2pMessages: [],
183
151
  });
152
+ const userSignedVrfMsg2 = await sdk_lib_mpc_1.MPSComms.detachSignMpsMessage(getSingleVrfPayload(userVrfMsg2.p2pMessages.filter((message) => message.to === typesMPCv2_1.MPCv2PartiesEnum.BITGO), 'User VRF round 1 opening for BitGo'), userGpgKey);
153
+ const backupSignedVrfMsg2 = await sdk_lib_mpc_1.MPSComms.detachSignMpsMessage(getSingleVrfPayload(backupVrfMsg2.p2pMessages.filter((message) => message.to === typesMPCv2_1.MPCv2PartiesEnum.BITGO), 'Backup VRF round 1 opening for BitGo'), backupGpgKey);
184
154
  const round2Sender = (0, eddsaMPCv2KeyGenSender_1.KeyGenSenderForEnterprise)(this.bitgo, params.enterprise);
185
- const { sessionId: sessionIdRound2, commonPublicKeychain, bitgoMsg2, bitgoVrfMsg2, } = await round2Sender(public_types_1.MPCv2KeyGenStateEnum['MPCv2-R2'], {
155
+ const { sessionId: sessionIdRound2, commonPublicKeychain, bitgoMsg2, bitgoVrfMsgToUser, bitgoVrfMsgToBackup, } = await round2Sender(public_types_1.MPCv2KeyGenStateEnum['MPCv2-R2'], {
186
156
  sessionId,
187
157
  userMsg2: userSignedMsg2,
188
158
  backupMsg2: backupSignedMsg2,
189
- userVrfMsg2: serializeVrfMessages(userVrfMsg2),
190
- backupVrfMsg2: serializeVrfMessages(backupVrfMsg2),
159
+ userVrfMsg2: userSignedVrfMsg2,
160
+ backupVrfMsg2: backupSignedVrfMsg2,
191
161
  });
192
162
  assert_1.default.equal(sessionId, sessionIdRound2, 'Round 1 and round 2 session IDs do not match');
193
- (0, assert_1.default)(bitgoVrfMsg2, 'BitGo VRF message 2 not found in round 2 response');
194
- // VRF finalizes locally after the second existing MPCv2 round.
163
+ (0, assert_1.default)(bitgoVrfMsgToUser, 'BitGo VRF message to user not found in round 2 response');
164
+ (0, assert_1.default)(bitgoVrfMsgToBackup, 'BitGo VRF message to backup not found in round 2 response');
165
+ // VRF finalizes locally after the second existing MPCv2 round. BitGo's openings are encrypted
166
+ // to the recipient party's GPG key and signed by BitGo's key.
167
+ const bitgoVrfOpeningToUser = await decryptBitgoVrfOpening(bitgoVrfMsgToUser, userGpgKey, bitgoKeyObj);
168
+ const bitgoVrfOpeningToBackup = await decryptBitgoVrfOpening(bitgoVrfMsgToBackup, backupGpgKey, bitgoKeyObj);
195
169
  await userVrfSession.handleIncomingMessages({
196
170
  broadcastMessages: [],
197
171
  p2pMessages: [
198
- ...userVrfMsg2.p2pMessages.filter((message) => message.to === typesMPCv2_1.MPCv2PartiesEnum.USER),
199
172
  ...backupVrfMsg2.p2pMessages.filter((message) => message.to === typesMPCv2_1.MPCv2PartiesEnum.USER),
200
- ...deserializeVrfMessages(bitgoVrfMsg2, typesMPCv2_1.MPCv2PartiesEnum.USER).p2pMessages,
173
+ { from: typesMPCv2_1.MPCv2PartiesEnum.BITGO, to: typesMPCv2_1.MPCv2PartiesEnum.USER, payload: bitgoVrfOpeningToUser },
201
174
  ],
202
175
  });
203
176
  await backupVrfSession.handleIncomingMessages({
204
177
  broadcastMessages: [],
205
178
  p2pMessages: [
206
179
  ...userVrfMsg2.p2pMessages.filter((message) => message.to === typesMPCv2_1.MPCv2PartiesEnum.BACKUP),
207
- ...backupVrfMsg2.p2pMessages.filter((message) => message.to === typesMPCv2_1.MPCv2PartiesEnum.BACKUP),
208
- ...deserializeVrfMessages(bitgoVrfMsg2, typesMPCv2_1.MPCv2PartiesEnum.BACKUP).p2pMessages,
180
+ { from: typesMPCv2_1.MPCv2PartiesEnum.BITGO, to: typesMPCv2_1.MPCv2PartiesEnum.BACKUP, payload: bitgoVrfOpeningToBackup },
209
181
  ],
210
182
  });
211
183
  // #endregion
@@ -292,4 +264,4 @@ class EddsaVrfMPCv2Utils extends eddsaMPCv2_1.EddsaMPCv2Utils {
292
264
  }
293
265
  }
294
266
  exports.EddsaVrfMPCv2Utils = EddsaVrfMPCv2Utils;
295
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRkc2FWcmZNUEN2Mi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9iaXRnby91dGlscy90c3MvZWRkc2EvZWRkc2FWcmZNUEN2Mi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUE2Q0Esb0RBYUM7QUFFRCx3REF5QkM7QUFyRkQseURBQWdHO0FBQ2hHLHNEQVE2QjtBQUM3Qiw2REFBOEU7QUFDOUUsb0RBQTRCO0FBQzVCLHlDQUEyQjtBQUMzQiw2Q0FBK0I7QUFDL0IsNkNBQTZDO0FBSzdDLHFEQUF3RDtBQUV4RCw0REFBcUc7QUFDckcseUNBQXlFO0FBQ3pFLDZDQUErQztBQUMvQyxxRUFJa0M7QUFFbEMsb0RBQXVEO0FBQ3ZELDBEQUErRDtBQUUvRCxNQUFNLFVBQVUsR0FBRyxJQUFBLG1CQUFVLEVBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxZQUFZLENBQUMsQ0FBQztBQUNsRCxNQUFNLHVCQUF1QixHQUFHLENBQUMsQ0FBQyxZQUFZLENBQUM7SUFDN0MsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUNMLElBQUksRUFBRSxVQUFVO1FBQ2hCLE9BQU8sRUFBRSxxQkFBWTtLQUN0QixDQUFDO0lBQ0YsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsQ0FBQztDQUM5QixDQUFDLENBQUM7QUFDSCxNQUFNLHdCQUF3QixHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsdUJBQXVCLENBQUMsQ0FBQztBQUlsRSxTQUFnQixvQkFBb0IsQ0FBQyxRQUF3QztJQUMzRSxNQUFNLFNBQVMsR0FBeUI7UUFDdEMsR0FBRyxRQUFRLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzlDLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSTtZQUNsQixPQUFPLEVBQUUsTUFBTSxD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dCB7IERrbHNUeXBlcywgTVBTQ29tbXMsIE1wc0Rlcml2ZSwgTXBzVnJmLCB0eXBlIE1QU1R5cGVzIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWxpYi1tcGMnO1xuaW1wb3J0IHtcbiAgRWRkc2FNUEN2MkRlcml2ZVJvdW5kMVJlcXVlc3QsXG4gIEVkZHNhTVBDdjJEZXJpdmVSb3VuZDFSZXNwb25zZSxcbiAgRWRkc2FNUEN2MkRlcml2ZVJvdW5kMlJlcXVlc3QsXG4gIEVkZHNhTVBDdjJEZXJpdmVSb3VuZDJSZXNwb25zZSxcbiAgTVBDdjJLZXlHZW5TdGF0ZUVudW0sXG4gIHR5cGUgRWRkc2FNUEN2MktleUdlblJvdW5kMVJlc3BvbnNlLFxuICB0eXBlIEVkZHNhTVBDdjJLZXlHZW5Sb3VuZDJSZXNwb25zZSxcbn0gZnJvbSAnQGJpdGdvL3B1YmxpYy10eXBlcyc7XG5pbXBvcnQgeyBEZXJpdmVkRnJvbVBhcmVudFdpdGhIYXJkZW5lZFBhdGggfSBmcm9tICdAYml0Z28tYmV0YS9zZGstbGliLXNhZmVzJztcbmltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCAqIGFzIHQgZnJvbSAnaW8tdHMnO1xuaW1wb3J0ICogYXMgcGdwIGZyb20gJ29wZW5wZ3AnO1xuaW1wb3J0IHsgTm9uRW1wdHlTdHJpbmcgfSBmcm9tICdpby10cy10eXBlcyc7XG5cbmltcG9ydCB0eXBlIHsgS2V5Y2hhaW5zVHJpcGxldCB9IGZyb20gJy4uLy4uLy4uL2Jhc2VDb2luJztcbmltcG9ydCB0eXBlIHsgRGVjcnlwdGVkUmV0cm9maXRQYXlsb2FkIH0gZnJvbSAnLi4vLi4vLi4va2V5Y2hhaW4vaUtleWNoYWlucyc7XG5pbXBvcnQgdHlwZSB7IEVuY3J5cHRpb25WZXJzaW9uIH0gZnJvbSAnLi4vLi4vLi4vLi4vYXBpJztcbmltcG9ydCB7IGdlbmVyYXRlR1BHS2V5UGFpciB9IGZyb20gJy4uLy4uL29wZW5ncGdVdGlscyc7XG5pbXBvcnQgdHlwZSB7IFdlYmF1dGhuS2V5RW5jcnlwdGlvbkluZm8gfSBmcm9tICcuLi8uLi8uLi9rZXljaGFpbic7XG5pbXBvcnQgeyBlbnZSZXF1aXJlc0JpdGdvUHViR3BnS2V5Q29uZmlnLCBpc0JpdGdvRWRkc2FNcGN2MlB1YktleSB9IGZyb20gJy4uLy4uLy4uL3Rzcy9iaXRnb1B1YktleXMnO1xuaW1wb3J0IHsgYmFzZTY0U3RyaW5nLCBib3VuZGVkSW50LCBkZWNvZGVXaXRoQ29kZWMgfSBmcm9tICcuLi8uLi9jb2RlY3MnO1xuaW1wb3J0IHsgRWRkc2FNUEN2MlV0aWxzIH0gZnJvbSAnLi9lZGRzYU1QQ3YyJztcbmltcG9ydCB7XG4gIEVkZHNhTVBDdjJEZXJpdmVLZXlTZW5kRm4sXG4gIEtleUdlblNlbmRlckZvckVudGVycHJpc2UsXG4gIEtleUdlblNlbmRlckZvclNhZmVDaGlsZCxcbn0gZnJvbSAnLi9lZGRzYU1QQ3YyS2V5R2VuU2VuZGVyJztcbmltcG9ydCB0eXBlIHsgRWRkc2FNUEN2MlZyZktleUdlblJlc3BvbnNlRmllbGRzIH0gZnJvbSAnLi90eXBlc0VkZHNhTVBDdjInO1xuaW1wb3J0IHsgTVBDdjJQYXJ0aWVzRW51bSB9IGZyb20gJy4uL2VjZHNhL3R5cGVzTVBDdjInO1xuaW1wb3J0IHsgYnVpbGRTYWZlTXBjS2V5RW52ZWxvcGVzIH0gZnJvbSAnLi4va2V5U2hhcmVFbnZlbG9wZSc7XG5cbmNvbnN0IFZyZlBhcnR5SWQgPSBib3VuZGVkSW50KDAsIDIsICdWcmZQYXJ0eUlkJyk7XG5jb25zdCBWcmZNZXNzYWdlVHJhbnNmZXJDb2RlYyA9IHQuaW50ZXJzZWN0aW9uKFtcbiAgdC50eXBlKHtcbiAgICBmcm9tOiBWcmZQYXJ0eUlkLFxuICAgIHBheWxvYWQ6IGJhc2U2NFN0cmluZyxcbiAgfSksXG4gIHQucGFydGlhbCh7IHRvOiBWcmZQYXJ0eUlkIH0pLFxuXSk7XG5jb25zdCBWcmZNZXNzYWdlVHJhbnNmZXJzQ29kZWMgPSB0LmFycmF5KFZyZk1lc3NhZ2VUcmFuc2ZlckNvZGVjKTtcblxudHlwZSBWcmZNZXNzYWdlVHJhbnNmZXIgPSB0LlR5cGVPZjx0eXBlb2YgVnJmTWVzc2FnZVRyYW5zZmVyQ29kZWM+O1xuXG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXplVnJmTWVzc2FnZXMobWVzc2FnZXM6IERrbHNUeXBlcy5EZXNlcmlhbGl6ZWRNZXNzYWdlcyk6IHN0cmluZyB7XG4gIGNvbnN0IHRyYW5zZmVyczogVnJmTWVzc2FnZVRyYW5zZmVyW10gPSBbXG4gICAgLi4ubWVzc2FnZXMuYnJvYWRjYXN0TWVzc2FnZXMubWFwKChtZXNzYWdlKSA9PiAoe1xuICAgICAgZnJvbTogbWVzc2FnZS5mcm9tLFxuICAgICAgcGF5bG9hZDogQnVmZmVyLmZyb20obWVzc2FnZS5wYXlsb2FkKS50b1N0cmluZygnYmFzZTY0JyksXG4gICAgfSkpLFxuICAgIC4uLm1lc3NhZ2VzLnAycE1lc3NhZ2VzLm1hcCgobWVzc2FnZSkgPT4gKHtcbiAgICAgIGZyb206IG1lc3NhZ2UuZnJvbSxcbiAgICAgIHRvOiBtZXNzYWdlLnRvLFxuICAgICAgcGF5bG9hZDogQnVmZmVyLmZyb20obWVzc2FnZS5wYXlsb2FkKS50b1N0cmluZygnYmFzZTY0JyksXG4gICAgfSkpLFxuICBdO1xuICByZXR1cm4gQnVmZmVyLmZyb20oSlNPTi5zdHJpbmdpZnkodHJhbnNmZXJzKSkudG9TdHJpbmcoJ2Jhc2U2NCcpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVzZXJpYWxpemVWcmZNZXNzYWdlcyhibG9iOiBzdHJpbmcsIGZvclBhcnR5OiBudW1iZXIpOiBEa2xzVHlwZXMuRGVzZXJpYWxpemVkTWVzc2FnZXMge1xuICBsZXQgcGFyc2VkOiB1bmtub3duO1xuICB0cnkge1xuICAgIHBhcnNlZCA9IEpTT04ucGFyc2UoQnVmZmVyLmZyb20oYmxvYiwgJ2Jhc2U2NCcpLnRvU3RyaW5nKCkpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnN0IHJlYXNvbiA9IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogJ21hbGZvcm1lZCBKU09OJztcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgVlJGIERLRyBtZXNzYWdlIGJsb2I6ICR7cmVhc29ufWApO1xuICB9XG5cbiAgY29uc3QgdHJhbnNmZXJzID0gZGVjb2RlV2l0aENvZGVjKFZyZk1lc3NhZ2VUcmFuc2ZlcnNDb2RlYywgcGFyc2VkLCAnVlJGIERLRyBtZXNzYWdlIGJsb2InKTtcbiAgcmV0dXJuIHtcbiAgICBicm9hZGNhc3RNZXNzYWdlczogdHJhbnNmZXJzXG4gICAgICAuZmlsdGVyKChtZXNzYWdlKSA9PiBtZXNzYWdlLnRvID09PSB1bmRlZmluZWQpXG4gICAgICAubWFwKChtZXNzYWdlKSA9PiAoe1xuICAgICAgICBmcm9tOiBtZXNzYWdlLmZyb20sXG4gICAgICAgIHBheWxvYWQ6IG5ldyBVaW50OEFycmF5KEJ1ZmZlci5mcm9tKG1lc3NhZ2UucGF5bG9hZCwgJ2Jhc2U2NCcpKSxcbiAgICAgIH0pKSxcbiAgICBwMnBNZXNzYWdlczogdHJhbnNmZXJzXG4gICAgICAuZmlsdGVyKChtZXNzYWdlKTogbWVzc2FnZSBpcyBWcmZNZXNzYWdlVHJhbnNmZXIgJiB7IHRvOiBudW1iZXIgfSA9PiBtZXNzYWdlLnRvID09PSBmb3JQYXJ0eSlcbiAgICAgIC5tYXAoKG1lc3NhZ2UpID0+ICh7XG4gICAgICAgIGZyb206IG1lc3NhZ2UuZnJvbSxcbiAgICAgICAgdG86IG1lc3NhZ2UudG8sXG4gICAgICAgIHBheWxvYWQ6IG5ldyBVaW50OEFycmF5KEJ1ZmZlci5mcm9tKG1lc3NhZ2UucGF5bG9hZCwgJ2Jhc2U2NCcpKSxcbiAgICAgIH0pKSxcbiAgfTtcbn1cblxuLyoqXG4gKiBFZERTQSBNUEN2MiBrZXkgZ2VuZXJhdGlvbiBmb3Igc2FmZSByb290cy4gVGhlIHR3by1yb3VuZCBNUFMgVlJGIERLRyByaWRlc1xuICogdGhlIGV4aXN0aW5nIE1QQ3YyLVIxL1IyIHBheWxvYWRzIGFuZCBpcyBvbmx5IHNlbGVjdGVkIHdoZW4gc2FmZUlkIGlzIHNldC5cbiAqL1xuZXhwb3J0IGNsYXNzIEVkZHNhVnJmTVBDdjJVdGlscyBleHRlbmRzIEVkZHNhTVBDdjJVdGlscyB7XG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBhc3luYyBjcmVhdGVLZXljaGFpbnMocGFyYW1zOiB7XG4gICAgcGFzc3BocmFzZTogc3RyaW5nO1xuICAgIGVudGVycHJpc2U6IHN0cmluZztcbiAgICBvcmlnaW5hbFBhc3Njb2RlRW5jcnlwdGlvbkNvZGU/OiBzdHJpbmc7XG4gICAgcmV0cm9maXQ/OiBEZWNyeXB0ZWRSZXRyb2ZpdFBheWxvYWQ7XG4gICAgd2ViYXV0aG5JbmZvPzogV2ViYXV0aG5LZXlFbmNyeXB0aW9uSW5mbztcbiAgICBlbmNyeXB0aW9uVmVyc2lvbj86IEVuY3J5cHRpb25WZXJzaW9uO1xuICAgIHNhZmVJZDogc3RyaW5nO1xuICB9KTogUHJvbWlzZTxLZXljaGFpbnNUcmlwbGV0PiB7XG4gICAgY29uc3QgeyB1c2VyRGtnLCBiYWNrdXBEa2cgfSA9IGF3YWl0IHRoaXMuZ2V0VXNlckFuZEJhY2t1cFNlc3Npb24ocGFyYW1zLnJldHJvZml0KTtcbiAgICBjb25zdCB1c2VyVnJmU2Vzc2lvbiA9IG5ldyBNcHNWcmYuVnJmRGtnKDMsIDIsIE1QQ3YyUGFydGllc0VudW0uVVNFUik7XG4gICAgY29uc3QgYmFja3VwVnJmU2Vzc2lvbiA9IG5ldyBNcHNWcmYuVnJmRGtnKDMsIDIsIE1QQ3YyUGFydGllc0VudW0uQkFDS1VQKTtcblxuICAgIGNvbnN0IHVzZXJLZXlQYWlyID0gYXdhaXQgZ2VuZXJhdGVHUEdLZXlQYWlyKCdlZDI1NTE5Jyk7XG4gICAgY29uc3QgdXNlckdwZ0tleSA9IGF3YWl0IHBncC5yZWFkUHJpdmF0ZUtleSh7IGFybW9yZWRLZXk6IHVzZXJLZXlQYWlyLnByaXZhdGVLZXkgfSk7XG4gICAgY29uc3QgdXNlckdwZ1B1YmxpY0tleSA9IHVzZXJLZXlQYWlyLnB1YmxpY0tleTtcbiAgICBjb25zdCBbdXNlclBrLCB1c2VyU2tdID0gYXdhaXQgTVBTQ29tbXMuZXh0cmFjdEVkMjU1MTlLZXlQYWlyKHVzZXJHcGdLZXkpO1xuXG4gICAgY29uc3QgYmFja3VwS2V5UGFpciA9IGF3YWl0IGdlbmVyYXRlR1BHS2V5UGFpcignZWQyNTUxOScpO1xuICAgIGNvbnN0IGJhY2t1cEdwZ0tleSA9IGF3YWl0IHBncC5yZWFkUHJpdmF0ZUtleSh7IGFybW9yZWRLZXk6IGJhY2t1cEtleVBhaXIucHJpdmF0ZUtleSB9KTtcbiAgICBjb25zdCBiYWNrdXBHcGdQdWJsaWNLZXkgPSBiYWNrdXBLZXlQYWlyLnB1YmxpY0tleTtcbiAgICBjb25zdCBbYmFja3VwUGssIGJhY2t1cFNrXSA9IGF3YWl0IE1QU0NvbW1zLmV4dHJhY3RFZDI1NTE5S2V5UGFpcihiYWNrdXBHcGdLZXkpO1xuXG4gICAgY29uc3QgeyBlZGRzYU1wY3YyUHVibGljS2V5IH0gPSBhd2FpdCB0aGlzLmdldEJpdGdvR3BnUHVia2V5QmFzZWRPbkZlYXR1cmVGbGFncyhwYXJhbXMuZW50ZXJwcmlzZSwgdHJ1ZSk7XG4gICAgY29uc3QgYml0Z29QdWJsaWNHcGdLZXkgPSBlZGRzYU1wY3YyUHVibGljS2V5ID8/IHRoaXMuYml0Z29FZGRzYU1wY3YyUHVibGljR3BnS2V5O1xuICAgIGFzc2VydChiaXRnb1B1YmxpY0dwZ0tleSwgJ0ZhaWxlZCB0byBnZXQgQml0R28gRWREU0EgTVBDdjIgR1BHIHB1YmxpYyBrZXknKTtcbiAgICBjb25zdCBiaXRnb1B1YmxpY0dwZ0tleUFybW9yZWQgPSBiaXRnb1B1YmxpY0dwZ0tleS5hcm1vcigpO1xuXG4gICAgaWYgKGVudlJlcXVpcmVzQml0Z29QdWJHcGdLZXlDb25maWcodGhpcy5iaXRnby5nZXRFbnYoKSkpIHtcbiAgICAgIGFzc2VydChpc0JpdGdvRWRkc2FNcGN2MlB1YktleShiaXRnb1B1YmxpY0dwZ0tleUFybW9yZWQpLCAnSW52YWxpZCBCaXRHbyBFZERTQSBNUEN2MiBHUEcgcHVibGljIGtleScpO1xuICAgIH1cblxuICAgIGNvbnN0IGJpdGdvS2V5T2JqID0gYXdhaXQgcGdwLnJlYWRLZXkoeyBhcm1vcmVkS2V5OiBiaXRnb1B1YmxpY0dwZ0tleUFybW9yZWQgfSk7XG4gICAgY29uc3QgYml0Z29QayA9IGF3YWl0IE1QU0NvbW1zLmV4dHJhY3RFZDI1NTE5UHVibGljS2V5KGJpdGdvS2V5T2JqKTtcblxuICAgIC8vICNyZWdpb24gcm91bmQgMVxuICAgIGF3YWl0IHVzZXJEa2cuaW5pdERrZyh1c2VyU2ssIFtiYWNrdXBQaywgYml0Z29Qa10pO1xuICAgIGF3YWl0IGJhY2t1cERrZy5pbml0RGtnKGJhY2t1cFNrLCBbdXNlclBrLCBiaXRnb1BrXSk7XG5cbiAgICBjb25zdCB1c2VyTXNnMSA9IHVzZXJEa2cuZ2V0Rmlyc3RNZXNzYWdlKCk7XG4gICAgY29uc3QgYmFja3VwTXNnMSA9IGJhY2t1cERrZy5nZXRGaXJzdE1lc3NhZ2UoKTtcbiAgICBjb25zdCB1c2VyVnJmTXNnMSA9IGF3YWl0IHVzZXJWcmZTZXNzaW9uLmluaXREa2coKTtcbiAgICBjb25zdCBiYWNrdXBWcmZNc2cxID0gYXdhaXQgYmFja3VwVnJmU2Vzc2lvbi5pbml0RGtnKCk7XG5cbiAgICBjb25zdCB1c2VyU2lnbmVkTXNnMSA9IGF3YWl0IE1QU0NvbW1zLmRldGFjaFNpZ25NcHNNZXNzYWdlKEJ1ZmZlci5mcm9tKHVzZXJNc2cxLnBheWxvYWQpLCB1c2VyR3BnS2V5KTtcbiAgICBjb25zdCBiYWNrdXBTaWduZWRNc2cxID0gYXdhaXQgTVBTQ29tbXMuZGV0YWNoU2lnbk1wc01lc3NhZ2UoQnVmZmVyLmZyb20oYmFja3VwTXNnMS5wYXlsb2FkKSwgYmFja3VwR3BnS2V5KTtcblxuICAgIGFzc2VydChOb25FbXB0eVN0cmluZy5pcyh1c2VyR3BnUHVibGljS2V5KSwgJ1VzZXIgR1BHIHB1YmxpYyBrZXkgaXMgcmVxdWlyZWQnKTtcbiAgICBhc3NlcnQoTm9uRW1wdHlTdHJpbmcuaXMoYmFja3VwR3BnUHVibGljS2V5KSwgJ0JhY2t1cCBHUEcgcHVibGljIGtleSBpcyByZXF1aXJlZCcpO1xuXG4gICAgY29uc3Qgcm91bmQxU2VuZGVyID0gS2V5R2VuU2VuZGVyRm9yRW50ZXJwcmlzZTxFZGRzYU1QQ3YyS2V5R2VuUm91bmQxUmVzcG9uc2UgJiBFZGRzYU1QQ3YyVnJmS2V5R2VuUmVzcG9uc2VGaWVsZHM+KFxuICAgICAgdGhpcy5iaXRnbyxcbiAgICAgIHBhcmFtcy5lbnRlcnByaXNlLFxuICAgICAgcGFyYW1zLnNhZmVJZFxuICAgICk7XG4gICAgY29uc3QgeyBzZXNzaW9uSWQsIGJpdGdvTXNnMSwgYml0Z29WcmZNc2cxIH0gPSBhd2FpdCByb3VuZDFTZW5kZXIoTVBDdjJLZXlHZW5TdGF0ZUVudW1bJ01QQ3YyLVIxJ10sIHtcbiAgICAgIHVzZXJHcGdQdWJsaWNLZXksXG4gICAgICBiYWNrdXBHcGdQdWJsaWNLZXksXG4gICAgICB1c2VyTXNnMTogdXNlclNpZ25lZE1zZzEsXG4gICAgICBiYWNrdXBNc2cxOiBiYWNrdXBTaWduZWRNc2cxLFxuICAgICAgdXNlclZyZk1zZzE6IHNlcmlhbGl6ZVZyZk1lc3NhZ2VzKHVzZXJWcmZNc2cxKSxcbiAgICAgIGJhY2t1cFZyZk1zZzE6IHNlcmlhbGl6ZVZyZk1lc3NhZ2VzKGJhY2t1cFZyZk1zZzEpLFxuICAgICAgLi4uKHBhcmFtcy5yZXRyb2ZpdD8ud2FsbGV0SWQgPyB7IHdhbGxldElkOiBwYXJhbXMucmV0cm9maXQud2FsbGV0SWQgfSA6IHt9KSxcbiAgICB9KTtcbiAgICBhc3NlcnQoYml0Z29WcmZNc2cxLCAnQml0R28gVlJGIG1lc3NhZ2UgMSBub3QgZm91bmQgaW4gcm91bmQgMSByZXNwb25zZScpO1xuICAgIC8vICNlbmRyZWdpb25cblxuICAgIC8vICNyZWdpb24gcm91bmQgMlxuICAgIGNvbnN0IGJpdGdvUmF3TXNnMUJ5dGVzID0gYXdhaXQgTVBTQ29tbXMudmVyaWZ5TXBzTWVzc2FnZShiaXRnb01zZzEsIGJpdGdvS2V5T2JqKTtcbiAgICBjb25zdCBiaXRnb0Rlc2VyaWFsaXplZE1zZzE6IE1QU1R5cGVzLkRlc2VyaWFsaXplZE1lc3NhZ2UgPSB7XG4gICAgICBmcm9tOiBNUEN2MlBhcnRpZXNFbnVtLkJJVEdPLFxuICAgICAgcGF5bG9hZDogbmV3IFVpbnQ4QXJyYXkoYml0Z29SYXdNc2cxQnl0ZXMpLFxuICAgIH07XG4gICAgY29uc3Qgcm91bmQxTWVzc2FnZXM6IE1QU1R5cGVzLkRlc2VyaWFsaXplZE1lc3NhZ2VzID0gW3VzZXJNc2cxLCBiYWNrdXBNc2cxLCBiaXRnb0Rlc2VyaWFsaXplZE1zZzFdO1xuXG4gICAgY29uc3QgdXNlclJvdW5kMk1zZ3MgPSB1c2VyRGtnLmhhbmRsZUluY29taW5nTWVzc2FnZXMocm91bmQxTWVzc2FnZXMpO1xuICAgIGNvbnN0IGJhY2t1cFJvdW5kMk1zZ3MgPSBiYWNrdXBEa2cuaGFuZGxlSW5jb21pbmdNZXNzYWdlcyhyb3VuZDFNZXNzYWdlcyk7XG4gICAgYXNzZXJ0KHVzZXJSb3VuZDJNc2dzLmxlbmd0aCA9PT0gMSwgJ1VzZXIgcm91bmQgMSBzaG91bGQgcHJvZHVjZSBleGFjdGx5IG9uZSByb3VuZCAyIG1lc3NhZ2UnKTtcbiAgICBhc3NlcnQoYmFja3VwUm91bmQyTXNncy5sZW5ndGggPT09IDEsICdCYWNrdXAgcm91bmQgMSBzaG91bGQgcHJvZHVjZSBleGFjdGx5IG9uZSByb3VuZCAyIG1lc3NhZ2UnKTtcblxuICAgIGNvbnN0IHVzZXJNc2cyID0gdXNlclJvdW5kMk1zZ3NbMF07XG4gICAgY29uc3QgYmFja3VwTXNnMiA9IGJhY2t1cFJvdW5kMk1zZ3NbMF07XG4gICAgY29uc3QgdXNlclNpZ25lZE1zZzIgPSBhd2FpdCBNUFNDb21tcy5kZXRhY2hTaWduTXBzTWVzc2FnZShCdWZmZXIuZnJvbSh1c2VyTXNnMi5wYXlsb2FkKSwgdXNlckdwZ0tleSk7XG4gICAgY29uc3QgYmFja3VwU2lnbmVkTXNnMiA9IGF3YWl0IE1QU0NvbW1zLmRldGFjaFNpZ25NcHNNZXNzYWdlKEJ1ZmZlci5mcm9tKGJhY2t1cE1zZzIucGF5bG9hZCksIGJhY2t1cEdwZ0tleSk7XG5cbiAgICBjb25zdCB1c2VyVnJmTXNnMiA9IGF3YWl0IHVzZXJWcmZTZXNzaW9uLmhhbmRsZUluY29taW5nTWVzc2FnZXMoe1xuICAgICAgYnJvYWRjYXN0TWVzc2FnZXM6IFtcbiAgICAgICAgLi4uYmFja3VwVnJmTXNnMS5icm9hZGNhc3RNZXNzYWdlcyxcbiAgICAgICAgLi4uZGVzZXJpYWxpemVWcmZNZXNzYWdlcyhiaXRnb1ZyZk1zZzEsIE1QQ3YyUGFydGllc0VudW0uVVNFUikuYnJvYWRjYXN0TWVzc2FnZXMsXG4gICAgICBdLFxuICAgICAgcDJwTWVzc2FnZXM6IFtdLFxuICAgIH0pO1xuICAgIGNvbnN0IGJhY2t1cFZyZk1zZzIgPSBhd2FpdCBiYWNrdXBWcmZTZXNzaW9uLmhhbmRsZUluY29taW5nTWVzc2FnZXMoe1xuICAgICAgYnJvYWRjYXN0TWVzc2FnZXM6IFtcbiAgICAgICAgLi4udXNlclZyZk1zZzEuYnJvYWRjYXN0TWVzc2FnZXMsXG4gICAgICAgIC4uLmRlc2VyaWFsaXplVnJmTWVzc2FnZXMoYml0Z29WcmZNc2cxLCBNUEN2MlBhcnRpZXNFbnVtLkJBQ0tVUCkuYnJvYWRjYXN0TWVzc2FnZXMsXG4gICAgICBdLFxuICAgICAgcDJwTWVzc2FnZXM6IFtdLFxuICAgIH0pO1xuXG4gICAgY29uc3Qgcm91bmQyU2VuZGVyID0gS2V5R2VuU2VuZGVyRm9yRW50ZXJwcmlzZTxFZGRzYU1QQ3YyS2V5R2VuUm91bmQyUmVzcG9uc2UgJiBFZGRzYU1QQ3YyVnJmS2V5R2VuUmVzcG9uc2VGaWVsZHM+KFxuICAgICAgdGhpcy5iaXRnbyxcbiAgICAgIHBhcmFtcy5lbnRlcnByaXNlXG4gICAgKTtcbiAgICBjb25zdCB7XG4gICAgICBzZXNzaW9uSWQ6IHNlc3Npb25JZFJvdW5kMixcbiAgICAgIGNvbW1vblB1YmxpY0tleWNoYWluLFxuICAgICAgYml0Z29Nc2cyLFxuICAgICAgYml0Z29WcmZNc2cyLFxuICAgIH0gPSBhd2FpdCByb3VuZDJTZW5kZXIoTVBDdjJLZXlHZW5TdGF0ZUVudW1bJ01QQ3YyLVIyJ10sIHtcbiAgICAgIHNlc3Npb25JZCxcbiAgICAgIHVzZXJNc2cyOiB1c2VyU2lnbmVkTXNnMixcbiAgICAgIGJhY2t1cE1zZzI6IGJhY2t1cFNpZ25lZE1zZzIsXG4gICAgICB1c2VyVnJmTXNnMjogc2VyaWFsaXplVnJmTWVzc2FnZXModXNlclZyZk1zZzIpLFxuICAgICAgYmFja3VwVnJmTXNnMjogc2VyaWFsaXplVnJmTWVzc2FnZXMoYmFja3VwVnJmTXNnMiksXG4gICAgfSk7XG4gICAgYXNzZXJ0LmVxdWFsKHNlc3Npb25JZCwgc2Vzc2lvbklkUm91bmQyLCAnUm91bmQgMSBhbmQgcm91bmQgMiBzZXNzaW9uIElEcyBkbyBub3QgbWF0Y2gnKTtcbiAgICBhc3NlcnQoYml0Z29WcmZNc2cyLCAnQml0R28gVlJGIG1lc3NhZ2UgMiBub3QgZm91bmQgaW4gcm91bmQgMiByZXNwb25zZScpO1xuXG4gICAgLy8gVlJGIGZpbmFsaXplcyBsb2NhbGx5IGFmdGVyIHRoZSBzZWNvbmQgZXhpc3RpbmcgTVBDdjIgcm91bmQuXG4gICAgYXdhaXQgdXNlclZyZlNlc3Npb24uaGFuZGxlSW5jb21pbmdNZXNzYWdlcyh7XG4gICAgICBicm9hZGNhc3RNZXNzYWdlczogW10sXG4gICAgICBwMnBNZXNzYWdlczogW1xuICAgICAgICAuLi51c2VyVnJmTXNnMi5wMnBNZXNzYWdlcy5maWx0ZXIoKG1lc3NhZ2UpID0+IG1lc3NhZ2UudG8gPT09IE1QQ3YyUGFydGllc0VudW0uVVNFUiksXG4gICAgICAgIC4uLmJhY2t1cFZyZk1zZzIucDJwTWVzc2FnZXMuZmlsdGVyKChtZXNzYWdlKSA9PiBtZXNzYWdlLnRvID09PSBNUEN2MlBhcnRpZXNFbnVtLlVTRVIpLFxuICAgICAgICAuLi5kZXNlcmlhbGl6ZVZyZk1lc3NhZ2VzKGJpdGdvVnJmTXNnMiwgTVBDdjJQYXJ0aWVzRW51bS5VU0VSKS5wMnBNZXNzYWdlcyxcbiAgICAgIF0sXG4gICAgfSk7XG4gICAgYXdhaXQgYmFja3VwVnJmU2Vzc2lvbi5oYW5kbGVJbmNvbWluZ01lc3NhZ2VzKHtcbiAgICAgIGJyb2FkY2FzdE1lc3NhZ2VzOiBbXSxcbiAgICAgIHAycE1lc3NhZ2VzOiBbXG4gICAgICAgIC4uLnVzZXJWcmZNc2cyLnAycE1lc3NhZ2VzLmZpbHRlcigobWVzc2FnZSkgPT4gbWVzc2FnZS50byA9PT0gTVBDdjJQYXJ0aWVzRW51bS5CQUNLVVApLFxuICAgICAgICAuLi5iYWNrdXBWcmZNc2cyLnAycE1lc3NhZ2VzLmZpbHRlcigobWVzc2FnZSkgPT4gbWVzc2FnZS50byA9PT0gTVBDdjJQYXJ0aWVzRW51bS5CQUNLVVApLFxuICAgICAgICAuLi5kZXNlcmlhbGl6ZVZyZk1lc3NhZ2VzKGJpdGdvVnJmTXNnMiwgTVBDdjJQYXJ0aWVzRW51bS5CQUNLVVApLnAycE1lc3NhZ2VzLFxuICAgICAgXSxcbiAgICB9KTtcbiAgICAvLyAjZW5kcmVnaW9uXG5cbiAgICAvLyAjcmVnaW9uIGtleWNoYWluIGNyZWF0aW9uXG4gICAgY29uc3QgYml0Z29SYXdNc2cyQnl0ZXMgPSBhd2FpdCBNUFNDb21tcy52ZXJpZnlNcHNNZXNzYWdlKGJpdGdvTXNnMiwgYml0Z29LZXlPYmopO1xuICAgIGNvbnN0IGJpdGdvRGVzZXJpYWxpemVkTXNnMjogTVBTVHlwZXMuRGVzZXJpYWxpemVkTWVzc2FnZSA9IHtcbiAgICAgIGZyb206IE1QQ3YyUGFydGllc0VudW0uQklUR08sXG4gICAgICBwYXlsb2FkOiBuZXcgVWludDhBcnJheShiaXRnb1Jhd01zZzJCeXRlcyksXG4gICAgfTtcbiAgICBjb25zdCByb3VuZDJNZXNzYWdlczogTVBTVHlwZXMuRGVzZXJpYWxpemVkTWVzc2FnZXMgPSBbdXNlck1zZzIsIGJhY2t1cE1zZzIsIGJpdGdvRGVzZXJpYWxpemVkTXNnMl07XG5cbiAgICBjb25zdCB1c2VyRmluYWxNc2dzID0gdXNlckRrZy5oYW5kbGVJbmNvbWluZ01lc3NhZ2VzKHJvdW5kMk1lc3NhZ2VzKTtcbiAgICBjb25zdCBiYWNrdXBGaW5hbE1zZ3MgPSBiYWNrdXBEa2cuaGFuZGxlSW5jb21pbmdNZXNzYWdlcyhyb3VuZDJNZXNzYWdlcyk7XG4gICAgYXNzZXJ0KHVzZXJGaW5hbE1zZ3MubGVuZ3RoID09PSAwLCAnV0FTTSByb3VuZCAyIHNob3VsZCBwcm9kdWNlIG5vIG91dHB1dCBtZXNzYWdlcyBmb3IgdXNlcicpO1xuICAgIGFzc2VydChiYWNrdXBGaW5hbE1zZ3MubGVuZ3RoID09PSAwLCAnV0FTTSByb3VuZCAyIHNob3VsZCBwcm9kdWNlIG5vIG91dHB1dCBtZXNzYWdlcyBmb3IgYmFja3VwJyk7XG5cbiAgICBjb25zdCB1c2VyQ29tbW9uS2V5Y2hhaW4gPSB1c2VyRGtnLmdldENvbW1vbktleWNoYWluKCk7XG4gICAgY29uc3QgYmFja3VwQ29tbW9uS2V5Y2hhaW4gPSBiYWNrdXBEa2cuZ2V0Q29tbW9uS2V5Y2hhaW4oKTtcbiAgICBhc3NlcnQuZXF1YWwoXG4gICAgICB1c2VyQ29tbW9uS2V5Y2hhaW4sXG4gICAgICBjb21tb25QdWJsaWNLZXljaGFpbixcbiAgICAgICdVc2VyIGNvbXB1dGVkIGtleWNoYWluIGRvZXMgbm90IG1hdGNoIEJpdEdvIGNvbW1vbiBrZXljaGFpbidcbiAgICApO1xuICAgIGFzc2VydC5lcXVhbChcbiAgICAgIGJhY2t1cENvbW1vbktleWNoYWluLFxuICAgICAgY29tbW9uUHVibGljS2V5Y2hhaW4sXG4gICAgICAnQmFja3VwIGNvbXB1dGVkIGtleWNoYWluIGRvZXMgbm90IG1hdGNoIEJpdEdvIGNvbW1vbiBrZXljaGFpbidcbiAgICApO1xuXG4gICAgY29uc3QgeyBlbnZlbG9wZTogdXNlckVudmVsb3BlLCByZWR1Y2VkRW52ZWxvcGU6IHVzZXJSZWR1Y2VkRW52ZWxvcGUgfSA9IGJ1aWxkU2FmZU1wY0tleUVudmVsb3BlcyhcbiAgICAgIHVzZXJEa2cuZ2V0S2V5U2hhcmUoKSxcbiAgICAgIHVzZXJEa2cuZ2V0UmVkdWNlZEtleVNoYXJlKCksXG4gICAgICB1c2VyVnJmU2Vzc2lvbi5nZXRLZXlTaGFyZSgpXG4gICAgKTtcbiAgICBjb25zdCB7IGVudmVsb3BlOiBiYWNrdXBFbnZlbG9wZSwgcmVkdWNlZEVudmVsb3BlOiBiYWNrdXBSZWR1Y2VkRW52ZWxvcGUgfSA9IGJ1aWxkU2FmZU1wY0tleUVudmVsb3BlcyhcbiAgICAgIGJhY2t1cERrZy5nZXRLZXlTaGFyZSgpLFxuICAgICAgYmFja3VwRGtnLmdldFJlZHVjZWRLZXlTaGFyZSgpLFxuICAgICAgYmFja3VwVnJmU2Vzc2lvbi5nZXRLZXlTaGFyZSgpXG4gICAgKTtcblxuICAgIGNvbnN0IHVzZXJLZXljaGFpblByb21pc2UgPSB0aGlzLmFkZFVzZXJLZXljaGFpbihcbiAgICAgIHVzZXJDb21tb25LZXljaGFpbixcbiAgICAgIHVzZXJFbnZlbG9wZSxcbiAgICAgIHVzZXJSZWR1Y2VkRW52ZWxvcGUsXG4gICAgICBwYXJhbXMucGFzc3BocmFzZSxcbiAgICAgIHBhcmFtcy5vcmlnaW5hbFBhc3Njb2RlRW5jcnlwdGlvbkNvZGUsXG4gICAgICBwYXJhbXMud2ViYXV0aG5JbmZvLFxuICAgICAgcGFyYW1zLmVuY3J5cHRpb25WZXJzaW9uLFxuICAgICAgcGFyYW1zLmVudGVycHJpc2UsXG4gICAgICBwYXJhbXMuc2FmZUlkXG4gICAgKTtcbiAgICBjb25zdCBiYWNrdXBLZXljaGFpblByb21pc2UgPSB0aGlzLmFkZEJhY2t1cEtleWNoYWluKFxuICAgICAgYmFja3VwQ29tbW9uS2V5Y2hhaW4sXG4gICAgICBiYWNrdXBFbnZlbG9wZSxcbiAgICAgIGJhY2t1cFJlZHVjZWRFbnZlbG9wZSxcbiAgICAgIHBhcmFtcy5wYXNzcGhyYXNlLFxuICAgICAgcGFyYW1zLm9yaWdpbmFsUGFzc2NvZGVFbmNyeXB0aW9uQ29kZSxcbiAgICAgIHBhcmFtcy5lbmNyeXB0aW9uVmVyc2lvbixcbiAgICAgIHBhcmFtcy5lbnRlcnByaXNlLFxuICAgICAgcGFyYW1zLnNhZmVJZFxuICAgICk7XG4gICAgY29uc3QgYml0Z29LZXljaGFpblByb21pc2UgPSB0aGlzLmFkZEJpdGdvS2V5Y2hhaW4oY29tbW9uUHVibGljS2V5Y2hhaW4sIHBhcmFtcy5zYWZlSWQpO1xuXG4gICAgY29uc3QgW3VzZXJLZXljaGFpbiwgYmFja3VwS2V5Y2hhaW4sIGJpdGdvS2V5Y2hhaW5dID0gYXdhaXQgUHJvbWlzZS5hbGwoW1xuICAgICAgdXNlcktleWNoYWluUHJvbWlzZSxcbiAgICAgIGJhY2t1cEtleWNoYWluUHJvbWlzZSxcbiAgICAgIGJpdGdvS2V5Y2hhaW5Qcm9taXNlLFxuICAgIF0pO1xuICAgIC8vICNlbmRyZWdpb25cblxuICAgIHJldHVybiB7IHVzZXJLZXljaGFpbiwgYmFja3VwS2V5Y2hhaW4sIGJpdGdvS2V5Y2hhaW4gfTtcbiAgfVxuXG4gIGFzeW5jIHNlbmREZXJpdmF0aW9uUm91bmQxQnlTZW5kZXIoXG4gICAgc2VuZGVyRm46IEVkZHNhTVBDdjJEZXJpdmVLZXlTZW5kRm48RWRkc2FNUEN2MkRlcml2ZVJvdW5kMVJlc3BvbnNlPixcbiAgICB1c2VyR3BnUHVibGljS2V5OiBzdHJpbmcsXG4gICAgdXNlck1zZzE6IE1QU1R5cGVzLk1QU1NpZ25lZE1lc3NhZ2UsXG4gICAgcGFyZW50S2V5SWQ6IHN0cmluZyxcbiAgICBkZXJpdmF0aW9uSW5kZXg6IG51bWJlclxuICApOiBQcm9taXNlPEVkZHNhTVBDdjJEZXJpdmVSb3VuZDFSZXNwb25zZT4ge1xuICAgIGNvbnN0IHJlcXVlc3QgPSBkZWNvZGVXaXRoQ29kZWMoXG4gICAgICBFZGRzYU1QQ3YyRGVyaXZlUm91bmQxUmVxdWVzdCxcbiAgICAgIHsgdXNlckdwZ1B1YmxpY0tleSwgdXNlck1zZzEsIHBhcmVudEtleUlkLCBkZXJpdmF0aW9uSW5kZXggfSxcbiAgICAgICdFZGRzYU1QQ3YyRGVyaXZlUm91bmQxUmVxdWVzdCdcbiAgICApO1xuICAgIGFzc2VydChyZXF1ZXN0LmRlcml2YXRpb25JbmRleCA8PSAweDdmZmZmZmZmLCAnRGVyaXZhdGlvbiBpbmRleCBtdXN0IGZpdCBhIGhhcmRlbmVkIGNoaWxkIHBhdGgnKTtcbiAgICByZXR1cm4gZGVjb2RlV2l0aENvZGVjKFxuICAgICAgRWRkc2FNUEN2MkRlcml2ZVJvdW5kMVJlc3BvbnNlLFxuICAgICAgYXdhaXQgc2VuZGVyRm4oTVBDdjJLZXlHZW5TdGF0ZUVudW1bJ01QQ3YyRGVyaXZlLVIxJ10sIHJlcXVlc3QpLFxuICAgICAgJ0VkZHNhTVBDdjJEZXJpdmVSb3VuZDFSZXNwb25zZSdcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgc2VuZERlcml2YXRpb25Sb3VuZDJCeVNlbmRlcihcbiAgICBzZW5kZXJGbjogRWRkc2FNUEN2MkRlcml2ZUtleVNlbmRGbjxFZGRzYU1QQ3YyRGVyaXZlUm91bmQyUmVzcG9uc2U+LFxuICAgIHNlc3Npb25JZDogc3RyaW5nLFxuICAgIHVzZXJNc2cyOiBNUFNUeXBlcy5NUFNTaWduZWRNZXNzYWdlXG4gICk6IFByb21pc2U8RWRkc2FNUEN2MkRlcml2ZVJvdW5kMlJlc3BvbnNlPiB7XG4gICAgY29uc3QgcmVxdWVzdCA9IGRlY29kZVdpdGhDb2RlYyhcbiAgICAgIEVkZHNhTVBDdjJEZXJpdmVSb3VuZDJSZXF1ZXN0LFxuICAgICAgeyBzZXNzaW9uSWQsIHVzZXJNc2cyIH0sXG4gICAgICAnRWRkc2FNUEN2MkRlcml2ZVJvdW5kMlJlcXVlc3QnXG4gICAgKTtcbiAgICByZXR1cm4gZGVjb2RlV2l0aENvZGVjKFxuICAgICAgRWRkc2FNUEN2MkRlcml2ZVJvdW5kMlJlc3BvbnNlLFxuICAgICAgYXdhaXQgc2VuZGVyRm4oTVBDdjJLZXlHZW5TdGF0ZUVudW1bJ01QQ3YyRGVyaXZlLVIyJ10sIHJlcXVlc3QpLFxuICAgICAgJ0VkZHNhTVBDdjJEZXJpdmVSb3VuZDJSZXNwb25zZSdcbiAgICApO1xuICB9XG5cbiAgLyoqIERlcml2ZXMgdGhlIHVzZXIgc2lnbmluZyBzaGFyZSB3aXRoIEJpdEdvIGFuZCByZWdpc3RlcnMgYWxsIHRocmVlIHNhZmUgY2hpbGRyZW4uICovXG4gIGFzeW5jIGNyZWF0ZVNhZmVDaGlsZEtleWNoYWlucyhwYXJhbXM6IHtcbiAgICBwYXNzcGhyYXNlOiBzdHJpbmc7XG4gICAgZW50ZXJwcmlzZTogc3RyaW5nO1xuICAgIHNhZmVJZDogc3RyaW5nO1xuICAgIHBhcmVudEtleUlkOiBzdHJpbmc7XG4gICAgZGVyaXZhdGlvbkluZGV4OiBudW1iZXI7XG4gICAgdXNlclJvb3RLZXlJZDogc3RyaW5nO1xuICAgIGJhY2t1cFJvb3RLZXlJZDogc3RyaW5nO1xuICAgIHVzZXJSb290S2V5U2hhcmU6IEJ1ZmZlcjtcbiAgICB1c2VyUm9vdFZyZktleVNoYXJlOiBCdWZmZXI7XG4gICAgb3JpZ2luYWxQYXNzY29kZUVuY3J5cHRpb25Db2RlPzogc3RyaW5nO1xuICAgIHdlYmF1dGhuSW5mbz86IFdlYmF1dGhuS2V5RW5jcnlwdGlvbkluZm87XG4gICAgZW5jcnlwdGlvblZlcnNpb24/OiBFbmNyeXB0aW9uVmVyc2lvbjtcbiAgfSk6IFByb21pc2U8S2V5Y2hhaW5zVHJpcGxldD4ge1xuICAgIGFzc2VydChOb25FbXB0eVN0cmluZy5pcyhwYXJhbXMuc2FmZUlkKSwgJ1NhZmUgSUQgaXMgcmVxdWlyZWQgZm9yIGNoaWxkIGRlcml2YXRpb24nKTtcbiAgICBhc3NlcnQoTm9uRW1wdHlTdHJpbmcuaXMocGFyYW1zLnVzZXJSb290S2V5SWQpLCAnVXNlciByb290IGtleSBJRCBpcyByZXF1aXJlZCBmb3IgY2hpbGQgZGVyaXZhdGlvbicpO1xuICAgIGFzc2VydChOb25FbXB0eVN0cmluZy5pcyhwYXJhbXMuYmFja3VwUm9vdEtleUlkKSwgJ0JhY2t1cCByb290IGtleSBJRCBpcyByZXF1aXJlZCBmb3IgY2hpbGQgZGVyaXZhdGlvbicpO1xuICAgIGFzc2VydChOb25FbXB0eVN0cmluZy5pcyhwYXJhbXMucGFyZW50S2V5SWQpLCAnQml0R28gcm9vdCBrZXkgSUQgaXMgcmVxdWlyZWQgZm9yIGNoaWxkIGRlcml2YXRpb24nKTtcbiAgICBjb25zdCBwYXRoID0gZGVjb2RlV2l0aENvZGVjKFxuICAgICAgRGVyaXZlZEZyb21QYXJlbnRXaXRoSGFyZGVuZWRQYXRoLFxuICAgICAgYG0vJHtwYXJhbXMuZGVyaXZhdGlvbkluZGV4fSdgLFxuICAgICAgJ2Rlcml2ZWRGcm9tUGFyZW50V2l0aFBhdGgnXG4gICAgKTtcblxuICAgIGNvbnN0IHVzZXJLZXlQYWlyID0gYXdhaXQgZ2VuZXJhdGVHUEdLZXlQYWlyKCdlZDI1NTE5Jyk7XG4gICAgY29uc3QgdXNlckdwZ0tleSA9IGF3YWl0IHBncC5yZWFkUHJpdmF0ZUtleSh7IGFybW9yZWRLZXk6IHVzZXJLZXlQYWlyLnByaXZhdGVLZXkgfSk7XG4gICAgY29uc3QgeyBlZGRzYU1wY3YyUHVibGljS2V5IH0gPSBhd2FpdCB0aGlzLmdldEJpdGdvR3BnUHVia2V5QmFzZWRPbkZlYXR1cmVGbGFncyhwYXJhbXMuZW50ZXJwcmlzZSwgdHJ1ZSk7XG4gICAgY29uc3QgYml0Z29QdWJsaWNHcGdLZXkgPSBlZGRzYU1wY3YyUHVibGljS2V5ID8/IHRoaXMuYml0Z29FZGRzYU1wY3YyUHVibGljR3BnS2V5O1xuICAgIGFzc2VydChiaXRnb1B1YmxpY0dwZ0tleSwgJ0ZhaWxlZCB0byBnZXQgQml0R28gRWREU0EgTVBDdjIgR1BHIHB1YmxpYyBrZXknKTtcbiAgICBjb25zdCBiaXRnb1B1YmxpY0dwZ0tleUFybW9yZWQgPSBiaXRnb1B1YmxpY0dwZ0tleS5hcm1vcigpO1xuICAgIGlmIChlbnZSZXF1aXJlc0JpdGdvUHViR3BnS2V5Q29uZmlnKHRoaXMuYml0Z28uZ2V0RW52KCkpKSB7XG4gICAgICBhc3NlcnQoaXNCaXRnb0VkZHNhTXBjdjJQdWJLZXkoYml0Z29QdWJsaWNHcGdLZXlBcm1vcmVkKSwgJ0ludmFsaWQgQml0R28gR1BHIHB1YmxpYyBrZXknKTtcbiAgICB9XG4gICAgY29uc3QgYml0Z29LZXlPYmogPSBhd2FpdCBwZ3AucmVhZEtleSh7IGFybW9yZWRLZXk6IGJpdGdvUHVibGljR3BnS2V5QXJtb3JlZCB9KTtcblxuICAgIGNvbnN0IHVzZXJEZXJpdmVTZXNzaW9uID0gbmV3IE1wc0Rlcml2ZS5EZXJpdmUoXG4gICAgICAzLFxuICAgICAgMixcbiAgICAgIE1QQ3YyUGFydGllc0VudW0uVVNFUixcbiAgICAgIHBhcmFtcy51c2VyUm9vdEtleVNoYXJlLFxuICAgICAgcGFyYW1zLnVzZXJSb290VnJmS2V5U2hhcmUsXG4gICAgICBwYXRoXG4gICAgKTtcblxuICAgIGNvbnN0IHVzZXJNc2cxID0gYXdhaXQgdXNlckRlcml2ZVNlc3Npb24uaW5pdERlcml2ZSgpO1xuICAgIGNvbnN0IHNpZ25lZFVzZXJNc2cxID0gYXdhaXQgTVBTQ29tbXMuZGV0YWNoU2lnbk1wc01lc3NhZ2UodXNlck1zZzEucGF5bG9hZCwgdXNlckdwZ0tleSk7XG4gICAgY29uc3QgeyBzZXNzaW9uSWQsIGJpdGdvTXNnMSB9ID0gYXdhaXQgdGhpcy5zZW5kRGVyaXZhdGlvblJvdW5kMUJ5U2VuZGVyKFxuICAgICAgS2V5R2VuU2VuZGVyRm9yU2FmZUNoaWxkPEVkZHNhTVBDdjJEZXJpdmVSb3VuZDFSZXNwb25zZT4odGhpcy5iaXRnbywgcGFyYW1zLmVudGVycHJpc2UsIHBhcmFtcy5zYWZlSWQpLFxuICAgICAgdXNlcktleVBhaXIucHVibGljS2V5LFxuICAgICAgc2lnbmVkVXNlck1zZzEsXG4gICAgICBwYXJhbXMucGFyZW50S2V5SWQsXG4gICAgICBwYXJhbXMuZGVyaXZhdGlvbkluZGV4XG4gICAgKTtcblxuICAgIGNvbnN0IFt1c2VyTXNnMl0gPSB1c2VyRGVyaXZlU2Vzc2lvbi5oYW5kbGVJbmNvbWluZ01lc3NhZ2VzKFtcbiAgICAgIHsgZnJvbTogTVBDdjJQYXJ0aWVzRW51bS5CSVRHTywgcGF5bG9hZDogYXdhaXQgTVBTQ29tbXMudmVyaWZ5TXBzTWVzc2FnZShiaXRnb01zZzEsIGJpdGdvS2V5T2JqKSB9LFxuICAgIF0pO1xuICAgIGFzc2VydCh1c2VyTXNnMiwgJ1VzZXIgZGVyaXZlIHJvdW5kIDEgbXVzdCBwcm9kdWNlIGEgcm91bmQgMiBtZXNzYWdlJyk7XG4gICAgY29uc3Qgc2lnbmVkVXNlck1zZzIgPSBhd2FpdCBNUFNDb21tcy5kZXRhY2hTaWduTXBzTWVzc2FnZSh1c2VyTXNnMi5wYXlsb2FkLCB1c2VyR3BnS2V5KTtcbiAgICBjb25zdCB7XG4gICAgICBzZXNzaW9uSWQ6IHNlc3Npb25JZFJvdW5kMixcbiAgICAgIGNvbW1vblB1YmxpY0tleWNoYWluLFxuICAgICAgYml0Z29Nc2cyLFxuICAgIH0gPSBhd2FpdCB0aGlzLnNlbmREZXJpdmF0aW9uUm91bmQyQnlTZW5kZXIoXG4gICAgICBLZXlHZW5TZW5kZXJGb3JTYWZlQ2hpbGQ8RWRkc2FNUEN2MkRlcml2ZVJvdW5kMlJlc3BvbnNlPih0aGlzLmJpdGdvLCBwYXJhbXMuZW50ZXJwcmlzZSwgcGFyYW1zLnNhZmVJZCksXG4gICAgICBzZXNzaW9uSWQsXG4gICAgICBzaWduZWRVc2VyTXNnMlxuICAgICk7XG4gICAgYXNzZXJ0LmVxdWFsKHNlc3Npb25JZCwgc2Vzc2lvbklkUm91bmQyLCAnUm91bmQgMSBhbmQgMiBTZXNzaW9uIElEcyBkbyBub3QgbWF0Y2gnKTtcblxuICAgIGNvbnN0IGZpbmFsTWVzc2FnZXMgPSB1c2VyRGVyaXZlU2Vzc2lvbi5oYW5kbGVJbmNvbWluZ01lc3NhZ2VzKFtcbiAgICAgIHsgZnJvbTogTVBDdjJQYXJ0aWVzRW51bS5CSVRHTywgcGF5bG9hZDogYXdhaXQgTVBTQ29tbXMudmVyaWZ5TXBzTWVzc2FnZShiaXRnb01zZzIsIGJpdGdvS2V5T2JqKSB9LFxuICAgIF0pO1xuICAgIGFzc2VydC5lcXVhbChmaW5hbE1lc3NhZ2VzLmxlbmd0aCwgMCwgJ01QUyBkZXJpdmUgcm91bmQgMiBtdXN0IG5vdCBwcm9kdWNlIGFub3RoZXIgbWVzc2FnZScpO1xuICAgIGNvbnN0IGNvbW1vbktleWNoYWluID0gdXNlckRlcml2ZVNlc3Npb24uZ2V0Q29tbW9uS2V5Y2hhaW4oKTtcbiAgICBhc3NlcnQuZXF1YWwoY29tbW9uS2V5Y2hhaW4sIGNvbW1vblB1YmxpY0tleWNoYWluLCAnVXNlciBhbmQgQml0R28gY29tbW9uIGtleWNoYWlucyBkbyBub3QgbWF0Y2gnKTtcblxuICAgIGNvbnN0IFt1c2VyS2V5Y2hhaW4sIGJhY2t1cEtleWNoYWluLCBiaXRnb0tleWNoYWluXSA9IGF3YWl0IFByb21pc2UuYWxsKFtcbiAgICAgIHRoaXMuYWRkVXNlcktleWNoYWluKFxuICAgICAgICBjb21tb25LZXljaGFpbixcbiAgICAgICAgdXNlckRlcml2ZVNlc3Npb24uZ2V0S2V5U2hhcmUoKSxcbiAgICAgICAgdXNlckRlcml2ZVNlc3Npb24uZ2V0UmVkdWNlZEtleVNoYXJlKCksXG4gICAgICAgIHBhcmFtcy5wYXNzcGhyYXNlLFxuICAgICAgICBwYXJhbXMub3JpZ2luYWxQYXNzY29kZUVuY3J5cHRpb25Db2RlLFxuICAgICAgICBwYXJhbXMud2ViYXV0aG5JbmZvLFxuICAgICAgICBwYXJhbXMuZW5jcnlwdGlvblZlcnNpb24sXG4gICAgICAgIHBhcmFtcy5lbnRlcnByaXNlLFxuICAgICAgICBwYXJhbXMuc2FmZUlkLFxuICAgICAgICB7IHBhcmVudEtleUlkOiBwYXJhbXMudXNlclJvb3RLZXlJZCwgaW5kZXg6IHBhcmFtcy5kZXJpdmF0aW9uSW5kZXggfVxuICAgICAgKSxcbiAgICAgIHRoaXMuYWRkQmFja3VwS2V5Y2hhaW4oXG4gICAgICAgIGNvbW1vbktleWNoYWluLFxuICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgcGFyYW1zLnBhc3NwaHJhc2UsXG4gICAgICAgIHBhcmFtcy5vcmlnaW5hbFBhc3Njb2RlRW5jcnlwdGlvbkNvZGUsXG4gICAgICAgIHBhcmFtcy5lbmNyeXB0aW9uVmVyc2lvbixcbiAgICAgICAgcGFyYW1zLmVudGVycHJpc2UsXG4gICAgICAgIHBhcmFtcy5zYWZlSWQsXG4gICAgICAgIHsgcGFyZW50S2V5SWQ6IHBhcmFtcy5iYWNrdXBSb290S2V5SWQsIGluZGV4OiBwYXJhbXMuZGVyaXZhdGlvbkluZGV4IH1cbiAgICAgICksXG4gICAgICB0aGlzLmFkZEJpdGdvS2V5Y2hhaW4oY29tbW9uS2V5Y2hhaW4sIHBhcmFtcy5zYWZlSWQsIHtcbiAgICAgICAgcGFyZW50S2V5SWQ6IHBhcmFtcy5wYXJlbnRLZXlJZCxcbiAgICAgICAgaW5kZXg6IHBhcmFtcy5kZXJpdmF0aW9uSW5kZXgsXG4gICAgICB9KSxcbiAgICBdKTtcbiAgICByZXR1cm4geyB1c2VyS2V5Y2hhaW4sIGJhY2t1cEtleWNoYWluLCBiaXRnb0tleWNoYWluIH07XG4gIH1cbn1cbiJdfQ==
267
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRkc2FWcmZNUEN2Mi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9iaXRnby91dGlscy90c3MvZWRkc2EvZWRkc2FWcmZNUEN2Mi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx5REFBcUY7QUFDckYsc0RBUzZCO0FBQzdCLDZEQUE4RTtBQUM5RSxvREFBNEI7QUFDNUIsNkNBQStCO0FBQy9CLDZDQUE2QztBQUs3QyxxREFBd0Q7QUFFeEQsNERBQXFHO0FBQ3JHLHlDQUErQztBQUMvQyw2Q0FBK0M7QUFDL0MscUVBSWtDO0FBQ2xDLG9EQUF1RDtBQUN2RCwwREFBK0Q7QUFFL0QsZ0dBQWdHO0FBQ2hHLFNBQVMsbUJBQW1CLENBQUMsUUFBbUMsRUFBRSxXQUFtQjtJQUNuRixnQkFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxHQUFHLFdBQVcsbUNBQW1DLENBQUMsQ0FBQztJQUNwRixPQUFPLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7QUFDN0IsQ0FBQztBQUVEOzs7R0FHRztBQUNILEtBQUssVUFBVSxzQkFBc0IsQ0FDbkMsT0FBZ0MsRUFDaEMsUUFBd0IsRUFDeEIsUUFBaUI7SUFFakIsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sR0FBRyxDQUFDLE9BQU8sQ0FBQztRQUNqQyxPQUFPLEVBQUUsTUFBTSxHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUUsY0FBYyxFQUFFLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNuRSxjQUFjLEVBQUUsUUFBUTtRQUN4QixNQUFNLEVBQUUsUUFBUTtLQUNqQixDQUFDLENBQUM7SUFDSCxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BDLE1BQU0sc0JBQVEsQ0FBQyxnQkFB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RUFBRSxXQUFXLEVBQUUsTUFBTSxDQUFDLGVBQWUsRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLGVBQWUsRUFBRSxDQUN2RTtZQUNELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLEVBQUUsTUFBTSxDQUFDLE1BQU0sRUFBRTtnQkFDbkQsV0FBVyxFQUFFLE1BQU0sQ0FBQyxXQUFXO2dCQUMvQixLQUFLLEVBQUUsTUFBTSxDQUFDLGVBQWU7YUFDOUIsQ0FBQztTQUNILENBQUMsQ0FBQztRQUNILE9BQU8sRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBRSxDQUFDO0lBQ3pELENBQUM7Q0FDRjtBQXpYRCxnREF5WEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNUFNDb21tcywgTXBzRGVyaXZlLCBNcHNWcmYsIHR5cGUgTVBTVHlwZXMgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstbGliLW1wYyc7XG5pbXBvcnQge1xuICBFZGRzYU1QQ3YyRGVyaXZlUm91bmQxUmVxdWVzdCxcbiAgRWRkc2FNUEN2MkRlcml2ZVJvdW5kMVJlc3BvbnNlLFxuICBFZGRzYU1QQ3YyRGVyaXZlUm91bmQyUmVxdWVzdCxcbiAgRWRkc2FNUEN2MkRlcml2ZVJvdW5kMlJlc3BvbnNlLFxuICBNUEN2MktleUdlblN0YXRlRW51bSxcbiAgdHlwZSBFZGRzYU1QQ3YyS2V5R2VuUm91bmQxUmVzcG9uc2UsXG4gIHR5cGUgRWRkc2FNUEN2MktleUdlblJvdW5kMlJlc3BvbnNlLFxuICB0eXBlIEVkZHNhTVBDdjJTaWduZWRNZXNzYWdlLFxufSBmcm9tICdAYml0Z28vcHVibGljLXR5cGVzJztcbmltcG9ydCB7IERlcml2ZWRGcm9tUGFyZW50V2l0aEhhcmRlbmVkUGF0aCB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1saWItc2FmZXMnO1xuaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuaW1wb3J0ICogYXMgcGdwIGZyb20gJ29wZW5wZ3AnO1xuaW1wb3J0IHsgTm9uRW1wdHlTdHJpbmcgfSBmcm9tICdpby10cy10eXBlcyc7XG5cbmltcG9ydCB0eXBlIHsgS2V5Y2hhaW5zVHJpcGxldCB9IGZyb20gJy4uLy4uLy4uL2Jhc2VDb2luJztcbmltcG9ydCB0eXBlIHsgRGVjcnlwdGVkUmV0cm9maXRQYXlsb2FkIH0gZnJvbSAnLi4vLi4vLi4va2V5Y2hhaW4vaUtleWNoYWlucyc7XG5pbXBvcnQgdHlwZSB7IEVuY3J5cHRpb25WZXJzaW9uIH0gZnJvbSAnLi4vLi4vLi4vLi4vYXBpJztcbmltcG9ydCB7IGdlbmVyYXRlR1BHS2V5UGFpciB9IGZyb20gJy4uLy4uL29wZW5ncGdVdGlscyc7XG5pbXBvcnQgdHlwZSB7IFdlYmF1dGhuS2V5RW5jcnlwdGlvbkluZm8gfSBmcm9tICcuLi8uLi8uLi9rZXljaGFpbic7XG5pbXBvcnQgeyBlbnZSZXF1aXJlc0JpdGdvUHViR3BnS2V5Q29uZmlnLCBpc0JpdGdvRWRkc2FNcGN2MlB1YktleSB9IGZyb20gJy4uLy4uLy4uL3Rzcy9iaXRnb1B1YktleXMnO1xuaW1wb3J0IHsgZGVjb2RlV2l0aENvZGVjIH0gZnJvbSAnLi4vLi4vY29kZWNzJztcbmltcG9ydCB7IEVkZHNhTVBDdjJVdGlscyB9IGZyb20gJy4vZWRkc2FNUEN2Mic7XG5pbXBvcnQge1xuICBFZGRzYU1QQ3YyRGVyaXZlS2V5U2VuZEZuLFxuICBLZXlHZW5TZW5kZXJGb3JFbnRlcnByaXNlLFxuICBLZXlHZW5TZW5kZXJGb3JTYWZlQ2hpbGQsXG59IGZyb20gJy4vZWRkc2FNUEN2MktleUdlblNlbmRlcic7XG5pbXBvcnQgeyBNUEN2MlBhcnRpZXNFbnVtIH0gZnJvbSAnLi4vZWNkc2EvdHlwZXNNUEN2Mic7XG5pbXBvcnQgeyBidWlsZFNhZmVNcGNLZXlFbnZlbG9wZXMgfSBmcm9tICcuLi9rZXlTaGFyZUVudmVsb3BlJztcblxuLyoqIFJldHVybnMgdGhlIHNpbmdsZSBwYXlsb2FkIGEgVlJGIHJvdW5kIHByb2R1Y2VkLCB3aGljaCBpcyB3aGF0IHRoZSBwYXJ0eSBzaWducyBmb3IgQml0R28uICovXG5mdW5jdGlvbiBnZXRTaW5nbGVWcmZQYXlsb2FkKG1lc3NhZ2VzOiB7IHBheWxvYWQ6IFVpbnQ4QXJyYXkgfVtdLCBkZXNjcmlwdGlvbjogc3RyaW5nKTogVWludDhBcnJheSB7XG4gIGFzc2VydC5lcXVhbChtZXNzYWdlcy5sZW5ndGgsIDEsIGAke2Rlc2NyaXB0aW9ufSBtdXN0IHByb2R1Y2UgZXhhY3RseSBvbmUgbWVzc2FnZWApO1xuICByZXR1cm4gbWVzc2FnZXNbMF0ucGF5bG9hZDtcbn1cblxuLyoqXG4gKiBEZWNyeXB0cyBhIEJpdEdvIFZSRiBvcGVuaW5nIGVuY3J5cHRlZCB0byBhIGNsaWVudCBwYXJ0eSdzIEdQRyBrZXkgYW5kIHZlcmlmaWVzIEJpdEdvJ3NcbiAqIGRldGFjaGVkIHNpZ25hdHVyZSBvdmVyIHRoZSBwbGFpbnRleHQuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGRlY3J5cHRCaXRnb1ZyZk9wZW5pbmcoXG4gIG1lc3NhZ2U6IEVkZHNhTVBDdjJTaWduZWRNZXNzYWdlLFxuICBwYXJ0eUtleTogcGdwLlByaXZhdGVLZXksXG4gIGJpdGdvS2V5OiBwZ3AuS2V5XG4pOiBQcm9taXNlPFVpbnQ4QXJyYXk+IHtcbiAgY29uc3QgeyBkYXRhIH0gPSBhd2FpdCBwZ3AuZGVjcnlwdCh7XG4gICAgbWVzc2FnZTogYXdhaXQgcGdwLnJlYWRNZXNzYWdlKHsgYXJtb3JlZE1lc3NhZ2U6IG1lc3NhZ2UubWVzc2FnZSB9KSxcbiAgICBkZWNyeXB0aW9uS2V5czogcGFydHlLZXksXG4gICAgZm9ybWF0OiAnYmluYXJ5JyxcbiAgfSk7XG4gIGNvbnN0IHBsYWludGV4dCA9IEJ1ZmZlci5mcm9tKGRhdGEpO1xuICBhd2FpdCBNUFNDb21tcy52ZXJpZnlNcHNNZXNzYWdlKHsgbWVzc2FnZTogcGxhaW50ZXh0LnRvU3RyaW5nKCdiYXNlNjQnKSwgc2lnbmF0dXJlOiBtZXNzYWdlLnNpZ25hdHVyZSB9LCBiaXRnb0tleSk7XG4gIHJldHVybiBuZXcgVWludDhBcnJheShwbGFpbnRleHQpO1xufVxuXG4vKipcbiAqIEVkRFNBIE1QQ3YyIGtleSBnZW5lcmF0aW9uIGZvciBzYWZlIHJvb3RzLiBUaGUgdHdvLXJvdW5kIE1QUyBWUkYgREtHIHJpZGVzXG4gKiB0aGUgZXhpc3RpbmcgTVBDdjItUjEvUjIgcGF5bG9hZHMgYW5kIGlzIG9ubHkgc2VsZWN0ZWQgd2hlbiBzYWZlSWQgaXMgc2V0LlxuICovXG5leHBvcnQgY2xhc3MgRWRkc2FWcmZNUEN2MlV0aWxzIGV4dGVuZHMgRWRkc2FNUEN2MlV0aWxzIHtcbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGFzeW5jIGNyZWF0ZUtleWNoYWlucyhwYXJhbXM6IHtcbiAgICBwYXNzcGhyYXNlOiBzdHJpbmc7XG4gICAgZW50ZXJwcmlzZTogc3RyaW5nO1xuICAgIG9yaWdpbmFsUGFzc2NvZGVFbmNyeXB0aW9uQ29kZT86IHN0cmluZztcbiAgICByZXRyb2ZpdD86IERlY3J5cHRlZFJldHJvZml0UGF5bG9hZDtcbiAgICB3ZWJhdXRobkluZm8/OiBXZWJhdXRobktleUVuY3J5cHRpb25JbmZvO1xuICAgIGVuY3J5cHRpb25WZXJzaW9uPzogRW5jcnlwdGlvblZlcnNpb247XG4gICAgc2FmZUlkOiBzdHJpbmc7XG4gIH0pOiBQcm9taXNlPEtleWNoYWluc1RyaXBsZXQ+IHtcbiAgICBjb25zdCB7IHVzZXJEa2csIGJhY2t1cERrZyB9ID0gYXdhaXQgdGhpcy5nZXRVc2VyQW5kQmFja3VwU2Vzc2lvbihwYXJhbXMucmV0cm9maXQpO1xuICAgIGNvbnN0IHVzZXJWcmZTZXNzaW9uID0gbmV3IE1wc1ZyZi5WcmZEa2coMywgMiwgTVBDdjJQYXJ0aWVzRW51bS5VU0VSKTtcbiAgICBjb25zdCBiYWNrdXBWcmZTZXNzaW9uID0gbmV3IE1wc1ZyZi5WcmZEa2coMywgMiwgTVBDdjJQYXJ0aWVzRW51bS5CQUNLVVApO1xuXG4gICAgY29uc3QgdXNlcktleVBhaXIgPSBhd2FpdCBnZW5lcmF0ZUdQR0tleVBhaXIoJ2VkMjU1MTknKTtcbiAgICBjb25zdCB1c2VyR3BnS2V5ID0gYXdhaXQgcGdwLnJlYWRQcml2YXRlS2V5KHsgYXJtb3JlZEtleTogdXNlcktleVBhaXIucHJpdmF0ZUtleSB9KTtcbiAgICBjb25zdCB1c2VyR3BnUHVibGljS2V5ID0gdXNlcktleVBhaXIucHVibGljS2V5O1xuICAgIGNvbnN0IFt1c2VyUGssIHVzZXJTa10gPSBhd2FpdCBNUFNDb21tcy5leHRyYWN0RWQyNTUxOUtleVBhaXIodXNlckdwZ0tleSk7XG5cbiAgICBjb25zdCBiYWNrdXBLZXlQYWlyID0gYXdhaXQgZ2VuZXJhdGVHUEdLZXlQYWlyKCdlZDI1NTE5Jyk7XG4gICAgY29uc3QgYmFja3VwR3BnS2V5ID0gYXdhaXQgcGdwLnJlYWRQcml2YXRlS2V5KHsgYXJtb3JlZEtleTogYmFja3VwS2V5UGFpci5wcml2YXRlS2V5IH0pO1xuICAgIGNvbnN0IGJhY2t1cEdwZ1B1YmxpY0tleSA9IGJhY2t1cEtleVBhaXIucHVibGljS2V5O1xuICAgIGNvbnN0IFtiYWNrdXBQaywgYmFja3VwU2tdID0gYXdhaXQgTVBTQ29tbXMuZXh0cmFjdEVkMjU1MTlLZXlQYWlyKGJhY2t1cEdwZ0tleSk7XG5cbiAgICBjb25zdCB7IGVkZHNhTXBjdjJQdWJsaWNLZXkgfSA9IGF3YWl0IHRoaXMuZ2V0Qml0Z29HcGdQdWJrZXlCYXNlZE9uRmVhdHVyZUZsYWdzKHBhcmFtcy5lbnRlcnByaXNlLCB0cnVlKTtcbiAgICBjb25zdCBiaXRnb1B1YmxpY0dwZ0tleSA9IGVkZHNhTXBjdjJQdWJsaWNLZXkgPz8gdGhpcy5iaXRnb0VkZHNhTXBjdjJQdWJsaWNHcGdLZXk7XG4gICAgYXNzZXJ0KGJpdGdvUHVibGljR3BnS2V5LCAnRmFpbGVkIHRvIGdldCBCaXRHbyBFZERTQSBNUEN2MiBHUEcgcHVibGljIGtleScpO1xuICAgIGNvbnN0IGJpdGdvUHVibGljR3BnS2V5QXJtb3JlZCA9IGJpdGdvUHVibGljR3BnS2V5LmFybW9yKCk7XG5cbiAgICBpZiAoZW52UmVxdWlyZXNCaXRnb1B1YkdwZ0tleUNvbmZpZyh0aGlzLmJpdGdvLmdldEVudigpKSkge1xuICAgICAgYXNzZXJ0KGlzQml0Z29FZGRzYU1wY3YyUHViS2V5KGJpdGdvUHVibGljR3BnS2V5QXJtb3JlZCksICdJbnZhbGlkIEJpdEdvIEVkRFNBIE1QQ3YyIEdQRyBwdWJsaWMga2V5Jyk7XG4gICAgfVxuXG4gICAgY29uc3QgYml0Z29LZXlPYmogPSBhd2FpdCBwZ3AucmVhZEtleSh7IGFybW9yZWRLZXk6IGJpdGdvUHVibGljR3BnS2V5QXJtb3JlZCB9KTtcbiAgICBjb25zdCBiaXRnb1BrID0gYXdhaXQgTVBTQ29tbXMuZXh0cmFjdEVkMjU1MTlQdWJsaWNLZXkoYml0Z29LZXlPYmopO1xuXG4gICAgLy8gI3JlZ2lvbiByb3VuZCAxXG4gICAgYXdhaXQgdXNlckRrZy5pbml0RGtnKHVzZXJTaywgW2JhY2t1cFBrLCBiaXRnb1BrXSk7XG4gICAgYXdhaXQgYmFja3VwRGtnLmluaXREa2coYmFja3VwU2ssIFt1c2VyUGssIGJpdGdvUGtdKTtcblxuICAgIGNvbnN0IHVzZXJNc2cxID0gdXNlckRrZy5nZXRGaXJzdE1lc3NhZ2UoKTtcbiAgICBjb25zdCBiYWNrdXBNc2cxID0gYmFja3VwRGtnLmdldEZpcnN0TWVzc2FnZSgpO1xuICAgIGNvbnN0IHVzZXJWcmZNc2cxID0gYXdhaXQgdXNlclZyZlNlc3Npb24uaW5pdERrZygpO1xuICAgIGNvbnN0IGJhY2t1cFZyZk1zZzEgPSBhd2FpdCBiYWNrdXBWcmZTZXNzaW9uLmluaXREa2coKTtcblxuICAgIGNvbnN0IHVzZXJTaWduZWRNc2cxID0gYXdhaXQgTVBTQ29tbXMuZGV0YWNoU2lnbk1wc01lc3NhZ2UoQnVmZmVyLmZyb20odXNlck1zZzEucGF5bG9hZCksIHVzZXJHcGdLZXkpO1xuICAgIGNvbnN0IGJhY2t1cFNpZ25lZE1zZzEgPSBhd2FpdCBNUFNDb21tcy5kZXRhY2hTaWduTXBzTWVzc2FnZShCdWZmZXIuZnJvbShiYWNrdXBNc2cxLnBheWxvYWQpLCBiYWNrdXBHcGdLZXkpO1xuICAgIGNvbnN0IHVzZXJTaWduZWRWcmZNc2cxID0gYXdhaXQgTVBTQ29tbXMuZGV0YWNoU2lnbk1wc01lc3NhZ2UoXG4gICAgICBnZXRTaW5nbGVWcmZQYXlsb2FkKHVzZXJWcmZNc2cxLmJyb2FkY2FzdE1lc3NhZ2VzLCAnVXNlciBWUkYgcm91bmQgMCcpLFxuICAgICAgdXNlckdwZ0tleVxuICAgICk7XG4gICAgY29uc3QgYmFja3VwU2lnbmVkVnJmTXNnMSA9IGF3YWl0IE1QU0NvbW1zLmRldGFjaFNpZ25NcHNNZXNzYWdlKFxuICAgICAgZ2V0U2luZ2xlVnJmUGF5bG9hZChiYWNrdXBWcmZNc2cxLmJyb2FkY2FzdE1lc3NhZ2VzLCAnQmFja3VwIFZSRiByb3VuZCAwJyksXG4gICAgICBiYWNrdXBHcGdLZXlcbiAgICApO1xuXG4gICAgYXNzZXJ0KE5vbkVtcHR5U3RyaW5nLmlzKHVzZXJHcGdQdWJsaWNLZXkpLCAnVXNlciBHUEcgcHVibGljIGtleSBpcyByZXF1aXJlZCcpO1xuICAgIGFzc2VydChOb25FbXB0eVN0cmluZy5pcyhiYWNrdXBHcGdQdWJsaWNLZXkpLCAnQmFja3VwIEdQRyBwdWJsaWMga2V5IGlzIHJlcXVpcmVkJyk7XG5cbiAgICBjb25zdCByb3VuZDFTZW5kZXIgPSBLZXlHZW5TZW5kZXJGb3JFbnRlcnByaXNlPEVkZHNhTVBDdjJLZXlHZW5Sb3VuZDFSZXNwb25zZT4oXG4gICAgICB0aGlzLmJpdGdvLFxuICAgICAgcGFyYW1zLmVudGVycHJpc2UsXG4gICAgICBwYXJhbXMuc2FmZUlkXG4gICAgKTtcbiAgICBjb25zdCB7IHNlc3Npb25JZCwgYml0Z29Nc2cxLCBiaXRnb1ZyZk1zZzEgfSA9IGF3YWl0IHJvdW5kMVNlbmRlcihNUEN2MktleUdlblN0YXRlRW51bVsnTVBDdjItUjEnXSwge1xuICAgICAgdXNlckdwZ1B1YmxpY0tleSxcbiAgICAgIGJhY2t1cEdwZ1B1YmxpY0tleSxcbiAgICAgIHVzZXJNc2cxOiB1c2VyU2lnbmVkTXNnMSxcbiAgICAgIGJhY2t1cE1zZzE6IGJhY2t1cFNpZ25lZE1zZzEsXG4gICAgICB1c2VyVnJmTXNnMTogdXNlclNpZ25lZFZyZk1zZzEsXG4gICAgICBiYWNrdXBWcmZNc2cxOiBiYWNrdXBTaWduZWRWcmZNc2cxLFxuICAgICAgLi4uKHBhcmFtcy5yZXRyb2ZpdD8ud2FsbGV0SWQgPyB7IHdhbGxldElkOiBwYXJhbXMucmV0cm9maXQud2FsbGV0SWQgfSA6IHt9KSxcbiAgICB9KTtcbiAgICBhc3NlcnQoYml0Z29WcmZNc2cxLCAnQml0R28gVlJGIG1lc3NhZ2UgMSBub3QgZm91bmQgaW4gcm91bmQgMSByZXNwb25zZScpO1xuICAgIC8vICNlbmRyZWdpb25cblxuICAgIC8vICNyZWdpb24gcm91bmQgMlxuICAgIGNvbnN0IGJpdGdvUmF3TXNnMUJ5dGVzID0gYXdhaXQgTVBTQ29tbXMudmVyaWZ5TXBzTWVzc2FnZShiaXRnb01zZzEsIGJpdGdvS2V5T2JqKTtcbiAgICBjb25zdCBiaXRnb0Rlc2VyaWFsaXplZE1zZzE6IE1QU1R5cGVzLkRlc2VyaWFsaXplZE1lc3NhZ2UgPSB7XG4gICAgICBmcm9tOiBNUEN2MlBhcnRpZXNFbnVtLkJJVEdPLFxuICAgICAgcGF5bG9hZDogbmV3IFVpbnQ4QXJyYXkoYml0Z29SYXdNc2cxQnl0ZXMpLFxuICAgIH07XG4gICAgY29uc3Qgcm91bmQxTWVzc2FnZXM6IE1QU1R5cGVzLkRlc2VyaWFsaXplZE1lc3NhZ2VzID0gW3VzZXJNc2cxLCBiYWNrdXBNc2cxLCBiaXRnb0Rlc2VyaWFsaXplZE1zZzFdO1xuXG4gICAgY29uc3QgdXNlclJvdW5kMk1zZ3MgPSB1c2VyRGtnLmhhbmRsZUluY29taW5nTWVzc2FnZXMocm91bmQxTWVzc2FnZXMpO1xuICAgIGNvbnN0IGJhY2t1cFJvdW5kMk1zZ3MgPSBiYWNrdXBEa2cuaGFuZGxlSW5jb21pbmdNZXNzYWdlcyhyb3VuZDFNZXNzYWdlcyk7XG4gICAgYXNzZXJ0KHVzZXJSb3VuZDJNc2dzLmxlbmd0aCA9PT0gMSwgJ1VzZXIgcm91bmQgMSBzaG91bGQgcHJvZHVjZSBleGFjdGx5IG9uZSByb3VuZCAyIG1lc3NhZ2UnKTtcbiAgICBhc3NlcnQoYmFja3VwUm91bmQyTXNncy5sZW5ndGggPT09IDEsICdCYWNrdXAgcm91bmQgMSBzaG91bGQgcHJvZHVjZSBleGFjdGx5IG9uZSByb3VuZCAyIG1lc3NhZ2UnKTtcblxuICAgIGNvbnN0IHVzZXJNc2cyID0gdXNlclJvdW5kMk1zZ3NbMF07XG4gICAgY29uc3QgYmFja3VwTXNnMiA9IGJhY2t1cFJvdW5kMk1zZ3NbMF07XG4gICAgY29uc3QgdXNlclNpZ25lZE1zZzIgPSBhd2FpdCBNUFNDb21tcy5kZXRhY2hTaWduTXBzTWVzc2FnZShCdWZmZXIuZnJvbSh1c2VyTXNnMi5wYXlsb2FkKSwgdXNlckdwZ0tleSk7XG4gICAgY29uc3QgYmFja3VwU2lnbmVkTXNnMiA9IGF3YWl0IE1QU0NvbW1zLmRldGFjaFNpZ25NcHNNZXNzYWdlKEJ1ZmZlci5mcm9tKGJhY2t1cE1zZzIucGF5bG9hZCksIGJhY2t1cEdwZ0tleSk7XG5cbiAgICBjb25zdCBiaXRnb1ZyZlJhd01zZzFCeXRlcyA9IGF3YWl0IE1QU0NvbW1zLnZlcmlmeU1wc01lc3NhZ2UoYml0Z29WcmZNc2cxLCBiaXRnb0tleU9iaik7XG4gICAgY29uc3QgYml0Z29WcmZEZXNlcmlhbGl6ZWRNc2cxOiBNUFNUeXBlcy5EZXNlcmlhbGl6ZWRNZXNzYWdlID0ge1xuICAgICAgZnJvbTogTVBDdjJQYXJ0aWVzRW51bS5CSVRHTyxcbiAgICAgIHBheWxvYWQ6IG5ldyBVaW50OEFycmF5KGJpdGdvVnJmUmF3TXNnMUJ5dGVzKSxcbiAgICB9O1xuICAgIGNvbnN0IHVzZXJWcmZNc2cyID0gYXdhaXQgdXNlclZyZlNlc3Npb24uaGFuZGxlSW5jb21pbmdNZXNzYWdlcyh7XG4gICAgICBicm9hZGNhc3RNZXNzYWdlczogWy4uLmJhY2t1cFZyZk1zZzEuYnJvYWRjYXN0TWVzc2FnZXMsIGJpdGdvVnJmRGVzZXJpYWxpemVkTXNnMV0sXG4gICAgICBwMnBNZXNzYWdlczogW10sXG4gICAgfSk7XG4gICAgY29uc3QgYmFja3VwVnJmTXNnMiA9IGF3YWl0IGJhY2t1cFZyZlNlc3Npb24uaGFuZGxlSW5jb21pbmdNZXNzYWdlcyh7XG4gICAgICBicm9hZGNhc3RNZXNzYWdlczogWy4uLnVzZXJWcmZNc2cxLmJyb2FkY2FzdE1lc3NhZ2VzLCBiaXRnb1ZyZkRlc2VyaWFsaXplZE1zZzFdLFxuICAgICAgcDJwTWVzc2FnZXM6IFtdLFxuICAgIH0pO1xuICAgIGNvbnN0IHVzZXJTaWduZWRWcmZNc2cyID0gYXdhaXQgTVBTQ29tbXMuZGV0YWNoU2lnbk1wc01lc3NhZ2UoXG4gICAgICBnZXRTaW5nbGVWcmZQYXlsb2FkKFxuICAgICAgICB1c2VyVnJmTXNnMi5wMnBNZXNzYWdlcy5maWx0ZXIoKG1lc3NhZ2UpID0+IG1lc3NhZ2UudG8gPT09IE1QQ3YyUGFydGllc0VudW0uQklUR08pLFxuICAgICAgICAnVXNlciBWUkYgcm91bmQgMSBvcGVuaW5nIGZvciBCaXRHbydcbiAgICAgICksXG4gICAgICB1c2VyR3BnS2V5XG4gICAgKTtcbiAgICBjb25zdCBiYWNrdXBTaWduZWRWcmZNc2cyID0gYXdhaXQgTVBTQ29tbXMuZGV0YWNoU2lnbk1wc01lc3NhZ2UoXG4gICAgICBnZXRTaW5nbGVWcmZQYXlsb2FkKFxuICAgICAgICBiYWNrdXBWcmZNc2cyLnAycE1lc3NhZ2VzLmZpbHRlcigobWVzc2FnZSkgPT4gbWVzc2FnZS50byA9PT0gTVBDdjJQYXJ0aWVzRW51bS5CSVRHTyksXG4gICAgICAgICdCYWNrdXAgVlJGIHJvdW5kIDEgb3BlbmluZyBmb3IgQml0R28nXG4gICAgICApLFxuICAgICAgYmFja3VwR3BnS2V5XG4gICAgKTtcblxuICAgIGNvbnN0IHJvdW5kMlNlbmRlciA9IEtleUdlblNlbmRlckZvckVudGVycHJpc2U8RWRkc2FNUEN2MktleUdlblJvdW5kMlJlc3BvbnNlPih0aGlzLmJpdGdvLCBwYXJhbXMuZW50ZXJwcmlzZSk7XG4gICAgY29uc3Qge1xuICAgICAgc2Vzc2lvbklkOiBzZXNzaW9uSWRSb3VuZDIsXG4gICAgICBjb21tb25QdWJsaWNLZXljaGFpbixcbiAgICAgIGJpdGdvTXNnMixcbiAgICAgIGJpdGdvVnJmTXNnVG9Vc2VyLFxuICAgICAgYml0Z29WcmZNc2dUb0JhY2t1cCxcbiAgICB9ID0gYXdhaXQgcm91bmQyU2VuZGVyKE1QQ3YyS2V5R2VuU3RhdGVFbnVtWydNUEN2Mi1SMiddLCB7XG4gICAgICBzZXNzaW9uSWQsXG4gICAgICB1c2VyTXNnMjogdXNlclNpZ25lZE1zZzIsXG4gICAgICBiYWNrdXBNc2cyOiBiYWNrdXBTaWduZWRNc2cyLFxuICAgICAgdXNlclZyZk1zZzI6IHVzZXJTaWduZWRWcmZNc2cyLFxuICAgICAgYmFja3VwVnJmTXNnMjogYmFja3VwU2lnbmVkVnJmTXNnMixcbiAgICB9KTtcbiAgICBhc3NlcnQuZXF1YWwoc2Vzc2lvbklkLCBzZXNzaW9uSWRSb3VuZDIsICdSb3VuZCAxIGFuZCByb3VuZCAyIHNlc3Npb24gSURzIGRvIG5vdCBtYXRjaCcpO1xuICAgIGFzc2VydChiaXRnb1ZyZk1zZ1RvVXNlciwgJ0JpdEdvIFZSRiBtZXNzYWdlIHRvIHVzZXIgbm90IGZvdW5kIGluIHJvdW5kIDIgcmVzcG9uc2UnKTtcbiAgICBhc3NlcnQoYml0Z29WcmZNc2dUb0JhY2t1cCwgJ0JpdEdvIFZSRiBtZXNzYWdlIHRvIGJhY2t1cCBub3QgZm91bmQgaW4gcm91bmQgMiByZXNwb25zZScpO1xuXG4gICAgLy8gVlJGIGZpbmFsaXplcyBsb2NhbGx5IGFmdGVyIHRoZSBzZWNvbmQgZXhpc3RpbmcgTVBDdjIgcm91bmQuIEJpdEdvJ3Mgb3BlbmluZ3MgYXJlIGVuY3J5cHRlZFxuICAgIC8vIHRvIHRoZSByZWNpcGllbnQgcGFydHkncyBHUEcga2V5IGFuZCBzaWduZWQgYnkgQml0R28ncyBrZXkuXG4gICAgY29uc3QgYml0Z29WcmZPcGVuaW5nVG9Vc2VyID0gYXdhaXQgZGVjcnlwdEJpdGdvVnJmT3BlbmluZyhiaXRnb1ZyZk1zZ1RvVXNlciwgdXNlckdwZ0tleSwgYml0Z29LZXlPYmopO1xuICAgIGNvbnN0IGJpdGdvVnJmT3BlbmluZ1RvQmFja3VwID0gYXdhaXQgZGVjcnlwdEJpdGdvVnJmT3BlbmluZyhiaXRnb1ZyZk1zZ1RvQmFja3VwLCBiYWNrdXBHcGdLZXksIGJpdGdvS2V5T2JqKTtcbiAgICBhd2FpdCB1c2VyVnJmU2Vzc2lvbi5oYW5kbGVJbmNvbWluZ01lc3NhZ2VzKHtcbiAgICAgIGJyb2FkY2FzdE1lc3NhZ2VzOiBbXSxcbiAgICAgIHAycE1lc3NhZ2VzOiBbXG4gICAgICAgIC4uLmJhY2t1cFZyZk1zZzIucDJwTWVzc2FnZXMuZmlsdGVyKChtZXNzYWdlKSA9PiBtZXNzYWdlLnRvID09PSBNUEN2MlBhcnRpZXNFbnVtLlVTRVIpLFxuICAgICAgICB7IGZyb206IE1QQ3YyUGFydGllc0VudW0uQklUR08sIHRvOiBNUEN2MlBhcnRpZXNFbnVtLlVTRVIsIHBheWxvYWQ6IGJpdGdvVnJmT3BlbmluZ1RvVXNlciB9LFxuICAgICAgXSxcbiAgICB9KTtcbiAgICBhd2FpdCBiYWNrdXBWcmZTZXNzaW9uLmhhbmRsZUluY29taW5nTWVzc2FnZXMoe1xuICAgICAgYnJvYWRjYXN0TWVzc2FnZXM6IFtdLFxuICAgICAgcDJwTWVzc2FnZXM6IFtcbiAgICAgICAgLi4udXNlclZyZk1zZzIucDJwTWVzc2FnZXMuZmlsdGVyKChtZXNzYWdlKSA9PiBtZXNzYWdlLnRvID09PSBNUEN2MlBhcnRpZXNFbnVtLkJBQ0tVUCksXG4gICAgICAgIHsgZnJvbTogTVBDdjJQYXJ0aWVzRW51bS5CSVRHTywgdG86IE1QQ3YyUGFydGllc0VudW0uQkFDS1VQLCBwYXlsb2FkOiBiaXRnb1ZyZk9wZW5pbmdUb0JhY2t1cCB9LFxuICAgICAgXSxcbiAgICB9KTtcbiAgICAvLyAjZW5kcmVnaW9uXG5cbiAgICAvLyAjcmVnaW9uIGtleWNoYWluIGNyZWF0aW9uXG4gICAgY29uc3QgYml0Z29SYXdNc2cyQnl0ZXMgPSBhd2FpdCBNUFNDb21tcy52ZXJpZnlNcHNNZXNzYWdlKGJpdGdvTXNnMiwgYml0Z29LZXlPYmopO1xuICAgIGNvbnN0IGJpdGdvRGVzZXJpYWxpemVkTXNnMjogTVBTVHlwZXMuRGVzZXJpYWxpemVkTWVzc2FnZSA9IHtcbiAgICAgIGZyb206IE1QQ3YyUGFydGllc0VudW0uQklUR08sXG4gICAgICBwYXlsb2FkOiBuZXcgVWludDhBcnJheShiaXRnb1Jhd01zZzJCeXRlcyksXG4gICAgfTtcbiAgICBjb25zdCByb3VuZDJNZXNzYWdlczogTVBTVHlwZXMuRGVzZXJpYWxpemVkTWVzc2FnZXMgPSBbdXNlck1zZzIsIGJhY2t1cE1zZzIsIGJpdGdvRGVzZXJpYWxpemVkTXNnMl07XG5cbiAgICBjb25zdCB1c2VyRmluYWxNc2dzID0gdXNlckRrZy5oYW5kbGVJbmNvbWluZ01lc3NhZ2VzKHJvdW5kMk1lc3NhZ2VzKTtcbiAgICBjb25zdCBiYWNrdXBGaW5hbE1zZ3MgPSBiYWNrdXBEa2cuaGFuZGxlSW5jb21pbmdNZXNzYWdlcyhyb3VuZDJNZXNzYWdlcyk7XG4gICAgYXNzZXJ0KHVzZXJGaW5hbE1zZ3MubGVuZ3RoID09PSAwLCAnV0FTTSByb3VuZCAyIHNob3VsZCBwcm9kdWNlIG5vIG91dHB1dCBtZXNzYWdlcyBmb3IgdXNlcicpO1xuICAgIGFzc2VydChiYWNrdXBGaW5hbE1zZ3MubGVuZ3RoID09PSAwLCAnV0FTTSByb3VuZCAyIHNob3VsZCBwcm9kdWNlIG5vIG91dHB1dCBtZXNzYWdlcyBmb3IgYmFja3VwJyk7XG5cbiAgICBjb25zdCB1c2VyQ29tbW9uS2V5Y2hhaW4gPSB1c2VyRGtnLmdldENvbW1vbktleWNoYWluKCk7XG4gICAgY29uc3QgYmFja3VwQ29tbW9uS2V5Y2hhaW4gPSBiYWNrdXBEa2cuZ2V0Q29tbW9uS2V5Y2hhaW4oKTtcbiAgICBhc3NlcnQuZXF1YWwoXG4gICAgICB1c2VyQ29tbW9uS2V5Y2hhaW4sXG4gICAgICBjb21tb25QdWJsaWNLZXljaGFpbixcbiAgICAgICdVc2VyIGNvbXB1dGVkIGtleWNoYWluIGRvZXMgbm90IG1hdGNoIEJpdEdvIGNvbW1vbiBrZXljaGFpbidcbiAgICApO1xuICAgIGFzc2VydC5lcXVhbChcbiAgICAgIGJhY2t1cENvbW1vbktleWNoYWluLFxuICAgICAgY29tbW9uUHVibGljS2V5Y2hhaW4sXG4gICAgICAnQmFja3VwIGNvbXB1dGVkIGtleWNoYWluIGRvZXMgbm90IG1hdGNoIEJpdEdvIGNvbW1vbiBrZXljaGFpbidcbiAgICApO1xuXG4gICAgY29uc3QgeyBlbnZlbG9wZTogdXNlckVudmVsb3BlLCByZWR1Y2VkRW52ZWxvcGU6IHVzZXJSZWR1Y2VkRW52ZWxvcGUgfSA9IGJ1aWxkU2FmZU1wY0tleUVudmVsb3BlcyhcbiAgICAgIHVzZXJEa2cuZ2V0S2V5U2hhcmUoKSxcbiAgICAgIHVzZXJEa2cuZ2V0UmVkdWNlZEtleVNoYXJlKCksXG4gICAgICB1c2VyVnJmU2Vzc2lvbi5nZXRLZXlTaGFyZSgpXG4gICAgKTtcbiAgICBjb25zdCB7IGVudmVsb3BlOiBiYWNrdXBFbnZlbG9wZSwgcmVkdWNlZEVudmVsb3BlOiBiYWNrdXBSZWR1Y2VkRW52ZWxvcGUgfSA9IGJ1aWxkU2FmZU1wY0tleUVudmVsb3BlcyhcbiAgICAgIGJhY2t1cERrZy5nZXRLZXlTaGFyZSgpLFxuICAgICAgYmFja3VwRGtnLmdldFJlZHVjZWRLZXlTaGFyZSgpLFxuICAgICAgYmFja3VwVnJmU2Vzc2lvbi5nZXRLZXlTaGFyZSgpXG4gICAgKTtcblxuICAgIGNvbnN0IHVzZXJLZXljaGFpblByb21pc2UgPSB0aGlzLmFkZFVzZXJLZXljaGFpbihcbiAgICAgIHVzZXJDb21tb25LZXljaGFpbixcbiAgICAgIHVzZXJFbnZlbG9wZSxcbiAgICAgIHVzZXJSZWR1Y2VkRW52ZWxvcGUsXG4gICAgICBwYXJhbXMucGFzc3BocmFzZSxcbiAgICAgIHBhcmFtcy5vcmlnaW5hbFBhc3Njb2RlRW5jcnlwdGlvbkNvZGUsXG4gICAgICBwYXJhbXMud2ViYXV0aG5JbmZvLFxuICAgICAgcGFyYW1zLmVuY3J5cHRpb25WZXJzaW9uLFxuICAgICAgcGFyYW1zLmVudGVycHJpc2UsXG4gICAgICBwYXJhbXMuc2FmZUlkXG4gICAgKTtcbiAgICBjb25zdCBiYWNrdXBLZXljaGFpblByb21pc2UgPSB0aGlzLmFkZEJhY2t1cEtleWNoYWluKFxuICAgICAgYmFja3VwQ29tbW9uS2V5Y2hhaW4sXG4gICAgICBiYWNrdXBFbnZlbG9wZSxcbiAgICAgIGJhY2t1cFJlZHVjZWRFbnZlbG9wZSxcbiAgICAgIHBhcmFtcy5wYXNzcGhyYXNlLFxuICAgICAgcGFyYW1zLm9yaWdpbmFsUGFzc2NvZGVFbmNyeXB0aW9uQ29kZSxcbiAgICAgIHBhcmFtcy5lbmNyeXB0aW9uVmVyc2lvbixcbiAgICAgIHBhcmFtcy5lbnRlcnByaXNlLFxuICAgICAgcGFyYW1zLnNhZmVJZFxuICAgICk7XG4gICAgY29uc3QgYml0Z29LZXljaGFpblByb21pc2UgPSB0aGlzLmFkZEJpdGdvS2V5Y2hhaW4oY29tbW9uUHVibGljS2V5Y2hhaW4sIHBhcmFtcy5zYWZlSWQpO1xuXG4gICAgY29uc3QgW3VzZXJLZXljaGFpbiwgYmFja3VwS2V5Y2hhaW4sIGJpdGdvS2V5Y2hhaW5dID0gYXdhaXQgUHJvbWlzZS5hbGwoW1xuICAgICAgdXNlcktleWNoYWluUHJvbWlzZSxcbiAgICAgIGJhY2t1cEtleWNoYWluUHJvbWlzZSxcbiAgICAgIGJpdGdvS2V5Y2hhaW5Qcm9taXNlLFxuICAgIF0pO1xuICAgIC8vICNlbmRyZWdpb25cblxuICAgIHJldHVybiB7IHVzZXJLZXljaGFpbiwgYmFja3VwS2V5Y2hhaW4sIGJpdGdvS2V5Y2hhaW4gfTtcbiAgfVxuXG4gIGFzeW5jIHNlbmREZXJpdmF0aW9uUm91bmQxQnlTZW5kZXIoXG4gICAgc2VuZGVyRm46IEVkZHNhTVBDdjJEZXJpdmVLZXlTZW5kRm48RWRkc2FNUEN2MkRlcml2ZVJvdW5kMVJlc3BvbnNlPixcbiAgICB1c2VyR3BnUHVibGljS2V5OiBzdHJpbmcsXG4gICAgdXNlck1zZzE6IE1QU1R5cGVzLk1QU1NpZ25lZE1lc3NhZ2UsXG4gICAgcGFyZW50S2V5SWQ6IHN0cmluZyxcbiAgICBkZXJpdmF0aW9uSW5kZXg6IG51bWJlclxuICApOiBQcm9taXNlPEVkZHNhTVBDdjJEZXJpdmVSb3VuZDFSZXNwb25zZT4ge1xuICAgIGNvbnN0IHJlcXVlc3QgPSBkZWNvZGVXaXRoQ29kZWMoXG4gICAgICBFZGRzYU1QQ3YyRGVyaXZlUm91bmQxUmVxdWVzdCxcbiAgICAgIHsgdXNlckdwZ1B1YmxpY0tleSwgdXNlck1zZzEsIHBhcmVudEtleUlkLCBkZXJpdmF0aW9uSW5kZXggfSxcbiAgICAgICdFZGRzYU1QQ3YyRGVyaXZlUm91bmQxUmVxdWVzdCdcbiAgICApO1xuICAgIGFzc2VydChyZXF1ZXN0LmRlcml2YXRpb25JbmRleCA8PSAweDdmZmZmZmZmLCAnRGVyaXZhdGlvbiBpbmRleCBtdXN0IGZpdCBhIGhhcmRlbmVkIGNoaWxkIHBhdGgnKTtcbiAgICByZXR1cm4gZGVjb2RlV2l0aENvZGVjKFxuICAgICAgRWRkc2FNUEN2MkRlcml2ZVJvdW5kMVJlc3BvbnNlLFxuICAgICAgYXdhaXQgc2VuZGVyRm4oTVBDdjJLZXlHZW5TdGF0ZUVudW1bJ01QQ3YyRGVyaXZlLVIxJ10sIHJlcXVlc3QpLFxuICAgICAgJ0VkZHNhTVBDdjJEZXJpdmVSb3VuZDFSZXNwb25zZSdcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgc2VuZERlcml2YXRpb25Sb3VuZDJCeVNlbmRlcihcbiAgICBzZW5kZXJGbjogRWRkc2FNUEN2MkRlcml2ZUtleVNlbmRGbjxFZGRzYU1QQ3YyRGVyaXZlUm91bmQyUmVzcG9uc2U+LFxuICAgIHNlc3Npb25JZDogc3RyaW5nLFxuICAgIHVzZXJNc2cyOiBNUFNUeXBlcy5NUFNTaWduZWRNZXNzYWdlXG4gICk6IFByb21pc2U8RWRkc2FNUEN2MkRlcml2ZVJvdW5kMlJlc3BvbnNlPiB7XG4gICAgY29uc3QgcmVxdWVzdCA9IGRlY29kZVdpdGhDb2RlYyhcbiAgICAgIEVkZHNhTVBDdjJEZXJpdmVSb3VuZDJSZXF1ZXN0LFxuICAgICAgeyBzZXNzaW9uSWQsIHVzZXJNc2cyIH0sXG4gICAgICAnRWRkc2FNUEN2MkRlcml2ZVJvdW5kMlJlcXVlc3QnXG4gICAgKTtcbiAgICByZXR1cm4gZGVjb2RlV2l0aENvZGVjKFxuICAgICAgRWRkc2FNUEN2MkRlcml2ZVJvdW5kMlJlc3BvbnNlLFxuICAgICAgYXdhaXQgc2VuZGVyRm4oTVBDdjJLZXlHZW5TdGF0ZUVudW1bJ01QQ3YyRGVyaXZlLVIyJ10sIHJlcXVlc3QpLFxuICAgICAgJ0VkZHNhTVBDdjJEZXJpdmVSb3VuZDJSZXNwb25zZSdcbiAgICApO1xuICB9XG5cbiAgLyoqIERlcml2ZXMgdGhlIHVzZXIgc2lnbmluZyBzaGFyZSB3aXRoIEJpdEdvIGFuZCByZWdpc3RlcnMgYWxsIHRocmVlIHNhZmUgY2hpbGRyZW4uICovXG4gIGFzeW5jIGNyZWF0ZVNhZmVDaGlsZEtleWNoYWlucyhwYXJhbXM6IHtcbiAgICBwYXNzcGhyYXNlOiBzdHJpbmc7XG4gICAgZW50ZXJwcmlzZTogc3RyaW5nO1xuICAgIHNhZmVJZDogc3RyaW5nO1xuICAgIHBhcmVudEtleUlkOiBzdHJpbmc7XG4gICAgZGVyaXZhdGlvbkluZGV4OiBudW1iZXI7XG4gICAgdXNlclJvb3RLZXlJZDogc3RyaW5nO1xuICAgIGJhY2t1cFJvb3RLZXlJZDogc3RyaW5nO1xuICAgIHVzZXJSb290S2V5U2hhcmU6IEJ1ZmZlcjtcbiAgICB1c2VyUm9vdFZyZktleVNoYXJlOiBCdWZmZXI7XG4gICAgb3JpZ2luYWxQYXNzY29kZUVuY3J5cHRpb25Db2RlPzogc3RyaW5nO1xuICAgIHdlYmF1dGhuSW5mbz86IFdlYmF1dGhuS2V5RW5jcnlwdGlvbkluZm87XG4gICAgZW5jcnlwdGlvblZlcnNpb24/OiBFbmNyeXB0aW9uVmVyc2lvbjtcbiAgfSk6IFByb21pc2U8S2V5Y2hhaW5zVHJpcGxldD4ge1xuICAgIGFzc2VydChOb25FbXB0eVN0cmluZy5pcyhwYXJhbXMuc2FmZUlkKSwgJ1NhZmUgSUQgaXMgcmVxdWlyZWQgZm9yIGNoaWxkIGRlcml2YXRpb24nKTtcbiAgICBhc3NlcnQoTm9uRW1wdHlTdHJpbmcuaXMocGFyYW1zLnVzZXJSb290S2V5SWQpLCAnVXNlciByb290IGtleSBJRCBpcyByZXF1aXJlZCBmb3IgY2hpbGQgZGVyaXZhdGlvbicpO1xuICAgIGFzc2VydChOb25FbXB0eVN0cmluZy5pcyhwYXJhbXMuYmFja3VwUm9vdEtleUlkKSwgJ0JhY2t1cCByb290IGtleSBJRCBpcyByZXF1aXJlZCBmb3IgY2hpbGQgZGVyaXZhdGlvbicpO1xuICAgIGFzc2VydChOb25FbXB0eVN0cmluZy5pcyhwYXJhbXMucGFyZW50S2V5SWQpLCAnQml0R28gcm9vdCBrZXkgSUQgaXMgcmVxdWlyZWQgZm9yIGNoaWxkIGRlcml2YXRpb24nKTtcbiAgICBjb25zdCBwYXRoID0gZGVjb2RlV2l0aENvZGVjKFxuICAgICAgRGVyaXZlZEZyb21QYXJlbnRXaXRoSGFyZGVuZWRQYXRoLFxuICAgICAgYG0vJHtwYXJhbXMuZGVyaXZhdGlvbkluZGV4fSdgLFxuICAgICAgJ2Rlcml2ZWRGcm9tUGFyZW50V2l0aFBhdGgnXG4gICAgKTtcblxuICAgIGNvbnN0IHVzZXJLZXlQYWlyID0gYXdhaXQgZ2VuZXJhdGVHUEdLZXlQYWlyKCdlZDI1NTE5Jyk7XG4gICAgY29uc3QgdXNlckdwZ0tleSA9IGF3YWl0IHBncC5yZWFkUHJpdmF0ZUtleSh7IGFybW9yZWRLZXk6IHVzZXJLZXlQYWlyLnByaXZhdGVLZXkgfSk7XG4gICAgY29uc3QgeyBlZGRzYU1wY3YyUHVibGljS2V5IH0gPSBhd2FpdCB0aGlzLmdldEJpdGdvR3BnUHVia2V5QmFzZWRPbkZlYXR1cmVGbGFncyhwYXJhbXMuZW50ZXJwcmlzZSwgdHJ1ZSk7XG4gICAgY29uc3QgYml0Z29QdWJsaWNHcGdLZXkgPSBlZGRzYU1wY3YyUHVibGljS2V5ID8/IHRoaXMuYml0Z29FZGRzYU1wY3YyUHVibGljR3BnS2V5O1xuICAgIGFzc2VydChiaXRnb1B1YmxpY0dwZ0tleSwgJ0ZhaWxlZCB0byBnZXQgQml0R28gRWREU0EgTVBDdjIgR1BHIHB1YmxpYyBrZXknKTtcbiAgICBjb25zdCBiaXRnb1B1YmxpY0dwZ0tleUFybW9yZWQgPSBiaXRnb1B1YmxpY0dwZ0tleS5hcm1vcigpO1xuICAgIGlmIChlbnZSZXF1aXJlc0JpdGdvUHViR3BnS2V5Q29uZmlnKHRoaXMuYml0Z28uZ2V0RW52KCkpKSB7XG4gICAgICBhc3NlcnQoaXNCaXRnb0VkZHNhTXBjdjJQdWJLZXkoYml0Z29QdWJsaWNHcGdLZXlBcm1vcmVkKSwgJ0ludmFsaWQgQml0R28gR1BHIHB1YmxpYyBrZXknKTtcbiAgICB9XG4gICAgY29uc3QgYml0Z29LZXlPYmogPSBhd2FpdCBwZ3AucmVhZEtleSh7IGFybW9yZWRLZXk6IGJpdGdvUHVibGljR3BnS2V5QXJtb3JlZCB9KTtcblxuICAgIGNvbnN0IHVzZXJEZXJpdmVTZXNzaW9uID0gbmV3IE1wc0Rlcml2ZS5EZXJpdmUoXG4gICAgICAzLFxuICAgICAgMixcbiAgICAgIE1QQ3YyUGFydGllc0VudW0uVVNFUixcbiAgICAgIHBhcmFtcy51c2VyUm9vdEtleVNoYXJlLFxuICAgICAgcGFyYW1zLnVzZXJSb290VnJmS2V5U2hhcmUsXG4gICAgICBwYXRoXG4gICAgKTtcblxuICAgIGNvbnN0IHVzZXJNc2cxID0gYXdhaXQgdXNlckRlcml2ZVNlc3Npb24uaW5pdERlcml2ZSgpO1xuICAgIGNvbnN0IHNpZ25lZFVzZXJNc2cxID0gYXdhaXQgTVBTQ29tbXMuZGV0YWNoU2lnbk1wc01lc3NhZ2UodXNlck1zZzEucGF5bG9hZCwgdXNlckdwZ0tleSk7XG4gICAgY29uc3QgeyBzZXNzaW9uSWQsIGJpdGdvTXNnMSB9ID0gYXdhaXQgdGhpcy5zZW5kRGVyaXZhdGlvblJvdW5kMUJ5U2VuZGVyKFxuICAgICAgS2V5R2VuU2VuZGVyRm9yU2FmZUNoaWxkPEVkZHNhTVBDdjJEZXJpdmVSb3VuZDFSZXNwb25zZT4odGhpcy5iaXRnbywgcGFyYW1zLmVudGVycHJpc2UsIHBhcmFtcy5zYWZlSWQpLFxuICAgICAgdXNlcktleVBhaXIucHVibGljS2V5LFxuICAgICAgc2lnbmVkVXNlck1zZzEsXG4gICAgICBwYXJhbXMucGFyZW50S2V5SWQsXG4gICAgICBwYXJhbXMuZGVyaXZhdGlvbkluZGV4XG4gICAgKTtcblxuICAgIGNvbnN0IFt1c2VyTXNnMl0gPSB1c2VyRGVyaXZlU2Vzc2lvbi5oYW5kbGVJbmNvbWluZ01lc3NhZ2VzKFtcbiAgICAgIHsgZnJvbTogTVBDdjJQYXJ0aWVzRW51bS5CSVRHTywgcGF5bG9hZDogYXdhaXQgTVBTQ29tbXMudmVyaWZ5TXBzTWVzc2FnZShiaXRnb01zZzEsIGJpdGdvS2V5T2JqKSB9LFxuICAgIF0pO1xuICAgIGFzc2VydCh1c2VyTXNnMiwgJ1VzZXIgZGVyaXZlIHJvdW5kIDEgbXVzdCBwcm9kdWNlIGEgcm91bmQgMiBtZXNzYWdlJyk7XG4gICAgY29uc3Qgc2lnbmVkVXNlck1zZzIgPSBhd2FpdCBNUFNDb21tcy5kZXRhY2hTaWduTXBzTWVzc2FnZSh1c2VyTXNnMi5wYXlsb2FkLCB1c2VyR3BnS2V5KTtcbiAgICBjb25zdCB7XG4gICAgICBzZXNzaW9uSWQ6IHNlc3Npb25JZFJvdW5kMixcbiAgICAgIGNvbW1vblB1YmxpY0tleWNoYWluLFxuICAgICAgYml0Z29Nc2cyLFxuICAgIH0gPSBhd2FpdCB0aGlzLnNlbmREZXJpdmF0aW9uUm91bmQyQnlTZW5kZXIoXG4gICAgICBLZXlHZW5TZW5kZXJGb3JTYWZlQ2hpbGQ8RWRkc2FNUEN2MkRlcml2ZVJvdW5kMlJlc3BvbnNlPih0aGlzLmJpdGdvLCBwYXJhbXMuZW50ZXJwcmlzZSwgcGFyYW1zLnNhZmVJZCksXG4gICAgICBzZXNzaW9uSWQsXG4gICAgICBzaWduZWRVc2VyTXNnMlxuICAgICk7XG4gICAgYXNzZXJ0LmVxdWFsKHNlc3Npb25JZCwgc2Vzc2lvbklkUm91bmQyLCAnUm91bmQgMSBhbmQgMiBTZXNzaW9uIElEcyBkbyBub3QgbWF0Y2gnKTtcblxuICAgIGNvbnN0IGZpbmFsTWVzc2FnZXMgPSB1c2VyRGVyaXZlU2Vzc2lvbi5oYW5kbGVJbmNvbWluZ01lc3NhZ2VzKFtcbiAgICAgIHsgZnJvbTogTVBDdjJQYXJ0aWVzRW51bS5CSVRHTywgcGF5bG9hZDogYXdhaXQgTVBTQ29tbXMudmVyaWZ5TXBzTWVzc2FnZShiaXRnb01zZzIsIGJpdGdvS2V5T2JqKSB9LFxuICAgIF0pO1xuICAgIGFzc2VydC5lcXVhbChmaW5hbE1lc3NhZ2VzLmxlbmd0aCwgMCwgJ01QUyBkZXJpdmUgcm91bmQgMiBtdXN0IG5vdCBwcm9kdWNlIGFub3RoZXIgbWVzc2FnZScpO1xuICAgIGNvbnN0IGNvbW1vbktleWNoYWluID0gdXNlckRlcml2ZVNlc3Npb24uZ2V0Q29tbW9uS2V5Y2hhaW4oKTtcbiAgICBhc3NlcnQuZXF1YWwoY29tbW9uS2V5Y2hhaW4sIGNvbW1vblB1YmxpY0tleWNoYWluLCAnVXNlciBhbmQgQml0R28gY29tbW9uIGtleWNoYWlucyBkbyBub3QgbWF0Y2gnKTtcblxuICAgIGNvbnN0IFt1c2VyS2V5Y2hhaW4sIGJhY2t1cEtleWNoYWluLCBiaXRnb0tleWNoYWluXSA9IGF3YWl0IFByb21pc2UuYWxsKFtcbiAgICAgIHRoaXMuYWRkVXNlcktleWNoYWluKFxuICAgICAgICBjb21tb25LZXljaGFpbixcbiAgICAgICAgdXNlckRlcml2ZVNlc3Npb24uZ2V0S2V5U2hhcmUoKSxcbiAgICAgICAgdXNlckRlcml2ZVNlc3Npb24uZ2V0UmVkdWNlZEtleVNoYXJlKCksXG4gICAgICAgIHBhcmFtcy5wYXNzcGhyYXNlLFxuICAgICAgICBwYXJhbXMub3JpZ2luYWxQYXNzY29kZUVuY3J5cHRpb25Db2RlLFxuICAgICAgICBwYXJhbXMud2ViYXV0aG5JbmZvLFxuICAgICAgICBwYXJhbXMuZW5jcnlwdGlvblZlcnNpb24sXG4gICAgICAgIHBhcmFtcy5lbnRlcnByaXNlLFxuICAgICAgICBwYXJhbXMuc2FmZUlkLFxuICAgICAgICB7IHBhcmVudEtleUlkOiBwYXJhbXMudXNlclJvb3RLZXlJZCwgaW5kZXg6IHBhcmFtcy5kZXJpdmF0aW9uSW5kZXggfVxuICAgICAgKSxcbiAgICAgIHRoaXMuYWRkQmFja3VwS2V5Y2hhaW4oXG4gICAgICAgIGNvbW1vbktleWNoYWluLFxuICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgcGFyYW1zLnBhc3NwaHJhc2UsXG4gICAgICAgIHBhcmFtcy5vcmlnaW5hbFBhc3Njb2RlRW5jcnlwdGlvbkNvZGUsXG4gICAgICAgIHBhcmFtcy5lbmNyeXB0aW9uVmVyc2lvbixcbiAgICAgICAgcGFyYW1zLmVudGVycHJpc2UsXG4gICAgICAgIHBhcmFtcy5zYWZlSWQsXG4gICAgICAgIHsgcGFyZW50S2V5SWQ6IHBhcmFtcy5iYWNrdXBSb290S2V5SWQsIGluZGV4OiBwYXJhbXMuZGVyaXZhdGlvbkluZGV4IH1cbiAgICAgICksXG4gICAgICB0aGlzLmFkZEJpdGdvS2V5Y2hhaW4oY29tbW9uS2V5Y2hhaW4sIHBhcmFtcy5zYWZlSWQsIHtcbiAgICAgICAgcGFyZW50S2V5SWQ6IHBhcmFtcy5wYXJlbnRLZXlJZCxcbiAgICAgICAgaW5kZXg6IHBhcmFtcy5kZXJpdmF0aW9uSW5kZXgsXG4gICAgICB9KSxcbiAgICBdKTtcbiAgICByZXR1cm4geyB1c2VyS2V5Y2hhaW4sIGJhY2t1cEtleWNoYWluLCBiaXRnb0tleWNoYWluIH07XG4gIH1cbn1cbiJdfQ==
@@ -1,6 +1,6 @@
1
1
  import * as t from 'io-ts';
2
2
  import { type EddsaMPCv2DeriveRound1Request, type EddsaMPCv2DeriveRound1Response, type EddsaMPCv2DeriveRound2Request, type EddsaMPCv2DeriveRound2Response } from '@bitgo/public-types';
3
- export declare const generateEddsaMPCv2KeyRequestBody: t.UnionC<[t.TypeC<{
3
+ export declare const generateEddsaMPCv2KeyRequestBody: t.UnionC<[t.IntersectionC<[t.TypeC<{
4
4
  userGpgPublicKey: import("io-ts-types").NonEmptyStringC;
5
5
  backupGpgPublicKey: import("io-ts-types").NonEmptyStringC;
6
6
  userMsg1: t.TypeC<{
@@ -11,7 +11,16 @@ export declare const generateEddsaMPCv2KeyRequestBody: t.UnionC<[t.TypeC<{
11
11
  message: t.StringC;
12
12
  signature: t.StringC;
13
13
  }>;
14
- }>, t.TypeC<{
14
+ }>, t.PartialC<{
15
+ userVrfMsg1: t.TypeC<{
16
+ message: t.StringC;
17
+ signature: t.StringC;
18
+ }>;
19
+ backupVrfMsg1: t.TypeC<{
20
+ message: t.StringC;
21
+ signature: t.StringC;
22
+ }>;
23
+ }>]>, t.IntersectionC<[t.TypeC<{
15
24
  sessionId: import("io-ts-types").NonEmptyStringC;
16
25
  userMsg2: t.TypeC<{
17
26
  message: t.StringC;
@@ -21,36 +30,46 @@ export declare const generateEddsaMPCv2KeyRequestBody: t.UnionC<[t.TypeC<{
21
30
  message: t.StringC;
22
31
  signature: t.StringC;
23
32
  }>;
24
- }>]>;
25
- /** Opaque VRF DKG blobs carried by the existing MPS key-generation rounds. */
26
- export declare const eddsaMPCv2VrfKeyGenRequestFields: t.PartialC<{
27
- userVrfMsg1: t.StringC;
28
- backupVrfMsg1: t.StringC;
29
- userVrfMsg2: t.StringC;
30
- backupVrfMsg2: t.StringC;
31
- }>;
32
- export declare const eddsaMPCv2VrfKeyGenResponseFields: t.PartialC<{
33
- bitgoVrfMsg1: t.StringC;
34
- bitgoVrfMsg2: t.StringC;
35
- }>;
36
- export type EddsaMPCv2VrfKeyGenRequestFields = t.TypeOf<typeof eddsaMPCv2VrfKeyGenRequestFields>;
37
- export type EddsaMPCv2VrfKeyGenResponseFields = t.TypeOf<typeof eddsaMPCv2VrfKeyGenResponseFields>;
38
- export type GenerateEddsaMPCv2KeyRequestBody = t.TypeOf<typeof generateEddsaMPCv2KeyRequestBody> & EddsaMPCv2VrfKeyGenRequestFields;
39
- export declare const generateEddsaMPCv2KeyRequestResponse: t.UnionC<[t.TypeC<{
33
+ }>, t.PartialC<{
34
+ userVrfMsg2: t.TypeC<{
35
+ message: t.StringC;
36
+ signature: t.StringC;
37
+ }>;
38
+ backupVrfMsg2: t.TypeC<{
39
+ message: t.StringC;
40
+ signature: t.StringC;
41
+ }>;
42
+ }>]>]>;
43
+ export type GenerateEddsaMPCv2KeyRequestBody = t.TypeOf<typeof generateEddsaMPCv2KeyRequestBody>;
44
+ export declare const generateEddsaMPCv2KeyRequestResponse: t.UnionC<[t.IntersectionC<[t.TypeC<{
40
45
  sessionId: import("io-ts-types").NonEmptyStringC;
41
46
  bitgoMsg1: t.TypeC<{
42
47
  message: t.StringC;
43
48
  signature: t.StringC;
44
49
  }>;
45
- }>, t.TypeC<{
50
+ }>, t.PartialC<{
51
+ bitgoVrfMsg1: t.TypeC<{
52
+ message: t.StringC;
53
+ signature: t.StringC;
54
+ }>;
55
+ }>]>, t.IntersectionC<[t.TypeC<{
46
56
  sessionId: import("io-ts-types").NonEmptyStringC;
47
57
  commonPublicKeychain: import("io-ts-types").NonEmptyStringC;
48
58
  bitgoMsg2: t.TypeC<{
49
59
  message: t.StringC;
50
60
  signature: t.StringC;
51
61
  }>;
52
- }>]>;
53
- export type GenerateEddsaMPCv2KeyRequestResponse = t.TypeOf<typeof generateEddsaMPCv2KeyRequestResponse> & EddsaMPCv2VrfKeyGenResponseFields;
62
+ }>, t.PartialC<{
63
+ bitgoVrfMsgToUser: t.TypeC<{
64
+ message: t.StringC;
65
+ signature: t.StringC;
66
+ }>;
67
+ bitgoVrfMsgToBackup: t.TypeC<{
68
+ message: t.StringC;
69
+ signature: t.StringC;
70
+ }>;
71
+ }>]>]>;
72
+ export type GenerateEddsaMPCv2KeyRequestResponse = t.TypeOf<typeof generateEddsaMPCv2KeyRequestResponse>;
54
73
  export type GenerateEddsaMPCv2DeriveKeyRequest = EddsaMPCv2DeriveRound1Request | EddsaMPCv2DeriveRound2Request;
55
74
  export type GenerateEddsaMPCv2DeriveKeyRequestResponse = EddsaMPCv2DeriveRound1Response | EddsaMPCv2DeriveRound2Response;
56
75
  //# sourceMappingURL=typesEddsaMPCv2.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"typesEddsaMPCv2.d.ts","sourceRoot":"","sources":["../../../../../../src/bitgo/utils/tss/eddsa/typesEddsaMPCv2.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,OAAO,CAAC;AAC3B,OAAO,EACL,KAAK,6BAA6B,EAClC,KAAK,8BAA8B,EACnC,KAAK,6BAA6B,EAClC,KAAK,8BAA8B,EAKpC,MAAM,qBAAqB,CAAC;AAE7B,eAAO,MAAM,gCAAgC;6BAiC80H,aAAa;+BAAkD,aAAa;cAAgC,EAAG,KAAK;iBAAmB,EAAG,OAAO;mBAAoB,EAAG,OAAO;;gBAAyB,EAAG,KAAK;iBAAmB,EAAG,OAAO;mBAAoB,EAAG,OAAO;;;sBAAgf,aAAa;cAAgC,EAAG,KAAK;iBAAmB,EAAG,OAAO;mBAAoB,EAAG,OAAO;;gBAAyB,EAAG,KAAK;iBAAmB,EAAG,OAAO;mBAAoB,EAAG,OAAO;;IAjC3sJ,CAAC;AAExH,8EAA8E;AAC9E,eAAO,MAAM,gCAAgC;;;;;EAK3C,CAAC;AAEH,eAAO,MAAM,iCAAiC;;;EAG5C,CAAC;AAEH,MAAM,MAAM,gCAAgC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,gCAAgC,CAAC,CAAC;AACjG,MAAM,MAAM,iCAAiC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,iCAAiC,CAAC,CAAC;AAEnG,MAAM,MAAM,gCAAgC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,gCAAgC,CAAC,GAC9F,gCAAgC,CAAC;AAEnC,eAAO,MAAM,oCAAoC;sBAYoxI,aAAa;eAAiC,EAAG,KAAK;iBAAmB,EAAG,OAAO;mBAAoB,EAAG,OAAO;;;sBAA2kB,aAAa;iCAAoD,aAAa;eAAiC,EAAG,KAAK;iBAAmB,EAAG,OAAO;mBAAoB,EAAG,OAAO;;IATjrK,CAAC;AAEH,MAAM,MAAM,oCAAoC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,oCAAoC,CAAC,GACtG,iCAAiC,CAAC;AAEpC,MAAM,MAAM,kCAAkC,GAAG,6BAA6B,GAAG,6BAA6B,CAAC;AAC/G,MAAM,MAAM,0CAA0C,GAClD,8BAA8B,GAC9B,8BAA8B,CAAC"}
1
+ {"version":3,"file":"typesEddsaMPCv2.d.ts","sourceRoot":"","sources":["../../../../../../src/bitgo/utils/tss/eddsa/typesEddsaMPCv2.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,OAAO,CAAC;AAC3B,OAAO,EACL,KAAK,6BAA6B,EAClC,KAAK,8BAA8B,EACnC,KAAK,6BAA6B,EAClC,KAAK,8BAA8B,EAKpC,MAAM,qBAAqB,CAAC;AAE7B,eAAO,MAAM,gCAAgC;6BAe+9I,aAAa;+BAAkD,aAAa;cAAgC,EAAG,KAAK;iBAAmB,EAAG,OAAO;mBAAoB,EAAG,OAAO;;gBAAyB,EAAG,KAAK;iBAAmB,EAAG,OAAO;mBAAoB,EAAG,OAAO;;;iBAA2C,EAAG,KAAK;iBAAmB,EAAG,OAAO;mBAAoB,EAAG,OAAO;;mBAA4B,EAAG,KAAK;iBAAmB,EAAG,OAAO;mBAAoB,EAAG,OAAO;;;sBAAqoB,aAAa;cAAgC,EAAG,KAAK;iBAAmB,EAAG,OAAO;mBAAoB,EAAG,OAAO;;gBAAyB,EAAG,KAAK;iBAAmB,EAAG,OAAO;mBAAoB,EAAG,OAAO;;;iBAA2C,EAAG,KAAK;iBAAmB,EAAG,OAAO;mBAAoB,EAAG,OAAO;;mBAA4B,EAAG,KAAK;iBAAmB,EAAG,OAAO;mBAAoB,EAAG,OAAO;;MAf34L,CAAC;AAExH,MAAM,MAAM,gCAAgC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,gCAAgC,CAAC,CAAC;AAEjG,eAAO,MAAM,oCAAoC;sBAWqoK,aAAa;eAAiC,EAAG,KAAK;iBAAmB,EAAG,OAAO;mBAAoB,EAAG,OAAO;;;kBAA4C,EAAG,KAAK;iBAAmB,EAAG,OAAO;mBAAoB,EAAG,OAAO;;;sBAA8zB,aAAa;iCAAoD,aAAa;eAAiC,EAAG,KAAK;iBAAmB,EAAG,OAAO;mBAAoB,EAAG,OAAO;;;uBAAiD,EAAG,KAAK;iBAAmB,EAAG,OAAO;mBAAoB,EAAG,OAAO;;yBAAkC,EAAG,KAAK;iBAAmB,EAAG,OAAO;mBAAoB,EAAG,OAAO;;MAR7lN,CAAC;AAEH,MAAM,MAAM,oCAAoC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,oCAAoC,CAAC,CAAC;AAEzG,MAAM,MAAM,kCAAkC,GAAG,6BAA6B,GAAG,6BAA6B,CAAC;AAC/G,MAAM,MAAM,0CAA0C,GAClD,8BAA8B,GAC9B,8BAA8B,CAAC"}
@@ -33,23 +33,12 @@ var __importStar = (this && this.__importStar) || (function () {
33
33
  };
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.generateEddsaMPCv2KeyRequestResponse = exports.eddsaMPCv2VrfKeyGenResponseFields = exports.eddsaMPCv2VrfKeyGenRequestFields = exports.generateEddsaMPCv2KeyRequestBody = void 0;
36
+ exports.generateEddsaMPCv2KeyRequestResponse = exports.generateEddsaMPCv2KeyRequestBody = void 0;
37
37
  const t = __importStar(require("io-ts"));
38
38
  const public_types_1 = require("@bitgo/public-types");
39
39
  exports.generateEddsaMPCv2KeyRequestBody = t.union([public_types_1.EddsaMPCv2KeyGenRound1Request, public_types_1.EddsaMPCv2KeyGenRound2Request]);
40
- /** Opaque VRF DKG blobs carried by the existing MPS key-generation rounds. */
41
- exports.eddsaMPCv2VrfKeyGenRequestFields = t.partial({
42
- userVrfMsg1: t.string,
43
- backupVrfMsg1: t.string,
44
- userVrfMsg2: t.string,
45
- backupVrfMsg2: t.string,
46
- });
47
- exports.eddsaMPCv2VrfKeyGenResponseFields = t.partial({
48
- bitgoVrfMsg1: t.string,
49
- bitgoVrfMsg2: t.string,
50
- });
51
40
  exports.generateEddsaMPCv2KeyRequestResponse = t.union([
52
41
  public_types_1.EddsaMPCv2KeyGenRound1Response,
53
42
  public_types_1.EddsaMPCv2KeyGenRound2Response,
54
43
  ]);
55
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXNFZGRzYU1QQ3YyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2JpdGdvL3V0aWxzL3Rzcy9lZGRzYS90eXBlc0VkZHNhTVBDdjIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEseUNBQTJCO0FBQzNCLHNEQVM2QjtBQUVoQixRQUFBLGdDQUFnQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyw0Q0FBNkIsRUFBRSw0Q0FBNkIsQ0FBQyxDQUFDLENBQUM7QUFFeEgsOEVBQThFO0FBQ2pFLFFBQUEsZ0NBQWdDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQztJQUN4RCxXQUFXLEVBQUUsQ0FBQyxDQUFDLE1BQU07SUFDckIsYUFBYSxFQUFFLENBQUMsQ0FBQyxNQUFNO0lBQ3ZCLFdBQVcsRUFBRSxDQUFDLENBQUMsTUFBTTtJQUNyQixhQUFhLEVBQUUsQ0FBQyxDQUFDLE1BQU07Q0FDeEIsQ0FBQyxDQUFDO0FBRVUsUUFBQSxpQ0FBaUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDO0lBQ3pELFlBQVksRUFBRSxDQUFDLENBQUMsTUFBTTtJQUN0QixZQUFZLEVBQUUsQ0FBQyxDQUFDLE1BQU07Q0FDdkIsQ0FBQyxDQUFDO0FBUVUsUUFBQSxvQ0FBb0MsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQzFELDZDQUE4QjtJQUM5Qiw2Q0FBOEI7Q0FDL0IsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgdCBmcm9tICdpby10cyc7XG5pbXBvcnQge1xuICB0eXBlIEVkZHNhTVBDdjJEZXJpdmVSb3VuZDFSZXF1ZXN0LFxuICB0eXBlIEVkZHNhTVBDdjJEZXJpdmVSb3VuZDFSZXNwb25zZSxcbiAgdHlwZSBFZGRzYU1QQ3YyRGVyaXZlUm91bmQyUmVxdWVzdCxcbiAgdHlwZSBFZGRzYU1QQ3YyRGVyaXZlUm91bmQyUmVzcG9uc2UsXG4gIEVkZHNhTVBDdjJLZXlHZW5Sb3VuZDFSZXF1ZXN0LFxuICBFZGRzYU1QQ3YyS2V5R2VuUm91bmQxUmVzcG9uc2UsXG4gIEVkZHNhTVBDdjJLZXlHZW5Sb3VuZDJSZXF1ZXN0LFxuICBFZGRzYU1QQ3YyS2V5R2VuUm91bmQyUmVzcG9uc2UsXG59IGZyb20gJ0BiaXRnby9wdWJsaWMtdHlwZXMnO1xuXG5leHBvcnQgY29uc3QgZ2VuZXJhdGVFZGRzYU1QQ3YyS2V5UmVxdWVzdEJvZHkgPSB0LnVuaW9uKFtFZGRzYU1QQ3YyS2V5R2VuUm91bmQxUmVxdWVzdCwgRWRkc2FNUEN2MktleUdlblJvdW5kMlJlcXVlc3RdKTtcblxuLyoqIE9wYXF1ZSBWUkYgREtHIGJsb2JzIGNhcnJpZWQgYnkgdGhlIGV4aXN0aW5nIE1QUyBrZXktZ2VuZXJhdGlvbiByb3VuZHMuICovXG5leHBvcnQgY29uc3QgZWRkc2FNUEN2MlZyZktleUdlblJlcXVlc3RGaWVsZHMgPSB0LnBhcnRpYWwoe1xuICB1c2VyVnJmTXNnMTogdC5zdHJpbmcsXG4gIGJhY2t1cFZyZk1zZzE6IHQuc3RyaW5nLFxuICB1c2VyVnJmTXNnMjogdC5zdHJpbmcsXG4gIGJhY2t1cFZyZk1zZzI6IHQuc3RyaW5nLFxufSk7XG5cbmV4cG9ydCBjb25zdCBlZGRzYU1QQ3YyVnJmS2V5R2VuUmVzcG9uc2VGaWVsZHMgPSB0LnBhcnRpYWwoe1xuICBiaXRnb1ZyZk1zZzE6IHQuc3RyaW5nLFxuICBiaXRnb1ZyZk1zZzI6IHQuc3RyaW5nLFxufSk7XG5cbmV4cG9ydCB0eXBlIEVkZHNhTVBDdjJWcmZLZXlHZW5SZXF1ZXN0RmllbGRzID0gdC5UeXBlT2Y8dHlwZW9mIGVkZHNhTVBDdjJWcmZLZXlHZW5SZXF1ZXN0RmllbGRzPjtcbmV4cG9ydCB0eXBlIEVkZHNhTVBDdjJWcmZLZXlHZW5SZXNwb25zZUZpZWxkcyA9IHQuVHlwZU9mPHR5cGVvZiBlZGRzYU1QQ3YyVnJmS2V5R2VuUmVzcG9uc2VGaWVsZHM+O1xuXG5leHBvcnQgdHlwZSBHZW5lcmF0ZUVkZHNhTVBDdjJLZXlSZXF1ZXN0Qm9keSA9IHQuVHlwZU9mPHR5cGVvZiBnZW5lcmF0ZUVkZHNhTVBDdjJLZXlSZXF1ZXN0Qm9keT4gJlxuICBFZGRzYU1QQ3YyVnJmS2V5R2VuUmVxdWVzdEZpZWxkcztcblxuZXhwb3J0IGNvbnN0IGdlbmVyYXRlRWRkc2FNUEN2MktleVJlcXVlc3RSZXNwb25zZSA9IHQudW5pb24oW1xuICBFZGRzYU1QQ3YyS2V5R2VuUm91bmQxUmVzcG9uc2UsXG4gIEVkZHNhTVBDdjJLZXlHZW5Sb3VuZDJSZXNwb25zZSxcbl0pO1xuXG5leHBvcnQgdHlwZSBHZW5lcmF0ZUVkZHNhTVBDdjJLZXlSZXF1ZXN0UmVzcG9uc2UgPSB0LlR5cGVPZjx0eXBlb2YgZ2VuZXJhdGVFZGRzYU1QQ3YyS2V5UmVxdWVzdFJlc3BvbnNlPiAmXG4gIEVkZHNhTVBDdjJWcmZLZXlHZW5SZXNwb25zZUZpZWxkcztcblxuZXhwb3J0IHR5cGUgR2VuZXJhdGVFZGRzYU1QQ3YyRGVyaXZlS2V5UmVxdWVzdCA9IEVkZHNhTVBDdjJEZXJpdmVSb3VuZDFSZXF1ZXN0IHwgRWRkc2FNUEN2MkRlcml2ZVJvdW5kMlJlcXVlc3Q7XG5leHBvcnQgdHlwZSBHZW5lcmF0ZUVkZHNhTVBDdjJEZXJpdmVLZXlSZXF1ZXN0UmVzcG9uc2UgPVxuICB8IEVkZHNhTVBDdjJEZXJpdmVSb3VuZDFSZXNwb25zZVxuICB8IEVkZHNhTVBDdjJEZXJpdmVSb3VuZDJSZXNwb25zZTtcbiJdfQ==
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXNFZGRzYU1QQ3YyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2JpdGdvL3V0aWxzL3Rzcy9lZGRzYS90eXBlc0VkZHNhTVBDdjIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEseUNBQTJCO0FBQzNCLHNEQVM2QjtBQUVoQixRQUFBLGdDQUFnQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyw0Q0FBNkIsRUFBRSw0Q0FBNkIsQ0FBQyxDQUFDLENBQUM7QUFJM0csUUFBQSxvQ0FBb0MsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQzFELDZDQUE4QjtJQUM5Qiw2Q0FBOEI7Q0FDL0IsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgdCBmcm9tICdpby10cyc7XG5pbXBvcnQge1xuICB0eXBlIEVkZHNhTVBDdjJEZXJpdmVSb3VuZDFSZXF1ZXN0LFxuICB0eXBlIEVkZHNhTVBDdjJEZXJpdmVSb3VuZDFSZXNwb25zZSxcbiAgdHlwZSBFZGRzYU1QQ3YyRGVyaXZlUm91bmQyUmVxdWVzdCxcbiAgdHlwZSBFZGRzYU1QQ3YyRGVyaXZlUm91bmQyUmVzcG9uc2UsXG4gIEVkZHNhTVBDdjJLZXlHZW5Sb3VuZDFSZXF1ZXN0LFxuICBFZGRzYU1QQ3YyS2V5R2VuUm91bmQxUmVzcG9uc2UsXG4gIEVkZHNhTVBDdjJLZXlHZW5Sb3VuZDJSZXF1ZXN0LFxuICBFZGRzYU1QQ3YyS2V5R2VuUm91bmQyUmVzcG9uc2UsXG59IGZyb20gJ0BiaXRnby9wdWJsaWMtdHlwZXMnO1xuXG5leHBvcnQgY29uc3QgZ2VuZXJhdGVFZGRzYU1QQ3YyS2V5UmVxdWVzdEJvZHkgPSB0LnVuaW9uKFtFZGRzYU1QQ3YyS2V5R2VuUm91bmQxUmVxdWVzdCwgRWRkc2FNUEN2MktleUdlblJvdW5kMlJlcXVlc3RdKTtcblxuZXhwb3J0IHR5cGUgR2VuZXJhdGVFZGRzYU1QQ3YyS2V5UmVxdWVzdEJvZHkgPSB0LlR5cGVPZjx0eXBlb2YgZ2VuZXJhdGVFZGRzYU1QQ3YyS2V5UmVxdWVzdEJvZHk+O1xuXG5leHBvcnQgY29uc3QgZ2VuZXJhdGVFZGRzYU1QQ3YyS2V5UmVxdWVzdFJlc3BvbnNlID0gdC51bmlvbihbXG4gIEVkZHNhTVBDdjJLZXlHZW5Sb3VuZDFSZXNwb25zZSxcbiAgRWRkc2FNUEN2MktleUdlblJvdW5kMlJlc3BvbnNlLFxuXSk7XG5cbmV4cG9ydCB0eXBlIEdlbmVyYXRlRWRkc2FNUEN2MktleVJlcXVlc3RSZXNwb25zZSA9IHQuVHlwZU9mPHR5cGVvZiBnZW5lcmF0ZUVkZHNhTVBDdjJLZXlSZXF1ZXN0UmVzcG9uc2U+O1xuXG5leHBvcnQgdHlwZSBHZW5lcmF0ZUVkZHNhTVBDdjJEZXJpdmVLZXlSZXF1ZXN0ID0gRWRkc2FNUEN2MkRlcml2ZVJvdW5kMVJlcXVlc3QgfCBFZGRzYU1QQ3YyRGVyaXZlUm91bmQyUmVxdWVzdDtcbmV4cG9ydCB0eXBlIEdlbmVyYXRlRWRkc2FNUEN2MkRlcml2ZUtleVJlcXVlc3RSZXNwb25zZSA9XG4gIHwgRWRkc2FNUEN2MkRlcml2ZVJvdW5kMVJlc3BvbnNlXG4gIHwgRWRkc2FNUEN2MkRlcml2ZVJvdW5kMlJlc3BvbnNlO1xuIl19
@@ -1 +1 @@
1
- {"version":3,"file":"redpallasMPCv2KeyGenSender.d.ts","sourceRoot":"","sources":["../../../../../../src/bitgo/utils/tss/redpallas/redpallasMPCv2KeyGenSender.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,OAAO,CAAC;AAC3B,OAAO,EAGL,gBAAgB,EAKjB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,QAAA,MAAM,oCAAoC;6BA6B6lL,aAAa;+BAAkD,aAAa;cAAgC,EAAG,KAAK;iBAAmB,EAAG,OAAO;mBAAoB,EAAG,OAAO;;gBAAyB,EAAG,KAAK;iBAAmB,EAAG,OAAO;mBAAoB,EAAG,OAAO;;;sBAAwgB,aAAa;cAAgC,EAAG,KAAK;iBAAmB,EAAG,OAAO;mBAAoB,EAAG,OAAO;;gBAAyB,EAAG,KAAK;iBAAmB,EAAG,OAAO;mBAAoB,EAAG,OAAO;;IA1BpmN,CAAC;AACH,MAAM,MAAM,oCAAoC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,oCAAoC,CAAC,CAAC;AAEzG,QAAA,MAAM,wCAAwC;sBAuB+iM,aAAa;eAAiC,EAAG,KAAK;iBAAmB,EAAG,OAAO;mBAAoB,EAAG,OAAO;;;sBAAmmB,aAAa;iCAAoD,aAAa;eAAiC,EAAG,KAAK;iBAAmB,EAAG,OAAO;mBAAoB,EAAG,OAAO;;IApBj+N,CAAC;AACH,MAAM,MAAM,wCAAwC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,wCAAwC,CAAC,CAAC;AAEjH,MAAM,MAAM,0BAA0B,CAAC,CAAC,SAAS,wCAAwC,IAAI,CAC3F,KAAK,EAAE,gBAAgB,EACvB,OAAO,EAAE,oCAAoC,KAC1C,OAAO,CAAC,CAAC,CAAC,CAAC;AAEhB,wBAAgB,kCAAkC,CAAC,CAAC,SAAS,wCAAwC,EACnG,KAAK,EAAE,SAAS,EAChB,UAAU,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE,MAAM,GACd,0BAA0B,CAAC,CAAC,CAAC,CAO/B"}
1
+ {"version":3,"file":"redpallasMPCv2KeyGenSender.d.ts","sourceRoot":"","sources":["../../../../../../src/bitgo/utils/tss/redpallas/redpallasMPCv2KeyGenSender.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,OAAO,CAAC;AAC3B,OAAO,EAGL,gBAAgB,EAKjB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,QAAA,MAAM,oCAAoC;6BA6B24M,aAAa;+BAAkD,aAAa;cAAgC,EAAG,KAAK;iBAAmB,EAAG,OAAO;mBAAoB,EAAG,OAAO;;gBAAyB,EAAG,KAAK;iBAAmB,EAAG,OAAO;mBAAoB,EAAG,OAAO;;;sBAAwgB,aAAa;cAAgC,EAAG,KAAK;iBAAmB,EAAG,OAAO;mBAAoB,EAAG,OAAO;;gBAAyB,EAAG,KAAK;iBAAmB,EAAG,OAAO;mBAAoB,EAAG,OAAO;;IA1Bl5O,CAAC;AACH,MAAM,MAAM,oCAAoC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,oCAAoC,CAAC,CAAC;AAEzG,QAAA,MAAM,wCAAwC;sBAuB61N,aAAa;eAAiC,EAAG,KAAK;iBAAmB,EAAG,OAAO;mBAAoB,EAAG,OAAO;;;sBAAmmB,aAAa;iCAAoD,aAAa;eAAiC,EAAG,KAAK;iBAAmB,EAAG,OAAO;mBAAoB,EAAG,OAAO;;IApB/wP,CAAC;AACH,MAAM,MAAM,wCAAwC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,wCAAwC,CAAC,CAAC;AAEjH,MAAM,MAAM,0BAA0B,CAAC,CAAC,SAAS,wCAAwC,IAAI,CAC3F,KAAK,EAAE,gBAAgB,EACvB,OAAO,EAAE,oCAAoC,KAC1C,OAAO,CAAC,CAAC,CAAC,CAAC;AAEhB,wBAAgB,kCAAkC,CAAC,CAAC,SAAS,wCAAwC,EACnG,KAAK,EAAE,SAAS,EAChB,UAAU,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE,MAAM,GACd,0BAA0B,CAAC,CAAC,CAAC,CAO/B"}
@@ -252,6 +252,7 @@ export interface GenerateWalletWithExternalSignerOptions extends Omit<GenerateWa
252
252
  };
253
253
  ecdsaMPCv2Callbacks?: EcdsaMPCv2KeyGenCallbacks;
254
254
  eddsaCallbacks?: EddsaKeyGenCallbacks;
255
+ eddsaMPCv2Callbacks?: EddsaMPCv2KeyGenCallbacks;
255
256
  }
256
257
  export declare const GenerateLightningWalletOptionsCodec: t.IntersectionC<[t.ExactC<t.TypeC<{
257
258
  label: t.StringC;