ngx-techlify-core 14.12.0-beta.6 → 14.12.0-beta.8
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/error-handler.service.mjs +8 -7
- package/esm2020/lib/techlify-company-switcher/techlify-company-switcher/techlify-company-switcher.component.mjs +3 -3
- package/fesm2015/ngx-techlify-core.mjs +1238 -1238
- package/fesm2015/ngx-techlify-core.mjs.map +1 -1
- package/fesm2020/ngx-techlify-core.mjs +981 -981
- package/fesm2020/ngx-techlify-core.mjs.map +1 -1
- package/lib/core/error-handler.service.d.ts +3 -1
- package/package.json +1 -1
|
@@ -2,6 +2,7 @@ import { Injectable } from "@angular/core";
|
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
3
|
import * as i1 from "./alert.service";
|
|
4
4
|
import * as i2 from "./techlify-config.model";
|
|
5
|
+
import * as i3 from "./authentication.service";
|
|
5
6
|
/**
|
|
6
7
|
* Service used to handle errors from the request
|
|
7
8
|
*
|
|
@@ -9,9 +10,10 @@ import * as i2 from "./techlify-config.model";
|
|
|
9
10
|
* @since 20171202
|
|
10
11
|
*/
|
|
11
12
|
export class ErrorHandlerService {
|
|
12
|
-
constructor(alerter, config) {
|
|
13
|
+
constructor(alerter, config, authenticationService) {
|
|
13
14
|
this.alerter = alerter;
|
|
14
15
|
this.config = config;
|
|
16
|
+
this.authenticationService = authenticationService;
|
|
15
17
|
}
|
|
16
18
|
handleError(errorResponse, msg = '') {
|
|
17
19
|
// 1 - Create empty array to store errors
|
|
@@ -38,18 +40,17 @@ export class ErrorHandlerService {
|
|
|
38
40
|
var errMessage = errors.length ? errors[0] : msg;
|
|
39
41
|
this.alerter.addAlert("Error: " + errMessage, "warning");
|
|
40
42
|
if (errorResponse.status == 403 && this.config.isLogoutWhileApiGetsFailed) {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
location.reload();
|
|
43
|
+
//use our logout api
|
|
44
|
+
this.authenticationService.logout().subscribe(_ => location.reload());
|
|
44
45
|
}
|
|
45
46
|
}
|
|
46
47
|
}
|
|
47
|
-
ErrorHandlerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ErrorHandlerService, deps: [{ token: i1.AlertService }, { token: i2.TechlifyConfig }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
48
|
+
ErrorHandlerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ErrorHandlerService, deps: [{ token: i1.AlertService }, { token: i2.TechlifyConfig }, { token: i3.AuthenticationService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
48
49
|
ErrorHandlerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ErrorHandlerService, providedIn: 'root' });
|
|
49
50
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ErrorHandlerService, decorators: [{
|
|
50
51
|
type: Injectable,
|
|
51
52
|
args: [{
|
|
52
53
|
providedIn: 'root'
|
|
53
54
|
}]
|
|
54
|
-
}], ctorParameters: function () { return [{ type: i1.AlertService }, { type: i2.TechlifyConfig }]; } });
|
|
55
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
55
|
+
}], ctorParameters: function () { return [{ type: i1.AlertService }, { type: i2.TechlifyConfig }, { type: i3.AuthenticationService }]; } });
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3ItaGFuZGxlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXRlY2hsaWZ5LWNvcmUvc3JjL2xpYi9jb3JlL2Vycm9yLWhhbmRsZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7OztBQUszQzs7Ozs7R0FLRztBQUlILE1BQU0sT0FBTyxtQkFBbUI7SUFFOUIsWUFBb0IsT0FBcUIsRUFDL0IsTUFBc0IsRUFDdEIscUJBQTRDO1FBRmxDLFlBQU8sR0FBUCxPQUFPLENBQWM7UUFDL0IsV0FBTSxHQUFOLE1BQU0sQ0FBZ0I7UUFDdEIsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtJQUV0RCxDQUFDO0lBRUQsV0FBVyxDQUFDLGFBQWtCLEVBQUUsTUFBYyxFQUFFO1FBQzlDLHlDQUF5QztRQUN6QyxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFFbEIsMkRBQTJEO1FBQzNELElBQUksYUFBYSxFQUFFLEtBQUssRUFBRTtZQUV4Qiw4REFBOEQ7WUFDOUQsSUFBSSxhQUFhLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTtnQkFFaEMsc0RBQXNEO2dCQUN0RCxLQUFLLE1BQU0sUUFBUSxJQUFJLGFBQWEsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFO29CQUVqRCxJQUFJLGFBQWEsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLGNBQWMsQ0FBQyxRQUFRLENBQUMsRUFBRTt3QkFFeEQsbUNBQW1DO3dCQUNuQyxNQUFNLGNBQWMsR0FBa0IsYUFBYSxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7d0JBRTdFLHVEQUF1RDt3QkFDdkQsY0FBYyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztxQkFDckQ7aUJBRUY7YUFDRjtZQUVELElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7Z0JBQ3ZCLHlGQUF5RjtnQkFDekYsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7YUFDckc7U0FDRjtRQUNELElBQUksVUFBVSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO1FBQ2pELElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFNBQVMsR0FBRyxVQUFVLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFFekQsSUFBSSxhQUFhLENBQUMsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLDBCQUEwQixFQUFFO1lBQ3pFLG9CQUFvQjtZQUNwQixJQUFJLENBQUMscUJBQXFCLENBQUMsTUFBTSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7U0FDdkU7SUFDSCxDQUFDOztnSEE3Q1UsbUJBQW1CO29IQUFuQixtQkFBbUIsY0FGbEIsTUFBTTsyRkFFUCxtQkFBbUI7a0JBSC9CLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGVjaGxpZnlDb25maWcgfSBmcm9tICcuL3RlY2hsaWZ5LWNvbmZpZy5tb2RlbCc7XHJcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBBbGVydFNlcnZpY2UgfSBmcm9tIFwiLi9hbGVydC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IEF1dGhlbnRpY2F0aW9uU2VydmljZSB9IGZyb20gJy4vYXV0aGVudGljYXRpb24uc2VydmljZSc7XHJcblxyXG5cclxuLyoqXHJcbiAqIFNlcnZpY2UgdXNlZCB0byBoYW5kbGUgZXJyb3JzIGZyb20gdGhlIHJlcXVlc3RcclxuICpcclxuICogQGF1dGhvciBKb3NodWEgS2lzc29vblxyXG4gKiBAc2luY2UgMjAxNzEyMDJcclxuICovXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEVycm9ySGFuZGxlclNlcnZpY2Uge1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGFsZXJ0ZXI6IEFsZXJ0U2VydmljZSxcclxuICAgIHByaXZhdGUgY29uZmlnOiBUZWNobGlmeUNvbmZpZyxcclxuICAgIHByaXZhdGUgYXV0aGVudGljYXRpb25TZXJ2aWNlOiBBdXRoZW50aWNhdGlvblNlcnZpY2VcclxuICApIHtcclxuICB9XHJcblxyXG4gIGhhbmRsZUVycm9yKGVycm9yUmVzcG9uc2U6IGFueSwgbXNnOiBzdHJpbmcgPSAnJykge1xyXG4gICAgLy8gMSAtIENyZWF0ZSBlbXB0eSBhcnJheSB0byBzdG9yZSBlcnJvcnNcclxuICAgIGNvbnN0IGVycm9ycyA9IFtdO1xyXG5cclxuICAgIC8vIDIgLSBjaGVjayBpZiB0aGUgZXJyb3Igb2JqZWN0IGlzIHByZXNlbnQgaW4gdGhlIHJlc3BvbnNlXHJcbiAgICBpZiAoZXJyb3JSZXNwb25zZT8uZXJyb3IpIHtcclxuXHJcbiAgICAgIC8vIDMgLSBDaGVjayBmb3IgTGFyYXZlbCBmb3JtIHZhbGlkYXRpb24gZXJyb3IgbWVzc2FnZXMgb2JqZWN0XHJcbiAgICAgIGlmIChlcnJvclJlc3BvbnNlPy5lcnJvcj8uZXJyb3JzKSB7XHJcblxyXG4gICAgICAgIC8vIDQgLSBGb3IgZWFjaCBlcnJvciBwcm9wZXJ0eSAod2hpY2ggaXMgYSBmb3JtIGZpZWxkKVxyXG4gICAgICAgIGZvciAoY29uc3QgcHJvcGVydHkgaW4gZXJyb3JSZXNwb25zZS5lcnJvci5lcnJvcnMpIHtcclxuXHJcbiAgICAgICAgICBpZiAoZXJyb3JSZXNwb25zZS5lcnJvci5lcnJvcnM/Lmhhc093blByb3BlcnR5KHByb3BlcnR5KSkge1xyXG5cclxuICAgICAgICAgICAgLy8gNSAtIEV4dHJhY3QgaXQncyBhcnJheSBvZiBlcnJvcnNcclxuICAgICAgICAgICAgY29uc3QgcHJvcGVydHlFcnJvcnM6IEFycmF5PHN0cmluZz4gPSBlcnJvclJlc3BvbnNlPy5lcnJvcj8uZXJyb3JzW3Byb3BlcnR5XTtcclxuXHJcbiAgICAgICAgICAgIC8vIDYgLSBQdXNoIGFsbCBlcnJvcnMgaW4gdGhlIGFycmF5IHRvIHRoZSBlcnJvcnMgYXJyYXlcclxuICAgICAgICAgICAgcHJvcGVydHlFcnJvcnMuZm9yRWFjaChlcnJvciA9PiBlcnJvcnMucHVzaChlcnJvcikpO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChlcnJvcnMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgLy8gNyAtIFB1c2ggdGhlIG1haW4gZXJyb3IgbWVzc2FnZSB0byB0aGUgYXJyYXkgb2YgZXJyb3JzIGlmIHRoZXJlIGlzIG5vIHZhbGlkYXRpb24gZXJyb3JcclxuICAgICAgICBlcnJvcnMucHVzaChlcnJvclJlc3BvbnNlLmVycm9yLm1lc3NhZ2UgPyBlcnJvclJlc3BvbnNlLmVycm9yLm1lc3NhZ2UgOiBlcnJvclJlc3BvbnNlLmVycm9yPy5lcnJvcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHZhciBlcnJNZXNzYWdlID0gZXJyb3JzLmxlbmd0aCA/IGVycm9yc1swXSA6IG1zZztcclxuICAgIHRoaXMuYWxlcnRlci5hZGRBbGVydChcIkVycm9yOiBcIiArIGVyck1lc3NhZ2UsIFwid2FybmluZ1wiKTtcclxuXHJcbiAgICBpZiAoZXJyb3JSZXNwb25zZS5zdGF0dXMgPT0gNDAzICYmIHRoaXMuY29uZmlnLmlzTG9nb3V0V2hpbGVBcGlHZXRzRmFpbGVkKSB7XHJcbiAgICAgIC8vdXNlIG91ciBsb2dvdXQgYXBpXHJcbiAgICAgIHRoaXMuYXV0aGVudGljYXRpb25TZXJ2aWNlLmxvZ291dCgpLnN1YnNjcmliZShfID0+IGxvY2F0aW9uLnJlbG9hZCgpKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
|
|
@@ -43,11 +43,11 @@ export class TechlifyCompanySwitcherComponent {
|
|
|
43
43
|
}
|
|
44
44
|
}
|
|
45
45
|
TechlifyCompanySwitcherComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: TechlifyCompanySwitcherComponent, deps: [{ token: i1.HttpService }, { token: i2.CurrentUserService }, { token: i1.AuthenticationService }], target: i0.ɵɵFactoryTarget.Component });
|
|
46
|
-
TechlifyCompanySwitcherComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: TechlifyCompanySwitcherComponent, selector: "app-techlify-company-switcher", inputs: { menuTitle: "menuTitle" }, ngImport: i0, template: "<div mat-menu-item [matMenuTriggerFor]=\"menu\" type=\"button\">\n {{ menuTitle ?? user.client?.name }}\n</div>\n<mat-menu #menu=\"matMenu\">\n <button mat-menu-item *ngFor=\"let userClient of userClients\" (click)=\"switchClient(userClient)\"\n [disabled]=\"!userClient.is_enabled || userClient.client?.status_id == 3\">\n
|
|
46
|
+
TechlifyCompanySwitcherComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: TechlifyCompanySwitcherComponent, selector: "app-techlify-company-switcher", inputs: { menuTitle: "menuTitle" }, ngImport: i0, template: "<div mat-menu-item [matMenuTriggerFor]=\"menu\" type=\"button\">\n {{ menuTitle ?? user.client?.name }}\n</div>\n<mat-menu #menu=\"matMenu\" xPosition=\"before\">\n <button mat-menu-item *ngFor=\"let userClient of userClients\" (click)=\"switchClient(userClient)\"\n [disabled]=\"!userClient.is_enabled || userClient.client_id == user.client_id || userClient.client?.status_id == 3\">\n {{ userClient.client?.name }}\n <span *ngIf=\"userClient.is_disabled == true\" class=\"ml-1\">(disabled)</span>\n <span *ngIf=\"userClient.client?.status_id == 3\" class=\"ml-1\">(Inactive)</span>\n <span class=\"active-dot ml-1\" *ngIf=\"userClient.client_id == user.client_id\"></span>\n </button>\n</mat-menu>", styles: [".active-dot{height:10px;width:10px;background-color:green;border-radius:50%;display:inline-block}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i4.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i4.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }] });
|
|
47
47
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: TechlifyCompanySwitcherComponent, decorators: [{
|
|
48
48
|
type: Component,
|
|
49
|
-
args: [{ selector: 'app-techlify-company-switcher', template: "<div mat-menu-item [matMenuTriggerFor]=\"menu\" type=\"button\">\n {{ menuTitle ?? user.client?.name }}\n</div>\n<mat-menu #menu=\"matMenu\">\n <button mat-menu-item *ngFor=\"let userClient of userClients\" (click)=\"switchClient(userClient)\"\n [disabled]=\"!userClient.is_enabled || userClient.client?.status_id == 3\">\n
|
|
49
|
+
args: [{ selector: 'app-techlify-company-switcher', template: "<div mat-menu-item [matMenuTriggerFor]=\"menu\" type=\"button\">\n {{ menuTitle ?? user.client?.name }}\n</div>\n<mat-menu #menu=\"matMenu\" xPosition=\"before\">\n <button mat-menu-item *ngFor=\"let userClient of userClients\" (click)=\"switchClient(userClient)\"\n [disabled]=\"!userClient.is_enabled || userClient.client_id == user.client_id || userClient.client?.status_id == 3\">\n {{ userClient.client?.name }}\n <span *ngIf=\"userClient.is_disabled == true\" class=\"ml-1\">(disabled)</span>\n <span *ngIf=\"userClient.client?.status_id == 3\" class=\"ml-1\">(Inactive)</span>\n <span class=\"active-dot ml-1\" *ngIf=\"userClient.client_id == user.client_id\"></span>\n </button>\n</mat-menu>", styles: [".active-dot{height:10px;width:10px;background-color:green;border-radius:50%;display:inline-block}\n"] }]
|
|
50
50
|
}], ctorParameters: function () { return [{ type: i1.HttpService }, { type: i2.CurrentUserService }, { type: i1.AuthenticationService }]; }, propDecorators: { menuTitle: [{
|
|
51
51
|
type: Input
|
|
52
52
|
}] } });
|
|
53
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVjaGxpZnktY29tcGFueS1zd2l0Y2hlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL3RlY2hsaWZ5LWNvbXBhbnktc3dpdGNoZXIvdGVjaGxpZnktY29tcGFueS1zd2l0Y2hlci90ZWNobGlmeS1jb21wYW55LXN3aXRjaGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jb3JlL3NyYy9saWIvdGVjaGxpZnktY29tcGFueS1zd2l0Y2hlci90ZWNobGlmeS1jb21wYW55LXN3aXRjaGVyL3RlY2hsaWZ5LWNvbXBhbnktc3dpdGNoZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7Ozs7OztBQWF6RCxNQUFNLE9BQU8sZ0NBQWdDO0lBSzNDLFlBQ1UsSUFBaUIsRUFDakIsa0JBQXNDLEVBQ3RDLHFCQUE0QztRQUY1QyxTQUFJLEdBQUosSUFBSSxDQUFhO1FBQ2pCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdEMsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQUx0RCxnQkFBVyxHQUFVLEVBQUUsQ0FBQztRQU90QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNoRCxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxlQUFlO1FBQ2IsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxTQUFTLENBQUM7WUFDMUMsSUFBSSxFQUFFLENBQUMsUUFBYSxFQUFFLEVBQUU7Z0JBQ3RCLElBQUksQ0FBQyxXQUFXLEdBQUcsUUFBUSxFQUFFLElBQUksQ0FBQztZQUNwQyxDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxZQUFZLENBQUMsVUFBZTtRQUMxQixxQ0FBcUM7UUFDckMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsS0FBSyxVQUFVLENBQUMsU0FBUyxJQUFJLFVBQVUsRUFBRSxXQUFXLEVBQUU7WUFBRSxPQUFPO1NBQUU7UUFDeEYsSUFBSSxDQUFDLHFCQUFxQixDQUFDLGFBQWEsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDO2FBQ3JELFNBQVMsQ0FBQyxDQUFDLFdBQXdCLEVBQUUsRUFBRTtZQUN0QyxJQUFJLENBQUMsSUFBSSxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUM7WUFDN0IsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUMzQixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7OzZIQXpDVSxnQ0FBZ0M7aUhBQWhDLGdDQUFnQyx5R0NiN0MsZ3RCQVdXOzJGREVFLGdDQUFnQztrQkFMNUMsU0FBUzsrQkFDRSwrQkFBK0I7dUtBTWhDLFNBQVM7c0JBQWpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEF1dGhlbnRpY2F0aW9uU2VydmljZSxcbiAgQ3JlZGVudGlhbHMsXG4gIEh0dHBTZXJ2aWNlLFxufSBmcm9tICcuLi8uLi9jb3JlJztcbmltcG9ydCB7IEN1cnJlbnRVc2VyU2VydmljZSwgVXNlciB9IGZyb20gJy4uLy4uL3VzZXInO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtdGVjaGxpZnktY29tcGFueS1zd2l0Y2hlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi90ZWNobGlmeS1jb21wYW55LXN3aXRjaGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGVjaGxpZnktY29tcGFueS1zd2l0Y2hlci5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFRlY2hsaWZ5Q29tcGFueVN3aXRjaGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBASW5wdXQoKSBtZW51VGl0bGU6IHN0cmluZztcbiAgdXNlckNsaWVudHM6IGFueVtdID0gW107XG4gIHVzZXI6IFVzZXI7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgaHR0cDogSHR0cFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjdXJyZW50VXNlclNlcnZpY2U6IEN1cnJlbnRVc2VyU2VydmljZSxcbiAgICBwcml2YXRlIGF1dGhlbnRpY2F0aW9uU2VydmljZTogQXV0aGVudGljYXRpb25TZXJ2aWNlLFxuICApIHtcbiAgICB0aGlzLnVzZXIgPSB0aGlzLmN1cnJlbnRVc2VyU2VydmljZS5nZXRVc2VyKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmxvYWRVc2VyQ2xpZW50cygpO1xuICB9XG5cbiAgLyoqXG4gICAqIExvYWQgVXNlciBDbGllbnRzLlxuICAgKi9cbiAgbG9hZFVzZXJDbGllbnRzKCkge1xuICAgIHRoaXMuaHR0cC5nZXQoJ2FwaS91c2VyLWNsaWVudHMnKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy51c2VyQ2xpZW50cyA9IHJlc3BvbnNlPy5kYXRhO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFN3aXRjaCB0aGUgY29tcGFueS5cbiAgICpcbiAgICogQHBhcmFtIHVzZXJDbGllbnRcbiAgICovXG4gIHN3aXRjaENsaWVudCh1c2VyQ2xpZW50OiBhbnkpIHtcbiAgICAvLyBEbyBub3RoaW5nIGlzIHNhbWUgY2xpZW50IHNlbGVjdGVkXG4gICAgaWYgKHRoaXMudXNlci5jbGllbnRfaWQgPT09IHVzZXJDbGllbnQuY2xpZW50X2lkIHx8IHVzZXJDbGllbnQ/LmlzX2Rpc2FibGVkKSB7IHJldHVybjsgfVxuICAgIHRoaXMuYXV0aGVudGljYXRpb25TZXJ2aWNlLnN3aXRjaENvbXBhbnkodXNlckNsaWVudD8uaWQpXG4gICAgICAuc3Vic2NyaWJlKChjcmVkZW50aWFsczogQ3JlZGVudGlhbHMpID0+IHtcbiAgICAgICAgdGhpcy51c2VyID0gY3JlZGVudGlhbHMudXNlcjtcbiAgICAgICAgd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpO1xuICAgICAgfSk7XG4gIH1cbn1cbiIsIjxkaXYgbWF0LW1lbnUtaXRlbSBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudVwiIHR5cGU9XCJidXR0b25cIj5cbiAge3sgbWVudVRpdGxlID8/IHVzZXIuY2xpZW50Py5uYW1lIH19XG48L2Rpdj5cbjxtYXQtbWVudSAjbWVudT1cIm1hdE1lbnVcIiB4UG9zaXRpb249XCJiZWZvcmVcIj5cbiAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtICpuZ0Zvcj1cImxldCB1c2VyQ2xpZW50IG9mIHVzZXJDbGllbnRzXCIgKGNsaWNrKT1cInN3aXRjaENsaWVudCh1c2VyQ2xpZW50KVwiXG4gICAgW2Rpc2FibGVkXT1cIiF1c2VyQ2xpZW50LmlzX2VuYWJsZWQgfHwgdXNlckNsaWVudC5jbGllbnRfaWQgPT0gdXNlci5jbGllbnRfaWQgIHx8IHVzZXJDbGllbnQuY2xpZW50Py5zdGF0dXNfaWQgPT0gM1wiPlxuICAgIHt7IHVzZXJDbGllbnQuY2xpZW50Py5uYW1lIH19XG4gICAgPHNwYW4gKm5nSWY9XCJ1c2VyQ2xpZW50LmlzX2Rpc2FibGVkID09IHRydWVcIiBjbGFzcz1cIm1sLTFcIj4oZGlzYWJsZWQpPC9zcGFuPlxuICAgIDxzcGFuICpuZ0lmPVwidXNlckNsaWVudC5jbGllbnQ/LnN0YXR1c19pZCA9PSAzXCIgY2xhc3M9XCJtbC0xXCI+KEluYWN0aXZlKTwvc3Bhbj5cbiAgICA8c3BhbiBjbGFzcz1cImFjdGl2ZS1kb3QgbWwtMVwiICpuZ0lmPVwidXNlckNsaWVudC5jbGllbnRfaWQgPT0gdXNlci5jbGllbnRfaWRcIj48L3NwYW4+XG4gIDwvYnV0dG9uPlxuPC9tYXQtbWVudT4iXX0=
|