@cloudbase/app 3.3.8 → 3.3.10
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/cjs/index.js +2 -2
- package/dist/cjs/libs/request.d.ts +1 -0
- package/dist/cjs/libs/request.js +21 -19
- package/dist/esm/index.js +2 -2
- package/dist/esm/libs/request.d.ts +1 -0
- package/dist/esm/libs/request.js +21 -19
- package/dist/miniprogram/index.js +1 -1
- package/package.json +4 -4
- package/src/index.ts +1 -1
- package/src/libs/request.ts +20 -14
package/dist/esm/libs/request.js
CHANGED
|
@@ -336,36 +336,38 @@ var CloudbaseRequest = (function () {
|
|
|
336
336
|
CloudbaseRequest.prototype.fetch = function (options) {
|
|
337
337
|
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
338
338
|
return __awaiter(this, void 0, void 0, function () {
|
|
339
|
-
var token, _j, headers, restOptions, doFetch, result, err_2;
|
|
339
|
+
var token, _j, headers, _k, withCredentials, restOptions, doFetch, result, err_2;
|
|
340
340
|
var _this = this;
|
|
341
|
-
return __generator(this, function (
|
|
342
|
-
switch (
|
|
341
|
+
return __generator(this, function (_l) {
|
|
342
|
+
switch (_l.label) {
|
|
343
343
|
case 0:
|
|
344
|
-
token = options.token, _j = options.headers, headers = _j === void 0 ? {} : _j, restOptions = __rest(options, ["token", "headers"]);
|
|
344
|
+
token = options.token, _j = options.headers, headers = _j === void 0 ? {} : _j, _k = options.withCredentials, withCredentials = _k === void 0 ? true : _k, restOptions = __rest(options, ["token", "headers", "withCredentials"]);
|
|
345
345
|
doFetch = function () { return __awaiter(_this, void 0, void 0, function () {
|
|
346
|
-
var _a, _b
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
switch (_f.label) {
|
|
346
|
+
var authHeaders, _a, _b;
|
|
347
|
+
return __generator(this, function (_c) {
|
|
348
|
+
switch (_c.label) {
|
|
350
349
|
case 0:
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
350
|
+
authHeaders = {};
|
|
351
|
+
if (!withCredentials) return [3, 2];
|
|
352
|
+
_a = authHeaders;
|
|
353
|
+
_b = "Bearer ".concat;
|
|
355
354
|
return [4, this.getAccessToken(token)];
|
|
356
|
-
case 1:
|
|
355
|
+
case 1:
|
|
356
|
+
_a.Authorization = _b.apply("Bearer ", [_c.sent()]);
|
|
357
|
+
_c.label = 2;
|
|
358
|
+
case 2: return [2, this.reqClass.fetch(__assign({ headers: __assign(__assign(__assign({ 'X-SDK-Version': "@cloudbase/js-sdk/".concat(getSdkVersion()) }, authHeaders), this.getDefaultHeaders()), headers) }, restOptions))];
|
|
357
359
|
}
|
|
358
360
|
});
|
|
359
361
|
}); };
|
|
360
|
-
|
|
362
|
+
_l.label = 1;
|
|
361
363
|
case 1:
|
|
362
|
-
|
|
364
|
+
_l.trys.push([1, 3, , 6]);
|
|
363
365
|
return [4, doFetch()];
|
|
364
366
|
case 2:
|
|
365
|
-
result =
|
|
367
|
+
result = _l.sent();
|
|
366
368
|
return [2, result];
|
|
367
369
|
case 3:
|
|
368
|
-
err_2 =
|
|
370
|
+
err_2 = _l.sent();
|
|
369
371
|
try {
|
|
370
372
|
err_2.requestId = err_2.requestId || headers['x-request-id'] || headers['X-Request-Id'] || '';
|
|
371
373
|
}
|
|
@@ -376,7 +378,7 @@ var CloudbaseRequest = (function () {
|
|
|
376
378
|
}
|
|
377
379
|
return [4, ((_h = (_g = (_f = (_e = this.config) === null || _e === void 0 ? void 0 : _e._fromApp) === null || _f === void 0 ? void 0 : _f.oauthInstance) === null || _g === void 0 ? void 0 : _g.authApi) === null || _h === void 0 ? void 0 : _h.refreshTokenForce())];
|
|
378
380
|
case 4:
|
|
379
|
-
|
|
381
|
+
_l.sent();
|
|
380
382
|
return [2, doFetch()];
|
|
381
383
|
case 5: throw err_2;
|
|
382
384
|
case 6: return [2];
|
|
@@ -470,4 +472,4 @@ export function initRequest(config) {
|
|
|
470
472
|
export function getRequestByEnvId(env) {
|
|
471
473
|
return requestMap[env];
|
|
472
474
|
}
|
|
473
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWJzL3JlcXVlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQVNuRyxPQUFPLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTtBQVVsRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sU0FBUyxDQUFBO0FBQ3ZDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFDNUIsSUFBQSxNQUFNLEdBQUssU0FBUyxPQUFkLENBQWM7QUFDcEIsSUFBQSxRQUFRLEdBQTRCLEtBQUssU0FBakMsRUFBRSxVQUFVLEdBQWdCLEtBQUssV0FBckIsRUFBRSxTQUFTLEdBQUssS0FBSyxVQUFWLENBQVU7QUFHakQsSUFBTSwyQkFBMkIsR0FBRztJQUNsQyxhQUFhO0lBQ2IsYUFBYTtJQUNiLHVCQUF1QjtJQUN2Qix3QkFBd0I7SUFDeEIsYUFBYTtJQUNiLHVDQUF1QztJQUN2QyxpQ0FBaUM7SUFDakMsMEJBQTBCO0lBQzFCLDZCQUE2QjtJQUM3Qiw2QkFBNkI7SUFDN0IsMkJBQTJCO0NBQzVCLENBQUE7QUFFRCxTQUFTLFNBQVMsQ0FBQyxRQUE2QixFQUFFLElBQVksRUFBRSxLQUEyQjtJQUN6RixJQUFNLFlBQVksR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDbkMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLFVBQVUsT0FBd0I7UUFDakQsSUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFBO1FBQ2YsSUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFBO1FBQ2xCLEtBQUssQ0FBQyxPQUFP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RWY7eUJBQ0Y7d0JBRWdCLFdBQU0sSUFBSSxDQUFDLEtBQUsscUJBQy9CLE1BQU0sRUFBRSxNQUFNLElBQUksTUFBTSxFQUN4QixPQUFPLGFBQ0wsY0FBYyxFQUFFLGlDQUFpQyxFQUNqRCxjQUFjLEVBQUUsU0FBUyxJQUN0QixNQUFNLEtBRVIsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLENBQUMsS0FDM0MsR0FBRyxFQUFFLFFBQVEsRUFDYixhQUFhLGVBQUEsSUFDYixFQUFBOzt3QkFWSSxRQUFRLEdBQUcsU0FVZjt5Q0FFTyxTQUFTLFdBQUEsSUFBSyxRQUFROzt3QkFBUSxXQUFNLFFBQVEsQ0FBQyxJQUFJLEVBQUE7NEJBQTFELDhDQUFpQyxPQUFJLEdBQUUsU0FBbUIsVUFBRTs7OztLQUM3RDtJQUNILHVCQUFDO0FBQUQsQ0FBQyxBQXZXRCxJQXVXQzs7QUFFRCxJQUFNLFVBQVUsR0FBeUIsRUFBRSxDQUFBO0FBRTNDLE1BQU0sVUFBVSxXQUFXLENBQUMsTUFBK0I7SUFDekQsVUFBVSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLGdCQUFnQix1QkFDeEMsTUFBTSxLQUNULEtBQUssRUFBRSxJQUFJLElBQ1gsQ0FBQTtBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUsaUJBQWlCLENBQUMsR0FBVztJQUMzQyxPQUFPLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQTtBQUN4QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgREFUQV9WRVJTSU9OLCBnZXRTZGtWZXJzaW9uLCBnZXRCYXNlRW5kUG9pbnQsIGdldEVuZFBvaW50SW5mbyB9IGZyb20gJy4uL2NvbnN0YW50cy9jb21tb24nXG5pbXBvcnQge1xuICBJUmVxdWVzdE9wdGlvbnMsXG4gIFNES1JlcXVlc3RJbnRlcmZhY2UsXG4gIFJlc3BvbnNlT2JqZWN0LFxuICBJVXBsb2FkUmVxdWVzdE9wdGlvbnMsXG4gIElSZXF1ZXN0Q29uZmlnLFxuICBJRmV0Y2hPcHRpb25zLFxufSBmcm9tICdAY2xvdWRiYXNlL2FkYXB0ZXItaW50ZXJmYWNlJ1xuaW1wb3J0IHsgdXRpbHMsIGNvbnN0YW50cywgbGFuZ0V2ZW50IH0gZnJvbSAnQGNsb3VkYmFzZS91dGlsaXRpZXMnXG5pbXBvcnQgeyBFbmRQb2ludEtleSwgS1YgfSBmcm9tICdAY2xvdWRiYXNlL3R5cGVzJ1xuaW1wb3J0IHsgSUN1c3RvbVJlcU9wdHMgfSBmcm9tICdAY2xvdWRiYXNlL3R5cGVzL2Z1bmN0aW9ucydcbmltcG9ydCB7XG4gIElHZXRBY2Nlc3NUb2tlblJlc3VsdCxcbiAgSUNsb3VkYmFzZVJlcXVlc3RDb25maWcsXG4gIElBcHBlbmRlZFJlcXVlc3RJbmZvLFxuICBJUmVxdWVzdEJlZm9yZUhvb2ssXG59IGZyb20gJ0BjbG91ZGJhc2UvdHlwZXMvcmVxdWVzdCdcbmltcG9ydCB7IElDbG91ZGJhc2VDYWNoZSB9IGZyb20gJ0BjbG91ZGJhc2UvdHlwZXMvY2FjaGUnXG5pbXBvcnQgeyBnZXRMb2NhbENhY2hlIH0gZnJvbSAnLi9jYWNoZSdcbmltcG9ydCB7IFBsYXRmb3JtIH0gZnJvbSAnLi9hZGFwdGVyJ1xuY29uc3QgeyBFUlJPUlMgfSA9IGNvbnN0YW50c1xuY29uc3QgeyBnZW5TZXFJZCwgaXNGb3JtRGF0YSwgZm9ybWF0VXJsIH0gPSB1dGlsc1xuXG4vLyDkuIvpnaLlh6Dnp40gYWN0aW9uIOS4jemcgOimgSBhY2Nlc3MgdG9rZW5cbmNvbnN0IEFDVElPTlNfV0lUSE9VVF9BQ0NFU1NUT0tFTiA9IFtcbiAgJ2F1dGguZ2V0Snd0JyxcbiAgJ2F1dGgubG9nb3V0JyxcbiAgJ2F1dGguc2lnbkluV2l0aFRpY2tldCcsXG4gICdhdXRoLnNpZ25JbkFub255bW91c2x5JyxcbiAgJ2F1dGguc2lnbkluJyxcbiAgJ2F1dGguZmV0Y2hBY2Nlc3NUb2tlbldpdGhSZWZyZXNoVG9rZW4nLFxuICAnYXV0aC5zaWduVXBXaXRoRW1haWxBbmRQYXNzd29yZCcsXG4gICdhdXRoLmFjdGl2YXRlRW5kVXNlck1haWwnLFxuICAnYXV0aC5zZW5kUGFzc3dvcmRSZXNldEVtYWlsJyxcbiAgJ2F1dGgucmVzZXRQYXNzd29yZFdpdGhUb2tlbicsXG4gICdhdXRoLmlzVXNlcm5hbWVSZWdpc3RlcmVkJyxcbl1cblxuZnVuY3Rpb24gYmluZEhvb2tzKGluc3RhbmNlOiBTREtSZXF1ZXN0SW50ZXJmYWNlLCBuYW1lOiBzdHJpbmcsIGhvb2tzOiBJUmVxdWVzdEJlZm9yZUhvb2tbXSkge1xuICBjb25zdCBvcmlnaW5NZXRob2QgPSBpbnN0YW5jZVtuYW1lXVxuICBpbnN0YW5jZVtuYW1lXSA9IGZ1bmN0aW9uIChvcHRpb25zOiBJUmVxdWVzdE9wdGlvbnMpIHtcbiAgICBjb25zdCBkYXRhID0ge31cbiAgICBjb25zdCBoZWFkZXJzID0ge31cbiAgICBob29rcy5mb3JFYWNoKChob29rKSA9PiB7XG4gICAgICBjb25zdCB7IGRhdGE6IGFwcGVuZGVkRGF0YSwgaGVhZGVyczogYXBwZW5kZWRIZWFkZXJzIH0gPSBob29rLmNhbGwoaW5zdGFuY2UsIG9wdGlvbnMpXG4gICAgICBPYmplY3QuYXNzaWduKGRhdGEsIGFwcGVuZGVkRGF0YSlcbiAgICAgIE9iamVjdC5hc3NpZ24oaGVhZGVycywgYXBwZW5kZWRIZWFkZXJzKVxuICAgIH0pXG4gICAgY29uc3Qgb3JpZ2luRGF0YSA9IG9wdGlvbnMuZGF0YVxuICAgIG9yaWdpbkRhdGFcbiAgICAgICYmICgoKSA9PiB7XG4gICAgICAgIGlmIChpc0Zvcm1EYXRhKG9yaWdpbkRhdGEpKSB7XG4gICAgICAgICAgT2JqZWN0LmtleXMoZGF0YSkuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgICAgICAob3JpZ2luRGF0YSBhcyBGb3JtRGF0YSkuYXBwZW5kKGtleSwgZGF0YVtrZXldKVxuICAgICAgICAgIH0pXG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cbiAgICAgICAgb3B0aW9ucy5kYXRhID0ge1xuICAgICAgICAgIC4uLm9yaWdpbkRhdGEsXG4gICAgICAgICAgLi4uZGF0YSxcbiAgICAgICAgfVxuICAgICAgfSkoKVxuICAgIG9wdGlvbnMuaGVhZGVycyA9IHtcbiAgICAgIC4uLihvcHRpb25zLmhlYWRlcnMgfHwge30pLFxuICAgICAgLi4uaGVhZGVycyxcbiAgICB9XG4gICAgcmV0dXJuIChvcmlnaW5NZXRob2QgYXMgRnVuY3Rpb24pLmNhbGwoaW5zdGFuY2UsIG9wdGlvbnMpXG4gIH1cbn1cbmZ1bmN0aW9uIGJlZm9yZUVhY2goKTogSUFwcGVuZGVkUmVxdWVzdEluZm8ge1xuICBjb25zdCBzZXFJZCA9IGdlblNlcUlkKClcbiAgcmV0dXJuIHtcbiAgICBkYXRhOiB7XG4gICAgICBzZXFJZCxcbiAgICB9LFxuICAgIGhlYWRlcnM6IHtcbiAgICAgICdYLVNESy1WZXJzaW9uJzogYEBjbG91ZGJhc2UvanMtc2RrLyR7Z2V0U2RrVmVyc2lvbigpfWAsXG4gICAgICAneC1zZXFpZCc6IHNlcUlkLFxuICAgIH0sXG4gIH1cbn1cbmV4cG9ydCBpbnRlcmZhY2UgSUdhdGVXYXlPcHRpb25zIHtcbiAgbmFtZT86IHN0cmluZ1xuICBkYXRhPzogYW55XG4gIHBhdGg/OiBzdHJpbmdcbiAgbWV0aG9kOiBzdHJpbmdcbiAgaGVhZGVyPzoge31cbiAgdXJsPzogc3RyaW5nXG59XG5leHBvcnQgaW50ZXJmYWNlIElDbG91ZGJhc2VSZXF1ZXN0IHtcbiAgcG9zdDogKG9wdGlvbnM6IElSZXF1ZXN0T3B0aW9ucykgPT4gUHJvbWlzZTxSZXNwb25zZU9iamVjdD5cbiAgdXBsb2FkOiAob3B0aW9uczogSVVwbG9hZFJlcXVlc3RPcHRpb25zKSA9PiBQcm9taXNlPFJlc3BvbnNlT2JqZWN0PlxuICBkb3dubG9hZDogKG9wdGlvbnM6IElSZXF1ZXN0T3B0aW9ucykgPT4gUHJvbWlzZTxSZXNwb25zZU9iamVjdD5cbiAgcmVxdWVzdDogKGFjdGlvbjogc3RyaW5nLCBwYXJhbXM6IEtWPGFueT4sIG9wdGlvbnM/OiBLVjxhbnk+KSA9PiBQcm9taXNlPFJlc3BvbnNlT2JqZWN0PlxuICBzZW5kOiAoYWN0aW9uOiBzdHJpbmcsIGRhdGE6IEtWPGFueT4pID0+IFByb21pc2U8YW55PlxuICBmZXRjaDogKG9wdGlvbnM6IElGZXRjaE9wdGlvbnMpID0+IFByb21pc2U8UmVzcG9uc2VPYmplY3Q+XG59XG5cbi8qKlxuICogQGNsYXNzIENsb3VkYmFzZVJlcXVlc3RcbiAqL1xuZXhwb3J0IGNsYXNzIENsb3VkYmFzZVJlcXVlc3QgaW1wbGVtZW50cyBJQ2xvdWRiYXNlUmVxdWVzdCB7XG4gIGNvbmZpZzogSUNsb3VkYmFzZVJlcXVlc3RDb25maWdcbiAgcHJpdmF0ZSByZXFDbGFzczogU0RLUmVxdWVzdEludGVyZmFjZVxuICAvLyDor7fmsYLlpLHotKXmmK/lkKbmipvlh7pFcnJvclxuICBwcml2YXRlIHRocm93V2hlblJlcXVlc3RGYWlsID0gZmFsc2VcbiAgLy8g5oyB5LmF5YyW5pys5Zyw5a2Y5YKoXG4gIHByaXZhdGUgbG9jYWxDYWNoZTogSUNsb3VkYmFzZUNhY2hlXG4gIC8qKlxuICAgKiDliJ3lp4vljJZcbiAgICogQHBhcmFtIGNvbmZpZ1xuICAgKi9cbiAgY29uc3RydWN0b3IoY29uZmlnOiBJQ2xvdWRiYXNlUmVxdWVzdENvbmZpZyAmIHsgdGhyb3c/OiBib29sZWFuIH0pIHtcbiAgICB0aGlzLmNvbmZpZyA9IGNvbmZpZ1xuICAgIGNvbnN0IHJlcUNvbmZpZzogSVJlcXVlc3RDb25maWcgJiB7IGF1dGg6IElDbG91ZGJhc2VSZXF1ZXN0Q29uZmlnWydhdXRoJ10gfSA9IHtcbiAgICAgIHRpbWVvdXQ6IHRoaXMuY29uZmlnLnRpbWVvdXQsXG4gICAgICB0aW1lb3V0TXNnOiBgW0BjbG91ZGJhc2UvanMtc2RrXSDor7fmsYLlnKgke3RoaXMuY29uZmlnLnRpbWVvdXQgLyAxMDAwfXPlhoXmnKrlrozmiJDvvIzlt7LkuK3mlq1gLFxuICAgICAgcmVzdHJpY3RlZE1ldGhvZHM6IFsncG9zdCcsICdwdXQnXSxcbiAgICAgIGF1dGg6IGNvbmZpZy5hdXRoLFxuICAgIH1cbiAgICB0aGlzLnJlcUNsYXNzID0gbmV3IFBsYXRmb3JtLmFkYXB0ZXIucmVxQ2xhc3MocmVxQ29uZmlnKVxuICAgIHRoaXMudGhyb3dXaGVuUmVxdWVzdEZhaWwgPSBjb25maWcudGhyb3cgfHwgZmFsc2VcbiAgICB0aGlzLmxvY2FsQ2FjaGUgPSBnZXRMb2NhbENhY2hlKHRoaXMuY29uZmlnLmVudilcblxuICAgIGlmICh0aGlzLmNvbmZpZy5lbmRQb2ludE1vZGUgIT09ICdHQVRFV0FZJykge1xuICAgICAgYmluZEhvb2tzKHRoaXMucmVxQ2xhc3MsICdwb3N0JywgW2JlZm9yZUVhY2hdKVxuICAgICAgYmluZEhvb2tzKHRoaXMucmVxQ2xhc3MsICd1cGxvYWQnLCBbYmVmb3JlRWFjaF0pXG4gICAgICBiaW5kSG9va3ModGhpcy5yZXFDbGFzcywgJ2Rvd25sb2FkJywgW2JlZm9yZUVhY2hdKVxuICAgIH1cblxuICAgIGxhbmdFdmVudC5idXMub24obGFuZ0V2ZW50LkxBTkdfQ0hBTkdFX0VWRU5ULCAocGFyYW1zKSA9PiB7XG4gICAgICB0aGlzLmNvbmZpZy5pMThuID0gcGFyYW1zLmRhdGE/LmkxOG4gfHwgdGhpcy5jb25maWcuaTE4blxuICAgIH0pXG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0QWNjZXNzVG9rZW4odG9rZW4gPSBudWxsKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVxZXFlcVxuICAgIGlmICh0b2tlbiAhPSBudWxsKSB7XG4gICAgICByZXR1cm4gdG9rZW5cbiAgICB9XG4gICAgY29uc3QgYXBwID0gdGhpcy5jb25maWcuX2Zyb21BcHBcblxuICAgIGlmICghYXBwLm9hdXRoSW5zdGFuY2UpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigneW91IGNhblxcJ3QgcmVxdWVzdCB3aXRob3V0IGF1dGgnKVxuICAgIH1cblxuICAgIGNvbnN0IHsgb2F1dGhJbnN0YW5jZSB9ID0gYXBwXG4gICAgY29uc3Qgb2F1dGhDbGllbnQgPSBvYXV0aEluc3RhbmNlLm9hdXRoMmNsaWVudFxuICAgIHJldHVybiAoYXdhaXQgdGhpcy5nZXRPYXV0aEFjY2Vzc1Rva2VuVjIob2F1dGhDbGllbnQpKS5hY2Nlc3NUb2tlblxuICB9XG5cbiAgcHVibGljIGdldERlZmF1bHRIZWFkZXJzKCkge1xuICAgIHJldHVybiB7XG4gICAgICBbdGhpcy5jb25maWcuaTE4bj8uTEFOR19IRUFERVJfS0VZXTogdGhpcy5jb25maWcuaTE4bj8ubGFuZyxcbiAgICAgICdYLVNESy1WZXJzaW9uJzogYEBjbG91ZGJhc2UvanMtc2RrLyR7Z2V0U2RrVmVyc2lvbigpfWAsXG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFzeW5jIHBvc3Qob3B0aW9uczogSVJlcXVlc3RPcHRpb25zLCBjdXN0b21SZXFPcHRzPzogSUN1c3RvbVJlcU9wdHMpOiBQcm9taXNlPFJlc3BvbnNlT2JqZWN0PiB7XG4gICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5yZXFDbGFzcy5wb3N0KHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBoZWFkZXJzOiB7IC4uLm9wdGlvbnMuaGVhZGVycywgLi4udGhpcy5nZXREZWZhdWx0SGVhZGVycygpIH0sXG4gICAgICBjdXN0b21SZXFPcHRzLFxuICAgIH0pXG4gICAgcmV0dXJuIHJlc1xuICB9XG4gIHB1YmxpYyBhc3luYyB1cGxvYWQob3B0aW9uczogSVVwbG9hZFJlcXVlc3RPcHRpb25zKTogUHJvbWlzZTxSZXNwb25zZU9iamVjdD4ge1xuICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMucmVxQ2xhc3MudXBsb2FkKHsgLi4ub3B0aW9ucywgaGVhZGVyczogeyAuLi5vcHRpb25zLmhlYWRlcnMsIC4uLnRoaXMuZ2V0RGVmYXVsdEhlYWRlcnMoKSB9IH0pXG4gICAgcmV0dXJuIHJlc1xuICB9XG4gIHB1YmxpYyBhc3luYyBkb3dubG9hZChvcHRpb25zOiBJUmVxdWVzdE9wdGlvbnMpOiBQcm9taXNlPFJlc3BvbnNlT2JqZWN0PiB7XG4gICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5yZXFDbGFzcy5kb3dubG9hZCh7XG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgaGVhZGVyczogeyAuLi5vcHRpb25zLmhlYWRlcnMsIC4uLnRoaXMuZ2V0RGVmYXVsdEhlYWRlcnMoKSB9LFxuICAgIH0pXG4gICAgcmV0dXJuIHJlc1xuICB9XG5cbiAgcHVibGljIGdldEJhc2VFbmRQb2ludChlbmRQb2ludEtleTogRW5kUG9pbnRLZXkgPSAnQ0xPVURfQVBJJykge1xuICAgIHJldHVybiBnZXRCYXNlRW5kUG9pbnQodGhpcy5jb25maWcuZW52LCBlbmRQb2ludEtleSlcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRPYXV0aEFjY2Vzc1Rva2VuVjIob2F1dGhDbGllbnQ6IGFueSk6IFByb21pc2U8SUdldEFjY2Vzc1Rva2VuUmVzdWx0PiB7XG4gICAgY29uc3QgdmFsaWRBY2Nlc3NUb2tlbiA9IGF3YWl0IG9hdXRoQ2xpZW50LmdldEFjY2Vzc1Rva2VuKClcbiAgICBjb25zdCBjcmVkZW50aWFscyA9IGF3YWl0IG9hdXRoQ2xpZW50LmdldENyZWRlbnRpYWxzKClcbiAgICByZXR1cm4ge1xuICAgICAgYWNjZXNzVG9rZW46IHZhbGlkQWNjZXNzVG9rZW4sXG4gICAgICBhY2Nlc3NUb2tlbkV4cGlyZTogbmV3IERhdGUoY3JlZGVudGlhbHMuZXhwaXJlc19hdCkuZ2V0VGltZSgpLFxuICAgIH1cbiAgfVxuXG4gIC8qIGVzbGludC1kaXNhYmxlIGNvbXBsZXhpdHkgKi9cbiAgcHVibGljIGFzeW5jIHJlcXVlc3QoXG4gICAgYWN0aW9uOiBzdHJpbmcsXG4gICAgcGFyYW1zOiBLVjxhbnk+LFxuICAgIG9wdGlvbnM/OiB7XG4gICAgICBvblVwbG9hZFByb2dyZXNzPzogRnVuY3Rpb25cbiAgICAgIHBhdGhuYW1lPzogc3RyaW5nXG4gICAgICBwYXJzZT86IGJvb2xlYW5cbiAgICAgIGluUXVlcnk/OiBLVjxhbnk+XG4gICAgICBzZWFyY2g/OiBzdHJpbmdcbiAgICAgIGRlZmF1bHRRdWVyeT86IEtWPGFueT5cbiAgICAgIGhlYWRlcnM/OiBLVjxzdHJpbmc+XG4gICAgICBlbmRQb2ludE1vZGU/OiAnQ0xPVURfQVBJJyB8ICdHQVRFV0FZJ1xuICAgIH0sXG4gICAgY3VzdG9tUmVxT3B0cz86IElDdXN0b21SZXFPcHRzLFxuICApOiBQcm9taXNlPFJlc3BvbnNlT2JqZWN0PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHRjYlRyYWNlS2V5ID0gYHgtdGNiLXRyYWNlXyR7dGhpcy5jb25maWcuZW52fWBcbiAgICAgIGxldCBjb250ZW50VHlwZSA9ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnXG5cbiAgICAgIGNvbnN0IHRtcE9iajogS1Y8YW55PiA9IHtcbiAgICAgICAgYWN0aW9uLFxuICAgICAgICBkYXRhVmVyc2lvbjogREFUQV9WRVJTSU9OLFxuICAgICAgICBlbnY6IHRoaXMuY29uZmlnLmVudixcbiAgICAgICAgLi4ucGFyYW1zLFxuICAgICAgfVxuXG4gICAgICBpZiAoQUNUSU9OU19XSVRIT1VUX0FDQ0VTU1RPS0VOLmluZGV4T2YoYWN0aW9uKSA9PT0gLTEpIHtcbiAgICAgICAgY29uc3QgYXBwID0gdGhpcy5jb25maWcuX2Zyb21BcHBcblxuICAgICAgICBpZiAoIWFwcC5vYXV0aEluc3RhbmNlKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCd5b3UgY2FuXFwndCByZXF1ZXN0IHdpdGhvdXQgYXV0aCcpXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB7IG9hdXRoSW5zdGFuY2UgfSA9IGFwcFxuICAgICAgICBjb25zdCBvYXV0aENsaWVudCA9IG9hdXRoSW5zdGFuY2Uub2F1dGgyY2xpZW50XG4gICAgICAgIHRtcE9iai5hY2Nlc3NfdG9rZW4gPSAoYXdhaXQgdGhpcy5nZXRPYXV0aEFjY2Vzc1Rva2VuVjIob2F1dGhDbGllbnQpKS5hY2Nlc3NUb2tlblxuICAgICAgfVxuXG4gICAgICAvLyDmi7xib2R55ZKMY29udGVudC10eXBlXG4gICAgICBsZXQgcGF5bG9hZFxuICAgICAgaWYgKGFjdGlvbiA9PT0gJ3N0b3JhZ2UudXBsb2FkRmlsZScpIHtcbiAgICAgICAgcGF5bG9hZCA9IG5ldyBGb3JtRGF0YSgpXG4gICAgICAgIE9iamVjdC5rZXlzKHBheWxvYWQpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocGF5bG9hZCwga2V5KSAmJiBwYXlsb2FkW2tleV0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcGF5bG9hZC5hcHBlbmQoa2V5LCB0bXBPYmpba2V5XSlcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICAgIGNvbnRlbnRUeXBlID0gJ211bHRpcGFydC9mb3JtLWRhdGEnXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb250ZW50VHlwZSA9ICdhcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9VVRGLTgnXG4gICAgICAgIHBheWxvYWQgPSB7fVxuICAgICAgICBPYmplY3Qua2V5cyh0bXBPYmopLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICAgIGlmICh0bXBPYmpba2V5XSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBwYXlsb2FkW2tleV0gPSB0bXBPYmpba2V5XVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICAgIGNvbnN0IG9wdHM6IGFueSA9IHtcbiAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICdjb250ZW50LXR5cGUnOiBjb250ZW50VHlwZSxcbiAgICAgICAgICAuLi50aGlzLmdldERlZmF1bHRIZWFkZXJzKCksXG4gICAgICAgICAgLi4ub3B0aW9ucz8uaGVhZGVycyxcbiAgICAgICAgfSxcbiAgICAgIH1cbiAgICAgIGlmIChvcHRpb25zPy5vblVwbG9hZFByb2dyZXNzKSB7XG4gICAgICAgIG9wdHMub25VcGxvYWRQcm9ncmVzcyA9IG9wdGlvbnMub25VcGxvYWRQcm9ncmVzc1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5jb25maWcucmVnaW9uKSB7XG4gICAgICAgIG9wdHMuaGVhZGVyc1snWC1UQ0ItUmVnaW9uJ10gPSB0aGlzLmNvbmZpZy5yZWdpb25cbiAgICAgIH1cblxuICAgICAgY29uc3QgdHJhY2VIZWFkZXIgPSB0aGlzLmxvY2FsQ2FjaGUuZ2V0U3RvcmUodGNiVHJhY2VLZXkpXG4gICAgICBpZiAodHJhY2VIZWFkZXIpIHtcbiAgICAgICAgb3B0cy5oZWFkZXJzWydYLVRDQi1UcmFjZSddID0gdHJhY2VIZWFkZXJcbiAgICAgIH1cblxuICAgICAgLy8g5Y+R5Ye66K+35rGCXG4gICAgICAvLyDmlrDnmoQgdXJsIOmcgOimgeaQuuW4piBlbnYg5Y+C5pWw6L+b6KGMIENPUlMg5qCh6aqMXG4gICAgICAvLyDor7fmsYLpk77mjqXmlK/mjIHmt7vliqDliqjmgIEgcXVlcnkg5Y+C5pWw77yM5pa55L6/55So5oi36LCD6K+V5a6a5L2N6K+35rGCXG4gICAgICBjb25zdCBwYXJzZSA9IG9wdGlvbnM/LnBhcnNlICE9PSB1bmRlZmluZWQgPyBvcHRpb25zLnBhcnNlIDogcGFyYW1zLnBhcnNlXG4gICAgICBjb25zdCBpblF1ZXJ5ID0gb3B0aW9ucz8uaW5RdWVyeSAhPT0gdW5kZWZpbmVkID8gb3B0aW9ucy5pblF1ZXJ5IDogcGFyYW1zLmluUXVlcnlcbiAgICAgIGNvbnN0IHNlYXJjaCA9IG9wdGlvbnM/LnNlYXJjaCAhPT0gdW5kZWZpbmVkID8gb3B0aW9ucy5zZWFyY2ggOiBwYXJhbXMuc2VhcmNoXG5cbiAgICAgIGxldCBmb3JtYXRRdWVyeTogUmVjb3JkPHN0cmluZywgYW55PiA9IHtcbiAgICAgICAgLi4uKG9wdGlvbnM/LmRlZmF1bHRRdWVyeSB8fCB7fSksXG4gICAgICAgIGVudjogdGhpcy5jb25maWcuZW52LFxuICAgICAgfVxuICAgICAgLy8g5bCd6K+V6Kej5p6Q5ZON5bqU5pWw5o2u5Li6IEpTT05cbiAgICAgIHBhcnNlICYmIChmb3JtYXRRdWVyeS5wYXJzZSA9IHRydWUpXG4gICAgICBpblF1ZXJ5XG4gICAgICAgICYmIChmb3JtYXRRdWVyeSA9IHtcbiAgICAgICAgICAuLi5pblF1ZXJ5LFxuICAgICAgICAgIC4uLmZvcm1hdFF1ZXJ5LFxuICAgICAgICB9KVxuXG4gICAgICBjb25zdCBlbmRQb2ludE1vZGUgPSBvcHRpb25zPy5lbmRQb2ludE1vZGUgfHwgdGhpcy5jb25maWcuZW5kUG9pbnRNb2RlIHx8ICdDTE9VRF9BUEknXG5cbiAgICAgIGNvbnN0IHVybCA9IGdldEVuZFBvaW50SW5mbyh0aGlzLmNvbmZpZy5lbnYsIGVuZFBvaW50TW9kZSlcbiAgICAgIGxldCBCQVNFX1VSTCA9IHVybC5iYXNlVXJsXG4gICAgICBjb25zdCBQUk9UT0NPTCA9IHVybC5wcm90b2NvbFxuXG4gICAgICBpZiAoZW5kUG9pbnRNb2RlID09PSAnR0FURVdBWScpIHtcbiAgICAgICAgaWYgKC9eKChkYXRhYmFzZSlcXC4pfChhdXRoXFwud3NXZWJTaWduKS8udGVzdChhY3Rpb24pKSB7XG4gICAgICAgICAgY29uc3QgdXJsID0gZ2V0RW5kUG9pbnRJbmZvKHRoaXMuY29uZmlnLmVudiwgJ0NMT1VEX0FQSScpXG4gICAgICAgICAgQkFTRV9VUkwgPSBgJHt1cmwuYmFzZVVybC5tYXRjaCgvXFwvXFwvKFteLz8jXSopLylbMF19L3dlYmBcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyDnlJ/miJDor7fmsYIgdXJsXG4gICAgICBsZXQgbmV3VXJsXG4gICAgICBpZiAob3B0aW9ucy5wYXRobmFtZSkge1xuICAgICAgICBuZXdVcmwgPSBmb3JtYXRVcmwoXG4gICAgICAgICAgUFJPVE9DT0wsXG4gICAgICAgICAgYCR7Z2V0QmFzZUVuZFBvaW50KHRoaXMuY29uZmlnLmVudiwgZW5kUG9pbnRNb2RlKT8ucmVwbGFjZSgvXmh0dHBzPzovLCAnJyl9LyR7b3B0aW9ucy5wYXRobmFtZX1gLFxuICAgICAgICAgIGZvcm1hdFF1ZXJ5LFxuICAgICAgICApXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBuZXdVcmwgPSBmb3JtYXRVcmwoUFJPVE9DT0wsIEJBU0VfVVJMLCBmb3JtYXRRdWVyeSlcbiAgICAgIH1cblxuICAgICAgaWYgKHNlYXJjaCkge1xuICAgICAgICBuZXdVcmwgKz0gc2VhcmNoXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJlczogUmVzcG9uc2VPYmplY3QgPSBhd2FpdCB0aGlzLnBvc3QoXG4gICAgICAgIHtcbiAgICAgICAgICB1cmw6IG5ld1VybCxcbiAgICAgICAgICBkYXRhOiBwYXlsb2FkLFxuICAgICAgICAgIC4uLm9wdHMsXG4gICAgICAgIH0sXG4gICAgICAgIGN1c3RvbVJlcU9wdHMsXG4gICAgICApXG5cbiAgICAgIC8vIOS/neWtmCB0cmFjZSBoZWFkZXJcbiAgICAgIGNvbnN0IHJlc1RyYWNlSGVhZGVyID0gcmVzLmhlYWRlcj8uWyd4LXRjYi10cmFjZSddXG4gICAgICBpZiAocmVzVHJhY2VIZWFkZXIpIHtcbiAgICAgICAgdGhpcy5sb2NhbENhY2hlLnNldFN0b3JlKHRjYlRyYWNlS2V5LCByZXNUcmFjZUhlYWRlcilcbiAgICAgIH1cblxuICAgICAgaWYgKChOdW1iZXIocmVzLnN0YXR1cykgIT09IDIwMCAmJiBOdW1iZXIocmVzLnN0YXR1c0NvZGUpICE9PSAyMDApIHx8ICFyZXMuZGF0YSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ25ldHdvcmsgcmVxdWVzdCBlcnJvcicpXG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXNcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGVyci5yZXF1ZXN0SWQgPSBlcnIucmVxdWVzdElkIHx8IG9wdGlvbnM/LmhlYWRlcnNbJ3gtcmVxdWVzdC1pZCddIHx8IG9wdGlvbnM/LmhlYWRlcnNbJ1gtUmVxdWVzdC1JZCddIHx8ICcnXG4gICAgICB9IGNhdGNoIChlcnJvcikge31cbiAgICAgIHRocm93IGVyclxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBmZXRjaChvcHRpb25zOiBJRmV0Y2hPcHRpb25zICYgeyB0b2tlbj86IHN0cmluZzsgY3VzdG9tUmVxT3B0cz86IElDdXN0b21SZXFPcHRzIH0sKTogUHJvbWlzZTxSZXNwb25zZU9iamVjdD4ge1xuICAgIGNvbnN0IHsgdG9rZW4sIGhlYWRlcnMgPSB7fSwgLi4ucmVzdE9wdGlvbnMgfSA9IG9wdGlvbnNcblxuICAgIGNvbnN0IGRvRmV0Y2ggPSBhc3luYyAoKSA9PiB0aGlzLnJlcUNsYXNzLmZldGNoKHtcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgLy8gJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgLy8gJ1gtUmVxdWVzdC1JZCc6IGAke3V0aWxzLmdlbmVyYXRlUmVxdWVzdElkKCl9YCxcbiAgICAgICAgLy8gJ1gtUmVxdWVzdC1UaW1lc3RhbXAnOiBgJHtEYXRlLm5vdygpfWAsXG4gICAgICAgICdYLVNESy1WZXJzaW9uJzogYEBjbG91ZGJhc2UvanMtc2RrLyR7Z2V0U2RrVmVyc2lvbigpfWAsXG4gICAgICAgIEF1dGhvcml6YXRpb246IGBCZWFyZXIgJHthd2FpdCB0aGlzLmdldEFjY2Vzc1Rva2VuKHRva2VuKX1gLFxuICAgICAgICAuLi50aGlzLmdldERlZmF1bHRIZWFkZXJzKCksXG4gICAgICAgIC4uLmhlYWRlcnMsXG4gICAgICB9LFxuICAgICAgLi4ucmVzdE9wdGlvbnMsXG4gICAgfSlcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBkb0ZldGNoKClcbiAgICAgIHJldHVybiByZXN1bHRcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGVyci5yZXF1ZXN0SWQgPSBlcnIucmVxdWVzdElkIHx8IGhlYWRlcnNbJ3gtcmVxdWVzdC1pZCddIHx8IGhlYWRlcnNbJ1gtUmVxdWVzdC1JZCddIHx8ICcnXG4gICAgICB9IGNhdGNoIChlcnJvcikge31cbiAgICAgIGlmIChlcnI/LmNvZGUgPT09ICdBQ0NFU1NfVE9LRU5fRVhQSVJFRCcpIHtcbiAgICAgICAgLy8g5aaC5p6c5piv5Zug5Li6IHRva2VuIOi/h+acn+Wksei0pe+8jOWItyB0b2tlbiDlkI7lho3or5XkuIDmrKFcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmNvbmZpZz8uX2Zyb21BcHA/Lm9hdXRoSW5zdGFuY2U/LmF1dGhBcGk/LnJlZnJlc2hUb2tlbkZvcmNlICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgdGhyb3cgZXJyXG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgdGhpcy5jb25maWc/Ll9mcm9tQXBwPy5vYXV0aEluc3RhbmNlPy5hdXRoQXBpPy5yZWZyZXNoVG9rZW5Gb3JjZSgpXG4gICAgICAgIHJldHVybiBkb0ZldGNoKClcbiAgICAgIH1cbiAgICAgIC8vIOWFtuS7luWOn+WboOWQkeS4iuaKm+WHulxuXG4gICAgICB0aHJvdyBlcnJcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgc2VuZChcbiAgICBhY3Rpb246IHN0cmluZyxcbiAgICBkYXRhOiBLVjxhbnk+ID0ge30sXG4gICAgb3B0aW9uczogS1Y8YW55PiA9IHt9LFxuICAgIGN1c3RvbVJlcU9wdHM/OiBJQ3VzdG9tUmVxT3B0cyxcbiAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMucmVxdWVzdChcbiAgICAgIGFjdGlvbixcbiAgICAgIGRhdGEsXG4gICAgICB7IC4uLm9wdGlvbnMsIG9uVXBsb2FkUHJvZ3Jlc3M6IGRhdGEub25VcGxvYWRQcm9ncmVzcyB9LFxuICAgICAgY3VzdG9tUmVxT3B0cyxcbiAgICApXG5cbiAgICBpZiAocmVzcG9uc2UuZGF0YS5jb2RlICYmIHRoaXMudGhyb3dXaGVuUmVxdWVzdEZhaWwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgIGNvZGU6IEVSUk9SUy5PUEVSQVRJT05fRkFJTCxcbiAgICAgICAgbXNnOiBgWyR7cmVzcG9uc2UuZGF0YS5jb2RlfV0gJHtyZXNwb25zZS5kYXRhLm1lc3NhZ2V9YCxcbiAgICAgIH0pLClcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzcG9uc2UuZGF0YVxuICB9XG5cbiAgcHVibGljIGFzeW5jIGdhdGVXYXkob3B0aW9uczogSUdhdGVXYXlPcHRpb25zLCBjdXN0b21SZXFPcHRzPzogSUN1c3RvbVJlcU9wdHMpIHtcbiAgICBjb25zdCB7IHVybCwgbmFtZSwgZGF0YSwgcGF0aCA9ICcnLCBtZXRob2QsIGhlYWRlciA9IHt9IH0gPSBvcHRpb25zXG5cbiAgICBpZiAoKCFuYW1lIHx8ICFwYXRoKSAmJiAhdXJsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICBjb2RlOiBFUlJPUlMuSU5WQUxJRF9QQVJBTVMsXG4gICAgICAgIG1zZzogJ1tnYXRlV2F5XSBpbnZhbGlkIGZ1bmN0aW9uIG5hbWUgb3IgcGF0aCBvciB1cmwnLFxuICAgICAgfSksKVxuICAgIH1cbiAgICBsZXQganNvbkRhdGFcbiAgICB0cnkge1xuICAgICAganNvbkRhdGEgPSBkYXRhID8gSlNPTi5zdHJpbmdpZnkoZGF0YSkgOiAnJ1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgIGNvZGU6IEVSUk9SUy5JTlZBTElEX1BBUkFNUyxcbiAgICAgICAgbXNnOiAnW2dhdGVXYXldIGludmFsaWQgZGF0YScsXG4gICAgICB9KSwpXG4gICAgfVxuXG4gICAgY29uc3QgcmVxdWVzdElkID0gdXRpbHMuZ2VuZXJhdGVSZXF1ZXN0SWQoKVxuICAgIGNvbnN0IHsgYmFzZVVybCwgcHJvdG9jb2wgfSA9IGdldEVuZFBvaW50SW5mbyh0aGlzLmNvbmZpZy5lbnYsICdHQVRFV0FZJylcbiAgICBsZXQgZW5kcG9pbnQgPSBgJHtwcm90b2NvbH0ke2Jhc2VVcmx9JHt1cmwgfHwgYC8ke3BhdGh9LyR7bmFtZX1gfWBcblxuICAgIGNvbnN0IGlzR2V0QW5kSGVhZCA9IFsnR0VUJywgJ0hFQUQnXS5pbmNsdWRlcyhtZXRob2Q/LnRvVXBwZXJDYXNlPy4oKSlcblxuICAgIGlmIChpc0dldEFuZEhlYWQpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGxldCBkYXRhUGFyc2UgPSB7fVxuICAgICAgICB0cnkge1xuICAgICAgICAgIGRhdGFQYXJzZSA9IEpTT04ucGFyc2UoZGF0YSBhcyBhbnkpXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgZGF0YVBhcnNlID0gZGF0YSB8fCB7fVxuICAgICAgICB9XG4gICAgICAgIGVuZHBvaW50ID0gYCR7ZW5kcG9pbnR9JHtlbmRwb2ludC5pbmNsdWRlcygnPycpID8gJyYnIDogJz8nfSR7T2JqZWN0LmtleXMoZGF0YVBhcnNlKVxuICAgICAgICAgIC5tYXAoa2V5ID0+IGAke2tleX09JHtkYXRhUGFyc2Vba2V5XX1gKVxuICAgICAgICAgIC5qb2luKCcmJyl9YFxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgLy9cbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuZmV0Y2goe1xuICAgICAgbWV0aG9kOiBtZXRob2QgfHwgJ1BPU1QnLFxuICAgICAgaGVhZGVyczoge1xuICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQ9dXRmLTgnLFxuICAgICAgICAnWC1SZXF1ZXN0LUlkJzogcmVxdWVzdElkLFxuICAgICAgICAuLi5oZWFkZXIsXG4gICAgICB9LFxuICAgICAgLi4uKGlzR2V0QW5kSGVhZCA/IHt9IDogeyBib2R5OiBqc29uRGF0YSB9KSxcbiAgICAgIHVybDogZW5kcG9pbnQsXG4gICAgICBjdXN0b21SZXFPcHRzLFxuICAgIH0pXG5cbiAgICByZXR1cm4geyByZXF1ZXN0SWQsIC4uLnJlc3BvbnNlLCBkYXRhOiBhd2FpdCByZXNwb25zZS5kYXRhIH1cbiAgfVxufVxuXG5jb25zdCByZXF1ZXN0TWFwOiBLVjxDbG91ZGJhc2VSZXF1ZXN0PiA9IHt9XG5cbmV4cG9ydCBmdW5jdGlvbiBpbml0UmVxdWVzdChjb25maWc6IElDbG91ZGJhc2VSZXF1ZXN0Q29uZmlnKSB7XG4gIHJlcXVlc3RNYXBbY29uZmlnLmVudl0gPSBuZXcgQ2xvdWRiYXNlUmVxdWVzdCh7XG4gICAgLi4uY29uZmlnLFxuICAgIHRocm93OiB0cnVlLFxuICB9KVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmVxdWVzdEJ5RW52SWQoZW52OiBzdHJpbmcpOiBDbG91ZGJhc2VSZXF1ZXN0IHtcbiAgcmV0dXJuIHJlcXVlc3RNYXBbZW52XVxufVxuIl19
|
|
475
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWJzL3JlcXVlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQVNuRyxPQUFPLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTtBQVVsRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sU0FBUyxDQUFBO0FBQ3ZDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFDNUIsSUFBQSxNQUFNLEdBQUssU0FBUyxPQUFkLENBQWM7QUFDcEIsSUFBQSxRQUFRLEdBQTRCLEtBQUssU0FBakMsRUFBRSxVQUFVLEdBQWdCLEtBQUssV0FBckIsRUFBRSxTQUFTLEdBQUssS0FBSyxVQUFWLENBQVU7QUFHakQsSUFBTSwyQkFBMkIsR0FBRztJQUNsQyxhQUFhO0lBQ2IsYUFBYTtJQUNiLHVCQUF1QjtJQUN2Qix3QkFBd0I7SUFDeEIsYUFBYTtJQUNiLHVDQUF1QztJQUN2QyxpQ0FBaUM7SUFDakMsMEJBQTBCO0lBQzFCLDZCQUE2QjtJQUM3Qiw2QkFBNkI7SUFDN0IsMkJBQTJCO0NBQzVCLENBQUE7QUFFRCxTQUFTLFNBQVMsQ0FBQyxRQUE2QixFQUFFLElBQVksRUFBRSxLQUEyQjtJQUN6RixJQUFNLFlBQVksR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDbkMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLFVBQVUsT0FBd0I7UUFDakQsSUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFBO1FBQ2YsSUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFBO1FBQ2xCLEtBQUssQ0FBQyxPQUFP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V0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFFLEVBQTFCLENBQTBCLENBQUM7cUNBQ3RDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBRSxDQUFBOzZCQUNmOzRCQUFDLE9BQU8sS0FBSyxFQUFFOzZCQUVmO3lCQUNGO3dCQUVnQixXQUFNLElBQUksQ0FBQyxLQUFLLHFCQUMvQixNQUFNLEVBQUUsTUFBTSxJQUFJLE1BQU0sRUFDeEIsT0FBTyxhQUNMLGNBQWMsRUFBRSxpQ0FBaUMsRUFDakQsY0FBYyxFQUFFLFNBQVMsSUFDdEIsTUFBTSxLQUVSLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDLEtBQzNDLEdBQUcsRUFBRSxRQUFRLEVBQ2IsYUFBYSxlQUFBLElBQ2IsRUFBQTs7d0JBVkksUUFBUSxHQUFHLFNBVWY7eUNBRU8sU0FBUyxXQUFBLElBQUssUUFBUTs7d0JBQVEsV0FBTSxRQUFRLENBQUMsSUFBSSxFQUFBOzRCQUExRCw4Q0FBaUMsT0FBSSxHQUFFLFNBQW1CLFVBQUU7Ozs7S0FDN0Q7SUFDSCx1QkFBQztBQUFELENBQUMsQUE3V0QsSUE2V0M7O0FBRUQsSUFBTSxVQUFVLEdBQXlCLEVBQUUsQ0FBQTtBQUUzQyxNQUFNLFVBQVUsV0FBVyxDQUFDLE1BQStCO0lBQ3pELFVBQVUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxnQkFBZ0IsdUJBQ3hDLE1BQU0sS0FDVCxLQUFLLEVBQUUsSUFBSSxJQUNYLENBQUE7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLGlCQUFpQixDQUFDLEdBQVc7SUFDM0MsT0FBTyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUE7QUFDeEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERBVEFfVkVSU0lPTiwgZ2V0U2RrVmVyc2lvbiwgZ2V0QmFzZUVuZFBvaW50LCBnZXRFbmRQb2ludEluZm8gfSBmcm9tICcuLi9jb25zdGFudHMvY29tbW9uJ1xuaW1wb3J0IHtcbiAgSVJlcXVlc3RPcHRpb25zLFxuICBTREtSZXF1ZXN0SW50ZXJmYWNlLFxuICBSZXNwb25zZU9iamVjdCxcbiAgSVVwbG9hZFJlcXVlc3RPcHRpb25zLFxuICBJUmVxdWVzdENvbmZpZyxcbiAgSUZldGNoT3B0aW9ucyxcbn0gZnJvbSAnQGNsb3VkYmFzZS9hZGFwdGVyLWludGVyZmFjZSdcbmltcG9ydCB7IHV0aWxzLCBjb25zdGFudHMsIGxhbmdFdmVudCB9IGZyb20gJ0BjbG91ZGJhc2UvdXRpbGl0aWVzJ1xuaW1wb3J0IHsgRW5kUG9pbnRLZXksIEtWIH0gZnJvbSAnQGNsb3VkYmFzZS90eXBlcydcbmltcG9ydCB7IElDdXN0b21SZXFPcHRzIH0gZnJvbSAnQGNsb3VkYmFzZS90eXBlcy9mdW5jdGlvbnMnXG5pbXBvcnQge1xuICBJR2V0QWNjZXNzVG9rZW5SZXN1bHQsXG4gIElDbG91ZGJhc2VSZXF1ZXN0Q29uZmlnLFxuICBJQXBwZW5kZWRSZXF1ZXN0SW5mbyxcbiAgSVJlcXVlc3RCZWZvcmVIb29rLFxufSBmcm9tICdAY2xvdWRiYXNlL3R5cGVzL3JlcXVlc3QnXG5pbXBvcnQgeyBJQ2xvdWRiYXNlQ2FjaGUgfSBmcm9tICdAY2xvdWRiYXNlL3R5cGVzL2NhY2hlJ1xuaW1wb3J0IHsgZ2V0TG9jYWxDYWNoZSB9IGZyb20gJy4vY2FjaGUnXG5pbXBvcnQgeyBQbGF0Zm9ybSB9IGZyb20gJy4vYWRhcHRlcidcbmNvbnN0IHsgRVJST1JTIH0gPSBjb25zdGFudHNcbmNvbnN0IHsgZ2VuU2VxSWQsIGlzRm9ybURhdGEsIGZvcm1hdFVybCB9ID0gdXRpbHNcblxuLy8g5LiL6Z2i5Yeg56eNIGFjdGlvbiDkuI3pnIDopoEgYWNjZXNzIHRva2VuXG5jb25zdCBBQ1RJT05TX1dJVEhPVVRfQUNDRVNTVE9LRU4gPSBbXG4gICdhdXRoLmdldEp3dCcsXG4gICdhdXRoLmxvZ291dCcsXG4gICdhdXRoLnNpZ25JbldpdGhUaWNrZXQnLFxuICAnYXV0aC5zaWduSW5Bbm9ueW1vdXNseScsXG4gICdhdXRoLnNpZ25JbicsXG4gICdhdXRoLmZldGNoQWNjZXNzVG9rZW5XaXRoUmVmcmVzaFRva2VuJyxcbiAgJ2F1dGguc2lnblVwV2l0aEVtYWlsQW5kUGFzc3dvcmQnLFxuICAnYXV0aC5hY3RpdmF0ZUVuZFVzZXJNYWlsJyxcbiAgJ2F1dGguc2VuZFBhc3N3b3JkUmVzZXRFbWFpbCcsXG4gICdhdXRoLnJlc2V0UGFzc3dvcmRXaXRoVG9rZW4nLFxuICAnYXV0aC5pc1VzZXJuYW1lUmVnaXN0ZXJlZCcsXG5dXG5cbmZ1bmN0aW9uIGJpbmRIb29rcyhpbnN0YW5jZTogU0RLUmVxdWVzdEludGVyZmFjZSwgbmFtZTogc3RyaW5nLCBob29rczogSVJlcXVlc3RCZWZvcmVIb29rW10pIHtcbiAgY29uc3Qgb3JpZ2luTWV0aG9kID0gaW5zdGFuY2VbbmFtZV1cbiAgaW5zdGFuY2VbbmFtZV0gPSBmdW5jdGlvbiAob3B0aW9uczogSVJlcXVlc3RPcHRpb25zKSB7XG4gICAgY29uc3QgZGF0YSA9IHt9XG4gICAgY29uc3QgaGVhZGVycyA9IHt9XG4gICAgaG9va3MuZm9yRWFjaCgoaG9vaykgPT4ge1xuICAgICAgY29uc3QgeyBkYXRhOiBhcHBlbmRlZERhdGEsIGhlYWRlcnM6IGFwcGVuZGVkSGVhZGVycyB9ID0gaG9vay5jYWxsKGluc3RhbmNlLCBvcHRpb25zKVxuICAgICAgT2JqZWN0LmFzc2lnbihkYXRhLCBhcHBlbmRlZERhdGEpXG4gICAgICBPYmplY3QuYXNzaWduKGhlYWRlcnMsIGFwcGVuZGVkSGVhZGVycylcbiAgICB9KVxuICAgIGNvbnN0IG9yaWdpbkRhdGEgPSBvcHRpb25zLmRhdGFcbiAgICBvcmlnaW5EYXRhXG4gICAgICAmJiAoKCkgPT4ge1xuICAgICAgICBpZiAoaXNGb3JtRGF0YShvcmlnaW5EYXRhKSkge1xuICAgICAgICAgIE9iamVjdC5rZXlzKGRhdGEpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICAgICAgKG9yaWdpbkRhdGEgYXMgRm9ybURhdGEpLmFwcGVuZChrZXksIGRhdGFba2V5XSlcbiAgICAgICAgICB9KVxuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG4gICAgICAgIG9wdGlvbnMuZGF0YSA9IHtcbiAgICAgICAgICAuLi5vcmlnaW5EYXRhLFxuICAgICAgICAgIC4uLmRhdGEsXG4gICAgICAgIH1cbiAgICAgIH0pKClcbiAgICBvcHRpb25zLmhlYWRlcnMgPSB7XG4gICAgICAuLi4ob3B0aW9ucy5oZWFkZXJzIHx8IHt9KSxcbiAgICAgIC4uLmhlYWRlcnMsXG4gICAgfVxuICAgIHJldHVybiAob3JpZ2luTWV0aG9kIGFzIEZ1bmN0aW9uKS5jYWxsKGluc3RhbmNlLCBvcHRpb25zKVxuICB9XG59XG5mdW5jdGlvbiBiZWZvcmVFYWNoKCk6IElBcHBlbmRlZFJlcXVlc3RJbmZvIHtcbiAgY29uc3Qgc2VxSWQgPSBnZW5TZXFJZCgpXG4gIHJldHVybiB7XG4gICAgZGF0YToge1xuICAgICAgc2VxSWQsXG4gICAgfSxcbiAgICBoZWFkZXJzOiB7XG4gICAgICAnWC1TREstVmVyc2lvbic6IGBAY2xvdWRiYXNlL2pzLXNkay8ke2dldFNka1ZlcnNpb24oKX1gLFxuICAgICAgJ3gtc2VxaWQnOiBzZXFJZCxcbiAgICB9LFxuICB9XG59XG5leHBvcnQgaW50ZXJmYWNlIElHYXRlV2F5T3B0aW9ucyB7XG4gIG5hbWU/OiBzdHJpbmdcbiAgZGF0YT86IGFueVxuICBwYXRoPzogc3RyaW5nXG4gIG1ldGhvZDogc3RyaW5nXG4gIGhlYWRlcj86IHt9XG4gIHVybD86IHN0cmluZ1xufVxuZXhwb3J0IGludGVyZmFjZSBJQ2xvdWRiYXNlUmVxdWVzdCB7XG4gIHBvc3Q6IChvcHRpb25zOiBJUmVxdWVzdE9wdGlvbnMpID0+IFByb21pc2U8UmVzcG9uc2VPYmplY3Q+XG4gIHVwbG9hZDogKG9wdGlvbnM6IElVcGxvYWRSZXF1ZXN0T3B0aW9ucykgPT4gUHJvbWlzZTxSZXNwb25zZU9iamVjdD5cbiAgZG93bmxvYWQ6IChvcHRpb25zOiBJUmVxdWVzdE9wdGlvbnMpID0+IFByb21pc2U8UmVzcG9uc2VPYmplY3Q+XG4gIHJlcXVlc3Q6IChhY3Rpb246IHN0cmluZywgcGFyYW1zOiBLVjxhbnk+LCBvcHRpb25zPzogS1Y8YW55PikgPT4gUHJvbWlzZTxSZXNwb25zZU9iamVjdD5cbiAgc2VuZDogKGFjdGlvbjogc3RyaW5nLCBkYXRhOiBLVjxhbnk+KSA9PiBQcm9taXNlPGFueT5cbiAgZmV0Y2g6IChvcHRpb25zOiBJRmV0Y2hPcHRpb25zKSA9PiBQcm9taXNlPFJlc3BvbnNlT2JqZWN0PlxufVxuXG4vKipcbiAqIEBjbGFzcyBDbG91ZGJhc2VSZXF1ZXN0XG4gKi9cbmV4cG9ydCBjbGFzcyBDbG91ZGJhc2VSZXF1ZXN0IGltcGxlbWVudHMgSUNsb3VkYmFzZVJlcXVlc3Qge1xuICBjb25maWc6IElDbG91ZGJhc2VSZXF1ZXN0Q29uZmlnXG4gIHByaXZhdGUgcmVxQ2xhc3M6IFNES1JlcXVlc3RJbnRlcmZhY2VcbiAgLy8g6K+35rGC5aSx6LSl5piv5ZCm5oqb5Ye6RXJyb3JcbiAgcHJpdmF0ZSB0aHJvd1doZW5SZXF1ZXN0RmFpbCA9IGZhbHNlXG4gIC8vIOaMgeS5heWMluacrOWcsOWtmOWCqFxuICBwcml2YXRlIGxvY2FsQ2FjaGU6IElDbG91ZGJhc2VDYWNoZVxuICAvKipcbiAgICog5Yid5aeL5YyWXG4gICAqIEBwYXJhbSBjb25maWdcbiAgICovXG4gIGNvbnN0cnVjdG9yKGNvbmZpZzogSUNsb3VkYmFzZVJlcXVlc3RDb25maWcgJiB7IHRocm93PzogYm9vbGVhbiB9KSB7XG4gICAgdGhpcy5jb25maWcgPSBjb25maWdcbiAgICBjb25zdCByZXFDb25maWc6IElSZXF1ZXN0Q29uZmlnICYgeyBhdXRoOiBJQ2xvdWRiYXNlUmVxdWVzdENvbmZpZ1snYXV0aCddIH0gPSB7XG4gICAgICB0aW1lb3V0OiB0aGlzLmNvbmZpZy50aW1lb3V0LFxuICAgICAgdGltZW91dE1zZzogYFtAY2xvdWRiYXNlL2pzLXNka10g6K+35rGC5ZyoJHt0aGlzLmNvbmZpZy50aW1lb3V0IC8gMTAwMH1z5YaF5pyq5a6M5oiQ77yM5bey5Lit5patYCxcbiAgICAgIHJlc3RyaWN0ZWRNZXRob2RzOiBbJ3Bvc3QnLCAncHV0J10sXG4gICAgICBhdXRoOiBjb25maWcuYXV0aCxcbiAgICB9XG4gICAgdGhpcy5yZXFDbGFzcyA9IG5ldyBQbGF0Zm9ybS5hZGFwdGVyLnJlcUNsYXNzKHJlcUNvbmZpZylcbiAgICB0aGlzLnRocm93V2hlblJlcXVlc3RGYWlsID0gY29uZmlnLnRocm93IHx8IGZhbHNlXG4gICAgdGhpcy5sb2NhbENhY2hlID0gZ2V0TG9jYWxDYWNoZSh0aGlzLmNvbmZpZy5lbnYpXG5cbiAgICBpZiAodGhpcy5jb25maWcuZW5kUG9pbnRNb2RlICE9PSAnR0FURVdBWScpIHtcbiAgICAgIGJpbmRIb29rcyh0aGlzLnJlcUNsYXNzLCAncG9zdCcsIFtiZWZvcmVFYWNoXSlcbiAgICAgIGJpbmRIb29rcyh0aGlzLnJlcUNsYXNzLCAndXBsb2FkJywgW2JlZm9yZUVhY2hdKVxuICAgICAgYmluZEhvb2tzKHRoaXMucmVxQ2xhc3MsICdkb3dubG9hZCcsIFtiZWZvcmVFYWNoXSlcbiAgICB9XG5cbiAgICBsYW5nRXZlbnQuYnVzLm9uKGxhbmdFdmVudC5MQU5HX0NIQU5HRV9FVkVOVCwgKHBhcmFtcykgPT4ge1xuICAgICAgdGhpcy5jb25maWcuaTE4biA9IHBhcmFtcy5kYXRhPy5pMThuIHx8IHRoaXMuY29uZmlnLmkxOG5cbiAgICB9KVxuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldEFjY2Vzc1Rva2VuKHRva2VuID0gbnVsbCkge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcWVxZXFcbiAgICBpZiAodG9rZW4gIT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHRva2VuXG4gICAgfVxuICAgIGNvbnN0IGFwcCA9IHRoaXMuY29uZmlnLl9mcm9tQXBwXG5cbiAgICBpZiAoIWFwcC5vYXV0aEluc3RhbmNlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3lvdSBjYW5cXCd0IHJlcXVlc3Qgd2l0aG91dCBhdXRoJylcbiAgICB9XG5cbiAgICBjb25zdCB7IG9hdXRoSW5zdGFuY2UgfSA9IGFwcFxuICAgIGNvbnN0IG9hdXRoQ2xpZW50ID0gb2F1dGhJbnN0YW5jZS5vYXV0aDJjbGllbnRcbiAgICByZXR1cm4gKGF3YWl0IHRoaXMuZ2V0T2F1dGhBY2Nlc3NUb2tlblYyKG9hdXRoQ2xpZW50KSkuYWNjZXNzVG9rZW5cbiAgfVxuXG4gIHB1YmxpYyBnZXREZWZhdWx0SGVhZGVycygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgW3RoaXMuY29uZmlnLmkxOG4/LkxBTkdfSEVBREVSX0tFWV06IHRoaXMuY29uZmlnLmkxOG4/LmxhbmcsXG4gICAgICAnWC1TREstVmVyc2lvbic6IGBAY2xvdWRiYXNlL2pzLXNkay8ke2dldFNka1ZlcnNpb24oKX1gLFxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBwb3N0KG9wdGlvbnM6IElSZXF1ZXN0T3B0aW9ucywgY3VzdG9tUmVxT3B0cz86IElDdXN0b21SZXFPcHRzKTogUHJvbWlzZTxSZXNwb25zZU9iamVjdD4ge1xuICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMucmVxQ2xhc3MucG9zdCh7XG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgaGVhZGVyczogeyAuLi5vcHRpb25zLmhlYWRlcnMsIC4uLnRoaXMuZ2V0RGVmYXVsdEhlYWRlcnMoKSB9LFxuICAgICAgY3VzdG9tUmVxT3B0cyxcbiAgICB9KVxuICAgIHJldHVybiByZXNcbiAgfVxuICBwdWJsaWMgYXN5bmMgdXBsb2FkKG9wdGlvbnM6IElVcGxvYWRSZXF1ZXN0T3B0aW9ucyk6IFByb21pc2U8UmVzcG9uc2VPYmplY3Q+IHtcbiAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLnJlcUNsYXNzLnVwbG9hZCh7IC4uLm9wdGlvbnMsIGhlYWRlcnM6IHsgLi4ub3B0aW9ucy5oZWFkZXJzLCAuLi50aGlzLmdldERlZmF1bHRIZWFkZXJzKCkgfSB9KVxuICAgIHJldHVybiByZXNcbiAgfVxuICBwdWJsaWMgYXN5bmMgZG93bmxvYWQob3B0aW9uczogSVJlcXVlc3RPcHRpb25zKTogUHJvbWlzZTxSZXNwb25zZU9iamVjdD4ge1xuICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMucmVxQ2xhc3MuZG93bmxvYWQoe1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIGhlYWRlcnM6IHsgLi4ub3B0aW9ucy5oZWFkZXJzLCAuLi50aGlzLmdldERlZmF1bHRIZWFkZXJzKCkgfSxcbiAgICB9KVxuICAgIHJldHVybiByZXNcbiAgfVxuXG4gIHB1YmxpYyBnZXRCYXNlRW5kUG9pbnQoZW5kUG9pbnRLZXk6IEVuZFBvaW50S2V5ID0gJ0NMT1VEX0FQSScpIHtcbiAgICByZXR1cm4gZ2V0QmFzZUVuZFBvaW50KHRoaXMuY29uZmlnLmVudiwgZW5kUG9pbnRLZXkpXG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0T2F1dGhBY2Nlc3NUb2tlblYyKG9hdXRoQ2xpZW50OiBhbnkpOiBQcm9taXNlPElHZXRBY2Nlc3NUb2tlblJlc3VsdD4ge1xuICAgIGNvbnN0IHZhbGlkQWNjZXNzVG9rZW4gPSBhd2FpdCBvYXV0aENsaWVudC5nZXRBY2Nlc3NUb2tlbigpXG4gICAgY29uc3QgY3JlZGVudGlhbHMgPSBhd2FpdCBvYXV0aENsaWVudC5nZXRDcmVkZW50aWFscygpXG4gICAgcmV0dXJuIHtcbiAgICAgIGFjY2Vzc1Rva2VuOiB2YWxpZEFjY2Vzc1Rva2VuLFxuICAgICAgYWNjZXNzVG9rZW5FeHBpcmU6IG5ldyBEYXRlKGNyZWRlbnRpYWxzLmV4cGlyZXNfYXQpLmdldFRpbWUoKSxcbiAgICB9XG4gIH1cblxuICAvKiBlc2xpbnQtZGlzYWJsZSBjb21wbGV4aXR5ICovXG4gIHB1YmxpYyBhc3luYyByZXF1ZXN0KFxuICAgIGFjdGlvbjogc3RyaW5nLFxuICAgIHBhcmFtczogS1Y8YW55PixcbiAgICBvcHRpb25zPzoge1xuICAgICAgb25VcGxvYWRQcm9ncmVzcz86IEZ1bmN0aW9uXG4gICAgICBwYXRobmFtZT86IHN0cmluZ1xuICAgICAgcGFyc2U/OiBib29sZWFuXG4gICAgICBpblF1ZXJ5PzogS1Y8YW55PlxuICAgICAgc2VhcmNoPzogc3RyaW5nXG4gICAgICBkZWZhdWx0UXVlcnk/OiBLVjxhbnk+XG4gICAgICBoZWFkZXJzPzogS1Y8c3RyaW5nPlxuICAgICAgZW5kUG9pbnRNb2RlPzogJ0NMT1VEX0FQSScgfCAnR0FURVdBWSdcbiAgICB9LFxuICAgIGN1c3RvbVJlcU9wdHM/OiBJQ3VzdG9tUmVxT3B0cyxcbiAgKTogUHJvbWlzZTxSZXNwb25zZU9iamVjdD4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB0Y2JUcmFjZUtleSA9IGB4LXRjYi10cmFjZV8ke3RoaXMuY29uZmlnLmVudn1gXG4gICAgICBsZXQgY29udGVudFR5cGUgPSAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJ1xuXG4gICAgICBjb25zdCB0bXBPYmo6IEtWPGFueT4gPSB7XG4gICAgICAgIGFjdGlvbixcbiAgICAgICAgZGF0YVZlcnNpb246IERBVEFfVkVSU0lPTixcbiAgICAgICAgZW52OiB0aGlzLmNvbmZpZy5lbnYsXG4gICAgICAgIC4uLnBhcmFtcyxcbiAgICAgIH1cblxuICAgICAgaWYgKEFDVElPTlNfV0lUSE9VVF9BQ0NFU1NUT0tFTi5pbmRleE9mKGFjdGlvbikgPT09IC0xKSB7XG4gICAgICAgIGNvbnN0IGFwcCA9IHRoaXMuY29uZmlnLl9mcm9tQXBwXG5cbiAgICAgICAgaWYgKCFhcHAub2F1dGhJbnN0YW5jZSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcigneW91IGNhblxcJ3QgcmVxdWVzdCB3aXRob3V0IGF1dGgnKVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgeyBvYXV0aEluc3RhbmNlIH0gPSBhcHBcbiAgICAgICAgY29uc3Qgb2F1dGhDbGllbnQgPSBvYXV0aEluc3RhbmNlLm9hdXRoMmNsaWVudFxuICAgICAgICB0bXBPYmouYWNjZXNzX3Rva2VuID0gKGF3YWl0IHRoaXMuZ2V0T2F1dGhBY2Nlc3NUb2tlblYyKG9hdXRoQ2xpZW50KSkuYWNjZXNzVG9rZW5cbiAgICAgIH1cblxuICAgICAgLy8g5ou8Ym9keeWSjGNvbnRlbnQtdHlwZVxuICAgICAgbGV0IHBheWxvYWRcbiAgICAgIGlmIChhY3Rpb24gPT09ICdzdG9yYWdlLnVwbG9hZEZpbGUnKSB7XG4gICAgICAgIHBheWxvYWQgPSBuZXcgRm9ybURhdGEoKVxuICAgICAgICBPYmplY3Qua2V5cyhwYXlsb2FkKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHBheWxvYWQsIGtleSkgJiYgcGF5bG9hZFtrZXldICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHBheWxvYWQuYXBwZW5kKGtleSwgdG1wT2JqW2tleV0pXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgICBjb250ZW50VHlwZSA9ICdtdWx0aXBhcnQvZm9ybS1kYXRhJ1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29udGVudFR5cGUgPSAnYXBwbGljYXRpb24vanNvbjtjaGFyc2V0PVVURi04J1xuICAgICAgICBwYXlsb2FkID0ge31cbiAgICAgICAgT2JqZWN0LmtleXModG1wT2JqKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgICBpZiAodG1wT2JqW2tleV0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcGF5bG9hZFtrZXldID0gdG1wT2JqW2tleV1cbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgICBjb25zdCBvcHRzOiBhbnkgPSB7XG4gICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAnY29udGVudC10eXBlJzogY29udGVudFR5cGUsXG4gICAgICAgICAgLi4udGhpcy5nZXREZWZhdWx0SGVhZGVycygpLFxuICAgICAgICAgIC4uLm9wdGlvbnM/LmhlYWRlcnMsXG4gICAgICAgIH0sXG4gICAgICB9XG4gICAgICBpZiAob3B0aW9ucz8ub25VcGxvYWRQcm9ncmVzcykge1xuICAgICAgICBvcHRzLm9uVXBsb2FkUHJvZ3Jlc3MgPSBvcHRpb25zLm9uVXBsb2FkUHJvZ3Jlc3NcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuY29uZmlnLnJlZ2lvbikge1xuICAgICAgICBvcHRzLmhlYWRlcnNbJ1gtVENCLVJlZ2lvbiddID0gdGhpcy5jb25maWcucmVnaW9uXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHRyYWNlSGVhZGVyID0gdGhpcy5sb2NhbENhY2hlLmdldFN0b3JlKHRjYlRyYWNlS2V5KVxuICAgICAgaWYgKHRyYWNlSGVhZGVyKSB7XG4gICAgICAgIG9wdHMuaGVhZGVyc1snWC1UQ0ItVHJhY2UnXSA9IHRyYWNlSGVhZGVyXG4gICAgICB9XG5cbiAgICAgIC8vIOWPkeWHuuivt+axglxuICAgICAgLy8g5paw55qEIHVybCDpnIDopoHmkLrluKYgZW52IOWPguaVsOi/m+ihjCBDT1JTIOagoemqjFxuICAgICAgLy8g6K+35rGC6ZO+5o6l5pSv5oyB5re75Yqg5Yqo5oCBIHF1ZXJ5IOWPguaVsO+8jOaWueS+v+eUqOaIt+iwg+ivleWumuS9jeivt+axglxuICAgICAgY29uc3QgcGFyc2UgPSBvcHRpb25zPy5wYXJzZSAhPT0gdW5kZWZpbmVkID8gb3B0aW9ucy5wYXJzZSA6IHBhcmFtcy5wYXJzZVxuICAgICAgY29uc3QgaW5RdWVyeSA9IG9wdGlvbnM/LmluUXVlcnkgIT09IHVuZGVmaW5lZCA/IG9wdGlvbnMuaW5RdWVyeSA6IHBhcmFtcy5pblF1ZXJ5XG4gICAgICBjb25zdCBzZWFyY2ggPSBvcHRpb25zPy5zZWFyY2ggIT09IHVuZGVmaW5lZCA/IG9wdGlvbnMuc2VhcmNoIDogcGFyYW1zLnNlYXJjaFxuXG4gICAgICBsZXQgZm9ybWF0UXVlcnk6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7XG4gICAgICAgIC4uLihvcHRpb25zPy5kZWZhdWx0UXVlcnkgfHwge30pLFxuICAgICAgICBlbnY6IHRoaXMuY29uZmlnLmVudixcbiAgICAgIH1cbiAgICAgIC8vIOWwneivleino+aekOWTjeW6lOaVsOaNruS4uiBKU09OXG4gICAgICBwYXJzZSAmJiAoZm9ybWF0UXVlcnkucGFyc2UgPSB0cnVlKVxuICAgICAgaW5RdWVyeVxuICAgICAgICAmJiAoZm9ybWF0UXVlcnkgPSB7XG4gICAgICAgICAgLi4uaW5RdWVyeSxcbiAgICAgICAgICAuLi5mb3JtYXRRdWVyeSxcbiAgICAgICAgfSlcblxuICAgICAgY29uc3QgZW5kUG9pbnRNb2RlID0gb3B0aW9ucz8uZW5kUG9pbnRNb2RlIHx8IHRoaXMuY29uZmlnLmVuZFBvaW50TW9kZSB8fCAnQ0xPVURfQVBJJ1xuXG4gICAgICBjb25zdCB1cmwgPSBnZXRFbmRQb2ludEluZm8odGhpcy5jb25maWcuZW52LCBlbmRQb2ludE1vZGUpXG4gICAgICBsZXQgQkFTRV9VUkwgPSB1cmwuYmFzZVVybFxuICAgICAgY29uc3QgUFJPVE9DT0wgPSB1cmwucHJvdG9jb2xcblxuICAgICAgaWYgKGVuZFBvaW50TW9kZSA9PT0gJ0dBVEVXQVknKSB7XG4gICAgICAgIGlmICgvXigoZGF0YWJhc2UpXFwuKXwoYXV0aFxcLndzV2ViU2lnbikvLnRlc3QoYWN0aW9uKSkge1xuICAgICAgICAgIGNvbnN0IHVybCA9IGdldEVuZFBvaW50SW5mbyh0aGlzLmNvbmZpZy5lbnYsICdDTE9VRF9BUEknKVxuICAgICAgICAgIEJBU0VfVVJMID0gYCR7dXJsLmJhc2VVcmwubWF0Y2goL1xcL1xcLyhbXi8/I10qKS8pWzBdfS93ZWJgXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8g55Sf5oiQ6K+35rGCIHVybFxuICAgICAgbGV0IG5ld1VybFxuICAgICAgaWYgKG9wdGlvbnMucGF0aG5hbWUpIHtcbiAgICAgICAgbmV3VXJsID0gZm9ybWF0VXJsKFxuICAgICAgICAgIFBST1RPQ09MLFxuICAgICAgICAgIGAke2dldEJhc2VFbmRQb2ludCh0aGlzLmNvbmZpZy5lbnYsIGVuZFBvaW50TW9kZSk/LnJlcGxhY2UoL15odHRwcz86LywgJycpfS8ke29wdGlvbnMucGF0aG5hbWV9YCxcbiAgICAgICAgICBmb3JtYXRRdWVyeSxcbiAgICAgICAgKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbmV3VXJsID0gZm9ybWF0VXJsKFBST1RPQ09MLCBCQVNFX1VSTCwgZm9ybWF0UXVlcnkpXG4gICAgICB9XG5cbiAgICAgIGlmIChzZWFyY2gpIHtcbiAgICAgICAgbmV3VXJsICs9IHNlYXJjaFxuICAgICAgfVxuXG4gICAgICBjb25zdCByZXM6IFJlc3BvbnNlT2JqZWN0ID0gYXdhaXQgdGhpcy5wb3N0KFxuICAgICAgICB7XG4gICAgICAgICAgdXJsOiBuZXdVcmwsXG4gICAgICAgICAgZGF0YTogcGF5bG9hZCxcbiAgICAgICAgICAuLi5vcHRzLFxuICAgICAgICB9LFxuICAgICAgICBjdXN0b21SZXFPcHRzLFxuICAgICAgKVxuXG4gICAgICAvLyDkv53lrZggdHJhY2UgaGVhZGVyXG4gICAgICBjb25zdCByZXNUcmFjZUhlYWRlciA9IHJlcy5oZWFkZXI/LlsneC10Y2ItdHJhY2UnXVxuICAgICAgaWYgKHJlc1RyYWNlSGVhZGVyKSB7XG4gICAgICAgIHRoaXMubG9jYWxDYWNoZS5zZXRTdG9yZSh0Y2JUcmFjZUtleSwgcmVzVHJhY2VIZWFkZXIpXG4gICAgICB9XG5cbiAgICAgIGlmICgoTnVtYmVyKHJlcy5zdGF0dXMpICE9PSAyMDAgJiYgTnVtYmVyKHJlcy5zdGF0dXNDb2RlKSAhPT0gMjAwKSB8fCAhcmVzLmRhdGEpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCduZXR3b3JrIHJlcXVlc3QgZXJyb3InKVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzXG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICB0cnkge1xuICAgICAgICBlcnIucmVxdWVzdElkID0gZXJyLnJlcXVlc3RJZCB8fCBvcHRpb25zPy5oZWFkZXJzWyd4LXJlcXVlc3QtaWQnXSB8fCBvcHRpb25zPy5oZWFkZXJzWydYLVJlcXVlc3QtSWQnXSB8fCAnJ1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHt9XG4gICAgICB0aHJvdyBlcnJcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZmV0Y2gob3B0aW9uczogSUZldGNoT3B0aW9ucyAmIHsgdG9rZW4/OiBzdHJpbmc7IHdpdGhDcmVkZW50aWFscz86IGJvb2xlYW47IGN1c3RvbVJlcU9wdHM/OiBJQ3VzdG9tUmVxT3B0cyB9LCk6IFByb21pc2U8UmVzcG9uc2VPYmplY3Q+IHtcbiAgICBjb25zdCB7IHRva2VuLCBoZWFkZXJzID0ge30sIHdpdGhDcmVkZW50aWFscyA9IHRydWUsIC4uLnJlc3RPcHRpb25zIH0gPSBvcHRpb25zXG5cbiAgICBjb25zdCBkb0ZldGNoID0gYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgYXV0aEhlYWRlcnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fVxuICAgICAgaWYgKHdpdGhDcmVkZW50aWFscykge1xuICAgICAgICBhdXRoSGVhZGVycy5BdXRob3JpemF0aW9uID0gYEJlYXJlciAke2F3YWl0IHRoaXMuZ2V0QWNjZXNzVG9rZW4odG9rZW4pfWBcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLnJlcUNsYXNzLmZldGNoKHtcbiAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgIC8vICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgICAgLy8gJ1gtUmVxdWVzdC1JZCc6IGAke3V0aWxzLmdlbmVyYXRlUmVxdWVzdElkKCl9YCxcbiAgICAgICAgICAvLyAnWC1SZXF1ZXN0LVRpbWVzdGFtcCc6IGAke0RhdGUubm93KCl9YCxcbiAgICAgICAgICAnWC1TREstVmVyc2lvbic6IGBAY2xvdWRiYXNlL2pzLXNkay8ke2dldFNka1ZlcnNpb24oKX1gLFxuICAgICAgICAgIC4uLmF1dGhIZWFkZXJzLFxuICAgICAgICAgIC4uLnRoaXMuZ2V0RGVmYXVsdEhlYWRlcnMoKSxcbiAgICAgICAgICAuLi5oZWFkZXJzLFxuICAgICAgICB9LFxuICAgICAgICAuLi5yZXN0T3B0aW9ucyxcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGRvRmV0Y2goKVxuICAgICAgcmV0dXJuIHJlc3VsdFxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdHJ5IHtcbiAgICAgICAgZXJyLnJlcXVlc3RJZCA9IGVyci5yZXF1ZXN0SWQgfHwgaGVhZGVyc1sneC1yZXF1ZXN0LWlkJ10gfHwgaGVhZGVyc1snWC1SZXF1ZXN0LUlkJ10gfHwgJydcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7fVxuICAgICAgaWYgKGVycj8uY29kZSA9PT0gJ0FDQ0VTU19UT0tFTl9FWFBJUkVEJykge1xuICAgICAgICAvLyDlpoLmnpzmmK/lm6DkuLogdG9rZW4g6L+H5pyf5aSx6LSl77yM5Yi3IHRva2VuIOWQjuWGjeivleS4gOasoVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuY29uZmlnPy5fZnJvbUFwcD8ub2F1dGhJbnN0YW5jZT8uYXV0aEFwaT8ucmVmcmVzaFRva2VuRm9yY2UgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICB0aHJvdyBlcnJcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCB0aGlzLmNvbmZpZz8uX2Zyb21BcHA/Lm9hdXRoSW5zdGFuY2U/LmF1dGhBcGk/LnJlZnJlc2hUb2tlbkZvcmNlKClcbiAgICAgICAgcmV0dXJuIGRvRmV0Y2goKVxuICAgICAgfVxuICAgICAgLy8g5YW25LuW5Y6f5Zug5ZCR5LiK5oqb5Ye6XG5cbiAgICAgIHRocm93IGVyclxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBzZW5kKFxuICAgIGFjdGlvbjogc3RyaW5nLFxuICAgIGRhdGE6IEtWPGFueT4gPSB7fSxcbiAgICBvcHRpb25zOiBLVjxhbnk+ID0ge30sXG4gICAgY3VzdG9tUmVxT3B0cz86IElDdXN0b21SZXFPcHRzLFxuICApOiBQcm9taXNlPGFueT4ge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5yZXF1ZXN0KFxuICAgICAgYWN0aW9uLFxuICAgICAgZGF0YSxcbiAgICAgIHsgLi4ub3B0aW9ucywgb25VcGxvYWRQcm9ncmVzczogZGF0YS5vblVwbG9hZFByb2dyZXNzIH0sXG4gICAgICBjdXN0b21SZXFPcHRzLFxuICAgIClcblxuICAgIGlmIChyZXNwb25zZS5kYXRhLmNvZGUgJiYgdGhpcy50aHJvd1doZW5SZXF1ZXN0RmFpbCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgY29kZTogRVJST1JTLk9QRVJBVElPTl9GQUlMLFxuICAgICAgICBtc2c6IGBbJHtyZXNwb25zZS5kYXRhLmNvZGV9XSAke3Jlc3BvbnNlLmRhdGEubWVzc2FnZX1gLFxuICAgICAgfSksKVxuICAgIH1cblxuICAgIHJldHVybiByZXNwb25zZS5kYXRhXG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2F0ZVdheShvcHRpb25zOiBJR2F0ZVdheU9wdGlvbnMsIGN1c3RvbVJlcU9wdHM/OiBJQ3VzdG9tUmVxT3B0cykge1xuICAgIGNvbnN0IHsgdXJsLCBuYW1lLCBkYXRhLCBwYXRoID0gJycsIG1ldGhvZCwgaGVhZGVyID0ge30gfSA9IG9wdGlvbnNcblxuICAgIGlmICgoIW5hbWUgfHwgIXBhdGgpICYmICF1cmwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgIGNvZGU6IEVSUk9SUy5JTlZBTElEX1BBUkFNUyxcbiAgICAgICAgbXNnOiAnW2dhdGVXYXldIGludmFsaWQgZnVuY3Rpb24gbmFtZSBvciBwYXRoIG9yIHVybCcsXG4gICAgICB9KSwpXG4gICAgfVxuICAgIGxldCBqc29uRGF0YVxuICAgIHRyeSB7XG4gICAgICBqc29uRGF0YSA9IGRhdGEgPyBKU09OLnN0cmluZ2lmeShkYXRhKSA6ICcnXG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgY29kZTogRVJST1JTLklOVkFMSURfUEFSQU1TLFxuICAgICAgICBtc2c6ICdbZ2F0ZVdheV0gaW52YWxpZCBkYXRhJyxcbiAgICAgIH0pLClcbiAgICB9XG5cbiAgICBjb25zdCByZXF1ZXN0SWQgPSB1dGlscy5nZW5lcmF0ZVJlcXVlc3RJZCgpXG4gICAgY29uc3QgeyBiYXNlVXJsLCBwcm90b2NvbCB9ID0gZ2V0RW5kUG9pbnRJbmZvKHRoaXMuY29uZmlnLmVudiwgJ0dBVEVXQVknKVxuICAgIGxldCBlbmRwb2ludCA9IGAke3Byb3RvY29sfSR7YmFzZVVybH0ke3VybCB8fCBgLyR7cGF0aH0vJHtuYW1lfWB9YFxuXG4gICAgY29uc3QgaXNHZXRBbmRIZWFkID0gWydHRVQnLCAnSEVBRCddLmluY2x1ZGVzKG1ldGhvZD8udG9VcHBlckNhc2U/LigpKVxuXG4gICAgaWYgKGlzR2V0QW5kSGVhZCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgbGV0IGRhdGFQYXJzZSA9IHt9XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgZGF0YVBhcnNlID0gSlNPTi5wYXJzZShkYXRhIGFzIGFueSlcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICBkYXRhUGFyc2UgPSBkYXRhIHx8IHt9XG4gICAgICAgIH1cbiAgICAgICAgZW5kcG9pbnQgPSBgJHtlbmRwb2ludH0ke2VuZHBvaW50LmluY2x1ZGVzKCc/JykgPyAnJicgOiAnPyd9JHtPYmplY3Qua2V5cyhkYXRhUGFyc2UpXG4gICAgICAgICAgLm1hcChrZXkgPT4gYCR7a2V5fT0ke2RhdGFQYXJzZVtrZXldfWApXG4gICAgICAgICAgLmpvaW4oJyYnKX1gXG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAvL1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5mZXRjaCh7XG4gICAgICBtZXRob2Q6IG1ldGhvZCB8fCAnUE9TVCcsXG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbjsgY2hhcnNldD11dGYtOCcsXG4gICAgICAgICdYLVJlcXVlc3QtSWQnOiByZXF1ZXN0SWQsXG4gICAgICAgIC4uLmhlYWRlcixcbiAgICAgIH0sXG4gICAgICAuLi4oaXNHZXRBbmRIZWFkID8ge30gOiB7IGJvZHk6IGpzb25EYXRhIH0pLFxuICAgICAgdXJsOiBlbmRwb2ludCxcbiAgICAgIGN1c3RvbVJlcU9wdHMsXG4gICAgfSlcblxuICAgIHJldHVybiB7IHJlcXVlc3RJZCwgLi4ucmVzcG9uc2UsIGRhdGE6IGF3YWl0IHJlc3BvbnNlLmRhdGEgfVxuICB9XG59XG5cbmNvbnN0IHJlcXVlc3RNYXA6IEtWPENsb3VkYmFzZVJlcXVlc3Q+ID0ge31cblxuZXhwb3J0IGZ1bmN0aW9uIGluaXRSZXF1ZXN0KGNvbmZpZzogSUNsb3VkYmFzZVJlcXVlc3RDb25maWcpIHtcbiAgcmVxdWVzdE1hcFtjb25maWcuZW52XSA9IG5ldyBDbG91ZGJhc2VSZXF1ZXN0KHtcbiAgICAuLi5jb25maWcsXG4gICAgdGhyb3c6IHRydWUsXG4gIH0pXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRSZXF1ZXN0QnlFbnZJZChlbnY6IHN0cmluZyk6IENsb3VkYmFzZVJlcXVlc3Qge1xuICByZXR1cm4gcmVxdWVzdE1hcFtlbnZdXG59XG4iXX0=
|