tango-app-ui-store-ticket-infra 3.7.3 → 3.7.5

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.
@@ -19,6 +19,7 @@ export class TangoStoreInfraComponent {
19
19
  storeId;
20
20
  type;
21
21
  selectedTab1;
22
+ subTabFromUrlApplied = false;
22
23
  clientName;
23
24
  constructor(pageInfo, router, gs, route) {
24
25
  this.pageInfo = pageInfo;
@@ -46,9 +47,26 @@ export class TangoStoreInfraComponent {
46
47
  ngOnInit() {
47
48
  this.userType = JSON.parse(localStorage.getItem("user-info") || '{}');
48
49
  this.route.queryParams.subscribe(params => {
49
- this.selectedTab = params['type'] ? params['type'] : 'infra';
50
- if (this.selectedTab === 'infra') {
51
- this.selectedTab1 = 'tickets';
50
+ const type = params['type'] ? params['type'] : 'infra';
51
+ if (type === 'infrav2') {
52
+ // Every Infra block is gated on selectedTab === 'infra', so this reads
53
+ // as "the Infra tab, opened on Tickets V2" rather than a tab of its own.
54
+ this.selectedTab = 'infra';
55
+ }
56
+ else {
57
+ this.selectedTab = type;
58
+ }
59
+ // Only on the first emission: selectedTabs1() rewrites `type`, which
60
+ // fires this subscription again, and without the guard that would undo
61
+ // the click - Summary in particular would bounce to Tickets V1.
62
+ if (!this.subTabFromUrlApplied) {
63
+ this.subTabFromUrlApplied = true;
64
+ if (type === 'infrav2') {
65
+ this.selectedTab1 = 'ticketsV2';
66
+ }
67
+ else if (this.selectedTab === 'infra') {
68
+ this.selectedTab1 = 'tickets';
69
+ }
52
70
  }
53
71
  });
54
72
  const clientData = JSON.parse(localStorage.getItem("client-details") || "{}");
@@ -162,6 +180,11 @@ export class TangoStoreInfraComponent {
162
180
  }
163
181
  selectedTabs1(type) {
164
182
  this.selectedTab1 = type;
183
+ // Keep the URL in step, the same way selectedTabs() does for the top tabs.
184
+ // Summary has no `type` of its own, so it shares 'infra' with Tickets V1.
185
+ const queryParams = { ...this.route.snapshot.queryParams };
186
+ queryParams['type'] = type === 'ticketsV2' ? 'infrav2' : 'infra';
187
+ this.router.navigate([], { relativeTo: this.route, queryParams: queryParams });
165
188
  }
166
189
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TangoStoreInfraComponent, deps: [{ token: i1.PageInfoService }, { token: i2.Router }, { token: i1.GlobalStateService }, { token: i2.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component });
167
190
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TangoStoreInfraComponent, selector: "lib-tango-store-infra", ngImport: i0, template: "<div class=\"card mb-5 py-3 px-5\">\r\n <ul class=\"nav nav-stretch nav-line-tabs1 nav-line-tabs border-transparent flex-nowrap\">\r\n <li class=\"nav-item\" (click)=\"selectedTabs('infra')\"><a [ngClass]=\"selectedTab ==='infra' ? 'active' :''\"\r\n class=\"nav-link cursor-pointer no-border me-6 \">Infra</a>\r\n </li>\r\n <li class=\"nav-item\" (click)=\"selectedTabs('dataMismatch')\">\r\n <a [ngClass]=\"selectedTab ==='dataMismatch' ? 'active' :''\" class=\"nav-link cursor-pointer me-6\">Data Mismatch</a>\r\n </li>\r\n <li class=\"nav-item\" (click)=\"selectedTabs('cameraAngleChange')\">\r\n <a [ngClass]=\"selectedTab ==='cameraAngleChange' ? 'active' :''\" class=\"nav-link cursor-pointer me-6\">Camera Angle</a>\r\n </li>\r\n\r\n <!-- <li *ngIf=\"(gs.userAccess | async)?.userType === 'tango' || clientData?.isVMS\" class=\"nav-item\" (click)=\"selectedTabs('footfall')\">\r\n <a [ngClass]=\"selectedTab ==='footfall' ? 'active' :''\" class=\"nav-link cursor-pointer me-6\">Footfall Directory</a>\r\n </li> -->\r\n </ul>\r\n</div>\r\n<div *ngIf=\"selectedTab ==='infra'\" class=\"mb-5 py-3 px-5\">\r\n <ul class=\"nav nav-stretch nav-line-tabs1 nav-line-tabs border-transparent flex-nowrap\">\r\n <li class=\"nav-item nav-item1\" (click)=\"selectedTabs1('summary')\"><a [ngClass]=\"selectedTab1 ==='summary' ? 'active' :''\"\r\n class=\"nav-link nav-link1 cursor-pointer no-border me-6 \">Summary</a>\r\n </li>\r\n <li class=\"nav-item nav-item1\" (click)=\"selectedTabs1('tickets')\">\r\n <a [ngClass]=\"selectedTab1 ==='tickets' ? 'active' :''\" class=\"nav-link nav-link1 cursor-pointer me-6\">Tickets V1</a>\r\n </li>\r\n <li class=\"nav-item nav-item1\" (click)=\"selectedTabs1('ticketsV2')\">\r\n <a [ngClass]=\"selectedTab1 ==='ticketsV2' ? 'active' :''\" class=\"nav-link nav-link1 cursor-pointer me-6\">Tickets V2</a>\r\n </li>\r\n </ul>\r\n</div>\r\n<div *ngIf=\"selectedTab ==='infra' && selectedTab1 ==='summary'\">\r\n <lib-summary-infra [selectedTab]=\"selectedTab\"></lib-summary-infra>\r\n</div>\r\n<div *ngIf=\"selectedTab ==='infra' && selectedTab1 ==='tickets'\">\r\n <lib-ticket-infra [selectedTab]=\"selectedTab\"></lib-ticket-infra>\r\n</div>\r\n<div *ngIf=\"selectedTab ==='infra' && selectedTab1 ==='ticketsV2'\">\r\n <lib-ticket-infra-v2 [selectedTab]=\"selectedTab\"></lib-ticket-infra-v2>\r\n</div>\r\n<div *ngIf=\"selectedTab ==='dataMismatch'\">\r\n <lib-ticket-infra [selectedTab]=\"selectedTab\"></lib-ticket-infra>\r\n</div>\r\n\r\n<div *ngIf=\"selectedTab ==='cameraAngleChange'\">\r\n <lib-ticket-camera-angle [selectedTab]=\"selectedTab\"></lib-ticket-camera-angle>\r\n</div>\r\n<div *ngIf=\"selectedTab ==='footfall'\">\r\n <lib-footfall-directory [selectedTab]=\"selectedTab\"></lib-footfall-directory>\r\n</div>\r\n<router-outlet></router-outlet>", styles: [".nav-item .nav-link.active{border:none;border-radius:6px;background:var(--Primary-50, #EAF8FF);padding:8px 12px}.nav-item .nav-link:hover{border:none}.nav-item1 .nav-link1.active{border:none;border-radius:0;background:var(--Primary-50, #EAF8FF);border-bottom:2px solid #009BF3!important;padding:8px 12px}.nav-item1 .nav-link1:hover{border:none}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: i4.TicketInfraComponent, selector: "lib-ticket-infra", inputs: ["selectedTab"] }, { kind: "component", type: i5.SummaryInfraComponent, selector: "lib-summary-infra", inputs: ["selectedTab"] }, { kind: "component", type: i6.FootfallDirectoryComponent, selector: "lib-footfall-directory", inputs: ["selectedTab"] }, { kind: "component", type: i7.TicketCameraAngleComponent, selector: "lib-ticket-camera-angle", inputs: ["selectedTab"] }, { kind: "component", type: i8.TicketInfraV2Component, selector: "lib-ticket-infra-v2", inputs: ["selectedTab"] }] });
@@ -170,4 +193,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
170
193
  type: Component,
171
194
  args: [{ selector: 'lib-tango-store-infra', template: "<div class=\"card mb-5 py-3 px-5\">\r\n <ul class=\"nav nav-stretch nav-line-tabs1 nav-line-tabs border-transparent flex-nowrap\">\r\n <li class=\"nav-item\" (click)=\"selectedTabs('infra')\"><a [ngClass]=\"selectedTab ==='infra' ? 'active' :''\"\r\n class=\"nav-link cursor-pointer no-border me-6 \">Infra</a>\r\n </li>\r\n <li class=\"nav-item\" (click)=\"selectedTabs('dataMismatch')\">\r\n <a [ngClass]=\"selectedTab ==='dataMismatch' ? 'active' :''\" class=\"nav-link cursor-pointer me-6\">Data Mismatch</a>\r\n </li>\r\n <li class=\"nav-item\" (click)=\"selectedTabs('cameraAngleChange')\">\r\n <a [ngClass]=\"selectedTab ==='cameraAngleChange' ? 'active' :''\" class=\"nav-link cursor-pointer me-6\">Camera Angle</a>\r\n </li>\r\n\r\n <!-- <li *ngIf=\"(gs.userAccess | async)?.userType === 'tango' || clientData?.isVMS\" class=\"nav-item\" (click)=\"selectedTabs('footfall')\">\r\n <a [ngClass]=\"selectedTab ==='footfall' ? 'active' :''\" class=\"nav-link cursor-pointer me-6\">Footfall Directory</a>\r\n </li> -->\r\n </ul>\r\n</div>\r\n<div *ngIf=\"selectedTab ==='infra'\" class=\"mb-5 py-3 px-5\">\r\n <ul class=\"nav nav-stretch nav-line-tabs1 nav-line-tabs border-transparent flex-nowrap\">\r\n <li class=\"nav-item nav-item1\" (click)=\"selectedTabs1('summary')\"><a [ngClass]=\"selectedTab1 ==='summary' ? 'active' :''\"\r\n class=\"nav-link nav-link1 cursor-pointer no-border me-6 \">Summary</a>\r\n </li>\r\n <li class=\"nav-item nav-item1\" (click)=\"selectedTabs1('tickets')\">\r\n <a [ngClass]=\"selectedTab1 ==='tickets' ? 'active' :''\" class=\"nav-link nav-link1 cursor-pointer me-6\">Tickets V1</a>\r\n </li>\r\n <li class=\"nav-item nav-item1\" (click)=\"selectedTabs1('ticketsV2')\">\r\n <a [ngClass]=\"selectedTab1 ==='ticketsV2' ? 'active' :''\" class=\"nav-link nav-link1 cursor-pointer me-6\">Tickets V2</a>\r\n </li>\r\n </ul>\r\n</div>\r\n<div *ngIf=\"selectedTab ==='infra' && selectedTab1 ==='summary'\">\r\n <lib-summary-infra [selectedTab]=\"selectedTab\"></lib-summary-infra>\r\n</div>\r\n<div *ngIf=\"selectedTab ==='infra' && selectedTab1 ==='tickets'\">\r\n <lib-ticket-infra [selectedTab]=\"selectedTab\"></lib-ticket-infra>\r\n</div>\r\n<div *ngIf=\"selectedTab ==='infra' && selectedTab1 ==='ticketsV2'\">\r\n <lib-ticket-infra-v2 [selectedTab]=\"selectedTab\"></lib-ticket-infra-v2>\r\n</div>\r\n<div *ngIf=\"selectedTab ==='dataMismatch'\">\r\n <lib-ticket-infra [selectedTab]=\"selectedTab\"></lib-ticket-infra>\r\n</div>\r\n\r\n<div *ngIf=\"selectedTab ==='cameraAngleChange'\">\r\n <lib-ticket-camera-angle [selectedTab]=\"selectedTab\"></lib-ticket-camera-angle>\r\n</div>\r\n<div *ngIf=\"selectedTab ==='footfall'\">\r\n <lib-footfall-directory [selectedTab]=\"selectedTab\"></lib-footfall-directory>\r\n</div>\r\n<router-outlet></router-outlet>", styles: [".nav-item .nav-link.active{border:none;border-radius:6px;background:var(--Primary-50, #EAF8FF);padding:8px 12px}.nav-item .nav-link:hover{border:none}.nav-item1 .nav-link1.active{border:none;border-radius:0;background:var(--Primary-50, #EAF8FF);border-bottom:2px solid #009BF3!important;padding:8px 12px}.nav-item1 .nav-link1:hover{border:none}\n"] }]
172
195
  }], ctorParameters: () => [{ type: i1.PageInfoService }, { type: i2.Router }, { type: i1.GlobalStateService }, { type: i2.ActivatedRoute }] });
173
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFuZ28tc3RvcmUtaW5mcmEuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tc3RvcmUtdGlja2V0LWluZnJhL3NyYy9saWIvY29tcG9uZW50cy90YW5nby1zdG9yZS1pbmZyYS90YW5nby1zdG9yZS1pbmZyYS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1zdG9yZS10aWNrZXQtaW5mcmEvc3JjL2xpYi9jb21wb25lbnRzL3RhbmdvLXN0b3JlLWluZnJhL3RhbmdvLXN0b3JlLWluZnJhLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBRTdELE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7O0FBUTFDLE1BQU0sT0FBTyx3QkFBd0I7SUFPZjtJQUFpQztJQUFxQjtJQUE4QjtJQU54RyxXQUFXLENBQU07SUFDVCxNQUFNLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUMvQixPQUFPLENBQU07SUFDYixJQUFJLENBQU07SUFDVixZQUFZLENBQU07SUFDbEIsVUFBVSxDQUFNO0lBQ2hCLFlBQW9CLFFBQXdCLEVBQVMsTUFBYSxFQUFRLEVBQXFCLEVBQVMsS0FBb0I7UUFBeEcsYUFBUSxHQUFSLFFBQVEsQ0FBZ0I7UUFBUyxXQUFNLEdBQU4sTUFBTSxDQUFPO1FBQVEsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7UUFBUyxVQUFLLEdBQUwsS0FBSyxDQUFlO0lBRTVILENBQUM7SUFDRCxhQUFhLENBQUs7SUFDbEIsV0FBVztRQUNULElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDekIsQ0FB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Q0FBQTtTQUM3QjtRQUNELE1BQU0sV0FBVyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUN2RCxXQUFXLENBQUMsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDO1FBQzVCLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBQyxJQUFJLENBQUMsS0FBSyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUMsQ0FBQyxDQUFDO0lBQ25GLENBQUM7SUFFRCxhQUFhLENBQUMsSUFBUTtRQUNwQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztJQUMzQixDQUFDO3dHQXhKWSx3QkFBd0I7NEZBQXhCLHdCQUF3Qiw2RENWckMsNC9GQWlEK0I7OzRGRHZDbEIsd0JBQXdCO2tCQUxwQyxTQUFTOytCQUNFLHVCQUF1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBHbG9iYWxTdGF0ZVNlcnZpY2UsIFBhZ2VJbmZvU2VydmljZSB9IGZyb20gJ3RhbmdvLWFwcC11aS1nbG9iYWwnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItdGFuZ28tc3RvcmUtaW5mcmEnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90YW5nby1zdG9yZS1pbmZyYS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL3RhbmdvLXN0b3JlLWluZnJhLmNvbXBvbmVudC5zY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgVGFuZ29TdG9yZUluZnJhQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LE9uRGVzdHJveSB7XHJcbiAgc2VsZWN0ZWRUYWI6IGFueTtcclxuICBwcml2YXRlIGRldGFjaCA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgc3RvcmVJZDogYW55O1xyXG4gIHR5cGU6IGFueTtcclxuICBzZWxlY3RlZFRhYjE6IGFueTtcclxuICBjbGllbnROYW1lOiBhbnk7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBwYWdlSW5mbzpQYWdlSW5mb1NlcnZpY2UscHJpdmF0ZSByb3V0ZXI6Um91dGVyLHB1YmxpYyBnczpHbG9iYWxTdGF0ZVNlcnZpY2UscHJpdmF0ZSByb3V0ZTpBY3RpdmF0ZWRSb3V0ZSl7XHJcblxyXG4gIH1cclxuICBoZWFkZXJGaWx0ZXJzOmFueTtcclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGV0YWNoLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLmRldGFjaC5jb21wbGV0ZSgpO1xyXG4gIH1cclxuICBjbGllbnREYXRhOmFueTtcclxuICAgdXNlclR5cGU6YW55O1xyXG5wcml2YXRlIGlzU3RvcmVJZFZhbGlkRm9yQ2xpZW50KHN0b3JlSWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gIGlmICghc3RvcmVJZCB8fCAhdGhpcy51c2VyVHlwZT8uY2xpZW50SWQpIHJldHVybiBmYWxzZTtcclxuXHJcbiAgLy8gLy8gVGFuZ28gdXNlcnMgY2FuIGFjY2VzcyBhbGxcclxuICAvLyBpZiAodGhpcy5ncy51c2VyQWNjZXNzLnZhbHVlPy51c2VyVHlwZSA9PT0gJ3RhbmdvJykge1xyXG4gIC8vICAgcmV0dXJuIHRydWU7XHJcbiAgLy8gfVxyXG5cclxuICBjb25zdCBzdG9yZUNsaWVudElkID0gc3RvcmVJZC5zcGxpdCgnLScpWzBdO1xyXG4gIHJldHVybiBzdG9yZUNsaWVudElkID09PSBTdHJpbmcodGhpcy51c2VyVHlwZS5jbGllbnRJZCk7XHJcbn1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgIHRoaXMudXNlclR5cGUgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwidXNlci1pbmZvXCIpIHx8ICd7fScpO1xyXG4gICAgdGhpcy5yb3V0ZS5xdWVyeVBhcmFtcy5zdWJzY3JpYmUocGFyYW1zID0+IHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFRhYiA9IHBhcmFtc1sndHlwZSddID8gcGFyYW1zWyd0eXBlJ10gOiAnaW5mcmEnO1xyXG4gICAgICBpZih0aGlzLnNlbGVjdGVkVGFiID09PSdpbmZyYScpe1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRUYWIxID0ndGlja2V0cydcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICAgICAgICAgY29uc3QgY2xpZW50RGF0YTogYW55ID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImNsaWVudC1kZXRhaWxzXCIpIHx8IFwie31cIik7XHJcbiAgICB0aGlzLmNsaWVudERhdGEgPSBjbGllbnREYXRhO1xyXG4gICAgdGhpcy5ncy5kYXRhUmFuZ2VWYWx1ZS5waXBlKHRha2VVbnRpbCh0aGlzLmRldGFjaCkpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoZGF0YSkge1xyXG4gICAgICAgICAgdGhpcy5oZWFkZXJGaWx0ZXJzID0gZGF0YTtcclxuICAgICAgICAgIHRoaXMuc3RvcmVJZCA9XHJcbiAgICAgICAgICAgIGRhdGEgJiYgZGF0YS5zdG9yZSA/IGRhdGEuc3RvcmUgOiB0aGlzLnJvdXRlci51cmwuc3BsaXQoXCIvXCIpWzNdO1xyXG4gICAgICAgICAgICB0aGlzLmNsaWVudE5hbWUgPSBkYXRhPy5jbGllbnROYW1lID8gZGF0YT8uY2xpZW50TmFtZTonJztcclxuICAgICAgICAgICAgIGlmICh0aGlzLmdzLnVzZXJBY2Nlc3MudmFsdWU/LnVzZXJUeXBlICE9PSAndGFuZ28nKSB7XHJcbiAgICAgICAgICAgICBpZiAoIXRoaXMuaXNTdG9yZUlkVmFsaWRGb3JDbGllbnQodGhpcy5zdG9yZUlkKSkge1xyXG4gICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvZXJyb3IvNDA0J10pO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICAgICAgdGhpcy51cGRhdGVTdG9yZUlkUXVlcnlQYXJhbSh0aGlzLnN0b3JlSWQpO1xyXG4gICAgICAgICAgdGhpcy5zZXRQYWdlRGF0YSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gICAgfVxyXG4gICAgdXBkYXRlU3RvcmVJZFF1ZXJ5UGFyYW0oc3RvcmVJZDogc3RyaW5nKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZ3MudXNlckFjY2Vzcy52YWx1ZT8udXNlclR5cGUgIT09ICd0YW5nbycpIHtcclxuICAgICAgIGlmICghdGhpcy5pc1N0b3JlSWRWYWxpZEZvckNsaWVudChzdG9yZUlkKSkge1xyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvZXJyb3IvNDA0J10pO1xyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxufVxyXG4gICAgICBjb25zdCBxdWVyeVBhcmFtcyA9IHsgLi4udGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtcyB9O1xyXG4gICAgICAvLyBVcGRhdGUgc3RvcmVJZCBpbiBxdWVyeVBhcmFtc1xyXG4gICAgICBxdWVyeVBhcmFtcy5zdG9yZUlkID0gc3RvcmVJZDtcclxuICAgICAgLy8gTmF2aWdhdGUgdG8gdGhlIHNhbWUgcm91dGUgd2l0aCB1cGRhdGVkIHF1ZXJ5UGFyYW1zXHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtdLCB7IHF1ZXJ5UGFyYW1zOiBxdWVyeVBhcmFtcywgcXVlcnlQYXJhbXNIYW5kbGluZzogJ21lcmdlJyB9KTtcclxuICAgIH1cclxuICBzZXRQYWdlRGF0YSgpe1xyXG4gICAgdGhpcy5wYWdlSW5mby5zZXRUaXRsZShcIlRpY2tldHNcIik7XHJcbiAgICB0aGlzLnBhZ2VJbmZvLnNldERlc2NyaXB0aW9uKFxyXG4gICAgICBcIlZpZXcsIHNoYXJlLCBkb3dubG9hZCBhbmQgYmVuY2htYXJrIHRoZSBzdG9yZXMgcGVyZm9ybWFuY2UgaW4gb25lIHNjcmVlblwiXHJcbiAgICApO1xyXG4gICAgbGV0IGJyZWFkY3J1bWJzOiBhbnlbXSA9IFtdO1xyXG4gICAgY29uc3QgY29tbW9uQnJlYWRjcnVtYnMgPSBbXHJcbiAgICAgIHtcclxuICAgICAgICB0aXRsZTogdGhpcy5jbGllbnROYW1lLFxyXG4gICAgICAgIHBhdGg6IFwiL21hbmFnZS9zdG9yZXNcIixcclxuICAgICAgICBpc0FjdGl2ZTogZmFsc2UsXHJcbiAgICAgICAgaXNTZXBhcmF0b3I6IGZhbHNlLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdGl0bGU6IHRoaXMuY2xpZW50TmFtZSxcclxuICAgICAgICBwYXRoOiBcIi9tYW5hZ2Uvc3RvcmVzXCIsXHJcbiAgICAgICAgaXNBY3RpdmU6IGZhbHNlLFxyXG4gICAgICAgIGlzU2VwYXJhdG9yOiB0cnVlLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdGl0bGU6IHRoaXMuc3RvcmVJZCxcclxuICAgICAgICBwYXRoOiBgL21hbmFnZS9zdG9yZXMvY2FtZXJhcz9zdG9yZUlkPSR7dGhpcy5zdG9yZUlkfWAsXHJcbiAgICAgICAgaXNBY3RpdmU6IGZhbHNlLFxyXG4gICAgICAgIGlzU2VwYXJhdG9yOiBmYWxzZSxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHRpdGxlOiB0aGlzLnN0b3JlSWQsXHJcbiAgICAgICAgcGF0aDogYC9tYW5hZ2Uvc3RvcmVzL2NhbWVyYXM/c3RvcmVJZD0ke3RoaXMuc3RvcmVJZH1gLFxyXG4gICAgICAgIGlzQWN0aXZlOiBmYWxzZSxcclxuICAgICAgICBpc1NlcGFyYXRvcjogdHJ1ZSxcclxuICAgICAgfSxcclxuICAgIF07XHJcbiAgICBcclxuICAgIGlmICh0aGlzLmdzLnVzZXJBY2Nlc3MudmFsdWU/LnVzZXJUeXBlID09PSBcInRhbmdvXCIpIHtcclxuICAgICAgYnJlYWRjcnVtYnMgPSBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgdGl0bGU6IFwiTWFuYWdlXCIsXHJcbiAgICAgICAgICBwYXRoOiBcIi9tYW5hZ2UvYnJhbmRzXCIsXHJcbiAgICAgICAgICBpc0FjdGl2ZTogZmFsc2UsXHJcbiAgICAgICAgICBpc1NlcGFyYXRvcjogZmFsc2UsXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICB0aXRsZTogXCJNYW5hZ2VcIixcclxuICAgICAgICAgIHBhdGg6IFwiL21hbmFnZS9icmFuZHNcIixcclxuICAgICAgICAgIGlzQWN0aXZlOiBmYWxzZSxcclxuICAgICAgICAgIGlzU2VwYXJhdG9yOiB0cnVlLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgLi4uY29tbW9uQnJlYWRjcnVtYnMsXHJcbiAgICAgIF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuZ3MudXNlckFjY2Vzcy52YWx1ZT8udXNlclR5cGUgPT09IFwiY2xpZW50XCIpIHtcclxuICAgICAgYnJlYWRjcnVtYnMgPSBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgdGl0bGU6IFwiTWFuYWdlXCIsXHJcbiAgICAgICAgICBwYXRoOiBcIi9tYW5hZ2Uvc3VtbWFyeVwiLFxyXG4gICAgICAgICAgaXNBY3RpdmU6IGZhbHNlLFxyXG4gICAgICAgICAgaXNTZXBhcmF0b3I6IGZhbHNlLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgdGl0bGU6IFwiTWFuYWdlXCIsXHJcbiAgICAgICAgICBwYXRoOiBcIi9tYW5hZ2Uvc3VtbWFyeVwiLFxyXG4gICAgICAgICAgaXNBY3RpdmU6IGZhbHNlLFxyXG4gICAgICAgICAgaXNTZXBhcmF0b3I6IHRydWUsXHJcbiAgICAgICAgfSxcclxuICAgICAgICAuLi5jb21tb25CcmVhZGNydW1icyxcclxuICAgICAgXTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgdGhpcy5wYWdlSW5mby5zZXRCcmVhZGNydW1icyhicmVhZGNydW1icyk7XHJcbiAgfVxyXG5zZWxlY3RlZFRhYnModmFsdWU6YW55KXtcclxuICB0aGlzLnNlbGVjdGVkVGFiID0gdmFsdWU7XHJcbiAgaWYodGhpcy5zZWxlY3RlZFRhYiA9PT0naW5mcmEnKXtcclxuICAgIHRoaXMuc2VsZWN0ZWRUYWIxID0ndGlja2V0cydcclxuICB9XHJcbiAgY29uc3QgcXVlcnlQYXJhbXMgPSB7IC4uLnRoaXMucm91dGUuc25hcHNob3QucXVlcnlQYXJhbXMgfTtcclxuICAgICAgcXVlcnlQYXJhbXNbJ3R5cGUnXSA9IHZhbHVlO1xyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXSwgeyByZWxhdGl2ZVRvOnRoaXMucm91dGUsIHF1ZXJ5UGFyYW1zOiBxdWVyeVBhcmFtc30pO1xyXG59XHJcblxyXG5zZWxlY3RlZFRhYnMxKHR5cGU6YW55KXtcclxuICB0aGlzLnNlbGVjdGVkVGFiMSA9IHR5cGU7XHJcbn1cclxuXHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImNhcmQgbWItNSBweS0zIHB4LTVcIj5cclxuICAgICAgICA8dWwgY2xhc3M9XCJuYXYgbmF2LXN0cmV0Y2ggbmF2LWxpbmUtdGFiczEgbmF2LWxpbmUtdGFicyBib3JkZXItdHJhbnNwYXJlbnQgZmxleC1ub3dyYXBcIj5cclxuICAgICAgICAgICAgPGxpIGNsYXNzPVwibmF2LWl0ZW1cIiAoY2xpY2spPVwic2VsZWN0ZWRUYWJzKCdpbmZyYScpXCI+PGEgW25nQ2xhc3NdPVwic2VsZWN0ZWRUYWIgPT09J2luZnJhJyA/ICdhY3RpdmUnIDonJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJuYXYtbGluayBjdXJzb3ItcG9pbnRlciBuby1ib3JkZXIgbWUtNiBcIj5JbmZyYTwvYT5cclxuICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgPGxpIGNsYXNzPVwibmF2LWl0ZW1cIiAoY2xpY2spPVwic2VsZWN0ZWRUYWJzKCdkYXRhTWlzbWF0Y2gnKVwiPlxyXG4gICAgICAgICAgICAgICAgPGEgW25nQ2xhc3NdPVwic2VsZWN0ZWRUYWIgPT09J2RhdGFNaXNtYXRjaCcgPyAnYWN0aXZlJyA6JydcIiBjbGFzcz1cIm5hdi1saW5rIGN1cnNvci1wb2ludGVyIG1lLTZcIj5EYXRhIE1pc21hdGNoPC9hPlxyXG4gICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICA8bGkgY2xhc3M9XCJuYXYtaXRlbVwiIChjbGljayk9XCJzZWxlY3RlZFRhYnMoJ2NhbWVyYUFuZ2xlQ2hhbmdlJylcIj5cclxuICAgICAgICAgICAgICAgIDxhIFtuZ0NsYXNzXT1cInNlbGVjdGVkVGFiID09PSdjYW1lcmFBbmdsZUNoYW5nZScgPyAnYWN0aXZlJyA6JydcIiBjbGFzcz1cIm5hdi1saW5rIGN1cnNvci1wb2ludGVyIG1lLTZcIj5DYW1lcmEgQW5nbGU8L2E+XHJcbiAgICAgICAgICAgIDwvbGk+XHJcblxyXG4gICAgICAgICAgICAgPCEtLSA8bGkgKm5nSWY9XCIoZ3MudXNlckFjY2VzcyB8IGFzeW5jKT8udXNlclR5cGUgPT09ICd0YW5nbycgfHwgY2xpZW50RGF0YT8uaXNWTVNcIiBjbGFzcz1cIm5hdi1pdGVtXCIgKGNsaWNrKT1cInNlbGVjdGVkVGFicygnZm9vdGZhbGwnKVwiPlxyXG4gICAgICAgICAgICAgICAgPGEgW25nQ2xhc3NdPVwic2VsZWN0ZWRUYWIgPT09J2Zvb3RmYWxsJyA/ICdhY3RpdmUnIDonJ1wiIGNsYXNzPVwibmF2LWxpbmsgY3Vyc29yLXBvaW50ZXIgbWUtNlwiPkZvb3RmYWxsIERpcmVjdG9yeTwvYT5cclxuICAgICAgICAgICAgPC9saT4gLS0+XHJcbiAgICAgICAgPC91bD5cclxuPC9kaXY+XHJcbjxkaXYgKm5nSWY9XCJzZWxlY3RlZFRhYiA9PT0naW5mcmEnXCIgY2xhc3M9XCJtYi01IHB5LTMgcHgtNVwiPlxyXG4gICAgPHVsIGNsYXNzPVwibmF2IG5hdi1zdHJldGNoIG5hdi1saW5lLXRhYnMxIG5hdi1saW5lLXRhYnMgYm9yZGVyLXRyYW5zcGFyZW50IGZsZXgtbm93cmFwXCI+XHJcbiAgICAgICAgPGxpIGNsYXNzPVwibmF2LWl0ZW0gbmF2LWl0ZW0xXCIgKGNsaWNrKT1cInNlbGVjdGVkVGFiczEoJ3N1bW1hcnknKVwiPjxhIFtuZ0NsYXNzXT1cInNlbGVjdGVkVGFiMSA9PT0nc3VtbWFyeScgPyAnYWN0aXZlJyA6JydcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJuYXYtbGluayBuYXYtbGluazEgY3Vyc29yLXBvaW50ZXIgbm8tYm9yZGVyIG1lLTYgXCI+U3VtbWFyeTwvYT5cclxuICAgICAgICA8L2xpPlxyXG4gICAgICAgIDxsaSBjbGFzcz1cIm5hdi1pdGVtIG5hdi1pdGVtMVwiIChjbGljayk9XCJzZWxlY3RlZFRhYnMxKCd0aWNrZXRzJylcIj5cclxuICAgICAgICAgICAgPGEgW25nQ2xhc3NdPVwic2VsZWN0ZWRUYWIxID09PSd0aWNrZXRzJyA/ICdhY3RpdmUnIDonJ1wiIGNsYXNzPVwibmF2LWxpbmsgbmF2LWxpbmsxIGN1cnNvci1wb2ludGVyIG1lLTZcIj5UaWNrZXRzIFYxPC9hPlxyXG4gICAgICAgIDwvbGk+XHJcbiAgICAgICAgPGxpIGNsYXNzPVwibmF2LWl0ZW0gbmF2LWl0ZW0xXCIgKGNsaWNrKT1cInNlbGVjdGVkVGFiczEoJ3RpY2tldHNWMicpXCI+XHJcbiAgICAgICAgICAgIDxhIFtuZ0NsYXNzXT1cInNlbGVjdGVkVGFiMSA9PT0ndGlja2V0c1YyJyA/ICdhY3RpdmUnIDonJ1wiIGNsYXNzPVwibmF2LWxpbmsgbmF2LWxpbmsxIGN1cnNvci1wb2ludGVyIG1lLTZcIj5UaWNrZXRzIFYyPC9hPlxyXG4gICAgICAgIDwvbGk+XHJcbiAgICA8L3VsPlxyXG48L2Rpdj5cclxuPGRpdiAqbmdJZj1cInNlbGVjdGVkVGFiID09PSdpbmZyYScgJiYgc2VsZWN0ZWRUYWIxID09PSdzdW1tYXJ5J1wiPlxyXG4gICAgPGxpYi1zdW1tYXJ5LWluZnJhIFtzZWxlY3RlZFRhYl09XCJzZWxlY3RlZFRhYlwiPjwvbGliLXN1bW1hcnktaW5mcmE+XHJcbjwvZGl2PlxyXG48ZGl2ICpuZ0lmPVwic2VsZWN0ZWRUYWIgPT09J2luZnJhJyAmJiBzZWxlY3RlZFRhYjEgPT09J3RpY2tldHMnXCI+XHJcbiAgICA8bGliLXRpY2tldC1pbmZyYSBbc2VsZWN0ZWRUYWJdPVwic2VsZWN0ZWRUYWJcIj48L2xpYi10aWNrZXQtaW5mcmE+XHJcbjwvZGl2PlxyXG48ZGl2ICpuZ0lmPVwic2VsZWN0ZWRUYWIgPT09J2luZnJhJyAmJiBzZWxlY3RlZFRhYjEgPT09J3RpY2tldHNWMidcIj5cclxuICAgIDxsaWItdGlja2V0LWluZnJhLXYyIFtzZWxlY3RlZFRhYl09XCJzZWxlY3RlZFRhYlwiPjwvbGliLXRpY2tldC1pbmZyYS12Mj5cclxuPC9kaXY+XHJcbjxkaXYgKm5nSWY9XCJzZWxlY3RlZFRhYiA9PT0nZGF0YU1pc21hdGNoJ1wiPlxyXG4gICAgPGxpYi10aWNrZXQtaW5mcmEgW3NlbGVjdGVkVGFiXT1cInNlbGVjdGVkVGFiXCI+PC9saWItdGlja2V0LWluZnJhPlxyXG48L2Rpdj5cclxuXHJcbjxkaXYgKm5nSWY9XCJzZWxlY3RlZFRhYiA9PT0nY2FtZXJhQW5nbGVDaGFuZ2UnXCI+XHJcbiAgICA8bGliLXRpY2tldC1jYW1lcmEtYW5nbGUgW3NlbGVjdGVkVGFiXT1cInNlbGVjdGVkVGFiXCI+PC9saWItdGlja2V0LWNhbWVyYS1hbmdsZT5cclxuPC9kaXY+XHJcbjxkaXYgKm5nSWY9XCJzZWxlY3RlZFRhYiA9PT0nZm9vdGZhbGwnXCI+XHJcbiAgICA8bGliLWZvb3RmYWxsLWRpcmVjdG9yeSBbc2VsZWN0ZWRUYWJdPVwic2VsZWN0ZWRUYWJcIj48L2xpYi1mb290ZmFsbC1kaXJlY3Rvcnk+XHJcbjwvZGl2PlxyXG48cm91dGVyLW91dGxldD48L3JvdXRlci1vdXRsZXQ+Il19
196
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFuZ28tc3RvcmUtaW5mcmEuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tc3RvcmUtdGlja2V0LWluZnJhL3NyYy9saWIvY29tcG9uZW50cy90YW5nby1zdG9yZS1pbmZyYS90YW5nby1zdG9yZS1pbmZyYS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1zdG9yZS10aWNrZXQtaW5mcmEvc3JjL2xpYi9jb21wb25lbnRzL3RhbmdvLXN0b3JlLWluZnJhL3RhbmdvLXN0b3JlLWluZnJhLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBRTdELE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7O0FBUTFDLE1BQU0sT0FBTyx3QkFBd0I7SUFRZjtJQUFpQztJQUFxQjtJQUE4QjtJQVB4RyxXQUFXLENBQU07SUFDVCxNQUFNLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUMvQixPQUFPLENBQU07SUFDYixJQUFJLENBQU07SUFDVixZQUFZLENBQU07SUFDVixvQkFBb0IsR0FBRyxLQUFLLENBQUM7SUFDckMsVUFBVSxDQUFNO0lBQ2hCLFlBQW9CLFFBQXdCLEVBQVMsTUFBYSxFQUFRLEVBQXFCLEVBQVMsS0FBb0I7UUFBeEcsYUFBUSxHQUFSLFFBQVEsQ0FBZ0I7UUFBUyxXQUFNLEdBQU4sTUFBTSxDQUFPO1FBQVEsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7UUFBUyxVQUFLLEdBQUwsS0FBSyxDQUFlO0lBRTVILENBQUM7SUFDRCxhQUFhLENBQUs7SUFDbEIsV0FBVztRQUNULElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxNQUFNLENB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QUMsRUFBRSxFQUFFLEVBQUUsVUFBVSxFQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBQyxDQUFDLENBQUM7SUFDbkYsQ0FBQzt3R0E3S1ksd0JBQXdCOzRGQUF4Qix3QkFBd0IsNkRDVnJDLDQvRkFpRCtCOzs0RkR2Q2xCLHdCQUF3QjtrQkFMcEMsU0FBUzsrQkFDRSx1QkFBdUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgR2xvYmFsU3RhdGVTZXJ2aWNlLCBQYWdlSW5mb1NlcnZpY2UgfSBmcm9tICd0YW5nby1hcHAtdWktZ2xvYmFsJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLXRhbmdvLXN0b3JlLWluZnJhJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdGFuZ28tc3RvcmUtaW5mcmEuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi90YW5nby1zdG9yZS1pbmZyYS5jb21wb25lbnQuc2NzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIFRhbmdvU3RvcmVJbmZyYUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCxPbkRlc3Ryb3kge1xyXG4gIHNlbGVjdGVkVGFiOiBhbnk7XHJcbiAgcHJpdmF0ZSBkZXRhY2ggPSBuZXcgU3ViamVjdCgpO1xyXG4gIHN0b3JlSWQ6IGFueTtcclxuICB0eXBlOiBhbnk7XHJcbiAgc2VsZWN0ZWRUYWIxOiBhbnk7XHJcbiAgcHJpdmF0ZSBzdWJUYWJGcm9tVXJsQXBwbGllZCA9IGZhbHNlO1xyXG4gIGNsaWVudE5hbWU6IGFueTtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHBhZ2VJbmZvOlBhZ2VJbmZvU2VydmljZSxwcml2YXRlIHJvdXRlcjpSb3V0ZXIscHVibGljIGdzOkdsb2JhbFN0YXRlU2VydmljZSxwcml2YXRlIHJvdXRlOkFjdGl2YXRlZFJvdXRlKXtcclxuXHJcbiAgfVxyXG4gIGhlYWRlckZpbHRlcnM6YW55O1xyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZXRhY2gubmV4dCh0cnVlKTtcclxuICAgIHRoaXMuZGV0YWNoLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG4gIGNsaWVudERhdGE6YW55O1xyXG4gICB1c2VyVHlwZTphbnk7XHJcbnByaXZhdGUgaXNTdG9yZUlkVmFsaWRGb3JDbGllbnQoc3RvcmVJZDogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgaWYgKCFzdG9yZUlkIHx8ICF0aGlzLnVzZXJUeXBlPy5jbGllbnRJZCkgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAvLyAvLyBUYW5nbyB1c2VycyBjYW4gYWNjZXNzIGFsbFxyXG4gIC8vIGlmICh0aGlzLmdzLnVzZXJBY2Nlc3MudmFsdWU/LnVzZXJUeXBlID09PSAndGFuZ28nKSB7XHJcbiAgLy8gICByZXR1cm4gdHJ1ZTtcclxuICAvLyB9XHJcblxyXG4gIGNvbnN0IHN0b3JlQ2xpZW50SWQgPSBzdG9yZUlkLnNwbGl0KCctJylbMF07XHJcbiAgcmV0dXJuIHN0b3JlQ2xpZW50SWQgPT09IFN0cmluZyh0aGlzLnVzZXJUeXBlLmNsaWVudElkKTtcclxufVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgdGhpcy51c2VyVHlwZSA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJ1c2VyLWluZm9cIikgfHwgJ3t9Jyk7XHJcbiAgICB0aGlzLnJvdXRlLnF1ZXJ5UGFyYW1zLnN1YnNjcmliZShwYXJhbXMgPT4ge1xyXG4gICAgICBjb25zdCB0eXBlID0gcGFyYW1zWyd0eXBlJ10gPyBwYXJhbXNbJ3R5cGUnXSA6ICdpbmZyYSc7XHJcbiAgICAgIGlmKHR5cGUgPT09J2luZnJhdjInKXtcclxuICAgICAgICAvLyBFdmVyeSBJbmZyYSBibG9jayBpcyBnYXRlZCBvbiBzZWxlY3RlZFRhYiA9PT0gJ2luZnJhJywgc28gdGhpcyByZWFkc1xyXG4gICAgICAgIC8vIGFzIFwidGhlIEluZnJhIHRhYiwgb3BlbmVkIG9uIFRpY2tldHMgVjJcIiByYXRoZXIgdGhhbiBhIHRhYiBvZiBpdHMgb3duLlxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRUYWIgPSAnaW5mcmEnXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFRhYiA9IHR5cGU7XHJcbiAgICAgIH1cclxuICAgICAgLy8gT25seSBvbiB0aGUgZmlyc3QgZW1pc3Npb246IHNlbGVjdGVkVGFiczEoKSByZXdyaXRlcyBgdHlwZWAsIHdoaWNoXHJcbiAgICAgIC8vIGZpcmVzIHRoaXMgc3Vic2NyaXB0aW9uIGFnYWluLCBhbmQgd2l0aG91dCB0aGUgZ3VhcmQgdGhhdCB3b3VsZCB1bmRvXHJcbiAgICAgIC8vIHRoZSBjbGljayAtIFN1bW1hcnkgaW4gcGFydGljdWxhciB3b3VsZCBib3VuY2UgdG8gVGlja2V0cyBWMS5cclxuICAgICAgaWYoIXRoaXMuc3ViVGFiRnJvbVVybEFwcGxpZWQpe1xyXG4gICAgICAgIHRoaXMuc3ViVGFiRnJvbVVybEFwcGxpZWQgPSB0cnVlO1xyXG4gICAgICAgIGlmKHR5cGUgPT09J2luZnJhdjInKXtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRUYWIxID0gJ3RpY2tldHNWMidcclxuICAgICAgICB9IGVsc2UgaWYodGhpcy5zZWxlY3RlZFRhYiA9PT0naW5mcmEnKXtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRUYWIxID0ndGlja2V0cydcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgICAgICAgIGNvbnN0IGNsaWVudERhdGE6IGFueSA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJjbGllbnQtZGV0YWlsc1wiKSB8fCBcInt9XCIpO1xyXG4gICAgdGhpcy5jbGllbnREYXRhID0gY2xpZW50RGF0YTtcclxuICAgIHRoaXMuZ3MuZGF0YVJhbmdlVmFsdWUucGlwZSh0YWtlVW50aWwodGhpcy5kZXRhY2gpKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKGRhdGEpIHtcclxuICAgICAgICAgIHRoaXMuaGVhZGVyRmlsdGVycyA9IGRhdGE7XHJcbiAgICAgICAgICB0aGlzLnN0b3JlSWQgPVxyXG4gICAgICAgICAgICBkYXRhICYmIGRhdGEuc3RvcmUgPyBkYXRhLnN0b3JlIDogdGhpcy5yb3V0ZXIudXJsLnNwbGl0KFwiL1wiKVszXTtcclxuICAgICAgICAgICAgdGhpcy5jbGllbnROYW1lID0gZGF0YT8uY2xpZW50TmFtZSA/IGRhdGE/LmNsaWVudE5hbWU6Jyc7XHJcbiAgICAgICAgICAgICBpZiAodGhpcy5ncy51c2VyQWNjZXNzLnZhbHVlPy51c2VyVHlwZSAhPT0gJ3RhbmdvJykge1xyXG4gICAgICAgICAgICAgaWYgKCF0aGlzLmlzU3RvcmVJZFZhbGlkRm9yQ2xpZW50KHRoaXMuc3RvcmVJZCkpIHtcclxuICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL2Vycm9yLzQwNCddKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgICAgIHRoaXMudXBkYXRlU3RvcmVJZFF1ZXJ5UGFyYW0odGhpcy5zdG9yZUlkKTtcclxuICAgICAgICAgIHRoaXMuc2V0UGFnZURhdGEoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICAgIH1cclxuICAgIHVwZGF0ZVN0b3JlSWRRdWVyeVBhcmFtKHN0b3JlSWQ6IHN0cmluZykge1xyXG4gICAgICAgIGlmICh0aGlzLmdzLnVzZXJBY2Nlc3MudmFsdWU/LnVzZXJUeXBlICE9PSAndGFuZ28nKSB7XHJcbiAgICAgICBpZiAoIXRoaXMuaXNTdG9yZUlkVmFsaWRGb3JDbGllbnQoc3RvcmVJZCkpIHtcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL2Vycm9yLzQwNCddKTtcclxuICAgIHJldHVybjtcclxuICB9XHJcbn1cclxuICAgICAgY29uc3QgcXVlcnlQYXJhbXMgPSB7IC4uLnRoaXMucm91dGUuc25hcHNob3QucXVlcnlQYXJhbXMgfTtcclxuICAgICAgLy8gVXBkYXRlIHN0b3JlSWQgaW4gcXVlcnlQYXJhbXNcclxuICAgICAgcXVlcnlQYXJhbXMuc3RvcmVJZCA9IHN0b3JlSWQ7XHJcbiAgICAgIC8vIE5hdmlnYXRlIHRvIHRoZSBzYW1lIHJvdXRlIHdpdGggdXBkYXRlZCBxdWVyeVBhcmFtc1xyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXSwgeyBxdWVyeVBhcmFtczogcXVlcnlQYXJhbXMsIHF1ZXJ5UGFyYW1zSGFuZGxpbmc6ICdtZXJnZScgfSk7XHJcbiAgICB9XHJcbiAgc2V0UGFnZURhdGEoKXtcclxuICAgIHRoaXMucGFnZUluZm8uc2V0VGl0bGUoXCJUaWNrZXRzXCIpO1xyXG4gICAgdGhpcy5wYWdlSW5mby5zZXREZXNjcmlwdGlvbihcclxuICAgICAgXCJWaWV3LCBzaGFyZSwgZG93bmxvYWQgYW5kIGJlbmNobWFyayB0aGUgc3RvcmVzIHBlcmZvcm1hbmNlIGluIG9uZSBzY3JlZW5cIlxyXG4gICAgKTtcclxuICAgIGxldCBicmVhZGNydW1iczogYW55W10gPSBbXTtcclxuICAgIGNvbnN0IGNvbW1vbkJyZWFkY3J1bWJzID0gW1xyXG4gICAgICB7XHJcbiAgICAgICAgdGl0bGU6IHRoaXMuY2xpZW50TmFtZSxcclxuICAgICAgICBwYXRoOiBcIi9tYW5hZ2Uvc3RvcmVzXCIsXHJcbiAgICAgICAgaXNBY3RpdmU6IGZhbHNlLFxyXG4gICAgICAgIGlzU2VwYXJhdG9yOiBmYWxzZSxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHRpdGxlOiB0aGlzLmNsaWVudE5hbWUsXHJcbiAgICAgICAgcGF0aDogXCIvbWFuYWdlL3N0b3Jlc1wiLFxyXG4gICAgICAgIGlzQWN0aXZlOiBmYWxzZSxcclxuICAgICAgICBpc1NlcGFyYXRvcjogdHJ1ZSxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHRpdGxlOiB0aGlzLnN0b3JlSWQsXHJcbiAgICAgICAgcGF0aDogYC9tYW5hZ2Uvc3RvcmVzL2NhbWVyYXM/c3RvcmVJZD0ke3RoaXMuc3RvcmVJZH1gLFxyXG4gICAgICAgIGlzQWN0aXZlOiBmYWxzZSxcclxuICAgICAgICBpc1NlcGFyYXRvcjogZmFsc2UsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0aXRsZTogdGhpcy5zdG9yZUlkLFxyXG4gICAgICAgIHBhdGg6IGAvbWFuYWdlL3N0b3Jlcy9jYW1lcmFzP3N0b3JlSWQ9JHt0aGlzLnN0b3JlSWR9YCxcclxuICAgICAgICBpc0FjdGl2ZTogZmFsc2UsXHJcbiAgICAgICAgaXNTZXBhcmF0b3I6IHRydWUsXHJcbiAgICAgIH0sXHJcbiAgICBdO1xyXG4gICAgXHJcbiAgICBpZiAodGhpcy5ncy51c2VyQWNjZXNzLnZhbHVlPy51c2VyVHlwZSA9PT0gXCJ0YW5nb1wiKSB7XHJcbiAgICAgIGJyZWFkY3J1bWJzID0gW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIHRpdGxlOiBcIk1hbmFnZVwiLFxyXG4gICAgICAgICAgcGF0aDogXCIvbWFuYWdlL2JyYW5kc1wiLFxyXG4gICAgICAgICAgaXNBY3RpdmU6IGZhbHNlLFxyXG4gICAgICAgICAgaXNTZXBhcmF0b3I6IGZhbHNlLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgdGl0bGU6IFwiTWFuYWdlXCIsXHJcbiAgICAgICAgICBwYXRoOiBcIi9tYW5hZ2UvYnJhbmRzXCIsXHJcbiAgICAgICAgICBpc0FjdGl2ZTogZmFsc2UsXHJcbiAgICAgICAgICBpc1NlcGFyYXRvcjogdHJ1ZSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIC4uLmNvbW1vbkJyZWFkY3J1bWJzLFxyXG4gICAgICBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmdzLnVzZXJBY2Nlc3MudmFsdWU/LnVzZXJUeXBlID09PSBcImNsaWVudFwiKSB7XHJcbiAgICAgIGJyZWFkY3J1bWJzID0gW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIHRpdGxlOiBcIk1hbmFnZVwiLFxyXG4gICAgICAgICAgcGF0aDogXCIvbWFuYWdlL3N1bW1hcnlcIixcclxuICAgICAgICAgIGlzQWN0aXZlOiBmYWxzZSxcclxuICAgICAgICAgIGlzU2VwYXJhdG9yOiBmYWxzZSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHRpdGxlOiBcIk1hbmFnZVwiLFxyXG4gICAgICAgICAgcGF0aDogXCIvbWFuYWdlL3N1bW1hcnlcIixcclxuICAgICAgICAgIGlzQWN0aXZlOiBmYWxzZSxcclxuICAgICAgICAgIGlzU2VwYXJhdG9yOiB0cnVlLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgLi4uY29tbW9uQnJlYWRjcnVtYnMsXHJcbiAgICAgIF07XHJcbiAgICB9XHJcbiAgICBcclxuICAgIHRoaXMucGFnZUluZm8uc2V0QnJlYWRjcnVtYnMoYnJlYWRjcnVtYnMpO1xyXG4gIH1cclxuc2VsZWN0ZWRUYWJzKHZhbHVlOmFueSl7XHJcbiAgdGhpcy5zZWxlY3RlZFRhYiA9IHZhbHVlO1xyXG4gIGlmKHRoaXMuc2VsZWN0ZWRUYWIgPT09J2luZnJhJyl7XHJcbiAgICB0aGlzLnNlbGVjdGVkVGFiMSA9J3RpY2tldHMnXHJcbiAgfVxyXG4gIGNvbnN0IHF1ZXJ5UGFyYW1zID0geyAuLi50aGlzLnJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zIH07XHJcbiAgICAgIHF1ZXJ5UGFyYW1zWyd0eXBlJ10gPSB2YWx1ZTtcclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW10sIHsgcmVsYXRpdmVUbzp0aGlzLnJvdXRlLCBxdWVyeVBhcmFtczogcXVlcnlQYXJhbXN9KTtcclxufVxyXG5cclxuc2VsZWN0ZWRUYWJzMSh0eXBlOmFueSl7XHJcbiAgdGhpcy5zZWxlY3RlZFRhYjEgPSB0eXBlO1xyXG4gIC8vIEtlZXAgdGhlIFVSTCBpbiBzdGVwLCB0aGUgc2FtZSB3YXkgc2VsZWN0ZWRUYWJzKCkgZG9lcyBmb3IgdGhlIHRvcCB0YWJzLlxyXG4gIC8vIFN1bW1hcnkgaGFzIG5vIGB0eXBlYCBvZiBpdHMgb3duLCBzbyBpdCBzaGFyZXMgJ2luZnJhJyB3aXRoIFRpY2tldHMgVjEuXHJcbiAgY29uc3QgcXVlcnlQYXJhbXMgPSB7IC4uLnRoaXMucm91dGUuc25hcHNob3QucXVlcnlQYXJhbXMgfTtcclxuICAgICAgcXVlcnlQYXJhbXNbJ3R5cGUnXSA9IHR5cGUgPT09ICd0aWNrZXRzVjInID8gJ2luZnJhdjInIDogJ2luZnJhJztcclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW10sIHsgcmVsYXRpdmVUbzp0aGlzLnJvdXRlLCBxdWVyeVBhcmFtczogcXVlcnlQYXJhbXN9KTtcclxufVxyXG5cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiY2FyZCBtYi01IHB5LTMgcHgtNVwiPlxyXG4gICAgICAgIDx1bCBjbGFzcz1cIm5hdiBuYXYtc3RyZXRjaCBuYXYtbGluZS10YWJzMSBuYXYtbGluZS10YWJzIGJvcmRlci10cmFuc3BhcmVudCBmbGV4LW5vd3JhcFwiPlxyXG4gICAgICAgICAgICA8bGkgY2xhc3M9XCJuYXYtaXRlbVwiIChjbGljayk9XCJzZWxlY3RlZFRhYnMoJ2luZnJhJylcIj48YSBbbmdDbGFzc109XCJzZWxlY3RlZFRhYiA9PT0naW5mcmEnID8gJ2FjdGl2ZScgOicnXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm5hdi1saW5rIGN1cnNvci1wb2ludGVyIG5vLWJvcmRlciBtZS02IFwiPkluZnJhPC9hPlxyXG4gICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICA8bGkgY2xhc3M9XCJuYXYtaXRlbVwiIChjbGljayk9XCJzZWxlY3RlZFRhYnMoJ2RhdGFNaXNtYXRjaCcpXCI+XHJcbiAgICAgICAgICAgICAgICA8YSBbbmdDbGFzc109XCJzZWxlY3RlZFRhYiA9PT0nZGF0YU1pc21hdGNoJyA/ICdhY3RpdmUnIDonJ1wiIGNsYXNzPVwibmF2LWxpbmsgY3Vyc29yLXBvaW50ZXIgbWUtNlwiPkRhdGEgTWlzbWF0Y2g8L2E+XHJcbiAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgIDxsaSBjbGFzcz1cIm5hdi1pdGVtXCIgKGNsaWNrKT1cInNlbGVjdGVkVGFicygnY2FtZXJhQW5nbGVDaGFuZ2UnKVwiPlxyXG4gICAgICAgICAgICAgICAgPGEgW25nQ2xhc3NdPVwic2VsZWN0ZWRUYWIgPT09J2NhbWVyYUFuZ2xlQ2hhbmdlJyA/ICdhY3RpdmUnIDonJ1wiIGNsYXNzPVwibmF2LWxpbmsgY3Vyc29yLXBvaW50ZXIgbWUtNlwiPkNhbWVyYSBBbmdsZTwvYT5cclxuICAgICAgICAgICAgPC9saT5cclxuXHJcbiAgICAgICAgICAgICA8IS0tIDxsaSAqbmdJZj1cIihncy51c2VyQWNjZXNzIHwgYXN5bmMpPy51c2VyVHlwZSA9PT0gJ3RhbmdvJyB8fCBjbGllbnREYXRhPy5pc1ZNU1wiIGNsYXNzPVwibmF2LWl0ZW1cIiAoY2xpY2spPVwic2VsZWN0ZWRUYWJzKCdmb290ZmFsbCcpXCI+XHJcbiAgICAgICAgICAgICAgICA8YSBbbmdDbGFzc109XCJzZWxlY3RlZFRhYiA9PT0nZm9vdGZhbGwnID8gJ2FjdGl2ZScgOicnXCIgY2xhc3M9XCJuYXYtbGluayBjdXJzb3ItcG9pbnRlciBtZS02XCI+Rm9vdGZhbGwgRGlyZWN0b3J5PC9hPlxyXG4gICAgICAgICAgICA8L2xpPiAtLT5cclxuICAgICAgICA8L3VsPlxyXG48L2Rpdj5cclxuPGRpdiAqbmdJZj1cInNlbGVjdGVkVGFiID09PSdpbmZyYSdcIiBjbGFzcz1cIm1iLTUgcHktMyBweC01XCI+XHJcbiAgICA8dWwgY2xhc3M9XCJuYXYgbmF2LXN0cmV0Y2ggbmF2LWxpbmUtdGFiczEgbmF2LWxpbmUtdGFicyBib3JkZXItdHJhbnNwYXJlbnQgZmxleC1ub3dyYXBcIj5cclxuICAgICAgICA8bGkgY2xhc3M9XCJuYXYtaXRlbSBuYXYtaXRlbTFcIiAoY2xpY2spPVwic2VsZWN0ZWRUYWJzMSgnc3VtbWFyeScpXCI+PGEgW25nQ2xhc3NdPVwic2VsZWN0ZWRUYWIxID09PSdzdW1tYXJ5JyA/ICdhY3RpdmUnIDonJ1wiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm5hdi1saW5rIG5hdi1saW5rMSBjdXJzb3ItcG9pbnRlciBuby1ib3JkZXIgbWUtNiBcIj5TdW1tYXJ5PC9hPlxyXG4gICAgICAgIDwvbGk+XHJcbiAgICAgICAgPGxpIGNsYXNzPVwibmF2LWl0ZW0gbmF2LWl0ZW0xXCIgKGNsaWNrKT1cInNlbGVjdGVkVGFiczEoJ3RpY2tldHMnKVwiPlxyXG4gICAgICAgICAgICA8YSBbbmdDbGFzc109XCJzZWxlY3RlZFRhYjEgPT09J3RpY2tldHMnID8gJ2FjdGl2ZScgOicnXCIgY2xhc3M9XCJuYXYtbGluayBuYXYtbGluazEgY3Vyc29yLXBvaW50ZXIgbWUtNlwiPlRpY2tldHMgVjE8L2E+XHJcbiAgICAgICAgPC9saT5cclxuICAgICAgICA8bGkgY2xhc3M9XCJuYXYtaXRlbSBuYXYtaXRlbTFcIiAoY2xpY2spPVwic2VsZWN0ZWRUYWJzMSgndGlja2V0c1YyJylcIj5cclxuICAgICAgICAgICAgPGEgW25nQ2xhc3NdPVwic2VsZWN0ZWRUYWIxID09PSd0aWNrZXRzVjInID8gJ2FjdGl2ZScgOicnXCIgY2xhc3M9XCJuYXYtbGluayBuYXYtbGluazEgY3Vyc29yLXBvaW50ZXIgbWUtNlwiPlRpY2tldHMgVjI8L2E+XHJcbiAgICAgICAgPC9saT5cclxuICAgIDwvdWw+XHJcbjwvZGl2PlxyXG48ZGl2ICpuZ0lmPVwic2VsZWN0ZWRUYWIgPT09J2luZnJhJyAmJiBzZWxlY3RlZFRhYjEgPT09J3N1bW1hcnknXCI+XHJcbiAgICA8bGliLXN1bW1hcnktaW5mcmEgW3NlbGVjdGVkVGFiXT1cInNlbGVjdGVkVGFiXCI+PC9saWItc3VtbWFyeS1pbmZyYT5cclxuPC9kaXY+XHJcbjxkaXYgKm5nSWY9XCJzZWxlY3RlZFRhYiA9PT0naW5mcmEnICYmIHNlbGVjdGVkVGFiMSA9PT0ndGlja2V0cydcIj5cclxuICAgIDxsaWItdGlja2V0LWluZnJhIFtzZWxlY3RlZFRhYl09XCJzZWxlY3RlZFRhYlwiPjwvbGliLXRpY2tldC1pbmZyYT5cclxuPC9kaXY+XHJcbjxkaXYgKm5nSWY9XCJzZWxlY3RlZFRhYiA9PT0naW5mcmEnICYmIHNlbGVjdGVkVGFiMSA9PT0ndGlja2V0c1YyJ1wiPlxyXG4gICAgPGxpYi10aWNrZXQtaW5mcmEtdjIgW3NlbGVjdGVkVGFiXT1cInNlbGVjdGVkVGFiXCI+PC9saWItdGlja2V0LWluZnJhLXYyPlxyXG48L2Rpdj5cclxuPGRpdiAqbmdJZj1cInNlbGVjdGVkVGFiID09PSdkYXRhTWlzbWF0Y2gnXCI+XHJcbiAgICA8bGliLXRpY2tldC1pbmZyYSBbc2VsZWN0ZWRUYWJdPVwic2VsZWN0ZWRUYWJcIj48L2xpYi10aWNrZXQtaW5mcmE+XHJcbjwvZGl2PlxyXG5cclxuPGRpdiAqbmdJZj1cInNlbGVjdGVkVGFiID09PSdjYW1lcmFBbmdsZUNoYW5nZSdcIj5cclxuICAgIDxsaWItdGlja2V0LWNhbWVyYS1hbmdsZSBbc2VsZWN0ZWRUYWJdPVwic2VsZWN0ZWRUYWJcIj48L2xpYi10aWNrZXQtY2FtZXJhLWFuZ2xlPlxyXG48L2Rpdj5cclxuPGRpdiAqbmdJZj1cInNlbGVjdGVkVGFiID09PSdmb290ZmFsbCdcIj5cclxuICAgIDxsaWItZm9vdGZhbGwtZGlyZWN0b3J5IFtzZWxlY3RlZFRhYl09XCJzZWxlY3RlZFRhYlwiPjwvbGliLWZvb3RmYWxsLWRpcmVjdG9yeT5cclxuPC9kaXY+XHJcbjxyb3V0ZXItb3V0bGV0Pjwvcm91dGVyLW91dGxldD4iXX0=