@bitgo/sdk-core 2.0.0-rc.30 → 2.0.0-rc.31
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +11 -0
- package/LICENSE +191 -0
- package/dist/src/bitgo/tss/common.d.ts +6 -2
- package/dist/src/bitgo/tss/common.d.ts.map +1 -1
- package/dist/src/bitgo/tss/common.js +21 -6
- package/dist/src/bitgo/tss/ecdsa/ecdsa.d.ts +6 -3
- package/dist/src/bitgo/tss/ecdsa/ecdsa.d.ts.map +1 -1
- package/dist/src/bitgo/tss/ecdsa/ecdsa.js +9 -6
- package/dist/src/bitgo/tss/eddsa/eddsa.d.ts.map +1 -1
- package/dist/src/bitgo/tss/eddsa/eddsa.js +5 -3
- package/dist/src/bitgo/utils/tss/ecdsa/ecdsa.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/ecdsa/ecdsa.js +4 -4
- package/dist/tsconfig.tsbuildinfo +8 -8
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,17 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
# [2.0.0-rc.31](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-core@2.0.0-rc.30...@bitgo/sdk-core@2.0.0-rc.31) (2022-09-23)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Features
|
|
10
|
+
|
|
11
|
+
* add message signing support for polygon ([ab2bac1](https://github.com/BitGo/BitGoJS/commit/ab2bac13dad55ce8571d014796298aa52a24a5f2))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
6
17
|
# [2.0.0-rc.30](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-core@2.0.0-rc.29...@bitgo/sdk-core@2.0.0-rc.30) (2022-09-22)
|
|
7
18
|
|
|
8
19
|
|
package/LICENSE
ADDED
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
|
|
2
|
+
Apache License
|
|
3
|
+
Version 2.0, January 2004
|
|
4
|
+
http://www.apache.org/licenses/
|
|
5
|
+
|
|
6
|
+
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
|
7
|
+
|
|
8
|
+
1. Definitions.
|
|
9
|
+
|
|
10
|
+
"License" shall mean the terms and conditions for use, reproduction,
|
|
11
|
+
and distribution as defined by Sections 1 through 9 of this document.
|
|
12
|
+
|
|
13
|
+
"Licensor" shall mean the copyright owner or entity authorized by
|
|
14
|
+
the copyright owner that is granting the License.
|
|
15
|
+
|
|
16
|
+
"Legal Entity" shall mean the union of the acting entity and all
|
|
17
|
+
other entities that control, are controlled by, or are under common
|
|
18
|
+
control with that entity. For the purposes of this definition,
|
|
19
|
+
"control" means (i) the power, direct or indirect, to cause the
|
|
20
|
+
direction or management of such entity, whether by contract or
|
|
21
|
+
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
|
22
|
+
outstanding shares, or (iii) beneficial ownership of such entity.
|
|
23
|
+
|
|
24
|
+
"You" (or "Your") shall mean an individual or Legal Entity
|
|
25
|
+
exercising permissions granted by this License.
|
|
26
|
+
|
|
27
|
+
"Source" form shall mean the preferred form for making modifications,
|
|
28
|
+
including but not limited to software source code, documentation
|
|
29
|
+
source, and configuration files.
|
|
30
|
+
|
|
31
|
+
"Object" form shall mean any form resulting from mechanical
|
|
32
|
+
transformation or translation of a Source form, including but
|
|
33
|
+
not limited to compiled object code, generated documentation,
|
|
34
|
+
and conversions to other media types.
|
|
35
|
+
|
|
36
|
+
"Work" shall mean the work of authorship, whether in Source or
|
|
37
|
+
Object form, made available under the License, as indicated by a
|
|
38
|
+
copyright notice that is included in or attached to the work
|
|
39
|
+
(an example is provided in the Appendix below).
|
|
40
|
+
|
|
41
|
+
"Derivative Works" shall mean any work, whether in Source or Object
|
|
42
|
+
form, that is based on (or derived from) the Work and for which the
|
|
43
|
+
editorial revisions, annotations, elaborations, or other modifications
|
|
44
|
+
represent, as a whole, an original work of authorship. For the purposes
|
|
45
|
+
of this License, Derivative Works shall not include works that remain
|
|
46
|
+
separable from, or merely link (or bind by name) to the interfaces of,
|
|
47
|
+
the Work and Derivative Works thereof.
|
|
48
|
+
|
|
49
|
+
"Contribution" shall mean any work of authorship, including
|
|
50
|
+
the original version of the Work and any modifications or additions
|
|
51
|
+
to that Work or Derivative Works thereof, that is intentionally
|
|
52
|
+
submitted to Licensor for inclusion in the Work by the copyright owner
|
|
53
|
+
or by an individual or Legal Entity authorized to submit on behalf of
|
|
54
|
+
the copyright owner. For the purposes of this definition, "submitted"
|
|
55
|
+
means any form of electronic, verbal, or written communication sent
|
|
56
|
+
to the Licensor or its representatives, including but not limited to
|
|
57
|
+
communication on electronic mailing lists, source code control systems,
|
|
58
|
+
and issue tracking systems that are managed by, or on behalf of, the
|
|
59
|
+
Licensor for the purpose of discussing and improving the Work, but
|
|
60
|
+
excluding communication that is conspicuously marked or otherwise
|
|
61
|
+
designated in writing by the copyright owner as "Not a Contribution."
|
|
62
|
+
|
|
63
|
+
"Contributor" shall mean Licensor and any individual or Legal Entity
|
|
64
|
+
on behalf of whom a Contribution has been received by Licensor and
|
|
65
|
+
subsequently incorporated within the Work.
|
|
66
|
+
|
|
67
|
+
2. Grant of Copyright License. Subject to the terms and conditions of
|
|
68
|
+
this License, each Contributor hereby grants to You a perpetual,
|
|
69
|
+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
70
|
+
copyright license to reproduce, prepare Derivative Works of,
|
|
71
|
+
publicly display, publicly perform, sublicense, and distribute the
|
|
72
|
+
Work and such Derivative Works in Source or Object form.
|
|
73
|
+
|
|
74
|
+
3. Grant of Patent License. Subject to the terms and conditions of
|
|
75
|
+
this License, each Contributor hereby grants to You a perpetual,
|
|
76
|
+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
77
|
+
(except as stated in this section) patent license to make, have made,
|
|
78
|
+
use, offer to sell, sell, import, and otherwise transfer the Work,
|
|
79
|
+
where such license applies only to those patent claims licensable
|
|
80
|
+
by such Contributor that are necessarily infringed by their
|
|
81
|
+
Contribution(s) alone or by combination of their Contribution(s)
|
|
82
|
+
with the Work to which such Contribution(s) was submitted. If You
|
|
83
|
+
institute patent litigation against any entity (including a
|
|
84
|
+
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
|
85
|
+
or a Contribution incorporated within the Work constitutes direct
|
|
86
|
+
or contributory patent infringement, then any patent licenses
|
|
87
|
+
granted to You under this License for that Work shall terminate
|
|
88
|
+
as of the date such litigation is filed.
|
|
89
|
+
|
|
90
|
+
4. Redistribution. You may reproduce and distribute copies of the
|
|
91
|
+
Work or Derivative Works thereof in any medium, with or without
|
|
92
|
+
modifications, and in Source or Object form, provided that You
|
|
93
|
+
meet the following conditions:
|
|
94
|
+
|
|
95
|
+
(a) You must give any other recipients of the Work or
|
|
96
|
+
Derivative Works a copy of this License; and
|
|
97
|
+
|
|
98
|
+
(b) You must cause any modified files to carry prominent notices
|
|
99
|
+
stating that You changed the files; and
|
|
100
|
+
|
|
101
|
+
(c) You must retain, in the Source form of any Derivative Works
|
|
102
|
+
that You distribute, all copyright, patent, trademark, and
|
|
103
|
+
attribution notices from the Source form of the Work,
|
|
104
|
+
excluding those notices that do not pertain to any part of
|
|
105
|
+
the Derivative Works; and
|
|
106
|
+
|
|
107
|
+
(d) If the Work includes a "NOTICE" text file as part of its
|
|
108
|
+
distribution, then any Derivative Works that You distribute must
|
|
109
|
+
include a readable copy of the attribution notices contained
|
|
110
|
+
within such NOTICE file, excluding those notices that do not
|
|
111
|
+
pertain to any part of the Derivative Works, in at least one
|
|
112
|
+
of the following places: within a NOTICE text file distributed
|
|
113
|
+
as part of the Derivative Works; within the Source form or
|
|
114
|
+
documentation, if provided along with the Derivative Works; or,
|
|
115
|
+
within a display generated by the Derivative Works, if and
|
|
116
|
+
wherever such third-party notices normally appear. The contents
|
|
117
|
+
of the NOTICE file are for informational purposes only and
|
|
118
|
+
do not modify the License. You may add Your own attribution
|
|
119
|
+
notices within Derivative Works that You distribute, alongside
|
|
120
|
+
or as an addendum to the NOTICE text from the Work, provided
|
|
121
|
+
that such additional attribution notices cannot be construed
|
|
122
|
+
as modifying the License.
|
|
123
|
+
|
|
124
|
+
You may add Your own copyright statement to Your modifications and
|
|
125
|
+
may provide additional or different license terms and conditions
|
|
126
|
+
for use, reproduction, or distribution of Your modifications, or
|
|
127
|
+
for any such Derivative Works as a whole, provided Your use,
|
|
128
|
+
reproduction, and distribution of the Work otherwise complies with
|
|
129
|
+
the conditions stated in this License.
|
|
130
|
+
|
|
131
|
+
5. Submission of Contributions. Unless You explicitly state otherwise,
|
|
132
|
+
any Contribution intentionally submitted for inclusion in the Work
|
|
133
|
+
by You to the Licensor shall be under the terms and conditions of
|
|
134
|
+
this License, without any additional terms or conditions.
|
|
135
|
+
Notwithstanding the above, nothing herein shall supersede or modify
|
|
136
|
+
the terms of any separate license agreement you may have executed
|
|
137
|
+
with Licensor regarding such Contributions.
|
|
138
|
+
|
|
139
|
+
6. Trademarks. This License does not grant permission to use the trade
|
|
140
|
+
names, trademarks, service marks, or product names of the Licensor,
|
|
141
|
+
except as required for reasonable and customary use in describing the
|
|
142
|
+
origin of the Work and reproducing the content of the NOTICE file.
|
|
143
|
+
|
|
144
|
+
7. Disclaimer of Warranty. Unless required by applicable law or
|
|
145
|
+
agreed to in writing, Licensor provides the Work (and each
|
|
146
|
+
Contributor provides its Contributions) on an "AS IS" BASIS,
|
|
147
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
|
148
|
+
implied, including, without limitation, any warranties or conditions
|
|
149
|
+
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
|
150
|
+
PARTICULAR PURPOSE. You are solely responsible for determining the
|
|
151
|
+
appropriateness of using or redistributing the Work and assume any
|
|
152
|
+
risks associated with Your exercise of permissions under this License.
|
|
153
|
+
|
|
154
|
+
8. Limitation of Liability. In no event and under no legal theory,
|
|
155
|
+
whether in tort (including negligence), contract, or otherwise,
|
|
156
|
+
unless required by applicable law (such as deliberate and grossly
|
|
157
|
+
negligent acts) or agreed to in writing, shall any Contributor be
|
|
158
|
+
liable to You for damages, including any direct, indirect, special,
|
|
159
|
+
incidental, or consequential damages of any character arising as a
|
|
160
|
+
result of this License or out of the use or inability to use the
|
|
161
|
+
Work (including but not limited to damages for loss of goodwill,
|
|
162
|
+
work stoppage, computer failure or malfunction, or any and all
|
|
163
|
+
other commercial damages or losses), even if such Contributor
|
|
164
|
+
has been advised of the possibility of such damages.
|
|
165
|
+
|
|
166
|
+
9. Accepting Warranty or Additional Liability. While redistributing
|
|
167
|
+
the Work or Derivative Works thereof, You may choose to offer,
|
|
168
|
+
and charge a fee for, acceptance of support, warranty, indemnity,
|
|
169
|
+
or other liability obligations and/or rights consistent with this
|
|
170
|
+
License. However, in accepting such obligations, You may act only
|
|
171
|
+
on Your own behalf and on Your sole responsibility, not on behalf
|
|
172
|
+
of any other Contributor, and only if You agree to indemnify,
|
|
173
|
+
defend, and hold each Contributor harmless for any liability
|
|
174
|
+
incurred by, or claims asserted against, such Contributor by reason
|
|
175
|
+
of your accepting any such warranty or additional liability.
|
|
176
|
+
|
|
177
|
+
END OF TERMS AND CONDITIONS
|
|
178
|
+
|
|
179
|
+
Copyright 2022 BitGo
|
|
180
|
+
|
|
181
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
182
|
+
you may not use this file except in compliance with the License.
|
|
183
|
+
You may obtain a copy of the License at
|
|
184
|
+
|
|
185
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
186
|
+
|
|
187
|
+
Unless required by applicable law or agreed to in writing, software
|
|
188
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
189
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
190
|
+
See the License for the specific language governing permissions and
|
|
191
|
+
limitations under the License.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { BitGoBase } from '../bitgoBase';
|
|
2
|
-
import { TxRequest } from '../utils';
|
|
2
|
+
import { RequestType, TxRequest } from '../utils';
|
|
3
3
|
import { SignatureShareRecord } from '../utils/tss/baseTypes';
|
|
4
4
|
/**
|
|
5
5
|
* Gets the latest Tx Request by id
|
|
@@ -17,7 +17,11 @@ export declare function getTxRequest(bitgo: BitGoBase, walletId: string, txReque
|
|
|
17
17
|
* @param {String} walletId - the wallet id *
|
|
18
18
|
* @param {String} txRequestId - the txRequest Id
|
|
19
19
|
* @param {SignatureShareRecord} signatureShare - a Signature Share
|
|
20
|
+
* @param requestType - The type of request being submitted (either tx or message for signing)
|
|
21
|
+
* @param signerShare
|
|
22
|
+
* @param mpcAlgorithm
|
|
23
|
+
* @param apiMode
|
|
20
24
|
* @returns {Promise<SignatureShareRecord>} - a Signature Share
|
|
21
25
|
*/
|
|
22
|
-
export declare function sendSignatureShare(bitgo: BitGoBase, walletId: string, txRequestId: string, signatureShare: SignatureShareRecord, signerShare?: string, mpcAlgorithm?: 'eddsa' | 'ecdsa', apiMode?: 'full' | 'lite'): Promise<SignatureShareRecord>;
|
|
26
|
+
export declare function sendSignatureShare(bitgo: BitGoBase, walletId: string, txRequestId: string, signatureShare: SignatureShareRecord, requestType: RequestType, signerShare?: string, mpcAlgorithm?: 'eddsa' | 'ecdsa', apiMode?: 'full' | 'lite'): Promise<SignatureShareRecord>;
|
|
23
27
|
//# sourceMappingURL=common.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/tss/common.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/tss/common.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D;;;;;;;GAOG;AACH,wBAAsB,YAAY,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAW9G;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,SAAS,EAChB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,oBAAoB,EACpC,WAAW,EAAE,WAAW,EACxB,WAAW,CAAC,EAAE,MAAM,EACpB,YAAY,GAAE,OAAO,GAAG,OAAiB,EACzC,OAAO,GAAE,MAAM,GAAG,MAAe,GAChC,OAAO,CAAC,oBAAoB,CAAC,CAsB/B"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.sendSignatureShare = exports.getTxRequest = void 0;
|
|
4
|
+
const utils_1 = require("../utils");
|
|
4
5
|
/**
|
|
5
6
|
* Gets the latest Tx Request by id
|
|
6
7
|
*
|
|
@@ -27,15 +28,29 @@ exports.getTxRequest = getTxRequest;
|
|
|
27
28
|
* @param {String} walletId - the wallet id *
|
|
28
29
|
* @param {String} txRequestId - the txRequest Id
|
|
29
30
|
* @param {SignatureShareRecord} signatureShare - a Signature Share
|
|
31
|
+
* @param requestType - The type of request being submitted (either tx or message for signing)
|
|
32
|
+
* @param signerShare
|
|
33
|
+
* @param mpcAlgorithm
|
|
34
|
+
* @param apiMode
|
|
30
35
|
* @returns {Promise<SignatureShareRecord>} - a Signature Share
|
|
31
36
|
*/
|
|
32
|
-
async function sendSignatureShare(bitgo, walletId, txRequestId, signatureShare, signerShare, mpcAlgorithm = 'eddsa', apiMode = 'lite') {
|
|
33
|
-
let
|
|
34
|
-
|
|
35
|
-
|
|
37
|
+
async function sendSignatureShare(bitgo, walletId, txRequestId, signatureShare, requestType, signerShare, mpcAlgorithm = 'eddsa', apiMode = 'lite') {
|
|
38
|
+
let addendum = '';
|
|
39
|
+
switch (requestType) {
|
|
40
|
+
case utils_1.RequestType.tx:
|
|
41
|
+
if (mpcAlgorithm === 'ecdsa' || apiMode === 'full') {
|
|
42
|
+
addendum = '/transactions/0';
|
|
43
|
+
}
|
|
44
|
+
break;
|
|
45
|
+
case utils_1.RequestType.message:
|
|
46
|
+
if (mpcAlgorithm === 'ecdsa' || apiMode === 'full') {
|
|
47
|
+
addendum = '/messages/0';
|
|
48
|
+
}
|
|
49
|
+
break;
|
|
36
50
|
}
|
|
51
|
+
const urlPath = '/wallet/' + walletId + '/txrequests/' + txRequestId + addendum + '/signatureshares';
|
|
37
52
|
return bitgo
|
|
38
|
-
.post(bitgo.url(
|
|
53
|
+
.post(bitgo.url(urlPath, 2))
|
|
39
54
|
.send({
|
|
40
55
|
signatureShare,
|
|
41
56
|
signerShare,
|
|
@@ -43,4 +58,4 @@ async function sendSignatureShare(bitgo, walletId, txRequestId, signatureShare,
|
|
|
43
58
|
.result();
|
|
44
59
|
}
|
|
45
60
|
exports.sendSignatureShare = sendSignatureShare;
|
|
46
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2JpdGdvL3Rzcy9jb21tb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0Esb0NBQWtEO0FBR2xEOzs7Ozs7O0dBT0c7QUFDSSxLQUFLLFVBQVUsWUFBWSxDQUFDLEtBQWdCLEVBQUUsUUFBZ0IsRUFBRSxXQUFtQjtJQUN4RixNQUFNLFlBQVksR0FBRyxNQUFNLEtBQUs7U0FDN0IsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsVUFBVSxHQUFHLFFBQVEsR0FBRyxhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDeEQsS0FBSyxDQUFDLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLENBQUM7U0FDcEQsTUFBTSxFQUFFLENBQUM7SUFFWixJQUFJLFlBQVksQ0FBQyxVQUFVLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRTtRQUN2QyxNQUFNLElBQUksS0FBSyxDQUFDLG9DQUFvQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0tBQ3BFO0lBRUQsT0FBTyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3BDLENBQUM7QUFYRCxvQ0FXQztBQUVEOzs7Ozs7Ozs7Ozs7R0FZRztBQUNJLEtBQUssVUFBVSxrQkFBa0IsQ0FDdEMsS0FBZ0IsRUFDaEIsUUFBZ0IsRUFDaEIsV0FBbUIsRUFDbkIsY0FBb0MsRUFDcEMsV0FBd0IsRUFDeEIsV0FBb0IsRUFDcEIsZUFBa0MsT0FBTyxFQUN6QyxVQUEyQixNQUFNO0lBRWpDLElBQUksUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUNsQixRQUFRLFdBQVcsRUFBRTtRQUNuQixLQUFLLG1CQUFXLENBQUMsRUFBRTtZQUNqQixJQUFJLFlBQVksS0FBSyxPQUFPLElBQUksT0FBTyxLQUFLLE1BQU0sRUFBRTtnQkFDbEQsUUFBUSxHQUFHLGlCQUFpQixDQUFDO2FBQzlCO1lBQ0QsTUFBTTtRQUNSLEtBQUssbUJBQVcsQ0FBQyxPQUFPO1lBQ3RCLElBQUksWUFBWSxLQUFLLE9BQU8sSUFBSSxPQUFPLEtBQUssTUFBTSxFQUFFO2dCQUNsRCxRQUFRLEdBQUcsYUFBYSxDQUFDO2FBQzFCO1lBQ0QsTUFBTTtLQUNUO0lBQ0QsTUFBTSxPQUFPLEdBQUcsVUFBVSxHQUFHLFFBQVEsR0FBRyxjQUFjLEdBQUcsV0FBVyxHQUFHLFFBQVEsR0FBRyxrQkFBa0IsQ0FBQztJQUNyRyxPQUFPLEtBQUs7U0FDVCxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDM0IsSUFBSSxDQUFDO1FBQ0osY0FBYztRQUNkLFdBQVc7S0FDWixDQUFDO1NBQ0QsTUFBTSxFQUFFLENBQUM7QUFDZCxDQUFDO0FBL0JELGdEQStCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJpdEdvQmFzZSB9IGZyb20gJy4uL2JpdGdvQmFzZSc7XG5pbXBvcnQgeyBSZXF1ZXN0VHlwZSwgVHhSZXF1ZXN0IH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgU2lnbmF0dXJlU2hhcmVSZWNvcmQgfSBmcm9tICcuLi91dGlscy90c3MvYmFzZVR5cGVzJztcblxuLyoqXG4gKiBHZXRzIHRoZSBsYXRlc3QgVHggUmVxdWVzdCBieSBpZFxuICpcbiAqIEBwYXJhbSB7Qml0R29CYXNlfSBiaXRnbyAtIHRoZSBiaXRnbyBpbnN0YW5jZVxuICogQHBhcmFtIHtTdHJpbmd9IHdhbGxldElkIC0gdGhlIHdhbGxldCBpZFxuICogQHBhcmFtIHtTdHJpbmd9IHR4UmVxdWVzdElkIC0gdGhlIHR4UmVxdWVzdCBJZFxuICogQHJldHVybnMge1Byb21pc2U8VHhSZXF1ZXN0Pn1cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldFR4UmVxdWVzdChiaXRnbzogQml0R29CYXNlLCB3YWxsZXRJZDogc3RyaW5nLCB0eFJlcXVlc3RJZDogc3RyaW5nKTogUHJvbWlzZTxUeFJlcXVlc3Q+IHtcbiAgY29uc3QgdHhSZXF1ZXN0UmVzID0gYXdhaXQgYml0Z29cbiAgICAuZ2V0KGJpdGdvLnVybCgnL3dhbGxldC8nICsgd2FsbGV0SWQgKyAnL3R4cmVxdWVzdHMnLCAyKSlcbiAgICAucXVlcnkoeyB0eFJlcXVlc3RJZHM6IHR4UmVxdWVzdElkLCBsYXRlc3Q6ICd0cnVlJyB9KVxuICAgIC5yZXN1bHQoKTtcblxuICBpZiAodHhSZXF1ZXN0UmVzLnR4UmVxdWVzdHMubGVuZ3RoIDw9IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBmaW5kIFR4UmVxdWVzdCB3aXRoIGlkICR7dHhSZXF1ZXN0SWR9YCk7XG4gIH1cblxuICByZXR1cm4gdHhSZXF1ZXN0UmVzLnR4UmVxdWVzdHNbMF07XG59XG5cbi8qKlxuICogU2VuZHMgYSBTaWduYXR1cmUgU2hhcmVcbiAqXG4gKiBAcGFyYW0ge0JpdEdvQmFzZX0gYml0Z28gLSB0aGUgYml0Z28gaW5zdGFuY2VcbiAqIEBwYXJhbSB7U3RyaW5nfSB3YWxsZXRJZCAtIHRoZSB3YWxsZXQgaWQgICpcbiAqIEBwYXJhbSB7U3RyaW5nfSB0eFJlcXVlc3RJZCAtIHRoZSB0eFJlcXVlc3QgSWRcbiAqIEBwYXJhbSB7U2lnbmF0dXJlU2hhcmVSZWNvcmR9IHNpZ25hdHVyZVNoYXJlIC0gYSBTaWduYXR1cmUgU2hhcmVcbiAqIEBwYXJhbSByZXF1ZXN0VHlwZSAtIFRoZSB0eXBlIG9mIHJlcXVlc3QgYmVpbmcgc3VibWl0dGVkIChlaXRoZXIgdHggb3IgbWVzc2FnZSBmb3Igc2lnbmluZylcbiAqIEBwYXJhbSBzaWduZXJTaGFyZVxuICogQHBhcmFtIG1wY0FsZ29yaXRobVxuICogQHBhcmFtIGFwaU1vZGVcbiAqIEByZXR1cm5zIHtQcm9taXNlPFNpZ25hdHVyZVNoYXJlUmVjb3JkPn0gLSBhIFNpZ25hdHVyZSBTaGFyZVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2VuZFNpZ25hdHVyZVNoYXJlKFxuICBiaXRnbzogQml0R29CYXNlLFxuICB3YWxsZXRJZDogc3RyaW5nLFxuICB0eFJlcXVlc3RJZDogc3RyaW5nLFxuICBzaWduYXR1cmVTaGFyZTogU2lnbmF0dXJlU2hhcmVSZWNvcmQsXG4gIHJlcXVlc3RUeXBlOiBSZXF1ZXN0VHlwZSxcbiAgc2lnbmVyU2hhcmU/OiBzdHJpbmcsXG4gIG1wY0FsZ29yaXRobTogJ2VkZHNhJyB8ICdlY2RzYScgPSAnZWRkc2EnLFxuICBhcGlNb2RlOiAnZnVsbCcgfCAnbGl0ZScgPSAnbGl0ZSdcbik6IFByb21pc2U8U2lnbmF0dXJlU2hhcmVSZWNvcmQ+IHtcbiAgbGV0IGFkZGVuZHVtID0gJyc7XG4gIHN3aXRjaCAocmVxdWVzdFR5cGUpIHtcbiAgICBjYXNlIFJlcXVlc3RUeXBlLnR4OlxuICAgICAgaWYgKG1wY0FsZ29yaXRobSA9PT0gJ2VjZHNhJyB8fCBhcGlNb2RlID09PSAnZnVsbCcpIHtcbiAgICAgICAgYWRkZW5kdW0gPSAnL3RyYW5zYWN0aW9ucy8wJztcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgUmVxdWVzdFR5cGUubWVzc2FnZTpcbiAgICAgIGlmIChtcGNBbGdvcml0aG0gPT09ICdlY2RzYScgfHwgYXBpTW9kZSA9PT0gJ2Z1bGwnKSB7XG4gICAgICAgIGFkZGVuZHVtID0gJy9tZXNzYWdlcy8wJztcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICB9XG4gIGNvbnN0IHVybFBhdGggPSAnL3dhbGxldC8nICsgd2FsbGV0SWQgKyAnL3R4cmVxdWVzdHMvJyArIHR4UmVxdWVzdElkICsgYWRkZW5kdW0gKyAnL3NpZ25hdHVyZXNoYXJlcyc7XG4gIHJldHVybiBiaXRnb1xuICAgIC5wb3N0KGJpdGdvLnVybCh1cmxQYXRoLCAyKSlcbiAgICAuc2VuZCh7XG4gICAgICBzaWduYXR1cmVTaGFyZSxcbiAgICAgIHNpZ25lclNoYXJlLFxuICAgIH0pXG4gICAgLnJlc3VsdCgpO1xufVxuIl19
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
import { DecryptableNShare, CombinedKey, EncryptedNShare, AShare, CreateUserGammaAndMuShareRT, CreateUserOmicronAndDeltaShareRT, DShare, GShare, KeyShare, NShare, OShare, SendShareType, SignatureShare, SignShare, WShare, XShare, YShare, SendShareToBitgoRT, ReceivedShareType, BShare, Signature } from './types';
|
|
3
|
-
import { SignatureShareRecord, SignatureShareType } from './../../utils';
|
|
3
|
+
import { SignatureShareRecord, SignatureShareType, RequestType } from './../../utils';
|
|
4
4
|
import { ShareKeyPosition } from '../types';
|
|
5
5
|
import { BitGoBase } from '../../bitgoBase';
|
|
6
6
|
import { KShare, MUShare, SShare } from '../../../account-lib/mpc/tss/ecdsa/types';
|
|
@@ -52,10 +52,13 @@ export declare type MuDShare = {
|
|
|
52
52
|
* @param {BitGoBase} bitgo - the bitgo instance
|
|
53
53
|
* @param {String} walletId - the wallet id *
|
|
54
54
|
* @param {String} txRequestId - the txRequest Id
|
|
55
|
-
* @param
|
|
55
|
+
* @param requestType - the type of request being submitted (either tx or message for signing)
|
|
56
|
+
* @param shareType
|
|
57
|
+
* @param share
|
|
58
|
+
* @param signerShare
|
|
56
59
|
* @returns {Promise<SignatureShareRecord>} - a Signature Share
|
|
57
60
|
*/
|
|
58
|
-
export declare function sendShareToBitgo(bitgo: BitGoBase, walletId: string, txRequestId: string, shareType: SendShareType, share: SShare | MuDShare | KShare, signerShare?: string): Promise<SendShareToBitgoRT>;
|
|
61
|
+
export declare function sendShareToBitgo(bitgo: BitGoBase, walletId: string, txRequestId: string, requestType: RequestType, shareType: SendShareType, share: SShare | MuDShare | KShare, signerShare?: string): Promise<SendShareToBitgoRT>;
|
|
59
62
|
/**
|
|
60
63
|
* Gets the latest user's share from bitgo needed to continue signing flow
|
|
61
64
|
* @param {BitGoBase} bitgo - the bitgo instance
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ecdsa.d.ts","sourceRoot":"","sources":["../../../../../src/bitgo/tss/ecdsa/ecdsa.ts"],"names":[],"mappings":";AACA,OAAO,EACL,iBAAiB,EACjB,WAAW,EAEX,eAAe,EACf,MAAM,EACN,2BAA2B,EAC3B,gCAAgC,EAChC,MAAM,EACN,MAAM,EACN,QAAQ,EACR,MAAM,EACN,MAAM,EACN,aAAa,EACb,cAAc,EACd,SAAS,EACT,MAAM,EACN,MAAM,EACN,MAAM,EACN,kBAAkB,EAClB,iBAAiB,EACjB,MAAM,EACN,SAAS,EACV,MAAM,SAAS,CAAC;AACjB,OAAO,
|
|
1
|
+
{"version":3,"file":"ecdsa.d.ts","sourceRoot":"","sources":["../../../../../src/bitgo/tss/ecdsa/ecdsa.ts"],"names":[],"mappings":"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"}
|
|
@@ -134,10 +134,13 @@ exports.createUserSignatureShare = createUserSignatureShare;
|
|
|
134
134
|
* @param {BitGoBase} bitgo - the bitgo instance
|
|
135
135
|
* @param {String} walletId - the wallet id *
|
|
136
136
|
* @param {String} txRequestId - the txRequest Id
|
|
137
|
-
* @param
|
|
137
|
+
* @param requestType - the type of request being submitted (either tx or message for signing)
|
|
138
|
+
* @param shareType
|
|
139
|
+
* @param share
|
|
140
|
+
* @param signerShare
|
|
138
141
|
* @returns {Promise<SignatureShareRecord>} - a Signature Share
|
|
139
142
|
*/
|
|
140
|
-
async function sendShareToBitgo(bitgo, walletId, txRequestId, shareType, share, signerShare) {
|
|
143
|
+
async function sendShareToBitgo(bitgo, walletId, txRequestId, requestType, shareType, share, signerShare) {
|
|
141
144
|
if (shareType !== types_1.SendShareType.SShare && share.i !== types_2.ShareKeyPosition.BITGO) {
|
|
142
145
|
throw new Error('Invalid Share, is not from User to Bitgo');
|
|
143
146
|
}
|
|
@@ -148,7 +151,7 @@ async function sendShareToBitgo(bitgo, walletId, txRequestId, shareType, share,
|
|
|
148
151
|
assert_1.default(signerShare, `signer share must be present`);
|
|
149
152
|
const kShare = share;
|
|
150
153
|
signatureShare = convertKShare(kShare);
|
|
151
|
-
await common_1.sendSignatureShare(bitgo, walletId, txRequestId, signatureShare, signerShare, 'ecdsa');
|
|
154
|
+
await common_1.sendSignatureShare(bitgo, walletId, txRequestId, signatureShare, requestType, signerShare, 'ecdsa');
|
|
152
155
|
responseFromBitgo = await getBitgoToUserLatestShare(bitgo, walletId, txRequestId, types_1.ReceivedShareType.AShare);
|
|
153
156
|
break;
|
|
154
157
|
case types_1.SendShareType.MUShare:
|
|
@@ -160,13 +163,13 @@ async function sendShareToBitgo(bitgo, walletId, txRequestId, shareType, share,
|
|
|
160
163
|
from: getParticipantFromIndex(shareToSend.dShare.i),
|
|
161
164
|
share: `${muShareRecord.share}${exports.secondaryDelimeter}${dShareRecord.share}`,
|
|
162
165
|
};
|
|
163
|
-
await common_1.sendSignatureShare(bitgo, walletId, txRequestId, signatureShare, signerShare, 'ecdsa');
|
|
166
|
+
await common_1.sendSignatureShare(bitgo, walletId, txRequestId, signatureShare, requestType, signerShare, 'ecdsa');
|
|
164
167
|
responseFromBitgo = await getBitgoToUserLatestShare(bitgo, walletId, txRequestId, types_1.ReceivedShareType.DShare);
|
|
165
168
|
break;
|
|
166
169
|
case types_1.SendShareType.SShare:
|
|
167
170
|
const sShare = share;
|
|
168
171
|
signatureShare = convertSignatureShare(sShare, share.i);
|
|
169
|
-
await common_1.sendSignatureShare(bitgo, walletId, txRequestId, signatureShare, signerShare, 'ecdsa');
|
|
172
|
+
await common_1.sendSignatureShare(bitgo, walletId, txRequestId, signatureShare, requestType, signerShare, 'ecdsa');
|
|
170
173
|
responseFromBitgo = sShare;
|
|
171
174
|
break;
|
|
172
175
|
default:
|
|
@@ -568,4 +571,4 @@ function getParticipantFromIndex(index) {
|
|
|
568
571
|
}
|
|
569
572
|
}
|
|
570
573
|
exports.getParticipantFromIndex = getParticipantFromIndex;
|
|
571
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNkc2EuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYml0Z28vdHNzL2VjZHNhL2VjZHNhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLHdEQUF1RDtBQUN2RCxtQ0F1QmlCO0FBQ2pCLHlDQUFnSDtBQUNoSCxvQ0FBNEM7QUFHNUMsc0NBQTZEO0FBQzdELG9EQUFzQztBQUN0QyxvREFBNEI7QUFFNUIsTUFBTSxHQUFHLEdBQUcsSUFBSSxXQUFLLEVBQUUsQ0FBQztBQUV4Qjs7Ozs7Ozs7R0FRRztBQUNJLEtBQUssVUFBVSxpQkFBaUIsQ0FDckMsUUFBa0IsRUFDbEIsZ0JBQXFDLEVBQ3JDLGNBQXNCO0lBRXRCLE1BQU0sT0FBTyxHQUFhLEVBQUUsQ0FBQztJQUU3QixJQUFJLFdBQStCLENBQUM7SUFDcEMsSUFBSSxVQUE4QixDQUFDO0lBQ25DLElBQUksWUFBZ0MsQ0FBQztJQUVyQyxLQUFLLE1BQU0sZUFBZSxJQUFJLGdCQUFnQixFQUFFO1FBQzlDLE1BQU0sTUFBTSxHQUFHLE1BQU0sYUFBYSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBRXBELFFBQVEsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUU7WUFDaEMsS0FBSyxDQUFDO2dCQUNKLFVBQVUsR0FBRyxNQUFNLENBQUM7Z0JBQ3BCLE1BQU07WUFDUixLQUFLLENBQUM7Z0JBQ0osWUFBWSxHQUFHLE1BQU0sQ0FBQztnQkFDdEIsTUFBTTtZQUNSLEtBQUssQ0FBQztnQkFDSixXQUFXLEdBQUcsTUFBTSxDQUFDO2dCQUNyQixNQUFNO1lBQ1I7Z0JBQ0UsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1NBQzNDO1FBRUQsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztLQUN0QjtJQUVELElBQUksQ0FBQyxXQUFXLEVBQUU7UUFDaEIsTUFBTSxJQUFJLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0tB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QUFLLENBQUM7WUFDSixPQUFPLDBCQUFrQixDQUFDLEtBQUssQ0FBQztRQUNsQztZQUNFLE1BQU0sSUFBSSxLQUFLLENBQUMsNkJBQTZCLEtBQUssRUFBRSxDQUFDLENBQUM7S0FDekQ7QUFDSCxDQUFDO0FBWEQsMERBV0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFY2RzYSB9IGZyb20gJy4vLi4vLi4vLi4vYWNjb3VudC1saWIvbXBjL3Rzcyc7XG5pbXBvcnQge1xuICBEZWNyeXB0YWJsZU5TaGFyZSxcbiAgQ29tYmluZWRLZXksXG4gIFNpZ25pbmdNYXRlcmlhbCxcbiAgRW5jcnlwdGVkTlNoYXJlLFxuICBBU2hhcmUsXG4gIENyZWF0ZVVzZXJHYW1tYUFuZE11U2hhcmVSVCxcbiAgQ3JlYXRlVXNlck9taWNyb25BbmREZWx0YVNoYXJlUlQsXG4gIERTaGFyZSxcbiAgR1NoYXJlLFxuICBLZXlTaGFyZSxcbiAgTlNoYXJlLFxuICBPU2hhcmUsXG4gIFNlbmRTaGFyZVR5cGUsXG4gIFNpZ25hdHVyZVNoYXJlLFxuICBTaWduU2hhcmUsXG4gIFdTaGFyZSxcbiAgWFNoYXJlLFxuICBZU2hhcmUsXG4gIFNlbmRTaGFyZVRvQml0Z29SVCxcbiAgUmVjZWl2ZWRTaGFyZVR5cGUsXG4gIEJTaGFyZSxcbiAgU2lnbmF0dXJlLFxufSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IGVuY3J5cHRBbmRTaWduVGV4dCwgcmVhZFNpZ25lZE1lc3NhZ2UsIFNpZ25hdHVyZVNoYXJlUmVjb3JkLCBTaWduYXR1cmVTaGFyZVR5cGUgfSBmcm9tICcuLy4uLy4uL3V0aWxzJztcbmltcG9ydCB7IFNoYXJlS2V5UG9zaXRpb24gfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBCaXRHb0Jhc2UgfSBmcm9tICcuLi8uLi9iaXRnb0Jhc2UnO1xuaW1wb3J0IHsgS1NoYXJlLCBNVVNoYXJlLCBTU2hhcmUgfSBmcm9tICcuLi8uLi8uLi9hY2NvdW50LWxpYi9tcGMvdHNzL2VjZHNhL3R5cGVzJztcbmltcG9ydCB7IGdldFR4UmVxdWVzdCwgc2VuZFNpZ25hdHVyZVNoYXJlIH0gZnJvbSAnLi4vY29tbW9uJztcbmltcG9ydCBjcmVhdGVLZWNjYWtIYXNoIGZyb20gJ2tlY2Nhayc7XG5pbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5cbmNvbnN0IE1QQyA9IG5ldyBFY2RzYSgpO1xuXG4vKipcbiAqIENvbWJpbmVzIE5TaGFyZXMgdG8gY29tYmluZSB0aGUgZmluYWwgVFNTIGtleVxuICogVGhpcyBjYW4gb25seSBiZSB1c2VkIHRvIGNyZWF0ZSB0aGUgVXNlciBvciBCYWNrdXAga2V5IHNpbmNlIGl0IHJlcXVpcmVzIHRoZSBjb21tb24ga2V5Y2hhaW4gZnJvbSBCaXRHbyBmaXJzdFxuICpcbiAqIEBwYXJhbSBrZXlTaGFyZSAtIFRTUyBrZXkgc2hhcmVcbiAqIEBwYXJhbSBlbmNyeXB0ZWROU2hhcmVzIC0gZW5jcnlwdGVkIE5TaGFyZXMgd2l0aCBpbmZvcm1hdGlvbiBvbiBob3cgdG8gZGVjcnlwdFxuICogQHBhcmFtIGNvbW1vbktleWNoYWluIC0gZXhwZWN0ZWQgY29tbW9uIGtleWNoYWluIG9mIHRoZSBjb21iaW5lZCBrZXlcbiAqIEByZXR1cm5zIHtDb21iaW5lZEtleX0gY29tYmluZWQgVFNTIGtleVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlQ29tYmluZWRLZXkoXG4gIGtleVNoYXJlOiBLZXlTaGFyZSxcbiAgZW5jcnlwdGVkTlNoYXJlczogRGVjcnlwdGFibGVOU2hhcmVbXSxcbiAgY29tbW9uS2V5Y2hhaW46IHN0cmluZ1xuKTogUHJvbWlzZTxDb21iaW5lZEtleT4ge1xuICBjb25zdCBuU2hhcmVzOiBOU2hhcmVbXSA9IFtdO1xuXG4gIGxldCBiaXRnb05TaGFyZTogTlNoYXJlIHwgdW5kZWZpbmVkO1xuICBsZXQgdXNlck5TaGFyZTogTlNoYXJlIHwgdW5kZWZpbmVkO1xuICBsZXQgYmFja3VwTlNoYXJlOiBOU2hhcmUgfCB1bmRlZmluZWQ7XG5cbiAgZm9yIChjb25zdCBlbmNyeXB0ZWROU2hhcmUgb2YgZW5jcnlwdGVkTlNoYXJlcykge1xuICAgIGNvbnN0IG5TaGFyZSA9IGF3YWl0IGRlY3J5cHROU2hhcmUoZW5jcnlwdGVkTlNoYXJlKTtcblxuICAgIHN3aXRjaCAoZW5jcnlwdGVkTlNoYXJlLm5TaGFyZS5qKSB7XG4gICAgICBjYXNlIDE6XG4gICAgICAgIHVzZXJOU2hhcmUgPSBuU2hhcmU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyOlxuICAgICAgICBiYWNrdXBOU2hhcmUgPSBuU2hhcmU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAzOlxuICAgICAgICBiaXRnb05TaGFyZSA9IG5TaGFyZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgTlNoYXJlIGluZGV4Jyk7XG4gICAgfVxuXG4gICAgblNoYXJlcy5wdXNoKG5TaGFyZSk7XG4gIH1cblxuICBpZiAoIWJpdGdvTlNoYXJlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIEJpdEdvIE4gU2hhcmUnKTtcbiAgfVxuXG4gIGNvbnN0IGNvbWJpbmVkS2V5ID0gTVBDLmtleUNvbWJpbmUoa2V5U2hhcmUucFNoYXJlLCBuU2hhcmVzKTtcbiAgaWYgKGNvbWJpbmVkS2V5LnhTaGFyZS55ICsgY29tYmluZWRLZXkueFNoYXJlLmNoYWluY29kZSAhPT0gY29tbW9uS2V5Y2hhaW4pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvbW1vbiBrZXljaGFpbnMgZG8gbm90IG1hdGNoJyk7XG4gIH1cblxuICBjb25zdCBzaWduaW5nTWF0ZXJpYWw6IFNpZ25pbmdNYXRlcmlhbCA9IHtcbiAgICBwU2hhcmU6IGtleVNoYXJlLnBTaGFyZSxcbiAgICBiaXRnb05TaGFyZSxcbiAgICBiYWNrdXBOU2hhcmUsXG4gICAgdXNlck5TaGFyZSxcbiAgfTtcblxuICByZXR1cm4ge1xuICAgIHNpZ25pbmdNYXRlcmlhbCxcbiAgICBjb21tb25LZXljaGFpbixcbiAgfTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIHRoZSBTaWduU2hhcmUgd2l0aCBVc2VyIFhTaGFyZSBhbmQgWVNoYXJlIENvcnJlc3BvbmRpbmcgdG8gQml0R29cbiAqIEBwYXJhbSB7WFNoYXJlfSB4U2hhcmUgVXNlciBzZWNyZXQgeFNoYXJlXG4gKiBAcGFyYW0ge1lTaGFyZX0geVNoYXJlIFlTaGFyZSBmcm9tIEJpdGdvXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxTaWduU2hhcmU+fVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlVXNlclNpZ25TaGFyZSh4U2hhcmU6IFhTaGFyZSwgeVNoYXJlOiBZU2hhcmUpOiBQcm9taXNlPFNpZ25TaGFyZT4ge1xuICBpZiAoeFNoYXJlLmkgIT09IFNoYXJlS2V5UG9zaXRpb24uVVNFUikge1xuICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBYU2hhcmUsIFhTaGFyZSBkb2Vzbid0IGJlbG9uZyB0byB0aGUgVXNlcmApO1xuICB9XG5cbiAgaWYgKHlTaGFyZS5pICE9PSBTaGFyZUtleVBvc2l0aW9uLlVTRVIgfHwgeVNoYXJlLmogIT09IFNoYXJlS2V5UG9zaXRpb24uQklUR08pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgWVNoYXJlIHByb3ZpZGVkIGZvciBzaWduJyk7XG4gIH1cbiAgcmV0dXJuIE1QQy5zaWduU2hhcmUoeFNoYXJlLCB5U2hhcmUpO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgdGhlIEdhbW1hIFNoYXJlIGFuZCBNdVNoYXJlIHdpdGggVXNlciBXU2hhcmUgYW5kIEFTaGFyZSBGcm9tIEJpdEdvXG4gKiBAcGFyYW0ge1dTaGFyZX0gd1NoYXJlIFVzZXIgV1NoYXJlXG4gKiBAcGFyYW0ge0FTaGFyZX0gYVNoYXJlIEFTaGFyZSBmcm9tIEJpdGdvXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxDcmVhdGVVc2VyR2FtbWFBbmRNdVNoYXJlUlQ+fVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlVXNlckdhbW1hQW5kTXVTaGFyZSh3U2hhcmU6IFdTaGFyZSwgYVNoYXJlOiBBU2hhcmUpOiBQcm9taXNlPENyZWF0ZVVzZXJHYW1tYUFuZE11U2hhcmVSVD4ge1xuICBpZiAod1NoYXJlLmkgIT09IFNoYXJlS2V5UG9zaXRpb24uVVNFUikge1xuICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBXU2hhcmUsIGRvZXNuJ3QgYmVsb25nIHRvIHRoZSBVc2VyYCk7XG4gIH1cbiAgaWYgKGFTaGFyZS5pICE9PSBTaGFyZUtleVBvc2l0aW9uLlVTRVIgfHwgYVNoYXJlLmogIT09IFNoYXJlS2V5UG9zaXRpb24uQklUR08pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgQVNoYXJlLCBpcyBub3QgZnJvbSBCaXRnbyB0byBVc2VyJyk7XG4gIH1cblxuICByZXR1cm4gTVBDLnNpZ25Db252ZXJ0KHsgd1NoYXJlLCBhU2hhcmUgfSk7XG59XG5cbi8qKlxuICogQ3JlYXRlcyB0aGUgT21pY3JvbiBTaGFyZSBhbmQgRGVsdGEgc2hhcmUgd2l0aCB1c2VyIEdTaGFyZVxuICogQHBhcmFtIHtHU2hhcmV9IGdTaGFyZSBVc2VyIEdTaGFyZVxuICogQHJldHVybnMge1Byb21pc2U8Q3JlYXRlVXNlck9taWNyb25BbmREZWx0YVNoYXJlUlQ+fVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlVXNlck9taWNyb25BbmREZWx0YVNoYXJlKGdTaGFyZTogR1NoYXJlKTogUHJvbWlzZTxDcmVhdGVVc2VyT21pY3JvbkFuZERlbHRhU2hhcmVSVD4ge1xuICBpZiAoZ1NoYXJlLmkgIT09IFNoYXJlS2V5UG9zaXRpb24uVVNFUikge1xuICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBHU2hhcmUsIGRvZXNuJ3QgYmVsb25nIHRvIHRoZSBVc2VyYCk7XG4gIH1cbiAgcmV0dXJuIE1QQy5zaWduQ29tYmluZSh7XG4gICAgZ1NoYXJlOiBnU2hhcmUsXG4gICAgc2lnbkluZGV4OiB7XG4gICAgICBpOiBTaGFyZUtleVBvc2l0aW9uLkJJVEdPLFxuICAgICAgajogZ1NoYXJlLmksXG4gICAgfSxcbiAgfSk7XG59XG5cbi8qKlxuICogQ3JlYXRlcyB0aGUgU2lnbmF0dXJlIFNoYXJlIHdpdGggVXNlciBPU2hhcmUgYW5kIERTaGFyZSBGcm9tIEJpdEdvXG4gKiBAcGFyYW0ge09TaGFyZX0gb1NoYXJlIFVzZXIgT1NoYXJlXG4gKiBAcGFyYW0ge0RTaGFyZX0gZFNoYXJlIERTaGFyZSBmcm9tIGJpdGdvXG4gKiBAcGFyYW0ge0J1ZmZlcn0gbWVzc2FnZSBtZXNzYWdlIHRvIHBlcmZvcm0gc2lnblxuICogQHJldHVybnMge1Byb21pc2U8Y3JlYXRlVXNlclNpZ25TaGFyZVJUPn1cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZVVzZXJTaWduYXR1cmVTaGFyZShcbiAgb1NoYXJlOiBPU2hhcmUsXG4gIGRTaGFyZTogRFNoYXJlLFxuICBtZXNzYWdlOiBCdWZmZXJcbik6IFByb21pc2U8U2lnbmF0dXJlU2hhcmU+IHtcbiAgaWYgKG9TaGFyZS5pICE9PSBTaGFyZUtleVBvc2l0aW9uLlVTRVIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgT1NoYXJlLCBkb2Vzbid0IGJlbG9uZyB0byB0aGUgVXNlcmApO1xuICB9XG5cbiAgaWYgKGRTaGFyZS5pICE9PSBTaGFyZUtleVBvc2l0aW9uLlVTRVIgfHwgZFNoYXJlLmogIT09IFNoYXJlS2V5UG9zaXRpb24uQklUR08pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgRFNoYXJlLCBkb2Vzbid0IHNlZW0gdG8gYmUgZnJvbSBCaXRHb2ApO1xuICB9XG4gIHJldHVybiBNUEMuc2lnbihtZXNzYWdlLCBvU2hhcmUsIGRTaGFyZSwgY3JlYXRlS2VjY2FrSGFzaCgna2VjY2FrMjU2JykpO1xufVxuXG5leHBvcnQgdHlwZSBNdURTaGFyZSA9IHsgbXVTaGFyZTogTVVTaGFyZTsgZFNoYXJlOiBEU2hhcmU7IGk6IFNoYXJlS2V5UG9zaXRpb24gfTtcblxuLyoqXG4gKiBTZW5kcyBTaGFyZSBUbyBCaXRnb1xuICogQHBhcmFtIHtCaXRHb0Jhc2V9IGJpdGdvIC0gdGhlIGJpdGdvIGluc3RhbmNlXG4gKiBAcGFyYW0ge1N0cmluZ30gd2FsbGV0SWQgLSB0aGUgd2FsbGV0IGlkICAqXG4gKiBAcGFyYW0ge1N0cmluZ30gdHhSZXF1ZXN0SWQgLSB0aGUgdHhSZXF1ZXN0IElkXG4gKiBAcGFyYW0ge1NpZ25hdHVyZVNoYXJlUmVjb3JkfSBzaWduYXR1cmVTaGFyZSAtIGEgU2lnbmF0dXJlIFNoYXJlXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxTaWduYXR1cmVTaGFyZVJlY29yZD59IC0gYSBTaWduYXR1cmUgU2hhcmVcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNlbmRTaGFyZVRvQml0Z28oXG4gIGJpdGdvOiBCaXRHb0Jhc2UsXG4gIHdhbGxldElkOiBzdHJpbmcsXG4gIHR4UmVxdWVzdElkOiBzdHJpbmcsXG4gIHNoYXJlVHlwZTogU2VuZFNoYXJlVHlwZSxcbiAgc2hhcmU6IFNTaGFyZSB8IE11RFNoYXJlIHwgS1NoYXJlLFxuICBzaWduZXJTaGFyZT86IHN0cmluZ1xuKTogUHJvbWlzZTxTZW5kU2hhcmVUb0JpdGdvUlQ+IHtcbiAgaWYgKHNoYXJlVHlwZSAhPT0gU2VuZFNoYXJlVHlwZS5TU2hhcmUgJiYgc2hhcmUuaSAhPT0gU2hhcmVLZXlQb3NpdGlvbi5CSVRHTykge1xuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBTaGFyZSwgaXMgbm90IGZyb20gVXNlciB0byBCaXRnbycpO1xuICB9XG4gIGxldCBzaWduYXR1cmVTaGFyZTogU2lnbmF0dXJlU2hhcmVSZWNvcmQ7XG4gIGxldCByZXNwb25zZUZyb21CaXRnbzogU2VuZFNoYXJlVG9CaXRnb1JUO1xuXG4gIHN3aXRjaCAoc2hhcmVUeXBlKSB7XG4gICAgY2FzZSBTZW5kU2hhcmVUeXBlLktTaGFyZTpcbiAgICAgIGFzc2VydChzaWduZXJTaGFyZSwgYHNpZ25lciBzaGFyZSBtdXN0IGJlIHByZXNlbnRgKTtcbiAgICAgIGNvbnN0IGtTaGFyZSA9IHNoYXJlIGFzIEtTaGFyZTtcbiAgICAgIHNpZ25hdHVyZVNoYXJlID0gY29udmVydEtTaGFyZShrU2hhcmUpO1xuICAgICAgYXdhaXQgc2VuZFNpZ25hdHVyZVNoYXJlKGJpdGdvLCB3YWxsZXRJZCwgdHhSZXF1ZXN0SWQsIHNpZ25hdHVyZVNoYXJlLCBzaWduZXJTaGFyZSwgJ2VjZHNhJyk7XG4gICAgICByZXNwb25zZUZyb21CaXRnbyA9IGF3YWl0IGdldEJpdGdvVG9Vc2VyTGF0ZXN0U2hhcmUoYml0Z28sIHdhbGxldElkLCB0eFJlcXVlc3RJZCwgUmVjZWl2ZWRTaGFyZVR5cGUuQVNoYXJlKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgU2VuZFNoYXJlVHlwZS5NVVNoYXJlOlxuICAgICAgY29uc3Qgc2hhcmVUb1NlbmQgPSBzaGFyZSBhcyBNdURTaGFyZTtcbiAgICAgIGNvbnN0IG11U2hhcmVSZWNvcmQgPSBjb252ZXJ0TXVTaGFyZShzaGFyZVRvU2VuZC5tdVNoYXJlKTtcbiAgICAgIGNvbnN0IGRTaGFyZVJlY29yZCA9IGNvbnZlcnREU2hhcmUoc2hhcmVUb1NlbmQuZFNoYXJlKTtcbiAgICAgIHNpZ25hdHVyZVNoYXJlID0ge1xuICAgICAgICB0bzogU2lnbmF0dXJlU2hhcmVUeXBlLkJJVEdPLFxuICAgICAgICBmcm9tOiBnZXRQYXJ0aWNpcGFudEZyb21JbmRleChzaGFyZVRvU2VuZC5kU2hhcmUuaSksXG4gICAgICAgIHNoYXJlOiBgJHttdVNoYXJlUmVjb3JkLnNoYXJlfSR7c2Vjb25kYXJ5RGVsaW1ldGVyfSR7ZFNoYXJlUmVjb3JkLnNoYXJlfWAsXG4gICAgICB9O1xuICAgICAgYXdhaXQgc2VuZFNpZ25hdHVyZVNoYXJlKGJpdGdvLCB3YWxsZXRJZCwgdHhSZXF1ZXN0SWQsIHNpZ25hdHVyZVNoYXJlLCBzaWduZXJTaGFyZSwgJ2VjZHNhJyk7XG4gICAgICByZXNwb25zZUZyb21CaXRnbyA9IGF3YWl0IGdldEJpdGdvVG9Vc2VyTGF0ZXN0U2hhcmUoYml0Z28sIHdhbGxldElkLCB0eFJlcXVlc3RJZCwgUmVjZWl2ZWRTaGFyZVR5cGUuRFNoYXJlKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgU2VuZFNoYXJlVHlwZS5TU2hhcmU6XG4gICAgICBjb25zdCBzU2hhcmUgPSBzaGFyZSBhcyBTU2hhcmU7XG4gICAgICBzaWduYXR1cmVTaGFyZSA9IGNvbnZlcnRTaWduYXR1cmVTaGFyZShzU2hhcmUsIHNoYXJlLmkpO1xuICAgICAgYXdhaXQgc2VuZFNpZ25hdHVyZVNoYXJlKGJpdGdvLCB3YWxsZXRJZCwgdHhSZXF1ZXN0SWQsIHNpZ25hdHVyZVNoYXJlLCBzaWduZXJTaGFyZSwgJ2VjZHNhJyk7XG4gICAgICByZXNwb25zZUZyb21CaXRnbyA9IHNTaGFyZTtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgU2hhcmUgZ2l2ZW4gdG8gc2VuZCcpO1xuICB9XG5cbiAgcmV0dXJuIHJlc3BvbnNlRnJvbUJpdGdvO1xufVxuXG4vKipcbiAqIEdldHMgdGhlIGxhdGVzdCB1c2VyJ3Mgc2hhcmUgZnJvbSBiaXRnbyBuZWVkZWQgdG8gY29udGludWUgc2lnbmluZyBmbG93XG4gKiBAcGFyYW0ge0JpdEdvQmFzZX0gYml0Z28gLSB0aGUgYml0Z28gaW5zdGFuY2VcbiAqIEBwYXJhbSB7U3RyaW5nfSB3YWxsZXRJZCAtIHRoZSB3YWxsZXQgaWQgICpcbiAqIEBwYXJhbSB7U3RyaW5nfSB0eFJlcXVlc3RJZCAtIHRoZSB0eFJlcXVlc3QgSWRcbiAqIEBwYXJhbSB7UmVjZWl2ZWRTaGFyZVR5cGV9IHNoYXJlVHlwZSAtIHRoZSBleGNwZWN0ZWQgc2hhcmUgdHlwZVxuICogQHJldHVybnMge1Byb21pc2U8U2VuZFNoYXJlVG9CaXRnb1JUPn0gLSBzaGFyZSBmcm9tIGJpdGdvIHRvIHVzZXJcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEJpdGdvVG9Vc2VyTGF0ZXN0U2hhcmUoXG4gIGJpdGdvOiBCaXRHb0Jhc2UsXG4gIHdhbGxldElkOiBzdHJpbmcsXG4gIHR4UmVxdWVzdElkOiBzdHJpbmcsXG4gIHNoYXJlVHlwZTogUmVjZWl2ZWRTaGFyZVR5cGVcbik6IFByb21pc2U8U2VuZFNoYXJlVG9CaXRnb1JUPiB7XG4gIGxldCByZXNwb25zZUZyb21CaXRnbzogU2VuZFNoYXJlVG9CaXRnb1JUO1xuICBjb25zdCB0eFJlcXVlc3QgPSBhd2FpdCBnZXRUeFJlcXVlc3QoYml0Z28sIHdhbGxldElkLCB0eFJlcXVlc3RJZCk7XG4gIGNvbnN0IHVzZXJTaGFyZXMgPSB0eFJlcXVlc3QudHJhbnNhY3Rpb25zWzBdLnNpZ25hdHVyZVNoYXJlcztcbiAgaWYgKCF1c2VyU2hhcmVzIHx8ICF1c2VyU2hhcmVzLmxlbmd0aCkge1xuICAgIHRocm93IG5ldyBFcnJvcigndXNlciBzaGFyZSBpcyBub3QgcHJlc2VudCcpO1xuICB9XG5cbiAgY29uc3Qgc2hhcmVSZWNvcmQgPSB1c2VyU2hhcmVzW3VzZXJTaGFyZXMubGVuZ3RoIC0gMV07XG4gIHN3aXRjaCAoc2hhcmVUeXBlKSB7XG4gICAgY2FzZSBSZWNlaXZlZFNoYXJlVHlwZS5BU2hhcmU6XG4gICAgICByZXNwb25zZUZyb21CaXRnbyA9IHBhcnNlQVNoYXJlKHNoYXJlUmVjb3JkKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgUmVjZWl2ZWRTaGFyZVR5cGUuRFNoYXJlOlxuICAgICAgcmVzcG9uc2VGcm9tQml0Z28gPSBwYXJzZURTaGFyZShzaGFyZVJlY29yZCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFJlY2VpdmVkU2hhcmVUeXBlLlNpZ25hdHVyZTpcbiAgICAgIHJlc3BvbnNlRnJvbUJpdGdvID0gcGFyc2VTaWduYXR1cmVTaGFyZShzaGFyZVJlY29yZCk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHNoYXJlIHJlY2VpdmVkJyk7XG4gIH1cblxuICByZXR1cm4gcmVzcG9uc2VGcm9tQml0Z287XG59XG5cbi8qKlxuICogUHJlcGFyZXMgYSBOU2hhcmUgdG8gYmUgZXhjaGFuZ2VkIHdpdGggb3RoZXIga2V5IGhvbGRlcnMuXG4gKiBPdXRwdXQgaXMgaW4gYSBmb3JtYXQgdGhhdCBpcyB1c2FibGUgd2l0aGluIEJpdEdvJ3MgZWNvc3lzdGVtLlxuICpcbiAqIEBwYXJhbSBrZXlTaGFyZSAtIFRTUyBrZXkgc2hhcmUgb2YgdGhlIHBhcnR5IHByZXBhcmluZyBleGNoYW5nZSBtYXRlcmlhbHNcbiAqIEBwYXJhbSByZWNpcGllbnRJbmRleCAtIGluZGV4IG9mIHRoZSByZWNpcGllbnQgKDEsIDIsIG9yIDMpXG4gKiBAcGFyYW0gcmVjaXBpZW50R3BnUHVibGljQXJtb3IgLSByZWNpcGllbnQncyBwdWJsaWMgZ3BnIGtleSBpbiBhcm1vciBmb3JtYXRcbiAqIEBwYXJhbSBzZW5kZXJHcGdQcml2YXRlQXJtb3IgLSBzZW5kZXIncyBwcml2YXRlIGdwZyBrZXkgaW4gYXJtb3IgZm9ybWF0XG4gKiBAcmV0dXJucyBlbmNyeXB0ZWQgTiBTaGFyZVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZW5jcnlwdE5TaGFyZShcbiAga2V5U2hhcmU6IEtleVNoYXJlLFxuICByZWNpcGllbnRJbmRleDogbnVtYmVyLFxuICByZWNpcGllbnRHcGdQdWJsaWNBcm1vcjogc3RyaW5nLFxuICBzZW5kZXJHcGdQcml2YXRlQXJtb3I6IHN0cmluZ1xuKTogUHJvbWlzZTxFbmNyeXB0ZWROU2hhcmU+IHtcbiAgY29uc3QgblNoYXJlID0ga2V5U2hhcmUublNoYXJlc1tyZWNpcGllbnRJbmRleF07XG4gIGlmICghblNoYXJlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHJlY2lwaWVudCcpO1xuICB9XG5cbiAgY29uc3QgcHVibGljU2hhcmUgPSBrZXlTaGFyZS5wU2hhcmUueSArIG5TaGFyZS5jaGFpbmNvZGUgKyBuU2hhcmUubjtcbiAgY29uc3QgcHJpdmF0ZVNoYXJlID0gblNoYXJlLnU7XG5cbiAgY29uc3QgZW5jcnlwdGVkUHJpdmF0ZVNoYXJlID0gYXdhaXQgZW5jcnlwdEFuZFNpZ25UZXh0KHByaXZhdGVTaGFyZSwgcmVjaXBpZW50R3BnUHVibGljQXJtb3IsIHNlbmRlckdwZ1ByaXZhdGVBcm1vcik7XG5cbiAgcmV0dXJuIHtcbiAgICBpOiBuU2hhcmUuaSxcbiAgICBqOiBuU2hhcmUuaixcbiAgICBwdWJsaWNTaGFyZSxcbiAgICBlbmNyeXB0ZWRQcml2YXRlU2hhcmUsXG4gIH07XG59XG5cbi8qKlxuICogRGVjcnlwdHMgZW5jcnlwdGVkIG4gc2hhcmVcbiAqIEBwYXJhbSBlbmNyeXB0ZWROU2hhcmUgLSBkZWNyeXB0YWJsZSBuIHNoYXJlIHdpdGggcmVjaXBpZW50IHByaXZhdGUgZ3BnIGtleSBhcm1vciBhbmQgc2VuZGVyIHB1YmxpYyBncGcga2V5XG4gKiBAcmV0dXJucyBOIHNoYXJlXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBkZWNyeXB0TlNoYXJlKGVuY3J5cHRlZE5TaGFyZTogRGVjcnlwdGFibGVOU2hhcmUpOiBQcm9taXNlPE5TaGFyZT4ge1xuICBjb25zdCBwcml2YXRlU2hhcmUgPSBhd2FpdCByZWFkU2lnbmVkTWVzc2FnZShcbiAgICBlbmNyeXB0ZWROU2hhcmUublNoYXJlLmVuY3J5cHRlZFByaXZhdGVTaGFyZSxcbiAgICBlbmNyeXB0ZWROU2hhcmUuc2VuZGVyUHVibGljQXJtb3IsXG4gICAgZW5jcnlwdGVkTlNoYXJlLnJlY2lwaWVudFByaXZhdGVBcm1vclxuICApO1xuXG4gIGNvbnN0IG5TaGFyZTogTlNoYXJlID0ge1xuICAgIGk6IGVuY3J5cHRlZE5TaGFyZS5uU2hhcmUuaSxcbiAgICBqOiBlbmNyeXB0ZWROU2hhcmUublNoYXJlLmosXG4gICAgeTogZW5jcnlwdGVkTlNoYXJlLm5TaGFyZS5wdWJsaWNTaGFyZS5zbGljZSgwLCA2NiksXG4gICAgdTogcHJpdmF0ZVNoYXJlLFxuICAgIG46IGVuY3J5cHRlZE5TaGFyZS5uU2hhcmUucHVibGljU2hhcmUuc2xpY2UoMTMwKSxcbiAgICBjaGFpbmNvZGU6IGVuY3J5cHRlZE5TaGFyZS5uU2hhcmUucHVibGljU2hhcmUuc2xpY2UoNjYsIDEzMCksXG4gIH07XG5cbiAgcmV0dXJuIG5TaGFyZTtcbn1cblxuLyoqXG4gKiBHZXRzIHB1YmxpYyBrZXkgZnJvbSBjb21tb24ga2V5IGNoYWluXG4gKiBAcGFyYW0gY29tbW9uS2V5Q2hhaW4gLSBjb21tb24ga2V5IGNoYWluIG9mIGVjZHNhIHRzc1xuICogQHJldHVybnMgcHVibGljIGtleVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UHVibGljS2V5KGNvbW1vbktleUNoYWluOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gY29tbW9uS2V5Q2hhaW4uc2xpY2UoMCwgNjYpO1xufVxuXG5leHBvcnQgY29uc3QgZGVsaW1ldGVyID0gJzonO1xuZXhwb3J0IGNvbnN0IHNlY29uZGFyeURlbGltZXRlciA9ICctJztcblxuZnVuY3Rpb24gdmFsaWRhdGVTaGFyZXNMZW5ndGgoc2hhcmVzOiBzdHJpbmdbXSwgZXhwZWN0ZWRMZW5ndGg6IG51bWJlciwgc2hhcmVOYW1lOiBzdHJpbmcpIHtcbiAgaWYgKHNoYXJlcy5sZW5ndGggPCBleHBlY3RlZExlbmd0aCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCAke3NoYXJlTmFtZX0gc2hhcmVgKTtcbiAgfVxufVxuXG4vKipcbiAqIHBhcnNlcyBLIHNoYXJlIGZyb20gc2lnbmF0dXJlIHNoYXJlIHJlY29yZFxuICogQHBhcmFtIHNoYXJlIC0gc2lnbmF0dXJlIHNoYXJlIHJlY29yZFxuICogQHJldHVybnMgSyBTaGFyZVxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VLU2hhcmUoc2hhcmU6IFNpZ25hdHVyZVNoYXJlUmVjb3JkKTogS1NoYXJlIHtcbiAgY29uc3Qgc2hhcmVzID0gc2hhcmUuc2hhcmUuc3BsaXQoZGVsaW1ldGVyKTtcblxuICB2YWxpZGF0ZVNoYXJlc0xlbmd0aChzaGFyZXMsIDIsICdLJyk7XG5cbiAgcmV0dXJuIHtcbiAgICBpOiBnZXRQYXJ0aWNpcGFudEluZGV4KHNoYXJlLnRvKSxcbiAgICBqOiBnZXRQYXJ0aWNpcGFudEluZGV4KHNoYXJlLmZyb20pLFxuICAgIGs6IHNoYXJlc1swXSxcbiAgICBuOiBzaGFyZXNbMV0sXG4gIH07XG59XG5cbi8qKlxuICogY29udmVydCBLIHNoYXJlIHRvIHNpZ25hdHVyZSBzaGFyZSByZWNvcmRcbiAqIEBwYXJhbSBzaGFyZSAtIEsgc2hhcmVcbiAqIEByZXR1cm5zIHNpZ25hdHVyZSBzaGFyZSByZWNvcmRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRLU2hhcmUoc2hhcmU6IEtTaGFyZSk6IFNpZ25hdHVyZVNoYXJlUmVjb3JkIHtcbiAgcmV0dXJuIHtcbiAgICB0bzogZ2V0UGFydGljaXBhbnRGcm9tSW5kZXgoc2hhcmUuaSksXG4gICAgZnJvbTogZ2V0UGFydGljaXBhbnRGcm9tSW5kZXgoc2hhcmUuaiksXG4gICAgc2hhcmU6IGAke3NoYXJlLmt9JHtkZWxpbWV0ZXJ9JHtzaGFyZS5ufWAsXG4gIH07XG59XG5cbi8qKlxuICogcGFyc2VzIEEgc2hhcmUgZnJvbSBzaWduYXR1cmUgc2hhcmUgcmVjb3JkXG4gKiBAcGFyYW0gc2hhcmUgLSBzaWduYXR1cmUgc2hhcmUgcmVjb3JkXG4gKiBAcmV0dXJucyBBIFNoYXJlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUFTaGFyZShzaGFyZTogU2lnbmF0dXJlU2hhcmVSZWNvcmQpOiBBU2hhcmUge1xuICBjb25zdCBzaGFyZXMgPSBzaGFyZS5zaGFyZS5zcGxpdChkZWxpbWV0ZXIpO1xuICB2YWxpZGF0ZVNoYXJlc0xlbmd0aChzaGFyZXMsIDQsICdBJyk7XG5cbiAgcmV0dXJuIHtcbiAgICBpOiBnZXRQYXJ0aWNpcGFudEluZGV4KHNoYXJlLnRvKSxcbiAgICBqOiBnZXRQYXJ0aWNpcGFudEluZGV4KHNoYXJlLmZyb20pLFxuICAgIGs6IHNoYXJlc1swXSxcbiAgICBhbHBoYTogc2hhcmVzWzFdLFxuICAgIG11OiBzaGFyZXNbMl0sXG4gICAgbjogc2hhcmVzWzNdLFxuICB9O1xufVxuXG4vKipcbiAqIGNvbnZlcnQgQSBzaGFyZSB0byBzaWduYXR1cmUgc2hhcmUgcmVjb3JkXG4gKiBAcGFyYW0gc2hhcmUgLSBBIHNoYXJlXG4gKiBAcmV0dXJucyBzaWduYXR1cmUgc2hhcmUgcmVjb3JkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0QVNoYXJlKHNoYXJlOiBBU2hhcmUpOiBTaWduYXR1cmVTaGFyZVJlY29yZCB7XG4gIHJldHVybiB7XG4gICAgdG86IGdldFBhcnRpY2lwYW50RnJvbUluZGV4KHNoYXJlLmkpLFxuICAgIGZyb206IGdldFBhcnRpY2lwYW50RnJvbUluZGV4KHNoYXJlLmopLFxuICAgIHNoYXJlOiBgJHtzaGFyZS5rfSR7ZGVsaW1ldGVyfSR7c2hhcmUuYWxwaGF9JHtkZWxpbWV0ZXJ9JHtzaGFyZS5tdX0ke2RlbGltZXRlcn0ke3NoYXJlLm59YCxcbiAgfTtcbn1cblxuLyoqXG4gKiBwYXJzZXMgTXUgc2hhcmUgZnJvbSBzaWduYXR1cmUgc2hhcmUgcmVjb3JkXG4gKiBAcGFyYW0gc2hhcmUgLSBzaWduYXR1cmUgc2hhcmUgcmVjb3JkXG4gKiBAcmV0dXJucyBNdSBTaGFyZVxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VNdVNoYXJlKHNoYXJlOiBTaWduYXR1cmVTaGFyZVJlY29yZCk6IE1VU2hhcmUge1xuICBjb25zdCBzaGFyZXMgPSBzaGFyZS5zaGFyZS5zcGxpdChkZWxpbWV0ZXIpO1xuICB2YWxpZGF0ZVNoYXJlc0xlbmd0aChzaGFyZXMsIDIsICdNdScpO1xuXG4gIHJldHVybiB7XG4gICAgaTogZ2V0UGFydGljaXBhbnRJbmRleChzaGFyZS50byksXG4gICAgajogZ2V0UGFydGljaXBhbnRJbmRleChzaGFyZS5mcm9tKSxcbiAgICBhbHBoYTogc2hhcmVzWzBdLFxuICAgIG11OiBzaGFyZXNbMV0sXG4gIH07XG59XG5cbi8qKlxuICogY29udmVydCBNdSBzaGFyZSB0byBzaWduYXR1cmUgc2hhcmUgcmVjb3JkXG4gKiBAcGFyYW0gc2hhcmUgLSBNdSBzaGFyZVxuICogQHJldHVybnMgc2lnbmF0dXJlIHNoYXJlIHJlY29yZFxuICovXG5leHBvcnQgZnVuY3Rpb24gY29udmVydE11U2hhcmUoc2hhcmU6IE1VU2hhcmUpOiBTaWduYXR1cmVTaGFyZVJlY29yZCB7XG4gIHJldHVybiB7XG4gICAgdG86IGdldFBhcnRpY2lwYW50RnJvbUluZGV4KHNoYXJlLmkpLFxuICAgIGZyb206IGdldFBhcnRpY2lwYW50RnJvbUluZGV4KHNoYXJlLmopLFxuICAgIHNoYXJlOiBgJHtzaGFyZS5hbHBoYX0ke2RlbGltZXRlcn0ke3NoYXJlLm11fWAsXG4gIH07XG59XG5cbi8qKlxuICogcGFyc2VzIEQgc2hhcmUgZnJvbSBzaWduYXR1cmUgc2hhcmUgcmVjb3JkXG4gKiBAcGFyYW0gc2hhcmUgLSBzaWduYXR1cmUgc2hhcmUgcmVjb3JkXG4gKiBAcmV0dXJucyBEIFNoYXJlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZURTaGFyZShzaGFyZTogU2lnbmF0dXJlU2hhcmVSZWNvcmQpOiBEU2hhcmUge1xuICBjb25zdCBzaGFyZXMgPSBzaGFyZS5zaGFyZS5zcGxpdChkZWxpbWV0ZXIpO1xuICB2YWxpZGF0ZVNoYXJlc0xlbmd0aChzaGFyZXMsIDIsICdEJyk7XG5cbiAgcmV0dXJuIHtcbiAgICBpOiBnZXRQYXJ0aWNpcGFudEluZGV4KHNoYXJlLnRvKSxcbiAgICBqOiBnZXRQYXJ0aWNpcGFudEluZGV4KHNoYXJlLmZyb20pLFxuICAgIGRlbHRhOiBzaGFyZXNbMF0sXG4gICAgR2FtbWE6IHNoYXJlc1sxXSxcbiAgfTtcbn1cblxuLyoqXG4gKiBjb252ZXJ0IEQgc2hhcmUgdG8gc2lnbmF0dXJlIHNoYXJlIHJlY29yZFxuICogQHBhcmFtIHNoYXJlIC0gRCBzaGFyZVxuICogQHJldHVybnMgc2lnbmF0dXJlIHNoYXJlIHJlY29yZFxuICovXG5leHBvcnQgZnVuY3Rpb24gY29udmVydERTaGFyZShzaGFyZTogRFNoYXJlKTogU2lnbmF0dXJlU2hhcmVSZWNvcmQge1xuICByZXR1cm4ge1xuICAgIHRvOiBnZXRQYXJ0aWNpcGFudEZyb21JbmRleChzaGFyZS5pKSxcbiAgICBmcm9tOiBnZXRQYXJ0aWNpcGFudEZyb21JbmRleChzaGFyZS5qKSxcbiAgICBzaGFyZTogYCR7c2hhcmUuZGVsdGF9JHtkZWxpbWV0ZXJ9JHtzaGFyZS5HYW1tYX1gLFxuICB9O1xufVxuXG4vKipcbiAqIHBhcnNlcyBTIGFuZCBEIHNoYXJlIGZyb20gc2lnbmF0dXJlIHNoYXJlIHJlY29yZFxuICogQHBhcmFtIHNoYXJlIC0gc2lnbmF0dXJlIHNoYXJlIHJlY29yZFxuICogQHJldHVybnMgT2JqZWN0IGNvbnRhaW5pbmcgUyBhbmQgRCBTaGFyZVxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VTRFNoYXJlKHNoYXJlOiBTaWduYXR1cmVTaGFyZVJlY29yZCk6IHsgc1NoYXJlOiBTaWduYXR1cmVTaGFyZTsgZFNoYXJlOiBEU2hhcmUgfSB7XG4gIGNvbnN0IHNoYXJlcyA9IHNoYXJlLnNoYXJlLnNwbGl0KHNlY29uZGFyeURlbGltZXRlcik7XG4gIHZhbGlkYXRlU2hhcmVzTGVuZ3RoKHNoYXJlcywgMiwgJ1NEJyk7XG5cbiAgcmV0dXJuIHtcbiAgICBzU2hhcmU6IHBhcnNlU2lnbmF0dXJlU2hhcmUoeyB0bzogc2hhcmUudG8sIGZyb206IHNoYXJlLmZyb20sIHNoYXJlOiBzaGFyZXNbMF0gfSksXG4gICAgZFNoYXJlOiBwYXJzZURTaGFyZSh7IHRvOiBzaGFyZS50bywgZnJvbTogc2hhcmUuZnJvbSwgc2hhcmU6IHNoYXJlc1sxXSB9KSxcbiAgfTtcbn1cblxuLyoqXG4gKiBjb252ZXJ0IFMgYW5kIEQgc2hhcmUgdG8gc2lnbmF0dXJlIHNoYXJlIHJlY29yZFxuICogQHBhcmFtIHNoYXJlIC0gUyBhbmQgRCBzaGFyZSBpbiBhIG9iamVjdFxuICogQHJldHVybnMgc2lnbmF0dXJlIHNoYXJlIHJlY29yZFxuICovXG5leHBvcnQgZnVuY3Rpb24gY29udmVydFNEU2hhcmUoc2hhcmU6IHsgc1NoYXJlOiBTU2hhcmU7IGRTaGFyZTogRFNoYXJlIH0pOiBTaWduYXR1cmVTaGFyZVJlY29yZCB7XG4gIHJldHVybiB7XG4gICAgdG86IGdldFBhcnRpY2lwYW50RnJvbUluZGV4KHNoYXJlLmRTaGFyZS5pKSxcbiAgICBmcm9tOiBnZXRQYXJ0aWNpcGFudEZyb21JbmRleChzaGFyZS5kU2hhcmUuaiksXG4gICAgc2hhcmU6IGAke3NoYXJlLnNTaGFyZS5SfSR7ZGVsaW1ldGVyfSR7c2hhcmUuc1NoYXJlLnN9JHtkZWxpbWV0ZXJ9JHtzaGFyZS5zU2hhcmUueX0ke3NlY29uZGFyeURlbGltZXRlcn0ke3NoYXJlLmRTaGFyZS5kZWx0YX0ke2RlbGltZXRlcn0ke3NoYXJlLmRTaGFyZS5HYW1tYX1gLFxuICB9O1xufVxuXG4vKipcbiAqIHBhcnNlcyBzaWduYXR1cmUgc2hhcmUgZnJvbSBzaWduYXR1cmUgc2hhcmUgcmVjb3JkXG4gKiBAcGFyYW0gc2hhcmUgLSBzaWduYXR1cmUgc2hhcmUgcmVjb3JkXG4gKiBAcmV0dXJucyBTaWduYXR1cmUgU2hhcmVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlU2lnbmF0dXJlU2hhcmUoc2hhcmU6IFNpZ25hdHVyZVNoYXJlUmVjb3JkKTogU2lnbmF0dXJlU2hhcmUge1xuICBjb25zdCBzaGFyZXMgPSBzaGFyZS5zaGFyZS5zcGxpdChkZWxpbWV0ZXIpO1xuICB2YWxpZGF0ZVNoYXJlc0xlbmd0aChzaGFyZXMsIDMsICdTaWduYXR1cmUnKTtcblxuICByZXR1cm4ge1xuICAgIGk6IGdldFBhcnRpY2lwYW50SW5kZXgoc2hhcmUudG8pLFxuICAgIFI6IHNoYXJlc1swXSxcbiAgICBzOiBzaGFyZXNbMV0sXG4gICAgeTogc2hhcmVzWzJdLFxuICB9O1xufVxuXG4vKipcbiAqIGNvbnZldHMgY29tYmluZWQgc2lnbmF0dXJlIHRvIHNpZ25hdHVyZSBzaGFyZSByZWNvcmRcbiAqIEBwYXJhbSBzaWduYXR1cmUgLSBjb21iaW5lZCBzaWduYXR1cmUgc2hhcmVcbiAqIEBwYXJhbSB1c2VySW5kZXggLSB1c2VyIGluZGV4LCBlaXRoZXIgMSAodXNlcikgb3IgMiAoYmFja3VwKVxuICogQHJldHVybnMgc2lnbmF0dXJlIHNoYXJlIHJlY29yZFxuICovXG5leHBvcnQgZnVuY3Rpb24gY29udmVydENvbWJpbmVkU2lnbmF0dXJlKHNpZ25hdHVyZTogU2lnbmF0dXJlLCB1c2VySW5kZXg6IG51bWJlcik6IFNpZ25hdHVyZVNoYXJlUmVjb3JkIHtcbiAgcmV0dXJuIHtcbiAgICB0bzogU2lnbmF0dXJlU2hhcmVUeXBlLkJJVEdPLFxuICAgIGZyb206IGdldFBhcnRpY2lwYW50RnJvbUluZGV4KHVzZXJJbmRleCksXG4gICAgc2hhcmU6IGAke3NpZ25hdHVyZS5yZWNpZH0ke2RlbGltZXRlcn0ke3NpZ25hdHVyZS5yfSR7ZGVsaW1ldGVyfSR7c2lnbmF0dXJlLnN9JHtkZWxpbWV0ZXJ9JHtzaWduYXR1cmUueX1gLFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VDb21iaW5lZFNpZ25hdHVyZShzaGFyZTogU2lnbmF0dXJlU2hhcmVSZWNvcmQpOiBTaWduYXR1cmUge1xuICBjb25zdCBzaGFyZXMgPSBzaGFyZS5zaGFyZS5zcGxpdChkZWxpbWV0ZXIpO1xuICB2YWxpZGF0ZVNoYXJlc0xlbmd0aChzaGFyZXMsIDMsICdTaWduYXR1cmUnKTtcblxuICByZXR1cm4ge1xuICAgIHJlY2lkOiBOdW1iZXIoc2hhcmVzWzBdKSxcbiAgICByOiBzaGFyZXNbMV0sXG4gICAgczogc2hhcmVzWzJdLFxuICAgIHk6IHNoYXJlc1szXSxcbiAgfTtcbn1cblxuLyoqXG4gKiBjb252ZXJ0IHNpZ25hdHVyZSBzaGFyZSB0byBzaWduYXR1cmUgc2hhcmUgcmVjb3JkXG4gKiBAcGFyYW0gc2hhcmUgLSBTaWduYXR1cmUgc2hhcmVcbiAqIEByZXR1cm5zIHNpZ25hdHVyZSBzaGFyZSByZWNvcmRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRTaWduYXR1cmVTaGFyZShzaGFyZTogU2lnbmF0dXJlU2hhcmUsIHNlbmRlckluZGV4OiBudW1iZXIpOiBTaWduYXR1cmVTaGFyZVJlY29yZCB7XG4gIHJldHVybiB7XG4gICAgdG86IGdldFBhcnRpY2lwYW50RnJvbUluZGV4KHNoYXJlLmkpLFxuICAgIGZyb206IGdldFBhcnRpY2lwYW50RnJvbUluZGV4KHNlbmRlckluZGV4KSxcbiAgICBzaGFyZTogYCR7c2hhcmUuUn0ke2RlbGltZXRlcn0ke3NoYXJlLnN9JHtkZWxpbWV0ZXJ9JHtzaGFyZS55fWAsXG4gIH07XG59XG5cbi8qKlxuICogY29udmVydHMgQiBzaGFyZSB0byBzaWduYXR1cmUgc2hhcmUgcmVjb3JkXG4gKiBAcGFyYW0gc2hhcmUgLSBCIHNoYXJlXG4gKiBAcmV0dXJucyBzaWduYXR1cmUgc2hhcmUgcmVjb3JkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0QlNoYXJlKHNoYXJlOiBCU2hhcmUpOiBTaWduYXR1cmVTaGFyZVJlY29yZCB7XG4gIHJldHVybiB7XG4gICAgdG86IFNpZ25hdHVyZVNoYXJlVHlwZS5CSVRHTyxcbiAgICBmcm9tOiBnZXRQYXJ0aWNpcGFudEZyb21JbmRleChzaGFyZS5pKSxcbiAgICBzaGFyZTogYCR7c2hhcmUuYmV0YX0ke2RlbGltZXRlcn0ke3NoYXJlLmdhbW1hfSR7ZGVsaW1ldGVyfSR7c2hhcmUua30ke2RlbGltZXRlcn0ke3NoYXJlLm51fSR7ZGVsaW1ldGVyfSR7c2hhcmUud30ke2RlbGltZXRlcn0ke3NoYXJlLnl9JHtkZWxpbWV0ZXJ9JHtzaGFyZS5sfSR7ZGVsaW1ldGVyfSR7c2hhcmUubX0ke2RlbGltZXRlcn0ke3NoYXJlLm59YCxcbiAgfTtcbn1cblxuLyoqXG4gKiBwYXJzZXMgQiBzaGFyZSBmcm9tIHNpZ25hdHVyZSBzaGFyZSByZWNvcmRcbiAqIEBwYXJhbSBzaGFyZSBCIHNoYXJlIHJlY29yZFxuICogQHJldHVybnMgQiBTaGFyZVxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VCU2hhcmUoc2hhcmU6IFNpZ25hdHVyZVNoYXJlUmVjb3JkKTogQlNoYXJlIHtcbiAgY29uc3Qgc2hhcmVzID0gc2hhcmUuc2hhcmUuc3BsaXQoZGVsaW1ldGVyKTtcbiAgdmFsaWRhdGVTaGFyZXNMZW5ndGgoc2hhcmVzLCA5LCAnQicpO1xuXG4gIHJldHVybiB7XG4gICAgaTogZ2V0UGFydGljaXBhbnRJbmRleChzaGFyZS50byksXG4gICAgYmV0YTogc2hhcmVzWzBdLFxuICAgIGdhbW1hOiBzaGFyZXNbMV0sXG4gICAgazogc2hhcmVzWzJdLFxuICAgIG51OiBzaGFyZXNbM10sXG4gICAgdzogc2hhcmVzWzRdLFxuICAgIHk6IHNoYXJlc1s1XSxcbiAgICBsOiBzaGFyZXNbNl0sXG4gICAgbTogc2hhcmVzWzddLFxuICAgIG46IHNoYXJlc1s4XSxcbiAgfTtcbn1cblxuLyoqXG4gKiBjb252ZXJ0cyBPIHNoYXJlIHRvIHNpZ25hdHVyZSBzaGFyZSByZWNvcmRcbiAqIEBwYXJhbSBzaGFyZSBPIHNoYXJlXG4gKiBAcmV0dXJucyBzaWduYXR1cmUgc2hhcmUgcmVjb3JkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0T1NoYXJlKHNoYXJlOiBPU2hhcmUpOiBTaWduYXR1cmVTaGFyZVJlY29yZCB7XG4gIHJldHVybiB7XG4gICAgdG86IFNpZ25hdHVyZVNoYXJlVHlwZS5CSVRHTyxcbiAgICBmcm9tOiBnZXRQYXJ0aWNpcGFudEZyb21JbmRleChzaGFyZS5pKSxcbiAgICBzaGFyZTogYCR7c2hhcmUuR2FtbWF9JHtkZWxpbWV0ZXJ9JHtzaGFyZS5kZWx0YX0ke2RlbGltZXRlcn0ke3NoYXJlLmt9JHtkZWxpbWV0ZXJ9JHtzaGFyZS5vbWljcm9ufSR7ZGVsaW1ldGVyfSR7c2hhcmUueX1gLFxuICB9O1xufVxuXG4vKipcbiAqIHBhcnNlcyBPIHNoYXJlIGZyb20gc2lnbmF0dXJlIHNoYXJlIHJlY29yZFxuICogQHBhcmFtIHNoYXJlIE8gc2hhcmUgcmVjb3JkXG4gKiBAcmV0dXJucyBPIFNoYXJlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZU9TaGFyZShzaGFyZTogU2lnbmF0dXJlU2hhcmVSZWNvcmQpOiBPU2hhcmUge1xuICBjb25zdCBzaGFyZXMgPSBzaGFyZS5zaGFyZS5zcGxpdChkZWxpbWV0ZXIpO1xuICB2YWxpZGF0ZVNoYXJlc0xlbmd0aChzaGFyZXMsIDUsICdPJyk7XG5cbiAgcmV0dXJuIHtcbiAgICBpOiBnZXRQYXJ0aWNpcGFudEluZGV4KHNoYXJlLnRvKSxcbiAgICBHYW1tYTogc2hhcmVzWzBdLFxuICAgIGRlbHRhOiBzaGFyZXNbMV0sXG4gICAgazogc2hhcmVzWzJdLFxuICAgIG9taWNyb246IHNoYXJlc1szXSxcbiAgICB5OiBzaGFyZXNbNF0sXG4gIH07XG59XG5cbi8qKlxuICogZ2V0cyBwYXJ0aWNpcGFudCBpbmRleFxuICogQHBhcmFtIHBhcnRpY2lwYW50IC0gcGFydGljaXBhbnRzICh1c2VyLCBiYWNrdXAsIG9yIGJpdGdvKVxuICogQHJldHVybnMgaW5kZXggKDEsIDIsIDByIDMpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRQYXJ0aWNpcGFudEluZGV4KHBhcnRpY2lwYW50OiAndXNlcicgfCAnYmFja3VwJyB8ICdiaXRnbycpOiBudW1iZXIge1xuICBzd2l0Y2ggKHBhcnRpY2lwYW50KSB7XG4gICAgY2FzZSAndXNlcic6XG4gICAgICByZXR1cm4gMTtcbiAgICBjYXNlICdiYWNrdXAnOlxuICAgICAgcmV0dXJuIDI7XG4gICAgY2FzZSAnYml0Z28nOlxuICAgICAgcmV0dXJuIDM7XG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IEVycm9yKCdVbmtvd24gcGFydGljaXBhbnQnKTtcbiAgfVxufVxuXG4vKipcbiAqIGdldHMgcGFydGljaXBhbnQgbmFtZSBieSBpbmRleFxuICogQHBhcmFtIGluZGV4IHBhcnRpY2lwYW50IGluZGV4XG4gKiBAcmV0dXJucyBwYXJ0aWNpcGFudCBuYW1lXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRQYXJ0aWNpcGFudEZyb21JbmRleChpbmRleDogbnVtYmVyKTogU2lnbmF0dXJlU2hhcmVUeXBlIHtcbiAgc3dpdGNoIChpbmRleCkge1xuICAgIGNhc2UgMTpcbiAgICAgIHJldHVybiBTaWduYXR1cmVTaGFyZVR5cGUuVVNFUjtcbiAgICBjYXNlIDI6XG4gICAgICByZXR1cm4gU2lnbmF0dXJlU2hhcmVUeXBlLkJBQ0tVUDtcbiAgICBjYXNlIDM6XG4gICAgICByZXR1cm4gU2lnbmF0dXJlU2hhcmVUeXBlLkJJVEdPO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gcGFydGljaXBhbnQgaW5kZXggJHtpbmRleH1gKTtcbiAgfVxufVxuIl19
|
|
574
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNkc2EuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYml0Z28vdHNzL2VjZHNhL2VjZHNhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLHdEQUF1RDtBQUN2RCxtQ0F1QmlCO0FBQ2pCLHlDQU11QjtBQUN2QixvQ0FBNEM7QUFHNUMsc0NBQTZEO0FBQzdELG9EQUFzQztBQUN0QyxvREFBNEI7QUFFNUIsTUFBTSxHQUFHLEdBQUcsSUFBSSxXQUFLLEVBQUUsQ0FBQztBQUV4Qjs7Ozs7Ozs7R0FRRztBQUNJLEtBQUssVUFBVSxpQkFBaUIsQ0FDckMsUUFBa0IsRUFDbEIsZ0JBQXFDLEVBQ3JDLGNBQXNCO0lBRXRCLE1BQU0sT0FBTyxHQUFhLEVBQUUsQ0FBQztJQUU3QixJQUFJLFdBQStCLENBQUM7SUFDcEMsSUFBSSxVQUE4QixDQUFDO0lBQ25DLElBQUksWUFBZ0MsQ0FBQztJQUVyQyxLQUFLLE1BQU0sZUFBZSxJQUFJLGdCQUFnQixFQUFFO1FBQzlDLE1BQU0sTUFBTSxHQUFHLE1BQU0sYUFBYSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBRXBELFFBQVEsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUU7WUFDaEMsS0FBSyxDQUFDO2dCQUNKLFVBQVUsR0FBRyxNQUFNLENBQUM7Z0JBQ3BCLE1BQU07WUFDUixLQUFLLENBQUM7Z0JBQ0osWUFBWSxHQUFHLE1BQU0sQ0FBQztnQkFDdEIsTUFBTTtZQUNSLEtBQUssQ0FBQztnQkFDSixXQUFXLEdBQUcsTUFBTSxDQUFDO2dCQUNyQixNQUFNO1lBQ1I7Z0JBQ0UsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1NBQzNDO1FBRUQsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztLQUN0QjtJQUVELElBQUksQ0FBQyxXQUFXLEVBQUU7UUFDaEIsTUFBTSxJQUFJLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0tB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LENBQUM7WUFDSixPQUFPLDBCQUFrQixDQUFDLE1BQU0sQ0FBQztRQUNuQyxLQUFLLENBQUM7WUFDSixPQUFPLDBCQUFrQixDQUFDLEtBQUssQ0FBQztRQUNsQztZQUNFLE1BQU0sSUFBSSxLQUFLLENBQUMsNkJBQTZCLEtBQUssRUFBRSxDQUFDLENBQUM7S0FDekQ7QUFDSCxDQUFDO0FBWEQsMERBV0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFY2RzYSB9IGZyb20gJy4vLi4vLi4vLi4vYWNjb3VudC1saWIvbXBjL3Rzcyc7XG5pbXBvcnQge1xuICBEZWNyeXB0YWJsZU5TaGFyZSxcbiAgQ29tYmluZWRLZXksXG4gIFNpZ25pbmdNYXRlcmlhbCxcbiAgRW5jcnlwdGVkTlNoYXJlLFxuICBBU2hhcmUsXG4gIENyZWF0ZVVzZXJHYW1tYUFuZE11U2hhcmVSVCxcbiAgQ3JlYXRlVXNlck9taWNyb25BbmREZWx0YVNoYXJlUlQsXG4gIERTaGFyZSxcbiAgR1NoYXJlLFxuICBLZXlTaGFyZSxcbiAgTlNoYXJlLFxuICBPU2hhcmUsXG4gIFNlbmRTaGFyZVR5cGUsXG4gIFNpZ25hdHVyZVNoYXJlLFxuICBTaWduU2hhcmUsXG4gIFdTaGFyZSxcbiAgWFNoYXJlLFxuICBZU2hhcmUsXG4gIFNlbmRTaGFyZVRvQml0Z29SVCxcbiAgUmVjZWl2ZWRTaGFyZVR5cGUsXG4gIEJTaGFyZSxcbiAgU2lnbmF0dXJlLFxufSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7XG4gIGVuY3J5cHRBbmRTaWduVGV4dCxcbiAgcmVhZFNpZ25lZE1lc3NhZ2UsXG4gIFNpZ25hdHVyZVNoYXJlUmVjb3JkLFxuICBTaWduYXR1cmVTaGFyZVR5cGUsXG4gIFJlcXVlc3RUeXBlLFxufSBmcm9tICcuLy4uLy4uL3V0aWxzJztcbmltcG9ydCB7IFNoYXJlS2V5UG9zaXRpb24gfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBCaXRHb0Jhc2UgfSBmcm9tICcuLi8uLi9iaXRnb0Jhc2UnO1xuaW1wb3J0IHsgS1NoYXJlLCBNVVNoYXJlLCBTU2hhcmUgfSBmcm9tICcuLi8uLi8uLi9hY2NvdW50LWxpYi9tcGMvdHNzL2VjZHNhL3R5cGVzJztcbmltcG9ydCB7IGdldFR4UmVxdWVzdCwgc2VuZFNpZ25hdHVyZVNoYXJlIH0gZnJvbSAnLi4vY29tbW9uJztcbmltcG9ydCBjcmVhdGVLZWNjYWtIYXNoIGZyb20gJ2tlY2Nhayc7XG5pbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5cbmNvbnN0IE1QQyA9IG5ldyBFY2RzYSgpO1xuXG4vKipcbiAqIENvbWJpbmVzIE5TaGFyZXMgdG8gY29tYmluZSB0aGUgZmluYWwgVFNTIGtleVxuICogVGhpcyBjYW4gb25seSBiZSB1c2VkIHRvIGNyZWF0ZSB0aGUgVXNlciBvciBCYWNrdXAga2V5IHNpbmNlIGl0IHJlcXVpcmVzIHRoZSBjb21tb24ga2V5Y2hhaW4gZnJvbSBCaXRHbyBmaXJzdFxuICpcbiAqIEBwYXJhbSBrZXlTaGFyZSAtIFRTUyBrZXkgc2hhcmVcbiAqIEBwYXJhbSBlbmNyeXB0ZWROU2hhcmVzIC0gZW5jcnlwdGVkIE5TaGFyZXMgd2l0aCBpbmZvcm1hdGlvbiBvbiBob3cgdG8gZGVjcnlwdFxuICogQHBhcmFtIGNvbW1vbktleWNoYWluIC0gZXhwZWN0ZWQgY29tbW9uIGtleWNoYWluIG9mIHRoZSBjb21iaW5lZCBrZXlcbiAqIEByZXR1cm5zIHtDb21iaW5lZEtleX0gY29tYmluZWQgVFNTIGtleVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlQ29tYmluZWRLZXkoXG4gIGtleVNoYXJlOiBLZXlTaGFyZSxcbiAgZW5jcnlwdGVkTlNoYXJlczogRGVjcnlwdGFibGVOU2hhcmVbXSxcbiAgY29tbW9uS2V5Y2hhaW46IHN0cmluZ1xuKTogUHJvbWlzZTxDb21iaW5lZEtleT4ge1xuICBjb25zdCBuU2hhcmVzOiBOU2hhcmVbXSA9IFtdO1xuXG4gIGxldCBiaXRnb05TaGFyZTogTlNoYXJlIHwgdW5kZWZpbmVkO1xuICBsZXQgdXNlck5TaGFyZTogTlNoYXJlIHwgdW5kZWZpbmVkO1xuICBsZXQgYmFja3VwTlNoYXJlOiBOU2hhcmUgfCB1bmRlZmluZWQ7XG5cbiAgZm9yIChjb25zdCBlbmNyeXB0ZWROU2hhcmUgb2YgZW5jcnlwdGVkTlNoYXJlcykge1xuICAgIGNvbnN0IG5TaGFyZSA9IGF3YWl0IGRlY3J5cHROU2hhcmUoZW5jcnlwdGVkTlNoYXJlKTtcblxuICAgIHN3aXRjaCAoZW5jcnlwdGVkTlNoYXJlLm5TaGFyZS5qKSB7XG4gICAgICBjYXNlIDE6XG4gICAgICAgIHVzZXJOU2hhcmUgPSBuU2hhcmU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyOlxuICAgICAgICBiYWNrdXBOU2hhcmUgPSBuU2hhcmU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAzOlxuICAgICAgICBiaXRnb05TaGFyZSA9IG5TaGFyZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgTlNoYXJlIGluZGV4Jyk7XG4gICAgfVxuXG4gICAgblNoYXJlcy5wdXNoKG5TaGFyZSk7XG4gIH1cblxuICBpZiAoIWJpdGdvTlNoYXJlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIEJpdEdvIE4gU2hhcmUnKTtcbiAgfVxuXG4gIGNvbnN0IGNvbWJpbmVkS2V5ID0gTVBDLmtleUNvbWJpbmUoa2V5U2hhcmUucFNoYXJlLCBuU2hhcmVzKTtcbiAgaWYgKGNvbWJpbmVkS2V5LnhTaGFyZS55ICsgY29tYmluZWRLZXkueFNoYXJlLmNoYWluY29kZSAhPT0gY29tbW9uS2V5Y2hhaW4pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvbW1vbiBrZXljaGFpbnMgZG8gbm90IG1hdGNoJyk7XG4gIH1cblxuICBjb25zdCBzaWduaW5nTWF0ZXJpYWw6IFNpZ25pbmdNYXRlcmlhbCA9IHtcbiAgICBwU2hhcmU6IGtleVNoYXJlLnBTaGFyZSxcbiAgICBiaXRnb05TaGFyZSxcbiAgICBiYWNrdXBOU2hhcmUsXG4gICAgdXNlck5TaGFyZSxcbiAgfTtcblxuICByZXR1cm4ge1xuICAgIHNpZ25pbmdNYXRlcmlhbCxcbiAgICBjb21tb25LZXljaGFpbixcbiAgfTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIHRoZSBTaWduU2hhcmUgd2l0aCBVc2VyIFhTaGFyZSBhbmQgWVNoYXJlIENvcnJlc3BvbmRpbmcgdG8gQml0R29cbiAqIEBwYXJhbSB7WFNoYXJlfSB4U2hhcmUgVXNlciBzZWNyZXQgeFNoYXJlXG4gKiBAcGFyYW0ge1lTaGFyZX0geVNoYXJlIFlTaGFyZSBmcm9tIEJpdGdvXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxTaWduU2hhcmU+fVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlVXNlclNpZ25TaGFyZSh4U2hhcmU6IFhTaGFyZSwgeVNoYXJlOiBZU2hhcmUpOiBQcm9taXNlPFNpZ25TaGFyZT4ge1xuICBpZiAoeFNoYXJlLmkgIT09IFNoYXJlS2V5UG9zaXRpb24uVVNFUikge1xuICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBYU2hhcmUsIFhTaGFyZSBkb2Vzbid0IGJlbG9uZyB0byB0aGUgVXNlcmApO1xuICB9XG5cbiAgaWYgKHlTaGFyZS5pICE9PSBTaGFyZUtleVBvc2l0aW9uLlVTRVIgfHwgeVNoYXJlLmogIT09IFNoYXJlS2V5UG9zaXRpb24uQklUR08pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgWVNoYXJlIHByb3ZpZGVkIGZvciBzaWduJyk7XG4gIH1cbiAgcmV0dXJuIE1QQy5zaWduU2hhcmUoeFNoYXJlLCB5U2hhcmUpO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgdGhlIEdhbW1hIFNoYXJlIGFuZCBNdVNoYXJlIHdpdGggVXNlciBXU2hhcmUgYW5kIEFTaGFyZSBGcm9tIEJpdEdvXG4gKiBAcGFyYW0ge1dTaGFyZX0gd1NoYXJlIFVzZXIgV1NoYXJlXG4gKiBAcGFyYW0ge0FTaGFyZX0gYVNoYXJlIEFTaGFyZSBmcm9tIEJpdGdvXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxDcmVhdGVVc2VyR2FtbWFBbmRNdVNoYXJlUlQ+fVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlVXNlckdhbW1hQW5kTXVTaGFyZSh3U2hhcmU6IFdTaGFyZSwgYVNoYXJlOiBBU2hhcmUpOiBQcm9taXNlPENyZWF0ZVVzZXJHYW1tYUFuZE11U2hhcmVSVD4ge1xuICBpZiAod1NoYXJlLmkgIT09IFNoYXJlS2V5UG9zaXRpb24uVVNFUikge1xuICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBXU2hhcmUsIGRvZXNuJ3QgYmVsb25nIHRvIHRoZSBVc2VyYCk7XG4gIH1cbiAgaWYgKGFTaGFyZS5pICE9PSBTaGFyZUtleVBvc2l0aW9uLlVTRVIgfHwgYVNoYXJlLmogIT09IFNoYXJlS2V5UG9zaXRpb24uQklUR08pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgQVNoYXJlLCBpcyBub3QgZnJvbSBCaXRnbyB0byBVc2VyJyk7XG4gIH1cblxuICByZXR1cm4gTVBDLnNpZ25Db252ZXJ0KHsgd1NoYXJlLCBhU2hhcmUgfSk7XG59XG5cbi8qKlxuICogQ3JlYXRlcyB0aGUgT21pY3JvbiBTaGFyZSBhbmQgRGVsdGEgc2hhcmUgd2l0aCB1c2VyIEdTaGFyZVxuICogQHBhcmFtIHtHU2hhcmV9IGdTaGFyZSBVc2VyIEdTaGFyZVxuICogQHJldHVybnMge1Byb21pc2U8Q3JlYXRlVXNlck9taWNyb25BbmREZWx0YVNoYXJlUlQ+fVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlVXNlck9taWNyb25BbmREZWx0YVNoYXJlKGdTaGFyZTogR1NoYXJlKTogUHJvbWlzZTxDcmVhdGVVc2VyT21pY3JvbkFuZERlbHRhU2hhcmVSVD4ge1xuICBpZiAoZ1NoYXJlLmkgIT09IFNoYXJlS2V5UG9zaXRpb24uVVNFUikge1xuICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBHU2hhcmUsIGRvZXNuJ3QgYmVsb25nIHRvIHRoZSBVc2VyYCk7XG4gIH1cbiAgcmV0dXJuIE1QQy5zaWduQ29tYmluZSh7XG4gICAgZ1NoYXJlOiBnU2hhcmUsXG4gICAgc2lnbkluZGV4OiB7XG4gICAgICBpOiBTaGFyZUtleVBvc2l0aW9uLkJJVEdPLFxuICAgICAgajogZ1NoYXJlLmksXG4gICAgfSxcbiAgfSk7XG59XG5cbi8qKlxuICogQ3JlYXRlcyB0aGUgU2lnbmF0dXJlIFNoYXJlIHdpdGggVXNlciBPU2hhcmUgYW5kIERTaGFyZSBGcm9tIEJpdEdvXG4gKiBAcGFyYW0ge09TaGFyZX0gb1NoYXJlIFVzZXIgT1NoYXJlXG4gKiBAcGFyYW0ge0RTaGFyZX0gZFNoYXJlIERTaGFyZSBmcm9tIGJpdGdvXG4gKiBAcGFyYW0ge0J1ZmZlcn0gbWVzc2FnZSBtZXNzYWdlIHRvIHBlcmZvcm0gc2lnblxuICogQHJldHVybnMge1Byb21pc2U8Y3JlYXRlVXNlclNpZ25TaGFyZVJUPn1cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZVVzZXJTaWduYXR1cmVTaGFyZShcbiAgb1NoYXJlOiBPU2hhcmUsXG4gIGRTaGFyZTogRFNoYXJlLFxuICBtZXNzYWdlOiBCdWZmZXJcbik6IFByb21pc2U8U2lnbmF0dXJlU2hhcmU+IHtcbiAgaWYgKG9TaGFyZS5pICE9PSBTaGFyZUtleVBvc2l0aW9uLlVTRVIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgT1NoYXJlLCBkb2Vzbid0IGJlbG9uZyB0byB0aGUgVXNlcmApO1xuICB9XG5cbiAgaWYgKGRTaGFyZS5pICE9PSBTaGFyZUtleVBvc2l0aW9uLlVTRVIgfHwgZFNoYXJlLmogIT09IFNoYXJlS2V5UG9zaXRpb24uQklUR08pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgRFNoYXJlLCBkb2Vzbid0IHNlZW0gdG8gYmUgZnJvbSBCaXRHb2ApO1xuICB9XG4gIHJldHVybiBNUEMuc2lnbihtZXNzYWdlLCBvU2hhcmUsIGRTaGFyZSwgY3JlYXRlS2VjY2FrSGFzaCgna2VjY2FrMjU2JykpO1xufVxuXG5leHBvcnQgdHlwZSBNdURTaGFyZSA9IHsgbXVTaGFyZTogTVVTaGFyZTsgZFNoYXJlOiBEU2hhcmU7IGk6IFNoYXJlS2V5UG9zaXRpb24gfTtcblxuLyoqXG4gKiBTZW5kcyBTaGFyZSBUbyBCaXRnb1xuICogQHBhcmFtIHtCaXRHb0Jhc2V9IGJpdGdvIC0gdGhlIGJpdGdvIGluc3RhbmNlXG4gKiBAcGFyYW0ge1N0cmluZ30gd2FsbGV0SWQgLSB0aGUgd2FsbGV0IGlkICAqXG4gKiBAcGFyYW0ge1N0cmluZ30gdHhSZXF1ZXN0SWQgLSB0aGUgdHhSZXF1ZXN0IElkXG4gKiBAcGFyYW0gcmVxdWVzdFR5cGUgLSB0aGUgdHlwZSBvZiByZXF1ZXN0IGJlaW5nIHN1Ym1pdHRlZCAoZWl0aGVyIHR4IG9yIG1lc3NhZ2UgZm9yIHNpZ25pbmcpXG4gKiBAcGFyYW0gc2hhcmVUeXBlXG4gKiBAcGFyYW0gc2hhcmVcbiAqIEBwYXJhbSBzaWduZXJTaGFyZVxuICogQHJldHVybnMge1Byb21pc2U8U2lnbmF0dXJlU2hhcmVSZWNvcmQ+fSAtIGEgU2lnbmF0dXJlIFNoYXJlXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzZW5kU2hhcmVUb0JpdGdvKFxuICBiaXRnbzogQml0R29CYXNlLFxuICB3YWxsZXRJZDogc3RyaW5nLFxuICB0eFJlcXVlc3RJZDogc3RyaW5nLFxuICByZXF1ZXN0VHlwZTogUmVxdWVzdFR5cGUsXG4gIHNoYXJlVHlwZTogU2VuZFNoYXJlVHlwZSxcbiAgc2hhcmU6IFNTaGFyZSB8IE11RFNoYXJlIHwgS1NoYXJlLFxuICBzaWduZXJTaGFyZT86IHN0cmluZ1xuKTogUHJvbWlzZTxTZW5kU2hhcmVUb0JpdGdvUlQ+IHtcbiAgaWYgKHNoYXJlVHlwZSAhPT0gU2VuZFNoYXJlVHlwZS5TU2hhcmUgJiYgc2hhcmUuaSAhPT0gU2hhcmVLZXlQb3NpdGlvbi5CSVRHTykge1xuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBTaGFyZSwgaXMgbm90IGZyb20gVXNlciB0byBCaXRnbycpO1xuICB9XG4gIGxldCBzaWduYXR1cmVTaGFyZTogU2lnbmF0dXJlU2hhcmVSZWNvcmQ7XG4gIGxldCByZXNwb25zZUZyb21CaXRnbzogU2VuZFNoYXJlVG9CaXRnb1JUO1xuXG4gIHN3aXRjaCAoc2hhcmVUeXBlKSB7XG4gICAgY2FzZSBTZW5kU2hhcmVUeXBlLktTaGFyZTpcbiAgICAgIGFzc2VydChzaWduZXJTaGFyZSwgYHNpZ25lciBzaGFyZSBtdXN0IGJlIHByZXNlbnRgKTtcbiAgICAgIGNvbnN0IGtTaGFyZSA9IHNoYXJlIGFzIEtTaGFyZTtcbiAgICAgIHNpZ25hdHVyZVNoYXJlID0gY29udmVydEtTaGFyZShrU2hhcmUpO1xuICAgICAgYXdhaXQgc2VuZFNpZ25hdHVyZVNoYXJlKGJpdGdvLCB3YWxsZXRJZCwgdHhSZXF1ZXN0SWQsIHNpZ25hdHVyZVNoYXJlLCByZXF1ZXN0VHlwZSwgc2lnbmVyU2hhcmUsICdlY2RzYScpO1xuICAgICAgcmVzcG9uc2VGcm9tQml0Z28gPSBhd2FpdCBnZXRCaXRnb1RvVXNlckxhdGVzdFNoYXJlKGJpdGdvLCB3YWxsZXRJZCwgdHhSZXF1ZXN0SWQsIFJlY2VpdmVkU2hhcmVUeXBlLkFTaGFyZSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFNlbmRTaGFyZVR5cGUuTVVTaGFyZTpcbiAgICAgIGNvbnN0IHNoYXJlVG9TZW5kID0gc2hhcmUgYXMgTXVEU2hhcmU7XG4gICAgICBjb25zdCBtdVNoYXJlUmVjb3JkID0gY29udmVydE11U2hhcmUoc2hhcmVUb1NlbmQubXVTaGFyZSk7XG4gICAgICBjb25zdCBkU2hhcmVSZWNvcmQgPSBjb252ZXJ0RFNoYXJlKHNoYXJlVG9TZW5kLmRTaGFyZSk7XG4gICAgICBzaWduYXR1cmVTaGFyZSA9IHtcbiAgICAgICAgdG86IFNpZ25hdHVyZVNoYXJlVHlwZS5CSVRHTyxcbiAgICAgICAgZnJvbTogZ2V0UGFydGljaXBhbnRGcm9tSW5kZXgoc2hhcmVUb1NlbmQuZFNoYXJlLmkpLFxuICAgICAgICBzaGFyZTogYCR7bXVTaGFyZVJlY29yZC5zaGFyZX0ke3NlY29uZGFyeURlbGltZXRlcn0ke2RTaGFyZVJlY29yZC5zaGFyZX1gLFxuICAgICAgfTtcbiAgICAgIGF3YWl0IHNlbmRTaWduYXR1cmVTaGFyZShiaXRnbywgd2FsbGV0SWQsIHR4UmVxdWVzdElkLCBzaWduYXR1cmVTaGFyZSwgcmVxdWVzdFR5cGUsIHNpZ25lclNoYXJlLCAnZWNkc2EnKTtcbiAgICAgIHJlc3BvbnNlRnJvbUJpdGdvID0gYXdhaXQgZ2V0Qml0Z29Ub1VzZXJMYXRlc3RTaGFyZShiaXRnbywgd2FsbGV0SWQsIHR4UmVxdWVzdElkLCBSZWNlaXZlZFNoYXJlVHlwZS5EU2hhcmUpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBTZW5kU2hhcmVUeXBlLlNTaGFyZTpcbiAgICAgIGNvbnN0IHNTaGFyZSA9IHNoYXJlIGFzIFNTaGFyZTtcbiAgICAgIHNpZ25hdHVyZVNoYXJlID0gY29udmVydFNpZ25hdHVyZVNoYXJlKHNTaGFyZSwgc2hhcmUuaSk7XG4gICAgICBhd2FpdCBzZW5kU2lnbmF0dXJlU2hhcmUoYml0Z28sIHdhbGxldElkLCB0eFJlcXVlc3RJZCwgc2lnbmF0dXJlU2hhcmUsIHJlcXVlc3RUeXBlLCBzaWduZXJTaGFyZSwgJ2VjZHNhJyk7XG4gICAgICByZXNwb25zZUZyb21CaXRnbyA9IHNTaGFyZTtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgU2hhcmUgZ2l2ZW4gdG8gc2VuZCcpO1xuICB9XG5cbiAgcmV0dXJuIHJlc3BvbnNlRnJvbUJpdGdvO1xufVxuXG4vKipcbiAqIEdldHMgdGhlIGxhdGVzdCB1c2VyJ3Mgc2hhcmUgZnJvbSBiaXRnbyBuZWVkZWQgdG8gY29udGludWUgc2lnbmluZyBmbG93XG4gKiBAcGFyYW0ge0JpdEdvQmFzZX0gYml0Z28gLSB0aGUgYml0Z28gaW5zdGFuY2VcbiAqIEBwYXJhbSB7U3RyaW5nfSB3YWxsZXRJZCAtIHRoZSB3YWxsZXQgaWQgICpcbiAqIEBwYXJhbSB7U3RyaW5nfSB0eFJlcXVlc3RJZCAtIHRoZSB0eFJlcXVlc3QgSWRcbiAqIEBwYXJhbSB7UmVjZWl2ZWRTaGFyZVR5cGV9IHNoYXJlVHlwZSAtIHRoZSBleGNwZWN0ZWQgc2hhcmUgdHlwZVxuICogQHJldHVybnMge1Byb21pc2U8U2VuZFNoYXJlVG9CaXRnb1JUPn0gLSBzaGFyZSBmcm9tIGJpdGdvIHRvIHVzZXJcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEJpdGdvVG9Vc2VyTGF0ZXN0U2hhcmUoXG4gIGJpdGdvOiBCaXRHb0Jhc2UsXG4gIHdhbGxldElkOiBzdHJpbmcsXG4gIHR4UmVxdWVzdElkOiBzdHJpbmcsXG4gIHNoYXJlVHlwZTogUmVjZWl2ZWRTaGFyZVR5cGVcbik6IFByb21pc2U8U2VuZFNoYXJlVG9CaXRnb1JUPiB7XG4gIGxldCByZXNwb25zZUZyb21CaXRnbzogU2VuZFNoYXJlVG9CaXRnb1JUO1xuICBjb25zdCB0eFJlcXVlc3QgPSBhd2FpdCBnZXRUeFJlcXVlc3QoYml0Z28sIHdhbGxldElkLCB0eFJlcXVlc3RJZCk7XG4gIGNvbnN0IHVzZXJTaGFyZXMgPSB0eFJlcXVlc3QudHJhbnNhY3Rpb25zWzBdLnNpZ25hdHVyZVNoYXJlcztcbiAgaWYgKCF1c2VyU2hhcmVzIHx8ICF1c2VyU2hhcmVzLmxlbmd0aCkge1xuICAgIHRocm93IG5ldyBFcnJvcigndXNlciBzaGFyZSBpcyBub3QgcHJlc2VudCcpO1xuICB9XG5cbiAgY29uc3Qgc2hhcmVSZWNvcmQgPSB1c2VyU2hhcmVzW3VzZXJTaGFyZXMubGVuZ3RoIC0gMV07XG4gIHN3aXRjaCAoc2hhcmVUeXBlKSB7XG4gICAgY2FzZSBSZWNlaXZlZFNoYXJlVHlwZS5BU2hhcmU6XG4gICAgICByZXNwb25zZUZyb21CaXRnbyA9IHBhcnNlQVNoYXJlKHNoYXJlUmVjb3JkKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgUmVjZWl2ZWRTaGFyZVR5cGUuRFNoYXJlOlxuICAgICAgcmVzcG9uc2VGcm9tQml0Z28gPSBwYXJzZURTaGFyZShzaGFyZVJlY29yZCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFJlY2VpdmVkU2hhcmVUeXBlLlNpZ25hdHVyZTpcbiAgICAgIHJlc3BvbnNlRnJvbUJpdGdvID0gcGFyc2VTaWduYXR1cmVTaGFyZShzaGFyZVJlY29yZCk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHNoYXJlIHJlY2VpdmVkJyk7XG4gIH1cblxuICByZXR1cm4gcmVzcG9uc2VGcm9tQml0Z287XG59XG5cbi8qKlxuICogUHJlcGFyZXMgYSBOU2hhcmUgdG8gYmUgZXhjaGFuZ2VkIHdpdGggb3RoZXIga2V5IGhvbGRlcnMuXG4gKiBPdXRwdXQgaXMgaW4gYSBmb3JtYXQgdGhhdCBpcyB1c2FibGUgd2l0aGluIEJpdEdvJ3MgZWNvc3lzdGVtLlxuICpcbiAqIEBwYXJhbSBrZXlTaGFyZSAtIFRTUyBrZXkgc2hhcmUgb2YgdGhlIHBhcnR5IHByZXBhcmluZyBleGNoYW5nZSBtYXRlcmlhbHNcbiAqIEBwYXJhbSByZWNpcGllbnRJbmRleCAtIGluZGV4IG9mIHRoZSByZWNpcGllbnQgKDEsIDIsIG9yIDMpXG4gKiBAcGFyYW0gcmVjaXBpZW50R3BnUHVibGljQXJtb3IgLSByZWNpcGllbnQncyBwdWJsaWMgZ3BnIGtleSBpbiBhcm1vciBmb3JtYXRcbiAqIEBwYXJhbSBzZW5kZXJHcGdQcml2YXRlQXJtb3IgLSBzZW5kZXIncyBwcml2YXRlIGdwZyBrZXkgaW4gYXJtb3IgZm9ybWF0XG4gKiBAcmV0dXJucyBlbmNyeXB0ZWQgTiBTaGFyZVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZW5jcnlwdE5TaGFyZShcbiAga2V5U2hhcmU6IEtleVNoYXJlLFxuICByZWNpcGllbnRJbmRleDogbnVtYmVyLFxuICByZWNpcGllbnRHcGdQdWJsaWNBcm1vcjogc3RyaW5nLFxuICBzZW5kZXJHcGdQcml2YXRlQXJtb3I6IHN0cmluZ1xuKTogUHJvbWlzZTxFbmNyeXB0ZWROU2hhcmU+IHtcbiAgY29uc3QgblNoYXJlID0ga2V5U2hhcmUublNoYXJlc1tyZWNpcGllbnRJbmRleF07XG4gIGlmICghblNoYXJlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHJlY2lwaWVudCcpO1xuICB9XG5cbiAgY29uc3QgcHVibGljU2hhcmUgPSBrZXlTaGFyZS5wU2hhcmUueSArIG5TaGFyZS5jaGFpbmNvZGUgKyBuU2hhcmUubjtcbiAgY29uc3QgcHJpdmF0ZVNoYXJlID0gblNoYXJlLnU7XG5cbiAgY29uc3QgZW5jcnlwdGVkUHJpdmF0ZVNoYXJlID0gYXdhaXQgZW5jcnlwdEFuZFNpZ25UZXh0KHByaXZhdGVTaGFyZSwgcmVjaXBpZW50R3BnUHVibGljQXJtb3IsIHNlbmRlckdwZ1ByaXZhdGVBcm1vcik7XG5cbiAgcmV0dXJuIHtcbiAgICBpOiBuU2hhcmUuaSxcbiAgICBqOiBuU2hhcmUuaixcbiAgICBwdWJsaWNTaGFyZSxcbiAgICBlbmNyeXB0ZWRQcml2YXRlU2hhcmUsXG4gIH07XG59XG5cbi8qKlxuICogRGVjcnlwdHMgZW5jcnlwdGVkIG4gc2hhcmVcbiAqIEBwYXJhbSBlbmNyeXB0ZWROU2hhcmUgLSBkZWNyeXB0YWJsZSBuIHNoYXJlIHdpdGggcmVjaXBpZW50IHByaXZhdGUgZ3BnIGtleSBhcm1vciBhbmQgc2VuZGVyIHB1YmxpYyBncGcga2V5XG4gKiBAcmV0dXJucyBOIHNoYXJlXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBkZWNyeXB0TlNoYXJlKGVuY3J5cHRlZE5TaGFyZTogRGVjcnlwdGFibGVOU2hhcmUpOiBQcm9taXNlPE5TaGFyZT4ge1xuICBjb25zdCBwcml2YXRlU2hhcmUgPSBhd2FpdCByZWFkU2lnbmVkTWVzc2FnZShcbiAgICBlbmNyeXB0ZWROU2hhcmUublNoYXJlLmVuY3J5cHRlZFByaXZhdGVTaGFyZSxcbiAgICBlbmNyeXB0ZWROU2hhcmUuc2VuZGVyUHVibGljQXJtb3IsXG4gICAgZW5jcnlwdGVkTlNoYXJlLnJlY2lwaWVudFByaXZhdGVBcm1vclxuICApO1xuXG4gIGNvbnN0IG5TaGFyZTogTlNoYXJlID0ge1xuICAgIGk6IGVuY3J5cHRlZE5TaGFyZS5uU2hhcmUuaSxcbiAgICBqOiBlbmNyeXB0ZWROU2hhcmUublNoYXJlLmosXG4gICAgeTogZW5jcnlwdGVkTlNoYXJlLm5TaGFyZS5wdWJsaWNTaGFyZS5zbGljZSgwLCA2NiksXG4gICAgdTogcHJpdmF0ZVNoYXJlLFxuICAgIG46IGVuY3J5cHRlZE5TaGFyZS5uU2hhcmUucHVibGljU2hhcmUuc2xpY2UoMTMwKSxcbiAgICBjaGFpbmNvZGU6IGVuY3J5cHRlZE5TaGFyZS5uU2hhcmUucHVibGljU2hhcmUuc2xpY2UoNjYsIDEzMCksXG4gIH07XG5cbiAgcmV0dXJuIG5TaGFyZTtcbn1cblxuLyoqXG4gKiBHZXRzIHB1YmxpYyBrZXkgZnJvbSBjb21tb24ga2V5IGNoYWluXG4gKiBAcGFyYW0gY29tbW9uS2V5Q2hhaW4gLSBjb21tb24ga2V5IGNoYWluIG9mIGVjZHNhIHRzc1xuICogQHJldHVybnMgcHVibGljIGtleVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UHVibGljS2V5KGNvbW1vbktleUNoYWluOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gY29tbW9uS2V5Q2hhaW4uc2xpY2UoMCwgNjYpO1xufVxuXG5leHBvcnQgY29uc3QgZGVsaW1ldGVyID0gJzonO1xuZXhwb3J0IGNvbnN0IHNlY29uZGFyeURlbGltZXRlciA9ICctJztcblxuZnVuY3Rpb24gdmFsaWRhdGVTaGFyZXNMZW5ndGgoc2hhcmVzOiBzdHJpbmdbXSwgZXhwZWN0ZWRMZW5ndGg6IG51bWJlciwgc2hhcmVOYW1lOiBzdHJpbmcpIHtcbiAgaWYgKHNoYXJlcy5sZW5ndGggPCBleHBlY3RlZExlbmd0aCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCAke3NoYXJlTmFtZX0gc2hhcmVgKTtcbiAgfVxufVxuXG4vKipcbiAqIHBhcnNlcyBLIHNoYXJlIGZyb20gc2lnbmF0dXJlIHNoYXJlIHJlY29yZFxuICogQHBhcmFtIHNoYXJlIC0gc2lnbmF0dXJlIHNoYXJlIHJlY29yZFxuICogQHJldHVybnMgSyBTaGFyZVxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VLU2hhcmUoc2hhcmU6IFNpZ25hdHVyZVNoYXJlUmVjb3JkKTogS1NoYXJlIHtcbiAgY29uc3Qgc2hhcmVzID0gc2hhcmUuc2hhcmUuc3BsaXQoZGVsaW1ldGVyKTtcblxuICB2YWxpZGF0ZVNoYXJlc0xlbmd0aChzaGFyZXMsIDIsICdLJyk7XG5cbiAgcmV0dXJuIHtcbiAgICBpOiBnZXRQYXJ0aWNpcGFudEluZGV4KHNoYXJlLnRvKSxcbiAgICBqOiBnZXRQYXJ0aWNpcGFudEluZGV4KHNoYXJlLmZyb20pLFxuICAgIGs6IHNoYXJlc1swXSxcbiAgICBuOiBzaGFyZXNbMV0sXG4gIH07XG59XG5cbi8qKlxuICogY29udmVydCBLIHNoYXJlIHRvIHNpZ25hdHVyZSBzaGFyZSByZWNvcmRcbiAqIEBwYXJhbSBzaGFyZSAtIEsgc2hhcmVcbiAqIEByZXR1cm5zIHNpZ25hdHVyZSBzaGFyZSByZWNvcmRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRLU2hhcmUoc2hhcmU6IEtTaGFyZSk6IFNpZ25hdHVyZVNoYXJlUmVjb3JkIHtcbiAgcmV0dXJuIHtcbiAgICB0bzogZ2V0UGFydGljaXBhbnRGcm9tSW5kZXgoc2hhcmUuaSksXG4gICAgZnJvbTogZ2V0UGFydGljaXBhbnRGcm9tSW5kZXgoc2hhcmUuaiksXG4gICAgc2hhcmU6IGAke3NoYXJlLmt9JHtkZWxpbWV0ZXJ9JHtzaGFyZS5ufWAsXG4gIH07XG59XG5cbi8qKlxuICogcGFyc2VzIEEgc2hhcmUgZnJvbSBzaWduYXR1cmUgc2hhcmUgcmVjb3JkXG4gKiBAcGFyYW0gc2hhcmUgLSBzaWduYXR1cmUgc2hhcmUgcmVjb3JkXG4gKiBAcmV0dXJucyBBIFNoYXJlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUFTaGFyZShzaGFyZTogU2lnbmF0dXJlU2hhcmVSZWNvcmQpOiBBU2hhcmUge1xuICBjb25zdCBzaGFyZXMgPSBzaGFyZS5zaGFyZS5zcGxpdChkZWxpbWV0ZXIpO1xuICB2YWxpZGF0ZVNoYXJlc0xlbmd0aChzaGFyZXMsIDQsICdBJyk7XG5cbiAgcmV0dXJuIHtcbiAgICBpOiBnZXRQYXJ0aWNpcGFudEluZGV4KHNoYXJlLnRvKSxcbiAgICBqOiBnZXRQYXJ0aWNpcGFudEluZGV4KHNoYXJlLmZyb20pLFxuICAgIGs6IHNoYXJlc1swXSxcbiAgICBhbHBoYTogc2hhcmVzWzFdLFxuICAgIG11OiBzaGFyZXNbMl0sXG4gICAgbjogc2hhcmVzWzNdLFxuICB9O1xufVxuXG4vKipcbiAqIGNvbnZlcnQgQSBzaGFyZSB0byBzaWduYXR1cmUgc2hhcmUgcmVjb3JkXG4gKiBAcGFyYW0gc2hhcmUgLSBBIHNoYXJlXG4gKiBAcmV0dXJucyBzaWduYXR1cmUgc2hhcmUgcmVjb3JkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0QVNoYXJlKHNoYXJlOiBBU2hhcmUpOiBTaWduYXR1cmVTaGFyZVJlY29yZCB7XG4gIHJldHVybiB7XG4gICAgdG86IGdldFBhcnRpY2lwYW50RnJvbUluZGV4KHNoYXJlLmkpLFxuICAgIGZyb206IGdldFBhcnRpY2lwYW50RnJvbUluZGV4KHNoYXJlLmopLFxuICAgIHNoYXJlOiBgJHtzaGFyZS5rfSR7ZGVsaW1ldGVyfSR7c2hhcmUuYWxwaGF9JHtkZWxpbWV0ZXJ9JHtzaGFyZS5tdX0ke2RlbGltZXRlcn0ke3NoYXJlLm59YCxcbiAgfTtcbn1cblxuLyoqXG4gKiBwYXJzZXMgTXUgc2hhcmUgZnJvbSBzaWduYXR1cmUgc2hhcmUgcmVjb3JkXG4gKiBAcGFyYW0gc2hhcmUgLSBzaWduYXR1cmUgc2hhcmUgcmVjb3JkXG4gKiBAcmV0dXJucyBNdSBTaGFyZVxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VNdVNoYXJlKHNoYXJlOiBTaWduYXR1cmVTaGFyZVJlY29yZCk6IE1VU2hhcmUge1xuICBjb25zdCBzaGFyZXMgPSBzaGFyZS5zaGFyZS5zcGxpdChkZWxpbWV0ZXIpO1xuICB2YWxpZGF0ZVNoYXJlc0xlbmd0aChzaGFyZXMsIDIsICdNdScpO1xuXG4gIHJldHVybiB7XG4gICAgaTogZ2V0UGFydGljaXBhbnRJbmRleChzaGFyZS50byksXG4gICAgajogZ2V0UGFydGljaXBhbnRJbmRleChzaGFyZS5mcm9tKSxcbiAgICBhbHBoYTogc2hhcmVzWzBdLFxuICAgIG11OiBzaGFyZXNbMV0sXG4gIH07XG59XG5cbi8qKlxuICogY29udmVydCBNdSBzaGFyZSB0byBzaWduYXR1cmUgc2hhcmUgcmVjb3JkXG4gKiBAcGFyYW0gc2hhcmUgLSBNdSBzaGFyZVxuICogQHJldHVybnMgc2lnbmF0dXJlIHNoYXJlIHJlY29yZFxuICovXG5leHBvcnQgZnVuY3Rpb24gY29udmVydE11U2hhcmUoc2hhcmU6IE1VU2hhcmUpOiBTaWduYXR1cmVTaGFyZVJlY29yZCB7XG4gIHJldHVybiB7XG4gICAgdG86IGdldFBhcnRpY2lwYW50RnJvbUluZGV4KHNoYXJlLmkpLFxuICAgIGZyb206IGdldFBhcnRpY2lwYW50RnJvbUluZGV4KHNoYXJlLmopLFxuICAgIHNoYXJlOiBgJHtzaGFyZS5hbHBoYX0ke2RlbGltZXRlcn0ke3NoYXJlLm11fWAsXG4gIH07XG59XG5cbi8qKlxuICogcGFyc2VzIEQgc2hhcmUgZnJvbSBzaWduYXR1cmUgc2hhcmUgcmVjb3JkXG4gKiBAcGFyYW0gc2hhcmUgLSBzaWduYXR1cmUgc2hhcmUgcmVjb3JkXG4gKiBAcmV0dXJucyBEIFNoYXJlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZURTaGFyZShzaGFyZTogU2lnbmF0dXJlU2hhcmVSZWNvcmQpOiBEU2hhcmUge1xuICBjb25zdCBzaGFyZXMgPSBzaGFyZS5zaGFyZS5zcGxpdChkZWxpbWV0ZXIpO1xuICB2YWxpZGF0ZVNoYXJlc0xlbmd0aChzaGFyZXMsIDIsICdEJyk7XG5cbiAgcmV0dXJuIHtcbiAgICBpOiBnZXRQYXJ0aWNpcGFudEluZGV4KHNoYXJlLnRvKSxcbiAgICBqOiBnZXRQYXJ0aWNpcGFudEluZGV4KHNoYXJlLmZyb20pLFxuICAgIGRlbHRhOiBzaGFyZXNbMF0sXG4gICAgR2FtbWE6IHNoYXJlc1sxXSxcbiAgfTtcbn1cblxuLyoqXG4gKiBjb252ZXJ0IEQgc2hhcmUgdG8gc2lnbmF0dXJlIHNoYXJlIHJlY29yZFxuICogQHBhcmFtIHNoYXJlIC0gRCBzaGFyZVxuICogQHJldHVybnMgc2lnbmF0dXJlIHNoYXJlIHJlY29yZFxuICovXG5leHBvcnQgZnVuY3Rpb24gY29udmVydERTaGFyZShzaGFyZTogRFNoYXJlKTogU2lnbmF0dXJlU2hhcmVSZWNvcmQge1xuICByZXR1cm4ge1xuICAgIHRvOiBnZXRQYXJ0aWNpcGFudEZyb21JbmRleChzaGFyZS5pKSxcbiAgICBmcm9tOiBnZXRQYXJ0aWNpcGFudEZyb21JbmRleChzaGFyZS5qKSxcbiAgICBzaGFyZTogYCR7c2hhcmUuZGVsdGF9JHtkZWxpbWV0ZXJ9JHtzaGFyZS5HYW1tYX1gLFxuICB9O1xufVxuXG4vKipcbiAqIHBhcnNlcyBTIGFuZCBEIHNoYXJlIGZyb20gc2lnbmF0dXJlIHNoYXJlIHJlY29yZFxuICogQHBhcmFtIHNoYXJlIC0gc2lnbmF0dXJlIHNoYXJlIHJlY29yZFxuICogQHJldHVybnMgT2JqZWN0IGNvbnRhaW5pbmcgUyBhbmQgRCBTaGFyZVxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VTRFNoYXJlKHNoYXJlOiBTaWduYXR1cmVTaGFyZVJlY29yZCk6IHsgc1NoYXJlOiBTaWduYXR1cmVTaGFyZTsgZFNoYXJlOiBEU2hhcmUgfSB7XG4gIGNvbnN0IHNoYXJlcyA9IHNoYXJlLnNoYXJlLnNwbGl0KHNlY29uZGFyeURlbGltZXRlcik7XG4gIHZhbGlkYXRlU2hhcmVzTGVuZ3RoKHNoYXJlcywgMiwgJ1NEJyk7XG5cbiAgcmV0dXJuIHtcbiAgICBzU2hhcmU6IHBhcnNlU2lnbmF0dXJlU2hhcmUoeyB0bzogc2hhcmUudG8sIGZyb206IHNoYXJlLmZyb20sIHNoYXJlOiBzaGFyZXNbMF0gfSksXG4gICAgZFNoYXJlOiBwYXJzZURTaGFyZSh7IHRvOiBzaGFyZS50bywgZnJvbTogc2hhcmUuZnJvbSwgc2hhcmU6IHNoYXJlc1sxXSB9KSxcbiAgfTtcbn1cblxuLyoqXG4gKiBjb252ZXJ0IFMgYW5kIEQgc2hhcmUgdG8gc2lnbmF0dXJlIHNoYXJlIHJlY29yZFxuICogQHBhcmFtIHNoYXJlIC0gUyBhbmQgRCBzaGFyZSBpbiBhIG9iamVjdFxuICogQHJldHVybnMgc2lnbmF0dXJlIHNoYXJlIHJlY29yZFxuICovXG5leHBvcnQgZnVuY3Rpb24gY29udmVydFNEU2hhcmUoc2hhcmU6IHsgc1NoYXJlOiBTU2hhcmU7IGRTaGFyZTogRFNoYXJlIH0pOiBTaWduYXR1cmVTaGFyZVJlY29yZCB7XG4gIHJldHVybiB7XG4gICAgdG86IGdldFBhcnRpY2lwYW50RnJvbUluZGV4KHNoYXJlLmRTaGFyZS5pKSxcbiAgICBmcm9tOiBnZXRQYXJ0aWNpcGFudEZyb21JbmRleChzaGFyZS5kU2hhcmUuaiksXG4gICAgc2hhcmU6IGAke3NoYXJlLnNTaGFyZS5SfSR7ZGVsaW1ldGVyfSR7c2hhcmUuc1NoYXJlLnN9JHtkZWxpbWV0ZXJ9JHtzaGFyZS5zU2hhcmUueX0ke3NlY29uZGFyeURlbGltZXRlcn0ke3NoYXJlLmRTaGFyZS5kZWx0YX0ke2RlbGltZXRlcn0ke3NoYXJlLmRTaGFyZS5HYW1tYX1gLFxuICB9O1xufVxuXG4vKipcbiAqIHBhcnNlcyBzaWduYXR1cmUgc2hhcmUgZnJvbSBzaWduYXR1cmUgc2hhcmUgcmVjb3JkXG4gKiBAcGFyYW0gc2hhcmUgLSBzaWduYXR1cmUgc2hhcmUgcmVjb3JkXG4gKiBAcmV0dXJucyBTaWduYXR1cmUgU2hhcmVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlU2lnbmF0dXJlU2hhcmUoc2hhcmU6IFNpZ25hdHVyZVNoYXJlUmVjb3JkKTogU2lnbmF0dXJlU2hhcmUge1xuICBjb25zdCBzaGFyZXMgPSBzaGFyZS5zaGFyZS5zcGxpdChkZWxpbWV0ZXIpO1xuICB2YWxpZGF0ZVNoYXJlc0xlbmd0aChzaGFyZXMsIDMsICdTaWduYXR1cmUnKTtcblxuICByZXR1cm4ge1xuICAgIGk6IGdldFBhcnRpY2lwYW50SW5kZXgoc2hhcmUudG8pLFxuICAgIFI6IHNoYXJlc1swXSxcbiAgICBzOiBzaGFyZXNbMV0sXG4gICAgeTogc2hhcmVzWzJdLFxuICB9O1xufVxuXG4vKipcbiAqIGNvbnZldHMgY29tYmluZWQgc2lnbmF0dXJlIHRvIHNpZ25hdHVyZSBzaGFyZSByZWNvcmRcbiAqIEBwYXJhbSBzaWduYXR1cmUgLSBjb21iaW5lZCBzaWduYXR1cmUgc2hhcmVcbiAqIEBwYXJhbSB1c2VySW5kZXggLSB1c2VyIGluZGV4LCBlaXRoZXIgMSAodXNlcikgb3IgMiAoYmFja3VwKVxuICogQHJldHVybnMgc2lnbmF0dXJlIHNoYXJlIHJlY29yZFxuICovXG5leHBvcnQgZnVuY3Rpb24gY29udmVydENvbWJpbmVkU2lnbmF0dXJlKHNpZ25hdHVyZTogU2lnbmF0dXJlLCB1c2VySW5kZXg6IG51bWJlcik6IFNpZ25hdHVyZVNoYXJlUmVjb3JkIHtcbiAgcmV0dXJuIHtcbiAgICB0bzogU2lnbmF0dXJlU2hhcmVUeXBlLkJJVEdPLFxuICAgIGZyb206IGdldFBhcnRpY2lwYW50RnJvbUluZGV4KHVzZXJJbmRleCksXG4gICAgc2hhcmU6IGAke3NpZ25hdHVyZS5yZWNpZH0ke2RlbGltZXRlcn0ke3NpZ25hdHVyZS5yfSR7ZGVsaW1ldGVyfSR7c2lnbmF0dXJlLnN9JHtkZWxpbWV0ZXJ9JHtzaWduYXR1cmUueX1gLFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VDb21iaW5lZFNpZ25hdHVyZShzaGFyZTogU2lnbmF0dXJlU2hhcmVSZWNvcmQpOiBTaWduYXR1cmUge1xuICBjb25zdCBzaGFyZXMgPSBzaGFyZS5zaGFyZS5zcGxpdChkZWxpbWV0ZXIpO1xuICB2YWxpZGF0ZVNoYXJlc0xlbmd0aChzaGFyZXMsIDMsICdTaWduYXR1cmUnKTtcblxuICByZXR1cm4ge1xuICAgIHJlY2lkOiBOdW1iZXIoc2hhcmVzWzBdKSxcbiAgICByOiBzaGFyZXNbMV0sXG4gICAgczogc2hhcmVzWzJdLFxuICAgIHk6IHNoYXJlc1szXSxcbiAgfTtcbn1cblxuLyoqXG4gKiBjb252ZXJ0IHNpZ25hdHVyZSBzaGFyZSB0byBzaWduYXR1cmUgc2hhcmUgcmVjb3JkXG4gKiBAcGFyYW0gc2hhcmUgLSBTaWduYXR1cmUgc2hhcmVcbiAqIEByZXR1cm5zIHNpZ25hdHVyZSBzaGFyZSByZWNvcmRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRTaWduYXR1cmVTaGFyZShzaGFyZTogU2lnbmF0dXJlU2hhcmUsIHNlbmRlckluZGV4OiBudW1iZXIpOiBTaWduYXR1cmVTaGFyZVJlY29yZCB7XG4gIHJldHVybiB7XG4gICAgdG86IGdldFBhcnRpY2lwYW50RnJvbUluZGV4KHNoYXJlLmkpLFxuICAgIGZyb206IGdldFBhcnRpY2lwYW50RnJvbUluZGV4KHNlbmRlckluZGV4KSxcbiAgICBzaGFyZTogYCR7c2hhcmUuUn0ke2RlbGltZXRlcn0ke3NoYXJlLnN9JHtkZWxpbWV0ZXJ9JHtzaGFyZS55fWAsXG4gIH07XG59XG5cbi8qKlxuICogY29udmVydHMgQiBzaGFyZSB0byBzaWduYXR1cmUgc2hhcmUgcmVjb3JkXG4gKiBAcGFyYW0gc2hhcmUgLSBCIHNoYXJlXG4gKiBAcmV0dXJucyBzaWduYXR1cmUgc2hhcmUgcmVjb3JkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0QlNoYXJlKHNoYXJlOiBCU2hhcmUpOiBTaWduYXR1cmVTaGFyZVJlY29yZCB7XG4gIHJldHVybiB7XG4gICAgdG86IFNpZ25hdHVyZVNoYXJlVHlwZS5CSVRHTyxcbiAgICBmcm9tOiBnZXRQYXJ0aWNpcGFudEZyb21JbmRleChzaGFyZS5pKSxcbiAgICBzaGFyZTogYCR7c2hhcmUuYmV0YX0ke2RlbGltZXRlcn0ke3NoYXJlLmdhbW1hfSR7ZGVsaW1ldGVyfSR7c2hhcmUua30ke2RlbGltZXRlcn0ke3NoYXJlLm51fSR7ZGVsaW1ldGVyfSR7c2hhcmUud30ke2RlbGltZXRlcn0ke3NoYXJlLnl9JHtkZWxpbWV0ZXJ9JHtzaGFyZS5sfSR7ZGVsaW1ldGVyfSR7c2hhcmUubX0ke2RlbGltZXRlcn0ke3NoYXJlLm59YCxcbiAgfTtcbn1cblxuLyoqXG4gKiBwYXJzZXMgQiBzaGFyZSBmcm9tIHNpZ25hdHVyZSBzaGFyZSByZWNvcmRcbiAqIEBwYXJhbSBzaGFyZSBCIHNoYXJlIHJlY29yZFxuICogQHJldHVybnMgQiBTaGFyZVxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VCU2hhcmUoc2hhcmU6IFNpZ25hdHVyZVNoYXJlUmVjb3JkKTogQlNoYXJlIHtcbiAgY29uc3Qgc2hhcmVzID0gc2hhcmUuc2hhcmUuc3BsaXQoZGVsaW1ldGVyKTtcbiAgdmFsaWRhdGVTaGFyZXNMZW5ndGgoc2hhcmVzLCA5LCAnQicpO1xuXG4gIHJldHVybiB7XG4gICAgaTogZ2V0UGFydGljaXBhbnRJbmRleChzaGFyZS50byksXG4gICAgYmV0YTogc2hhcmVzWzBdLFxuICAgIGdhbW1hOiBzaGFyZXNbMV0sXG4gICAgazogc2hhcmVzWzJdLFxuICAgIG51OiBzaGFyZXNbM10sXG4gICAgdzogc2hhcmVzWzRdLFxuICAgIHk6IHNoYXJlc1s1XSxcbiAgICBsOiBzaGFyZXNbNl0sXG4gICAgbTogc2hhcmVzWzddLFxuICAgIG46IHNoYXJlc1s4XSxcbiAgfTtcbn1cblxuLyoqXG4gKiBjb252ZXJ0cyBPIHNoYXJlIHRvIHNpZ25hdHVyZSBzaGFyZSByZWNvcmRcbiAqIEBwYXJhbSBzaGFyZSBPIHNoYXJlXG4gKiBAcmV0dXJucyBzaWduYXR1cmUgc2hhcmUgcmVjb3JkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0T1NoYXJlKHNoYXJlOiBPU2hhcmUpOiBTaWduYXR1cmVTaGFyZVJlY29yZCB7XG4gIHJldHVybiB7XG4gICAgdG86IFNpZ25hdHVyZVNoYXJlVHlwZS5CSVRHTyxcbiAgICBmcm9tOiBnZXRQYXJ0aWNpcGFudEZyb21JbmRleChzaGFyZS5pKSxcbiAgICBzaGFyZTogYCR7c2hhcmUuR2FtbWF9JHtkZWxpbWV0ZXJ9JHtzaGFyZS5kZWx0YX0ke2RlbGltZXRlcn0ke3NoYXJlLmt9JHtkZWxpbWV0ZXJ9JHtzaGFyZS5vbWljcm9ufSR7ZGVsaW1ldGVyfSR7c2hhcmUueX1gLFxuICB9O1xufVxuXG4vKipcbiAqIHBhcnNlcyBPIHNoYXJlIGZyb20gc2lnbmF0dXJlIHNoYXJlIHJlY29yZFxuICogQHBhcmFtIHNoYXJlIE8gc2hhcmUgcmVjb3JkXG4gKiBAcmV0dXJucyBPIFNoYXJlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZU9TaGFyZShzaGFyZTogU2lnbmF0dXJlU2hhcmVSZWNvcmQpOiBPU2hhcmUge1xuICBjb25zdCBzaGFyZXMgPSBzaGFyZS5zaGFyZS5zcGxpdChkZWxpbWV0ZXIpO1xuICB2YWxpZGF0ZVNoYXJlc0xlbmd0aChzaGFyZXMsIDUsICdPJyk7XG5cbiAgcmV0dXJuIHtcbiAgICBpOiBnZXRQYXJ0aWNpcGFudEluZGV4KHNoYXJlLnRvKSxcbiAgICBHYW1tYTogc2hhcmVzWzBdLFxuICAgIGRlbHRhOiBzaGFyZXNbMV0sXG4gICAgazogc2hhcmVzWzJdLFxuICAgIG9taWNyb246IHNoYXJlc1szXSxcbiAgICB5OiBzaGFyZXNbNF0sXG4gIH07XG59XG5cbi8qKlxuICogZ2V0cyBwYXJ0aWNpcGFudCBpbmRleFxuICogQHBhcmFtIHBhcnRpY2lwYW50IC0gcGFydGljaXBhbnRzICh1c2VyLCBiYWNrdXAsIG9yIGJpdGdvKVxuICogQHJldHVybnMgaW5kZXggKDEsIDIsIDByIDMpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRQYXJ0aWNpcGFudEluZGV4KHBhcnRpY2lwYW50OiAndXNlcicgfCAnYmFja3VwJyB8ICdiaXRnbycpOiBudW1iZXIge1xuICBzd2l0Y2ggKHBhcnRpY2lwYW50KSB7XG4gICAgY2FzZSAndXNlcic6XG4gICAgICByZXR1cm4gMTtcbiAgICBjYXNlICdiYWNrdXAnOlxuICAgICAgcmV0dXJuIDI7XG4gICAgY2FzZSAnYml0Z28nOlxuICAgICAgcmV0dXJuIDM7XG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IEVycm9yKCdVbmtvd24gcGFydGljaXBhbnQnKTtcbiAgfVxufVxuXG4vKipcbiAqIGdldHMgcGFydGljaXBhbnQgbmFtZSBieSBpbmRleFxuICogQHBhcmFtIGluZGV4IHBhcnRpY2lwYW50IGluZGV4XG4gKiBAcmV0dXJucyBwYXJ0aWNpcGFudCBuYW1lXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRQYXJ0aWNpcGFudEZyb21JbmRleChpbmRleDogbnVtYmVyKTogU2lnbmF0dXJlU2hhcmVUeXBlIHtcbiAgc3dpdGNoIChpbmRleCkge1xuICAgIGNhc2UgMTpcbiAgICAgIHJldHVybiBTaWduYXR1cmVTaGFyZVR5cGUuVVNFUjtcbiAgICBjYXNlIDI6XG4gICAgICByZXR1cm4gU2lnbmF0dXJlU2hhcmVUeXBlLkJBQ0tVUDtcbiAgICBjYXNlIDM6XG4gICAgICByZXR1cm4gU2lnbmF0dXJlU2hhcmVUeXBlLkJJVEdPO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gcGFydGljaXBhbnQgaW5kZXggJHtpbmRleH1gKTtcbiAgfVxufVxuIl19
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eddsa.d.ts","sourceRoot":"","sources":["../../../../../src/bitgo/tss/eddsa/eddsa.ts"],"names":[],"mappings":";AAAA,OAAc,EAAE,MAAM,EAAU,QAAQ,EAAE,MAAM,EAAU,SAAS,EAAE,MAAM,EAAE,MAAM,gCAAgC,CAAC;AACpH,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAmB,eAAe,EAAE,MAAM,SAAS,CAAC;AAE3F,OAAO,
|
|
1
|
+
{"version":3,"file":"eddsa.d.ts","sourceRoot":"","sources":["../../../../../src/bitgo/tss/eddsa/eddsa.ts"],"names":[],"mappings":";AAAA,OAAc,EAAE,MAAM,EAAU,QAAQ,EAAE,MAAM,EAAU,SAAS,EAAE,MAAM,EAAE,MAAM,gCAAgC,CAAC;AACpH,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAmB,eAAe,EAAE,MAAM,SAAS,CAAC;AAE3F,OAAO,EAGL,oBAAoB,EAGrB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAE7D,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,CAAC;AAE5C;;;;;;;;GAQG;AACH,wBAAsB,iBAAiB,CAAC,MAAM,EAAE;IAC9C,QAAQ,EAAE,QAAQ,CAAC;IACnB,gBAAgB,EAAE,iBAAiB,EAAE,CAAC;IACtC,cAAc,EAAE,MAAM,CAAC;CACxB,GAAG,OAAO,CAAC,WAAW,CAAC,CA8DvB;AAED;;;;;;GAMG;AACH,wBAAsB,mBAAmB,CAAC,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAQrG;AAED;;;;;;;;GAQG;AACH,wBAAsB,uBAAuB,CAC3C,aAAa,EAAE,SAAS,EACxB,iBAAiB,EAAE,oBAAoB,EACvC,kBAAkB,EAAE,MAAM,EAC1B,iBAAiB,EAAE,MAAM,EACzB,eAAe,EAAE,MAAM,GACtB,OAAO,CAAC,MAAM,CAAC,CAwBjB;AAED;;;;;;;;GAQG;AACH,wBAAsB,sBAAsB,CAC1C,KAAK,EAAE,SAAS,EAChB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,SAAS,EACxB,oBAAoB,EAAE,MAAM,EAC5B,OAAO,GAAE,MAAM,GAAG,MAAe,GAChC,OAAO,CAAC,IAAI,CAAC,CAyBf;AAED;;;;;;;GAOG;AACH,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,SAAS,EAChB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,oBAAoB,CAAC,CAe/B;AAED;;;;;;;;GAQG;AACH,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,SAAS,EAChB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,iBAAiB,EAAE,MAAM,EACzB,OAAO,GAAE,MAAM,GAAG,MAAe,GAChC,OAAO,CAAC,IAAI,CAAC,CAYf;AAED;;;;;;;;;GASG;AACH,wBAAsB,aAAa,CAAC,MAAM,EAAE;IAC1C,QAAQ,EAAE,QAAQ,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,uBAAuB,EAAE,MAAM,CAAC;IAChC,qBAAqB,EAAE,MAAM,CAAC;CAC/B,GAAG,OAAO,CAAC,eAAe,CAAC,CAyB3B"}
|
|
@@ -142,7 +142,8 @@ async function offerUserToBitgoRShare(bitgo, walletId, txRequestId, userSignShar
|
|
|
142
142
|
to: utils_1.SignatureShareType.BITGO,
|
|
143
143
|
share: rShare.r + rShare.R,
|
|
144
144
|
};
|
|
145
|
-
|
|
145
|
+
// TODO (BG-57944): implement message signing for EDDSA
|
|
146
|
+
await common_1.sendSignatureShare(bitgo, walletId, txRequestId, signatureShare, utils_1.RequestType.tx, encryptedSignerShare, 'eddsa', apiMode);
|
|
146
147
|
}
|
|
147
148
|
exports.offerUserToBitgoRShare = offerUserToBitgoRShare;
|
|
148
149
|
/**
|
|
@@ -185,7 +186,8 @@ async function sendUserToBitgoGShare(bitgo, walletId, txRequestId, userToBitgoGS
|
|
|
185
186
|
to: utils_1.SignatureShareType.BITGO,
|
|
186
187
|
share: userToBitgoGShare.R + userToBitgoGShare.gamma,
|
|
187
188
|
};
|
|
188
|
-
|
|
189
|
+
// TODO (BG-57944): implement message signing for EDDSA
|
|
190
|
+
await common_1.sendSignatureShare(bitgo, walletId, txRequestId, signatureShare, utils_1.RequestType.tx, undefined, 'eddsa', apiMode);
|
|
189
191
|
}
|
|
190
192
|
exports.sendUserToBitgoGShare = sendUserToBitgoGShare;
|
|
191
193
|
/**
|
|
@@ -218,4 +220,4 @@ async function encryptYShare(params) {
|
|
|
218
220
|
};
|
|
219
221
|
}
|
|
220
222
|
exports.encryptYShare = encryptYShare;
|
|
221
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRkc2EuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYml0Z28vdHNzL2VkZHNhL2VkZHNhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLHlFQUFvSDtBQUdwSCxzQ0FBOEM7QUFDOUMseUNBQWdIO0FBQ2hILDRCQUE2QjtBQUM3QixzQ0FBNkQ7QUFDcEQsNkZBREEscUJBQVksT0FDQTtBQUFFLG1HQURBLDJCQUFrQixPQUNBO0FBRXpDOzs7Ozs7OztHQVFHO0FBQ0ksS0FBSyxVQUFVLGlCQUFpQixDQUFDLE1BSXZDO0lBQ0MsTUFBTSxhQUFLLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDekIsTUFBTSxHQUFHLEdBQUcsSUFBSSxhQUFLLEVBQUUsQ0FBQztJQUV4QixNQUFNLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixFQUFFLGNBQWMsRUFBRSxHQUFHLE1BQU0sQ0FBQztJQUM5RCxNQUFNLE9BQU8sR0FBYSxFQUFFLENBQUM7SUFFN0IsSUFBSSxXQUErQixDQUFDO0lBQ3BDLElBQUksVUFBOEIsQ0FBQztJQUNuQyxJQUFJLFlBQWdDLENBQUM7SUFFckMsS0FBSyxNQUFNLGVBQWUsSUFBSSxnQkFBZ0IsRUFBRTtRQUM5QyxNQUFNLFlBQVksR0FBRyxNQUFNLHlCQUFpQixDQUMxQyxlQUFlLENBQUMsTUFBTSxDQUFDLHFCQUFxQixFQUM1QyxlQUFlLENBQUMsaUJBQWlCLEVBQ2pDLGVBQWUsQ0FBQyxxQkFBcUIsQ0FDdEMsQ0FBQztRQUVGLE1BQU0sTUFBTSxHQUFXO1lBQ3JCLENBQUMsRUFBRSxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDM0IsQ0FBQyxFQUFFLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUMzQixDQUFDLEVBQUUsZUFBZSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDbEQsQ0FBQyxFQUFFLFlBQVksQ0FBQyxLQUFL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QUFDLEVBQUUsS0FBSyxDQUFDO1FBQ3JDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDO0tBQzlDLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFbkIsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FDL0csS0FBSyxDQUNOLENBQUM7SUFFRixNQUFNLHFCQUFxQixHQUFHLE1BQU0sMEJBQWtCLENBQUMsWUFBWSxFQUFFLHVCQUF1QixFQUFFLHFCQUFxQixDQUFDLENBQUM7SUFFckgsT0FBTztRQUNMLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNYLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNYLFdBQVc7UUFDWCxxQkFBcUI7S0FDdEIsQ0FBQztBQUNKLENBQUM7QUE5QkQsc0NBOEJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEVkZHNhLCB7IEdTaGFyZSwgSlNoYXJlLCBLZXlTaGFyZSwgUFNoYXJlLCBSU2hhcmUsIFNpZ25TaGFyZSwgWVNoYXJlIH0gZnJvbSAnLi8uLi8uLi8uLi9hY2NvdW50LWxpYi9tcGMvdHNzJztcbmltcG9ydCB7IEJpdEdvQmFzZSB9IGZyb20gJy4vLi4vLi4vYml0Z29CYXNlJztcbmltcG9ydCB7IERlY3J5cHRhYmxlWVNoYXJlLCBDb21iaW5lZEtleSwgU2lnbmluZ01hdGVyaWFsLCBFbmNyeXB0ZWRZU2hhcmUgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IFNoYXJlS2V5UG9zaXRpb24gfSBmcm9tICcuLy4uL3R5cGVzJztcbmltcG9ydCB7IGVuY3J5cHRBbmRTaWduVGV4dCwgcmVhZFNpZ25lZE1lc3NhZ2UsIFNpZ25hdHVyZVNoYXJlUmVjb3JkLCBTaWduYXR1cmVTaGFyZVR5cGUgfSBmcm9tICcuLy4uLy4uL3V0aWxzJztcbmltcG9ydCBfID0gcmVxdWlyZSgnbG9kYXNoJyk7XG5pbXBvcnQgeyBnZXRUeFJlcXVlc3QsIHNlbmRTaWduYXR1cmVTaGFyZSB9IGZyb20gJy4uL2NvbW1vbic7XG5leHBvcnQgeyBnZXRUeFJlcXVlc3QsIHNlbmRTaWduYXR1cmVTaGFyZSB9O1xuXG4vKipcbiAqIENvbWJpbmVzIFlTaGFyZXMgdG8gY29tYmluZSB0aGUgZmluYWwgVFNTIGtleVxuICogVGhpcyBjYW4gb25seSBiZSB1c2VkIHRvIGNyZWF0ZSB0aGUgVXNlciBvciBCYWNrdXAga2V5IHNpbmNlIGl0IHJlcXVpcmVzIHRoZSBjb21tb24ga2V5Y2hhaW4gZnJvbSBCaXRHbyBmaXJzdFxuICpcbiAqIEBwYXJhbSBwYXJhbXMua2V5U2hhcmUgLSBUU1Mga2V5IHNoYXJlXG4gKiBAcGFyYW0gcGFyYW1zLmVuY3J5cHRlZFlTaGFyZXMgLSBlbmNyeXB0ZWQgWVNoYXJlcyB3aXRoIGluZm9ybWF0aW9uIG9uIGhvdyB0byBkZWNyeXB0XG4gKiBAcGFyYW0gcGFyYW1zLmNvbW1vbktleWNoYWluIC0gZXhwZWN0ZWQgY29tbW9uIGtleWNoYWluIG9mIHRoZSBjb21iaW5lZCBrZXlcbiAqIEByZXR1cm5zIHtDb21iaW5lZEtleX0gY29tYmluZWQgVFNTIGtleVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlQ29tYmluZWRLZXkocGFyYW1zOiB7XG4gIGtleVNoYXJlOiBLZXlTaGFyZTtcbiAgZW5jcnlwdGVkWVNoYXJlczogRGVjcnlwdGFibGVZU2hhcmVbXTtcbiAgY29tbW9uS2V5Y2hhaW46IHN0cmluZztcbn0pOiBQcm9taXNlPENvbWJpbmVkS2V5PiB7XG4gIGF3YWl0IEVkZHNhLmluaXRpYWxpemUoKTtcbiAgY29uc3QgTVBDID0gbmV3IEVkZHNhKCk7XG5cbiAgY29uc3QgeyBrZXlTaGFyZSwgZW5jcnlwdGVkWVNoYXJlcywgY29tbW9uS2V5Y2hhaW4gfSA9IHBhcmFtcztcbiAgY29uc3QgeVNoYXJlczogWVNoYXJlW10gPSBbXTtcblxuICBsZXQgYml0Z29ZU2hhcmU6IFlTaGFyZSB8IHVuZGVmaW5lZDtcbiAgbGV0IHVzZXJZU2hhcmU6IFlTaGFyZSB8IHVuZGVmaW5lZDtcbiAgbGV0IGJhY2t1cFlTaGFyZTogWVNoYXJlIHwgdW5kZWZpbmVkO1xuXG4gIGZvciAoY29uc3QgZW5jcnlwdGVkWVNoYXJlIG9mIGVuY3J5cHRlZFlTaGFyZXMpIHtcbiAgICBjb25zdCBwcml2YXRlU2hhcmUgPSBhd2FpdCByZWFkU2lnbmVkTWVzc2FnZShcbiAgICAgIGVuY3J5cHRlZFlTaGFyZS55U2hhcmUuZW5jcnlwdGVkUHJpdmF0ZVNoYXJlLFxuICAgICAgZW5jcnlwdGVkWVNoYXJlLnNlbmRlclB1YmxpY0FybW9yLFxuICAgICAgZW5jcnlwdGVkWVNoYXJlLnJlY2lwaWVudFByaXZhdGVBcm1vclxuICAgICk7XG5cbiAgICBjb25zdCB5U2hhcmU6IFlTaGFyZSA9IHtcbiAgICAgIGk6IGVuY3J5cHRlZFlTaGFyZS55U2hhcmUuaSxcbiAgICAgIGo6IGVuY3J5cHRlZFlTaGFyZS55U2hhcmUuaixcbiAgICAgIHk6IGVuY3J5cHRlZFlTaGFyZS55U2hhcmUucHVibGljU2hhcmUuc2xpY2UoMCwgNjQpLFxuICAgICAgdTogcHJpdmF0ZVNoYXJlLnNsaWNlKDAsIDY0KSxcbiAgICAgIGNoYWluY29kZTogcHJpdmF0ZVNoYXJlLnNsaWNlKDY0KSxcbiAgICB9O1xuXG4gICAgc3dpdGNoIChlbmNyeXB0ZWRZU2hhcmUueVNoYXJlLmopIHtcbiAgICAgIGNhc2UgMTpcbiAgICAgICAgdXNlcllTaGFyZSA9IHlTaGFyZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI6XG4gICAgICAgIGJhY2t1cFlTaGFyZSA9IHlTaGFyZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDM6XG4gICAgICAgIGJpdGdvWVNoYXJlID0geVNoYXJlO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBZU2hhcmUgaW5kZXgnKTtcbiAgICB9XG5cbiAgICB5U2hhcmVzLnB1c2goeVNoYXJlKTtcbiAgfVxuXG4gIGNvbnN0IGNvbWJpbmVkS2V5ID0gTVBDLmtleUNvbWJpbmUoa2V5U2hhcmUudVNoYXJlLCB5U2hhcmVzKTtcbiAgaWYgKGNvbWJpbmVkS2V5LnBTaGFyZS55ICsgY29tYmluZWRLZXkucFNoYXJlLmNoYWluY29kZSAhPT0gY29tbW9uS2V5Y2hhaW4pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvbW1vbiBrZXljaGFpbnMgZG8gbm90IG1hdGNoJyk7XG4gIH1cbiAgaWYgKCFiaXRnb1lTaGFyZSkge1xuICAgIHRocm93IG5ldyBFcnJvcignTWlzc2luZyBCaXRHbyBZIFNoYXJlJyk7XG4gIH1cblxuICBjb25zdCBzaWduaW5nTWF0ZXJpYWw6IFNpZ25pbmdNYXRlcmlhbCA9IHtcbiAgICB1U2hhcmU6IGtleVNoYXJlLnVTaGFyZSxcbiAgICBiaXRnb1lTaGFyZSxcbiAgICBiYWNrdXBZU2hhcmUsXG4gICAgdXNlcllTaGFyZSxcbiAgfTtcblxuICByZXR1cm4ge1xuICAgIHNpZ25pbmdNYXRlcmlhbCxcbiAgICBjb21tb25LZXljaGFpbixcbiAgfTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIHRoZSBVc2VyIFNpZ24gU2hhcmUgY29udGFpbmluZyB0aGUgVXNlciBYU2hhcmUgYW5kIHRoZSBVc2VyIHRvIEJpdGdvIFJTaGFyZVxuICpcbiAqIEBwYXJhbSB7QnVmZmVyfSBzaWduYWJsZVBheWxvYWQgLSB0aGUgc2lnbmFibGVQYXlsb2FkIGFzIGEgYnVmZmVyXG4gKiBAcGFyYW0ge1BTaGFyZX0gcFNoYXJlIC0gVXNlcidzIHNpZ25pbmcgbWF0ZXJpYWxcbiAqIEByZXR1cm5zIHtQcm9taXNlPFNpZ25TaGFyZT59IC0gVXNlciBTaWduIFNoYXJlXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVVc2VyU2lnblNoYXJlKHNpZ25hYmxlUGF5bG9hZDogQnVmZmVyLCBwU2hhcmU6IFBTaGFyZSk6IFByb21pc2U8U2lnblNoYXJlPiB7XG4gIGNvbnN0IE1QQyA9IGF3YWl0IEVkZHNhLmluaXRpYWxpemUoKTtcblxuICBpZiAocFNoYXJlLmkgIT09IFNoYXJlS2V5UG9zaXRpb24uVVNFUikge1xuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBQU2hhcmUsIFBTaGFyZSBkb2VzbnQgYmVsb25nIHRvIHRoZSBVc2VyJyk7XG4gIH1cbiAgY29uc3QgalNoYXJlOiBKU2hhcmUgPSB7IGk6IFNoYXJlS2V5UG9zaXRpb24uQklUR08sIGo6IFNoYXJlS2V5UG9zaXRpb24uVVNFUiB9O1xuICByZXR1cm4gTVBDLnNpZ25TaGFyZShzaWduYWJsZVBheWxvYWQsIHBTaGFyZSwgW2pTaGFyZV0pO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgdGhlIFVzZXIgdG8gQml0Z28gR1NoYXJlXG4gKlxuICogQHBhcmFtIHtTaWduU2hhcmV9IHVzZXJTaWduU2hhcmUgLSB0aGUgVXNlciBTaWduIFNoYXJlXG4gKiBAcGFyYW0ge1NpZ25hdHVyZVNoYXJlUmVjb3JkfSBiaXRnb1RvVXNlclJTaGFyZSAtIHRoZSBCaXRnbyB0byBVc2VyIFJTaGFyZVxuICogQHBhcmFtIHtZU2hhcmV9IGJhY2t1cFRvVXNlcllTaGFyZSAtIHRoZSBiYWNrdXAga2V5IFkgc2hhcmUgcmVjZWl2ZWQgZHVyaW5nIHdhbGxldCBjcmVhdGlvblxuICogQHBhcmFtIHtCdWZmZXJ9IHNpZ25hYmxlUGF5bG9hZCAtIHRoZSBzaWduYWJsZSBwYXlsb2FkIGZyb20gYSB0eFxuICogQHJldHVybnMge1Byb21pc2U8R1NoYXJlPn0gLSB0aGUgVXNlciB0byBCaXRnbyBHU2hhcmVcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZVVzZXJUb0JpdEdvR1NoYXJlKFxuICB1c2VyU2lnblNoYXJlOiBTaWduU2hhcmUsXG4gIGJpdGdvVG9Vc2VyUlNoYXJlOiBTaWduYXR1cmVTaGFyZVJlY29yZCxcbiAgYmFja3VwVG9Vc2VyWVNoYXJlOiBZU2hhcmUsXG4gIGJpdGdvVG9Vc2VyWVNoYXJlOiBZU2hhcmUsXG4gIHNpZ25hYmxlUGF5bG9hZDogQnVmZmVyXG4pOiBQcm9taXNlPEdTaGFyZT4ge1xuICBpZiAodXNlclNpZ25TaGFyZS54U2hhcmUuaSAhPT0gU2hhcmVLZXlQb3NpdGlvbi5VU0VSKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIFhTaGFyZSwgZG9lc250IGJlbG9uZyB0byB0aGUgVXNlcicpO1xuICB9XG4gIGlmIChiaXRnb1RvVXNlclJTaGFyZS5mcm9tICE9PSBTaWduYXR1cmVTaGFyZVR5cGUuQklUR08gfHwgYml0Z29Ub1VzZXJSU2hhcmUudG8gIT09IFNpZ25hdHVyZVNoYXJlVHlwZS5VU0VSKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIFJTaGFyZSwgaXMgbm90IGZyb20gQml0Z28gdG8gVXNlcicpO1xuICB9XG4gIGlmIChiYWNrdXBUb1VzZXJZU2hhcmUuaSAhPT0gU2hhcmVLZXlQb3NpdGlvbi5VU0VSKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIFlTaGFyZSwgZG9lc250IGJlbG9uZyB0byB0aGUgVXNlcicpO1xuICB9XG4gIGlmIChiYWNrdXBUb1VzZXJZU2hhcmUuaiAhPT0gU2hhcmVLZXlQb3NpdGlvbi5CQUNLVVApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgWVNoYXJlLCBpcyBub3QgYmFja3VwIGtleScpO1xuICB9XG5cbiAgY29uc3QgUlNoYXJlOiBSU2hhcmUgPSB7XG4gICAgaTogU2hhcmVLZXlQb3NpdGlvbi5VU0VSLFxuICAgIGo6IFNoYXJlS2V5UG9zaXRpb24uQklUR08sXG4gICAgdTogYml0Z29Ub1VzZXJZU2hhcmUudSxcbiAgICByOiBiaXRnb1RvVXNlclJTaGFyZS5zaGFyZS5zdWJzdHJpbmcoMCwgNjQpLFxuICAgIFI6IGJpdGdvVG9Vc2VyUlNoYXJlLnNoYXJlLnN1YnN0cmluZyg2NCwgMTI4KSxcbiAgfTtcblxuICBjb25zdCBNUEMgPSBhd2FpdCBFZGRzYS5pbml0aWFsaXplKCk7XG4gIHJldHVybiBNUEMuc2lnbihzaWduYWJsZVBheWxvYWQsIHVzZXJTaWduU2hhcmUueFNoYXJlLCBbUlNoYXJlXSwgW2JhY2t1cFRvVXNlcllTaGFyZV0pO1xufVxuXG4vKipcbiAqIFNlbmRzIHRoZSBVc2VyIHRvIEJpdGdvIFJTaGFyZSB0byBCaXRnb1xuICogQHBhcmFtIHtCaXRHb0Jhc2V9IGJpdGdvIC0gdGhlIGJpdGdvIGluc3RhbmNlXG4gKiBAcGFyYW0ge1N0cmluZ30gd2FsbGV0SWQgLSB0aGUgd2FsbGV0IGlkXG4gKiBAcGFyYW0ge1N0cmluZ30gdHhSZXF1ZXN0SWQgLSB0aGUgdHhSZXF1ZXN0IElkXG4gKiBAcGFyYW0ge1NpZ25TaGFyZX0gdXNlclNpZ25TaGFyZSAtIHRoZSB1c2VyIFNpZ24gU2hhcmVcbiAqIEBwYXJhbSB7U3RyaW5nfSBlbmNyeXB0ZWRTaWduZXJTaGFyZSAtIHNpZ25lciBzaGFyZSBlbmNyeXB0ZWQgdG8gYml0Z28ga2V5XG4gKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn1cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG9mZmVyVXNlclRvQml0Z29SU2hhcmUoXG4gIGJpdGdvOiBCaXRHb0Jhc2UsXG4gIHdhbGxldElkOiBzdHJpbmcsXG4gIHR4UmVxdWVzdElkOiBzdHJpbmcsXG4gIHVzZXJTaWduU2hhcmU6IFNpZ25TaGFyZSxcbiAgZW5jcnlwdGVkU2lnbmVyU2hhcmU6IHN0cmluZyxcbiAgYXBpTW9kZTogJ2Z1bGwnIHwgJ2xpdGUnID0gJ2xpdGUnXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgclNoYXJlOiBSU2hhcmUgPSB1c2VyU2lnblNoYXJlLnJTaGFyZXNbU2hhcmVLZXlQb3NpdGlvbi5CSVRHT107XG4gIGlmIChfLmlzTmlsKHJTaGFyZSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3VzZXJUb0JpdGdvIFJTaGFyZSBub3QgZm91bmQnKTtcbiAgfVxuICBpZiAoclNoYXJlLmkgIT09IFNoYXJlS2V5UG9zaXRpb24uQklUR08gfHwgclNoYXJlLmogIT09IFNoYXJlS2V5UG9zaXRpb24uVVNFUikge1xuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBSU2hhcmUsIGlzIG5vdCBmcm9tIFVzZXIgdG8gQml0Z28nKTtcbiAgfVxuICBjb25zdCBzaWduYXR1cmVTaGFyZTogU2lnbmF0dXJlU2hhcmVSZWNvcmQgPSB7XG4gICAgZnJvbTogU2lnbmF0dXJlU2hhcmVUeXBlLlVTRVIsXG4gICAgdG86IFNpZ25hdHVyZVNoYXJlVHlwZS5CSVRHTyxcbiAgICBzaGFyZTogclNoYXJlLnIgKyByU2hhcmUuUixcbiAgfTtcbiAgYXdhaXQgc2VuZFNpZ25hdHVyZVNoYXJlKGJpdGdvLCB3YWxsZXRJZCwgdHhSZXF1ZXN0SWQsIHNpZ25hdHVyZVNoYXJlLCBlbmNyeXB0ZWRTaWduZXJTaGFyZSwgJ2VkZHNhJywgYXBpTW9kZSk7XG59XG5cbi8qKlxuICogR2V0cyB0aGUgQml0Z28gdG8gVXNlciBSU2hhcmUgZnJvbSBCaXRnb1xuICpcbiAqIEBwYXJhbSB7Qml0R29CYXNlfSBiaXRnbyAtIHRoZSBiaXRnbyBpbnN0YW5jZVxuICogQHBhcmFtIHtTdHJpbmd9IHdhbGxldElkIC0gdGhlIHdhbGxldCBpZFxuICogQHBhcmFtIHtTdHJpbmd9IHR4UmVxdWVzdElkIC0gdGhlIHR4UmVxdWVzdCBJZFxuICogQHJldHVybnMge1Byb21pc2U8U2lnbmF0dXJlU2hhcmVSZWNvcmQ+fSAtIGEgU2lnbmF0dXJlIFNoYXJlXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRCaXRnb1RvVXNlclJTaGFyZShcbiAgYml0Z286IEJpdEdvQmFzZSxcbiAgd2FsbGV0SWQ6IHN0cmluZyxcbiAgdHhSZXF1ZXN0SWQ6IHN0cmluZ1xuKTogUHJvbWlzZTxTaWduYXR1cmVTaGFyZVJlY29yZD4ge1xuICBjb25zdCB0eFJlcXVlc3QgPSBhd2FpdCBnZXRUeFJlcXVlc3QoYml0Z28sIHdhbGxldElkLCB0eFJlcXVlc3RJZCk7XG4gIGNvbnN0IHNpZ25hdHVyZVNoYXJlcyA9XG4gICAgdHhSZXF1ZXN0LmFwaVZlcnNpb24gPT09ICdmdWxsJyA/IHR4UmVxdWVzdC50cmFuc2FjdGlvbnNbMF0uc2lnbmF0dXJlU2hhcmVzIDogdHhSZXF1ZXN0LnNpZ25hdHVyZVNoYXJlcztcbiAgaWYgKF8uaXNOaWwoc2lnbmF0dXJlU2hhcmVzKSB8fCBfLmlzRW1wdHkoc2lnbmF0dXJlU2hhcmVzKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgTm8gc2lnbmF0dXJlcyBzaGFyZXMgZm91bmQgZm9yIGlkOiAke3R4UmVxdWVzdElkfWApO1xuICB9XG4gIC8vIGF0IHRoaXMgcG9pbnQgd2UgZXhwZWN0IHRoZSBvbmx5IHNoYXJlIHRvIGJlIHRoZSBSU2hhcmVcbiAgY29uc3QgYml0Z29Ub1VzZXJSU2hhcmUgPSBzaWduYXR1cmVTaGFyZXMuZmluZChcbiAgICAoc2lnU2hhcmUpID0+IHNpZ1NoYXJlLmZyb20gPT09IFNpZ25hdHVyZVNoYXJlVHlwZS5CSVRHTyAmJiBzaWdTaGFyZS50byA9PT0gU2lnbmF0dXJlU2hhcmVUeXBlLlVTRVJcbiAgKTtcbiAgaWYgKF8uaXNOaWwoYml0Z29Ub1VzZXJSU2hhcmUpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBCaXRnbyB0byBVc2VyIFJTaGFyZSBub3QgZm91bmQgZm9yIGlkOiAke3R4UmVxdWVzdElkfWApO1xuICB9XG4gIHJldHVybiBiaXRnb1RvVXNlclJTaGFyZTtcbn1cblxuLyoqXG4gKiBTZW5kcyB0aGUgVXNlciB0byBCaXRnbyBHU2hhcmUgdG8gQml0Z29cbiAqXG4gKiBAcGFyYW0ge0JpdEdvQmFzZX0gYml0Z28gLSB0aGUgYml0Z28gaW5zdGFuY2VcbiAqIEBwYXJhbSB7U3RyaW5nfSB3YWxsZXRJZCAtIHRoZSB3YWxsZXQgaWRcbiAqIEBwYXJhbSB7U3RyaW5nfSB0eFJlcXVlc3RJZCAtIHRoZSB0eFJlcXVlc3QgSWRcbiAqIEBwYXJhbSB7R1NoYXJlfSB1c2VyVG9CaXRnb0dTaGFyZSAtIHRoZSBVc2VyIHRvIEJpdGdvIEdTaGFyZVxuICogQHJldHVybnMge1Byb21pc2U8dm9pZD59XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzZW5kVXNlclRvQml0Z29HU2hhcmUoXG4gIGJpdGdvOiBCaXRHb0Jhc2UsXG4gIHdhbGxldElkOiBzdHJpbmcsXG4gIHR4UmVxdWVzdElkOiBzdHJpbmcsXG4gIHVzZXJUb0JpdGdvR1NoYXJlOiBHU2hhcmUsXG4gIGFwaU1vZGU6ICdmdWxsJyB8ICdsaXRlJyA9ICdsaXRlJ1xuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGlmICh1c2VyVG9CaXRnb0dTaGFyZS5pICE9PSBTaGFyZUtleVBvc2l0aW9uLlVTRVIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgR1NoYXJlLCBkb2VzbnQgYmVsb25nIHRvIHRoZSBVc2VyJyk7XG4gIH1cbiAgY29uc3Qgc2lnbmF0dXJlU2hhcmU6IFNpZ25hdHVyZVNoYXJlUmVjb3JkID0ge1xuICAgIGZyb206IFNpZ25hdHVyZVNoYXJlVHlwZS5VU0VSLFxuICAgIHRvOiBTaWduYXR1cmVTaGFyZVR5cGUuQklUR08sXG4gICAgc2hhcmU6IHVzZXJUb0JpdGdvR1NoYXJlLlIgKyB1c2VyVG9CaXRnb0dTaGFyZS5nYW1tYSxcbiAgfTtcblxuICBhd2FpdCBzZW5kU2lnbmF0dXJlU2hhcmUoYml0Z28sIHdhbGxldElkLCB0eFJlcXVlc3RJZCwgc2lnbmF0dXJlU2hhcmUsIHVuZGVmaW5lZCwgJ2VkZHNhJywgYXBpTW9kZSk7XG59XG5cbi8qKlxuICogUHJlcGFyZXMgYSBZU2hhcmUgdG8gYmUgZXhjaGFuZ2VkIHdpdGggb3RoZXIga2V5IGhvbGRlcnMuXG4gKiBPdXRwdXQgaXMgaW4gYSBmb3JtYXQgdGhhdCBpcyB1c2FibGUgd2l0aGluIEJpdEdvJ3MgZWNvc3lzdGVtLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMua2V5U2hhcmUgLSBUU1Mga2V5IHNoYXJlIG9mIHRoZSBwYXJ0eSBwcmVwYXJpbmcgZXhjaGFuZ2UgbWF0ZXJpYWxzXG4gKiBAcGFyYW0gcGFyYW1zLnJlY2lwaWVudEluZGV4IC0gaW5kZXggb2YgdGhlIHJlY2lwaWVudCAoMSwgMiwgb3IgMylcbiAqIEBwYXJhbSBwYXJhbXMucmVjaXBpZW50R3BnUHVibGljQXJtb3IgLSByZWNpcGllbnQncyBwdWJsaWMgZ3BnIGtleSBpbiBhcm1vciBmb3JtYXRcbiAqIEBwYXJhbSBwYXJhbXMuc2VuZGVyR3BnUHJpdmF0ZUFybW9yIC0gc2VuZGVyJ3MgcHJpdmF0ZSBncGcga2V5IGluIGFybW9yIGZvcm1hdFxuICogQHJldHVybnMgeyBFbmNyeXB0ZWRZU2hhcmUgfSBlbmNyeXB0ZWQgWSBTaGFyZVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZW5jcnlwdFlTaGFyZShwYXJhbXM6IHtcbiAga2V5U2hhcmU6IEtleVNoYXJlO1xuICByZWNpcGllbnRJbmRleDogbnVtYmVyO1xuICByZWNpcGllbnRHcGdQdWJsaWNBcm1vcjogc3RyaW5nO1xuICBzZW5kZXJHcGdQcml2YXRlQXJtb3I6IHN0cmluZztcbn0pOiBQcm9taXNlPEVuY3J5cHRlZFlTaGFyZT4ge1xuICBjb25zdCB7IGtleVNoYXJlLCByZWNpcGllbnRJbmRleCwgcmVjaXBpZW50R3BnUHVibGljQXJtb3IsIHNlbmRlckdwZ1ByaXZhdGVBcm1vciB9ID0gcGFyYW1zO1xuXG4gIGNvbnN0IHlTaGFyZSA9IGtleVNoYXJlLnlTaGFyZXNbcmVjaXBpZW50SW5kZXhdO1xuICBpZiAoIXlTaGFyZSkge1xuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCByZWNpcGllbnQnKTtcbiAgfVxuXG4gIGNvbnN0IHB1YmxpY1NoYXJlID0gQnVmZmVyLmNvbmNhdChbXG4gICAgQnVmZmVyLmZyb20oa2V5U2hhcmUudVNoYXJlLnksICdoZXgnKSxcbiAgICBCdWZmZXIuZnJvbShrZXlTaGFyZS51U2hhcmUuY2hhaW5jb2RlLCAnaGV4JyksXG4gIF0pLnRvU3RyaW5nKCdoZXgnKTtcblxuICBjb25zdCBwcml2YXRlU2hhcmUgPSBCdWZmZXIuY29uY2F0KFtCdWZmZXIuZnJvbSh5U2hhcmUudSwgJ2hleCcpLCBCdWZmZXIuZnJvbSh5U2hhcmUuY2hhaW5jb2RlLCAnaGV4JyldKS50b1N0cmluZyhcbiAgICAnaGV4J1xuICApO1xuXG4gIGNvbnN0IGVuY3J5cHRlZFByaXZhdGVTaGFyZSA9IGF3YWl0IGVuY3J5cHRBbmRTaWduVGV4dChwcml2YXRlU2hhcmUsIHJlY2lwaWVudEdwZ1B1YmxpY0FybW9yLCBzZW5kZXJHcGdQcml2YXRlQXJtb3IpO1xuXG4gIHJldHVybiB7XG4gICAgaTogeVNoYXJlLmksXG4gICAgajogeVNoYXJlLmosXG4gICAgcHVibGljU2hhcmUsXG4gICAgZW5jcnlwdGVkUHJpdmF0ZVNoYXJlLFxuICB9O1xufVxuIl19
|
|
223
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRkc2EuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYml0Z28vdHNzL2VkZHNhL2VkZHNhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLHlFQUFvSDtBQUdwSCxzQ0FBOEM7QUFDOUMseUNBTXVCO0FBQ3ZCLDRCQUE2QjtBQUM3QixzQ0FBNkQ7QUFFcEQsNkZBRkEscUJBQVksT0FFQTtBQUFFLG1HQUZBLDJCQUFrQixPQUVBO0FBRXpDOzs7Ozs7OztHQVFHO0FBQ0ksS0FBSyxVQUFVLGlCQUFpQixDQUFDLE1BSXZDO0lBQ0MsTUFBTSxhQUFLLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDekIsTUFBTSxHQUFHLEdBQUcsSUFBSSxhQUFLLEVBQUUsQ0FBQztJQUV4QixNQUFNLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixFQUFFLGNBQWMsRUFBRSxHQUFHLE1BQU0sQ0FBQztJQUM5RCxNQUFNLE9BQU8sR0FBYSxFQUFFLENBQUM7SUFFN0IsSUFBSSxXQUErQixDQUFDO0lBQ3BDLElBQUksVUFBOEIsQ0FBQztJQUNuQyxJQUFJLFlBQWdDLENBQUM7SUFFckMsS0FBSyxNQUFNLGVBQWUsSUFBSSxnQkFBZ0IsRUFBRTtRQUM5QyxNQUFNLFlBQVksR0FBRyxNQUFNLHlCQUFpQixDQUMxQyxlQUFlLENBQUMsTUFBTSxDQUFDLHFCQUFxQixFQUM1QyxlQUFlLENBQUMsaUJBQWlCLEVBQ2pDLGVBQWUsQ0FBQyxxQkFBcUIsQ0FDdEMsQ0FBQztRQUVGLE1BQU0sTUFBTSxHQUFXO1lBQ3JCLENBQUMsRUFBRSxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDM0IsQ0FBQyxFQUFFLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUMzQixDQUFDLEVBQUUsZUFBZSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDbEQsQ0FBQyxFQUFFLFlBQVksQ0FBQyxLQUFL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RyxNQUFNLENBQUMsTUFBTSxDQUFDO1FBQ2hDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDO1FBQ3JDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDO0tBQzlDLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFbkIsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FDL0csS0FBSyxDQUNOLENBQUM7SUFFRixNQUFNLHFCQUFxQixHQUFHLE1BQU0sMEJBQWtCLENBQUMsWUFBWSxFQUFFLHVCQUF1QixFQUFFLHFCQUFxQixDQUFDLENBQUM7SUFFckgsT0FBTztRQUNMLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNYLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNYLFdBQVc7UUFDWCxxQkFBcUI7S0FDdEIsQ0FBQztBQUNKLENBQUM7QUE5QkQsc0NBOEJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEVkZHNhLCB7IEdTaGFyZSwgSlNoYXJlLCBLZXlTaGFyZSwgUFNoYXJlLCBSU2hhcmUsIFNpZ25TaGFyZSwgWVNoYXJlIH0gZnJvbSAnLi8uLi8uLi8uLi9hY2NvdW50LWxpYi9tcGMvdHNzJztcbmltcG9ydCB7IEJpdEdvQmFzZSB9IGZyb20gJy4vLi4vLi4vYml0Z29CYXNlJztcbmltcG9ydCB7IERlY3J5cHRhYmxlWVNoYXJlLCBDb21iaW5lZEtleSwgU2lnbmluZ01hdGVyaWFsLCBFbmNyeXB0ZWRZU2hhcmUgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IFNoYXJlS2V5UG9zaXRpb24gfSBmcm9tICcuLy4uL3R5cGVzJztcbmltcG9ydCB7XG4gIGVuY3J5cHRBbmRTaWduVGV4dCxcbiAgcmVhZFNpZ25lZE1lc3NhZ2UsXG4gIFNpZ25hdHVyZVNoYXJlUmVjb3JkLFxuICBTaWduYXR1cmVTaGFyZVR5cGUsXG4gIFJlcXVlc3RUeXBlLFxufSBmcm9tICcuLy4uLy4uL3V0aWxzJztcbmltcG9ydCBfID0gcmVxdWlyZSgnbG9kYXNoJyk7XG5pbXBvcnQgeyBnZXRUeFJlcXVlc3QsIHNlbmRTaWduYXR1cmVTaGFyZSB9IGZyb20gJy4uL2NvbW1vbic7XG5cbmV4cG9ydCB7IGdldFR4UmVxdWVzdCwgc2VuZFNpZ25hdHVyZVNoYXJlIH07XG5cbi8qKlxuICogQ29tYmluZXMgWVNoYXJlcyB0byBjb21iaW5lIHRoZSBmaW5hbCBUU1Mga2V5XG4gKiBUaGlzIGNhbiBvbmx5IGJlIHVzZWQgdG8gY3JlYXRlIHRoZSBVc2VyIG9yIEJhY2t1cCBrZXkgc2luY2UgaXQgcmVxdWlyZXMgdGhlIGNvbW1vbiBrZXljaGFpbiBmcm9tIEJpdEdvIGZpcnN0XG4gKlxuICogQHBhcmFtIHBhcmFtcy5rZXlTaGFyZSAtIFRTUyBrZXkgc2hhcmVcbiAqIEBwYXJhbSBwYXJhbXMuZW5jcnlwdGVkWVNoYXJlcyAtIGVuY3J5cHRlZCBZU2hhcmVzIHdpdGggaW5mb3JtYXRpb24gb24gaG93IHRvIGRlY3J5cHRcbiAqIEBwYXJhbSBwYXJhbXMuY29tbW9uS2V5Y2hhaW4gLSBleHBlY3RlZCBjb21tb24ga2V5Y2hhaW4gb2YgdGhlIGNvbWJpbmVkIGtleVxuICogQHJldHVybnMge0NvbWJpbmVkS2V5fSBjb21iaW5lZCBUU1Mga2V5XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVDb21iaW5lZEtleShwYXJhbXM6IHtcbiAga2V5U2hhcmU6IEtleVNoYXJlO1xuICBlbmNyeXB0ZWRZU2hhcmVzOiBEZWNyeXB0YWJsZVlTaGFyZVtdO1xuICBjb21tb25LZXljaGFpbjogc3RyaW5nO1xufSk6IFByb21pc2U8Q29tYmluZWRLZXk+IHtcbiAgYXdhaXQgRWRkc2EuaW5pdGlhbGl6ZSgpO1xuICBjb25zdCBNUEMgPSBuZXcgRWRkc2EoKTtcblxuICBjb25zdCB7IGtleVNoYXJlLCBlbmNyeXB0ZWRZU2hhcmVzLCBjb21tb25LZXljaGFpbiB9ID0gcGFyYW1zO1xuICBjb25zdCB5U2hhcmVzOiBZU2hhcmVbXSA9IFtdO1xuXG4gIGxldCBiaXRnb1lTaGFyZTogWVNoYXJlIHwgdW5kZWZpbmVkO1xuICBsZXQgdXNlcllTaGFyZTogWVNoYXJlIHwgdW5kZWZpbmVkO1xuICBsZXQgYmFja3VwWVNoYXJlOiBZU2hhcmUgfCB1bmRlZmluZWQ7XG5cbiAgZm9yIChjb25zdCBlbmNyeXB0ZWRZU2hhcmUgb2YgZW5jcnlwdGVkWVNoYXJlcykge1xuICAgIGNvbnN0IHByaXZhdGVTaGFyZSA9IGF3YWl0IHJlYWRTaWduZWRNZXNzYWdlKFxuICAgICAgZW5jcnlwdGVkWVNoYXJlLnlTaGFyZS5lbmNyeXB0ZWRQcml2YXRlU2hhcmUsXG4gICAgICBlbmNyeXB0ZWRZU2hhcmUuc2VuZGVyUHVibGljQXJtb3IsXG4gICAgICBlbmNyeXB0ZWRZU2hhcmUucmVjaXBpZW50UHJpdmF0ZUFybW9yXG4gICAgKTtcblxuICAgIGNvbnN0IHlTaGFyZTogWVNoYXJlID0ge1xuICAgICAgaTogZW5jcnlwdGVkWVNoYXJlLnlTaGFyZS5pLFxuICAgICAgajogZW5jcnlwdGVkWVNoYXJlLnlTaGFyZS5qLFxuICAgICAgeTogZW5jcnlwdGVkWVNoYXJlLnlTaGFyZS5wdWJsaWNTaGFyZS5zbGljZSgwLCA2NCksXG4gICAgICB1OiBwcml2YXRlU2hhcmUuc2xpY2UoMCwgNjQpLFxuICAgICAgY2hhaW5jb2RlOiBwcml2YXRlU2hhcmUuc2xpY2UoNjQpLFxuICAgIH07XG5cbiAgICBzd2l0Y2ggKGVuY3J5cHRlZFlTaGFyZS55U2hhcmUuaikge1xuICAgICAgY2FzZSAxOlxuICAgICAgICB1c2VyWVNoYXJlID0geVNoYXJlO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjpcbiAgICAgICAgYmFja3VwWVNoYXJlID0geVNoYXJlO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMzpcbiAgICAgICAgYml0Z29ZU2hhcmUgPSB5U2hhcmU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIFlTaGFyZSBpbmRleCcpO1xuICAgIH1cblxuICAgIHlTaGFyZXMucHVzaCh5U2hhcmUpO1xuICB9XG5cbiAgY29uc3QgY29tYmluZWRLZXkgPSBNUEMua2V5Q29tYmluZShrZXlTaGFyZS51U2hhcmUsIHlTaGFyZXMpO1xuICBpZiAoY29tYmluZWRLZXkucFNoYXJlLnkgKyBjb21iaW5lZEtleS5wU2hhcmUuY2hhaW5jb2RlICE9PSBjb21tb25LZXljaGFpbikge1xuICAgIHRocm93IG5ldyBFcnJvcignQ29tbW9uIGtleWNoYWlucyBkbyBub3QgbWF0Y2gnKTtcbiAgfVxuICBpZiAoIWJpdGdvWVNoYXJlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIEJpdEdvIFkgU2hhcmUnKTtcbiAgfVxuXG4gIGNvbnN0IHNpZ25pbmdNYXRlcmlhbDogU2lnbmluZ01hdGVyaWFsID0ge1xuICAgIHVTaGFyZToga2V5U2hhcmUudVNoYXJlLFxuICAgIGJpdGdvWVNoYXJlLFxuICAgIGJhY2t1cFlTaGFyZSxcbiAgICB1c2VyWVNoYXJlLFxuICB9O1xuXG4gIHJldHVybiB7XG4gICAgc2lnbmluZ01hdGVyaWFsLFxuICAgIGNvbW1vbktleWNoYWluLFxuICB9O1xufVxuXG4vKipcbiAqIENyZWF0ZXMgdGhlIFVzZXIgU2lnbiBTaGFyZSBjb250YWluaW5nIHRoZSBVc2VyIFhTaGFyZSBhbmQgdGhlIFVzZXIgdG8gQml0Z28gUlNoYXJlXG4gKlxuICogQHBhcmFtIHtCdWZmZXJ9IHNpZ25hYmxlUGF5bG9hZCAtIHRoZSBzaWduYWJsZVBheWxvYWQgYXMgYSBidWZmZXJcbiAqIEBwYXJhbSB7UFNoYXJlfSBwU2hhcmUgLSBVc2VyJ3Mgc2lnbmluZyBtYXRlcmlhbFxuICogQHJldHVybnMge1Byb21pc2U8U2lnblNoYXJlPn0gLSBVc2VyIFNpZ24gU2hhcmVcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZVVzZXJTaWduU2hhcmUoc2lnbmFibGVQYXlsb2FkOiBCdWZmZXIsIHBTaGFyZTogUFNoYXJlKTogUHJvbWlzZTxTaWduU2hhcmU+IHtcbiAgY29uc3QgTVBDID0gYXdhaXQgRWRkc2EuaW5pdGlhbGl6ZSgpO1xuXG4gIGlmIChwU2hhcmUuaSAhPT0gU2hhcmVLZXlQb3NpdGlvbi5VU0VSKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIFBTaGFyZSwgUFNoYXJlIGRvZXNudCBiZWxvbmcgdG8gdGhlIFVzZXInKTtcbiAgfVxuICBjb25zdCBqU2hhcmU6IEpTaGFyZSA9IHsgaTogU2hhcmVLZXlQb3NpdGlvbi5CSVRHTywgajogU2hhcmVLZXlQb3NpdGlvbi5VU0VSIH07XG4gIHJldHVybiBNUEMuc2lnblNoYXJlKHNpZ25hYmxlUGF5bG9hZCwgcFNoYXJlLCBbalNoYXJlXSk7XG59XG5cbi8qKlxuICogQ3JlYXRlcyB0aGUgVXNlciB0byBCaXRnbyBHU2hhcmVcbiAqXG4gKiBAcGFyYW0ge1NpZ25TaGFyZX0gdXNlclNpZ25TaGFyZSAtIHRoZSBVc2VyIFNpZ24gU2hhcmVcbiAqIEBwYXJhbSB7U2lnbmF0dXJlU2hhcmVSZWNvcmR9IGJpdGdvVG9Vc2VyUlNoYXJlIC0gdGhlIEJpdGdvIHRvIFVzZXIgUlNoYXJlXG4gKiBAcGFyYW0ge1lTaGFyZX0gYmFja3VwVG9Vc2VyWVNoYXJlIC0gdGhlIGJhY2t1cCBrZXkgWSBzaGFyZSByZWNlaXZlZCBkdXJpbmcgd2FsbGV0IGNyZWF0aW9uXG4gKiBAcGFyYW0ge0J1ZmZlcn0gc2lnbmFibGVQYXlsb2FkIC0gdGhlIHNpZ25hYmxlIHBheWxvYWQgZnJvbSBhIHR4XG4gKiBAcmV0dXJucyB7UHJvbWlzZTxHU2hhcmU+fSAtIHRoZSBVc2VyIHRvIEJpdGdvIEdTaGFyZVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlVXNlclRvQml0R29HU2hhcmUoXG4gIHVzZXJTaWduU2hhcmU6IFNpZ25TaGFyZSxcbiAgYml0Z29Ub1VzZXJSU2hhcmU6IFNpZ25hdHVyZVNoYXJlUmVjb3JkLFxuICBiYWNrdXBUb1VzZXJZU2hhcmU6IFlTaGFyZSxcbiAgYml0Z29Ub1VzZXJZU2hhcmU6IFlTaGFyZSxcbiAgc2lnbmFibGVQYXlsb2FkOiBCdWZmZXJcbik6IFByb21pc2U8R1NoYXJlPiB7XG4gIGlmICh1c2VyU2lnblNoYXJlLnhTaGFyZS5pICE9PSBTaGFyZUtleVBvc2l0aW9uLlVTRVIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgWFNoYXJlLCBkb2VzbnQgYmVsb25nIHRvIHRoZSBVc2VyJyk7XG4gIH1cbiAgaWYgKGJpdGdvVG9Vc2VyUlNoYXJlLmZyb20gIT09IFNpZ25hdHVyZVNoYXJlVHlwZS5CSVRHTyB8fCBiaXRnb1RvVXNlclJTaGFyZS50byAhPT0gU2lnbmF0dXJlU2hhcmVUeXBlLlVTRVIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgUlNoYXJlLCBpcyBub3QgZnJvbSBCaXRnbyB0byBVc2VyJyk7XG4gIH1cbiAgaWYgKGJhY2t1cFRvVXNlcllTaGFyZS5pICE9PSBTaGFyZUtleVBvc2l0aW9uLlVTRVIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgWVNoYXJlLCBkb2VzbnQgYmVsb25nIHRvIHRoZSBVc2VyJyk7XG4gIH1cbiAgaWYgKGJhY2t1cFRvVXNlcllTaGFyZS5qICE9PSBTaGFyZUtleVBvc2l0aW9uLkJBQ0tVUCkge1xuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBZU2hhcmUsIGlzIG5vdCBiYWNrdXAga2V5Jyk7XG4gIH1cblxuICBjb25zdCBSU2hhcmU6IFJTaGFyZSA9IHtcbiAgICBpOiBTaGFyZUtleVBvc2l0aW9uLlVTRVIsXG4gICAgajogU2hhcmVLZXlQb3NpdGlvbi5CSVRHTyxcbiAgICB1OiBiaXRnb1RvVXNlcllTaGFyZS51LFxuICAgIHI6IGJpdGdvVG9Vc2VyUlNoYXJlLnNoYXJlLnN1YnN0cmluZygwLCA2NCksXG4gICAgUjogYml0Z29Ub1VzZXJSU2hhcmUuc2hhcmUuc3Vic3RyaW5nKDY0LCAxMjgpLFxuICB9O1xuXG4gIGNvbnN0IE1QQyA9IGF3YWl0IEVkZHNhLmluaXRpYWxpemUoKTtcbiAgcmV0dXJuIE1QQy5zaWduKHNpZ25hYmxlUGF5bG9hZCwgdXNlclNpZ25TaGFyZS54U2hhcmUsIFtSU2hhcmVdLCBbYmFja3VwVG9Vc2VyWVNoYXJlXSk7XG59XG5cbi8qKlxuICogU2VuZHMgdGhlIFVzZXIgdG8gQml0Z28gUlNoYXJlIHRvIEJpdGdvXG4gKiBAcGFyYW0ge0JpdEdvQmFzZX0gYml0Z28gLSB0aGUgYml0Z28gaW5zdGFuY2VcbiAqIEBwYXJhbSB7U3RyaW5nfSB3YWxsZXRJZCAtIHRoZSB3YWxsZXQgaWRcbiAqIEBwYXJhbSB7U3RyaW5nfSB0eFJlcXVlc3RJZCAtIHRoZSB0eFJlcXVlc3QgSWRcbiAqIEBwYXJhbSB7U2lnblNoYXJlfSB1c2VyU2lnblNoYXJlIC0gdGhlIHVzZXIgU2lnbiBTaGFyZVxuICogQHBhcmFtIHtTdHJpbmd9IGVuY3J5cHRlZFNpZ25lclNoYXJlIC0gc2lnbmVyIHNoYXJlIGVuY3J5cHRlZCB0byBiaXRnbyBrZXlcbiAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gb2ZmZXJVc2VyVG9CaXRnb1JTaGFyZShcbiAgYml0Z286IEJpdEdvQmFzZSxcbiAgd2FsbGV0SWQ6IHN0cmluZyxcbiAgdHhSZXF1ZXN0SWQ6IHN0cmluZyxcbiAgdXNlclNpZ25TaGFyZTogU2lnblNoYXJlLFxuICBlbmNyeXB0ZWRTaWduZXJTaGFyZTogc3RyaW5nLFxuICBhcGlNb2RlOiAnZnVsbCcgfCAnbGl0ZScgPSAnbGl0ZSdcbik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCByU2hhcmU6IFJTaGFyZSA9IHVzZXJTaWduU2hhcmUuclNoYXJlc1tTaGFyZUtleVBvc2l0aW9uLkJJVEdPXTtcbiAgaWYgKF8uaXNOaWwoclNoYXJlKSkge1xuICAgIHRocm93IG5ldyBFcnJvcigndXNlclRvQml0Z28gUlNoYXJlIG5vdCBmb3VuZCcpO1xuICB9XG4gIGlmIChyU2hhcmUuaSAhPT0gU2hhcmVLZXlQb3NpdGlvbi5CSVRHTyB8fCByU2hhcmUuaiAhPT0gU2hhcmVLZXlQb3NpdGlvbi5VU0VSKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIFJTaGFyZSwgaXMgbm90IGZyb20gVXNlciB0byBCaXRnbycpO1xuICB9XG4gIGNvbnN0IHNpZ25hdHVyZVNoYXJlOiBTaWduYXR1cmVTaGFyZVJlY29yZCA9IHtcbiAgICBmcm9tOiBTaWduYXR1cmVTaGFyZVR5cGUuVVNFUixcbiAgICB0bzogU2lnbmF0dXJlU2hhcmVUeXBlLkJJVEdPLFxuICAgIHNoYXJlOiByU2hhcmUuciArIHJTaGFyZS5SLFxuICB9O1xuXG4gIC8vIFRPRE8gKEJHLTU3OTQ0KTogaW1wbGVtZW50IG1lc3NhZ2Ugc2lnbmluZyBmb3IgRUREU0FcbiAgYXdhaXQgc2VuZFNpZ25hdHVyZVNoYXJlKFxuICAgIGJpdGdvLFxuICAgIHdhbGxldElkLFxuICAgIHR4UmVxdWVzdElkLFxuICAgIHNpZ25hdHVyZVNoYXJlLFxuICAgIFJlcXVlc3RUeXBlLnR4LFxuICAgIGVuY3J5cHRlZFNpZ25lclNoYXJlLFxuICAgICdlZGRzYScsXG4gICAgYXBpTW9kZVxuICApO1xufVxuXG4vKipcbiAqIEdldHMgdGhlIEJpdGdvIHRvIFVzZXIgUlNoYXJlIGZyb20gQml0Z29cbiAqXG4gKiBAcGFyYW0ge0JpdEdvQmFzZX0gYml0Z28gLSB0aGUgYml0Z28gaW5zdGFuY2VcbiAqIEBwYXJhbSB7U3RyaW5nfSB3YWxsZXRJZCAtIHRoZSB3YWxsZXQgaWRcbiAqIEBwYXJhbSB7U3RyaW5nfSB0eFJlcXVlc3RJZCAtIHRoZSB0eFJlcXVlc3QgSWRcbiAqIEByZXR1cm5zIHtQcm9taXNlPFNpZ25hdHVyZVNoYXJlUmVjb3JkPn0gLSBhIFNpZ25hdHVyZSBTaGFyZVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0Qml0Z29Ub1VzZXJSU2hhcmUoXG4gIGJpdGdvOiBCaXRHb0Jhc2UsXG4gIHdhbGxldElkOiBzdHJpbmcsXG4gIHR4UmVxdWVzdElkOiBzdHJpbmdcbik6IFByb21pc2U8U2lnbmF0dXJlU2hhcmVSZWNvcmQ+IHtcbiAgY29uc3QgdHhSZXF1ZXN0ID0gYXdhaXQgZ2V0VHhSZXF1ZXN0KGJpdGdvLCB3YWxsZXRJZCwgdHhSZXF1ZXN0SWQpO1xuICBjb25zdCBzaWduYXR1cmVTaGFyZXMgPVxuICAgIHR4UmVxdWVzdC5hcGlWZXJzaW9uID09PSAnZnVsbCcgPyB0eFJlcXVlc3QudHJhbnNhY3Rpb25zWzBdLnNpZ25hdHVyZVNoYXJlcyA6IHR4UmVxdWVzdC5zaWduYXR1cmVTaGFyZXM7XG4gIGlmIChfLmlzTmlsKHNpZ25hdHVyZVNoYXJlcykgfHwgXy5pc0VtcHR5KHNpZ25hdHVyZVNoYXJlcykpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYE5vIHNpZ25hdHVyZXMgc2hhcmVzIGZvdW5kIGZvciBpZDogJHt0eFJlcXVlc3RJZH1gKTtcbiAgfVxuICAvLyBhdCB0aGlzIHBvaW50IHdlIGV4cGVjdCB0aGUgb25seSBzaGFyZSB0byBiZSB0aGUgUlNoYXJlXG4gIGNvbnN0IGJpdGdvVG9Vc2VyUlNoYXJlID0gc2lnbmF0dXJlU2hhcmVzLmZpbmQoXG4gICAgKHNpZ1NoYXJlKSA9PiBzaWdTaGFyZS5mcm9tID09PSBTaWduYXR1cmVTaGFyZVR5cGUuQklUR08gJiYgc2lnU2hhcmUudG8gPT09IFNpZ25hdHVyZVNoYXJlVHlwZS5VU0VSXG4gICk7XG4gIGlmIChfLmlzTmlsKGJpdGdvVG9Vc2VyUlNoYXJlKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgQml0Z28gdG8gVXNlciBSU2hhcmUgbm90IGZvdW5kIGZvciBpZDogJHt0eFJlcXVlc3RJZH1gKTtcbiAgfVxuICByZXR1cm4gYml0Z29Ub1VzZXJSU2hhcmU7XG59XG5cbi8qKlxuICogU2VuZHMgdGhlIFVzZXIgdG8gQml0Z28gR1NoYXJlIHRvIEJpdGdvXG4gKlxuICogQHBhcmFtIHtCaXRHb0Jhc2V9IGJpdGdvIC0gdGhlIGJpdGdvIGluc3RhbmNlXG4gKiBAcGFyYW0ge1N0cmluZ30gd2FsbGV0SWQgLSB0aGUgd2FsbGV0IGlkXG4gKiBAcGFyYW0ge1N0cmluZ30gdHhSZXF1ZXN0SWQgLSB0aGUgdHhSZXF1ZXN0IElkXG4gKiBAcGFyYW0ge0dTaGFyZX0gdXNlclRvQml0Z29HU2hhcmUgLSB0aGUgVXNlciB0byBCaXRnbyBHU2hhcmVcbiAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2VuZFVzZXJUb0JpdGdvR1NoYXJlKFxuICBiaXRnbzogQml0R29CYXNlLFxuICB3YWxsZXRJZDogc3RyaW5nLFxuICB0eFJlcXVlc3RJZDogc3RyaW5nLFxuICB1c2VyVG9CaXRnb0dTaGFyZTogR1NoYXJlLFxuICBhcGlNb2RlOiAnZnVsbCcgfCAnbGl0ZScgPSAnbGl0ZSdcbik6IFByb21pc2U8dm9pZD4ge1xuICBpZiAodXNlclRvQml0Z29HU2hhcmUuaSAhPT0gU2hhcmVLZXlQb3NpdGlvbi5VU0VSKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIEdTaGFyZSwgZG9lc250IGJlbG9uZyB0byB0aGUgVXNlcicpO1xuICB9XG4gIGNvbnN0IHNpZ25hdHVyZVNoYXJlOiBTaWduYXR1cmVTaGFyZVJlY29yZCA9IHtcbiAgICBmcm9tOiBTaWduYXR1cmVTaGFyZVR5cGUuVVNFUixcbiAgICB0bzogU2lnbmF0dXJlU2hhcmVUeXBlLkJJVEdPLFxuICAgIHNoYXJlOiB1c2VyVG9CaXRnb0dTaGFyZS5SICsgdXNlclRvQml0Z29HU2hhcmUuZ2FtbWEsXG4gIH07XG5cbiAgLy8gVE9ETyAoQkctNTc5NDQpOiBpbXBsZW1lbnQgbWVzc2FnZSBzaWduaW5nIGZvciBFRERTQVxuICBhd2FpdCBzZW5kU2lnbmF0dXJlU2hhcmUoYml0Z28sIHdhbGxldElkLCB0eFJlcXVlc3RJZCwgc2lnbmF0dXJlU2hhcmUsIFJlcXVlc3RUeXBlLnR4LCB1bmRlZmluZWQsICdlZGRzYScsIGFwaU1vZGUpO1xufVxuXG4vKipcbiAqIFByZXBhcmVzIGEgWVNoYXJlIHRvIGJlIGV4Y2hhbmdlZCB3aXRoIG90aGVyIGtleSBob2xkZXJzLlxuICogT3V0cHV0IGlzIGluIGEgZm9ybWF0IHRoYXQgaXMgdXNhYmxlIHdpdGhpbiBCaXRHbydzIGVjb3N5c3RlbS5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zLmtleVNoYXJlIC0gVFNTIGtleSBzaGFyZSBvZiB0aGUgcGFydHkgcHJlcGFyaW5nIGV4Y2hhbmdlIG1hdGVyaWFsc1xuICogQHBhcmFtIHBhcmFtcy5yZWNpcGllbnRJbmRleCAtIGluZGV4IG9mIHRoZSByZWNpcGllbnQgKDEsIDIsIG9yIDMpXG4gKiBAcGFyYW0gcGFyYW1zLnJlY2lwaWVudEdwZ1B1YmxpY0FybW9yIC0gcmVjaXBpZW50J3MgcHVibGljIGdwZyBrZXkgaW4gYXJtb3IgZm9ybWF0XG4gKiBAcGFyYW0gcGFyYW1zLnNlbmRlckdwZ1ByaXZhdGVBcm1vciAtIHNlbmRlcidzIHByaXZhdGUgZ3BnIGtleSBpbiBhcm1vciBmb3JtYXRcbiAqIEByZXR1cm5zIHsgRW5jcnlwdGVkWVNoYXJlIH0gZW5jcnlwdGVkIFkgU2hhcmVcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGVuY3J5cHRZU2hhcmUocGFyYW1zOiB7XG4gIGtleVNoYXJlOiBLZXlTaGFyZTtcbiAgcmVjaXBpZW50SW5kZXg6IG51bWJlcjtcbiAgcmVjaXBpZW50R3BnUHVibGljQXJtb3I6IHN0cmluZztcbiAgc2VuZGVyR3BnUHJpdmF0ZUFybW9yOiBzdHJpbmc7XG59KTogUHJvbWlzZTxFbmNyeXB0ZWRZU2hhcmU+IHtcbiAgY29uc3QgeyBrZXlTaGFyZSwgcmVjaXBpZW50SW5kZXgsIHJlY2lwaWVudEdwZ1B1YmxpY0FybW9yLCBzZW5kZXJHcGdQcml2YXRlQXJtb3IgfSA9IHBhcmFtcztcblxuICBjb25zdCB5U2hhcmUgPSBrZXlTaGFyZS55U2hhcmVzW3JlY2lwaWVudEluZGV4XTtcbiAgaWYgKCF5U2hhcmUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgcmVjaXBpZW50Jyk7XG4gIH1cblxuICBjb25zdCBwdWJsaWNTaGFyZSA9IEJ1ZmZlci5jb25jYXQoW1xuICAgIEJ1ZmZlci5mcm9tKGtleVNoYXJlLnVTaGFyZS55LCAnaGV4JyksXG4gICAgQnVmZmVyLmZyb20oa2V5U2hhcmUudVNoYXJlLmNoYWluY29kZSwgJ2hleCcpLFxuICBdKS50b1N0cmluZygnaGV4Jyk7XG5cbiAgY29uc3QgcHJpdmF0ZVNoYXJlID0gQnVmZmVyLmNvbmNhdChbQnVmZmVyLmZyb20oeVNoYXJlLnUsICdoZXgnKSwgQnVmZmVyLmZyb20oeVNoYXJlLmNoYWluY29kZSwgJ2hleCcpXSkudG9TdHJpbmcoXG4gICAgJ2hleCdcbiAgKTtcblxuICBjb25zdCBlbmNyeXB0ZWRQcml2YXRlU2hhcmUgPSBhd2FpdCBlbmNyeXB0QW5kU2lnblRleHQocHJpdmF0ZVNoYXJlLCByZWNpcGllbnRHcGdQdWJsaWNBcm1vciwgc2VuZGVyR3BnUHJpdmF0ZUFybW9yKTtcblxuICByZXR1cm4ge1xuICAgIGk6IHlTaGFyZS5pLFxuICAgIGo6IHlTaGFyZS5qLFxuICAgIHB1YmxpY1NoYXJlLFxuICAgIGVuY3J5cHRlZFByaXZhdGVTaGFyZSxcbiAgfTtcbn1cbiJdfQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ecdsa.d.ts","sourceRoot":"","sources":["../../../../../../src/bitgo/utils/tss/ecdsa/ecdsa.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAsB,QAAQ,EAAW,MAAM,mBAAmB,CAAC;AAE1E,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,YAAY,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAqB,QAAQ,EAAE,MAAM,SAAS,CAAC;AACtD,OAAO,EAAe,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAIjE,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAK1C,kBAAkB;AAClB,qBAAa,UAAW,SAAQ,YAAY,CAAC,QAAQ,CAAC;IACpD,OAAO,CAAC,iBAAiB,CAAsC;gBAEnD,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,OAAO;YAKrD,iBAAiB;IAIzB,oBAAoB,IAAI,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC;IAYlD,kBAAkB;IACZ,eAAe,CAAC,MAAM,EAAE;QAC5B,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAChC,8BAA8B,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;KACrD,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAsC7B,kBAAkB,CAChB,UAAU,EAAE,iBAAiB,CAAC,MAAM,CAAC,EACrC,YAAY,EAAE,QAAQ,EACtB,cAAc,EAAE,QAAQ,EACxB,aAAa,EAAE,QAAQ,EACvB,UAAU,EAAE,MAAM,EAClB,8BAA8B,EAAE,MAAM,GACrC,OAAO,CAAC,QAAQ,CAAC;IAYpB,oBAAoB,CAClB,UAAU,EAAE,iBAAiB,CAAC,MAAM,CAAC,EACrC,YAAY,EAAE,QAAQ,EACtB,cAAc,EAAE,QAAQ,EACxB,aAAa,EAAE,QAAQ,EACvB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,QAAQ,CAAC;IAIpB,kBAAkB;IACZ,mBAAmB,CACvB,UAAU,EAAE,iBAAiB,CAAC,MAAM,CAAC,EACrC,YAAY,EAAE,QAAQ,EACtB,cAAc,EAAE,QAAQ,EACxB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,QAAQ,CAAC;IA2CpB,kBAAkB;IACZ,yBAAyB,CAC7B,UAAU,EAAE,OAAO,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAC7C,cAAc,EAAE,MAAM,EACtB,YAAY,EAAE,QAAQ,EACtB,cAAc,EAAE,QAAQ,EACxB,aAAa,EAAE,QAAQ,EACvB,UAAU,EAAE,MAAM,EAClB,8BAA8B,CAAC,EAAE,MAAM,GACtC,OAAO,CAAC,QAAQ,CAAC;IAgFpB;;;;;;OAMG;YACW,eAAe;
|
|
1
|
+
{"version":3,"file":"ecdsa.d.ts","sourceRoot":"","sources":["../../../../../../src/bitgo/utils/tss/ecdsa/ecdsa.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAsB,QAAQ,EAAW,MAAM,mBAAmB,CAAC;AAE1E,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,YAAY,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAqB,QAAQ,EAAE,MAAM,SAAS,CAAC;AACtD,OAAO,EAAe,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAIjE,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAK1C,kBAAkB;AAClB,qBAAa,UAAW,SAAQ,YAAY,CAAC,QAAQ,CAAC;IACpD,OAAO,CAAC,iBAAiB,CAAsC;gBAEnD,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,OAAO;YAKrD,iBAAiB;IAIzB,oBAAoB,IAAI,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC;IAYlD,kBAAkB;IACZ,eAAe,CAAC,MAAM,EAAE;QAC5B,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAChC,8BAA8B,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;KACrD,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAsC7B,kBAAkB,CAChB,UAAU,EAAE,iBAAiB,CAAC,MAAM,CAAC,EACrC,YAAY,EAAE,QAAQ,EACtB,cAAc,EAAE,QAAQ,EACxB,aAAa,EAAE,QAAQ,EACvB,UAAU,EAAE,MAAM,EAClB,8BAA8B,EAAE,MAAM,GACrC,OAAO,CAAC,QAAQ,CAAC;IAYpB,oBAAoB,CAClB,UAAU,EAAE,iBAAiB,CAAC,MAAM,CAAC,EACrC,YAAY,EAAE,QAAQ,EACtB,cAAc,EAAE,QAAQ,EACxB,aAAa,EAAE,QAAQ,EACvB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,QAAQ,CAAC;IAIpB,kBAAkB;IACZ,mBAAmB,CACvB,UAAU,EAAE,iBAAiB,CAAC,MAAM,CAAC,EACrC,YAAY,EAAE,QAAQ,EACtB,cAAc,EAAE,QAAQ,EACxB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,QAAQ,CAAC;IA2CpB,kBAAkB;IACZ,yBAAyB,CAC7B,UAAU,EAAE,OAAO,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAC7C,cAAc,EAAE,MAAM,EACtB,YAAY,EAAE,QAAQ,EACtB,cAAc,EAAE,QAAQ,EACxB,aAAa,EAAE,QAAQ,EACvB,UAAU,EAAE,MAAM,EAClB,8BAA8B,CAAC,EAAE,MAAM,GACtC,OAAO,CAAC,QAAQ,CAAC;IAgFpB;;;;;;OAMG;YACW,eAAe;IAqF7B;;;;;;OAMG;IACG,aAAa,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;IAI1D;;;;;;OAMG;IACG,uBAAuB,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;CAGrE"}
|
|
@@ -188,12 +188,12 @@ class EcdsaUtils extends baseTSSUtils_1.default {
|
|
|
188
188
|
const signerShare = userSigningMaterial.bitgoNShare.u + userSigningMaterial.bitgoNShare.chaincode;
|
|
189
189
|
const bitgoGpgKey = await opengpgUtils_1.getBitgoGpgPubKey(this.bitgo);
|
|
190
190
|
const encryptedSignerShare = await opengpgUtils_1.encryptText(signerShare, bitgoGpgKey);
|
|
191
|
-
const bitgoToUserAShare = (await ecdsa_1.default.sendShareToBitgo(this.bitgo, this.wallet.id(), txRequestId, types_1.SendShareType.KShare, userSignShare.kShare, encryptedSignerShare));
|
|
191
|
+
const bitgoToUserAShare = (await ecdsa_1.default.sendShareToBitgo(this.bitgo, this.wallet.id(), txRequestId, requestType, types_1.SendShareType.KShare, userSignShare.kShare, encryptedSignerShare));
|
|
192
192
|
const userGammaAndMuShares = await ecdsa_1.default.createUserGammaAndMuShare(userSignShare.wShare, bitgoToUserAShare);
|
|
193
193
|
const userOmicronAndDeltaShare = await ecdsa_1.default.createUserOmicronAndDeltaShare(userGammaAndMuShares.gShare);
|
|
194
194
|
const muShare = userGammaAndMuShares.muShare;
|
|
195
195
|
const dShare = userOmicronAndDeltaShare.dShare;
|
|
196
|
-
const bitgoToUserDShare = (await ecdsa_1.default.sendShareToBitgo(this.bitgo, this.wallet.id(), txRequestId, types_1.SendShareType.MUShare, { muShare, dShare, i: muShare.i }));
|
|
196
|
+
const bitgoToUserDShare = (await ecdsa_1.default.sendShareToBitgo(this.bitgo, this.wallet.id(), txRequestId, requestType, types_1.SendShareType.MUShare, { muShare, dShare, i: muShare.i }));
|
|
197
197
|
let signablePayload;
|
|
198
198
|
if (requestType === baseTypes_1.RequestType.tx) {
|
|
199
199
|
signablePayload = Buffer.from(txRequestResolved.transactions[0].unsignedTx.serializedTxHex, 'hex');
|
|
@@ -203,7 +203,7 @@ class EcdsaUtils extends baseTSSUtils_1.default {
|
|
|
203
203
|
signablePayload = Buffer.from(txRequestResolved.unsignedMessages[0].message, 'hex');
|
|
204
204
|
}
|
|
205
205
|
const userSShare = await ecdsa_1.default.createUserSignatureShare(userOmicronAndDeltaShare.oShare, bitgoToUserDShare, signablePayload);
|
|
206
|
-
await ecdsa_1.default.sendShareToBitgo(this.bitgo, this.wallet.id(), txRequestId, types_1.SendShareType.SShare, userSShare);
|
|
206
|
+
await ecdsa_1.default.sendShareToBitgo(this.bitgo, this.wallet.id(), txRequestId, requestType, types_1.SendShareType.SShare, userSShare);
|
|
207
207
|
return await common_1.getTxRequest(this.bitgo, this.wallet.id(), txRequestId);
|
|
208
208
|
}
|
|
209
209
|
/**
|
|
@@ -228,4 +228,4 @@ class EcdsaUtils extends baseTSSUtils_1.default {
|
|
|
228
228
|
}
|
|
229
229
|
}
|
|
230
230
|
exports.EcdsaUtils = EcdsaUtils;
|
|
231
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNkc2EuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYml0Z28vdXRpbHMvdHNzL2VjZHNhL2VjZHNhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLHlEQUErRDtBQUkvRCwrREFBb0U7QUFFcEUsbUVBQTJDO0FBRTNDLDRDQUFpRTtBQUNqRSxnREFBbUQ7QUFDbkQsb0RBQXlFO0FBQ3pFLHFEQUF3RjtBQUd4RixvREFBNEI7QUFFNUIsTUFBTSxhQUFhLEdBQUcsZUFBWSxDQUFDLGFBQWEsQ0FBQztBQUVqRCxrQkFBa0I7QUFDbEIsTUFBYSxVQUFXLFNBQVEsc0JBQXNCO0lBR3BELFlBQVksS0FBZ0IsRUFBRSxRQUFtQixFQUFFLE1BQWdCO1FBQ2pFLEtBQUssQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBSHpCLHNCQUFpQixHQUE0QixTQUFTLENBQUM7UUFJN0QsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFTyxLQUFLLENBQUMsaUJBQWlCLENBQUMsS0FBSztRQUNuQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsTUFBTSxnQ0FBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQsS0FBSyxDQUFDLG9CQUFvQjtRQUN4QixJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFO1lBQzNCLGdDQUFnQztZQUNoQyxNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDekMsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtnQkFDM0IsTUFBTSxJQUFJLEtBQUssQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO2FBQ2xEO1NBQ0Y7UUFFRCxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztJQUNoQyxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLEtBQUssQ0FBQyxl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QUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2hELGVBQWUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztTQUNyRjtRQUVELE1BQU0sVUFBVSxHQUFHLE1BQU0sZUFBWSxDQUFDLHdCQUF3QixDQUM1RCx3QkFBd0IsQ0FBQyxNQUFNLEVBQy9CLGlCQUFpQixFQUNqQixlQUFlLENBQ2hCLENBQUM7UUFFRixNQUFNLGVBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLHFCQUFhLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ2pILE9BQU8sTUFBTSxxQkFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsS0FBSyxDQUFDLGFBQWEsQ0FBQyxNQUFpQjtRQUNuQyxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxFQUFFLHVCQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxNQUFpQjtRQUM3QyxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxFQUFFLHVCQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDM0QsQ0FBQztDQUNGO0FBbFZELGdDQWtWQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVDRFNBLCBFY2RzYSB9IGZyb20gJy4uLy4uLy4uLy4uL2FjY291bnQtbGliL21wYy90c3MnO1xuaW1wb3J0ICogYXMgb3BlbnBncCBmcm9tICdvcGVucGdwJztcbmltcG9ydCB7IFNlcmlhbGl6ZWRLZXlQYWlyIH0gZnJvbSAnb3BlbnBncCc7XG5pbXBvcnQgeyBBZGRLZXljaGFpbk9wdGlvbnMsIEtleWNoYWluLCBLZXlUeXBlIH0gZnJvbSAnLi4vLi4vLi4va2V5Y2hhaW4nO1xuaW1wb3J0IEVDRFNBTWV0aG9kcywgeyBFQ0RTQU1ldGhvZFR5cGVzIH0gZnJvbSAnLi4vLi4vLi4vdHNzL2VjZHNhJztcbmltcG9ydCB7IElCYXNlQ29pbiwgS2V5Y2hhaW5zVHJpcGxldCB9IGZyb20gJy4uLy4uLy4uL2Jhc2VDb2luJztcbmltcG9ydCBiYXNlVFNTVXRpbHMgZnJvbSAnLi4vYmFzZVRTU1V0aWxzJztcbmltcG9ydCB7IERlY3J5cHRhYmxlTlNoYXJlLCBLZXlTaGFyZSB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgUmVxdWVzdFR5cGUsIFRTU1BhcmFtcywgVHhSZXF1ZXN0IH0gZnJvbSAnLi4vYmFzZVR5cGVzJztcbmltcG9ydCB7IGdldFR4UmVxdWVzdCB9IGZyb20gJy4uLy4uLy4uL3Rzcy9jb21tb24nO1xuaW1wb3J0IHsgQVNoYXJlLCBEU2hhcmUsIFNlbmRTaGFyZVR5cGUgfSBmcm9tICcuLi8uLi8uLi90c3MvZWNkc2EvdHlwZXMnO1xuaW1wb3J0IHsgZW5jcnlwdFRleHQsIGdlbmVyYXRlR1BHS2V5UGFpciwgZ2V0Qml0Z29HcGdQdWJLZXkgfSBmcm9tICcuLi8uLi9vcGVuZ3BnVXRpbHMnO1xuaW1wb3J0IHsgQml0R29CYXNlIH0gZnJvbSAnLi4vLi4vLi4vYml0Z29CYXNlJztcbmltcG9ydCB7IElXYWxsZXQgfSBmcm9tICcuLi8uLi8uLi93YWxsZXQnO1xuaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuXG5jb25zdCBlbmNyeXB0TlNoYXJlID0gRUNEU0FNZXRob2RzLmVuY3J5cHROU2hhcmU7XG5cbi8qKiBAaW5oZXJpdGRvYyAqL1xuZXhwb3J0IGNsYXNzIEVjZHNhVXRpbHMgZXh0ZW5kcyBiYXNlVFNTVXRpbHM8S2V5U2hhcmU+IHtcbiAgcHJpdmF0ZSBiaXRnb1B1YmxpY0dwZ0tleTogb3BlbnBncC5LZXkgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3IoYml0Z286IEJpdEdvQmFzZSwgYmFzZUNvaW46IElCYXNlQ29pbiwgd2FsbGV0PzogSVdhbGxldCkge1xuICAgIHN1cGVyKGJpdGdvLCBiYXNlQ29pbiwgd2FsbGV0KTtcbiAgICB0aGlzLnNldEJpdGdvR3BnUHViS2V5KGJpdGdvKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc2V0Qml0Z29HcGdQdWJLZXkoYml0Z28pIHtcbiAgICB0aGlzLmJpdGdvUHVibGljR3BnS2V5ID0gYXdhaXQgZ2V0Qml0Z29HcGdQdWJLZXkoYml0Z28pO1xuICB9XG5cbiAgYXN5bmMgZ2V0Qml0Z29QdWJsaWNHcGdLZXkoKTogUHJvbWlzZTxvcGVucGdwLktleT4ge1xuICAgIGlmICghdGhpcy5iaXRnb1B1YmxpY0dwZ0tleSkge1xuICAgICAgLy8gcmV0cnkgZ2V0dGluZyBiaXRnbydzIGdwZyBrZXlcbiAgICAgIGF3YWl0IHRoaXMuc2V0Qml0Z29HcGdQdWJLZXkodGhpcy5iaXRnbyk7XG4gICAgICBpZiAoIXRoaXMuYml0Z29QdWJsaWNHcGdLZXkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRmFpbGVkIHRvIGdldCBCaXRnbydzIGdwZyBrZXlcIik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuYml0Z29QdWJsaWNHcGdLZXk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgYXN5bmMgY3JlYXRlS2V5Y2hhaW5zKHBhcmFtczoge1xuICAgIHBhc3NwaHJhc2U6IHN0cmluZztcbiAgICBlbnRlcnByaXNlPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIG9yaWdpbmFsUGFzc2NvZGVFbmNyeXB0aW9uQ29kZT86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgfSk6IFByb21pc2U8S2V5Y2hhaW5zVHJpcGxldD4ge1xuICAgIGNvbnN0IE1QQyA9IG5ldyBFY2RzYSgpO1xuICAgIGNvbnN0IG0gPSAyO1xuICAgIGNvbnN0IG4gPSAzO1xuXG4gICAgY29uc3QgdXNlcktleVNoYXJlID0gYXdhaXQgTVBDLmtleVNoYXJlKDEsIG0sIG4pO1xuICAgIGNvbnN0IGJhY2t1cEtleVNoYXJlID0gYXdhaXQgTVBDLmtleVNoYXJlKDIsIG0sIG4pO1xuXG4gICAgY29uc3QgdXNlckdwZ0tleSA9IGF3YWl0IGdlbmVyYXRlR1BHS2V5UGFpcignc2VjcDI1NmsxJyk7XG5cbiAgICBjb25zdCBiaXRnb0tleWNoYWluID0gYXdhaXQgdGhpcy5jcmVhdGVCaXRnb0tleWNoYWluKHVzZXJHcGdLZXksIHVzZXJLZXlTaGFyZSwgYmFja3VwS2V5U2hhcmUsIHBhcmFtcy5lbnRlcnByaXNlKTtcbiAgICBjb25zdCB1c2VyS2V5Y2hhaW5Qcm9taXNlID0gdGhpcy5jcmVhdGVQYXJ0aWNpcGFudEtleWNoYWluKFxuICAgICAgdXNlckdwZ0tleSxcbiAgICAgIDEsXG4gICAgICB1c2VyS2V5U2hhcmUsXG4gICAgICBiYWNrdXBLZXlTaGFyZSxcbiAgICAgIGJpdGdvS2V5Y2hhaW4sXG4gICAgICBwYXJhbXMucGFzc3BocmFzZSxcbiAgICAgIHBhcmFtcy5vcmlnaW5hbFBhc3Njb2RlRW5jcnlwdGlvbkNvZGVcbiAgICApO1xuICAgIGNvbnN0IGJhY2t1cEtleWNoYWluUHJvbWlzZSA9IHRoaXMuY3JlYXRlUGFydGljaXBhbnRLZXljaGFpbihcbiAgICAgIHVzZXJHcGdLZXksXG4gICAgICAyLFxuICAgICAgdXNlcktleVNoYXJlLFxuICAgICAgYmFja3VwS2V5U2hhcmUsXG4gICAgICBiaXRnb0tleWNoYWluLFxuICAgICAgcGFyYW1zLnBhc3NwaHJhc2VcbiAgICApO1xuXG4gICAgY29uc3QgW3VzZXJLZXljaGFpbiwgYmFja3VwS2V5Y2hhaW5dID0gYXdhaXQgUHJvbWlzZS5hbGwoW3VzZXJLZXljaGFpblByb21pc2UsIGJhY2t1cEtleWNoYWluUHJvbWlzZV0pO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHVzZXJLZXljaGFpbixcbiAgICAgIGJhY2t1cEtleWNoYWluLFxuICAgICAgYml0Z29LZXljaGFpbixcbiAgICB9O1xuICB9XG5cbiAgY3JlYXRlVXNlcktleWNoYWluKFxuICAgIHVzZXJHcGdLZXk6IFNlcmlhbGl6ZWRLZXlQYWlyPHN0cmluZz4sXG4gICAgdXNlcktleVNoYXJlOiBLZXlTaGFyZSxcbiAgICBiYWNrdXBLZXlTaGFyZTogS2V5U2hhcmUsXG4gICAgYml0Z29LZXljaGFpbjogS2V5Y2hhaW4sXG4gICAgcGFzc3BocmFzZTogc3RyaW5nLFxuICAgIG9yaWdpbmFsUGFzc2NvZGVFbmNyeXB0aW9uQ29kZTogc3RyaW5nXG4gICk6IFByb21pc2U8S2V5Y2hhaW4+IHtcbiAgICByZXR1cm4gdGhpcy5jcmVhdGVQYXJ0aWNpcGFudEtleWNoYWluKFxuICAgICAgdXNlckdwZ0tleSxcbiAgICAgIDEsXG4gICAgICB1c2VyS2V5U2hhcmUsXG4gICAgICBiYWNrdXBLZXlTaGFyZSxcbiAgICAgIGJpdGdvS2V5Y2hhaW4sXG4gICAgICBwYXNzcGhyYXNlLFxuICAgICAgb3JpZ2luYWxQYXNzY29kZUVuY3J5cHRpb25Db2RlXG4gICAgKTtcbiAgfVxuXG4gIGNyZWF0ZUJhY2t1cEtleWNoYWluKFxuICAgIHVzZXJHcGdLZXk6IFNlcmlhbGl6ZWRLZXlQYWlyPHN0cmluZz4sXG4gICAgdXNlcktleVNoYXJlOiBLZXlTaGFyZSxcbiAgICBiYWNrdXBLZXlTaGFyZTogS2V5U2hhcmUsXG4gICAgYml0Z29LZXljaGFpbjogS2V5Y2hhaW4sXG4gICAgcGFzc3BocmFzZTogc3RyaW5nXG4gICk6IFByb21pc2U8S2V5Y2hhaW4+IHtcbiAgICByZXR1cm4gdGhpcy5jcmVhdGVQYXJ0aWNpcGFudEtleWNoYWluKHVzZXJHcGdLZXksIDIsIHVzZXJLZXlTaGFyZSwgYmFja3VwS2V5U2hhcmUsIGJpdGdvS2V5Y2hhaW4sIHBhc3NwaHJhc2UpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGFzeW5jIGNyZWF0ZUJpdGdvS2V5Y2hhaW4oXG4gICAgdXNlckdwZ0tleTogU2VyaWFsaXplZEtleVBhaXI8c3RyaW5nPixcbiAgICB1c2VyS2V5U2hhcmU6IEtleVNoYXJlLFxuICAgIGJhY2t1cEtleVNoYXJlOiBLZXlTaGFyZSxcbiAgICBlbnRlcnByaXNlPzogc3RyaW5nXG4gICk6IFByb21pc2U8S2V5Y2hhaW4+IHtcbiAgICBjb25zdCBiaXRnb1B1YmxpY0dwZ0tleSA9IGF3YWl0IHRoaXMuZ2V0Qml0Z29QdWJsaWNHcGdLZXkoKTtcbiAgICBjb25zdCByZWNpcGllbnRJbmRleCA9IDM7XG4gICAgY29uc3QgdXNlclRvQml0Z29TaGFyZSA9IGF3YWl0IGVuY3J5cHROU2hhcmUoXG4gICAgICB1c2VyS2V5U2hhcmUsXG4gICAgICByZWNpcGllbnRJbmRleCxcbiAgICAgIGJpdGdvUHVibGljR3BnS2V5LmFybW9yKCksXG4gICAgICB1c2VyR3BnS2V5LnByaXZhdGVLZXlcbiAgICApO1xuXG4gICAgY29uc3QgYmFja3VwVG9CaXRnb1NoYXJlID0gYXdhaXQgZW5jcnlwdE5TaGFyZShcbiAgICAgIGJhY2t1cEtleVNoYXJlLFxuICAgICAgcmVjaXBpZW50SW5kZXgsXG4gICAgICBiaXRnb1B1YmxpY0dwZ0tleS5hcm1vcigpLFxuICAgICAgdXNlckdwZ0tleS5wcml2YXRlS2V5XG4gICAgKTtcblxuICAgIGNvbnN0IGNyZWF0ZUJpdEdvTVBDUGFyYW1zOiBBZGRLZXljaGFpbk9wdGlvbnMgPSB7XG4gICAgICBrZXlUeXBlOiAndHNzJyBhcyBLZXlUeXBlLFxuICAgICAgc291cmNlOiAnYml0Z28nLFxuICAgICAga2V5U2hhcmVzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBmcm9tOiAndXNlcicsXG4gICAgICAgICAgdG86ICdiaXRnbycsXG4gICAgICAgICAgcHVibGljU2hhcmU6IHVzZXJUb0JpdGdvU2hhcmUucHVibGljU2hhcmUsXG4gICAgICAgICAgcHJpdmF0ZVNoYXJlOiB1c2VyVG9CaXRnb1NoYXJlLmVuY3J5cHRlZFByaXZhdGVTaGFyZSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGZyb206ICdiYWNrdXAnLFxuICAgICAgICAgIHRvOiAnYml0Z28nLFxuICAgICAgICAgIHB1YmxpY1NoYXJlOiBiYWNrdXBUb0JpdGdvU2hhcmUucHVibGljU2hhcmUsXG4gICAgICAgICAgcHJpdmF0ZVNoYXJlOiBiYWNrdXBUb0JpdGdvU2hhcmUuZW5jcnlwdGVkUHJpdmF0ZVNoYXJlLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIHVzZXJHUEdQdWJsaWNLZXk6IHVzZXJHcGdLZXkucHVibGljS2V5LFxuICAgICAgYmFja3VwR1BHUHVibGljS2V5OiB1c2VyR3BnS2V5LnB1YmxpY0tleSxcbiAgICAgIGVudGVycHJpc2U6IGVudGVycHJpc2UsXG4gICAgfTtcblxuICAgIGNvbnN0IGtleWNoYWlucyA9IGF3YWl0IHRoaXMuYmFzZUNvaW4ua2V5Y2hhaW5zKCkuYWRkKGNyZWF0ZUJpdEdvTVBDUGFyYW1zKTtcbiAgICByZXR1cm4ga2V5Y2hhaW5zO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGFzeW5jIGNyZWF0ZVBhcnRpY2lwYW50S2V5Y2hhaW4oXG4gICAgdXNlckdwZ0tleTogb3BlbnBncC5TZXJpYWxpemVkS2V5UGFpcjxzdHJpbmc+LFxuICAgIHJlY2lwaWVudEluZGV4OiBudW1iZXIsXG4gICAgdXNlcktleVNoYXJlOiBLZXlTaGFyZSxcbiAgICBiYWNrdXBLZXlTaGFyZTogS2V5U2hhcmUsXG4gICAgYml0Z29LZXljaGFpbjogS2V5Y2hhaW4sXG4gICAgcGFzc3BocmFzZTogc3RyaW5nLFxuICAgIG9yaWdpbmFsUGFzc2NvZGVFbmNyeXB0aW9uQ29kZT86IHN0cmluZ1xuICApOiBQcm9taXNlPEtleWNoYWluPiB7XG4gICAgY29uc3QgYml0Z29LZXlTaGFyZXMgPSBiaXRnb0tleWNoYWluLmtleVNoYXJlcztcbiAgICBpZiAoIWJpdGdvS2V5U2hhcmVzKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ01pc3NpbmcgQml0R28ga2V5IHNoYXJlcycpO1xuICAgIH1cbiAgICBpZiAoIWJpdGdvS2V5Y2hhaW4uY29tbW9uS2V5Y2hhaW4pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgTWlzc2luZyBjb21tb24ga2V5IGNoYWluOiAke2JpdGdvS2V5Y2hhaW4uY29tbW9uS2V5Y2hhaW59YCk7XG4gICAgfVxuXG4gICAgbGV0IHVzZXI6IHN0cmluZztcbiAgICBsZXQga2V5U2hhcmU6IEtleVNoYXJlO1xuICAgIGxldCBvdGhlclNoYXJlOiBLZXlTaGFyZTtcbiAgICBpZiAocmVjaXBpZW50SW5kZXggPT09IDEpIHtcbiAgICAgIGtleVNoYXJlID0gdXNlcktleVNoYXJlO1xuICAgICAgb3RoZXJTaGFyZSA9IGJhY2t1cEtleVNoYXJlO1xuICAgICAgdXNlciA9ICd1c2VyJztcbiAgICB9IGVsc2UgaWYgKHJlY2lwaWVudEluZGV4ID09PSAyKSB7XG4gICAgICBrZXlTaGFyZSA9IGJhY2t1cEtleVNoYXJlO1xuICAgICAgb3RoZXJTaGFyZSA9IHVzZXJLZXlTaGFyZTtcbiAgICAgIHVzZXIgPSAnYmFja3VwJztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHVzZXIgaW5kZXgnKTtcbiAgICB9XG5cbiAgICBjb25zdCBiaXRHb1RvVXNlclNoYXJlID0gYml0Z29LZXlTaGFyZXMuZmluZCgoa2V5U2hhcmUpID0+IGtleVNoYXJlLmZyb20gPT09ICdiaXRnbycgJiYga2V5U2hhcmUudG8gPT09IHVzZXIpO1xuICAgIGlmICghYml0R29Ub1VzZXJTaGFyZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIEJpdEdvIHRvIFVzZXIga2V5IHNoYXJlJyk7XG4gICAgfVxuXG4gICAgY29uc3QgYml0Z29QdWJsaWNHcGdLZXkgPSBhd2FpdCB0aGlzLmdldEJpdGdvUHVibGljR3BnS2V5KCk7XG5cbiAgICBjb25zdCBiYWNrdXBUb1VzZXJTaGFyZSA9IGF3YWl0IGVuY3J5cHROU2hhcmUoXG4gICAgICBvdGhlclNoYXJlLFxuICAgICAgcmVjaXBpZW50SW5kZXgsXG4gICAgICB1c2VyR3BnS2V5LnB1YmxpY0tleSxcbiAgICAgIHVzZXJHcGdLZXkucHJpdmF0ZUtleVxuICAgICk7XG4gICAgY29uc3QgZW5jcnlwdGVkTlNoYXJlczogRGVjcnlwdGFibGVOU2hhcmVbXSA9IFtcbiAgICAgIHtcbiAgICAgICAgblNoYXJlOiBiYWNrdXBUb1VzZXJTaGFyZSxcbiAgICAgICAgcmVjaXBpZW50UHJpdmF0ZUFybW9yOiB1c2VyR3BnS2V5LnByaXZhdGVLZXksXG4gICAgICAgIHNlbmRlclB1YmxpY0FybW9yOiB1c2VyR3BnS2V5LnB1YmxpY0tleSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5TaGFyZToge1xuICAgICAgICAgIGk6IHJlY2lwaWVudEluZGV4LFxuICAgICAgICAgIGo6IDMsXG4gICAgICAgICAgcHVibGljU2hhcmU6IGJpdEdvVG9Vc2VyU2hhcmUucHVibGljU2hhcmUsXG4gICAgICAgICAgZW5jcnlwdGVkUHJpdmF0ZVNoYXJlOiBiaXRHb1RvVXNlclNoYXJlLnByaXZhdGVTaGFyZSxcbiAgICAgICAgfSxcbiAgICAgICAgcmVjaXBpZW50UHJpdmF0ZUFybW9yOiB1c2VyR3BnS2V5LnByaXZhdGVLZXksXG4gICAgICAgIHNlbmRlclB1YmxpY0FybW9yOiBiaXRnb1B1YmxpY0dwZ0tleS5hcm1vcigpLFxuICAgICAgfSxcbiAgICBdO1xuXG4gICAgY29uc3QgdXNlckNvbWJpbmVkS2V5ID0gYXdhaXQgRUNEU0FNZXRob2RzLmNyZWF0ZUNvbWJpbmVkS2V5KFxuICAgICAga2V5U2hhcmUsXG4gICAgICBlbmNyeXB0ZWROU2hhcmVzLFxuICAgICAgYml0Z29LZXljaGFpbi5jb21tb25LZXljaGFpblxuICAgICk7XG5cbiAgICBjb25zdCBwcnYgPSBKU09OLnN0cmluZ2lmeSh1c2VyQ29tYmluZWRLZXkuc2lnbmluZ01hdGVyaWFsKTtcbiAgICBjb25zdCB1c2VyS2V5Y2hhaW5QYXJhbXMgPSB7XG4gICAgICBzb3VyY2U6IHVzZXIsXG4gICAgICBrZXlUeXBlOiAndHNzJyBhcyBLZXlUeXBlLFxuICAgICAgY29tbW9uS2V5Y2hhaW46IGJpdGdvS2V5Y2hhaW4uY29tbW9uS2V5Y2hhaW4sXG4gICAgICBwcnY6IHBydixcbiAgICAgIGVuY3J5cHRlZFBydjogdGhpcy5iaXRnby5lbmNyeXB0KHtcbiAgICAgICAgaW5wdXQ6IHBydixcbiAgICAgICAgcGFzc3dvcmQ6IHBhc3NwaHJhc2UsXG4gICAgICB9KSxcbiAgICAgIG9yaWdpbmFsUGFzc2NvZGVFbmNyeXB0aW9uQ29kZSxcbiAgICB9O1xuXG4gICAgY29uc3Qga2V5Y2hhaW5zID0gdGhpcy5iYXNlQ29pbi5rZXljaGFpbnMoKTtcbiAgICBjb25zdCByZXN1bHQgPVxuICAgICAgcmVjaXBpZW50SW5kZXggPT09IDEgPyBhd2FpdCBrZXljaGFpbnMuYWRkKHVzZXJLZXljaGFpblBhcmFtcykgOiBhd2FpdCBrZXljaGFpbnMuY3JlYXRlQmFja3VwKHVzZXJLZXljaGFpblBhcmFtcyk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHNpZ25pbmcga2V5LCB0eFJlcXVlc3RSZXNvbHZlZCBhbmQgdHhSZXF1ZXN0SWRcbiAgICogQHBhcmFtIHtzdHJpbmcgfCBUeFJlcXVlc3R9IHBhcmFtcy50eFJlcXVlc3QgLSB0cmFuc2FjdGlvbiByZXF1ZXN0IG9iamVjdCBvciBpZFxuICAgKiBAcGFyYW0ge3N0cmluZ30gcGFyYW1zLnBydiAtIGRlY3J5cHRlZCBwcml2YXRlIGtleVxuICAgKiBAcGFyYW0geyBzdHJpbmd9IHBhcmFtcy5yZXFJZCAtIHJlcXVlc3QgaWRcbiAgICogQHJldHVybnMge1Byb21pc2U8RUNEU0FTaWduaW5nUmVxdWVzdEJhc2VSZXN1bHQ+fVxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBzaWduUmVxdWVzdEJhc2UocGFyYW1zOiBUU1NQYXJhbXMsIHJlcXVlc3RUeXBlOiBSZXF1ZXN0VHlwZSk6IFByb21pc2U8VHhSZXF1ZXN0PiB7XG4gICAgbGV0IHR4UmVxdWVzdFJlc29sdmVkOiBUeFJlcXVlc3Q7XG4gICAgbGV0IHR4UmVxdWVzdElkOiBzdHJpbmc7XG5cbiAgICBjb25zdCB7IHR4UmVxdWVzdCwgcHJ2IH0gPSBwYXJhbXM7XG5cbiAgICBpZiAodHlwZW9mIHR4UmVxdWVzdCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHR4UmVxdWVzdFJlc29sdmVkID0gYXdhaXQgZ2V0VHhSZXF1ZXN0KHRoaXMuYml0Z28sIHRoaXMud2FsbGV0LmlkKCksIHR4UmVxdWVzdCk7XG4gICAgICB0eFJlcXVlc3RJZCA9IHR4UmVxdWVzdFJlc29sdmVkLnR4UmVxdWVzdElkO1xuICAgIH0gZWxzZSB7XG4gICAgICB0eFJlcXVlc3RSZXNvbHZlZCA9IHR4UmVxdWVzdDtcbiAgICAgIHR4UmVxdWVzdElkID0gdHhSZXF1ZXN0LnR4UmVxdWVzdElkO1xuICAgIH1cblxuICAgIGNvbnN0IHVzZXJTaWduaW5nTWF0ZXJpYWw6IEVDRFNBTWV0aG9kVHlwZXMuU2lnbmluZ01hdGVyaWFsID0gSlNPTi5wYXJzZShwcnYpO1xuICAgIGlmICh1c2VyU2lnbmluZ01hdGVyaWFsLnBTaGFyZS5pICE9PSAxKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgdXNlciBrZXknKTtcbiAgICB9XG4gICAgaWYgKCF1c2VyU2lnbmluZ01hdGVyaWFsLmJhY2t1cE5TaGFyZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHVzZXIga2V5IC0gbWlzc2luZyBiYWNrdXBOU2hhcmUnKTtcbiAgICB9XG5cbiAgICBjb25zdCBNUEMgPSBuZXcgRWNkc2EoKTtcbiAgICBjb25zdCBzaWduaW5nS2V5ID0gTVBDLmtleUNvbWJpbmUodXNlclNpZ25pbmdNYXRlcmlhbC5wU2hhcmUsIFtcbiAgICAgIHVzZXJTaWduaW5nTWF0ZXJpYWwuYml0Z29OU2hhcmUsXG4gICAgICB1c2VyU2lnbmluZ01hdGVyaWFsLmJhY2t1cE5TaGFyZSxcbiAgICBdKTtcblxuICAgIGNvbnN0IHVzZXJTaWduU2hhcmUgPSBhd2FpdCBFQ0RTQU1ldGhvZHMuY3JlYXRlVXNlclNpZ25TaGFyZShzaWduaW5nS2V5LnhTaGFyZSwgc2lnbmluZ0tleS55U2hhcmVzWzNdKTtcbiAgICBjb25zdCBzaWduZXJTaGFyZSA9IHVzZXJTaWduaW5nTWF0ZXJpYWwuYml0Z29OU2hhcmUudSArIHVzZXJTaWduaW5nTWF0ZXJpYWwuYml0Z29OU2hhcmUuY2hhaW5jb2RlO1xuICAgIGNvbnN0IGJpdGdvR3BnS2V5ID0gYXdhaXQgZ2V0Qml0Z29HcGdQdWJLZXkodGhpcy5iaXRnbyk7XG4gICAgY29uc3QgZW5jcnlwdGVkU2lnbmVyU2hhcmUgPSBhd2FpdCBlbmNyeXB0VGV4dChzaWduZXJTaGFyZSwgYml0Z29HcGdLZXkpO1xuXG4gICAgY29uc3QgYml0Z29Ub1VzZXJBU2hhcmUgPSAoYXdhaXQgRUNEU0FNZXRob2RzLnNlbmRTaGFyZVRvQml0Z28oXG4gICAgICB0aGlzLmJpdGdvLFxuICAgICAgdGhpcy53YWxsZXQuaWQoKSxcbiAgICAgIHR4UmVxdWVzdElkLFxuICAgICAgU2VuZFNoYXJlVHlwZS5LU2hhcmUsXG4gICAgICB1c2VyU2lnblNoYXJlLmtTaGFyZSxcbiAgICAgIGVuY3J5cHRlZFNpZ25lclNoYXJlXG4gICAgKSkgYXMgQVNoYXJlO1xuXG4gICAgY29uc3QgdXNlckdhbW1hQW5kTXVTaGFyZXMgPSBhd2FpdCBFQ0RTQU1ldGhvZHMuY3JlYXRlVXNlckdhbW1hQW5kTXVTaGFyZSh1c2VyU2lnblNoYXJlLndTaGFyZSwgYml0Z29Ub1VzZXJBU2hhcmUpO1xuICAgIGNvbnN0IHVzZXJPbWljcm9uQW5kRGVsdGFTaGFyZSA9IGF3YWl0IEVDRFNBTWV0aG9kcy5jcmVhdGVVc2VyT21pY3JvbkFuZERlbHRhU2hhcmUoXG4gICAgICB1c2VyR2FtbWFBbmRNdVNoYXJlcy5nU2hhcmUgYXMgRUNEU0EuR1NoYXJlXG4gICAgKTtcblxuICAgIGNvbnN0IG11U2hhcmUgPSB1c2VyR2FtbWFBbmRNdVNoYXJlcy5tdVNoYXJlITtcbiAgICBjb25zdCBkU2hhcmUgPSB1c2VyT21pY3JvbkFuZERlbHRhU2hhcmUuZFNoYXJlO1xuICAgIGNvbnN0IGJpdGdvVG9Vc2VyRFNoYXJlID0gKGF3YWl0IEVDRFNBTWV0aG9kcy5zZW5kU2hhcmVUb0JpdGdvKFxuICAgICAgdGhpcy5iaXRnbyxcbiAgICAgIHRoaXMud2FsbGV0LmlkKCksXG4gICAgICB0eFJlcXVlc3RJZCxcbiAgICAgIFNlbmRTaGFyZVR5cGUuTVVTaGFyZSxcbiAgICAgIHsgbXVTaGFyZSwgZFNoYXJlLCBpOiBtdVNoYXJlLmkgfVxuICAgICkpIGFzIERTaGFyZTtcblxuICAgIGxldCBzaWduYWJsZVBheWxvYWQ7XG5cbiAgICBpZiAocmVxdWVzdFR5cGUgPT09IFJlcXVlc3RUeXBlLnR4KSB7XG4gICAgICBzaWduYWJsZVBheWxvYWQgPSBCdWZmZXIuZnJvbSh0eFJlcXVlc3RSZXNvbHZlZC50cmFuc2FjdGlvbnNbMF0udW5zaWduZWRUeC5zZXJpYWxpemVkVHhIZXgsICdoZXgnKTtcbiAgICB9IGVsc2UgaWYgKHJlcXVlc3RUeXBlID09PSBSZXF1ZXN0VHlwZS5tZXNzYWdlKSB7XG4gICAgICBhc3NlcnQodHhSZXF1ZXN0UmVzb2x2ZWQudW5zaWduZWRNZXNzYWdlcz8uWzBdKTtcbiAgICAgIHNpZ25hYmxlUGF5bG9hZCA9IEJ1ZmZlci5mcm9tKHR4UmVxdWVzdFJlc29sdmVkLnVuc2lnbmVkTWVzc2FnZXNbMF0ubWVzc2FnZSwgJ2hleCcpO1xuICAgIH1cblxuICAgIGNvbnN0IHVzZXJTU2hhcmUgPSBhd2FpdCBFQ0RTQU1ldGhvZHMuY3JlYXRlVXNlclNpZ25hdHVyZVNoYXJlKFxuICAgICAgdXNlck9taWNyb25BbmREZWx0YVNoYXJlLm9TaGFyZSxcbiAgICAgIGJpdGdvVG9Vc2VyRFNoYXJlLFxuICAgICAgc2lnbmFibGVQYXlsb2FkXG4gICAgKTtcblxuICAgIGF3YWl0IEVDRFNBTWV0aG9kcy5zZW5kU2hhcmVUb0JpdGdvKHRoaXMuYml0Z28sIHRoaXMud2FsbGV0LmlkKCksIHR4UmVxdWVzdElkLCBTZW5kU2hhcmVUeXBlLlNTaGFyZSwgdXNlclNTaGFyZSk7XG4gICAgcmV0dXJuIGF3YWl0IGdldFR4UmVxdWVzdCh0aGlzLmJpdGdvLCB0aGlzLndhbGxldC5pZCgpLCB0eFJlcXVlc3RJZCk7XG4gIH1cblxuICAvKipcbiAgICogU2lnbnMgdGhlIHRyYW5zYWN0aW9uIGFzc29jaWF0ZWQgdG8gdGhlIHRyYW5zYWN0aW9uIHJlcXVlc3QuXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgVHhSZXF1ZXN0fSBwYXJhbXMudHhSZXF1ZXN0IC0gdHJhbnNhY3Rpb24gcmVxdWVzdCBvYmplY3Qgb3IgaWRcbiAgICogQHBhcmFtIHtzdHJpbmd9IHBhcmFtcy5wcnYgLSBkZWNyeXB0ZWQgcHJpdmF0ZSBrZXlcbiAgICogQHBhcmFtIHtzdHJpbmd9IHBhcmFtcy5yZXFJZCAtIHJlcXVlc3QgaWRcbiAgICogQHJldHVybnMge1Byb21pc2U8VHhSZXF1ZXN0Pn0gZnVsbHkgc2lnbmVkIFR4UmVxdWVzdCBvYmplY3RcbiAgICovXG4gIGFzeW5jIHNpZ25UeFJlcXVlc3QocGFyYW1zOiBUU1NQYXJhbXMpOiBQcm9taXNlPFR4UmVxdWVzdD4ge1xuICAgIHJldHVybiB0aGlzLnNpZ25SZXF1ZXN0QmFzZShwYXJhbXMsIFJlcXVlc3RUeXBlLnR4KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTaWducyB0aGUgbWVzc2FnZSBhc3NvY2lhdGVkIHRvIHRoZSB0cmFuc2FjdGlvbiByZXF1ZXN0LlxuICAgKiBAcGFyYW0ge3N0cmluZyB8IFR4UmVxdWVzdH0gcGFyYW1zLnR4UmVxdWVzdCAtIHRyYW5zYWN0aW9uIHJlcXVlc3Qgb2JqZWN0IG9yIGlkXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwYXJhbXMucHJ2IC0gZGVjcnlwdGVkIHByaXZhdGUga2V5XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwYXJhbXMucmVxSWQgLSByZXF1ZXN0IGlkXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPFR4UmVxdWVzdD59IGZ1bGx5IHNpZ25lZCBUeFJlcXVlc3Qgb2JqZWN0XG4gICAqL1xuICBhc3luYyBzaWduVHhSZXF1ZXN0Rm9yTWVzc2FnZShwYXJhbXM6IFRTU1BhcmFtcyk6IFByb21pc2U8VHhSZXF1ZXN0PiB7XG4gICAgcmV0dXJuIHRoaXMuc2lnblJlcXVlc3RCYXNlKHBhcmFtcywgUmVxdWVzdFR5cGUubWVzc2FnZSk7XG4gIH1cbn1cbiJdfQ==
|
|
231
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNkc2EuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYml0Z28vdXRpbHMvdHNzL2VjZHNhL2VjZHNhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLHlEQUErRDtBQUkvRCwrREFBb0U7QUFFcEUsbUVBQTJDO0FBRTNDLDRDQUFpRTtBQUNqRSxnREFBbUQ7QUFDbkQsb0RBQXlFO0FBQ3pFLHFEQUF3RjtBQUd4RixvREFBNEI7QUFFNUIsTUFBTSxhQUFhLEdBQUcsZUFBWSxDQUFDLGFBQWEsQ0FBQztBQUVqRCxrQkFBa0I7QUFDbEIsTUFBYSxVQUFXLFNBQVEsc0JBQXNCO0lBR3BELFlBQVksS0FBZ0IsRUFBRSxRQUFtQixFQUFFLE1BQWdCO1FBQ2pFLEtBQUssQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBSHpCLHNCQUFpQixHQUE0QixTQUFTLENBQUM7UUFJN0QsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFTyxLQUFLLENBQUMsaUJBQWlCLENBQUMsS0FBSztRQUNuQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsTUFBTSxnQ0FBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQsS0FBSyxDQUFDLG9CQUFvQjtRQUN4QixJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFO1lBQzNCLGdDQUFnQztZQUNoQyxNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDekMsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtnQkFDM0IsTUFBTSxJQUFJLEtBQUssQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO2FBQ2xEO1NBQ0Y7UUFFRCxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztJQUNoQyxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLEtBQUssQ0FBQyxl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LENBQUMsZ0JBQWdCLDBDQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDaEQsZUFBZSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQ3JGO1FBRUQsTUFBTSxVQUFVLEdBQUcsTUFBTSxlQUFZLENBQUMsd0JBQXdCLENBQzVELHdCQUF3QixDQUFDLE1BQU0sRUFDL0IsaUJBQWlCLEVBQ2pCLGVBQWUsQ0FDaEIsQ0FBQztRQUVGLE1BQU0sZUFBWSxDQUFDLGdCQUFnQixDQUNqQyxJQUFJLENBQUMsS0FBSyxFQUNWLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLEVBQ2hCLFdBQVcsRUFDWCxXQUFXLEVBQ1gscUJBQWEsQ0FBQyxNQUFNLEVBQ3BCLFVBQVUsQ0FDWCxDQUFDO1FBQ0YsT0FBTyxNQUFNLHFCQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxLQUFLLENBQUMsYUFBYSxDQUFDLE1BQWlCO1FBQ25DLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLEVBQUUsdUJBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsS0FBSyxDQUFDLHVCQUF1QixDQUFDLE1BQWlCO1FBQzdDLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLEVBQUUsdUJBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMzRCxDQUFDO0NBQ0Y7QUEzVkQsZ0NBMlZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRUNEU0EsIEVjZHNhIH0gZnJvbSAnLi4vLi4vLi4vLi4vYWNjb3VudC1saWIvbXBjL3Rzcyc7XG5pbXBvcnQgKiBhcyBvcGVucGdwIGZyb20gJ29wZW5wZ3AnO1xuaW1wb3J0IHsgU2VyaWFsaXplZEtleVBhaXIgfSBmcm9tICdvcGVucGdwJztcbmltcG9ydCB7IEFkZEtleWNoYWluT3B0aW9ucywgS2V5Y2hhaW4sIEtleVR5cGUgfSBmcm9tICcuLi8uLi8uLi9rZXljaGFpbic7XG5pbXBvcnQgRUNEU0FNZXRob2RzLCB7IEVDRFNBTWV0aG9kVHlwZXMgfSBmcm9tICcuLi8uLi8uLi90c3MvZWNkc2EnO1xuaW1wb3J0IHsgSUJhc2VDb2luLCBLZXljaGFpbnNUcmlwbGV0IH0gZnJvbSAnLi4vLi4vLi4vYmFzZUNvaW4nO1xuaW1wb3J0IGJhc2VUU1NVdGlscyBmcm9tICcuLi9iYXNlVFNTVXRpbHMnO1xuaW1wb3J0IHsgRGVjcnlwdGFibGVOU2hhcmUsIEtleVNoYXJlIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBSZXF1ZXN0VHlwZSwgVFNTUGFyYW1zLCBUeFJlcXVlc3QgfSBmcm9tICcuLi9iYXNlVHlwZXMnO1xuaW1wb3J0IHsgZ2V0VHhSZXF1ZXN0IH0gZnJvbSAnLi4vLi4vLi4vdHNzL2NvbW1vbic7XG5pbXBvcnQgeyBBU2hhcmUsIERTaGFyZSwgU2VuZFNoYXJlVHlwZSB9IGZyb20gJy4uLy4uLy4uL3Rzcy9lY2RzYS90eXBlcyc7XG5pbXBvcnQgeyBlbmNyeXB0VGV4dCwgZ2VuZXJhdGVHUEdLZXlQYWlyLCBnZXRCaXRnb0dwZ1B1YktleSB9IGZyb20gJy4uLy4uL29wZW5ncGdVdGlscyc7XG5pbXBvcnQgeyBCaXRHb0Jhc2UgfSBmcm9tICcuLi8uLi8uLi9iaXRnb0Jhc2UnO1xuaW1wb3J0IHsgSVdhbGxldCB9IGZyb20gJy4uLy4uLy4uL3dhbGxldCc7XG5pbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5cbmNvbnN0IGVuY3J5cHROU2hhcmUgPSBFQ0RTQU1ldGhvZHMuZW5jcnlwdE5TaGFyZTtcblxuLyoqIEBpbmhlcml0ZG9jICovXG5leHBvcnQgY2xhc3MgRWNkc2FVdGlscyBleHRlbmRzIGJhc2VUU1NVdGlsczxLZXlTaGFyZT4ge1xuICBwcml2YXRlIGJpdGdvUHVibGljR3BnS2V5OiBvcGVucGdwLktleSB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3RvcihiaXRnbzogQml0R29CYXNlLCBiYXNlQ29pbjogSUJhc2VDb2luLCB3YWxsZXQ/OiBJV2FsbGV0KSB7XG4gICAgc3VwZXIoYml0Z28sIGJhc2VDb2luLCB3YWxsZXQpO1xuICAgIHRoaXMuc2V0Qml0Z29HcGdQdWJLZXkoYml0Z28pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzZXRCaXRnb0dwZ1B1YktleShiaXRnbykge1xuICAgIHRoaXMuYml0Z29QdWJsaWNHcGdLZXkgPSBhd2FpdCBnZXRCaXRnb0dwZ1B1YktleShiaXRnbyk7XG4gIH1cblxuICBhc3luYyBnZXRCaXRnb1B1YmxpY0dwZ0tleSgpOiBQcm9taXNlPG9wZW5wZ3AuS2V5PiB7XG4gICAgaWYgKCF0aGlzLmJpdGdvUHVibGljR3BnS2V5KSB7XG4gICAgICAvLyByZXRyeSBnZXR0aW5nIGJpdGdvJ3MgZ3BnIGtleVxuICAgICAgYXdhaXQgdGhpcy5zZXRCaXRnb0dwZ1B1YktleSh0aGlzLmJpdGdvKTtcbiAgICAgIGlmICghdGhpcy5iaXRnb1B1YmxpY0dwZ0tleSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJGYWlsZWQgdG8gZ2V0IEJpdGdvJ3MgZ3BnIGtleVwiKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5iaXRnb1B1YmxpY0dwZ0tleTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBhc3luYyBjcmVhdGVLZXljaGFpbnMocGFyYW1zOiB7XG4gICAgcGFzc3BocmFzZTogc3RyaW5nO1xuICAgIGVudGVycHJpc2U/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgb3JpZ2luYWxQYXNzY29kZUVuY3J5cHRpb25Db2RlPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICB9KTogUHJvbWlzZTxLZXljaGFpbnNUcmlwbGV0PiB7XG4gICAgY29uc3QgTVBDID0gbmV3IEVjZHNhKCk7XG4gICAgY29uc3QgbSA9IDI7XG4gICAgY29uc3QgbiA9IDM7XG5cbiAgICBjb25zdCB1c2VyS2V5U2hhcmUgPSBhd2FpdCBNUEMua2V5U2hhcmUoMSwgbSwgbik7XG4gICAgY29uc3QgYmFja3VwS2V5U2hhcmUgPSBhd2FpdCBNUEMua2V5U2hhcmUoMiwgbSwgbik7XG5cbiAgICBjb25zdCB1c2VyR3BnS2V5ID0gYXdhaXQgZ2VuZXJhdGVHUEdLZXlQYWlyKCdzZWNwMjU2azEnKTtcblxuICAgIGNvbnN0IGJpdGdvS2V5Y2hhaW4gPSBhd2FpdCB0aGlzLmNyZWF0ZUJpdGdvS2V5Y2hhaW4odXNlckdwZ0tleSwgdXNlcktleVNoYXJlLCBiYWNrdXBLZXlTaGFyZSwgcGFyYW1zLmVudGVycHJpc2UpO1xuICAgIGNvbnN0IHVzZXJLZXljaGFpblByb21pc2UgPSB0aGlzLmNyZWF0ZVBhcnRpY2lwYW50S2V5Y2hhaW4oXG4gICAgICB1c2VyR3BnS2V5LFxuICAgICAgMSxcbiAgICAgIHVzZXJLZXlTaGFyZSxcbiAgICAgIGJhY2t1cEtleVNoYXJlLFxuICAgICAgYml0Z29LZXljaGFpbixcbiAgICAgIHBhcmFtcy5wYXNzcGhyYXNlLFxuICAgICAgcGFyYW1zLm9yaWdpbmFsUGFzc2NvZGVFbmNyeXB0aW9uQ29kZVxuICAgICk7XG4gICAgY29uc3QgYmFja3VwS2V5Y2hhaW5Qcm9taXNlID0gdGhpcy5jcmVhdGVQYXJ0aWNpcGFudEtleWNoYWluKFxuICAgICAgdXNlckdwZ0tleSxcbiAgICAgIDIsXG4gICAgICB1c2VyS2V5U2hhcmUsXG4gICAgICBiYWNrdXBLZXlTaGFyZSxcbiAgICAgIGJpdGdvS2V5Y2hhaW4sXG4gICAgICBwYXJhbXMucGFzc3BocmFzZVxuICAgICk7XG5cbiAgICBjb25zdCBbdXNlcktleWNoYWluLCBiYWNrdXBLZXljaGFpbl0gPSBhd2FpdCBQcm9taXNlLmFsbChbdXNlcktleWNoYWluUHJvbWlzZSwgYmFja3VwS2V5Y2hhaW5Qcm9taXNlXSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgdXNlcktleWNoYWluLFxuICAgICAgYmFja3VwS2V5Y2hhaW4sXG4gICAgICBiaXRnb0tleWNoYWluLFxuICAgIH07XG4gIH1cblxuICBjcmVhdGVVc2VyS2V5Y2hhaW4oXG4gICAgdXNlckdwZ0tleTogU2VyaWFsaXplZEtleVBhaXI8c3RyaW5nPixcbiAgICB1c2VyS2V5U2hhcmU6IEtleVNoYXJlLFxuICAgIGJhY2t1cEtleVNoYXJlOiBLZXlTaGFyZSxcbiAgICBiaXRnb0tleWNoYWluOiBLZXljaGFpbixcbiAgICBwYXNzcGhyYXNlOiBzdHJpbmcsXG4gICAgb3JpZ2luYWxQYXNzY29kZUVuY3J5cHRpb25Db2RlOiBzdHJpbmdcbiAgKTogUHJvbWlzZTxLZXljaGFpbj4ge1xuICAgIHJldHVybiB0aGlzLmNyZWF0ZVBhcnRpY2lwYW50S2V5Y2hhaW4oXG4gICAgICB1c2VyR3BnS2V5LFxuICAgICAgMSxcbiAgICAgIHVzZXJLZXlTaGFyZSxcbiAgICAgIGJhY2t1cEtleVNoYXJlLFxuICAgICAgYml0Z29LZXljaGFpbixcbiAgICAgIHBhc3NwaHJhc2UsXG4gICAgICBvcmlnaW5hbFBhc3Njb2RlRW5jcnlwdGlvbkNvZGVcbiAgICApO1xuICB9XG5cbiAgY3JlYXRlQmFja3VwS2V5Y2hhaW4oXG4gICAgdXNlckdwZ0tleTogU2VyaWFsaXplZEtleVBhaXI8c3RyaW5nPixcbiAgICB1c2VyS2V5U2hhcmU6IEtleVNoYXJlLFxuICAgIGJhY2t1cEtleVNoYXJlOiBLZXlTaGFyZSxcbiAgICBiaXRnb0tleWNoYWluOiBLZXljaGFpbixcbiAgICBwYXNzcGhyYXNlOiBzdHJpbmdcbiAgKTogUHJvbWlzZTxLZXljaGFpbj4ge1xuICAgIHJldHVybiB0aGlzLmNyZWF0ZVBhcnRpY2lwYW50S2V5Y2hhaW4odXNlckdwZ0tleSwgMiwgdXNlcktleVNoYXJlLCBiYWNrdXBLZXlTaGFyZSwgYml0Z29LZXljaGFpbiwgcGFzc3BocmFzZSk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgYXN5bmMgY3JlYXRlQml0Z29LZXljaGFpbihcbiAgICB1c2VyR3BnS2V5OiBTZXJpYWxpemVkS2V5UGFpcjxzdHJpbmc+LFxuICAgIHVzZXJLZXlTaGFyZTogS2V5U2hhcmUsXG4gICAgYmFja3VwS2V5U2hhcmU6IEtleVNoYXJlLFxuICAgIGVudGVycHJpc2U/OiBzdHJpbmdcbiAgKTogUHJvbWlzZTxLZXljaGFpbj4ge1xuICAgIGNvbnN0IGJpdGdvUHVibGljR3BnS2V5ID0gYXdhaXQgdGhpcy5nZXRCaXRnb1B1YmxpY0dwZ0tleSgpO1xuICAgIGNvbnN0IHJlY2lwaWVudEluZGV4ID0gMztcbiAgICBjb25zdCB1c2VyVG9CaXRnb1NoYXJlID0gYXdhaXQgZW5jcnlwdE5TaGFyZShcbiAgICAgIHVzZXJLZXlTaGFyZSxcbiAgICAgIHJlY2lwaWVudEluZGV4LFxuICAgICAgYml0Z29QdWJsaWNHcGdLZXkuYXJtb3IoKSxcbiAgICAgIHVzZXJHcGdLZXkucHJpdmF0ZUtleVxuICAgICk7XG5cbiAgICBjb25zdCBiYWNrdXBUb0JpdGdvU2hhcmUgPSBhd2FpdCBlbmNyeXB0TlNoYXJlKFxuICAgICAgYmFja3VwS2V5U2hhcmUsXG4gICAgICByZWNpcGllbnRJbmRleCxcbiAgICAgIGJpdGdvUHVibGljR3BnS2V5LmFybW9yKCksXG4gICAgICB1c2VyR3BnS2V5LnByaXZhdGVLZXlcbiAgICApO1xuXG4gICAgY29uc3QgY3JlYXRlQml0R29NUENQYXJhbXM6IEFkZEtleWNoYWluT3B0aW9ucyA9IHtcbiAgICAgIGtleVR5cGU6ICd0c3MnIGFzIEtleVR5cGUsXG4gICAgICBzb3VyY2U6ICdiaXRnbycsXG4gICAgICBrZXlTaGFyZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGZyb206ICd1c2VyJyxcbiAgICAgICAgICB0bzogJ2JpdGdvJyxcbiAgICAgICAgICBwdWJsaWNTaGFyZTogdXNlclRvQml0Z29TaGFyZS5wdWJsaWNTaGFyZSxcbiAgICAgICAgICBwcml2YXRlU2hhcmU6IHVzZXJUb0JpdGdvU2hhcmUuZW5jcnlwdGVkUHJpdmF0ZVNoYXJlLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgZnJvbTogJ2JhY2t1cCcsXG4gICAgICAgICAgdG86ICdiaXRnbycsXG4gICAgICAgICAgcHVibGljU2hhcmU6IGJhY2t1cFRvQml0Z29TaGFyZS5wdWJsaWNTaGFyZSxcbiAgICAgICAgICBwcml2YXRlU2hhcmU6IGJhY2t1cFRvQml0Z29TaGFyZS5lbmNyeXB0ZWRQcml2YXRlU2hhcmUsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgdXNlckdQR1B1YmxpY0tleTogdXNlckdwZ0tleS5wdWJsaWNLZXksXG4gICAgICBiYWNrdXBHUEdQdWJsaWNLZXk6IHVzZXJHcGdLZXkucHVibGljS2V5LFxuICAgICAgZW50ZXJwcmlzZTogZW50ZXJwcmlzZSxcbiAgICB9O1xuXG4gICAgY29uc3Qga2V5Y2hhaW5zID0gYXdhaXQgdGhpcy5iYXNlQ29pbi5rZXljaGFpbnMoKS5hZGQoY3JlYXRlQml0R29NUENQYXJhbXMpO1xuICAgIHJldHVybiBrZXljaGFpbnM7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgYXN5bmMgY3JlYXRlUGFydGljaXBhbnRLZXljaGFpbihcbiAgICB1c2VyR3BnS2V5OiBvcGVucGdwLlNlcmlhbGl6ZWRLZXlQYWlyPHN0cmluZz4sXG4gICAgcmVjaXBpZW50SW5kZXg6IG51bWJlcixcbiAgICB1c2VyS2V5U2hhcmU6IEtleVNoYXJlLFxuICAgIGJhY2t1cEtleVNoYXJlOiBLZXlTaGFyZSxcbiAgICBiaXRnb0tleWNoYWluOiBLZXljaGFpbixcbiAgICBwYXNzcGhyYXNlOiBzdHJpbmcsXG4gICAgb3JpZ2luYWxQYXNzY29kZUVuY3J5cHRpb25Db2RlPzogc3RyaW5nXG4gICk6IFByb21pc2U8S2V5Y2hhaW4+IHtcbiAgICBjb25zdCBiaXRnb0tleVNoYXJlcyA9IGJpdGdvS2V5Y2hhaW4ua2V5U2hhcmVzO1xuICAgIGlmICghYml0Z29LZXlTaGFyZXMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTWlzc2luZyBCaXRHbyBrZXkgc2hhcmVzJyk7XG4gICAgfVxuICAgIGlmICghYml0Z29LZXljaGFpbi5jb21tb25LZXljaGFpbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBNaXNzaW5nIGNvbW1vbiBrZXkgY2hhaW46ICR7Yml0Z29LZXljaGFpbi5jb21tb25LZXljaGFpbn1gKTtcbiAgICB9XG5cbiAgICBsZXQgdXNlcjogc3RyaW5nO1xuICAgIGxldCBrZXlTaGFyZTogS2V5U2hhcmU7XG4gICAgbGV0IG90aGVyU2hhcmU6IEtleVNoYXJlO1xuICAgIGlmIChyZWNpcGllbnRJbmRleCA9PT0gMSkge1xuICAgICAga2V5U2hhcmUgPSB1c2VyS2V5U2hhcmU7XG4gICAgICBvdGhlclNoYXJlID0gYmFja3VwS2V5U2hhcmU7XG4gICAgICB1c2VyID0gJ3VzZXInO1xuICAgIH0gZWxzZSBpZiAocmVjaXBpZW50SW5kZXggPT09IDIpIHtcbiAgICAgIGtleVNoYXJlID0gYmFja3VwS2V5U2hhcmU7XG4gICAgICBvdGhlclNoYXJlID0gdXNlcktleVNoYXJlO1xuICAgICAgdXNlciA9ICdiYWNrdXAnO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgdXNlciBpbmRleCcpO1xuICAgIH1cblxuICAgIGNvbnN0IGJpdEdvVG9Vc2VyU2hhcmUgPSBiaXRnb0tleVNoYXJlcy5maW5kKChrZXlTaGFyZSkgPT4ga2V5U2hhcmUuZnJvbSA9PT0gJ2JpdGdvJyAmJiBrZXlTaGFyZS50byA9PT0gdXNlcik7XG4gICAgaWYgKCFiaXRHb1RvVXNlclNoYXJlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ01pc3NpbmcgQml0R28gdG8gVXNlciBrZXkgc2hhcmUnKTtcbiAgICB9XG5cbiAgICBjb25zdCBiaXRnb1B1YmxpY0dwZ0tleSA9IGF3YWl0IHRoaXMuZ2V0Qml0Z29QdWJsaWNHcGdLZXkoKTtcblxuICAgIGNvbnN0IGJhY2t1cFRvVXNlclNoYXJlID0gYXdhaXQgZW5jcnlwdE5TaGFyZShcbiAgICAgIG90aGVyU2hhcmUsXG4gICAgICByZWNpcGllbnRJbmRleCxcbiAgICAgIHVzZXJHcGdLZXkucHVibGljS2V5LFxuICAgICAgdXNlckdwZ0tleS5wcml2YXRlS2V5XG4gICAgKTtcbiAgICBjb25zdCBlbmNyeXB0ZWROU2hhcmVzOiBEZWNyeXB0YWJsZU5TaGFyZVtdID0gW1xuICAgICAge1xuICAgICAgICBuU2hhcmU6IGJhY2t1cFRvVXNlclNoYXJlLFxuICAgICAgICByZWNpcGllbnRQcml2YXRlQXJtb3I6IHVzZXJHcGdLZXkucHJpdmF0ZUtleSxcbiAgICAgICAgc2VuZGVyUHVibGljQXJtb3I6IHVzZXJHcGdLZXkucHVibGljS2V5LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgblNoYXJlOiB7XG4gICAgICAgICAgaTogcmVjaXBpZW50SW5kZXgsXG4gICAgICAgICAgajogMyxcbiAgICAgICAgICBwdWJsaWNTaGFyZTogYml0R29Ub1VzZXJTaGFyZS5wdWJsaWNTaGFyZSxcbiAgICAgICAgICBlbmNyeXB0ZWRQcml2YXRlU2hhcmU6IGJpdEdvVG9Vc2VyU2hhcmUucHJpdmF0ZVNoYXJlLFxuICAgICAgICB9LFxuICAgICAgICByZWNpcGllbnRQcml2YXRlQXJtb3I6IHVzZXJHcGdLZXkucHJpdmF0ZUtleSxcbiAgICAgICAgc2VuZGVyUHVibGljQXJtb3I6IGJpdGdvUHVibGljR3BnS2V5LmFybW9yKCksXG4gICAgICB9LFxuICAgIF07XG5cbiAgICBjb25zdCB1c2VyQ29tYmluZWRLZXkgPSBhd2FpdCBFQ0RTQU1ldGhvZHMuY3JlYXRlQ29tYmluZWRLZXkoXG4gICAgICBrZXlTaGFyZSxcbiAgICAgIGVuY3J5cHRlZE5TaGFyZXMsXG4gICAgICBiaXRnb0tleWNoYWluLmNvbW1vbktleWNoYWluXG4gICAgKTtcblxuICAgIGNvbnN0IHBydiA9IEpTT04uc3RyaW5naWZ5KHVzZXJDb21iaW5lZEtleS5zaWduaW5nTWF0ZXJpYWwpO1xuICAgIGNvbnN0IHVzZXJLZXljaGFpblBhcmFtcyA9IHtcbiAgICAgIHNvdXJjZTogdXNlcixcbiAgICAgIGtleVR5cGU6ICd0c3MnIGFzIEtleVR5cGUsXG4gICAgICBjb21tb25LZXljaGFpbjogYml0Z29LZXljaGFpbi5jb21tb25LZXljaGFpbixcbiAgICAgIHBydjogcHJ2LFxuICAgICAgZW5jcnlwdGVkUHJ2OiB0aGlzLmJpdGdvLmVuY3J5cHQoe1xuICAgICAgICBpbnB1dDogcHJ2LFxuICAgICAgICBwYXNzd29yZDogcGFzc3BocmFzZSxcbiAgICAgIH0pLFxuICAgICAgb3JpZ2luYWxQYXNzY29kZUVuY3J5cHRpb25Db2RlLFxuICAgIH07XG5cbiAgICBjb25zdCBrZXljaGFpbnMgPSB0aGlzLmJhc2VDb2luLmtleWNoYWlucygpO1xuICAgIGNvbnN0IHJlc3VsdCA9XG4gICAgICByZWNpcGllbnRJbmRleCA9PT0gMSA/IGF3YWl0IGtleWNoYWlucy5hZGQodXNlcktleWNoYWluUGFyYW1zKSA6IGF3YWl0IGtleWNoYWlucy5jcmVhdGVCYWNrdXAodXNlcktleWNoYWluUGFyYW1zKTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgc2lnbmluZyBrZXksIHR4UmVxdWVzdFJlc29sdmVkIGFuZCB0eFJlcXVlc3RJZFxuICAgKiBAcGFyYW0ge3N0cmluZyB8IFR4UmVxdWVzdH0gcGFyYW1zLnR4UmVxdWVzdCAtIHRyYW5zYWN0aW9uIHJlcXVlc3Qgb2JqZWN0IG9yIGlkXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwYXJhbXMucHJ2IC0gZGVjcnlwdGVkIHByaXZhdGUga2V5XG4gICAqIEBwYXJhbSB7IHN0cmluZ30gcGFyYW1zLnJlcUlkIC0gcmVxdWVzdCBpZFxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxFQ0RTQVNpZ25pbmdSZXF1ZXN0QmFzZVJlc3VsdD59XG4gICAqL1xuICBwcml2YXRlIGFzeW5jIHNpZ25SZXF1ZXN0QmFzZShwYXJhbXM6IFRTU1BhcmFtcywgcmVxdWVzdFR5cGU6IFJlcXVlc3RUeXBlKTogUHJvbWlzZTxUeFJlcXVlc3Q+IHtcbiAgICBsZXQgdHhSZXF1ZXN0UmVzb2x2ZWQ6IFR4UmVxdWVzdDtcbiAgICBsZXQgdHhSZXF1ZXN0SWQ6IHN0cmluZztcblxuICAgIGNvbnN0IHsgdHhSZXF1ZXN0LCBwcnYgfSA9IHBhcmFtcztcblxuICAgIGlmICh0eXBlb2YgdHhSZXF1ZXN0ID09PSAnc3RyaW5nJykge1xuICAgICAgdHhSZXF1ZXN0UmVzb2x2ZWQgPSBhd2FpdCBnZXRUeFJlcXVlc3QodGhpcy5iaXRnbywgdGhpcy53YWxsZXQuaWQoKSwgdHhSZXF1ZXN0KTtcbiAgICAgIHR4UmVxdWVzdElkID0gdHhSZXF1ZXN0UmVzb2x2ZWQudHhSZXF1ZXN0SWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHR4UmVxdWVzdFJlc29sdmVkID0gdHhSZXF1ZXN0O1xuICAgICAgdHhSZXF1ZXN0SWQgPSB0eFJlcXVlc3QudHhSZXF1ZXN0SWQ7XG4gICAgfVxuXG4gICAgY29uc3QgdXNlclNpZ25pbmdNYXRlcmlhbDogRUNEU0FNZXRob2RUeXBlcy5TaWduaW5nTWF0ZXJpYWwgPSBKU09OLnBhcnNlKHBydik7XG4gICAgaWYgKHVzZXJTaWduaW5nTWF0ZXJpYWwucFNoYXJlLmkgIT09IDEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCB1c2VyIGtleScpO1xuICAgIH1cbiAgICBpZiAoIXVzZXJTaWduaW5nTWF0ZXJpYWwuYmFja3VwTlNoYXJlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgdXNlciBrZXkgLSBtaXNzaW5nIGJhY2t1cE5TaGFyZScpO1xuICAgIH1cblxuICAgIGNvbnN0IE1QQyA9IG5ldyBFY2RzYSgpO1xuICAgIGNvbnN0IHNpZ25pbmdLZXkgPSBNUEMua2V5Q29tYmluZSh1c2VyU2lnbmluZ01hdGVyaWFsLnBTaGFyZSwgW1xuICAgICAgdXNlclNpZ25pbmdNYXRlcmlhbC5iaXRnb05TaGFyZSxcbiAgICAgIHVzZXJTaWduaW5nTWF0ZXJpYWwuYmFja3VwTlNoYXJlLFxuICAgIF0pO1xuXG4gICAgY29uc3QgdXNlclNpZ25TaGFyZSA9IGF3YWl0IEVDRFNBTWV0aG9kcy5jcmVhdGVVc2VyU2lnblNoYXJlKHNpZ25pbmdLZXkueFNoYXJlLCBzaWduaW5nS2V5LnlTaGFyZXNbM10pO1xuICAgIGNvbnN0IHNpZ25lclNoYXJlID0gdXNlclNpZ25pbmdNYXRlcmlhbC5iaXRnb05TaGFyZS51ICsgdXNlclNpZ25pbmdNYXRlcmlhbC5iaXRnb05TaGFyZS5jaGFpbmNvZGU7XG4gICAgY29uc3QgYml0Z29HcGdLZXkgPSBhd2FpdCBnZXRCaXRnb0dwZ1B1YktleSh0aGlzLmJpdGdvKTtcbiAgICBjb25zdCBlbmNyeXB0ZWRTaWduZXJTaGFyZSA9IGF3YWl0IGVuY3J5cHRUZXh0KHNpZ25lclNoYXJlLCBiaXRnb0dwZ0tleSk7XG5cbiAgICBjb25zdCBiaXRnb1RvVXNlckFTaGFyZSA9IChhd2FpdCBFQ0RTQU1ldGhvZHMuc2VuZFNoYXJlVG9CaXRnbyhcbiAgICAgIHRoaXMuYml0Z28sXG4gICAgICB0aGlzLndhbGxldC5pZCgpLFxuICAgICAgdHhSZXF1ZXN0SWQsXG4gICAgICByZXF1ZXN0VHlwZSxcbiAgICAgIFNlbmRTaGFyZVR5cGUuS1NoYXJlLFxuICAgICAgdXNlclNpZ25TaGFyZS5rU2hhcmUsXG4gICAgICBlbmNyeXB0ZWRTaWduZXJTaGFyZVxuICAgICkpIGFzIEFTaGFyZTtcblxuICAgIGNvbnN0IHVzZXJHYW1tYUFuZE11U2hhcmVzID0gYXdhaXQgRUNEU0FNZXRob2RzLmNyZWF0ZVVzZXJHYW1tYUFuZE11U2hhcmUodXNlclNpZ25TaGFyZS53U2hhcmUsIGJpdGdvVG9Vc2VyQVNoYXJlKTtcbiAgICBjb25zdCB1c2VyT21pY3JvbkFuZERlbHRhU2hhcmUgPSBhd2FpdCBFQ0RTQU1ldGhvZHMuY3JlYXRlVXNlck9taWNyb25BbmREZWx0YVNoYXJlKFxuICAgICAgdXNlckdhbW1hQW5kTXVTaGFyZXMuZ1NoYXJlIGFzIEVDRFNBLkdTaGFyZVxuICAgICk7XG5cbiAgICBjb25zdCBtdVNoYXJlID0gdXNlckdhbW1hQW5kTXVTaGFyZXMubXVTaGFyZSE7XG4gICAgY29uc3QgZFNoYXJlID0gdXNlck9taWNyb25BbmREZWx0YVNoYXJlLmRTaGFyZTtcbiAgICBjb25zdCBiaXRnb1RvVXNlckRTaGFyZSA9IChhd2FpdCBFQ0RTQU1ldGhvZHMuc2VuZFNoYXJlVG9CaXRnbyhcbiAgICAgIHRoaXMuYml0Z28sXG4gICAgICB0aGlzLndhbGxldC5pZCgpLFxuICAgICAgdHhSZXF1ZXN0SWQsXG4gICAgICByZXF1ZXN0VHlwZSxcbiAgICAgIFNlbmRTaGFyZVR5cGUuTVVTaGFyZSxcbiAgICAgIHsgbXVTaGFyZSwgZFNoYXJlLCBpOiBtdVNoYXJlLmkgfVxuICAgICkpIGFzIERTaGFyZTtcblxuICAgIGxldCBzaWduYWJsZVBheWxvYWQ7XG5cbiAgICBpZiAocmVxdWVzdFR5cGUgPT09IFJlcXVlc3RUeXBlLnR4KSB7XG4gICAgICBzaWduYWJsZVBheWxvYWQgPSBCdWZmZXIuZnJvbSh0eFJlcXVlc3RSZXNvbHZlZC50cmFuc2FjdGlvbnNbMF0udW5zaWduZWRUeC5zZXJpYWxpemVkVHhIZXgsICdoZXgnKTtcbiAgICB9IGVsc2UgaWYgKHJlcXVlc3RUeXBlID09PSBSZXF1ZXN0VHlwZS5tZXNzYWdlKSB7XG4gICAgICBhc3NlcnQodHhSZXF1ZXN0UmVzb2x2ZWQudW5zaWduZWRNZXNzYWdlcz8uWzBdKTtcbiAgICAgIHNpZ25hYmxlUGF5bG9hZCA9IEJ1ZmZlci5mcm9tKHR4UmVxdWVzdFJlc29sdmVkLnVuc2lnbmVkTWVzc2FnZXNbMF0ubWVzc2FnZSwgJ2hleCcpO1xuICAgIH1cblxuICAgIGNvbnN0IHVzZXJTU2hhcmUgPSBhd2FpdCBFQ0RTQU1ldGhvZHMuY3JlYXRlVXNlclNpZ25hdHVyZVNoYXJlKFxuICAgICAgdXNlck9taWNyb25BbmREZWx0YVNoYXJlLm9TaGFyZSxcbiAgICAgIGJpdGdvVG9Vc2VyRFNoYXJlLFxuICAgICAgc2lnbmFibGVQYXlsb2FkXG4gICAgKTtcblxuICAgIGF3YWl0IEVDRFNBTWV0aG9kcy5zZW5kU2hhcmVUb0JpdGdvKFxuICAgICAgdGhpcy5iaXRnbyxcbiAgICAgIHRoaXMud2FsbGV0LmlkKCksXG4gICAgICB0eFJlcXVlc3RJZCxcbiAgICAgIHJlcXVlc3RUeXBlLFxuICAgICAgU2VuZFNoYXJlVHlwZS5TU2hhcmUsXG4gICAgICB1c2VyU1NoYXJlXG4gICAgKTtcbiAgICByZXR1cm4gYXdhaXQgZ2V0VHhSZXF1ZXN0KHRoaXMuYml0Z28sIHRoaXMud2FsbGV0LmlkKCksIHR4UmVxdWVzdElkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTaWducyB0aGUgdHJhbnNhY3Rpb24gYXNzb2NpYXRlZCB0byB0aGUgdHJhbnNhY3Rpb24gcmVxdWVzdC5cbiAgICogQHBhcmFtIHtzdHJpbmcgfCBUeFJlcXVlc3R9IHBhcmFtcy50eFJlcXVlc3QgLSB0cmFuc2FjdGlvbiByZXF1ZXN0IG9iamVjdCBvciBpZFxuICAgKiBAcGFyYW0ge3N0cmluZ30gcGFyYW1zLnBydiAtIGRlY3J5cHRlZCBwcml2YXRlIGtleVxuICAgKiBAcGFyYW0ge3N0cmluZ30gcGFyYW1zLnJlcUlkIC0gcmVxdWVzdCBpZFxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxUeFJlcXVlc3Q+fSBmdWxseSBzaWduZWQgVHhSZXF1ZXN0IG9iamVjdFxuICAgKi9cbiAgYXN5bmMgc2lnblR4UmVxdWVzdChwYXJhbXM6IFRTU1BhcmFtcyk6IFByb21pc2U8VHhSZXF1ZXN0PiB7XG4gICAgcmV0dXJuIHRoaXMuc2lnblJlcXVlc3RCYXNlKHBhcmFtcywgUmVxdWVzdFR5cGUudHgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNpZ25zIHRoZSBtZXNzYWdlIGFzc29jaWF0ZWQgdG8gdGhlIHRyYW5zYWN0aW9uIHJlcXVlc3QuXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgVHhSZXF1ZXN0fSBwYXJhbXMudHhSZXF1ZXN0IC0gdHJhbnNhY3Rpb24gcmVxdWVzdCBvYmplY3Qgb3IgaWRcbiAgICogQHBhcmFtIHtzdHJpbmd9IHBhcmFtcy5wcnYgLSBkZWNyeXB0ZWQgcHJpdmF0ZSBrZXlcbiAgICogQHBhcmFtIHtzdHJpbmd9IHBhcmFtcy5yZXFJZCAtIHJlcXVlc3QgaWRcbiAgICogQHJldHVybnMge1Byb21pc2U8VHhSZXF1ZXN0Pn0gZnVsbHkgc2lnbmVkIFR4UmVxdWVzdCBvYmplY3RcbiAgICovXG4gIGFzeW5jIHNpZ25UeFJlcXVlc3RGb3JNZXNzYWdlKHBhcmFtczogVFNTUGFyYW1zKTogUHJvbWlzZTxUeFJlcXVlc3Q+IHtcbiAgICByZXR1cm4gdGhpcy5zaWduUmVxdWVzdEJhc2UocGFyYW1zLCBSZXF1ZXN0VHlwZS5tZXNzYWdlKTtcbiAgfVxufVxuIl19
|
|
@@ -737,8 +737,8 @@
|
|
|
737
737
|
"affectsGlobalScope": false
|
|
738
738
|
},
|
|
739
739
|
"../../utxo-lib/dist/src/bitgo/tnumber.d.ts": {
|
|
740
|
-
"version": "
|
|
741
|
-
"signature": "
|
|
740
|
+
"version": "b9ad9e94c0a2b496ab1552503d2fb89b9f4ea4f4341c5a44382b26d739bca6df",
|
|
741
|
+
"signature": "b9ad9e94c0a2b496ab1552503d2fb89b9f4ea4f4341c5a44382b26d739bca6df",
|
|
742
742
|
"affectsGlobalScope": false
|
|
743
743
|
},
|
|
744
744
|
"../../utxo-lib/dist/src/bitgo/index.d.ts": {
|
|
@@ -1302,8 +1302,8 @@
|
|
|
1302
1302
|
"affectsGlobalScope": false
|
|
1303
1303
|
},
|
|
1304
1304
|
"../src/bitgo/tss/common.ts": {
|
|
1305
|
-
"version": "
|
|
1306
|
-
"signature": "
|
|
1305
|
+
"version": "4e6c9f6f3883c23be63afa75d2cafb757177385b160474004587523afc0c8520",
|
|
1306
|
+
"signature": "0cb04269b95bc194f28f572eb59c8a885016b3198ba5f3011696e2b1ea06c313",
|
|
1307
1307
|
"affectsGlobalScope": false
|
|
1308
1308
|
},
|
|
1309
1309
|
"../../../node_modules/@types/keccak/index.d.ts": {
|
|
@@ -1312,8 +1312,8 @@
|
|
|
1312
1312
|
"affectsGlobalScope": false
|
|
1313
1313
|
},
|
|
1314
1314
|
"../src/bitgo/tss/ecdsa/ecdsa.ts": {
|
|
1315
|
-
"version": "
|
|
1316
|
-
"signature": "
|
|
1315
|
+
"version": "af575131067ab6a8426c84cb55534d4b3a38e70b57490f2b0deb358758853c4f",
|
|
1316
|
+
"signature": "e6050773cc97932750919dad35da951608586b6335c8c698b4fee8980f086e6f",
|
|
1317
1317
|
"affectsGlobalScope": false
|
|
1318
1318
|
},
|
|
1319
1319
|
"../src/bitgo/tss/ecdsa/index.ts": {
|
|
@@ -1327,7 +1327,7 @@
|
|
|
1327
1327
|
"affectsGlobalScope": false
|
|
1328
1328
|
},
|
|
1329
1329
|
"../src/bitgo/utils/tss/ecdsa/ecdsa.ts": {
|
|
1330
|
-
"version": "
|
|
1330
|
+
"version": "429d2e7da7cdf95f606b716a924290a6225267797b9a99fbb3c45288a0d09cfb",
|
|
1331
1331
|
"signature": "faaab8434d641952b3137f952ae8a4958d21dbb278066f44d73ab76c4fd3cf81",
|
|
1332
1332
|
"affectsGlobalScope": false
|
|
1333
1333
|
},
|
|
@@ -2007,7 +2007,7 @@
|
|
|
2007
2007
|
"affectsGlobalScope": false
|
|
2008
2008
|
},
|
|
2009
2009
|
"../src/bitgo/tss/eddsa/eddsa.ts": {
|
|
2010
|
-
"version": "
|
|
2010
|
+
"version": "2da14f712006b0a74f13b468e24beb6509c7c49ff5a4fec273000d91a0cde841",
|
|
2011
2011
|
"signature": "26e8902a538b0bf8ff065837f16d8ca92909fd34db7b3edb85689c8849e640f3",
|
|
2012
2012
|
"affectsGlobalScope": false
|
|
2013
2013
|
},
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bitgo/sdk-core",
|
|
3
|
-
"version": "2.0.0-rc.
|
|
3
|
+
"version": "2.0.0-rc.31",
|
|
4
4
|
"description": "core library functions for BitGoJS",
|
|
5
5
|
"main": "./dist/src/index.js",
|
|
6
6
|
"types": "./dist/src/index.d.ts",
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
"dependencies": {
|
|
37
37
|
"@bitgo/bls-dkg": "^1.1.0",
|
|
38
38
|
"@bitgo/statics": "^8.0.0-rc.21",
|
|
39
|
-
"@bitgo/utxo-lib": "^3.0.0-rc.
|
|
39
|
+
"@bitgo/utxo-lib": "^3.0.0-rc.8",
|
|
40
40
|
"@noble/secp256k1": "1.6.3",
|
|
41
41
|
"@stablelib/hex": "^1.0.0",
|
|
42
42
|
"@types/keccak": "^3.0.1",
|
|
@@ -66,5 +66,5 @@
|
|
|
66
66
|
"devDependencies": {
|
|
67
67
|
"@types/lodash": "^4.14.151"
|
|
68
68
|
},
|
|
69
|
-
"gitHead": "
|
|
69
|
+
"gitHead": "2b5c792f85bc35ab0f1595c334887e5f010fc4c3"
|
|
70
70
|
}
|