@bitgo-beta/sdk-api 1.10.1-beta.1649 → 1.10.1-beta.1650
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/package.json +7 -7
- package/dist/src/api.d.ts +1 -0
- package/dist/src/api.d.ts.map +1 -1
- package/dist/src/api.js +45 -25
- package/dist/src/bitgoAPI.d.ts +15 -2
- package/dist/src/bitgoAPI.d.ts.map +1 -1
- package/dist/src/bitgoAPI.js +81 -52
- package/dist/src/types.d.ts +3 -1
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/types.js +1 -1
- package/dist/test/unit/hmacStrategy.d.ts +2 -0
- package/dist/test/unit/hmacStrategy.d.ts.map +1 -0
- package/dist/test/unit/hmacStrategy.js +136 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +7 -7
package/dist/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bitgo-beta/sdk-api",
|
|
3
|
-
"version": "1.10.1-beta.
|
|
3
|
+
"version": "1.10.1-beta.1650",
|
|
4
4
|
"description": "REST wrapper for BitGoJS",
|
|
5
5
|
"main": "./dist/src/index.js",
|
|
6
6
|
"types": "./dist/src/index.d.ts",
|
|
@@ -40,11 +40,11 @@
|
|
|
40
40
|
]
|
|
41
41
|
},
|
|
42
42
|
"dependencies": {
|
|
43
|
-
"@bitgo-beta/sdk-core": "8.2.1-beta.
|
|
44
|
-
"@bitgo-beta/sdk-hmac": "1.0.1-beta.
|
|
45
|
-
"@bitgo-beta/sjcl": "1.0.2-beta.
|
|
46
|
-
"@bitgo-beta/unspents": "0.13.2-beta.
|
|
47
|
-
"@bitgo-beta/utxo-lib": "8.0.3-beta.
|
|
43
|
+
"@bitgo-beta/sdk-core": "8.2.1-beta.1651",
|
|
44
|
+
"@bitgo-beta/sdk-hmac": "1.0.1-beta.1019",
|
|
45
|
+
"@bitgo-beta/sjcl": "1.0.2-beta.1891",
|
|
46
|
+
"@bitgo-beta/unspents": "0.13.2-beta.1652",
|
|
47
|
+
"@bitgo-beta/utxo-lib": "8.0.3-beta.1653",
|
|
48
48
|
"@types/superagent": "4.1.15",
|
|
49
49
|
"bitcoinjs-message": "npm:@bitgo-forks/bitcoinjs-message@1.0.0-master.3",
|
|
50
50
|
"debug": "3.1.0",
|
|
@@ -62,7 +62,7 @@
|
|
|
62
62
|
"resolutions": {
|
|
63
63
|
"degenerator": "5.0.0"
|
|
64
64
|
},
|
|
65
|
-
"gitHead": "
|
|
65
|
+
"gitHead": "cc80307f833290967c57b17c6c1be420c323037b",
|
|
66
66
|
"files": [
|
|
67
67
|
"dist"
|
|
68
68
|
]
|
package/dist/src/api.d.ts
CHANGED
|
@@ -46,4 +46,5 @@ export declare function setRequestQueryString(req: superagent.SuperAgentRequest)
|
|
|
46
46
|
* Right now, it is very permissive with the timestamp variance.
|
|
47
47
|
*/
|
|
48
48
|
export declare function verifyResponse(bitgo: BitGoAPI, token: string | undefined, method: VerifyResponseOptions['method'], req: superagent.SuperAgentRequest, response: superagent.Response, authVersion: AuthVersion): superagent.Response;
|
|
49
|
+
export declare function verifyResponseAsync(bitgo: BitGoAPI, token: string | undefined, method: VerifyResponseOptions['method'], req: superagent.SuperAgentRequest, response: superagent.Response, authVersion: AuthVersion): Promise<superagent.Response>;
|
|
49
50
|
//# sourceMappingURL=api.d.ts.map
|
package/dist/src/api.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/api.ts"],"names":[],"mappings":"AAOA,OAAO,UAAU,MAAM,YAAY,CAAC;AAIpC,OAAO,EAAoB,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEtE,OAAO,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/api.ts"],"names":[],"mappings":"AAOA,OAAO,UAAU,MAAM,YAAY,CAAC;AAIpC,OAAO,EAAoB,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEtE,OAAO,EAAE,WAAW,EAAsB,qBAAqB,EAAE,MAAM,SAAS,CAAC;AACjF,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAItC;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,kBAAkB,GAAG,GAAG,EACrD,GAAG,EAAE,UAAU,CAAC,iBAAiB,GAChC,YAAY,CAAC,kBAAkB,CAAC,CASlC;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,kBAAkB,EACrD,aAAa,CAAC,EAAE,MAAM,GACrB,CAAC,GAAG,EAAE,UAAU,CAAC,QAAQ,KAAK,kBAAkB,CAalD;AAkBD;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,KAAK,GAAG;IAAE,QAAQ,CAAC,EAAE,UAAU,CAAC,QAAQ,CAAA;CAAE,GAAG,KAAK,CAKxF;AAgCD;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,UAAU,CAAC,OAAO,GAAG,MAAM,GAAG,SAAS,CAsDhF;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,UAAU,CAAC,iBAAiB,GAAG,IAAI,CAwB7E;AAyCD;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,QAAQ,EACf,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,MAAM,EAAE,qBAAqB,CAAC,QAAQ,CAAC,EACvC,GAAG,EAAE,UAAU,CAAC,iBAAiB,EACjC,QAAQ,EAAE,UAAU,CAAC,QAAQ,EAC7B,WAAW,EAAE,WAAW,GACvB,UAAU,CAAC,QAAQ,CAkBrB;AAED,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,QAAQ,EACf,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,MAAM,EAAE,qBAAqB,CAAC,QAAQ,CAAC,EACvC,GAAG,EAAE,UAAU,CAAC,iBAAiB,EACjC,QAAQ,EAAE,UAAU,CAAC,QAAQ,EAC7B,WAAW,EAAE,WAAW,GACvB,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAkB9B"}
|
package/dist/src/api.js
CHANGED
|
@@ -9,6 +9,7 @@ exports.handleResponseError = handleResponseError;
|
|
|
9
9
|
exports.serializeRequestData = serializeRequestData;
|
|
10
10
|
exports.setRequestQueryString = setRequestQueryString;
|
|
11
11
|
exports.verifyResponse = verifyResponse;
|
|
12
|
+
exports.verifyResponseAsync = verifyResponseAsync;
|
|
12
13
|
/**
|
|
13
14
|
* @prettier
|
|
14
15
|
*/
|
|
@@ -200,35 +201,17 @@ function setRequestQueryString(req) {
|
|
|
200
201
|
}
|
|
201
202
|
}
|
|
202
203
|
/**
|
|
203
|
-
*
|
|
204
|
-
*
|
|
204
|
+
* Validate a completed verification response and throw a descriptive `ApiResponseError` if it
|
|
205
|
+
* indicates the response is invalid or outside the acceptable time window.
|
|
205
206
|
*/
|
|
206
|
-
function
|
|
207
|
-
// we can't verify the response if we're not authenticated
|
|
208
|
-
if (!req.isV2Authenticated || !req.authenticationToken) {
|
|
209
|
-
return response;
|
|
210
|
-
}
|
|
211
|
-
const verificationResponse = bitgo.verifyResponse({
|
|
212
|
-
url: req.url,
|
|
213
|
-
hmac: response.header.hmac,
|
|
214
|
-
statusCode: response.status,
|
|
215
|
-
text: response.text,
|
|
216
|
-
timestamp: response.header.timestamp,
|
|
217
|
-
token: req.authenticationToken,
|
|
218
|
-
method,
|
|
219
|
-
authVersion,
|
|
220
|
-
});
|
|
207
|
+
function assertVerificationResponse(bitgo, token, req, response, verificationResponse) {
|
|
221
208
|
if (!verificationResponse.isValid) {
|
|
222
|
-
// calculate the HMAC
|
|
223
|
-
const receivedHmac = response.header.hmac;
|
|
224
|
-
const expectedHmac = verificationResponse.expectedHmac;
|
|
225
|
-
const signatureSubject = verificationResponse.signatureSubject;
|
|
226
209
|
// Log only the first 10 characters of the token to ensure the full token isn't logged.
|
|
227
210
|
const partialBitgoToken = token ? token.substring(0, 10) : '';
|
|
228
211
|
const errorDetails = {
|
|
229
|
-
expectedHmac,
|
|
230
|
-
receivedHmac,
|
|
231
|
-
hmacInput: signatureSubject,
|
|
212
|
+
expectedHmac: verificationResponse.expectedHmac,
|
|
213
|
+
receivedHmac: response.header.hmac,
|
|
214
|
+
hmacInput: verificationResponse.signatureSubject,
|
|
232
215
|
requestToken: req.authenticationToken,
|
|
233
216
|
bitgoToken: partialBitgoToken,
|
|
234
217
|
};
|
|
@@ -243,6 +226,43 @@ function verifyResponse(bitgo, token, method, req, response, authVersion) {
|
|
|
243
226
|
debug('Server response outside response validity time window: %O', errorDetails);
|
|
244
227
|
throw new sdk_core_1.ApiResponseError('server response outside response validity time window, possible man-in-the-middle-attack', 511, errorDetails);
|
|
245
228
|
}
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* Verify that the response received from the server is signed correctly.
|
|
232
|
+
* Right now, it is very permissive with the timestamp variance.
|
|
233
|
+
*/
|
|
234
|
+
function verifyResponse(bitgo, token, method, req, response, authVersion) {
|
|
235
|
+
if (!req.isV2Authenticated || !req.authenticationToken) {
|
|
236
|
+
return response;
|
|
237
|
+
}
|
|
238
|
+
const verificationResponse = bitgo.verifyResponse({
|
|
239
|
+
url: req.url,
|
|
240
|
+
hmac: response.header.hmac,
|
|
241
|
+
statusCode: response.status,
|
|
242
|
+
text: response.text,
|
|
243
|
+
timestamp: response.header.timestamp,
|
|
244
|
+
token: req.authenticationToken,
|
|
245
|
+
method,
|
|
246
|
+
authVersion,
|
|
247
|
+
});
|
|
248
|
+
assertVerificationResponse(bitgo, token, req, response, verificationResponse);
|
|
249
|
+
return response;
|
|
250
|
+
}
|
|
251
|
+
async function verifyResponseAsync(bitgo, token, method, req, response, authVersion) {
|
|
252
|
+
if (!req.isV2Authenticated || !req.authenticationToken) {
|
|
253
|
+
return response;
|
|
254
|
+
}
|
|
255
|
+
const verificationResponse = await bitgo.verifyResponseAsync({
|
|
256
|
+
url: req.url,
|
|
257
|
+
hmac: response.header.hmac,
|
|
258
|
+
statusCode: response.status,
|
|
259
|
+
text: response.text,
|
|
260
|
+
timestamp: response.header.timestamp,
|
|
261
|
+
token: req.authenticationToken,
|
|
262
|
+
method,
|
|
263
|
+
authVersion,
|
|
264
|
+
});
|
|
265
|
+
assertVerificationResponse(bitgo, token, req, response, verificationResponse);
|
|
246
266
|
return response;
|
|
247
267
|
}
|
|
248
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQTZCQSx3Q0FXQztBQU9ELG9EQWVDO0FBdUJELGtEQUtDO0FBdUNELG9EQXNEQztBQU1ELHNEQXdCQztBQU1ELHdDQXVEQztBQWxSRDs7R0FFRztBQUNILGtEQUEwQjtBQUMxQiw4Q0FBc0I7QUFDdEIsb0RBQXVCO0FBQ3ZCLGtFQUF5QztBQUN6Qyw0REFBb0M7QUFDcEMsOENBQXlCO0FBQ3pCLDhEQUFzQztBQUV0QyxtREFBc0U7QUFLdEUsTUFBTSxLQUFLLEdBQUcsSUFBQSxlQUFLLEVBQUMsV0FBVyxDQUFDLENBQUM7QUFFakM7Ozs7Ozs7Ozs7R0FVRztBQUNILFNBQWdCLGNBQWMsQ0FDNUIsR0FBaUM7SUFFakMsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRTtRQUN4QixNQUFNLENBQUMsYUFBc0I7WUFDM0IsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUNiLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBcUIsYUFBYSxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQy9FLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FDdEMsQ0FBQztRQUNKLENBQUM7S0FDRixDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQWdCLG9CQUFvQixDQUNsQyxhQUFzQjtJQUV0QixPQUFPLFVBQVUsR0FBd0I7UUFDdkMsSUFBSSxnQkFBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksR0FBRyxDQUFDLE1BQU0sSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQztZQUNwRSxPQUFPO1lBQ0wsMEZBQTBGO1lBQzFGLGdIQUFnSDtZQUNoSCxDQUFDLGFBQWEsSUFBSSxHQUFHLENBQUMs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MEZBQTBGLEVBQzFGLEdBQUcsRUFDSCxZQUFZLENBQ2IsQ0FBQztJQUNKLENBQUM7SUFDRCxPQUFPLFFBQVEsQ0FBQztBQUNsQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAcHJldHRpZXJcbiAqL1xuaW1wb3J0IERlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCBlb2wgZnJvbSAnZW9sJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgc2FuaXRpemVIdG1sIGZyb20gJ3Nhbml0aXplLWh0bWwnO1xuaW1wb3J0IHN1cGVyYWdlbnQgZnJvbSAnc3VwZXJhZ2VudCc7XG5pbXBvcnQgdXJsTGliIGZyb20gJ3VybCc7XG5pbXBvcnQgcXVlcnlzdHJpbmcgZnJvbSAncXVlcnlzdHJpbmcnO1xuXG5pbXBvcnQgeyBBcGlSZXNwb25zZUVycm9yLCBCaXRHb1JlcXVlc3QgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5cbmltcG9ydCB7IEF1dGhWZXJzaW9uLCBWZXJpZnlSZXNwb25zZU9wdGlvbnMgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IEJpdEdvQVBJIH0gZnJvbSAnLi9iaXRnb0FQSSc7XG5cbmNvbnN0IGRlYnVnID0gRGVidWcoJ2JpdGdvOmFwaScpO1xuXG4vKipcbiAqIEFkZCB0aGUgYml0Z28tc3BlY2lmaWMgcmVzdWx0KCkgZnVuY3Rpb24gb24gYSBzdXBlcmFnZW50IHJlcXVlc3QuXG4gKlxuICogSWYgdGhlIHNlcnZlciByZXNwb25zZSBpcyBzdWNjZXNzZnVsLCB0aGUgYHJlc3VsdCgpYCBmdW5jdGlvbiB3aWxsIHJldHVybiBlaXRoZXIgdGhlIGVudGlyZSByZXNwb25zZSBib2R5LFxuICogb3IgdGhlIGZpZWxkIGZyb20gdGhlIHJlc3BvbnNlIGJvZHkgc3BlY2lmaWVkIGJ5IHRoZSBgb3B0aW9uYWxGaWVsZGAgcGFyYW1ldGVyIGlmIGl0IGlzIHByb3ZpZGVkLlxuICpcbiAqIElmIHRoZSBzZXJ2ZXIgcmVzcG9uc2Ugd2l0aCBhbiBlcnJvciwgYHJlc3VsdCgpYCB3aWxsIGhhbmRsZSBIVFRQIGVycm9ycyBhcHByb3ByaWF0ZWx5IGJ5XG4gKiByZXRocm93aW5nIHRoZW0gYXMgYW4gYEFwaVJlc3BvbnNlRXJyb3JgIGlmIHBvc3NpYmxlLCBhbmQgb3RoZXJ3aXNlIHJldGhyb3dpbmcgdGhlIHVuZGVybHlpbmcgcmVzcG9uc2UgZXJyb3IuXG4gKlxuICogQHBhcmFtIHJlcVxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9CaXRnb1JlcXVlc3Q8UmVzcG9uc2VSZXN1bHRUeXBlID0gYW55PihcbiAgcmVxOiBzdXBlcmFnZW50LlN1cGVyQWdlbnRSZXF1ZXN0XG4pOiBCaXRHb1JlcXVlc3Q8UmVzcG9uc2VSZXN1bHRUeXBlPiB7XG4gIHJldHVybiBPYmplY3QuYXNzaWduKHJlcSwge1xuICAgIHJlc3VsdChvcHRpb25hbEZpZWxkPzogc3RyaW5nKSB7XG4gICAgICByZXR1cm4gcmVxLnRoZW4oXG4gICAgICAgIChyZXNwb25zZSkgPT4gaGFuZGxlUmVzcG9uc2VSZXN1bHQ8UmVzcG9uc2VSZXN1bHRUeXBlPihvcHRpb25hbEZpZWxkKShyZXNwb25zZSksXG4gICAgICAgIChlcnJvcikgPT4gaGFuZGxlUmVzcG9uc2VFcnJvcihlcnJvcilcbiAgICAgICk7XG4gICAgfSxcbiAgfSk7XG59XG5cbi8qKlxuICogUmV0dXJuIGEgZnVuY3Rpb24gd2hpY2ggZXh0cmFjdHMgdGhlIHNwZWNpZmllZCByZXNwb25zZSBib2R5IHByb3BlcnR5IGZyb20gdGhlIHJlc3BvbnNlIGlmIHN1Y2Nlc3NmdWwsXG4gKiBvdGhlcndpc2UgdGhyb3cgYW4gYEFwaUVycm9yUmVzcG9uc2VgIHBhcnNlZCBmcm9tIHRoZSByZXNwb25zZSBib2R5LlxuICogQHBhcmFtIG9wdGlvbmFsRmllbGRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhhbmRsZVJlc3BvbnNlUmVzdWx0PFJlc3BvbnNlUmVzdWx0VHlwZT4oXG4gIG9wdGlvbmFsRmllbGQ/OiBzdHJpbmdcbik6IChyZXM6IHN1cGVyYWdlbnQuUmVzcG9uc2UpID0+IFJlc3BvbnNlUmVzdWx0VHlwZSB7XG4gIHJldHVybiBmdW5jdGlvbiAocmVzOiBzdXBlcmFnZW50LlJlc3BvbnNlKTogUmVzcG9uc2VSZXN1bHRUeXBlIHtcbiAgICBpZiAoXy5pc051bWJlcihyZXMuc3RhdHVzKSAmJiByZXMuc3RhdHVzID49IDIwMCAmJiByZXMuc3RhdHVzIDwgMzAwKSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICAvLyBJZiB0aGVyZSdzIGFuIG9wdGlvbmFsIGZpZWxkIGFuZCB0aGUgYm9keSBpcyBub24tbnVsbGlzaCB3aXRoIHRoYXQgcHJvcGVydHksIHJldHVybiBpdDtcbiAgICAgICAgLy8gb3RoZXJ3aXNlIHJldHVybiB0aGUgYm9keSBpZiBhdmFpbGFibGU7IGlmIG5vdCwgcmV0dXJuIHRoZSB0ZXh0OyBhbmQgZmluYWxseSBmYWxsYmFjayB0byB0aGUgZW50aXJlIHJlc3BvbnNlLlxuICAgICAgICAob3B0aW9uYWxGaWVsZCAmJiByZXMuYm9keSAmJiByZXMuYm9keVtvcHRpb25hbEZpZWxkXSAhPT0gdW5kZWZpbmVkID8gcmVzLmJvZHlbb3B0aW9uYWxGaWVsZF0gOiByZXMuYm9keSkgPz9cbiAgICAgICAgcmVzLnRleHQgPz9cbiAgICAgICAgcmVzXG4gICAgICApO1xuICAgIH1cbiAgICB0aHJvdyBlcnJGcm9tUmVzcG9uc2UocmVzKTtcbiAgfTtcbn1cblxuLyoqXG4gKiBFeHRyYWN0IHJlbGV2YW50IGluZm9ybWF0aW9uIGZyb20gYSBzdWNjZXNzZnVsIHJlc3BvbnNlICh0aGF0IGlzLCBhIHJlc3BvbnNlIHdpdGggYW4gSFRUUCBzdGF0dXMgY29kZVxuICogYmV0d2VlbiAyMDAgYW5kIDI5OSksIGJ1dCB3aGljaCByZXN1bHRlZCBpbiBhbiBhcHBsaWNhdGlvbiBzcGVjaWZpYyBlcnJvciBhbmQgdXNlIGl0IHRvIGNvbnN0cnVjdCBhbmRcbiAqIHRocm93IGFuIGBBcGlFcnJvclJlc3BvbnNlYC5cbiAqXG4gKiBAcGFyYW0gcmVzXG4gKi9cbmZ1bmN0aW9uIGVyckZyb21SZXNwb25zZTxSZXNwb25zZUJvZHlUeXBlPihyZXM6IHN1cGVyYWdlbnQuUmVzcG9uc2UpOiBBcGlSZXNwb25zZUVycm9yIHtcbiAgY29uc3QgbWVzc2FnZSA9IGNyZWF0ZVJlc3BvbnNlRXJyb3JTdHJpbmcocmVzKTtcbiAgY29uc3Qgc3RhdHVzID0gcmVzLnN0YXR1cztcbiAgY29uc3QgcmVzdWx0ID0gcmVzLmJvZHkgYXMgUmVzcG9uc2VCb2R5VHlwZTtcbiAgY29uc3QgaW52YWxpZFRva2VuID0gXy5oYXMocmVzLmhlYWRlciwgJ3gtYXV0aC1yZXF1aXJlZCcpICYmIHJlcy5oZWFkZXJbJ3gtYXV0aC1yZXF1aXJlZCddID09PSAndHJ1ZSc7XG4gIGNvbnN0IG5lZWRzT3RwID0gcmVzLmJvZHk/Lm5lZWRzT1RQICE9PSB1bmRlZmluZWQ7XG4gIHJldHVybiBuZXcgQXBpUmVzcG9uc2VFcnJvcihtZXNzYWdlLCBzdGF0dXMsIHJlc3VsdCwgaW52YWxpZFRva2VuLCBuZWVkc090cCk7XG59XG5cbi8qKlxuICogSGFuZGxlIGFuIGVycm9yIG9yIGFuIGVycm9yIGNvbnRhaW5pbmcgYW4gSFRUUCByZXNwb25zZSBhbmQgdXNlIGl0IHRvIHRocm93IGEgd2VsbC1mb3JtZWQgZXJyb3Igb2JqZWN0LlxuICpcbiAqIEBwYXJhbSBlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBoYW5kbGVSZXNwb25zZUVycm9yKGU6IEVycm9yICYgeyByZXNwb25zZT86IHN1cGVyYWdlbnQuUmVzcG9uc2UgfSk6IG5ldmVyIHtcbiAgaWYgKGUucmVzcG9uc2UpIHtcbiAgICB0aHJvdyBlcnJGcm9tUmVzcG9uc2UoZS5yZXNwb25zZSk7XG4gIH1cbiAgdGhyb3cgZTtcbn1cblxuLyoqXG4gKiBUaGVyZSBhcmUgbWFueSB3YXlzIGEgcmVxdWVzdCBjYW4gZmFpbCwgYW5kIG1heSB3YXlzIGluZm9ybWF0aW9uIG9uIHRoYXQgZmFpbHVyZSBjYW4gYmVcbiAqIGNvbW11bmljYXRlZCB0byB0aGUgY2xpZW50LiBUaGlzIGZ1bmN0aW9uIHRyaWVzIHRvIGhhbmRsZSB0aG9zZSBjYXNlcyBhbmQgY3JlYXRlIGEgc2FuZSBlcnJvciBzdHJpbmdcbiAqIEBwYXJhbSByZXMgUmVzcG9uc2UgZnJvbSBhbiBIVFRQIHJlcXVlc3RcbiAqL1xuZnVuY3Rpb24gY3JlYXRlUmVzcG9uc2VFcnJvclN0cmluZyhyZXM6IHN1cGVyYWdlbnQuUmVzcG9uc2UpOiBzdHJpbmcge1xuICBsZXQgZXJyU3RyaW5nID0gcmVzLnN0YXR1cy50b1N0cmluZygpOyAvLyBhdCB0aGUgdmVyeSBsZWFzdCB3ZSdsbCBoYXZlIHRoZSBzdGF0dXMgY29kZVxuICBpZiAocmVzLmJvZHk/LmVycm9yKSB7XG4gICAgLy8gdGhpcyBpcyB0aGUgY2FzZSB3ZSBob3BlIGZvciwgd2hlcmUgdGhlIHNlcnZlciBnaXZlcyB1cyBhIG5pY2UgZXJyb3IgZnJvbSB0aGUgSlNPTiBib2R5XG4gICAgZXJyU3RyaW5nID0gcmVzLmJvZHkuZXJyb3I7XG4gIH0gZWxzZSBpZiAocmVzLnRleHQpIHtcbiAgICAvLyBpZiB0aGUgcmVzcG9uc2UgY2FtZSBiYWNrIGFzIHRleHQsIHdlIHRyeSB0byBwYXJzZSBpdCBhcyBIVE1MIGFuZCByZW1vdmUgYWxsIHRhZ3MsIGxlYXZpbmcgdXNcbiAgICAvLyBqdXN0IHRoZSBiYXJlIHRleHQsIHdoaWNoIHdlIHRoZW4gdHJpbSBvZiBleGNlc3NpdmUgbmV3bGluZXMgYW5kIGxpbWl0IHRvIGEgY2VydGFpbiBsZW5ndGhcbiAgICB0cnkge1xuICAgICAgbGV0IHNhbml0aXplZFRleHQgPSBzYW5pdGl6ZUh0bWwocmVzLnRleHQsIHsgYWxsb3dlZFRhZ3M6IFtdIH0pO1xuICAgICAgc2FuaXRpemVkVGV4dCA9IHNhbml0aXplZFRleHQudHJpbSgpO1xuICAgICAgc2FuaXRpemVkVGV4dCA9IGVvbC5sZihzYW5pdGl6ZWRUZXh0KTsgLy8gdXNlICdcXG4nIGZvciBhbGwgbmV3bGluZXNcbiAgICAgIHNhbml0aXplZFRleHQgPSBfLnJlcGxhY2Uoc2FuaXRpemVkVGV4dCwgL1xcblsgfFxcdF17MSx9XFxuL2csICdcXG5cXG4nKTsgLy8gcmVtb3ZlIHRoZSBzcGFjZXMvdGFicyBiZXR3ZWVuIG5ld2xpbmVzXG4gICAgICBzYW5pdGl6ZWRUZXh0ID0gXy5yZXBsYWNlKHNhbml0aXplZFRleHQsIC9bXFxuXXszLH0vZywgJ1xcblxcbicpOyAvLyBoYXZlIGF0IG1vc3QgMiBjb25zZWN1dGl2ZSBuZXdsaW5lc1xuICAgICAgc2FuaXRpemVkVGV4dCA9IHNhbml0aXplZFRleHQuc3Vic3RyaW5nKDAsIDUwMDApOyAvLyBwcmV2ZW50IG1lc3NhZ2UgZnJvbSBnZXR0aW5nIHRvbyBsYXJnZVxuICAgICAgZXJyU3RyaW5nID0gZXJyU3RyaW5nICsgJ1xcbicgKyBzYW5pdGl6ZWRUZXh0OyAvLyBhZGQgaXQgdG8gb3VyIGV4aXN0aW5nIGVyclN0cmluZyAoYXQgdGhpcyBwb2ludCB0aGUgbW9yZSBpbmZvIHRoZSBiZXR0ZXIhKVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIC8vIGRvIG5vdGhpbmcsIHRoZSByZXNwb25zZSdzIEhUTUwgd2FzIHRvbyB3YWNreSB0byBiZSBwYXJzZWQgY2xlYW5seVxuICAgICAgZGVidWcoJ2dvdCBlcnJvciB3aXRoIG1lc3NhZ2UgXCIlc1wiIHdoaWxlIGNyZWF0aW5nIHJlc3BvbnNlIGVycm9yIHN0cmluZyBmcm9tIHJlc3BvbnNlOiAlcycsIGUubWVzc2FnZSwgcmVzLnRleHQpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBlcnJTdHJpbmc7XG59XG5cbi8qKlxuICogU2VyaWFsaXplIHJlcXVlc3QgZGF0YSBiYXNlZCBvbiB0aGUgcmVxdWVzdCBjb250ZW50IHR5cGUuXG4gKiBJZiBkYXRhIGlzIGFscmVhZHkgYSBzdHJpbmcsIHJldHVybnMgaXQgYXMtaXMgdG8gcHJlc2VydmUgZXhhY3QgYnl0ZXMgZm9yIEhNQUMuXG4gKiBJZiBkYXRhIGlzIGEgQnVmZmVyLCBjb252ZXJ0cyB0byBVVEYtOCBzdHJpbmcuXG4gKiBJZiBkYXRhIGlzIGFuIG9iamVjdCwgc2VyaWFsaXplcyBpdCBiYXNlZCBvbiBDb250ZW50LVR5cGUuXG4gKiBAcGFyYW0gcmVxXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXJpYWxpemVSZXF1ZXN0RGF0YShyZXE6IHN1cGVyYWdlbnQuUmVxdWVzdCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IGRhdGE6IHN0cmluZyB8IEJ1ZmZlciB8IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgdW5kZWZpbmVkID0gKHJlcSBhcyBhbnkpLl9kYXRhO1xuXG4gIGlmICh0eXBlb2YgZGF0YSA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIGlmIChCdWZmZXIuaXNCdWZmZXIoZGF0YSkpIHtcbiAgICAvLyBDb252ZXJ0IEJ1ZmZlciB0byBVVEYtOCBzdHJpbmcgYW5kIG11dGF0ZSBfZGF0YSB0byBlbnN1cmUgY29uc2lzdGVuY3kuXG4gICAgLy8gVGhpcyBpcyBjcml0aWNhbDogaWYgX2RhdGEgc3RheXMgYXMgYSBCdWZmZXIsIHN1cGVyYWdlbnQgd2lsbCBzZXJpYWxpemUgaXRcbiAgICAvLyBhcyBKU09OICh7XCJ0eXBlXCI6XCJCdWZmZXJcIixcImRhdGFcIjpbLi4uXX0pLCB3aGljaCB3b24ndCBtYXRjaCB0aGUgSE1BQy5cbiAgICAvLyBCeSBtdXRhdGluZyB0byBzdHJpbmcsIHN1cGVyYWdlbnQgc2VuZHMgdGhlIGV4YWN0IGJ5dGVzIHdlIGhhc2guXG4gICAgLy8gVGhpcyBpcyBzYWZlIGZvciByZXRyaWVzOiBjYWxsaW5nIGFnYWluIHdpdGggYSBzdHJpbmcgd2lsbCBoaXQgdGhlIGVhcmx5IHJldHVybiBhYm92ZS5cbiAgICBjb25zdCBzdHJpbmdEYXRhID0gZGF0YS50b1N0cmluZygndXRmOCcpO1xuICAgIChyZXEgYXMgYW55KS5fZGF0YSA9IHN0cmluZ0RhdGE7XG4gICAgcmV0dXJuIHN0cmluZ0RhdGE7XG4gIH1cblxuICBpZiAoZGF0YSA9PT0gdW5kZWZpbmVkIHx8IGRhdGEgPT09IG51bGwpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgLy8gU2VyaWFsaXplIG9iamVjdCBkYXRhIGJhc2VkIG9uIENvbnRlbnQtVHlwZVxuICBsZXQgY29udGVudFR5cGUgPSByZXEuZ2V0KCdDb250ZW50LVR5cGUnKTtcbiAgLy8gUGFyc2Ugb3V0IGp1c3QgdGhlIGNvbnRlbnQgdHlwZSBmcm9tIHRoZSBoZWFkZXIgKGlnbm9yZSB0aGUgY2hhcnNldClcbiAgaWYgKGNvbnRlbnRUeXBlKSB7XG4gICAgY29udGVudFR5cGUgPSBjb250ZW50VHlwZS5zcGxpdCgnOycpWzBdLnRyaW0oKTtcbiAgfVxuICBsZXQgc2VyaWFsaXplOiAoKGJvZHk6IHVua25vd24pID0+IHN0cmluZykgfCB1bmRlZmluZWQ7XG4gIGNvbnN0IHNlcmlhbGl6ZXJzID0gc3VwZXJhZ2VudC5zZXJpYWxpemUgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIGlmIChjb250ZW50VHlwZSkge1xuICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc2VyaWFsaXplcnMsIGNvbnRlbnRUeXBlKSkge1xuICAgICAgY29uc3QgY2FuZGlkYXRlID0gc2VyaWFsaXplcnNbY29udGVudFR5cGVdO1xuICAgICAgaWYgKHR5cGVvZiBjYW5kaWRhdGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgc2VyaWFsaXplID0gY2FuZGlkYXRlIGFzIChib2R5OiB1bmtub3duKSA9PiBzdHJpbmc7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICgvW1xcLytdanNvblxcYi8udGVzdChjb250ZW50VHlwZSkpIHtcbiAgICAgIC8vIEZhbGwgYmFjayB0byB0aGUgYnVpbHQtaW4gSlNPTiBzZXJpYWxpemVyIGZvciBKU09OLWxpa2UgY29udGVudCB0eXBlc1xuICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzZXJpYWxpemVycywgJ2FwcGxpY2F0aW9uL2pzb24nKSkge1xuICAgICAgICBjb25zdCBqc29uU2VyaWFsaXplciA9IHNlcmlhbGl6ZXJzWydhcHBsaWNhdGlvbi9qc29uJ107XG4gICAgICAgIGlmICh0eXBlb2YganNvblNlcmlhbGl6ZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICBzZXJpYWxpemUgPSBqc29uU2VyaWFsaXplciBhcyAoYm9keTogdW5rbm93bikgPT4gc3RyaW5nO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKHNlcmlhbGl6ZSkge1xuICAgIGNvbnN0IHNlcmlhbGl6ZWQgPSBzZXJpYWxpemUoZGF0YSk7XG4gICAgKHJlcSBhcyBhbnkpLl9kYXRhID0gc2VyaWFsaXplZDtcbiAgICByZXR1cm4gc2VyaWFsaXplZDtcbiAgfVxuXG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogU2V0IHRoZSBzdXBlcmFnZW50IHF1ZXJ5IHN0cmluZyBjb3JyZWN0bHkgZm9yIGJyb3dzZXJzIG9yIG5vZGUuXG4gKiBAcGFyYW0gcmVxXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRSZXF1ZXN0UXVlcnlTdHJpbmcocmVxOiBzdXBlcmFnZW50LlN1cGVyQWdlbnRSZXF1ZXN0KTogdm9pZCB7XG4gIGNvbnN0IHVybERldGFpbHMgPSB1cmxMaWIucGFyc2UocmVxLnVybCk7XG5cbiAgbGV0IHF1ZXJ5U3RyaW5nOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGNvbnN0IHF1ZXJ5OiBzdHJpbmdbXSA9IChyZXEgYXMgYW55KS5fcXVlcnk7XG4gIGNvbnN0IHFzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0gKHJlcSBhcyBhbnkpLnFzO1xuICBpZiAocXVlcnkgJiYgcXVlcnkubGVuZ3RoID4gMCkge1xuICAgIC8vIGJyb3dzZXIgdmVyc2lvblxuICAgIHF1ZXJ5U3RyaW5nID0gcXVlcnkuam9pbignJicpO1xuICAgIChyZXEgYXMgYW55KS5fcXVlcnkgPSBbXTtcbiAgfSBlbHNlIGlmIChxcykge1xuICAgIC8vIG5vZGUgdmVyc2lvblxuICAgIHF1ZXJ5U3RyaW5nID0gcXVlcnlzdHJpbmcuc3RyaW5naWZ5KHFzKTtcbiAgICAocmVxIGFzIGFueSkucXMgPSBudWxsO1xuICB9XG5cbiAgaWYgKHF1ZXJ5U3RyaW5nKSB7XG4gICAgaWYgKHVybERldGFpbHMuc2VhcmNoKSB7XG4gICAgICB1cmxEZXRhaWxzLnNlYXJjaCArPSAnJicgKyBxdWVyeVN0cmluZztcbiAgICB9IGVsc2Uge1xuICAgICAgdXJsRGV0YWlscy5zZWFyY2ggPSAnPycgKyBxdWVyeVN0cmluZztcbiAgICB9XG4gICAgcmVxLnVybCA9IHVybExpYi5mb3JtYXQodXJsRGV0YWlscyk7XG4gIH1cbn1cblxuLyoqXG4gKiBWZXJpZnkgdGhhdCB0aGUgcmVzcG9uc2UgcmVjZWl2ZWQgZnJvbSB0aGUgc2VydmVyIGlzIHNpZ25lZCBjb3JyZWN0bHkuXG4gKiBSaWdodCBub3csIGl0IGlzIHZlcnkgcGVybWlzc2l2ZSB3aXRoIHRoZSB0aW1lc3RhbXAgdmFyaWFuY2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2ZXJpZnlSZXNwb25zZShcbiAgYml0Z286IEJpdEdvQVBJLFxuICB0b2tlbjogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICBtZXRob2Q6IFZlcmlmeVJlc3BvbnNlT3B0aW9uc1snbWV0aG9kJ10sXG4gIHJlcTogc3VwZXJhZ2VudC5TdXBlckFnZW50UmVxdWVzdCxcbiAgcmVzcG9uc2U6IHN1cGVyYWdlbnQuUmVzcG9uc2UsXG4gIGF1dGhWZXJzaW9uOiBBdXRoVmVyc2lvblxuKTogc3VwZXJhZ2VudC5SZXNwb25zZSB7XG4gIC8vIHdlIGNhbid0IHZlcmlmeSB0aGUgcmVzcG9uc2UgaWYgd2UncmUgbm90IGF1dGhlbnRpY2F0ZWRcbiAgaWYgKCFyZXEuaXNWMkF1dGhlbnRpY2F0ZWQgfHwgIXJlcS5hdXRoZW50aWNhdGlvblRva2VuKSB7XG4gICAgcmV0dXJuIHJlc3BvbnNlO1xuICB9XG5cbiAgY29uc3QgdmVyaWZpY2F0aW9uUmVzcG9uc2UgPSBiaXRnby52ZXJpZnlSZXNwb25zZSh7XG4gICAgdXJsOiByZXEudXJsLFxuICAgIGhtYWM6IHJlc3BvbnNlLmhlYWRlci5obWFjLFxuICAgIHN0YXR1c0NvZGU6IHJlc3BvbnNlLnN0YXR1cyxcbiAgICB0ZXh0OiByZXNwb25zZS50ZXh0LFxuICAgIHRpbWVzdGFtcDogcmVzcG9uc2UuaGVhZGVyLnRpbWVzdGFtcCxcbiAgICB0b2tlbjogcmVxLmF1dGhlbnRpY2F0aW9uVG9rZW4sXG4gICAgbWV0aG9kLFxuICAgIGF1dGhWZXJzaW9uLFxuICB9KTtcblxuICBpZiAoIXZlcmlmaWNhdGlvblJlc3BvbnNlLmlzVmFsaWQpIHtcbiAgICAvLyBjYWxjdWxhdGUgdGhlIEhNQUNcbiAgICBjb25zdCByZWNlaXZlZEhtYWMgPSByZXNwb25zZS5oZWFkZXIuaG1hYztcbiAgICBjb25zdCBleHBlY3RlZEhtYWMgPSB2ZXJpZmljYXRpb25SZXNwb25zZS5leHBlY3RlZEhtYWM7XG4gICAgY29uc3Qgc2lnbmF0dXJlU3ViamVjdCA9IHZlcmlmaWNhdGlvblJlc3BvbnNlLnNpZ25hdHVyZVN1YmplY3Q7XG4gICAgLy8gTG9nIG9ubHkgdGhlIGZpcnN0IDEwIGNoYXJhY3RlcnMgb2YgdGhlIHRva2VuIHRvIGVuc3VyZSB0aGUgZnVsbCB0b2tlbiBpc24ndCBsb2dnZWQuXG4gICAgY29uc3QgcGFydGlhbEJpdGdvVG9rZW4gPSB0b2tlbiA/IHRva2VuLnN1YnN0cmluZygwLCAxMCkgOiAnJztcbiAgICBjb25zdCBlcnJvckRldGFpbHMgPSB7XG4gICAgICBleHBlY3RlZEhtYWMsXG4gICAgICByZWNlaXZlZEhtYWMsXG4gICAgICBobWFjSW5wdXQ6IHNpZ25hdHVyZVN1YmplY3QsXG4gICAgICByZXF1ZXN0VG9rZW46IHJlcS5hdXRoZW50aWNhdGlvblRva2VuLFxuICAgICAgYml0Z29Ub2tlbjogcGFydGlhbEJpdGdvVG9rZW4sXG4gICAgfTtcbiAgICBkZWJ1ZygnSW52YWxpZCByZXNwb25zZSBITUFDOiAlTycsIGVycm9yRGV0YWlscyk7XG4gICAgdGhyb3cgbmV3IEFwaVJlc3BvbnNlRXJyb3IoJ2ludmFsaWQgcmVzcG9uc2UgSE1BQywgcG9zc2libGUgbWFuLWluLXRoZS1taWRkbGUtYXR0YWNrJywgNTExLCBlcnJvckRldGFpbHMpO1xuICB9XG5cbiAgaWYgKGJpdGdvLmdldEF1dGhWZXJzaW9uKCkgPT09IDMgJiYgIXZlcmlmaWNhdGlvblJlc3BvbnNlLmlzSW5SZXNwb25zZVZhbGlkaXR5V2luZG93KSB7XG4gICAgY29uc3QgZXJyb3JEZXRhaWxzID0ge1xuICAgICAgdGltZXN0YW1wOiByZXNwb25zZS5oZWFkZXIudGltZXN0YW1wLFxuICAgICAgdmVyaWZpY2F0aW9uVGltZTogdmVyaWZpY2F0aW9uUmVzcG9uc2UudmVyaWZpY2F0aW9uVGltZSxcbiAgICB9O1xuICAgIGRlYnVnKCdTZXJ2ZXIgcmVzcG9uc2Ugb3V0c2lkZSByZXNwb25zZSB2YWxpZGl0eSB0aW1lIHdpbmRvdzogJU8nLCBlcnJvckRldGFpbHMpO1xuICAgIHRocm93IG5ldyBBcGlSZXNwb25zZUVycm9yKFxuICAgICAgJ3NlcnZlciByZXNwb25zZSBvdXRzaWRlIHJlc3BvbnNlIHZhbGlkaXR5IHRpbWUgd2luZG93LCBwb3NzaWJsZSBtYW4taW4tdGhlLW1pZGRsZS1hdHRhY2snLFxuICAgICAgNTExLFxuICAgICAgZXJyb3JEZXRhaWxzXG4gICAgKTtcbiAgfVxuICByZXR1cm4gcmVzcG9uc2U7XG59XG4iXX0=
|
|
268
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQTZCQSx3Q0FXQztBQU9ELG9EQWVDO0FBdUJELGtEQUtDO0FBdUNELG9EQXNEQztBQU1ELHNEQXdCQztBQTZDRCx3Q0F5QkM7QUFFRCxrREF5QkM7QUF0VEQ7O0dBRUc7QUFDSCxrREFBMEI7QUFDMUIsOENBQXNCO0FBQ3RCLG9EQUF1QjtBQUN2QixrRUFBeUM7QUFDekMsNERBQW9DO0FBQ3BDLDhDQUF5QjtBQUN6Qiw4REFBc0M7QUFFdEMsbURBQXNFO0FBS3RFLE1BQU0sS0FBSyxHQUFHLElBQUEsZUFBSyxFQUFDLFdBQVcsQ0FBQyxDQUFDO0FBRWpDOzs7Ozs7Ozs7O0dBVUc7QUFDSCxTQUFnQixjQUFjLENBQzVCLEdBQWlDO0lBRWpDLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUU7UUFDeEIsTUFBTSxDQUFDLGFBQXNCO1lBQzNCLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FDYixDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsb0JBQW9CLENBQXFCLGFBQWEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUMvRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQ3RDLENBQUM7UUFDSixDQUFDO0tBQ0YsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFnQixvQkFBb0IsQ0FDbEMsYUFBc0I7SUFFdEIsT0FBTyxVQUFVLEdBQXdCO1FBQ3ZDLElBQUksZ0JBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEdBQUcsQ0FBQyxNQUFNLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUM7WUFDcEUsT0FBTztZQUNMLDBGQUEwRjtZQUMxRixnSEFBZ0g7WUFDaEgsQ0FBQyxhQUFhLElB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LEVBQUUsR0FBRyxDQUFDLG1CQUFtQjtRQUM5QixNQUFNO1FBQ04sV0FBVztLQUNaLENBQUMsQ0FBQztJQUVILDBCQUEwQixDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO0lBQzlFLE9BQU8sUUFBUSxDQUFDO0FBQ2xCLENBQUM7QUFFTSxLQUFLLFVBQVUsbUJBQW1CLENBQ3ZDLEtBQWUsRUFDZixLQUF5QixFQUN6QixNQUF1QyxFQUN2QyxHQUFpQyxFQUNqQyxRQUE2QixFQUM3QixXQUF3QjtJQUV4QixJQUFJLENBQUMsR0FBRyxDQUFDLGlCQUFpQixJQUFJLENBQUMsR0FBRyxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDdkQsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztJQUVELE1BQU0sb0JBQW9CLEdBQUcsTUFBTSxLQUFLLENBQUMsbUJBQW1CLENBQUM7UUFDM0QsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHO1FBQ1osSUFBSSxFQUFFLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSTtRQUMxQixVQUFVLEVBQUUsUUFBUSxDQUFDLE1BQU07UUFDM0IsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFJO1FBQ25CLFNBQVMsRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLFNBQVM7UUFDcEMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxtQkFBbUI7UUFDOUIsTUFBTTtRQUNOLFdBQVc7S0FDWixDQUFDLENBQUM7SUFFSCwwQkFBMEIsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztJQUM5RSxPQUFPLFFBQVEsQ0FBQztBQUNsQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAcHJldHRpZXJcbiAqL1xuaW1wb3J0IERlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCBlb2wgZnJvbSAnZW9sJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgc2FuaXRpemVIdG1sIGZyb20gJ3Nhbml0aXplLWh0bWwnO1xuaW1wb3J0IHN1cGVyYWdlbnQgZnJvbSAnc3VwZXJhZ2VudCc7XG5pbXBvcnQgdXJsTGliIGZyb20gJ3VybCc7XG5pbXBvcnQgcXVlcnlzdHJpbmcgZnJvbSAncXVlcnlzdHJpbmcnO1xuXG5pbXBvcnQgeyBBcGlSZXNwb25zZUVycm9yLCBCaXRHb1JlcXVlc3QgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5cbmltcG9ydCB7IEF1dGhWZXJzaW9uLCBWZXJpZnlSZXNwb25zZUluZm8sIFZlcmlmeVJlc3BvbnNlT3B0aW9ucyB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgQml0R29BUEkgfSBmcm9tICcuL2JpdGdvQVBJJztcblxuY29uc3QgZGVidWcgPSBEZWJ1ZygnYml0Z286YXBpJyk7XG5cbi8qKlxuICogQWRkIHRoZSBiaXRnby1zcGVjaWZpYyByZXN1bHQoKSBmdW5jdGlvbiBvbiBhIHN1cGVyYWdlbnQgcmVxdWVzdC5cbiAqXG4gKiBJZiB0aGUgc2VydmVyIHJlc3BvbnNlIGlzIHN1Y2Nlc3NmdWwsIHRoZSBgcmVzdWx0KClgIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIGVpdGhlciB0aGUgZW50aXJlIHJlc3BvbnNlIGJvZHksXG4gKiBvciB0aGUgZmllbGQgZnJvbSB0aGUgcmVzcG9uc2UgYm9keSBzcGVjaWZpZWQgYnkgdGhlIGBvcHRpb25hbEZpZWxkYCBwYXJhbWV0ZXIgaWYgaXQgaXMgcHJvdmlkZWQuXG4gKlxuICogSWYgdGhlIHNlcnZlciByZXNwb25zZSB3aXRoIGFuIGVycm9yLCBgcmVzdWx0KClgIHdpbGwgaGFuZGxlIEhUVFAgZXJyb3JzIGFwcHJvcHJpYXRlbHkgYnlcbiAqIHJldGhyb3dpbmcgdGhlbSBhcyBhbiBgQXBpUmVzcG9uc2VFcnJvcmAgaWYgcG9zc2libGUsIGFuZCBvdGhlcndpc2UgcmV0aHJvd2luZyB0aGUgdW5kZXJseWluZyByZXNwb25zZSBlcnJvci5cbiAqXG4gKiBAcGFyYW0gcmVxXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0JpdGdvUmVxdWVzdDxSZXNwb25zZVJlc3VsdFR5cGUgPSBhbnk+KFxuICByZXE6IHN1cGVyYWdlbnQuU3VwZXJBZ2VudFJlcXVlc3Rcbik6IEJpdEdvUmVxdWVzdDxSZXNwb25zZVJlc3VsdFR5cGU+IHtcbiAgcmV0dXJuIE9iamVjdC5hc3NpZ24ocmVxLCB7XG4gICAgcmVzdWx0KG9wdGlvbmFsRmllbGQ/OiBzdHJpbmcpIHtcbiAgICAgIHJldHVybiByZXEudGhlbihcbiAgICAgICAgKHJlc3BvbnNlKSA9PiBoYW5kbGVSZXNwb25zZVJlc3VsdDxSZXNwb25zZVJlc3VsdFR5cGU+KG9wdGlvbmFsRmllbGQpKHJlc3BvbnNlKSxcbiAgICAgICAgKGVycm9yKSA9PiBoYW5kbGVSZXNwb25zZUVycm9yKGVycm9yKVxuICAgICAgKTtcbiAgICB9LFxuICB9KTtcbn1cblxuLyoqXG4gKiBSZXR1cm4gYSBmdW5jdGlvbiB3aGljaCBleHRyYWN0cyB0aGUgc3BlY2lmaWVkIHJlc3BvbnNlIGJvZHkgcHJvcGVydHkgZnJvbSB0aGUgcmVzcG9uc2UgaWYgc3VjY2Vzc2Z1bCxcbiAqIG90aGVyd2lzZSB0aHJvdyBhbiBgQXBpRXJyb3JSZXNwb25zZWAgcGFyc2VkIGZyb20gdGhlIHJlc3BvbnNlIGJvZHkuXG4gKiBAcGFyYW0gb3B0aW9uYWxGaWVsZFxuICovXG5leHBvcnQgZnVuY3Rpb24gaGFuZGxlUmVzcG9uc2VSZXN1bHQ8UmVzcG9uc2VSZXN1bHRUeXBlPihcbiAgb3B0aW9uYWxGaWVsZD86IHN0cmluZ1xuKTogKHJlczogc3VwZXJhZ2VudC5SZXNwb25zZSkgPT4gUmVzcG9uc2VSZXN1bHRUeXBlIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChyZXM6IHN1cGVyYWdlbnQuUmVzcG9uc2UpOiBSZXNwb25zZVJlc3VsdFR5cGUge1xuICAgIGlmIChfLmlzTnVtYmVyKHJlcy5zdGF0dXMpICYmIHJlcy5zdGF0dXMgPj0gMjAwICYmIHJlcy5zdGF0dXMgPCAzMDApIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIC8vIElmIHRoZXJlJ3MgYW4gb3B0aW9uYWwgZmllbGQgYW5kIHRoZSBib2R5IGlzIG5vbi1udWxsaXNoIHdpdGggdGhhdCBwcm9wZXJ0eSwgcmV0dXJuIGl0O1xuICAgICAgICAvLyBvdGhlcndpc2UgcmV0dXJuIHRoZSBib2R5IGlmIGF2YWlsYWJsZTsgaWYgbm90LCByZXR1cm4gdGhlIHRleHQ7IGFuZCBmaW5hbGx5IGZhbGxiYWNrIHRvIHRoZSBlbnRpcmUgcmVzcG9uc2UuXG4gICAgICAgIChvcHRpb25hbEZpZWxkICYmIHJlcy5ib2R5ICYmIHJlcy5ib2R5W29wdGlvbmFsRmllbGRdICE9PSB1bmRlZmluZWQgPyByZXMuYm9keVtvcHRpb25hbEZpZWxkXSA6IHJlcy5ib2R5KSA/P1xuICAgICAgICByZXMudGV4dCA/P1xuICAgICAgICByZXNcbiAgICAgICk7XG4gICAgfVxuICAgIHRocm93IGVyckZyb21SZXNwb25zZShyZXMpO1xuICB9O1xufVxuXG4vKipcbiAqIEV4dHJhY3QgcmVsZXZhbnQgaW5mb3JtYXRpb24gZnJvbSBhIHN1Y2Nlc3NmdWwgcmVzcG9uc2UgKHRoYXQgaXMsIGEgcmVzcG9uc2Ugd2l0aCBhbiBIVFRQIHN0YXR1cyBjb2RlXG4gKiBiZXR3ZWVuIDIwMCBhbmQgMjk5KSwgYnV0IHdoaWNoIHJlc3VsdGVkIGluIGFuIGFwcGxpY2F0aW9uIHNwZWNpZmljIGVycm9yIGFuZCB1c2UgaXQgdG8gY29uc3RydWN0IGFuZFxuICogdGhyb3cgYW4gYEFwaUVycm9yUmVzcG9uc2VgLlxuICpcbiAqIEBwYXJhbSByZXNcbiAqL1xuZnVuY3Rpb24gZXJyRnJvbVJlc3BvbnNlPFJlc3BvbnNlQm9keVR5cGU+KHJlczogc3VwZXJhZ2VudC5SZXNwb25zZSk6IEFwaVJlc3BvbnNlRXJyb3Ige1xuICBjb25zdCBtZXNzYWdlID0gY3JlYXRlUmVzcG9uc2VFcnJvclN0cmluZyhyZXMpO1xuICBjb25zdCBzdGF0dXMgPSByZXMuc3RhdHVzO1xuICBjb25zdCByZXN1bHQgPSByZXMuYm9keSBhcyBSZXNwb25zZUJvZHlUeXBlO1xuICBjb25zdCBpbnZhbGlkVG9rZW4gPSBfLmhhcyhyZXMuaGVhZGVyLCAneC1hdXRoLXJlcXVpcmVkJykgJiYgcmVzLmhlYWRlclsneC1hdXRoLXJlcXVpcmVkJ10gPT09ICd0cnVlJztcbiAgY29uc3QgbmVlZHNPdHAgPSByZXMuYm9keT8ubmVlZHNPVFAgIT09IHVuZGVmaW5lZDtcbiAgcmV0dXJuIG5ldyBBcGlSZXNwb25zZUVycm9yKG1lc3NhZ2UsIHN0YXR1cywgcmVzdWx0LCBpbnZhbGlkVG9rZW4sIG5lZWRzT3RwKTtcbn1cblxuLyoqXG4gKiBIYW5kbGUgYW4gZXJyb3Igb3IgYW4gZXJyb3IgY29udGFpbmluZyBhbiBIVFRQIHJlc3BvbnNlIGFuZCB1c2UgaXQgdG8gdGhyb3cgYSB3ZWxsLWZvcm1lZCBlcnJvciBvYmplY3QuXG4gKlxuICogQHBhcmFtIGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhhbmRsZVJlc3BvbnNlRXJyb3IoZTogRXJyb3IgJiB7IHJlc3BvbnNlPzogc3VwZXJhZ2VudC5SZXNwb25zZSB9KTogbmV2ZXIge1xuICBpZiAoZS5yZXNwb25zZSkge1xuICAgIHRocm93IGVyckZyb21SZXNwb25zZShlLnJlc3BvbnNlKTtcbiAgfVxuICB0aHJvdyBlO1xufVxuXG4vKipcbiAqIFRoZXJlIGFyZSBtYW55IHdheXMgYSByZXF1ZXN0IGNhbiBmYWlsLCBhbmQgbWF5IHdheXMgaW5mb3JtYXRpb24gb24gdGhhdCBmYWlsdXJlIGNhbiBiZVxuICogY29tbXVuaWNhdGVkIHRvIHRoZSBjbGllbnQuIFRoaXMgZnVuY3Rpb24gdHJpZXMgdG8gaGFuZGxlIHRob3NlIGNhc2VzIGFuZCBjcmVhdGUgYSBzYW5lIGVycm9yIHN0cmluZ1xuICogQHBhcmFtIHJlcyBSZXNwb25zZSBmcm9tIGFuIEhUVFAgcmVxdWVzdFxuICovXG5mdW5jdGlvbiBjcmVhdGVSZXNwb25zZUVycm9yU3RyaW5nKHJlczogc3VwZXJhZ2VudC5SZXNwb25zZSk6IHN0cmluZyB7XG4gIGxldCBlcnJTdHJpbmcgPSByZXMuc3RhdHVzLnRvU3RyaW5nKCk7IC8vIGF0IHRoZSB2ZXJ5IGxlYXN0IHdlJ2xsIGhhdmUgdGhlIHN0YXR1cyBjb2RlXG4gIGlmIChyZXMuYm9keT8uZXJyb3IpIHtcbiAgICAvLyB0aGlzIGlzIHRoZSBjYXNlIHdlIGhvcGUgZm9yLCB3aGVyZSB0aGUgc2VydmVyIGdpdmVzIHVzIGEgbmljZSBlcnJvciBmcm9tIHRoZSBKU09OIGJvZHlcbiAgICBlcnJTdHJpbmcgPSByZXMuYm9keS5lcnJvcjtcbiAgfSBlbHNlIGlmIChyZXMudGV4dCkge1xuICAgIC8vIGlmIHRoZSByZXNwb25zZSBjYW1lIGJhY2sgYXMgdGV4dCwgd2UgdHJ5IHRvIHBhcnNlIGl0IGFzIEhUTUwgYW5kIHJlbW92ZSBhbGwgdGFncywgbGVhdmluZyB1c1xuICAgIC8vIGp1c3QgdGhlIGJhcmUgdGV4dCwgd2hpY2ggd2UgdGhlbiB0cmltIG9mIGV4Y2Vzc2l2ZSBuZXdsaW5lcyBhbmQgbGltaXQgdG8gYSBjZXJ0YWluIGxlbmd0aFxuICAgIHRyeSB7XG4gICAgICBsZXQgc2FuaXRpemVkVGV4dCA9IHNhbml0aXplSHRtbChyZXMudGV4dCwgeyBhbGxvd2VkVGFnczogW10gfSk7XG4gICAgICBzYW5pdGl6ZWRUZXh0ID0gc2FuaXRpemVkVGV4dC50cmltKCk7XG4gICAgICBzYW5pdGl6ZWRUZXh0ID0gZW9sLmxmKHNhbml0aXplZFRleHQpOyAvLyB1c2UgJ1xcbicgZm9yIGFsbCBuZXdsaW5lc1xuICAgICAgc2FuaXRpemVkVGV4dCA9IF8ucmVwbGFjZShzYW5pdGl6ZWRUZXh0LCAvXFxuWyB8XFx0XXsxLH1cXG4vZywgJ1xcblxcbicpOyAvLyByZW1vdmUgdGhlIHNwYWNlcy90YWJzIGJldHdlZW4gbmV3bGluZXNcbiAgICAgIHNhbml0aXplZFRleHQgPSBfLnJlcGxhY2Uoc2FuaXRpemVkVGV4dCwgL1tcXG5dezMsfS9nLCAnXFxuXFxuJyk7IC8vIGhhdmUgYXQgbW9zdCAyIGNvbnNlY3V0aXZlIG5ld2xpbmVzXG4gICAgICBzYW5pdGl6ZWRUZXh0ID0gc2FuaXRpemVkVGV4dC5zdWJzdHJpbmcoMCwgNTAwMCk7IC8vIHByZXZlbnQgbWVzc2FnZSBmcm9tIGdldHRpbmcgdG9vIGxhcmdlXG4gICAgICBlcnJTdHJpbmcgPSBlcnJTdHJpbmcgKyAnXFxuJyArIHNhbml0aXplZFRleHQ7IC8vIGFkZCBpdCB0byBvdXIgZXhpc3RpbmcgZXJyU3RyaW5nIChhdCB0aGlzIHBvaW50IHRoZSBtb3JlIGluZm8gdGhlIGJldHRlciEpXG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgLy8gZG8gbm90aGluZywgdGhlIHJlc3BvbnNlJ3MgSFRNTCB3YXMgdG9vIHdhY2t5IHRvIGJlIHBhcnNlZCBjbGVhbmx5XG4gICAgICBkZWJ1ZygnZ290IGVycm9yIHdpdGggbWVzc2FnZSBcIiVzXCIgd2hpbGUgY3JlYXRpbmcgcmVzcG9uc2UgZXJyb3Igc3RyaW5nIGZyb20gcmVzcG9uc2U6ICVzJywgZS5tZXNzYWdlLCByZXMudGV4dCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGVyclN0cmluZztcbn1cblxuLyoqXG4gKiBTZXJpYWxpemUgcmVxdWVzdCBkYXRhIGJhc2VkIG9uIHRoZSByZXF1ZXN0IGNvbnRlbnQgdHlwZS5cbiAqIElmIGRhdGEgaXMgYWxyZWFkeSBhIHN0cmluZywgcmV0dXJucyBpdCBhcy1pcyB0byBwcmVzZXJ2ZSBleGFjdCBieXRlcyBmb3IgSE1BQy5cbiAqIElmIGRhdGEgaXMgYSBCdWZmZXIsIGNvbnZlcnRzIHRvIFVURi04IHN0cmluZy5cbiAqIElmIGRhdGEgaXMgYW4gb2JqZWN0LCBzZXJpYWxpemVzIGl0IGJhc2VkIG9uIENvbnRlbnQtVHlwZS5cbiAqIEBwYXJhbSByZXFcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZVJlcXVlc3REYXRhKHJlcTogc3VwZXJhZ2VudC5SZXF1ZXN0KTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgZGF0YTogc3RyaW5nIHwgQnVmZmVyIHwgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCB1bmRlZmluZWQgPSAocmVxIGFzIGFueSkuX2RhdGE7XG5cbiAgaWYgKHR5cGVvZiBkYXRhID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBkYXRhO1xuICB9XG5cbiAgaWYgKEJ1ZmZlci5pc0J1ZmZlcihkYXRhKSkge1xuICAgIC8vIENvbnZlcnQgQnVmZmVyIHRvIFVURi04IHN0cmluZyBhbmQgbXV0YXRlIF9kYXRhIHRvIGVuc3VyZSBjb25zaXN0ZW5jeS5cbiAgICAvLyBUaGlzIGlzIGNyaXRpY2FsOiBpZiBfZGF0YSBzdGF5cyBhcyBhIEJ1ZmZlciwgc3VwZXJhZ2VudCB3aWxsIHNlcmlhbGl6ZSBpdFxuICAgIC8vIGFzIEpTT04gKHtcInR5cGVcIjpcIkJ1ZmZlclwiLFwiZGF0YVwiOlsuLi5dfSksIHdoaWNoIHdvbid0IG1hdGNoIHRoZSBITUFDLlxuICAgIC8vIEJ5IG11dGF0aW5nIHRvIHN0cmluZywgc3VwZXJhZ2VudCBzZW5kcyB0aGUgZXhhY3QgYnl0ZXMgd2UgaGFzaC5cbiAgICAvLyBUaGlzIGlzIHNhZmUgZm9yIHJldHJpZXM6IGNhbGxpbmcgYWdhaW4gd2l0aCBhIHN0cmluZyB3aWxsIGhpdCB0aGUgZWFybHkgcmV0dXJuIGFib3ZlLlxuICAgIGNvbnN0IHN0cmluZ0RhdGEgPSBkYXRhLnRvU3RyaW5nKCd1dGY4Jyk7XG4gICAgKHJlcSBhcyBhbnkpLl9kYXRhID0gc3RyaW5nRGF0YTtcbiAgICByZXR1cm4gc3RyaW5nRGF0YTtcbiAgfVxuXG4gIGlmIChkYXRhID09PSB1bmRlZmluZWQgfHwgZGF0YSA9PT0gbnVsbCkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICAvLyBTZXJpYWxpemUgb2JqZWN0IGRhdGEgYmFzZWQgb24gQ29udGVudC1UeXBlXG4gIGxldCBjb250ZW50VHlwZSA9IHJlcS5nZXQoJ0NvbnRlbnQtVHlwZScpO1xuICAvLyBQYXJzZSBvdXQganVzdCB0aGUgY29udGVudCB0eXBlIGZyb20gdGhlIGhlYWRlciAoaWdub3JlIHRoZSBjaGFyc2V0KVxuICBpZiAoY29udGVudFR5cGUpIHtcbiAgICBjb250ZW50VHlwZSA9IGNvbnRlbnRUeXBlLnNwbGl0KCc7JylbMF0udHJpbSgpO1xuICB9XG4gIGxldCBzZXJpYWxpemU6ICgoYm9keTogdW5rbm93bikgPT4gc3RyaW5nKSB8IHVuZGVmaW5lZDtcbiAgY29uc3Qgc2VyaWFsaXplcnMgPSBzdXBlcmFnZW50LnNlcmlhbGl6ZSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgaWYgKGNvbnRlbnRUeXBlKSB7XG4gICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzZXJpYWxpemVycywgY29udGVudFR5cGUpKSB7XG4gICAgICBjb25zdCBjYW5kaWRhdGUgPSBzZXJpYWxpemVyc1tjb250ZW50VHlwZV07XG4gICAgICBpZiAodHlwZW9mIGNhbmRpZGF0ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBzZXJpYWxpemUgPSBjYW5kaWRhdGUgYXMgKGJvZHk6IHVua25vd24pID0+IHN0cmluZztcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKC9bXFwvK11qc29uXFxiLy50ZXN0KGNvbnRlbnRUeXBlKSkge1xuICAgICAgLy8gRmFsbCBiYWNrIHRvIHRoZSBidWlsdC1pbiBKU09OIHNlcmlhbGl6ZXIgZm9yIEpTT04tbGlrZSBjb250ZW50IHR5cGVzXG4gICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNlcmlhbGl6ZXJzLCAnYXBwbGljYXRpb24vanNvbicpKSB7XG4gICAgICAgIGNvbnN0IGpzb25TZXJpYWxpemVyID0gc2VyaWFsaXplcnNbJ2FwcGxpY2F0aW9uL2pzb24nXTtcbiAgICAgICAgaWYgKHR5cGVvZiBqc29uU2VyaWFsaXplciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIHNlcmlhbGl6ZSA9IGpzb25TZXJpYWxpemVyIGFzIChib2R5OiB1bmtub3duKSA9PiBzdHJpbmc7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAoc2VyaWFsaXplKSB7XG4gICAgY29uc3Qgc2VyaWFsaXplZCA9IHNlcmlhbGl6ZShkYXRhKTtcbiAgICAocmVxIGFzIGFueSkuX2RhdGEgPSBzZXJpYWxpemVkO1xuICAgIHJldHVybiBzZXJpYWxpemVkO1xuICB9XG5cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBTZXQgdGhlIHN1cGVyYWdlbnQgcXVlcnkgc3RyaW5nIGNvcnJlY3RseSBmb3IgYnJvd3NlcnMgb3Igbm9kZS5cbiAqIEBwYXJhbSByZXFcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldFJlcXVlc3RRdWVyeVN0cmluZyhyZXE6IHN1cGVyYWdlbnQuU3VwZXJBZ2VudFJlcXVlc3QpOiB2b2lkIHtcbiAgY29uc3QgdXJsRGV0YWlscyA9IHVybExpYi5wYXJzZShyZXEudXJsKTtcblxuICBsZXQgcXVlcnlTdHJpbmc6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgY29uc3QgcXVlcnk6IHN0cmluZ1tdID0gKHJlcSBhcyBhbnkpLl9xdWVyeTtcbiAgY29uc3QgcXM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSAocmVxIGFzIGFueSkucXM7XG4gIGlmIChxdWVyeSAmJiBxdWVyeS5sZW5ndGggPiAwKSB7XG4gICAgLy8gYnJvd3NlciB2ZXJzaW9uXG4gICAgcXVlcnlTdHJpbmcgPSBxdWVyeS5qb2luKCcmJyk7XG4gICAgKHJlcSBhcyBhbnkpLl9xdWVyeSA9IFtdO1xuICB9IGVsc2UgaWYgKHFzKSB7XG4gICAgLy8gbm9kZSB2ZXJzaW9uXG4gICAgcXVlcnlTdHJpbmcgPSBxdWVyeXN0cmluZy5zdHJpbmdpZnkocXMpO1xuICAgIChyZXEgYXMgYW55KS5xcyA9IG51bGw7XG4gIH1cblxuICBpZiAocXVlcnlTdHJpbmcpIHtcbiAgICBpZiAodXJsRGV0YWlscy5zZWFyY2gpIHtcbiAgICAgIHVybERldGFpbHMuc2VhcmNoICs9ICcmJyArIHF1ZXJ5U3RyaW5nO1xuICAgIH0gZWxzZSB7XG4gICAgICB1cmxEZXRhaWxzLnNlYXJjaCA9ICc/JyArIHF1ZXJ5U3RyaW5nO1xuICAgIH1cbiAgICByZXEudXJsID0gdXJsTGliLmZvcm1hdCh1cmxEZXRhaWxzKTtcbiAgfVxufVxuXG4vKipcbiAqIFZhbGlkYXRlIGEgY29tcGxldGVkIHZlcmlmaWNhdGlvbiByZXNwb25zZSBhbmQgdGhyb3cgYSBkZXNjcmlwdGl2ZSBgQXBpUmVzcG9uc2VFcnJvcmAgaWYgaXRcbiAqIGluZGljYXRlcyB0aGUgcmVzcG9uc2UgaXMgaW52YWxpZCBvciBvdXRzaWRlIHRoZSBhY2NlcHRhYmxlIHRpbWUgd2luZG93LlxuICovXG5mdW5jdGlvbiBhc3NlcnRWZXJpZmljYXRpb25SZXNwb25zZShcbiAgYml0Z286IEJpdEdvQVBJLFxuICB0b2tlbjogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICByZXE6IHN1cGVyYWdlbnQuU3VwZXJBZ2VudFJlcXVlc3QsXG4gIHJlc3BvbnNlOiBzdXBlcmFnZW50LlJlc3BvbnNlLFxuICB2ZXJpZmljYXRpb25SZXNwb25zZTogVmVyaWZ5UmVzcG9uc2VJbmZvXG4pOiB2b2lkIHtcbiAgaWYgKCF2ZXJpZmljYXRpb25SZXNwb25zZS5pc1ZhbGlkKSB7XG4gICAgLy8gTG9nIG9ubHkgdGhlIGZpcnN0IDEwIGNoYXJhY3RlcnMgb2YgdGhlIHRva2VuIHRvIGVuc3VyZSB0aGUgZnVsbCB0b2tlbiBpc24ndCBsb2dnZWQuXG4gICAgY29uc3QgcGFydGlhbEJpdGdvVG9rZW4gPSB0b2tlbiA/IHRva2VuLnN1YnN0cmluZygwLCAxMCkgOiAnJztcbiAgICBjb25zdCBlcnJvckRldGFpbHMgPSB7XG4gICAgICBleHBlY3RlZEhtYWM6IHZlcmlmaWNhdGlvblJlc3BvbnNlLmV4cGVjdGVkSG1hYyxcbiAgICAgIHJlY2VpdmVkSG1hYzogcmVzcG9uc2UuaGVhZGVyLmhtYWMsXG4gICAgICBobWFjSW5wdXQ6IHZlcmlmaWNhdGlvblJlc3BvbnNlLnNpZ25hdHVyZVN1YmplY3QsXG4gICAgICByZXF1ZXN0VG9rZW46IHJlcS5hdXRoZW50aWNhdGlvblRva2VuLFxuICAgICAgYml0Z29Ub2tlbjogcGFydGlhbEJpdGdvVG9rZW4sXG4gICAgfTtcbiAgICBkZWJ1ZygnSW52YWxpZCByZXNwb25zZSBITUFDOiAlTycsIGVycm9yRGV0YWlscyk7XG4gICAgdGhyb3cgbmV3IEFwaVJlc3BvbnNlRXJyb3IoJ2ludmFsaWQgcmVzcG9uc2UgSE1BQywgcG9zc2libGUgbWFuLWluLXRoZS1taWRkbGUtYXR0YWNrJywgNTExLCBlcnJvckRldGFpbHMpO1xuICB9XG5cbiAgaWYgKGJpdGdvLmdldEF1dGhWZXJzaW9uKCkgPT09IDMgJiYgIXZlcmlmaWNhdGlvblJlc3BvbnNlLmlzSW5SZXNwb25zZVZhbGlkaXR5V2luZG93KSB7XG4gICAgY29uc3QgZXJyb3JEZXRhaWxzID0ge1xuICAgICAgdGltZXN0YW1wOiByZXNwb25zZS5oZWFkZXIudGltZXN0YW1wLFxuICAgICAgdmVyaWZpY2F0aW9uVGltZTogdmVyaWZpY2F0aW9uUmVzcG9uc2UudmVyaWZpY2F0aW9uVGltZSxcbiAgICB9O1xuICAgIGRlYnVnKCdTZXJ2ZXIgcmVzcG9uc2Ugb3V0c2lkZSByZXNwb25zZSB2YWxpZGl0eSB0aW1lIHdpbmRvdzogJU8nLCBlcnJvckRldGFpbHMpO1xuICAgIHRocm93IG5ldyBBcGlSZXNwb25zZUVycm9yKFxuICAgICAgJ3NlcnZlciByZXNwb25zZSBvdXRzaWRlIHJlc3BvbnNlIHZhbGlkaXR5IHRpbWUgd2luZG93LCBwb3NzaWJsZSBtYW4taW4tdGhlLW1pZGRsZS1hdHRhY2snLFxuICAgICAgNTExLFxuICAgICAgZXJyb3JEZXRhaWxzXG4gICAgKTtcbiAgfVxufVxuXG4vKipcbiAqIFZlcmlmeSB0aGF0IHRoZSByZXNwb25zZSByZWNlaXZlZCBmcm9tIHRoZSBzZXJ2ZXIgaXMgc2lnbmVkIGNvcnJlY3RseS5cbiAqIFJpZ2h0IG5vdywgaXQgaXMgdmVyeSBwZXJtaXNzaXZlIHdpdGggdGhlIHRpbWVzdGFtcCB2YXJpYW5jZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZlcmlmeVJlc3BvbnNlKFxuICBiaXRnbzogQml0R29BUEksXG4gIHRva2VuOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gIG1ldGhvZDogVmVyaWZ5UmVzcG9uc2VPcHRpb25zWydtZXRob2QnXSxcbiAgcmVxOiBzdXBlcmFnZW50LlN1cGVyQWdlbnRSZXF1ZXN0LFxuICByZXNwb25zZTogc3VwZXJhZ2VudC5SZXNwb25zZSxcbiAgYXV0aFZlcnNpb246IEF1dGhWZXJzaW9uXG4pOiBzdXBlcmFnZW50LlJlc3BvbnNlIHtcbiAgaWYgKCFyZXEuaXNWMkF1dGhlbnRpY2F0ZWQgfHwgIXJlcS5hdXRoZW50aWNhdGlvblRva2VuKSB7XG4gICAgcmV0dXJuIHJlc3BvbnNlO1xuICB9XG5cbiAgY29uc3QgdmVyaWZpY2F0aW9uUmVzcG9uc2UgPSBiaXRnby52ZXJpZnlSZXNwb25zZSh7XG4gICAgdXJsOiByZXEudXJsLFxuICAgIGhtYWM6IHJlc3BvbnNlLmhlYWRlci5obWFjLFxuICAgIHN0YXR1c0NvZGU6IHJlc3BvbnNlLnN0YXR1cyxcbiAgICB0ZXh0OiByZXNwb25zZS50ZXh0LFxuICAgIHRpbWVzdGFtcDogcmVzcG9uc2UuaGVhZGVyLnRpbWVzdGFtcCxcbiAgICB0b2tlbjogcmVxLmF1dGhlbnRpY2F0aW9uVG9rZW4sXG4gICAgbWV0aG9kLFxuICAgIGF1dGhWZXJzaW9uLFxuICB9KTtcblxuICBhc3NlcnRWZXJpZmljYXRpb25SZXNwb25zZShiaXRnbywgdG9rZW4sIHJlcSwgcmVzcG9uc2UsIHZlcmlmaWNhdGlvblJlc3BvbnNlKTtcbiAgcmV0dXJuIHJlc3BvbnNlO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdmVyaWZ5UmVzcG9uc2VBc3luYyhcbiAgYml0Z286IEJpdEdvQVBJLFxuICB0b2tlbjogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICBtZXRob2Q6IFZlcmlmeVJlc3BvbnNlT3B0aW9uc1snbWV0aG9kJ10sXG4gIHJlcTogc3VwZXJhZ2VudC5TdXBlckFnZW50UmVxdWVzdCxcbiAgcmVzcG9uc2U6IHN1cGVyYWdlbnQuUmVzcG9uc2UsXG4gIGF1dGhWZXJzaW9uOiBBdXRoVmVyc2lvblxuKTogUHJvbWlzZTxzdXBlcmFnZW50LlJlc3BvbnNlPiB7XG4gIGlmICghcmVxLmlzVjJBdXRoZW50aWNhdGVkIHx8ICFyZXEuYXV0aGVudGljYXRpb25Ub2tlbikge1xuICAgIHJldHVybiByZXNwb25zZTtcbiAgfVxuXG4gIGNvbnN0IHZlcmlmaWNhdGlvblJlc3BvbnNlID0gYXdhaXQgYml0Z28udmVyaWZ5UmVzcG9uc2VBc3luYyh7XG4gICAgdXJsOiByZXEudXJsLFxuICAgIGhtYWM6IHJlc3BvbnNlLmhlYWRlci5obWFjLFxuICAgIHN0YXR1c0NvZGU6IHJlc3BvbnNlLnN0YXR1cyxcbiAgICB0ZXh0OiByZXNwb25zZS50ZXh0LFxuICAgIHRpbWVzdGFtcDogcmVzcG9uc2UuaGVhZGVyLnRpbWVzdGFtcCxcbiAgICB0b2tlbjogcmVxLmF1dGhlbnRpY2F0aW9uVG9rZW4sXG4gICAgbWV0aG9kLFxuICAgIGF1dGhWZXJzaW9uLFxuICB9KTtcblxuICBhc3NlcnRWZXJpZmljYXRpb25SZXNwb25zZShiaXRnbywgdG9rZW4sIHJlcSwgcmVzcG9uc2UsIHZlcmlmaWNhdGlvblJlc3BvbnNlKTtcbiAgcmV0dXJuIHJlc3BvbnNlO1xufVxuIl19
|
package/dist/src/bitgoAPI.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { BaseCoin, BitGoBase, BitGoRequest, CoinConstructor, DecryptKeysOptions, DecryptOptions, EcdhDerivedKeypair, EncryptOptions, EnvironmentName, GetSharingKeyOptions, GetSigningKeyApi, IRequestTracer } from '@bitgo-beta/sdk-core';
|
|
2
|
+
import { type IHmacAuthStrategy } from '@bitgo-beta/sdk-hmac';
|
|
2
3
|
import { ECPairInterface } from '@bitgo-beta/utxo-lib';
|
|
3
4
|
import * as superagent from 'superagent';
|
|
4
5
|
import { AccessTokenOptions, AddAccessTokenOptions, AddAccessTokenResponse, AuthenticateOptions, AuthenticateWithAuthCodeOptions, BitGoAPIOptions, BitGoJson, BitGoSimulateWebhookOptions, CalculateHmacSubjectOptions, CalculateRequestHeadersOptions, CalculateRequestHmacOptions, ChangePasswordOptions, Constants, DeprecatedVerifyAddressOptions, EstimateFeeOptions, ExtendTokenOptions, GetEcdhSecretOptions, GetUserOptions, ListWebhookNotificationsOptions, LoginResponse, PingOptions, ProcessedAuthenticationOptions, ReconstitutedSecret, ReconstituteSecretOptions, RegisterPushTokenOptions, RemoveAccessTokenOptions, RequestHeaders, RequestMethods, SplitSecret, SplitSecretOptions, TokenIssuance, TokenIssuanceResponse, UnlockOptions, User, VerifyPasswordOptions, VerifyPushTokenOptions, VerifyResponseInfo, VerifyResponseOptions, VerifyShardsOptions, WebhookOptions } from './types';
|
|
@@ -36,6 +37,7 @@ export declare class BitGoAPI implements BitGoBase {
|
|
|
36
37
|
private _customProxyAgent?;
|
|
37
38
|
private _requestIdPrefix?;
|
|
38
39
|
private getAdditionalHeadersCb?;
|
|
40
|
+
protected _hmacAuthStrategy: IHmacAuthStrategy;
|
|
39
41
|
constructor(params?: BitGoAPIOptions);
|
|
40
42
|
/**
|
|
41
43
|
* Initialize client constants if provided.
|
|
@@ -62,6 +64,11 @@ export declare class BitGoAPI implements BitGoBase {
|
|
|
62
64
|
* Return the current auth version used for requests to the BitGo server
|
|
63
65
|
*/
|
|
64
66
|
getAuthVersion(): number;
|
|
67
|
+
/**
|
|
68
|
+
* Signs and sends a v2-authenticated request, then verifies the response HMAC.
|
|
69
|
+
* Extracted from the req.then override in requestPatch to keep that method readable.
|
|
70
|
+
*/
|
|
71
|
+
private _sendRequestWithHmac;
|
|
65
72
|
/**
|
|
66
73
|
* This is a patching function which can apply our authorization
|
|
67
74
|
* headers to any outbound request.
|
|
@@ -100,9 +107,15 @@ export declare class BitGoAPI implements BitGoBase {
|
|
|
100
107
|
*/
|
|
101
108
|
calculateRequestHeaders(params: CalculateRequestHeadersOptions): RequestHeaders;
|
|
102
109
|
/**
|
|
103
|
-
* Verify the HMAC for an HTTP response
|
|
110
|
+
* Verify the HMAC for an HTTP response (synchronous, uses sdk-hmac directly).
|
|
111
|
+
* Kept for backward compatibility with external callers.
|
|
104
112
|
*/
|
|
105
113
|
verifyResponse(params: VerifyResponseOptions): VerifyResponseInfo;
|
|
114
|
+
/**
|
|
115
|
+
* Verify the HMAC for an HTTP response via the configured strategy (async).
|
|
116
|
+
* Used internally by the request pipeline.
|
|
117
|
+
*/
|
|
118
|
+
verifyResponseAsync(params: VerifyResponseOptions): Promise<VerifyResponseInfo>;
|
|
106
119
|
/**
|
|
107
120
|
* Fetch useful constant values from the BitGo server.
|
|
108
121
|
* These values do change infrequently, so they need to be fetched,
|
|
@@ -172,7 +185,7 @@ export declare class BitGoAPI implements BitGoBase {
|
|
|
172
185
|
* Process the username, password and otp into an object containing the username and hashed password, ready to
|
|
173
186
|
* send to bitgo for authentication.
|
|
174
187
|
*/
|
|
175
|
-
preprocessAuthenticationParams({ username, password, otp, forceSMS, extensible, trust, forReset2FA, initialHash, fingerprintHash, }: AuthenticateOptions): ProcessedAuthenticationOptions
|
|
188
|
+
preprocessAuthenticationParams({ username, password, otp, forceSMS, extensible, trust, forReset2FA, initialHash, fingerprintHash, }: AuthenticateOptions): Promise<ProcessedAuthenticationOptions>;
|
|
176
189
|
/**
|
|
177
190
|
* Validate the passkey response is in the expected format
|
|
178
191
|
* Should be as is returned from navigator.credentials.get()
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bitgoAPI.d.ts","sourceRoot":"","sources":["../../src/bitgoAPI.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,QAAQ,EAER,SAAS,EACT,YAAY,EACZ,eAAe,EAEf,kBAAkB,EAClB,cAAc,EAEd,kBAAkB,EAClB,cAAc,EACd,eAAe,EAIf,oBAAoB,EACpB,gBAAgB,EAEhB,cAAc,EAGf,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"bitgoAPI.d.ts","sourceRoot":"","sources":["../../src/bitgoAPI.ts"],"names":[],"mappings":"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"}
|