@adlfe/campaign-management-library 2.11.4 → 2.11.6

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.
@@ -1,4 +1,5 @@
1
1
  import { __decorate } from "tslib";
2
+ import { HttpClient } from '@angular/common/http';
2
3
  import { Component, EventEmitter, Output } from '@angular/core';
3
4
  import { MatDialog } from '@angular/material/dialog';
4
5
  import { ToastrService } from 'ngx-toastr';
@@ -9,10 +10,11 @@ import { ConfirmationComponent } from '../../../global/confirmation/confirmation
9
10
  import { ConfirmationModel } from '../../../global/confirmation/shared/model';
10
11
  import { FailoverReqModel, GeneralInformationWAReqModel, SchedulerReqModel } from '../../models';
11
12
  let NewCampaignComponent = class NewCampaignComponent {
12
- constructor(dialog, apiAdapterService, toastr) {
13
+ constructor(dialog, apiAdapterService, toastr, httpClient) {
13
14
  this.dialog = dialog;
14
15
  this.apiAdapterService = apiAdapterService;
15
16
  this.toastr = toastr;
17
+ this.httpClient = httpClient;
16
18
  this.currentView = new EventEmitter();
17
19
  this.currentViews = MainArea;
18
20
  this.positionWizard = 1;
@@ -431,7 +433,8 @@ let NewCampaignComponent = class NewCampaignComponent {
431
433
  NewCampaignComponent.ctorParameters = () => [
432
434
  { type: MatDialog },
433
435
  { type: ApiAdapterServiceService },
434
- { type: ToastrService }
436
+ { type: ToastrService },
437
+ { type: HttpClient }
435
438
  ];
436
439
  __decorate([
437
440
  Output()
@@ -444,4 +447,4 @@ NewCampaignComponent = __decorate([
444
447
  })
445
448
  ], NewCampaignComponent);
446
449
  export { NewCampaignComponent };
447
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV3LWNhbXBhaWduLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhZGxmZS9jYW1wYWlnbi1tYW5hZ2VtZW50LWxpYnJhcnkvIiwic291cmNlcyI6WyJsaWIvY2FtcGFpZ24tbWFuYWdlbWVudC9tb2R1bGVzL25ldy1jYW1wYWlnbi9uZXctY2FtcGFpZ24uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBcUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5GLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzNELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUcvQyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNsRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsNEJBQTRCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFPakcsSUFBYSxvQkFBb0IsR0FBakMsTUFBYSxvQkFBb0I7SUF3QjdCLFlBQ1ksTUFBaUIsRUFDakIsaUJBQTJDLEVBQzNDLE1BQXFCO1FBRnJCLFdBQU0sR0FBTixNQUFNLENBQVc7UUFDakIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUEwQjtRQUMzQyxXQUFNLEdBQU4sTUFBTSxDQUFlO1FBMUJ2QixnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFZLENBQUM7UUFHOUMsaUJBQVksR0FBRyxRQUFRLENBQUM7UUFDeEIsbUJBQWMsR0FBVyxDQUFDLENB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dEVtaXR0ZXIsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBUb2FzdHJTZXJ2aWNlIH0gZnJvbSAnbmd4LXRvYXN0cic7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBTZWdtZW50ZWRNZXNzYWdlIH0gZnJvbSAnc21zLXNlZ21lbnRzLWNhbGN1bGF0b3InO1xyXG5pbXBvcnQgeyBNYWluQXJlYSB9IGZyb20gJy4uLy4uLy4uL2NvcmUvZW51bXMnO1xyXG5pbXBvcnQgeyBQYXJhbWV0ZXIgfSBmcm9tICcuLi8uLi8uLi9jb3JlL21vZGVscy91dGlsL2FwaS1hZGFwdGVyLXNlcnZpY2UtbW9kZWxzJztcclxuaW1wb3J0IHsgQXBwUmVzcG9uc2UgfSBmcm9tICcuLi8uLi8uLi9jb3JlL21vZGVscy91dGlsL2FwaS1kdG8vcmVzcG9uc2UtbW9kZWxzJztcclxuaW1wb3J0IHsgQXBpQWRhcHRlclNlcnZpY2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNlcyc7XHJcbmltcG9ydCB7IENvbmZpcm1hdGlvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2dsb2JhbC9jb25maXJtYXRpb24vY29uZmlybWF0aW9uJztcclxuaW1wb3J0IHsgQ29uZmlybWF0aW9uTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9nbG9iYWwvY29uZmlybWF0aW9uL3NoYXJlZC9tb2RlbCc7XHJcbmltcG9ydCB7IEZhaWxvdmVyUmVxTW9kZWwsIEdlbmVyYWxJbmZvcm1hdGlvbldBUmVxTW9kZWwsIFNjaGVkdWxlclJlcU1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdsaWItbmV3LWNhbXBhaWduJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9uZXctY2FtcGFpZ24uY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vbmV3LWNhbXBhaWduLmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOZXdDYW1wYWlnbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICAgIEBPdXRwdXQoKSBjdXJyZW50VmlldyA9IG5ldyBFdmVudEVtaXR0ZXI8TWFpbkFyZWE+KCk7XHJcblxyXG4gICAgcHVibGljIGNhbXBhaWduSUQ6IHN0cmluZztcclxuICAgIHB1YmxpYyBjdXJyZW50Vmlld3MgPSBNYWluQXJlYTtcclxuICAgIHB1YmxpYyBwb3NpdGlvbldpemFyZDogbnVtYmVyID0gMTtcclxuICAgIHB1YmxpYyBkYXRhV2l6YXJkOiBzdHJpbmdbXTtcclxuICAgIHB1YmxpYyBpc0xvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIHB1YmxpYyBpc1N1Ym1pdDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHVibGljIGlzR2VuZXJhbEluZm9ybWF0aW9uVmFsaWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIHB1YmxpYyBpc0ZhaWxvdmVyTWVjaGFuaXNtVmFsaWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIHB1YmxpYyBpc051bWJlckJhc2VJbmZvcm1hdGlvblZhbGlkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBwdWJsaWMgaXNTY2hlZHVsZXJJbmZvcm1hdGlvblZhbGlkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBwdWJsaWMgaXNMaW5lOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBwdWJsaWMgZ2VuZXJhbEluZm9ybWF0aW9uRGF0YTogYW55O1xyXG4gICAgcHVibGljIGZhaWxvdmVyTWVjaGFuaXNtRGF0YTogYW55O1xyXG4gICAgcHVibGljIHRhcmdldEF1ZGllbmNlRGF0YTogc3RyaW5nW107XHJcbiAgICBwdWJsaWMgdGFyZ2V0QXVkaWVuY2VDb3VudDogbnVtYmVyO1xyXG4gICAgcHVibGljIHRhcmdldEF1ZGllbmNlRmlsZTogYW55O1xyXG4gICAgcHVibGljIHNjaGVkdWxlckRhdGE6IGFueTtcclxuXHJcbiAgICBwcml2YXRlIGlzVXBsb2FkVGFyZ2V0QXVkaWVuY2U6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIHByaXZhdGUgc3Vic2NyaWJlcnM6IFN1YnNjcmlwdGlvbltdID0gW107XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSBkaWFsb2c6IE1hdERpYWxvZyxcclxuICAgICAgICBwcml2YXRlIGFwaUFkYXB0ZXJTZXJ2aWNlOiBBcGlBZGFwdGVyU2VydmljZVNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSB0b2FzdHI6IFRvYXN0clNlcnZpY2VcclxuICAgICkge31cclxuXHJcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmNhbXBhaWduSUQgPSB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWU/LnNwbGl0KCcvJyk/LnBvcCgpO1xyXG5cclxuICAgICAgICB0aGlzLmluaXRXaXphcmQoKTtcclxuICAgICAgICB0aGlzLmdldENhbXBhaWduRGV0YWlsU2VydmljZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgaW5pdFdpemFyZCgpOiB2b2lkIHtcclxuICAgICAgICBpZiAoIXRoaXMuaXNMaW5lKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGF0YVdpemFyZCA9IFtcclxuICAgICAgICAgICAgICAgICdHZW5lcmFsIEluZm9ybWF0aW9uJyxcclxuICAgICAgICAgICAgICAgICdGYWlsb3ZlciBNZWNoYW5pc20nLFxyXG4gICAgICAgICAgICAgICAgJ1RhcmdldCBBdWRpZW5jZScsXHJcbiAgICAgICAgICAgICAgICAnU2NoZWR1bGVyJyxcclxuICAgICAgICAgICAgICAgICdTdW1tYXJ5JyxcclxuICAgICAgICAgICAgXTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5kYXRhV2l6YXJkID0gWydHZW5lcmFsIEluZm9ybWF0aW9uJywgJ1RhcmdldCBBdWRpZW5jZScsICdTY2hlZHVsZXInLCAnU3VtbWFyeSddO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZ2V0Q2FtcGFpZ25EZXRhaWxTZXJ2aWNlKCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLmNhbXBhaWduSUQ/Lmxlbmd0aCA8IDEwKSByZXR1cm47XHJcblxyXG4gICAgICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgY29uc3Qgc3VicyA9IHRoaXMuYXBpQWRhcHRlclNlcnZpY2VcclxuICAgICAgICAgICAgLmV4ZWN1dGVBcGlSZXF1ZXN0KFtdLCBgL2NhbXBhaWduLyR7dGhpcy5jYW1wYWlnbklEfWAsICdHRVQnKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgICAgICAgKHJlc3A6IEFwcFJlc3BvbnNlPGFueT4pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIXJlc3ApIHJldHVybjtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2VuZXJhbEluZm9ybWF0aW9uID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYW1wYWlnbk5hbWU6IHJlc3AuZGF0YT8ubmFtZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWVkaXVtOiByZXNwLmRhdGE/LnBsYXRmb3JtLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjaGFubmVsOiBbJ2ltYWdlJywgJ3ZpZGVvJywgJ2RvY3VtZW50J10uaW5jbHVkZXMocmVzcC5kYXRhPy50eXBlKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAnTUVESUEnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHJlc3AuZGF0YT8uaXNEaXJlY3RTZW5kXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ3V0aWxpdHknXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogcmVzcC5kYXRhPy50eXBlPy50b1VwcGVyQ2FzZSgpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtZWRpYTogcmVzcC5kYXRhPy50eXBlPy50b1VwcGVyQ2FzZSgpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpc1ByZXZUZW1wbGF0ZTogcmVzcD8uZGF0YT8uaXNQcmV2VGVtcGxhdGUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlTmFtZTogcmVzcD8uZGF0YT8udGVtcGxhdGVOYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0dGw6IHJlc3A/LmRhdGE/LnR0bFNlY29uZHMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZyb206IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiByZXNwLmRhdGE/LmFjY291bnRJZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHJlc3AuZGF0YT8uYWNjb3VudE5hbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGF0Zm9ybTogcmVzcC5kYXRhPy5wbGF0Zm9ybSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudElkOiByZXNwLmRhdGE/LmNsaWVudElkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50TmFtZTogcmVzcC5kYXRhPy5jbGllbnROYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjb3VudE5vOiByZXNwLmRhdGE/LmFjY291bnRObyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhYmFJZDogcmVzcC5kYXRhPy53YWJhSWQgPz8gJycsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6IHJlc3AuZGF0YT8uZGV0YWlscz8udGV4dCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0VVJMOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcC5kYXRhPy5kZXRhaWxzPy5pbWFnZT8udXJsID8/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwLmRhdGE/LmRldGFpbHM/LmRvY3VtZW50Py51cmwgPz9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3AuZGF0YT8uZGV0YWlscz8udmlkZW8/LnVybCA/P1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcC5kYXRhPy5kZXRhaWxzPy50ZW1wbGF0ZT8uaGVhZGVyVVJMLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJhbUhlYWRlcjogcmVzcC5kYXRhPy5kZXRhaWxzPy50ZW1wbGF0ZT8uaGVhZGVyLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJhbUJvZHk6IHJlc3AuZGF0YT8uZGV0YWlscz8udGVtcGxhdGU/LmRhdGEsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtQnV0dG9uOiByZXNwLmRhdGE/LmRldGFpbHM/LnRlbXBsYXRlPy5idXR0b24sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG90cFZhbHVlOiBbLi4uKHJlc3AuZGF0YT8uZGV0YWlscz8udGVtcGxhdGU/LmRhdGEgPz8gW10pXT8ucG9wKCksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJRDogcmVzcC5kYXRhPy5kZXRhaWxzPy50ZW1wbGF0ZT8uaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiByZXNwLmRhdGE/LmRldGFpbHM/LnRlbXBsYXRlPy5uYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFuZzogcmVzcC5kYXRhPy5kZXRhaWxzPy50ZW1wbGF0ZT8ubGFuZyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYXRmb3JtOiByZXNwLmRhdGE/LnBsYXRmb3JtLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyVVJMOiByZXNwLmRhdGE/LmRldGFpbHM/LnRlbXBsYXRlPy5oZWFkZXJVUkwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXI6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGFtcGxlczogcmVzcC5kYXRhPy5kZXRhaWxzPy50ZW1wbGF0ZT8uaGVhZGVyLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvZHk6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGFtcGxlczogcmVzcC5kYXRhPy5kZXRhaWxzPy50ZW1wbGF0ZT8uZGF0YSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXR0b25zOiByZXNwLmRhdGE/LmRldGFpbHM/LnRlbXBsYXRlPy5idXR0b24sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbGllbnRJZDogcmVzcC5kYXRhPy5jbGllbnRJZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsaWVudE5hbWU6IHJlc3AuZGF0YT8uY2xpZW50TmFtZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXNVcGxvYWQ6IHJlc3AuZGF0YT8uZmlsZUlkICE9PSAnJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsZUlkOiByZXNwLmRhdGE/LmZpbGVJZCxcclxuICAgICAgICAgICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcclxuICAgICAgICAgICAgICAgICAgICAgICAgJ3RlbGluLmNhbXBhaWduJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5nZXRDYW1wYWlnblN0b3JhZ2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi57XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhbEluZm9ybWF0aW9uOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiByZXNwLmRhdGE/LmlkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtOiBnZW5lcmFsSW5mb3JtYXRpb24sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWlsb3ZlcjogcmVzcC5kYXRhPy5mYWlsb3ZlcixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRBdWRpZW5jZTogcmVzcC5kYXRhPy50YXJnZXRzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldEF1ZGllbmNlRmlsZToge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiByZXNwLmRhdGE/LmZpbGVOYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRVUkw6IHJlc3AuZGF0YT8udGFyZ2V0VVJMLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NoZWR1bGVyOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjaGVkdWxlclR5cGU6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwLmRhdGE/LnNjaGVkdWxlVHlwZSA9PT0gJ01VTFRJJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ09ORV9USU1FJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogcmVzcC5kYXRhPy5zY2hlZHVsZVR5cGUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0RGF0ZTogcmVzcC5kYXRhPy5zdGFydFRpbWU/LnNwbGl0KCcgJylbMF0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0VGltZTogcmVzcC5kYXRhPy5zdGFydFRpbWU/LnNwbGl0KCcgJylbMV0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzUmVwZWF0OiByZXNwLmRhdGE/LnNjaGVkdWxlVHlwZSA9PT0gJ01VTFRJJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsaXZlcnk6IHJlc3AuZGF0YT8ucmVwZWF0LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNMaW5lID0gcmVzcC5kYXRhPy5wbGF0Zm9ybSA9PT0gJ0xJTkUnO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5pdFdpemFyZCgpO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICApO1xyXG5cclxuICAgICAgICB0aGlzLnN1YnNjcmliZXJzLnB1c2goc3Vicyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdlbmVyYWxJbmZvcm1hdGlvbihmb3JtOiB7IHBhcmVudDogRm9ybUdyb3VwOyBjaGlsZDogRm9ybUdyb3VwIH0pOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmlzR2VuZXJhbEluZm9ybWF0aW9uVmFsaWQgPSBmb3JtLnBhcmVudC52YWxpZCAmJiBmb3JtLmNoaWxkICYmIGZvcm0uY2hpbGQ/LnZhbGlkO1xyXG4gICAgICAgIHRoaXMuaXNMaW5lID0gZm9ybS5wYXJlbnQ/LmdldFJhd1ZhbHVlKCk/Lm1lZGl1bSA9PT0gJ0xJTkUnO1xyXG5cclxuICAgICAgICB0aGlzLmluaXRXaXphcmQoKTtcclxuXHJcbiAgICAgICAgaWYgKGZvcm0ucGFyZW50ICYmIGZvcm0uY2hpbGQpXHJcbiAgICAgICAgICAgIHRoaXMuZ2VuZXJhbEluZm9ybWF0aW9uRGF0YSA9IHtcclxuICAgICAgICAgICAgICAgIC4uLmZvcm0ucGFyZW50LmdldFJhd1ZhbHVlKCksXHJcbiAgICAgICAgICAgICAgICAuLi5mb3JtLmNoaWxkLmdldFJhd1ZhbHVlKCksXHJcbiAgICAgICAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGZhaWxvdmVyTWVjaGFuaXNtKGZvcm06IEZvcm1Hcm91cCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuaXNGYWlsb3Zlck1lY2hhbmlzbVZhbGlkID0gZm9ybS52YWxpZDtcclxuICAgICAgICB0aGlzLmZhaWxvdmVyTWVjaGFuaXNtRGF0YSA9IGZvcm0uZ2V0UmF3VmFsdWUoKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgdGFyZ2V0QXVkaWVuY2UodGFyZ2V0OiB7XHJcbiAgICAgICAgdGFyZ2V0QXVkaWVuY2U6IHN0cmluZ1tdO1xyXG4gICAgICAgIG51bWJlckNvdW50OiBudW1iZXI7XHJcbiAgICAgICAgaXNVcGxvYWQ6IGJvb2xlYW47XHJcbiAgICAgICAgZmlsZTogYW55O1xyXG4gICAgfSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMudGFyZ2V0QXVkaWVuY2VGaWxlID0gdGFyZ2V0LmZpbGU7XHJcbiAgICAgICAgdGhpcy50YXJnZXRBdWRpZW5jZURhdGEgPSB0YXJnZXQudGFyZ2V0QXVkaWVuY2U7XHJcbiAgICAgICAgdGhpcy50YXJnZXRBdWRpZW5jZUNvdW50ID0gdGFyZ2V0Lm51bWJlckNvdW50O1xyXG4gICAgICAgIHRoaXMuaXNVcGxvYWRUYXJnZXRBdWRpZW5jZSA9IHRhcmdldC5pc1VwbG9hZDtcclxuICAgICAgICB0aGlzLmlzTnVtYmVyQmFzZUluZm9ybWF0aW9uVmFsaWQgPVxyXG4gICAgICAgICAgICAodGFyZ2V0LmlzVXBsb2FkICYmIHRhcmdldC5maWxlPy5uYW1lKSB8fFxyXG4gICAgICAgICAgICAoIXRhcmdldC5pc1VwbG9hZCAmJiB0YXJnZXQudGFyZ2V0QXVkaWVuY2UubGVuZ3RoID4gMCkgfHxcclxuICAgICAgICAgICAgdGhpcy5nZXRDYW1wYWlnblN0b3JhZ2U/LmdlbmVyYWxJbmZvcm1hdGlvbj8uZm9ybT8uZmlsZUlkO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzY2hlZHVsZXIoZm9ybTogRm9ybUdyb3VwKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5zY2hlZHVsZXJEYXRhID0gZm9ybS5nZXRSYXdWYWx1ZSgpO1xyXG4gICAgICAgIHRoaXMuaXNTY2hlZHVsZXJJbmZvcm1hdGlvblZhbGlkID0gZm9ybS52YWxpZDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgb25DbGlja1NhdmVBbmROZXh0QnV0dG9uKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuaXNTdWJtaXQgPSB0cnVlO1xyXG5cclxuICAgICAgICBzd2l0Y2ggKHRoaXMucG9zaXRpb25XaXphcmQpIHtcclxuICAgICAgICAgICAgY2FzZSAxOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5zYXZlR2VuZXJhbEluZm9ybWF0aW9uU2VydmljZSgpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgMjpcclxuICAgICAgICAgICAgICAgICF0aGlzLmlzTGluZSA/IHRoaXMuc2F2ZUZhaWxvdmVyTWVjaGFuaXNtU2VydmljZSgpIDogdGhpcy5zYXZlTnVtYmVyQmFzZXNTZXJ2aWNlKCk7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAzOlxyXG4gICAgICAgICAgICAgICAgIXRoaXMuaXNMaW5lID8gdGhpcy5zYXZlTnVtYmVyQmFzZXNTZXJ2aWNlKCkgOiB0aGlzLnNhdmVTY2hlZHVsZXJTZXJ2aWNlKCk7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSA0OlxyXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmlzTGluZSkgdGhpcy5zYXZlU2NoZWR1bGVyU2VydmljZSgpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICB0aGlzLmlzU3VibWl0ID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGdldENhbXBhaWduU3RvcmFnZSgpOiBhbnkge1xyXG4gICAgICAgIHJldHVybiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndGVsaW4uY2FtcGFpZ24nKVxyXG4gICAgICAgICAgICA/IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3RlbGluLmNhbXBhaWduJykpXHJcbiAgICAgICAgICAgIDoge307XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGdldEJvZHkoKTogc3RyaW5nIHtcclxuICAgICAgICBjb25zdCBib2R5ID1cclxuICAgICAgICAgICAgdGhpcy5nZW5lcmFsSW5mb3JtYXRpb25EYXRhPy50ZXh0IHx8XHJcbiAgICAgICAgICAgIHRoaXMuZ2VuZXJhbEluZm9ybWF0aW9uRGF0YT8udGVtcGxhdGU/LmJvZHk/LnRleHQgfHxcclxuICAgICAgICAgICAgdGhpcy5nZW5lcmFsSW5mb3JtYXRpb25EYXRhPy5ib2R5Py50ZXh0O1xyXG5cclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICBib2R5XHJcbiAgICAgICAgICAgICAgICA/LnNwbGl0KC9cXFxcbnxcXG4vKVxyXG4gICAgICAgICAgICAgICAgLmpvaW4oJzxiciAvPicpXHJcbiAgICAgICAgICAgICAgICAuc3BsaXQoL1xcXFx0fFxcdC8pXHJcbiAgICAgICAgICAgICAgICAuam9pbignICAgICcpID8/ICcnXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgb25DaGVja1R3aWxpb0NvdW50ZXJWYWxpZCA9ICgpOiBib29sZWFuID0+IHtcclxuICAgICAgICBjb25zdCB2YWx1ZXNHZW5lcmFsID0gdGhpcy5nZW5lcmFsSW5mb3JtYXRpb25EYXRhO1xyXG5cclxuICAgICAgICBpZiAodmFsdWVzR2VuZXJhbD8ubWVkaXVtICE9PSAnU01TJykge1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh2YWx1ZXNHZW5lcmFsPy5jaGFubmVsID09PSAnVEVYVCcpIHtcclxuICAgICAgICAgICAgY29uc3Qgc2VnbWVudGVkTWVzc2FnZSA9IG5ldyBTZWdtZW50ZWRNZXNzYWdlKHRoaXMuZ2V0Qm9keSk7XHJcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHtcclxuICAgICAgICAgICAgICAgIHNlZ21lbnRzOiBzZWdtZW50ZWRNZXNzYWdlLnNlZ21lbnRzQ291bnQsXHJcbiAgICAgICAgICAgICAgICBlbmNvZGluZzogc2VnbWVudGVkTWVzc2FnZS5lbmNvZGluZ05hbWUsXHJcbiAgICAgICAgICAgICAgICBjaGFyYWN0ZXJzOiBzZWdtZW50ZWRNZXNzYWdlLm51bWJlck9mVW5pY29kZVNjYWxhcnMsXHJcbiAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICBpZiAocmVzdWx0LnNlZ21lbnRzID4gMTApIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgbGV0IHZhbHVlUmVzdWx0ID0gdGhpcy5nZXRCb2R5O1xyXG4gICAgICAgICAgICBBcnJheS5mcm9tKHZhbHVlc0dlbmVyYWwudGVtcGxhdGU/LmJvZHk/LmV4YW1wbGVzIHx8IFtdKS5tYXAoKGVudHJ5LCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlc0dlbmVyYWwucGFyYW1Cb2R5Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBwbGFjZWhvbGRlciA9IGB7eyR7ZW50cnl9fX1gO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gdmFsdWVzR2VuZXJhbC5wYXJhbUJvZHlbaW5kZXhdLm5hbWU7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVSZXN1bHQgPSB2YWx1ZVJlc3VsdC5zcGxpdChwbGFjZWhvbGRlcikuam9pbih2YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgY29uc3Qgc2VnbWVudGVkTWVzc2FnZSA9IG5ldyBTZWdtZW50ZWRNZXNzYWdlKHZhbHVlUmVzdWx0KTtcclxuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0ge1xyXG4gICAgICAgICAgICAgICAgc2VnbWVudHM6IHNlZ21lbnRlZE1lc3NhZ2Uuc2VnbWVudHNDb3VudCxcclxuICAgICAgICAgICAgICAgIGVuY29kaW5nOiBzZWdtZW50ZWRNZXNzYWdlLmVuY29kaW5nTmFtZSxcclxuICAgICAgICAgICAgICAgIGNoYXJhY3RlcnM6IHNlZ21lbnRlZE1lc3NhZ2UubnVtYmVyT2ZVbmljb2RlU2NhbGFycyxcclxuICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgIGlmIChyZXN1bHQuc2VnbWVudHMgPiAxMCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIHByaXZhdGUgc2F2ZUdlbmVyYWxJbmZvcm1hdGlvblNlcnZpY2UoKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCF0aGlzLm9uQ2hlY2tUd2lsaW9Db3VudGVyVmFsaWQoKSkge1xyXG4gICAgICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcignU2VnbWVudCBjYW5ub3QgbW9yZSB0aGFuIDEwJyk7XHJcbiAgICAgICAgICAgIHRoaXMuaXNTdWJtaXQgPSBmYWxzZTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgYm9keVJlcSA9IG5ldyBHZW5lcmFsSW5mb3JtYXRpb25XQVJlcU1vZGVsKCkuY2xvbmUoe1xyXG4gICAgICAgICAgICAuLi50aGlzLmdlbmVyYWxJbmZvcm1hdGlvbkRhdGEsXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGNvbnN0IHBheWxvYWRWYWx1ZSA9IGJvZHlSZXEuY29udmVydCgpO1xyXG5cclxuICAgICAgICBpZiAocGF5bG9hZFZhbHVlLnRlbXBsYXRlICYmIHRoaXMuZ2VuZXJhbEluZm9ybWF0aW9uRGF0YS50ZW1wbGF0ZSkge1xyXG4gICAgICAgICAgICBwYXlsb2FkVmFsdWUudGVtcGxhdGUudHlwZSA9XHJcbiAgICAgICAgICAgICAgICBwYXlsb2FkVmFsdWUudGVtcGxhdGUudHlwZSB8fCB0aGlzLmdlbmVyYWxJbmZvcm1hdGlvbkRhdGEudGVtcGxhdGUuY2F0ZWdvcnk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBwYXJhbWV0ZXJMaXN0OiBBcnJheTxQYXJhbWV0ZXI+ID0gW1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBuYW1lOiAnZGF0YScsXHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogcGF5bG9hZFZhbHVlLFxyXG4gICAgICAgICAgICAgICAgaW46ICdib2R5JyxcclxuICAgICAgICAgICAgICAgIHR5cGU6ICdvYmplY3QnLFxyXG4gICAgICAgICAgICAgICAgd2l0aG91dEtleURhdGE6IHRydWUsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgXTtcclxuICAgICAgICBjb25zdCBzdWJzID0gdGhpcy5hcGlBZGFwdGVyU2VydmljZVxyXG4gICAgICAgICAgICAuZXhlY3V0ZUFwaVJlcXVlc3QoXHJcbiAgICAgICAgICAgICAgICBwYXJhbWV0ZXJMaXN0LFxyXG4gICAgICAgICAgICAgICAgdGhpcy5nZW5lcmFsSW5mb3JtYXRpb25EYXRhLmlkXHJcbiAgICAgICAgICAgICAgICAgICAgPyBgL2NhbXBhaWduLyR7dGhpcy5nZW5lcmFsSW5mb3JtYXRpb25EYXRhLmlkfWBcclxuICAgICAgICAgICAgICAgICAgICA6ICcvY2FtcGFpZ24nLFxyXG4gICAgICAgICAgICAgICAgdGhpcy5nZW5lcmFsSW5mb3JtYXRpb25EYXRhLmlkID8gJ1BVVCcgOiAnUE9TVCdcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgICAgICAgKHJlc3ApID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcD8ubWVzc2FnZT8udG9Mb3dlckNhc2UoKSAhPT0gJ3N1Y2Nlc3MnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXNTdWJtaXQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICd0ZWxpbi5jYW1wYWlnbicsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuZ2V0Q2FtcGFpZ25TdG9yYWdlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ue1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYWxJbmZvcm1hdGlvbjoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogcmVzcC5kYXRhLmlkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtOiB0aGlzLmdlbmVyYWxJbmZvcm1hdGlvbkRhdGEsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc1N1Ym1pdCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucG9zaXRpb25XaXphcmQgKz0gMTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAoKSA9PiAodGhpcy5pc1N1Ym1pdCA9IGZhbHNlKVxyXG4gICAgICAgICAgICApO1xyXG5cclxuICAgICAgICB0aGlzLnN1YnNjcmliZXJzLnB1c2goc3Vicyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzYXZlRmFpbG92ZXJNZWNoYW5pc21TZXJ2aWNlKCk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGJvZHlSZXEgPSBuZXcgRmFpbG92ZXJSZXFNb2RlbCgpLmNsb25lKHtcclxuICAgICAgICAgICAgLi4udGhpcy5mYWlsb3Zlck1lY2hhbmlzbURhdGEsXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGNvbnN0IHBhcmFtZXRlckxpc3Q6IEFycmF5PFBhcmFtZXRlcj4gPSBbXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIG5hbWU6ICdkYXRhJyxcclxuICAgICAgICAgICAgICAgIHZhbHVlOiBib2R5UmVxLmNvbnZlcnQoKSxcclxuICAgICAgICAgICAgICAgIGluOiAnYm9keScsXHJcbiAgICAgICAgICAgICAgICB0eXBlOiAnb2JqZWN0JyxcclxuICAgICAgICAgICAgICAgIHdpdGhvdXRLZXlEYXRhOiB0cnVlLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgIF07XHJcblxyXG4gICAgICAgIGNvbnN0IHN1YnMgPSB0aGlzLmFwaUFkYXB0ZXJTZXJ2aWNlXHJcbiAgICAgICAgICAgIC5leGVjdXRlQXBpUmVxdWVzdChcclxuICAgICAgICAgICAgICAgIHBhcmFtZXRlckxpc3QsXHJcbiAgICAgICAgICAgICAgICBgL2NhbXBhaWduLyR7dGhpcy5nZXRDYW1wYWlnblN0b3JhZ2U/LmdlbmVyYWxJbmZvcm1hdGlvbj8uaWR9L2ZhaWxvdmVyYCxcclxuICAgICAgICAgICAgICAgICdQT1NUJ1xyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoXHJcbiAgICAgICAgICAgICAgICAocmVzcCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwPy5tZXNzYWdlPy50b0xvd2VyQ2FzZSgpICE9PSAnc3VjY2VzcycpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pc1N1Ym1pdCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcclxuICAgICAgICAgICAgICAgICAgICAgICAgJ3RlbGluLmNhbXBhaWduJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5nZXRDYW1wYWlnblN0b3JhZ2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi57XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFpbG92ZXI6IHRoaXMuZmFpbG92ZXJNZWNoYW5pc21EYXRhLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzU3VibWl0ID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3NpdGlvbldpemFyZCArPSAxO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICgpID0+ICh0aGlzLmlzU3VibWl0ID0gZmFsc2UpXHJcbiAgICAgICAgICAgICk7XHJcblxyXG4gICAgICAgIHRoaXMuc3Vic2NyaWJlcnMucHVzaChzdWJzKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHNhdmVOdW1iZXJCYXNlc1NlcnZpY2UoKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMudGFyZ2V0QXVkaWVuY2VEYXRhLmxlbmd0aCA9PT0gMCB8fCB0aGlzLmlzVXBsb2FkVGFyZ2V0QXVkaWVuY2UpIHtcclxuICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXHJcbiAgICAgICAgICAgICAgICAndGVsaW4uY2FtcGFpZ24nLFxyXG4gICAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoe1xyXG4gICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuZ2V0Q2FtcGFpZ25TdG9yYWdlLFxyXG4gICAgICAgICAgICAgICAgICAgIC4uLntcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0QXVkaWVuY2U6IHRoaXMudGFyZ2V0QXVkaWVuY2VEYXRhLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRBdWRpZW5jZUNvdW50OiB0aGlzLnRhcmdldEF1ZGllbmNlQ291bnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldEF1ZGllbmNlRmlsZTogdGhpcy50YXJnZXRBdWRpZW5jZUZpbGUsXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLmlzU3VibWl0ID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMucG9zaXRpb25XaXphcmQgKz0gMTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgcGFyYW1ldGVyTGlzdDogQXJyYXk8UGFyYW1ldGVyPiA9IFtcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgbmFtZTogJ2RhdGEnLFxyXG4gICAgICAgICAgICAgICAgdmFsdWU6IHtcclxuICAgICAgICAgICAgICAgICAgICB0YXJnZXRzOiB0aGlzLnRhcmdldEF1ZGllbmNlRGF0YSxcclxuICAgICAgICAgICAgICAgICAgICBudW1iZXJDb3VudDogdGhpcy50YXJnZXRBdWRpZW5jZUNvdW50LFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGluOiAnYm9keScsXHJcbiAgICAgICAgICAgICAgICB0eXBlOiAnb2JqZWN0JyxcclxuICAgICAgICAgICAgICAgIHdpdGhvdXRLZXlEYXRhOiB0cnVlLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgIF07XHJcblxyXG4gICAgICAgIGNvbnN0IHN1YnMgPSB0aGlzLmFwaUFkYXB0ZXJTZXJ2aWNlXHJcbiAgICAgICAgICAgIC5leGVjdXRlQXBpUmVxdWVzdChcclxuICAgICAgICAgICAgICAgIHBhcmFtZXRlckxpc3QsXHJcbiAgICAgICAgICAgICAgICBgL2NhbXBhaWduLyR7dGhpcy5nZXRDYW1wYWlnblN0b3JhZ2U/LmdlbmVyYWxJbmZvcm1hdGlvbj8uaWR9L3RhcmdldGNhdGVnb3J5YCxcclxuICAgICAgICAgICAgICAgICdQT1NUJ1xyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoXHJcbiAgICAgICAgICAgICAgICAocmVzcCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwPy5tZXNzYWdlPy50b0xvd2VyQ2FzZSgpICE9PSAnc3VjY2VzcycpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pc1N1Ym1pdCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcclxuICAgICAgICAgICAgICAgICAgICAgICAgJ3RlbGluLmNhbXBhaWduJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5nZXRDYW1wYWlnblN0b3JhZ2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi57XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0QXVkaWVuY2U6IHRoaXMudGFyZ2V0QXVkaWVuY2VEYXRhLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldEF1ZGllbmNlQ291bnQ6IHRoaXMudGFyZ2V0QXVkaWVuY2VDb3VudCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRBdWRpZW5jZUZpbGU6IHRoaXMudGFyZ2V0QXVkaWVuY2VGaWxlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzU3VibWl0ID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3NpdGlvbldpemFyZCArPSAxO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICgpID0+ICh0aGlzLmlzU3VibWl0ID0gZmFsc2UpXHJcbiAgICAgICAgICAgICk7XHJcblxyXG4gICAgICAgIHRoaXMuc3Vic2NyaWJlcnMucHVzaChzdWJzKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHNhdmVTY2hlZHVsZXJTZXJ2aWNlKCk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGJvZHlSZXEgPSBuZXcgU2NoZWR1bGVyUmVxTW9kZWwoKS5jbG9uZSh7XHJcbiAgICAgICAgICAgIC4uLnRoaXMuc2NoZWR1bGVyRGF0YSxcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgY29uc3QgcGFyYW1ldGVyTGlzdDogQXJyYXk8UGFyYW1ldGVyPiA9IFtcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgbmFtZTogJ2RhdGEnLFxyXG4gICAgICAgICAgICAgICAgdmFsdWU6IGJvZHlSZXEuY29udmVydCgpLFxyXG4gICAgICAgICAgICAgICAgaW46ICdib2R5JyxcclxuICAgICAgICAgICAgICAgIHR5cGU6ICdvYmplY3QnLFxyXG4gICAgICAgICAgICAgICAgd2l0aG91dEtleURhdGE6IHRydWUsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgXTtcclxuXHJcbiAgICAgICAgY29uc3Qgc3VicyA9IHRoaXMuYXBpQWRhcHRlclNlcnZpY2VcclxuICAgICAgICAgICAgLmV4ZWN1dGVBcGlSZXF1ZXN0KFxyXG4gICAgICAgICAgICAgICAgcGFyYW1ldGVyTGlzdCxcclxuICAgICAgICAgICAgICAgIGAvY2FtcGFpZ24vJHt0aGlzLmdldENhbXBhaWduU3RvcmFnZT8uZ2VuZXJhbEluZm9ybWF0aW9uPy5pZH0vc2NoZWR1bGVgLFxyXG4gICAgICAgICAgICAgICAgJ1BPU1QnXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAgICAgICAgIChyZXNwKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3A/Lm1lc3NhZ2U/LnRvTG93ZXJDYXNlKCkgIT09ICdzdWNjZXNzJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlzU3VibWl0ID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAndGVsaW4uY2FtcGFpZ24nLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLmdldENhbXBhaWduU3RvcmFnZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2hlZHVsZXI6IHRoaXMuc2NoZWR1bGVyRGF0YSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc1N1Ym1pdCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucG9zaXRpb25XaXphcmQgKz0gMTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAoKSA9PiAodGhpcy5pc1N1Ym1pdCA9IGZhbHNlKVxyXG4gICAgICAgICAgICApO1xyXG5cclxuICAgICAgICB0aGlzLnN1YnNjcmliZXJzLnB1c2goc3Vicyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG9uUHJldmlvdXMoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5wb3NpdGlvbldpemFyZCAtPSAxO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBjaGFuZ2VDdXJyZW50VmlldyhhcmVhOiBNYWluQXJlYSkge1xyXG4gICAgICAgIHRoaXMub3BlbkNvbmZpcm1hdGlvbkRpYWxvZyhhcmVhKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIG9wZW5Db25maXJtYXRpb25EaWFsb2coYXJlYTogTWFpbkFyZWEpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBjb25maXJtYXRpb24gPSBuZXcgQ29uZmlybWF0aW9uTW9kZWwoKTtcclxuXHJcbiAgICAgICAgY29uZmlybWF0aW9uLnRpdGxlID0gJ0NhbmNlbCBBZGQgQnJvYWRjYXN0JztcclxuICAgICAgICBjb25maXJtYXRpb24uY29udGVudCA9IGBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gY2FuY2VsPGJyLz4gQWRkIEJyb2FkY2FzdD9gO1xyXG4gICAgICAgIGNvbmZpcm1hdGlvbi5idG5TdWJtaXRSZWQgPSAnWWVzJztcclxuICAgICAgICBjb25maXJtYXRpb24uYnRuQ2FuY2VsID0gJ05vJztcclxuXHJcbiAgICAgICAgY29uc3Qgc3VicyA9IHRoaXMuZGlhbG9nXHJcbiAgICAgICAgICAgIC5vcGVuKENvbmZpcm1hdGlvbkNvbXBvbmVudCwge1xyXG4gICAgICAgICAgICAgICAgYXV0b0ZvY3VzOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIGJhY2tkcm9wQ2xhc3M6ICdvdmVybGF5LWJhY2tkcm9wLWRpYWxvZycsXHJcbiAgICAgICAgICAgICAgICBkYXRhOiBjb25maXJtYXRpb24sXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIC5hZnRlckNsb3NlZCgpXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHJlc3ApID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChyZXNwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgd2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7fSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgYC8ke3RoaXMuZ2V0Q2FtcGFpZ25TdG9yYWdlPy5nZW5lcmFsSW5mb3JtYXRpb24/LmlkfWAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICcvc2VjdXJlL2NhbXBhaWduJ1xyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudFZpZXcuZW1pdChhcmVhKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMuc3Vic2NyaWJlcnMucHVzaChzdWJzKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgb25TdWJtaXRGb3JBcHByb3ZhbCgpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBwYXJhbWV0ZXJMaXN0OiBBcnJheTxQYXJhbWV0ZXI+ID0gW107XHJcbiAgICAgICAgdGhpcy5pc1N1Ym1pdCA9IHRydWU7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmdldENhbXBhaWduU3RvcmFnZT8udGFyZ2V0QXVkaWVuY2VGaWxlPy5uYW1lKVxyXG4gICAgICAgICAgICBwYXJhbWV0ZXJMaXN0LnB1c2goe1xyXG4gICAgICAgICAgICAgICAgbmFtZTogJ2lzRmlsZScsXHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIGluOiAncXVlcnknLFxyXG4gICAgICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICBjb25zdCBzdWJzID0gdGhpcy5hcGlBZGFwdGVyU2VydmljZVxyXG4gICAgICAgICAgICAuZXhlY3V0ZUFwaVJlcXVlc3QoXHJcbiAgICAgICAgICAgICAgICBwYXJhbWV0ZXJMaXN0LFxyXG4gICAgICAgICAgICAgICAgYC9jYW1wYWlnbi8ke3RoaXMuZ2V0Q2FtcGFpZ25TdG9yYWdlPy5nZW5lcmFsSW5mb3JtYXRpb24/LmlkfS9zdWJtaXRgLFxyXG4gICAgICAgICAgICAgICAgJ1BPU1QnXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAgICAgICAgIChyZXNwKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3A/Lm1lc3NhZ2U/LnRvTG93ZXJDYXNlKCkgIT09ICdzdWNjZXNzJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlzU3VibWl0ID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5oaXN0b3J5LnJlcGxhY2VTdGF0ZShcclxuICAgICAgICAgICAgICAgICAgICAgICAge30sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGAvJHt0aGlzLmdldENhbXBhaWduU3RvcmFnZT8uZ2VuZXJhbEluZm9ybWF0aW9uPy5pZH1gLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAnL3NlY3VyZS9jYW1wYWlnbidcclxuICAgICAgICAgICAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvYXN0ci5zdWNjZXNzKCdDYW1wYWlnbiBzdWJtaXR0ZWQgZm9yIGFwcHJvdmFsIScpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNTdWJtaXQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRWaWV3LmVtaXQodGhpcy5jdXJyZW50Vmlld3MuQ2FtcGFpZ25JbmRleCk7XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgKCkgPT4gKHRoaXMuaXNTdWJtaXQgPSBmYWxzZSlcclxuICAgICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgdGhpcy5zdWJzY3JpYmVycy5wdXNoKHN1YnMpO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuc3Vic2NyaWJlcnMuZm9yRWFjaCgoZWFjaCkgPT4gZWFjaC51bnN1YnNjcmliZSgpKTtcclxuICAgIH1cclxufVxyXG4iXX0=
450
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV3LWNhbXBhaWduLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhZGxmZS9jYW1wYWlnbi1tYW5hZ2VtZW50LWxpYnJhcnkvIiwic291cmNlcyI6WyJsaWIvY2FtcGFpZ24tbWFuYWdlbWVudC9tb2R1bGVzL25ldy1jYW1wYWlnbi9uZXctY2FtcGFpZ24uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQXFCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUUzQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFHL0MsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDbEYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDOUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLDRCQUE0QixFQUFFLGlCQUFpQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBT2pHLElBQWEsb0JBQW9CLEdBQWpDLE1BQWEsb0JBQW9CO0lBd0I3QixZQUNZLE1BQWlCLEVBQ2pCLGlCQUEyQyxFQUMzQyxNQUFxQixFQUNyQixVQUFzQjtRQUh0QixXQUFNLEdBQU4sTUFBTSxDQUFXO1FBQ2pCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBMEI7UUFDM0MsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQUNyQixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBM0J4Qixn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OztLQUUvQyxDQUFDO0dBQ1csb0JBQW9CLENBOGtCaEM7U0E5a0JZLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgVG9hc3RyU2VydmljZSB9IGZyb20gJ25neC10b2FzdHInO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgU2VnbWVudGVkTWVzc2FnZSB9IGZyb20gJ3Ntcy1zZWdtZW50cy1jYWxjdWxhdG9yJztcclxuaW1wb3J0IHsgTWFpbkFyZWEgfSBmcm9tICcuLi8uLi8uLi9jb3JlL2VudW1zJztcclxuaW1wb3J0IHsgUGFyYW1ldGVyIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9tb2RlbHMvdXRpbC9hcGktYWRhcHRlci1zZXJ2aWNlLW1vZGVscyc7XHJcbmltcG9ydCB7IEFwcFJlc3BvbnNlIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9tb2RlbHMvdXRpbC9hcGktZHRvL3Jlc3BvbnNlLW1vZGVscyc7XHJcbmltcG9ydCB7IEFwaUFkYXB0ZXJTZXJ2aWNlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2NvcmUvc2VydmljZXMnO1xyXG5pbXBvcnQgeyBDb25maXJtYXRpb25Db21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9nbG9iYWwvY29uZmlybWF0aW9uL2NvbmZpcm1hdGlvbic7XHJcbmltcG9ydCB7IENvbmZpcm1hdGlvbk1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vZ2xvYmFsL2NvbmZpcm1hdGlvbi9zaGFyZWQvbW9kZWwnO1xyXG5pbXBvcnQgeyBGYWlsb3ZlclJlcU1vZGVsLCBHZW5lcmFsSW5mb3JtYXRpb25XQVJlcU1vZGVsLCBTY2hlZHVsZXJSZXFNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnbGliLW5ldy1jYW1wYWlnbicsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vbmV3LWNhbXBhaWduLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL25ldy1jYW1wYWlnbi5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTmV3Q2FtcGFpZ25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgICBAT3V0cHV0KCkgY3VycmVudFZpZXcgPSBuZXcgRXZlbnRFbWl0dGVyPE1haW5BcmVhPigpO1xyXG5cclxuICAgIHB1YmxpYyBjYW1wYWlnbklEOiBzdHJpbmc7XHJcbiAgICBwdWJsaWMgY3VycmVudFZpZXdzID0gTWFpbkFyZWE7XHJcbiAgICBwdWJsaWMgcG9zaXRpb25XaXphcmQ6IG51bWJlciA9IDE7XHJcbiAgICBwdWJsaWMgZGF0YVdpemFyZDogc3RyaW5nW107XHJcbiAgICBwdWJsaWMgaXNMb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBwdWJsaWMgaXNTdWJtaXQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIHB1YmxpYyBpc0dlbmVyYWxJbmZvcm1hdGlvblZhbGlkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBwdWJsaWMgaXNGYWlsb3Zlck1lY2hhbmlzbVZhbGlkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBwdWJsaWMgaXNOdW1iZXJCYXNlSW5mb3JtYXRpb25WYWxpZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHVibGljIGlzU2NoZWR1bGVySW5mb3JtYXRpb25WYWxpZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHVibGljIGlzTGluZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHVibGljIGdlbmVyYWxJbmZvcm1hdGlvbkRhdGE6IGFueTtcclxuICAgIHB1YmxpYyBmYWlsb3Zlck1lY2hhbmlzbURhdGE6IGFueTtcclxuICAgIHB1YmxpYyB0YXJnZXRBdWRpZW5jZURhdGE6IHN0cmluZ1tdO1xyXG4gICAgcHVibGljIHRhcmdldEF1ZGllbmNlQ291bnQ6IG51bWJlcjtcclxuICAgIHB1YmxpYyB0YXJnZXRBdWRpZW5jZUZpbGU6IGFueTtcclxuICAgIHB1YmxpYyBzY2hlZHVsZXJEYXRhOiBhbnk7XHJcblxyXG4gICAgcHJpdmF0ZSBpc1VwbG9hZFRhcmdldEF1ZGllbmNlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBwcml2YXRlIHN1YnNjcmliZXJzOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByaXZhdGUgZGlhbG9nOiBNYXREaWFsb2csXHJcbiAgICAgICAgcHJpdmF0ZSBhcGlBZGFwdGVyU2VydmljZTogQXBpQWRhcHRlclNlcnZpY2VTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgdG9hc3RyOiBUb2FzdHJTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgaHR0cENsaWVudDogSHR0cENsaWVudFxyXG4gICAgKSB7fVxyXG5cclxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuY2FtcGFpZ25JRCA9IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZT8uc3BsaXQoJy8nKT8ucG9wKCk7XHJcbiAgICAgICAgdGhpcy5pbml0V2l6YXJkKCk7XHJcbiAgICAgICAgdGhpcy5nZXRDYW1wYWlnbkRldGFpbFNlcnZpY2UoKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGluaXRXaXphcmQoKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmlzTGluZSkge1xyXG4gICAgICAgICAgICB0aGlzLmRhdGFXaXphcmQgPSBbXHJcbiAgICAgICAgICAgICAgICAnR2VuZXJhbCBJbmZvcm1hdGlvbicsXHJcbiAgICAgICAgICAgICAgICAnRmFpbG92ZXIgTWVjaGFuaXNtJyxcclxuICAgICAgICAgICAgICAgICdUYXJnZXQgQXVkaWVuY2UnLFxyXG4gICAgICAgICAgICAgICAgJ1NjaGVkdWxlcicsXHJcbiAgICAgICAgICAgICAgICAnU3VtbWFyeScsXHJcbiAgICAgICAgICAgIF07XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuZGF0YVdpemFyZCA9IFsnR2VuZXJhbCBJbmZvcm1hdGlvbicsICdUYXJnZXQgQXVkaWVuY2UnLCAnU2NoZWR1bGVyJywgJ1N1bW1hcnknXTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGdldENhbXBhaWduRGV0YWlsU2VydmljZSgpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5jYW1wYWlnbklEPy5sZW5ndGggPCAxMCkgcmV0dXJuO1xyXG5cclxuICAgICAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XHJcblxyXG4gICAgICAgIGNvbnN0IHN1YnMgPSB0aGlzLmFwaUFkYXB0ZXJTZXJ2aWNlXHJcbiAgICAgICAgICAgIC5leGVjdXRlQXBpUmVxdWVzdChbXSwgYC9jYW1wYWlnbi8ke3RoaXMuY2FtcGFpZ25JRH1gLCAnR0VUJylcclxuICAgICAgICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAgICAgICAgIChyZXNwOiBBcHBSZXNwb25zZTxhbnk+KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXNwKSByZXR1cm47XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGdlbmVyYWxJbmZvcm1hdGlvbiA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FtcGFpZ25OYW1lOiByZXNwLmRhdGE/Lm5hbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lZGl1bTogcmVzcC5kYXRhPy5wbGF0Zm9ybSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2hhbm5lbDogWydpbWFnZScsICd2aWRlbycsICdkb2N1bWVudCddLmluY2x1ZGVzKHJlc3AuZGF0YT8udHlwZSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ01FRElBJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiByZXNwLmRhdGE/LmlzRGlyZWN0U2VuZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICd1dGlsaXR5J1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHJlc3AuZGF0YT8udHlwZT8udG9VcHBlckNhc2UoKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWVkaWE6IHJlc3AuZGF0YT8udHlwZT8udG9VcHBlckNhc2UoKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXNQcmV2VGVtcGxhdGU6IHJlc3A/LmRhdGE/LmlzUHJldlRlbXBsYXRlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZU5hbWU6IHJlc3A/LmRhdGE/LnRlbXBsYXRlTmFtZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHRsOiByZXNwPy5kYXRhPy50dGxTZWNvbmRzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmcm9tOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogcmVzcC5kYXRhPy5hY2NvdW50SWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiByZXNwLmRhdGE/LmFjY291bnROYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhdGZvcm06IHJlc3AuZGF0YT8ucGxhdGZvcm0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRJZDogcmVzcC5kYXRhPy5jbGllbnRJZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudE5hbWU6IHJlc3AuZGF0YT8uY2xpZW50TmFtZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjY291bnRObzogcmVzcC5kYXRhPy5hY2NvdW50Tm8sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YWJhSWQ6IHJlc3AuZGF0YT8ud2FiYUlkID8/ICcnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiByZXNwLmRhdGE/LmRldGFpbHM/LnRleHQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldFVSTDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3AuZGF0YT8uZGV0YWlscz8uaW1hZ2U/LnVybCA/P1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcC5kYXRhPy5kZXRhaWxzPy5kb2N1bWVudD8udXJsID8/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwLmRhdGE/LmRldGFpbHM/LnZpZGVvPy51cmwgPz9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3AuZGF0YT8uZGV0YWlscz8udGVtcGxhdGU/LmhlYWRlclVSTCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1IZWFkZXI6IHJlc3AuZGF0YT8uZGV0YWlscz8udGVtcGxhdGU/LmhlYWRlcixcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1Cb2R5OiByZXNwLmRhdGE/LmRldGFpbHM/LnRlbXBsYXRlPy5kYXRhLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJhbUJ1dHRvbjogcmVzcC5kYXRhPy5kZXRhaWxzPy50ZW1wbGF0ZT8uYnV0dG9uLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvdHBWYWx1ZTogWy4uLihyZXNwLmRhdGE/LmRldGFpbHM/LnRlbXBsYXRlPy5kYXRhID8/IFtdKV0/LnBvcCgpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZToge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgSUQ6IHJlc3AuZGF0YT8uZGV0YWlscz8udGVtcGxhdGU/LmlkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogcmVzcC5kYXRhPy5kZXRhaWxzPy50ZW1wbGF0ZT8ubmFtZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbmc6IHJlc3AuZGF0YT8uZGV0YWlscz8udGVtcGxhdGU/LmxhbmcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGF0Zm9ybTogcmVzcC5kYXRhPy5wbGF0Zm9ybSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlclVSTDogcmVzcC5kYXRhPy5kZXRhaWxzPy50ZW1wbGF0ZT8uaGVhZGVyVVJMLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhhbXBsZXM6IHJlc3AuZGF0YT8uZGV0YWlscz8udGVtcGxhdGU/LmhlYWRlcixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib2R5OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhhbXBsZXM6IHJlc3AuZGF0YT8uZGV0YWlscz8udGVtcGxhdGU/LmRhdGEsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogcmVzcC5kYXRhPy5kZXRhaWxzPy50ZW1wbGF0ZT8uYnV0dG9uLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xpZW50SWQ6IHJlc3AuZGF0YT8uY2xpZW50SWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbGllbnROYW1lOiByZXNwLmRhdGE/LmNsaWVudE5hbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzVXBsb2FkOiByZXNwLmRhdGE/LmZpbGVJZCAhPT0gJycsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVJZDogcmVzcC5kYXRhPy5maWxlSWQsXHJcbiAgICAgICAgICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICd0ZWxpbi5jYW1wYWlnbicsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuZ2V0Q2FtcGFpZ25TdG9yYWdlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ue1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYWxJbmZvcm1hdGlvbjoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogcmVzcC5kYXRhPy5pZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybTogZ2VuZXJhbEluZm9ybWF0aW9uLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFpbG92ZXI6IHJlc3AuZGF0YT8uZmFpbG92ZXIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0QXVkaWVuY2U6IHJlc3AuZGF0YT8udGFyZ2V0cyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRBdWRpZW5jZUZpbGU6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogcmVzcC5kYXRhPy5maWxlTmFtZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0VVJMOiByZXNwLmRhdGE/LnRhcmdldFVSTCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjaGVkdWxlcjoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2hlZHVsZXJUeXBlOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcC5kYXRhPy5zY2hlZHVsZVR5cGUgPT09ICdNVUxUSSdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICdPTkVfVElNRSdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHJlc3AuZGF0YT8uc2NoZWR1bGVUeXBlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydERhdGU6IHJlc3AuZGF0YT8uc3RhcnRUaW1lPy5zcGxpdCgnICcpWzBdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydFRpbWU6IHJlc3AuZGF0YT8uc3RhcnRUaW1lPy5zcGxpdCgnICcpWzFdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1JlcGVhdDogcmVzcC5kYXRhPy5zY2hlZHVsZVR5cGUgPT09ICdNVUxUSScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGl2ZXJ5OiByZXNwLmRhdGE/LnJlcGVhdCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzTGluZSA9IHJlc3AuZGF0YT8ucGxhdGZvcm0gPT09ICdMSU5FJztcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmluaXRXaXphcmQoKTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgdGhpcy5zdWJzY3JpYmVycy5wdXNoKHN1YnMpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZW5lcmFsSW5mb3JtYXRpb24oZm9ybTogeyBwYXJlbnQ6IEZvcm1Hcm91cDsgY2hpbGQ6IEZvcm1Hcm91cCB9KTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5pc0dlbmVyYWxJbmZvcm1hdGlvblZhbGlkID0gZm9ybS5wYXJlbnQudmFsaWQgJiYgZm9ybS5jaGlsZCAmJiBmb3JtLmNoaWxkPy52YWxpZDtcclxuICAgICAgICB0aGlzLmlzTGluZSA9IGZvcm0ucGFyZW50Py5nZXRSYXdWYWx1ZSgpPy5tZWRpdW0gPT09ICdMSU5FJztcclxuXHJcbiAgICAgICAgdGhpcy5pbml0V2l6YXJkKCk7XHJcblxyXG4gICAgICAgIGlmIChmb3JtLnBhcmVudCAmJiBmb3JtLmNoaWxkKVxyXG4gICAgICAgICAgICB0aGlzLmdlbmVyYWxJbmZvcm1hdGlvbkRhdGEgPSB7XHJcbiAgICAgICAgICAgICAgICAuLi5mb3JtLnBhcmVudC5nZXRSYXdWYWx1ZSgpLFxyXG4gICAgICAgICAgICAgICAgLi4uZm9ybS5jaGlsZC5nZXRSYXdWYWx1ZSgpLFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBmYWlsb3Zlck1lY2hhbmlzbShmb3JtOiBGb3JtR3JvdXApOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmlzRmFpbG92ZXJNZWNoYW5pc21WYWxpZCA9IGZvcm0udmFsaWQ7XHJcbiAgICAgICAgdGhpcy5mYWlsb3Zlck1lY2hhbmlzbURhdGEgPSBmb3JtLmdldFJhd1ZhbHVlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHRhcmdldEF1ZGllbmNlKHRhcmdldDoge1xyXG4gICAgICAgIHRhcmdldEF1ZGllbmNlOiBzdHJpbmdbXTtcclxuICAgICAgICBudW1iZXJDb3VudDogbnVtYmVyO1xyXG4gICAgICAgIGlzVXBsb2FkOiBib29sZWFuO1xyXG4gICAgICAgIGZpbGU6IGFueTtcclxuICAgIH0pOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnRhcmdldEF1ZGllbmNlRmlsZSA9IHRhcmdldC5maWxlO1xyXG4gICAgICAgIHRoaXMudGFyZ2V0QXVkaWVuY2VEYXRhID0gdGFyZ2V0LnRhcmdldEF1ZGllbmNlO1xyXG4gICAgICAgIHRoaXMudGFyZ2V0QXVkaWVuY2VDb3VudCA9IHRhcmdldC5udW1iZXJDb3VudDtcclxuICAgICAgICB0aGlzLmlzVXBsb2FkVGFyZ2V0QXVkaWVuY2UgPSB0YXJnZXQuaXNVcGxvYWQ7XHJcbiAgICAgICAgdGhpcy5pc051bWJlckJhc2VJbmZvcm1hdGlvblZhbGlkID1cclxuICAgICAgICAgICAgKHRhcmdldC5pc1VwbG9hZCAmJiB0YXJnZXQuZmlsZT8ubmFtZSkgfHxcclxuICAgICAgICAgICAgKCF0YXJnZXQuaXNVcGxvYWQgJiYgdGFyZ2V0LnRhcmdldEF1ZGllbmNlLmxlbmd0aCA+IDApIHx8XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0Q2FtcGFpZ25TdG9yYWdlPy5nZW5lcmFsSW5mb3JtYXRpb24/LmZvcm0/LmZpbGVJZDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc2NoZWR1bGVyKGZvcm06IEZvcm1Hcm91cCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuc2NoZWR1bGVyRGF0YSA9IGZvcm0uZ2V0UmF3VmFsdWUoKTtcclxuICAgICAgICB0aGlzLmlzU2NoZWR1bGVySW5mb3JtYXRpb25WYWxpZCA9IGZvcm0udmFsaWQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG9uQ2xpY2tTYXZlQW5kTmV4dEJ1dHRvbigpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmlzU3VibWl0ID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgc3dpdGNoICh0aGlzLnBvc2l0aW9uV2l6YXJkKSB7XHJcbiAgICAgICAgICAgIGNhc2UgMTpcclxuICAgICAgICAgICAgICAgIHRoaXMuc2F2ZUdlbmVyYWxJbmZvcm1hdGlvblNlcnZpY2UoKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIDI6XHJcbiAgICAgICAgICAgICAgICAhdGhpcy5pc0xpbmUgPyB0aGlzLnNhdmVGYWlsb3Zlck1lY2hhbmlzbVNlcnZpY2UoKSA6IHRoaXMuc2F2ZU51bWJlckJhc2VzU2VydmljZSgpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgMzpcclxuICAgICAgICAgICAgICAgICF0aGlzLmlzTGluZSA/IHRoaXMuc2F2ZU51bWJlckJhc2VzU2VydmljZSgpIDogdGhpcy5zYXZlU2NoZWR1bGVyU2VydmljZSgpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgNDpcclxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5pc0xpbmUpIHRoaXMuc2F2ZVNjaGVkdWxlclNlcnZpY2UoKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgdGhpcy5pc1N1Ym1pdCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGdldCBnZXRDYW1wYWlnblN0b3JhZ2UoKTogYW55IHtcclxuICAgICAgICByZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3RlbGluLmNhbXBhaWduJylcclxuICAgICAgICAgICAgPyBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd0ZWxpbi5jYW1wYWlnbicpKVxyXG4gICAgICAgICAgICA6IHt9O1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBnZXRCb2R5KCk6IHN0cmluZyB7XHJcbiAgICAgICAgY29uc3QgYm9keSA9XHJcbiAgICAgICAgICAgIHRoaXMuZ2VuZXJhbEluZm9ybWF0aW9uRGF0YT8udGV4dCB8fFxyXG4gICAgICAgICAgICB0aGlzLmdlbmVyYWxJbmZvcm1hdGlvbkRhdGE/LnRlbXBsYXRlPy5ib2R5Py50ZXh0IHx8XHJcbiAgICAgICAgICAgIHRoaXMuZ2VuZXJhbEluZm9ybWF0aW9uRGF0YT8uYm9keT8udGV4dDtcclxuXHJcbiAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgYm9keVxyXG4gICAgICAgICAgICAgICAgPy5zcGxpdCgvXFxcXG58XFxuLylcclxuICAgICAgICAgICAgICAgIC5qb2luKCc8YnIgLz4nKVxyXG4gICAgICAgICAgICAgICAgLnNwbGl0KC9cXFxcdHxcXHQvKVxyXG4gICAgICAgICAgICAgICAgLmpvaW4oJyAgICAnKSA/PyAnJ1xyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG9uQ2hlY2tUd2lsaW9Db3VudGVyVmFsaWQgPSAoKTogYm9vbGVhbiA9PiB7XHJcbiAgICAgICAgY29uc3QgdmFsdWVzR2VuZXJhbCA9IHRoaXMuZ2VuZXJhbEluZm9ybWF0aW9uRGF0YTtcclxuXHJcbiAgICAgICAgaWYgKHZhbHVlc0dlbmVyYWw/Lm1lZGl1bSAhPT0gJ1NNUycpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodmFsdWVzR2VuZXJhbD8uY2hhbm5lbCA9PT0gJ1RFWFQnKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHNlZ21lbnRlZE1lc3NhZ2UgPSBuZXcgU2VnbWVudGVkTWVzc2FnZSh0aGlzLmdldEJvZHkpO1xyXG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSB7XHJcbiAgICAgICAgICAgICAgICBzZWdtZW50czogc2VnbWVudGVkTWVzc2FnZS5zZWdtZW50c0NvdW50LFxyXG4gICAgICAgICAgICAgICAgZW5jb2Rpbmc6IHNlZ21lbnRlZE1lc3NhZ2UuZW5jb2RpbmdOYW1lLFxyXG4gICAgICAgICAgICAgICAgY2hhcmFjdGVyczogc2VnbWVudGVkTWVzc2FnZS5udW1iZXJPZlVuaWNvZGVTY2FsYXJzLFxyXG4gICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgaWYgKHJlc3VsdC5zZWdtZW50cyA+IDEwKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGxldCB2YWx1ZVJlc3VsdCA9IHRoaXMuZ2V0Qm9keTtcclxuICAgICAgICAgICAgQXJyYXkuZnJvbSh2YWx1ZXNHZW5lcmFsLnRlbXBsYXRlPy5ib2R5Py5leGFtcGxlcyB8fCBbXSkubWFwKChlbnRyeSwgaW5kZXgpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICh2YWx1ZXNHZW5lcmFsLnBhcmFtQm9keS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcGxhY2Vob2xkZXIgPSBge3ske2VudHJ5fX19YDtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHZhbHVlc0dlbmVyYWwucGFyYW1Cb2R5W2luZGV4XS5uYW1lO1xyXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlUmVzdWx0ID0gdmFsdWVSZXN1bHQuc3BsaXQocGxhY2Vob2xkZXIpLmpvaW4odmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IHNlZ21lbnRlZE1lc3NhZ2UgPSBuZXcgU2VnbWVudGVkTWVzc2FnZSh2YWx1ZVJlc3VsdCk7XHJcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHtcclxuICAgICAgICAgICAgICAgIHNlZ21lbnRzOiBzZWdtZW50ZWRNZXNzYWdlLnNlZ21lbnRzQ291bnQsXHJcbiAgICAgICAgICAgICAgICBlbmNvZGluZzogc2VnbWVudGVkTWVzc2FnZS5lbmNvZGluZ05hbWUsXHJcbiAgICAgICAgICAgICAgICBjaGFyYWN0ZXJzOiBzZWdtZW50ZWRNZXNzYWdlLm51bWJlck9mVW5pY29kZVNjYWxhcnMsXHJcbiAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICBpZiAocmVzdWx0LnNlZ21lbnRzID4gMTApIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICBwcml2YXRlIHNhdmVHZW5lcmFsSW5mb3JtYXRpb25TZXJ2aWNlKCk6IHZvaWQge1xyXG4gICAgICAgIGlmICghdGhpcy5vbkNoZWNrVHdpbGlvQ291bnRlclZhbGlkKCkpIHtcclxuICAgICAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IoJ1NlZ21lbnQgY2Fubm90IG1vcmUgdGhhbiAxMCcpO1xyXG4gICAgICAgICAgICB0aGlzLmlzU3VibWl0ID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IGJvZHlSZXEgPSBuZXcgR2VuZXJhbEluZm9ybWF0aW9uV0FSZXFNb2RlbCgpLmNsb25lKHtcclxuICAgICAgICAgICAgLi4udGhpcy5nZW5lcmFsSW5mb3JtYXRpb25EYXRhLFxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBjb25zdCBwYXlsb2FkVmFsdWUgPSBib2R5UmVxLmNvbnZlcnQoKTtcclxuXHJcbiAgICAgICAgaWYgKHBheWxvYWRWYWx1ZS50ZW1wbGF0ZSAmJiB0aGlzLmdlbmVyYWxJbmZvcm1hdGlvbkRhdGEudGVtcGxhdGUpIHtcclxuICAgICAgICAgICAgcGF5bG9hZFZhbHVlLnRlbXBsYXRlLnR5cGUgPVxyXG4gICAgICAgICAgICAgICAgcGF5bG9hZFZhbHVlLnRlbXBsYXRlLnR5cGUgfHwgdGhpcy5nZW5lcmFsSW5mb3JtYXRpb25EYXRhLnRlbXBsYXRlLmNhdGVnb3J5O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgcGFyYW1ldGVyTGlzdDogQXJyYXk8UGFyYW1ldGVyPiA9IFtcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgbmFtZTogJ2RhdGEnLFxyXG4gICAgICAgICAgICAgICAgdmFsdWU6IHBheWxvYWRWYWx1ZSxcclxuICAgICAgICAgICAgICAgIGluOiAnYm9keScsXHJcbiAgICAgICAgICAgICAgICB0eXBlOiAnb2JqZWN0JyxcclxuICAgICAgICAgICAgICAgIHdpdGhvdXRLZXlEYXRhOiB0cnVlLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgIF07XHJcblxyXG4gICAgICAgIGNvbnN0IHN1YnMgPSB0aGlzLmFwaUFkYXB0ZXJTZXJ2aWNlXHJcbiAgICAgICAgICAgIC5leGVjdXRlQXBpUmVxdWVzdChcclxuICAgICAgICAgICAgICAgIHBhcmFtZXRlckxpc3QsXHJcbiAgICAgICAgICAgICAgICB0aGlzLmdlbmVyYWxJbmZvcm1hdGlvbkRhdGEuaWRcclxuICAgICAgICAgICAgICAgICAgICA/IGAvY2FtcGFpZ24vJHt0aGlzLmdlbmVyYWxJbmZvcm1hdGlvbkRhdGEuaWR9YFxyXG4gICAgICAgICAgICAgICAgICAgIDogJy9jYW1wYWlnbicsXHJcbiAgICAgICAgICAgICAgICB0aGlzLmdlbmVyYWxJbmZvcm1hdGlvbkRhdGEuaWQgPyAnUFVUJyA6ICdQT1NUJ1xyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoXHJcbiAgICAgICAgICAgICAgICAocmVzcCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwPy5tZXNzYWdlPy50b0xvd2VyQ2FzZSgpICE9PSAnc3VjY2VzcycpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pc1N1Ym1pdCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcclxuICAgICAgICAgICAgICAgICAgICAgICAgJ3RlbGluLmNhbXBhaWduJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5nZXRDYW1wYWlnblN0b3JhZ2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi57XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhbEluZm9ybWF0aW9uOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiByZXNwLmRhdGEuaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm06IHRoaXMuZ2VuZXJhbEluZm9ybWF0aW9uRGF0YSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzU3VibWl0ID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3NpdGlvbldpemFyZCArPSAxO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICgpID0+ICh0aGlzLmlzU3VibWl0ID0gZmFsc2UpXHJcbiAgICAgICAgICAgICk7XHJcblxyXG4gICAgICAgIHRoaXMuc3Vic2NyaWJlcnMucHVzaChzdWJzKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHNhdmVGYWlsb3Zlck1lY2hhbmlzbVNlcnZpY2UoKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgYm9keVJlcSA9IG5ldyBGYWlsb3ZlclJlcU1vZGVsKCkuY2xvbmUoe1xyXG4gICAgICAgICAgICAuLi50aGlzLmZhaWxvdmVyTWVjaGFuaXNtRGF0YSxcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgY29uc3QgcGFyYW1ldGVyTGlzdDogQXJyYXk8UGFyYW1ldGVyPiA9IFtcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgbmFtZTogJ2RhdGEnLFxyXG4gICAgICAgICAgICAgICAgdmFsdWU6IGJvZHlSZXEuY29udmVydCgpLFxyXG4gICAgICAgICAgICAgICAgaW46ICdib2R5JyxcclxuICAgICAgICAgICAgICAgIHR5cGU6ICdvYmplY3QnLFxyXG4gICAgICAgICAgICAgICAgd2l0aG91dEtleURhdGE6IHRydWUsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgXTtcclxuXHJcbiAgICAgICAgY29uc3Qgc3VicyA9IHRoaXMuYXBpQWRhcHRlclNlcnZpY2VcclxuICAgICAgICAgICAgLmV4ZWN1dGVBcGlSZXF1ZXN0KFxyXG4gICAgICAgICAgICAgICAgcGFyYW1ldGVyTGlzdCxcclxuICAgICAgICAgICAgICAgIGAvY2FtcGFpZ24vJHt0aGlzLmdldENhbXBhaWduU3RvcmFnZT8uZ2VuZXJhbEluZm9ybWF0aW9uPy5pZH0vZmFpbG92ZXJgLFxyXG4gICAgICAgICAgICAgICAgJ1BPU1QnXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAgICAgICAgIChyZXNwKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3A/Lm1lc3NhZ2U/LnRvTG93ZXJDYXNlKCkgIT09ICdzdWNjZXNzJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlzU3VibWl0ID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAndGVsaW4uY2FtcGFpZ24nLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLmdldENhbXBhaWduU3RvcmFnZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWlsb3ZlcjogdGhpcy5mYWlsb3Zlck1lY2hhbmlzbURhdGEsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNTdWJtaXQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBvc2l0aW9uV2l6YXJkICs9IDE7XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgKCkgPT4gKHRoaXMuaXNTdWJtaXQgPSBmYWxzZSlcclxuICAgICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgdGhpcy5zdWJzY3JpYmVycy5wdXNoKHN1YnMpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc2F2ZU51bWJlckJhc2VzU2VydmljZSgpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy50YXJnZXRBdWRpZW5jZURhdGEubGVuZ3RoID09PSAwIHx8IHRoaXMuaXNVcGxvYWRUYXJnZXRBdWRpZW5jZSkge1xyXG4gICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcclxuICAgICAgICAgICAgICAgICd0ZWxpbi5jYW1wYWlnbicsXHJcbiAgICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeSh7XHJcbiAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5nZXRDYW1wYWlnblN0b3JhZ2UsXHJcbiAgICAgICAgICAgICAgICAgICAgLi4ue1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRBdWRpZW5jZTogdGhpcy50YXJnZXRBdWRpZW5jZURhdGEsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldEF1ZGllbmNlQ291bnQ6IHRoaXMudGFyZ2V0QXVkaWVuY2VDb3VudCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0QXVkaWVuY2VGaWxlOiB0aGlzLnRhcmdldEF1ZGllbmNlRmlsZSxcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuaXNTdWJtaXQgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5wb3NpdGlvbldpemFyZCArPSAxO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBwYXJhbWV0ZXJMaXN0OiBBcnJheTxQYXJhbWV0ZXI+ID0gW1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBuYW1lOiAnZGF0YScsXHJcbiAgICAgICAgICAgICAgICB2YWx1ZToge1xyXG4gICAgICAgICAgICAgICAgICAgIHRhcmdldHM6IHRoaXMudGFyZ2V0QXVkaWVuY2VEYXRhLFxyXG4gICAgICAgICAgICAgICAgICAgIG51bWJlckNvdW50OiB0aGlzLnRhcmdldEF1ZGllbmNlQ291bnQsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgaW46ICdib2R5JyxcclxuICAgICAgICAgICAgICAgIHR5cGU6ICdvYmplY3QnLFxyXG4gICAgICAgICAgICAgICAgd2l0aG91dEtleURhdGE6IHRydWUsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgXTtcclxuXHJcbiAgICAgICAgY29uc3Qgc3VicyA9IHRoaXMuYXBpQWRhcHRlclNlcnZpY2VcclxuICAgICAgICAgICAgLmV4ZWN1dGVBcGlSZXF1ZXN0KFxyXG4gICAgICAgICAgICAgICAgcGFyYW1ldGVyTGlzdCxcclxuICAgICAgICAgICAgICAgIGAvY2FtcGFpZ24vJHt0aGlzLmdldENhbXBhaWduU3RvcmFnZT8uZ2VuZXJhbEluZm9ybWF0aW9uPy5pZH0vdGFyZ2V0Y2F0ZWdvcnlgLFxyXG4gICAgICAgICAgICAgICAgJ1BPU1QnXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAgICAgICAgIChyZXNwKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3A/Lm1lc3NhZ2U/LnRvTG93ZXJDYXNlKCkgIT09ICdzdWNjZXNzJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlzU3VibWl0ID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAndGVsaW4uY2FtcGFpZ24nLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLmdldENhbXBhaWduU3RvcmFnZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRBdWRpZW5jZTogdGhpcy50YXJnZXRBdWRpZW5jZURhdGEsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0QXVkaWVuY2VDb3VudDogdGhpcy50YXJnZXRBdWRpZW5jZUNvdW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldEF1ZGllbmNlRmlsZTogdGhpcy50YXJnZXRBdWRpZW5jZUZpbGUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNTdWJtaXQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBvc2l0aW9uV2l6YXJkICs9IDE7XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgKCkgPT4gKHRoaXMuaXNTdWJtaXQgPSBmYWxzZSlcclxuICAgICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgdGhpcy5zdWJzY3JpYmVycy5wdXNoKHN1YnMpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc2F2ZVNjaGVkdWxlclNlcnZpY2UoKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgYm9keVJlcSA9IG5ldyBTY2hlZHVsZXJSZXFNb2RlbCgpLmNsb25lKHtcclxuICAgICAgICAgICAgLi4udGhpcy5zY2hlZHVsZXJEYXRhLFxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBjb25zdCBwYXJhbWV0ZXJMaXN0OiBBcnJheTxQYXJhbWV0ZXI+ID0gW1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBuYW1lOiAnZGF0YScsXHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogYm9keVJlcS5jb252ZXJ0KCksXHJcbiAgICAgICAgICAgICAgICBpbjogJ2JvZHknLFxyXG4gICAgICAgICAgICAgICAgdHlwZTogJ29iamVjdCcsXHJcbiAgICAgICAgICAgICAgICB3aXRob3V0S2V5RGF0YTogdHJ1ZSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICBdO1xyXG5cclxuICAgICAgICBjb25zdCBzdWJzID0gdGhpcy5hcGlBZGFwdGVyU2VydmljZVxyXG4gICAgICAgICAgICAuZXhlY3V0ZUFwaVJlcXVlc3QoXHJcbiAgICAgICAgICAgICAgICBwYXJhbWV0ZXJMaXN0LFxyXG4gICAgICAgICAgICAgICAgYC9jYW1wYWlnbi8ke3RoaXMuZ2V0Q2FtcGFpZ25TdG9yYWdlPy5nZW5lcmFsSW5mb3JtYXRpb24/LmlkfS9zY2hlZHVsZWAsXHJcbiAgICAgICAgICAgICAgICAnUE9TVCdcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgICAgICAgKHJlc3ApID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcD8ubWVzc2FnZT8udG9Mb3dlckNhc2UoKSAhPT0gJ3N1Y2Nlc3MnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXNTdWJtaXQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICd0ZWxpbi5jYW1wYWlnbicsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuZ2V0Q2FtcGFpZ25TdG9yYWdlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ue1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjaGVkdWxlcjogdGhpcy5zY2hlZHVsZXJEYXRhLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzU3VibWl0ID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3NpdGlvbldpemFyZCArPSAxO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICgpID0+ICh0aGlzLmlzU3VibWl0ID0gZmFsc2UpXHJcbiAgICAgICAgICAgICk7XHJcblxyXG4gICAgICAgIHRoaXMuc3Vic2NyaWJlcnMucHVzaChzdWJzKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgb25QcmV2aW91cygpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnBvc2l0aW9uV2l6YXJkIC09IDE7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGNoYW5nZUN1cnJlbnRWaWV3KGFyZWE6IE1haW5BcmVhKSB7XHJcbiAgICAgICAgdGhpcy5vcGVuQ29uZmlybWF0aW9uRGlhbG9nKGFyZWEpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgb3BlbkNvbmZpcm1hdGlvbkRpYWxvZyhhcmVhOiBNYWluQXJlYSk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGNvbmZpcm1hdGlvbiA9IG5ldyBDb25maXJtYXRpb25Nb2RlbCgpO1xyXG5cclxuICAgICAgICBjb25maXJtYXRpb24udGl0bGUgPSAnQ2FuY2VsIEFkZCBCcm9hZGNhc3QnO1xyXG4gICAgICAgIGNvbmZpcm1hdGlvbi5jb250ZW50ID0gYEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBjYW5jZWw8YnIvPiBBZGQgQnJvYWRjYXN0P2A7XHJcbiAgICAgICAgY29uZmlybWF0aW9uLmJ0blN1Ym1pdFJlZCA9ICdZZXMnO1xyXG4gICAgICAgIGNvbmZpcm1hdGlvbi5idG5DYW5jZWwgPSAnTm8nO1xyXG5cclxuICAgICAgICBjb25zdCBzdWJzID0gdGhpcy5kaWFsb2dcclxuICAgICAgICAgICAgLm9wZW4oQ29uZmlybWF0aW9uQ29tcG9uZW50LCB7XHJcbiAgICAgICAgICAgICAgICBhdXRvRm9jdXM6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgYmFja2Ryb3BDbGFzczogJ292ZXJsYXktYmFja2Ryb3AtZGlhbG9nJyxcclxuICAgICAgICAgICAgICAgIGRhdGE6IGNvbmZpcm1hdGlvbixcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgLmFmdGVyQ2xvc2VkKClcclxuICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzcCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHJlc3ApIHtcclxuICAgICAgICAgICAgICAgICAgICB3aW5kb3cuaGlzdG9yeS5yZXBsYWNlU3RhdGUoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBgLyR7dGhpcy5nZXRDYW1wYWlnblN0b3JhZ2U/LmdlbmVyYWxJbmZvcm1hdGlvbj8uaWR9YCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgJy9zZWN1cmUvY2FtcGFpZ24nXHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50Vmlldy5lbWl0KGFyZWEpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5zdWJzY3JpYmVycy5wdXNoKHN1YnMpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBvblN1Ym1pdEZvckFwcHJvdmFsKCk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IHBhcmFtZXRlckxpc3Q6IEFycmF5PFBhcmFtZXRlcj4gPSBbXTtcclxuICAgICAgICB0aGlzLmlzU3VibWl0ID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuZ2V0Q2FtcGFpZ25TdG9yYWdlPy50YXJnZXRBdWRpZW5jZUZpbGU/Lm5hbWUpXHJcbiAgICAgICAgICAgIHBhcmFtZXRlckxpc3QucHVzaCh7XHJcbiAgICAgICAgICAgICAgICBuYW1lOiAnaXNGaWxlJyxcclxuICAgICAgICAgICAgICAgIHZhbHVlOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgaW46ICdxdWVyeScsXHJcbiAgICAgICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGNvbnN0IHN1YnMgPSB0aGlzLmFwaUFkYXB0ZXJTZXJ2aWNlXHJcbiAgICAgICAgICAgIC5leGVjdXRlQXBpUmVxdWVzdChcclxuICAgICAgICAgICAgICAgIHBhcmFtZXRlckxpc3QsXHJcbiAgICAgICAgICAgICAgICBgL2NhbXBhaWduLyR7dGhpcy5nZXRDYW1wYWlnblN0b3JhZ2U/LmdlbmVyYWxJbmZvcm1hdGlvbj8uaWR9L3N1Ym1pdGAsXHJcbiAgICAgICAgICAgICAgICAnUE9TVCdcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgICAgICAgKHJlc3ApID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcD8ubWVzc2FnZT8udG9Mb3dlckNhc2UoKSAhPT0gJ3N1Y2Nlc3MnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXNTdWJtaXQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgd2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7fSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgYC8ke3RoaXMuZ2V0Q2FtcGFpZ25TdG9yYWdlPy5nZW5lcmFsSW5mb3JtYXRpb24/LmlkfWAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICcvc2VjdXJlL2NhbXBhaWduJ1xyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudG9hc3RyLnN1Y2Nlc3MoJ0NhbXBhaWduIHN1Ym1pdHRlZCBmb3IgYXBwcm92YWwhJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc1N1Ym1pdCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudFZpZXcuZW1pdCh0aGlzLmN1cnJlbnRWaWV3cy5DYW1wYWlnbkluZGV4KTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAoKSA9PiAodGhpcy5pc1N1Ym1pdCA9IGZhbHNlKVxyXG4gICAgICAgICAgICApO1xyXG5cclxuICAgICAgICB0aGlzLnN1YnNjcmliZXJzLnB1c2goc3Vicyk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5zdWJzY3JpYmVycy5mb3JFYWNoKChlYWNoKSA9PiBlYWNoLnVuc3Vic2NyaWJlKCkpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==