@tuki-io/tuki-widgets 0.0.219-dev.47 → 0.0.219-dev.48

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.
Files changed (24) hide show
  1. package/esm2020/locations/src/location-confirm-dialog/location-confirm-dialog.component.mjs +2 -2
  2. package/esm2020/locations/src/locations.component.mjs +5 -5
  3. package/esm2020/workspaces/src/app.constants.mjs +5 -2
  4. package/esm2020/workspaces/src/components/workspaces-table/workspaces-table.component.mjs +13 -3
  5. package/esm2020/workspaces/src/services/workspace-detail.service.mjs +21 -11
  6. package/esm2020/workspaces/src/services/workspaces.service.mjs +4 -2
  7. package/esm2020/workspaces/src/types/workspace.mjs +1 -1
  8. package/esm2020/workspaces/src/utils/workspace-name.mjs +8 -0
  9. package/esm2020/workspaces/src/workspaces.component.mjs +14 -6
  10. package/fesm2015/tuki-io-tuki-widgets-locations.mjs +6 -6
  11. package/fesm2015/tuki-io-tuki-widgets-locations.mjs.map +1 -1
  12. package/fesm2015/tuki-io-tuki-widgets-workspaces.mjs +57 -19
  13. package/fesm2015/tuki-io-tuki-widgets-workspaces.mjs.map +1 -1
  14. package/fesm2020/tuki-io-tuki-widgets-locations.mjs +6 -6
  15. package/fesm2020/tuki-io-tuki-widgets-locations.mjs.map +1 -1
  16. package/fesm2020/tuki-io-tuki-widgets-workspaces.mjs +56 -18
  17. package/fesm2020/tuki-io-tuki-widgets-workspaces.mjs.map +1 -1
  18. package/package.json +1 -1
  19. package/workspaces/src/app.constants.d.ts +4 -1
  20. package/workspaces/src/components/workspaces-table/workspaces-table.component.d.ts +2 -0
  21. package/workspaces/src/services/workspace-detail.service.d.ts +4 -1
  22. package/workspaces/src/types/workspace.d.ts +181 -0
  23. package/workspaces/src/utils/workspace-name.d.ts +1 -0
  24. package/workspaces/src/workspaces.component.d.ts +2 -0
@@ -12,10 +12,10 @@ export class LocationConfirmDialogComponent {
12
12
  }
13
13
  }
14
14
  LocationConfirmDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: LocationConfirmDialogComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
15
- LocationConfirmDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: LocationConfirmDialogComponent, selector: "tk-location-confirm-dialog", ngImport: i0, template: "<div class=\"tk-location-confirm-dialog\" role=\"dialog\" aria-labelledby=\"tk-location-confirm-dialog-title\">\r\n <h3 id=\"tk-location-confirm-dialog-title\" class=\"tk-location-confirm-dialog__title\">{{ data.title }}</h3>\r\n <div mat-dialog-content class=\"tk-location-confirm-dialog__content\" [innerHTML]=\"data.message\"></div>\r\n <div mat-dialog-actions class=\"tk-location-confirm-dialog__actions\">\r\n <button type=\"button\" class=\"tk-location-confirm-dialog__button tk-location-confirm-dialog__button--cancel\" (click)=\"onClose(false)\">\r\n Cancel\r\n </button>\r\n <button type=\"button\" class=\"tk-location-confirm-dialog__button tk-location-confirm-dialog__button--confirm\" (click)=\"onClose(true)\">\r\n {{ data.confirmButtonText }}\r\n </button>\r\n </div>\r\n</div>\r\n", styles: [".tk-location-confirm-dialog{font-family:Inter,Helvetica Neue,Helvetica,Arial,sans-serif;width:400px;box-sizing:border-box;padding:0 0 16px}.tk-location-confirm-dialog__title{text-align:center;font-weight:600;font-size:16px;margin:0 0 20px}.tk-location-confirm-dialog__content{color:#000000b3;font-size:14px;padding:0}.tk-location-confirm-dialog__content p{margin:0 0 12px}.tk-location-confirm-dialog__actions{display:flex;justify-content:flex-end;gap:12px;margin:16px 0 0}.tk-location-confirm-dialog__button{height:32px;padding:0 16px;border-radius:50px;box-shadow:none;border:none;font-size:14px;font-family:Inter,Helvetica Neue,Helvetica,Arial,sans-serif;cursor:pointer}.tk-location-confirm-dialog__button--cancel{border:1px solid rgba(0,0,0,.5);color:#000;background:#fff}.tk-location-confirm-dialog__button--confirm{background:#000;color:#fff}\n"], dependencies: [{ kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }], encapsulation: i0.ViewEncapsulation.None });
15
+ LocationConfirmDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: LocationConfirmDialogComponent, selector: "tk-location-confirm-dialog", ngImport: i0, template: "<div class=\"tk-location-confirm-dialog\" role=\"dialog\" aria-labelledby=\"tk-location-confirm-dialog-title\">\r\n <h3 id=\"tk-location-confirm-dialog-title\" class=\"tk-location-confirm-dialog__title\">{{ data.title }}</h3>\r\n <div mat-dialog-content class=\"tk-location-confirm-dialog__content\" [innerHTML]=\"data.message\"></div>\r\n <div mat-dialog-actions class=\"tk-location-confirm-dialog__actions\">\r\n <button type=\"button\" class=\"tk-location-confirm-dialog__button tk-location-confirm-dialog__button--cancel\" (click)=\"onClose(false)\">\r\n Cancel\r\n </button>\r\n <button type=\"button\" class=\"tk-location-confirm-dialog__button tk-location-confirm-dialog__button--confirm\" (click)=\"onClose(true)\">\r\n {{ data.confirmButtonText }}\r\n </button>\r\n </div>\r\n</div>\r\n", styles: [".tk-location-confirm-dialog-panel .mat-dialog-container{padding:24px;border-radius:8px;background:#fff;box-shadow:0 11px 15px -7px #0003,0 24px 38px 3px #00000024,0 9px 46px 8px #0000001f}.tk-location-confirm-dialog-backdrop{background:rgba(0,0,0,.32)}.tk-location-confirm-dialog{font-family:Inter,Helvetica Neue,Helvetica,Arial,sans-serif;width:400px;box-sizing:border-box;padding:0 0 16px}.tk-location-confirm-dialog__title{text-align:center;font-weight:600;font-size:16px;margin:0 0 20px}.tk-location-confirm-dialog__content{color:#000000b3;font-size:14px;padding:0}.tk-location-confirm-dialog__content p{margin:0 0 12px}.tk-location-confirm-dialog__actions{display:flex;justify-content:flex-end;gap:12px;margin:16px 0 0}.tk-location-confirm-dialog__button{height:32px;padding:0 16px;border-radius:50px;box-shadow:none;border:none;font-size:14px;font-family:Inter,Helvetica Neue,Helvetica,Arial,sans-serif;cursor:pointer}.tk-location-confirm-dialog__button--cancel{border:1px solid rgba(0,0,0,.5);color:#000;background:#fff}.tk-location-confirm-dialog__button--confirm{background:#000;color:#fff}\n"], dependencies: [{ kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }], encapsulation: i0.ViewEncapsulation.None });
16
16
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: LocationConfirmDialogComponent, decorators: [{
17
17
  type: Component,
18
- args: [{ selector: 'tk-location-confirm-dialog', encapsulation: ViewEncapsulation.None, template: "<div class=\"tk-location-confirm-dialog\" role=\"dialog\" aria-labelledby=\"tk-location-confirm-dialog-title\">\r\n <h3 id=\"tk-location-confirm-dialog-title\" class=\"tk-location-confirm-dialog__title\">{{ data.title }}</h3>\r\n <div mat-dialog-content class=\"tk-location-confirm-dialog__content\" [innerHTML]=\"data.message\"></div>\r\n <div mat-dialog-actions class=\"tk-location-confirm-dialog__actions\">\r\n <button type=\"button\" class=\"tk-location-confirm-dialog__button tk-location-confirm-dialog__button--cancel\" (click)=\"onClose(false)\">\r\n Cancel\r\n </button>\r\n <button type=\"button\" class=\"tk-location-confirm-dialog__button tk-location-confirm-dialog__button--confirm\" (click)=\"onClose(true)\">\r\n {{ data.confirmButtonText }}\r\n </button>\r\n </div>\r\n</div>\r\n", styles: [".tk-location-confirm-dialog{font-family:Inter,Helvetica Neue,Helvetica,Arial,sans-serif;width:400px;box-sizing:border-box;padding:0 0 16px}.tk-location-confirm-dialog__title{text-align:center;font-weight:600;font-size:16px;margin:0 0 20px}.tk-location-confirm-dialog__content{color:#000000b3;font-size:14px;padding:0}.tk-location-confirm-dialog__content p{margin:0 0 12px}.tk-location-confirm-dialog__actions{display:flex;justify-content:flex-end;gap:12px;margin:16px 0 0}.tk-location-confirm-dialog__button{height:32px;padding:0 16px;border-radius:50px;box-shadow:none;border:none;font-size:14px;font-family:Inter,Helvetica Neue,Helvetica,Arial,sans-serif;cursor:pointer}.tk-location-confirm-dialog__button--cancel{border:1px solid rgba(0,0,0,.5);color:#000;background:#fff}.tk-location-confirm-dialog__button--confirm{background:#000;color:#fff}\n"] }]
18
+ args: [{ selector: 'tk-location-confirm-dialog', encapsulation: ViewEncapsulation.None, template: "<div class=\"tk-location-confirm-dialog\" role=\"dialog\" aria-labelledby=\"tk-location-confirm-dialog-title\">\r\n <h3 id=\"tk-location-confirm-dialog-title\" class=\"tk-location-confirm-dialog__title\">{{ data.title }}</h3>\r\n <div mat-dialog-content class=\"tk-location-confirm-dialog__content\" [innerHTML]=\"data.message\"></div>\r\n <div mat-dialog-actions class=\"tk-location-confirm-dialog__actions\">\r\n <button type=\"button\" class=\"tk-location-confirm-dialog__button tk-location-confirm-dialog__button--cancel\" (click)=\"onClose(false)\">\r\n Cancel\r\n </button>\r\n <button type=\"button\" class=\"tk-location-confirm-dialog__button tk-location-confirm-dialog__button--confirm\" (click)=\"onClose(true)\">\r\n {{ data.confirmButtonText }}\r\n </button>\r\n </div>\r\n</div>\r\n", styles: [".tk-location-confirm-dialog-panel .mat-dialog-container{padding:24px;border-radius:8px;background:#fff;box-shadow:0 11px 15px -7px #0003,0 24px 38px 3px #00000024,0 9px 46px 8px #0000001f}.tk-location-confirm-dialog-backdrop{background:rgba(0,0,0,.32)}.tk-location-confirm-dialog{font-family:Inter,Helvetica Neue,Helvetica,Arial,sans-serif;width:400px;box-sizing:border-box;padding:0 0 16px}.tk-location-confirm-dialog__title{text-align:center;font-weight:600;font-size:16px;margin:0 0 20px}.tk-location-confirm-dialog__content{color:#000000b3;font-size:14px;padding:0}.tk-location-confirm-dialog__content p{margin:0 0 12px}.tk-location-confirm-dialog__actions{display:flex;justify-content:flex-end;gap:12px;margin:16px 0 0}.tk-location-confirm-dialog__button{height:32px;padding:0 16px;border-radius:50px;box-shadow:none;border:none;font-size:14px;font-family:Inter,Helvetica Neue,Helvetica,Arial,sans-serif;cursor:pointer}.tk-location-confirm-dialog__button--cancel{border:1px solid rgba(0,0,0,.5);color:#000;background:#fff}.tk-location-confirm-dialog__button--confirm{background:#000;color:#fff}\n"] }]
19
19
  }], ctorParameters: function () { return [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{
20
20
  type: Inject,
21
21
  args: [MAT_DIALOG_DATA]
@@ -179,11 +179,11 @@ export class LocationsComponent {
179
179
  }
180
180
  onMigrateSite(location) {
181
181
  const dialogRef = this.dialog.open(LocationConfirmDialogComponent, {
182
+ panelClass: 'tk-location-confirm-dialog-panel',
183
+ backdropClass: 'tk-location-confirm-dialog-backdrop',
182
184
  data: {
183
- title: `Migrate ${location.name} to Webex Calling?`,
184
- message: `<p>Migrating this site will move its calling configuration to Webex Calling.</p>
185
- <p>Users and devices at this location will be updated to the new environment. This may take several minutes.</p>
186
- <p>Do you want to continue?</p>`,
185
+ title: `Migrate ${location.name}?`,
186
+ message: `<p>Are you sure you want to migrate this location?</p>`,
187
187
  confirmButtonText: 'Yes, migrate',
188
188
  },
189
189
  });
@@ -289,4 +289,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
289
289
  }], importLocations: [{
290
290
  type: Output
291
291
  }] } });
292
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYXRpb25zLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1a2kvd2lkZ2V0cy9sb2NhdGlvbnMvc3JjL2xvY2F0aW9ucy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWtpL3dpZGdldHMvbG9jYXRpb25zL3NyYy9sb2NhdGlvbnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJMUYsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sNkRBQTZELENBQUM7Ozs7Ozs7Ozs7Ozs7QUFHN0csTUFBTSwwQkFBMEIsR0FBRyxLQUFLLENBQUM7QUFJekMsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFPdkMsTUFBTSxPQUFPLGtCQUFrQjtJQW1DN0IsWUFDVSxVQUFzQixFQUN0QixnQkFBa0MsRUFDbEMsTUFBaUI7UUFGakIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLFdBQU0sR0FBTixNQUFNLENBQVc7UUFqQ2pCLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUMxQyxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFDMUMsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQzVDLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUN2QyxvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFFckQsY0FBUyxHQUFlLEVBQUUsQ0FBQztRQUMzQixrQkFBYSxHQUFHLENBQUMsQ0FBQztRQUNsQixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBRWxC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SUFBSSxDQUFDLENBQUM7UUFDdEMsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN6QyxJQUFJLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQztRQUNoQixJQUFJLENBQUMsUUFBUSxHQUFHLGVBQWUsQ0FBQztRQUNoQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDYixHQUFHLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzNCLENBQUM7O2dIQTlTVSxrQkFBa0I7b0dBQWxCLGtCQUFrQix1U0NsQi9CLDBwVEF3TkE7NEZEdE1hLGtCQUFrQjtrQkFMOUIsU0FBUzsrQkFDRSxjQUFjO3dKQUtmLE1BQU07c0JBQWQsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFFSSxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csY0FBYztzQkFBdkIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLGVBQWU7c0JBQXhCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgQVBJU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvYXBpLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBMb2NhdGlvbnNTZXJ2aWNlLCBTaXRlQmF0Y2hTdGF0dXMgfSBmcm9tICcuL3NlcnZpY2VzL2xvY2F0aW9ucy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTG9jYXRpb25Db25maXJtRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi9sb2NhdGlvbi1jb25maXJtLWRpYWxvZy9sb2NhdGlvbi1jb25maXJtLWRpYWxvZy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBMb2NhdGlvbiB9IGZyb20gJy4vdHlwZXMvbG9jYXRpb24nO1xyXG5cclxuY29uc3QgTUlHUkFUSU9OX1BPTExfSU5URVJWQUxfTVMgPSAxMDAwMDtcclxuXHJcbnR5cGUgTG9jYXRpb25zU29ydERpcmVjdGlvbiA9ICdhc2MnIHwgJ2Rlc2MnO1xyXG5cclxuY29uc3QgUEFHRV9TSVpFX09QVElPTlMgPSBbMTAsIDI1LCA1MF07XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3RrLWxvY2F0aW9ucycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2xvY2F0aW9ucy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vbG9jYXRpb25zLmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBMb2NhdGlvbnNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgQElucHV0KCkgZXhIb3N0ITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHRva2VuITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGN1c3RvbWVySWQhOiBudW1iZXI7XHJcblxyXG4gIEBPdXRwdXQoKSBvcGVuTG9jYXRpb24gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuICBAT3V0cHV0KCkgZWRpdExvY2F0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcbiAgQE91dHB1dCgpIHJlbW92ZUxvY2F0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcbiAgQE91dHB1dCgpIGFkZExvY2F0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG4gIEBPdXRwdXQoKSBpbXBvcnRMb2NhdGlvbnMgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gIGxvY2F0aW9uczogTG9jYXRpb25bXSA9IFtdO1xyXG4gIHRvdGFsRWxlbWVudHMgPSAwO1xyXG4gIGlzTG9hZGluZyA9IGZhbHNlO1xyXG5cclxuICBzZWFyY2hUZXJtID0gJyc7XHJcbiAgc29ydERpcmVjdGlvbjogTG9jYXRpb25zU29ydERpcmVjdGlvbiA9ICdhc2MnO1xyXG4gIGlzQmFubmVyRGlzbWlzc2VkID0gZmFsc2U7XHJcblxyXG4gIHJlYWRvbmx5IHBhZ2VTaXplT3B0aW9ucyA9IFBBR0VfU0laRV9PUFRJT05TO1xyXG4gIHBhZ2VJbmRleCA9IDA7XHJcbiAgcGFnZVNpemUgPSBQQUdFX1NJWkVfT1BUSU9OU1swXTtcclxuXHJcbiAgaXNGaWx0ZXJQYW5lbE9wZW4gPSBmYWxzZTtcclxuICBmaWx0ZXJzID0ge1xyXG4gICAgY291bnRyeTogJycsXHJcbiAgICBwZW5kaW5nQWN0aW9uczogJycsXHJcbiAgfTtcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBjb3VudHJ5RGlzcGxheU5hbWVzID0gdHlwZW9mIEludGwgIT09ICd1bmRlZmluZWQnICYmICdEaXNwbGF5TmFtZXMnIGluIEludGxcclxuICAgID8gbmV3IEludGwuRGlzcGxheU5hbWVzKFsnZW4nXSwgeyB0eXBlOiAncmVnaW9uJyB9KVxyXG4gICAgOiBudWxsO1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IG1pZ3JhdGlvbkludGVydmFscyA9IG5ldyBNYXA8c3RyaW5nLCBSZXR1cm5UeXBlPHR5cGVvZiBzZXRJbnRlcnZhbD4+KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBhcGlTZXJ2aWNlOiBBUElTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBsb2NhdGlvbnNTZXJ2aWNlOiBMb2NhdGlvbnNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBkaWFsb2c6IE1hdERpYWxvZyxcclxuICApIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuYXBpU2VydmljZS50b2tlbiA9IHRoaXMudG9rZW47XHJcbiAgICB0aGlzLmFwaVNlcnZpY2UuYXBpVXJsID0gdGhpcy5leEhvc3QgKyAnL3dlYmV4JztcclxuICAgIHRoaXMubG9hZFBhZ2UoKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5taWdyYXRpb25JbnRlcnZhbHMuZm9yRWFjaChpbnRlcnZhbCA9PiBjbGVhckludGVydmFsKGludGVydmFsKSk7XHJcbiAgICB0aGlzLm1pZ3JhdGlvbkludGVydmFscy5jbGVhcigpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBsb2FkUGFnZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMubG9jYXRpb25zU2VydmljZS5mZXRjaExvY2F0aW9ucyh0aGlzLmN1c3RvbWVySWQsIHRoaXMucGFnZUluZGV4LCB0aGlzLnBhZ2VTaXplKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAoeyBsb2NhdGlvbnMsIHRvdGFsRWxlbWVudHMgfSkgPT4ge1xyXG4gICAgICAgIHRoaXMubG9jYXRpb25zID0gbG9jYXRpb25zO1xyXG4gICAgICAgIHRoaXMudG90YWxFbGVtZW50cyA9IHRvdGFsRWxlbWVudHM7XHJcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6ICgpID0+IHtcclxuICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXQgcGVuZGluZ0xvY2F0aW9ucygpOiBMb2NhdGlvbltdIHtcclxuICAgIHJldHVybiB0aGlzLmxvY2F0aW9ucy5maWx0ZXIobG9jYXRpb24gPT4gbG9jYXRpb24uaGFzUGVuZGluZ0FjdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHNob3dQZW5kaW5nQmFubmVyKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuICF0aGlzLmlzQmFubmVyRGlzbWlzc2VkICYmIHRoaXMucGVuZGluZ0xvY2F0aW9ucy5sZW5ndGggPiAwO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGNvdW50cmllcygpOiBzdHJpbmdbXSB7XHJcbiAgICByZXR1cm4gQXJyYXkuZnJvbShuZXcgU2V0KHRoaXMubG9jYXRpb25zLm1hcChsb2NhdGlvbiA9PiB0aGlzLmNvdW50cnlMYWJlbChsb2NhdGlvbikpLmZpbHRlcihCb29sZWFuKSkpLnNvcnQoKTtcclxuICB9XHJcblxyXG4gIC8vIFNlYXJjaC9maWx0ZXIvc29ydCBhcHBseSBvbmx5IHRvIHRoZSBjdXJyZW50bHkgbG9hZGVkIHBhZ2Ug4oCUIHRoZSBBUEkgcGFnaW5hdGVzXHJcbiAgLy8gc2VydmVyLXNpZGUgKHBhZ2Uvc2l6ZSkgYW5kIGRvZXNuJ3QgZXhwb3NlIGEgZG9jdW1lbnRlZCBzZWFyY2gvZmlsdGVyIHBhcmFtZXRlci5cclxuICBnZXQgZmlsdGVyZWRMb2NhdGlvbnMoKTogTG9jYXRpb25bXSB7XHJcbiAgICBjb25zdCB0ZXJtID0gdGhpcy5zZWFyY2hUZXJtLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgY29uc3QgZmlsdGVyZWQgPSB0aGlzLmxvY2F0aW9ucy5maWx0ZXIobG9jYXRpb24gPT5cclxuICAgICAgKCF0ZXJtIHx8XHJcbiAgICAgICAgbG9jYXRpb24ubmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRlcm0pIHx8XHJcbiAgICAgICAgdGhpcy5hZGRyZXNzTGluZShsb2NhdGlvbikudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0ZXJtKSB8fFxyXG4gICAgICAgIGxvY2F0aW9uLmFkZHJlc3MuY2l0eS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRlcm0pIHx8XHJcbiAgICAgICAgbG9jYXRpb24uYWRkcmVzcy5zdGF0ZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRlcm0pIHx8XHJcbiAgICAgICAgdGhpcy5jb3VudHJ5TGFiZWwobG9jYXRpb24pLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGVybSkpICYmXHJcbiAgICAgICghdGhpcy5maWx0ZXJzLmNvdW50cnkgfHwgdGhpcy5jb3VudHJ5TGFiZWwobG9jYXRpb24pID09PSB0aGlzLmZpbHRlcnMuY291bnRyeSkgJiZcclxuICAgICAgKCF0aGlzLmZpbHRlcnMucGVuZGluZ0FjdGlvbnMgfHwgU3RyaW5nKGxvY2F0aW9uLmhhc1BlbmRpbmdBY3Rpb25zKSA9PT0gdGhpcy5maWx0ZXJzLnBlbmRpbmdBY3Rpb25zKVxyXG4gICAgKTtcclxuXHJcbiAgICByZXR1cm4gZmlsdGVyZWQuc29ydCgoYSwgYikgPT4ge1xyXG4gICAgICBjb25zdCBjb21wYXJpc29uID0gYS5uYW1lLmxvY2FsZUNvbXBhcmUoYi5uYW1lKTtcclxuICAgICAgcmV0dXJuIHRoaXMuc29ydERpcmVjdGlvbiA9PT0gJ2FzYycgPyBjb21wYXJpc29uIDogLWNvbXBhcmlzb247XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldCBwYWdlUmFuZ2VMYWJlbCgpOiBzdHJpbmcge1xyXG4gICAgaWYgKCF0aGlzLnRvdGFsRWxlbWVudHMpIHtcclxuICAgICAgcmV0dXJuICcwIG9mIDAnO1xyXG4gICAgfVxyXG4gICAgY29uc3Qgc3RhcnQgPSB0aGlzLnBhZ2VJbmRleCAqIHRoaXMucGFnZVNpemUgKyAxO1xyXG4gICAgY29uc3QgZW5kID0gTWF0aC5taW4odGhpcy50b3RhbEVsZW1lbnRzLCBzdGFydCArIHRoaXMubG9jYXRpb25zLmxlbmd0aCAtIDEpO1xyXG4gICAgcmV0dXJuIGAke3N0YXJ0fSDigJMgJHtlbmR9IG9mICR7dGhpcy50b3RhbEVsZW1lbnRzfWA7XHJcbiAgfVxyXG5cclxuICBnZXQgaGFzUHJldmlvdXNQYWdlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMucGFnZUluZGV4ID4gMDtcclxuICB9XHJcblxyXG4gIGdldCBoYXNOZXh0UGFnZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAodGhpcy5wYWdlSW5kZXggKyAxKSAqIHRoaXMucGFnZVNpemUgPCB0aGlzLnRvdGFsRWxlbWVudHM7XHJcbiAgfVxyXG5cclxuICBhZGRyZXNzTGluZShsb2NhdGlvbjogTG9jYXRpb24pOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIFtsb2NhdGlvbi5hZGRyZXNzLmFkZHJlc3MxLCBsb2NhdGlvbi5hZGRyZXNzLmFkZHJlc3MyLCBsb2NhdGlvbi5hZGRyZXNzLmNpdHldXHJcbiAgICAgIC5maWx0ZXIoQm9vbGVhbilcclxuICAgICAgLmpvaW4oJyAtICcpO1xyXG4gIH1cclxuXHJcbiAgY291bnRyeUxhYmVsKGxvY2F0aW9uOiBMb2NhdGlvbik6IHN0cmluZyB7XHJcbiAgICBjb25zdCB7IGNvdW50cnlOYW1lLCBjb3VudHJ5IH0gPSBsb2NhdGlvbi5hZGRyZXNzO1xyXG4gICAgaWYgKGNvdW50cnlOYW1lKSB7XHJcbiAgICAgIHJldHVybiBjb3VudHJ5TmFtZTtcclxuICAgIH1cclxuICAgIGlmICghY291bnRyeSkge1xyXG4gICAgICByZXR1cm4gJyc7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5jb3VudHJ5RGlzcGxheU5hbWVzPy5vZihjb3VudHJ5KSB8fCBjb3VudHJ5O1xyXG4gIH1cclxuXHJcbiAgLy8gU2FtZSBpY29uIHNldCBhcyB1c2Vycy1saXN0J3MgXCJQcm92aXNpb25pbmcgVHlwZVwiIGNvbHVtbiAoYXNzZXRzL2ljb25zL3dlYmV4LnN2ZyxcclxuICAvLyBsb2NhbF8yNC5zdmcsIGRpX2Nsb3VkXzI0LnN2ZykuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBwcm92aXNpb25pbmdUeXBlSWNvbnM6IFJlY29yZDxzdHJpbmcsIHsgc3JjOiBzdHJpbmc7IHRvb2x0aXA6IHN0cmluZyB9PiA9IHtcclxuICAgIFdFQkVYOiB7IHNyYzogJ2Fzc2V0cy9pY29ucy93ZWJleC5zdmcnLCB0b29sdGlwOiAnV2ViZXggQ2FsbGluZycgfSxcclxuICAgIFVDTTogeyBzcmM6ICdhc3NldHMvaWNvbnMvbG9jYWxfMjQuc3ZnJywgdG9vbHRpcDogJ1VDTScgfSxcclxuICAgIERJOiB7IHNyYzogJ2Fzc2V0cy9pY29ucy9kaV9jbG91ZF8yNC5zdmcnLCB0b29sdGlwOiAnV2ViZXggQ2FsbGluZyBESScgfSxcclxuICB9O1xyXG5cclxuICBwcm92aXNpb25pbmdUeXBlSWNvbihsb2NhdGlvbjogTG9jYXRpb24pOiB7IHNyYzogc3RyaW5nOyB0b29sdGlwOiBzdHJpbmcgfSB8IG51bGwge1xyXG4gICAgcmV0dXJuIHRoaXMucHJvdmlzaW9uaW5nVHlwZUljb25zW2xvY2F0aW9uLnByb3Zpc2lvbmluZ1R5cGVdIHx8IG51bGw7XHJcbiAgfVxyXG5cclxuICBvblNlYXJjaElucHV0Q2hhbmdlKGV2ZW50OiBFdmVudCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWFyY2hUZXJtID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZTtcclxuICB9XHJcblxyXG4gIHRvZ2dsZU5hbWVTb3J0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zb3J0RGlyZWN0aW9uID0gdGhpcy5zb3J0RGlyZWN0aW9uID09PSAnYXNjJyA/ICdkZXNjJyA6ICdhc2MnO1xyXG4gIH1cclxuXHJcbiAgZGlzbWlzc0Jhbm5lcigpOiB2b2lkIHtcclxuICAgIHRoaXMuaXNCYW5uZXJEaXNtaXNzZWQgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlRmlsdGVyUGFuZWwoKTogdm9pZCB7XHJcbiAgICB0aGlzLmlzRmlsdGVyUGFuZWxPcGVuID0gIXRoaXMuaXNGaWx0ZXJQYW5lbE9wZW47XHJcbiAgfVxyXG5cclxuICBjbG9zZUZpbHRlclBhbmVsKCk6IHZvaWQge1xyXG4gICAgdGhpcy5pc0ZpbHRlclBhbmVsT3BlbiA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgY2xlYXJGaWx0ZXJzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5maWx0ZXJzID0geyBjb3VudHJ5OiAnJywgcGVuZGluZ0FjdGlvbnM6ICcnIH07XHJcbiAgfVxyXG5cclxuICBvblBhZ2VTaXplQ2hhbmdlKGV2ZW50OiBFdmVudCk6IHZvaWQge1xyXG4gICAgdGhpcy5wYWdlU2l6ZSA9IE51bWJlcigoZXZlbnQudGFyZ2V0IGFzIEhUTUxTZWxlY3RFbGVtZW50KS52YWx1ZSk7XHJcbiAgICB0aGlzLnBhZ2VJbmRleCA9IDA7XHJcbiAgICB0aGlzLmxvYWRQYWdlKCk7XHJcbiAgfVxyXG5cclxuICBnb1RvUHJldmlvdXNQYWdlKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuaGFzUHJldmlvdXNQYWdlKSB7XHJcbiAgICAgIHRoaXMucGFnZUluZGV4LS07XHJcbiAgICAgIHRoaXMubG9hZFBhZ2UoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdvVG9OZXh0UGFnZSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmhhc05leHRQYWdlKSB7XHJcbiAgICAgIHRoaXMucGFnZUluZGV4Kys7XHJcbiAgICAgIHRoaXMubG9hZFBhZ2UoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uT3BlbkxvY2F0aW9uKGxvY2F0aW9uOiBMb2NhdGlvbik6IHZvaWQge1xyXG4gICAgdGhpcy5vcGVuTG9jYXRpb24uZW1pdChsb2NhdGlvbi5pZCk7XHJcbiAgfVxyXG5cclxuICBvbkVkaXRMb2NhdGlvbihsb2NhdGlvbjogTG9jYXRpb24pOiB2b2lkIHtcclxuICAgIHRoaXMuZWRpdExvY2F0aW9uLmVtaXQobG9jYXRpb24uaWQpO1xyXG4gIH1cclxuXHJcbiAgb25SZW1vdmVMb2NhdGlvbihsb2NhdGlvbjogTG9jYXRpb24pOiB2b2lkIHtcclxuICAgIHRoaXMucmVtb3ZlTG9jYXRpb24uZW1pdChsb2NhdGlvbi5pZCk7XHJcbiAgfVxyXG5cclxuICBjYW5NaWdyYXRlU2l0ZShsb2NhdGlvbjogTG9jYXRpb24pOiBib29sZWFuIHtcclxuICAgIHJldHVybiBsb2NhdGlvbi5taWdyYXRpb25TdGF0dXMgIT09ICdJTl9QUk9HUkVTUyc7XHJcbiAgfVxyXG5cclxuICBvbk1pZ3JhdGVTaXRlKGxvY2F0aW9uOiBMb2NhdGlvbik6IHZvaWQge1xyXG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihMb2NhdGlvbkNvbmZpcm1EaWFsb2dDb21wb25lbnQsIHtcclxuICAgICAgZGF0YToge1xyXG4gICAgICAgIHRpdGxlOiBgTWlncmF0ZSAke2xvY2F0aW9uLm5hbWV9IHRvIFdlYmV4IENhbGxpbmc/YCxcclxuICAgICAgICBtZXNzYWdlOiBgPHA+TWlncmF0aW5nIHRoaXMgc2l0ZSB3aWxsIG1vdmUgaXRzIGNhbGxpbmcgY29uZmlndXJhdGlvbiB0byBXZWJleCBDYWxsaW5nLjwvcD5cclxuICAgICAgICAgIDxwPlVzZXJzIGFuZCBkZXZpY2VzIGF0IHRoaXMgbG9jYXRpb24gd2lsbCBiZSB1cGRhdGVkIHRvIHRoZSBuZXcgZW52aXJvbm1lbnQuIFRoaXMgbWF5IHRha2Ugc2V2ZXJhbCBtaW51dGVzLjwvcD5cclxuICAgICAgICAgIDxwPkRvIHlvdSB3YW50IHRvIGNvbnRpbnVlPzwvcD5gLFxyXG4gICAgICAgIGNvbmZpcm1CdXR0b25UZXh0OiAnWWVzLCBtaWdyYXRlJyxcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG5cclxuICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZShjb25maXJtZWQgPT4ge1xyXG4gICAgICBpZiAoY29uZmlybWVkKSB7XHJcbiAgICAgICAgdGhpcy5taWdyYXRlU2l0ZShsb2NhdGlvbik7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBtaWdyYXRlU2l0ZShsb2NhdGlvbjogTG9jYXRpb24pOiB2b2lkIHtcclxuICAgIGxvY2F0aW9uLm1pZ3JhdGlvblN0YXR1cyA9ICdJTl9QUk9HUkVTUyc7XHJcbiAgICB0aGlzLmxvY2F0aW9uc1NlcnZpY2UubWlncmF0ZVNpdGUobG9jYXRpb24uaWQpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChiYXRjaElkOiBudW1iZXIpID0+IHtcclxuICAgICAgICBpZiAoYmF0Y2hJZCkge1xyXG4gICAgICAgICAgdGhpcy5wb2xsTWlncmF0aW9uU3RhdHVzKGxvY2F0aW9uLCBiYXRjaElkKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgbG9jYXRpb24ubWlncmF0aW9uU3RhdHVzID0gJ0NPTVBMRVRFRCc7XHJcbiAgICAgICAgICBsb2NhdGlvbi5wcm92aXNpb25pbmdUeXBlID0gJ1dFQkVYJztcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoKSA9PiB7XHJcbiAgICAgICAgbG9jYXRpb24ubWlncmF0aW9uU3RhdHVzID0gJ0ZBSUxFRCc7XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcG9sbE1pZ3JhdGlvblN0YXR1cyhsb2NhdGlvbjogTG9jYXRpb24sIGJhdGNoSWQ6IG51bWJlcik6IHZvaWQge1xyXG4gICAgdGhpcy5jbGVhck1pZ3JhdGlvbkludGVydmFsKGxvY2F0aW9uLmlkKTtcclxuXHJcbiAgICBjb25zdCBwb2xsID0gKCk6IHZvaWQgPT4ge1xyXG4gICAgICB0aGlzLmxvY2F0aW9uc1NlcnZpY2UuZ2V0TWlncmF0aW9uQmF0Y2hTdGF0dXNlcyh0aGlzLmN1c3RvbWVySWQsIFtiYXRjaElkXSkuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAoc3RhdHVzZXM6IFNpdGVCYXRjaFN0YXR1c1tdKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBzdGF0dXMgPSBzdGF0dXNlcy5maW5kKGl0ZW0gPT4gaXRlbS5pZCA9PT0gYmF0Y2hJZCk7XHJcbiAgICAgICAgICBpZiAoIXN0YXR1cyB8fCBzdGF0dXMuc3RhdHVzID09PSAnSW4gUHJvZ3Jlc3MnKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuY2xlYXJNaWdyYXRpb25JbnRlcnZhbChsb2NhdGlvbi5pZCk7XHJcbiAgICAgICAgICBsb2NhdGlvbi5taWdyYXRpb25TdGF0dXMgPSBzdGF0dXMuc3RhdHVzID09PSAnQ29tcGxldGVkJyA/ICdDT01QTEVURUQnIDogJ0ZBSUxFRCc7XHJcbiAgICAgICAgICBpZiAobG9jYXRpb24ubWlncmF0aW9uU3RhdHVzID09PSAnQ09NUExFVEVEJykge1xyXG4gICAgICAgICAgICBsb2NhdGlvbi5wcm92aXNpb25pbmdUeXBlID0gJ1dFQkVYJztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmNsZWFyTWlncmF0aW9uSW50ZXJ2YWwobG9jYXRpb24uaWQpO1xyXG4gICAgICAgICAgbG9jYXRpb24ubWlncmF0aW9uU3RhdHVzID0gJ0ZBSUxFRCc7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgICB9O1xyXG5cclxuICAgIHBvbGwoKTtcclxuICAgIHRoaXMubWlncmF0aW9uSW50ZXJ2YWxzLnNldChsb2NhdGlvbi5pZCwgc2V0SW50ZXJ2YWwocG9sbCwgTUlHUkFUSU9OX1BPTExfSU5URVJWQUxfTVMpKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2xlYXJNaWdyYXRpb25JbnRlcnZhbChsb2NhdGlvbklkOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGNvbnN0IGludGVydmFsID0gdGhpcy5taWdyYXRpb25JbnRlcnZhbHMuZ2V0KGxvY2F0aW9uSWQpO1xyXG4gICAgaWYgKGludGVydmFsKSB7XHJcbiAgICAgIGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWwpO1xyXG4gICAgICB0aGlzLm1pZ3JhdGlvbkludGVydmFscy5kZWxldGUobG9jYXRpb25JZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkFkZExvY2F0aW9uKCk6IHZvaWQge1xyXG4gICAgdGhpcy5hZGRMb2NhdGlvbi5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICBvbkltcG9ydExvY2F0aW9ucygpOiB2b2lkIHtcclxuICAgIHRoaXMuaW1wb3J0TG9jYXRpb25zLmVtaXQoKTtcclxuICB9XHJcblxyXG4gIGV4cG9ydExvY2F0aW9ucygpOiB2b2lkIHtcclxuICAgIGNvbnN0IHJvd3MgPSB0aGlzLmZpbHRlcmVkTG9jYXRpb25zLm1hcChsb2NhdGlvbiA9PiBbXHJcbiAgICAgIGxvY2F0aW9uLm5hbWUsXHJcbiAgICAgIHRoaXMuYWRkcmVzc0xpbmUobG9jYXRpb24pLFxyXG4gICAgICB0aGlzLmNvdW50cnlMYWJlbChsb2NhdGlvbiksXHJcbiAgICAgIHRoaXMucHJvdmlzaW9uaW5nVHlwZUljb24obG9jYXRpb24pPy50b29sdGlwIHx8ICcnLFxyXG4gICAgXSk7XHJcbiAgICBjb25zdCBjc3ZMaW5lcyA9IFtcclxuICAgICAgWydMb2NhdGlvbiBOYW1lJywgJ0FkZHJlc3MnLCAnQ291bnRyeS9SZWdpb24nLCAnUHJvdmlzaW9uaW5nIFR5cGUnXSxcclxuICAgICAgLi4ucm93cyxcclxuICAgIF0ubWFwKHJvdyA9PiByb3cubWFwKGNlbGwgPT4gYFwiJHtTdHJpbmcoY2VsbCkucmVwbGFjZSgvXCIvZywgJ1wiXCInKX1cImApLmpvaW4oJywnKSk7XHJcblxyXG4gICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtjc3ZMaW5lcy5qb2luKCdcXG4nKV0sIHsgdHlwZTogJ3RleHQvY3N2O2NoYXJzZXQ9dXRmLTg7JyB9KTtcclxuICAgIGNvbnN0IHVybCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XHJcbiAgICBjb25zdCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xyXG4gICAgbGluay5ocmVmID0gdXJsO1xyXG4gICAgbGluay5kb3dubG9hZCA9ICdsb2NhdGlvbnMuY3N2JztcclxuICAgIGxpbmsuY2xpY2soKTtcclxuICAgIFVSTC5yZXZva2VPYmplY3RVUkwodXJsKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInRrLWxvY2F0aW9uc1wiPlxyXG4gIDxhcHAtbG9hZGVyICpuZ0lmPVwiaXNMb2FkaW5nXCI+PC9hcHAtbG9hZGVyPlxyXG5cclxuICA8ZGl2IGNsYXNzPVwidGstbG9jYXRpb25zX192aWV3LXRvZ2dsZVwiPlxyXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJ0ay1sb2NhdGlvbnNfX3ZpZXctYnV0dG9uIHRrLWxvY2F0aW9uc19fdmlldy1idXR0b24tLWFjdGl2ZVwiPlxyXG4gICAgICA8bWF0LWljb24gY2xhc3M9XCJ0ay1sb2NhdGlvbnNfX3ZpZXctaWNvblwiPm1lbnU8L21hdC1pY29uPlxyXG4gICAgICBMaXN0XHJcbiAgICA8L2J1dHRvbj5cclxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwidGstbG9jYXRpb25zX192aWV3LWJ1dHRvblwiIGRpc2FibGVkIHRpdGxlPVwiTWFwIHZpZXcgY29taW5nIHNvb25cIj5cclxuICAgICAgPG1hdC1pY29uIGNsYXNzPVwidGstbG9jYXRpb25zX192aWV3LWljb25cIj5wbGFjZTwvbWF0LWljb24+XHJcbiAgICAgIE1hcFxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJ0ay1sb2NhdGlvbnNfX2Jhbm5lclwiICpuZ0lmPVwic2hvd1BlbmRpbmdCYW5uZXJcIj5cclxuICAgIDxtYXQtaWNvbiBjbGFzcz1cInRrLWxvY2F0aW9uc19fYmFubmVyLWljb25cIj53YXJuaW5nPC9tYXQtaWNvbj5cclxuICAgIDxzcGFuIGNsYXNzPVwidGstbG9jYXRpb25zX19iYW5uZXItdGV4dFwiPlxyXG4gICAgICBWaWV3IGxvY2F0aW9uKHMpIHdpdGggcGVuZGluZyBhY3Rpb24gaXRlbXMgdG8gcmVzdW1lIHlvdXIgY2FsbGluZyBzZXJ2aWNlIGluIHt7IHBlbmRpbmdMb2NhdGlvbnMubGVuZ3RoIH19IG9yIG1vcmUgbG9jYXRpb25zLlxyXG4gICAgPC9zcGFuPlxyXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJ0ay1sb2NhdGlvbnNfX2Jhbm5lci1jbG9zZVwiIGFyaWEtbGFiZWw9XCJEaXNtaXNzXCIgKGNsaWNrKT1cImRpc21pc3NCYW5uZXIoKVwiPlxyXG4gICAgICA8bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPlxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJ0ay1sb2NhdGlvbnNfX3Rvb2xiYXJcIj5cclxuICAgIDxkaXYgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiBmaXQtY29udGVudDsgbWluLXdpZHRoOiAyMDBweFwiPlxyXG4gICAgICA8aW5wdXRcclxuICAgICAgICBbdmFsdWVdPVwic2VhcmNoVGVybVwiXHJcbiAgICAgICAgY2xhc3M9XCJibHVlLWlucHV0XCJcclxuICAgICAgICAoaW5wdXQpPVwib25TZWFyY2hJbnB1dENoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2ggYnkgbmFtZSwgY2l0eSwgc3RhdGUsIGNvdW50cnlcIlxyXG4gICAgICAgIHN0eWxlPVwiXHJcbiAgICAgICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgICAgIGhlaWdodDogMzRweDtcclxuICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDAuNXJlbTtcclxuICAgICAgICAgIGZvbnQtc2l6ZTogMTZweDtcclxuICAgICAgICAgIHBhZGRpbmc6IDZweCAxMnB4IDZweCA0NHB4O1xyXG4gICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgIzAwMDAwMDgwO1xyXG4gICAgICAgICAgYmFja2dyb3VuZDogI2ZmZjtcclxuICAgICAgICAgIGNvbG9yOiAjMjIyO1xyXG4gICAgICAgICAgb3V0bGluZTogbm9uZTtcclxuICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcbiAgICAgICAgICBtaW4td2lkdGg6IDI4MHB4O1xyXG4gICAgICAgIFwiXHJcbiAgICAgIC8+XHJcbiAgICAgIDxzcGFuXHJcbiAgICAgICAgc3R5bGU9XCJcclxuICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgICAgIGxlZnQ6IDEycHg7XHJcbiAgICAgICAgICB0b3A6IDUwJTtcclxuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcclxuICAgICAgICAgIGNvbG9yOiAjNzU3NTc1O1xyXG4gICAgICAgICAgZm9udC1zaXplOiAxOHB4O1xyXG4gICAgICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcclxuICAgICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xyXG4gICAgICAgIFwiXHJcbiAgICAgID5cclxuICAgICAgICA8aVxyXG4gICAgICAgICAgY2xhc3M9XCJtYXRlcmlhbC1pY29uc1wiXHJcbiAgICAgICAgICBzdHlsZT1cImZvbnQtc2l6ZTogMThweDsgZm9udC13ZWlnaHQ6IG5vcm1hbFwiXHJcbiAgICAgICAgICA+c2VhcmNoPC9pXHJcbiAgICAgICAgPlxyXG4gICAgICA8L3NwYW4+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cInRrLWxvY2F0aW9uc19fZmlsdGVyLWJ1dHRvblwiIChjbGljayk9XCJ0b2dnbGVGaWx0ZXJQYW5lbCgpXCI+XHJcbiAgICAgIDxpbWcgY2xhc3M9XCJ0ay1sb2NhdGlvbnNfX2ZpbHRlci1pY29uXCIgc3JjPVwiYXNzZXRzL2ljb25zL2ZpbHRlci1yZWd1bGFyLnN2Z1wiIGFsdD1cImZpbHRlcl9saXN0XCIgdGl0bGU9XCJmaWx0ZXJfbGlzdFwiPlxyXG4gICAgICBGaWx0ZXJcclxuICAgIDwvYnV0dG9uPlxyXG5cclxuICAgIDxzcGFuIGNsYXNzPVwidGstbG9jYXRpb25zX19jb3VudFwiPnt7IGZpbHRlcmVkTG9jYXRpb25zLmxlbmd0aCB9fSBsb2NhdGlvbnM8L3NwYW4+XHJcblxyXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJ0ay1sb2NhdGlvbnNfX2Rvd25sb2FkLWJ1dHRvblwiIGFyaWEtbGFiZWw9XCJEb3dubG9hZCBsb2NhdGlvbnNcIiB0aXRsZT1cIkRvd25sb2FkIGxvY2F0aW9uc1wiIChjbGljayk9XCJleHBvcnRMb2NhdGlvbnMoKVwiPlxyXG4gICAgICA8bWF0LWljb24+ZmlsZV9kb3dubG9hZDwvbWF0LWljb24+XHJcbiAgICA8L2J1dHRvbj5cclxuXHJcbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cInRrLWxvY2F0aW9uc19fbWFuYWdlLWJ1dHRvblwiIFttYXRNZW51VHJpZ2dlckZvcl09XCJtYW5hZ2VNZW51XCI+XHJcbiAgICAgIE1hbmFnZSBsb2NhdGlvbnNcclxuICAgICAgPG1hdC1pY29uIGNsYXNzPVwidGstbG9jYXRpb25zX19tYW5hZ2UtY2hldnJvblwiPmV4cGFuZF9tb3JlPC9tYXQtaWNvbj5cclxuICAgIDwvYnV0dG9uPlxyXG4gICAgPG1hdC1tZW51ICNtYW5hZ2VNZW51PVwibWF0TWVudVwiIHhQb3NpdGlvbj1cImJlZm9yZVwiPlxyXG4gICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJvbkFkZExvY2F0aW9uKClcIj5BZGQgbG9jYXRpb248L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwib25JbXBvcnRMb2NhdGlvbnMoKVwiPkltcG9ydCBsb2NhdGlvbnM8L2J1dHRvbj5cclxuICAgIDwvbWF0LW1lbnU+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDx0YWJsZSBjbGFzcz1cInRrLWxvY2F0aW9uc19fdGFibGVcIj5cclxuICAgIDx0aGVhZD5cclxuICAgICAgPHRyPlxyXG4gICAgICAgIDx0aCAoY2xpY2spPVwidG9nZ2xlTmFtZVNvcnQoKVwiPlxyXG4gICAgICAgICAgTG9jYXRpb24gTmFtZVxyXG4gICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwidGstbG9jYXRpb25zX19zb3J0LWljb25cIj57eyBzb3J0RGlyZWN0aW9uID09PSAnYXNjJyA/ICdhcnJvd191cHdhcmQnIDogJ2Fycm93X2Rvd253YXJkJyB9fTwvbWF0LWljb24+XHJcbiAgICAgICAgPC90aD5cclxuICAgICAgICA8dGg+QWRkcmVzczwvdGg+XHJcbiAgICAgICAgPHRoPkNvdW50cnkvUmVnaW9uPC90aD5cclxuICAgICAgICA8dGg+UHJvdmlzaW9uaW5nIFR5cGU8L3RoPlxyXG4gICAgICAgIDx0aCBjbGFzcz1cInRrLWxvY2F0aW9uc19fYWN0aW9ucy1jb2xcIj48L3RoPlxyXG4gICAgICA8L3RyPlxyXG4gICAgPC90aGVhZD5cclxuICAgIDx0Ym9keT5cclxuICAgICAgPHRyICpuZ0Zvcj1cImxldCBsb2NhdGlvbiBvZiBmaWx0ZXJlZExvY2F0aW9uc1wiIChjbGljayk9XCJvbk9wZW5Mb2NhdGlvbihsb2NhdGlvbilcIj5cclxuICAgICAgICA8dGQgY2xhc3M9XCJ0ay1sb2NhdGlvbnNfX25hbWUtY2VsbFwiPlxyXG4gICAgICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiIGNsYXNzPVwidGstbG9jYXRpb25zX19uYW1lLWxpbmtcIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyBvbk9wZW5Mb2NhdGlvbihsb2NhdGlvbilcIj57eyBsb2NhdGlvbi5uYW1lIH19PC9hPlxyXG4gICAgICAgIDwvdGQ+XHJcbiAgICAgICAgPHRkPnt7IGFkZHJlc3NMaW5lKGxvY2F0aW9uKSB8fCAn4oCUJyB9fTwvdGQ+XHJcbiAgICAgICAgPHRkPnt7IGNvdW50cnlMYWJlbChsb2NhdGlvbikgfHwgJ+KAlCcgfX08L3RkPlxyXG4gICAgICAgIDx0ZD5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGstbG9jYXRpb25zX19pY29uLXdyYXBwZXJcIiAqbmdJZj1cInByb3Zpc2lvbmluZ1R5cGVJY29uKGxvY2F0aW9uKSBhcyBwdDsgZWxzZSBub1Byb3Zpc2lvbmluZ1R5cGVcIj5cclxuICAgICAgICAgICAgPGltZyBbc3JjXT1cInB0LnNyY1wiIFttYXRUb29sdGlwXT1cInB0LnRvb2x0aXBcIiBtYXRUb29sdGlwUG9zaXRpb249XCJyaWdodFwiIHdpZHRoPVwiMjBcIiBhbHQ9XCJcIj5cclxuICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9Qcm92aXNpb25pbmdUeXBlPuKAlDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC90ZD5cclxuICAgICAgICA8dGQgY2xhc3M9XCJ0ay1sb2NhdGlvbnNfX2FjdGlvbnMtY29sXCI+XHJcbiAgICAgICAgICA8bWF0LXByb2dyZXNzLXNwaW5uZXJcclxuICAgICAgICAgICAgKm5nSWY9XCJsb2NhdGlvbi5taWdyYXRpb25TdGF0dXMgPT09ICdJTl9QUk9HUkVTUydcIlxyXG4gICAgICAgICAgICBjbGFzcz1cInRrLWxvY2F0aW9uc19fcm93LWFjdGlvbi1zcGlubmVyXCJcclxuICAgICAgICAgICAgW2RpYW1ldGVyXT1cIjIwXCJcclxuICAgICAgICAgICAgc3Ryb2tlV2lkdGg9XCIyXCJcclxuICAgICAgICAgICAgbW9kZT1cImluZGV0ZXJtaW5hdGVcIlxyXG4gICAgICAgICAgICBtYXRUb29sdGlwPVwiTWlncmF0aW5nIHNpdGXigKZcIj5cclxuICAgICAgICAgIDwvbWF0LXByb2dyZXNzLXNwaW5uZXI+XHJcbiAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICpuZ0lmPVwibG9jYXRpb24ubWlncmF0aW9uU3RhdHVzICE9PSAnSU5fUFJPR1JFU1MnXCJcclxuICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXHJcbiAgICAgICAgICAgIGNsYXNzPVwidGstbG9jYXRpb25zX19yb3ctYWN0aW9uLWJ1dHRvblwiXHJcbiAgICAgICAgICAgIFttYXRNZW51VHJpZ2dlckZvcl09XCJyb3dNZW51XCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXHJcbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJPcGVuIGxvY2F0aW9uIGFjdGlvbnNcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uPm1vcmVfdmVydDwvbWF0LWljb24+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDxtYXQtbWVudSAjcm93TWVudT1cIm1hdE1lbnVcIiB5UG9zaXRpb249XCJiZWxvd1wiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJvbk9wZW5Mb2NhdGlvbihsb2NhdGlvbilcIj5WaWV3IGRldGFpbHM8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwib25FZGl0TG9jYXRpb24obG9jYXRpb24pXCI+RWRpdCBsb2NhdGlvbjwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJjYW5NaWdyYXRlU2l0ZShsb2NhdGlvbilcIlxyXG4gICAgICAgICAgICAgIG1hdC1tZW51LWl0ZW1cclxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwib25NaWdyYXRlU2l0ZShsb2NhdGlvbilcIj5NaWdyYXRlIHNpdGU8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwib25SZW1vdmVMb2NhdGlvbihsb2NhdGlvbilcIj5SZW1vdmUgbG9jYXRpb248L2J1dHRvbj5cclxuICAgICAgICAgIDwvbWF0LW1lbnU+XHJcbiAgICAgICAgPC90ZD5cclxuICAgICAgPC90cj5cclxuICAgICAgPHRyICpuZ0lmPVwiIWZpbHRlcmVkTG9jYXRpb25zLmxlbmd0aFwiPlxyXG4gICAgICAgIDx0ZCBjb2xzcGFuPVwiNVwiIGNsYXNzPVwidGstbG9jYXRpb25zX19lbXB0eVwiPk5vIGxvY2F0aW9ucyBtYXRjaCB5b3VyIHNlYXJjaC48L3RkPlxyXG4gICAgICA8L3RyPlxyXG4gICAgPC90Ym9keT5cclxuICA8L3RhYmxlPlxyXG5cclxuICA8ZGl2IGNsYXNzPVwidGstbG9jYXRpb25zX19mb290ZXJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJ0ay1sb2NhdGlvbnNfX3Jvd3MtcGVyLXBhZ2VcIj5cclxuICAgICAgPGxhYmVsIGZvcj1cInRrLWxvY2F0aW9ucy1wYWdlLXNpemVcIj5Sb3dzIHBlciBwYWdlOjwvbGFiZWw+XHJcbiAgICAgIDxzZWxlY3QgaWQ9XCJ0ay1sb2NhdGlvbnMtcGFnZS1zaXplXCIgY2xhc3M9XCJ0ay1sb2NhdGlvbnNfX3Jvd3MtcGVyLXBhZ2Utc2VsZWN0XCIgW25nTW9kZWxdPVwicGFnZVNpemVcIiAoY2hhbmdlKT1cIm9uUGFnZVNpemVDaGFuZ2UoJGV2ZW50KVwiPlxyXG4gICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IHNpemUgb2YgcGFnZVNpemVPcHRpb25zXCIgW3ZhbHVlXT1cInNpemVcIj57eyBzaXplIH19PC9vcHRpb24+XHJcbiAgICAgIDwvc2VsZWN0PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8c3BhbiBjbGFzcz1cInRrLWxvY2F0aW9uc19fZm9vdGVyLXRleHRcIj57eyBwYWdlUmFuZ2VMYWJlbCB9fTwvc3Bhbj5cclxuICAgIDxkaXYgY2xhc3M9XCJ0ay1sb2NhdGlvbnNfX3BhZ2luYXRpb25cIj5cclxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJ0ay1sb2NhdGlvbnNfX3BhZ2luYXRpb24tYnV0dG9uXCIgW2Rpc2FibGVkXT1cIiFoYXNQcmV2aW91c1BhZ2VcIiAoY2xpY2spPVwiZ29Ub1ByZXZpb3VzUGFnZSgpXCIgYXJpYS1sYWJlbD1cIlByZXZpb3VzIHBhZ2VcIj5cclxuICAgICAgICA8bWF0LWljb24+Y2hldnJvbl9sZWZ0PC9tYXQtaWNvbj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwidGstbG9jYXRpb25zX19wYWdpbmF0aW9uLWJ1dHRvblwiIFtkaXNhYmxlZF09XCIhaGFzTmV4dFBhZ2VcIiAoY2xpY2spPVwiZ29Ub05leHRQYWdlKClcIiBhcmlhLWxhYmVsPVwiTmV4dCBwYWdlXCI+XHJcbiAgICAgICAgPG1hdC1pY29uPmNoZXZyb25fcmlnaHQ8L21hdC1pY29uPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2XHJcbiAgICBjbGFzcz1cInRrLWxvY2F0aW9uc19fZmlsdGVyLWJhY2tkcm9wXCJcclxuICAgICpuZ0lmPVwiaXNGaWx0ZXJQYW5lbE9wZW5cIlxyXG4gICAgKGNsaWNrKT1cImNsb3NlRmlsdGVyUGFuZWwoKVwiPlxyXG4gIDwvZGl2PlxyXG5cclxuICA8YXNpZGUgY2xhc3M9XCJ0ay1sb2NhdGlvbnNfX2ZpbHRlci1wYW5lbFwiIFtjbGFzcy50ay1sb2NhdGlvbnNfX2ZpbHRlci1wYW5lbC0tb3Blbl09XCJpc0ZpbHRlclBhbmVsT3BlblwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInRrLWxvY2F0aW9uc19fZmlsdGVyLXBhbmVsLWhlYWRlclwiPlxyXG4gICAgICA8aDMgY2xhc3M9XCJ0ay1sb2NhdGlvbnNfX2ZpbHRlci1wYW5lbC10aXRsZVwiPkZpbHRlciBsb2NhdGlvbnM8L2gzPlxyXG4gICAgICA8YnV0dG9uXHJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgY2xhc3M9XCJ0ay1sb2NhdGlvbnNfX2ZpbHRlci1wYW5lbC1jbG9zZVwiXHJcbiAgICAgICAgYXJpYS1sYWJlbD1cIkNsb3NlIGZpbHRlciBwYW5lbFwiXHJcbiAgICAgICAgKGNsaWNrKT1cImNsb3NlRmlsdGVyUGFuZWwoKVwiPlxyXG4gICAgICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cInRrLWxvY2F0aW9uc19fZmlsdGVyLXBhbmVsLWJvZHlcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInRrLWxvY2F0aW9uc19fZmlsdGVyLWZpZWxkXCI+XHJcbiAgICAgICAgPGxhYmVsIGNsYXNzPVwidGstbG9jYXRpb25zX19maWx0ZXItbGFiZWxcIiBmb3I9XCJ0ay1sb2NhdGlvbnMtZmlsdGVyLWNvdW50cnlcIj5Db3VudHJ5L1JlZ2lvbjwvbGFiZWw+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRrLWxvY2F0aW9uc19fZmlsdGVyLXNlbGVjdC13cmFwXCI+XHJcbiAgICAgICAgICA8c2VsZWN0IGlkPVwidGstbG9jYXRpb25zLWZpbHRlci1jb3VudHJ5XCIgY2xhc3M9XCJ0ay1sb2NhdGlvbnNfX2ZpbHRlci1zZWxlY3RcIiBbKG5nTW9kZWwpXT1cImZpbHRlcnMuY291bnRyeVwiPlxyXG4gICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiXCI+QWxsIGNvdW50cmllczwvb3B0aW9uPlxyXG4gICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBjb3VudHJ5IG9mIGNvdW50cmllc1wiIFt2YWx1ZV09XCJjb3VudHJ5XCI+e3sgY291bnRyeSB9fTwvb3B0aW9uPlxyXG4gICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJ0ay1sb2NhdGlvbnNfX2ZpbHRlci1zZWxlY3QtaWNvblwiPmV4cGFuZF9tb3JlPC9tYXQtaWNvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwidGstbG9jYXRpb25zX19maWx0ZXItZmllbGRcIj5cclxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJ0ay1sb2NhdGlvbnNfX2ZpbHRlci1sYWJlbFwiIGZvcj1cInRrLWxvY2F0aW9ucy1maWx0ZXItcGVuZGluZ1wiPlBlbmRpbmcgYWN0aW9uIGl0ZW1zPC9sYWJlbD5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidGstbG9jYXRpb25zX19maWx0ZXItc2VsZWN0LXdyYXBcIj5cclxuICAgICAgICAgIDxzZWxlY3QgaWQ9XCJ0ay1sb2NhdGlvbnMtZmlsdGVyLXBlbmRpbmdcIiBjbGFzcz1cInRrLWxvY2F0aW9uc19fZmlsdGVyLXNlbGVjdFwiIFsobmdNb2RlbCldPVwiZmlsdGVycy5wZW5kaW5nQWN0aW9uc1wiPlxyXG4gICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiXCI+QWxsPC9vcHRpb24+XHJcbiAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJ0cnVlXCI+WWVzPC9vcHRpb24+XHJcbiAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJmYWxzZVwiPk5vPC9vcHRpb24+XHJcbiAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cInRrLWxvY2F0aW9uc19fZmlsdGVyLXNlbGVjdC1pY29uXCI+ZXhwYW5kX21vcmU8L21hdC1pY29uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJ0ay1sb2NhdGlvbnNfX2ZpbHRlci1wYW5lbC1mb290ZXJcIj5cclxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJ0ay1sb2NhdGlvbnNfX2ZpbHRlci1jbGVhclwiIChjbGljayk9XCJjbGVhckZpbHRlcnMoKVwiPkNsZWFyIGFsbDwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cInRrLWxvY2F0aW9uc19fZmlsdGVyLWRvbmVcIiAoY2xpY2spPVwiY2xvc2VGaWx0ZXJQYW5lbCgpXCI+RG9uZTwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9hc2lkZT5cclxuPC9kaXY+XHJcbiJdfQ==
292
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYXRpb25zLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1a2kvd2lkZ2V0cy9sb2NhdGlvbnMvc3JjL2xvY2F0aW9ucy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWtpL3dpZGdldHMvbG9jYXRpb25zL3NyYy9sb2NhdGlvbnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJMUYsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sNkRBQTZELENBQUM7Ozs7Ozs7Ozs7Ozs7QUFHN0csTUFBTSwwQkFBMEIsR0FBRyxLQUFLLENBQUM7QUFJekMsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFPdkMsTUFBTSxPQUFPLGtCQUFrQjtJQW1DN0IsWUFDVSxVQUFzQixFQUN0QixnQkFBa0MsRUFDbEMsTUFBaUI7UUFGakIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLFdBQU0sR0FBTixNQUFNLENBQVc7UUFqQ2pCLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUMxQyxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFDMUMsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQzVDLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUN2QyxvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFFckQsY0FBUyxHQUFlLEVBQUUsQ0FBQztRQUMzQixrQkFBYSxHQUFHLENBQUMsQ0FBQztRQUNsQixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBRWxC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QztRQUNsRixNQUFNLEdBQUcsR0FBRyxHQUFHLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RDLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDekMsSUFBSSxDQUFDLElBQUksR0FBRyxHQUFHLENBQUM7UUFDaEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxlQUFlLENBQUM7UUFDaEMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2IsR0FBRyxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMzQixDQUFDOztnSEE5U1Usa0JBQWtCO29HQUFsQixrQkFBa0IsdVNDbEIvQiwwcFRBd05BOzRGRHRNYSxrQkFBa0I7a0JBTDlCLFNBQVM7K0JBQ0UsY0FBYzt3SkFLZixNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUksWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxlQUFlO3NCQUF4QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IEFQSVNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2FwaS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTG9jYXRpb25zU2VydmljZSwgU2l0ZUJhdGNoU3RhdHVzIH0gZnJvbSAnLi9zZXJ2aWNlcy9sb2NhdGlvbnMuc2VydmljZSc7XHJcbmltcG9ydCB7IExvY2F0aW9uQ29uZmlybURpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4vbG9jYXRpb24tY29uZmlybS1kaWFsb2cvbG9jYXRpb24tY29uZmlybS1kaWFsb2cuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTG9jYXRpb24gfSBmcm9tICcuL3R5cGVzL2xvY2F0aW9uJztcclxuXHJcbmNvbnN0IE1JR1JBVElPTl9QT0xMX0lOVEVSVkFMX01TID0gMTAwMDA7XHJcblxyXG50eXBlIExvY2F0aW9uc1NvcnREaXJlY3Rpb24gPSAnYXNjJyB8ICdkZXNjJztcclxuXHJcbmNvbnN0IFBBR0VfU0laRV9PUFRJT05TID0gWzEwLCAyNSwgNTBdO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd0ay1sb2NhdGlvbnMnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9sb2NhdGlvbnMuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2xvY2F0aW9ucy5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTG9jYXRpb25zQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIEBJbnB1dCgpIGV4SG9zdCE6IHN0cmluZztcclxuICBASW5wdXQoKSB0b2tlbiE6IHN0cmluZztcclxuICBASW5wdXQoKSBjdXN0b21lcklkITogbnVtYmVyO1xyXG5cclxuICBAT3V0cHV0KCkgb3BlbkxvY2F0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcbiAgQE91dHB1dCgpIGVkaXRMb2NhdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG4gIEBPdXRwdXQoKSByZW1vdmVMb2NhdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG4gIEBPdXRwdXQoKSBhZGRMb2NhdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuICBAT3V0cHV0KCkgaW1wb3J0TG9jYXRpb25zID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuICBsb2NhdGlvbnM6IExvY2F0aW9uW10gPSBbXTtcclxuICB0b3RhbEVsZW1lbnRzID0gMDtcclxuICBpc0xvYWRpbmcgPSBmYWxzZTtcclxuXHJcbiAgc2VhcmNoVGVybSA9ICcnO1xyXG4gIHNvcnREaXJlY3Rpb246IExvY2F0aW9uc1NvcnREaXJlY3Rpb24gPSAnYXNjJztcclxuICBpc0Jhbm5lckRpc21pc3NlZCA9IGZhbHNlO1xyXG5cclxuICByZWFkb25seSBwYWdlU2l6ZU9wdGlvbnMgPSBQQUdFX1NJWkVfT1BUSU9OUztcclxuICBwYWdlSW5kZXggPSAwO1xyXG4gIHBhZ2VTaXplID0gUEFHRV9TSVpFX09QVElPTlNbMF07XHJcblxyXG4gIGlzRmlsdGVyUGFuZWxPcGVuID0gZmFsc2U7XHJcbiAgZmlsdGVycyA9IHtcclxuICAgIGNvdW50cnk6ICcnLFxyXG4gICAgcGVuZGluZ0FjdGlvbnM6ICcnLFxyXG4gIH07XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgY291bnRyeURpc3BsYXlOYW1lcyA9IHR5cGVvZiBJbnRsICE9PSAndW5kZWZpbmVkJyAmJiAnRGlzcGxheU5hbWVzJyBpbiBJbnRsXHJcbiAgICA/IG5ldyBJbnRsLkRpc3BsYXlOYW1lcyhbJ2VuJ10sIHsgdHlwZTogJ3JlZ2lvbicgfSlcclxuICAgIDogbnVsbDtcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBtaWdyYXRpb25JbnRlcnZhbHMgPSBuZXcgTWFwPHN0cmluZywgUmV0dXJuVHlwZTx0eXBlb2Ygc2V0SW50ZXJ2YWw+PigpO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgYXBpU2VydmljZTogQVBJU2VydmljZSxcclxuICAgIHByaXZhdGUgbG9jYXRpb25zU2VydmljZTogTG9jYXRpb25zU2VydmljZSxcclxuICAgIHByaXZhdGUgZGlhbG9nOiBNYXREaWFsb2csXHJcbiAgKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmFwaVNlcnZpY2UudG9rZW4gPSB0aGlzLnRva2VuO1xyXG4gICAgdGhpcy5hcGlTZXJ2aWNlLmFwaVVybCA9IHRoaXMuZXhIb3N0ICsgJy93ZWJleCc7XHJcbiAgICB0aGlzLmxvYWRQYWdlKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMubWlncmF0aW9uSW50ZXJ2YWxzLmZvckVhY2goaW50ZXJ2YWwgPT4gY2xlYXJJbnRlcnZhbChpbnRlcnZhbCkpO1xyXG4gICAgdGhpcy5taWdyYXRpb25JbnRlcnZhbHMuY2xlYXIoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbG9hZFBhZ2UoKTogdm9pZCB7XHJcbiAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLmxvY2F0aW9uc1NlcnZpY2UuZmV0Y2hMb2NhdGlvbnModGhpcy5jdXN0b21lcklkLCB0aGlzLnBhZ2VJbmRleCwgdGhpcy5wYWdlU2l6ZSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHsgbG9jYXRpb25zLCB0b3RhbEVsZW1lbnRzIH0pID0+IHtcclxuICAgICAgICB0aGlzLmxvY2F0aW9ucyA9IGxvY2F0aW9ucztcclxuICAgICAgICB0aGlzLnRvdGFsRWxlbWVudHMgPSB0b3RhbEVsZW1lbnRzO1xyXG4gICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHBlbmRpbmdMb2NhdGlvbnMoKTogTG9jYXRpb25bXSB7XHJcbiAgICByZXR1cm4gdGhpcy5sb2NhdGlvbnMuZmlsdGVyKGxvY2F0aW9uID0+IGxvY2F0aW9uLmhhc1BlbmRpbmdBY3Rpb25zKTtcclxuICB9XHJcblxyXG4gIGdldCBzaG93UGVuZGluZ0Jhbm5lcigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAhdGhpcy5pc0Jhbm5lckRpc21pc3NlZCAmJiB0aGlzLnBlbmRpbmdMb2NhdGlvbnMubGVuZ3RoID4gMDtcclxuICB9XHJcblxyXG4gIGdldCBjb3VudHJpZXMoKTogc3RyaW5nW10ge1xyXG4gICAgcmV0dXJuIEFycmF5LmZyb20obmV3IFNldCh0aGlzLmxvY2F0aW9ucy5tYXAobG9jYXRpb24gPT4gdGhpcy5jb3VudHJ5TGFiZWwobG9jYXRpb24pKS5maWx0ZXIoQm9vbGVhbikpKS5zb3J0KCk7XHJcbiAgfVxyXG5cclxuICAvLyBTZWFyY2gvZmlsdGVyL3NvcnQgYXBwbHkgb25seSB0byB0aGUgY3VycmVudGx5IGxvYWRlZCBwYWdlIOKAlCB0aGUgQVBJIHBhZ2luYXRlc1xyXG4gIC8vIHNlcnZlci1zaWRlIChwYWdlL3NpemUpIGFuZCBkb2Vzbid0IGV4cG9zZSBhIGRvY3VtZW50ZWQgc2VhcmNoL2ZpbHRlciBwYXJhbWV0ZXIuXHJcbiAgZ2V0IGZpbHRlcmVkTG9jYXRpb25zKCk6IExvY2F0aW9uW10ge1xyXG4gICAgY29uc3QgdGVybSA9IHRoaXMuc2VhcmNoVGVybS50cmltKCkudG9Mb3dlckNhc2UoKTtcclxuICAgIGNvbnN0IGZpbHRlcmVkID0gdGhpcy5sb2NhdGlvbnMuZmlsdGVyKGxvY2F0aW9uID0+XHJcbiAgICAgICghdGVybSB8fFxyXG4gICAgICAgIGxvY2F0aW9uLm5hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0ZXJtKSB8fFxyXG4gICAgICAgIHRoaXMuYWRkcmVzc0xpbmUobG9jYXRpb24pLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGVybSkgfHxcclxuICAgICAgICBsb2NhdGlvbi5hZGRyZXNzLmNpdHkudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0ZXJtKSB8fFxyXG4gICAgICAgIGxvY2F0aW9uLmFkZHJlc3Muc3RhdGUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0ZXJtKSB8fFxyXG4gICAgICAgIHRoaXMuY291bnRyeUxhYmVsKGxvY2F0aW9uKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRlcm0pKSAmJlxyXG4gICAgICAoIXRoaXMuZmlsdGVycy5jb3VudHJ5IHx8IHRoaXMuY291bnRyeUxhYmVsKGxvY2F0aW9uKSA9PT0gdGhpcy5maWx0ZXJzLmNvdW50cnkpICYmXHJcbiAgICAgICghdGhpcy5maWx0ZXJzLnBlbmRpbmdBY3Rpb25zIHx8IFN0cmluZyhsb2NhdGlvbi5oYXNQZW5kaW5nQWN0aW9ucykgPT09IHRoaXMuZmlsdGVycy5wZW5kaW5nQWN0aW9ucylcclxuICAgICk7XHJcblxyXG4gICAgcmV0dXJuIGZpbHRlcmVkLnNvcnQoKGEsIGIpID0+IHtcclxuICAgICAgY29uc3QgY29tcGFyaXNvbiA9IGEubmFtZS5sb2NhbGVDb21wYXJlKGIubmFtZSk7XHJcbiAgICAgIHJldHVybiB0aGlzLnNvcnREaXJlY3Rpb24gPT09ICdhc2MnID8gY29tcGFyaXNvbiA6IC1jb21wYXJpc29uO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXQgcGFnZVJhbmdlTGFiZWwoKTogc3RyaW5nIHtcclxuICAgIGlmICghdGhpcy50b3RhbEVsZW1lbnRzKSB7XHJcbiAgICAgIHJldHVybiAnMCBvZiAwJztcclxuICAgIH1cclxuICAgIGNvbnN0IHN0YXJ0ID0gdGhpcy5wYWdlSW5kZXggKiB0aGlzLnBhZ2VTaXplICsgMTtcclxuICAgIGNvbnN0IGVuZCA9IE1hdGgubWluKHRoaXMudG90YWxFbGVtZW50cywgc3RhcnQgKyB0aGlzLmxvY2F0aW9ucy5sZW5ndGggLSAxKTtcclxuICAgIHJldHVybiBgJHtzdGFydH0g4oCTICR7ZW5kfSBvZiAke3RoaXMudG90YWxFbGVtZW50c31gO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGhhc1ByZXZpb3VzUGFnZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnBhZ2VJbmRleCA+IDA7XHJcbiAgfVxyXG5cclxuICBnZXQgaGFzTmV4dFBhZ2UoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gKHRoaXMucGFnZUluZGV4ICsgMSkgKiB0aGlzLnBhZ2VTaXplIDwgdGhpcy50b3RhbEVsZW1lbnRzO1xyXG4gIH1cclxuXHJcbiAgYWRkcmVzc0xpbmUobG9jYXRpb246IExvY2F0aW9uKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBbbG9jYXRpb24uYWRkcmVzcy5hZGRyZXNzMSwgbG9jYXRpb24uYWRkcmVzcy5hZGRyZXNzMiwgbG9jYXRpb24uYWRkcmVzcy5jaXR5XVxyXG4gICAgICAuZmlsdGVyKEJvb2xlYW4pXHJcbiAgICAgIC5qb2luKCcgLSAnKTtcclxuICB9XHJcblxyXG4gIGNvdW50cnlMYWJlbChsb2NhdGlvbjogTG9jYXRpb24pOiBzdHJpbmcge1xyXG4gICAgY29uc3QgeyBjb3VudHJ5TmFtZSwgY291bnRyeSB9ID0gbG9jYXRpb24uYWRkcmVzcztcclxuICAgIGlmIChjb3VudHJ5TmFtZSkge1xyXG4gICAgICByZXR1cm4gY291bnRyeU5hbWU7XHJcbiAgICB9XHJcbiAgICBpZiAoIWNvdW50cnkpIHtcclxuICAgICAgcmV0dXJuICcnO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuY291bnRyeURpc3BsYXlOYW1lcz8ub2YoY291bnRyeSkgfHwgY291bnRyeTtcclxuICB9XHJcblxyXG4gIC8vIFNhbWUgaWNvbiBzZXQgYXMgdXNlcnMtbGlzdCdzIFwiUHJvdmlzaW9uaW5nIFR5cGVcIiBjb2x1bW4gKGFzc2V0cy9pY29ucy93ZWJleC5zdmcsXHJcbiAgLy8gbG9jYWxfMjQuc3ZnLCBkaV9jbG91ZF8yNC5zdmcpLlxyXG4gIHByaXZhdGUgcmVhZG9ubHkgcHJvdmlzaW9uaW5nVHlwZUljb25zOiBSZWNvcmQ8c3RyaW5nLCB7IHNyYzogc3RyaW5nOyB0b29sdGlwOiBzdHJpbmcgfT4gPSB7XHJcbiAgICBXRUJFWDogeyBzcmM6ICdhc3NldHMvaWNvbnMvd2ViZXguc3ZnJywgdG9vbHRpcDogJ1dlYmV4IENhbGxpbmcnIH0sXHJcbiAgICBVQ006IHsgc3JjOiAnYXNzZXRzL2ljb25zL2xvY2FsXzI0LnN2ZycsIHRvb2x0aXA6ICdVQ00nIH0sXHJcbiAgICBESTogeyBzcmM6ICdhc3NldHMvaWNvbnMvZGlfY2xvdWRfMjQuc3ZnJywgdG9vbHRpcDogJ1dlYmV4IENhbGxpbmcgREknIH0sXHJcbiAgfTtcclxuXHJcbiAgcHJvdmlzaW9uaW5nVHlwZUljb24obG9jYXRpb246IExvY2F0aW9uKTogeyBzcmM6IHN0cmluZzsgdG9vbHRpcDogc3RyaW5nIH0gfCBudWxsIHtcclxuICAgIHJldHVybiB0aGlzLnByb3Zpc2lvbmluZ1R5cGVJY29uc1tsb2NhdGlvbi5wcm92aXNpb25pbmdUeXBlXSB8fCBudWxsO1xyXG4gIH1cclxuXHJcbiAgb25TZWFyY2hJbnB1dENoYW5nZShldmVudDogRXZlbnQpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VhcmNoVGVybSA9IChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWU7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVOYW1lU29ydCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc29ydERpcmVjdGlvbiA9IHRoaXMuc29ydERpcmVjdGlvbiA9PT0gJ2FzYycgPyAnZGVzYycgOiAnYXNjJztcclxuICB9XHJcblxyXG4gIGRpc21pc3NCYW5uZXIoKTogdm9pZCB7XHJcbiAgICB0aGlzLmlzQmFubmVyRGlzbWlzc2VkID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHRvZ2dsZUZpbHRlclBhbmVsKCk6IHZvaWQge1xyXG4gICAgdGhpcy5pc0ZpbHRlclBhbmVsT3BlbiA9ICF0aGlzLmlzRmlsdGVyUGFuZWxPcGVuO1xyXG4gIH1cclxuXHJcbiAgY2xvc2VGaWx0ZXJQYW5lbCgpOiB2b2lkIHtcclxuICAgIHRoaXMuaXNGaWx0ZXJQYW5lbE9wZW4gPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIGNsZWFyRmlsdGVycygpOiB2b2lkIHtcclxuICAgIHRoaXMuZmlsdGVycyA9IHsgY291bnRyeTogJycsIHBlbmRpbmdBY3Rpb25zOiAnJyB9O1xyXG4gIH1cclxuXHJcbiAgb25QYWdlU2l6ZUNoYW5nZShldmVudDogRXZlbnQpOiB2b2lkIHtcclxuICAgIHRoaXMucGFnZVNpemUgPSBOdW1iZXIoKGV2ZW50LnRhcmdldCBhcyBIVE1MU2VsZWN0RWxlbWVudCkudmFsdWUpO1xyXG4gICAgdGhpcy5wYWdlSW5kZXggPSAwO1xyXG4gICAgdGhpcy5sb2FkUGFnZSgpO1xyXG4gIH1cclxuXHJcbiAgZ29Ub1ByZXZpb3VzUGFnZSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmhhc1ByZXZpb3VzUGFnZSkge1xyXG4gICAgICB0aGlzLnBhZ2VJbmRleC0tO1xyXG4gICAgICB0aGlzLmxvYWRQYWdlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnb1RvTmV4dFBhZ2UoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5oYXNOZXh0UGFnZSkge1xyXG4gICAgICB0aGlzLnBhZ2VJbmRleCsrO1xyXG4gICAgICB0aGlzLmxvYWRQYWdlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbk9wZW5Mb2NhdGlvbihsb2NhdGlvbjogTG9jYXRpb24pOiB2b2lkIHtcclxuICAgIHRoaXMub3BlbkxvY2F0aW9uLmVtaXQobG9jYXRpb24uaWQpO1xyXG4gIH1cclxuXHJcbiAgb25FZGl0TG9jYXRpb24obG9jYXRpb246IExvY2F0aW9uKTogdm9pZCB7XHJcbiAgICB0aGlzLmVkaXRMb2NhdGlvbi5lbWl0KGxvY2F0aW9uLmlkKTtcclxuICB9XHJcblxyXG4gIG9uUmVtb3ZlTG9jYXRpb24obG9jYXRpb246IExvY2F0aW9uKTogdm9pZCB7XHJcbiAgICB0aGlzLnJlbW92ZUxvY2F0aW9uLmVtaXQobG9jYXRpb24uaWQpO1xyXG4gIH1cclxuXHJcbiAgY2FuTWlncmF0ZVNpdGUobG9jYXRpb246IExvY2F0aW9uKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gbG9jYXRpb24ubWlncmF0aW9uU3RhdHVzICE9PSAnSU5fUFJPR1JFU1MnO1xyXG4gIH1cclxuXHJcbiAgb25NaWdyYXRlU2l0ZShsb2NhdGlvbjogTG9jYXRpb24pOiB2b2lkIHtcclxuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oTG9jYXRpb25Db25maXJtRGlhbG9nQ29tcG9uZW50LCB7XHJcbiAgICAgIHBhbmVsQ2xhc3M6ICd0ay1sb2NhdGlvbi1jb25maXJtLWRpYWxvZy1wYW5lbCcsXHJcbiAgICAgIGJhY2tkcm9wQ2xhc3M6ICd0ay1sb2NhdGlvbi1jb25maXJtLWRpYWxvZy1iYWNrZHJvcCcsXHJcbiAgICAgIGRhdGE6IHtcclxuICAgICAgICB0aXRsZTogYE1pZ3JhdGUgJHtsb2NhdGlvbi5uYW1lfT9gLFxyXG4gICAgICAgIG1lc3NhZ2U6IGA8cD5BcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gbWlncmF0ZSB0aGlzIGxvY2F0aW9uPzwvcD5gLFxyXG4gICAgICAgIGNvbmZpcm1CdXR0b25UZXh0OiAnWWVzLCBtaWdyYXRlJyxcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG5cclxuICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZShjb25maXJtZWQgPT4ge1xyXG4gICAgICBpZiAoY29uZmlybWVkKSB7XHJcbiAgICAgICAgdGhpcy5taWdyYXRlU2l0ZShsb2NhdGlvbik7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBtaWdyYXRlU2l0ZShsb2NhdGlvbjogTG9jYXRpb24pOiB2b2lkIHtcclxuICAgIGxvY2F0aW9uLm1pZ3JhdGlvblN0YXR1cyA9ICdJTl9QUk9HUkVTUyc7XHJcbiAgICB0aGlzLmxvY2F0aW9uc1NlcnZpY2UubWlncmF0ZVNpdGUobG9jYXRpb24uaWQpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChiYXRjaElkOiBudW1iZXIpID0+IHtcclxuICAgICAgICBpZiAoYmF0Y2hJZCkge1xyXG4gICAgICAgICAgdGhpcy5wb2xsTWlncmF0aW9uU3RhdHVzKGxvY2F0aW9uLCBiYXRjaElkKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgbG9jYXRpb24ubWlncmF0aW9uU3RhdHVzID0gJ0NPTVBMRVRFRCc7XHJcbiAgICAgICAgICBsb2NhdGlvbi5wcm92aXNpb25pbmdUeXBlID0gJ1dFQkVYJztcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoKSA9PiB7XHJcbiAgICAgICAgbG9jYXRpb24ubWlncmF0aW9uU3RhdHVzID0gJ0ZBSUxFRCc7XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcG9sbE1pZ3JhdGlvblN0YXR1cyhsb2NhdGlvbjogTG9jYXRpb24sIGJhdGNoSWQ6IG51bWJlcik6IHZvaWQge1xyXG4gICAgdGhpcy5jbGVhck1pZ3JhdGlvbkludGVydmFsKGxvY2F0aW9uLmlkKTtcclxuXHJcbiAgICBjb25zdCBwb2xsID0gKCk6IHZvaWQgPT4ge1xyXG4gICAgICB0aGlzLmxvY2F0aW9uc1NlcnZpY2UuZ2V0TWlncmF0aW9uQmF0Y2hTdGF0dXNlcyh0aGlzLmN1c3RvbWVySWQsIFtiYXRjaElkXSkuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAoc3RhdHVzZXM6IFNpdGVCYXRjaFN0YXR1c1tdKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBzdGF0dXMgPSBzdGF0dXNlcy5maW5kKGl0ZW0gPT4gaXRlbS5pZCA9PT0gYmF0Y2hJZCk7XHJcbiAgICAgICAgICBpZiAoIXN0YXR1cyB8fCBzdGF0dXMuc3RhdHVzID09PSAnSW4gUHJvZ3Jlc3MnKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuY2xlYXJNaWdyYXRpb25JbnRlcnZhbChsb2NhdGlvbi5pZCk7XHJcbiAgICAgICAgICBsb2NhdGlvbi5taWdyYXRpb25TdGF0dXMgPSBzdGF0dXMuc3RhdHVzID09PSAnQ29tcGxldGVkJyA/ICdDT01QTEVURUQnIDogJ0ZBSUxFRCc7XHJcbiAgICAgICAgICBpZiAobG9jYXRpb24ubWlncmF0aW9uU3RhdHVzID09PSAnQ09NUExFVEVEJykge1xyXG4gICAgICAgICAgICBsb2NhdGlvbi5wcm92aXNpb25pbmdUeXBlID0gJ1dFQkVYJztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmNsZWFyTWlncmF0aW9uSW50ZXJ2YWwobG9jYXRpb24uaWQpO1xyXG4gICAgICAgICAgbG9jYXRpb24ubWlncmF0aW9uU3RhdHVzID0gJ0ZBSUxFRCc7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgICB9O1xyXG5cclxuICAgIHBvbGwoKTtcclxuICAgIHRoaXMubWlncmF0aW9uSW50ZXJ2YWxzLnNldChsb2NhdGlvbi5pZCwgc2V0SW50ZXJ2YWwocG9sbCwgTUlHUkFUSU9OX1BPTExfSU5URVJWQUxfTVMpKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2xlYXJNaWdyYXRpb25JbnRlcnZhbChsb2NhdGlvbklkOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGNvbnN0IGludGVydmFsID0gdGhpcy5taWdyYXRpb25JbnRlcnZhbHMuZ2V0KGxvY2F0aW9uSWQpO1xyXG4gICAgaWYgKGludGVydmFsKSB7XHJcbiAgICAgIGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWwpO1xyXG4gICAgICB0aGlzLm1pZ3JhdGlvbkludGVydmFscy5kZWxldGUobG9jYXRpb25JZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkFkZExvY2F0aW9uKCk6IHZvaWQge1xyXG4gICAgdGhpcy5hZGRMb2NhdGlvbi5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICBvbkltcG9ydExvY2F0aW9ucygpOiB2b2lkIHtcclxuICAgIHRoaXMuaW1wb3J0TG9jYXRpb25zLmVtaXQoKTtcclxuICB9XHJcblxyXG4gIGV4cG9ydExvY2F0aW9ucygpOiB2b2lkIHtcclxuICAgIGNvbnN0IHJvd3MgPSB0aGlzLmZpbHRlcmVkTG9jYXRpb25zLm1hcChsb2NhdGlvbiA9PiBbXHJcbiAgICAgIGxvY2F0aW9uLm5hbWUsXHJcbiAgICAgIHRoaXMuYWRkcmVzc0xpbmUobG9jYXRpb24pLFxyXG4gICAgICB0aGlzLmNvdW50cnlMYWJlbChsb2NhdGlvbiksXHJcbiAgICAgIHRoaXMucHJvdmlzaW9uaW5nVHlwZUljb24obG9jYXRpb24pPy50b29sdGlwIHx8ICcnLFxyXG4gICAgXSk7XHJcbiAgICBjb25zdCBjc3ZMaW5lcyA9IFtcclxuICAgICAgWydMb2NhdGlvbiBOYW1lJywgJ0FkZHJlc3MnLCAnQ291bnRyeS9SZWdpb24nLCAnUHJvdmlzaW9uaW5nIFR5cGUnXSxcclxuICAgICAgLi4ucm93cyxcclxuICAgIF0ubWFwKHJvdyA9PiByb3cubWFwKGNlbGwgPT4gYFwiJHtTdHJpbmcoY2VsbCkucmVwbGFjZSgvXCIvZywgJ1wiXCInKX1cImApLmpvaW4oJywnKSk7XHJcblxyXG4gICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtjc3ZMaW5lcy5qb2luKCdcXG4nKV0sIHsgdHlwZTogJ3RleHQvY3N2O2NoYXJzZXQ9dXRmLTg7JyB9KTtcclxuICAgIGNvbnN0IHVybCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XHJcbiAgICBjb25zdCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xyXG4gICAgbGluay5ocmVmID0gdXJsO1xyXG4gICAgbGluay5kb3dubG9hZCA9ICdsb2NhdGlvbnMuY3N2JztcclxuICAgIGxpbmsuY2xpY2soKTtcclxuICAgIFVSTC5yZXZva2VPYmplY3RVUkwodXJsKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInRrLWxvY2F0aW9uc1wiPlxyXG4gIDxhcHAtbG9hZGVyICpuZ0lmPVwiaXNMb2FkaW5nXCI+PC9hcHAtbG9hZGVyPlxyXG5cclxuICA8ZGl2IGNsYXNzPVwidGstbG9jYXRpb25zX192aWV3LXRvZ2dsZVwiPlxyXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJ0ay1sb2NhdGlvbnNfX3ZpZXctYnV0dG9uIHRrLWxvY2F0aW9uc19fdmlldy1idXR0b24tLWFjdGl2ZVwiPlxyXG4gICAgICA8bWF0LWljb24gY2xhc3M9XCJ0ay1sb2NhdGlvbnNfX3ZpZXctaWNvblwiPm1lbnU8L21hdC1pY29uPlxyXG4gICAgICBMaXN0XHJcbiAgICA8L2J1dHRvbj5cclxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwidGstbG9jYXRpb25zX192aWV3LWJ1dHRvblwiIGRpc2FibGVkIHRpdGxlPVwiTWFwIHZpZXcgY29taW5nIHNvb25cIj5cclxuICAgICAgPG1hdC1pY29uIGNsYXNzPVwidGstbG9jYXRpb25zX192aWV3LWljb25cIj5wbGFjZTwvbWF0LWljb24+XHJcbiAgICAgIE1hcFxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJ0ay1sb2NhdGlvbnNfX2Jhbm5lclwiICpuZ0lmPVwic2hvd1BlbmRpbmdCYW5uZXJcIj5cclxuICAgIDxtYXQtaWNvbiBjbGFzcz1cInRrLWxvY2F0aW9uc19fYmFubmVyLWljb25cIj53YXJuaW5nPC9tYXQtaWNvbj5cclxuICAgIDxzcGFuIGNsYXNzPVwidGstbG9jYXRpb25zX19iYW5uZXItdGV4dFwiPlxyXG4gICAgICBWaWV3IGxvY2F0aW9uKHMpIHdpdGggcGVuZGluZyBhY3Rpb24gaXRlbXMgdG8gcmVzdW1lIHlvdXIgY2FsbGluZyBzZXJ2aWNlIGluIHt7IHBlbmRpbmdMb2NhdGlvbnMubGVuZ3RoIH19IG9yIG1vcmUgbG9jYXRpb25zLlxyXG4gICAgPC9zcGFuPlxyXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJ0ay1sb2NhdGlvbnNfX2Jhbm5lci1jbG9zZVwiIGFyaWEtbGFiZWw9XCJEaXNtaXNzXCIgKGNsaWNrKT1cImRpc21pc3NCYW5uZXIoKVwiPlxyXG4gICAgICA8bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPlxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJ0ay1sb2NhdGlvbnNfX3Rvb2xiYXJcIj5cclxuICAgIDxkaXYgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiBmaXQtY29udGVudDsgbWluLXdpZHRoOiAyMDBweFwiPlxyXG4gICAgICA8aW5wdXRcclxuICAgICAgICBbdmFsdWVdPVwic2VhcmNoVGVybVwiXHJcbiAgICAgICAgY2xhc3M9XCJibHVlLWlucHV0XCJcclxuICAgICAgICAoaW5wdXQpPVwib25TZWFyY2hJbnB1dENoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2ggYnkgbmFtZSwgY2l0eSwgc3RhdGUsIGNvdW50cnlcIlxyXG4gICAgICAgIHN0eWxlPVwiXHJcbiAgICAgICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgICAgIGhlaWdodDogMzRweDtcclxuICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDAuNXJlbTtcclxuICAgICAgICAgIGZvbnQtc2l6ZTogMTZweDtcclxuICAgICAgICAgIHBhZGRpbmc6IDZweCAxMnB4IDZweCA0NHB4O1xyXG4gICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgIzAwMDAwMDgwO1xyXG4gICAgICAgICAgYmFja2dyb3VuZDogI2ZmZjtcclxuICAgICAgICAgIGNvbG9yOiAjMjIyO1xyXG4gICAgICAgICAgb3V0bGluZTogbm9uZTtcclxuICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcbiAgICAgICAgICBtaW4td2lkdGg6IDI4MHB4O1xyXG4gICAgICAgIFwiXHJcbiAgICAgIC8+XHJcbiAgICAgIDxzcGFuXHJcbiAgICAgICAgc3R5bGU9XCJcclxuICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgICAgIGxlZnQ6IDEycHg7XHJcbiAgICAgICAgICB0b3A6IDUwJTtcclxuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcclxuICAgICAgICAgIGNvbG9yOiAjNzU3NTc1O1xyXG4gICAgICAgICAgZm9udC1zaXplOiAxOHB4O1xyXG4gICAgICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcclxuICAgICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xyXG4gICAgICAgIFwiXHJcbiAgICAgID5cclxuICAgICAgICA8aVxyXG4gICAgICAgICAgY2xhc3M9XCJtYXRlcmlhbC1pY29uc1wiXHJcbiAgICAgICAgICBzdHlsZT1cImZvbnQtc2l6ZTogMThweDsgZm9udC13ZWlnaHQ6IG5vcm1hbFwiXHJcbiAgICAgICAgICA+c2VhcmNoPC9pXHJcbiAgICAgICAgPlxyXG4gICAgICA8L3NwYW4+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cInRrLWxvY2F0aW9uc19fZmlsdGVyLWJ1dHRvblwiIChjbGljayk9XCJ0b2dnbGVGaWx0ZXJQYW5lbCgpXCI+XHJcbiAgICAgIDxpbWcgY2xhc3M9XCJ0ay1sb2NhdGlvbnNfX2ZpbHRlci1pY29uXCIgc3JjPVwiYXNzZXRzL2ljb25zL2ZpbHRlci1yZWd1bGFyLnN2Z1wiIGFsdD1cImZpbHRlcl9saXN0XCIgdGl0bGU9XCJmaWx0ZXJfbGlzdFwiPlxyXG4gICAgICBGaWx0ZXJcclxuICAgIDwvYnV0dG9uPlxyXG5cclxuICAgIDxzcGFuIGNsYXNzPVwidGstbG9jYXRpb25zX19jb3VudFwiPnt7IGZpbHRlcmVkTG9jYXRpb25zLmxlbmd0aCB9fSBsb2NhdGlvbnM8L3NwYW4+XHJcblxyXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJ0ay1sb2NhdGlvbnNfX2Rvd25sb2FkLWJ1dHRvblwiIGFyaWEtbGFiZWw9XCJEb3dubG9hZCBsb2NhdGlvbnNcIiB0aXRsZT1cIkRvd25sb2FkIGxvY2F0aW9uc1wiIChjbGljayk9XCJleHBvcnRMb2NhdGlvbnMoKVwiPlxyXG4gICAgICA8bWF0LWljb24+ZmlsZV9kb3dubG9hZDwvbWF0LWljb24+XHJcbiAgICA8L2J1dHRvbj5cclxuXHJcbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cInRrLWxvY2F0aW9uc19fbWFuYWdlLWJ1dHRvblwiIFttYXRNZW51VHJpZ2dlckZvcl09XCJtYW5hZ2VNZW51XCI+XHJcbiAgICAgIE1hbmFnZSBsb2NhdGlvbnNcclxuICAgICAgPG1hdC1pY29uIGNsYXNzPVwidGstbG9jYXRpb25zX19tYW5hZ2UtY2hldnJvblwiPmV4cGFuZF9tb3JlPC9tYXQtaWNvbj5cclxuICAgIDwvYnV0dG9uPlxyXG4gICAgPG1hdC1tZW51ICNtYW5hZ2VNZW51PVwibWF0TWVudVwiIHhQb3NpdGlvbj1cImJlZm9yZVwiPlxyXG4gICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJvbkFkZExvY2F0aW9uKClcIj5BZGQgbG9jYXRpb248L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwib25JbXBvcnRMb2NhdGlvbnMoKVwiPkltcG9ydCBsb2NhdGlvbnM8L2J1dHRvbj5cclxuICAgIDwvbWF0LW1lbnU+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDx0YWJsZSBjbGFzcz1cInRrLWxvY2F0aW9uc19fdGFibGVcIj5cclxuICAgIDx0aGVhZD5cclxuICAgICAgPHRyPlxyXG4gICAgICAgIDx0aCAoY2xpY2spPVwidG9nZ2xlTmFtZVNvcnQoKVwiPlxyXG4gICAgICAgICAgTG9jYXRpb24gTmFtZVxyXG4gICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwidGstbG9jYXRpb25zX19zb3J0LWljb25cIj57eyBzb3J0RGlyZWN0aW9uID09PSAnYXNjJyA/ICdhcnJvd191cHdhcmQnIDogJ2Fycm93X2Rvd253YXJkJyB9fTwvbWF0LWljb24+XHJcbiAgICAgICAgPC90aD5cclxuICAgICAgICA8dGg+QWRkcmVzczwvdGg+XHJcbiAgICAgICAgPHRoPkNvdW50cnkvUmVnaW9uPC90aD5cclxuICAgICAgICA8dGg+UHJvdmlzaW9uaW5nIFR5cGU8L3RoPlxyXG4gICAgICAgIDx0aCBjbGFzcz1cInRrLWxvY2F0aW9uc19fYWN0aW9ucy1jb2xcIj48L3RoPlxyXG4gICAgICA8L3RyPlxyXG4gICAgPC90aGVhZD5cclxuICAgIDx0Ym9keT5cclxuICAgICAgPHRyICpuZ0Zvcj1cImxldCBsb2NhdGlvbiBvZiBmaWx0ZXJlZExvY2F0aW9uc1wiIChjbGljayk9XCJvbk9wZW5Mb2NhdGlvbihsb2NhdGlvbilcIj5cclxuICAgICAgICA8dGQgY2xhc3M9XCJ0ay1sb2NhdGlvbnNfX25hbWUtY2VsbFwiPlxyXG4gICAgICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiIGNsYXNzPVwidGstbG9jYXRpb25zX19uYW1lLWxpbmtcIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyBvbk9wZW5Mb2NhdGlvbihsb2NhdGlvbilcIj57eyBsb2NhdGlvbi5uYW1lIH19PC9hPlxyXG4gICAgICAgIDwvdGQ+XHJcbiAgICAgICAgPHRkPnt7IGFkZHJlc3NMaW5lKGxvY2F0aW9uKSB8fCAn4oCUJyB9fTwvdGQ+XHJcbiAgICAgICAgPHRkPnt7IGNvdW50cnlMYWJlbChsb2NhdGlvbikgfHwgJ+KAlCcgfX08L3RkPlxyXG4gICAgICAgIDx0ZD5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGstbG9jYXRpb25zX19pY29uLXdyYXBwZXJcIiAqbmdJZj1cInByb3Zpc2lvbmluZ1R5cGVJY29uKGxvY2F0aW9uKSBhcyBwdDsgZWxzZSBub1Byb3Zpc2lvbmluZ1R5cGVcIj5cclxuICAgICAgICAgICAgPGltZyBbc3JjXT1cInB0LnNyY1wiIFttYXRUb29sdGlwXT1cInB0LnRvb2x0aXBcIiBtYXRUb29sdGlwUG9zaXRpb249XCJyaWdodFwiIHdpZHRoPVwiMjBcIiBhbHQ9XCJcIj5cclxuICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9Qcm92aXNpb25pbmdUeXBlPuKAlDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC90ZD5cclxuICAgICAgICA8dGQgY2xhc3M9XCJ0ay1sb2NhdGlvbnNfX2FjdGlvbnMtY29sXCI+XHJcbiAgICAgICAgICA8bWF0LXByb2dyZXNzLXNwaW5uZXJcclxuICAgICAgICAgICAgKm5nSWY9XCJsb2NhdGlvbi5taWdyYXRpb25TdGF0dXMgPT09ICdJTl9QUk9HUkVTUydcIlxyXG4gICAgICAgICAgICBjbGFzcz1cInRrLWxvY2F0aW9uc19fcm93LWFjdGlvbi1zcGlubmVyXCJcclxuICAgICAgICAgICAgW2RpYW1ldGVyXT1cIjIwXCJcclxuICAgICAgICAgICAgc3Ryb2tlV2lkdGg9XCIyXCJcclxuICAgICAgICAgICAgbW9kZT1cImluZGV0ZXJtaW5hdGVcIlxyXG4gICAgICAgICAgICBtYXRUb29sdGlwPVwiTWlncmF0aW5nIHNpdGXigKZcIj5cclxuICAgICAgICAgIDwvbWF0LXByb2dyZXNzLXNwaW5uZXI+XHJcbiAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICpuZ0lmPVwibG9jYXRpb24ubWlncmF0aW9uU3RhdHVzICE9PSAnSU5fUFJPR1JFU1MnXCJcclxuICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXHJcbiAgICAgICAgICAgIGNsYXNzPVwidGstbG9jYXRpb25zX19yb3ctYWN0aW9uLWJ1dHRvblwiXHJcbiAgICAgICAgICAgIFttYXRNZW51VHJpZ2dlckZvcl09XCJyb3dNZW51XCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXHJcbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJPcGVuIGxvY2F0aW9uIGFjdGlvbnNcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uPm1vcmVfdmVydDwvbWF0LWljb24+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDxtYXQtbWVudSAjcm93TWVudT1cIm1hdE1lbnVcIiB5UG9zaXRpb249XCJiZWxvd1wiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJvbk9wZW5Mb2NhdGlvbihsb2NhdGlvbilcIj5WaWV3IGRldGFpbHM8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwib25FZGl0TG9jYXRpb24obG9jYXRpb24pXCI+RWRpdCBsb2NhdGlvbjwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJjYW5NaWdyYXRlU2l0ZShsb2NhdGlvbilcIlxyXG4gICAgICAgICAgICAgIG1hdC1tZW51LWl0ZW1cclxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwib25NaWdyYXRlU2l0ZShsb2NhdGlvbilcIj5NaWdyYXRlIHNpdGU8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwib25SZW1vdmVMb2NhdGlvbihsb2NhdGlvbilcIj5SZW1vdmUgbG9jYXRpb248L2J1dHRvbj5cclxuICAgICAgICAgIDwvbWF0LW1lbnU+XHJcbiAgICAgICAgPC90ZD5cclxuICAgICAgPC90cj5cclxuICAgICAgPHRyICpuZ0lmPVwiIWZpbHRlcmVkTG9jYXRpb25zLmxlbmd0aFwiPlxyXG4gICAgICAgIDx0ZCBjb2xzcGFuPVwiNVwiIGNsYXNzPVwidGstbG9jYXRpb25zX19lbXB0eVwiPk5vIGxvY2F0aW9ucyBtYXRjaCB5b3VyIHNlYXJjaC48L3RkPlxyXG4gICAgICA8L3RyPlxyXG4gICAgPC90Ym9keT5cclxuICA8L3RhYmxlPlxyXG5cclxuICA8ZGl2IGNsYXNzPVwidGstbG9jYXRpb25zX19mb290ZXJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJ0ay1sb2NhdGlvbnNfX3Jvd3MtcGVyLXBhZ2VcIj5cclxuICAgICAgPGxhYmVsIGZvcj1cInRrLWxvY2F0aW9ucy1wYWdlLXNpemVcIj5Sb3dzIHBlciBwYWdlOjwvbGFiZWw+XHJcbiAgICAgIDxzZWxlY3QgaWQ9XCJ0ay1sb2NhdGlvbnMtcGFnZS1zaXplXCIgY2xhc3M9XCJ0ay1sb2NhdGlvbnNfX3Jvd3MtcGVyLXBhZ2Utc2VsZWN0XCIgW25nTW9kZWxdPVwicGFnZVNpemVcIiAoY2hhbmdlKT1cIm9uUGFnZVNpemVDaGFuZ2UoJGV2ZW50KVwiPlxyXG4gICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IHNpemUgb2YgcGFnZVNpemVPcHRpb25zXCIgW3ZhbHVlXT1cInNpemVcIj57eyBzaXplIH19PC9vcHRpb24+XHJcbiAgICAgIDwvc2VsZWN0PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8c3BhbiBjbGFzcz1cInRrLWxvY2F0aW9uc19fZm9vdGVyLXRleHRcIj57eyBwYWdlUmFuZ2VMYWJlbCB9fTwvc3Bhbj5cclxuICAgIDxkaXYgY2xhc3M9XCJ0ay1sb2NhdGlvbnNfX3BhZ2luYXRpb25cIj5cclxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJ0ay1sb2NhdGlvbnNfX3BhZ2luYXRpb24tYnV0dG9uXCIgW2Rpc2FibGVkXT1cIiFoYXNQcmV2aW91c1BhZ2VcIiAoY2xpY2spPVwiZ29Ub1ByZXZpb3VzUGFnZSgpXCIgYXJpYS1sYWJlbD1cIlByZXZpb3VzIHBhZ2VcIj5cclxuICAgICAgICA8bWF0LWljb24+Y2hldnJvbl9sZWZ0PC9tYXQtaWNvbj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwidGstbG9jYXRpb25zX19wYWdpbmF0aW9uLWJ1dHRvblwiIFtkaXNhYmxlZF09XCIhaGFzTmV4dFBhZ2VcIiAoY2xpY2spPVwiZ29Ub05leHRQYWdlKClcIiBhcmlhLWxhYmVsPVwiTmV4dCBwYWdlXCI+XHJcbiAgICAgICAgPG1hdC1pY29uPmNoZXZyb25fcmlnaHQ8L21hdC1pY29uPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2XHJcbiAgICBjbGFzcz1cInRrLWxvY2F0aW9uc19fZmlsdGVyLWJhY2tkcm9wXCJcclxuICAgICpuZ0lmPVwiaXNGaWx0ZXJQYW5lbE9wZW5cIlxyXG4gICAgKGNsaWNrKT1cImNsb3NlRmlsdGVyUGFuZWwoKVwiPlxyXG4gIDwvZGl2PlxyXG5cclxuICA8YXNpZGUgY2xhc3M9XCJ0ay1sb2NhdGlvbnNfX2ZpbHRlci1wYW5lbFwiIFtjbGFzcy50ay1sb2NhdGlvbnNfX2ZpbHRlci1wYW5lbC0tb3Blbl09XCJpc0ZpbHRlclBhbmVsT3BlblwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInRrLWxvY2F0aW9uc19fZmlsdGVyLXBhbmVsLWhlYWRlclwiPlxyXG4gICAgICA8aDMgY2xhc3M9XCJ0ay1sb2NhdGlvbnNfX2ZpbHRlci1wYW5lbC10aXRsZVwiPkZpbHRlciBsb2NhdGlvbnM8L2gzPlxyXG4gICAgICA8YnV0dG9uXHJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgY2xhc3M9XCJ0ay1sb2NhdGlvbnNfX2ZpbHRlci1wYW5lbC1jbG9zZVwiXHJcbiAgICAgICAgYXJpYS1sYWJlbD1cIkNsb3NlIGZpbHRlciBwYW5lbFwiXHJcbiAgICAgICAgKGNsaWNrKT1cImNsb3NlRmlsdGVyUGFuZWwoKVwiPlxyXG4gICAgICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cInRrLWxvY2F0aW9uc19fZmlsdGVyLXBhbmVsLWJvZHlcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInRrLWxvY2F0aW9uc19fZmlsdGVyLWZpZWxkXCI+XHJcbiAgICAgICAgPGxhYmVsIGNsYXNzPVwidGstbG9jYXRpb25zX19maWx0ZXItbGFiZWxcIiBmb3I9XCJ0ay1sb2NhdGlvbnMtZmlsdGVyLWNvdW50cnlcIj5Db3VudHJ5L1JlZ2lvbjwvbGFiZWw+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRrLWxvY2F0aW9uc19fZmlsdGVyLXNlbGVjdC13cmFwXCI+XHJcbiAgICAgICAgICA8c2VsZWN0IGlkPVwidGstbG9jYXRpb25zLWZpbHRlci1jb3VudHJ5XCIgY2xhc3M9XCJ0ay1sb2NhdGlvbnNfX2ZpbHRlci1zZWxlY3RcIiBbKG5nTW9kZWwpXT1cImZpbHRlcnMuY291bnRyeVwiPlxyXG4gICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiXCI+QWxsIGNvdW50cmllczwvb3B0aW9uPlxyXG4gICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBjb3VudHJ5IG9mIGNvdW50cmllc1wiIFt2YWx1ZV09XCJjb3VudHJ5XCI+e3sgY291bnRyeSB9fTwvb3B0aW9uPlxyXG4gICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJ0ay1sb2NhdGlvbnNfX2ZpbHRlci1zZWxlY3QtaWNvblwiPmV4cGFuZF9tb3JlPC9tYXQtaWNvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwidGstbG9jYXRpb25zX19maWx0ZXItZmllbGRcIj5cclxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJ0ay1sb2NhdGlvbnNfX2ZpbHRlci1sYWJlbFwiIGZvcj1cInRrLWxvY2F0aW9ucy1maWx0ZXItcGVuZGluZ1wiPlBlbmRpbmcgYWN0aW9uIGl0ZW1zPC9sYWJlbD5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidGstbG9jYXRpb25zX19maWx0ZXItc2VsZWN0LXdyYXBcIj5cclxuICAgICAgICAgIDxzZWxlY3QgaWQ9XCJ0ay1sb2NhdGlvbnMtZmlsdGVyLXBlbmRpbmdcIiBjbGFzcz1cInRrLWxvY2F0aW9uc19fZmlsdGVyLXNlbGVjdFwiIFsobmdNb2RlbCldPVwiZmlsdGVycy5wZW5kaW5nQWN0aW9uc1wiPlxyXG4gICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiXCI+QWxsPC9vcHRpb24+XHJcbiAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJ0cnVlXCI+WWVzPC9vcHRpb24+XHJcbiAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJmYWxzZVwiPk5vPC9vcHRpb24+XHJcbiAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cInRrLWxvY2F0aW9uc19fZmlsdGVyLXNlbGVjdC1pY29uXCI+ZXhwYW5kX21vcmU8L21hdC1pY29uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJ0ay1sb2NhdGlvbnNfX2ZpbHRlci1wYW5lbC1mb290ZXJcIj5cclxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJ0ay1sb2NhdGlvbnNfX2ZpbHRlci1jbGVhclwiIChjbGljayk9XCJjbGVhckZpbHRlcnMoKVwiPkNsZWFyIGFsbDwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cInRrLWxvY2F0aW9uc19fZmlsdGVyLWRvbmVcIiAoY2xpY2spPVwiY2xvc2VGaWx0ZXJQYW5lbCgpXCI+RG9uZTwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9hc2lkZT5cclxuPC9kaXY+XHJcbiJdfQ==
@@ -12,7 +12,10 @@ export const API = {
12
12
  },
13
13
  DETAILS: {
14
14
  // CUCM detail endpoints will be provided later.
15
- CUCM: {},
15
+ CUCM: {
16
+ WORKSPACE: '/api/provision/:siteId/nonuserdevices/:workspaceId?type=ORPHAN_DEVICE',
17
+ SITE: '/api/sites/:siteId',
18
+ },
16
19
  WEBEX: {
17
20
  WORKSPACE: '/api/webex/provisioning/customers/:customerId/workspaces/:workspaceId',
18
21
  NUMBERS: '/api/webex/provisioning/customers/:customerId/workspaces/:workspaceId/numbers',
@@ -21,4 +24,4 @@ export const API = {
21
24
  },
22
25
  };
23
26
  export const ON_PREM_ID = 2542;
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmNvbnN0YW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1a2kvd2lkZ2V0cy93b3Jrc3BhY2VzL3NyYy9hcHAuY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLEdBQUcsR0FBRztJQUNqQixVQUFVLEVBQUU7UUFDVixPQUFPLEVBQUUsaUNBQWlDO0tBQzNDO0lBQ0QsU0FBUyxFQUFFO1FBQ1QsSUFBSSxFQUFFLCtEQUErRDtRQUNyRSxjQUFjLEVBQUUsZ0VBQWdFO1FBQ2hGLGdDQUFnQyxFQUFFLHdFQUF3RTtRQUMxRywwQkFBMEIsRUFBRSxpR0FBaUc7UUFDN0gsa0JBQWtCLEVBQUUscUdBQXFHO1FBQ3pILFlBQVksRUFBRSxpRkFBaUY7S0FDaEc7SUFDRCxPQUFPLEVBQUU7UUFDUCxnREFBZ0Q7UUFDaEQsSUFBSSxFQUFFLEVBQUU7UUFDUixLQUFLLEVBQUU7WUFDTCxTQUFTLEVBQUUsdUVBQXVFO1lBQ2xGLE9BQU8sRUFBRSwrRUFBK0U7WUFDeEYsUUFBUSxFQUFFLGdGQUFnRjtTQUMzRjtLQUNGO0NBQ0YsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgQVBJID0ge1xyXG4gIFdPUktTUEFDRVM6IHtcclxuICAgIEdFVF9BTEw6ICcvYXBpL3NlYXJjaC9xdWlja25vbnVzZXJkZXZpY2VzJyxcclxuICB9LFxyXG4gIE1JR1JBVElPTjoge1xyXG4gICAgTU9WRTogJy9hcGkvbWlncmF0aW9uL3dlYmV4L3NpbmdsZW1pZ3JhdGlvbi9mZWF0dXJlcy9PUlBIQU5FRF9ERVZJQ0UnLFxyXG4gICAgTUlHUkFUSU9OX0ZPUk06ICcvYXBpL3NlYXJjaC93ZWJleC9jdXN0b21lcnMvOmN1c3RvbWVySWQvbWlncmF0aW9uZm9ybXMvOmZvcm1JZCcsXHJcbiAgICBNSUdSQVRJT05fRk9STV9FTlRJVElFU19NSUdSQVRFRDogJy9hcGkvc2VhcmNoL3dlYmV4L2N1c3RvbWVycy86Y3VzdG9tZXJJZC9taWdyYXRpb25mb3JtZW50aXRpZXMvbWlncmF0ZWQnLFxyXG4gICAgVFJJR0dFUl9GSVJNV0FSRV9NSUdSQVRJT046ICcvYXBpL21pZ3JhdGlvbi86bWlncmF0aW9uVHlwZS9maXJtd2FyZW1pZ3JhdGlvbi9jdXN0b21lci86Y3VzdG9tZXJJZC9taWdyYXRpb24vOm1pZ3JhdGlvbkZvcm1JZCcsXHJcbiAgICBSRU1PVkVfVUNNX0xJQ0VOU0U6ICcvYXBpL21pZ3JhdGlvbi86Y29udHJvbEh1YlR5cGUvcmVtb3ZldWNtbGljZW5zZS9jdXN0b21lci86Y3VzdG9tZXJJZC9taWdyYXRpb25mb3JtLzptaWdyYXRpb25Gb3JtSWQnLFxyXG4gICAgV0VCRVhfUkVWRVJUOiAnL2FwaS93ZWJleC9wcm92aXNpb25pbmcvY3VzdG9tZXJzLzpjdXN0b21lcklkL3BlcnNvbnMvOnBlcnNvbklkL3JldmVydG1pZ3JhdGlvbicsXHJcbiAgfSxcclxuICBERVRBSUxTOiB7XHJcbiAgICAvLyBDVUNNIGRldGFpbCBlbmRwb2ludHMgd2lsbCBiZSBwcm92aWRlZCBsYXRlci5cclxuICAgIENVQ006IHt9LFxyXG4gICAgV0VCRVg6IHtcclxuICAgICAgV09SS1NQQUNFOiAnL2FwaS93ZWJleC9wcm92aXNpb25pbmcvY3VzdG9tZXJzLzpjdXN0b21lcklkL3dvcmtzcGFjZXMvOndvcmtzcGFjZUlkJyxcclxuICAgICAgTlVNQkVSUzogJy9hcGkvd2ViZXgvcHJvdmlzaW9uaW5nL2N1c3RvbWVycy86Y3VzdG9tZXJJZC93b3Jrc3BhY2VzLzp3b3Jrc3BhY2VJZC9udW1iZXJzJyxcclxuICAgICAgQ0FMTEVSSUQ6ICcvYXBpL3dlYmV4L3Byb3Zpc2lvbmluZy9jdXN0b21lcnMvOmN1c3RvbWVySWQvd29ya3NwYWNlcy86d29ya3NwYWNlSWQvY2FsbGVySWQnLFxyXG4gICAgfSxcclxuICB9LFxyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IE9OX1BSRU1fSUQgPSAyNTQyOyJdfQ==
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmNvbnN0YW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1a2kvd2lkZ2V0cy93b3Jrc3BhY2VzL3NyYy9hcHAuY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLEdBQUcsR0FBRztJQUNqQixVQUFVLEVBQUU7UUFDVixPQUFPLEVBQUUsaUNBQWlDO0tBQzNDO0lBQ0QsU0FBUyxFQUFFO1FBQ1QsSUFBSSxFQUFFLCtEQUErRDtRQUNyRSxjQUFjLEVBQUUsZ0VBQWdFO1FBQ2hGLGdDQUFnQyxFQUFFLHdFQUF3RTtRQUMxRywwQkFBMEIsRUFBRSxpR0FBaUc7UUFDN0gsa0JBQWtCLEVBQUUscUdBQXFHO1FBQ3pILFlBQVksRUFBRSxpRkFBaUY7S0FDaEc7SUFDRCxPQUFPLEVBQUU7UUFDUCxnREFBZ0Q7UUFDaEQsSUFBSSxFQUFFO1lBQ0osU0FBUyxFQUFFLHVFQUF1RTtZQUNsRixJQUFJLEVBQUUsb0JBQW9CO1NBQzNCO1FBQ0QsS0FBSyxFQUFFO1lBQ0wsU0FBUyxFQUFFLHVFQUF1RTtZQUNsRixPQUFPLEVBQUUsK0VBQStFO1lBQ3hGLFFBQVEsRUFBRSxnRkFBZ0Y7U0FDM0Y7S0FDRjtDQUNGLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IEFQSSA9IHtcclxuICBXT1JLU1BBQ0VTOiB7XHJcbiAgICBHRVRfQUxMOiAnL2FwaS9zZWFyY2gvcXVpY2tub251c2VyZGV2aWNlcycsXHJcbiAgfSxcclxuICBNSUdSQVRJT046IHtcclxuICAgIE1PVkU6ICcvYXBpL21pZ3JhdGlvbi93ZWJleC9zaW5nbGVtaWdyYXRpb24vZmVhdHVyZXMvT1JQSEFORURfREVWSUNFJyxcclxuICAgIE1JR1JBVElPTl9GT1JNOiAnL2FwaS9zZWFyY2gvd2ViZXgvY3VzdG9tZXJzLzpjdXN0b21lcklkL21pZ3JhdGlvbmZvcm1zLzpmb3JtSWQnLFxyXG4gICAgTUlHUkFUSU9OX0ZPUk1fRU5USVRJRVNfTUlHUkFURUQ6ICcvYXBpL3NlYXJjaC93ZWJleC9jdXN0b21lcnMvOmN1c3RvbWVySWQvbWlncmF0aW9uZm9ybWVudGl0aWVzL21pZ3JhdGVkJyxcclxuICAgIFRSSUdHRVJfRklSTVdBUkVfTUlHUkFUSU9OOiAnL2FwaS9taWdyYXRpb24vOm1pZ3JhdGlvblR5cGUvZmlybXdhcmVtaWdyYXRpb24vY3VzdG9tZXIvOmN1c3RvbWVySWQvbWlncmF0aW9uLzptaWdyYXRpb25Gb3JtSWQnLFxyXG4gICAgUkVNT1ZFX1VDTV9MSUNFTlNFOiAnL2FwaS9taWdyYXRpb24vOmNvbnRyb2xIdWJUeXBlL3JlbW92ZXVjbWxpY2Vuc2UvY3VzdG9tZXIvOmN1c3RvbWVySWQvbWlncmF0aW9uZm9ybS86bWlncmF0aW9uRm9ybUlkJyxcclxuICAgIFdFQkVYX1JFVkVSVDogJy9hcGkvd2ViZXgvcHJvdmlzaW9uaW5nL2N1c3RvbWVycy86Y3VzdG9tZXJJZC9wZXJzb25zLzpwZXJzb25JZC9yZXZlcnRtaWdyYXRpb24nLFxyXG4gIH0sXHJcbiAgREVUQUlMUzoge1xyXG4gICAgLy8gQ1VDTSBkZXRhaWwgZW5kcG9pbnRzIHdpbGwgYmUgcHJvdmlkZWQgbGF0ZXIuXHJcbiAgICBDVUNNOiB7XHJcbiAgICAgIFdPUktTUEFDRTogJy9hcGkvcHJvdmlzaW9uLzpzaXRlSWQvbm9udXNlcmRldmljZXMvOndvcmtzcGFjZUlkP3R5cGU9T1JQSEFOX0RFVklDRScsXHJcbiAgICAgIFNJVEU6ICcvYXBpL3NpdGVzLzpzaXRlSWQnLFxyXG4gICAgfSxcclxuICAgIFdFQkVYOiB7XHJcbiAgICAgIFdPUktTUEFDRTogJy9hcGkvd2ViZXgvcHJvdmlzaW9uaW5nL2N1c3RvbWVycy86Y3VzdG9tZXJJZC93b3Jrc3BhY2VzLzp3b3Jrc3BhY2VJZCcsXHJcbiAgICAgIE5VTUJFUlM6ICcvYXBpL3dlYmV4L3Byb3Zpc2lvbmluZy9jdXN0b21lcnMvOmN1c3RvbWVySWQvd29ya3NwYWNlcy86d29ya3NwYWNlSWQvbnVtYmVycycsXHJcbiAgICAgIENBTExFUklEOiAnL2FwaS93ZWJleC9wcm92aXNpb25pbmcvY3VzdG9tZXJzLzpjdXN0b21lcklkL3dvcmtzcGFjZXMvOndvcmtzcGFjZUlkL2NhbGxlcklkJyxcclxuICAgIH0sXHJcbiAgfSxcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBPTl9QUkVNX0lEID0gMjU0MjsiXX0=