@cloudbase/app 3.1.11 → 3.1.12
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.
|
@@ -85,16 +85,16 @@ var NodeRequest = (function () {
|
|
|
85
85
|
var _this = this;
|
|
86
86
|
this.getReqOptions = function (url, options) { return __awaiter(_this, void 0, void 0, function () {
|
|
87
87
|
var urlObj, TCB_SOURCE, SOURCE, _a, _b, isAdminPath, UNSUPPORTED_V3_SIGN_PATH, token, _c, secretId, secretKey, sessionToken, secretType, method, body, headers, params, secretInfo, signedParams, sign, _d, authorization, timestamp;
|
|
88
|
-
var _e, _f, _g, _h, _j, _k, _l;
|
|
89
|
-
return __generator(this, function (
|
|
90
|
-
switch (
|
|
88
|
+
var _e, _f, _g, _h, _j, _k, _l, _m;
|
|
89
|
+
return __generator(this, function (_o) {
|
|
90
|
+
switch (_o.label) {
|
|
91
91
|
case 0:
|
|
92
92
|
urlObj = new URL(url);
|
|
93
93
|
TCB_SOURCE = (0, context_1.getCloudbaseContext)().TCB_SOURCE;
|
|
94
94
|
_b = (_a = "".concat(((_f = (_e = context_1.INIT_CONFIG.context) === null || _e === void 0 ? void 0 : _e.extendedContext) === null || _f === void 0 ? void 0 : _f.source) || TCB_SOURCE || '', ",")).concat;
|
|
95
95
|
return [4, (0, utils_1.getCurrRunEnvTag)()];
|
|
96
96
|
case 1:
|
|
97
|
-
SOURCE = _b.apply(_a, [
|
|
97
|
+
SOURCE = _b.apply(_a, [_o.sent()]);
|
|
98
98
|
options.headers = __assign(__assign({}, options.headers), { 'User-Agent': "adapter-node/".concat(((_g = options.headers) === null || _g === void 0 ? void 0 : _g['X-SDK-Version']) || "@cloudbase/js-sdk/".concat((0, common_1.getSdkVersion)())), 'X-TCB-Source': SOURCE, 'X-Client-Timestamp': new Date().valueOf(), 'X-TCB-Region': context_1.INIT_CONFIG.region || (0, utils_1.getEnv)('TENCENTCLOUD_REGION') || '', Host: urlObj.host });
|
|
99
99
|
if ((_j = (_h = options.headers.Authorization) === null || _h === void 0 ? void 0 : _h.replace('Bearer', '')) === null || _j === void 0 ? void 0 : _j.trim()) {
|
|
100
100
|
return [2, options];
|
|
@@ -107,7 +107,7 @@ var NodeRequest = (function () {
|
|
|
107
107
|
if (!UNSUPPORTED_V3_SIGN_PATH.some(function (v) { return urlObj.pathname.startsWith(v); })) return [3, 3];
|
|
108
108
|
return [4, this.getClientCredential({ origin: urlObj.origin })];
|
|
109
109
|
case 2:
|
|
110
|
-
token =
|
|
110
|
+
token = _o.sent();
|
|
111
111
|
options.headers.Authorization = "Bearer ".concat(token);
|
|
112
112
|
return [2, options];
|
|
113
113
|
case 3:
|
|
@@ -115,7 +115,8 @@ var NodeRequest = (function () {
|
|
|
115
115
|
secretType = (((_l = this.config) === null || _l === void 0 ? void 0 : _l.auth) || {}).secretType;
|
|
116
116
|
method = options.method, body = options.body;
|
|
117
117
|
headers = JSON.parse(JSON.stringify(options.headers));
|
|
118
|
-
params = typeof body === 'object' ? body : (0, utils_1.safeParseJson)(body) ||
|
|
118
|
+
params = typeof body === 'object' ? body : (0, utils_1.safeParseJson)(body) || {};
|
|
119
|
+
params.envName = (params === null || params === void 0 ? void 0 : params.env) || this.config.env || ((_m = (0, context_1.getSecretInfo)()) === null || _m === void 0 ? void 0 : _m.env) || '';
|
|
119
120
|
if (params.access_token) {
|
|
120
121
|
return [2, options];
|
|
121
122
|
}
|
|
@@ -157,7 +158,7 @@ var NodeRequest = (function () {
|
|
|
157
158
|
}
|
|
158
159
|
return [4, getSign()];
|
|
159
160
|
case 4:
|
|
160
|
-
sign =
|
|
161
|
+
sign = _o.sent();
|
|
161
162
|
if (!sign)
|
|
162
163
|
return [2, options];
|
|
163
164
|
_d = sign(signedParams), authorization = _d.authorization, timestamp = _d.timestamp;
|
|
@@ -441,4 +442,4 @@ var NodeRequest = (function () {
|
|
|
441
442
|
return NodeRequest;
|
|
442
443
|
}());
|
|
443
444
|
exports.NodeRequest = NodeRequest;
|
|
444
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWJzL2FkYXB0ZXItbm9kZS9yZXF1ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0Esa0VBUXFDO0FBQ3JDLHlDQUEwRDtBQUMxRCxxQ0FBMkU7QUFFM0UsaUNBUWdCO0FBRWhCLGlEQUFzRDtBQUd0RCxJQUFJLE1BQU0sR0FBcUMsSUFBSSxDQUFBO0FBQ25ELFNBQWUsT0FBTzs7Ozs7O3lCQUNoQixDQUFDLE1BQU0sRUFBUCxjQUFPOzs7O29CQUdLLFdBQU0sTUFBTSxDQUFDLDZCQUE2QixDQUFDLEVBQUE7O29CQUFqRCxHQUFHLEdBQUcsU0FBMkM7b0JBQ3ZELE1BQU0sR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFBOzs7O29CQUVqQixPQUFPLENBQUMsS0FBSyxDQUFDLGlEQUFpRDswQkFDM0QsK0NBQStDOzBCQUMvQyxzQkFBc0IsQ0FBQyxDQUFBOzt3QkFHL0IsV0FBTyxNQUFPLEVBQUE7Ozs7Q0FDZjtBQU9EO0lBVUUscUJBQVksTUFBeUM7UUFBckQsaUJBS0M7UUF1RE0sa0JBQWEsR0FBRyxVQUNyQixHQUFXLEVBQ1gsT0FPQzs7Ozs7O3dCQUVLLE1BQU0sR0FBRyxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQTt3QkFFbkIsVUFBVSxHQUFLLElBQUEsNkJBQW1CLEdBQUUsV0FBMUIsQ0FBMEI7NkNBRTFCLENBQUEsTUFBQSxNQUFBLHFCQUFXLENBQUMsT0FBTywwQ0FBRSxlQUFlLDBDQUFFLE1BQU0sS0FBSSxVQUFVLElBQUksRUFBRTt3QkFBSSxXQUFNLElBQUEsd0JBQWdCLEdBQUUsRUFBQTs7d0JBQXhHLE1BQU0sR0FBRyxjQUF1RSxTQUF3QixFQUFFO3dCQUVoSCxPQUFPLENBQUMsT0FBTyx5QkFDVixPQUFPLENBQUMsT0FBTyxLQUNsQixZ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QUFHLENBQUMsSUFBSSwwQ0FBRSxZQUFZLEVBQUE7Ozs7S0FDOUI7SUFPRCxnQ0FBVSxHQUFWLFVBQVcsR0FBVyxFQUFFLE9BQTRCLEVBQUUsSUFBUzs7UUFDN0QsSUFBSSxNQUFBLE1BQUEsT0FBTyxDQUFDLGFBQWEsMENBQUUsT0FBTyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsMENBQUUsSUFBSSxFQUFFLEVBQUU7WUFDeEQsT0FBTyxHQUFHLENBQUE7U0FDWDtRQUVELElBQU0sTUFBTSxHQUFHLE9BQU8sSUFBSSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFBLHFCQUFhLEVBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFBO1FBRTFFLElBQUksTUFBTSxDQUFDLFlBQVksRUFBRTtZQUN2QixPQUFPLEdBQUcsQ0FBQTtTQUNYO1FBRUQsSUFBTSxNQUFNLEdBQUcsSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUE7UUFFM0IsSUFBSSxNQUFNLENBQUMsUUFBUSxLQUFLLE1BQU0sS0FBSSxNQUFBLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSwwQ0FBRSxRQUFRLENBQUEsS0FBSSxNQUFBLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSwwQ0FBRSxTQUFTLENBQUEsRUFBRTtZQUMzRixNQUFNLENBQUMsUUFBUSxHQUFHLHNCQUFVLENBQUE7U0FDN0I7UUFDRCxPQUFPLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQTtJQUMxQixDQUFDO0lBK1hILGtCQUFDO0FBQUQsQ0FBQyxBQXpiRCxJQXliQztBQXpiWSxrQ0FBVyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLW5lc3RlZC10ZXJuYXJ5ICovXG5pbXBvcnQge1xuICBJRmV0Y2hPcHRpb25zLFxuICBJUmVxdWVzdENvbmZpZyxcbiAgSVJlcXVlc3RNZXRob2QsXG4gIElSZXF1ZXN0T3B0aW9ucyxcbiAgUmVzcG9uc2VPYmplY3QsXG4gIFNES1JlcXVlc3RJbnRlcmZhY2UsXG4gIGZvcm1hdFVybCxcbn0gZnJvbSAnQGNsb3VkYmFzZS9hZGFwdGVyLWludGVyZmFjZSdcbmltcG9ydCB7IEFETUlOX1BBVEgsIENMSUVOVF9BVVRIX1BBVEggfSBmcm9tICcuL2NvbnN0YW50cydcbmltcG9ydCB7IGdldENsb3VkYmFzZUNvbnRleHQsIGdldFNlY3JldEluZm8sIElOSVRfQ09ORklHIH0gZnJvbSAnLi9jb250ZXh0J1xuaW1wb3J0IHR5cGUgeyBJQ3VzdG9tUmVxT3B0cyB9IGZyb20gJy4vdHlwZXMnXG5pbXBvcnQge1xuICBnZXRFbnYsXG4gIGlzRm9ybURhdGEsXG4gIHRvUXVlcnlTdHJpbmcsXG4gIHNhZmVQYXJzZUpzb24sXG4gIG9iajJTdHJSZWNvcmQsXG4gIGhlYWRlcnNJbml0MkluZGV4YWJsZSxcbiAgZ2V0Q3VyclJ1bkVudlRhZyxcbn0gZnJvbSAnLi91dGlscydcbmltcG9ydCB7IElDbG91ZGJhc2VDb25maWcgfSBmcm9tICdAY2xvdWRiYXNlL3R5cGVzJ1xuaW1wb3J0IHsgZ2V0U2RrVmVyc2lvbiB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9jb21tb24nXG4vLyDlu7bov5/liqDovb3vvIzpgb/lhY3pnZ4gTm9kZSDnjq/looPmiZPljIXml7blvJXlhaXmraTljIVcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5sZXQgc2lnbkZuOiAoKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnkpIHwgbnVsbCA9IG51bGxcbmFzeW5jIGZ1bmN0aW9uIGdldFNpZ24oKSB7XG4gIGlmICghc2lnbkZuKSB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIEB0cy1pZ25vcmUg4oCUIOivpeWMheS7heWcqCBOb2RlIOi/kOihjOaXtuWtmOWcqO+8jOW8gOWPkeeOr+Wig+WPr+iDveacquWuieijhVxuICAgICAgY29uc3QgbW9kID0gYXdhaXQgaW1wb3J0KCdAY2xvdWRiYXNlL3NpZ25hdHVyZS1ub2RlanMnKVxuICAgICAgc2lnbkZuID0gbW9kLnNpZ25cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCfnvLrlsJHkvp3otZYgQGNsb3VkYmFzZS9zaWduYXR1cmUtbm9kZWpz77yM6K+35omn6KGM5Lul5LiL5ZG95Luk5a6J6KOF77yaXFxuXFxuJ1xuICAgICAgICArICcgIG5wbSBpbnN0YWxsIEBjbG91ZGJhc2Uvc2lnbmF0dXJlLW5vZGVqc1xcblxcbidcbiAgICAgICAgKyAn6K+l5L6d6LWW55So5LqOIE5vZGUg546v5aKD5LiL55qE6K+35rGC562+5ZCN44CCJylcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHNpZ25GbiFcbn1cblxuLyoqXG4gKiBOb2RlLmpzIOeOr+Wig+S4i+eahCBIVFRQIOivt+axguWunueOsFxuICog5Z+65LqO5Y6f55SfIGZldGNo77yM5pSv5oyBIEdFVC9QT1NUL1BVVC/kuIrkvKAv5LiL6L29L+a1geW8j+ivt+axglxuICog6Ieq5Yqo5aSE55CGIFYzIOetvuWQjeWSjCBCZWFyZXIgVG9rZW4g6K6k6K+BXG4gKi9cbmV4cG9ydCBjbGFzcyBOb2RlUmVxdWVzdCBpbXBsZW1lbnRzIFNES1JlcXVlc3RJbnRlcmZhY2Uge1xuICAvKiog6K+35rGC6YWN572u77yM5YyF5ZCr6K6k6K+B5L+h5oGvICovXG4gIGNvbmZpZzogSVJlcXVlc3RDb25maWcgJiBJQ2xvdWRiYXNlQ29uZmlnXG5cbiAgLyoqIOivt+axgui2heaXtuaXtumXtO+8iOavq+enku+8ie+8jOm7mOiupCAxNTAwMCAqL1xuICBwcml2YXRlIHJlYWRvbmx5IHRpbWVvdXQ6IG51bWJlclxuXG4gIC8qKiDlj5fotoXml7bmjqfliLbnmoTor7fmsYLnsbvlnovliJfooaggKi9cbiAgcHJpdmF0ZSByZWFkb25seSByZXN0cmljdGVkTWV0aG9kczogQXJyYXk8SVJlcXVlc3RNZXRob2Q+XG5cbiAgY29uc3RydWN0b3IoY29uZmlnOiBJUmVxdWVzdENvbmZpZyAmIElDbG91ZGJhc2VDb25maWcpIHtcbiAgICBjb25zdCB7IHRpbWVvdXQsIHJlc3RyaWN0ZWRNZXRob2RzIH0gPSBjb25maWdcbiAgICB0aGlzLnRpbWVvdXQgPSB0aW1lb3V0IHx8IDE1MDAwXG4gICAgdGhpcy5yZXN0cmljdGVkTWV0aG9kcyA9IHJlc3RyaWN0ZWRNZXRob2RzIHx8IFsnZ2V0JywgJ3Bvc3QnLCAndXBsb2FkJywgJ2Rvd25sb2FkJ11cbiAgICB0aGlzLmNvbmZpZyA9IGNvbmZpZ1xuICB9XG5cbiAgLyoqXG4gICAqIOiOt+WPluWuouaIt+err+WHreivgSBhY2Nlc3NfdG9rZW7vvIzkuLrnrqHnkIblkZjmnYPpmZBcbiAgICog55So5LqO5LiN5pSv5oyBIFYzIOetvuWQjeeahOaOpeWPo++8iOWmguaVsOaNruaooeWei+OAgeWFs+ezu+Wei+aVsOaNruW6k+OAgUFJ77yJXG4gICAqL1xuICBhc3luYyBnZXRDbGllbnRDcmVkZW50aWFsKG9wdHM6IHsgb3JpZ2luOiBzdHJpbmcgfSk6IFByb21pc2U8YW55PiB7XG4gICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5mZXRjaCh7XG4gICAgICB1cmw6IGAke29wdHMub3JpZ2lufSR7Q0xJRU5UX0FVVEhfUEFUSH1gLFxuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgICdjb250ZW50LXR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICB9LFxuICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICBncmFudF90eXBlOiAnY2xpZW50X2NyZWRlbnRpYWxzJyxcbiAgICAgIH0pLFxuICAgIH0pXG5cbiAgICByZXR1cm4gcmVzLmRhdGE/LmFjY2Vzc190b2tlblxuICB9XG5cbiAgLyoqXG4gICAqIOiOt+WPluWunumZheivt+axgiBVUkxcbiAgICog5b2T6K+35rGC5pyq5pC65bimIEF1dGhvcml6YXRpb24g5LiU5pyq6Ieq5bimIGFjY2Vzc190b2tlbiDml7bvvIxcbiAgICog5bCGIC93ZWIg6Lev5b6E5pu/5o2i5Li6IC9hZG1pbu+8iOeuoeeQhuerr+etvuWQjei3r+W+hO+8iVxuICAgKi9cbiAgZ2V0UmVhbFVybCh1cmw6IHN0cmluZywgaGVhZGVyczogUmVjb3JkPHN0cmluZywgYW55PiwgYm9keTogYW55KSB7XG4gICAgaWYgKGhlYWRlcnMuQXV0aG9yaXphdGlvbj8ucmVwbGFjZSgnQmVhcmVyJywgJycpPy50cmltKCkpIHtcbiAgICAgIHJldHVybiB1cmxcbiAgICB9XG5cbiAgICBjb25zdCBwYXJhbXMgPSB0eXBlb2YgYm9keSA9PT0gJ29iamVjdCcgPyBib2R5IDogc2FmZVBhcnNlSnNvbihib2R5KSB8fCAnJ1xuXG4gICAgaWYgKHBhcmFtcy5hY2Nlc3NfdG9rZW4pIHtcbiAgICAgIHJldHVybiB1cmxcbiAgICB9XG5cbiAgICBjb25zdCB1cmxPYmogPSBuZXcgVVJMKHVybClcblxuICAgIGlmICh1cmxPYmoucGF0aG5hbWUgPT09ICcvd2ViJyAmJiB0aGlzLmNvbmZpZy5hdXRoPy5zZWNyZXRJZCAmJiB0aGlzLmNvbmZpZy5hdXRoPy5zZWNyZXRLZXkpIHtcbiAgICAgIHVybE9iai5wYXRobmFtZSA9IEFETUlOX1BBVEhcbiAgICB9XG4gICAgcmV0dXJuIHVybE9iai50b1N0cmluZygpXG4gIH1cblxuICAvKipcbiAgICog5Li66K+35rGC5re75Yqg562+5ZCN5oiW6K6k6K+B5L+h5oGvXG4gICAqXG4gICAqIOWkhOeQhumAu+i+keS8mOWFiOe6p++8mlxuICAgKiAxLiDlt7LmnIkgQXV0aG9yaXphdGlvbiBoZWFkZXIg4oaSIOebtOaOpei/lOWbnlxuICAgKiAyLiAvYXV0aC8g6Lev5b6EIOKGkiBTREsg6K6k6K+B5o6l5Y+j77yM5peg6ZyA562+5ZCNXG4gICAqIDMuIOS4jeaUr+aMgSBWMyDnrb7lkI3nmoTot6/lvoTvvIgvdjEvbW9kZWwvIOetie+8ieKGkiDnlKggY2xpZW50Q3JlZGVudGlhbCBCZWFyZXIgVG9rZW5cbiAgICogNC4g5Y+C5pWw5ZCrIGFjY2Vzc190b2tlbiDihpIg5peg6ZyA562+5ZCNXG4gICAqIDUuIOWFtuS7liDihpIg5L2/55SoIFYzIOetvuWQje+8iFRDMy1ITUFDLVNIQTI1Nu+8iVxuICAgKi9cbiAgcHVibGljIGdldFJlcU9wdGlvbnMgPSBhc3luYyAoXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgb3B0aW9uczoge1xuICAgICAgbWV0aG9kPzogYW55XG4gICAgICBoZWFkZXJzOiBhbnlcbiAgICAgIGJvZHk/OiBhbnlcbiAgICAgIGNyZWRlbnRpYWxzPzogc3RyaW5nXG4gICAgICBzaWduYWw/OiBBYm9ydFNpZ25hbFxuICAgICAgdXJsPzogYW55XG4gICAgfSxcbiAgKSA9PiB7XG4gICAgY29uc3QgdXJsT2JqID0gbmV3IFVSTCh1cmwpXG5cbiAgICBjb25zdCB7IFRDQl9TT1VSQ0UgfSA9IGdldENsb3VkYmFzZUNvbnRleHQoKVxuICAgIC8vIE5vdGU6IOS6keWHveaVsOiiq+iwg+eUqOaXtuWPr+iDveiwg+eUqOerr+acquS8oOmAkiBTT1VSQ0XvvIxUQ0JfU09VUkNFIOWPr+iDveS4uuepulxuICAgIGNvbnN0IFNPVVJDRSA9IGAke0lOSVRfQ09ORklHLmNvbnRleHQ/LmV4dGVuZGVkQ29udGV4dD8uc291cmNlIHx8IFRDQl9TT1VSQ0UgfHwgJyd9LCR7YXdhaXQgZ2V0Q3VyclJ1bkVudlRhZygpfWBcblxuICAgIG9wdGlvbnMuaGVhZGVycyA9IHtcbiAgICAgIC4uLm9wdGlvbnMuaGVhZGVycyxcbiAgICAgICdVc2VyLUFnZW50JzogYGFkYXB0ZXItbm9kZS8ke29wdGlvbnMuaGVhZGVycz8uWydYLVNESy1WZXJzaW9uJ10gfHwgYEBjbG91ZGJhc2UvanMtc2RrLyR7Z2V0U2RrVmVyc2lvbigpfWB9YCxcbiAgICAgICdYLVRDQi1Tb3VyY2UnOiBTT1VSQ0UsXG4gICAgICAnWC1DbGllbnQtVGltZXN0YW1wJzogbmV3IERhdGUoKS52YWx1ZU9mKCksXG4gICAgICAnWC1UQ0ItUmVnaW9uJzogSU5JVF9DT05GSUcucmVnaW9uIHx8IGdldEVudignVEVOQ0VOVENMT1VEX1JFR0lPTicpIHx8ICcnLFxuICAgICAgSG9zdDogdXJsT2JqLmhvc3QsXG4gICAgfVxuXG4gICAgLy8g5bey5pC65bim5pyJ5pWIIEF1dGhvcml6YXRpb27vvIznm7TmjqXov5Tlm55cbiAgICBpZiAob3B0aW9ucy5oZWFkZXJzLkF1dGhvcml6YXRpb24/LnJlcGxhY2UoJ0JlYXJlcicsICcnKT8udHJpbSgpKSB7XG4gICAgICByZXR1cm4gb3B0aW9uc1xuICAgIH1cblxuICAgIC8vIGF1dGgg55u45YWz5o6l5Y+j5LiN6ZyA6KaB562+5ZCNXG4gICAgaWYgKHVybE9iai5wYXRobmFtZS5zdGFydHNXaXRoKCcvYXV0aC8nKSAmJiB1cmxPYmoucGF0aG5hbWUgIT09IENMSUVOVF9BVVRIX1BBVEgpIHtcbiAgICAgIHJldHVybiBvcHRpb25zXG4gICAgfVxuXG4gICAgY29uc3QgaXNBZG1pblBhdGggPSB1cmxPYmoucGF0aG5hbWUgPT09IEFETUlOX1BBVEhcblxuICAgIC8vIOi/meS6m+i3r+W+hOS4jeaUr+aMgSBWMyDnrb7lkI3vvIzmlLnnlKggY2xpZW50Q3JlZGVudGlhbCDojrflj5YgQmVhcmVyIFRva2VuXG4gICAgY29uc3QgVU5TVVBQT1JURURfVjNfU0lHTl9QQVRIID0gWycvdjEvbW9kZWwvJywgJy92MS9yZGIvJywgJy92MS9haS8nXVxuXG4gICAgaWYgKFVOU1VQUE9SVEVEX1YzX1NJR05fUEFUSC5zb21lKHYgPT4gdXJsT2JqLnBhdGhuYW1lLnN0YXJ0c1dpdGgodikpKSB7XG4gICAgICBjb25zdCB0b2tlbiA9IGF3YWl0IHRoaXMuZ2V0Q2xpZW50Q3JlZGVudGlhbCh7IG9yaWdpbjogdXJsT2JqLm9yaWdpbiB9KVxuICAgICAgb3B0aW9ucy5oZWFkZXJzLkF1dGhvcml6YXRpb24gPSBgQmVhcmVyICR7dG9rZW59YFxuICAgICAgcmV0dXJuIG9wdGlvbnNcbiAgICB9XG5cbiAgICBsZXQgeyBzZWNyZXRJZCwgc2VjcmV0S2V5LCBzZXNzaW9uVG9rZW4gfSA9IHRoaXMuY29uZmlnPy5hdXRoIHx8IHt9XG4gICAgY29uc3QgeyBzZWNyZXRUeXBlIH0gPSB0aGlzLmNvbmZpZz8uYXV0aCB8fCB7fVxuICAgIGNvbnN0IHsgbWV0aG9kLCBib2R5IH0gPSBvcHRpb25zXG4gICAgY29uc3QgaGVhZGVycyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkob3B0aW9ucy5oZWFkZXJzKSlcbiAgICBsZXQgcGFyYW1zID0gdHlwZW9mIGJvZHkgPT09ICdvYmplY3QnID8gYm9keSA6IHNhZmVQYXJzZUpzb24oYm9keSkgfHwgJydcblxuICAgIC8vIOWPguaVsOiHquW4piBhY2Nlc3NfdG9rZW7vvIzml6DpnIDnrb7lkI1cbiAgICBpZiAocGFyYW1zLmFjY2Vzc190b2tlbikge1xuICAgICAgcmV0dXJuIG9wdGlvbnNcbiAgICB9XG5cbiAgICAvLyBHRVQg6K+35rGC5Y+C5pWw5bey5ZyoIFVSTCDkuK3vvIznrb7lkI3ml7YgcGFyYW1zIOe9ruepulxuICAgIGlmIChtZXRob2QudG9Mb3dlckNhc2UoKSA9PT0gJ2dldCcpIHtcbiAgICAgIHBhcmFtcyA9IHVuZGVmaW5lZFxuICAgIH1cblxuICAgIC8vIFNFU1NJT05fU0VDUkVUIOexu+Wei+aIluaXoOWvhumSpeaXtu+8jOS7jueOr+Wig+WPmOmHj+iOt+WPluS4tOaXtuWvhumSpVxuICAgIGlmICghc2VjcmV0SWQgfHwgIXNlY3JldEtleSB8fCBzZWNyZXRUeXBlID09PSAnU0VTU0lPTl9TRUNSRVQnKSB7XG4gICAgICBjb25zdCBzZWNyZXRJbmZvID0gZ2V0U2VjcmV0SW5mbygpXG4gICAgICBzZWNyZXRJZCA9IHNlY3JldEluZm8uc2VjcmV0SWRcbiAgICAgIHNlY3JldEtleSA9IHNlY3JldEluZm8uc2VjcmV0S2V5XG4gICAgICBzZXNzaW9uVG9rZW4gPSBzZWNyZXRJbmZvLnNlc3Npb25Ub2tlblxuICAgIH1cblxuICAgIC8vIOS7jeaXoOWvhumSpeWImei3s+i/h+etvuWQjVxuICAgIGlmICghc2VjcmV0SWQgfHwgIXNlY3JldEtleSkge1xuICAgICAgcmV0dXJuIG9wdGlvbnNcbiAgICB9XG5cbiAgICBkZWxldGUgaGVhZGVycy5BdXRob3JpemF0aW9uXG5cbiAgICAvLyBjb250ZW50LXR5cGUg6ZyA5LiO5pyN5Yqh56uv562+5ZCN6aqM6K+B5L+d5oyB5aSn5bCP5YaZ5LiA6Ie0XG4gICAgaWYgKGhlYWRlcnNbJ2NvbnRlbnQtdHlwZSddKSB7XG4gICAgICBoZWFkZXJzWydjb250ZW50LXR5cGUnXSA9IGhlYWRlcnNbJ2NvbnRlbnQtdHlwZSddLnRvTG93ZXJDYXNlKClcbiAgICB9IGVsc2UgaWYgKGhlYWRlcnNbJ0NvbnRlbnQtVHlwZSddKSB7XG4gICAgICBoZWFkZXJzWydDb250ZW50LVR5cGUnXSA9IGhlYWRlcnNbJ0NvbnRlbnQtVHlwZSddLnRvTG93ZXJDYXNlKClcbiAgICB9XG5cbiAgICBpZiAoaXNBZG1pblBhdGggJiYgISFzZXNzaW9uVG9rZW4pIHtcbiAgICAgIHBhcmFtcy5zZXNzaW9uVG9rZW4gPSBzZXNzaW9uVG9rZW5cbiAgICB9XG5cbiAgICBjb25zdCBzaWduZWRQYXJhbXMgPSB7XG4gICAgICBzZWNyZXRJZCxcbiAgICAgIHNlY3JldEtleSxcbiAgICAgIG1ldGhvZCxcbiAgICAgIHVybCxcbiAgICAgIHBhcmFtcyxcbiAgICAgIGhlYWRlcnMsXG4gICAgICB3aXRoU2lnbmVkUGFyYW1zOiBpc0FkbWluUGF0aCxcbiAgICAgIHRpbWVzdGFtcDogTWF0aC5mbG9vcihuZXcgRGF0ZSgpLmdldFRpbWUoKSAvIDEwMDApIC0gMSxcbiAgICAgIGlzQ2xvdWRBcGk6ICFpc0FkbWluUGF0aCxcbiAgICB9XG5cbiAgICBpZiAoIWhlYWRlcnNbJ2NvbnRlbnQtdHlwZSddICYmICFoZWFkZXJzWydDb250ZW50LVR5cGUnXSkge1xuICAgICAgcmV0dXJuIG9wdGlvbnNcbiAgICB9XG5cbiAgICBjb25zdCBzaWduID0gYXdhaXQgZ2V0U2lnbigpXG4gICAgaWYgKCFzaWduKSByZXR1cm4gb3B0aW9uc1xuXG4gICAgY29uc3QgeyBhdXRob3JpemF0aW9uLCB0aW1lc3RhbXAgfSA9IHNpZ24oc2lnbmVkUGFyYW1zKVxuXG4gICAgaWYgKHR5cGVvZiBzZXNzaW9uVG9rZW4gPT09ICdzdHJpbmcnICYmIHNlc3Npb25Ub2tlbiAhPT0gJycpIHtcbiAgICAgIGlmIChpc0FkbWluUGF0aCkge1xuICAgICAgICBoZWFkZXJzLkF1dGhvcml6YXRpb24gPSBgJHthdXRob3JpemF0aW9ufWBcbiAgICAgICAgaGVhZGVyc1snWC1UaW1lc3RhbXAnXSA9IHRpbWVzdGFtcFxuICAgICAgICBoZWFkZXJzWydYLVNpZ25hdHVyZS1FeHBpcmVzJ10gPSA2MDBcbiAgICAgIH0gZWxzZSAge1xuICAgICAgICAvLyDkuLTml7blr4bpkqXpnIDopoHpop3lpJbpmYTluKYgVG9rZW5cbiAgICAgICAgaGVhZGVycy5BdXRob3JpemF0aW9uID0gYCR7YXV0aG9yaXphdGlvbn0sIFRpbWVzdGFtcD0ke3RpbWVzdGFtcH0sIFRva2VuPSR7c2Vzc2lvblRva2VufWBcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaGVhZGVycy5BdXRob3JpemF0aW9uID0gYCR7YXV0aG9yaXphdGlvbn0sIFRpbWVzdGFtcD0ke3RpbWVzdGFtcH1gXG5cbiAgICAgIC8vIGFkbWluIOi3r+W+hOmcgOimgemineWklueahOaXtumXtOaIs+WSjOi/h+acn+WktFxuICAgICAgaWYgKGlzQWRtaW5QYXRoKSB7XG4gICAgICAgIGhlYWRlcnNbJ1gtVGltZXN0YW1wJ10gPSB0aW1lc3RhbXBcbiAgICAgICAgaGVhZGVyc1snWC1TaWduYXR1cmUtRXhwaXJlcyddID0gNjAwXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBoZWFkZXJzLFxuICAgICAgYm9keTogdHlwZW9mIHBhcmFtcyA9PT0gJ29iamVjdCcgPyBKU09OLnN0cmluZ2lmeShwYXJhbXMpIDogcGFyYW1zLFxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgPSAob3B0aW9uczogSVJlcXVlc3RPcHRpb25zKTogUHJvbWlzZTxSZXNwb25zZU9iamVjdD4gPT4gdGhpcy5yZXF1ZXN0KFxuICAgIHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBtZXRob2Q6ICdnZXQnLFxuICAgIH0sXG4gICAgdGhpcy5yZXN0cmljdGVkTWV0aG9kcy5pbmNsdWRlcygnZ2V0JyksXG4gIClcblxuICBwdWJsaWMgcG9zdCA9IChvcHRpb25zOiBJUmVxdWVzdE9wdGlvbnMpOiBQcm9taXNlPFJlc3BvbnNlT2JqZWN0PiA9PiB0aGlzLnJlcXVlc3QoXG4gICAge1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIG1ldGhvZDogJ3Bvc3QnLFxuICAgIH0sXG4gICAgdGhpcy5yZXN0cmljdGVkTWV0aG9kcy5pbmNsdWRlcygncG9zdCcpLFxuICApXG5cbiAgcHVibGljIHB1dCA9IChvcHRpb25zOiBJUmVxdWVzdE9wdGlvbnMpOiBQcm9taXNlPFJlc3BvbnNlT2JqZWN0PiA9PiB0aGlzLnJlcXVlc3Qoe1xuICAgIC4uLm9wdGlvbnMsXG4gICAgbWV0aG9kOiAncHV0JyxcbiAgfSlcblxuICAvKipcbiAgICog5paH5Lu25LiK5LygXG4gICAqIFBPU1Qg5pa55byP77ya5p6E5bu6IEZvcm1EYXRhIOS4iuS8oFxuICAgKiBQVVQg5pa55byP77ya55u05o6l5bCG5paH5Lu25L2c5Li6IGJvZHkg5LiK5LygXG4gICAqL1xuICBwdWJsaWMgdXBsb2FkID0gKG9wdGlvbnM6IElSZXF1ZXN0T3B0aW9ucyk6IFByb21pc2U8UmVzcG9uc2VPYmplY3Q+ID0+IHtcbiAgICBjb25zdCB7IGRhdGE6IF9kYXRhLCBmaWxlLCBuYW1lLCBtZXRob2QsIGhlYWRlcnMgPSB7fSB9ID0gb3B0aW9uc1xuICAgIGlmIChmaWxlID09PSB1bmRlZmluZWQgfHwgbmFtZSA9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignZmlsZSBhbmQgbmFtZSBpcyByZXF1aXJlZCcpXG4gICAgfVxuICAgIGNvbnN0IGRhdGEgPSBvYmoyU3RyUmVjb3JkKF9kYXRhID8/IHt9KVxuICAgIGNvbnN0IGxvd2VyZWRNZXRob2QgPSBtZXRob2Q/LnRvTG93ZXJDYXNlKClcbiAgICBjb25zdCByZXFNZXRob2QgPSBbJ3Bvc3QnLCAncHV0J10uZmluZChtID0+IG0gPT09IGxvd2VyZWRNZXRob2QpID8/ICdwdXQnXG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKVxuICAgIGlmIChyZXFNZXRob2QgPT09ICdwb3N0Jykge1xuICAgICAgT2JqZWN0LmtleXMoZGF0YSkuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgIGZvcm1EYXRhLmFwcGVuZChrZXksIGRhdGFba2V5XSlcbiAgICAgIH0pXG4gICAgICBmb3JtRGF0YS5hcHBlbmQoJ2tleScsIG5hbWUpXG4gICAgICBmb3JtRGF0YS5hcHBlbmQoJ2ZpbGUnLCBmaWxlKVxuICAgICAgcmV0dXJuIHRoaXMucmVxdWVzdChcbiAgICAgICAge1xuICAgICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgICAgZGF0YTogZm9ybURhdGEsXG4gICAgICAgICAgbWV0aG9kOiByZXFNZXRob2QsXG4gICAgICAgIH0sXG4gICAgICAgIHRoaXMucmVzdHJpY3RlZE1ldGhvZHMuaW5jbHVkZXMoJ3VwbG9hZCcpLFxuICAgICAgKVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QoXG4gICAgICB7XG4gICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgIG1ldGhvZDogJ3B1dCcsXG4gICAgICAgIGhlYWRlcnMsXG4gICAgICAgIGJvZHk6IGZpbGUsXG4gICAgICB9LFxuICAgICAgdGhpcy5yZXN0cmljdGVkTWV0aG9kcy5pbmNsdWRlcygndXBsb2FkJyksXG4gICAgKVxuICB9XG5cbiAgLyoqIOaWh+S7tuS4i+i9ve+8iOa1j+iniOWZqOeOr+Wig++8jOmAmui/h+WIm+W7uiA8YT4g5qCH562+6Kem5Y+R5LiL6L2977yJICovXG4gIHB1YmxpYyBkb3dubG9hZCA9IGFzeW5jIChvcHRpb25zOiBJUmVxdWVzdE9wdGlvbnMpOiBQcm9taXNlPHVua25vd24+ID0+IHtcbiAgICBjb25zdCB7IGRhdGEgfSA9IGF3YWl0IHRoaXMuZ2V0KHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBoZWFkZXJzOiB7fSxcbiAgICAgIHJlc3BvbnNlVHlwZTogJ2Jsb2InLFxuICAgIH0pXG4gICAgY29uc3QgdXJsID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwobmV3IEJsb2IoW2RhdGFdKSlcbiAgICBjb25zdCBmaWxlTmFtZSA9IGRlY29kZVVSSUNvbXBvbmVudChuZXcgVVJMKG9wdGlvbnM/LnVybCA/PyAnJykucGF0aG5hbWUuc3BsaXQoJy8nKS5wb3AoKSB8fCAnJylcbiAgICBjb25zdCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpXG5cbiAgICBsaW5rLmhyZWYgPSB1cmxcbiAgICBsaW5rLnNldEF0dHJpYnV0ZSgnZG93bmxvYWQnLCBmaWxlTmFtZSlcbiAgICBsaW5rLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSdcblxuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobGluaylcbiAgICBsaW5rLmNsaWNrKClcbiAgICB3aW5kb3cuVVJMLnJldm9rZU9iamVjdFVSTCh1cmwpXG4gICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChsaW5rKVxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgICAgcmVzb2x2ZSh7XG4gICAgICAgIHN0YXR1c0NvZGU6IDIwMCxcbiAgICAgICAgdGVtcEZpbGVQYXRoOiBvcHRpb25zLnVybCxcbiAgICAgIH0pXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiDlupXlsYIgZmV0Y2gg6K+35rGC77yM5pSv5oyB5rWB5byP5ZON5bqUXG4gICAqIOi2heaXtumAmui/hyBBYm9ydENvbnRyb2xsZXIgKyBzZXRUaW1lb3V0IOWunueOsFxuICAgKi9cbiAgcHVibGljIGZldGNoID0gYXN5bmMgKG9wdGlvbnM6IE9taXQ8SUZldGNoT3B0aW9ucywgJ3NpZ25hbCc+ICYgeyBzaWduYWw/OiBBYm9ydFNpZ25hbDsgY3VzdG9tUmVxT3B0cz86IElDdXN0b21SZXFPcHRzIH0pOiBQcm9taXNlPFJlc3BvbnNlT2JqZWN0PiA9PiB7XG4gICAgY29uc3QgeyBlbmFibGVBYm9ydCA9IGZhbHNlLCBzdHJlYW0gPSBmYWxzZSwgc2lnbmFsLCBjdXN0b21SZXFPcHRzIH0gPSBvcHRpb25zXG4gICAgY29uc3QgdXJsID0gdGhpcy5nZXRSZWFsVXJsKG9wdGlvbnMudXJsLCBvcHRpb25zLmhlYWRlcnMgfHwge30sIG9wdGlvbnMuYm9keSlcbiAgICBjb25zdCBhYm9ydENvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKClcbiAgICBjb25zdCB0aW1lb3V0ID0gY3VzdG9tUmVxT3B0cz8udGltZW91dCB8fCB0aGlzLnRpbWVvdXRcblxuICAgIC8vIOahpeaOpeWklumDqCBzaWduYWwg5Yiw5YaF6YOoIEFib3J0Q29udHJvbGxlclxuICAgIGlmIChzaWduYWwpIHtcbiAgICAgIGlmIChzaWduYWwuYWJvcnRlZCkge1xuICAgICAgICBhYm9ydENvbnRyb2xsZXIuYWJvcnQoKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2lnbmFsLmFkZEV2ZW50TGlzdGVuZXIoJ2Fib3J0JywgKCkgPT4gYWJvcnRDb250cm9sbGVyLmFib3J0KCkpXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8g6LaF5pe26Ieq5Yqo5Lit5patXG4gICAgbGV0IHRpbWVyID0gdW5kZWZpbmVkXG4gICAgaWYgKGVuYWJsZUFib3J0IHx8IHRpbWVvdXQpIHtcbiAgICAgIHRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IHRpbWVvdXRNc2cgPSBg6K+35rGC5ZyoJHt0aW1lb3V0IC8gMTAwMH1z5YaF5pyq5a6M5oiQ77yM5bey5Lit5patYFxuICAgICAgICBjb25zb2xlLndhcm4odGltZW91dE1zZylcbiAgICAgICAgYWJvcnRDb250cm9sbGVyLmFib3J0KG5ldyBFcnJvcih0aW1lb3V0TXNnKSlcbiAgICAgIH0sIHRpbWVvdXQpXG4gICAgfVxuXG4gICAgY29uc3QgaGVhZGVycyA9IG9wdGlvbnMuaGVhZGVycyA/IGhlYWRlcnNJbml0MkluZGV4YWJsZShvcHRpb25zLmhlYWRlcnMpIDogdW5kZWZpbmVkXG5cbiAgICBjb25zdCBmZXRjaE9wdGlvbnMgPSBhd2FpdCB0aGlzLmdldFJlcU9wdGlvbnModXJsLCB7XG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgaGVhZGVycyxcbiAgICAgIGJvZHk6IG9wdGlvbnMuYm9keSBhcyBhbnkgYXMgTm9kZUpTLlJlYWRhYmxlU3RyZWFtLFxuICAgICAgc2lnbmFsOiBhYm9ydENvbnRyb2xsZXIuc2lnbmFsLFxuICAgIH0pXG5cbiAgICBjb25zdCByZXMgPSBhd2FpdCBmZXRjaCh1cmwsIGZldGNoT3B0aW9ucyBhcyBSZXF1ZXN0SW5pdClcbiAgICAgIC50aGVuKCh4KSA9PiB7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aW1lcilcbiAgICAgICAgcmV0dXJuIHhcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKHgpID0+IHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVyKVxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoeClcbiAgICAgIH0pXG5cbiAgICBjb25zdCByZXQgPSB7XG4gICAgICBkYXRhOlxuICAgICAgICArcmVzLnN0YXR1cyA9PT0gMjA0XG4gICAgICAgICAgPyAnJyAvLyAyMDQgTm8gQ29udGVudFxuICAgICAgICAgIDogc3RyZWFtXG4gICAgICAgICAgICA/IHJlcy5ib2R5XG4gICAgICAgICAgICA6IGF3YWl0IHJlcy5qc29uKCksXG4gICAgICBzdGF0dXNDb2RlOiByZXMuc3RhdHVzLFxuICAgICAgaGVhZGVyOiByZXMuaGVhZGVycyxcbiAgICB9XG4gICAgcmV0dXJuIHJldFxuICB9XG5cbiAgLyoqXG4gICAqIOmAmueUqOivt+axguaWueazle+8jOiiqyBnZXQvcG9zdC9wdXQvdXBsb2FkIOetieiwg+eUqFxuICAgKiDotJ/otKPmnoTlu7ogcGF5bG9hZOOAgeiuvue9rui2heaXtuOAgeino+aekOWTjeW6lFxuICAgKlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIOivt+axgumAiemhuVxuICAgKiBAcGFyYW0gZW5hYmxlQWJvcnQgLSDmmK/lkKblkK/nlKjotoXml7bkuK3mlq3vvIjnlLEgcmVzdHJpY3RlZE1ldGhvZHMg5Yaz5a6a77yJXG4gICAqL1xuICBwdWJsaWMgcmVxdWVzdCA9IGFzeW5jIChvcHRpb25zOiBJUmVxdWVzdE9wdGlvbnMsIGVuYWJsZUFib3J0ID0gZmFsc2UpOiBQcm9taXNlPFJlc3BvbnNlT2JqZWN0PiA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgdXJsLFxuICAgICAgaGVhZGVyczogX2hlYWRlcnMgPSB7fSxcbiAgICAgIGRhdGEsXG4gICAgICByZXNwb25zZVR5cGUsXG4gICAgICB3aXRoQ3JlZGVudGlhbHMsXG4gICAgICBib2R5LFxuICAgICAgbWV0aG9kOiBfbWV0aG9kLFxuICAgICAgY3VzdG9tUmVxT3B0cyxcbiAgICB9ID0gb3B0aW9uc1xuICAgIGNvbnN0IGhlYWRlcnMgPSBvYmoyU3RyUmVjb3JkKF9oZWFkZXJzKVxuICAgIGNvbnN0IG1ldGhvZCA9IFN0cmluZyhfbWV0aG9kKS50b0xvd2VyQ2FzZSgpIHx8ICdnZXQnXG4gICAgY29uc3QgYWJvcnRDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpXG4gICAgY29uc3QgeyBzaWduYWwgfSA9IGFib3J0Q29udHJvbGxlclxuICAgIGNvbnN0IHRpbWVvdXQgPSBjdXN0b21SZXFPcHRzPy50aW1lb3V0IHx8IHRoaXMudGltZW91dFxuXG4gICAgLy8g5p6E5bu66K+35rGCIHBheWxvYWTvvJpGb3JtRGF0YSA+IHVybGVuY29kZWQgPiByYXcgYm9keSA+IEpTT05cbiAgICBsZXQgcGF5bG9hZFxuICAgIGlmIChpc0Zvcm1EYXRhKGRhdGEpKSB7XG4gICAgICBwYXlsb2FkID0gZGF0YVxuICAgIH0gZWxzZSBpZiAoaGVhZGVyc1snY29udGVudC10eXBlJ10gPT09ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnKSB7XG4gICAgICBwYXlsb2FkID0gdG9RdWVyeVN0cmluZyhkYXRhID8/IHt9KVxuICAgIH0gZWxzZSBpZiAoYm9keSkge1xuICAgICAgcGF5bG9hZCA9IGJvZHlcbiAgICB9IGVsc2Uge1xuICAgICAgcGF5bG9hZCA9IGRhdGEgPyBKU09OLnN0cmluZ2lmeShkYXRhKSA6IHVuZGVmaW5lZFxuICAgIH1cblxuICAgIGNvbnN0IHJlYWxVcmwgPSB0aGlzLmdldFJlYWxVcmwoXG4gICAgICBmb3JtYXRVcmwoJ2h0dHBzJywgdXJsID8/ICcnLCBtZXRob2QgPT09ICdnZXQnID8gZGF0YSA6IHt9KSxcbiAgICAgIG9wdGlvbnMuaGVhZGVycyB8fCB7fSxcbiAgICAgIHBheWxvYWQsXG4gICAgKVxuXG4gICAgLy8g6LaF5pe26YCa6L+HIEFib3J0Q29udHJvbGxlciArIHNldFRpbWVvdXQg5a6e546wXG4gICAgbGV0IHRpbWVyXG5cbiAgICBpZiAoZW5hYmxlQWJvcnQgfHwgdGltZW91dCkge1xuICAgICAgdGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgY29uc3QgdGltZW91dE1zZyA9IGDor7fmsYLlnKgke3RpbWVvdXQgLyAxMDAwfXPlhoXmnKrlrozmiJDvvIzlt7LkuK3mlq1gXG4gICAgICAgIGNvbnNvbGUud2Fybih0aW1lb3V0TXNnKVxuICAgICAgICBhYm9ydENvbnRyb2xsZXIuYWJvcnQobmV3IEVycm9yKHRpbWVvdXRNc2cpKVxuICAgICAgfSwgdGltZW91dClcbiAgICB9XG5cbiAgICBjb25zdCByZXF1ZXN0T3B0aW9ucyA9IGF3YWl0IHRoaXMuZ2V0UmVxT3B0aW9ucyhyZWFsVXJsLCB7XG4gICAgICBtZXRob2QsXG4gICAgICBoZWFkZXJzLFxuICAgICAgYm9keTogcGF5bG9hZCxcbiAgICAgIGNyZWRlbnRpYWxzOiB3aXRoQ3JlZGVudGlhbHMgPyAnaW5jbHVkZScgOiAnc2FtZS1vcmlnaW4nLFxuICAgICAgc2lnbmFsLFxuICAgIH0pXG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChyZWFsVXJsLCByZXF1ZXN0T3B0aW9ucyBhcyBSZXF1ZXN0SW5pdClcbiAgICAgIGNvbnN0IHJlc3VsdDogUmVzcG9uc2VPYmplY3QgPSB7XG4gICAgICAgIGhlYWRlcjoge30sXG4gICAgICAgIHN0YXR1c0NvZGU6IHJlc3BvbnNlLnN0YXR1cyxcbiAgICAgIH1cblxuICAgICAgdHJ5IHtcbiAgICAgICAgcmVzdWx0LmRhdGEgPSByZXNwb25zZVR5cGUgPT09ICdibG9iJyA/IGF3YWl0IHJlc3BvbnNlLmJsb2IoKSA6IHNhZmVQYXJzZUpzb24oYXdhaXQgcmVzcG9uc2UudGV4dCgpKVxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAvLyDkuIrkvKAgUE9TVCDor7fmsYLlj6/og73ov5Tlm54gWE1MIOetiemdniBKU09OIOagvOW8j++8jOWuuemUmeWkhOeQhlxuICAgICAgICBjb25zb2xlLmxvZygnY2F0Y2ggYW4gZXJyb3InLCBlKVxuICAgICAgICByZXN1bHQuZGF0YSA9IHJlc3BvbnNlVHlwZSA9PT0gJ2Jsb2InID8gYXdhaXQgcmVzcG9uc2UuYmxvYigpIDogYXdhaXQgcmVzcG9uc2UudGV4dCgpXG4gICAgICB9XG5cbiAgICAgIC8vIOWwhuWTjeW6lOWktOe7n+S4gOi9rOS4uuWwj+WGmSBrZXlcbiAgICAgIGNvbnN0IHsgaGVhZGVycyB9ID0gcmVzcG9uc2VcbiAgICAgIGhlYWRlcnMuZm9yRWFjaCgodmFsLCBrZXkpID0+IChyZXN1bHQuaGVhZGVyW2tleS50b0xvd2VyQ2FzZSgpXSA9IHZhbCkpXG5cbiAgICAgIHJldHVybiByZXN1bHRcbiAgICB9IGZpbmFsbHkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRpbWVyKVxuICAgIH1cbiAgfVxufVxuIl19
|
|
445
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWJzL2FkYXB0ZXItbm9kZS9yZXF1ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0Esa0VBUXFDO0FBQ3JDLHlDQUEwRDtBQUMxRCxxQ0FBMkU7QUFFM0UsaUNBUWdCO0FBRWhCLGlEQUFzRDtBQUd0RCxJQUFJLE1BQU0sR0FBcUMsSUFBSSxDQUFBO0FBQ25ELFNBQWUsT0FBTzs7Ozs7O3lCQUNoQixDQUFDLE1BQU0sRUFBUCxjQUFPOzs7O29CQUdLLFdBQU0sTUFBTSxDQUFDLDZCQUE2QixDQUFDLEVBQUE7O29CQUFqRCxHQUFHLEdBQUcsU0FBMkM7b0JBQ3ZELE1BQU0sR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFBOzs7O29CQUVqQixPQUFPLENBQUMsS0FBSyxDQUFDLGlEQUFpRDswQkFDM0QsK0NBQStDOzBCQUMvQyxzQkFBc0IsQ0FBQyxDQUFBOzt3QkFHL0IsV0FBTyxNQUFPLEVBQUE7Ozs7Q0FDZjtBQU9EO0lBVUUscUJBQVksTUFBeUM7UUFBckQsaUJBS0M7UUF1RE0sa0JBQWEsR0FBRyxVQUNyQixHQUFXLEVBQ1gsT0FPQzs7Ozs7O3dCQUVLLE1BQU0sR0FBRyxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQTt3QkFFbkIsVUFBVSxHQUFLLElBQUEsNkJBQW1CLEdBQUUsV0FBMUIsQ0FBMEI7NkNBRTFCLENBQUEsTUFBQSxNQUFBLHFCQUFXLENBQUMsT0FBTywwQ0FBRSxlQUFlLDBDQUFFLE1BQU0sS0FBSSxVQUFVLElBQUksRUFBRTt3QkFBSSxXQUFNLElBQUEsd0JBQWdCLEdBQUUsRUFBQTs7d0JBQXhHLE1BQU0sR0FBRyxjQUF1RSxTQUF3QixFQUFFO3dCQUVoSCxPQUFPLENBQUMsT0FBTyx5QkFDVixPQUFPLENBQUMsT0FBTyxLQUNsQixZ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bm8tbmVzdGVkLXRlcm5hcnkgKi9cbmltcG9ydCB7XG4gIElGZXRjaE9wdGlvbnMsXG4gIElSZXF1ZXN0Q29uZmlnLFxuICBJUmVxdWVzdE1ldGhvZCxcbiAgSVJlcXVlc3RPcHRpb25zLFxuICBSZXNwb25zZU9iamVjdCxcbiAgU0RLUmVxdWVzdEludGVyZmFjZSxcbiAgZm9ybWF0VXJsLFxufSBmcm9tICdAY2xvdWRiYXNlL2FkYXB0ZXItaW50ZXJmYWNlJ1xuaW1wb3J0IHsgQURNSU5fUEFUSCwgQ0xJRU5UX0FVVEhfUEFUSCB9IGZyb20gJy4vY29uc3RhbnRzJ1xuaW1wb3J0IHsgZ2V0Q2xvdWRiYXNlQ29udGV4dCwgZ2V0U2VjcmV0SW5mbywgSU5JVF9DT05GSUcgfSBmcm9tICcuL2NvbnRleHQnXG5pbXBvcnQgdHlwZSB7IElDdXN0b21SZXFPcHRzIH0gZnJvbSAnLi90eXBlcydcbmltcG9ydCB7XG4gIGdldEVudixcbiAgaXNGb3JtRGF0YSxcbiAgdG9RdWVyeVN0cmluZyxcbiAgc2FmZVBhcnNlSnNvbixcbiAgb2JqMlN0clJlY29yZCxcbiAgaGVhZGVyc0luaXQySW5kZXhhYmxlLFxuICBnZXRDdXJyUnVuRW52VGFnLFxufSBmcm9tICcuL3V0aWxzJ1xuaW1wb3J0IHsgSUNsb3VkYmFzZUNvbmZpZyB9IGZyb20gJ0BjbG91ZGJhc2UvdHlwZXMnXG5pbXBvcnQgeyBnZXRTZGtWZXJzaW9uIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL2NvbW1vbidcbi8vIOW7tui/n+WKoOi9ve+8jOmBv+WFjemdniBOb2RlIOeOr+Wig+aJk+WMheaXtuW8leWFpeatpOWMhVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbmxldCBzaWduRm46ICgoLi4uYXJnczogYW55W10pID0+IGFueSkgfCBudWxsID0gbnVsbFxuYXN5bmMgZnVuY3Rpb24gZ2V0U2lnbigpIHtcbiAgaWYgKCFzaWduRm4pIHtcbiAgICB0cnkge1xuICAgICAgLy8gQHRzLWlnbm9yZSDigJQg6K+l5YyF5LuF5ZyoIE5vZGUg6L+Q6KGM5pe25a2Y5Zyo77yM5byA5Y+R546v5aKD5Y+v6IO95pyq5a6J6KOFXG4gICAgICBjb25zdCBtb2QgPSBhd2FpdCBpbXBvcnQoJ0BjbG91ZGJhc2Uvc2lnbmF0dXJlLW5vZGVqcycpXG4gICAgICBzaWduRm4gPSBtb2Quc2lnblxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ+e8uuWwkeS+nei1liBAY2xvdWRiYXNlL3NpZ25hdHVyZS1ub2RlanPvvIzor7fmiafooYzku6XkuIvlkb3ku6Tlronoo4XvvJpcXG5cXG4nXG4gICAgICAgICsgJyAgbnBtIGluc3RhbGwgQGNsb3VkYmFzZS9zaWduYXR1cmUtbm9kZWpzXFxuXFxuJ1xuICAgICAgICArICfor6Xkvp3otZbnlKjkuo4gTm9kZSDnjq/looPkuIvnmoTor7fmsYLnrb7lkI3jgIInKVxuICAgIH1cbiAgfVxuICByZXR1cm4gc2lnbkZuIVxufVxuXG4vKipcbiAqIE5vZGUuanMg546v5aKD5LiL55qEIEhUVFAg6K+35rGC5a6e546wXG4gKiDln7rkuo7ljp/nlJ8gZmV0Y2jvvIzmlK/mjIEgR0VUL1BPU1QvUFVUL+S4iuS8oC/kuIvovb0v5rWB5byP6K+35rGCXG4gKiDoh6rliqjlpITnkIYgVjMg562+5ZCN5ZKMIEJlYXJlciBUb2tlbiDorqTor4FcbiAqL1xuZXhwb3J0IGNsYXNzIE5vZGVSZXF1ZXN0IGltcGxlbWVudHMgU0RLUmVxdWVzdEludGVyZmFjZSB7XG4gIC8qKiDor7fmsYLphY3nva7vvIzljIXlkKvorqTor4Hkv6Hmga8gKi9cbiAgY29uZmlnOiBJUmVxdWVzdENvbmZpZyAmIElDbG91ZGJhc2VDb25maWdcblxuICAvKiog6K+35rGC6LaF5pe25pe26Ze077yI5q+r56eS77yJ77yM6buY6K6kIDE1MDAwICovXG4gIHByaXZhdGUgcmVhZG9ubHkgdGltZW91dDogbnVtYmVyXG5cbiAgLyoqIOWPl+i2heaXtuaOp+WItueahOivt+axguexu+Wei+WIl+ihqCAqL1xuICBwcml2YXRlIHJlYWRvbmx5IHJlc3RyaWN0ZWRNZXRob2RzOiBBcnJheTxJUmVxdWVzdE1ldGhvZD5cblxuICBjb25zdHJ1Y3Rvcihjb25maWc6IElSZXF1ZXN0Q29uZmlnICYgSUNsb3VkYmFzZUNvbmZpZykge1xuICAgIGNvbnN0IHsgdGltZW91dCwgcmVzdHJpY3RlZE1ldGhvZHMgfSA9IGNvbmZpZ1xuICAgIHRoaXMudGltZW91dCA9IHRpbWVvdXQgfHwgMTUwMDBcbiAgICB0aGlzLnJlc3RyaWN0ZWRNZXRob2RzID0gcmVzdHJpY3RlZE1ldGhvZHMgfHwgWydnZXQnLCAncG9zdCcsICd1cGxvYWQnLCAnZG93bmxvYWQnXVxuICAgIHRoaXMuY29uZmlnID0gY29uZmlnXG4gIH1cblxuICAvKipcbiAgICog6I635Y+W5a6i5oi356uv5Yet6K+BIGFjY2Vzc190b2tlbu+8jOS4uueuoeeQhuWRmOadg+mZkFxuICAgKiDnlKjkuo7kuI3mlK/mjIEgVjMg562+5ZCN55qE5o6l5Y+j77yI5aaC5pWw5o2u5qih5Z6L44CB5YWz57O75Z6L5pWw5o2u5bqT44CBQUnvvIlcbiAgICovXG4gIGFzeW5jIGdldENsaWVudENyZWRlbnRpYWwob3B0czogeyBvcmlnaW46IHN0cmluZyB9KTogUHJvbWlzZTxhbnk+IHtcbiAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLmZldGNoKHtcbiAgICAgIHVybDogYCR7b3B0cy5vcmlnaW59JHtDTElFTlRfQVVUSF9QQVRIfWAsXG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgJ2NvbnRlbnQtdHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgIH0sXG4gICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgIGdyYW50X3R5cGU6ICdjbGllbnRfY3JlZGVudGlhbHMnLFxuICAgICAgfSksXG4gICAgfSlcblxuICAgIHJldHVybiByZXMuZGF0YT8uYWNjZXNzX3Rva2VuXG4gIH1cblxuICAvKipcbiAgICog6I635Y+W5a6e6ZmF6K+35rGCIFVSTFxuICAgKiDlvZPor7fmsYLmnKrmkLrluKYgQXV0aG9yaXphdGlvbiDkuJTmnKroh6rluKYgYWNjZXNzX3Rva2VuIOaXtu+8jFxuICAgKiDlsIYgL3dlYiDot6/lvoTmm7/mjaLkuLogL2FkbWlu77yI566h55CG56uv562+5ZCN6Lev5b6E77yJXG4gICAqL1xuICBnZXRSZWFsVXJsKHVybDogc3RyaW5nLCBoZWFkZXJzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LCBib2R5OiBhbnkpIHtcbiAgICBpZiAoaGVhZGVycy5BdXRob3JpemF0aW9uPy5yZXBsYWNlKCdCZWFyZXInLCAnJyk/LnRyaW0oKSkge1xuICAgICAgcmV0dXJuIHVybFxuICAgIH1cblxuICAgIGNvbnN0IHBhcmFtcyA9IHR5cGVvZiBib2R5ID09PSAnb2JqZWN0JyA/IGJvZHkgOiBzYWZlUGFyc2VKc29uKGJvZHkpIHx8ICcnXG5cbiAgICBpZiAocGFyYW1zLmFjY2Vzc190b2tlbikge1xuICAgICAgcmV0dXJuIHVybFxuICAgIH1cblxuICAgIGNvbnN0IHVybE9iaiA9IG5ldyBVUkwodXJsKVxuXG4gICAgaWYgKHVybE9iai5wYXRobmFtZSA9PT0gJy93ZWInICYmIHRoaXMuY29uZmlnLmF1dGg/LnNlY3JldElkICYmIHRoaXMuY29uZmlnLmF1dGg/LnNlY3JldEtleSkge1xuICAgICAgdXJsT2JqLnBhdGhuYW1lID0gQURNSU5fUEFUSFxuICAgIH1cbiAgICByZXR1cm4gdXJsT2JqLnRvU3RyaW5nKClcbiAgfVxuXG4gIC8qKlxuICAgKiDkuLror7fmsYLmt7vliqDnrb7lkI3miJborqTor4Hkv6Hmga9cbiAgICpcbiAgICog5aSE55CG6YC76L6R5LyY5YWI57qn77yaXG4gICAqIDEuIOW3suaciSBBdXRob3JpemF0aW9uIGhlYWRlciDihpIg55u05o6l6L+U5ZueXG4gICAqIDIuIC9hdXRoLyDot6/lvoQg4oaSIFNESyDorqTor4HmjqXlj6PvvIzml6DpnIDnrb7lkI1cbiAgICogMy4g5LiN5pSv5oyBIFYzIOetvuWQjeeahOi3r+W+hO+8iC92MS9tb2RlbC8g562J77yJ4oaSIOeUqCBjbGllbnRDcmVkZW50aWFsIEJlYXJlciBUb2tlblxuICAgKiA0LiDlj4LmlbDlkKsgYWNjZXNzX3Rva2VuIOKGkiDml6DpnIDnrb7lkI1cbiAgICogNS4g5YW25LuWIOKGkiDkvb/nlKggVjMg562+5ZCN77yIVEMzLUhNQUMtU0hBMjU277yJXG4gICAqL1xuICBwdWJsaWMgZ2V0UmVxT3B0aW9ucyA9IGFzeW5jIChcbiAgICB1cmw6IHN0cmluZyxcbiAgICBvcHRpb25zOiB7XG4gICAgICBtZXRob2Q/OiBhbnlcbiAgICAgIGhlYWRlcnM6IGFueVxuICAgICAgYm9keT86IGFueVxuICAgICAgY3JlZGVudGlhbHM/OiBzdHJpbmdcbiAgICAgIHNpZ25hbD86IEFib3J0U2lnbmFsXG4gICAgICB1cmw/OiBhbnlcbiAgICB9LFxuICApID0+IHtcbiAgICBjb25zdCB1cmxPYmogPSBuZXcgVVJMKHVybClcblxuICAgIGNvbnN0IHsgVENCX1NPVVJDRSB9ID0gZ2V0Q2xvdWRiYXNlQ29udGV4dCgpXG4gICAgLy8gTm90ZTog5LqR5Ye95pWw6KKr6LCD55So5pe25Y+v6IO96LCD55So56uv5pyq5Lyg6YCSIFNPVVJDRe+8jFRDQl9TT1VSQ0Ug5Y+v6IO95Li656m6XG4gICAgY29uc3QgU09VUkNFID0gYCR7SU5JVF9DT05GSUcuY29udGV4dD8uZXh0ZW5kZWRDb250ZXh0Py5zb3VyY2UgfHwgVENCX1NPVVJDRSB8fCAnJ30sJHthd2FpdCBnZXRDdXJyUnVuRW52VGFnKCl9YFxuXG4gICAgb3B0aW9ucy5oZWFkZXJzID0ge1xuICAgICAgLi4ub3B0aW9ucy5oZWFkZXJzLFxuICAgICAgJ1VzZXItQWdlbnQnOiBgYWRhcHRlci1ub2RlLyR7b3B0aW9ucy5oZWFkZXJzPy5bJ1gtU0RLLVZlcnNpb24nXSB8fCBgQGNsb3VkYmFzZS9qcy1zZGsvJHtnZXRTZGtWZXJzaW9uKCl9YH1gLFxuICAgICAgJ1gtVENCLVNvdXJjZSc6IFNPVVJDRSxcbiAgICAgICdYLUNsaWVudC1UaW1lc3RhbXAnOiBuZXcgRGF0ZSgpLnZhbHVlT2YoKSxcbiAgICAgICdYLVRDQi1SZWdpb24nOiBJTklUX0NPTkZJRy5yZWdpb24gfHwgZ2V0RW52KCdURU5DRU5UQ0xPVURfUkVHSU9OJykgfHwgJycsXG4gICAgICBIb3N0OiB1cmxPYmouaG9zdCxcbiAgICB9XG5cbiAgICAvLyDlt7LmkLrluKbmnInmlYggQXV0aG9yaXphdGlvbu+8jOebtOaOpei/lOWbnlxuICAgIGlmIChvcHRpb25zLmhlYWRlcnMuQXV0aG9yaXphdGlvbj8ucmVwbGFjZSgnQmVhcmVyJywgJycpPy50cmltKCkpIHtcbiAgICAgIHJldHVybiBvcHRpb25zXG4gICAgfVxuXG4gICAgLy8gYXV0aCDnm7jlhbPmjqXlj6PkuI3pnIDopoHnrb7lkI1cbiAgICBpZiAodXJsT2JqLnBhdGhuYW1lLnN0YXJ0c1dpdGgoJy9hdXRoLycpICYmIHVybE9iai5wYXRobmFtZSAhPT0gQ0xJRU5UX0FVVEhfUEFUSCkge1xuICAgICAgcmV0dXJuIG9wdGlvbnNcbiAgICB9XG5cbiAgICBjb25zdCBpc0FkbWluUGF0aCA9IHVybE9iai5wYXRobmFtZSA9PT0gQURNSU5fUEFUSFxuXG4gICAgLy8g6L+Z5Lqb6Lev5b6E5LiN5pSv5oyBIFYzIOetvuWQje+8jOaUueeUqCBjbGllbnRDcmVkZW50aWFsIOiOt+WPliBCZWFyZXIgVG9rZW5cbiAgICBjb25zdCBVTlNVUFBPUlRFRF9WM19TSUdOX1BBVEggPSBbJy92MS9tb2RlbC8nLCAnL3YxL3JkYi8nLCAnL3YxL2FpLyddXG5cbiAgICBpZiAoVU5TVVBQT1JURURfVjNfU0lHTl9QQVRILnNvbWUodiA9PiB1cmxPYmoucGF0aG5hbWUuc3RhcnRzV2l0aCh2KSkpIHtcbiAgICAgIGNvbnN0IHRva2VuID0gYXdhaXQgdGhpcy5nZXRDbGllbnRDcmVkZW50aWFsKHsgb3JpZ2luOiB1cmxPYmoub3JpZ2luIH0pXG4gICAgICBvcHRpb25zLmhlYWRlcnMuQXV0aG9yaXphdGlvbiA9IGBCZWFyZXIgJHt0b2tlbn1gXG4gICAgICByZXR1cm4gb3B0aW9uc1xuICAgIH1cblxuICAgIGxldCB7IHNlY3JldElkLCBzZWNyZXRLZXksIHNlc3Npb25Ub2tlbiB9ID0gdGhpcy5jb25maWc/LmF1dGggfHwge31cbiAgICBjb25zdCB7IHNlY3JldFR5cGUgfSA9IHRoaXMuY29uZmlnPy5hdXRoIHx8IHt9XG4gICAgY29uc3QgeyBtZXRob2QsIGJvZHkgfSA9IG9wdGlvbnNcbiAgICBjb25zdCBoZWFkZXJzID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShvcHRpb25zLmhlYWRlcnMpKVxuICAgIGxldCBwYXJhbXMgPSB0eXBlb2YgYm9keSA9PT0gJ29iamVjdCcgPyBib2R5IDogc2FmZVBhcnNlSnNvbihib2R5KSB8fCB7fVxuXG4gICAgcGFyYW1zLmVudk5hbWUgPSBwYXJhbXM/LmVudiB8fCB0aGlzLmNvbmZpZy5lbnYgfHwgZ2V0U2VjcmV0SW5mbygpPy5lbnYgfHwgJydcblxuICAgIC8vIOWPguaVsOiHquW4piBhY2Nlc3NfdG9rZW7vvIzml6DpnIDnrb7lkI1cbiAgICBpZiAocGFyYW1zLmFjY2Vzc190b2tlbikge1xuICAgICAgcmV0dXJuIG9wdGlvbnNcbiAgICB9XG5cbiAgICAvLyBHRVQg6K+35rGC5Y+C5pWw5bey5ZyoIFVSTCDkuK3vvIznrb7lkI3ml7YgcGFyYW1zIOe9ruepulxuICAgIGlmIChtZXRob2QudG9Mb3dlckNhc2UoKSA9PT0gJ2dldCcpIHtcbiAgICAgIHBhcmFtcyA9IHVuZGVmaW5lZFxuICAgIH1cblxuICAgIC8vIFNFU1NJT05fU0VDUkVUIOexu+Wei+aIluaXoOWvhumSpeaXtu+8jOS7jueOr+Wig+WPmOmHj+iOt+WPluS4tOaXtuWvhumSpVxuICAgIGlmICghc2VjcmV0SWQgfHwgIXNlY3JldEtleSB8fCBzZWNyZXRUeXBlID09PSAnU0VTU0lPTl9TRUNSRVQnKSB7XG4gICAgICBjb25zdCBzZWNyZXRJbmZvID0gZ2V0U2VjcmV0SW5mbygpXG4gICAgICBzZWNyZXRJZCA9IHNlY3JldEluZm8uc2VjcmV0SWRcbiAgICAgIHNlY3JldEtleSA9IHNlY3JldEluZm8uc2VjcmV0S2V5XG4gICAgICBzZXNzaW9uVG9rZW4gPSBzZWNyZXRJbmZvLnNlc3Npb25Ub2tlblxuICAgIH1cblxuICAgIC8vIOS7jeaXoOWvhumSpeWImei3s+i/h+etvuWQjVxuICAgIGlmICghc2VjcmV0SWQgfHwgIXNlY3JldEtleSkge1xuICAgICAgcmV0dXJuIG9wdGlvbnNcbiAgICB9XG5cbiAgICBkZWxldGUgaGVhZGVycy5BdXRob3JpemF0aW9uXG5cbiAgICAvLyBjb250ZW50LXR5cGUg6ZyA5LiO5pyN5Yqh56uv562+5ZCN6aqM6K+B5L+d5oyB5aSn5bCP5YaZ5LiA6Ie0XG4gICAgaWYgKGhlYWRlcnNbJ2NvbnRlbnQtdHlwZSddKSB7XG4gICAgICBoZWFkZXJzWydjb250ZW50LXR5cGUnXSA9IGhlYWRlcnNbJ2NvbnRlbnQtdHlwZSddLnRvTG93ZXJDYXNlKClcbiAgICB9IGVsc2UgaWYgKGhlYWRlcnNbJ0NvbnRlbnQtVHlwZSddKSB7XG4gICAgICBoZWFkZXJzWydDb250ZW50LVR5cGUnXSA9IGhlYWRlcnNbJ0NvbnRlbnQtVHlwZSddLnRvTG93ZXJDYXNlKClcbiAgICB9XG5cbiAgICBpZiAoaXNBZG1pblBhdGggJiYgISFzZXNzaW9uVG9rZW4pIHtcbiAgICAgIHBhcmFtcy5zZXNzaW9uVG9rZW4gPSBzZXNzaW9uVG9rZW5cbiAgICB9XG5cbiAgICBjb25zdCBzaWduZWRQYXJhbXMgPSB7XG4gICAgICBzZWNyZXRJZCxcbiAgICAgIHNlY3JldEtleSxcbiAgICAgIG1ldGhvZCxcbiAgICAgIHVybCxcbiAgICAgIHBhcmFtcyxcbiAgICAgIGhlYWRlcnMsXG4gICAgICB3aXRoU2lnbmVkUGFyYW1zOiBpc0FkbWluUGF0aCxcbiAgICAgIHRpbWVzdGFtcDogTWF0aC5mbG9vcihuZXcgRGF0ZSgpLmdldFRpbWUoKSAvIDEwMDApIC0gMSxcbiAgICAgIGlzQ2xvdWRBcGk6ICFpc0FkbWluUGF0aCxcbiAgICB9XG5cbiAgICBpZiAoIWhlYWRlcnNbJ2NvbnRlbnQtdHlwZSddICYmICFoZWFkZXJzWydDb250ZW50LVR5cGUnXSkge1xuICAgICAgcmV0dXJuIG9wdGlvbnNcbiAgICB9XG5cbiAgICBjb25zdCBzaWduID0gYXdhaXQgZ2V0U2lnbigpXG4gICAgaWYgKCFzaWduKSByZXR1cm4gb3B0aW9uc1xuXG4gICAgY29uc3QgeyBhdXRob3JpemF0aW9uLCB0aW1lc3RhbXAgfSA9IHNpZ24oc2lnbmVkUGFyYW1zKVxuXG4gICAgaWYgKHR5cGVvZiBzZXNzaW9uVG9rZW4gPT09ICdzdHJpbmcnICYmIHNlc3Npb25Ub2tlbiAhPT0gJycpIHtcbiAgICAgIGlmIChpc0FkbWluUGF0aCkge1xuICAgICAgICBoZWFkZXJzLkF1dGhvcml6YXRpb24gPSBgJHthdXRob3JpemF0aW9ufWBcbiAgICAgICAgaGVhZGVyc1snWC1UaW1lc3RhbXAnXSA9IHRpbWVzdGFtcFxuICAgICAgICBoZWFkZXJzWydYLVNpZ25hdHVyZS1FeHBpcmVzJ10gPSA2MDBcbiAgICAgIH0gZWxzZSAge1xuICAgICAgICAvLyDkuLTml7blr4bpkqXpnIDopoHpop3lpJbpmYTluKYgVG9rZW5cbiAgICAgICAgaGVhZGVycy5BdXRob3JpemF0aW9uID0gYCR7YXV0aG9yaXphdGlvbn0sIFRpbWVzdGFtcD0ke3RpbWVzdGFtcH0sIFRva2VuPSR7c2Vzc2lvblRva2VufWBcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaGVhZGVycy5BdXRob3JpemF0aW9uID0gYCR7YXV0aG9yaXphdGlvbn0sIFRpbWVzdGFtcD0ke3RpbWVzdGFtcH1gXG5cbiAgICAgIC8vIGFkbWluIOi3r+W+hOmcgOimgemineWklueahOaXtumXtOaIs+WSjOi/h+acn+WktFxuICAgICAgaWYgKGlzQWRtaW5QYXRoKSB7XG4gICAgICAgIGhlYWRlcnNbJ1gtVGltZXN0YW1wJ10gPSB0aW1lc3RhbXBcbiAgICAgICAgaGVhZGVyc1snWC1TaWduYXR1cmUtRXhwaXJlcyddID0gNjAwXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBoZWFkZXJzLFxuICAgICAgYm9keTogdHlwZW9mIHBhcmFtcyA9PT0gJ29iamVjdCcgPyBKU09OLnN0cmluZ2lmeShwYXJhbXMpIDogcGFyYW1zLFxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgPSAob3B0aW9uczogSVJlcXVlc3RPcHRpb25zKTogUHJvbWlzZTxSZXNwb25zZU9iamVjdD4gPT4gdGhpcy5yZXF1ZXN0KFxuICAgIHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBtZXRob2Q6ICdnZXQnLFxuICAgIH0sXG4gICAgdGhpcy5yZXN0cmljdGVkTWV0aG9kcy5pbmNsdWRlcygnZ2V0JyksXG4gIClcblxuICBwdWJsaWMgcG9zdCA9IChvcHRpb25zOiBJUmVxdWVzdE9wdGlvbnMpOiBQcm9taXNlPFJlc3BvbnNlT2JqZWN0PiA9PiB0aGlzLnJlcXVlc3QoXG4gICAge1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIG1ldGhvZDogJ3Bvc3QnLFxuICAgIH0sXG4gICAgdGhpcy5yZXN0cmljdGVkTWV0aG9kcy5pbmNsdWRlcygncG9zdCcpLFxuICApXG5cbiAgcHVibGljIHB1dCA9IChvcHRpb25zOiBJUmVxdWVzdE9wdGlvbnMpOiBQcm9taXNlPFJlc3BvbnNlT2JqZWN0PiA9PiB0aGlzLnJlcXVlc3Qoe1xuICAgIC4uLm9wdGlvbnMsXG4gICAgbWV0aG9kOiAncHV0JyxcbiAgfSlcblxuICAvKipcbiAgICog5paH5Lu25LiK5LygXG4gICAqIFBPU1Qg5pa55byP77ya5p6E5bu6IEZvcm1EYXRhIOS4iuS8oFxuICAgKiBQVVQg5pa55byP77ya55u05o6l5bCG5paH5Lu25L2c5Li6IGJvZHkg5LiK5LygXG4gICAqL1xuICBwdWJsaWMgdXBsb2FkID0gKG9wdGlvbnM6IElSZXF1ZXN0T3B0aW9ucyk6IFByb21pc2U8UmVzcG9uc2VPYmplY3Q+ID0+IHtcbiAgICBjb25zdCB7IGRhdGE6IF9kYXRhLCBmaWxlLCBuYW1lLCBtZXRob2QsIGhlYWRlcnMgPSB7fSB9ID0gb3B0aW9uc1xuICAgIGlmIChmaWxlID09PSB1bmRlZmluZWQgfHwgbmFtZSA9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignZmlsZSBhbmQgbmFtZSBpcyByZXF1aXJlZCcpXG4gICAgfVxuICAgIGNvbnN0IGRhdGEgPSBvYmoyU3RyUmVjb3JkKF9kYXRhID8/IHt9KVxuICAgIGNvbnN0IGxvd2VyZWRNZXRob2QgPSBtZXRob2Q/LnRvTG93ZXJDYXNlKClcbiAgICBjb25zdCByZXFNZXRob2QgPSBbJ3Bvc3QnLCAncHV0J10uZmluZChtID0+IG0gPT09IGxvd2VyZWRNZXRob2QpID8/ICdwdXQnXG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKVxuICAgIGlmIChyZXFNZXRob2QgPT09ICdwb3N0Jykge1xuICAgICAgT2JqZWN0LmtleXMoZGF0YSkuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgIGZvcm1EYXRhLmFwcGVuZChrZXksIGRhdGFba2V5XSlcbiAgICAgIH0pXG4gICAgICBmb3JtRGF0YS5hcHBlbmQoJ2tleScsIG5hbWUpXG4gICAgICBmb3JtRGF0YS5hcHBlbmQoJ2ZpbGUnLCBmaWxlKVxuICAgICAgcmV0dXJuIHRoaXMucmVxdWVzdChcbiAgICAgICAge1xuICAgICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgICAgZGF0YTogZm9ybURhdGEsXG4gICAgICAgICAgbWV0aG9kOiByZXFNZXRob2QsXG4gICAgICAgIH0sXG4gICAgICAgIHRoaXMucmVzdHJpY3RlZE1ldGhvZHMuaW5jbHVkZXMoJ3VwbG9hZCcpLFxuICAgICAgKVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QoXG4gICAgICB7XG4gICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgIG1ldGhvZDogJ3B1dCcsXG4gICAgICAgIGhlYWRlcnMsXG4gICAgICAgIGJvZHk6IGZpbGUsXG4gICAgICB9LFxuICAgICAgdGhpcy5yZXN0cmljdGVkTWV0aG9kcy5pbmNsdWRlcygndXBsb2FkJyksXG4gICAgKVxuICB9XG5cbiAgLyoqIOaWh+S7tuS4i+i9ve+8iOa1j+iniOWZqOeOr+Wig++8jOmAmui/h+WIm+W7uiA8YT4g5qCH562+6Kem5Y+R5LiL6L2977yJICovXG4gIHB1YmxpYyBkb3dubG9hZCA9IGFzeW5jIChvcHRpb25zOiBJUmVxdWVzdE9wdGlvbnMpOiBQcm9taXNlPHVua25vd24+ID0+IHtcbiAgICBjb25zdCB7IGRhdGEgfSA9IGF3YWl0IHRoaXMuZ2V0KHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBoZWFkZXJzOiB7fSxcbiAgICAgIHJlc3BvbnNlVHlwZTogJ2Jsb2InLFxuICAgIH0pXG4gICAgY29uc3QgdXJsID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwobmV3IEJsb2IoW2RhdGFdKSlcbiAgICBjb25zdCBmaWxlTmFtZSA9IGRlY29kZVVSSUNvbXBvbmVudChuZXcgVVJMKG9wdGlvbnM/LnVybCA/PyAnJykucGF0aG5hbWUuc3BsaXQoJy8nKS5wb3AoKSB8fCAnJylcbiAgICBjb25zdCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpXG5cbiAgICBsaW5rLmhyZWYgPSB1cmxcbiAgICBsaW5rLnNldEF0dHJpYnV0ZSgnZG93bmxvYWQnLCBmaWxlTmFtZSlcbiAgICBsaW5rLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSdcblxuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobGluaylcbiAgICBsaW5rLmNsaWNrKClcbiAgICB3aW5kb3cuVVJMLnJldm9rZU9iamVjdFVSTCh1cmwpXG4gICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChsaW5rKVxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgICAgcmVzb2x2ZSh7XG4gICAgICAgIHN0YXR1c0NvZGU6IDIwMCxcbiAgICAgICAgdGVtcEZpbGVQYXRoOiBvcHRpb25zLnVybCxcbiAgICAgIH0pXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiDlupXlsYIgZmV0Y2gg6K+35rGC77yM5pSv5oyB5rWB5byP5ZON5bqUXG4gICAqIOi2heaXtumAmui/hyBBYm9ydENvbnRyb2xsZXIgKyBzZXRUaW1lb3V0IOWunueOsFxuICAgKi9cbiAgcHVibGljIGZldGNoID0gYXN5bmMgKG9wdGlvbnM6IE9taXQ8SUZldGNoT3B0aW9ucywgJ3NpZ25hbCc+ICYgeyBzaWduYWw/OiBBYm9ydFNpZ25hbDsgY3VzdG9tUmVxT3B0cz86IElDdXN0b21SZXFPcHRzIH0pOiBQcm9taXNlPFJlc3BvbnNlT2JqZWN0PiA9PiB7XG4gICAgY29uc3QgeyBlbmFibGVBYm9ydCA9IGZhbHNlLCBzdHJlYW0gPSBmYWxzZSwgc2lnbmFsLCBjdXN0b21SZXFPcHRzIH0gPSBvcHRpb25zXG4gICAgY29uc3QgdXJsID0gdGhpcy5nZXRSZWFsVXJsKG9wdGlvbnMudXJsLCBvcHRpb25zLmhlYWRlcnMgfHwge30sIG9wdGlvbnMuYm9keSlcbiAgICBjb25zdCBhYm9ydENvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKClcbiAgICBjb25zdCB0aW1lb3V0ID0gY3VzdG9tUmVxT3B0cz8udGltZW91dCB8fCB0aGlzLnRpbWVvdXRcblxuICAgIC8vIOahpeaOpeWklumDqCBzaWduYWwg5Yiw5YaF6YOoIEFib3J0Q29udHJvbGxlclxuICAgIGlmIChzaWduYWwpIHtcbiAgICAgIGlmIChzaWduYWwuYWJvcnRlZCkge1xuICAgICAgICBhYm9ydENvbnRyb2xsZXIuYWJvcnQoKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2lnbmFsLmFkZEV2ZW50TGlzdGVuZXIoJ2Fib3J0JywgKCkgPT4gYWJvcnRDb250cm9sbGVyLmFib3J0KCkpXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8g6LaF5pe26Ieq5Yqo5Lit5patXG4gICAgbGV0IHRpbWVyID0gdW5kZWZpbmVkXG4gICAgaWYgKGVuYWJsZUFib3J0IHx8IHRpbWVvdXQpIHtcbiAgICAgIHRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IHRpbWVvdXRNc2cgPSBg6K+35rGC5ZyoJHt0aW1lb3V0IC8gMTAwMH1z5YaF5pyq5a6M5oiQ77yM5bey5Lit5patYFxuICAgICAgICBjb25zb2xlLndhcm4odGltZW91dE1zZylcbiAgICAgICAgYWJvcnRDb250cm9sbGVyLmFib3J0KG5ldyBFcnJvcih0aW1lb3V0TXNnKSlcbiAgICAgIH0sIHRpbWVvdXQpXG4gICAgfVxuXG4gICAgY29uc3QgaGVhZGVycyA9IG9wdGlvbnMuaGVhZGVycyA/IGhlYWRlcnNJbml0MkluZGV4YWJsZShvcHRpb25zLmhlYWRlcnMpIDogdW5kZWZpbmVkXG5cbiAgICBjb25zdCBmZXRjaE9wdGlvbnMgPSBhd2FpdCB0aGlzLmdldFJlcU9wdGlvbnModXJsLCB7XG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgaGVhZGVycyxcbiAgICAgIGJvZHk6IG9wdGlvbnMuYm9keSBhcyBhbnkgYXMgTm9kZUpTLlJlYWRhYmxlU3RyZWFtLFxuICAgICAgc2lnbmFsOiBhYm9ydENvbnRyb2xsZXIuc2lnbmFsLFxuICAgIH0pXG5cbiAgICBjb25zdCByZXMgPSBhd2FpdCBmZXRjaCh1cmwsIGZldGNoT3B0aW9ucyBhcyBSZXF1ZXN0SW5pdClcbiAgICAgIC50aGVuKCh4KSA9PiB7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aW1lcilcbiAgICAgICAgcmV0dXJuIHhcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKHgpID0+IHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVyKVxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoeClcbiAgICAgIH0pXG5cbiAgICBjb25zdCByZXQgPSB7XG4gICAgICBkYXRhOlxuICAgICAgICArcmVzLnN0YXR1cyA9PT0gMjA0XG4gICAgICAgICAgPyAnJyAvLyAyMDQgTm8gQ29udGVudFxuICAgICAgICAgIDogc3RyZWFtXG4gICAgICAgICAgICA/IHJlcy5ib2R5XG4gICAgICAgICAgICA6IGF3YWl0IHJlcy5qc29uKCksXG4gICAgICBzdGF0dXNDb2RlOiByZXMuc3RhdHVzLFxuICAgICAgaGVhZGVyOiByZXMuaGVhZGVycyxcbiAgICB9XG4gICAgcmV0dXJuIHJldFxuICB9XG5cbiAgLyoqXG4gICAqIOmAmueUqOivt+axguaWueazle+8jOiiqyBnZXQvcG9zdC9wdXQvdXBsb2FkIOetieiwg+eUqFxuICAgKiDotJ/otKPmnoTlu7ogcGF5bG9hZOOAgeiuvue9rui2heaXtuOAgeino+aekOWTjeW6lFxuICAgKlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIOivt+axgumAiemhuVxuICAgKiBAcGFyYW0gZW5hYmxlQWJvcnQgLSDmmK/lkKblkK/nlKjotoXml7bkuK3mlq3vvIjnlLEgcmVzdHJpY3RlZE1ldGhvZHMg5Yaz5a6a77yJXG4gICAqL1xuICBwdWJsaWMgcmVxdWVzdCA9IGFzeW5jIChvcHRpb25zOiBJUmVxdWVzdE9wdGlvbnMsIGVuYWJsZUFib3J0ID0gZmFsc2UpOiBQcm9taXNlPFJlc3BvbnNlT2JqZWN0PiA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgdXJsLFxuICAgICAgaGVhZGVyczogX2hlYWRlcnMgPSB7fSxcbiAgICAgIGRhdGEsXG4gICAgICByZXNwb25zZVR5cGUsXG4gICAgICB3aXRoQ3JlZGVudGlhbHMsXG4gICAgICBib2R5LFxuICAgICAgbWV0aG9kOiBfbWV0aG9kLFxuICAgICAgY3VzdG9tUmVxT3B0cyxcbiAgICB9ID0gb3B0aW9uc1xuICAgIGNvbnN0IGhlYWRlcnMgPSBvYmoyU3RyUmVjb3JkKF9oZWFkZXJzKVxuICAgIGNvbnN0IG1ldGhvZCA9IFN0cmluZyhfbWV0aG9kKS50b0xvd2VyQ2FzZSgpIHx8ICdnZXQnXG4gICAgY29uc3QgYWJvcnRDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpXG4gICAgY29uc3QgeyBzaWduYWwgfSA9IGFib3J0Q29udHJvbGxlclxuICAgIGNvbnN0IHRpbWVvdXQgPSBjdXN0b21SZXFPcHRzPy50aW1lb3V0IHx8IHRoaXMudGltZW91dFxuXG4gICAgLy8g5p6E5bu66K+35rGCIHBheWxvYWTvvJpGb3JtRGF0YSA+IHVybGVuY29kZWQgPiByYXcgYm9keSA+IEpTT05cbiAgICBsZXQgcGF5bG9hZFxuICAgIGlmIChpc0Zvcm1EYXRhKGRhdGEpKSB7XG4gICAgICBwYXlsb2FkID0gZGF0YVxuICAgIH0gZWxzZSBpZiAoaGVhZGVyc1snY29udGVudC10eXBlJ10gPT09ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnKSB7XG4gICAgICBwYXlsb2FkID0gdG9RdWVyeVN0cmluZyhkYXRhID8/IHt9KVxuICAgIH0gZWxzZSBpZiAoYm9keSkge1xuICAgICAgcGF5bG9hZCA9IGJvZHlcbiAgICB9IGVsc2Uge1xuICAgICAgcGF5bG9hZCA9IGRhdGEgPyBKU09OLnN0cmluZ2lmeShkYXRhKSA6IHVuZGVmaW5lZFxuICAgIH1cblxuICAgIGNvbnN0IHJlYWxVcmwgPSB0aGlzLmdldFJlYWxVcmwoXG4gICAgICBmb3JtYXRVcmwoJ2h0dHBzJywgdXJsID8/ICcnLCBtZXRob2QgPT09ICdnZXQnID8gZGF0YSA6IHt9KSxcbiAgICAgIG9wdGlvbnMuaGVhZGVycyB8fCB7fSxcbiAgICAgIHBheWxvYWQsXG4gICAgKVxuXG4gICAgLy8g6LaF5pe26YCa6L+HIEFib3J0Q29udHJvbGxlciArIHNldFRpbWVvdXQg5a6e546wXG4gICAgbGV0IHRpbWVyXG5cbiAgICBpZiAoZW5hYmxlQWJvcnQgfHwgdGltZW91dCkge1xuICAgICAgdGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgY29uc3QgdGltZW91dE1zZyA9IGDor7fmsYLlnKgke3RpbWVvdXQgLyAxMDAwfXPlhoXmnKrlrozmiJDvvIzlt7LkuK3mlq1gXG4gICAgICAgIGNvbnNvbGUud2Fybih0aW1lb3V0TXNnKVxuICAgICAgICBhYm9ydENvbnRyb2xsZXIuYWJvcnQobmV3IEVycm9yKHRpbWVvdXRNc2cpKVxuICAgICAgfSwgdGltZW91dClcbiAgICB9XG5cbiAgICBjb25zdCByZXF1ZXN0T3B0aW9ucyA9IGF3YWl0IHRoaXMuZ2V0UmVxT3B0aW9ucyhyZWFsVXJsLCB7XG4gICAgICBtZXRob2QsXG4gICAgICBoZWFkZXJzLFxuICAgICAgYm9keTogcGF5bG9hZCxcbiAgICAgIGNyZWRlbnRpYWxzOiB3aXRoQ3JlZGVudGlhbHMgPyAnaW5jbHVkZScgOiAnc2FtZS1vcmlnaW4nLFxuICAgICAgc2lnbmFsLFxuICAgIH0pXG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChyZWFsVXJsLCByZXF1ZXN0T3B0aW9ucyBhcyBSZXF1ZXN0SW5pdClcbiAgICAgIGNvbnN0IHJlc3VsdDogUmVzcG9uc2VPYmplY3QgPSB7XG4gICAgICAgIGhlYWRlcjoge30sXG4gICAgICAgIHN0YXR1c0NvZGU6IHJlc3BvbnNlLnN0YXR1cyxcbiAgICAgIH1cblxuICAgICAgdHJ5IHtcbiAgICAgICAgcmVzdWx0LmRhdGEgPSByZXNwb25zZVR5cGUgPT09ICdibG9iJyA/IGF3YWl0IHJlc3BvbnNlLmJsb2IoKSA6IHNhZmVQYXJzZUpzb24oYXdhaXQgcmVzcG9uc2UudGV4dCgpKVxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAvLyDkuIrkvKAgUE9TVCDor7fmsYLlj6/og73ov5Tlm54gWE1MIOetiemdniBKU09OIOagvOW8j++8jOWuuemUmeWkhOeQhlxuICAgICAgICBjb25zb2xlLmxvZygnY2F0Y2ggYW4gZXJyb3InLCBlKVxuICAgICAgICByZXN1bHQuZGF0YSA9IHJlc3BvbnNlVHlwZSA9PT0gJ2Jsb2InID8gYXdhaXQgcmVzcG9uc2UuYmxvYigpIDogYXdhaXQgcmVzcG9uc2UudGV4dCgpXG4gICAgICB9XG5cbiAgICAgIC8vIOWwhuWTjeW6lOWktOe7n+S4gOi9rOS4uuWwj+WGmSBrZXlcbiAgICAgIGNvbnN0IHsgaGVhZGVycyB9ID0gcmVzcG9uc2VcbiAgICAgIGhlYWRlcnMuZm9yRWFjaCgodmFsLCBrZXkpID0+IChyZXN1bHQuaGVhZGVyW2tleS50b0xvd2VyQ2FzZSgpXSA9IHZhbCkpXG5cbiAgICAgIHJldHVybiByZXN1bHRcbiAgICB9IGZpbmFsbHkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRpbWVyKVxuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -82,16 +82,16 @@ var NodeRequest = (function () {
|
|
|
82
82
|
var _this = this;
|
|
83
83
|
this.getReqOptions = function (url, options) { return __awaiter(_this, void 0, void 0, function () {
|
|
84
84
|
var urlObj, TCB_SOURCE, SOURCE, _a, _b, isAdminPath, UNSUPPORTED_V3_SIGN_PATH, token, _c, secretId, secretKey, sessionToken, secretType, method, body, headers, params, secretInfo, signedParams, sign, _d, authorization, timestamp;
|
|
85
|
-
var _e, _f, _g, _h, _j, _k, _l;
|
|
86
|
-
return __generator(this, function (
|
|
87
|
-
switch (
|
|
85
|
+
var _e, _f, _g, _h, _j, _k, _l, _m;
|
|
86
|
+
return __generator(this, function (_o) {
|
|
87
|
+
switch (_o.label) {
|
|
88
88
|
case 0:
|
|
89
89
|
urlObj = new URL(url);
|
|
90
90
|
TCB_SOURCE = getCloudbaseContext().TCB_SOURCE;
|
|
91
91
|
_b = (_a = "".concat(((_f = (_e = INIT_CONFIG.context) === null || _e === void 0 ? void 0 : _e.extendedContext) === null || _f === void 0 ? void 0 : _f.source) || TCB_SOURCE || '', ",")).concat;
|
|
92
92
|
return [4, getCurrRunEnvTag()];
|
|
93
93
|
case 1:
|
|
94
|
-
SOURCE = _b.apply(_a, [
|
|
94
|
+
SOURCE = _b.apply(_a, [_o.sent()]);
|
|
95
95
|
options.headers = __assign(__assign({}, options.headers), { 'User-Agent': "adapter-node/".concat(((_g = options.headers) === null || _g === void 0 ? void 0 : _g['X-SDK-Version']) || "@cloudbase/js-sdk/".concat(getSdkVersion())), 'X-TCB-Source': SOURCE, 'X-Client-Timestamp': new Date().valueOf(), 'X-TCB-Region': INIT_CONFIG.region || getEnv('TENCENTCLOUD_REGION') || '', Host: urlObj.host });
|
|
96
96
|
if ((_j = (_h = options.headers.Authorization) === null || _h === void 0 ? void 0 : _h.replace('Bearer', '')) === null || _j === void 0 ? void 0 : _j.trim()) {
|
|
97
97
|
return [2, options];
|
|
@@ -104,7 +104,7 @@ var NodeRequest = (function () {
|
|
|
104
104
|
if (!UNSUPPORTED_V3_SIGN_PATH.some(function (v) { return urlObj.pathname.startsWith(v); })) return [3, 3];
|
|
105
105
|
return [4, this.getClientCredential({ origin: urlObj.origin })];
|
|
106
106
|
case 2:
|
|
107
|
-
token =
|
|
107
|
+
token = _o.sent();
|
|
108
108
|
options.headers.Authorization = "Bearer ".concat(token);
|
|
109
109
|
return [2, options];
|
|
110
110
|
case 3:
|
|
@@ -112,7 +112,8 @@ var NodeRequest = (function () {
|
|
|
112
112
|
secretType = (((_l = this.config) === null || _l === void 0 ? void 0 : _l.auth) || {}).secretType;
|
|
113
113
|
method = options.method, body = options.body;
|
|
114
114
|
headers = JSON.parse(JSON.stringify(options.headers));
|
|
115
|
-
params = typeof body === 'object' ? body : safeParseJson(body) ||
|
|
115
|
+
params = typeof body === 'object' ? body : safeParseJson(body) || {};
|
|
116
|
+
params.envName = (params === null || params === void 0 ? void 0 : params.env) || this.config.env || ((_m = getSecretInfo()) === null || _m === void 0 ? void 0 : _m.env) || '';
|
|
116
117
|
if (params.access_token) {
|
|
117
118
|
return [2, options];
|
|
118
119
|
}
|
|
@@ -154,7 +155,7 @@ var NodeRequest = (function () {
|
|
|
154
155
|
}
|
|
155
156
|
return [4, getSign()];
|
|
156
157
|
case 4:
|
|
157
|
-
sign =
|
|
158
|
+
sign = _o.sent();
|
|
158
159
|
if (!sign)
|
|
159
160
|
return [2, options];
|
|
160
161
|
_d = sign(signedParams), authorization = _d.authorization, timestamp = _d.timestamp;
|
|
@@ -438,4 +439,4 @@ var NodeRequest = (function () {
|
|
|
438
439
|
return NodeRequest;
|
|
439
440
|
}());
|
|
440
441
|
export { NodeRequest };
|
|
441
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWJzL2FkYXB0ZXItbm9kZS9yZXF1ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsT0FBTyxFQU9MLFNBQVMsR0FDVixNQUFNLDhCQUE4QixDQUFBO0FBQ3JDLE9BQU8sRUFBRSxVQUFVLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFDMUQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFFM0UsT0FBTyxFQUNMLE1BQU0sRUFDTixVQUFVLEVBQ1YsYUFBYSxFQUNiLGFBQWEsRUFDYixhQUFhLEVBQ2IscUJBQXFCLEVBQ3JCLGdCQUFnQixHQUNqQixNQUFNLFNBQVMsQ0FBQTtBQUVoQixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUE7QUFHdEQsSUFBSSxNQUFNLEdBQXFDLElBQUksQ0FBQTtBQUNuRCxTQUFlLE9BQU87Ozs7Ozt5QkFDaEIsQ0FBQyxNQUFNLEVBQVAsY0FBTzs7OztvQkFHSyxXQUFNLE1BQU0sQ0FBQyw2QkFBNkIsQ0FBQyxFQUFBOztvQkFBakQsR0FBRyxHQUFHLFNBQTJDO29CQUN2RCxNQUFNLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQTs7OztvQkFFakIsT0FBTyxDQUFDLEtBQUssQ0FBQyxpREFBaUQ7MEJBQzNELCtDQUErQzswQkFDL0Msc0JBQXNCLENBQUMsQ0FBQTs7d0JBRy9CLFdBQU8sTUFBTyxFQUFBOzs7O0NBQ2Y7QUFPRDtJQVVFLHFCQUFZLE1BQXlDO1FBQXJELGlCQUtDO1FBdURNLGtCQUFhLEdBQUcsVUFDckIsR0FBVyxFQUNYLE9BT0M7Ozs7Ozt3QkFFSyxNQUFNLEdBQUcsSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUE7d0JBRW5CLFVBQVUsR0FBSyxtQkFBbUIsRUFBRSxXQUExQixDQUEwQjs2Q0FFMUIsQ0FBQSxNQUFBLE1BQUEsV0FBVyxDQUFDLE9BQU8sMENBQUUsZUFBZSwwQ0FBRSxNQUFNLEtBQUksVUFBVSxJQUFJLEVBQUU7d0JBQUksV0FBTSxnQkFBZ0IsRUFBRSxFQUFBOzt3QkFBeEcsTUFBTSxHQUFHLGNBQXVFLFNBQXdCLEVBQUU7d0JBRWhILE9BQU8sQ0FBQyxPQUFPLHlCQUNWLE9BQU8sQ0FBQyxPQUFPLEtBQ2xCLFlBQVksRUFBRSx1QkFBZ0IsQ0FBQSxNQUFBLE9BQU8sQ0FBQyxPQUFPLDBDQUFHLGVBQWUsQ0FBQyxLQUFJLDRCQUFxQixhQUFhLEVBQUUsQ0FBRSxDQUFFLEVBQzVHLGNBQWMsRUFBRSxNQUFNLEVBQ3RCLG9CQUFvQixFQUFFLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLEVBQzFDLGNBQWMsRUFBRSxXQUFXLENBQUMsTUFBTSxJQUFJLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLEVBQUUsRUFDekUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLEdBQ2xCLENBQUE7d0JBR0QsSUFBSSxNQUFBLE1BQUEsT0FBTyxDQUFDLE9BQU8sQ0FBQyxhQUFhLDBDQUFFLE9BQU8sQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLDBDQUFFLElBQUksRUFBRSxFQUFFOzRCQUNoRSxXQUFPLE9BQU8sRUFBQTt5QkFDZjt3QkFHRCxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxRQUFRLEtBQUssZ0JBQWdCLEVBQUU7NEJBQ2hGLFdBQU8sT0FBTyxFQUFBO3lCQUNmO3dCQUVLLFdBQVcsR0FBRyxNQUFNLENBQUMsUUFBUSxLQUFLLFVBQVUsQ0FBQTt3QkFHNUMsd0JBQXdCLEdBQUcsQ0FBQyxZQUFZLEVBQUUsVUFBVSxFQUFFLFNBQVMsQ0FBQyxDQUFBOzZCQUVsRSx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsVUFBQSxDQUFDLElBQUksT0FBQSxNQUFNLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBN0IsQ0FBNkIsQ0FBQyxFQUFqRSxjQUFpRTt3QkFDckQsV0FBTSxJQUFJLENBQUMsbUJBQW1CLENBQUMsRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUE7O3dCQUFqRSxLQUFLLEdBQUcsU0FBeUQ7d0JBQ3ZFLE9BQU8sQ0FBQyxPQUFPLENBQUMsYUFBYSxHQUFHLGlCQUFVLEtBQUssQ0FBRSxDQUFBO3dCQUNqRCxXQUFPLE9BQU8sRUFBQTs7d0JBR1osS0FBd0MsQ0FBQSxNQUFBLElBQUksQ0FBQyxNQUFNLDBDQUFFLElBQUksS0FBSSxFQUFFLEVBQTdELFFBQVEsY0FBQSxFQUFFLFNBQVMsZUFBQSxFQUFFLFlBQVksa0JBQUEsQ0FBNEI7d0JBQzNELFVBQVUsR0FBSyxDQUFBLENBQUEsTUFBQSxJQUFJLENBQUMsTUFBTSwwQ0FBRSxJQUFJLEtBQUksRUFBRSxDQUFBLFdBQTVCLENBQTRCO3dCQUN0QyxNQUFNLEdBQVcsT0FBTyxPQUFsQixFQUFFLElBQUksR0FBSyxPQUFPLEtBQVosQ0FBWTt3QkFDMUIsT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQTt3QkFDdkQsTUFBTSxHQUFHLE9BQU8sSUFBSSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFBO3dCQUd4RSxJQUFJLE1BQU0sQ0FBQyxZQUFZLEVBQUU7NEJBQ3ZCLFdBQU8sT0FBTyxFQUFBO3lCQUNmO3dCQUdELElBQUksTUFBTSxDQUFDLFdBQVcsRUFBRSxLQUFLLEtBQUssRUFBRTs0QkFDbEMsTUFBTSxHQUFHLFNBQVMsQ0FBQTt5QkFDbkI7d0JBR0QsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLFNBQVMsSUFBSSxVQUFVLEtBQUssZ0JBQWdCLEVBQUU7NEJBQ3hELFVBQVUsR0FBRyxhQUFhLEVBQUUsQ0FBQTs0QkFDbEMsUUFBUSxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUE7NEJBQzlCLFNBQVMsR0FBRyxVQUFVLENBQUMsU0FBUyxDQUFBOzRCQUNoQyxZQUFZLEdBQUcsVUFBVSxDQUFDLFlBQVksQ0FBQTt5QkFDdkM7d0JBR0QsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLFNBQVMsRUFBRTs0QkFDM0IsV0FBTyxPQUFPLEVBQUE7eUJBQ2Y7d0JBRUQsT0FBTyxPQUFPLENBQUMsYUFBYSxDQUFBO3dCQUc1QixJQUFJLE9BQU8sQ0FBQyxjQUFjLENBQUMsRUFBRTs0QkFDM0IsT0FBTyxDQUFDLGNBQWMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQTt5QkFDaEU7NkJBQU0sSUFBSSxPQUFPLENBQUMsY0FBYyxDQUFDLEVBQUU7NEJBQ2xDLE9BQU8sQ0FBQyxjQUFjLENBQUMsR0FBRyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUE7eUJBQ2hFO3dCQUVELElBQUksV0FBVyxJQUFJLENBQUMsQ0FBQyxZQUFZLEVBQUU7NEJBQ2pDLE1BQU0sQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFBO3lCQUNuQzt3QkFFSyxZQUFZLEdBQUc7NEJBQ25CLFFBQVEsVUFBQTs0QkFDUixTQUFTLFdBQUE7NEJBQ1QsTUFBTSxRQUFBOzRCQUNOLEdBQUcsS0FBQTs0QkFDSCxNQUFNLFFBQUE7NEJBQ04sT0FBTyxTQUFBOzRCQUNQLGdCQUFnQixFQUFFLFdBQVc7NEJBQzdCLFNBQVMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQzs0QkFDdEQsVUFBVSxFQUFFLENBQUMsV0FBVzt5QkFDekIsQ0FBQTt3QkFFRCxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxFQUFFOzRCQUN4RCxXQUFPLE9BQU8sRUFBQTt5QkFDZjt3QkFFWSxXQUFNLE9BQU8sRUFBRSxFQUFBOzt3QkFBdEIsSUFBSSxHQUFHLFNBQWU7d0JBQzVCLElBQUksQ0FBQyxJQUFJOzRCQUFFLFdBQU8sT0FBTyxFQUFBO3dCQUVuQixLQUErQixJQUFJLENBQUMsWUFBWSxDQUFDLEVBQS9DLGFBQWEsbUJBQUEsRUFBRSxTQUFTLGVBQUEsQ0FBdUI7d0JBRXZELElBQUksT0FBTyxZQUFZLEtBQUssUUFBUSxJQUFJLFlBQVksS0FBSyxFQUFFLEVBQUU7NEJBQzNELElBQUksV0FBVyxFQUFFO2dDQUNmLE9BQU8sQ0FBQyxhQUFhLEdBQUcsVUFBRyxhQUFhLENBQUUsQ0FBQTtnQ0FDMUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxHQUFHLFNBQVMsQ0FBQTtnQ0FDbEMsT0FBTyxDQUFDLHFCQUFxQixDQUFDLEdBQUcsR0FBRyxDQUFBOzZCQUNyQztpQ0FBTztnQ0FFTixPQUFPLENBQUMsYUFBYSxHQUFHLFVBQUcsYUFBYSx5QkFBZSxTQUFTLHFCQUFXLFlBQVksQ0FBRSxDQUFBOzZCQUMxRjt5QkFDRjs2QkFBTTs0QkFDTCxPQUFPLENBQUMsYUFBYSxHQUFHLFVBQUcsYUFBYSx5QkFBZSxTQUFTLENBQUUsQ0FBQTs0QkFHbEUsSUFBSSxXQUFXLEVBQUU7Z0NBQ2YsT0FBTyxDQUFDLGFBQWEsQ0FBQyxHQUFHLFNBQVMsQ0FBQTtnQ0FDbEMsT0FBTyxDQUFDLHFCQUFxQixDQUFDLEdBQUcsR0FBRyxDQUFBOzZCQUNyQzt5QkFDRjt3QkFFRCxpQ0FDSyxPQUFPLEtBQ1YsT0FBTyxTQUFBLEVBQ1AsSUFBSSxFQUFFLE9BQU8sTUFBTSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxLQUNuRTs7O2FBQ0YsQ0FBQTtRQUVNLFFBQUcsR0FBRyxVQUFDLE9BQXdCLElBQThCLE9BQUEsS0FBSSxDQUFDLE9BQU8sdUJBRXpFLE9BQU8sS0FDVixNQUFNLEVBQUUsS0FBSyxLQUVmLEtBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQ3ZDLEVBTm1FLENBTW5FLENBQUE7UUFFTSxTQUFJLEdBQUcsVUFBQyxPQUF3QixJQUE4QixPQUFBLEtBQUksQ0FBQyxPQUFPLHVCQUUxRSxPQUFPLEtBQ1YsTUFBTSxFQUFFLE1BQU0sS0FFaEIsS0FBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FDeEMsRUFOb0UsQ0FNcEUsQ0FBQTtRQUVNLFFBQUcsR0FBRyxVQUFDLE9BQXdCLElBQThCLE9BQUEsS0FBSSxDQUFDLE9BQU8sdUJBQzNFLE9BQU8sS0FDVixNQUFNLEVBQUUsS0FBSyxJQUNiLEVBSGtFLENBR2xFLENBQUE7UUFPSyxXQUFNLEdBQUcsVUFBQyxPQUF3Qjs7WUFDL0IsSUFBTSxLQUFLLEdBQXVDLE9BQU8sS0FBOUMsRUFBRSxJQUFJLEdBQWlDLE9BQU8sS0FBeEMsRUFBRSxJQUFJLEdBQTJCLE9BQU8sS0FBbEMsRUFBRSxNQUFNLEdBQW1CLE9BQU8sT0FBMUIsRUFBRSxLQUFpQixPQUFPLFFBQVosRUFBWixPQUFPLG1CQUFHLEVBQUUsS0FBQSxDQUFZO1lBQ2pFLElBQUksSUFBSSxLQUFLLFNBQVMsSUFBSSxJQUFJLElBQUksU0FBUyxFQUFFO2dCQUMzQyxNQUFNLElBQUksS0FBSyxDQUFDLDJCQUEyQixDQUFDLENBQUE7YUFDN0M7WUFDRCxJQUFNLElBQUksR0FBRyxhQUFhLENBQUMsS0FBSyxhQUFMLEtBQUssY0FBTCxLQUFLLEdBQUksRUFBRSxDQUFDLENBQUE7WUFDdkMsSUFBTSxhQUFhLEdBQUcsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLFdBQVcsRUFBRSxDQUFBO1lBQzNDLElBQU0sU0FBUyxHQUFHLE1BQUEsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQUEsQ0FBQyxJQUFJLE9BQUEsQ0FBQyxLQUFLLGFBQWEsRUFBbkIsQ0FBbUIsQ0FBQyxtQ0FBSSxLQUFLLENBQUE7WUFDekUsSUFBTSxRQUFRLEdBQUcsSUFBSSxRQUFRLEVBQUUsQ0FBQTtZQUMvQixJQUFJLFNBQVMsS0FBSyxNQUFNLEVBQUU7Z0JBQ3hCLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQUMsR0FBRztvQkFDNUIsUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUE7Z0JBQ2pDLENBQUMsQ0FBQyxDQUFBO2dCQUNGLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFBO2dCQUM1QixRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQTtnQkFDN0IsT0FBTyxLQUFJLENBQUMsT0FBTyx1QkFFWixPQUFPLEtBQ1YsSUFBSSxFQUFFLFFBQVEsRUFDZCxNQUFNLEVBQUUsU0FBUyxLQUVuQixLQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUMxQyxDQUFBO2FBQ0Y7WUFFRCxPQUFPLEtBQUksQ0FBQyxPQUFPLHVCQUVaLE9BQU8sS0FDVixNQUFNLEVBQUUsS0FBSyxFQUNiLE9BQU8sU0FBQSxFQUNQLElBQUksRUFBRSxJQUFJLEtBRVosS0FBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FDMUMsQ0FBQTtRQUNILENBQUMsQ0FBQTtRQUdNLGFBQVEsR0FBRyxVQUFPLE9BQXdCOzs7Ozs0QkFDOUIsV0FBTSxJQUFJLENBQUMsR0FBRyx1QkFDMUIsT0FBTyxLQUNWLE9BQU8sRUFBRSxFQUFFLEVBQ1gsWUFBWSxFQUFFLE1BQU0sSUFDcEIsRUFBQTs7d0JBSk0sSUFBSSxHQUFLLENBQUEsU0FJZixDQUFBLEtBSlU7d0JBS04sR0FBRyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO3dCQUNsRCxRQUFRLEdBQUcsa0JBQWtCLENBQUMsSUFBSSxHQUFHLENBQUMsTUFBQSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsR0FBRyxtQ0FBSSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFBO3dCQUMxRixJQUFJLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQTt3QkFFeEMsSUFBSSxDQUFDLElBQUksR0FBRyxHQUFHLENBQUE7d0JBQ2YsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUE7d0JBQ3ZDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQTt3QkFFM0IsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUE7d0JBQy9CLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQTt3QkFDWixNQUFNLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQTt3QkFDL0IsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUE7d0JBQy9CLFdBQU8sSUFBSSxPQUFPLENBQUMsVUFBQyxPQUFPO2dDQUN6QixPQUFPLENBQUM7b0NBQ04sVUFBVSxFQUFFLEdBQUc7b0NBQ2YsWUFBWSxFQUFFLE9BQU8sQ0FBQyxHQUFHO2lDQUMxQixDQUFDLENBQUE7NEJBQ0osQ0FBQyxDQUFDLEVBQUE7OzthQUNILENBQUE7UUFNTSxVQUFLLEdBQUcsVUFBTyxPQUFpRzs7Ozs7O3dCQUM3RyxLQUErRCxPQUFPLFlBQW5ELEVBQW5CLFdBQVcsbUJBQUcsS0FBSyxLQUFBLEVBQUUsS0FBMEMsT0FBTyxPQUFuQyxFQUFkLE1BQU0sbUJBQUcsS0FBSyxLQUFBLEVBQUUsTUFBTSxHQUFvQixPQUFPLE9BQTNCLEVBQUUsYUFBYSxHQUFLLE9BQU8sY0FBWixDQUFZO3dCQUN4RSxHQUFHLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxPQUFPLElBQUksRUFBRSxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQTt3QkFDdkUsZUFBZSxHQUFHLElBQUksZUFBZSxFQUFFLENBQUE7d0JBQ3ZDLE9BQU8sR0FBRyxDQUFBLGFBQWEsYUFBYixhQUFhLHVCQUFiLGFBQWEsQ0FBRSxPQUFPLEtBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQTt3QkFHdEQsSUFBSSxNQUFNLEVBQUU7NEJBQ1YsSUFBSSxNQUFNLENBQUMsT0FBTyxFQUFFO2dDQUNsQixlQUFlLENBQUMsS0FBSyxFQUFFLENBQUE7NkJBQ3hCO2lDQUFNO2dDQUNMLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsY0FBTSxPQUFBLGVBQWUsQ0FBQyxLQUFLLEVBQUUsRUFBdkIsQ0FBdUIsQ0FBQyxDQUFBOzZCQUNoRTt5QkFDRjt3QkFHRyxLQUFLLEdBQUcsU0FBUyxDQUFBO3dCQUNyQixJQUFJLFdBQVcsSUFBSSxPQUFPLEVBQUU7NEJBQzFCLEtBQUssR0FBRyxVQUFVLENBQUM7Z0NBQ2pCLElBQU0sVUFBVSxHQUFHLDRCQUFNLE9BQU8sR0FBRyxJQUFJLHNEQUFXLENBQUE7Z0NBQ2xELE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUE7Z0NBQ3hCLGVBQWUsQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQTs0QkFDOUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFBO3lCQUNaO3dCQUVLLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQTt3QkFFL0QsV0FBTSxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsd0JBQzVDLE9BQU8sS0FDVixPQUFPLFNBQUEsRUFDUCxJQUFJLEVBQUUsT0FBTyxDQUFDLElBQW9DLEVBQ2xELE1BQU0sRUFBRSxlQUFlLENBQUMsTUFBTSxJQUM5QixFQUFBOzt3QkFMSSxZQUFZLEdBQUcsU0FLbkI7d0JBRVUsV0FBTSxLQUFLLENBQUMsR0FBRyxFQUFFLFlBQTJCLENBQUM7aUNBQ3RELElBQUksQ0FBQyxVQUFDLENBQUM7Z0NBQ04sWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFBO2dDQUNuQixPQUFPLENBQUMsQ0FBQTs0QkFDVixDQUFDLENBQUM7aUNBQ0QsS0FBSyxDQUFDLFVBQUMsQ0FBQztnQ0FDUCxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUE7Z0NBQ25CLE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQTs0QkFDMUIsQ0FBQyxDQUFDLEVBQUE7O3dCQVJFLEdBQUcsR0FBRyxTQVFSOzs2QkFJQSxDQUFBLENBQUMsR0FBRyxDQUFDLE1BQU0sS0FBSyxHQUFHLENBQUEsRUFBbkIsY0FBbUI7d0JBQ2YsS0FBQSxFQUFFLENBQUE7Ozs2QkFDRixNQUFNLEVBQU4sY0FBTTt3QkFDSixLQUFBLEdBQUcsQ0FBQyxJQUFJLENBQUE7OzRCQUNSLFdBQU0sR0FBRyxDQUFDLElBQUksRUFBRSxFQUFBOzt3QkFBaEIsS0FBQSxTQUFnQixDQUFBOzs7d0JBRmxCLFFBRWtCOzs7d0JBTnBCLEdBQUcsSUFDUCxPQUFJLEtBS29COzRCQUN4QixhQUFVLEdBQUUsR0FBRyxDQUFDLE1BQU07NEJBQ3RCLFNBQU0sR0FBRSxHQUFHLENBQUMsT0FBTzsrQkFDcEI7d0JBQ0QsV0FBTyxHQUFHLEVBQUE7OzthQUNYLENBQUE7UUFTTSxZQUFPLEdBQUcsVUFBTyxPQUF3QixFQUFFLFdBQW1CO1lBQW5CLDRCQUFBLEVBQUEsbUJBQW1COzs7Ozs7NEJBRWpFLEdBQUcsR0FRRCxPQUFPLElBUk4sRUFDSCxLQU9FLE9BQU8sUUFQYSxFQUFiLFFBQVEsbUJBQUcsRUFBRSxLQUFBLEVBQ3RCLElBQUksR0FNRixPQUFPLEtBTkwsRUFDSixZQUFZLEdBS1YsT0FBTyxhQUxHLEVBQ1osZUFBZSxHQUliLE9BQU8sZ0JBSk0sRUFDZixJQUFJLEdBR0YsT0FBTyxLQUhMLEVBQ0ksT0FBTyxHQUViLE9BQU8sT0FGTSxFQUNmLGFBQWEsR0FDWCxPQUFPLGNBREksQ0FDSjs0QkFDTCxPQUFPLEdBQUcsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFBOzRCQUNqQyxNQUFNLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFdBQVcsRUFBRSxJQUFJLEtBQUssQ0FBQTs0QkFDL0MsZUFBZSxHQUFHLElBQUksZUFBZSxFQUFFLENBQUE7NEJBQ3JDLE1BQU0sR0FBSyxlQUFlLE9BQXBCLENBQW9COzRCQUM1QixPQUFPLEdBQUcsQ0FBQSxhQUFhLGFBQWIsYUFBYSx1QkFBYixhQUFhLENBQUUsT0FBTyxLQUFJLElBQUksQ0FBQyxPQUFPLENBQUE7NEJBSXRELElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFO2dDQUNwQixPQUFPLEdBQUcsSUFBSSxDQUFBOzZCQUNmO2lDQUFNLElBQUksT0FBTyxDQUFDLGNBQWMsQ0FBQyxLQUFLLG1DQUFtQyxFQUFFO2dDQUMxRSxPQUFPLEdBQUcsYUFBYSxDQUFDLElBQUksYUFBSixJQUFJLGNBQUosSUFBSSxHQUFJLEVBQUUsQ0FBQyxDQUFBOzZCQUNwQztpQ0FBTSxJQUFJLElBQUksRUFBRTtnQ0FDZixPQUFPLEdBQUcsSUFBSSxDQUFBOzZCQUNmO2lDQUFNO2dDQUNMLE9BQU8sR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQTs2QkFDbEQ7NEJBRUssT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQzdCLFNBQVMsQ0FBQyxPQUFPLEVBQUUsR0FBRyxhQUFILEdBQUcsY0FBSCxHQUFHLEdBQUksRUFBRSxFQUFFLE1BQU0sS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQzNELE9BQU8sQ0FBQyxPQUFPLElBQUksRUFBRSxFQUNyQixPQUFPLENBQ1IsQ0FBQTs0QkFLRCxJQUFJLFdBQVcsSUFBSSxPQUFPLEVBQUU7Z0NBQzFCLEtBQUssR0FBRyxVQUFVLENBQUM7b0NBQ2pCLElBQU0sVUFBVSxHQUFHLDRCQUFNLE9BQU8sR0FBRyxJQUFJLHNEQUFXLENBQUE7b0NBQ2xELE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUE7b0NBQ3hCLGVBQWUsQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQTtnQ0FDOUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFBOzZCQUNaOzRCQUVzQixXQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxFQUFFO29DQUN2RCxNQUFNLFFBQUE7b0NBQ04sT0FBTyxTQUFBO29DQUNQLElBQUksRUFBRSxPQUFPO29DQUNiLFdBQVcsRUFBRSxlQUFlLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsYUFBYTtvQ0FDeEQsTUFBTSxRQUFBO2lDQUNQLENBQUMsRUFBQTs7NEJBTkksY0FBYyxHQUFHLFNBTXJCOzs7OzRCQUdpQixXQUFNLEtBQUssQ0FBQyxPQUFPLEVBQUUsY0FBNkIsQ0FBQyxFQUFBOzs0QkFBOUQsUUFBUSxHQUFHLFNBQW1EOzRCQUM5RCxXQUF5QjtnQ0FDN0IsTUFBTSxFQUFFLEVBQUU7Z0NBQ1YsVUFBVSxFQUFFLFFBQVEsQ0FBQyxNQUFNOzZCQUM1QixDQUFBOzs7OzRCQUdDLEtBQUEsUUFBTSxDQUFBO2lDQUFRLENBQUEsWUFBWSxLQUFLLE1BQU0sQ0FBQSxFQUF2QixjQUF1Qjs0QkFBRyxXQUFNLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBQTs7NEJBQXJCLEtBQUEsU0FBcUIsQ0FBQTs7OzRCQUFHLEtBQUEsYUFBYSxDQUFBOzRCQUFDLFdBQU0sUUFBUSxDQUFDLElBQUksRUFBRSxFQUFBOzs0QkFBbkMsS0FBQSxrQkFBYyxTQUFxQixFQUFDLENBQUE7Ozs0QkFBcEcsR0FBTyxJQUFJLEtBQXlGLENBQUE7Ozs7NEJBR3BHLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsR0FBQyxDQUFDLENBQUE7NEJBQ2hDLEtBQUEsUUFBTSxDQUFBO2lDQUFRLENBQUEsWUFBWSxLQUFLLE1BQU0sQ0FBQSxFQUF2QixlQUF1Qjs0QkFBRyxXQUFNLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBQTs7NEJBQXJCLEtBQUEsU0FBcUIsQ0FBQTs7aUNBQUcsV0FBTSxRQUFRLENBQUMsSUFBSSxFQUFFLEVBQUE7OzRCQUFyQixLQUFBLFNBQXFCLENBQUE7Ozs0QkFBckYsR0FBTyxJQUFJLEtBQTBFLENBQUE7Ozs0QkFJL0UsWUFBWSxRQUFRLFFBQWIsQ0FBYTs0QkFDNUIsU0FBTyxDQUFDLE9BQU8sQ0FBQyxVQUFDLEdBQUcsRUFBRSxHQUFHLElBQUssT0FBQSxDQUFDLFFBQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLEVBQXhDLENBQXdDLENBQUMsQ0FBQTs0QkFFdkUsV0FBTyxRQUFNLEVBQUE7OzRCQUViLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQTs7Ozs7O1NBRXRCLENBQUE7UUE3YVMsSUFBQSxPQUFPLEdBQXdCLE1BQU0sUUFBOUIsRUFBRSxpQkFBaUIsR0FBSyxNQUFNLGtCQUFYLENBQVc7UUFDN0MsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLElBQUksS0FBSyxDQUFBO1FBQy9CLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxpQkFBaUIsSUFBSSxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFBO1FBQ25GLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFBO0lBQ3RCLENBQUM7SUFNSyx5Q0FBbUIsR0FBekIsVUFBMEIsSUFBd0I7Ozs7Ozs0QkFDcEMsV0FBTSxJQUFJLENBQUMsS0FBSyxDQUFDOzRCQUMzQixHQUFHLEVBQUUsVUFBRyxJQUFJLENBQUMsTUFBTSxTQUFHLGdCQUFnQixDQUFFOzRCQUN4QyxNQUFNLEVBQUUsTUFBTTs0QkFDZCxPQUFPLEVBQUU7Z0NBQ1AsY0FBYyxFQUFFLGtCQUFrQjs2QkFDbkM7NEJBQ0QsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUM7Z0NBQ25CLFVBQVUsRUFBRSxvQkFBb0I7NkJBQ2pDLENBQUM7eUJBQ0gsQ0FBQyxFQUFBOzt3QkFUSSxHQUFHLEdBQUcsU0FTVjt3QkFFRixXQUFPLE1BQUEsR0FBRyxDQUFDLElBQUksMENBQUUsWUFBWSxFQUFBOzs7O0tBQzlCO0lBT0QsZ0NBQVUsR0FBVixVQUFXLEdBQVcsRUFBRSxPQUE0QixFQUFFLElBQVM7O1FBQzdELElBQUksTUFBQSxNQUFBLE9BQU8sQ0FBQyxhQUFhLDBDQUFFLE9BQU8sQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLDBDQUFFLElBQUksRUFBRSxFQUFFO1lBQ3hELE9BQU8sR0FBRyxDQUFBO1NBQ1g7UUFFRCxJQUFNLE1BQU0sR0FBRyxPQUFPLElBQUksS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQTtRQUUxRSxJQUFJLE1BQU0sQ0FBQyxZQUFZLEVBQUU7WUFDdkIsT0FBTyxHQUFHLENBQUE7U0FDWDtRQUVELElBQU0sTUFBTSxHQUFHLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBRTNCLElBQUksTUFBTSxDQUFDLFFBQVEsS0FBSyxNQUFNLEtBQUksTUFBQSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksMENBQUUsUUFBUSxDQUFBLEtBQUksTUFBQSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksMENBQUUsU0FBUyxDQUFBLEVBQUU7WUFDM0YsTUFBTSxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUE7U0FDN0I7UUFDRCxPQUFPLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQTtJQUMxQixDQUFDO0lBK1hILGtCQUFDO0FBQUQsQ0FBQyxBQXpiRCxJQXliQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLW5lc3RlZC10ZXJuYXJ5ICovXG5pbXBvcnQge1xuICBJRmV0Y2hPcHRpb25zLFxuICBJUmVxdWVzdENvbmZpZyxcbiAgSVJlcXVlc3RNZXRob2QsXG4gIElSZXF1ZXN0T3B0aW9ucyxcbiAgUmVzcG9uc2VPYmplY3QsXG4gIFNES1JlcXVlc3RJbnRlcmZhY2UsXG4gIGZvcm1hdFVybCxcbn0gZnJvbSAnQGNsb3VkYmFzZS9hZGFwdGVyLWludGVyZmFjZSdcbmltcG9ydCB7IEFETUlOX1BBVEgsIENMSUVOVF9BVVRIX1BBVEggfSBmcm9tICcuL2NvbnN0YW50cydcbmltcG9ydCB7IGdldENsb3VkYmFzZUNvbnRleHQsIGdldFNlY3JldEluZm8sIElOSVRfQ09ORklHIH0gZnJvbSAnLi9jb250ZXh0J1xuaW1wb3J0IHR5cGUgeyBJQ3VzdG9tUmVxT3B0cyB9IGZyb20gJy4vdHlwZXMnXG5pbXBvcnQge1xuICBnZXRFbnYsXG4gIGlzRm9ybURhdGEsXG4gIHRvUXVlcnlTdHJpbmcsXG4gIHNhZmVQYXJzZUpzb24sXG4gIG9iajJTdHJSZWNvcmQsXG4gIGhlYWRlcnNJbml0MkluZGV4YWJsZSxcbiAgZ2V0Q3VyclJ1bkVudlRhZyxcbn0gZnJvbSAnLi91dGlscydcbmltcG9ydCB7IElDbG91ZGJhc2VDb25maWcgfSBmcm9tICdAY2xvdWRiYXNlL3R5cGVzJ1xuaW1wb3J0IHsgZ2V0U2RrVmVyc2lvbiB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9jb21tb24nXG4vLyDlu7bov5/liqDovb3vvIzpgb/lhY3pnZ4gTm9kZSDnjq/looPmiZPljIXml7blvJXlhaXmraTljIVcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5sZXQgc2lnbkZuOiAoKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnkpIHwgbnVsbCA9IG51bGxcbmFzeW5jIGZ1bmN0aW9uIGdldFNpZ24oKSB7XG4gIGlmICghc2lnbkZuKSB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIEB0cy1pZ25vcmUg4oCUIOivpeWMheS7heWcqCBOb2RlIOi/kOihjOaXtuWtmOWcqO+8jOW8gOWPkeeOr+Wig+WPr+iDveacquWuieijhVxuICAgICAgY29uc3QgbW9kID0gYXdhaXQgaW1wb3J0KCdAY2xvdWRiYXNlL3NpZ25hdHVyZS1ub2RlanMnKVxuICAgICAgc2lnbkZuID0gbW9kLnNpZ25cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCfnvLrlsJHkvp3otZYgQGNsb3VkYmFzZS9zaWduYXR1cmUtbm9kZWpz77yM6K+35omn6KGM5Lul5LiL5ZG95Luk5a6J6KOF77yaXFxuXFxuJ1xuICAgICAgICArICcgIG5wbSBpbnN0YWxsIEBjbG91ZGJhc2Uvc2lnbmF0dXJlLW5vZGVqc1xcblxcbidcbiAgICAgICAgKyAn6K+l5L6d6LWW55So5LqOIE5vZGUg546v5aKD5LiL55qE6K+35rGC562+5ZCN44CCJylcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHNpZ25GbiFcbn1cblxuLyoqXG4gKiBOb2RlLmpzIOeOr+Wig+S4i+eahCBIVFRQIOivt+axguWunueOsFxuICog5Z+65LqO5Y6f55SfIGZldGNo77yM5pSv5oyBIEdFVC9QT1NUL1BVVC/kuIrkvKAv5LiL6L29L+a1geW8j+ivt+axglxuICog6Ieq5Yqo5aSE55CGIFYzIOetvuWQjeWSjCBCZWFyZXIgVG9rZW4g6K6k6K+BXG4gKi9cbmV4cG9ydCBjbGFzcyBOb2RlUmVxdWVzdCBpbXBsZW1lbnRzIFNES1JlcXVlc3RJbnRlcmZhY2Uge1xuICAvKiog6K+35rGC6YWN572u77yM5YyF5ZCr6K6k6K+B5L+h5oGvICovXG4gIGNvbmZpZzogSVJlcXVlc3RDb25maWcgJiBJQ2xvdWRiYXNlQ29uZmlnXG5cbiAgLyoqIOivt+axgui2heaXtuaXtumXtO+8iOavq+enku+8ie+8jOm7mOiupCAxNTAwMCAqL1xuICBwcml2YXRlIHJlYWRvbmx5IHRpbWVvdXQ6IG51bWJlclxuXG4gIC8qKiDlj5fotoXml7bmjqfliLbnmoTor7fmsYLnsbvlnovliJfooaggKi9cbiAgcHJpdmF0ZSByZWFkb25seSByZXN0cmljdGVkTWV0aG9kczogQXJyYXk8SVJlcXVlc3RNZXRob2Q+XG5cbiAgY29uc3RydWN0b3IoY29uZmlnOiBJUmVxdWVzdENvbmZpZyAmIElDbG91ZGJhc2VDb25maWcpIHtcbiAgICBjb25zdCB7IHRpbWVvdXQsIHJlc3RyaWN0ZWRNZXRob2RzIH0gPSBjb25maWdcbiAgICB0aGlzLnRpbWVvdXQgPSB0aW1lb3V0IHx8IDE1MDAwXG4gICAgdGhpcy5yZXN0cmljdGVkTWV0aG9kcyA9IHJlc3RyaWN0ZWRNZXRob2RzIHx8IFsnZ2V0JywgJ3Bvc3QnLCAndXBsb2FkJywgJ2Rvd25sb2FkJ11cbiAgICB0aGlzLmNvbmZpZyA9IGNvbmZpZ1xuICB9XG5cbiAgLyoqXG4gICAqIOiOt+WPluWuouaIt+err+WHreivgSBhY2Nlc3NfdG9rZW7vvIzkuLrnrqHnkIblkZjmnYPpmZBcbiAgICog55So5LqO5LiN5pSv5oyBIFYzIOetvuWQjeeahOaOpeWPo++8iOWmguaVsOaNruaooeWei+OAgeWFs+ezu+Wei+aVsOaNruW6k+OAgUFJ77yJXG4gICAqL1xuICBhc3luYyBnZXRDbGllbnRDcmVkZW50aWFsKG9wdHM6IHsgb3JpZ2luOiBzdHJpbmcgfSk6IFByb21pc2U8YW55PiB7XG4gICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5mZXRjaCh7XG4gICAgICB1cmw6IGAke29wdHMub3JpZ2lufSR7Q0xJRU5UX0FVVEhfUEFUSH1gLFxuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgICdjb250ZW50LXR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICB9LFxuICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICBncmFudF90eXBlOiAnY2xpZW50X2NyZWRlbnRpYWxzJyxcbiAgICAgIH0pLFxuICAgIH0pXG5cbiAgICByZXR1cm4gcmVzLmRhdGE/LmFjY2Vzc190b2tlblxuICB9XG5cbiAgLyoqXG4gICAqIOiOt+WPluWunumZheivt+axgiBVUkxcbiAgICog5b2T6K+35rGC5pyq5pC65bimIEF1dGhvcml6YXRpb24g5LiU5pyq6Ieq5bimIGFjY2Vzc190b2tlbiDml7bvvIxcbiAgICog5bCGIC93ZWIg6Lev5b6E5pu/5o2i5Li6IC9hZG1pbu+8iOeuoeeQhuerr+etvuWQjei3r+W+hO+8iVxuICAgKi9cbiAgZ2V0UmVhbFVybCh1cmw6IHN0cmluZywgaGVhZGVyczogUmVjb3JkPHN0cmluZywgYW55PiwgYm9keTogYW55KSB7XG4gICAgaWYgKGhlYWRlcnMuQXV0aG9yaXphdGlvbj8ucmVwbGFjZSgnQmVhcmVyJywgJycpPy50cmltKCkpIHtcbiAgICAgIHJldHVybiB1cmxcbiAgICB9XG5cbiAgICBjb25zdCBwYXJhbXMgPSB0eXBlb2YgYm9keSA9PT0gJ29iamVjdCcgPyBib2R5IDogc2FmZVBhcnNlSnNvbihib2R5KSB8fCAnJ1xuXG4gICAgaWYgKHBhcmFtcy5hY2Nlc3NfdG9rZW4pIHtcbiAgICAgIHJldHVybiB1cmxcbiAgICB9XG5cbiAgICBjb25zdCB1cmxPYmogPSBuZXcgVVJMKHVybClcblxuICAgIGlmICh1cmxPYmoucGF0aG5hbWUgPT09ICcvd2ViJyAmJiB0aGlzLmNvbmZpZy5hdXRoPy5zZWNyZXRJZCAmJiB0aGlzLmNvbmZpZy5hdXRoPy5zZWNyZXRLZXkpIHtcbiAgICAgIHVybE9iai5wYXRobmFtZSA9IEFETUlOX1BBVEhcbiAgICB9XG4gICAgcmV0dXJuIHVybE9iai50b1N0cmluZygpXG4gIH1cblxuICAvKipcbiAgICog5Li66K+35rGC5re75Yqg562+5ZCN5oiW6K6k6K+B5L+h5oGvXG4gICAqXG4gICAqIOWkhOeQhumAu+i+keS8mOWFiOe6p++8mlxuICAgKiAxLiDlt7LmnIkgQXV0aG9yaXphdGlvbiBoZWFkZXIg4oaSIOebtOaOpei/lOWbnlxuICAgKiAyLiAvYXV0aC8g6Lev5b6EIOKGkiBTREsg6K6k6K+B5o6l5Y+j77yM5peg6ZyA562+5ZCNXG4gICAqIDMuIOS4jeaUr+aMgSBWMyDnrb7lkI3nmoTot6/lvoTvvIgvdjEvbW9kZWwvIOetie+8ieKGkiDnlKggY2xpZW50Q3JlZGVudGlhbCBCZWFyZXIgVG9rZW5cbiAgICogNC4g5Y+C5pWw5ZCrIGFjY2Vzc190b2tlbiDihpIg5peg6ZyA562+5ZCNXG4gICAqIDUuIOWFtuS7liDihpIg5L2/55SoIFYzIOetvuWQje+8iFRDMy1ITUFDLVNIQTI1Nu+8iVxuICAgKi9cbiAgcHVibGljIGdldFJlcU9wdGlvbnMgPSBhc3luYyAoXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgb3B0aW9uczoge1xuICAgICAgbWV0aG9kPzogYW55XG4gICAgICBoZWFkZXJzOiBhbnlcbiAgICAgIGJvZHk/OiBhbnlcbiAgICAgIGNyZWRlbnRpYWxzPzogc3RyaW5nXG4gICAgICBzaWduYWw/OiBBYm9ydFNpZ25hbFxuICAgICAgdXJsPzogYW55XG4gICAgfSxcbiAgKSA9PiB7XG4gICAgY29uc3QgdXJsT2JqID0gbmV3IFVSTCh1cmwpXG5cbiAgICBjb25zdCB7IFRDQl9TT1VSQ0UgfSA9IGdldENsb3VkYmFzZUNvbnRleHQoKVxuICAgIC8vIE5vdGU6IOS6keWHveaVsOiiq+iwg+eUqOaXtuWPr+iDveiwg+eUqOerr+acquS8oOmAkiBTT1VSQ0XvvIxUQ0JfU09VUkNFIOWPr+iDveS4uuepulxuICAgIGNvbnN0IFNPVVJDRSA9IGAke0lOSVRfQ09ORklHLmNvbnRleHQ/LmV4dGVuZGVkQ29udGV4dD8uc291cmNlIHx8IFRDQl9TT1VSQ0UgfHwgJyd9LCR7YXdhaXQgZ2V0Q3VyclJ1bkVudlRhZygpfWBcblxuICAgIG9wdGlvbnMuaGVhZGVycyA9IHtcbiAgICAgIC4uLm9wdGlvbnMuaGVhZGVycyxcbiAgICAgICdVc2VyLUFnZW50JzogYGFkYXB0ZXItbm9kZS8ke29wdGlvbnMuaGVhZGVycz8uWydYLVNESy1WZXJzaW9uJ10gfHwgYEBjbG91ZGJhc2UvanMtc2RrLyR7Z2V0U2RrVmVyc2lvbigpfWB9YCxcbiAgICAgICdYLVRDQi1Tb3VyY2UnOiBTT1VSQ0UsXG4gICAgICAnWC1DbGllbnQtVGltZXN0YW1wJzogbmV3IERhdGUoKS52YWx1ZU9mKCksXG4gICAgICAnWC1UQ0ItUmVnaW9uJzogSU5JVF9DT05GSUcucmVnaW9uIHx8IGdldEVudignVEVOQ0VOVENMT1VEX1JFR0lPTicpIHx8ICcnLFxuICAgICAgSG9zdDogdXJsT2JqLmhvc3QsXG4gICAgfVxuXG4gICAgLy8g5bey5pC65bim5pyJ5pWIIEF1dGhvcml6YXRpb27vvIznm7TmjqXov5Tlm55cbiAgICBpZiAob3B0aW9ucy5oZWFkZXJzLkF1dGhvcml6YXRpb24/LnJlcGxhY2UoJ0JlYXJlcicsICcnKT8udHJpbSgpKSB7XG4gICAgICByZXR1cm4gb3B0aW9uc1xuICAgIH1cblxuICAgIC8vIGF1dGgg55u45YWz5o6l5Y+j5LiN6ZyA6KaB562+5ZCNXG4gICAgaWYgKHVybE9iai5wYXRobmFtZS5zdGFydHNXaXRoKCcvYXV0aC8nKSAmJiB1cmxPYmoucGF0aG5hbWUgIT09IENMSUVOVF9BVVRIX1BBVEgpIHtcbiAgICAgIHJldHVybiBvcHRpb25zXG4gICAgfVxuXG4gICAgY29uc3QgaXNBZG1pblBhdGggPSB1cmxPYmoucGF0aG5hbWUgPT09IEFETUlOX1BBVEhcblxuICAgIC8vIOi/meS6m+i3r+W+hOS4jeaUr+aMgSBWMyDnrb7lkI3vvIzmlLnnlKggY2xpZW50Q3JlZGVudGlhbCDojrflj5YgQmVhcmVyIFRva2VuXG4gICAgY29uc3QgVU5TVVBQT1JURURfVjNfU0lHTl9QQVRIID0gWycvdjEvbW9kZWwvJywgJy92MS9yZGIvJywgJy92MS9haS8nXVxuXG4gICAgaWYgKFVOU1VQUE9SVEVEX1YzX1NJR05fUEFUSC5zb21lKHYgPT4gdXJsT2JqLnBhdGhuYW1lLnN0YXJ0c1dpdGgodikpKSB7XG4gICAgICBjb25zdCB0b2tlbiA9IGF3YWl0IHRoaXMuZ2V0Q2xpZW50Q3JlZGVudGlhbCh7IG9yaWdpbjogdXJsT2JqLm9yaWdpbiB9KVxuICAgICAgb3B0aW9ucy5oZWFkZXJzLkF1dGhvcml6YXRpb24gPSBgQmVhcmVyICR7dG9rZW59YFxuICAgICAgcmV0dXJuIG9wdGlvbnNcbiAgICB9XG5cbiAgICBsZXQgeyBzZWNyZXRJZCwgc2VjcmV0S2V5LCBzZXNzaW9uVG9rZW4gfSA9IHRoaXMuY29uZmlnPy5hdXRoIHx8IHt9XG4gICAgY29uc3QgeyBzZWNyZXRUeXBlIH0gPSB0aGlzLmNvbmZpZz8uYXV0aCB8fCB7fVxuICAgIGNvbnN0IHsgbWV0aG9kLCBib2R5IH0gPSBvcHRpb25zXG4gICAgY29uc3QgaGVhZGVycyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkob3B0aW9ucy5oZWFkZXJzKSlcbiAgICBsZXQgcGFyYW1zID0gdHlwZW9mIGJvZHkgPT09ICdvYmplY3QnID8gYm9keSA6IHNhZmVQYXJzZUpzb24oYm9keSkgfHwgJydcblxuICAgIC8vIOWPguaVsOiHquW4piBhY2Nlc3NfdG9rZW7vvIzml6DpnIDnrb7lkI1cbiAgICBpZiAocGFyYW1zLmFjY2Vzc190b2tlbikge1xuICAgICAgcmV0dXJuIG9wdGlvbnNcbiAgICB9XG5cbiAgICAvLyBHRVQg6K+35rGC5Y+C5pWw5bey5ZyoIFVSTCDkuK3vvIznrb7lkI3ml7YgcGFyYW1zIOe9ruepulxuICAgIGlmIChtZXRob2QudG9Mb3dlckNhc2UoKSA9PT0gJ2dldCcpIHtcbiAgICAgIHBhcmFtcyA9IHVuZGVmaW5lZFxuICAgIH1cblxuICAgIC8vIFNFU1NJT05fU0VDUkVUIOexu+Wei+aIluaXoOWvhumSpeaXtu+8jOS7jueOr+Wig+WPmOmHj+iOt+WPluS4tOaXtuWvhumSpVxuICAgIGlmICghc2VjcmV0SWQgfHwgIXNlY3JldEtleSB8fCBzZWNyZXRUeXBlID09PSAnU0VTU0lPTl9TRUNSRVQnKSB7XG4gICAgICBjb25zdCBzZWNyZXRJbmZvID0gZ2V0U2VjcmV0SW5mbygpXG4gICAgICBzZWNyZXRJZCA9IHNlY3JldEluZm8uc2VjcmV0SWRcbiAgICAgIHNlY3JldEtleSA9IHNlY3JldEluZm8uc2VjcmV0S2V5XG4gICAgICBzZXNzaW9uVG9rZW4gPSBzZWNyZXRJbmZvLnNlc3Npb25Ub2tlblxuICAgIH1cblxuICAgIC8vIOS7jeaXoOWvhumSpeWImei3s+i/h+etvuWQjVxuICAgIGlmICghc2VjcmV0SWQgfHwgIXNlY3JldEtleSkge1xuICAgICAgcmV0dXJuIG9wdGlvbnNcbiAgICB9XG5cbiAgICBkZWxldGUgaGVhZGVycy5BdXRob3JpemF0aW9uXG5cbiAgICAvLyBjb250ZW50LXR5cGUg6ZyA5LiO5pyN5Yqh56uv562+5ZCN6aqM6K+B5L+d5oyB5aSn5bCP5YaZ5LiA6Ie0XG4gICAgaWYgKGhlYWRlcnNbJ2NvbnRlbnQtdHlwZSddKSB7XG4gICAgICBoZWFkZXJzWydjb250ZW50LXR5cGUnXSA9IGhlYWRlcnNbJ2NvbnRlbnQtdHlwZSddLnRvTG93ZXJDYXNlKClcbiAgICB9IGVsc2UgaWYgKGhlYWRlcnNbJ0NvbnRlbnQtVHlwZSddKSB7XG4gICAgICBoZWFkZXJzWydDb250ZW50LVR5cGUnXSA9IGhlYWRlcnNbJ0NvbnRlbnQtVHlwZSddLnRvTG93ZXJDYXNlKClcbiAgICB9XG5cbiAgICBpZiAoaXNBZG1pblBhdGggJiYgISFzZXNzaW9uVG9rZW4pIHtcbiAgICAgIHBhcmFtcy5zZXNzaW9uVG9rZW4gPSBzZXNzaW9uVG9rZW5cbiAgICB9XG5cbiAgICBjb25zdCBzaWduZWRQYXJhbXMgPSB7XG4gICAgICBzZWNyZXRJZCxcbiAgICAgIHNlY3JldEtleSxcbiAgICAgIG1ldGhvZCxcbiAgICAgIHVybCxcbiAgICAgIHBhcmFtcyxcbiAgICAgIGhlYWRlcnMsXG4gICAgICB3aXRoU2lnbmVkUGFyYW1zOiBpc0FkbWluUGF0aCxcbiAgICAgIHRpbWVzdGFtcDogTWF0aC5mbG9vcihuZXcgRGF0ZSgpLmdldFRpbWUoKSAvIDEwMDApIC0gMSxcbiAgICAgIGlzQ2xvdWRBcGk6ICFpc0FkbWluUGF0aCxcbiAgICB9XG5cbiAgICBpZiAoIWhlYWRlcnNbJ2NvbnRlbnQtdHlwZSddICYmICFoZWFkZXJzWydDb250ZW50LVR5cGUnXSkge1xuICAgICAgcmV0dXJuIG9wdGlvbnNcbiAgICB9XG5cbiAgICBjb25zdCBzaWduID0gYXdhaXQgZ2V0U2lnbigpXG4gICAgaWYgKCFzaWduKSByZXR1cm4gb3B0aW9uc1xuXG4gICAgY29uc3QgeyBhdXRob3JpemF0aW9uLCB0aW1lc3RhbXAgfSA9IHNpZ24oc2lnbmVkUGFyYW1zKVxuXG4gICAgaWYgKHR5cGVvZiBzZXNzaW9uVG9rZW4gPT09ICdzdHJpbmcnICYmIHNlc3Npb25Ub2tlbiAhPT0gJycpIHtcbiAgICAgIGlmIChpc0FkbWluUGF0aCkge1xuICAgICAgICBoZWFkZXJzLkF1dGhvcml6YXRpb24gPSBgJHthdXRob3JpemF0aW9ufWBcbiAgICAgICAgaGVhZGVyc1snWC1UaW1lc3RhbXAnXSA9IHRpbWVzdGFtcFxuICAgICAgICBoZWFkZXJzWydYLVNpZ25hdHVyZS1FeHBpcmVzJ10gPSA2MDBcbiAgICAgIH0gZWxzZSAge1xuICAgICAgICAvLyDkuLTml7blr4bpkqXpnIDopoHpop3lpJbpmYTluKYgVG9rZW5cbiAgICAgICAgaGVhZGVycy5BdXRob3JpemF0aW9uID0gYCR7YXV0aG9yaXphdGlvbn0sIFRpbWVzdGFtcD0ke3RpbWVzdGFtcH0sIFRva2VuPSR7c2Vzc2lvblRva2VufWBcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaGVhZGVycy5BdXRob3JpemF0aW9uID0gYCR7YXV0aG9yaXphdGlvbn0sIFRpbWVzdGFtcD0ke3RpbWVzdGFtcH1gXG5cbiAgICAgIC8vIGFkbWluIOi3r+W+hOmcgOimgemineWklueahOaXtumXtOaIs+WSjOi/h+acn+WktFxuICAgICAgaWYgKGlzQWRtaW5QYXRoKSB7XG4gICAgICAgIGhlYWRlcnNbJ1gtVGltZXN0YW1wJ10gPSB0aW1lc3RhbXBcbiAgICAgICAgaGVhZGVyc1snWC1TaWduYXR1cmUtRXhwaXJlcyddID0gNjAwXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBoZWFkZXJzLFxuICAgICAgYm9keTogdHlwZW9mIHBhcmFtcyA9PT0gJ29iamVjdCcgPyBKU09OLnN0cmluZ2lmeShwYXJhbXMpIDogcGFyYW1zLFxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgPSAob3B0aW9uczogSVJlcXVlc3RPcHRpb25zKTogUHJvbWlzZTxSZXNwb25zZU9iamVjdD4gPT4gdGhpcy5yZXF1ZXN0KFxuICAgIHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBtZXRob2Q6ICdnZXQnLFxuICAgIH0sXG4gICAgdGhpcy5yZXN0cmljdGVkTWV0aG9kcy5pbmNsdWRlcygnZ2V0JyksXG4gIClcblxuICBwdWJsaWMgcG9zdCA9IChvcHRpb25zOiBJUmVxdWVzdE9wdGlvbnMpOiBQcm9taXNlPFJlc3BvbnNlT2JqZWN0PiA9PiB0aGlzLnJlcXVlc3QoXG4gICAge1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIG1ldGhvZDogJ3Bvc3QnLFxuICAgIH0sXG4gICAgdGhpcy5yZXN0cmljdGVkTWV0aG9kcy5pbmNsdWRlcygncG9zdCcpLFxuICApXG5cbiAgcHVibGljIHB1dCA9IChvcHRpb25zOiBJUmVxdWVzdE9wdGlvbnMpOiBQcm9taXNlPFJlc3BvbnNlT2JqZWN0PiA9PiB0aGlzLnJlcXVlc3Qoe1xuICAgIC4uLm9wdGlvbnMsXG4gICAgbWV0aG9kOiAncHV0JyxcbiAgfSlcblxuICAvKipcbiAgICog5paH5Lu25LiK5LygXG4gICAqIFBPU1Qg5pa55byP77ya5p6E5bu6IEZvcm1EYXRhIOS4iuS8oFxuICAgKiBQVVQg5pa55byP77ya55u05o6l5bCG5paH5Lu25L2c5Li6IGJvZHkg5LiK5LygXG4gICAqL1xuICBwdWJsaWMgdXBsb2FkID0gKG9wdGlvbnM6IElSZXF1ZXN0T3B0aW9ucyk6IFByb21pc2U8UmVzcG9uc2VPYmplY3Q+ID0+IHtcbiAgICBjb25zdCB7IGRhdGE6IF9kYXRhLCBmaWxlLCBuYW1lLCBtZXRob2QsIGhlYWRlcnMgPSB7fSB9ID0gb3B0aW9uc1xuICAgIGlmIChmaWxlID09PSB1bmRlZmluZWQgfHwgbmFtZSA9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignZmlsZSBhbmQgbmFtZSBpcyByZXF1aXJlZCcpXG4gICAgfVxuICAgIGNvbnN0IGRhdGEgPSBvYmoyU3RyUmVjb3JkKF9kYXRhID8/IHt9KVxuICAgIGNvbnN0IGxvd2VyZWRNZXRob2QgPSBtZXRob2Q/LnRvTG93ZXJDYXNlKClcbiAgICBjb25zdCByZXFNZXRob2QgPSBbJ3Bvc3QnLCAncHV0J10uZmluZChtID0+IG0gPT09IGxvd2VyZWRNZXRob2QpID8/ICdwdXQnXG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKVxuICAgIGlmIChyZXFNZXRob2QgPT09ICdwb3N0Jykge1xuICAgICAgT2JqZWN0LmtleXMoZGF0YSkuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgIGZvcm1EYXRhLmFwcGVuZChrZXksIGRhdGFba2V5XSlcbiAgICAgIH0pXG4gICAgICBmb3JtRGF0YS5hcHBlbmQoJ2tleScsIG5hbWUpXG4gICAgICBmb3JtRGF0YS5hcHBlbmQoJ2ZpbGUnLCBmaWxlKVxuICAgICAgcmV0dXJuIHRoaXMucmVxdWVzdChcbiAgICAgICAge1xuICAgICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgICAgZGF0YTogZm9ybURhdGEsXG4gICAgICAgICAgbWV0aG9kOiByZXFNZXRob2QsXG4gICAgICAgIH0sXG4gICAgICAgIHRoaXMucmVzdHJpY3RlZE1ldGhvZHMuaW5jbHVkZXMoJ3VwbG9hZCcpLFxuICAgICAgKVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QoXG4gICAgICB7XG4gICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgIG1ldGhvZDogJ3B1dCcsXG4gICAgICAgIGhlYWRlcnMsXG4gICAgICAgIGJvZHk6IGZpbGUsXG4gICAgICB9LFxuICAgICAgdGhpcy5yZXN0cmljdGVkTWV0aG9kcy5pbmNsdWRlcygndXBsb2FkJyksXG4gICAgKVxuICB9XG5cbiAgLyoqIOaWh+S7tuS4i+i9ve+8iOa1j+iniOWZqOeOr+Wig++8jOmAmui/h+WIm+W7uiA8YT4g5qCH562+6Kem5Y+R5LiL6L2977yJICovXG4gIHB1YmxpYyBkb3dubG9hZCA9IGFzeW5jIChvcHRpb25zOiBJUmVxdWVzdE9wdGlvbnMpOiBQcm9taXNlPHVua25vd24+ID0+IHtcbiAgICBjb25zdCB7IGRhdGEgfSA9IGF3YWl0IHRoaXMuZ2V0KHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBoZWFkZXJzOiB7fSxcbiAgICAgIHJlc3BvbnNlVHlwZTogJ2Jsb2InLFxuICAgIH0pXG4gICAgY29uc3QgdXJsID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwobmV3IEJsb2IoW2RhdGFdKSlcbiAgICBjb25zdCBmaWxlTmFtZSA9IGRlY29kZVVSSUNvbXBvbmVudChuZXcgVVJMKG9wdGlvbnM/LnVybCA/PyAnJykucGF0aG5hbWUuc3BsaXQoJy8nKS5wb3AoKSB8fCAnJylcbiAgICBjb25zdCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpXG5cbiAgICBsaW5rLmhyZWYgPSB1cmxcbiAgICBsaW5rLnNldEF0dHJpYnV0ZSgnZG93bmxvYWQnLCBmaWxlTmFtZSlcbiAgICBsaW5rLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSdcblxuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobGluaylcbiAgICBsaW5rLmNsaWNrKClcbiAgICB3aW5kb3cuVVJMLnJldm9rZU9iamVjdFVSTCh1cmwpXG4gICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChsaW5rKVxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgICAgcmVzb2x2ZSh7XG4gICAgICAgIHN0YXR1c0NvZGU6IDIwMCxcbiAgICAgICAgdGVtcEZpbGVQYXRoOiBvcHRpb25zLnVybCxcbiAgICAgIH0pXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiDlupXlsYIgZmV0Y2gg6K+35rGC77yM5pSv5oyB5rWB5byP5ZON5bqUXG4gICAqIOi2heaXtumAmui/hyBBYm9ydENvbnRyb2xsZXIgKyBzZXRUaW1lb3V0IOWunueOsFxuICAgKi9cbiAgcHVibGljIGZldGNoID0gYXN5bmMgKG9wdGlvbnM6IE9taXQ8SUZldGNoT3B0aW9ucywgJ3NpZ25hbCc+ICYgeyBzaWduYWw/OiBBYm9ydFNpZ25hbDsgY3VzdG9tUmVxT3B0cz86IElDdXN0b21SZXFPcHRzIH0pOiBQcm9taXNlPFJlc3BvbnNlT2JqZWN0PiA9PiB7XG4gICAgY29uc3QgeyBlbmFibGVBYm9ydCA9IGZhbHNlLCBzdHJlYW0gPSBmYWxzZSwgc2lnbmFsLCBjdXN0b21SZXFPcHRzIH0gPSBvcHRpb25zXG4gICAgY29uc3QgdXJsID0gdGhpcy5nZXRSZWFsVXJsKG9wdGlvbnMudXJsLCBvcHRpb25zLmhlYWRlcnMgfHwge30sIG9wdGlvbnMuYm9keSlcbiAgICBjb25zdCBhYm9ydENvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKClcbiAgICBjb25zdCB0aW1lb3V0ID0gY3VzdG9tUmVxT3B0cz8udGltZW91dCB8fCB0aGlzLnRpbWVvdXRcblxuICAgIC8vIOahpeaOpeWklumDqCBzaWduYWwg5Yiw5YaF6YOoIEFib3J0Q29udHJvbGxlclxuICAgIGlmIChzaWduYWwpIHtcbiAgICAgIGlmIChzaWduYWwuYWJvcnRlZCkge1xuICAgICAgICBhYm9ydENvbnRyb2xsZXIuYWJvcnQoKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2lnbmFsLmFkZEV2ZW50TGlzdGVuZXIoJ2Fib3J0JywgKCkgPT4gYWJvcnRDb250cm9sbGVyLmFib3J0KCkpXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8g6LaF5pe26Ieq5Yqo5Lit5patXG4gICAgbGV0IHRpbWVyID0gdW5kZWZpbmVkXG4gICAgaWYgKGVuYWJsZUFib3J0IHx8IHRpbWVvdXQpIHtcbiAgICAgIHRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IHRpbWVvdXRNc2cgPSBg6K+35rGC5ZyoJHt0aW1lb3V0IC8gMTAwMH1z5YaF5pyq5a6M5oiQ77yM5bey5Lit5patYFxuICAgICAgICBjb25zb2xlLndhcm4odGltZW91dE1zZylcbiAgICAgICAgYWJvcnRDb250cm9sbGVyLmFib3J0KG5ldyBFcnJvcih0aW1lb3V0TXNnKSlcbiAgICAgIH0sIHRpbWVvdXQpXG4gICAgfVxuXG4gICAgY29uc3QgaGVhZGVycyA9IG9wdGlvbnMuaGVhZGVycyA/IGhlYWRlcnNJbml0MkluZGV4YWJsZShvcHRpb25zLmhlYWRlcnMpIDogdW5kZWZpbmVkXG5cbiAgICBjb25zdCBmZXRjaE9wdGlvbnMgPSBhd2FpdCB0aGlzLmdldFJlcU9wdGlvbnModXJsLCB7XG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgaGVhZGVycyxcbiAgICAgIGJvZHk6IG9wdGlvbnMuYm9keSBhcyBhbnkgYXMgTm9kZUpTLlJlYWRhYmxlU3RyZWFtLFxuICAgICAgc2lnbmFsOiBhYm9ydENvbnRyb2xsZXIuc2lnbmFsLFxuICAgIH0pXG5cbiAgICBjb25zdCByZXMgPSBhd2FpdCBmZXRjaCh1cmwsIGZldGNoT3B0aW9ucyBhcyBSZXF1ZXN0SW5pdClcbiAgICAgIC50aGVuKCh4KSA9PiB7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aW1lcilcbiAgICAgICAgcmV0dXJuIHhcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKHgpID0+IHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVyKVxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoeClcbiAgICAgIH0pXG5cbiAgICBjb25zdCByZXQgPSB7XG4gICAgICBkYXRhOlxuICAgICAgICArcmVzLnN0YXR1cyA9PT0gMjA0XG4gICAgICAgICAgPyAnJyAvLyAyMDQgTm8gQ29udGVudFxuICAgICAgICAgIDogc3RyZWFtXG4gICAgICAgICAgICA/IHJlcy5ib2R5XG4gICAgICAgICAgICA6IGF3YWl0IHJlcy5qc29uKCksXG4gICAgICBzdGF0dXNDb2RlOiByZXMuc3RhdHVzLFxuICAgICAgaGVhZGVyOiByZXMuaGVhZGVycyxcbiAgICB9XG4gICAgcmV0dXJuIHJldFxuICB9XG5cbiAgLyoqXG4gICAqIOmAmueUqOivt+axguaWueazle+8jOiiqyBnZXQvcG9zdC9wdXQvdXBsb2FkIOetieiwg+eUqFxuICAgKiDotJ/otKPmnoTlu7ogcGF5bG9hZOOAgeiuvue9rui2heaXtuOAgeino+aekOWTjeW6lFxuICAgKlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIOivt+axgumAiemhuVxuICAgKiBAcGFyYW0gZW5hYmxlQWJvcnQgLSDmmK/lkKblkK/nlKjotoXml7bkuK3mlq3vvIjnlLEgcmVzdHJpY3RlZE1ldGhvZHMg5Yaz5a6a77yJXG4gICAqL1xuICBwdWJsaWMgcmVxdWVzdCA9IGFzeW5jIChvcHRpb25zOiBJUmVxdWVzdE9wdGlvbnMsIGVuYWJsZUFib3J0ID0gZmFsc2UpOiBQcm9taXNlPFJlc3BvbnNlT2JqZWN0PiA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgdXJsLFxuICAgICAgaGVhZGVyczogX2hlYWRlcnMgPSB7fSxcbiAgICAgIGRhdGEsXG4gICAgICByZXNwb25zZVR5cGUsXG4gICAgICB3aXRoQ3JlZGVudGlhbHMsXG4gICAgICBib2R5LFxuICAgICAgbWV0aG9kOiBfbWV0aG9kLFxuICAgICAgY3VzdG9tUmVxT3B0cyxcbiAgICB9ID0gb3B0aW9uc1xuICAgIGNvbnN0IGhlYWRlcnMgPSBvYmoyU3RyUmVjb3JkKF9oZWFkZXJzKVxuICAgIGNvbnN0IG1ldGhvZCA9IFN0cmluZyhfbWV0aG9kKS50b0xvd2VyQ2FzZSgpIHx8ICdnZXQnXG4gICAgY29uc3QgYWJvcnRDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpXG4gICAgY29uc3QgeyBzaWduYWwgfSA9IGFib3J0Q29udHJvbGxlclxuICAgIGNvbnN0IHRpbWVvdXQgPSBjdXN0b21SZXFPcHRzPy50aW1lb3V0IHx8IHRoaXMudGltZW91dFxuXG4gICAgLy8g5p6E5bu66K+35rGCIHBheWxvYWTvvJpGb3JtRGF0YSA+IHVybGVuY29kZWQgPiByYXcgYm9keSA+IEpTT05cbiAgICBsZXQgcGF5bG9hZFxuICAgIGlmIChpc0Zvcm1EYXRhKGRhdGEpKSB7XG4gICAgICBwYXlsb2FkID0gZGF0YVxuICAgIH0gZWxzZSBpZiAoaGVhZGVyc1snY29udGVudC10eXBlJ10gPT09ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnKSB7XG4gICAgICBwYXlsb2FkID0gdG9RdWVyeVN0cmluZyhkYXRhID8/IHt9KVxuICAgIH0gZWxzZSBpZiAoYm9keSkge1xuICAgICAgcGF5bG9hZCA9IGJvZHlcbiAgICB9IGVsc2Uge1xuICAgICAgcGF5bG9hZCA9IGRhdGEgPyBKU09OLnN0cmluZ2lmeShkYXRhKSA6IHVuZGVmaW5lZFxuICAgIH1cblxuICAgIGNvbnN0IHJlYWxVcmwgPSB0aGlzLmdldFJlYWxVcmwoXG4gICAgICBmb3JtYXRVcmwoJ2h0dHBzJywgdXJsID8/ICcnLCBtZXRob2QgPT09ICdnZXQnID8gZGF0YSA6IHt9KSxcbiAgICAgIG9wdGlvbnMuaGVhZGVycyB8fCB7fSxcbiAgICAgIHBheWxvYWQsXG4gICAgKVxuXG4gICAgLy8g6LaF5pe26YCa6L+HIEFib3J0Q29udHJvbGxlciArIHNldFRpbWVvdXQg5a6e546wXG4gICAgbGV0IHRpbWVyXG5cbiAgICBpZiAoZW5hYmxlQWJvcnQgfHwgdGltZW91dCkge1xuICAgICAgdGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgY29uc3QgdGltZW91dE1zZyA9IGDor7fmsYLlnKgke3RpbWVvdXQgLyAxMDAwfXPlhoXmnKrlrozmiJDvvIzlt7LkuK3mlq1gXG4gICAgICAgIGNvbnNvbGUud2Fybih0aW1lb3V0TXNnKVxuICAgICAgICBhYm9ydENvbnRyb2xsZXIuYWJvcnQobmV3IEVycm9yKHRpbWVvdXRNc2cpKVxuICAgICAgfSwgdGltZW91dClcbiAgICB9XG5cbiAgICBjb25zdCByZXF1ZXN0T3B0aW9ucyA9IGF3YWl0IHRoaXMuZ2V0UmVxT3B0aW9ucyhyZWFsVXJsLCB7XG4gICAgICBtZXRob2QsXG4gICAgICBoZWFkZXJzLFxuICAgICAgYm9keTogcGF5bG9hZCxcbiAgICAgIGNyZWRlbnRpYWxzOiB3aXRoQ3JlZGVudGlhbHMgPyAnaW5jbHVkZScgOiAnc2FtZS1vcmlnaW4nLFxuICAgICAgc2lnbmFsLFxuICAgIH0pXG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChyZWFsVXJsLCByZXF1ZXN0T3B0aW9ucyBhcyBSZXF1ZXN0SW5pdClcbiAgICAgIGNvbnN0IHJlc3VsdDogUmVzcG9uc2VPYmplY3QgPSB7XG4gICAgICAgIGhlYWRlcjoge30sXG4gICAgICAgIHN0YXR1c0NvZGU6IHJlc3BvbnNlLnN0YXR1cyxcbiAgICAgIH1cblxuICAgICAgdHJ5IHtcbiAgICAgICAgcmVzdWx0LmRhdGEgPSByZXNwb25zZVR5cGUgPT09ICdibG9iJyA/IGF3YWl0IHJlc3BvbnNlLmJsb2IoKSA6IHNhZmVQYXJzZUpzb24oYXdhaXQgcmVzcG9uc2UudGV4dCgpKVxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAvLyDkuIrkvKAgUE9TVCDor7fmsYLlj6/og73ov5Tlm54gWE1MIOetiemdniBKU09OIOagvOW8j++8jOWuuemUmeWkhOeQhlxuICAgICAgICBjb25zb2xlLmxvZygnY2F0Y2ggYW4gZXJyb3InLCBlKVxuICAgICAgICByZXN1bHQuZGF0YSA9IHJlc3BvbnNlVHlwZSA9PT0gJ2Jsb2InID8gYXdhaXQgcmVzcG9uc2UuYmxvYigpIDogYXdhaXQgcmVzcG9uc2UudGV4dCgpXG4gICAgICB9XG5cbiAgICAgIC8vIOWwhuWTjeW6lOWktOe7n+S4gOi9rOS4uuWwj+WGmSBrZXlcbiAgICAgIGNvbnN0IHsgaGVhZGVycyB9ID0gcmVzcG9uc2VcbiAgICAgIGhlYWRlcnMuZm9yRWFjaCgodmFsLCBrZXkpID0+IChyZXN1bHQuaGVhZGVyW2tleS50b0xvd2VyQ2FzZSgpXSA9IHZhbCkpXG5cbiAgICAgIHJldHVybiByZXN1bHRcbiAgICB9IGZpbmFsbHkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRpbWVyKVxuICAgIH1cbiAgfVxufVxuIl19
|
|
442
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWJzL2FkYXB0ZXItbm9kZS9yZXF1ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsT0FBTyxFQU9MLFNBQVMsR0FDVixNQUFNLDhCQUE4QixDQUFBO0FBQ3JDLE9BQU8sRUFBRSxVQUFVLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFDMUQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFFM0UsT0FBTyxFQUNMLE1BQU0sRUFDTixVQUFVLEVBQ1YsYUFBYSxFQUNiLGFBQWEsRUFDYixhQUFhLEVBQ2IscUJBQXFCLEVBQ3JCLGdCQUFnQixHQUNqQixNQUFNLFNBQVMsQ0FBQTtBQUVoQixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUE7QUFHdEQsSUFBSSxNQUFNLEdBQXFDLElBQUksQ0FBQTtBQUNuRCxTQUFlLE9BQU87Ozs7Ozt5QkFDaEIsQ0FBQyxNQUFNLEVBQVAsY0FBTzs7OztvQkFHSyxXQUFNLE1BQU0sQ0FBQyw2QkFBNkIsQ0FBQyxFQUFBOztvQkFBakQsR0FBRyxHQUFHLFNBQTJDO29CQUN2RCxNQUFNLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQTs7OztvQkFFakIsT0FBTyxDQUFDLEtBQUssQ0FBQyxpREFBaUQ7MEJBQzNELCtDQUErQzswQkFDL0Msc0JBQXNCLENBQUMsQ0FBQTs7d0JBRy9CLFdBQU8sTUFBTyxFQUFBOzs7O0NBQ2Y7QUFPRDtJQVVFLHFCQUFZLE1BQXlDO1FBQXJELGlCQUtDO1FBdURNLGtCQUFhLEdBQUcsVUFDckIsR0FBVyxFQUNYLE9BT0M7Ozs7Ozt3QkFFSyxNQUFNLEdBQUcsSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUE7d0JB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UUFBUSxHQUFHLFVBQVUsQ0FBQTtTQUM3QjtRQUNELE9BQU8sTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFBO0lBQzFCLENBQUM7SUFpWUgsa0JBQUM7QUFBRCxDQUFDLEFBM2JELElBMmJDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tbmVzdGVkLXRlcm5hcnkgKi9cbmltcG9ydCB7XG4gIElGZXRjaE9wdGlvbnMsXG4gIElSZXF1ZXN0Q29uZmlnLFxuICBJUmVxdWVzdE1ldGhvZCxcbiAgSVJlcXVlc3RPcHRpb25zLFxuICBSZXNwb25zZU9iamVjdCxcbiAgU0RLUmVxdWVzdEludGVyZmFjZSxcbiAgZm9ybWF0VXJsLFxufSBmcm9tICdAY2xvdWRiYXNlL2FkYXB0ZXItaW50ZXJmYWNlJ1xuaW1wb3J0IHsgQURNSU5fUEFUSCwgQ0xJRU5UX0FVVEhfUEFUSCB9IGZyb20gJy4vY29uc3RhbnRzJ1xuaW1wb3J0IHsgZ2V0Q2xvdWRiYXNlQ29udGV4dCwgZ2V0U2VjcmV0SW5mbywgSU5JVF9DT05GSUcgfSBmcm9tICcuL2NvbnRleHQnXG5pbXBvcnQgdHlwZSB7IElDdXN0b21SZXFPcHRzIH0gZnJvbSAnLi90eXBlcydcbmltcG9ydCB7XG4gIGdldEVudixcbiAgaXNGb3JtRGF0YSxcbiAgdG9RdWVyeVN0cmluZyxcbiAgc2FmZVBhcnNlSnNvbixcbiAgb2JqMlN0clJlY29yZCxcbiAgaGVhZGVyc0luaXQySW5kZXhhYmxlLFxuICBnZXRDdXJyUnVuRW52VGFnLFxufSBmcm9tICcuL3V0aWxzJ1xuaW1wb3J0IHsgSUNsb3VkYmFzZUNvbmZpZyB9IGZyb20gJ0BjbG91ZGJhc2UvdHlwZXMnXG5pbXBvcnQgeyBnZXRTZGtWZXJzaW9uIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL2NvbW1vbidcbi8vIOW7tui/n+WKoOi9ve+8jOmBv+WFjemdniBOb2RlIOeOr+Wig+aJk+WMheaXtuW8leWFpeatpOWMhVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbmxldCBzaWduRm46ICgoLi4uYXJnczogYW55W10pID0+IGFueSkgfCBudWxsID0gbnVsbFxuYXN5bmMgZnVuY3Rpb24gZ2V0U2lnbigpIHtcbiAgaWYgKCFzaWduRm4pIHtcbiAgICB0cnkge1xuICAgICAgLy8gQHRzLWlnbm9yZSDigJQg6K+l5YyF5LuF5ZyoIE5vZGUg6L+Q6KGM5pe25a2Y5Zyo77yM5byA5Y+R546v5aKD5Y+v6IO95pyq5a6J6KOFXG4gICAgICBjb25zdCBtb2QgPSBhd2FpdCBpbXBvcnQoJ0BjbG91ZGJhc2Uvc2lnbmF0dXJlLW5vZGVqcycpXG4gICAgICBzaWduRm4gPSBtb2Quc2lnblxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ+e8uuWwkeS+nei1liBAY2xvdWRiYXNlL3NpZ25hdHVyZS1ub2RlanPvvIzor7fmiafooYzku6XkuIvlkb3ku6Tlronoo4XvvJpcXG5cXG4nXG4gICAgICAgICsgJyAgbnBtIGluc3RhbGwgQGNsb3VkYmFzZS9zaWduYXR1cmUtbm9kZWpzXFxuXFxuJ1xuICAgICAgICArICfor6Xkvp3otZbnlKjkuo4gTm9kZSDnjq/looPkuIvnmoTor7fmsYLnrb7lkI3jgIInKVxuICAgIH1cbiAgfVxuICByZXR1cm4gc2lnbkZuIVxufVxuXG4vKipcbiAqIE5vZGUuanMg546v5aKD5LiL55qEIEhUVFAg6K+35rGC5a6e546wXG4gKiDln7rkuo7ljp/nlJ8gZmV0Y2jvvIzmlK/mjIEgR0VUL1BPU1QvUFVUL+S4iuS8oC/kuIvovb0v5rWB5byP6K+35rGCXG4gKiDoh6rliqjlpITnkIYgVjMg562+5ZCN5ZKMIEJlYXJlciBUb2tlbiDorqTor4FcbiAqL1xuZXhwb3J0IGNsYXNzIE5vZGVSZXF1ZXN0IGltcGxlbWVudHMgU0RLUmVxdWVzdEludGVyZmFjZSB7XG4gIC8qKiDor7fmsYLphY3nva7vvIzljIXlkKvorqTor4Hkv6Hmga8gKi9cbiAgY29uZmlnOiBJUmVxdWVzdENvbmZpZyAmIElDbG91ZGJhc2VDb25maWdcblxuICAvKiog6K+35rGC6LaF5pe25pe26Ze077yI5q+r56eS77yJ77yM6buY6K6kIDE1MDAwICovXG4gIHByaXZhdGUgcmVhZG9ubHkgdGltZW91dDogbnVtYmVyXG5cbiAgLyoqIOWPl+i2heaXtuaOp+WItueahOivt+axguexu+Wei+WIl+ihqCAqL1xuICBwcml2YXRlIHJlYWRvbmx5IHJlc3RyaWN0ZWRNZXRob2RzOiBBcnJheTxJUmVxdWVzdE1ldGhvZD5cblxuICBjb25zdHJ1Y3Rvcihjb25maWc6IElSZXF1ZXN0Q29uZmlnICYgSUNsb3VkYmFzZUNvbmZpZykge1xuICAgIGNvbnN0IHsgdGltZW91dCwgcmVzdHJpY3RlZE1ldGhvZHMgfSA9IGNvbmZpZ1xuICAgIHRoaXMudGltZW91dCA9IHRpbWVvdXQgfHwgMTUwMDBcbiAgICB0aGlzLnJlc3RyaWN0ZWRNZXRob2RzID0gcmVzdHJpY3RlZE1ldGhvZHMgfHwgWydnZXQnLCAncG9zdCcsICd1cGxvYWQnLCAnZG93bmxvYWQnXVxuICAgIHRoaXMuY29uZmlnID0gY29uZmlnXG4gIH1cblxuICAvKipcbiAgICog6I635Y+W5a6i5oi356uv5Yet6K+BIGFjY2Vzc190b2tlbu+8jOS4uueuoeeQhuWRmOadg+mZkFxuICAgKiDnlKjkuo7kuI3mlK/mjIEgVjMg562+5ZCN55qE5o6l5Y+j77yI5aaC5pWw5o2u5qih5Z6L44CB5YWz57O75Z6L5pWw5o2u5bqT44CBQUnvvIlcbiAgICovXG4gIGFzeW5jIGdldENsaWVudENyZWRlbnRpYWwob3B0czogeyBvcmlnaW46IHN0cmluZyB9KTogUHJvbWlzZTxhbnk+IHtcbiAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLmZldGNoKHtcbiAgICAgIHVybDogYCR7b3B0cy5vcmlnaW59JHtDTElFTlRfQVVUSF9QQVRIfWAsXG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgJ2NvbnRlbnQtdHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgIH0sXG4gICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgIGdyYW50X3R5cGU6ICdjbGllbnRfY3JlZGVudGlhbHMnLFxuICAgICAgfSksXG4gICAgfSlcblxuICAgIHJldHVybiByZXMuZGF0YT8uYWNjZXNzX3Rva2VuXG4gIH1cblxuICAvKipcbiAgICog6I635Y+W5a6e6ZmF6K+35rGCIFVSTFxuICAgKiDlvZPor7fmsYLmnKrmkLrluKYgQXV0aG9yaXphdGlvbiDkuJTmnKroh6rluKYgYWNjZXNzX3Rva2VuIOaXtu+8jFxuICAgKiDlsIYgL3dlYiDot6/lvoTmm7/mjaLkuLogL2FkbWlu77yI566h55CG56uv562+5ZCN6Lev5b6E77yJXG4gICAqL1xuICBnZXRSZWFsVXJsKHVybDogc3RyaW5nLCBoZWFkZXJzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LCBib2R5OiBhbnkpIHtcbiAgICBpZiAoaGVhZGVycy5BdXRob3JpemF0aW9uPy5yZXBsYWNlKCdCZWFyZXInLCAnJyk/LnRyaW0oKSkge1xuICAgICAgcmV0dXJuIHVybFxuICAgIH1cblxuICAgIGNvbnN0IHBhcmFtcyA9IHR5cGVvZiBib2R5ID09PSAnb2JqZWN0JyA/IGJvZHkgOiBzYWZlUGFyc2VKc29uKGJvZHkpIHx8ICcnXG5cbiAgICBpZiAocGFyYW1zLmFjY2Vzc190b2tlbikge1xuICAgICAgcmV0dXJuIHVybFxuICAgIH1cblxuICAgIGNvbnN0IHVybE9iaiA9IG5ldyBVUkwodXJsKVxuXG4gICAgaWYgKHVybE9iai5wYXRobmFtZSA9PT0gJy93ZWInICYmIHRoaXMuY29uZmlnLmF1dGg/LnNlY3JldElkICYmIHRoaXMuY29uZmlnLmF1dGg/LnNlY3JldEtleSkge1xuICAgICAgdXJsT2JqLnBhdGhuYW1lID0gQURNSU5fUEFUSFxuICAgIH1cbiAgICByZXR1cm4gdXJsT2JqLnRvU3RyaW5nKClcbiAgfVxuXG4gIC8qKlxuICAgKiDkuLror7fmsYLmt7vliqDnrb7lkI3miJborqTor4Hkv6Hmga9cbiAgICpcbiAgICog5aSE55CG6YC76L6R5LyY5YWI57qn77yaXG4gICAqIDEuIOW3suaciSBBdXRob3JpemF0aW9uIGhlYWRlciDihpIg55u05o6l6L+U5ZueXG4gICAqIDIuIC9hdXRoLyDot6/lvoQg4oaSIFNESyDorqTor4HmjqXlj6PvvIzml6DpnIDnrb7lkI1cbiAgICogMy4g5LiN5pSv5oyBIFYzIOetvuWQjeeahOi3r+W+hO+8iC92MS9tb2RlbC8g562J77yJ4oaSIOeUqCBjbGllbnRDcmVkZW50aWFsIEJlYXJlciBUb2tlblxuICAgKiA0LiDlj4LmlbDlkKsgYWNjZXNzX3Rva2VuIOKGkiDml6DpnIDnrb7lkI1cbiAgICogNS4g5YW25LuWIOKGkiDkvb/nlKggVjMg562+5ZCN77yIVEMzLUhNQUMtU0hBMjU277yJXG4gICAqL1xuICBwdWJsaWMgZ2V0UmVxT3B0aW9ucyA9IGFzeW5jIChcbiAgICB1cmw6IHN0cmluZyxcbiAgICBvcHRpb25zOiB7XG4gICAgICBtZXRob2Q/OiBhbnlcbiAgICAgIGhlYWRlcnM6IGFueVxuICAgICAgYm9keT86IGFueVxuICAgICAgY3JlZGVudGlhbHM/OiBzdHJpbmdcbiAgICAgIHNpZ25hbD86IEFib3J0U2lnbmFsXG4gICAgICB1cmw/OiBhbnlcbiAgICB9LFxuICApID0+IHtcbiAgICBjb25zdCB1cmxPYmogPSBuZXcgVVJMKHVybClcblxuICAgIGNvbnN0IHsgVENCX1NPVVJDRSB9ID0gZ2V0Q2xvdWRiYXNlQ29udGV4dCgpXG4gICAgLy8gTm90ZTog5LqR5Ye95pWw6KKr6LCD55So5pe25Y+v6IO96LCD55So56uv5pyq5Lyg6YCSIFNPVVJDRe+8jFRDQl9TT1VSQ0Ug5Y+v6IO95Li656m6XG4gICAgY29uc3QgU09VUkNFID0gYCR7SU5JVF9DT05GSUcuY29udGV4dD8uZXh0ZW5kZWRDb250ZXh0Py5zb3VyY2UgfHwgVENCX1NPVVJDRSB8fCAnJ30sJHthd2FpdCBnZXRDdXJyUnVuRW52VGFnKCl9YFxuXG4gICAgb3B0aW9ucy5oZWFkZXJzID0ge1xuICAgICAgLi4ub3B0aW9ucy5oZWFkZXJzLFxuICAgICAgJ1VzZXItQWdlbnQnOiBgYWRhcHRlci1ub2RlLyR7b3B0aW9ucy5oZWFkZXJzPy5bJ1gtU0RLLVZlcnNpb24nXSB8fCBgQGNsb3VkYmFzZS9qcy1zZGsvJHtnZXRTZGtWZXJzaW9uKCl9YH1gLFxuICAgICAgJ1gtVENCLVNvdXJjZSc6IFNPVVJDRSxcbiAgICAgICdYLUNsaWVudC1UaW1lc3RhbXAnOiBuZXcgRGF0ZSgpLnZhbHVlT2YoKSxcbiAgICAgICdYLVRDQi1SZWdpb24nOiBJTklUX0NPTkZJRy5yZWdpb24gfHwgZ2V0RW52KCdURU5DRU5UQ0xPVURfUkVHSU9OJykgfHwgJycsXG4gICAgICBIb3N0OiB1cmxPYmouaG9zdCxcbiAgICB9XG5cbiAgICAvLyDlt7LmkLrluKbmnInmlYggQXV0aG9yaXphdGlvbu+8jOebtOaOpei/lOWbnlxuICAgIGlmIChvcHRpb25zLmhlYWRlcnMuQXV0aG9yaXphdGlvbj8ucmVwbGFjZSgnQmVhcmVyJywgJycpPy50cmltKCkpIHtcbiAgICAgIHJldHVybiBvcHRpb25zXG4gICAgfVxuXG4gICAgLy8gYXV0aCDnm7jlhbPmjqXlj6PkuI3pnIDopoHnrb7lkI1cbiAgICBpZiAodXJsT2JqLnBhdGhuYW1lLnN0YXJ0c1dpdGgoJy9hdXRoLycpICYmIHVybE9iai5wYXRobmFtZSAhPT0gQ0xJRU5UX0FVVEhfUEFUSCkge1xuICAgICAgcmV0dXJuIG9wdGlvbnNcbiAgICB9XG5cbiAgICBjb25zdCBpc0FkbWluUGF0aCA9IHVybE9iai5wYXRobmFtZSA9PT0gQURNSU5fUEFUSFxuXG4gICAgLy8g6L+Z5Lqb6Lev5b6E5LiN5pSv5oyBIFYzIOetvuWQje+8jOaUueeUqCBjbGllbnRDcmVkZW50aWFsIOiOt+WPliBCZWFyZXIgVG9rZW5cbiAgICBjb25zdCBVTlNVUFBPUlRFRF9WM19TSUdOX1BBVEggPSBbJy92MS9tb2RlbC8nLCAnL3YxL3JkYi8nLCAnL3YxL2FpLyddXG5cbiAgICBpZiAoVU5TVVBQT1JURURfVjNfU0lHTl9QQVRILnNvbWUodiA9PiB1cmxPYmoucGF0aG5hbWUuc3RhcnRzV2l0aCh2KSkpIHtcbiAgICAgIGNvbnN0IHRva2VuID0gYXdhaXQgdGhpcy5nZXRDbGllbnRDcmVkZW50aWFsKHsgb3JpZ2luOiB1cmxPYmoub3JpZ2luIH0pXG4gICAgICBvcHRpb25zLmhlYWRlcnMuQXV0aG9yaXphdGlvbiA9IGBCZWFyZXIgJHt0b2tlbn1gXG4gICAgICByZXR1cm4gb3B0aW9uc1xuICAgIH1cblxuICAgIGxldCB7IHNlY3JldElkLCBzZWNyZXRLZXksIHNlc3Npb25Ub2tlbiB9ID0gdGhpcy5jb25maWc/LmF1dGggfHwge31cbiAgICBjb25zdCB7IHNlY3JldFR5cGUgfSA9IHRoaXMuY29uZmlnPy5hdXRoIHx8IHt9XG4gICAgY29uc3QgeyBtZXRob2QsIGJvZHkgfSA9IG9wdGlvbnNcbiAgICBjb25zdCBoZWFkZXJzID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShvcHRpb25zLmhlYWRlcnMpKVxuICAgIGxldCBwYXJhbXMgPSB0eXBlb2YgYm9keSA9PT0gJ29iamVjdCcgPyBib2R5IDogc2FmZVBhcnNlSnNvbihib2R5KSB8fCB7fVxuXG4gICAgcGFyYW1zLmVudk5hbWUgPSBwYXJhbXM/LmVudiB8fCB0aGlzLmNvbmZpZy5lbnYgfHwgZ2V0U2VjcmV0SW5mbygpPy5lbnYgfHwgJydcblxuICAgIC8vIOWPguaVsOiHquW4piBhY2Nlc3NfdG9rZW7vvIzml6DpnIDnrb7lkI1cbiAgICBpZiAocGFyYW1zLmFjY2Vzc190b2tlbikge1xuICAgICAgcmV0dXJuIG9wdGlvbnNcbiAgICB9XG5cbiAgICAvLyBHRVQg6K+35rGC5Y+C5pWw5bey5ZyoIFVSTCDkuK3vvIznrb7lkI3ml7YgcGFyYW1zIOe9ruepulxuICAgIGlmIChtZXRob2QudG9Mb3dlckNhc2UoKSA9PT0gJ2dldCcpIHtcbiAgICAgIHBhcmFtcyA9IHVuZGVmaW5lZFxuICAgIH1cblxuICAgIC8vIFNFU1NJT05fU0VDUkVUIOexu+Wei+aIluaXoOWvhumSpeaXtu+8jOS7jueOr+Wig+WPmOmHj+iOt+WPluS4tOaXtuWvhumSpVxuICAgIGlmICghc2VjcmV0SWQgfHwgIXNlY3JldEtleSB8fCBzZWNyZXRUeXBlID09PSAnU0VTU0lPTl9TRUNSRVQnKSB7XG4gICAgICBjb25zdCBzZWNyZXRJbmZvID0gZ2V0U2VjcmV0SW5mbygpXG4gICAgICBzZWNyZXRJZCA9IHNlY3JldEluZm8uc2VjcmV0SWRcbiAgICAgIHNlY3JldEtleSA9IHNlY3JldEluZm8uc2VjcmV0S2V5XG4gICAgICBzZXNzaW9uVG9rZW4gPSBzZWNyZXRJbmZvLnNlc3Npb25Ub2tlblxuICAgIH1cblxuICAgIC8vIOS7jeaXoOWvhumSpeWImei3s+i/h+etvuWQjVxuICAgIGlmICghc2VjcmV0SWQgfHwgIXNlY3JldEtleSkge1xuICAgICAgcmV0dXJuIG9wdGlvbnNcbiAgICB9XG5cbiAgICBkZWxldGUgaGVhZGVycy5BdXRob3JpemF0aW9uXG5cbiAgICAvLyBjb250ZW50LXR5cGUg6ZyA5LiO5pyN5Yqh56uv562+5ZCN6aqM6K+B5L+d5oyB5aSn5bCP5YaZ5LiA6Ie0XG4gICAgaWYgKGhlYWRlcnNbJ2NvbnRlbnQtdHlwZSddKSB7XG4gICAgICBoZWFkZXJzWydjb250ZW50LXR5cGUnXSA9IGhlYWRlcnNbJ2NvbnRlbnQtdHlwZSddLnRvTG93ZXJDYXNlKClcbiAgICB9IGVsc2UgaWYgKGhlYWRlcnNbJ0NvbnRlbnQtVHlwZSddKSB7XG4gICAgICBoZWFkZXJzWydDb250ZW50LVR5cGUnXSA9IGhlYWRlcnNbJ0NvbnRlbnQtVHlwZSddLnRvTG93ZXJDYXNlKClcbiAgICB9XG5cbiAgICBpZiAoaXNBZG1pblBhdGggJiYgISFzZXNzaW9uVG9rZW4pIHtcbiAgICAgIHBhcmFtcy5zZXNzaW9uVG9rZW4gPSBzZXNzaW9uVG9rZW5cbiAgICB9XG5cbiAgICBjb25zdCBzaWduZWRQYXJhbXMgPSB7XG4gICAgICBzZWNyZXRJZCxcbiAgICAgIHNlY3JldEtleSxcbiAgICAgIG1ldGhvZCxcbiAgICAgIHVybCxcbiAgICAgIHBhcmFtcyxcbiAgICAgIGhlYWRlcnMsXG4gICAgICB3aXRoU2lnbmVkUGFyYW1zOiBpc0FkbWluUGF0aCxcbiAgICAgIHRpbWVzdGFtcDogTWF0aC5mbG9vcihuZXcgRGF0ZSgpLmdldFRpbWUoKSAvIDEwMDApIC0gMSxcbiAgICAgIGlzQ2xvdWRBcGk6ICFpc0FkbWluUGF0aCxcbiAgICB9XG5cbiAgICBpZiAoIWhlYWRlcnNbJ2NvbnRlbnQtdHlwZSddICYmICFoZWFkZXJzWydDb250ZW50LVR5cGUnXSkge1xuICAgICAgcmV0dXJuIG9wdGlvbnNcbiAgICB9XG5cbiAgICBjb25zdCBzaWduID0gYXdhaXQgZ2V0U2lnbigpXG4gICAgaWYgKCFzaWduKSByZXR1cm4gb3B0aW9uc1xuXG4gICAgY29uc3QgeyBhdXRob3JpemF0aW9uLCB0aW1lc3RhbXAgfSA9IHNpZ24oc2lnbmVkUGFyYW1zKVxuXG4gICAgaWYgKHR5cGVvZiBzZXNzaW9uVG9rZW4gPT09ICdzdHJpbmcnICYmIHNlc3Npb25Ub2tlbiAhPT0gJycpIHtcbiAgICAgIGlmIChpc0FkbWluUGF0aCkge1xuICAgICAgICBoZWFkZXJzLkF1dGhvcml6YXRpb24gPSBgJHthdXRob3JpemF0aW9ufWBcbiAgICAgICAgaGVhZGVyc1snWC1UaW1lc3RhbXAnXSA9IHRpbWVzdGFtcFxuICAgICAgICBoZWFkZXJzWydYLVNpZ25hdHVyZS1FeHBpcmVzJ10gPSA2MDBcbiAgICAgIH0gZWxzZSAge1xuICAgICAgICAvLyDkuLTml7blr4bpkqXpnIDopoHpop3lpJbpmYTluKYgVG9rZW5cbiAgICAgICAgaGVhZGVycy5BdXRob3JpemF0aW9uID0gYCR7YXV0aG9yaXphdGlvbn0sIFRpbWVzdGFtcD0ke3RpbWVzdGFtcH0sIFRva2VuPSR7c2Vzc2lvblRva2VufWBcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaGVhZGVycy5BdXRob3JpemF0aW9uID0gYCR7YXV0aG9yaXphdGlvbn0sIFRpbWVzdGFtcD0ke3RpbWVzdGFtcH1gXG5cbiAgICAgIC8vIGFkbWluIOi3r+W+hOmcgOimgemineWklueahOaXtumXtOaIs+WSjOi/h+acn+WktFxuICAgICAgaWYgKGlzQWRtaW5QYXRoKSB7XG4gICAgICAgIGhlYWRlcnNbJ1gtVGltZXN0YW1wJ10gPSB0aW1lc3RhbXBcbiAgICAgICAgaGVhZGVyc1snWC1TaWduYXR1cmUtRXhwaXJlcyddID0gNjAwXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBoZWFkZXJzLFxuICAgICAgYm9keTogdHlwZW9mIHBhcmFtcyA9PT0gJ29iamVjdCcgPyBKU09OLnN0cmluZ2lmeShwYXJhbXMpIDogcGFyYW1zLFxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgPSAob3B0aW9uczogSVJlcXVlc3RPcHRpb25zKTogUHJvbWlzZTxSZXNwb25zZU9iamVjdD4gPT4gdGhpcy5yZXF1ZXN0KFxuICAgIHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBtZXRob2Q6ICdnZXQnLFxuICAgIH0sXG4gICAgdGhpcy5yZXN0cmljdGVkTWV0aG9kcy5pbmNsdWRlcygnZ2V0JyksXG4gIClcblxuICBwdWJsaWMgcG9zdCA9IChvcHRpb25zOiBJUmVxdWVzdE9wdGlvbnMpOiBQcm9taXNlPFJlc3BvbnNlT2JqZWN0PiA9PiB0aGlzLnJlcXVlc3QoXG4gICAge1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIG1ldGhvZDogJ3Bvc3QnLFxuICAgIH0sXG4gICAgdGhpcy5yZXN0cmljdGVkTWV0aG9kcy5pbmNsdWRlcygncG9zdCcpLFxuICApXG5cbiAgcHVibGljIHB1dCA9IChvcHRpb25zOiBJUmVxdWVzdE9wdGlvbnMpOiBQcm9taXNlPFJlc3BvbnNlT2JqZWN0PiA9PiB0aGlzLnJlcXVlc3Qoe1xuICAgIC4uLm9wdGlvbnMsXG4gICAgbWV0aG9kOiAncHV0JyxcbiAgfSlcblxuICAvKipcbiAgICog5paH5Lu25LiK5LygXG4gICAqIFBPU1Qg5pa55byP77ya5p6E5bu6IEZvcm1EYXRhIOS4iuS8oFxuICAgKiBQVVQg5pa55byP77ya55u05o6l5bCG5paH5Lu25L2c5Li6IGJvZHkg5LiK5LygXG4gICAqL1xuICBwdWJsaWMgdXBsb2FkID0gKG9wdGlvbnM6IElSZXF1ZXN0T3B0aW9ucyk6IFByb21pc2U8UmVzcG9uc2VPYmplY3Q+ID0+IHtcbiAgICBjb25zdCB7IGRhdGE6IF9kYXRhLCBmaWxlLCBuYW1lLCBtZXRob2QsIGhlYWRlcnMgPSB7fSB9ID0gb3B0aW9uc1xuICAgIGlmIChmaWxlID09PSB1bmRlZmluZWQgfHwgbmFtZSA9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignZmlsZSBhbmQgbmFtZSBpcyByZXF1aXJlZCcpXG4gICAgfVxuICAgIGNvbnN0IGRhdGEgPSBvYmoyU3RyUmVjb3JkKF9kYXRhID8/IHt9KVxuICAgIGNvbnN0IGxvd2VyZWRNZXRob2QgPSBtZXRob2Q/LnRvTG93ZXJDYXNlKClcbiAgICBjb25zdCByZXFNZXRob2QgPSBbJ3Bvc3QnLCAncHV0J10uZmluZChtID0+IG0gPT09IGxvd2VyZWRNZXRob2QpID8/ICdwdXQnXG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKVxuICAgIGlmIChyZXFNZXRob2QgPT09ICdwb3N0Jykge1xuICAgICAgT2JqZWN0LmtleXMoZGF0YSkuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgIGZvcm1EYXRhLmFwcGVuZChrZXksIGRhdGFba2V5XSlcbiAgICAgIH0pXG4gICAgICBmb3JtRGF0YS5hcHBlbmQoJ2tleScsIG5hbWUpXG4gICAgICBmb3JtRGF0YS5hcHBlbmQoJ2ZpbGUnLCBmaWxlKVxuICAgICAgcmV0dXJuIHRoaXMucmVxdWVzdChcbiAgICAgICAge1xuICAgICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgICAgZGF0YTogZm9ybURhdGEsXG4gICAgICAgICAgbWV0aG9kOiByZXFNZXRob2QsXG4gICAgICAgIH0sXG4gICAgICAgIHRoaXMucmVzdHJpY3RlZE1ldGhvZHMuaW5jbHVkZXMoJ3VwbG9hZCcpLFxuICAgICAgKVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QoXG4gICAgICB7XG4gICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgIG1ldGhvZDogJ3B1dCcsXG4gICAgICAgIGhlYWRlcnMsXG4gICAgICAgIGJvZHk6IGZpbGUsXG4gICAgICB9LFxuICAgICAgdGhpcy5yZXN0cmljdGVkTWV0aG9kcy5pbmNsdWRlcygndXBsb2FkJyksXG4gICAgKVxuICB9XG5cbiAgLyoqIOaWh+S7tuS4i+i9ve+8iOa1j+iniOWZqOeOr+Wig++8jOmAmui/h+WIm+W7uiA8YT4g5qCH562+6Kem5Y+R5LiL6L2977yJICovXG4gIHB1YmxpYyBkb3dubG9hZCA9IGFzeW5jIChvcHRpb25zOiBJUmVxdWVzdE9wdGlvbnMpOiBQcm9taXNlPHVua25vd24+ID0+IHtcbiAgICBjb25zdCB7IGRhdGEgfSA9IGF3YWl0IHRoaXMuZ2V0KHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBoZWFkZXJzOiB7fSxcbiAgICAgIHJlc3BvbnNlVHlwZTogJ2Jsb2InLFxuICAgIH0pXG4gICAgY29uc3QgdXJsID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwobmV3IEJsb2IoW2RhdGFdKSlcbiAgICBjb25zdCBmaWxlTmFtZSA9IGRlY29kZVVSSUNvbXBvbmVudChuZXcgVVJMKG9wdGlvbnM/LnVybCA/PyAnJykucGF0aG5hbWUuc3BsaXQoJy8nKS5wb3AoKSB8fCAnJylcbiAgICBjb25zdCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpXG5cbiAgICBsaW5rLmhyZWYgPSB1cmxcbiAgICBsaW5rLnNldEF0dHJpYnV0ZSgnZG93bmxvYWQnLCBmaWxlTmFtZSlcbiAgICBsaW5rLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSdcblxuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobGluaylcbiAgICBsaW5rLmNsaWNrKClcbiAgICB3aW5kb3cuVVJMLnJldm9rZU9iamVjdFVSTCh1cmwpXG4gICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChsaW5rKVxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgICAgcmVzb2x2ZSh7XG4gICAgICAgIHN0YXR1c0NvZGU6IDIwMCxcbiAgICAgICAgdGVtcEZpbGVQYXRoOiBvcHRpb25zLnVybCxcbiAgICAgIH0pXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiDlupXlsYIgZmV0Y2gg6K+35rGC77yM5pSv5oyB5rWB5byP5ZON5bqUXG4gICAqIOi2heaXtumAmui/hyBBYm9ydENvbnRyb2xsZXIgKyBzZXRUaW1lb3V0IOWunueOsFxuICAgKi9cbiAgcHVibGljIGZldGNoID0gYXN5bmMgKG9wdGlvbnM6IE9taXQ8SUZldGNoT3B0aW9ucywgJ3NpZ25hbCc+ICYgeyBzaWduYWw/OiBBYm9ydFNpZ25hbDsgY3VzdG9tUmVxT3B0cz86IElDdXN0b21SZXFPcHRzIH0pOiBQcm9taXNlPFJlc3BvbnNlT2JqZWN0PiA9PiB7XG4gICAgY29uc3QgeyBlbmFibGVBYm9ydCA9IGZhbHNlLCBzdHJlYW0gPSBmYWxzZSwgc2lnbmFsLCBjdXN0b21SZXFPcHRzIH0gPSBvcHRpb25zXG4gICAgY29uc3QgdXJsID0gdGhpcy5nZXRSZWFsVXJsKG9wdGlvbnMudXJsLCBvcHRpb25zLmhlYWRlcnMgfHwge30sIG9wdGlvbnMuYm9keSlcbiAgICBjb25zdCBhYm9ydENvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKClcbiAgICBjb25zdCB0aW1lb3V0ID0gY3VzdG9tUmVxT3B0cz8udGltZW91dCB8fCB0aGlzLnRpbWVvdXRcblxuICAgIC8vIOahpeaOpeWklumDqCBzaWduYWwg5Yiw5YaF6YOoIEFib3J0Q29udHJvbGxlclxuICAgIGlmIChzaWduYWwpIHtcbiAgICAgIGlmIChzaWduYWwuYWJvcnRlZCkge1xuICAgICAgICBhYm9ydENvbnRyb2xsZXIuYWJvcnQoKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2lnbmFsLmFkZEV2ZW50TGlzdGVuZXIoJ2Fib3J0JywgKCkgPT4gYWJvcnRDb250cm9sbGVyLmFib3J0KCkpXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8g6LaF5pe26Ieq5Yqo5Lit5patXG4gICAgbGV0IHRpbWVyID0gdW5kZWZpbmVkXG4gICAgaWYgKGVuYWJsZUFib3J0IHx8IHRpbWVvdXQpIHtcbiAgICAgIHRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IHRpbWVvdXRNc2cgPSBg6K+35rGC5ZyoJHt0aW1lb3V0IC8gMTAwMH1z5YaF5pyq5a6M5oiQ77yM5bey5Lit5patYFxuICAgICAgICBjb25zb2xlLndhcm4odGltZW91dE1zZylcbiAgICAgICAgYWJvcnRDb250cm9sbGVyLmFib3J0KG5ldyBFcnJvcih0aW1lb3V0TXNnKSlcbiAgICAgIH0sIHRpbWVvdXQpXG4gICAgfVxuXG4gICAgY29uc3QgaGVhZGVycyA9IG9wdGlvbnMuaGVhZGVycyA/IGhlYWRlcnNJbml0MkluZGV4YWJsZShvcHRpb25zLmhlYWRlcnMpIDogdW5kZWZpbmVkXG5cbiAgICBjb25zdCBmZXRjaE9wdGlvbnMgPSBhd2FpdCB0aGlzLmdldFJlcU9wdGlvbnModXJsLCB7XG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgaGVhZGVycyxcbiAgICAgIGJvZHk6IG9wdGlvbnMuYm9keSBhcyBhbnkgYXMgTm9kZUpTLlJlYWRhYmxlU3RyZWFtLFxuICAgICAgc2lnbmFsOiBhYm9ydENvbnRyb2xsZXIuc2lnbmFsLFxuICAgIH0pXG5cbiAgICBjb25zdCByZXMgPSBhd2FpdCBmZXRjaCh1cmwsIGZldGNoT3B0aW9ucyBhcyBSZXF1ZXN0SW5pdClcbiAgICAgIC50aGVuKCh4KSA9PiB7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aW1lcilcbiAgICAgICAgcmV0dXJuIHhcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKHgpID0+IHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVyKVxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoeClcbiAgICAgIH0pXG5cbiAgICBjb25zdCByZXQgPSB7XG4gICAgICBkYXRhOlxuICAgICAgICArcmVzLnN0YXR1cyA9PT0gMjA0XG4gICAgICAgICAgPyAnJyAvLyAyMDQgTm8gQ29udGVudFxuICAgICAgICAgIDogc3RyZWFtXG4gICAgICAgICAgICA/IHJlcy5ib2R5XG4gICAgICAgICAgICA6IGF3YWl0IHJlcy5qc29uKCksXG4gICAgICBzdGF0dXNDb2RlOiByZXMuc3RhdHVzLFxuICAgICAgaGVhZGVyOiByZXMuaGVhZGVycyxcbiAgICB9XG4gICAgcmV0dXJuIHJldFxuICB9XG5cbiAgLyoqXG4gICAqIOmAmueUqOivt+axguaWueazle+8jOiiqyBnZXQvcG9zdC9wdXQvdXBsb2FkIOetieiwg+eUqFxuICAgKiDotJ/otKPmnoTlu7ogcGF5bG9hZOOAgeiuvue9rui2heaXtuOAgeino+aekOWTjeW6lFxuICAgKlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIOivt+axgumAiemhuVxuICAgKiBAcGFyYW0gZW5hYmxlQWJvcnQgLSDmmK/lkKblkK/nlKjotoXml7bkuK3mlq3vvIjnlLEgcmVzdHJpY3RlZE1ldGhvZHMg5Yaz5a6a77yJXG4gICAqL1xuICBwdWJsaWMgcmVxdWVzdCA9IGFzeW5jIChvcHRpb25zOiBJUmVxdWVzdE9wdGlvbnMsIGVuYWJsZUFib3J0ID0gZmFsc2UpOiBQcm9taXNlPFJlc3BvbnNlT2JqZWN0PiA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgdXJsLFxuICAgICAgaGVhZGVyczogX2hlYWRlcnMgPSB7fSxcbiAgICAgIGRhdGEsXG4gICAgICByZXNwb25zZVR5cGUsXG4gICAgICB3aXRoQ3JlZGVudGlhbHMsXG4gICAgICBib2R5LFxuICAgICAgbWV0aG9kOiBfbWV0aG9kLFxuICAgICAgY3VzdG9tUmVxT3B0cyxcbiAgICB9ID0gb3B0aW9uc1xuICAgIGNvbnN0IGhlYWRlcnMgPSBvYmoyU3RyUmVjb3JkKF9oZWFkZXJzKVxuICAgIGNvbnN0IG1ldGhvZCA9IFN0cmluZyhfbWV0aG9kKS50b0xvd2VyQ2FzZSgpIHx8ICdnZXQnXG4gICAgY29uc3QgYWJvcnRDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpXG4gICAgY29uc3QgeyBzaWduYWwgfSA9IGFib3J0Q29udHJvbGxlclxuICAgIGNvbnN0IHRpbWVvdXQgPSBjdXN0b21SZXFPcHRzPy50aW1lb3V0IHx8IHRoaXMudGltZW91dFxuXG4gICAgLy8g5p6E5bu66K+35rGCIHBheWxvYWTvvJpGb3JtRGF0YSA+IHVybGVuY29kZWQgPiByYXcgYm9keSA+IEpTT05cbiAgICBsZXQgcGF5bG9hZFxuICAgIGlmIChpc0Zvcm1EYXRhKGRhdGEpKSB7XG4gICAgICBwYXlsb2FkID0gZGF0YVxuICAgIH0gZWxzZSBpZiAoaGVhZGVyc1snY29udGVudC10eXBlJ10gPT09ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnKSB7XG4gICAgICBwYXlsb2FkID0gdG9RdWVyeVN0cmluZyhkYXRhID8/IHt9KVxuICAgIH0gZWxzZSBpZiAoYm9keSkge1xuICAgICAgcGF5bG9hZCA9IGJvZHlcbiAgICB9IGVsc2Uge1xuICAgICAgcGF5bG9hZCA9IGRhdGEgPyBKU09OLnN0cmluZ2lmeShkYXRhKSA6IHVuZGVmaW5lZFxuICAgIH1cblxuICAgIGNvbnN0IHJlYWxVcmwgPSB0aGlzLmdldFJlYWxVcmwoXG4gICAgICBmb3JtYXRVcmwoJ2h0dHBzJywgdXJsID8/ICcnLCBtZXRob2QgPT09ICdnZXQnID8gZGF0YSA6IHt9KSxcbiAgICAgIG9wdGlvbnMuaGVhZGVycyB8fCB7fSxcbiAgICAgIHBheWxvYWQsXG4gICAgKVxuXG4gICAgLy8g6LaF5pe26YCa6L+HIEFib3J0Q29udHJvbGxlciArIHNldFRpbWVvdXQg5a6e546wXG4gICAgbGV0IHRpbWVyXG5cbiAgICBpZiAoZW5hYmxlQWJvcnQgfHwgdGltZW91dCkge1xuICAgICAgdGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgY29uc3QgdGltZW91dE1zZyA9IGDor7fmsYLlnKgke3RpbWVvdXQgLyAxMDAwfXPlhoXmnKrlrozmiJDvvIzlt7LkuK3mlq1gXG4gICAgICAgIGNvbnNvbGUud2Fybih0aW1lb3V0TXNnKVxuICAgICAgICBhYm9ydENvbnRyb2xsZXIuYWJvcnQobmV3IEVycm9yKHRpbWVvdXRNc2cpKVxuICAgICAgfSwgdGltZW91dClcbiAgICB9XG5cbiAgICBjb25zdCByZXF1ZXN0T3B0aW9ucyA9IGF3YWl0IHRoaXMuZ2V0UmVxT3B0aW9ucyhyZWFsVXJsLCB7XG4gICAgICBtZXRob2QsXG4gICAgICBoZWFkZXJzLFxuICAgICAgYm9keTogcGF5bG9hZCxcbiAgICAgIGNyZWRlbnRpYWxzOiB3aXRoQ3JlZGVudGlhbHMgPyAnaW5jbHVkZScgOiAnc2FtZS1vcmlnaW4nLFxuICAgICAgc2lnbmFsLFxuICAgIH0pXG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChyZWFsVXJsLCByZXF1ZXN0T3B0aW9ucyBhcyBSZXF1ZXN0SW5pdClcbiAgICAgIGNvbnN0IHJlc3VsdDogUmVzcG9uc2VPYmplY3QgPSB7XG4gICAgICAgIGhlYWRlcjoge30sXG4gICAgICAgIHN0YXR1c0NvZGU6IHJlc3BvbnNlLnN0YXR1cyxcbiAgICAgIH1cblxuICAgICAgdHJ5IHtcbiAgICAgICAgcmVzdWx0LmRhdGEgPSByZXNwb25zZVR5cGUgPT09ICdibG9iJyA/IGF3YWl0IHJlc3BvbnNlLmJsb2IoKSA6IHNhZmVQYXJzZUpzb24oYXdhaXQgcmVzcG9uc2UudGV4dCgpKVxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAvLyDkuIrkvKAgUE9TVCDor7fmsYLlj6/og73ov5Tlm54gWE1MIOetiemdniBKU09OIOagvOW8j++8jOWuuemUmeWkhOeQhlxuICAgICAgICBjb25zb2xlLmxvZygnY2F0Y2ggYW4gZXJyb3InLCBlKVxuICAgICAgICByZXN1bHQuZGF0YSA9IHJlc3BvbnNlVHlwZSA9PT0gJ2Jsb2InID8gYXdhaXQgcmVzcG9uc2UuYmxvYigpIDogYXdhaXQgcmVzcG9uc2UudGV4dCgpXG4gICAgICB9XG5cbiAgICAgIC8vIOWwhuWTjeW6lOWktOe7n+S4gOi9rOS4uuWwj+WGmSBrZXlcbiAgICAgIGNvbnN0IHsgaGVhZGVycyB9ID0gcmVzcG9uc2VcbiAgICAgIGhlYWRlcnMuZm9yRWFjaCgodmFsLCBrZXkpID0+IChyZXN1bHQuaGVhZGVyW2tleS50b0xvd2VyQ2FzZSgpXSA9IHZhbCkpXG5cbiAgICAgIHJldHVybiByZXN1bHRcbiAgICB9IGZpbmFsbHkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRpbWVyKVxuICAgIH1cbiAgfVxufVxuIl19
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cloudbase/app",
|
|
3
|
-
"version": "3.1.
|
|
3
|
+
"version": "3.1.12",
|
|
4
4
|
"description": "cloudbase javascript sdk core",
|
|
5
5
|
"main": "dist/cjs/index.js",
|
|
6
6
|
"module": "dist/esm/index.js",
|
|
@@ -43,8 +43,8 @@
|
|
|
43
43
|
"dependencies": {
|
|
44
44
|
"@cloudbase/adapter-interface": "^0.7.1",
|
|
45
45
|
"@cloudbase/adapter-wx_mp": "^1.3.1",
|
|
46
|
-
"@cloudbase/types": "3.1.
|
|
47
|
-
"@cloudbase/utilities": "3.1.
|
|
46
|
+
"@cloudbase/types": "3.1.12",
|
|
47
|
+
"@cloudbase/utilities": "3.1.12"
|
|
48
48
|
},
|
|
49
49
|
"peerDependencies": {
|
|
50
50
|
"@cloudbase/signature-nodejs": ">=1.0.0",
|
|
@@ -62,5 +62,5 @@
|
|
|
62
62
|
"optional": true
|
|
63
63
|
}
|
|
64
64
|
},
|
|
65
|
-
"gitHead": "
|
|
65
|
+
"gitHead": "da9d5d1413a267c108edd3357c9d7031fc141c0a"
|
|
66
66
|
}
|
|
@@ -166,7 +166,9 @@ export class NodeRequest implements SDKRequestInterface {
|
|
|
166
166
|
const { secretType } = this.config?.auth || {}
|
|
167
167
|
const { method, body } = options
|
|
168
168
|
const headers = JSON.parse(JSON.stringify(options.headers))
|
|
169
|
-
let params = typeof body === 'object' ? body : safeParseJson(body) ||
|
|
169
|
+
let params = typeof body === 'object' ? body : safeParseJson(body) || {}
|
|
170
|
+
|
|
171
|
+
params.envName = params?.env || this.config.env || getSecretInfo()?.env || ''
|
|
170
172
|
|
|
171
173
|
// 参数自带 access_token,无需签名
|
|
172
174
|
if (params.access_token) {
|