monkey-front-core 0.0.189 → 0.0.190
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/esm2020/lib/core/services/commons/monkeyecx-commons.service.mjs +24 -2
- package/fesm2015/monkey-front-core.mjs +24 -1
- package/fesm2015/monkey-front-core.mjs.map +1 -1
- package/fesm2020/monkey-front-core.mjs +23 -1
- package/fesm2020/monkey-front-core.mjs.map +1 -1
- package/lib/core/services/commons/monkeyecx-commons.service.d.ts +6 -1
- package/monkey-front-core-0.0.190.tgz +0 -0
- package/package.json +1 -1
- package/monkey-front-core-0.0.189.tgz +0 -0
|
@@ -101,6 +101,23 @@ export class MonkeyEcxCommonsService {
|
|
|
101
101
|
const { service, type } = args;
|
|
102
102
|
return service.hasPendencies(type);
|
|
103
103
|
}
|
|
104
|
+
allowedSecurityAccessByFeature(args) {
|
|
105
|
+
if (!args) {
|
|
106
|
+
return true;
|
|
107
|
+
}
|
|
108
|
+
const { config, feature } = args;
|
|
109
|
+
try {
|
|
110
|
+
if (!MonkeyEcxUtils.persistNullEmptyUndefined(feature) ||
|
|
111
|
+
!MonkeyEcxUtils.persistNullEmptyUndefined(config?.program?.settings[feature])) {
|
|
112
|
+
return false;
|
|
113
|
+
}
|
|
114
|
+
return !config?.program?.settings[feature];
|
|
115
|
+
}
|
|
116
|
+
catch (e) {
|
|
117
|
+
// not to do
|
|
118
|
+
}
|
|
119
|
+
return true;
|
|
120
|
+
}
|
|
104
121
|
allowedSecurityAccessByCountry(arg) {
|
|
105
122
|
if (!arg)
|
|
106
123
|
return true;
|
|
@@ -221,9 +238,11 @@ export class MonkeyEcxCommonsService {
|
|
|
221
238
|
this.__tokenCredentials = this.tokenStorage.getToken();
|
|
222
239
|
}
|
|
223
240
|
const pend = this.allowedSecurityAccessByPendency(otherArgs?.pendency);
|
|
241
|
+
const allowedByProgram = this.allowedSecurityAccessByFeature(otherArgs?.featureByProgram);
|
|
224
242
|
if (this.allowedSecurityAccess(otherArgs?.security) &&
|
|
225
243
|
this.allowedSecurityAccessByCountry(otherArgs?.countrySecurity) &&
|
|
226
|
-
!pend.hasPendencies
|
|
244
|
+
!pend.hasPendencies &&
|
|
245
|
+
allowedByProgram) {
|
|
227
246
|
if (this.__schedule) {
|
|
228
247
|
this.otherArgs?.schedule?.service?.removeSchedule(this.__schedule);
|
|
229
248
|
this.__schedule = null;
|
|
@@ -271,6 +290,9 @@ export class MonkeyEcxCommonsService {
|
|
|
271
290
|
otherArgs?.callbackMain();
|
|
272
291
|
}
|
|
273
292
|
}
|
|
293
|
+
else if (allowedByProgram) {
|
|
294
|
+
this.navigateToErrorPage(404, otherArgs?.router);
|
|
295
|
+
}
|
|
274
296
|
else if (pend.hasPendencies) {
|
|
275
297
|
this.navigateToPendencyPage(pend, otherArgs?.router);
|
|
276
298
|
}
|
|
@@ -359,4 +381,4 @@ __decorate([
|
|
|
359
381
|
}
|
|
360
382
|
})
|
|
361
383
|
], MonkeyEcxCommonsService.prototype, "genericMethod", null);
|
|
362
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ua2V5ZWN4LWNvbW1vbnMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21vbmtleS1mcm9udC1jb3JlL3NyYy9saWIvY29yZS9zZXJ2aWNlcy9jb21tb25zL21vbmtleWVjeC1jb21tb25zLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFFTCxlQUFlLEVBR2hCLE1BQU0saUJBQWlCLENBQUM7QUFHekIsT0FBTyxFQUFFLGVBQWUsRUFBYyxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFpQnpELE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBRTFHLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUk3RSxNQUFNLE9BQU8sdUJBQXVCO0lBa0VsQyxZQUNTLGdCQUFtQyxFQUNuQyxZQUEyQyxFQUMzQyxTQVdOO1FBYk0scUJBQWdCLEdBQWhCLGdCQUFnQixDQUFtQjtRQUNuQyxpQkFBWSxHQUFaLFlBQVksQ0FBK0I7UUFDM0MsY0FBUyxHQUFULFNBQVMsQ0FXZjtRQS9FSyxrQkFBYSxHQUFHLElBQUksQ0FBQztRQUU3QixZQUFPLEdBQTJCLElBQUksQ0FBQztRQUV2QyxrQkFBYSxHQUEyQixJQUFJLENBQUM7UUFFN0MsZUFBVSxHQUEyQixJQUFJLENBQUM7UUFJMUMsaUJBQVksR0FBK0IsSUFBSSxDQUFDO1FBSWhELFlBQU8sR0FBa0MsSUFBSSxDQUFDO1FBRTlDLG1CQUFjLEdBQXlDLElBQUksQ0FBQztRQUU1RCxXQUFNLEdBQWtDLElBQUksQ0FBQztRQUU3QyxZQUFPLEdBQWtDLElBQUksQ0FBQztR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bkUsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDbkIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDbkIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXhDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNyQixXQUFXLEVBQUU7Z0JBQ1gsR0FBRyxNQUFNO2dCQUNULENBQUMsRUFBRSxjQUFjLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQzthQUN0QztZQUNELG1CQUFtQixFQUFFLE9BQU87WUFDNUIsR0FBRyxNQUFNO1NBQ1YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFNBQVMsQ0FBQyxLQUEwQjtRQUNsQyxJQUFJLENBQUMsWUFBWSxHQUFHO1lBQ2xCLElBQUksRUFBRSxJQUFJLENBQUMsTUFBTTtZQUNqQixHQUFHLEtBQUs7U0FDVCxDQUFDO0lBQ0osQ0FBQztDQUNGO0FBN0VDO0lBTEMsb0JBQW9CLENBQUM7UUFDcEIsaUJBQWlCLEVBQUU7WUFDakIsWUFBWSxFQUFFLElBQUk7U0FDbkI7S0FDRixDQUFDOzREQWFEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcbiAgTmF2aWdhdGlvblN0YXJ0LFxuICBSb3V0ZXIsXG4gIFJvdXRlclN0YXRlU25hcHNob3Rcbn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIHRha2UsIHRha2VXaGlsZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gIE1vbmtleUVjeEVycm9yUmVzcG9uc2UsXG4gIE1vbmtleUVjeEhhbmRsZWRFcnJvclJlc3BvbnNlLFxuICBNb25rZXlFY3hSZXF1ZXN0UGFnZWQsXG4gIE1vbmtleUVjeFJlcXVlc3RTY2hlZHVsZSxcbiAgTW9ua2V5RWN4UmVzcG9uc2VQYWdlZCxcbiAgTW9ua2V5RWN4UmVzcG9uc2VMaW5rcyxcbiAgTW9ua2V5RWN4VG9rZW5DcmVkZW50aWFscyxcbiAgTW9ua2V5RWN4VHJhbnNsYXRlT3B0aW9ucyxcbiAgTW9ua2V5RWN4Q29tcGFueVBlbmRlbmNpZXNWYWxpZGF0ZWQsXG4gIE1vbmtleUVjeENvdW50cnlTZWN1cml0eSxcbiAgTW9ua2V5RWN4U2F2ZWRTdGF0ZVxufSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IE1vbmtleUVjeFRva2VuU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuLi9zdG9yYWdlL21vbmtleWVjeC10b2tlbi1zdG9yYWdlLnNlcnZpY2UnO1xuaW1wb3J0IHsgTW9ua2V5RWN4UmVxdWVzdFNjaGVkdWxlU2VydmljZSB9IGZyb20gJy4uL3NjaGVkdWxlcy9tb25rZXllY3gtcmVxdWVzdC1zY2hlZHVsZS5zZXJ2aWNlJztcbmltcG9ydCB7IE1vbmtleUVjeFJlcXVlc3RRdWV1ZUhhbmRsaW5nU2VydmljZSB9IGZyb20gJy4uL3JlcXVlc3QtcXVldWUvbW9ua2V5ZWN4LXJlcXVlc3QtcXVldWUtaGFuZGxpbmcuc2VydmljZSc7XG5pbXBvcnQgeyBNb25rZXlFY3hSZXF1ZXN0UGFnZWRIYW5kbGluZyB9IGZyb20gJy4uL3JlcXVlc3QtcGFnZWQvbW9ua2V5ZWN4LXJlcXVlc3QtcmVxdWVzdC1wYWdlZC1oYW5kbGluZyc7XG5pbXBvcnQgeyBNb25rZXlFY3hGZWF0dXJlVG9nZ2xlU2VydmljZSB9IGZyb20gJy4uL2NvbmZpZy9tb25rZXllY3gtZmVhdHVyZS10b2dnbGUuc2VydmljZSc7XG5pbXBvcnQgeyBNb25rZXlFY3hVdGlscyB9IGZyb20gJy4uLy4uL3V0aWxzL3V0aWxzJztcbmltcG9ydCB7IE1vbmtleUVjeENvcmVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZGVjb3JhdG9ycy9tb25rZXllY3gtZGVjb3JhdG9ycyc7XG5pbXBvcnQgeyBNb25rZXlFY3hTZXJ2aWNlIH0gZnJvbSAnLi4vbW9ua2V5ZWN4LXNlcnZpY2Uuc2VydmljZSc7XG5pbXBvcnQgeyBNb25rZXlFY3hQYWdpbmF0aW9uU2VydmljZSB9IGZyb20gJy4uL3BhZ2luYXRpb24nO1xuXG5leHBvcnQgY2xhc3MgTW9ua2V5RWN4Q29tbW9uc1NlcnZpY2Uge1xuICBwcml2YXRlIGZsYWdWYWxpZGF0b3IgPSB0cnVlO1xuXG4gIF9fZGF0YSQ6IE9ic2VydmFibGU8YW55PiB8IG51bGwgPSBudWxsO1xuXG4gIF9fcGFnaW5hdGlvbiQ6IE9ic2VydmFibGU8YW55PiB8IG51bGwgPSBudWxsO1xuXG4gIF9fY29udHJvbCQ6IE9ic2VydmFibGU8YW55PiB8IG51bGwgPSBudWxsO1xuXG4gIF9fZGF0YTogYW55IHwgYW55W107XG5cbiAgX19zYXZlZFN0YXRlOiBNb25rZXlFY3hTYXZlZFN0YXRlIHwgbnVsbCA9IG51bGw7XG5cbiAgX19wYXJhbXM6IGFueSB8IGFueVtdO1xuXG4gIF9fZXJyb3I6IE1vbmtleUVjeEVycm9yUmVzcG9uc2UgfCBudWxsID0gbnVsbDtcblxuICBfX2hhbmRsZWRFcnJvcjogTW9ua2V5RWN4SGFuZGxlZEVycm9yUmVzcG9uc2UgfCBudWxsID0gbnVsbDtcblxuICBfX3BhZ2U6IE1vbmtleUVjeFJlc3BvbnNlUGFnZWQgfCBudWxsID0gbnVsbDtcblxuICBfX2xpbmtzOiBNb25rZXlFY3hSZXNwb25zZUxpbmtzIHwgbnVsbCA9IG51bGw7XG5cbiAgX19zZWFyY2g6IGFueTtcblxuICBfX3JlcXVlc3RQYWdlZDogTW9ua2V5RWN4UmVxdWVzdFBhZ2VkIHwgbnVsbCA9IG51bGw7XG5cbiAgX19vblNlYXJjaENoYW5nZWQkOiBCZWhhdmlvclN1YmplY3Q8YW55PiA9IG5ldyBCZWhhdmlvclN1YmplY3QobnVsbCk7XG5cbiAgX19vbkRhdGFDaGFuZ2VkJDogQmVoYXZpb3JTdWJqZWN0PGFueT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KG51bGwpO1xuXG4gIF9fb25Mb2FkaW5nSW5Qcm9ncmVzcyQ6IEJlaGF2aW9yU3ViamVjdDxhbnk+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG5cbiAgX19vblVwbG9hZEluUHJvZ3Jlc3MkOiBCZWhhdmlvclN1YmplY3Q8YW55PiA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuXG4gIF9fb25EYXRhRGVsZXRlZCQ6IEJlaGF2aW9yU3ViamVjdDxhbnk+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChudWxsKTtcblxuICBfX29uRXJyb3JDaGFuZ2VkJDogQmVoYXZpb3JTdWJqZWN0PGFueT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KG51bGwpO1xuXG4gIF9fb25Hb3Zlcm5tZW50SWREYXRhQ2hhbmdlZCQ6IEJlaGF2aW9yU3ViamVjdDxhbnk+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChudWxsKTtcblxuICBfX29uWmlwQ29kZURhdGFDaGFuZ2VkJDogQmVoYXZpb3JTdWJqZWN0PGFueT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KG51bGwpO1xuXG4gIF9fb25pMThuRGF0YUNoYW5nZWQkOiBCZWhhdmlvclN1YmplY3Q8YW55PiA9IG5ldyBCZWhhdmlvclN1YmplY3QobnVsbCk7XG5cbiAgX19vbkRvU2VhcmNoJDogQmVoYXZpb3JTdWJqZWN0PE1vbmtleUVjeFJlcXVlc3RQYWdlZD4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KHt9KTtcblxuICBfX3Rva2VuQ3JlZGVudGlhbHM6IE1vbmtleUVjeFRva2VuQ3JlZGVudGlhbHMgfCBudWxsID0gbnVsbDtcblxuICBfX3NjaGVkdWxlOiBNb25rZXlFY3hSZXF1ZXN0U2NoZWR1bGUgfCBudWxsID0gbnVsbDtcblxuICBfX2kxOG46IGFueTtcblxuICBfX2NhbGxiYWNrUGFnaW5hdGlvbjogRnVuY3Rpb24gPSAoKSA9PiB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICByZXR1cm4gY29uc29sZS5lcnJvcignTWV0aG9kIGNhbGxiYWNrUGFnaW5hdGlvbiBuZWVkcyB0byBiZSBkZWNsYXJlZCcpO1xuICB9O1xuXG4gIF9fcGFnaW5hdGlvbk9wdGlvbnM6IHtcbiAgICBzZXJ2aWNlOiBNb25rZXlFY3hQYWdpbmF0aW9uU2VydmljZTtcbiAgICBjYWxsYmFjazogRnVuY3Rpb247XG4gICAgbmFtZT86IHN0cmluZztcbiAgfSB8IHVuZGVmaW5lZDtcblxuICBfX2lzQWJsZVRvRG9QYWdpbmF0aW9uID0ge307XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIG1vbmtleWVjeFNlcnZpY2U/OiBNb25rZXlFY3hTZXJ2aWNlLFxuICAgIHB1YmxpYyB0b2tlblN0b3JhZ2U/OiBNb25rZXlFY3hUb2tlblN0b3JhZ2VTZXJ2aWNlLFxuICAgIHB1YmxpYyBvdGhlckFyZ3M/OiB7XG4gICAgICByb3V0ZXI/OiBSb3V0ZXI7XG4gICAgICBzY2hlZHVsZT86IHtcbiAgICAgICAgc2VydmljZTogTW9ua2V5RWN4UmVxdWVzdFNjaGVkdWxlU2VydmljZTtcbiAgICAgICAgb3B0aW9ucz86IHtcbiAgICAgICAgICBjbGVhck9uQ2hhbmdlUm91dGU/OiBib29sZWFuO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICAgIHF1ZXVlPzoge1xuICAgICAgICBzZXJ2aWNlOiBNb25rZXlFY3hSZXF1ZXN0UXVldWVIYW5kbGluZ1NlcnZpY2U7XG4gICAgICB9O1xuICAgIH1cbiAgKSB7XG4gICAgdGhpcy5oYW5kbGVJbml0KCk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUluaXQoKSB7XG4gICAgaWYgKHRoaXMudG9rZW5TdG9yYWdlKSB7XG4gICAgICB0aGlzLl9fdG9rZW5DcmVkZW50aWFscyA9IHRoaXMudG9rZW5TdG9yYWdlLmdldFRva2VuKCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMub3RoZXJBcmdzPy5yb3V0ZXIpIHtcbiAgICAgIGNvbnN0IHsgY2xlYXJPbkNoYW5nZVJvdXRlIH0gPSB0aGlzLm90aGVyQXJncz8uc2NoZWR1bGU/Lm9wdGlvbnMgfHwge1xuICAgICAgICBjbGVhck9uQ2hhbmdlUm91dGU6IGZhbHNlXG4gICAgICB9O1xuICAgICAgdGhpcy5vdGhlckFyZ3Mucm91dGVyLmV2ZW50c1xuICAgICAgICAucGlwZShcbiAgICAgICAgICBmaWx0ZXIoKGV2ZW50OiBhbnkpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25TdGFydDtcbiAgICAgICAgICB9KSxcbiAgICAgICAgICB0YWtlKDEpXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuX19zY2hlZHVsZSAmJiBjbGVhck9uQ2hhbmdlUm91dGUpIHtcbiAgICAgICAgICAgIHRoaXMub3RoZXJBcmdzPy5zY2hlZHVsZT8uc2VydmljZT8ucmVtb3ZlU2NoZWR1bGUodGhpcy5fX3NjaGVkdWxlKTtcbiAgICAgICAgICAgIHRoaXMuX19zY2hlZHVsZSA9IG51bGw7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG5hdmlnYXRlVG9QZW5kZW5jeVBhZ2UoYXJnOiBNb25rZXlFY3hDb21wYW55UGVuZGVuY2llc1ZhbGlkYXRlZCwgcm91dGVyPzogUm91dGVyKSB7XG4gICAgY29uc3QgeyBjb21wYW55VHlwZSB9ID0gdGhpcy5fX3Rva2VuQ3JlZGVudGlhbHMgfHwge1xuICAgICAgY29tcGFueVR5cGU6ICcnXG4gICAgfTtcbiAgICBsZXQgcm91dGUgPSAnL2FwcCc7XG5cbiAgICBpZiAoY29tcGFueVR5cGUpIHtcbiAgICAgIHJvdXRlID0gYCR7cm91dGV9LyR7Y29tcGFueVR5cGV9L3BhZ2VzYDtcbiAgICB9IGVsc2Uge1xuICAgICAgcm91dGUgPSBgJHtyb3V0ZX0vdXNlci9wcm9maWxlL3BhZ2VzYDtcbiAgICB9XG5cbiAgICBpZiAoIXJvdXRlcikge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1JvdXRlciBtdXN0IGJlIGRlY2xhcmVkJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJvdXRlci5uYXZpZ2F0ZShbYCR7cm91dGV9L2NvbXBhbnktcGVuZGVuY3lgLnRvTG93ZXJDYXNlKCldLCB7XG4gICAgICAgIHN0YXRlOiB7XG4gICAgICAgICAgcGVuZGVuY3lEYXRhOiBhcmdcbiAgICAgICAgfSxcbiAgICAgICAgc2tpcExvY2F0aW9uQ2hhbmdlOiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldFJvbGUoKTogc3RyaW5nIHtcbiAgICBjb25zdCB7IF9fdG9rZW5DcmVkZW50aWFscyB9ID0gdGhpcztcblxuICAgIGlmICghX190b2tlbkNyZWRlbnRpYWxzKSByZXR1cm4gJyc7XG5cbiAgICBpZiAoX190b2tlbkNyZWRlbnRpYWxzPy5wcm9ncmFtQWRtaW4gPT09ICd0cnVlJykge1xuICAgICAgcmV0dXJuICdQUk9HUkFNX0FETUlOJztcbiAgICB9XG5cbiAgICByZXR1cm4gX190b2tlbkNyZWRlbnRpYWxzPy5yb2xlIHx8ICcnO1xuICB9XG5cbiAgcHJpdmF0ZSBhbGxvd2VkU2VjdXJpdHlBY2Nlc3NCeVBlbmRlbmN5KGFyZ3M6IGFueSk6IE1vbmtleUVjeENvbXBhbnlQZW5kZW5jaWVzVmFsaWRhdGVkIHtcbiAgICBpZiAoIWFyZ3MpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGhhc1BlbmRlbmNpZXM6IGZhbHNlXG4gICAgICB9O1xuICAgIH1cbiAgICBjb25zdCB7IHNlcnZpY2UsIHR5cGUgfSA9IGFyZ3M7XG4gICAgcmV0dXJuIHNlcnZpY2UuaGFzUGVuZGVuY2llcyh0eXBlKTtcbiAgfVxuXG4gIHByaXZhdGUgYWxsb3dlZFNlY3VyaXR5QWNjZXNzQnlDb3VudHJ5KGFyZz86IE1vbmtleUVjeENvdW50cnlTZWN1cml0eSk6IGJvb2xlYW4ge1xuICAgIGlmICghYXJnKSByZXR1cm4gdHJ1ZTtcbiAgICByZXR1cm4gYXJnLmNvdW50cnkgPT09IGFyZy5lbnZDb3VudHJ5O1xuICB9XG5cbiAgcHJpdmF0ZSBhbGxvd2VkU2VjdXJpdHlBY2Nlc3MoYXJnczogYW55KTogYm9vbGVhbiB7XG4gICAgaWYgKCFhcmdzKSByZXR1cm4gdHJ1ZTtcbiAgICBjb25zdCByb2xlcyA9IGFyZ3M/LnJvbGVzO1xuICAgIGNvbnN0IGJ5RXhjbHVzaW9uID0gYXJncz8uYnlFeGNsdXNpb247XG4gICAgY29uc3QgZm91bmQgPSByb2xlcz8uaW5kZXhPZih0aGlzLmdldFJvbGUoKSk7XG4gICAgbGV0IHJldCA9IGZhbHNlO1xuICAgIGlmIChieUV4Y2x1c2lvbikge1xuICAgICAgcmV0ID0gdHJ1ZTtcbiAgICAgIGlmIChmb3VuZCA+IC0xKSB7XG4gICAgICAgIHJldCA9IGZhbHNlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXQgPSBmYWxzZTtcbiAgICAgIGlmIChmb3VuZCA+IC0xKSB7XG4gICAgICAgIHJldCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICghcm9sZXMgfHwgcm9sZXMubGVuZ3RoID09PSAwIHx8IHRoaXMuZ2V0Um9sZSgpID09PSAnUFJPR1JBTV9BRE1JTicpIHtcbiAgICAgIHJldCA9IHRydWU7XG4gICAgfVxuICAgIHJldHVybiByZXQ7XG4gIH1cblxuICBwcml2YXRlIG5hdmlnYXRlVG9FcnJvclBhZ2Uoc3RhdHVzQ29kZTogbnVtYmVyLCByb3V0ZXI/OiBSb3V0ZXIpIHtcbiAgICBjb25zdCByb3V0ZXM6IGFueSA9IHtcbiAgICAgIDQwMzogJ2ZvcmJpZGRlbicsXG4gICAgICA0MDQ6ICdub3QtZm91bmQnLFxuICAgICAgNTAwOiAnc2VydmljZS1wcm9ibGVtcycsXG4gICAgICA1MDM6ICdzZXJ2aWNlLXByb2JsZW1zJ1xuICAgIH07XG5cbiAgICBpZiAoIXJvdXRlcikge1xuICAgICAgY29uc29sZS5lcnJvcignUm91dGVyIG11c3QgYmUgZGVjbGFyZWQnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcm91dGVyPy5uYXZpZ2F0ZShbYC9hcHAvcGFnZXMvJHtyb3V0ZXNbc3RhdHVzQ29kZV19YC50b0xvd2VyQ2FzZSgpXSwge1xuICAgICAgICBza2lwTG9jYXRpb25DaGFuZ2U6IHRydWVcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlUGFnaW5hdGlvbk9wdGlvbnMoKSB7XG4gICAgY29uc3QgeyBfX3BhZ2luYXRpb25PcHRpb25zIH0gPSB0aGlzO1xuICAgIGlmIChfX3BhZ2luYXRpb25PcHRpb25zKSB7XG4gICAgICBjb25zdCB7IHNlcnZpY2UsIGNhbGxiYWNrLCBuYW1lIH0gPSBfX3BhZ2luYXRpb25PcHRpb25zO1xuICAgICAgc2VydmljZT8uc2V0Q2FsbGJhY2soKHR5cGU6IHN0cmluZykgPT4ge1xuICAgICAgICB0aGlzLmRvUGFnaW5hdGlvbnYyKHR5cGUsIGNhbGxiYWNrKTtcbiAgICAgIH0sIG5hbWUgfHwgJ21haW4nKTtcbiAgICB9XG4gIH1cblxuICBzZXRQYWdlKHJlcXVlc3RQYWdlZDogTW9ua2V5RWN4UmVxdWVzdFBhZ2VkKSB7XG4gICAgdGhpcy5fX3JlcXVlc3RQYWdlZCA9IHtcbiAgICAgIC4uLnRoaXMuX19yZXF1ZXN0UGFnZWQsXG4gICAgICAuLi5yZXF1ZXN0UGFnZWRcbiAgICB9O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgbmV4dFBhZ2UoKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuX19saW5rcykge1xuICAgICAgcmV0dXJuICEhdGhpcy5fX2xpbmtzPy5uZXh0O1xuICAgIH1cbiAgICBpZiAoIXRoaXMuX19yZXF1ZXN0UGFnZWQpIHJldHVybiBmYWxzZTtcbiAgICBjb25zdCB7IHBhZ2UgfSA9IHRoaXMuX19yZXF1ZXN0UGFnZWQgYXMgYW55O1xuICAgIGNvbnN0IHsgbnVtYmVyLCB0b3RhbFBhZ2VzIH0gPSBwYWdlO1xuICAgIGlmIChudW1iZXIgPCB0b3RhbFBhZ2VzKSB7XG4gICAgICB0aGlzLl9fcmVxdWVzdFBhZ2VkID0ge1xuICAgICAgICAuLi50aGlzLl9fcmVxdWVzdFBhZ2VkLFxuICAgICAgICBwYWdlOiB7XG4gICAgICAgICAgLi4ucGFnZSxcbiAgICAgICAgICBudW1iZXI6IG51bWJlciArIDFcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBnZXRFbWJlZGRlZERhdGEoZGF0YTogYW55LCBmaWVsZDogc3RyaW5nKTogYW55W10gfCBhbnkge1xuICAgIGNvbnN0IHsgX2VtYmVkZGVkIH0gPSBkYXRhO1xuICAgIHJldHVybiBfZW1iZWRkZWQgPyBfZW1iZWRkZWRbZmllbGRdIDogbnVsbDtcbiAgfVxuXG4gIGdldE5vcm1hbGl6ZWRVcmwodXJsOiBzdHJpbmcsIHNhbWVQYWdlID0gZmFsc2UpOiBzdHJpbmcge1xuICAgIGNvbnN0IHsgX19yZXF1ZXN0UGFnZWQsIF9fbGlua3MgfSA9IHRoaXM7XG4gICAgcmV0dXJuIG5ldyBNb25rZXlFY3hSZXF1ZXN0UGFnZWRIYW5kbGluZyhcbiAgICAgIHVybCxcbiAgICAgIF9fcmVxdWVzdFBhZ2VkIHx8IHt9LFxuICAgICAgX19saW5rcyxcbiAgICAgIHNhbWVQYWdlXG4gICAgKS5nZXRSZXF1ZXN0V2l0aFBhZ2VkUGFyYW1zKCk7XG4gIH1cblxuICBjbGVhcihjbGVhckRhdGE6IGJvb2xlYW4pIHtcbiAgICBpZiAoY2xlYXJEYXRhKSB7XG4gICAgICB0aGlzLl9fZGF0YSA9IG51bGw7XG4gICAgICB0aGlzLl9fcmVxdWVzdFBhZ2VkID0gbnVsbDtcbiAgICAgIHRoaXMuX19wYXJhbXMgPSBudWxsO1xuICAgICAgdGhpcy5fX3BhZ2UgPSBudWxsO1xuICAgICAgdGhpcy5fX2xpbmtzID0gbnVsbDtcblxuICAgICAgaWYgKHRoaXMuX19zY2hlZHVsZSkge1xuICAgICAgICBjb25zdCB7IHF1ZXVlIH0gPSB0aGlzLl9fc2NoZWR1bGU7XG4gICAgICAgIGlmIChxdWV1ZSkge1xuICAgICAgICAgIHRoaXMub3RoZXJBcmdzPy5xdWV1ZT8uc2VydmljZT8ucmVtb3ZlUXVldWVJdGVtKHF1ZXVlKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm90aGVyQXJncz8uc2NoZWR1bGU/LnNlcnZpY2U/LnJlbW92ZVNjaGVkdWxlKHRoaXMuX19zY2hlZHVsZSk7XG4gICAgICAgIHRoaXMuX19zY2hlZHVsZSA9IG51bGw7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuX19lcnJvciA9IG51bGw7XG4gICAgdGhpcy5fX2hhbmRsZWRFcnJvciA9IG51bGw7XG4gICAgdGhpcy5mbGFnVmFsaWRhdG9yID0gZmFsc2U7XG4gIH1cblxuICByZXNvbHZlKFxuICAgIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90IHwgbnVsbCxcbiAgICBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdCB8IG51bGwsXG4gICAgb3RoZXJBcmdzPzoge1xuICAgICAgY2FsbGJhY2tNYWluOiBGdW5jdGlvbjtcbiAgICAgIHJvdXRlcj86IFJvdXRlcjtcbiAgICAgIHNlY3VyaXR5Pzoge1xuICAgICAgICByb2xlczogc3RyaW5nW107XG4gICAgICAgIGJ5RXhjbHVzaW9uPzogYm9vbGVhbjtcbiAgICAgIH07XG4gICAgICBjYWxsYmFja1BhZ2luYXRpb24/OiBGdW5jdGlvbjtcbiAgICAgIHRyYW5zbGF0ZU9wdGlvbnM/OiBNb25rZXlFY3hUcmFuc2xhdGVPcHRpb25zO1xuICAgICAgZmVhdHVyZT86IHtcbiAgICAgICAgc2VydmljZTogTW9ua2V5RWN4RmVhdHVyZVRvZ2dsZVNlcnZpY2U7XG4gICAgICAgIGZsYWc6IHN0cmluZztcbiAgICAgIH07XG4gICAgICBjb3VudHJ5U2VjdXJpdHk/OiBNb25rZXlFY3hDb3VudHJ5U2VjdXJpdHk7XG4gICAgICBwZW5kZW5jeT86IHtcbiAgICAgICAgc2VydmljZToge1xuICAgICAgICAgIGhhc1BlbmRlbmNpZXM6IEZ1bmN0aW9uO1xuICAgICAgICB9O1xuICAgICAgICB0eXBlOiBzdHJpbmc7XG4gICAgICB9O1xuICAgICAgcGFnaW5hdGlvbk9wdGlvbnM/OiB7XG4gICAgICAgIHNlcnZpY2U6IE1vbmtleUVjeFBhZ2luYXRpb25TZXJ2aWNlLFxuICAgICAgICBjYWxsYmFjazogRnVuY3Rpb24sXG4gICAgICAgIG5hbWU/OiBzdHJpbmdcbiAgICAgIH1cbiAgICB9XG4gICkge1xuICAgIGlmIChKU09OLnN0cmluZ2lmeShyb3V0ZT8ucXVlcnlQYXJhbXMpID09PSAne30nKSB7XG4gICAgICB0aGlzLl9fZGF0YSA9IG51bGw7XG4gICAgICB0aGlzLl9fcGFnZSA9IG51bGw7XG4gICAgfVxuXG4gICAgdGhpcy5fX3JlcXVlc3RQYWdlZCA9IG51bGw7XG4gICAgdGhpcy5mbGFnVmFsaWRhdG9yID0gdHJ1ZTtcblxuICAgIGlmICh0aGlzLnRva2VuU3RvcmFnZSkge1xuICAgICAgdGhpcy5fX3Rva2VuQ3JlZGVudGlhbHMgPSB0aGlzLnRva2VuU3RvcmFnZS5nZXRUb2tlbigpO1xuICAgIH1cblxuICAgIGNvbnN0IHBlbmQgPSB0aGlzLmFsbG93ZWRTZWN1cml0eUFjY2Vzc0J5UGVuZGVuY3kob3RoZXJBcmdzPy5wZW5kZW5jeSk7XG5cbiAgICBpZiAoXG4gICAgICB0aGlzLmFsbG93ZWRTZWN1cml0eUFjY2VzcyhvdGhlckFyZ3M/LnNlY3VyaXR5KSAmJlxuICAgICAgdGhpcy5hbGxvd2VkU2VjdXJpdHlBY2Nlc3NCeUNvdW50cnkob3RoZXJBcmdzPy5jb3VudHJ5U2VjdXJpdHkpICYmXG4gICAgICAhcGVuZC5oYXNQZW5kZW5jaWVzXG4gICAgKSB7XG4gICAgICBpZiAodGhpcy5fX3NjaGVkdWxlKSB7XG4gICAgICAgIHRoaXMub3RoZXJBcmdzPy5zY2hlZHVsZT8uc2VydmljZT8ucmVtb3ZlU2NoZWR1bGUodGhpcy5fX3NjaGVkdWxlKTtcbiAgICAgICAgdGhpcy5fX3NjaGVkdWxlID0gbnVsbDtcbiAgICAgIH1cblxuICAgICAgY29uc3QgeyBfX3JlcXVlc3RQYWdlZCB9ID0gdGhpcztcbiAgICAgIGlmICghX19yZXF1ZXN0UGFnZWQpIHtcbiAgICAgICAgdGhpcy5zZXRQYWdlKHtcbiAgICAgICAgICBwYWdlOiB7XG4gICAgICAgICAgICBudW1iZXI6IDAsXG4gICAgICAgICAgICBzaXplOiAxMFxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChvdGhlckFyZ3M/LnRyYW5zbGF0ZU9wdGlvbnMpIHtcbiAgICAgICAgY29uc3QgeyBzZXJ2aWNlLCBrZXlzIH0gPSBvdGhlckFyZ3M/LnRyYW5zbGF0ZU9wdGlvbnM7XG4gICAgICAgIHRoaXMuZ2V0aTE4bihzZXJ2aWNlLCBrZXlzIHx8ICcnKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG90aGVyQXJncz8uY2FsbGJhY2tQYWdpbmF0aW9uKSB7XG4gICAgICAgIHRoaXMuX19jYWxsYmFja1BhZ2luYXRpb24gPSBvdGhlckFyZ3MuY2FsbGJhY2tQYWdpbmF0aW9uO1xuICAgICAgfVxuXG4gICAgICBpZiAob3RoZXJBcmdzPy5wYWdpbmF0aW9uT3B0aW9ucykge1xuICAgICAgICB0aGlzLl9fcGFnaW5hdGlvbk9wdGlvbnMgPSBvdGhlckFyZ3M/LnBhZ2luYXRpb25PcHRpb25zO1xuICAgICAgICB0aGlzLmhhbmRsZVBhZ2luYXRpb25PcHRpb25zKCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChvdGhlckFyZ3M/LmZlYXR1cmUpIHtcbiAgICAgICAgY29uc3QgeyBmbGFnLCBzZXJ2aWNlIH0gPSBvdGhlckFyZ3MuZmVhdHVyZTtcblxuICAgICAgICBzZXJ2aWNlLm9uRmxhZ3NcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIHRha2VXaGlsZSgoKSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLmZsYWdWYWxpZGF0b3I7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgIClcbiAgICAgICAgICAuc3Vic2NyaWJlKCh2YWw6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgICAgIGlmICh2YWwpIHtcbiAgICAgICAgICAgICAgY29uc3QgaGFzRmxhZyA9IHNlcnZpY2UuZ2V0RmxhZyhmbGFnKTtcblxuICAgICAgICAgICAgICBpZiAoTW9ua2V5RWN4VXRpbHMucGVyc2lzdE51bGxFbXB0eVVuZGVmaW5lZChoYXNGbGFnKSkge1xuICAgICAgICAgICAgICAgIGlmICghaGFzRmxhZykge1xuICAgICAgICAgICAgICAgICAgdGhpcy5uYXZpZ2F0ZVRvRXJyb3JQYWdlKDQwNCwgb3RoZXJBcmdzPy5yb3V0ZXIpO1xuICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBvdGhlckFyZ3M/LmNhbGxiYWNrTWFpbigpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3RoZXJBcmdzPy5jYWxsYmFja01haW4oKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHBlbmQuaGFzUGVuZGVuY2llcykge1xuICAgICAgdGhpcy5uYXZpZ2F0ZVRvUGVuZGVuY3lQYWdlKHBlbmQsIG90aGVyQXJncz8ucm91dGVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5uYXZpZ2F0ZVRvRXJyb3JQYWdlKDQwMywgb3RoZXJBcmdzPy5yb3V0ZXIpO1xuICAgIH1cbiAgfVxuXG4gIGdldEhUVFBIZWFkZXJBcHBsaWNhdGlvblBERigpOiBPYmplY3Qge1xuICAgIHJldHVybiB7XG4gICAgICBvYnNlcnZlOiAncmVzcG9uc2UnLFxuICAgICAgcmVzcG9uc2VUeXBlOiAnYmxvYidcbiAgICB9O1xuICB9XG5cbiAgQE1vbmtleUVjeENvcmVTZXJ2aWNlKHtcbiAgICByZXF1ZXN0SW5Qcm9ncmVzczoge1xuICAgICAgc2hvd1Byb2dyZXNzOiB0cnVlXG4gICAgfVxuICB9KVxuICBnZW5lcmljTWV0aG9kKGxpbms6IGFueSwgZGF0YT86IGFueSwgY2FsbGJhY2s/OiBGdW5jdGlvbikge1xuICAgIGNvbnN0IHsgaHJlZiwgdHlwZSA9ICdnZXQnIH0gPSBsaW5rO1xuXG4gICAgdGhpcy5tb25rZXllY3hTZXJ2aWNlPy5bdHlwZS50b0xvd2VyQ2FzZSgpXShgJHtocmVmfWAsIGRhdGEpPy5zdWJzY3JpYmUoXG4gICAgICAocmVzcDogYW55KSA9PiB7XG4gICAgICAgIGlmIChjYWxsYmFjaykgY2FsbGJhY2socmVzcCk7XG4gICAgICB9LFxuICAgICAgKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcbiAgICAgICAgaWYgKGNhbGxiYWNrKSBjYWxsYmFjaygpO1xuICAgICAgICB0aHJvd0Vycm9yKGVycik7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIGdldGkxOG4odHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSwga2V5czogc3RyaW5nIHwgc3RyaW5nW10pIHtcbiAgICB0cmFuc2xhdGVTZXJ2aWNlLm9uRGVmYXVsdExhbmdDaGFuZ2Uuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuX19pMThuID0gdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KGtleXMpO1xuICAgICAgdGhpcy5fX29uaTE4bkRhdGFDaGFuZ2VkJC5uZXh0KG51bGwpO1xuICAgIH0pO1xuICAgIHRyYW5zbGF0ZVNlcnZpY2UuZ2V0U3RyZWFtT25UcmFuc2xhdGlvbkNoYW5nZShrZXlzKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5fX2kxOG4gPSB0cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoa2V5cyk7XG4gICAgICB0aGlzLl9fb25pMThuRGF0YUNoYW5nZWQkLm5leHQobnVsbCk7XG4gICAgfSk7XG4gIH1cblxuICBkb1BhZ2luYXRpb24oKSB7XG4gICAgaWYgKCF0aGlzLl9fb25Mb2FkaW5nSW5Qcm9ncmVzcyQudmFsdWUpIHtcbiAgICAgIGNvbnN0IGhhc01vcmVQYWdlcyA9IHRoaXMuc2V0UGFnZSh7XG4gICAgICAgIHBhZ2U6IHtcbiAgICAgICAgICAuLi50aGlzLl9fcGFnZVxuICAgICAgICB9XG4gICAgICB9KS5uZXh0UGFnZSgpO1xuXG4gICAgICBpZiAoaGFzTW9yZVBhZ2VzICYmIHRoaXMuX19jYWxsYmFja1BhZ2luYXRpb24pIHtcbiAgICAgICAgdGhpcy5fX2NhbGxiYWNrUGFnaW5hdGlvbigpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGRvUGFnaW5hdGlvbnYyKHR5cGU6IHN0cmluZywgY2FsbGJhY2s6IEZ1bmN0aW9uKSB7XG4gICAgaWYgKCF0aGlzLl9fb25Mb2FkaW5nSW5Qcm9ncmVzcyQudmFsdWUpIHtcbiAgICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgICBjYWxsYmFjaygpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHNldExpbmtzKGxpbmtzOiBhbnkpIHtcbiAgICB0aGlzLl9faXNBYmxlVG9Eb1BhZ2luYXRpb24gPSB7XG4gICAgICBmaXJzdDogISFsaW5rcz8uZmlyc3QsXG4gICAgICBuZXh0OiAhIWxpbmtzPy5uZXh0XG4gICAgfTtcbiAgICB0aGlzLl9fbGlua3MgPSBsaW5rcztcbiAgfVxuXG4gIHNldFNlYXJjaEJ5VXJsKHJvdXRlcjogUm91dGVyLCB1cmw6IHN0cmluZywgc2VhcmNoOiBhbnksIGV4dHJhcz86IGFueSkge1xuICAgIHRoaXMuX19kYXRhID0gbnVsbDtcbiAgICB0aGlzLl9fcGFnZSA9IG51bGw7XG4gICAgdGhpcy5fX29uRGF0YUNoYW5nZWQkLm5leHQobnVsbCk7XG4gICAgdGhpcy5fX29uTG9hZGluZ0luUHJvZ3Jlc3MkLm5leHQoZmFsc2UpO1xuXG4gICAgcm91dGVyLm5hdmlnYXRlKFt1cmxdLCB7XG4gICAgICBxdWVyeVBhcmFtczoge1xuICAgICAgICAuLi5zZWFyY2gsXG4gICAgICAgIHI6IE1vbmtleUVjeFV0aWxzLmdldFJhbmRvbVN0cmluZygzMClcbiAgICAgIH0sXG4gICAgICBxdWVyeVBhcmFtc0hhbmRsaW5nOiAnbWVyZ2UnLFxuICAgICAgLi4uZXh0cmFzXG4gICAgfSk7XG4gIH1cblxuICBzYXZlU3RhdGUoc3RhdGU6IE1vbmtleUVjeFNhdmVkU3RhdGUpIHtcbiAgICB0aGlzLl9fc2F2ZWRTdGF0ZSA9IHtcbiAgICAgIHBhZ2U6IHRoaXMuX19wYWdlLFxuICAgICAgLi4uc3RhdGVcbiAgICB9O1xuICB9XG59XG4iXX0=
|
|
384
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ua2V5ZWN4LWNvbW1vbnMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21vbmtleS1mcm9udC1jb3JlL3NyYy9saWIvY29yZS9zZXJ2aWNlcy9jb21tb25zL21vbmtleWVjeC1jb21tb25zLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFFTCxlQUFlLEVBR2hCLE1BQU0saUJBQWlCLENBQUM7QUFHekIsT0FBTyxFQUFFLGVBQWUsRUFBYyxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFrQnpELE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBRTFHLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUk3RSxNQUFNLE9BQU8sdUJBQXVCO0lBa0VsQyxZQUNTLGdCQUFtQyxFQUNuQyxZQUEyQyxFQUMzQyxTQVdOO1FBYk0scUJBQWdCLEdBQWhCLGdCQUFnQixDQUFtQjtRQUNuQyxpQkFBWSxHQUFaLFlBQVksQ0FBK0I7UUFDM0MsY0FBUyxHQUFULFNBQVMsQ0FXZjtRQS9FSyxrQkFBYSxHQUFHLElBQUksQ0FBQztRQUU3QixZQUFPLEdBQTJCLElBQUksQ0FBQztRQUV2QyxrQkFBYSxHQUEyQixJQUFJLENBQUM7UUFFN0MsZUFBVSxHQUEyQixJQUFJLENBQUM7UUFJMUMsaUJBQVksR0FBK0IsSUFBSSxDQUFDO1FBSWhELFlBQU8sR0FBa0MsSUFBSSxDQUFDO1FBRTlDLG1CQUFjLEdBQXlDLElBQUksQ0FBQztRQUU1RCxXQUFNLEdBQWtDLElBQUksQ0FBQztRQUU3QyxZQUFPLEdBQWtDLElBQUksQ0FBQztR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Q3RDO1lBQ0QsbUJBQW1CLEVBQUUsT0FBTztZQUM1QixHQUFHLE1BQU07U0FDVixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQTBCO1FBQ2xDLElBQUksQ0FBQyxZQUFZLEdBQUc7WUFDbEIsSUFBSSxFQUFFLElBQUksQ0FBQyxNQUFNO1lBQ2pCLEdBQUcsS0FBSztTQUNULENBQUM7SUFDSixDQUFDO0NBQ0Y7QUE3RUM7SUFMQyxvQkFBb0IsQ0FBQztRQUNwQixpQkFBaUIsRUFBRTtZQUNqQixZQUFZLEVBQUUsSUFBSTtTQUNuQjtLQUNGLENBQUM7NERBYUQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LFxuICBOYXZpZ2F0aW9uU3RhcnQsXG4gIFJvdXRlcixcbiAgUm91dGVyU3RhdGVTbmFwc2hvdFxufSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgdGFrZSwgdGFrZVdoaWxlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtcbiAgTW9ua2V5RWN4RXJyb3JSZXNwb25zZSxcbiAgTW9ua2V5RWN4SGFuZGxlZEVycm9yUmVzcG9uc2UsXG4gIE1vbmtleUVjeFJlcXVlc3RQYWdlZCxcbiAgTW9ua2V5RWN4UmVxdWVzdFNjaGVkdWxlLFxuICBNb25rZXlFY3hSZXNwb25zZVBhZ2VkLFxuICBNb25rZXlFY3hSZXNwb25zZUxpbmtzLFxuICBNb25rZXlFY3hUb2tlbkNyZWRlbnRpYWxzLFxuICBNb25rZXlFY3hUcmFuc2xhdGVPcHRpb25zLFxuICBNb25rZXlFY3hDb21wYW55UGVuZGVuY2llc1ZhbGlkYXRlZCxcbiAgTW9ua2V5RWN4Q291bnRyeVNlY3VyaXR5LFxuICBNb25rZXlFY3hTYXZlZFN0YXRlLFxuICBNb25rZXlFY3hDb25maWdcbn0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBNb25rZXlFY3hUb2tlblN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vc3RvcmFnZS9tb25rZXllY3gtdG9rZW4tc3RvcmFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IE1vbmtleUVjeFJlcXVlc3RTY2hlZHVsZVNlcnZpY2UgfSBmcm9tICcuLi9zY2hlZHVsZXMvbW9ua2V5ZWN4LXJlcXVlc3Qtc2NoZWR1bGUuc2VydmljZSc7XG5pbXBvcnQgeyBNb25rZXlFY3hSZXF1ZXN0UXVldWVIYW5kbGluZ1NlcnZpY2UgfSBmcm9tICcuLi9yZXF1ZXN0LXF1ZXVlL21vbmtleWVjeC1yZXF1ZXN0LXF1ZXVlLWhhbmRsaW5nLnNlcnZpY2UnO1xuaW1wb3J0IHsgTW9ua2V5RWN4UmVxdWVzdFBhZ2VkSGFuZGxpbmcgfSBmcm9tICcuLi9yZXF1ZXN0LXBhZ2VkL21vbmtleWVjeC1yZXF1ZXN0LXJlcXVlc3QtcGFnZWQtaGFuZGxpbmcnO1xuaW1wb3J0IHsgTW9ua2V5RWN4RmVhdHVyZVRvZ2dsZVNlcnZpY2UgfSBmcm9tICcuLi9jb25maWcvbW9ua2V5ZWN4LWZlYXR1cmUtdG9nZ2xlLnNlcnZpY2UnO1xuaW1wb3J0IHsgTW9ua2V5RWN4VXRpbHMgfSBmcm9tICcuLi8uLi91dGlscy91dGlscyc7XG5pbXBvcnQgeyBNb25rZXlFY3hDb3JlU2VydmljZSB9IGZyb20gJy4uLy4uL2RlY29yYXRvcnMvbW9ua2V5ZWN4LWRlY29yYXRvcnMnO1xuaW1wb3J0IHsgTW9ua2V5RWN4U2VydmljZSB9IGZyb20gJy4uL21vbmtleWVjeC1zZXJ2aWNlLnNlcnZpY2UnO1xuaW1wb3J0IHsgTW9ua2V5RWN4UGFnaW5hdGlvblNlcnZpY2UgfSBmcm9tICcuLi9wYWdpbmF0aW9uJztcblxuZXhwb3J0IGNsYXNzIE1vbmtleUVjeENvbW1vbnNTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBmbGFnVmFsaWRhdG9yID0gdHJ1ZTtcblxuICBfX2RhdGEkOiBPYnNlcnZhYmxlPGFueT4gfCBudWxsID0gbnVsbDtcblxuICBfX3BhZ2luYXRpb24kOiBPYnNlcnZhYmxlPGFueT4gfCBudWxsID0gbnVsbDtcblxuICBfX2NvbnRyb2wkOiBPYnNlcnZhYmxlPGFueT4gfCBudWxsID0gbnVsbDtcblxuICBfX2RhdGE6IGFueSB8IGFueVtdO1xuXG4gIF9fc2F2ZWRTdGF0ZTogTW9ua2V5RWN4U2F2ZWRTdGF0ZSB8IG51bGwgPSBudWxsO1xuXG4gIF9fcGFyYW1zOiBhbnkgfCBhbnlbXTtcblxuICBfX2Vycm9yOiBNb25rZXlFY3hFcnJvclJlc3BvbnNlIHwgbnVsbCA9IG51bGw7XG5cbiAgX19oYW5kbGVkRXJyb3I6IE1vbmtleUVjeEhhbmRsZWRFcnJvclJlc3BvbnNlIHwgbnVsbCA9IG51bGw7XG5cbiAgX19wYWdlOiBNb25rZXlFY3hSZXNwb25zZVBhZ2VkIHwgbnVsbCA9IG51bGw7XG5cbiAgX19saW5rczogTW9ua2V5RWN4UmVzcG9uc2VMaW5rcyB8IG51bGwgPSBudWxsO1xuXG4gIF9fc2VhcmNoOiBhbnk7XG5cbiAgX19yZXF1ZXN0UGFnZWQ6IE1vbmtleUVjeFJlcXVlc3RQYWdlZCB8IG51bGwgPSBudWxsO1xuXG4gIF9fb25TZWFyY2hDaGFuZ2VkJDogQmVoYXZpb3JTdWJqZWN0PGFueT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KG51bGwpO1xuXG4gIF9fb25EYXRhQ2hhbmdlZCQ6IEJlaGF2aW9yU3ViamVjdDxhbnk+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChudWxsKTtcblxuICBfX29uTG9hZGluZ0luUHJvZ3Jlc3MkOiBCZWhhdmlvclN1YmplY3Q8YW55PiA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuXG4gIF9fb25VcGxvYWRJblByb2dyZXNzJDogQmVoYXZpb3JTdWJqZWN0PGFueT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcblxuICBfX29uRGF0YURlbGV0ZWQkOiBCZWhhdmlvclN1YmplY3Q8YW55PiA9IG5ldyBCZWhhdmlvclN1YmplY3QobnVsbCk7XG5cbiAgX19vbkVycm9yQ2hhbmdlZCQ6IEJlaGF2aW9yU3ViamVjdDxhbnk+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChudWxsKTtcblxuICBfX29uR292ZXJubWVudElkRGF0YUNoYW5nZWQkOiBCZWhhdmlvclN1YmplY3Q8YW55PiA9IG5ldyBCZWhhdmlvclN1YmplY3QobnVsbCk7XG5cbiAgX19vblppcENvZGVEYXRhQ2hhbmdlZCQ6IEJlaGF2aW9yU3ViamVjdDxhbnk+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChudWxsKTtcblxuICBfX29uaTE4bkRhdGFDaGFuZ2VkJDogQmVoYXZpb3JTdWJqZWN0PGFueT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KG51bGwpO1xuXG4gIF9fb25Eb1NlYXJjaCQ6IEJlaGF2aW9yU3ViamVjdDxNb25rZXlFY3hSZXF1ZXN0UGFnZWQ+ID0gbmV3IEJlaGF2aW9yU3ViamVjdCh7fSk7XG5cbiAgX190b2tlbkNyZWRlbnRpYWxzOiBNb25rZXlFY3hUb2tlbkNyZWRlbnRpYWxzIHwgbnVsbCA9IG51bGw7XG5cbiAgX19zY2hlZHVsZTogTW9ua2V5RWN4UmVxdWVzdFNjaGVkdWxlIHwgbnVsbCA9IG51bGw7XG5cbiAgX19pMThuOiBhbnk7XG5cbiAgX19jYWxsYmFja1BhZ2luYXRpb246IEZ1bmN0aW9uID0gKCkgPT4ge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgcmV0dXJuIGNvbnNvbGUuZXJyb3IoJ01ldGhvZCBjYWxsYmFja1BhZ2luYXRpb24gbmVlZHMgdG8gYmUgZGVjbGFyZWQnKTtcbiAgfTtcblxuICBfX3BhZ2luYXRpb25PcHRpb25zOiB7XG4gICAgc2VydmljZTogTW9ua2V5RWN4UGFnaW5hdGlvblNlcnZpY2U7XG4gICAgY2FsbGJhY2s6IEZ1bmN0aW9uO1xuICAgIG5hbWU/OiBzdHJpbmc7XG4gIH0gfCB1bmRlZmluZWQ7XG5cbiAgX19pc0FibGVUb0RvUGFnaW5hdGlvbiA9IHt9O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBtb25rZXllY3hTZXJ2aWNlPzogTW9ua2V5RWN4U2VydmljZSxcbiAgICBwdWJsaWMgdG9rZW5TdG9yYWdlPzogTW9ua2V5RWN4VG9rZW5TdG9yYWdlU2VydmljZSxcbiAgICBwdWJsaWMgb3RoZXJBcmdzPzoge1xuICAgICAgcm91dGVyPzogUm91dGVyO1xuICAgICAgc2NoZWR1bGU/OiB7XG4gICAgICAgIHNlcnZpY2U6IE1vbmtleUVjeFJlcXVlc3RTY2hlZHVsZVNlcnZpY2U7XG4gICAgICAgIG9wdGlvbnM/OiB7XG4gICAgICAgICAgY2xlYXJPbkNoYW5nZVJvdXRlPzogYm9vbGVhbjtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBxdWV1ZT86IHtcbiAgICAgICAgc2VydmljZTogTW9ua2V5RWN4UmVxdWVzdFF1ZXVlSGFuZGxpbmdTZXJ2aWNlO1xuICAgICAgfTtcbiAgICB9XG4gICkge1xuICAgIHRoaXMuaGFuZGxlSW5pdCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVJbml0KCkge1xuICAgIGlmICh0aGlzLnRva2VuU3RvcmFnZSkge1xuICAgICAgdGhpcy5fX3Rva2VuQ3JlZGVudGlhbHMgPSB0aGlzLnRva2VuU3RvcmFnZS5nZXRUb2tlbigpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm90aGVyQXJncz8ucm91dGVyKSB7XG4gICAgICBjb25zdCB7IGNsZWFyT25DaGFuZ2VSb3V0ZSB9ID0gdGhpcy5vdGhlckFyZ3M/LnNjaGVkdWxlPy5vcHRpb25zIHx8IHtcbiAgICAgICAgY2xlYXJPbkNoYW5nZVJvdXRlOiBmYWxzZVxuICAgICAgfTtcbiAgICAgIHRoaXMub3RoZXJBcmdzLnJvdXRlci5ldmVudHNcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgZmlsdGVyKChldmVudDogYW55KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uU3RhcnQ7XG4gICAgICAgICAgfSksXG4gICAgICAgICAgdGFrZSgxKVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLl9fc2NoZWR1bGUgJiYgY2xlYXJPbkNoYW5nZVJvdXRlKSB7XG4gICAgICAgICAgICB0aGlzLm90aGVyQXJncz8uc2NoZWR1bGU/LnNlcnZpY2U/LnJlbW92ZVNjaGVkdWxlKHRoaXMuX19zY2hlZHVsZSk7XG4gICAgICAgICAgICB0aGlzLl9fc2NoZWR1bGUgPSBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBuYXZpZ2F0ZVRvUGVuZGVuY3lQYWdlKGFyZzogTW9ua2V5RWN4Q29tcGFueVBlbmRlbmNpZXNWYWxpZGF0ZWQsIHJvdXRlcj86IFJvdXRlcikge1xuICAgIGNvbnN0IHsgY29tcGFueVR5cGUgfSA9IHRoaXMuX190b2tlbkNyZWRlbnRpYWxzIHx8IHtcbiAgICAgIGNvbXBhbnlUeXBlOiAnJ1xuICAgIH07XG4gICAgbGV0IHJvdXRlID0gJy9hcHAnO1xuXG4gICAgaWYgKGNvbXBhbnlUeXBlKSB7XG4gICAgICByb3V0ZSA9IGAke3JvdXRlfS8ke2NvbXBhbnlUeXBlfS9wYWdlc2A7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJvdXRlID0gYCR7cm91dGV9L3VzZXIvcHJvZmlsZS9wYWdlc2A7XG4gICAgfVxuXG4gICAgaWYgKCFyb3V0ZXIpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICBjb25zb2xlLmVycm9yKCdSb3V0ZXIgbXVzdCBiZSBkZWNsYXJlZCcpO1xuICAgIH0gZWxzZSB7XG4gICAgICByb3V0ZXIubmF2aWdhdGUoW2Ake3JvdXRlfS9jb21wYW55LXBlbmRlbmN5YC50b0xvd2VyQ2FzZSgpXSwge1xuICAgICAgICBzdGF0ZToge1xuICAgICAgICAgIHBlbmRlbmN5RGF0YTogYXJnXG4gICAgICAgIH0sXG4gICAgICAgIHNraXBMb2NhdGlvbkNoYW5nZTogdHJ1ZVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRSb2xlKCk6IHN0cmluZyB7XG4gICAgY29uc3QgeyBfX3Rva2VuQ3JlZGVudGlhbHMgfSA9IHRoaXM7XG5cbiAgICBpZiAoIV9fdG9rZW5DcmVkZW50aWFscykgcmV0dXJuICcnO1xuXG4gICAgaWYgKF9fdG9rZW5DcmVkZW50aWFscz8ucHJvZ3JhbUFkbWluID09PSAndHJ1ZScpIHtcbiAgICAgIHJldHVybiAnUFJPR1JBTV9BRE1JTic7XG4gICAgfVxuXG4gICAgcmV0dXJuIF9fdG9rZW5DcmVkZW50aWFscz8ucm9sZSB8fCAnJztcbiAgfVxuXG4gIHByaXZhdGUgYWxsb3dlZFNlY3VyaXR5QWNjZXNzQnlQZW5kZW5jeShhcmdzOiBhbnkpOiBNb25rZXlFY3hDb21wYW55UGVuZGVuY2llc1ZhbGlkYXRlZCB7XG4gICAgaWYgKCFhcmdzKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBoYXNQZW5kZW5jaWVzOiBmYWxzZVxuICAgICAgfTtcbiAgICB9XG4gICAgY29uc3QgeyBzZXJ2aWNlLCB0eXBlIH0gPSBhcmdzO1xuICAgIHJldHVybiBzZXJ2aWNlLmhhc1BlbmRlbmNpZXModHlwZSk7XG4gIH1cblxuICBwcml2YXRlIGFsbG93ZWRTZWN1cml0eUFjY2Vzc0J5RmVhdHVyZShhcmdzOiBhbnkpOiBib29sZWFuIHtcbiAgICBpZiAoIWFyZ3MpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBjb25zdCB7IGNvbmZpZywgZmVhdHVyZSB9ID0gYXJncztcbiAgICB0cnkge1xuICAgICAgaWYgKCFNb25rZXlFY3hVdGlscy5wZXJzaXN0TnVsbEVtcHR5VW5kZWZpbmVkKGZlYXR1cmUpIHx8XG4gICAgICAgICFNb25rZXlFY3hVdGlscy5wZXJzaXN0TnVsbEVtcHR5VW5kZWZpbmVkKGNvbmZpZz8ucHJvZ3JhbT8uc2V0dGluZ3NbZmVhdHVyZV0pKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiAhY29uZmlnPy5wcm9ncmFtPy5zZXR0aW5nc1tmZWF0dXJlXTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAvLyBub3QgdG8gZG9cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBwcml2YXRlIGFsbG93ZWRTZWN1cml0eUFjY2Vzc0J5Q291bnRyeShhcmc/OiBNb25rZXlFY3hDb3VudHJ5U2VjdXJpdHkpOiBib29sZWFuIHtcbiAgICBpZiAoIWFyZykgcmV0dXJuIHRydWU7XG4gICAgcmV0dXJuIGFyZy5jb3VudHJ5ID09PSBhcmcuZW52Q291bnRyeTtcbiAgfVxuXG4gIHByaXZhdGUgYWxsb3dlZFNlY3VyaXR5QWNjZXNzKGFyZ3M6IGFueSk6IGJvb2xlYW4ge1xuICAgIGlmICghYXJncykgcmV0dXJuIHRydWU7XG4gICAgY29uc3Qgcm9sZXMgPSBhcmdzPy5yb2xlcztcbiAgICBjb25zdCBieUV4Y2x1c2lvbiA9IGFyZ3M/LmJ5RXhjbHVzaW9uO1xuICAgIGNvbnN0IGZvdW5kID0gcm9sZXM/LmluZGV4T2YodGhpcy5nZXRSb2xlKCkpO1xuICAgIGxldCByZXQgPSBmYWxzZTtcbiAgICBpZiAoYnlFeGNsdXNpb24pIHtcbiAgICAgIHJldCA9IHRydWU7XG4gICAgICBpZiAoZm91bmQgPiAtMSkge1xuICAgICAgICByZXQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0ID0gZmFsc2U7XG4gICAgICBpZiAoZm91bmQgPiAtMSkge1xuICAgICAgICByZXQgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoIXJvbGVzIHx8IHJvbGVzLmxlbmd0aCA9PT0gMCB8fCB0aGlzLmdldFJvbGUoKSA9PT0gJ1BST0dSQU1fQURNSU4nKSB7XG4gICAgICByZXQgPSB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gcmV0O1xuICB9XG5cbiAgcHJpdmF0ZSBuYXZpZ2F0ZVRvRXJyb3JQYWdlKHN0YXR1c0NvZGU6IG51bWJlciwgcm91dGVyPzogUm91dGVyKSB7XG4gICAgY29uc3Qgcm91dGVzOiBhbnkgPSB7XG4gICAgICA0MDM6ICdmb3JiaWRkZW4nLFxuICAgICAgNDA0OiAnbm90LWZvdW5kJyxcbiAgICAgIDUwMDogJ3NlcnZpY2UtcHJvYmxlbXMnLFxuICAgICAgNTAzOiAnc2VydmljZS1wcm9ibGVtcydcbiAgICB9O1xuXG4gICAgaWYgKCFyb3V0ZXIpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1JvdXRlciBtdXN0IGJlIGRlY2xhcmVkJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJvdXRlcj8ubmF2aWdhdGUoW2AvYXBwL3BhZ2VzLyR7cm91dGVzW3N0YXR1c0NvZGVdfWAudG9Mb3dlckNhc2UoKV0sIHtcbiAgICAgICAgc2tpcExvY2F0aW9uQ2hhbmdlOiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVBhZ2luYXRpb25PcHRpb25zKCkge1xuICAgIGNvbnN0IHsgX19wYWdpbmF0aW9uT3B0aW9ucyB9ID0gdGhpcztcbiAgICBpZiAoX19wYWdpbmF0aW9uT3B0aW9ucykge1xuICAgICAgY29uc3QgeyBzZXJ2aWNlLCBjYWxsYmFjaywgbmFtZSB9ID0gX19wYWdpbmF0aW9uT3B0aW9ucztcbiAgICAgIHNlcnZpY2U/LnNldENhbGxiYWNrKCh0eXBlOiBzdHJpbmcpID0+IHtcbiAgICAgICAgdGhpcy5kb1BhZ2luYXRpb252Mih0eXBlLCBjYWxsYmFjayk7XG4gICAgICB9LCBuYW1lIHx8ICdtYWluJyk7XG4gICAgfVxuICB9XG5cbiAgc2V0UGFnZShyZXF1ZXN0UGFnZWQ6IE1vbmtleUVjeFJlcXVlc3RQYWdlZCkge1xuICAgIHRoaXMuX19yZXF1ZXN0UGFnZWQgPSB7XG4gICAgICAuLi50aGlzLl9fcmVxdWVzdFBhZ2VkLFxuICAgICAgLi4ucmVxdWVzdFBhZ2VkXG4gICAgfTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIG5leHRQYWdlKCk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLl9fbGlua3MpIHtcbiAgICAgIHJldHVybiAhIXRoaXMuX19saW5rcz8ubmV4dDtcbiAgICB9XG4gICAgaWYgKCF0aGlzLl9fcmVxdWVzdFBhZ2VkKSByZXR1cm4gZmFsc2U7XG4gICAgY29uc3QgeyBwYWdlIH0gPSB0aGlzLl9fcmVxdWVzdFBhZ2VkIGFzIGFueTtcbiAgICBjb25zdCB7IG51bWJlciwgdG90YWxQYWdlcyB9ID0gcGFnZTtcbiAgICBpZiAobnVtYmVyIDwgdG90YWxQYWdlcykge1xuICAgICAgdGhpcy5fX3JlcXVlc3RQYWdlZCA9IHtcbiAgICAgICAgLi4udGhpcy5fX3JlcXVlc3RQYWdlZCxcbiAgICAgICAgcGFnZToge1xuICAgICAgICAgIC4uLnBhZ2UsXG4gICAgICAgICAgbnVtYmVyOiBudW1iZXIgKyAxXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgZ2V0RW1iZWRkZWREYXRhKGRhdGE6IGFueSwgZmllbGQ6IHN0cmluZyk6IGFueVtdIHwgYW55IHtcbiAgICBjb25zdCB7IF9lbWJlZGRlZCB9ID0gZGF0YTtcbiAgICByZXR1cm4gX2VtYmVkZGVkID8gX2VtYmVkZGVkW2ZpZWxkXSA6IG51bGw7XG4gIH1cblxuICBnZXROb3JtYWxpemVkVXJsKHVybDogc3RyaW5nLCBzYW1lUGFnZSA9IGZhbHNlKTogc3RyaW5nIHtcbiAgICBjb25zdCB7IF9fcmVxdWVzdFBhZ2VkLCBfX2xpbmtzIH0gPSB0aGlzO1xuICAgIHJldHVybiBuZXcgTW9ua2V5RWN4UmVxdWVzdFBhZ2VkSGFuZGxpbmcoXG4gICAgICB1cmwsXG4gICAgICBfX3JlcXVlc3RQYWdlZCB8fCB7fSxcbiAgICAgIF9fbGlua3MsXG4gICAgICBzYW1lUGFnZVxuICAgICkuZ2V0UmVxdWVzdFdpdGhQYWdlZFBhcmFtcygpO1xuICB9XG5cbiAgY2xlYXIoY2xlYXJEYXRhOiBib29sZWFuKSB7XG4gICAgaWYgKGNsZWFyRGF0YSkge1xuICAgICAgdGhpcy5fX2RhdGEgPSBudWxsO1xuICAgICAgdGhpcy5fX3JlcXVlc3RQYWdlZCA9IG51bGw7XG4gICAgICB0aGlzLl9fcGFyYW1zID0gbnVsbDtcbiAgICAgIHRoaXMuX19wYWdlID0gbnVsbDtcbiAgICAgIHRoaXMuX19saW5rcyA9IG51bGw7XG5cbiAgICAgIGlmICh0aGlzLl9fc2NoZWR1bGUpIHtcbiAgICAgICAgY29uc3QgeyBxdWV1ZSB9ID0gdGhpcy5fX3NjaGVkdWxlO1xuICAgICAgICBpZiAocXVldWUpIHtcbiAgICAgICAgICB0aGlzLm90aGVyQXJncz8ucXVldWU/LnNlcnZpY2U/LnJlbW92ZVF1ZXVlSXRlbShxdWV1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vdGhlckFyZ3M/LnNjaGVkdWxlPy5zZXJ2aWNlPy5yZW1vdmVTY2hlZHVsZSh0aGlzLl9fc2NoZWR1bGUpO1xuICAgICAgICB0aGlzLl9fc2NoZWR1bGUgPSBudWxsO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLl9fZXJyb3IgPSBudWxsO1xuICAgIHRoaXMuX19oYW5kbGVkRXJyb3IgPSBudWxsO1xuICAgIHRoaXMuZmxhZ1ZhbGlkYXRvciA9IGZhbHNlO1xuICB9XG5cbiAgcmVzb2x2ZShcbiAgICByb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCB8IG51bGwsXG4gICAgc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3QgfCBudWxsLFxuICAgIG90aGVyQXJncz86IHtcbiAgICAgIGNhbGxiYWNrTWFpbjogRnVuY3Rpb247XG4gICAgICByb3V0ZXI/OiBSb3V0ZXI7XG4gICAgICBzZWN1cml0eT86IHtcbiAgICAgICAgcm9sZXM6IHN0cmluZ1tdO1xuICAgICAgICBieUV4Y2x1c2lvbj86IGJvb2xlYW47XG4gICAgICB9O1xuICAgICAgY2FsbGJhY2tQYWdpbmF0aW9uPzogRnVuY3Rpb247XG4gICAgICB0cmFuc2xhdGVPcHRpb25zPzogTW9ua2V5RWN4VHJhbnNsYXRlT3B0aW9ucztcbiAgICAgIGZlYXR1cmU/OiB7XG4gICAgICAgIHNlcnZpY2U6IE1vbmtleUVjeEZlYXR1cmVUb2dnbGVTZXJ2aWNlO1xuICAgICAgICBmbGFnOiBzdHJpbmc7XG4gICAgICB9O1xuICAgICAgZmVhdHVyZUJ5UHJvZ3JhbT86IHtcbiAgICAgICAgY29uZmlnOiBNb25rZXlFY3hDb25maWc7XG4gICAgICAgIGZlYXR1cmU6IHN0cmluZztcbiAgICAgIH07XG4gICAgICBjb3VudHJ5U2VjdXJpdHk/OiBNb25rZXlFY3hDb3VudHJ5U2VjdXJpdHk7XG4gICAgICBwZW5kZW5jeT86IHtcbiAgICAgICAgc2VydmljZToge1xuICAgICAgICAgIGhhc1BlbmRlbmNpZXM6IEZ1bmN0aW9uO1xuICAgICAgICB9O1xuICAgICAgICB0eXBlOiBzdHJpbmc7XG4gICAgICB9O1xuICAgICAgcGFnaW5hdGlvbk9wdGlvbnM/OiB7XG4gICAgICAgIHNlcnZpY2U6IE1vbmtleUVjeFBhZ2luYXRpb25TZXJ2aWNlLFxuICAgICAgICBjYWxsYmFjazogRnVuY3Rpb24sXG4gICAgICAgIG5hbWU/OiBzdHJpbmdcbiAgICAgIH1cbiAgICB9XG4gICkge1xuICAgIGlmIChKU09OLnN0cmluZ2lmeShyb3V0ZT8ucXVlcnlQYXJhbXMpID09PSAne30nKSB7XG4gICAgICB0aGlzLl9fZGF0YSA9IG51bGw7XG4gICAgICB0aGlzLl9fcGFnZSA9IG51bGw7XG4gICAgfVxuXG4gICAgdGhpcy5fX3JlcXVlc3RQYWdlZCA9IG51bGw7XG4gICAgdGhpcy5mbGFnVmFsaWRhdG9yID0gdHJ1ZTtcblxuICAgIGlmICh0aGlzLnRva2VuU3RvcmFnZSkge1xuICAgICAgdGhpcy5fX3Rva2VuQ3JlZGVudGlhbHMgPSB0aGlzLnRva2VuU3RvcmFnZS5nZXRUb2tlbigpO1xuICAgIH1cblxuICAgIGNvbnN0IHBlbmQgPSB0aGlzLmFsbG93ZWRTZWN1cml0eUFjY2Vzc0J5UGVuZGVuY3kob3RoZXJBcmdzPy5wZW5kZW5jeSk7XG4gICAgY29uc3QgYWxsb3dlZEJ5UHJvZ3JhbSA9IHRoaXMuYWxsb3dlZFNlY3VyaXR5QWNjZXNzQnlGZWF0dXJlKG90aGVyQXJncz8uZmVhdHVyZUJ5UHJvZ3JhbSk7XG5cbiAgICBpZiAoXG4gICAgICB0aGlzLmFsbG93ZWRTZWN1cml0eUFjY2VzcyhvdGhlckFyZ3M/LnNlY3VyaXR5KSAmJlxuICAgICAgdGhpcy5hbGxvd2VkU2VjdXJpdHlBY2Nlc3NCeUNvdW50cnkob3RoZXJBcmdzPy5jb3VudHJ5U2VjdXJpdHkpICYmXG4gICAgICAhcGVuZC5oYXNQZW5kZW5jaWVzICYmXG4gICAgICBhbGxvd2VkQnlQcm9ncmFtXG4gICAgKSB7XG4gICAgICBpZiAodGhpcy5fX3NjaGVkdWxlKSB7XG4gICAgICAgIHRoaXMub3RoZXJBcmdzPy5zY2hlZHVsZT8uc2VydmljZT8ucmVtb3ZlU2NoZWR1bGUodGhpcy5fX3NjaGVkdWxlKTtcbiAgICAgICAgdGhpcy5fX3NjaGVkdWxlID0gbnVsbDtcbiAgICAgIH1cblxuICAgICAgY29uc3QgeyBfX3JlcXVlc3RQYWdlZCB9ID0gdGhpcztcbiAgICAgIGlmICghX19yZXF1ZXN0UGFnZWQpIHtcbiAgICAgICAgdGhpcy5zZXRQYWdlKHtcbiAgICAgICAgICBwYWdlOiB7XG4gICAgICAgICAgICBudW1iZXI6IDAsXG4gICAgICAgICAgICBzaXplOiAxMFxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChvdGhlckFyZ3M/LnRyYW5zbGF0ZU9wdGlvbnMpIHtcbiAgICAgICAgY29uc3QgeyBzZXJ2aWNlLCBrZXlzIH0gPSBvdGhlckFyZ3M/LnRyYW5zbGF0ZU9wdGlvbnM7XG4gICAgICAgIHRoaXMuZ2V0aTE4bihzZXJ2aWNlLCBrZXlzIHx8ICcnKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG90aGVyQXJncz8uY2FsbGJhY2tQYWdpbmF0aW9uKSB7XG4gICAgICAgIHRoaXMuX19jYWxsYmFja1BhZ2luYXRpb24gPSBvdGhlckFyZ3MuY2FsbGJhY2tQYWdpbmF0aW9uO1xuICAgICAgfVxuXG4gICAgICBpZiAob3RoZXJBcmdzPy5wYWdpbmF0aW9uT3B0aW9ucykge1xuICAgICAgICB0aGlzLl9fcGFnaW5hdGlvbk9wdGlvbnMgPSBvdGhlckFyZ3M/LnBhZ2luYXRpb25PcHRpb25zO1xuICAgICAgICB0aGlzLmhhbmRsZVBhZ2luYXRpb25PcHRpb25zKCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChvdGhlckFyZ3M/LmZlYXR1cmUpIHtcbiAgICAgICAgY29uc3QgeyBmbGFnLCBzZXJ2aWNlIH0gPSBvdGhlckFyZ3MuZmVhdHVyZTtcblxuICAgICAgICBzZXJ2aWNlLm9uRmxhZ3NcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIHRha2VXaGlsZSgoKSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLmZsYWdWYWxpZGF0b3I7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgIClcbiAgICAgICAgICAuc3Vic2NyaWJlKCh2YWw6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgICAgIGlmICh2YWwpIHtcbiAgICAgICAgICAgICAgY29uc3QgaGFzRmxhZyA9IHNlcnZpY2UuZ2V0RmxhZyhmbGFnKTtcblxuICAgICAgICAgICAgICBpZiAoTW9ua2V5RWN4VXRpbHMucGVyc2lzdE51bGxFbXB0eVVuZGVmaW5lZChoYXNGbGFnKSkge1xuICAgICAgICAgICAgICAgIGlmICghaGFzRmxhZykge1xuICAgICAgICAgICAgICAgICAgdGhpcy5uYXZpZ2F0ZVRvRXJyb3JQYWdlKDQwNCwgb3RoZXJBcmdzPy5yb3V0ZXIpO1xuICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBvdGhlckFyZ3M/LmNhbGxiYWNrTWFpbigpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3RoZXJBcmdzPy5jYWxsYmFja01haW4oKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGFsbG93ZWRCeVByb2dyYW0pIHtcbiAgICAgIHRoaXMubmF2aWdhdGVUb0Vycm9yUGFnZSg0MDQsIG90aGVyQXJncz8ucm91dGVyKTtcbiAgICB9IGVsc2UgaWYgKHBlbmQuaGFzUGVuZGVuY2llcykge1xuICAgICAgdGhpcy5uYXZpZ2F0ZVRvUGVuZGVuY3lQYWdlKHBlbmQsIG90aGVyQXJncz8ucm91dGVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5uYXZpZ2F0ZVRvRXJyb3JQYWdlKDQwMywgb3RoZXJBcmdzPy5yb3V0ZXIpO1xuICAgIH1cbiAgfVxuXG4gIGdldEhUVFBIZWFkZXJBcHBsaWNhdGlvblBERigpOiBPYmplY3Qge1xuICAgIHJldHVybiB7XG4gICAgICBvYnNlcnZlOiAncmVzcG9uc2UnLFxuICAgICAgcmVzcG9uc2VUeXBlOiAnYmxvYidcbiAgICB9O1xuICB9XG5cbiAgQE1vbmtleUVjeENvcmVTZXJ2aWNlKHtcbiAgICByZXF1ZXN0SW5Qcm9ncmVzczoge1xuICAgICAgc2hvd1Byb2dyZXNzOiB0cnVlXG4gICAgfVxuICB9KVxuICBnZW5lcmljTWV0aG9kKGxpbms6IGFueSwgZGF0YT86IGFueSwgY2FsbGJhY2s/OiBGdW5jdGlvbikge1xuICAgIGNvbnN0IHsgaHJlZiwgdHlwZSA9ICdnZXQnIH0gPSBsaW5rO1xuXG4gICAgdGhpcy5tb25rZXllY3hTZXJ2aWNlPy5bdHlwZS50b0xvd2VyQ2FzZSgpXShgJHtocmVmfWAsIGRhdGEpPy5zdWJzY3JpYmUoXG4gICAgICAocmVzcDogYW55KSA9PiB7XG4gICAgICAgIGlmIChjYWxsYmFjaykgY2FsbGJhY2socmVzcCk7XG4gICAgICB9LFxuICAgICAgKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcbiAgICAgICAgaWYgKGNhbGxiYWNrKSBjYWxsYmFjaygpO1xuICAgICAgICB0aHJvd0Vycm9yKGVycik7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIGdldGkxOG4odHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSwga2V5czogc3RyaW5nIHwgc3RyaW5nW10pIHtcbiAgICB0cmFuc2xhdGVTZXJ2aWNlLm9uRGVmYXVsdExhbmdDaGFuZ2Uuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuX19pMThuID0gdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KGtleXMpO1xuICAgICAgdGhpcy5fX29uaTE4bkRhdGFDaGFuZ2VkJC5uZXh0KG51bGwpO1xuICAgIH0pO1xuICAgIHRyYW5zbGF0ZVNlcnZpY2UuZ2V0U3RyZWFtT25UcmFuc2xhdGlvbkNoYW5nZShrZXlzKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5fX2kxOG4gPSB0cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoa2V5cyk7XG4gICAgICB0aGlzLl9fb25pMThuRGF0YUNoYW5nZWQkLm5leHQobnVsbCk7XG4gICAgfSk7XG4gIH1cblxuICBkb1BhZ2luYXRpb24oKSB7XG4gICAgaWYgKCF0aGlzLl9fb25Mb2FkaW5nSW5Qcm9ncmVzcyQudmFsdWUpIHtcbiAgICAgIGNvbnN0IGhhc01vcmVQYWdlcyA9IHRoaXMuc2V0UGFnZSh7XG4gICAgICAgIHBhZ2U6IHtcbiAgICAgICAgICAuLi50aGlzLl9fcGFnZVxuICAgICAgICB9XG4gICAgICB9KS5uZXh0UGFnZSgpO1xuXG4gICAgICBpZiAoaGFzTW9yZVBhZ2VzICYmIHRoaXMuX19jYWxsYmFja1BhZ2luYXRpb24pIHtcbiAgICAgICAgdGhpcy5fX2NhbGxiYWNrUGFnaW5hdGlvbigpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGRvUGFnaW5hdGlvbnYyKHR5cGU6IHN0cmluZywgY2FsbGJhY2s6IEZ1bmN0aW9uKSB7XG4gICAgaWYgKCF0aGlzLl9fb25Mb2FkaW5nSW5Qcm9ncmVzcyQudmFsdWUpIHtcbiAgICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgICBjYWxsYmFjaygpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHNldExpbmtzKGxpbmtzOiBhbnkpIHtcbiAgICB0aGlzLl9faXNBYmxlVG9Eb1BhZ2luYXRpb24gPSB7XG4gICAgICBmaXJzdDogISFsaW5rcz8uZmlyc3QsXG4gICAgICBuZXh0OiAhIWxpbmtzPy5uZXh0XG4gICAgfTtcbiAgICB0aGlzLl9fbGlua3MgPSBsaW5rcztcbiAgfVxuXG4gIHNldFNlYXJjaEJ5VXJsKHJvdXRlcjogUm91dGVyLCB1cmw6IHN0cmluZywgc2VhcmNoOiBhbnksIGV4dHJhcz86IGFueSkge1xuICAgIHRoaXMuX19kYXRhID0gbnVsbDtcbiAgICB0aGlzLl9fcGFnZSA9IG51bGw7XG4gICAgdGhpcy5fX29uRGF0YUNoYW5nZWQkLm5leHQobnVsbCk7XG4gICAgdGhpcy5fX29uTG9hZGluZ0luUHJvZ3Jlc3MkLm5leHQoZmFsc2UpO1xuXG4gICAgcm91dGVyLm5hdmlnYXRlKFt1cmxdLCB7XG4gICAgICBxdWVyeVBhcmFtczoge1xuICAgICAgICAuLi5zZWFyY2gsXG4gICAgICAgIHI6IE1vbmtleUVjeFV0aWxzLmdldFJhbmRvbVN0cmluZygzMClcbiAgICAgIH0sXG4gICAgICBxdWVyeVBhcmFtc0hhbmRsaW5nOiAnbWVyZ2UnLFxuICAgICAgLi4uZXh0cmFzXG4gICAgfSk7XG4gIH1cblxuICBzYXZlU3RhdGUoc3RhdGU6IE1vbmtleUVjeFNhdmVkU3RhdGUpIHtcbiAgICB0aGlzLl9fc2F2ZWRTdGF0ZSA9IHtcbiAgICAgIHBhZ2U6IHRoaXMuX19wYWdlLFxuICAgICAgLi4uc3RhdGVcbiAgICB9O1xuICB9XG59XG4iXX0=
|
|
@@ -2234,6 +2234,24 @@ class MonkeyEcxCommonsService {
|
|
|
2234
2234
|
const { service, type } = args;
|
|
2235
2235
|
return service.hasPendencies(type);
|
|
2236
2236
|
}
|
|
2237
|
+
allowedSecurityAccessByFeature(args) {
|
|
2238
|
+
var _a, _b;
|
|
2239
|
+
if (!args) {
|
|
2240
|
+
return true;
|
|
2241
|
+
}
|
|
2242
|
+
const { config, feature } = args;
|
|
2243
|
+
try {
|
|
2244
|
+
if (!MonkeyEcxUtils.persistNullEmptyUndefined(feature) ||
|
|
2245
|
+
!MonkeyEcxUtils.persistNullEmptyUndefined((_a = config === null || config === void 0 ? void 0 : config.program) === null || _a === void 0 ? void 0 : _a.settings[feature])) {
|
|
2246
|
+
return false;
|
|
2247
|
+
}
|
|
2248
|
+
return !((_b = config === null || config === void 0 ? void 0 : config.program) === null || _b === void 0 ? void 0 : _b.settings[feature]);
|
|
2249
|
+
}
|
|
2250
|
+
catch (e) {
|
|
2251
|
+
// not to do
|
|
2252
|
+
}
|
|
2253
|
+
return true;
|
|
2254
|
+
}
|
|
2237
2255
|
allowedSecurityAccessByCountry(arg) {
|
|
2238
2256
|
if (!arg)
|
|
2239
2257
|
return true;
|
|
@@ -2348,9 +2366,11 @@ class MonkeyEcxCommonsService {
|
|
|
2348
2366
|
this.__tokenCredentials = this.tokenStorage.getToken();
|
|
2349
2367
|
}
|
|
2350
2368
|
const pend = this.allowedSecurityAccessByPendency(otherArgs === null || otherArgs === void 0 ? void 0 : otherArgs.pendency);
|
|
2369
|
+
const allowedByProgram = this.allowedSecurityAccessByFeature(otherArgs === null || otherArgs === void 0 ? void 0 : otherArgs.featureByProgram);
|
|
2351
2370
|
if (this.allowedSecurityAccess(otherArgs === null || otherArgs === void 0 ? void 0 : otherArgs.security) &&
|
|
2352
2371
|
this.allowedSecurityAccessByCountry(otherArgs === null || otherArgs === void 0 ? void 0 : otherArgs.countrySecurity) &&
|
|
2353
|
-
!pend.hasPendencies
|
|
2372
|
+
!pend.hasPendencies &&
|
|
2373
|
+
allowedByProgram) {
|
|
2354
2374
|
if (this.__schedule) {
|
|
2355
2375
|
(_c = (_b = (_a = this.otherArgs) === null || _a === void 0 ? void 0 : _a.schedule) === null || _b === void 0 ? void 0 : _b.service) === null || _c === void 0 ? void 0 : _c.removeSchedule(this.__schedule);
|
|
2356
2376
|
this.__schedule = null;
|
|
@@ -2398,6 +2418,9 @@ class MonkeyEcxCommonsService {
|
|
|
2398
2418
|
otherArgs === null || otherArgs === void 0 ? void 0 : otherArgs.callbackMain();
|
|
2399
2419
|
}
|
|
2400
2420
|
}
|
|
2421
|
+
else if (allowedByProgram) {
|
|
2422
|
+
this.navigateToErrorPage(404, otherArgs === null || otherArgs === void 0 ? void 0 : otherArgs.router);
|
|
2423
|
+
}
|
|
2401
2424
|
else if (pend.hasPendencies) {
|
|
2402
2425
|
this.navigateToPendencyPage(pend, otherArgs === null || otherArgs === void 0 ? void 0 : otherArgs.router);
|
|
2403
2426
|
}
|