@bitgo-beta/sdk-core 8.2.1-beta.9 → 8.2.1-beta.91

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 (93) hide show
  1. package/CHANGELOG.md +151 -0
  2. package/dist/src/account-lib/baseCoin/enum.d.ts +4 -1
  3. package/dist/src/account-lib/baseCoin/enum.d.ts.map +1 -1
  4. package/dist/src/account-lib/baseCoin/enum.js +7 -1
  5. package/dist/src/account-lib/mpc/tss/ecdsa/ecdsa.d.ts +33 -10
  6. package/dist/src/account-lib/mpc/tss/ecdsa/ecdsa.d.ts.map +1 -1
  7. package/dist/src/account-lib/mpc/tss/ecdsa/ecdsa.js +551 -141
  8. package/dist/src/account-lib/mpc/tss/ecdsa/rangeproof.d.ts +2 -2
  9. package/dist/src/account-lib/mpc/tss/ecdsa/rangeproof.d.ts.map +1 -1
  10. package/dist/src/account-lib/mpc/tss/ecdsa/rangeproof.js +3 -3
  11. package/dist/src/account-lib/mpc/tss/ecdsa/types.d.ts +70 -55
  12. package/dist/src/account-lib/mpc/tss/ecdsa/types.d.ts.map +1 -1
  13. package/dist/src/account-lib/mpc/tss/ecdsa/types.js +1 -1
  14. package/dist/src/account-lib/mpc/tss/eddsa/types.d.ts +0 -3
  15. package/dist/src/account-lib/mpc/tss/eddsa/types.d.ts.map +1 -1
  16. package/dist/src/account-lib/mpc/tss/eddsa/types.js +1 -1
  17. package/dist/src/bitgo/baseCoin/baseCoin.d.ts +16 -0
  18. package/dist/src/bitgo/baseCoin/baseCoin.d.ts.map +1 -1
  19. package/dist/src/bitgo/baseCoin/baseCoin.js +15 -1
  20. package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts +18 -2
  21. package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts.map +1 -1
  22. package/dist/src/bitgo/baseCoin/iBaseCoin.js +1 -1
  23. package/dist/src/bitgo/enterprise/iEnterprise.d.ts.map +1 -1
  24. package/dist/src/bitgo/enterprise/iEnterprise.js +1 -1
  25. package/dist/src/bitgo/environments.d.ts +7 -0
  26. package/dist/src/bitgo/environments.d.ts.map +1 -1
  27. package/dist/src/bitgo/environments.js +17 -3
  28. package/dist/src/bitgo/keychain/iKeychains.d.ts +1 -0
  29. package/dist/src/bitgo/keychain/iKeychains.d.ts.map +1 -1
  30. package/dist/src/bitgo/keychain/iKeychains.js +1 -1
  31. package/dist/src/bitgo/keychain/keychains.d.ts.map +1 -1
  32. package/dist/src/bitgo/keychain/keychains.js +30 -24
  33. package/dist/src/bitgo/keychain/ovcJsonCodec.d.ts +124 -89
  34. package/dist/src/bitgo/keychain/ovcJsonCodec.d.ts.map +1 -1
  35. package/dist/src/bitgo/keychain/ovcJsonCodec.js +31 -24
  36. package/dist/src/bitgo/pendingApproval/iPendingApproval.d.ts +1 -0
  37. package/dist/src/bitgo/pendingApproval/iPendingApproval.d.ts.map +1 -1
  38. package/dist/src/bitgo/pendingApproval/iPendingApproval.js +1 -1
  39. package/dist/src/bitgo/pendingApproval/pendingApproval.d.ts.map +1 -1
  40. package/dist/src/bitgo/pendingApproval/pendingApproval.js +12 -1
  41. package/dist/src/bitgo/staking/iStakingWallet.d.ts +11 -1
  42. package/dist/src/bitgo/staking/iStakingWallet.d.ts.map +1 -1
  43. package/dist/src/bitgo/staking/iStakingWallet.js +1 -1
  44. package/dist/src/bitgo/staking/stakingWallet.d.ts +7 -1
  45. package/dist/src/bitgo/staking/stakingWallet.d.ts.map +1 -1
  46. package/dist/src/bitgo/staking/stakingWallet.js +9 -1
  47. package/dist/src/bitgo/tss/common.d.ts +15 -4
  48. package/dist/src/bitgo/tss/common.d.ts.map +1 -1
  49. package/dist/src/bitgo/tss/common.js +26 -11
  50. package/dist/src/bitgo/tss/ecdsa/ecdsa.d.ts +11 -8
  51. package/dist/src/bitgo/tss/ecdsa/ecdsa.d.ts.map +1 -1
  52. package/dist/src/bitgo/tss/ecdsa/ecdsa.js +36 -33
  53. package/dist/src/bitgo/tss/ecdsa/types.d.ts +2 -2
  54. package/dist/src/bitgo/tss/ecdsa/types.d.ts.map +1 -1
  55. package/dist/src/bitgo/tss/ecdsa/types.js +1 -1
  56. package/dist/src/bitgo/tss/eddsa/eddsa.d.ts +4 -3
  57. package/dist/src/bitgo/tss/eddsa/eddsa.d.ts.map +1 -1
  58. package/dist/src/bitgo/tss/eddsa/eddsa.js +16 -5
  59. package/dist/src/bitgo/tss/types.d.ts +19 -0
  60. package/dist/src/bitgo/tss/types.d.ts.map +1 -1
  61. package/dist/src/bitgo/tss/types.js +1 -1
  62. package/dist/src/bitgo/utils/tss/baseTSSUtils.d.ts +53 -12
  63. package/dist/src/bitgo/utils/tss/baseTSSUtils.d.ts.map +1 -1
  64. package/dist/src/bitgo/utils/tss/baseTSSUtils.js +62 -9
  65. package/dist/src/bitgo/utils/tss/baseTypes.d.ts +99 -8
  66. package/dist/src/bitgo/utils/tss/baseTypes.d.ts.map +1 -1
  67. package/dist/src/bitgo/utils/tss/baseTypes.js +26 -2
  68. package/dist/src/bitgo/utils/tss/ecdsa/ecdsa.d.ts +44 -5
  69. package/dist/src/bitgo/utils/tss/ecdsa/ecdsa.d.ts.map +1 -1
  70. package/dist/src/bitgo/utils/tss/ecdsa/ecdsa.js +229 -86
  71. package/dist/src/bitgo/utils/tss/eddsa/eddsa.d.ts +18 -5
  72. package/dist/src/bitgo/utils/tss/eddsa/eddsa.d.ts.map +1 -1
  73. package/dist/src/bitgo/utils/tss/eddsa/eddsa.js +76 -22
  74. package/dist/src/bitgo/wallet/iWallet.d.ts +12 -1
  75. package/dist/src/bitgo/wallet/iWallet.d.ts.map +1 -1
  76. package/dist/src/bitgo/wallet/iWallet.js +1 -1
  77. package/dist/src/bitgo/wallet/wallet.d.ts +10 -2
  78. package/dist/src/bitgo/wallet/wallet.d.ts.map +1 -1
  79. package/dist/src/bitgo/wallet/wallet.js +108 -14
  80. package/dist/src/index.d.ts +4 -0
  81. package/dist/src/index.d.ts.map +1 -1
  82. package/dist/src/index.js +4 -2
  83. package/dist/src/openssl/index.d.ts +4 -1
  84. package/dist/src/openssl/index.d.ts.map +1 -1
  85. package/dist/src/openssl/index.js +7 -12
  86. package/dist/tsconfig.tsbuildinfo +1 -8272
  87. package/package.json +8 -7
  88. package/dist/src/openssl/openssl.d.ts +0 -12
  89. package/dist/src/openssl/openssl.d.ts.map +0 -1
  90. package/dist/src/openssl/openssl.js +0 -48
  91. package/dist/src/openssl/opensslbytes.d.ts +0 -4
  92. package/dist/src/openssl/opensslbytes.d.ts.map +0 -1
  93. package/dist/src/openssl/opensslbytes.js +0 -20
@@ -3,7 +3,7 @@ import openpgp from 'openpgp';
3
3
  import Eddsa, { GShare, KeyShare, PShare, SignShare, YShare } from './../../../account-lib/mpc/tss';
4
4
  import { BitGoBase } from './../../bitgoBase';
5
5
  import { DecryptableYShare, CombinedKey, EncryptedYShare, UserSigningMaterial, BackupSigningMaterial } from './types';
6
- import { SignatureShareRecord } from './../../utils';
6
+ import { SignatureShareRecord, CommitmentShareRecord } from './../../utils';
7
7
  import { BaseTransaction } from './../../../account-lib/baseCoin/baseTransaction';
8
8
  import { getTxRequest, sendSignatureShare } from '../common';
9
9
  export { getTxRequest, sendSignatureShare };
@@ -22,7 +22,7 @@ export declare function createCombinedKey(params: {
22
22
  commonKeychain: string;
23
23
  }): Promise<CombinedKey>;
24
24
  /**
25
- * Creates the User Sign Share containing the User XShare and the User to Bitgo RShare
25
+ * Creates the User Sign Share containing the User XShare , the User to Bitgo RShare and User to Bitgo commitment
26
26
  *
27
27
  * @param {Buffer} signablePayload - the signablePayload as a buffer
28
28
  * @param {PShare} pShare - User's signing material
@@ -36,9 +36,10 @@ export declare function createUserSignShare(signablePayload: Buffer, pShare: PSh
36
36
  * @param {SignatureShareRecord} bitgoToUserRShare - the Bitgo to User RShare
37
37
  * @param {YShare} backupToUserYShare - the backup key Y share received during wallet creation
38
38
  * @param {Buffer} signablePayload - the signable payload from a tx
39
+ * @param {CommitmentShareRecord} [bitgoToUserCommitment] - the Bitgo to User Commitment
39
40
  * @returns {Promise<GShare>} - the User to Bitgo GShare
40
41
  */
41
- export declare function createUserToBitGoGShare(userSignShare: SignShare, bitgoToUserRShare: SignatureShareRecord, backupToUserYShare: YShare, bitgoToUserYShare: YShare, signablePayload: Buffer): Promise<GShare>;
42
+ export declare function createUserToBitGoGShare(userSignShare: SignShare, bitgoToUserRShare: SignatureShareRecord, backupToUserYShare: YShare, bitgoToUserYShare: YShare, signablePayload: Buffer, bitgoToUserCommitment?: CommitmentShareRecord): Promise<GShare>;
42
43
  /**
43
44
  * Sends the User to Bitgo RShare to Bitgo
44
45
  * @param {BitGoBase} bitgo - the bitgo instance
@@ -1 +1 @@
1
- {"version":3,"file":"eddsa.d.ts","sourceRoot":"","sources":["../../../../../src/bitgo/tss/eddsa/eddsa.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"eddsa.d.ts","sourceRoot":"","sources":["../../../../../src/bitgo/tss/eddsa/eddsa.ts"],"names":[],"mappings":"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"}
@@ -76,7 +76,7 @@ async function createCombinedKey(params) {
76
76
  }
77
77
  exports.createCombinedKey = createCombinedKey;
78
78
  /**
79
- * Creates the User Sign Share containing the User XShare and the User to Bitgo RShare
79
+ * Creates the User Sign Share containing the User XShare , the User to Bitgo RShare and User to Bitgo commitment
80
80
  *
81
81
  * @param {Buffer} signablePayload - the signablePayload as a buffer
82
82
  * @param {PShare} pShare - User's signing material
@@ -98,9 +98,10 @@ exports.createUserSignShare = createUserSignShare;
98
98
  * @param {SignatureShareRecord} bitgoToUserRShare - the Bitgo to User RShare
99
99
  * @param {YShare} backupToUserYShare - the backup key Y share received during wallet creation
100
100
  * @param {Buffer} signablePayload - the signable payload from a tx
101
+ * @param {CommitmentShareRecord} [bitgoToUserCommitment] - the Bitgo to User Commitment
101
102
  * @returns {Promise<GShare>} - the User to Bitgo GShare
102
103
  */
103
- async function createUserToBitGoGShare(userSignShare, bitgoToUserRShare, backupToUserYShare, bitgoToUserYShare, signablePayload) {
104
+ async function createUserToBitGoGShare(userSignShare, bitgoToUserRShare, backupToUserYShare, bitgoToUserYShare, signablePayload, bitgoToUserCommitment) {
104
105
  if (userSignShare.xShare.i !== types_1.ShareKeyPosition.USER) {
105
106
  throw new Error('Invalid XShare, doesnt belong to the User');
106
107
  }
@@ -123,7 +124,7 @@ async function createUserToBitGoGShare(userSignShare, bitgoToUserRShare, backupT
123
124
  r = bitgoToUserRShare.share.substring(0, 64);
124
125
  R = bitgoToUserRShare.share.substring(64, 128);
125
126
  }
126
- const RShare = {
127
+ const updatedBitgoToUserRShare = {
127
128
  i: types_1.ShareKeyPosition.USER,
128
129
  j: types_1.ShareKeyPosition.BITGO,
129
130
  u: bitgoToUserYShare.u,
@@ -132,7 +133,17 @@ async function createUserToBitGoGShare(userSignShare, bitgoToUserRShare, backupT
132
133
  R,
133
134
  };
134
135
  const MPC = await tss_1.default.initialize();
135
- return MPC.sign(signablePayload, userSignShare.xShare, [RShare], [backupToUserYShare]);
136
+ if (bitgoToUserCommitment) {
137
+ if (bitgoToUserCommitment.from !== utils_1.SignatureShareType.BITGO ||
138
+ bitgoToUserCommitment.to !== utils_1.SignatureShareType.USER) {
139
+ throw new Error('Invalid Commitment, is not from Bitgo to User');
140
+ }
141
+ if (bitgoToUserCommitment.type !== utils_1.CommitmentType.COMMITMENT) {
142
+ throw new Error('Invalid Commitment type, got: ' + bitgoToUserCommitment.type + ' expected: commitment');
143
+ }
144
+ updatedBitgoToUserRShare.commitment = bitgoToUserCommitment.share;
145
+ }
146
+ return MPC.sign(signablePayload, userSignShare.xShare, [updatedBitgoToUserRShare], [backupToUserYShare]);
136
147
  }
137
148
  exports.createUserToBitGoGShare = createUserToBitGoGShare;
138
149
  /**
@@ -309,4 +320,4 @@ async function verifyWalletSignature(params) {
309
320
  assert_1.default(publicShare === Buffer.from(rawNotations[publicShareRawNotationIndex].value).toString(), 'bitgo share mismatch');
310
321
  }
311
322
  exports.verifyWalletSignature = verifyWalletSignature;
312
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRkc2EuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYml0Z28vdHNzL2VkZHNhL2VkZHNhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLG9EQUE0QjtBQUU1QixzRkFBNkM7QUFDN0MseUVBQW9IO0FBVXBILHNDQUE4QztBQUM5Qyx5Q0FNdUI7QUFFdkIsOERBQWlFO0FBQ2pFLDRCQUE2QjtBQUM3QixzQ0FBMEY7QUFFakYsNkZBRjZCLHFCQUFZLE9BRTdCO0FBQUUsbUdBRjZCLDJCQUFrQixPQUU3QjtBQUV6Qzs7Ozs7Ozs7R0FRRztBQUNJLEtBQUssVUFBVSxpQkFBaUIsQ0FBQyxNQUl2QztJQUNDLE1BQU0sYUFBSyxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3pCLE1BQU0sR0FBRyxHQUFHLElBQUksYUFBSyxFQUFFLENBQUM7SUFFeEIsTUFBTSxFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsRUFBRSxjQUFjLEVBQUUsR0FBRyxNQUFNLENBQUM7SUFDOUQsTUFBTSxPQUFPLEdBQWEsRUFBRSxDQUFDO0lBRTdCLElBQUksV0FBK0IsQ0FBQztJQUNwQyxJQUFJLFVBQThCLENBQUM7SUFDbkMsSUFBSSxZQUFnQyxDQUFDO0lBRXJDLEtBQUssTUFBTSxlQUFlLElBQUksZ0JBQWdCLEVBQUU7UUFDOUMsTUFBTSxZQUFZLEdBQUcsTUFBTSx5QkFBaUIsQ0FDMUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsRUFDNUMsZUFBZSxDQUFDLGlCQUFpQixFQUNqQyxlQUFlLENBQUMscUJBQXFCLENBQ3RDLENBQUM7UUFFRixNQUFNLE1BQU0sR0FBVztZQUNyQixDQUFDLEVBQUUsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzNCLENBQUMsRUFBRSxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDM0IsQ0FBQyxFQUFFLGVBQWUsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVB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TUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsMkJBQTJCLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFDdkYsc0JBQXNCLENBQ3ZCLENBQUM7QUFDSixDQUFDO0FBdkJELHNEQXVCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCBvcGVucGdwIGZyb20gJ29wZW5wZ3AnO1xuaW1wb3J0IHNvZGl1bSBmcm9tICdsaWJzb2RpdW0td3JhcHBlcnMtc3Vtbyc7XG5pbXBvcnQgRWRkc2EsIHsgR1NoYXJlLCBKU2hhcmUsIEtleVNoYXJlLCBQU2hhcmUsIFJTaGFyZSwgU2lnblNoYXJlLCBZU2hhcmUgfSBmcm9tICcuLy4uLy4uLy4uL2FjY291bnQtbGliL21wYy90c3MnO1xuaW1wb3J0IHsgQml0R29CYXNlIH0gZnJvbSAnLi8uLi8uLi9iaXRnb0Jhc2UnO1xuaW1wb3J0IHtcbiAgRGVjcnlwdGFibGVZU2hhcmUsXG4gIENvbWJpbmVkS2V5LFxuICBTaWduaW5nTWF0ZXJpYWwsXG4gIEVuY3J5cHRlZFlTaGFyZSxcbiAgVXNlclNpZ25pbmdNYXRlcmlhbCxcbiAgQmFja3VwU2lnbmluZ01hdGVyaWFsLFxufSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IFNoYXJlS2V5UG9zaXRpb24gfSBmcm9tICcuLy4uL3R5cGVzJztcbmltcG9ydCB7XG4gIGVuY3J5cHRBbmRTaWduVGV4dCxcbiAgcmVhZFNpZ25lZE1lc3NhZ2UsXG4gIFNpZ25hdHVyZVNoYXJlUmVjb3JkLFxuICBTaWduYXR1cmVTaGFyZVR5cGUsXG4gIFJlcXVlc3RUeXBlLFxufSBmcm9tICcuLy4uLy4uL3V0aWxzJztcbmltcG9ydCB7IEJhc2VUcmFuc2FjdGlvbiB9IGZyb20gJy4vLi4vLi4vLi4vYWNjb3VudC1saWIvYmFzZUNvaW4vYmFzZVRyYW5zYWN0aW9uJztcbmltcG9ydCB7IEVkMjU1MTlCSVAzMiB9IGZyb20gJy4vLi4vLi4vLi4vYWNjb3VudC1saWIvbXBjL2hkVHJlZSc7XG5pbXBvcnQgXyA9IHJlcXVpcmUoJ2xvZGFzaCcpO1xuaW1wb3J0IHsgY29tbW9uVmVyaWZ5V2FsbGV0U2lnbmF0dXJlLCBnZXRUeFJlcXVlc3QsIHNlbmRTaWduYXR1cmVTaGFyZSB9IGZyb20gJy4uL2NvbW1vbic7XG5cbmV4cG9ydCB7IGdldFR4UmVxdWVzdCwgc2VuZFNpZ25hdHVyZVNoYXJlIH07XG5cbi8qKlxuICogQ29tYmluZXMgWVNoYXJlcyB0byBjb21iaW5lIHRoZSBmaW5hbCBUU1Mga2V5XG4gKiBUaGlzIGNhbiBvbmx5IGJlIHVzZWQgdG8gY3JlYXRlIHRoZSBVc2VyIG9yIEJhY2t1cCBrZXkgc2luY2UgaXQgcmVxdWlyZXMgdGhlIGNvbW1vbiBrZXljaGFpbiBmcm9tIEJpdEdvIGZpcnN0XG4gKlxuICogQHBhcmFtIHBhcmFtcy5rZXlTaGFyZSAtIFRTUyBrZXkgc2hhcmVcbiAqIEBwYXJhbSBwYXJhbXMuZW5jcnlwdGVkWVNoYXJlcyAtIGVuY3J5cHRlZCBZU2hhcmVzIHdpdGggaW5mb3JtYXRpb24gb24gaG93IHRvIGRlY3J5cHRcbiAqIEBwYXJhbSBwYXJhbXMuY29tbW9uS2V5Y2hhaW4gLSBleHBlY3RlZCBjb21tb24ga2V5Y2hhaW4gb2YgdGhlIGNvbWJpbmVkIGtleVxuICogQHJldHVybnMge0NvbWJpbmVkS2V5fSBjb21iaW5lZCBUU1Mga2V5XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVDb21iaW5lZEtleShwYXJhbXM6IHtcbiAga2V5U2hhcmU6IEtleVNoYXJlO1xuICBlbmNyeXB0ZWRZU2hhcmVzOiBEZWNyeXB0YWJsZVlTaGFyZVtdO1xuICBjb21tb25LZXljaGFpbjogc3RyaW5nO1xufSk6IFByb21pc2U8Q29tYmluZWRLZXk+IHtcbiAgYXdhaXQgRWRkc2EuaW5pdGlhbGl6ZSgpO1xuICBjb25zdCBNUEMgPSBuZXcgRWRkc2EoKTtcblxuICBjb25zdCB7IGtleVNoYXJlLCBlbmNyeXB0ZWRZU2hhcmVzLCBjb21tb25LZXljaGFpbiB9ID0gcGFyYW1zO1xuICBjb25zdCB5U2hhcmVzOiBZU2hhcmVbXSA9IFtdO1xuXG4gIGxldCBiaXRnb1lTaGFyZTogWVNoYXJlIHwgdW5kZWZpbmVkO1xuICBsZXQgdXNlcllTaGFyZTogWVNoYXJlIHwgdW5kZWZpbmVkO1xuICBsZXQgYmFja3VwWVNoYXJlOiBZU2hhcmUgfCB1bmRlZmluZWQ7XG5cbiAgZm9yIChjb25zdCBlbmNyeXB0ZWRZU2hhcmUgb2YgZW5jcnlwdGVkWVNoYXJlcykge1xuICAgIGNvbnN0IHByaXZhdGVTaGFyZSA9IGF3YWl0IHJlYWRTaWduZWRNZXNzYWdlKFxuICAgICAgZW5jcnlwdGVkWVNoYXJlLnlTaGFyZS5lbmNyeXB0ZWRQcml2YXRlU2hhcmUsXG4gICAgICBlbmNyeXB0ZWRZU2hhcmUuc2VuZGVyUHVibGljQXJtb3IsXG4gICAgICBlbmNyeXB0ZWRZU2hhcmUucmVjaXBpZW50UHJpdmF0ZUFybW9yXG4gICAgKTtcblxuICAgIGNvbnN0IHlTaGFyZTogWVNoYXJlID0ge1xuICAgICAgaTogZW5jcnlwdGVkWVNoYXJlLnlTaGFyZS5pLFxuICAgICAgajogZW5jcnlwdGVkWVNoYXJlLnlTaGFyZS5qLFxuICAgICAgeTogZW5jcnlwdGVkWVNoYXJlLnlTaGFyZS5wdWJsaWNTaGFyZS5zbGljZSgwLCA2NCksXG4gICAgICB2OiBlbmNyeXB0ZWRZU2hhcmUueVNoYXJlLnB1YmxpY1NoYXJlLnNsaWNlKDY0LCAxMjgpLFxuICAgICAgdTogcHJpdmF0ZVNoYXJlLnNsaWNlKDAsIDY0KSxcbiAgICAgIGNoYWluY29kZTogcHJpdmF0ZVNoYXJlLnNsaWNlKDY0KSxcbiAgICB9O1xuXG4gICAgc3dpdGNoIChlbmNyeXB0ZWRZU2hhcmUueVNoYXJlLmopIHtcbiAgICAgIGNhc2UgMTpcbiAgICAgICAgdXNlcllTaGFyZSA9IHlTaGFyZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI6XG4gICAgICAgIGJhY2t1cFlTaGFyZSA9IHlTaGFyZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDM6XG4gICAgICAgIGJpdGdvWVNoYXJlID0geVNoYXJlO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBZU2hhcmUgaW5kZXgnKTtcbiAgICB9XG5cbiAgICB5U2hhcmVzLnB1c2goeVNoYXJlKTtcbiAgfVxuXG4gIGNvbnN0IGNvbWJpbmVkS2V5ID0gTVBDLmtleUNvbWJpbmUoa2V5U2hhcmUudVNoYXJlLCB5U2hhcmVzKTtcbiAgaWYgKGNvbWJpbmVkS2V5LnBTaGFyZS55ICsgY29tYmluZWRLZXkucFNoYXJlLmNoYWluY29kZSAhPT0gY29tbW9uS2V5Y2hhaW4pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvbW1vbiBrZXljaGFpbnMgZG8gbm90IG1hdGNoJyk7XG4gIH1cbiAgaWYgKCFiaXRnb1lTaGFyZSkge1xuICAgIHRocm93IG5ldyBFcnJvcignTWlzc2luZyBCaXRHbyBZIFNoYXJlJyk7XG4gIH1cblxuICBjb25zdCBzaWduaW5nTWF0ZXJpYWw6IFNpZ25pbmdNYXRlcmlhbCA9IHtcbiAgICB1U2hhcmU6IGtleVNoYXJlLnVTaGFyZSxcbiAgICBiaXRnb1lTaGFyZSxcbiAgICBiYWNrdXBZU2hhcmUsXG4gICAgdXNlcllTaGFyZSxcbiAgfTtcblxuICByZXR1cm4ge1xuICAgIHNpZ25pbmdNYXRlcmlhbCxcbiAgICBjb21tb25LZXljaGFpbixcbiAgfTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIHRoZSBVc2VyIFNpZ24gU2hhcmUgY29udGFpbmluZyB0aGUgVXNlciBYU2hhcmUgYW5kIHRoZSBVc2VyIHRvIEJpdGdvIFJTaGFyZVxuICpcbiAqIEBwYXJhbSB7QnVmZmVyfSBzaWduYWJsZVBheWxvYWQgLSB0aGUgc2lnbmFibGVQYXlsb2FkIGFzIGEgYnVmZmVyXG4gKiBAcGFyYW0ge1BTaGFyZX0gcFNoYXJlIC0gVXNlcidzIHNpZ25pbmcgbWF0ZXJpYWxcbiAqIEByZXR1cm5zIHtQcm9taXNlPFNpZ25TaGFyZT59IC0gVXNlciBTaWduIFNoYXJlXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVVc2VyU2lnblNoYXJlKHNpZ25hYmxlUGF5bG9hZDogQnVmZmVyLCBwU2hhcmU6IFBTaGFyZSk6IFByb21pc2U8U2lnblNoYXJlPiB7XG4gIGNvbnN0IE1QQyA9IGF3YWl0IEVkZHNhLmluaXRpYWxpemUoKTtcblxuICBpZiAocFNoYXJlLmkgIT09IFNoYXJlS2V5UG9zaXRpb24uVVNFUikge1xuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBQU2hhcmUsIFBTaGFyZSBkb2VzbnQgYmVsb25nIHRvIHRoZSBVc2VyJyk7XG4gIH1cbiAgY29uc3QgalNoYXJlOiBKU2hhcmUgPSB7IGk6IFNoYXJlS2V5UG9zaXRpb24uQklUR08sIGo6IFNoYXJlS2V5UG9zaXRpb24uVVNFUiB9O1xuICByZXR1cm4gTVBDLnNpZ25TaGFyZShzaWduYWJsZVBheWxvYWQsIHBTaGFyZSwgW2pTaGFyZV0pO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgdGhlIFVzZXIgdG8gQml0Z28gR1NoYXJlXG4gKlxuICogQHBhcmFtIHtTaWduU2hhcmV9IHVzZXJTaWduU2hhcmUgLSB0aGUgVXNlciBTaWduIFNoYXJlXG4gKiBAcGFyYW0ge1NpZ25hdHVyZVNoYXJlUmVjb3JkfSBiaXRnb1RvVXNlclJTaGFyZSAtIHRoZSBCaXRnbyB0byBVc2VyIFJTaGFyZVxuICogQHBhcmFtIHtZU2hhcmV9IGJhY2t1cFRvVXNlcllTaGFyZSAtIHRoZSBiYWNrdXAga2V5IFkgc2hhcmUgcmVjZWl2ZWQgZHVyaW5nIHdhbGxldCBjcmVhdGlvblxuICogQHBhcmFtIHtCdWZmZXJ9IHNpZ25hYmxlUGF5bG9hZCAtIHRoZSBzaWduYWJsZSBwYXlsb2FkIGZyb20gYSB0eFxuICogQHJldHVybnMge1Byb21pc2U8R1NoYXJlPn0gLSB0aGUgVXNlciB0byBCaXRnbyBHU2hhcmVcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZVVzZXJUb0JpdEdvR1NoYXJlKFxuICB1c2VyU2lnblNoYXJlOiBTaWduU2hhcmUsXG4gIGJpdGdvVG9Vc2VyUlNoYXJlOiBTaWduYXR1cmVTaGFyZVJlY29yZCxcbiAgYmFja3VwVG9Vc2VyWVNoYXJlOiBZU2hhcmUsXG4gIGJpdGdvVG9Vc2VyWVNoYXJlOiBZU2hhcmUsXG4gIHNpZ25hYmxlUGF5bG9hZDogQnVmZmVyXG4pOiBQcm9taXNlPEdTaGFyZT4ge1xuICBpZiAodXNlclNpZ25TaGFyZS54U2hhcmUuaSAhPT0gU2hhcmVLZXlQb3NpdGlvbi5VU0VSKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIFhTaGFyZSwgZG9lc250IGJlbG9uZyB0byB0aGUgVXNlcicpO1xuICB9XG4gIGlmIChiaXRnb1RvVXNlclJTaGFyZS5mcm9tICE9PSBTaWduYXR1cmVTaGFyZVR5cGUuQklUR08gfHwgYml0Z29Ub1VzZXJSU2hhcmUudG8gIT09IFNpZ25hdHVyZVNoYXJlVHlwZS5VU0VSKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIFJTaGFyZSwgaXMgbm90IGZyb20gQml0Z28gdG8gVXNlcicpO1xuICB9XG4gIGlmIChiYWNrdXBUb1VzZXJZU2hhcmUuaSAhPT0gU2hhcmVLZXlQb3NpdGlvbi5VU0VSKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIFlTaGFyZSwgZG9lc250IGJlbG9uZyB0byB0aGUgVXNlcicpO1xuICB9XG4gIGlmIChiYWNrdXBUb1VzZXJZU2hhcmUuaiAhPT0gU2hhcmVLZXlQb3NpdGlvbi5CQUNLVVApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgWVNoYXJlLCBpcyBub3QgYmFja3VwIGtleScpO1xuICB9XG5cbiAgbGV0IHYsIHIsIFI7XG4gIGlmIChiaXRnb1RvVXNlclJTaGFyZS5zaGFyZS5sZW5ndGggPiAxMjgpIHtcbiAgICB2ID0gYml0Z29Ub1VzZXJSU2hhcmUuc2hhcmUuc3Vic3RyaW5nKDAsIDY0KTtcbiAgICByID0gYml0Z29Ub1VzZXJSU2hhcmUuc2hhcmUuc3Vic3RyaW5nKDY0LCAxMjgpO1xuICAgIFIgPSBiaXRnb1RvVXNlclJTaGFyZS5zaGFyZS5zdWJzdHJpbmcoMTI4LCAxOTIpO1xuICB9IGVsc2Uge1xuICAgIHIgPSBiaXRnb1RvVXNlclJTaGFyZS5zaGFyZS5zdWJzdHJpbmcoMCwgNjQpO1xuICAgIFIgPSBiaXRnb1RvVXNlclJTaGFyZS5zaGFyZS5zdWJzdHJpbmcoNjQsIDEyOCk7XG4gIH1cblxuICBjb25zdCBSU2hhcmU6IFJTaGFyZSA9IHtcbiAgICBpOiBTaGFyZUtleVBvc2l0aW9uLlVTRVIsXG4gICAgajogU2hhcmVLZXlQb3NpdGlvbi5CSVRHTyxcbiAgICB1OiBiaXRnb1RvVXNlcllTaGFyZS51LFxuICAgIHYsXG4gICAgcixcbiAgICBSLFxuICB9O1xuXG4gIGNvbnN0IE1QQyA9IGF3YWl0IEVkZHNhLmluaXRpYWxpemUoKTtcbiAgcmV0dXJuIE1QQy5zaWduKHNpZ25hYmxlUGF5bG9hZCwgdXNlclNpZ25TaGFyZS54U2hhcmUsIFtSU2hhcmVdLCBbYmFja3VwVG9Vc2VyWVNoYXJlXSk7XG59XG5cbi8qKlxuICogU2VuZHMgdGhlIFVzZXIgdG8gQml0Z28gUlNoYXJlIHRvIEJpdGdvXG4gKiBAcGFyYW0ge0JpdEdvQmFzZX0gYml0Z28gLSB0aGUgYml0Z28gaW5zdGFuY2VcbiAqIEBwYXJhbSB7U3RyaW5nfSB3YWxsZXRJZCAtIHRoZSB3YWxsZXQgaWRcbiAqIEBwYXJhbSB7U3RyaW5nfSB0eFJlcXVlc3RJZCAtIHRoZSB0eFJlcXVlc3QgSWRcbiAqIEBwYXJhbSB7U2lnblNoYXJlfSB1c2VyU2lnblNoYXJlIC0gdGhlIHVzZXIgU2lnbiBTaGFyZVxuICogQHBhcmFtIHtTdHJpbmd9IGVuY3J5cHRlZFNpZ25lclNoYXJlIC0gc2lnbmVyIHNoYXJlIGVuY3J5cHRlZCB0byBiaXRnbyBrZXlcbiAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gb2ZmZXJVc2VyVG9CaXRnb1JTaGFyZShcbiAgYml0Z286IEJpdEdvQmFzZSxcbiAgd2FsbGV0SWQ6IHN0cmluZyxcbiAgdHhSZXF1ZXN0SWQ6IHN0cmluZyxcbiAgdXNlclNpZ25TaGFyZTogU2lnblNoYXJlLFxuICBlbmNyeXB0ZWRTaWduZXJTaGFyZTogc3RyaW5nLFxuICBhcGlNb2RlOiAnZnVsbCcgfCAnbGl0ZScgPSAnbGl0ZScsXG4gIHZzc1Byb29mPzogc3RyaW5nLFxuICBwcml2YXRlU2hhcmVQcm9vZj86IHN0cmluZyxcbiAgdXNlclB1YmxpY0dwZ0tleT86IHN0cmluZyxcbiAgcHVibGljU2hhcmU/OiBzdHJpbmdcbik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCByU2hhcmU6IFJTaGFyZSA9IHVzZXJTaWduU2hhcmUuclNoYXJlc1tTaGFyZUtleVBvc2l0aW9uLkJJVEdPXTtcbiAgaWYgKF8uaXNOaWwoclNoYXJlKSkge1xuICAgIHRocm93IG5ldyBFcnJvcigndXNlclRvQml0Z28gUlNoYXJlIG5vdCBmb3VuZCcpO1xuICB9XG4gIGlmIChyU2hhcmUuaSAhPT0gU2hhcmVLZXlQb3NpdGlvbi5CSVRHTyB8fCByU2hhcmUuaiAhPT0gU2hhcmVLZXlQb3NpdGlvbi5VU0VSKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIFJTaGFyZSwgaXMgbm90IGZyb20gVXNlciB0byBCaXRnbycpO1xuICB9XG4gIGNvbnN0IHNpZ25hdHVyZVNoYXJlOiBTaWduYXR1cmVTaGFyZVJlY29yZCA9IHtcbiAgICBmcm9tOiBTaWduYXR1cmVTaGFyZVR5cGUuVVNFUixcbiAgICB0bzogU2lnbmF0dXJlU2hhcmVUeXBlLkJJVEdPLFxuICAgIHNoYXJlOiByU2hhcmUuciArIHJTaGFyZS5SLFxuICAgIHZzc1Byb29mLFxuICAgIHByaXZhdGVTaGFyZVByb29mLFxuICAgIHB1YmxpY1NoYXJlLFxuICB9O1xuXG4gIC8vIFRPRE8gKEJHLTU3OTQ0KTogaW1wbGVtZW50IG1lc3NhZ2Ugc2lnbmluZyBmb3IgRUREU0FcbiAgYXdhaXQgc2VuZFNpZ25hdHVyZVNoYXJlKFxuICAgIGJpdGdvLFxuICAgIHdhbGxldElkLFxuICAgIHR4UmVxdWVzdElkLFxuICAgIHNpZ25hdHVyZVNoYXJlLFxuICAgIFJlcXVlc3RUeXBlLnR4LFxuICAgIGVuY3J5cHRlZFNpZ25lclNoYXJlLFxuICAgICdlZGRzYScsXG4gICAgYXBpTW9kZSxcbiAgICB1c2VyUHVibGljR3BnS2V5XG4gICk7XG59XG5cbi8qKlxuICogR2V0cyB0aGUgQml0Z28gdG8gVXNlciBSU2hhcmUgZnJvbSBCaXRnb1xuICpcbiAqIEBwYXJhbSB7Qml0R29CYXNlfSBiaXRnbyAtIHRoZSBiaXRnbyBpbnN0YW5jZVxuICogQHBhcmFtIHtTdHJpbmd9IHdhbGxldElkIC0gdGhlIHdhbGxldCBpZFxuICogQHBhcmFtIHtTdHJpbmd9IHR4UmVxdWVzdElkIC0gdGhlIHR4UmVxdWVzdCBJZFxuICogQHJldHVybnMge1Byb21pc2U8U2lnbmF0dXJlU2hhcmVSZWNvcmQ+fSAtIGEgU2lnbmF0dXJlIFNoYXJlXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRCaXRnb1RvVXNlclJTaGFyZShcbiAgYml0Z286IEJpdEdvQmFzZSxcbiAgd2FsbGV0SWQ6IHN0cmluZyxcbiAgdHhSZXF1ZXN0SWQ6IHN0cmluZ1xuKTogUHJvbWlzZTxTaWduYXR1cmVTaGFyZVJlY29yZD4ge1xuICBjb25zdCB0eFJlcXVlc3QgPSBhd2FpdCBnZXRUeFJlcXVlc3QoYml0Z28sIHdhbGxldElkLCB0eFJlcXVlc3RJZCk7XG4gIGxldCBzaWduYXR1cmVTaGFyZXM7XG4gIGlmICh0eFJlcXVlc3QuYXBpVmVyc2lvbiA9PT0gJ2Z1bGwnKSB7XG4gICAgYXNzZXJ0KHR4UmVxdWVzdC50cmFuc2FjdGlvbnMsICd0cmFuc2FjdGlvbnMgcmVxdWlyZWQgYXMgcGFydCBvZiB0eFJlcXVlc3QnKTtcbiAgICBzaWduYXR1cmVTaGFyZXMgPSB0eFJlcXVlc3QudHJhbnNhY3Rpb25zWzBdLnNpZ25hdHVyZVNoYXJlcztcbiAgfSBlbHNlIHtcbiAgICBzaWduYXR1cmVTaGFyZXMgPSB0eFJlcXVlc3Quc2lnbmF0dXJlU2hhcmVzO1xuICB9XG4gIGlmIChfLmlzTmlsKHNpZ25hdHVyZVNoYXJlcykgfHwgXy5pc0VtcHR5KHNpZ25hdHVyZVNoYXJlcykpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYE5vIHNpZ25hdHVyZXMgc2hhcmVzIGZvdW5kIGZvciBpZDogJHt0eFJlcXVlc3RJZH1gKTtcbiAgfVxuICAvLyBhdCB0aGlzIHBvaW50IHdlIGV4cGVjdCB0aGUgb25seSBzaGFyZSB0byBiZSB0aGUgUlNoYXJlXG4gIGNvbnN0IGJpdGdvVG9Vc2VyUlNoYXJlID0gc2lnbmF0dXJlU2hhcmVzLmZpbmQoXG4gICAgKHNpZ1NoYXJlKSA9PiBzaWdTaGFyZS5mcm9tID09PSBTaWduYXR1cmVTaGFyZVR5cGUuQklUR08gJiYgc2lnU2hhcmUudG8gPT09IFNpZ25hdHVyZVNoYXJlVHlwZS5VU0VSXG4gICk7XG4gIGlmIChfLmlzTmlsKGJpdGdvVG9Vc2VyUlNoYXJlKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgQml0Z28gdG8gVXNlciBSU2hhcmUgbm90IGZvdW5kIGZvciBpZDogJHt0eFJlcXVlc3RJZH1gKTtcbiAgfVxuICByZXR1cm4gYml0Z29Ub1VzZXJSU2hhcmU7XG59XG5cbi8qKlxuICogU2VuZHMgdGhlIFVzZXIgdG8gQml0Z28gR1NoYXJlIHRvIEJpdGdvXG4gKlxuICogQHBhcmFtIHtCaXRHb0Jhc2V9IGJpdGdvIC0gdGhlIGJpdGdvIGluc3RhbmNlXG4gKiBAcGFyYW0ge1N0cmluZ30gd2FsbGV0SWQgLSB0aGUgd2FsbGV0IGlkXG4gKiBAcGFyYW0ge1N0cmluZ30gdHhSZXF1ZXN0SWQgLSB0aGUgdHhSZXF1ZXN0IElkXG4gKiBAcGFyYW0ge0dTaGFyZX0gdXNlclRvQml0Z29HU2hhcmUgLSB0aGUgVXNlciB0byBCaXRnbyBHU2hhcmVcbiAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2VuZFVzZXJUb0JpdGdvR1NoYXJlKFxuICBiaXRnbzogQml0R29CYXNlLFxuICB3YWxsZXRJZDogc3RyaW5nLFxuICB0eFJlcXVlc3RJZDogc3RyaW5nLFxuICB1c2VyVG9CaXRnb0dTaGFyZTogR1NoYXJlLFxuICBhcGlNb2RlOiAnZnVsbCcgfCAnbGl0ZScgPSAnbGl0ZSdcbik6IFByb21pc2U8dm9pZD4ge1xuICBpZiAodXNlclRvQml0Z29HU2hhcmUuaSAhPT0gU2hhcmVLZXlQb3NpdGlvbi5VU0VSKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIEdTaGFyZSwgZG9lc250IGJlbG9uZyB0byB0aGUgVXNlcicpO1xuICB9XG4gIGNvbnN0IHNpZ25hdHVyZVNoYXJlOiBTaWduYXR1cmVTaGFyZVJlY29yZCA9IHtcbiAgICBmcm9tOiBTaWduYXR1cmVTaGFyZVR5cGUuVVNFUixcbiAgICB0bzogU2lnbmF0dXJlU2hhcmVUeXBlLkJJVEdPLFxuICAgIHNoYXJlOiB1c2VyVG9CaXRnb0dTaGFyZS5SICsgdXNlclRvQml0Z29HU2hhcmUuZ2FtbWEsXG4gIH07XG5cbiAgLy8gVE9ETyAoQkctNTc5NDQpOiBpbXBsZW1lbnQgbWVzc2FnZSBzaWduaW5nIGZvciBFRERTQVxuICBhd2FpdCBzZW5kU2lnbmF0dXJlU2hhcmUoYml0Z28sIHdhbGxldElkLCB0eFJlcXVlc3RJZCwgc2lnbmF0dXJlU2hhcmUsIFJlcXVlc3RUeXBlLnR4LCB1bmRlZmluZWQsICdlZGRzYScsIGFwaU1vZGUpO1xufVxuXG4vKipcbiAqIFByZXBhcmVzIGEgWVNoYXJlIHRvIGJlIGV4Y2hhbmdlZCB3aXRoIG90aGVyIGtleSBob2xkZXJzLlxuICogT3V0cHV0IGlzIGluIGEgZm9ybWF0IHRoYXQgaXMgdXNhYmxlIHdpdGhpbiBCaXRHbydzIGVjb3N5c3RlbS5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zLmtleVNoYXJlIC0gVFNTIGtleSBzaGFyZSBvZiB0aGUgcGFydHkgcHJlcGFyaW5nIGV4Y2hhbmdlIG1hdGVyaWFsc1xuICogQHBhcmFtIHBhcmFtcy5yZWNpcGllbnRJbmRleCAtIGluZGV4IG9mIHRoZSByZWNpcGllbnQgKDEsIDIsIG9yIDMpXG4gKiBAcGFyYW0gcGFyYW1zLnJlY2lwaWVudEdwZ1B1YmxpY0FybW9yIC0gcmVjaXBpZW50J3MgcHVibGljIGdwZyBrZXkgaW4gYXJtb3IgZm9ybWF0XG4gKiBAcGFyYW0gcGFyYW1zLnNlbmRlckdwZ1ByaXZhdGVBcm1vciAtIHNlbmRlcidzIHByaXZhdGUgZ3BnIGtleSBpbiBhcm1vciBmb3JtYXRcbiAqIEByZXR1cm5zIHsgRW5jcnlwdGVkWVNoYXJlIH0gZW5jcnlwdGVkIFkgU2hhcmVcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGVuY3J5cHRZU2hhcmUocGFyYW1zOiB7XG4gIGtleVNoYXJlOiBLZXlTaGFyZTtcbiAgcmVjaXBpZW50SW5kZXg6IG51bWJlcjtcbiAgcmVjaXBpZW50R3BnUHVibGljQXJtb3I6IHN0cmluZztcbiAgc2VuZGVyR3BnUHJpdmF0ZUFybW9yOiBzdHJpbmc7XG59KTogUHJvbWlzZTxFbmNyeXB0ZWRZU2hhcmU+IHtcbiAgY29uc3QgeyBrZXlTaGFyZSwgcmVjaXBpZW50SW5kZXgsIHJlY2lwaWVudEdwZ1B1YmxpY0FybW9yLCBzZW5kZXJHcGdQcml2YXRlQXJtb3IgfSA9IHBhcmFtcztcblxuICBjb25zdCB5U2hhcmUgPSBrZXlTaGFyZS55U2hhcmVzW3JlY2lwaWVudEluZGV4XTtcbiAgaWYgKCF5U2hhcmUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgcmVjaXBpZW50Jyk7XG4gIH1cblxuICBjb25zdCBwdWJsaWNTaGFyZSA9IEJ1ZmZlci5jb25jYXQoW1xuICAgIEJ1ZmZlci5mcm9tKGtleVNoYXJlLnVTaGFyZS55LCAnaGV4JyksXG4gICAgQnVmZmVyLmZyb20oeVNoYXJlLnYhLCAnaGV4JyksXG4gICAgQnVmZmVyLmZyb20oa2V5U2hhcmUudVNoYXJlLmNoYWluY29kZSwgJ2hleCcpLFxuICBdKS50b1N0cmluZygnaGV4Jyk7XG5cbiAgY29uc3QgcHJpdmF0ZVNoYXJlID0gQnVmZmVyLmNvbmNhdChbQnVmZmVyLmZyb20oeVNoYXJlLnUsICdoZXgnKSwgQnVmZmVyLmZyb20oeVNoYXJlLmNoYWluY29kZSwgJ2hleCcpXSkudG9TdHJpbmcoXG4gICAgJ2hleCdcbiAgKTtcblxuICBjb25zdCBlbmNyeXB0ZWRQcml2YXRlU2hhcmUgPSBhd2FpdCBlbmNyeXB0QW5kU2lnblRleHQocHJpdmF0ZVNoYXJlLCByZWNpcGllbnRHcGdQdWJsaWNBcm1vciwgc2VuZGVyR3BnUHJpdmF0ZUFybW9yKTtcblxuICByZXR1cm4ge1xuICAgIGk6IHlTaGFyZS5pLFxuICAgIGo6IHlTaGFyZS5qLFxuICAgIHB1YmxpY1NoYXJlLFxuICAgIGVuY3J5cHRlZFByaXZhdGVTaGFyZSxcbiAgfTtcbn1cblxuLyoqXG4gKlxuICogSW5pdGlhbGl6ZXMgRWRkc2EgaW5zdGFuY2VcbiAqXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxFZGRzYT59IHRoZSBFZGRzYSBpbnN0YW5jZVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0SW5pdGlhbGl6ZWRNcGNJbnN0YW5jZSgpIHtcbiAgY29uc3QgaGRUcmVlID0gYXdhaXQgRWQyNTUxOUJJUDMyLmluaXRpYWxpemUoKTtcbiAgcmV0dXJuIGF3YWl0IEVkZHNhLmluaXRpYWxpemUoaGRUcmVlKTtcbn1cblxuLyoqXG4gKlxuICogR2VuZXJhdGVzIGEgVFNTIHNpZ25hdHVyZSB1c2luZyB0aGUgdXNlciBhbmQgYmFja3VwIGtleVxuICpcbiAqIEBwYXJhbSB7VXNlclNpZ25pbmdNYXRlcmlhbH0gdXNlclNpZ25pbmdNYXRlcmlhbCBkZWNyeXB0ZWQgdXNlciBUU1Mga2V5XG4gKiBAcGFyYW0ge0JhY2t1cFNpZ25pbmdNYXRlcmlhbH0gYmFja3VwU2lnbmluZ01hdGVyaWFsIGRlY3J5cHRlZCBiYWNrdXAgVFNTIGtleVxuICogQHBhcmFtIHtzdHJpbmd9IHBhdGggYmlwMzIgZGVyaXZhdGlvbiBwYXRoXG4gKiBAcGFyYW0ge0Jhc2VUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb24gdGhlIHRyYW5zYWN0aW9uIHRvIHNpZ25cbiAqIEByZXR1cm5zIHtCdWZmZXJ9IHRoZSBzaWduYXR1cmVcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldFRTU1NpZ25hdHVyZShcbiAgdXNlclNpZ25pbmdNYXRlcmlhbDogVXNlclNpZ25pbmdNYXRlcmlhbCxcbiAgYmFja3VwU2lnbmluZ01hdGVyaWFsOiBCYWNrdXBTaWduaW5nTWF0ZXJpYWwsXG4gIHBhdGggPSAnbS8wJyxcbiAgdHJhbnNhY3Rpb246IEJhc2VUcmFuc2FjdGlvblxuKTogUHJvbWlzZTxCdWZmZXI+IHtcbiAgY29uc3QgTVBDID0gYXdhaXQgZ2V0SW5pdGlhbGl6ZWRNcGNJbnN0YW5jZSgpO1xuXG4gIGNvbnN0IHVzZXJDb21iaW5lID0gTVBDLmtleUNvbWJpbmUodXNlclNpZ25pbmdNYXRlcmlhbC51U2hhcmUsIFtcbiAgICB1c2VyU2lnbmluZ01hdGVyaWFsLmJpdGdvWVNoYXJlLFxuICAgIHVzZXJTaWduaW5nTWF0ZXJpYWwuYmFja3VwWVNoYXJlLFxuICBdKTtcbiAgY29uc3QgYmFja3VwQ29tYmluZSA9IE1QQy5rZXlDb21iaW5lKGJhY2t1cFNpZ25pbmdNYXRlcmlhbC51U2hhcmUsIFtcbiAgICBiYWNrdXBTaWduaW5nTWF0ZXJpYWwuYml0Z29ZU2hhcmUsXG4gICAgYmFja3VwU2lnbmluZ01hdGVyaWFsLnVzZXJZU2hhcmUsXG4gIF0pO1xuXG4gIGNvbnN0IHVzZXJTdWJrZXkgPSBNUEMua2V5RGVyaXZlKFxuICAgIHVzZXJTaWduaW5nTWF0ZXJpYWwudVNoYXJlLFxuICAgIFt1c2VyU2lnbmluZ01hdGVyaWFsLmJpdGdvWVNoYXJlLCB1c2VyU2lnbmluZ01hdGVyaWFsLmJhY2t1cFlTaGFyZV0sXG4gICAgcGF0aFxuICApO1xuXG4gIGNvbnN0IGJhY2t1cFN1YmtleSA9IE1QQy5rZXlDb21iaW5lKGJhY2t1cFNpZ25pbmdNYXRlcmlhbC51U2hhcmUsIFtcbiAgICB1c2VyU3Via2V5LnlTaGFyZXNbMl0sXG4gICAgYmFja3VwU2lnbmluZ01hdGVyaWFsLmJpdGdvWVNoYXJlLFxuICBdKTtcblxuICBjb25zdCBtZXNzYWdlQnVmZmVyID0gdHJhbnNhY3Rpb24uc2lnbmFibGVQYXlsb2FkO1xuICBjb25zdCB1c2VyU2lnblNoYXJlID0gTVBDLnNpZ25TaGFyZShtZXNzYWdlQnVmZmVyLCB1c2VyU3Via2V5LnBTaGFyZSwgW3VzZXJDb21iaW5lLmpTaGFyZXNbMl1dKTtcbiAgY29uc3QgYmFja3VwU2lnblNoYXJlID0gTVBDLnNpZ25TaGFyZShtZXNzYWdlQnVmZmVyLCBiYWNrdXBTdWJrZXkucFNoYXJlLCBbYmFja3VwQ29tYmluZS5qU2hhcmVzWzFdXSk7XG4gIGNvbnN0IHVzZXJTaWduID0gTVBDLnNpZ24oXG4gICAgbWVzc2FnZUJ1ZmZlcixcbiAgICB1c2VyU2lnblNoYXJlLnhTaGFyZSxcbiAgICBbYmFja3VwU2lnblNoYXJlLnJTaGFyZXNbMV1dLFxuICAgIFt1c2VyU2lnbmluZ01hdGVyaWFsLmJpdGdvWVNoYXJlXVxuICApO1xuICBjb25zdCBiYWNrdXBTaWduID0gTVBDLnNpZ24oXG4gICAgbWVzc2FnZUJ1ZmZlcixcbiAgICBiYWNrdXBTaWduU2hhcmUueFNoYXJlLFxuICAgIFt1c2VyU2lnblNoYXJlLnJTaGFyZXNbMl1dLFxuICAgIFtiYWNrdXBTaWduaW5nTWF0ZXJpYWwuYml0Z29ZU2hhcmVdXG4gICk7XG4gIGNvbnN0IHNpZ25hdHVyZSA9IE1QQy5zaWduQ29tYmluZShbdXNlclNpZ24sIGJhY2t1cFNpZ25dKTtcbiAgY29uc3QgcmVzdWx0ID0gTVBDLnZlcmlmeShtZXNzYWdlQnVmZmVyLCBzaWduYXR1cmUpO1xuICBpZiAoIXJlc3VsdCkge1xuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBzaWduYXR1cmUnKTtcbiAgfVxuICBjb25zdCByYXdTaWduYXR1cmUgPSBCdWZmZXIuY29uY2F0KFtCdWZmZXIuZnJvbShzaWduYXR1cmUuUiwgJ2hleCcpLCBCdWZmZXIuZnJvbShzaWduYXR1cmUuc2lnbWEsICdoZXgnKV0pO1xuICByZXR1cm4gcmF3U2lnbmF0dXJlO1xufVxuXG4vKipcbiAqIFZlcmlmaWVzIHRoYXQgYSBUU1Mgd2FsbGV0IHNpZ25hdHVyZSB3YXMgcHJvZHVjZWQgd2l0aCB0aGUgZXhwZWN0ZWQga2V5IGFuZCB0aGF0IHRoZSBzaWduZWQgZGF0YSBjb250YWlucyB0aGVcbiAqIGV4cGVjdGVkIGNvbW1vbiBrZXljaGFpbiwgdGhlIGV4cGVjdGVkIHVzZXIgYW5kIGJhY2t1cCBrZXkgaWRzIGFzIHdlbGwgYXMgdGhlIHB1YmxpYyBzaGFyZSB0aGF0IGlzIGdlbmVyYXRlZCBmcm9tIHRoZVxuICogcHJpdmF0ZSBzaGFyZSB0aGF0IHdhcyBwYXNzZWQgaW4uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB2ZXJpZnlXYWxsZXRTaWduYXR1cmUocGFyYW1zOiB7XG4gIHdhbGxldFNpZ25hdHVyZTogb3BlbnBncC5LZXk7XG4gIGJpdGdvUHViOiBvcGVucGdwLktleTtcbiAgY29tbW9uS2V5Y2hhaW46IHN0cmluZztcbiAgdXNlcktleUlkOiBzdHJpbmc7XG4gIGJhY2t1cEtleUlkOiBzdHJpbmc7XG4gIGRlY3J5cHRlZFNoYXJlOiBzdHJpbmc7XG4gIHZlcmlmaWVySW5kZXg6IDEgfCAyOyAvLyB0aGUgaW5kZXggb2YgdGhlIHZlcmlmaWVyLCAxIG1lYW5zIHVzZXIsIDIgbWVhbnMgYmFja3VwXG59KTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHJhd05vdGF0aW9ucyA9IGF3YWl0IGNvbW1vblZlcmlmeVdhbGxldFNpZ25hdHVyZShwYXJhbXMpO1xuXG4gIGNvbnN0IHsgZGVjcnlwdGVkU2hhcmUsIHZlcmlmaWVySW5kZXggfSA9IHBhcmFtcztcblxuICBjb25zdCBwdWJsaWNTaGFyZSA9XG4gICAgQnVmZmVyLmZyb20oXG4gICAgICBhd2FpdCBzb2RpdW0uY3J5cHRvX3NjYWxhcm11bHRfZWQyNTUxOV9iYXNlX25vY2xhbXAoQnVmZmVyLmZyb20oZGVjcnlwdGVkU2hhcmUuc2xpY2UoMCwgNjQpLCAnaGV4JykpXG4gICAgKS50b1N0cmluZygnaGV4JykgKyBkZWNyeXB0ZWRTaGFyZS5zbGljZSg2NCk7XG4gIGNvbnN0IHB1YmxpY1NoYXJlUmF3Tm90YXRpb25JbmRleCA9IDIgKyB2ZXJpZmllckluZGV4O1xuXG4gIGFzc2VydChcbiAgICBwdWJsaWNTaGFyZSA9PT0gQnVmZmVyLmZyb20ocmF3Tm90YXRpb25zW3B1YmxpY1NoYXJlUmF3Tm90YXRpb25JbmRleF0udmFsdWUpLnRvU3RyaW5nKCksXG4gICAgJ2JpdGdvIHNoYXJlIG1pc21hdGNoJ1xuICApO1xufVxuIl19
323
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRkc2EuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYml0Z28vdHNzL2VkZHNhL2VkZHNhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLG9EQUE0QjtBQUU1QixzRkFBNkM7QUFDN0MseUVBQW9IO0FBVXBILHNDQUE4QztBQUM5Qyx5Q0FRdUI7QUFFdkIsOERBQWlFO0FBQ2pFLDRCQUE2QjtBQUM3QixzQ0FBMEY7QUFFakYsNkZBRjZCLHFCQUFZLE9BRTdCO0FBQUUsbUdBRjZCLDJCQUFrQixPQUU3QjtBQUV6Qzs7Ozs7Ozs7R0FRRztBQUNJLEtBQUssVUFBVSxpQkFBaUIsQ0FBQyxNQUl2QztJQUNDLE1BQU0sYUFBSyxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3pCLE1BQU0sR0FBRyxHQUFHLElBQUksYUFBSyxFQUFFLENBQUM7SUFFeEIsTUFBTSxFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsRUFBRSxjQUFjLEVBQUUsR0FBRyxNQUFNLENBQUM7SUFDOUQsTUFBTSxPQUFPLEdBQWEsRUFBRSxDQUFDO0lBRTdCLElBQUksV0FBK0IsQ0FBQztJQUNwQyxJQUFJLFVBQThCLENBQUM7SUFDbkMsSUFBSSxZQUFnQyxDQUFDO0lBRXJDLEtBQUssTUFBTSxlQUFlLElBQUksZ0JBQWdCLEVBQUU7UUFDOUMsTUFBTSxZQUFZLEdBQUcsTUFBTSx5QkFBaUIsQ0FDMUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsRUFDNUMsZUFBZSxDQUFDLGlCQUFpQixFQUNqQyxlQUFlLENBQUMscUJBQXFCLENBQ3RDLENBQUM7UUFFRixNQUFNLE1BQU0sR0FBVztZQUNyQixDQUFDLEVBQUUsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzNCLENBQUMsRUFBRSxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDM0IsQ0FBQyxFQUFFLGVBQWUsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ2xELENBQUMsRUFBRSxlQUFlLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQztZQUNwRCxDQUFDLEVBQUUsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQzVCLFNBQVMsRUFBRSxZQUFZLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztTQUNsQyxDQUFDO1FBRUYsUUFBUSxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRTtZQUNoQyxLQUFLLENBQUM7Z0JBQ0osVUFBVSxHQUFHLE1BQU0sQ0FBQztnQkFDcEIsTUFBTTtZQUNSLEtBQUssQ0FBQztnQkFDSixZQUFZLEdBQUcsTUFBTSxDQUFDO2dCQUN0QixNQUFNO1lBQ1IsS0FBSyxDQUFDO2dCQUNKLFdBQVcsR0FBRyxNQUFNLENBQUM7Z0JBQ3JCLE1BQU07WUFDUjtnQkFDRSxNQUFNLElBQUksS0FBSyxDQUFDLHNCQUFzQixDQUFDLENBQUM7U0FDM0M7UUFFRCxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0tBQ3RCO0lBRUQsTUFBTSxXQUFXLEdBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzdELElBQUksV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQyxTQUFTLEtBQUssY0FBYyxFQUFFO1FBQzFFLE1BQU0sSUFBSSxLQUFLLENBQUMsK0JBQStCLENBQUMsQ0FBQztLQUNsRDtJQUNELElBQUksQ0FBQyxXQUFXLEVBQUU7UUFDaEIsTUFBTSxJQUFJLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0tBQzFDO0lBRUQsTUFBTSxlQUFlLEdBQW9CO1FBQ3ZDLE1BQU0sRUFBRSxRQUFRLENBQUMsTUFBTTtRQUN2QixXQUFXO1FBQ1gsWUFBWTtRQUNaLFVBQVU7S0FDWCxDQUFDO0lBRUYsT0FBTztRQUNMLGVBQWU7UUFDZixjQUFjO0tBQ2YsQ0FBQztBQUNKLENBQUM7QUFuRUQsOENBbUVDO0FBRUQ7Ozs7OztHQU1HO0FBQ0ksS0FBSyxVQUFVLG1CQUFtQixDQUFDLGVBQXVCLEVBQUUsTUFBYztJQUMvRSxNQUFNLEdBQUcsR0FBRyxNQUFNLGFBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUVyQyxJQUFJLE1BQU0sQ0FBQyxDQUFDLEtBQUssd0JBQWdCLENBQUMsSUFBSSxFQUFFO1FBQ3RDLE1BQU0sSUFBSSxLQUFLLENBQUMsa0RBQWtELENBQUMsQ0FBQztLQUNyRTtJQUNELE1BQU0sTUFBTSxHQUFXLEVBQUUsQ0FBQyxFQUFFLHdCQUFnQixDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsd0JBQWdCLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDL0UsT0FBTyxHQUFHLENBQUMsU0FBUyxDQUFDLGVBQWUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQzFELENBQUM7QUFSRCxrREFRQztBQUVEOzs7Ozs7Ozs7R0FTRztBQUNJLEtBQUssVUFBVSx1QkFBdUIsQ0FDM0MsYUFBd0IsRUFDeEIsaUJBQXVDLEVBQ3ZDLGtCQUEwQixFQUMxQixpQkFBeUIsRUFDekIsZUFBdUIsRUFDdkIscUJBQTZDO0lBRTdDLElBQUksYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssd0JBQWdCLENBQUMsSUFBSSxFQUFFO1FBQ3BELE1BQU0sSUFBSSxLQUFLLENBQUMsMkNBQTJDLENBQUMsQ0FBQztLQUM5RDtJQUNELElBQUksaUJBQWlCLENBQUMsSUFBSSxLQUFLLDBCQUFrQixDQUFDLEtBQUssSUFBSSxpQkFBaUIsQ0FBQyxFQUFFLEtBQUssMEJBQWtCLENBQUMsSUFBSSxFQUFFO1FBQzNHLE1BQU0sSUFBSSxLQUFLLENBQUMsMkNBQTJDLENBQUMsQ0FBQztLQUM5RDtJQUNELElBQUksa0JBQWtCLENBQUMsQ0FBQyxLQUFLLHdCQUFnQixDQUFDLElBQUksRUFBRTtRQUNsRCxNQUFNLElBQUksS0FBSyxDQUFDLDJDQUEyQyxDQUFDLENBQUM7S0FDOUQ7SUFDRCxJQUFJLGtCQUFrQixDQUFDLENBQUMsS0FBSyx3QkFBZ0IsQ0FBQyxNQUFNLEVBQUU7UUFDcEQsTUFBTSxJQUFJLEtBQUssQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO0tBQ3REO0lBRUQsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNaLElBQUksaUJBQWlCLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQUU7UUFDeEMsQ0FBQyxHQUFHLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzdDLENBQUMsR0FBRyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUMvQyxDQUFDLEdBQUcsaUJBQWlCLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7S0FDakQ7U0FBTTtRQUNMLENBQUMsR0FBRyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUM3QyxDQUFDLEdBQUcsaUJBQWlCLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7S0FDaEQ7SUFFRCxNQUFNLHdCQUF3QixHQUFXO1FBQ3ZDLENBQUMsRUFBRSx3QkFBZ0IsQ0FBQyxJQUFJO1FBQ3hCLENBQUMsRUFBRSx3QkFBZ0IsQ0FBQyxLQUFLO1FBQ3pCLENBQUMsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1FBQ3RCLENBQUM7UUFDRCxDQUFDO1FBQ0QsQ0FBQztLQUNGLENBQUM7SUFFRixNQUFNLEdBQUcsR0FBRyxNQUFNLGFBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUVyQyxJQUFJLHFCQUFxQixFQUFFO1FBQ3pCLElBQ0UscUJBQXFCLENBQUMsSUFBSSxLQUFLLDBCQUFrQixDQUFDLEtBQUs7WUFDdkQscUJBQXFCLENBQUMsRUFBRSxLQUFLLDBCQUFrQixDQUFDLElBQUksRUFDcEQ7WUFDQSxNQUFNLElBQUksS0FBSyxDQUFDLCtDQUErQyxDQUFDLENBQUM7U0FDbEU7UUFDRCxJQUFJLHFCQUFxQixDQUFDLElBQUksS0FBSyxzQkFBYyxDQUFDLFVBQVUsRUFBRTtZQUM1RCxNQUFNLElBQUksS0FBSyxDQUFDLGdDQUFnQyxHQUFHLHFCQUFxQixDQUFDLElBQUksR0FBRyx1QkFBdUIsQ0FBQyxDQUFDO1NBQzFHO1FBQ0Qsd0JBQXdCLENBQUMsVUFBVSxHQUFHLHFCQUFxQixDQUFDLEtBQUssQ0FBQztLQUNuRTtJQUVELE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsYUFBYSxDQUFDLE1BQU0sRUFBRSxDQUFDLHdCQUF3QixDQUFDLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUM7QUFDM0csQ0FBQztBQXhERCwwREF3REM7QUFFRDs7Ozs7Ozs7R0FRRztBQUNJLEtBQUssVUFBVSxzQkFBc0IsQ0FDMUMsS0FBZ0IsRUFDaEIsUUFBZ0IsRUFDaEIsV0FBbUIsRUFDbkIsYUFBd0IsRUFDeEIsb0JBQTRCLEVBQzVCLFVBQTJCLE1BQU0sRUFDakMsUUFBaUIsRUFDakIsaUJBQTBCLEVBQzFCLGdCQUF5QixFQUN6QixXQUFvQjtJQUVwQixNQUFNLE1BQU0sR0FBVyxhQUFhLENBQUMsT0FBTyxDQUFDLHdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JFLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRTtRQUNuQixNQUFNLElBQUksS0FBSyxDQUFDLDhCQUE4QixDQUFDLENBQUM7S0FDakQ7SUFDRCxJQUFJLE1BQU0sQ0FBQyxDQUFDLEtBQUssd0JBQWdCLENBQUMsS0FBSyxJQUFJLE1BQU0sQ0FBQyxDQUFDLEtBQUssd0JBQWdCLENBQUMsSUFBSSxFQUFFO1FBQzdFLE1BQU0sSUFBSSxLQUFLLENBQUMsMkNBQTJDLENBQUMsQ0FBQztLQUM5RDtJQUNELE1BQU0sY0FBYyxHQUF5QjtRQUMzQyxJQUFJLEVBQUUsMEJBQWtCLENBQUMsSUFBSTtRQUM3QixFQUFFLEVBQUUsMEJBQWtCLENBQUMsS0FBSztRQUM1QixLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQztRQUMxQixRQUFRO1FBQ1IsaUJBQWlCO1FBQ2pCLFdBQVc7S0FDWixDQUFDO0lBRUYsdURBQXVEO0lBQ3ZELE1BQU0sMkJBQWtCLENBQ3RCLEtBQUssRUFDTCxRQUFRLEVBQ1IsV0FBVyxFQUNYLGNBQWMsRUFDZCxtQkFBVyxDQUFDLEVBQUUsRUFDZCxvQkFBb0IsRUFDcEIsT0FBTyxFQUNQLE9BQU8sRUFDUCxnQkFBZ0IsQ0FDakIsQ0FBQztBQUNKLENBQUM7QUF4Q0Qsd0RBd0NDO0FBRUQ7Ozs7Ozs7R0FPRztBQUNJLEtBQUssVUFBVSxvQkFBb0IsQ0FDeEMsS0FBZ0IsRUFDaEIsUUFBZ0IsRUFDaEIsV0FBbUI7SUFFbkIsTUFBTSxTQUFTLEdBQUcsTUFBTSxxQkFBWSxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDbkUsSUFBSSxlQUFlLENBQUM7SUFDcEIsSUFBSSxTQUFTLENBQUMsVUFBVSxLQUFLLE1BQU0sRUFBRTtRQUNuQyxnQkFBTSxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUsNENBQTRDLENBQUMsQ0FBQztRQUM3RSxlQUFlLEdBQUcsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUM7S0FDN0Q7U0FBTTtRQUNMLGVBQWUsR0FBRyxTQUFTLENBQUMsZUFBZSxDQUFDO0tBQzdDO0lBQ0QsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLEVBQUU7UUFDMUQsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQ0FBc0MsV0FBVyxFQUFFLENBQUMsQ0FBQztLQUN0RTtJQUNELDBEQUEwRDtJQUMxRCxNQUFNLGlCQUFpQixHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQzVDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxLQUFLLDBCQUFrQixDQUFDLEtBQUssSUFBSSxRQUFRLENBQUMsRUFBRSxLQUFLLDBCQUFrQixDQUFDLElBQUksQ0FDcEcsQ0FBQztJQUNGLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFO1FBQzlCLE1BQU0sSUFBSSxLQUFLLENBQUMsMENBQTBDLFdBQVcsRUFBRSxDQUFDLENBQUM7S0FDMUU7SUFDRCxPQUFPLGlCQUFpQixDQUFDO0FBQzNCLENBQUM7QUF4QkQsb0RBd0JDO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFDSSxLQUFLLFVBQVUscUJBQXFCLENBQ3pDLEtBQWdCLEVBQ2hCLFFBQWdCLEVBQ2hCLFdBQW1CLEVBQ25CLGlCQUF5QixFQUN6QixVQUEyQixNQUFNO0lBRWpDLElBQUksaUJBQWlCLENBQUMsQ0FBQyxLQUFLLHdCQUFnQixDQUFDLElBQUksRUFBRTtRQUNqRCxNQUFNLElBQUksS0FBSyxDQUFDLDJDQUEyQyxDQUFDLENBQUM7S0FDOUQ7SUFDRCxNQUFNLGNBQWMsR0FBeUI7UUFDM0MsSUFBSSxFQUFFLDBCQUFrQixDQUFDLElBQUk7UUFDN0IsRUFBRSxFQUFFLDBCQUFrQixDQUFDLEtBQUs7UUFDNUIsS0FBSyxFQUFFLGlCQUFpQixDQUFDLENBQUMsR0FBRyxpQkFBaUIsQ0FBQyxLQUFLO0tBQ3JELENBQUM7SUFFRix1REFBdUQ7SUFDdkQsTUFBTSwyQkFBa0IsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsbUJBQVcsQ0FBQyxFQUFFLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztBQUN0SCxDQUFDO0FBbEJELHNEQWtCQztBQUVEOzs7Ozs7Ozs7R0FTRztBQUNJLEtBQUssVUFBVSxhQUFhLENBQUMsTUFLbkM7SUFDQyxNQUFNLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBRSx1QkFBdUIsRUFBRSxxQkFBcUIsRUFBRSxHQUFHLE1BQU0sQ0FBQztJQUU1RixNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ2hELElBQUksQ0FBQyxNQUFNLEVBQUU7UUFDWCxNQUFNLElBQUksS0FBSyxDQUFDLG1CQUFtQixDQUFDLENBQUM7S0FDdEM7SUFFRCxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO1FBQ2hDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDO1FBQ3JDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUUsRUFBRSxLQUFLLENBQUM7UUFDN0IsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUM7S0FDOUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUVuQixNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUMvRyxLQUFLLENBQ04sQ0FBQztJQUVGLE1BQU0scUJBQXFCLEdBQUcsTUFBTSwwQkFBa0IsQ0FBQyxZQUFZLEVBQUUsdUJBQXVCLEVBQUUscUJBQXFCLENBQUMsQ0FBQztJQUVySCxPQUFPO1FBQ0wsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ1gsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ1gsV0FBVztRQUNYLHFCQUFxQjtLQUN0QixDQUFDO0FBQ0osQ0FBQztBQS9CRCxzQ0ErQkM7QUFFRDs7Ozs7R0FLRztBQUNJLEtBQUssVUFBVSx5QkFBeUI7SUFDN0MsTUFBTSxNQUFNLEdBQUcsTUFBTSxxQkFBWSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQy9DLE9BQU8sTUFBTSxhQUFLLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3hDLENBQUM7QUFIRCw4REFHQztBQUVEOzs7Ozs7Ozs7R0FTRztBQUNJLEtBQUssVUFBVSxlQUFlLENBQ25DLG1CQUF3QyxFQUN4QyxxQkFBNEMsRUFDNUMsSUFBSSxHQUFHLEtBQUssRUFDWixXQUE0QjtJQUU1QixNQUFNLEdBQUcsR0FBRyxNQUFNLHlCQUF5QixFQUFFLENBQUM7SUFFOUMsTUFBTSxXQUFXLEdBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLEVBQUU7UUFDN0QsbUJBQW1CLENBQUMsV0FBVztRQUMvQixtQkFBbUIsQ0FBQyxZQUFZO0tBQ2pDLENBQUMsQ0FBQztJQUNILE1BQU0sYUFBYSxHQUFHLEdBQUcsQ0FBQyxVQUFVLENBQUMscUJBQXFCLENBQUMsTUFBTSxFQUFFO1FBQ2pFLHFCQUFxQixDQUFDLFdBQVc7UUFDakMscUJBQXFCLENBQUMsVUFBVTtLQUNqQyxDQUFDLENBQUM7SUFFSCxNQUFNLFVBQVUsR0FBRyxHQUFHLENBQUMsU0FBUyxDQUM5QixtQkFBbUIsQ0FBQyxNQUFNLEVBQzFCLENBQUMsbUJBQW1CLENBQUMsV0FBVyxFQUFFLG1CQUFtQixDQUFDLFlBQVksQ0FBQyxFQUNuRSxJQUFJLENBQ0wsQ0FBQztJQUVGLE1BQU0sWUFBWSxHQUFHLEdBQUcsQ0FBQyxVQUFVLENBQUMscUJBQXFCLENBQUMsTUFBTSxFQUFFO1FBQ2hFLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQ3JCLHFCQUFxQixDQUFDLFdBQVc7S0FDbEMsQ0FBQyxDQUFDO0lBRUgsTUFBTSxhQUFhLEdBQUcsV0FBVyxDQUFDLGVBQWUsQ0FBQztJQUNsRCxNQUFNLGFBQWEsR0FBRyxHQUFHLENBQUMsU0FBUyxDQUFDLGFBQWEsRUFBRSxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEcsTUFBTSxlQUFlLEdBQUcsR0FBRyxDQUFDLFNBQVMsQ0FBQyxhQUFhLEVBQUUsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RHLE1BQU0sUUFBUSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQ3ZCLGFBQWEsRUFDYixhQUFhLENBQUMsTUFBTSxFQUNwQixDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFDNUIsQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLENBQUMsQ0FDbEMsQ0FBQztJQUNGLE1BQU0sVUFBVSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQ3pCLGFBQWEsRUFDYixlQUFlLENBQUMsTUFBTSxFQUN0QixDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFDMUIsQ0FBQyxxQkFBcUIsQ0FBQyxXQUFXLENBQUMsQ0FDcEMsQ0FBQztJQUNGLE1BQU0sU0FBUyxHQUFHLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUMxRCxNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUNwRCxJQUFJLENBQUMsTUFBTSxFQUFFO1FBQ1gsTUFBTSxJQUFJLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0tBQ3RDO0lBQ0QsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNHLE9BQU8sWUFBWSxDQUFDO0FBQ3RCLENBQUM7QUFsREQsMENBa0RDO0FBRUQ7Ozs7R0FJRztBQUNJLEtBQUssVUFBVSxxQkFBcUIsQ0FBQyxNQVEzQztJQUNDLE1BQU0sWUFBWSxHQUFHLE1BQU0sb0NBQTJCLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFL0QsTUFBTSxFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsR0FBRyxNQUFNLENBQUM7SUFFakQsTUFBTSxXQUFXLEdBQ2YsTUFBTSxDQUFDLElBQUksQ0FDVCxNQUFNLGlDQUFNLENBQUMsc0NBQXNDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUNyRyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxjQUFjLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQy9DLE1BQU0sMkJBQTJCLEdBQUcsQ0FBQyxHQUFHLGFBQWEsQ0FBQztJQUV0RCxnQkFBTSxDQUNKLFdBQVcsS0FBSyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQywyQkFBMkIsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUN2RixzQkFBc0IsQ0FDdkIsQ0FBQztBQUNKLENBQUM7QUF2QkQsc0RBdUJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuaW1wb3J0IG9wZW5wZ3AgZnJvbSAnb3BlbnBncCc7XG5pbXBvcnQgc29kaXVtIGZyb20gJ2xpYnNvZGl1bS13cmFwcGVycy1zdW1vJztcbmltcG9ydCBFZGRzYSwgeyBHU2hhcmUsIEpTaGFyZSwgS2V5U2hhcmUsIFBTaGFyZSwgUlNoYXJlLCBTaWduU2hhcmUsIFlTaGFyZSB9IGZyb20gJy4vLi4vLi4vLi4vYWNjb3VudC1saWIvbXBjL3Rzcyc7XG5pbXBvcnQgeyBCaXRHb0Jhc2UgfSBmcm9tICcuLy4uLy4uL2JpdGdvQmFzZSc7XG5pbXBvcnQge1xuICBEZWNyeXB0YWJsZVlTaGFyZSxcbiAgQ29tYmluZWRLZXksXG4gIFNpZ25pbmdNYXRlcmlhbCxcbiAgRW5jcnlwdGVkWVNoYXJlLFxuICBVc2VyU2lnbmluZ01hdGVyaWFsLFxuICBCYWNrdXBTaWduaW5nTWF0ZXJpYWwsXG59IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgU2hhcmVLZXlQb3NpdGlvbiB9IGZyb20gJy4vLi4vdHlwZXMnO1xuaW1wb3J0IHtcbiAgZW5jcnlwdEFuZFNpZ25UZXh0LFxuICByZWFkU2lnbmVkTWVzc2FnZSxcbiAgU2lnbmF0dXJlU2hhcmVSZWNvcmQsXG4gIFNpZ25hdHVyZVNoYXJlVHlwZSxcbiAgUmVxdWVzdFR5cGUsXG4gIENvbW1pdG1lbnRTaGFyZVJlY29yZCxcbiAgQ29tbWl0bWVudFR5cGUsXG59IGZyb20gJy4vLi4vLi4vdXRpbHMnO1xuaW1wb3J0IHsgQmFzZVRyYW5zYWN0aW9uIH0gZnJvbSAnLi8uLi8uLi8uLi9hY2NvdW50LWxpYi9iYXNlQ29pbi9iYXNlVHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgRWQyNTUxOUJJUDMyIH0gZnJvbSAnLi8uLi8uLi8uLi9hY2NvdW50LWxpYi9tcGMvaGRUcmVlJztcbmltcG9ydCBfID0gcmVxdWlyZSgnbG9kYXNoJyk7XG5pbXBvcnQgeyBjb21tb25WZXJpZnlXYWxsZXRTaWduYXR1cmUsIGdldFR4UmVxdWVzdCwgc2VuZFNpZ25hdHVyZVNoYXJlIH0gZnJvbSAnLi4vY29tbW9uJztcblxuZXhwb3J0IHsgZ2V0VHhSZXF1ZXN0LCBzZW5kU2lnbmF0dXJlU2hhcmUgfTtcblxuLyoqXG4gKiBDb21iaW5lcyBZU2hhcmVzIHRvIGNvbWJpbmUgdGhlIGZpbmFsIFRTUyBrZXlcbiAqIFRoaXMgY2FuIG9ubHkgYmUgdXNlZCB0byBjcmVhdGUgdGhlIFVzZXIgb3IgQmFja3VwIGtleSBzaW5jZSBpdCByZXF1aXJlcyB0aGUgY29tbW9uIGtleWNoYWluIGZyb20gQml0R28gZmlyc3RcbiAqXG4gKiBAcGFyYW0gcGFyYW1zLmtleVNoYXJlIC0gVFNTIGtleSBzaGFyZVxuICogQHBhcmFtIHBhcmFtcy5lbmNyeXB0ZWRZU2hhcmVzIC0gZW5jcnlwdGVkIFlTaGFyZXMgd2l0aCBpbmZvcm1hdGlvbiBvbiBob3cgdG8gZGVjcnlwdFxuICogQHBhcmFtIHBhcmFtcy5jb21tb25LZXljaGFpbiAtIGV4cGVjdGVkIGNvbW1vbiBrZXljaGFpbiBvZiB0aGUgY29tYmluZWQga2V5XG4gKiBAcmV0dXJucyB7Q29tYmluZWRLZXl9IGNvbWJpbmVkIFRTUyBrZXlcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZUNvbWJpbmVkS2V5KHBhcmFtczoge1xuICBrZXlTaGFyZTogS2V5U2hhcmU7XG4gIGVuY3J5cHRlZFlTaGFyZXM6IERlY3J5cHRhYmxlWVNoYXJlW107XG4gIGNvbW1vbktleWNoYWluOiBzdHJpbmc7XG59KTogUHJvbWlzZTxDb21iaW5lZEtleT4ge1xuICBhd2FpdCBFZGRzYS5pbml0aWFsaXplKCk7XG4gIGNvbnN0IE1QQyA9IG5ldyBFZGRzYSgpO1xuXG4gIGNvbnN0IHsga2V5U2hhcmUsIGVuY3J5cHRlZFlTaGFyZXMsIGNvbW1vbktleWNoYWluIH0gPSBwYXJhbXM7XG4gIGNvbnN0IHlTaGFyZXM6IFlTaGFyZVtdID0gW107XG5cbiAgbGV0IGJpdGdvWVNoYXJlOiBZU2hhcmUgfCB1bmRlZmluZWQ7XG4gIGxldCB1c2VyWVNoYXJlOiBZU2hhcmUgfCB1bmRlZmluZWQ7XG4gIGxldCBiYWNrdXBZU2hhcmU6IFlTaGFyZSB8IHVuZGVmaW5lZDtcblxuICBmb3IgKGNvbnN0IGVuY3J5cHRlZFlTaGFyZSBvZiBlbmNyeXB0ZWRZU2hhcmVzKSB7XG4gICAgY29uc3QgcHJpdmF0ZVNoYXJlID0gYXdhaXQgcmVhZFNpZ25lZE1lc3NhZ2UoXG4gICAgICBlbmNyeXB0ZWRZU2hhcmUueVNoYXJlLmVuY3J5cHRlZFByaXZhdGVTaGFyZSxcbiAgICAgIGVuY3J5cHRlZFlTaGFyZS5zZW5kZXJQdWJsaWNBcm1vcixcbiAgICAgIGVuY3J5cHRlZFlTaGFyZS5yZWNpcGllbnRQcml2YXRlQXJtb3JcbiAgICApO1xuXG4gICAgY29uc3QgeVNoYXJlOiBZU2hhcmUgPSB7XG4gICAgICBpOiBlbmNyeXB0ZWRZU2hhcmUueVNoYXJlLmksXG4gICAgICBqOiBlbmNyeXB0ZWRZU2hhcmUueVNoYXJlLmosXG4gICAgICB5OiBlbmNyeXB0ZWRZU2hhcmUueVNoYXJlLnB1YmxpY1NoYXJlLnNsaWNlKDAsIDY0KSxcbiAgICAgIHY6IGVuY3J5cHRlZFlTaGFyZS55U2hhcmUucHVibGljU2hhcmUuc2xpY2UoNjQsIDEyOCksXG4gICAgICB1OiBwcml2YXRlU2hhcmUuc2xpY2UoMCwgNjQpLFxuICAgICAgY2hhaW5jb2RlOiBwcml2YXRlU2hhcmUuc2xpY2UoNjQpLFxuICAgIH07XG5cbiAgICBzd2l0Y2ggKGVuY3J5cHRlZFlTaGFyZS55U2hhcmUuaikge1xuICAgICAgY2FzZSAxOlxuICAgICAgICB1c2VyWVNoYXJlID0geVNoYXJlO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjpcbiAgICAgICAgYmFja3VwWVNoYXJlID0geVNoYXJlO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMzpcbiAgICAgICAgYml0Z29ZU2hhcmUgPSB5U2hhcmU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIFlTaGFyZSBpbmRleCcpO1xuICAgIH1cblxuICAgIHlTaGFyZXMucHVzaCh5U2hhcmUpO1xuICB9XG5cbiAgY29uc3QgY29tYmluZWRLZXkgPSBNUEMua2V5Q29tYmluZShrZXlTaGFyZS51U2hhcmUsIHlTaGFyZXMpO1xuICBpZiAoY29tYmluZWRLZXkucFNoYXJlLnkgKyBjb21iaW5lZEtleS5wU2hhcmUuY2hhaW5jb2RlICE9PSBjb21tb25LZXljaGFpbikge1xuICAgIHRocm93IG5ldyBFcnJvcignQ29tbW9uIGtleWNoYWlucyBkbyBub3QgbWF0Y2gnKTtcbiAgfVxuICBpZiAoIWJpdGdvWVNoYXJlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIEJpdEdvIFkgU2hhcmUnKTtcbiAgfVxuXG4gIGNvbnN0IHNpZ25pbmdNYXRlcmlhbDogU2lnbmluZ01hdGVyaWFsID0ge1xuICAgIHVTaGFyZToga2V5U2hhcmUudVNoYXJlLFxuICAgIGJpdGdvWVNoYXJlLFxuICAgIGJhY2t1cFlTaGFyZSxcbiAgICB1c2VyWVNoYXJlLFxuICB9O1xuXG4gIHJldHVybiB7XG4gICAgc2lnbmluZ01hdGVyaWFsLFxuICAgIGNvbW1vbktleWNoYWluLFxuICB9O1xufVxuXG4vKipcbiAqIENyZWF0ZXMgdGhlIFVzZXIgU2lnbiBTaGFyZSBjb250YWluaW5nIHRoZSBVc2VyIFhTaGFyZSAsIHRoZSBVc2VyIHRvIEJpdGdvIFJTaGFyZSBhbmQgVXNlciB0byBCaXRnbyBjb21taXRtZW50XG4gKlxuICogQHBhcmFtIHtCdWZmZXJ9IHNpZ25hYmxlUGF5bG9hZCAtIHRoZSBzaWduYWJsZVBheWxvYWQgYXMgYSBidWZmZXJcbiAqIEBwYXJhbSB7UFNoYXJlfSBwU2hhcmUgLSBVc2VyJ3Mgc2lnbmluZyBtYXRlcmlhbFxuICogQHJldHVybnMge1Byb21pc2U8U2lnblNoYXJlPn0gLSBVc2VyIFNpZ24gU2hhcmVcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZVVzZXJTaWduU2hhcmUoc2lnbmFibGVQYXlsb2FkOiBCdWZmZXIsIHBTaGFyZTogUFNoYXJlKTogUHJvbWlzZTxTaWduU2hhcmU+IHtcbiAgY29uc3QgTVBDID0gYXdhaXQgRWRkc2EuaW5pdGlhbGl6ZSgpO1xuXG4gIGlmIChwU2hhcmUuaSAhPT0gU2hhcmVLZXlQb3NpdGlvbi5VU0VSKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIFBTaGFyZSwgUFNoYXJlIGRvZXNudCBiZWxvbmcgdG8gdGhlIFVzZXInKTtcbiAgfVxuICBjb25zdCBqU2hhcmU6IEpTaGFyZSA9IHsgaTogU2hhcmVLZXlQb3NpdGlvbi5CSVRHTywgajogU2hhcmVLZXlQb3NpdGlvbi5VU0VSIH07XG4gIHJldHVybiBNUEMuc2lnblNoYXJlKHNpZ25hYmxlUGF5bG9hZCwgcFNoYXJlLCBbalNoYXJlXSk7XG59XG5cbi8qKlxuICogQ3JlYXRlcyB0aGUgVXNlciB0byBCaXRnbyBHU2hhcmVcbiAqXG4gKiBAcGFyYW0ge1NpZ25TaGFyZX0gdXNlclNpZ25TaGFyZSAtIHRoZSBVc2VyIFNpZ24gU2hhcmVcbiAqIEBwYXJhbSB7U2lnbmF0dXJlU2hhcmVSZWNvcmR9IGJpdGdvVG9Vc2VyUlNoYXJlIC0gdGhlIEJpdGdvIHRvIFVzZXIgUlNoYXJlXG4gKiBAcGFyYW0ge1lTaGFyZX0gYmFja3VwVG9Vc2VyWVNoYXJlIC0gdGhlIGJhY2t1cCBrZXkgWSBzaGFyZSByZWNlaXZlZCBkdXJpbmcgd2FsbGV0IGNyZWF0aW9uXG4gKiBAcGFyYW0ge0J1ZmZlcn0gc2lnbmFibGVQYXlsb2FkIC0gdGhlIHNpZ25hYmxlIHBheWxvYWQgZnJvbSBhIHR4XG4gKiBAcGFyYW0ge0NvbW1pdG1lbnRTaGFyZVJlY29yZH0gW2JpdGdvVG9Vc2VyQ29tbWl0bWVudF0gLSB0aGUgQml0Z28gdG8gVXNlciBDb21taXRtZW50XG4gKiBAcmV0dXJucyB7UHJvbWlzZTxHU2hhcmU+fSAtIHRoZSBVc2VyIHRvIEJpdGdvIEdTaGFyZVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlVXNlclRvQml0R29HU2hhcmUoXG4gIHVzZXJTaWduU2hhcmU6IFNpZ25TaGFyZSxcbiAgYml0Z29Ub1VzZXJSU2hhcmU6IFNpZ25hdHVyZVNoYXJlUmVjb3JkLFxuICBiYWNrdXBUb1VzZXJZU2hhcmU6IFlTaGFyZSxcbiAgYml0Z29Ub1VzZXJZU2hhcmU6IFlTaGFyZSxcbiAgc2lnbmFibGVQYXlsb2FkOiBCdWZmZXIsXG4gIGJpdGdvVG9Vc2VyQ29tbWl0bWVudD86IENvbW1pdG1lbnRTaGFyZVJlY29yZFxuKTogUHJvbWlzZTxHU2hhcmU+IHtcbiAgaWYgKHVzZXJTaWduU2hhcmUueFNoYXJlLmkgIT09IFNoYXJlS2V5UG9zaXRpb24uVVNFUikge1xuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBYU2hhcmUsIGRvZXNudCBiZWxvbmcgdG8gdGhlIFVzZXInKTtcbiAgfVxuICBpZiAoYml0Z29Ub1VzZXJSU2hhcmUuZnJvbSAhPT0gU2lnbmF0dXJlU2hhcmVUeXBlLkJJVEdPIHx8IGJpdGdvVG9Vc2VyUlNoYXJlLnRvICE9PSBTaWduYXR1cmVTaGFyZVR5cGUuVVNFUikge1xuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBSU2hhcmUsIGlzIG5vdCBmcm9tIEJpdGdvIHRvIFVzZXInKTtcbiAgfVxuICBpZiAoYmFja3VwVG9Vc2VyWVNoYXJlLmkgIT09IFNoYXJlS2V5UG9zaXRpb24uVVNFUikge1xuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBZU2hhcmUsIGRvZXNudCBiZWxvbmcgdG8gdGhlIFVzZXInKTtcbiAgfVxuICBpZiAoYmFja3VwVG9Vc2VyWVNoYXJlLmogIT09IFNoYXJlS2V5UG9zaXRpb24uQkFDS1VQKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIFlTaGFyZSwgaXMgbm90IGJhY2t1cCBrZXknKTtcbiAgfVxuXG4gIGxldCB2LCByLCBSO1xuICBpZiAoYml0Z29Ub1VzZXJSU2hhcmUuc2hhcmUubGVuZ3RoID4gMTI4KSB7XG4gICAgdiA9IGJpdGdvVG9Vc2VyUlNoYXJlLnNoYXJlLnN1YnN0cmluZygwLCA2NCk7XG4gICAgciA9IGJpdGdvVG9Vc2VyUlNoYXJlLnNoYXJlLnN1YnN0cmluZyg2NCwgMTI4KTtcbiAgICBSID0gYml0Z29Ub1VzZXJSU2hhcmUuc2hhcmUuc3Vic3RyaW5nKDEyOCwgMTkyKTtcbiAgfSBlbHNlIHtcbiAgICByID0gYml0Z29Ub1VzZXJSU2hhcmUuc2hhcmUuc3Vic3RyaW5nKDAsIDY0KTtcbiAgICBSID0gYml0Z29Ub1VzZXJSU2hhcmUuc2hhcmUuc3Vic3RyaW5nKDY0LCAxMjgpO1xuICB9XG5cbiAgY29uc3QgdXBkYXRlZEJpdGdvVG9Vc2VyUlNoYXJlOiBSU2hhcmUgPSB7XG4gICAgaTogU2hhcmVLZXlQb3NpdGlvbi5VU0VSLFxuICAgIGo6IFNoYXJlS2V5UG9zaXRpb24uQklUR08sXG4gICAgdTogYml0Z29Ub1VzZXJZU2hhcmUudSxcbiAgICB2LFxuICAgIHIsXG4gICAgUixcbiAgfTtcblxuICBjb25zdCBNUEMgPSBhd2FpdCBFZGRzYS5pbml0aWFsaXplKCk7XG5cbiAgaWYgKGJpdGdvVG9Vc2VyQ29tbWl0bWVudCkge1xuICAgIGlmIChcbiAgICAgIGJpdGdvVG9Vc2VyQ29tbWl0bWVudC5mcm9tICE9PSBTaWduYXR1cmVTaGFyZVR5cGUuQklUR08gfHxcbiAgICAgIGJpdGdvVG9Vc2VyQ29tbWl0bWVudC50byAhPT0gU2lnbmF0dXJlU2hhcmVUeXBlLlVTRVJcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBDb21taXRtZW50LCBpcyBub3QgZnJvbSBCaXRnbyB0byBVc2VyJyk7XG4gICAgfVxuICAgIGlmIChiaXRnb1RvVXNlckNvbW1pdG1lbnQudHlwZSAhPT0gQ29tbWl0bWVudFR5cGUuQ09NTUlUTUVOVCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIENvbW1pdG1lbnQgdHlwZSwgZ290OiAnICsgYml0Z29Ub1VzZXJDb21taXRtZW50LnR5cGUgKyAnIGV4cGVjdGVkOiBjb21taXRtZW50Jyk7XG4gICAgfVxuICAgIHVwZGF0ZWRCaXRnb1RvVXNlclJTaGFyZS5jb21taXRtZW50ID0gYml0Z29Ub1VzZXJDb21taXRtZW50LnNoYXJlO1xuICB9XG5cbiAgcmV0dXJuIE1QQy5zaWduKHNpZ25hYmxlUGF5bG9hZCwgdXNlclNpZ25TaGFyZS54U2hhcmUsIFt1cGRhdGVkQml0Z29Ub1VzZXJSU2hhcmVdLCBbYmFja3VwVG9Vc2VyWVNoYXJlXSk7XG59XG5cbi8qKlxuICogU2VuZHMgdGhlIFVzZXIgdG8gQml0Z28gUlNoYXJlIHRvIEJpdGdvXG4gKiBAcGFyYW0ge0JpdEdvQmFzZX0gYml0Z28gLSB0aGUgYml0Z28gaW5zdGFuY2VcbiAqIEBwYXJhbSB7U3RyaW5nfSB3YWxsZXRJZCAtIHRoZSB3YWxsZXQgaWRcbiAqIEBwYXJhbSB7U3RyaW5nfSB0eFJlcXVlc3RJZCAtIHRoZSB0eFJlcXVlc3QgSWRcbiAqIEBwYXJhbSB7U2lnblNoYXJlfSB1c2VyU2lnblNoYXJlIC0gdGhlIHVzZXIgU2lnbiBTaGFyZVxuICogQHBhcmFtIHtTdHJpbmd9IGVuY3J5cHRlZFNpZ25lclNoYXJlIC0gc2lnbmVyIHNoYXJlIGVuY3J5cHRlZCB0byBiaXRnbyBrZXlcbiAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gb2ZmZXJVc2VyVG9CaXRnb1JTaGFyZShcbiAgYml0Z286IEJpdEdvQmFzZSxcbiAgd2FsbGV0SWQ6IHN0cmluZyxcbiAgdHhSZXF1ZXN0SWQ6IHN0cmluZyxcbiAgdXNlclNpZ25TaGFyZTogU2lnblNoYXJlLFxuICBlbmNyeXB0ZWRTaWduZXJTaGFyZTogc3RyaW5nLFxuICBhcGlNb2RlOiAnZnVsbCcgfCAnbGl0ZScgPSAnbGl0ZScsXG4gIHZzc1Byb29mPzogc3RyaW5nLFxuICBwcml2YXRlU2hhcmVQcm9vZj86IHN0cmluZyxcbiAgdXNlclB1YmxpY0dwZ0tleT86IHN0cmluZyxcbiAgcHVibGljU2hhcmU/OiBzdHJpbmdcbik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCByU2hhcmU6IFJTaGFyZSA9IHVzZXJTaWduU2hhcmUuclNoYXJlc1tTaGFyZUtleVBvc2l0aW9uLkJJVEdPXTtcbiAgaWYgKF8uaXNOaWwoclNoYXJlKSkge1xuICAgIHRocm93IG5ldyBFcnJvcigndXNlclRvQml0Z28gUlNoYXJlIG5vdCBmb3VuZCcpO1xuICB9XG4gIGlmIChyU2hhcmUuaSAhPT0gU2hhcmVLZXlQb3NpdGlvbi5CSVRHTyB8fCByU2hhcmUuaiAhPT0gU2hhcmVLZXlQb3NpdGlvbi5VU0VSKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIFJTaGFyZSwgaXMgbm90IGZyb20gVXNlciB0byBCaXRnbycpO1xuICB9XG4gIGNvbnN0IHNpZ25hdHVyZVNoYXJlOiBTaWduYXR1cmVTaGFyZVJlY29yZCA9IHtcbiAgICBmcm9tOiBTaWduYXR1cmVTaGFyZVR5cGUuVVNFUixcbiAgICB0bzogU2lnbmF0dXJlU2hhcmVUeXBlLkJJVEdPLFxuICAgIHNoYXJlOiByU2hhcmUuciArIHJTaGFyZS5SLFxuICAgIHZzc1Byb29mLFxuICAgIHByaXZhdGVTaGFyZVByb29mLFxuICAgIHB1YmxpY1NoYXJlLFxuICB9O1xuXG4gIC8vIFRPRE8gKEJHLTU3OTQ0KTogaW1wbGVtZW50IG1lc3NhZ2Ugc2lnbmluZyBmb3IgRUREU0FcbiAgYXdhaXQgc2VuZFNpZ25hdHVyZVNoYXJlKFxuICAgIGJpdGdvLFxuICAgIHdhbGxldElkLFxuICAgIHR4UmVxdWVzdElkLFxuICAgIHNpZ25hdHVyZVNoYXJlLFxuICAgIFJlcXVlc3RUeXBlLnR4LFxuICAgIGVuY3J5cHRlZFNpZ25lclNoYXJlLFxuICAgICdlZGRzYScsXG4gICAgYXBpTW9kZSxcbiAgICB1c2VyUHVibGljR3BnS2V5XG4gICk7XG59XG5cbi8qKlxuICogR2V0cyB0aGUgQml0Z28gdG8gVXNlciBSU2hhcmUgZnJvbSBCaXRnb1xuICpcbiAqIEBwYXJhbSB7Qml0R29CYXNlfSBiaXRnbyAtIHRoZSBiaXRnbyBpbnN0YW5jZVxuICogQHBhcmFtIHtTdHJpbmd9IHdhbGxldElkIC0gdGhlIHdhbGxldCBpZFxuICogQHBhcmFtIHtTdHJpbmd9IHR4UmVxdWVzdElkIC0gdGhlIHR4UmVxdWVzdCBJZFxuICogQHJldHVybnMge1Byb21pc2U8U2lnbmF0dXJlU2hhcmVSZWNvcmQ+fSAtIGEgU2lnbmF0dXJlIFNoYXJlXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRCaXRnb1RvVXNlclJTaGFyZShcbiAgYml0Z286IEJpdEdvQmFzZSxcbiAgd2FsbGV0SWQ6IHN0cmluZyxcbiAgdHhSZXF1ZXN0SWQ6IHN0cmluZ1xuKTogUHJvbWlzZTxTaWduYXR1cmVTaGFyZVJlY29yZD4ge1xuICBjb25zdCB0eFJlcXVlc3QgPSBhd2FpdCBnZXRUeFJlcXVlc3QoYml0Z28sIHdhbGxldElkLCB0eFJlcXVlc3RJZCk7XG4gIGxldCBzaWduYXR1cmVTaGFyZXM7XG4gIGlmICh0eFJlcXVlc3QuYXBpVmVyc2lvbiA9PT0gJ2Z1bGwnKSB7XG4gICAgYXNzZXJ0KHR4UmVxdWVzdC50cmFuc2FjdGlvbnMsICd0cmFuc2FjdGlvbnMgcmVxdWlyZWQgYXMgcGFydCBvZiB0eFJlcXVlc3QnKTtcbiAgICBzaWduYXR1cmVTaGFyZXMgPSB0eFJlcXVlc3QudHJhbnNhY3Rpb25zWzBdLnNpZ25hdHVyZVNoYXJlcztcbiAgfSBlbHNlIHtcbiAgICBzaWduYXR1cmVTaGFyZXMgPSB0eFJlcXVlc3Quc2lnbmF0dXJlU2hhcmVzO1xuICB9XG4gIGlmIChfLmlzTmlsKHNpZ25hdHVyZVNoYXJlcykgfHwgXy5pc0VtcHR5KHNpZ25hdHVyZVNoYXJlcykpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYE5vIHNpZ25hdHVyZXMgc2hhcmVzIGZvdW5kIGZvciBpZDogJHt0eFJlcXVlc3RJZH1gKTtcbiAgfVxuICAvLyBhdCB0aGlzIHBvaW50IHdlIGV4cGVjdCB0aGUgb25seSBzaGFyZSB0byBiZSB0aGUgUlNoYXJlXG4gIGNvbnN0IGJpdGdvVG9Vc2VyUlNoYXJlID0gc2lnbmF0dXJlU2hhcmVzLmZpbmQoXG4gICAgKHNpZ1NoYXJlKSA9PiBzaWdTaGFyZS5mcm9tID09PSBTaWduYXR1cmVTaGFyZVR5cGUuQklUR08gJiYgc2lnU2hhcmUudG8gPT09IFNpZ25hdHVyZVNoYXJlVHlwZS5VU0VSXG4gICk7XG4gIGlmIChfLmlzTmlsKGJpdGdvVG9Vc2VyUlNoYXJlKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgQml0Z28gdG8gVXNlciBSU2hhcmUgbm90IGZvdW5kIGZvciBpZDogJHt0eFJlcXVlc3RJZH1gKTtcbiAgfVxuICByZXR1cm4gYml0Z29Ub1VzZXJSU2hhcmU7XG59XG5cbi8qKlxuICogU2VuZHMgdGhlIFVzZXIgdG8gQml0Z28gR1NoYXJlIHRvIEJpdGdvXG4gKlxuICogQHBhcmFtIHtCaXRHb0Jhc2V9IGJpdGdvIC0gdGhlIGJpdGdvIGluc3RhbmNlXG4gKiBAcGFyYW0ge1N0cmluZ30gd2FsbGV0SWQgLSB0aGUgd2FsbGV0IGlkXG4gKiBAcGFyYW0ge1N0cmluZ30gdHhSZXF1ZXN0SWQgLSB0aGUgdHhSZXF1ZXN0IElkXG4gKiBAcGFyYW0ge0dTaGFyZX0gdXNlclRvQml0Z29HU2hhcmUgLSB0aGUgVXNlciB0byBCaXRnbyBHU2hhcmVcbiAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2VuZFVzZXJUb0JpdGdvR1NoYXJlKFxuICBiaXRnbzogQml0R29CYXNlLFxuICB3YWxsZXRJZDogc3RyaW5nLFxuICB0eFJlcXVlc3RJZDogc3RyaW5nLFxuICB1c2VyVG9CaXRnb0dTaGFyZTogR1NoYXJlLFxuICBhcGlNb2RlOiAnZnVsbCcgfCAnbGl0ZScgPSAnbGl0ZSdcbik6IFByb21pc2U8dm9pZD4ge1xuICBpZiAodXNlclRvQml0Z29HU2hhcmUuaSAhPT0gU2hhcmVLZXlQb3NpdGlvbi5VU0VSKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIEdTaGFyZSwgZG9lc250IGJlbG9uZyB0byB0aGUgVXNlcicpO1xuICB9XG4gIGNvbnN0IHNpZ25hdHVyZVNoYXJlOiBTaWduYXR1cmVTaGFyZVJlY29yZCA9IHtcbiAgICBmcm9tOiBTaWduYXR1cmVTaGFyZVR5cGUuVVNFUixcbiAgICB0bzogU2lnbmF0dXJlU2hhcmVUeXBlLkJJVEdPLFxuICAgIHNoYXJlOiB1c2VyVG9CaXRnb0dTaGFyZS5SICsgdXNlclRvQml0Z29HU2hhcmUuZ2FtbWEsXG4gIH07XG5cbiAgLy8gVE9ETyAoQkctNTc5NDQpOiBpbXBsZW1lbnQgbWVzc2FnZSBzaWduaW5nIGZvciBFRERTQVxuICBhd2FpdCBzZW5kU2lnbmF0dXJlU2hhcmUoYml0Z28sIHdhbGxldElkLCB0eFJlcXVlc3RJZCwgc2lnbmF0dXJlU2hhcmUsIFJlcXVlc3RUeXBlLnR4LCB1bmRlZmluZWQsICdlZGRzYScsIGFwaU1vZGUpO1xufVxuXG4vKipcbiAqIFByZXBhcmVzIGEgWVNoYXJlIHRvIGJlIGV4Y2hhbmdlZCB3aXRoIG90aGVyIGtleSBob2xkZXJzLlxuICogT3V0cHV0IGlzIGluIGEgZm9ybWF0IHRoYXQgaXMgdXNhYmxlIHdpdGhpbiBCaXRHbydzIGVjb3N5c3RlbS5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zLmtleVNoYXJlIC0gVFNTIGtleSBzaGFyZSBvZiB0aGUgcGFydHkgcHJlcGFyaW5nIGV4Y2hhbmdlIG1hdGVyaWFsc1xuICogQHBhcmFtIHBhcmFtcy5yZWNpcGllbnRJbmRleCAtIGluZGV4IG9mIHRoZSByZWNpcGllbnQgKDEsIDIsIG9yIDMpXG4gKiBAcGFyYW0gcGFyYW1zLnJlY2lwaWVudEdwZ1B1YmxpY0FybW9yIC0gcmVjaXBpZW50J3MgcHVibGljIGdwZyBrZXkgaW4gYXJtb3IgZm9ybWF0XG4gKiBAcGFyYW0gcGFyYW1zLnNlbmRlckdwZ1ByaXZhdGVBcm1vciAtIHNlbmRlcidzIHByaXZhdGUgZ3BnIGtleSBpbiBhcm1vciBmb3JtYXRcbiAqIEByZXR1cm5zIHsgRW5jcnlwdGVkWVNoYXJlIH0gZW5jcnlwdGVkIFkgU2hhcmVcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGVuY3J5cHRZU2hhcmUocGFyYW1zOiB7XG4gIGtleVNoYXJlOiBLZXlTaGFyZTtcbiAgcmVjaXBpZW50SW5kZXg6IG51bWJlcjtcbiAgcmVjaXBpZW50R3BnUHVibGljQXJtb3I6IHN0cmluZztcbiAgc2VuZGVyR3BnUHJpdmF0ZUFybW9yOiBzdHJpbmc7XG59KTogUHJvbWlzZTxFbmNyeXB0ZWRZU2hhcmU+IHtcbiAgY29uc3QgeyBrZXlTaGFyZSwgcmVjaXBpZW50SW5kZXgsIHJlY2lwaWVudEdwZ1B1YmxpY0FybW9yLCBzZW5kZXJHcGdQcml2YXRlQXJtb3IgfSA9IHBhcmFtcztcblxuICBjb25zdCB5U2hhcmUgPSBrZXlTaGFyZS55U2hhcmVzW3JlY2lwaWVudEluZGV4XTtcbiAgaWYgKCF5U2hhcmUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgcmVjaXBpZW50Jyk7XG4gIH1cblxuICBjb25zdCBwdWJsaWNTaGFyZSA9IEJ1ZmZlci5jb25jYXQoW1xuICAgIEJ1ZmZlci5mcm9tKGtleVNoYXJlLnVTaGFyZS55LCAnaGV4JyksXG4gICAgQnVmZmVyLmZyb20oeVNoYXJlLnYhLCAnaGV4JyksXG4gICAgQnVmZmVyLmZyb20oa2V5U2hhcmUudVNoYXJlLmNoYWluY29kZSwgJ2hleCcpLFxuICBdKS50b1N0cmluZygnaGV4Jyk7XG5cbiAgY29uc3QgcHJpdmF0ZVNoYXJlID0gQnVmZmVyLmNvbmNhdChbQnVmZmVyLmZyb20oeVNoYXJlLnUsICdoZXgnKSwgQnVmZmVyLmZyb20oeVNoYXJlLmNoYWluY29kZSwgJ2hleCcpXSkudG9TdHJpbmcoXG4gICAgJ2hleCdcbiAgKTtcblxuICBjb25zdCBlbmNyeXB0ZWRQcml2YXRlU2hhcmUgPSBhd2FpdCBlbmNyeXB0QW5kU2lnblRleHQocHJpdmF0ZVNoYXJlLCByZWNpcGllbnRHcGdQdWJsaWNBcm1vciwgc2VuZGVyR3BnUHJpdmF0ZUFybW9yKTtcblxuICByZXR1cm4ge1xuICAgIGk6IHlTaGFyZS5pLFxuICAgIGo6IHlTaGFyZS5qLFxuICAgIHB1YmxpY1NoYXJlLFxuICAgIGVuY3J5cHRlZFByaXZhdGVTaGFyZSxcbiAgfTtcbn1cblxuLyoqXG4gKlxuICogSW5pdGlhbGl6ZXMgRWRkc2EgaW5zdGFuY2VcbiAqXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxFZGRzYT59IHRoZSBFZGRzYSBpbnN0YW5jZVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0SW5pdGlhbGl6ZWRNcGNJbnN0YW5jZSgpIHtcbiAgY29uc3QgaGRUcmVlID0gYXdhaXQgRWQyNTUxOUJJUDMyLmluaXRpYWxpemUoKTtcbiAgcmV0dXJuIGF3YWl0IEVkZHNhLmluaXRpYWxpemUoaGRUcmVlKTtcbn1cblxuLyoqXG4gKlxuICogR2VuZXJhdGVzIGEgVFNTIHNpZ25hdHVyZSB1c2luZyB0aGUgdXNlciBhbmQgYmFja3VwIGtleVxuICpcbiAqIEBwYXJhbSB7VXNlclNpZ25pbmdNYXRlcmlhbH0gdXNlclNpZ25pbmdNYXRlcmlhbCBkZWNyeXB0ZWQgdXNlciBUU1Mga2V5XG4gKiBAcGFyYW0ge0JhY2t1cFNpZ25pbmdNYXRlcmlhbH0gYmFja3VwU2lnbmluZ01hdGVyaWFsIGRlY3J5cHRlZCBiYWNrdXAgVFNTIGtleVxuICogQHBhcmFtIHtzdHJpbmd9IHBhdGggYmlwMzIgZGVyaXZhdGlvbiBwYXRoXG4gKiBAcGFyYW0ge0Jhc2VUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb24gdGhlIHRyYW5zYWN0aW9uIHRvIHNpZ25cbiAqIEByZXR1cm5zIHtCdWZmZXJ9IHRoZSBzaWduYXR1cmVcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldFRTU1NpZ25hdHVyZShcbiAgdXNlclNpZ25pbmdNYXRlcmlhbDogVXNlclNpZ25pbmdNYXRlcmlhbCxcbiAgYmFja3VwU2lnbmluZ01hdGVyaWFsOiBCYWNrdXBTaWduaW5nTWF0ZXJpYWwsXG4gIHBhdGggPSAnbS8wJyxcbiAgdHJhbnNhY3Rpb246IEJhc2VUcmFuc2FjdGlvblxuKTogUHJvbWlzZTxCdWZmZXI+IHtcbiAgY29uc3QgTVBDID0gYXdhaXQgZ2V0SW5pdGlhbGl6ZWRNcGNJbnN0YW5jZSgpO1xuXG4gIGNvbnN0IHVzZXJDb21iaW5lID0gTVBDLmtleUNvbWJpbmUodXNlclNpZ25pbmdNYXRlcmlhbC51U2hhcmUsIFtcbiAgICB1c2VyU2lnbmluZ01hdGVyaWFsLmJpdGdvWVNoYXJlLFxuICAgIHVzZXJTaWduaW5nTWF0ZXJpYWwuYmFja3VwWVNoYXJlLFxuICBdKTtcbiAgY29uc3QgYmFja3VwQ29tYmluZSA9IE1QQy5rZXlDb21iaW5lKGJhY2t1cFNpZ25pbmdNYXRlcmlhbC51U2hhcmUsIFtcbiAgICBiYWNrdXBTaWduaW5nTWF0ZXJpYWwuYml0Z29ZU2hhcmUsXG4gICAgYmFja3VwU2lnbmluZ01hdGVyaWFsLnVzZXJZU2hhcmUsXG4gIF0pO1xuXG4gIGNvbnN0IHVzZXJTdWJrZXkgPSBNUEMua2V5RGVyaXZlKFxuICAgIHVzZXJTaWduaW5nTWF0ZXJpYWwudVNoYXJlLFxuICAgIFt1c2VyU2lnbmluZ01hdGVyaWFsLmJpdGdvWVNoYXJlLCB1c2VyU2lnbmluZ01hdGVyaWFsLmJhY2t1cFlTaGFyZV0sXG4gICAgcGF0aFxuICApO1xuXG4gIGNvbnN0IGJhY2t1cFN1YmtleSA9IE1QQy5rZXlDb21iaW5lKGJhY2t1cFNpZ25pbmdNYXRlcmlhbC51U2hhcmUsIFtcbiAgICB1c2VyU3Via2V5LnlTaGFyZXNbMl0sXG4gICAgYmFja3VwU2lnbmluZ01hdGVyaWFsLmJpdGdvWVNoYXJlLFxuICBdKTtcblxuICBjb25zdCBtZXNzYWdlQnVmZmVyID0gdHJhbnNhY3Rpb24uc2lnbmFibGVQYXlsb2FkO1xuICBjb25zdCB1c2VyU2lnblNoYXJlID0gTVBDLnNpZ25TaGFyZShtZXNzYWdlQnVmZmVyLCB1c2VyU3Via2V5LnBTaGFyZSwgW3VzZXJDb21iaW5lLmpTaGFyZXNbMl1dKTtcbiAgY29uc3QgYmFja3VwU2lnblNoYXJlID0gTVBDLnNpZ25TaGFyZShtZXNzYWdlQnVmZmVyLCBiYWNrdXBTdWJrZXkucFNoYXJlLCBbYmFja3VwQ29tYmluZS5qU2hhcmVzWzFdXSk7XG4gIGNvbnN0IHVzZXJTaWduID0gTVBDLnNpZ24oXG4gICAgbWVzc2FnZUJ1ZmZlcixcbiAgICB1c2VyU2lnblNoYXJlLnhTaGFyZSxcbiAgICBbYmFja3VwU2lnblNoYXJlLnJTaGFyZXNbMV1dLFxuICAgIFt1c2VyU2lnbmluZ01hdGVyaWFsLmJpdGdvWVNoYXJlXVxuICApO1xuICBjb25zdCBiYWNrdXBTaWduID0gTVBDLnNpZ24oXG4gICAgbWVzc2FnZUJ1ZmZlcixcbiAgICBiYWNrdXBTaWduU2hhcmUueFNoYXJlLFxuICAgIFt1c2VyU2lnblNoYXJlLnJTaGFyZXNbMl1dLFxuICAgIFtiYWNrdXBTaWduaW5nTWF0ZXJpYWwuYml0Z29ZU2hhcmVdXG4gICk7XG4gIGNvbnN0IHNpZ25hdHVyZSA9IE1QQy5zaWduQ29tYmluZShbdXNlclNpZ24sIGJhY2t1cFNpZ25dKTtcbiAgY29uc3QgcmVzdWx0ID0gTVBDLnZlcmlmeShtZXNzYWdlQnVmZmVyLCBzaWduYXR1cmUpO1xuICBpZiAoIXJlc3VsdCkge1xuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBzaWduYXR1cmUnKTtcbiAgfVxuICBjb25zdCByYXdTaWduYXR1cmUgPSBCdWZmZXIuY29uY2F0KFtCdWZmZXIuZnJvbShzaWduYXR1cmUuUiwgJ2hleCcpLCBCdWZmZXIuZnJvbShzaWduYXR1cmUuc2lnbWEsICdoZXgnKV0pO1xuICByZXR1cm4gcmF3U2lnbmF0dXJlO1xufVxuXG4vKipcbiAqIFZlcmlmaWVzIHRoYXQgYSBUU1Mgd2FsbGV0IHNpZ25hdHVyZSB3YXMgcHJvZHVjZWQgd2l0aCB0aGUgZXhwZWN0ZWQga2V5IGFuZCB0aGF0IHRoZSBzaWduZWQgZGF0YSBjb250YWlucyB0aGVcbiAqIGV4cGVjdGVkIGNvbW1vbiBrZXljaGFpbiwgdGhlIGV4cGVjdGVkIHVzZXIgYW5kIGJhY2t1cCBrZXkgaWRzIGFzIHdlbGwgYXMgdGhlIHB1YmxpYyBzaGFyZSB0aGF0IGlzIGdlbmVyYXRlZCBmcm9tIHRoZVxuICogcHJpdmF0ZSBzaGFyZSB0aGF0IHdhcyBwYXNzZWQgaW4uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB2ZXJpZnlXYWxsZXRTaWduYXR1cmUocGFyYW1zOiB7XG4gIHdhbGxldFNpZ25hdHVyZTogb3BlbnBncC5LZXk7XG4gIGJpdGdvUHViOiBvcGVucGdwLktleTtcbiAgY29tbW9uS2V5Y2hhaW46IHN0cmluZztcbiAgdXNlcktleUlkOiBzdHJpbmc7XG4gIGJhY2t1cEtleUlkOiBzdHJpbmc7XG4gIGRlY3J5cHRlZFNoYXJlOiBzdHJpbmc7XG4gIHZlcmlmaWVySW5kZXg6IDEgfCAyOyAvLyB0aGUgaW5kZXggb2YgdGhlIHZlcmlmaWVyLCAxIG1lYW5zIHVzZXIsIDIgbWVhbnMgYmFja3VwXG59KTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHJhd05vdGF0aW9ucyA9IGF3YWl0IGNvbW1vblZlcmlmeVdhbGxldFNpZ25hdHVyZShwYXJhbXMpO1xuXG4gIGNvbnN0IHsgZGVjcnlwdGVkU2hhcmUsIHZlcmlmaWVySW5kZXggfSA9IHBhcmFtcztcblxuICBjb25zdCBwdWJsaWNTaGFyZSA9XG4gICAgQnVmZmVyLmZyb20oXG4gICAgICBhd2FpdCBzb2RpdW0uY3J5cHRvX3NjYWxhcm11bHRfZWQyNTUxOV9iYXNlX25vY2xhbXAoQnVmZmVyLmZyb20oZGVjcnlwdGVkU2hhcmUuc2xpY2UoMCwgNjQpLCAnaGV4JykpXG4gICAgKS50b1N0cmluZygnaGV4JykgKyBkZWNyeXB0ZWRTaGFyZS5zbGljZSg2NCk7XG4gIGNvbnN0IHB1YmxpY1NoYXJlUmF3Tm90YXRpb25JbmRleCA9IDIgKyB2ZXJpZmllckluZGV4O1xuXG4gIGFzc2VydChcbiAgICBwdWJsaWNTaGFyZSA9PT0gQnVmZmVyLmZyb20ocmF3Tm90YXRpb25zW3B1YmxpY1NoYXJlUmF3Tm90YXRpb25JbmRleF0udmFsdWUpLnRvU3RyaW5nKCksXG4gICAgJ2JpdGdvIHNoYXJlIG1pc21hdGNoJ1xuICApO1xufVxuIl19
@@ -1,6 +1,25 @@
1
+ import { EcdsaTypes } from '@bitgo-beta/sdk-lib-mpc';
2
+ import { KShare, OShare, WShare } from './ecdsa/types';
3
+ import { MuDShare } from './ecdsa/ecdsa';
1
4
  export declare enum ShareKeyPosition {
2
5
  USER = 1,
3
6
  BACKUP = 2,
4
7
  BITGO = 3
5
8
  }
9
+ export declare type TxRequestChallengeResponse = EcdsaTypes.SerializedEcdsaChallenges & {
10
+ n: string;
11
+ };
12
+ export declare type TssEcdsaStep1ReturnMessage = {
13
+ privateShareProof: string;
14
+ vssProof?: string;
15
+ userPublicGpgKey: string;
16
+ publicShare: string;
17
+ encryptedSignerOffsetShare: string;
18
+ kShare: KShare;
19
+ wShare: WShare | string;
20
+ };
21
+ export declare type TssEcdsaStep2ReturnMessage = {
22
+ muDShare: MuDShare;
23
+ oShare: OShare | string;
24
+ };
6
25
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/tss/types.ts"],"names":[],"mappings":"AAAA,oBAAY,gBAAgB;IAC1B,IAAI,IAAI;IACR,MAAM,IAAI;IACV,KAAK,IAAI;CACV"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/tss/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,oBAAY,gBAAgB;IAC1B,IAAI,IAAI;IACR,MAAM,IAAI;IACV,KAAK,IAAI;CACV;AAED,oBAAY,0BAA0B,GAAG,UAAU,CAAC,yBAAyB,GAAG;IAC9E,CAAC,EAAE,MAAM,CAAC;CACX,CAAC;AAEF,oBAAY,0BAA0B,GAAG;IACvC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,0BAA0B,EAAE,MAAM,CAAC;IACnC,MAAM,EAAE,MAAM,CAAC;IAEf,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;CACzB,CAAC;AAEF,oBAAY,0BAA0B,GAAG;IACvC,QAAQ,EAAE,QAAQ,CAAC;IAEnB,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;CACzB,CAAC"}
@@ -7,4 +7,4 @@ var ShareKeyPosition;
7
7
  ShareKeyPosition[ShareKeyPosition["BACKUP"] = 2] = "BACKUP";
8
8
  ShareKeyPosition[ShareKeyPosition["BITGO"] = 3] = "BITGO";
9
9
  })(ShareKeyPosition = exports.ShareKeyPosition || (exports.ShareKeyPosition = {}));
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYml0Z28vdHNzL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLElBQVksZ0JBSVg7QUFKRCxXQUFZLGdCQUFnQjtJQUMxQix1REFBUSxDQUFBO0lBQ1IsMkRBQVUsQ0FBQTtJQUNWLHlEQUFTLENBQUE7QUFDWCxDQUFDLEVBSlcsZ0JBQWdCLEdBQWhCLHdCQUFnQixLQUFoQix3QkFBZ0IsUUFJM0IiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZW51bSBTaGFyZUtleVBvc2l0aW9uIHtcbiAgVVNFUiA9IDEsXG4gIEJBQ0tVUCA9IDIsXG4gIEJJVEdPID0gMyxcbn1cbiJdfQ==
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYml0Z28vdHNzL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUlBLElBQVksZ0JBSVg7QUFKRCxXQUFZLGdCQUFnQjtJQUMxQix1REFBUSxDQUFBO0lBQ1IsMkRBQVUsQ0FBQTtJQUNWLHlEQUFTLENBQUE7QUFDWCxDQUFDLEVBSlcsZ0JBQWdCLEdBQWhCLHdCQUFnQixLQUFoQix3QkFBZ0IsUUFJM0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFY2RzYVR5cGVzIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWxpYi1tcGMnO1xuaW1wb3J0IHsgS1NoYXJlLCBPU2hhcmUsIFdTaGFyZSB9IGZyb20gJy4vZWNkc2EvdHlwZXMnO1xuaW1wb3J0IHsgTXVEU2hhcmUgfSBmcm9tICcuL2VjZHNhL2VjZHNhJztcblxuZXhwb3J0IGVudW0gU2hhcmVLZXlQb3NpdGlvbiB7XG4gIFVTRVIgPSAxLFxuICBCQUNLVVAgPSAyLFxuICBCSVRHTyA9IDMsXG59XG5cbmV4cG9ydCB0eXBlIFR4UmVxdWVzdENoYWxsZW5nZVJlc3BvbnNlID0gRWNkc2FUeXBlcy5TZXJpYWxpemVkRWNkc2FDaGFsbGVuZ2VzICYge1xuICBuOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBUc3NFY2RzYVN0ZXAxUmV0dXJuTWVzc2FnZSA9IHtcbiAgcHJpdmF0ZVNoYXJlUHJvb2Y6IHN0cmluZztcbiAgdnNzUHJvb2Y/OiBzdHJpbmc7XG4gIHVzZXJQdWJsaWNHcGdLZXk6IHN0cmluZztcbiAgcHVibGljU2hhcmU6IHN0cmluZztcbiAgZW5jcnlwdGVkU2lnbmVyT2Zmc2V0U2hhcmU6IHN0cmluZztcbiAga1NoYXJlOiBLU2hhcmU7XG4gIC8vIHdTaGFyZSBjb3VsZCBiZSBlbmNyeXB0ZWQuIElmIGl0IGlzIGVuY3J5cHRlZCwgaXQgd2lsbCBiZSBhIHN0cmluZywgb3RoZXJ3aXNlIGl0IHdpbGwgYmUgYSBXU2hhcmUuXG4gIHdTaGFyZTogV1NoYXJlIHwgc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgVHNzRWNkc2FTdGVwMlJldHVybk1lc3NhZ2UgPSB7XG4gIG11RFNoYXJlOiBNdURTaGFyZTtcbiAgLy8gb1NoYXJlIGNvdWxkIGJlIGVuY3J5cHRlZC4gSWYgaXQgaXMgZW5jcnlwdGVkLCBpdCB3aWxsIGJlIGEgc3RyaW5nLCBvdGhlcndpc2UgaXQgd2lsbCBiZSBhbiBPU2hhcmUuXG4gIG9TaGFyZTogT1NoYXJlIHwgc3RyaW5nO1xufTtcbiJdfQ==
@@ -5,8 +5,8 @@ import { BitGoBase } from '../../bitgoBase';
5
5
  import { Keychain } from '../../keychain';
6
6
  import { IWallet, BackupProvider } from '../../wallet';
7
7
  import { MpcUtils } from '../mpcUtils';
8
- import { BitgoHeldBackupKeyShare, CustomGShareGeneratingFunction, CustomRShareGeneratingFunction, ITssUtils, PrebuildTransactionWithIntentOptions, SignatureShareRecord, TSSParams, TxRequest, TxRequestVersion, CreateKeychainParamsBase, IntentOptionsForMessage, IntentOptionsForTypedData, CreateBitGoKeychainParamsBase } from './baseTypes';
9
- import { GShare, SignShare, YShare } from '../../../account-lib/mpc/tss';
8
+ import { BitgoHeldBackupKeyShare, CustomGShareGeneratingFunction, CustomRShareGeneratingFunction, ITssUtils, PrebuildTransactionWithIntentOptions, SignatureShareRecord, TSSParams, TxRequest, TxRequestVersion, CreateKeychainParamsBase, IntentOptionsForMessage, IntentOptionsForTypedData, CreateBitGoKeychainParamsBase, CommitmentShareRecord, EncryptedSignerShareRecord, CustomCommitmentGeneratingFunction, TSSParamsForMessage, RequestType, CustomPaillierModulusGetterFunction, CustomKShareGeneratingFunction, CustomMuDeltaShareGeneratingFunction, CustomSShareGeneratingFunction } from './baseTypes';
9
+ import { GShare, SignShare } from '../../../account-lib/mpc/tss';
10
10
  /**
11
11
  * BaseTssUtil class which different signature schemes have to extend
12
12
  */
@@ -36,28 +36,64 @@ export default class BaseTssUtils<KeyShare> extends MpcUtils implements ITssUtil
36
36
  * @param {CustomGShareGeneratingFunction} externalSignerGShareGenerator a function that creates G shares in the EdDSA TSS flow
37
37
  * @returns {Promise<TxRequest>} - a signed tx request
38
38
  */
39
- signUsingExternalSigner(txRequest: string | TxRequest, externalSignerRShareGenerator: CustomRShareGeneratingFunction, externalSignerGShareGenerator: CustomGShareGeneratingFunction): Promise<TxRequest>;
39
+ signEddsaTssUsingExternalSigner(txRequest: string | TxRequest, externalSignerCommitmentGenerator: CustomCommitmentGeneratingFunction, externalSignerRShareGenerator: CustomRShareGeneratingFunction, externalSignerGShareGenerator: CustomGShareGeneratingFunction): Promise<TxRequest>;
40
+ /**
41
+ * Signs a transaction using TSS for ECDSA and through utilization of custom share generators
42
+ *
43
+ * @param {params: TSSParams | TSSParamsForMessage} params - params object that represents parameters to sign a transaction or a message.
44
+ * @param {RequestType} requestType - the type of the request to sign (transaction or message).
45
+ * @param {CustomPaillierModulusGetterFunction} externalSignerPaillierModulusGetter a function that creates Paillier Modulus shares in the ECDSA TSS flow.
46
+ * @param {CustomKShareGeneratingFunction} externalSignerKShareGenerator a function that creates K shares in the ECDSA TSS flow.
47
+ * @param {CustomMuDeltaShareGeneratingFunction} externalSignerMuDeltaShareGenerator a function that creates Mu and Delta shares in the ECDSA TSS flow.
48
+ * @param {CustomSShareGeneratingFunction} externalSignerSShareGenerator a function that creates S shares in the ECDSA TSS flow.
49
+ */
50
+ signEcdsaTssUsingExternalSigner(params: TSSParams | TSSParamsForMessage, requestType: RequestType, externalSignerPaillierModulusGetter: CustomPaillierModulusGetterFunction, externalSignerKShareGenerator: CustomKShareGeneratingFunction, externalSignerMuDeltaShareGenerator: CustomMuDeltaShareGeneratingFunction, externalSignerSShareGenerator: CustomSShareGeneratingFunction): Promise<TxRequest>;
51
+ /**
52
+ * Create an Commitment (User to BitGo) share from an unsigned transaction and private user signing material
53
+ * EDDSA only
54
+ *
55
+ * @param {Object} params - params object
56
+ * @param {TxRequest} params.txRequest - transaction request with unsigned transaction
57
+ * @param {string} params.prv - user signing material
58
+ * @param {string} params.walletPassphrase - wallet passphrase
59
+ *
60
+ * @returns {Promise<{ userToBitgoCommitment: CommitmentShareRecor, encryptedSignerShare: EncryptedSignerShareRecord }>} - Commitment Share and the Encrypted Signer Share to BitGo
61
+ */
62
+ createCommitmentShareFromTxRequest(params: {
63
+ txRequest: TxRequest;
64
+ prv: string;
65
+ walletPassphrase: string;
66
+ }): Promise<{
67
+ userToBitgoCommitment: CommitmentShareRecord;
68
+ encryptedSignerShare: EncryptedSignerShareRecord;
69
+ encryptedUserToBitgoRShare: EncryptedSignerShareRecord;
70
+ }>;
40
71
  /**
41
72
  * Create an R (User to BitGo) share from an unsigned transaction and private user signing material
42
73
  *
43
- * @param {TxRequest} txRequest - transaction request with unsigned transaction
44
- * @param {string} prv - user signing material
45
- * @returns {Promise<{ rShare: SignShare; signingKeyYShare: YShare }>} - R Share and the Signing Key's Y share to BitGo
74
+ * @param {Object} params - params object
75
+ * @param {TxRequest} params.txRequest - transaction request with unsigned transaction
76
+ * @param {string} params.prv - user signing material
77
+ * @param {string} [params.walletPassphrase] - wallet passphrase
78
+ * @param {EncryptedSignerShareRecord} [params.encryptedUserToBitgoRShare] - encrypted user to bitgo R share generated in the commitment phase
79
+ * @returns {Promise<{ rShare: SignShare }>} - R Share to BitGo
46
80
  */
47
81
  createRShareFromTxRequest(params: {
48
82
  txRequest: TxRequest;
49
- prv: string;
83
+ walletPassphrase: string;
84
+ encryptedUserToBitgoRShare: EncryptedSignerShareRecord;
50
85
  }): Promise<{
51
86
  rShare: SignShare;
52
- signingKeyYShare: YShare;
53
87
  }>;
54
88
  /**
55
89
  * Create a G (User to BitGo) share from an unsigned transaction and private user signing material
56
90
  *
57
- * @param {TxRequest} txRequest - transaction request with unsigned transaction
58
- * @param {string} prv - user signing material
59
- * @param {SignatureShareRecord} bitgoToUserRShare - BitGo to User R Share
60
- * @param {SignShare} userToBitgoRShare - User to BitGo R Share
91
+ * @param {Object} params - params object
92
+ * @param {TxRequest} params.txRequest - transaction request with unsigned transaction
93
+ * @param {string} params.prv - user signing material
94
+ * @param {SignatureShareRecord} params.bitgoToUserRShare - BitGo to User R Share
95
+ * @param {SignShare} params.userToBitgoRShare - User to BitGo R Share
96
+ * @param {CommitmentShareRecord} params.bitgoToUserCommitment - BitGo to User Commitment
61
97
  * @returns {Promise<GShare>} - GShare from User to BitGo
62
98
  */
63
99
  createGShareFromTxRequest(params: {
@@ -65,6 +101,7 @@ export default class BaseTssUtils<KeyShare> extends MpcUtils implements ITssUtil
65
101
  prv: string;
66
102
  bitgoToUserRShare: SignatureShareRecord;
67
103
  userToBitgoRShare: SignShare;
104
+ bitgoToUserCommitment: CommitmentShareRecord;
68
105
  }): Promise<GShare>;
69
106
  /**
70
107
  * Builds a tx request from params and verify it
@@ -140,5 +177,9 @@ export default class BaseTssUtils<KeyShare> extends MpcUtils implements ITssUtil
140
177
  * @param enterpriseId - enterprise under which user wants to create the wallet
141
178
  */
142
179
  getBitgoGpgPubkeyBasedOnFeatureFlags(enterpriseId: string | undefined): Promise<Key>;
180
+ /**
181
+ * Returns supported TxRequest versions for this wallet
182
+ */
183
+ supportedTxRequestVersions(): TxRequestVersion[];
143
184
  }
144
185
  //# sourceMappingURL=baseTSSUtils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"baseTSSUtils.d.ts","sourceRoot":"","sources":["../../../../../src/bitgo/utils/tss/baseTSSUtils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"baseTSSUtils.d.ts","sourceRoot":"","sources":["../../../../../src/bitgo/utils/tss/baseTSSUtils.ts"],"names":[],"mappings":"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"}