vcomply-workflow-engine 6.1.59 → 6.1.61
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/add-multiple-responsibility/add-multiple-responsibility.component.mjs +3 -2
- package/esm2022/lib/sharedComponents/list-loader/list-loader.component.mjs +10 -6
- package/esm2022/lib/sharedComponents/responsibility-risk-selector/responsibility-risk-selector.component.mjs +1 -1
- package/esm2022/lib/workflow/shared/components/grc-object-list/grc-object-list.component.mjs +2 -2
- package/esm2022/lib/workflow/shared/components/grc-responsibility-listing/grc-responsibility-listing.component.mjs +3 -3
- package/esm2022/lib/workflow/shared/components/program-responsibility-listing/program-responsibility-listing.component.mjs +3 -3
- package/esm2022/lib/workflow/shared/components/risk-category-risk-listing/risk-category-risk-listing.component.mjs +2 -2
- package/esm2022/lib/workflow/shared/services/grc.service.mjs +3 -2
- package/esm2022/lib/workflow-compliance/workflow-compliance.component.mjs +13 -10
- package/fesm2022/vcomply-workflow-engine.mjs +31 -22
- package/fesm2022/vcomply-workflow-engine.mjs.map +1 -1
- package/lib/sharedComponents/list-loader/list-loader.component.d.ts +2 -1
- package/lib/workflow-risk/workflow-risk.component.d.ts +1 -1
- package/package.json +1 -1
|
@@ -74,7 +74,7 @@ export class GrcService {
|
|
|
74
74
|
const headers = new HttpHeaders()
|
|
75
75
|
.set('token', this.authService.getAuthorizationToken())
|
|
76
76
|
.set('biz_cycle', formattedCycle);
|
|
77
|
-
return this.http.get(this.env.complianceGet + `sailsResponsibilitiesList&page=1&limit=-1&
|
|
77
|
+
return this.http.get(this.env.complianceGet + `sailsResponsibilitiesList&page=1&limit=-1&rcid=${rcIds}`, { headers });
|
|
78
78
|
}
|
|
79
79
|
getGRCList(event) {
|
|
80
80
|
const headers = new HttpHeaders().set('token', this.authService.getAuthorizationToken());
|
|
@@ -110,6 +110,7 @@ export class GrcService {
|
|
|
110
110
|
.pipe(retry(1));
|
|
111
111
|
}
|
|
112
112
|
checkValidation(grcPayload, isAttributesSelected) {
|
|
113
|
+
debugger;
|
|
113
114
|
const isValidData = grcPayload.name.trim() !== '' &&
|
|
114
115
|
grcPayload.type > -1 &&
|
|
115
116
|
grcPayload.owners.length &&
|
|
@@ -320,4 +321,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
320
321
|
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.AuthService }, { type: i3.Configurations, decorators: [{
|
|
321
322
|
type: Optional
|
|
322
323
|
}] }]; } });
|
|
323
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JjLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi93b3JrZmxvdy9zaGFyZWQvc2VydmljZXMvZ3JjLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLFdBQVcsRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMzRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUdyRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTdCLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQzs7Ozs7QUFLMUIsTUFBTSxPQUFPLFVBQVU7YUFFRSxrQkFBYSxHQUFHO1FBQ3JDLElBQUksRUFBRSxPQUFPO1FBQ2IsWUFBWSxFQUFFLElBQUk7UUFDbEIsSUFBSSxFQUFFLElBQUk7UUFDVixFQUFFLEVBQUUsaUJBQWlCO1FBQ3JCLFdBQVcsRUFBRSx1Q0FBdUM7S0FDckQsQ0FBQztJQTZDRixZQUNVLElBQWdCLEVBQ2hCLFdBQXdCLEVBQ3BCLE1BQXVCO1FBRjNCLFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUE5Q2xCLGdCQUFXLEdBQVc7WUFDcEMsSUFBSSxFQUFFLEVBQUU7WUFDUixJQUFJLEVBQUUsQ0FBQztZQUNQLEtBQUssRUFBRSxDQUFDO1lBQ1IsY0FBYyxFQUFFLEVBQUU7WUFDbEIsTUFBTSxFQUFFLEVBQUU7WUFDViw2QkFBNkIsRUFBRSxFQUFFO1lBQ2pDLFdBQVcsRUFBRSxFQUFFO1lBQ2YsU0FBUyxFQUFFLEVBQUU7WUFDYixVQUFVLEVBQUUsRUFBRTtZQUNkLE1BQU0sRUFBRSxFQUFFO1lBQ1Ysb0JBQW9CLEVBQUUsRUFBRTtZQUN4QixpQkFBaUIsRUFBRSxFQUFFO1lBQ3JCLGNBQWMsRUFBRSxF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fSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3RhYmxlLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi93b3JrZmxvdy1zZXJ2aWNlcy9hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29uZmlndXJhdGlvbnMgfSBmcm9tICcuLi8uLi8uLi9jb25maWd1cmF0aW9ucyc7XG5pbXBvcnQgeyByZXRyeSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQWRkR3JjLCBBdHRyaWJ1dGVzRGV0YWlscywgTGlzdE9iamVjdCB9IGZyb20gJy4uL2ludGVyZmFjZXMvYWRkLWdyYyc7XG5pbXBvcnQgZGF5anMgZnJvbSAnZGF5anMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgR3JjU2VydmljZSB7XG4gIGVudiE6IGFueTtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBFRElUT1JfQ09ORklHID0ge1xuICAgIG1vZGU6ICdwcmltZScsXG4gICAgY29sb3JQYWxldHRlOiB0cnVlLFxuICAgIGxpbms6IHRydWUsXG4gICAgaWQ6ICdncmNfZGVzY3JpcHRpb24nLFxuICAgIHBsYWNlaG9sZGVyOiAnQWRkIGEgZGVzY3JpcHRpb24gZm9yIHRoaXMgR1JDIE9iamVjdCcsXG4gIH07XG4gIHB1YmxpYyByZWFkb25seSBHUkNfUEFZTE9BRDogQWRkR3JjID0ge1xuICAgIG5hbWU6ICcnLFxuICAgIHR5cGU6IDMsIC8vQXNzZXRzLSAwLCBJbnZlbnRvcnktIDEsIFByb2Nlc3NlcyAtIDIsIFZlbmRvcnMtIDNcbiAgICBzdGF0ZTogMCxcbiAgICBwYXJlbnRfZ3JjX2lkczogW10sXG4gICAgb3duZXJzOiBbXSxcbiAgICBlbWFpbF9ub3RpZmljYXRpb25fbWVtYmVyX2lkczogW10sXG4gICAgZGVzY3JpcHRpb246ICcnLFxuICAgIGZyZXF1ZW5jeTogJycsXG4gICAgYXR0cmlidXRlczogW10sXG4gICAgcmNfaWRzOiBbXSxcbiAgICBwcm9ncmFtX2NhdGVnb3J5X2lkczogW10sXG4gICAgcmlza19jYXRlZ29yeV9pZHM6IFtdLFxuICAgIGxpbmtlZF9HUkNfaWRzOiBbXSxcbiAgfTtcblxuICBwdWJsaWMgcmVhZG9ubHkgTElTVF9PQkpFQ1Q6IExpc3RPYmplY3QgPSB7XG4gICAgUkM6IHtcbiAgICAgIGlzTG9hZGluZzogZmFsc2UsXG4gICAgICBkYXRhOiBbXSxcbiAgICAgIHNlbGVjdGVkRGF0YTogW10sXG4gICAgfSxcbiAgICBPV05FUjoge1xuICAgICAgaXNMb2FkaW5nOiBmYWxzZSxcbiAgICAgIGRhdGE6IFtdLFxuICAgICAgc2VsZWN0ZWREYXRhOiBbXSxcbiAgICAgIGRpc2FibGVkSWRzOiBbXSxcbiAgICB9LFxuICAgIE9USEVSX0dSQ19PQkpFQ1RTOiB7XG4gICAgICBpc0xvYWRpbmc6IGZhbHNlLFxuICAgICAgZGF0YToge30sXG4gICAgICBzZWxlY3RlZERhdGE6IFtdLFxuICAgIH0sXG4gICAgUklTS19DQVRFR09SWToge1xuICAgICAgaXNMb2FkaW5nOiBmYWxzZSxcbiAgICAgIGRhdGE6IHt9LFxuICAgICAgc2VsZWN0ZWREYXRhOiBbXSxcbiAgICB9LFxuICAgIFBST0dSQU1fUkVTUE9OU0lCSUxJVFk6IHtcbiAgICAgIGlzTG9hZGluZzogZmFsc2UsXG4gICAgICBkYXRhOiB7fSxcbiAgICAgIHNlbGVjdGVkRGF0YTogW10sXG4gICAgfSxcbiAgfTtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxuICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIGNvbmZpZz86IENvbmZpZ3VyYXRpb25zXG4gICkge1xuICAgIGlmIChjb25maWcpIHtcbiAgICAgIHRoaXMuZW52ID0gY29uZmlnLmVudkNvbmZpZztcbiAgICB9XG4gIH1cblxuICBnZXRBbGxSZXNwb25zaWJpbGl0aWVzKHBhZ2VObzogbnVtYmVyLCByY0lkczogc3RyaW5nKSB7XG4gICAgY29uc3QgYnVzaW5lc3NDeWNsZSA9IHRoaXMuZ2V0QnVzaW5lc3NDeWNsZSgpO1xuICAgIGNvbnN0IGZvcm1hdHRlZEN5Y2xlID0gYnVzaW5lc3NDeWNsZS5zZWxlY3RlZF9jeWNsZVxuICAgICAgPyBkYXlqcyhidXNpbmVzc0N5Y2xlLnNlbGVjdGVkX2N5Y2xlLnNwbGl0KCctJylbMF0pLmZvcm1hdCgnWVlZWS1NTS1ERCcpICsgXG4gICAgICAgICc6JyArIFxuICAgICAgICBkYXlqcyhidXNpbmVzc0N5Y2xlLnNlbGVjdGVkX2N5Y2xlLnNwbGl0KCctJylbMV0pLmZvcm1hdCgnWVlZWS1NTS1ERCcpXG4gICAgICA6ICcnO1xuICAgIFxuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKVxuICAgICAgLnNldCgndG9rZW4nLCB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpKVxuICAgICAgLnNldCgnYml6X2N5Y2xlJywgZm9ybWF0dGVkQ3ljbGUpO1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PGFueVtdPihcbiAgICAgIHRoaXMuZW52LmNvbXBsaWFuY2VHZXQgKyBgc2FpbHNSZXNwb25zaWJpbGl0aWVzTGlzdCZwYWdlPTEmbGltaXQ9LTEmcmM9JHtyY0lkc31gLFxuICAgICAgeyBoZWFkZXJzIH1cbiAgICApO1xuICB9XG5cbiAgZ2V0R1JDTGlzdChldmVudD86IGFueSkge1xuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoXG4gICAgICAndG9rZW4nLFxuICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKVxuICAgICk7XG4gICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XG4gICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZCgnc3RhdGUnLCBldmVudD8uc3RhdGUgPz8gMSk7XG4gICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZCgnZ3JjVHlwZScsIGV2ZW50Py50eXBlID8/IDApO1xuICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoJ3BhZ2UnLCBldmVudD8ucGFnZU5vID8/IDEpO1xuICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoJ3JjSWRzJywgZXZlbnQ/LnJjX2lkcyA/PyAnJyk7XG4gICAgcGFyYW1zID0gZXZlbnQ/LnNlYXJjaFN0cmluZ1xuICAgICAgPyBwYXJhbXMuYXBwZW5kKCduYW1lJywgZXZlbnQ/LnNlYXJjaFN0cmluZyA/PyAnJylcbiAgICAgIDogcGFyYW1zO1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5nZXQ8YW55W10+KHRoaXMuZW52Py5ncmNfZ2V0ICsgJ2dyYy9nZXRHUkNMaXN0Jywge1xuICAgICAgICBwYXJhbXMsXG4gICAgICAgIGhlYWRlcnMsXG4gICAgICB9KVxuICAgICAgLnBpcGUocmV0cnkoMSkpO1xuICB9XG5cbiAgZ2V0R1JDVGFic0NvdW50KGV2ZW50PzogYW55KSB7XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpLnNldChcbiAgICAgICd0b2tlbicsXG4gICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpXG4gICAgKTtcbiAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcbiAgICBwYXJhbXMgPSBldmVudD8uc2VhcmNoU3RyaW5nXG4gICAgICA/IHBhcmFtcy5hcHBlbmQoJ25hbWUnLCBldmVudD8uc2VhcmNoU3RyaW5nID8/ICcnKVxuICAgICAgOiBwYXJhbXM7XG4gICAgaWYgKGV2ZW50Py5yY19pZHMpIHtcbiAgICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoJ3JjSWRzJywgZXZlbnQ/LnJjX2lkcyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5nZXQ8YW55W10+KHRoaXMuZW52Py5ncmNfZ2V0ICsgJ2dyYy9nZXRHUkNDb3VudCcsIHtcbiAgICAgICAgcGFyYW1zLFxuICAgICAgICBoZWFkZXJzLFxuICAgICAgfSlcbiAgICAgIC5waXBlKHJldHJ5KDEpKTtcbiAgfVxuXG4gIHB1YmxpYyBjaGVja1ZhbGlkYXRpb24oZ3JjUGF5bG9hZDogQWRkR3JjLCBpc0F0dHJpYnV0ZXNTZWxlY3RlZDogYm9vbGVhbikge1xuICAgIGNvbnN0IGlzVmFsaWREYXRhID1cbiAgICAgIGdyY1BheWxvYWQubmFtZS50cmltKCkgIT09ICcnICYmXG4gICAgICBncmNQYXlsb2FkLnR5cGUgPiAtMSAmJlxuICAgICAgZ3JjUGF5bG9hZC5vd25lcnMubGVuZ3RoICYmXG4gICAgICBncmNQYXlsb2FkLnJjX2lkcy5sZW5ndGg7XG4gICAgcmV0dXJuIChcbiAgICAgIGlzVmFsaWREYXRhICYmXG4gICAgICAoIWlzQXR0cmlidXRlc1NlbGVjdGVkIHx8XG4gICAgICAgIHRoaXMuY2hlY2tBdHRyaWJ1dGVWYWxpZGF0aW9uKGdyY1BheWxvYWQuYXR0cmlidXRlcykpXG4gICAgKTtcbiAgfVxuXG4gIGNoZWNrQXR0cmlidXRlVmFsaWRhdGlvbihhdHRyaWJ1dGVzOiBBdHRyaWJ1dGVzRGV0YWlsc1tdKTogYm9vbGVhbiB7XG4gICAgZm9yIChjb25zdCBvYmogb2YgYXR0cmlidXRlcykge1xuICAgICAgaWYgKG9iai5pc1JlcXVpcmVkKSB7XG4gICAgICAgIGlmIChvYmoudHlwZSA9PT0gJ3NpbmdsZS10ZXh0Ym94JyB8fCBvYmoudHlwZSA9PT0gJ2RhdGUtdGltZScpIHtcbiAgICAgICAgICBjb25zdCBjaG9pY2UgPSBvYmouY2hvaWNlc1swXTtcbiAgICAgICAgICBpZiAodHlwZW9mIGNob2ljZS52YWx1ZSA9PT0gJ3N0cmluZycgJiYgY2hvaWNlLnZhbHVlLnRyaW0oKSA9PT0gJycpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAob2JqLnR5cGUgPT09ICdjaGVja2JveCcgfHwgb2JqLnR5cGUgPT09ICdkcm9wZG93bicpIHtcbiAgICAgICAgICBsZXQgaXNDaG9pY2VTZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgICAgIGlmIChvYmouaGFzT3RoZXIgJiYgb2JqPy5pc19vdGhlcl9zZWxlY3RlZCkge1xuICAgICAgICAgICAgaXNDaG9pY2VTZWxlY3RlZCA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICghaXNDaG9pY2VTZWxlY3RlZCkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBjaG9pY2Ugb2Ygb2JqLmNob2ljZXMpIHtcbiAgICAgICAgICAgICAgaWYgKGNob2ljZS5pc19zZWxlY3RlZCkge1xuICAgICAgICAgICAgICAgIGlzQ2hvaWNlU2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKCFpc0Nob2ljZVNlbGVjdGVkKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgY2hlY2tBdHRyaWJ1dGVzU2VsZWN0ZWQoYXR0cmlidXRlczogQXR0cmlidXRlc0RldGFpbHNbXSk6IGJvb2xlYW4ge1xuICAgIGZvciAoY29uc3Qgb2JqIG9mIGF0dHJpYnV0ZXMpIHtcbiAgICAgIGlmIChvYmoudHlwZSA9PT0gJ3NpbmdsZS10ZXh0Ym94JyB8fCBvYmoudHlwZSA9PT0gJ2RhdGUtdGltZScpIHtcbiAgICAgICAgY29uc3QgY2hvaWNlID0gb2JqLmNob2ljZXNbMF07XG4gICAgICAgIGlmICh0eXBlb2YgY2hvaWNlLnZhbHVlID09PSAnc3RyaW5nJyAmJiBjaG9pY2UudmFsdWUudHJpbSgpID09PSAnJykge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChvYmoudHlwZSA9PT0gJ2NoZWNrYm94JyB8fCBvYmoudHlwZSA9PT0gJ2Ryb3Bkb3duJykge1xuICAgICAgICBsZXQgaXNDaG9pY2VTZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgICBmb3IgKGNvbnN0IGNob2ljZSBvZiBvYmouY2hvaWNlcykge1xuICAgICAgICAgIGlmIChjaG9pY2UuaXNfc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgIGlzQ2hvaWNlU2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICghaXNDaG9pY2VTZWxlY3RlZCkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGNoZWNrRWFjaEF0dHJpYnV0ZVZhbGlkYXRpb24oYXR0cmlidXRlOiBBdHRyaWJ1dGVzRGV0YWlscyk6IGJvb2xlYW4ge1xuICAgIGlmIChhdHRyaWJ1dGUuaXNSZXF1aXJlZCkge1xuICAgICAgaWYgKFxuICAgICAgICBhdHRyaWJ1dGUudHlwZSA9PT0gJ3NpbmdsZS10ZXh0Ym94JyB8fFxuICAgICAgICBhdHRyaWJ1dGUudHlwZSA9PT0gJ2RhdGUtdGltZSdcbiAgICAgICkge1xuICAgICAgICBjb25zdCBjaG9pY2UgPSBhdHRyaWJ1dGUuY2hvaWNlc1swXTtcbiAgICAgICAgaWYgKHR5cGVvZiBjaG9pY2UudmFsdWUgPT09ICdzdHJpbmcnICYmIGNob2ljZS52YWx1ZS50cmltKCkgPT09ICcnKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKFxuICAgICAgICBhdHRyaWJ1dGUudHlwZSA9PT0gJ2NoZWNrYm94JyB8fFxuICAgICAgICBhdHRyaWJ1dGUudHlwZSA9PT0gJ2Ryb3Bkb3duJ1xuICAgICAgKSB7XG4gICAgICAgIGxldCBpc0Nob2ljZVNlbGVjdGVkID0gZmFsc2U7XG4gICAgICAgIGZvciAoY29uc3QgY2hvaWNlIG9mIGF0dHJpYnV0ZS5jaG9pY2VzKSB7XG4gICAgICAgICAgaWYgKGNob2ljZS5pc19zZWxlY3RlZCkge1xuICAgICAgICAgICAgaXNDaG9pY2VTZWxlY3RlZCA9IHRydWU7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpc0Nob2ljZVNlbGVjdGVkKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGdldFJpc2tDYXRlZ29yaWVzKGV2ZW50PzogYW55KSB7XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpLnNldChcbiAgICAgICd0b2tlbicsXG4gICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpXG4gICAgKTtcbiAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcbiAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKCdyZXR1cm5UeXBlJywgMSk7XG4gICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZCgnY2F0ZWdvcnlUeXBlJywgZXZlbnQ/LnR5cGUgPz8gMSk7XG4gICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZCgncGFnZScsIGV2ZW50Py5wYWdlTm8gPz8gMSk7XG4gICAgcGFyYW1zID0gZXZlbnQ/LnR5cGUgPT09IDAgPyBwYXJhbXMuYXBwZW5kKCdyaXNrRmxhZycsIDEpIDogcGFyYW1zO1xuICAgIHBhcmFtcyA9IGV2ZW50Py5zZWFyY2hTdHJpbmdcbiAgICAgID8gcGFyYW1zLmFwcGVuZCgncScsIGV2ZW50Py5zZWFyY2hTdHJpbmcgPz8gJycpXG4gICAgICA6IHBhcmFtcztcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnlbXT4odGhpcy5lbnY/LnJpc2sgKyAnY2F0ZWdvcnkvbGlzdCcsIHtcbiAgICAgIHBhcmFtcyxcbiAgICAgIGhlYWRlcnMsXG4gICAgfSk7XG4gIH1cblxuICBnZXRSaXNrQ2F0ZWdvcmllc0NvdW50KGV2ZW50PzogYW55KSB7XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpLnNldChcbiAgICAgICd0b2tlbicsXG4gICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpXG4gICAgKTtcbiAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcbiAgICBwYXJhbXMgPSBldmVudD8uc2VhcmNoU3RyaW5nXG4gICAgICA/IHBhcmFtcy5hcHBlbmQoJ3EnLCBldmVudD8uc2VhcmNoU3RyaW5nID8/ICcnKVxuICAgICAgOiBwYXJhbXM7XG4gICAgaWYgKGV2ZW50Py5yY19pZHM/Lmxlbmd0aCkge1xuICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgncmNfaWRzJywgZXZlbnQucmNfaWRzLmpvaW4oJywnKSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PGFueVtdPih0aGlzLmVudj8ucmlzayArICdjYXRlZ29yeS9jb3VudCcsIHtcbiAgICAgIHBhcmFtcyxcbiAgICAgIGhlYWRlcnMsXG4gICAgfSk7XG4gIH1cblxuICBnZXRSaXNrcyhwYXlsb2FkPzogYW55KSB7XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpLnNldChcbiAgICAgICd0b2tlbicsXG4gICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpXG4gICAgKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8YW55W10+KFxuICAgICAgdGhpcy5lbnY/LnJpc2sgKyAnY2F0ZWdvcnkvcmlza2xpc3QnLFxuICAgICAgcGF5bG9hZCxcbiAgICAgIHtcbiAgICAgICAgaGVhZGVycyxcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgZ2V0QnVzaW5lc3NDeWNsZSgpIHtcbiAgICBsZXQgYnVzaW5lc3NDeWNsZSA9IEpTT04ucGFyc2UoXG4gICAgICBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnYnVzaW5lc3NDeWNsZScpID8/ICd7fSdcbiAgICApO1xuICAgIGxldCBjdXJyZW50QnVzaW5lc3NDeWNsZSA9IHtcbiAgICAgIHNlbGVjdGVkX2N5Y2xlOiBidXNpbmVzc0N5Y2xlXG4gICAgICAgID8gYnVzaW5lc3NDeWNsZT8uc2VsZWN0ZWRDeWNsZT8uc3RhcnRfZGF0ZSArXG4gICAgICAgICAgJy0nICtcbiAgICAgICAgICBidXNpbmVzc0N5Y2xlPy5zZWxlY3RlZEN5Y2xlPy5lbmRfZGF0ZVxuICAgICAgICA6ICcnLFxuICAgICAgc3RhcnRfZGF0ZTogYnVzaW5lc3NDeWNsZSA/IGJ1c2luZXNzQ3ljbGU/LnNlbGVjdGVkQ3ljbGU/LnN0YXJ0X2RhdGUgOiAnJyxcbiAgICAgIGVuZF9kYXRlOiBidXNpbmVzc0N5Y2xlID8gYnVzaW5lc3NDeWNsZT8uc2VsZWN0ZWRDeWNsZT8uZW5kX2RhdGUgOiAnJyxcbiAgICAgIHNlbGVjdGVkX2N5Y2xlX2FycjogYnVzaW5lc3NDeWNsZVxuICAgICAgICA/IGJ1c2luZXNzQ3ljbGU/LnNlbGVjdGVkQ3ljbGU/LnNlbGVjdGVkX2N5Y2xlX2FyclxuICAgICAgICA6IFtdLFxuICAgIH07XG4gICAgcmV0dXJuIGN1cnJlbnRCdXNpbmVzc0N5Y2xlO1xuICB9XG5cbiAgZ2V0UHJvZ3JhbXNMaXN0KHJlcTogYW55KSB7XG4gICAgLy8gdGhpcy5nZXRVc2VyRGV0YWlscygpO1xuICAgIGxldCBodHRwT3B0aW9uczogYW55ID0ge307XG4gICAgaWYgKHJlcT8ucGFyYW1zKSB7XG4gICAgICBodHRwT3B0aW9ucy5wYXJhbXMgPSByZXEucGFyYW1zO1xuICAgIH1cbiAgICBpZiAocmVxPy5oZWFkZXJzKSB7XG4gICAgICBsZXQgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpO1xuICAgICAgaHR0cE9wdGlvbnMuaGVhZGVycyA9IGhlYWRlcnMuYXBwZW5kKFxuICAgICAgICAncGF5bG9hZC1vYmplY3QnLFxuICAgICAgICBKU09OLnN0cmluZ2lmeShyZXEuaGVhZGVycylcbiAgICAgICk7XG4gICAgICBodHRwT3B0aW9ucy5oZWFkZXJzID0gaHR0cE9wdGlvbnMuaGVhZGVycy5hcHBlbmQoXG4gICAgICAgICd0b2tlbicsXG4gICAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKClcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmdldDxhbnlbXT4oXG4gICAgICAgIHRoaXMuZW52Py5wcm9ncmFtRW5kcG9pbnQgKyAnL2NhdGVnb3JpZXNMaXN0P293bmVyX2xpc3Q9MScsXG4gICAgICAgIGh0dHBPcHRpb25zXG4gICAgICApXG4gICAgICAucGlwZShyZXRyeSgyKSk7XG4gIH1cblxuICBnZXRQcm9ncmFtc0xpc3RDb3VudChyZXE6IGFueSkge1xuICAgIGxldCBodHRwT3B0aW9uczogYW55ID0ge307XG4gICAgaWYgKHJlcT8ucGFyYW1zKSB7XG4gICAgICBodHRwT3B0aW9ucy5wYXJhbXMgPSByZXEucGFyYW1zO1xuICAgIH1cbiAgICBpZiAocmVxPy5oZWFkZXJzKSB7XG4gICAgICBsZXQgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpO1xuICAgICAgaHR0cE9wdGlvbnMuaGVhZGVycyA9IGhlYWRlcnMuYXBwZW5kKFxuICAgICAgICAncGF5bG9hZC1vYmplY3QnLFxuICAgICAgICBKU09OLnN0cmluZ2lmeShyZXE/LmhlYWRlcnMpXG4gICAgICApO1xuICAgICAgaHR0cE9wdGlvbnMuaGVhZGVycyA9IGh0dHBPcHRpb25zLmhlYWRlcnMuYXBwZW5kKFxuICAgICAgICAndG9rZW4nLFxuICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZ2V0PGFueVtdPih0aGlzLmVudj8ucHJvZ3JhbUVuZHBvaW50ICsgJy9vdmVydmlldy1jb3VudCcsIGh0dHBPcHRpb25zKVxuICAgICAgLnBpcGUocmV0cnkoMikpO1xuICB9XG5cbiAgZ2V0U3ViQ2F0ZWdvcnlMaXN0KHBheWxvYWQ6IGFueSkge1xuICAgIGlmIChwYXlsb2FkPy5zY29wZVR5cGUgPT09ICdub3RfY29tcGxldGVkJykge1xuICAgICAgcGF5bG9hZC5zY29wZVR5cGUgPSAnbm90Q29tcGxldGVkJztcbiAgICB9XG4gICAgbGV0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKTtcbiAgICBoZWFkZXJzID0gaGVhZGVycy5hcHBlbmQoXG4gICAgICAncGF5bG9hZC1vYmplY3QnLFxuICAgICAgSlNPTi5zdHJpbmdpZnkocGF5bG9hZD8uYnVzaW5lc3NDeWNsZSlcbiAgICApO1xuICAgIGhlYWRlcnMgPSBoZWFkZXJzLmFwcGVuZCgndG9rZW4nLCB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpKTtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZ2V0PGFueT4oXG4gICAgICAgIHRoaXMuZW52Py5wcm9ncmFtRW5kcG9pbnQgK1xuICAgICAgICAgICcvc3ViQ2F0ZWdvcmllcz9pc0J1c2luZXNzQ3ljbGU9dHJ1ZSZwYXJlbnRJZD0nICtcbiAgICAgICAgICBwYXlsb2FkPy5pZCArXG4gICAgICAgICAgJyZ0eXBlPScgK1xuICAgICAgICAgIHBheWxvYWQ/LnNjb3BlVHlwZSArXG4gICAgICAgICAgJyZjYWxsRnJvbT1ncmMnICtcbiAgICAgICAgICAocGF5bG9hZD8uc2VhcmNoVGV4dCA/ICcmcT0nICsgZW5jb2RlVVJJKHBheWxvYWQ/LnNlYXJjaFRleHQpIDogJycpICtcbiAgICAgICAgICAocGF5bG9hZD8ubmFtZSA/ICcmc29ydEJ5PScgKyBwYXlsb2FkPy5uYW1lIDogJycpICtcbiAgICAgICAgICAocGF5bG9hZD8uc29ydGluZ0NvdW50ID8gJyZzb3J0VmFsdWU9JyArIHBheWxvYWQ/LnNvcnRpbmdDb3VudCA6ICcnKSArXG4gICAgICAgICAgKCcmcGFnZT0nICsgcGF5bG9hZD8ucGFnZSksXG4gICAgICAgIHsgaGVhZGVycyB9XG4gICAgICApXG4gICAgICAucGlwZShyZXRyeSgxKSk7XG4gIH1cblxuICBnZXRSZXNwb25zaWJpbGl0eUJ5Q2F0ZWdvcnlJZChcbiAgICByZXE6IGFueSxcbiAgICBwYXlsb2FkPzogYW55LFxuICAgIGZpbHRlclBvbGljeURhdGE/OiBhbnlcbiAgKSB7XG4gICAgLy8gaHR0cHM6Ly9kZXZhcGkudi1jb21wbHkuY29tL2NhdGVnb3J5L2VkaXRDYXRlZ29yeVxuICAgIGxldCBodHRwT3B0aW9uczogYW55ID0ge307XG4gICAgaHR0cE9wdGlvbnMucGFyYW1zID0gcmVxO1xuICAgIGxldCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCk7XG4gICAgLy8gaGVhZGVycyA9IGhlYWRlcnMuYXBwZW5kKCd4LWJ1c2luZXNzLWN5Y2xlJyxKU09OLnN0cmluZ2lmeShwYXlsb2FkKSk7XG4gICAgaGVhZGVycyA9IGhlYWRlcnMuYXBwZW5kKCdwYXlsb2FkLW9iamVjdCcsIEpTT04uc3RyaW5naWZ5KHBheWxvYWQpKTtcbiAgICBoZWFkZXJzID0gaGVhZGVycy5hcHBlbmQoJ3Rva2VuJywgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKSk7XG4gICAgaHR0cE9wdGlvbnMuaGVhZGVycyA9IGhlYWRlcnM7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmdldCh0aGlzLmVudj8ucHJvZ3JhbUVuZHBvaW50ICsgJy9yZXNwb25zaWJpbGl0eUxpc3QnLCBodHRwT3B0aW9ucylcbiAgICAgIC5waXBlKHJldHJ5KDEpKTtcbiAgfVxufVxuIl19
|
|
324
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JjLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi93b3JrZmxvdy9zaGFyZWQvc2VydmljZXMvZ3JjLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLFdBQVcsRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMzRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUdyRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTdCLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQzs7Ozs7QUFLMUIsTUFBTSxPQUFPLFVBQVU7YUFFRSxrQkFBYSxHQUFHO1FBQ3JDLElBQUksRUFBRSxPQUFPO1FBQ2IsWUFBWSxFQUFFLElBQUk7UUFDbEIsSUFBSSxFQUFFLElBQUk7UUFDVixFQUFFLEVBQUUsaUJBQWlCO1FBQ3JCLFdBQVcsRUFBRSx1Q0FBdUM7S0FDckQsQ0FBQztJQTZDRixZQUNVLElBQWdCLEVBQ2hCLFdBQXdCLEVBQ3BCLE1BQXVCO1FBRjNCLFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUE5Q2xCLGdCQUFXLEdBQVc7WUFDcEMsSUFBSSxFQUFFLEVBQUU7WUFDUixJQUFJLEVBQUUsQ0FBQztZQUNQLEtBQUssRUFBRSxDQUFDO1lBQ1IsY0FBYyxFQUFFLEVBQUU7WUFDbEIsTUFBTSxFQUFFLEVBQUU7WUFDViw2QkFBNkIsRUFBRSxFQUFFO1lBQ2pDLFdBQVcsRUFBRSxFQUFFO1lBQ2YsU0FBUyxFQUFFLEVBQUU7WUFDYixVQUFVLEVBQUUsRUFBRTtZQUNkLE1BQU0sRUFBRSxFQUFFO1lBQ1Ysb0JBQW9CLEVBQUUsRUFBRTtZQUN4QixpQkFBaUIsRUFBRSxFQUFFO1lBQ3JCLGNBQWMsRUFBRSxFQUFFO1NBQ25CLENBQUM7UUFFYyxnQkFBVyxHQUFlO1lBQ3hDLEVBQUUsRUFBRTtnQkFDRixTQUFTLEVBQUUsS0FBSztnQkFDaEIsSUFBSSxFQUFFLEVBQUU7Z0JBQ1IsWUFBWSxFQUFFLEVBQUU7YUFDakI7WUFDRCxLQUFLLEVBQUU7Z0JBQ0wsU0FBUyxFQUFFLEtBQUs7Z0JBQ2hCLElBQUksRUFBRSxFQUFFO2dCQUNSLFlBQVksRUFBRSxFQUFFO2dCQUNoQixXQUFXLEVBQUUsRUFBRTthQUNoQjtZQUNELGlCQUFpQixFQUFFO2dCQUNqQixTQUFTLEVBQUUsS0FBSztnQkFDaEIsSUFBSSxFQUFFLEVBQUU7Z0JBQ1IsWUFBWSxFQUFFLEVBQUU7YUFDakI7WUFDRCxhQUFhLEVBQUU7Z0JBQ2IsU0FBUyxFQUFFLEtBQUs7Z0JBQ2hCLElBQUksRUFBRSxFQUFFO2dCQUNSLFlBQVksRUFBRSxFQUFFO2FBQ2pCO1lBQ0Qsc0JBQXNCLEVBQUU7Z0JBQ3RCLFNBQVMsRUFBRSxLQUFLO2dCQUNoQixJQUFJLEVBQUUsRUFBRTtnQkFDUixZQUFZLEVBQUUsRUFBRTthQUNqQjtTQUNGLENBQUM7UUFNQSxJQUFJLE1BQU0sRUFBRTtZQUNWLElBQUksQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQztTQUM3QjtJQUNILENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxNQUFjLEVBQUUsS0FBYTtRQUNsRCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUM5QyxNQUFNLGNBQWMsR0FBRyxhQUFhLENBQUMsY0FBYztZQUNqRCxDQUFDLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQztnQkFDdEUsR0FBRztnQkFDSCxLQUFLLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDO1lBQ3hFLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFFUCxNQUFNLE9BQU8sR0FBRyxJQUFJLFdBQVcsRUFBRTthQUM5QixHQUFHLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMscUJBQXFCLEVBQUUsQ0FBQzthQUN0RCxHQUFHLENBQUMsV0FBVyxFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBQ3BDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQ2xCLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxHQUFHLGtEQUFrRCxLQUFLLEVBQUUsRUFDbEYsRUFBRSxPQUFPLEVBQUUsQ0FDWixDQUFDO0lBQ0osQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUFXO1FBQ3BCLE1BQU0sT0FBTyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUMsR0FBRyxDQUNuQyxPQUFPLEVBQ1AsSUFBSSxDQUFDLFdBQVcsQ0FBQyxxQkFBcUIsRUFBRSxDQUN6QyxDQUFDO1FBQ0YsSUFBSSxNQUFNLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUM5QixNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNuRCxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNwRCxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNuRCxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNyRCxNQUFNLEdBQUcsS0FBSyxFQUFFLFlBQVk7WUFDMUIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxZQUFZLElBQUksRUFBRSxDQUFDO1lBQ2xELENBQUMsQ0FBQyxNQUFNLENBQUM7UUFDWCxPQUFPLElBQUksQ0FBQyxJQUFJO2FBQ2IsR0FBRyxDQUFRLElBQUksQ0FBQyxHQUFHLEVBQUUsT0FBTyxHQUFHLGdCQUFnQixFQUFFO1lBQ2hELE1BQU07WUFDTixPQUFPO1NBQ1IsQ0FBQzthQUNELElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwQixDQUFDO0lBRUQsZUFBZSxDQUFDLEtBQVc7UUFDekIsTUFBTSxPQUFPLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQyxHQUFHLENBQ25DLE9BQU8sRUFDUCxJQUFJLENBQUMsV0FBVyxDQUFDLHFCQUFxQixFQUFFLENBQ3pDLENBQUM7UUFDRixJQUFJLE1BQU0sR0FBRyxJQUFJLFVBQVUsRUFBRSxDQUFDO1FBQzlCLE1BQU0sR0FBRyxLQUFLLEVBQUUsWUFBWTtZQUMxQixDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLFlBQVksSUFBSSxFQUFFLENBQUM7WUFDbEQsQ0FBQyxDQUFDLE1BQU0sQ0FBQztRQUNYLElBQUksS0FBSyxFQUFFLE1BQU0sRUFBRTtZQUNqQixNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1NBQ2hEO1FBQ0QsT0FBTyxJQUFJLENBQUMsSUFBSTthQUNiLEdBQUcsQ0FBUSxJQUFJLENBQUMsR0FBRyxFQUFFLE9BQU8sR0FBRyxpQkFBaUIsRUFBRTtZQUNqRCxNQUFNO1lBQ04sT0FBTztTQUNSLENBQUM7YUFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEIsQ0FBQztJQUVNLGVBQWUsQ0FBQyxVQUFrQixFQUFFLG9CQUE2QjtRQUN0RSxRQUFRLENBQUM7UUFDVCxNQUFNLFdBQVcsR0FDZixVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUU7WUFDN0IsVUFBVSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7WUFDcEIsVUFBVSxDQUFDLE1BQU0sQ0FBQyxNQUFNO1lBQ3hCLFVBQVUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO1FBQzNCLE9BQU8sQ0FDTCxXQUFXO1lBQ1gsQ0FBQyxDQUFDLG9CQUFvQjtnQkFDcEIsSUFBSSxDQUFDLHdCQUF3QixDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUN4RCxDQUFDO0lBQ0osQ0FBQztJQUVELHdCQUF3QixDQUFDLFVBQStCO1FBQ3RELEtBQUssTUFBTSxHQUFHLElBQUksVUFBVSxFQUFFO1lBQzVCLElBQUksR0FBRyxDQUFDLFVBQVUsRUFBRTtnQkFDbEIsSUFBSSxHQUFHLENBQUMsSUFBSSxLQUFLLGdCQUFnQixJQUFJLEdBQUcsQ0FBQyxJQUFJLEtBQUssV0FBVyxFQUFFO29CQUM3RCxNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUM5QixJQUFJLE9BQU8sTUFBTSxDQUFDLEtBQUssS0FBSyxRQUFRLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUU7d0JBQ2xFLE9BQU8sS0FBSyxDQUFDO3FCQUNkO2lCQUNGO3FCQUFNLElBQUksR0FBRyxDQUFDLElBQUksS0FBSyxVQUFVLElBQUksR0FBRyxDQUFDLElBQUksS0FBSyxVQUFVLEVBQUU7b0JBQzdELElBQUksZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO29CQUM3QixJQUFJLEdBQUcsQ0FBQyxRQUFRLElBQUksR0FBRyxFQUFFLGlCQUFpQixFQUFFO3dCQUMxQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7cUJBQ3pCO29CQUNELElBQUksQ0FBQyxnQkFBZ0IsRUFBRTt3QkFDckIsS0FBSyxNQUFNLE1BQU0sSUFBSSxHQUFHLENBQUMsT0FBTyxFQUFFOzRCQUNoQyxJQUFJLE1BQU0sQ0FBQyxXQUFXLEVBQUU7Z0NBQ3RCLGdCQUFnQixHQUFHLElBQUksQ0FBQztnQ0FDeEIsTUFBTTs2QkFDUDt5QkFDRjtxQkFDRjtvQkFFRCxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7d0JBQ3JCLE9BQU8sS0FBSyxDQUFDO3FCQUNkO2lCQUNGO2FBQ0Y7U0FDRjtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELHVCQUF1QixDQUFDLFVBQStCO1FBQ3JELEtBQUssTUFBTSxHQUFHLElBQUksVUFBVSxFQUFFO1lBQzVCLElBQUksR0FBRyxDQUFDLElBQUksS0FBSyxnQkFBZ0IsSUFBSSxHQUFHLENBQUMsSUFBSSxLQUFLLFdBQVcsRUFBRTtnQkFDN0QsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDOUIsSUFBSSxPQUFPLE1BQU0sQ0FBQyxLQUFLLEtBQUssUUFBUSxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFO29CQUNsRSxPQUFPLEtBQUssQ0FBQztpQkFDZDthQUNGO2lCQUFNLElBQUksR0FBRyxDQUFDLElBQUksS0FBSyxVQUFVLElBQUksR0FBRyxDQUFDLElBQUksS0FBSyxVQUFVLEVBQUU7Z0JBQzdELElBQUksZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO2dCQUM3QixLQUFLLE1BQU0sTUFBTSxJQUFJLEdBQUcsQ0FBQyxPQUFPLEVBQUU7b0JBQ2hDLElBQUksTUFBTSxDQUFDLFdBQVcsRUFBRTt3QkFDdEIsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO3dCQUN4QixNQUFNO3FCQUNQO2lCQUNGO2dCQUNELElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtvQkFDckIsT0FBTyxLQUFLLENBQUM7aUJBQ2Q7YUFDRjtTQUNGO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsNEJBQTRCLENBQUMsU0FBNEI7UUFDdkQsSUFBSSxTQUFTLENBQUMsVUFBVSxFQUFFO1lBQ3hCLElBQ0UsU0FBUyxDQUFDLElBQUksS0FBSyxnQkFBZ0I7Z0JBQ25DLFNBQVMsQ0FBQyxJQUFJLEtBQUssV0FBVyxFQUM5QjtnQkFDQSxNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNwQyxJQUFJLE9BQU8sTUFBTSxDQUFDLEtBQUssS0FBSyxRQUFRLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUU7b0JBQ2xFLE9BQU8sS0FBSyxDQUFDO2lCQUNkO2FBQ0Y7aUJBQU0sSUFDTCxTQUFTLENBQUMsSUFBSSxLQUFLLFVBQVU7Z0JBQzdCLFNBQVMsQ0FBQyxJQUFJLEtBQUssVUFBVSxFQUM3QjtnQkFDQSxJQUFJLGdCQUFnQixHQUFHLEtBQUssQ0FBQztnQkFDN0IsS0FBSyxNQUFNLE1BQU0sSUFBSSxTQUFTLENBQUMsT0FBTyxFQUFFO29CQUN0QyxJQUFJLE1BQU0sQ0FBQyxXQUFXLEVBQUU7d0JBQ3RCLGdCQUFnQixHQUFHLElBQUksQ0FBQzt3QkFDeEIsTUFBTTtxQkFDUDtpQkFDRjtnQkFDRCxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7b0JBQ3JCLE9BQU8sS0FBSyxDQUFDO2lCQUNkO2FBQ0Y7U0FDRjtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUNELGlCQUFpQixDQUFDLEtBQVc7UUFDM0IsTUFBTSxPQUFPLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQyxHQUFHLENBQ25DLE9BQU8sRUFDUCxJQUFJLENBQUMsV0FBVyxDQUFDLHFCQUFxQixFQUFFLENBQ3pDLENBQUM7UUFDRixJQUFJLE1BQU0sR0FBRyxJQUFJLFVBQVUsRUFBRSxDQUFDO1FBQzlCLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN4QyxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxjQUFjLEVBQUUsS0FBSyxFQUFFLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQztRQUN6RCxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNuRCxNQUFNLEdBQUcsS0FBSyxFQUFFLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFDbkUsTUFBTSxHQUFHLEtBQUssRUFBRSxZQUFZO1lBQzFCLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsWUFBWSxJQUFJLEVBQUUsQ0FBQztZQUMvQyxDQUFDLENBQUMsTUFBTSxDQUFDO1FBQ1gsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBUSxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksR0FBRyxlQUFlLEVBQUU7WUFDNUQsTUFBTTtZQUNOLE9BQU87U0FDUixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsc0JBQXNCLENBQUMsS0FBVztRQUNoQyxNQUFNLE9BQU8sR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDLEdBQUcsQ0FDbkMsT0FBTyxFQUNQLElBQUksQ0FBQyxXQUFXLENBQUMscUJBQXFCLEVBQUUsQ0FDekMsQ0FBQztRQUNGLElBQUksTUFBTSxHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7UUFDOUIsTUFBTSxHQUFHLEtBQUssRUFBRSxZQUFZO1lBQzFCLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsWUFBWSxJQUFJLEVBQUUsQ0FBQztZQUMvQyxDQUFDLENBQUMsTUFBTSxDQUFDO1FBQ1gsSUFBSSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRTtZQUN6QixNQUFNLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztTQUN2RDtRQUNELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQVEsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLEdBQUcsZ0JBQWdCLEVBQUU7WUFDN0QsTUFBTTtZQUNOLE9BQU87U0FDUixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsUUFBUSxDQUFDLE9BQWE7UUFDcEIsTUFBTSxPQUFPLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQyxHQUFHLENBQ25DLE9BQU8sRUFDUCxJQUFJLENBQUMsV0FBVyxDQUFDLHFCQUFxQixFQUFFLENBQ3pDLENBQUM7UUFDRixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksR0FBRyxtQkFBbUIsRUFDcEMsT0FBTyxFQUNQO1lBQ0UsT0FBTztTQUNSLENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxJQUFJLGFBQWEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUM1QixZQUFZLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxJQUFJLElBQUksQ0FDOUMsQ0FBQztRQUNGLElBQUksb0JBQW9CLEdBQUc7WUFDekIsY0FBYyxFQUFFLGFBQWE7Z0JBQzNCLENBQUMsQ0FBQyxhQUFhLEVBQUUsYUFBYSxFQUFFLFVBQVU7b0JBQ3hDLEdBQUc7b0JBQ0gsYUFBYSxFQUFFLGFBQWEsRUFBRSxRQUFRO2dCQUN4QyxDQUFDLENBQUMsRUFBRTtZQUNOLFVBQVUsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLGFBQWEsRUFBRSxhQUFhLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ3pFLFFBQVEsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLGFBQWEsRUFBRSxhQUFhLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ3JFLGtCQUFrQixFQUFFLGFBQWE7Z0JBQy9CLENBQUMsQ0FBQyxhQUFhLEVBQUUsYUFBYSxFQUFFLGtCQUFrQjtnQkFDbEQsQ0FBQyxDQUFDLEVBQUU7U0FDUCxDQUFDO1FBQ0YsT0FBTyxvQkFBb0IsQ0FBQztJQUM5QixDQUFDO0lBRUQsZUFBZSxDQUFDLEdBQVE7UUFDdEIseUJBQXlCO1FBQ3pCLElBQUksV0FBVyxHQUFRLEVBQUUsQ0FBQztRQUMxQixJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUU7WUFDZixXQUFXLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUM7U0FDakM7UUFDRCxJQUFJLEdBQUcsRUFBRSxPQUFPLEVBQUU7WUFDaEIsSUFBSSxPQUFPLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUNoQyxXQUFXLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQ2xDLGdCQUFnQixFQUNoQixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FDNUIsQ0FBQztZQUNGLFdBQVcsQ0FBQyxPQUFPLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQzlDLE9BQU8sRUFDUCxJQUFJLENBQUMsV0FBVyxDQUFDLHFCQUFxQixFQUFFLENBQ3pDLENBQUM7U0FDSDtRQUVELE9BQU8sSUFBSSxDQUFDLElBQUk7YUFDYixHQUFHLENBQ0YsSUFBSSxDQUFDLEdBQUcsRUFBRSxlQUFlLEdBQUcsOEJBQThCLEVBQzFELFdBQVcsQ0FDWjthQUNBLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwQixDQUFDO0lBRUQsb0JBQW9CLENBQUMsR0FBUTtRQUMzQixJQUFJLFdBQVcsR0FBUSxFQUFFLENBQUM7UUFDMUIsSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFO1lBQ2YsV0FBVyxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDO1NBQ2pDO1FBQ0QsSUFBSSxHQUFHLEVBQUUsT0FBTyxFQUFFO1lBQ2hCLElBQUksT0FBTyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7WUFDaEMsV0FBVyxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUNsQyxnQkFBZ0IsRUFDaEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQzdCLENBQUM7WUFDRixXQUFXLENBQUMsT0FBTyxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUM5QyxPQUFPLEVBQ1AsSUFBSSxDQUFDLFdBQVcsQ0FBQyxxQkFBcUIsRUFBRSxDQUN6QyxDQUFDO1NBQ0g7UUFDRCxPQUFPLElBQUksQ0FBQyxJQUFJO2FBQ2IsR0FBRyxDQUFRLElBQUksQ0FBQyxHQUFHLEVBQUUsZUFBZSxHQUFHLGlCQUFpQixFQUFFLFdBQVcsQ0FBQzthQUN0RSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEIsQ0FBQztJQUVELGtCQUFrQixDQUFDLE9BQVk7UUFDN0IsSUFBSSxPQUFPLEVBQUUsU0FBUyxLQUFLLGVBQWUsRUFBRTtZQUMxQyxPQUFPLENBQUMsU0FBUyxHQUFHLGNBQWMsQ0FBQztTQUNwQztRQUNELElBQUksT0FBTyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7UUFDaEMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQ3RCLGdCQUFnQixFQUNoQixJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxhQUFhLENBQUMsQ0FDdkMsQ0FBQztRQUNGLE9BQU8sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLHFCQUFxQixFQUFFLENBQUMsQ0FBQztRQUM1RSxPQUFPLElBQUksQ0FBQyxJQUFJO2FBQ2IsR0FBRyxDQUNGLElBQUksQ0FBQyxHQUFHLEVBQUUsZUFBZTtZQUN2QiwrQ0FBK0M7WUFDL0MsT0FBTyxFQUFFLEVBQUU7WUFDWCxRQUFRO1lBQ1IsT0FBTyxFQUFFLFNBQVM7WUFDbEIsZUFBZTtZQUNmLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNuRSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLFVBQVUsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDakQsQ0FBQyxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxhQUFhLEdBQUcsT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ3BFLENBQUMsUUFBUSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsRUFDNUIsRUFBRSxPQUFPLEVBQUUsQ0FDWjthQUNBLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwQixDQUFDO0lBRUQsNkJBQTZCLENBQzNCLEdBQVEsRUFDUixPQUFhLEVBQ2IsZ0JBQXNCO1FBRXRCLG9EQUFvRDtRQUNwRCxJQUFJLFdBQVcsR0FBUSxFQUFFLENBQUM7UUFDMUIsV0FBVyxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUM7UUFDekIsSUFBSSxPQUFPLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztRQUNoQyx3RUFBd0U7UUFDeEUsT0FBTyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQ3BFLE9BQU8sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLHFCQUFxQixFQUFFLENBQUMsQ0FBQztRQUM1RSxXQUFXLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUM5QixPQUFPLElBQUksQ0FBQyxJQUFJO2FBQ2IsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsZUFBZSxHQUFHLHFCQUFxQixFQUFFLFdBQVcsQ0FBQzthQUNuRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEIsQ0FBQzsrR0F6WFUsVUFBVTttSEFBVixVQUFVLGNBRlQsTUFBTTs7NEZBRVAsVUFBVTtrQkFIdEIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQXlESSxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEhlYWRlcnMsIEh0dHBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3RhYmxlLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi93b3JrZmxvdy1zZXJ2aWNlcy9hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29uZmlndXJhdGlvbnMgfSBmcm9tICcuLi8uLi8uLi9jb25maWd1cmF0aW9ucyc7XG5pbXBvcnQgeyByZXRyeSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQWRkR3JjLCBBdHRyaWJ1dGVzRGV0YWlscywgTGlzdE9iamVjdCB9IGZyb20gJy4uL2ludGVyZmFjZXMvYWRkLWdyYyc7XG5pbXBvcnQgZGF5anMgZnJvbSAnZGF5anMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgR3JjU2VydmljZSB7XG4gIGVudiE6IGFueTtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBFRElUT1JfQ09ORklHID0ge1xuICAgIG1vZGU6ICdwcmltZScsXG4gICAgY29sb3JQYWxldHRlOiB0cnVlLFxuICAgIGxpbms6IHRydWUsXG4gICAgaWQ6ICdncmNfZGVzY3JpcHRpb24nLFxuICAgIHBsYWNlaG9sZGVyOiAnQWRkIGEgZGVzY3JpcHRpb24gZm9yIHRoaXMgR1JDIE9iamVjdCcsXG4gIH07XG4gIHB1YmxpYyByZWFkb25seSBHUkNfUEFZTE9BRDogQWRkR3JjID0ge1xuICAgIG5hbWU6ICcnLFxuICAgIHR5cGU6IDMsIC8vQXNzZXRzLSAwLCBJbnZlbnRvcnktIDEsIFByb2Nlc3NlcyAtIDIsIFZlbmRvcnMtIDNcbiAgICBzdGF0ZTogMCxcbiAgICBwYXJlbnRfZ3JjX2lkczogW10sXG4gICAgb3duZXJzOiBbXSxcbiAgICBlbWFpbF9ub3RpZmljYXRpb25fbWVtYmVyX2lkczogW10sXG4gICAgZGVzY3JpcHRpb246ICcnLFxuICAgIGZyZXF1ZW5jeTogJycsXG4gICAgYXR0cmlidXRlczogW10sXG4gICAgcmNfaWRzOiBbXSxcbiAgICBwcm9ncmFtX2NhdGVnb3J5X2lkczogW10sXG4gICAgcmlza19jYXRlZ29yeV9pZHM6IFtdLFxuICAgIGxpbmtlZF9HUkNfaWRzOiBbXSxcbiAgfTtcblxuICBwdWJsaWMgcmVhZG9ubHkgTElTVF9PQkpFQ1Q6IExpc3RPYmplY3QgPSB7XG4gICAgUkM6IHtcbiAgICAgIGlzTG9hZGluZzogZmFsc2UsXG4gICAgICBkYXRhOiBbXSxcbiAgICAgIHNlbGVjdGVkRGF0YTogW10sXG4gICAgfSxcbiAgICBPV05FUjoge1xuICAgICAgaXNMb2FkaW5nOiBmYWxzZSxcbiAgICAgIGRhdGE6IFtdLFxuICAgICAgc2VsZWN0ZWREYXRhOiBbXSxcbiAgICAgIGRpc2FibGVkSWRzOiBbXSxcbiAgICB9LFxuICAgIE9USEVSX0dSQ19PQkpFQ1RTOiB7XG4gICAgICBpc0xvYWRpbmc6IGZhbHNlLFxuICAgICAgZGF0YToge30sXG4gICAgICBzZWxlY3RlZERhdGE6IFtdLFxuICAgIH0sXG4gICAgUklTS19DQVRFR09SWToge1xuICAgICAgaXNMb2FkaW5nOiBmYWxzZSxcbiAgICAgIGRhdGE6IHt9LFxuICAgICAgc2VsZWN0ZWREYXRhOiBbXSxcbiAgICB9LFxuICAgIFBST0dSQU1fUkVTUE9OU0lCSUxJVFk6IHtcbiAgICAgIGlzTG9hZGluZzogZmFsc2UsXG4gICAgICBkYXRhOiB7fSxcbiAgICAgIHNlbGVjdGVkRGF0YTogW10sXG4gICAgfSxcbiAgfTtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxuICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIGNvbmZpZz86IENvbmZpZ3VyYXRpb25zXG4gICkge1xuICAgIGlmIChjb25maWcpIHtcbiAgICAgIHRoaXMuZW52ID0gY29uZmlnLmVudkNvbmZpZztcbiAgICB9XG4gIH1cblxuICBnZXRBbGxSZXNwb25zaWJpbGl0aWVzKHBhZ2VObzogbnVtYmVyLCByY0lkczogc3RyaW5nKSB7XG4gICAgY29uc3QgYnVzaW5lc3NDeWNsZSA9IHRoaXMuZ2V0QnVzaW5lc3NDeWNsZSgpO1xuICAgIGNvbnN0IGZvcm1hdHRlZEN5Y2xlID0gYnVzaW5lc3NDeWNsZS5zZWxlY3RlZF9jeWNsZVxuICAgICAgPyBkYXlqcyhidXNpbmVzc0N5Y2xlLnNlbGVjdGVkX2N5Y2xlLnNwbGl0KCctJylbMF0pLmZvcm1hdCgnWVlZWS1NTS1ERCcpICsgXG4gICAgICAgICc6JyArIFxuICAgICAgICBkYXlqcyhidXNpbmVzc0N5Y2xlLnNlbGVjdGVkX2N5Y2xlLnNwbGl0KCctJylbMV0pLmZvcm1hdCgnWVlZWS1NTS1ERCcpXG4gICAgICA6ICcnO1xuICAgIFxuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKVxuICAgICAgLnNldCgndG9rZW4nLCB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpKVxuICAgICAgLnNldCgnYml6X2N5Y2xlJywgZm9ybWF0dGVkQ3ljbGUpO1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PGFueVtdPihcbiAgICAgIHRoaXMuZW52LmNvbXBsaWFuY2VHZXQgKyBgc2FpbHNSZXNwb25zaWJpbGl0aWVzTGlzdCZwYWdlPTEmbGltaXQ9LTEmcmNpZD0ke3JjSWRzfWAsXG4gICAgICB7IGhlYWRlcnMgfVxuICAgICk7XG4gIH1cblxuICBnZXRHUkNMaXN0KGV2ZW50PzogYW55KSB7XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpLnNldChcbiAgICAgICd0b2tlbicsXG4gICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpXG4gICAgKTtcbiAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcbiAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKCdzdGF0ZScsIGV2ZW50Py5zdGF0ZSA/PyAxKTtcbiAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKCdncmNUeXBlJywgZXZlbnQ/LnR5cGUgPz8gMCk7XG4gICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZCgncGFnZScsIGV2ZW50Py5wYWdlTm8gPz8gMSk7XG4gICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZCgncmNJZHMnLCBldmVudD8ucmNfaWRzID8/ICcnKTtcbiAgICBwYXJhbXMgPSBldmVudD8uc2VhcmNoU3RyaW5nXG4gICAgICA/IHBhcmFtcy5hcHBlbmQoJ25hbWUnLCBldmVudD8uc2VhcmNoU3RyaW5nID8/ICcnKVxuICAgICAgOiBwYXJhbXM7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmdldDxhbnlbXT4odGhpcy5lbnY/LmdyY19nZXQgKyAnZ3JjL2dldEdSQ0xpc3QnLCB7XG4gICAgICAgIHBhcmFtcyxcbiAgICAgICAgaGVhZGVycyxcbiAgICAgIH0pXG4gICAgICAucGlwZShyZXRyeSgxKSk7XG4gIH1cblxuICBnZXRHUkNUYWJzQ291bnQoZXZlbnQ/OiBhbnkpIHtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KFxuICAgICAgJ3Rva2VuJyxcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKClcbiAgICApO1xuICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xuICAgIHBhcmFtcyA9IGV2ZW50Py5zZWFyY2hTdHJpbmdcbiAgICAgID8gcGFyYW1zLmFwcGVuZCgnbmFtZScsIGV2ZW50Py5zZWFyY2hTdHJpbmcgPz8gJycpXG4gICAgICA6IHBhcmFtcztcbiAgICBpZiAoZXZlbnQ/LnJjX2lkcykge1xuICAgICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZCgncmNJZHMnLCBldmVudD8ucmNfaWRzKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmdldDxhbnlbXT4odGhpcy5lbnY/LmdyY19nZXQgKyAnZ3JjL2dldEdSQ0NvdW50Jywge1xuICAgICAgICBwYXJhbXMsXG4gICAgICAgIGhlYWRlcnMsXG4gICAgICB9KVxuICAgICAgLnBpcGUocmV0cnkoMSkpO1xuICB9XG5cbiAgcHVibGljIGNoZWNrVmFsaWRhdGlvbihncmNQYXlsb2FkOiBBZGRHcmMsIGlzQXR0cmlidXRlc1NlbGVjdGVkOiBib29sZWFuKSB7XG4gICAgZGVidWdnZXI7XG4gICAgY29uc3QgaXNWYWxpZERhdGEgPVxuICAgICAgZ3JjUGF5bG9hZC5uYW1lLnRyaW0oKSAhPT0gJycgJiZcbiAgICAgIGdyY1BheWxvYWQudHlwZSA+IC0xICYmXG4gICAgICBncmNQYXlsb2FkLm93bmVycy5sZW5ndGggJiZcbiAgICAgIGdyY1BheWxvYWQucmNfaWRzLmxlbmd0aDtcbiAgICByZXR1cm4gKFxuICAgICAgaXNWYWxpZERhdGEgJiZcbiAgICAgICghaXNBdHRyaWJ1dGVzU2VsZWN0ZWQgfHxcbiAgICAgICAgdGhpcy5jaGVja0F0dHJpYnV0ZVZhbGlkYXRpb24oZ3JjUGF5bG9hZC5hdHRyaWJ1dGVzKSlcbiAgICApO1xuICB9XG5cbiAgY2hlY2tBdHRyaWJ1dGVWYWxpZGF0aW9uKGF0dHJpYnV0ZXM6IEF0dHJpYnV0ZXNEZXRhaWxzW10pOiBib29sZWFuIHtcbiAgICBmb3IgKGNvbnN0IG9iaiBvZiBhdHRyaWJ1dGVzKSB7XG4gICAgICBpZiAob2JqLmlzUmVxdWlyZWQpIHtcbiAgICAgICAgaWYgKG9iai50eXBlID09PSAnc2luZ2xlLXRleHRib3gnIHx8IG9iai50eXBlID09PSAnZGF0ZS10aW1lJykge1xuICAgICAgICAgIGNvbnN0IGNob2ljZSA9IG9iai5jaG9pY2VzWzBdO1xuICAgICAgICAgIGlmICh0eXBlb2YgY2hvaWNlLnZhbHVlID09PSAnc3RyaW5nJyAmJiBjaG9pY2UudmFsdWUudHJpbSgpID09PSAnJykge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChvYmoudHlwZSA9PT0gJ2NoZWNrYm94JyB8fCBvYmoudHlwZSA9PT0gJ2Ryb3Bkb3duJykge1xuICAgICAgICAgIGxldCBpc0Nob2ljZVNlbGVjdGVkID0gZmFsc2U7XG4gICAgICAgICAgaWYgKG9iai5oYXNPdGhlciAmJiBvYmo/LmlzX290aGVyX3NlbGVjdGVkKSB7XG4gICAgICAgICAgICBpc0Nob2ljZVNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKCFpc0Nob2ljZVNlbGVjdGVkKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGNob2ljZSBvZiBvYmouY2hvaWNlcykge1xuICAgICAgICAgICAgICBpZiAoY2hvaWNlLmlzX3NlbGVjdGVkKSB7XG4gICAgICAgICAgICAgICAgaXNDaG9pY2VTZWxlY3RlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoIWlzQ2hvaWNlU2VsZWN0ZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBjaGVja0F0dHJpYnV0ZXNTZWxlY3RlZChhdHRyaWJ1dGVzOiBBdHRyaWJ1dGVzRGV0YWlsc1tdKTogYm9vbGVhbiB7XG4gICAgZm9yIChjb25zdCBvYmogb2YgYXR0cmlidXRlcykge1xuICAgICAgaWYgKG9iai50eXBlID09PSAnc2luZ2xlLXRleHRib3gnIHx8IG9iai50eXBlID09PSAnZGF0ZS10aW1lJykge1xuICAgICAgICBjb25zdCBjaG9pY2UgPSBvYmouY2hvaWNlc1swXTtcbiAgICAgICAgaWYgKHR5cGVvZiBjaG9pY2UudmFsdWUgPT09ICdzdHJpbmcnICYmIGNob2ljZS52YWx1ZS50cmltKCkgPT09ICcnKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKG9iai50eXBlID09PSAnY2hlY2tib3gnIHx8IG9iai50eXBlID09PSAnZHJvcGRvd24nKSB7XG4gICAgICAgIGxldCBpc0Nob2ljZVNlbGVjdGVkID0gZmFsc2U7XG4gICAgICAgIGZvciAoY29uc3QgY2hvaWNlIG9mIG9iai5jaG9pY2VzKSB7XG4gICAgICAgICAgaWYgKGNob2ljZS5pc19zZWxlY3RlZCkge1xuICAgICAgICAgICAgaXNDaG9pY2VTZWxlY3RlZCA9IHRydWU7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpc0Nob2ljZVNlbGVjdGVkKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgY2hlY2tFYWNoQXR0cmlidXRlVmFsaWRhdGlvbihhdHRyaWJ1dGU6IEF0dHJpYnV0ZXNEZXRhaWxzKTogYm9vbGVhbiB7XG4gICAgaWYgKGF0dHJpYnV0ZS5pc1JlcXVpcmVkKSB7XG4gICAgICBpZiAoXG4gICAgICAgIGF0dHJpYnV0ZS50eXBlID09PSAnc2luZ2xlLXRleHRib3gnIHx8XG4gICAgICAgIGF0dHJpYnV0ZS50eXBlID09PSAnZGF0ZS10aW1lJ1xuICAgICAgKSB7XG4gICAgICAgIGNvbnN0IGNob2ljZSA9IGF0dHJpYnV0ZS5jaG9pY2VzWzBdO1xuICAgICAgICBpZiAodHlwZW9mIGNob2ljZS52YWx1ZSA9PT0gJ3N0cmluZycgJiYgY2hvaWNlLnZhbHVlLnRyaW0oKSA9PT0gJycpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIGF0dHJpYnV0ZS50eXBlID09PSAnY2hlY2tib3gnIHx8XG4gICAgICAgIGF0dHJpYnV0ZS50eXBlID09PSAnZHJvcGRvd24nXG4gICAgICApIHtcbiAgICAgICAgbGV0IGlzQ2hvaWNlU2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgICAgZm9yIChjb25zdCBjaG9pY2Ugb2YgYXR0cmlidXRlLmNob2ljZXMpIHtcbiAgICAgICAgICBpZiAoY2hvaWNlLmlzX3NlbGVjdGVkKSB7XG4gICAgICAgICAgICBpc0Nob2ljZVNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoIWlzQ2hvaWNlU2VsZWN0ZWQpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgZ2V0Umlza0NhdGVnb3JpZXMoZXZlbnQ/OiBhbnkpIHtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KFxuICAgICAgJ3Rva2VuJyxcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKClcbiAgICApO1xuICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xuICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoJ3JldHVyblR5cGUnLCAxKTtcbiAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKCdjYXRlZ29yeVR5cGUnLCBldmVudD8udHlwZSA/PyAxKTtcbiAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKCdwYWdlJywgZXZlbnQ/LnBhZ2VObyA/PyAxKTtcbiAgICBwYXJhbXMgPSBldmVudD8udHlwZSA9PT0gMCA/IHBhcmFtcy5hcHBlbmQoJ3Jpc2tGbGFnJywgMSkgOiBwYXJhbXM7XG4gICAgcGFyYW1zID0gZXZlbnQ/LnNlYXJjaFN0cmluZ1xuICAgICAgPyBwYXJhbXMuYXBwZW5kKCdxJywgZXZlbnQ/LnNlYXJjaFN0cmluZyA/PyAnJylcbiAgICAgIDogcGFyYW1zO1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PGFueVtdPih0aGlzLmVudj8ucmlzayArICdjYXRlZ29yeS9saXN0Jywge1xuICAgICAgcGFyYW1zLFxuICAgICAgaGVhZGVycyxcbiAgICB9KTtcbiAgfVxuXG4gIGdldFJpc2tDYXRlZ29yaWVzQ291bnQoZXZlbnQ/OiBhbnkpIHtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KFxuICAgICAgJ3Rva2VuJyxcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKClcbiAgICApO1xuICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xuICAgIHBhcmFtcyA9IGV2ZW50Py5zZWFyY2hTdHJpbmdcbiAgICAgID8gcGFyYW1zLmFwcGVuZCgncScsIGV2ZW50Py5zZWFyY2hTdHJpbmcgPz8gJycpXG4gICAgICA6IHBhcmFtcztcbiAgICBpZiAoZXZlbnQ/LnJjX2lkcz8ubGVuZ3RoKSB7XG4gICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdyY19pZHMnLCBldmVudC5yY19pZHMuam9pbignLCcpKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8YW55W10+KHRoaXMuZW52Py5yaXNrICsgJ2NhdGVnb3J5L2NvdW50Jywge1xuICAgICAgcGFyYW1zLFxuICAgICAgaGVhZGVycyxcbiAgICB9KTtcbiAgfVxuXG4gIGdldFJpc2tzKHBheWxvYWQ/OiBhbnkpIHtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KFxuICAgICAgJ3Rva2VuJyxcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKClcbiAgICApO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxhbnlbXT4oXG4gICAgICB0aGlzLmVudj8ucmlzayArICdjYXRlZ29yeS9yaXNrbGlzdCcsXG4gICAgICBwYXlsb2FkLFxuICAgICAge1xuICAgICAgICBoZWFkZXJzLFxuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBnZXRCdXNpbmVzc0N5Y2xlKCkge1xuICAgIGxldCBidXNpbmVzc0N5Y2xlID0gSlNPTi5wYXJzZShcbiAgICAgIGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdidXNpbmVzc0N5Y2xlJykgPz8gJ3t9J1xuICAgICk7XG4gICAgbGV0IGN1cnJlbnRCdXNpbmVzc0N5Y2xlID0ge1xuICAgICAgc2VsZWN0ZWRfY3ljbGU6IGJ1c2luZXNzQ3ljbGVcbiAgICAgICAgPyBidXNpbmVzc0N5Y2xlPy5zZWxlY3RlZEN5Y2xlPy5zdGFydF9kYXRlICtcbiAgICAgICAgICAnLScgK1xuICAgICAgICAgIGJ1c2luZXNzQ3ljbGU/LnNlbGVjdGVkQ3ljbGU/LmVuZF9kYXRlXG4gICAgICAgIDogJycsXG4gICAgICBzdGFydF9kYXRlOiBidXNpbmVzc0N5Y2xlID8gYnVzaW5lc3NDeWNsZT8uc2VsZWN0ZWRDeWNsZT8uc3RhcnRfZGF0ZSA6ICcnLFxuICAgICAgZW5kX2RhdGU6IGJ1c2luZXNzQ3ljbGUgPyBidXNpbmVzc0N5Y2xlPy5zZWxlY3RlZEN5Y2xlPy5lbmRfZGF0ZSA6ICcnLFxuICAgICAgc2VsZWN0ZWRfY3ljbGVfYXJyOiBidXNpbmVzc0N5Y2xlXG4gICAgICAgID8gYnVzaW5lc3NDeWNsZT8uc2VsZWN0ZWRDeWNsZT8uc2VsZWN0ZWRfY3ljbGVfYXJyXG4gICAgICAgIDogW10sXG4gICAgfTtcbiAgICByZXR1cm4gY3VycmVudEJ1c2luZXNzQ3ljbGU7XG4gIH1cblxuICBnZXRQcm9ncmFtc0xpc3QocmVxOiBhbnkpIHtcbiAgICAvLyB0aGlzLmdldFVzZXJEZXRhaWxzKCk7XG4gICAgbGV0IGh0dHBPcHRpb25zOiBhbnkgPSB7fTtcbiAgICBpZiAocmVxPy5wYXJhbXMpIHtcbiAgICAgIGh0dHBPcHRpb25zLnBhcmFtcyA9IHJlcS5wYXJhbXM7XG4gICAgfVxuICAgIGlmIChyZXE/LmhlYWRlcnMpIHtcbiAgICAgIGxldCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCk7XG4gICAgICBodHRwT3B0aW9ucy5oZWFkZXJzID0gaGVhZGVycy5hcHBlbmQoXG4gICAgICAgICdwYXlsb2FkLW9iamVjdCcsXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KHJlcS5oZWFkZXJzKVxuICAgICAgKTtcbiAgICAgIGh0dHBPcHRpb25zLmhlYWRlcnMgPSBodHRwT3B0aW9ucy5oZWFkZXJzLmFwcGVuZChcbiAgICAgICAgJ3Rva2VuJyxcbiAgICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZ2V0PGFueVtdPihcbiAgICAgICAgdGhpcy5lbnY/LnByb2dyYW1FbmRwb2ludCArICcvY2F0ZWdvcmllc0xpc3Q/b3duZXJfbGlzdD0xJyxcbiAgICAgICAgaHR0cE9wdGlvbnNcbiAgICAgIClcbiAgICAgIC5waXBlKHJldHJ5KDIpKTtcbiAgfVxuXG4gIGdldFByb2dyYW1zTGlzdENvdW50KHJlcTogYW55KSB7XG4gICAgbGV0IGh0dHBPcHRpb25zOiBhbnkgPSB7fTtcbiAgICBpZiAocmVxPy5wYXJhbXMpIHtcbiAgICAgIGh0dHBPcHRpb25zLnBhcmFtcyA9IHJlcS5wYXJhbXM7XG4gICAgfVxuICAgIGlmIChyZXE/LmhlYWRlcnMpIHtcbiAgICAgIGxldCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCk7XG4gICAgICBodHRwT3B0aW9ucy5oZWFkZXJzID0gaGVhZGVycy5hcHBlbmQoXG4gICAgICAgICdwYXlsb2FkLW9iamVjdCcsXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KHJlcT8uaGVhZGVycylcbiAgICAgICk7XG4gICAgICBodHRwT3B0aW9ucy5oZWFkZXJzID0gaHR0cE9wdGlvbnMuaGVhZGVycy5hcHBlbmQoXG4gICAgICAgICd0b2tlbicsXG4gICAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKClcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5nZXQ8YW55W10+KHRoaXMuZW52Py5wcm9ncmFtRW5kcG9pbnQgKyAnL292ZXJ2aWV3LWNvdW50JywgaHR0cE9wdGlvbnMpXG4gICAgICAucGlwZShyZXRyeSgyKSk7XG4gIH1cblxuICBnZXRTdWJDYXRlZ29yeUxpc3QocGF5bG9hZDogYW55KSB7XG4gICAgaWYgKHBheWxvYWQ/LnNjb3BlVHlwZSA9PT0gJ25vdF9jb21wbGV0ZWQnKSB7XG4gICAgICBwYXlsb2FkLnNjb3BlVHlwZSA9ICdub3RDb21wbGV0ZWQnO1xuICAgIH1cbiAgICBsZXQgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpO1xuICAgIGhlYWRlcnMgPSBoZWFkZXJzLmFwcGVuZChcbiAgICAgICdwYXlsb2FkLW9iamVjdCcsXG4gICAgICBKU09OLnN0cmluZ2lmeShwYXlsb2FkPy5idXNpbmVzc0N5Y2xlKVxuICAgICk7XG4gICAgaGVhZGVycyA9IGhlYWRlcnMuYXBwZW5kKCd0b2tlbicsIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKCkpO1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5nZXQ8YW55PihcbiAgICAgICAgdGhpcy5lbnY/LnByb2dyYW1FbmRwb2ludCArXG4gICAgICAgICAgJy9zdWJDYXRlZ29yaWVzP2lzQnVzaW5lc3NDeWNsZT10cnVlJnBhcmVudElkPScgK1xuICAgICAgICAgIHBheWxvYWQ/LmlkICtcbiAgICAgICAgICAnJnR5cGU9JyArXG4gICAgICAgICAgcGF5bG9hZD8uc2NvcGVUeXBlICtcbiAgICAgICAgICAnJmNhbGxGcm9tPWdyYycgK1xuICAgICAgICAgIChwYXlsb2FkPy5zZWFyY2hUZXh0ID8gJyZxPScgKyBlbmNvZGVVUkkocGF5bG9hZD8uc2VhcmNoVGV4dCkgOiAnJykgK1xuICAgICAgICAgIChwYXlsb2FkPy5uYW1lID8gJyZzb3J0Qnk9JyArIHBheWxvYWQ/Lm5hbWUgOiAnJykgK1xuICAgICAgICAgIChwYXlsb2FkPy5zb3J0aW5nQ291bnQgPyAnJnNvcnRWYWx1ZT0nICsgcGF5bG9hZD8uc29ydGluZ0NvdW50IDogJycpICtcbiAgICAgICAgICAoJyZwYWdlPScgKyBwYXlsb2FkPy5wYWdlKSxcbiAgICAgICAgeyBoZWFkZXJzIH1cbiAgICAgIClcbiAgICAgIC5waXBlKHJldHJ5KDEpKTtcbiAgfVxuXG4gIGdldFJlc3BvbnNpYmlsaXR5QnlDYXRlZ29yeUlkKFxuICAgIHJlcTogYW55LFxuICAgIHBheWxvYWQ/OiBhbnksXG4gICAgZmlsdGVyUG9saWN5RGF0YT86IGFueVxuICApIHtcbiAgICAvLyBodHRwczovL2RldmFwaS52LWNvbXBseS5jb20vY2F0ZWdvcnkvZWRpdENhdGVnb3J5XG4gICAgbGV0IGh0dHBPcHRpb25zOiBhbnkgPSB7fTtcbiAgICBodHRwT3B0aW9ucy5wYXJhbXMgPSByZXE7XG4gICAgbGV0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKTtcbiAgICAvLyBoZWFkZXJzID0gaGVhZGVycy5hcHBlbmQoJ3gtYnVzaW5lc3MtY3ljbGUnLEpTT04uc3RyaW5naWZ5KHBheWxvYWQpKTtcbiAgICBoZWFkZXJzID0gaGVhZGVycy5hcHBlbmQoJ3BheWxvYWQtb2JqZWN0JywgSlNPTi5zdHJpbmdpZnkocGF5bG9hZCkpO1xuICAgIGhlYWRlcnMgPSBoZWFkZXJzLmFwcGVuZCgndG9rZW4nLCB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpKTtcbiAgICBodHRwT3B0aW9ucy5oZWFkZXJzID0gaGVhZGVycztcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZ2V0KHRoaXMuZW52Py5wcm9ncmFtRW5kcG9pbnQgKyAnL3Jlc3BvbnNpYmlsaXR5TGlzdCcsIGh0dHBPcHRpb25zKVxuICAgICAgLnBpcGUocmV0cnkoMSkpO1xuICB9XG59XG4iXX0=
|