surveysparrow-ionic-plugin 1.0.7-beta.19 → 1.0.7-beta.20

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.
@@ -10,6 +10,7 @@ export class WebViewComponent {
10
10
  sanitizer;
11
11
  url = '';
12
12
  webviewType = 'classic';
13
+ isMiniCard = false;
13
14
  safeUrl = null;
14
15
  iframe;
15
16
  constructor(sanitizer) {
@@ -82,12 +83,13 @@ export class WebViewComponent {
82
83
  }
83
84
  }
84
85
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: WebViewComponent, deps: [{ token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component });
85
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.3", type: WebViewComponent, isStandalone: true, selector: "WebViewComponent", inputs: { url: "url", webviewType: "webviewType" }, host: { listeners: { "window:message": "onMessage($event)" } }, viewQueries: [{ propertyName: "iframe", first: true, predicate: ["iframeRef"], descendants: true }], ngImport: i0, template: `
86
- <div style="overflow: hidden; height: 100%;">
86
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.3", type: WebViewComponent, isStandalone: true, selector: "WebViewComponent", inputs: { url: "url", webviewType: "webviewType", isMiniCard: "isMiniCard" }, host: { listeners: { "window:message": "onMessage($event)" } }, viewQueries: [{ propertyName: "iframe", first: true, predicate: ["iframeRef"], descendants: true }], ngImport: i0, template: `
87
+ <div style="overflow: hidden; height: 100%; border-radius: {{isMiniCard ? 12 : 0}}px; padding-left: {{isMiniCard ? 12 : 0}}px; padding-right: {{isMiniCard ? 12 : 0}}px; box-sizing: border-box;">
87
88
  <iframe
89
+ allow="camera; microphone; geolocation; display-capture; autoplay; clipboard-read; clipboard-write;"
88
90
  #iframeRef
89
91
  [src]="safeUrl"
90
- style="width: 100%; height: 100%; display: block;"
92
+ style="width: 100%; height: 100%; display: block; border-radius: {{isMiniCard ? 12 : 0}}px;"
91
93
  frameborder="0"
92
94
  >
93
95
  </iframe>
@@ -99,11 +101,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImpor
99
101
  args: [{
100
102
  selector: 'WebViewComponent',
101
103
  template: `
102
- <div style="overflow: hidden; height: 100%;">
104
+ <div style="overflow: hidden; height: 100%; border-radius: {{isMiniCard ? 12 : 0}}px; padding-left: {{isMiniCard ? 12 : 0}}px; padding-right: {{isMiniCard ? 12 : 0}}px; box-sizing: border-box;">
103
105
  <iframe
106
+ allow="camera; microphone; geolocation; display-capture; autoplay; clipboard-read; clipboard-write;"
104
107
  #iframeRef
105
108
  [src]="safeUrl"
106
- style="width: 100%; height: 100%; display: block;"
109
+ style="width: 100%; height: 100%; display: block; border-radius: {{isMiniCard ? 12 : 0}}px;"
107
110
  frameborder="0"
108
111
  >
109
112
  </iframe>
@@ -116,6 +119,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImpor
116
119
  type: Input
117
120
  }], webviewType: [{
118
121
  type: Input
122
+ }], isMiniCard: [{
123
+ type: Input
119
124
  }], iframe: [{
120
125
  type: ViewChild,
121
126
  args: ['iframeRef']
@@ -309,10 +314,10 @@ export class SpotCheckComponent {
309
314
  }
310
315
  };
311
316
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: SpotCheckComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
312
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.3", type: SpotCheckComponent, isStandalone: true, selector: "SpotCheckComponent", ngImport: i0, template: "<div [ngStyle]=\"componentStyles.wrapperStyles\">\n <div [ngStyle]=\"componentStyles.styles\">\n <div style=\"position: relative; height: 100%;\">\n <spotcheck-close-button />\n \n <WebViewComponent\n *ngIf=\"state.classicUrl && state.classicUrl.length > 0 && state.spotcheckURL.length > 0 && state.spotCheckType === 'classic'\"\n [url]=\"state.classicUrl\"\n [webviewType]=\"'classic'\"\n />\n \n <WebViewComponent\n *ngIf=\"state.chatUrl && state.chatUrl.length > 0 && state.spotcheckURL.length > 0 && state.spotCheckType === 'chat'\"\n [url]=\"state.chatUrl\"\n [webviewType]=\"'chat'\"\n />\n\n <div *ngIf=\"state.spotChecksMode === 'miniCard' && state.avatarEnabled\">\n <div style=\"position: absolute; bottom: -66px; left: 16px; z-index: 100001;\">\n <img [src]=\"avatarUrl\" style=\"width: 56px; height: 56px; border-radius: 50px; background-color: white;\"/>\n </div>\n </div>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: WebViewComponent, selector: "WebViewComponent", inputs: ["url", "webviewType"] }, { kind: "component", type: CloseButtonComponent, selector: "spotcheck-close-button", inputs: ["size", "strokeWidth"] }] });
317
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.3", type: SpotCheckComponent, isStandalone: true, selector: "SpotCheckComponent", ngImport: i0, template: "<div [ngStyle]=\"componentStyles.wrapperStyles\" class=\"safe-area\">\n <div [ngStyle]=\"componentStyles.styles\">\n <div style=\"position: relative; height: 100%;\">\n <spotcheck-close-button />\n \n <WebViewComponent\n *ngIf=\"state.classicUrl && state.classicUrl.length > 0 && state.spotcheckURL.length > 0 && state.spotCheckType === 'classic'\"\n [url]=\"state.classicUrl\"\n [webviewType]=\"'classic'\"\n [isMiniCard]=\"state.spotChecksMode === 'miniCard'\"\n />\n \n <WebViewComponent\n *ngIf=\"state.chatUrl && state.chatUrl.length > 0 && state.spotcheckURL.length > 0 && state.spotCheckType === 'chat'\"\n [url]=\"state.chatUrl\"\n [webviewType]=\"'chat'\"\n [isMiniCard]=\"state.spotChecksMode === 'miniCard'\"\n />\n\n <div *ngIf=\"state.spotChecksMode === 'miniCard' && state.avatarEnabled\">\n <div style=\"position: absolute; bottom: -66px; left: 16px; z-index: 100001;\">\n <img [src]=\"avatarUrl\" style=\"width: 56px; height: 56px; border-radius: 50px; background-color: white;\"/>\n </div>\n </div>\n </div>\n </div>\n</div>\n", styles: [".safe-area{padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom);padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right);box-sizing:border-box}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: WebViewComponent, selector: "WebViewComponent", inputs: ["url", "webviewType", "isMiniCard"] }, { kind: "component", type: CloseButtonComponent, selector: "spotcheck-close-button", inputs: ["size", "strokeWidth"] }] });
313
318
  }
314
319
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: SpotCheckComponent, decorators: [{
315
320
  type: Component,
316
- args: [{ selector: 'SpotCheckComponent', standalone: true, imports: [CommonModule, WebViewComponent, CloseButtonComponent], template: "<div [ngStyle]=\"componentStyles.wrapperStyles\">\n <div [ngStyle]=\"componentStyles.styles\">\n <div style=\"position: relative; height: 100%;\">\n <spotcheck-close-button />\n \n <WebViewComponent\n *ngIf=\"state.classicUrl && state.classicUrl.length > 0 && state.spotcheckURL.length > 0 && state.spotCheckType === 'classic'\"\n [url]=\"state.classicUrl\"\n [webviewType]=\"'classic'\"\n />\n \n <WebViewComponent\n *ngIf=\"state.chatUrl && state.chatUrl.length > 0 && state.spotcheckURL.length > 0 && state.spotCheckType === 'chat'\"\n [url]=\"state.chatUrl\"\n [webviewType]=\"'chat'\"\n />\n\n <div *ngIf=\"state.spotChecksMode === 'miniCard' && state.avatarEnabled\">\n <div style=\"position: absolute; bottom: -66px; left: 16px; z-index: 100001;\">\n <img [src]=\"avatarUrl\" style=\"width: 56px; height: 56px; border-radius: 50px; background-color: white;\"/>\n </div>\n </div>\n </div>\n </div>\n</div>\n" }]
321
+ args: [{ selector: 'SpotCheckComponent', standalone: true, imports: [CommonModule, WebViewComponent, CloseButtonComponent], template: "<div [ngStyle]=\"componentStyles.wrapperStyles\" class=\"safe-area\">\n <div [ngStyle]=\"componentStyles.styles\">\n <div style=\"position: relative; height: 100%;\">\n <spotcheck-close-button />\n \n <WebViewComponent\n *ngIf=\"state.classicUrl && state.classicUrl.length > 0 && state.spotcheckURL.length > 0 && state.spotCheckType === 'classic'\"\n [url]=\"state.classicUrl\"\n [webviewType]=\"'classic'\"\n [isMiniCard]=\"state.spotChecksMode === 'miniCard'\"\n />\n \n <WebViewComponent\n *ngIf=\"state.chatUrl && state.chatUrl.length > 0 && state.spotcheckURL.length > 0 && state.spotCheckType === 'chat'\"\n [url]=\"state.chatUrl\"\n [webviewType]=\"'chat'\"\n [isMiniCard]=\"state.spotChecksMode === 'miniCard'\"\n />\n\n <div *ngIf=\"state.spotChecksMode === 'miniCard' && state.avatarEnabled\">\n <div style=\"position: absolute; bottom: -66px; left: 16px; z-index: 100001;\">\n <img [src]=\"avatarUrl\" style=\"width: 56px; height: 56px; border-radius: 50px; background-color: white;\"/>\n </div>\n </div>\n </div>\n </div>\n</div>\n", styles: [".safe-area{padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom);padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right);box-sizing:border-box}\n"] }]
317
322
  }], ctorParameters: () => [] });
318
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3BvdENoZWNrQ29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FuZ3VsYXItdWkvbGliL3Nwb3RjaGVja3MvU3BvdENoZWNrQ29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vc3JjL2FuZ3VsYXItdWkvbGliL3Nwb3RjaGVja3MvU3BvdENoZWNrQ29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxLQUFLLEVBRUwsU0FBUyxFQUdULFlBQVksR0FDYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFHL0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxnQ0FBZ0MsRUFBRSw4QkFBOEIsRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRTVJLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVyRCxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7Ozs7QUFrQjFCLE1BQU0sT0FBTyxnQkFBZ0I7SUFPUDtJQU5YLEdBQUcsR0FBVyxFQUFFLENBQUM7SUFDakIsV0FBVyxHQUF1QixTQUFTLENBQUM7SUFFckQsT0FBTyxHQUEyQixJQUFJLENBQUM7SUFDZixNQUFNLENBQWlDO0lBRS9ELFlBQW9CLFNBQXVCO1FBQXZCLGNBQVMsR0FBVCxTQUFTLENBQWM7SUFBRyxDQUFDO0lBQy9DLFFBQVE7UUFDTixJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNiLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyw4QkFBOEIsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDekUsQ0FBQztJQUNILENBQUM7SUFFRCxlQUFlO1FBQ2IsTUFBTSxZQUFZLEdBQUcsd0JBQXdCLEVBQUUsQ0FBQztRQUNoRCxNQUFNLFVBQVUsR0FBRyxJ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b0JBQW9CO29CQUMzQyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUVQLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxRQUFRLENBQUM7b0JBQ2xDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxrQkFBa0I7b0JBQzNDLFVBQVUsRUFBRSxhQUFhO29CQUN6QixPQUFPLEVBQUUsVUFBVTtpQkFDcEIsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztRQUNILENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsT0FBTyxDQUFDLEdBQUcsQ0FBQyw0QkFBNEIsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDbkUsQ0FBQztJQUNILENBQUMsQ0FBQzt1R0EzRVMsa0JBQWtCOzJGQUFsQixrQkFBa0IsOEVDdk4vQixpZ0NBeUJBLDJDRDRMWSxZQUFZLHdOQWxMWCxnQkFBZ0IsNkZBMkhoQixvQkFBb0I7OzJGQXlEcEIsa0JBQWtCO2tCQU45QixTQUFTOytCQUNFLG9CQUFvQixjQUVsQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsb0JBQW9CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBPbkluaXQsXG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgVmlld0NoaWxkLFxuICBFbGVtZW50UmVmLFxuICBBZnRlclZpZXdJbml0LFxuICBIb3N0TGlzdGVuZXIsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlUmVzb3VyY2VVcmwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IGNsb3NlU3BvdENoZWNrLCBjbG9zZVNwb3RDaGVja0FuZEhhbmRsZVN1cnZleUVuZCwgZ2V0U3BvdGNoZWNrQ29tcG9uZW50Q3NzU3R5bGVzLCBoYW5kbGVTdXJ2ZXlFbmQsIGlzY2hhdFN1cnZleSB9IGZyb20gJy4vaGVscGVycyc7XG5pbXBvcnQgeyBTcG90Y2hlY2tTdGF0ZSB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgZ2V0U3BvdGNoZWNrU3RhdGVTZXJ2aWNlIH0gZnJvbSAnLi9oZWxwZXJzJztcbmltcG9ydCB7IFNwb3RjaGVja1N0YXRlU2VydmljZSB9IGZyb20gJy4vU3BvdGNoZWNrU3RhdGVTZXJ2aWNlJztcbmltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ1dlYlZpZXdDb21wb25lbnQnLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgc3R5bGU9XCJvdmVyZmxvdzogaGlkZGVuOyBoZWlnaHQ6IDEwMCU7XCI+XG4gICAgICA8aWZyYW1lXG4gICAgICAgICNpZnJhbWVSZWZcbiAgICAgICAgW3NyY109XCJzYWZlVXJsXCJcbiAgICAgICAgc3R5bGU9XCJ3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlOyBkaXNwbGF5OiBibG9jaztcIlxuICAgICAgICBmcmFtZWJvcmRlcj1cIjBcIlxuICAgICAgPlxuICAgICAgPC9pZnJhbWU+XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxufSlcbmV4cG9ydCBjbGFzcyBXZWJWaWV3Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcbiAgQElucHV0KCkgdXJsOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgd2Vidmlld1R5cGU6ICdjbGFzc2ljJyB8ICdjaGF0JyA9ICdjbGFzc2ljJztcblxuICBzYWZlVXJsOiBTYWZlUmVzb3VyY2VVcmwgfCBudWxsID0gbnVsbDtcbiAgQFZpZXdDaGlsZCgnaWZyYW1lUmVmJykgaWZyYW1lITogRWxlbWVudFJlZjxIVE1MSUZyYW1lRWxlbWVudD47XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzYW5pdGl6ZXI6IERvbVNhbml0aXplcikge31cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKHRoaXMudXJsKSB7XG4gICAgICB0aGlzLnNhZmVVcmwgPSB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0UmVzb3VyY2VVcmwodGhpcy51cmwpO1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBjb25zdCBzdGF0ZVNlcnZpY2UgPSBnZXRTcG90Y2hlY2tTdGF0ZVNlcnZpY2UoKTtcbiAgICBjb25zdCB3ZWJWaWV3UmVmID0gdGhpcy5pZnJhbWUubmF0aXZlRWxlbWVudDtcblxuICAgIGlmICh0aGlzLndlYnZpZXdUeXBlID09PSAnY2xhc3NpYycpIHtcbiAgICAgIHN0YXRlU2VydmljZS5zZXRTdGF0ZSh7XG4gICAgICAgIGNsYXNzaWNXZWJWaWV3UmVmOiB3ZWJWaWV3UmVmLFxuICAgICAgICBpc0NsYXNzaWNMb2FkaW5nOiBmYWxzZSxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdGF0ZVNlcnZpY2Uuc2V0U3RhdGUoe1xuICAgICAgICBjaGF0V2ViVmlld1JlZjogd2ViVmlld1JlZixcbiAgICAgICAgaXNDaGF0TG9hZGluZzogZmFsc2UsXG4gICAgICB9KTtcbiAgICB9XG4gICAgdGhpcy5zZXR1cElmcmFtZUxvYWRMaXN0ZW5lcigpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cElmcmFtZUxvYWRMaXN0ZW5lcigpIHtcbiAgICBjb25zdCBpZnJhbWUgPSB0aGlzLmlmcmFtZS5uYXRpdmVFbGVtZW50O1xuICAgIGlmcmFtZS5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgKCkgPT4ge1xuICAgICAgY29uc3Qgc3RhdGVTZXJ2aWNlID0gZ2V0U3BvdGNoZWNrU3RhdGVTZXJ2aWNlKCk7XG4gICAgICBpZiAodGhpcy53ZWJ2aWV3VHlwZSA9PT0gJ2NsYXNzaWMnKSB7XG4gICAgICAgIHN0YXRlU2VydmljZS5zZXRTdGF0ZSh7IGlzQ2xhc3NpY0xvYWRpbmc6IGZhbHNlIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3RhdGVTZXJ2aWNlLnNldFN0YXRlKHsgaXNDaGF0TG9hZGluZzogZmFsc2UgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6bWVzc2FnZScsIFsnJGV2ZW50J10pXG4gIG9uTWVzc2FnZShldmVudDogTWVzc2FnZUV2ZW50KSB7XG4gICAgY29uc3Qgc3RhdGVTZXJ2aWNlID0gZ2V0U3BvdGNoZWNrU3RhdGVTZXJ2aWNlKCk7XG4gICAgY29uc3QgeyBkYXRhIH0gPSBldmVudDtcbiAgICBzd2l0Y2ggKGRhdGEudHlwZSkge1xuICAgICAgY2FzZSAnc2xpZGVJbkZyYW1lJzpcbiAgICAgICAgaWYgKGRhdGEubW91bnRlZCkge1xuICAgICAgICAgIHN0YXRlU2VydmljZS5zZXRTdGF0ZSh7IGlzTW91bnRlZDogdHJ1ZSB9KTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAncmVzaXplV2luZG93JzpcbiAgICAgICAgaWYgKGRhdGEuc2l6ZSkge1xuICAgICAgICAgIHN0YXRlU2VydmljZS5zZXRTdGF0ZSh7XG4gICAgICAgICAgICBjdXJyZW50UXVlc3Rpb25IZWlnaHQ6IGRhdGEuc2l6ZS5oZWlnaHQsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAoZGF0YS5pc0Nsb3NlQnV0dG9uRW5hYmxlZCkge1xuICAgICAgICAgIHN0YXRlU2VydmljZS5zZXRTdGF0ZSh7XG4gICAgICAgICAgICBpc0Nsb3NlQnV0dG9uRW5hYmxlZDogZGF0YS5pc0Nsb3NlQnV0dG9uRW5hYmxlZCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnc3VydmV5Q29tcGxldGVkJzpcbiAgICAgICAgY2xvc2VTcG90Q2hlY2tBbmRIYW5kbGVTdXJ2ZXlFbmQoKTtcbiAgICAgICAgLy8gc3BvdGNoZWNrc0xpc3RlbmVyLmVtaXRTdXJ2ZXlDb21wbGV0ZWQoZGF0YS5yZXNwb25zZSk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdzdXJ2ZXlMb2FkU3RhcnRlZCc6XG4gICAgICAgIC8vIHNwb3RjaGVja3NMaXN0ZW5lci5lbWl0U3VydmV5TG9hZFN0YXJ0ZWQoZGF0YS5zdXJ2ZXlEZXRhaWxzKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjbG9zZS1zdmcnLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxzdmdcbiAgICAgIFthdHRyLndpZHRoXT1cInNpemVcIlxuICAgICAgW2F0dHIuaGVpZ2h0XT1cInNpemVcIlxuICAgICAgdmlld0JveD1cIjAgMCAzMiAzMlwiXG4gICAgICBmaWxsPVwibm9uZVwiXG4gICAgICB4bWxucz1cImh0dHBzOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgPlxuICAgICAgPHBhdGhcbiAgICAgICAgZD1cIk0xMC42NjY1IDEwLjY2N0wyMS4zMzMyIDIxLjMzMzdNMjEuMzMzMiAxMC42NjdMMTAuNjY2NSAyMS4zMzM3XCJcbiAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInN0cm9rZVwiXG4gICAgICAgIFthdHRyLnN0cm9rZS13aWR0aF09XCJzdHJva2VXaWR0aFwiXG4gICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAvPlxuICAgIDwvc3ZnPlxuICBgLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgQ2xvc2VTVkdDb21wb25lbnQge1xuICBASW5wdXQoKSBzaXplOiBudW1iZXIgPSAzMjtcbiAgQElucHV0KCkgc3Ryb2tlOiBzdHJpbmcgPSAnIzkxOTE5MSc7XG4gIEBJbnB1dCgpIHN0cm9rZVdpZHRoOiBudW1iZXIgPSAxLjU7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3Nwb3RjaGVjay1jbG9zZS1idXR0b24nLFxuICB0ZW1wbGF0ZTogYFxuICAgICAgPGRpdiBzdHlsZT1cInBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAtMzZweDsgcmlnaHQ6IDE2cHg7IHotaW5kZXg6IDEwMDAwMTsgY3Vyc29yOiBwb2ludGVyOyBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsgYm9yZGVyLXJhZGl1czogNTBweDtcIiAoY2xpY2spPVwib25DbGljaygpXCIgKm5nSWY9XCJpc1Zpc2libGUgJiYgaXNNaW5pQ2FyZFwiPlxuICAgICAgICA8Y2xvc2Utc3ZnIFtzaXplXT1cInNpemVcIiBbc3Ryb2tlXT1cInN0cm9rZVwiIFtzdHJva2VXaWR0aF09XCJzdHJva2VXaWR0aFwiIHN0eWxlPVwiZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XCIvPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IHN0eWxlPVwicG9zaXRpb246IGFic29sdXRlOyB0b3A6IDE2cHg7IHJpZ2h0OiAxNnB4OyB6LWluZGV4OiAxMDAwMDE7IGN1cnNvcjogcG9pbnRlcjtcIiAoY2xpY2spPVwib25DbGljaygpXCIgKm5nSWY9XCJpc1Zpc2libGUgJiYgIWlzTWluaUNhcmRcIj5cbiAgICAgICAgPGNsb3NlLXN2ZyBbc2l6ZV09XCJzaXplXCIgW3N0cm9rZV09XCJzdHJva2VcIiBbc3Ryb2tlV2lkdGhdPVwic3Ryb2tlV2lkdGhcIi8+XG4gICAgICA8L2Rpdj5cbiAgYCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgQ2xvc2VTVkdDb21wb25lbnRdLFxufSlcbmV4cG9ydCBjbGFzcyBDbG9zZUJ1dHRvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIHNpemU6IG51bWJlciA9IDMwO1xuICBASW5wdXQoKSBzdHJva2VXaWR0aDogbnVtYmVyID0gMS4yO1xuICBcbiAgc3RhdGU6IFNwb3RjaGVja1N0YXRlO1xuICBwcml2YXRlIHN0YXRlU2VydmljZTogU3BvdGNoZWNrU3RhdGVTZXJ2aWNlO1xuICBwcml2YXRlIHN0YXRlU3Vic2NyaXB0aW9uITogU3Vic2NyaXB0aW9uO1xuICBcbiAgaXNWaXNpYmxlOiBib29sZWFuID0gZmFsc2U7XG4gIGlzTWluaUNhcmQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgc3Ryb2tlOiBzdHJpbmcgPSAnYmxhY2snO1xuICBcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5zdGF0ZVNlcnZpY2UgPSBnZXRTcG90Y2hlY2tTdGF0ZVNlcnZpY2UoKTtcbiAgICB0aGlzLnN0YXRlID0gdGhpcy5zdGF0ZVNlcnZpY2UuZ2V0U3RhdGUoKTtcbiAgICB0aGlzLnVwZGF0ZUNvbXBvbmVudFN0YXRlKCk7XG5cbiAgICB0aGlzLnN0YXRlU3Vic2NyaXB0aW9uID0gdGhpcy5zdGF0ZVNlcnZpY2Uuc3RhdGUkLnN1YnNjcmliZShcbiAgICAgIChuZXdTdGF0ZTogU3BvdGNoZWNrU3RhdGUpID0+IHtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IG5ld1N0YXRlO1xuICAgICAgICB0aGlzLnVwZGF0ZUNvbXBvbmVudFN0YXRlKCk7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnN0YXRlU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLnN0YXRlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVDb21wb25lbnRTdGF0ZSgpOiB2b2lkIHtcbiAgICB0aGlzLmlzVmlzaWJsZSA9XG4gICAgICB0aGlzLnN0YXRlLmlzQ2xvc2VCdXR0b25FbmFibGVkICYmXG4gICAgICAoKHRoaXMuc3RhdGUuY3VycmVudFF1ZXN0aW9uSGVpZ2h0ID4gMCAmJiAhdGhpcy5zdGF0ZS5pc0Z1bGxTY3JlZW5Nb2RlKSB8fFxuICAgICAgICAodGhpcy5zdGF0ZS5pc0Z1bGxTY3JlZW5Nb2RlICYmXG4gICAgICAgICAgKCghdGhpcy5zdGF0ZS5pc0NsYXNzaWNMb2FkaW5nICYmXG4gICAgICAgICAgICB0aGlzLnN0YXRlLnNwb3RDaGVja1R5cGUgPT09ICdjbGFzc2ljJykgfHxcbiAgICAgICAgICAgICghdGhpcy5zdGF0ZS5pc0NoYXRMb2FkaW5nICYmXG4gICAgICAgICAgICAgIHRoaXMuc3RhdGUuc3BvdENoZWNrVHlwZSA9PT0gJ2NoYXQnKSkpKTtcbiAgICB0aGlzLmlzTWluaUNhcmQgPSB0aGlzLnN0YXRlLnNwb3RDaGVja3NNb2RlID09PSAnbWluaUNhcmQnO1xuICAgIHRoaXMuc3Ryb2tlID0gdGhpcy5pc01pbmlDYXJkID8gJ2JsYWNrJyA6IHRoaXMuc3RhdGUuY2xvc2VCdXR0b25TdHlsZT8uWydjdGFCdXR0b24nXSB8fCAnYmxhY2snO1xuICB9XG5cbiAgb25DbGljayA9IGFzeW5jICgpID0+IHtcbiAgICBhd2FpdCBjbG9zZVNwb3RDaGVjaygpO1xuICAgIGhhbmRsZVN1cnZleUVuZCgpO1xuICB9O1xufVxuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ1Nwb3RDaGVja0NvbXBvbmVudCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9TcG90Q2hlY2tDb21wb25lbnQuaHRtbCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFdlYlZpZXdDb21wb25lbnQsIENsb3NlQnV0dG9uQ29tcG9uZW50XSxcbn0pXG5leHBvcnQgY2xhc3MgU3BvdENoZWNrQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBzdGF0ZTogU3BvdGNoZWNrU3RhdGU7XG4gIHByaXZhdGUgc3BvdGNoZWNrU3RhdGVTZXJ2aWNlOiBTcG90Y2hlY2tTdGF0ZVNlcnZpY2U7XG4gIHByaXZhdGUgc3RhdGVTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgY29tcG9uZW50U3R5bGVzOiBhbnkgPSB7fTtcbiAgYXZhdGFyVXJsOiBzdHJpbmcgPSAnJztcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLnNwb3RjaGVja1N0YXRlU2VydmljZSA9IGdldFNwb3RjaGVja1N0YXRlU2VydmljZSgpO1xuICAgIHRoaXMuc3RhdGUgPSB0aGlzLnNwb3RjaGVja1N0YXRlU2VydmljZS5nZXRTdGF0ZSgpO1xuICAgIHRoaXMudXBkYXRlQ29tcG9uZW50U3R5bGVzKCk7XG5cbiAgICB0aGlzLnN0YXRlU3Vic2NyaXB0aW9uID0gdGhpcy5zcG90Y2hlY2tTdGF0ZVNlcnZpY2Uuc3RhdGUkLnN1YnNjcmliZShcbiAgICAgIChuZXdTdGF0ZTogU3BvdGNoZWNrU3RhdGUpID0+IHtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IG5ld1N0YXRlO1xuICAgICAgICB0aGlzLnVwZGF0ZUNvbXBvbmVudFN0eWxlcygpO1xuICAgICAgICB0aGlzLmF2YXRhclVybCA9IHRoaXMuc3RhdGUuYXZhdGFyVXJsIHx8IFwiaHR0cHM6Ly9zdGF0aWMuc3VydmV5c3BhcnJvdy5jb20vYXBwbGljYXRpb24vaW1hZ2VzL3Byb2ZpbGUucG5nXCI7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaW5pdGlhbGl6ZUNvbXBvbmVudCgpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3RhdGVTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMuc3RhdGVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUNvbXBvbmVudFN0eWxlcygpOiB2b2lkIHtcbiAgICB0aGlzLmNvbXBvbmVudFN0eWxlcyA9IGdldFNwb3RjaGVja0NvbXBvbmVudENzc1N0eWxlcyh0aGlzLnN0YXRlKTtcbiAgfVxuXG4gIGluaXRpYWxpemVDb21wb25lbnQgPSBhc3luYyAoKSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGRvbWFpbk5hbWUgPSB0aGlzLnN0YXRlLmRvbWFpbk5hbWU7XG4gICAgICBjb25zdCB0YXJnZXRUb2tlbiA9IHRoaXMuc3RhdGUudGFyZ2V0VG9rZW47XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGF4aW9zLmdldChcbiAgICAgICAgYGh0dHBzOi8vJHtkb21haW5OYW1lfS9hcGkvaW50ZXJuYWwvc3BvdGNoZWNrL3dpZGdldC8ke3RhcmdldFRva2VufS9pbml0YFxuICAgICAgKTtcbiAgICAgIGNvbnN0IGRhdGEgPSByZXNwb25zZS5kYXRhO1xuXG4gICAgICBpZiAoZGF0YS5maWx0ZXJlZFNwb3RDaGVja3MgJiYgZGF0YS5maWx0ZXJlZFNwb3RDaGVja3MubGVuZ3RoID4gMCkge1xuICAgICAgICBsZXQgY2xhc3NpY0lmcmFtZSA9IGZhbHNlO1xuICAgICAgICBsZXQgY2hhdElmcmFtZSA9IGZhbHNlO1xuXG4gICAgICAgIGRhdGEuZmlsdGVyZWRTcG90Q2hlY2tzLmZvckVhY2goKHNwb3RjaGVjazogYW55KSA9PiB7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgc3BvdGNoZWNrLmFwcGVhcmFuY2UubW9kZSA9PT0gJ2Z1bGxTY3JlZW4nICYmXG4gICAgICAgICAgICBpc2NoYXRTdXJ2ZXkoc3BvdGNoZWNrPy5zdXJ2ZXk/LnN1cnZleVR5cGUpXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBjaGF0SWZyYW1lID0gdHJ1ZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY2xhc3NpY0lmcmFtZSA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBuZXdDbGFzc2ljVXJsID0gY2xhc3NpY0lmcmFtZVxuICAgICAgICAgID8gYGh0dHBzOi8vJHtkb21haW5OYW1lfS9ldWktdGVtcGxhdGUvY2xhc3NpY2BcbiAgICAgICAgICA6ICcnO1xuICAgICAgICBjb25zdCBuZXdDaGF0VXJsID0gY2hhdElmcmFtZVxuICAgICAgICAgID8gYGh0dHBzOi8vJHtkb21haW5OYW1lfS9ldWktdGVtcGxhdGUvY2hhdGBcbiAgICAgICAgICA6ICcnO1xuXG4gICAgICAgIHRoaXMuc3BvdGNoZWNrU3RhdGVTZXJ2aWNlLnNldFN0YXRlKHtcbiAgICAgICAgICBmaWx0ZXJlZFNwb3RDaGVja3M6IGRhdGEuZmlsdGVyZWRTcG90Q2hlY2tzLFxuICAgICAgICAgIGNsYXNzaWNVcmw6IG5ld0NsYXNzaWNVcmwsXG4gICAgICAgICAgY2hhdFVybDogbmV3Q2hhdFVybCxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUubG9nKCdFcnJvciBpbml0aWFsaXppbmcgd2lkZ2V0OicsIEpTT04uc3RyaW5naWZ5KGVycm9yKSk7XG4gICAgfVxuICB9O1xufVxuIiwiPGRpdiBbbmdTdHlsZV09XCJjb21wb25lbnRTdHlsZXMud3JhcHBlclN0eWxlc1wiPlxuICA8ZGl2IFtuZ1N0eWxlXT1cImNvbXBvbmVudFN0eWxlcy5zdHlsZXNcIj5cbiAgICA8ZGl2IHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlOyBoZWlnaHQ6IDEwMCU7XCI+XG4gICAgICA8c3BvdGNoZWNrLWNsb3NlLWJ1dHRvbiAvPlxuICBcbiAgICAgIDxXZWJWaWV3Q29tcG9uZW50XG4gICAgICAgICpuZ0lmPVwic3RhdGUuY2xhc3NpY1VybCAmJiBzdGF0ZS5jbGFzc2ljVXJsLmxlbmd0aCA+IDAgJiYgc3RhdGUuc3BvdGNoZWNrVVJMLmxlbmd0aCA+IDAgJiYgc3RhdGUuc3BvdENoZWNrVHlwZSA9PT0gJ2NsYXNzaWMnXCJcbiAgICAgICAgW3VybF09XCJzdGF0ZS5jbGFzc2ljVXJsXCJcbiAgICAgICAgW3dlYnZpZXdUeXBlXT1cIidjbGFzc2ljJ1wiXG4gICAgICAvPlxuICBcbiAgICAgIDxXZWJWaWV3Q29tcG9uZW50XG4gICAgICAgICpuZ0lmPVwic3RhdGUuY2hhdFVybCAmJiBzdGF0ZS5jaGF0VXJsLmxlbmd0aCA+IDAgJiYgc3RhdGUuc3BvdGNoZWNrVVJMLmxlbmd0aCA+IDAgJiYgc3RhdGUuc3BvdENoZWNrVHlwZSA9PT0gJ2NoYXQnXCJcbiAgICAgICAgW3VybF09XCJzdGF0ZS5jaGF0VXJsXCJcbiAgICAgICAgW3dlYnZpZXdUeXBlXT1cIidjaGF0J1wiXG4gICAgICAvPlxuXG4gICAgICA8ZGl2ICpuZ0lmPVwic3RhdGUuc3BvdENoZWNrc01vZGUgPT09ICdtaW5pQ2FyZCcgJiYgc3RhdGUuYXZhdGFyRW5hYmxlZFwiPlxuICAgICAgICA8ZGl2IHN0eWxlPVwicG9zaXRpb246IGFic29sdXRlOyBib3R0b206IC02NnB4OyBsZWZ0OiAxNnB4OyB6LWluZGV4OiAxMDAwMDE7XCI+XG4gICAgICAgICAgPGltZyBbc3JjXT1cImF2YXRhclVybFwiIHN0eWxlPVwid2lkdGg6IDU2cHg7IGhlaWdodDogNTZweDsgYm9yZGVyLXJhZGl1czogNTBweDsgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XCIvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
323
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3BvdENoZWNrQ29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FuZ3VsYXItdWkvbGliL3Nwb3RjaGVja3MvU3BvdENoZWNrQ29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vc3JjL2FuZ3VsYXItdWkvbGliL3Nwb3RjaGVja3MvU3BvdENoZWNrQ29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxLQUFLLEVBRUwsU0FBUyxFQUdULFlBQVksR0FDYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFHL0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxnQ0FBZ0MsRUFBRSw4QkFBOEIsRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRTVJLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVyRCxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7Ozs7QUFtQjFCLE1BQU0sT0FBTyxnQkFBZ0I7SUFRUDtJQVBYLEdBQUcsR0FBVyxFQUFFLENBQUM7SUFDakIsV0FBVyxHQUF1QixTQUFTLENBQUM7SUFDNUMsVUFBVSxHQUFZLEtBQUssQ0FBQztJQUVyQyxPQUFPLEdBQTJCLElBQUksQ0FBQztJQUNmLE1BQU0sQ0FBaUM7SUFFL0QsWUFBb0IsU0FBdUI7UUFBdkIsY0FBUyxHQUFULFNBQVMsQ0FBYztJQUFHLENBQUM7SUFDL0MsUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ2IsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLDhCQUE4QixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN6RSxDQUFDO0lBQ0gsQ0FBQztJQUVELGVBQWU7UUFDYixNQUFNLFlBQVksR0FBRyx3QkFBd0IsRUFBRSxDQUFDO1FBQ2hELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDO1FBRTdDLElBQUksSUFBSSxDQUFDLFdBQVcsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUNuQyxZQUFZLENBQUMsUUFBUSxDQUFDO2dCQUNwQixpQkFBaUIsRUFBRSxVQUFVO2dCQUM3QixnQkFBZ0IsRUFBRSxLQUFLO2FBQ3hCLENBQUMsQ0FBQztRQUNMLENBQUM7YUFBTSxDQUFDO1lBQ04sWUFBWSxDQUFDLFFBQVEsQ0FBQztnQkFDcEIsY0FBYyxFQUFFLFVBQVU7Z0JBQzFCLGFBQWEsRUFBRSxLQUFLO2FBQ3JCLENBQUMsQ0FBQztRQUNMLENBQUM7UUFDRCxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRU8sdUJBQXVCO1FBQzdCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDO1FBQ3pDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFO1lBQ25DLE1BQU0sWUFBWSxHQUFHLHdCQUF3QixFQUFFLENBQUM7WUFDaEQsSUFBSSxJQUFJLENBQUMsV0FBVyxLQUFLLFNBQVMsRUFBRSxDQUFDO2dCQUNuQyxZQUFZLENBQUMsUUFBUSxDQUFDLEVBQUUsZ0JBQWdCLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUNyRCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sWUFBWSxDQUFDLFFBQVEsQ0FBQyxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBQ2xELENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFHRCxTQUFTLENBQUMsS0FBbUI7UUFDM0IsTUFBTSxZQUFZLEdBQUcsd0JBQXdCLEVBQUUsQ0FBQztRQUNoRCxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLFFBQVEsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2xCLEtBQUssY0FBYztnQkFDakIsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7b0JBQ2pCLFlBQVksQ0FBQyxRQUFRLENBQUMsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztnQkFDN0MsQ0FBQztnQkFDRCxNQUFNO1lBRVIsS0FBSyxjQUFjO2dCQUNqQixJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztvQkFDZCxZQUFZLENBQUMsUUFBUSxDQUFDO3dCQUNwQixxQkFBcUIsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU07cUJBQ3hDLENBQUMsQ0FBQztnQkFDTCxDQUFDO3FCQUFNLElBQUksSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7b0JBQ3JDLFlBQVksQ0FBQyxRQUFRLENBQUM7d0JBQ3BCLG9CQUFvQixFQUFFLElBQUksQ0FBQyxvQkFBb0I7cUJBQ2hELENBQUMsQ0FBQztnQkFDTCxDQUFDO2dCQUNELE1BQU07WUFFUixLQUFLLGlCQUFpQjtnQkFDcEIsZ0NBQWdDLEVBQUUsQ0FBQztnQkFDbkMseURBQXlEO2dCQUN6RCxNQUFNO1lBRVIsS0FBSyxtQkFBbUI7Z0JBQ3RCLGdFQUFnRTtnQkFDaEUsTUFBTTtZQUVSO2dCQUNFLE1BQU07UUFDVixDQUFDO0lBQ0gsQ0FBQzt1R0FoRlUsZ0JBQWdCOzJGQUFoQixnQkFBZ0IsK1RBZmpCOzs7Ozs7Ozs7OztHQVdULDJEQUVTLFlBQVk7OzJGQUVYLGdCQUFnQjtrQkFqQjVCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGtCQUFrQjtvQkFDNUIsUUFBUSxFQUFFOzs7Ozs7Ozs7OztHQVdUO29CQUNELFVBQVUsRUFBRSxJQUFJO29CQUNoQixPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUM7aUJBQ3hCO2lGQUVVLEdBQUc7c0JBQVgsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBR2tCLE1BQU07c0JBQTdCLFNBQVM7dUJBQUMsV0FBVztnQkF3Q3RCLFNBQVM7c0JBRFIsWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQzs7QUE0RDVDLE1BQU0sT0FBTyxpQkFBaUI7SUFDbkIsSUFBSSxHQUFXLEVBQUUsQ0FBQztJQUNsQixNQUFNLEdBQVcsU0FBUyxDQUFDO0lBQzNCLFdBQVcsR0FBVyxHQUFHLENBQUM7dUdBSHhCLGlCQUFpQjsyRkFBakIsaUJBQWlCLDZJQXBCbEI7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQlQsMkRBRVMsWUFBWTs7MkZBRVgsaUJBQWlCO2tCQXRCN0IsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsV0FBVztvQkFDckIsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7O0dBZ0JUO29CQUNELFVBQVUsRUFBRSxJQUFJO29CQUNoQixPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUM7aUJBQ3hCOzhCQUVVLElBQUk7c0JBQVosS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSzs7QUFnQlIsTUFBTSxPQUFPLG9CQUFvQjtJQUN0QixJQUFJLEdBQVcsRUFBRSxDQUFDO0lBQ2xCLFdBQVcsR0FBVyxHQUFHLENBQUM7SUFFbkMsS0FBSyxDQUFpQjtJQUNkLFlBQVksQ0FBd0I7SUFDcEMsaUJBQWlCLENBQWdCO0lBRXpDLFNBQVMsR0FBWSxLQUFLLENBQUM7SUFDM0IsVUFBVSxHQUFZLEtBQUssQ0FBQztJQUM1QixNQUFNLEdBQVcsT0FBTyxDQUFDO0lBRXpCO1FBQ0UsSUFBSSxDQUFDLFlBQVksR0FBRyx3QkFBd0IsRUFBRSxDQUFDO1FBQy9DLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUMxQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUU1QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUN6RCxDQUFDLFFBQXdCLEVBQUUsRUFBRTtZQUMzQixJQUFJLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQztZQUN0QixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUM5QixDQUFDLENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDdkMsQ0FBQztJQUNILENBQUM7SUFFTyxvQkFBb0I7UUFDMUIsSUFBSSxDQUFDLFNBQVM7WUFDWixJQUFJLENBQUMsS0FBSyxDQUFDLG9CQUFvQjtnQkFDL0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMscUJBQXFCLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQztvQkFDckUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQjt3QkFDMUIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0I7NEJBQzVCLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxLQUFLLFNBQVMsQ0FBQzs0QkFDdkMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYTtnQ0FDeEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEQsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsS0FBSyxVQUFVLENBQUM7UUFDM0QsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSSxPQUFPLENBQUM7SUFDbEcsQ0FBQztJQUVELE9BQU8sR0FBRyxLQUFLLElBQUksRUFBRTtRQUNuQixNQUFNLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLGVBQWUsRUFBRSxDQUFDO0lBQ3BCLENBQUMsQ0FBQzt1R0EvQ1Msb0JBQW9COzJGQUFwQixvQkFBb0Isd0lBWHJCOzs7Ozs7O0dBT1QsMkRBRVMsWUFBWSxtSUFqQlgsaUJBQWlCOzsyRkFtQmpCLG9CQUFvQjtrQkFiaEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsd0JBQXdCO29CQUNsQyxRQUFRLEVBQUU7Ozs7Ozs7R0FPVDtvQkFDRCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLGlCQUFpQixDQUFDO2lCQUMzQzt3REFFVSxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSzs7QUF3RFIsTUFBTSxPQUFPLGtCQUFrQjtJQUM3QixLQUFLLENBQWlCO0lBQ2QscUJBQXFCLENBQXdCO0lBQzdDLGlCQUFpQixDQUFlO0lBQ3hDLGVBQWUsR0FBUSxFQUFFLENBQUM7SUFDMUIsU0FBUyxHQUFXLEVBQUUsQ0FBQztJQUV2QjtRQUNFLElBQUksQ0FBQyxxQkFBcUIsR0FBRyx3QkFBd0IsRUFBRSxDQUFDO1FBQ3hELElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ25ELElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBRTdCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FDbEUsQ0FBQyxRQUF3QixFQUFFLEVBQUU7WUFDM0IsSUFBSSxDQUFDLEtBQUssR0FBRyxRQUFRLENBQUM7WUFDdEIsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsSUFBSSxpRUFBaUUsQ0FBQztRQUM3RyxDQUFDLENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUN2QyxDQUFDO0lBQ0gsQ0FBQztJQUVPLHFCQUFxQjtRQUMzQixJQUFJLENBQUMsZUFBZSxHQUFHLDhCQUE4QixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQsbUJBQW1CLEdBQUcsS0FBSyxJQUFJLEVBQUU7UUFDL0IsSUFBSSxDQUFDO1lBQ0gsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUM7WUFDekMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUM7WUFDM0MsTUFBTSxRQUFRLEdBQUcsTUFBTSxLQUFLLENBQUMsR0FBRyxDQUM5QixXQUFXLFVBQVUsa0NBQWtDLFdBQVcsT0FBTyxDQUMxRSxDQUFDO1lBQ0YsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQztZQUUzQixJQUFJLElBQUksQ0FBQyxrQkFBa0IsSUFBSSxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUNsRSxJQUFJLGFBQWEsR0FBRyxLQUFLLENBQUM7Z0JBQzFCLElBQUksVUFBVSxHQUFHLEtBQUssQ0FBQztnQkFFdkIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQWMsRUFBRSxFQUFFO29CQUNqRCxJQUNFLFNBQVMsQ0FBQyxVQUFVLENBQUMsSUFBSSxLQUFLLFlBQVk7d0JBQzFDLFlBQVksQ0FBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLFVBQVUsQ0FBQyxFQUMzQyxDQUFDO3dCQUNELFVBQVUsR0FBRyxJQUFJLENBQUM7b0JBQ3BCLENBQUM7eUJBQU0sQ0FBQzt3QkFDTixhQUFhLEdBQUcsSUFBSSxDQUFDO29CQUN2QixDQUFDO2dCQUNILENBQUMsQ0FBQyxDQUFDO2dCQUVILE1BQU0sYUFBYSxHQUFHLGFBQWE7b0JBQ2pDLENBQUMsQ0FBQyxXQUFXLFVBQVUsdUJBQXVCO29CQUM5QyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUNQLE1BQU0sVUFBVSxHQUFHLFVBQVU7b0JBQzNCLENBQUMsQ0FBQyxXQUFXLFVBQVUsb0JBQW9CO29CQUMzQyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUVQLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxRQUFRLENBQUM7b0JBQ2xDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxrQkFBa0I7b0JBQzNDLFVBQVUsRUFBRSxhQUFhO29CQUN6QixPQUFPLEVBQUUsVUFBVTtpQkFDcEIsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztRQUNILENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsT0FBTyxDQUFDLEdBQUcsQ0FBQyw0QkFBNEIsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDbkUsQ0FBQztJQUNILENBQUMsQ0FBQzt1R0EzRVMsa0JBQWtCOzJGQUFsQixrQkFBa0IsOEVDMU4vQixpcENBMkJBLDRQRDZMWSxZQUFZLHdOQXBMWCxnQkFBZ0IsMkdBNEhoQixvQkFBb0I7OzJGQTBEcEIsa0JBQWtCO2tCQVA5QixTQUFTOytCQUNFLG9CQUFvQixjQUdsQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsb0JBQW9CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBPbkluaXQsXG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgVmlld0NoaWxkLFxuICBFbGVtZW50UmVmLFxuICBBZnRlclZpZXdJbml0LFxuICBIb3N0TGlzdGVuZXIsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlUmVzb3VyY2VVcmwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IGNsb3NlU3BvdENoZWNrLCBjbG9zZVNwb3RDaGVja0FuZEhhbmRsZVN1cnZleUVuZCwgZ2V0U3BvdGNoZWNrQ29tcG9uZW50Q3NzU3R5bGVzLCBoYW5kbGVTdXJ2ZXlFbmQsIGlzY2hhdFN1cnZleSB9IGZyb20gJy4vaGVscGVycyc7XG5pbXBvcnQgeyBTcG90Y2hlY2tTdGF0ZSB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgZ2V0U3BvdGNoZWNrU3RhdGVTZXJ2aWNlIH0gZnJvbSAnLi9oZWxwZXJzJztcbmltcG9ydCB7IFNwb3RjaGVja1N0YXRlU2VydmljZSB9IGZyb20gJy4vU3BvdGNoZWNrU3RhdGVTZXJ2aWNlJztcbmltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ1dlYlZpZXdDb21wb25lbnQnLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgc3R5bGU9XCJvdmVyZmxvdzogaGlkZGVuOyBoZWlnaHQ6IDEwMCU7IGJvcmRlci1yYWRpdXM6IHt7aXNNaW5pQ2FyZCA/IDEyIDogMH19cHg7IHBhZGRpbmctbGVmdDoge3tpc01pbmlDYXJkID8gMTIgOiAwfX1weDsgcGFkZGluZy1yaWdodDoge3tpc01pbmlDYXJkID8gMTIgOiAwfX1weDsgYm94LXNpemluZzogYm9yZGVyLWJveDtcIj5cbiAgICAgIDxpZnJhbWVcbiAgICAgICAgYWxsb3c9XCJjYW1lcmE7IG1pY3JvcGhvbmU7IGdlb2xvY2F0aW9uOyBkaXNwbGF5LWNhcHR1cmU7IGF1dG9wbGF5OyBjbGlwYm9hcmQtcmVhZDsgY2xpcGJvYXJkLXdyaXRlO1wiXG4gICAgICAgICNpZnJhbWVSZWZcbiAgICAgICAgW3NyY109XCJzYWZlVXJsXCJcbiAgICAgICAgc3R5bGU9XCJ3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlOyBkaXNwbGF5OiBibG9jazsgYm9yZGVyLXJhZGl1czoge3tpc01pbmlDYXJkID8gMTIgOiAwfX1weDtcIlxuICAgICAgICBmcmFtZWJvcmRlcj1cIjBcIlxuICAgICAgPlxuICAgICAgPC9pZnJhbWU+XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxufSlcbmV4cG9ydCBjbGFzcyBXZWJWaWV3Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcbiAgQElucHV0KCkgdXJsOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgd2Vidmlld1R5cGU6ICdjbGFzc2ljJyB8ICdjaGF0JyA9ICdjbGFzc2ljJztcbiAgQElucHV0KCkgaXNNaW5pQ2FyZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHNhZmVVcmw6IFNhZmVSZXNvdXJjZVVybCB8IG51bGwgPSBudWxsO1xuICBAVmlld0NoaWxkKCdpZnJhbWVSZWYnKSBpZnJhbWUhOiBFbGVtZW50UmVmPEhUTUxJRnJhbWVFbGVtZW50PjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHNhbml0aXplcjogRG9tU2FuaXRpemVyKSB7fVxuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAodGhpcy51cmwpIHtcbiAgICAgIHRoaXMuc2FmZVVybCA9IHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybCh0aGlzLnVybCk7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGNvbnN0IHN0YXRlU2VydmljZSA9IGdldFNwb3RjaGVja1N0YXRlU2VydmljZSgpO1xuICAgIGNvbnN0IHdlYlZpZXdSZWYgPSB0aGlzLmlmcmFtZS5uYXRpdmVFbGVtZW50O1xuXG4gICAgaWYgKHRoaXMud2Vidmlld1R5cGUgPT09ICdjbGFzc2ljJykge1xuICAgICAgc3RhdGVTZXJ2aWNlLnNldFN0YXRlKHtcbiAgICAgICAgY2xhc3NpY1dlYlZpZXdSZWY6IHdlYlZpZXdSZWYsXG4gICAgICAgIGlzQ2xhc3NpY0xvYWRpbmc6IGZhbHNlLFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0YXRlU2VydmljZS5zZXRTdGF0ZSh7XG4gICAgICAgIGNoYXRXZWJWaWV3UmVmOiB3ZWJWaWV3UmVmLFxuICAgICAgICBpc0NoYXRMb2FkaW5nOiBmYWxzZSxcbiAgICAgIH0pO1xuICAgIH1cbiAgICB0aGlzLnNldHVwSWZyYW1lTG9hZExpc3RlbmVyKCk7XG4gIH1cblxuICBwcml2YXRlIHNldHVwSWZyYW1lTG9hZExpc3RlbmVyKCkge1xuICAgIGNvbnN0IGlmcmFtZSA9IHRoaXMuaWZyYW1lLm5hdGl2ZUVsZW1lbnQ7XG4gICAgaWZyYW1lLmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCAoKSA9PiB7XG4gICAgICBjb25zdCBzdGF0ZVNlcnZpY2UgPSBnZXRTcG90Y2hlY2tTdGF0ZVNlcnZpY2UoKTtcbiAgICAgIGlmICh0aGlzLndlYnZpZXdUeXBlID09PSAnY2xhc3NpYycpIHtcbiAgICAgICAgc3RhdGVTZXJ2aWNlLnNldFN0YXRlKHsgaXNDbGFzc2ljTG9hZGluZzogZmFsc2UgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzdGF0ZVNlcnZpY2Uuc2V0U3RhdGUoeyBpc0NoYXRMb2FkaW5nOiBmYWxzZSB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzptZXNzYWdlJywgWyckZXZlbnQnXSlcbiAgb25NZXNzYWdlKGV2ZW50OiBNZXNzYWdlRXZlbnQpIHtcbiAgICBjb25zdCBzdGF0ZVNlcnZpY2UgPSBnZXRTcG90Y2hlY2tTdGF0ZVNlcnZpY2UoKTtcbiAgICBjb25zdCB7IGRhdGEgfSA9IGV2ZW50O1xuICAgIHN3aXRjaCAoZGF0YS50eXBlKSB7XG4gICAgICBjYXNlICdzbGlkZUluRnJhbWUnOlxuICAgICAgICBpZiAoZGF0YS5tb3VudGVkKSB7XG4gICAgICAgICAgc3RhdGVTZXJ2aWNlLnNldFN0YXRlKHsgaXNNb3VudGVkOiB0cnVlIH0pO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdyZXNpemVXaW5kb3cnOlxuICAgICAgICBpZiAoZGF0YS5zaXplKSB7XG4gICAgICAgICAgc3RhdGVTZXJ2aWNlLnNldFN0YXRlKHtcbiAgICAgICAgICAgIGN1cnJlbnRRdWVzdGlvbkhlaWdodDogZGF0YS5zaXplLmhlaWdodCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIGlmIChkYXRhLmlzQ2xvc2VCdXR0b25FbmFibGVkKSB7XG4gICAgICAgICAgc3RhdGVTZXJ2aWNlLnNldFN0YXRlKHtcbiAgICAgICAgICAgIGlzQ2xvc2VCdXR0b25FbmFibGVkOiBkYXRhLmlzQ2xvc2VCdXR0b25FbmFibGVkLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdzdXJ2ZXlDb21wbGV0ZWQnOlxuICAgICAgICBjbG9zZVNwb3RDaGVja0FuZEhhbmRsZVN1cnZleUVuZCgpO1xuICAgICAgICAvLyBzcG90Y2hlY2tzTGlzdGVuZXIuZW1pdFN1cnZleUNvbXBsZXRlZChkYXRhLnJlc3BvbnNlKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ3N1cnZleUxvYWRTdGFydGVkJzpcbiAgICAgICAgLy8gc3BvdGNoZWNrc0xpc3RlbmVyLmVtaXRTdXJ2ZXlMb2FkU3RhcnRlZChkYXRhLnN1cnZleURldGFpbHMpO1xuICAgICAgICBicmVhaztcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Nsb3NlLXN2ZycsXG4gIHRlbXBsYXRlOiBgXG4gICAgPHN2Z1xuICAgICAgW2F0dHIud2lkdGhdPVwic2l6ZVwiXG4gICAgICBbYXR0ci5oZWlnaHRdPVwic2l6ZVwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDMyIDMyXCJcbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIHhtbG5zPVwiaHR0cHM6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICA+XG4gICAgICA8cGF0aFxuICAgICAgICBkPVwiTTEwLjY2NjUgMTAuNjY3TDIxLjMzMzIgMjEuMzMzN00yMS4zMzMyIDEwLjY2N0wxMC42NjY1IDIxLjMzMzdcIlxuICAgICAgICBbYXR0ci5zdHJva2VdPVwic3Ryb2tlXCJcbiAgICAgICAgW2F0dHIuc3Ryb2tlLXdpZHRoXT1cInN0cm9rZVdpZHRoXCJcbiAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCJcbiAgICAgIC8+XG4gICAgPC9zdmc+XG4gIGAsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxufSlcbmV4cG9ydCBjbGFzcyBDbG9zZVNWR0NvbXBvbmVudCB7XG4gIEBJbnB1dCgpIHNpemU6IG51bWJlciA9IDMyO1xuICBASW5wdXQoKSBzdHJva2U6IHN0cmluZyA9ICcjOTE5MTkxJztcbiAgQElucHV0KCkgc3Ryb2tlV2lkdGg6IG51bWJlciA9IDEuNTtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc3BvdGNoZWNrLWNsb3NlLWJ1dHRvbicsXG4gIHRlbXBsYXRlOiBgXG4gICAgICA8ZGl2IHN0eWxlPVwicG9zaXRpb246IGFic29sdXRlOyB0b3A6IC0zNnB4OyByaWdodDogMTZweDsgei1pbmRleDogMTAwMDAxOyBjdXJzb3I6IHBvaW50ZXI7IGJhY2tncm91bmQtY29sb3I6IHdoaXRlOyBib3JkZXItcmFkaXVzOiA1MHB4O1wiIChjbGljayk9XCJvbkNsaWNrKClcIiAqbmdJZj1cImlzVmlzaWJsZSAmJiBpc01pbmlDYXJkXCI+XG4gICAgICAgIDxjbG9zZS1zdmcgW3NpemVdPVwic2l6ZVwiIFtzdHJva2VdPVwic3Ryb2tlXCIgW3N0cm9rZVdpZHRoXT1cInN0cm9rZVdpZHRoXCIgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcIi8+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgc3R5bGU9XCJwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMTZweDsgcmlnaHQ6IDE2cHg7IHotaW5kZXg6IDEwMDAwMTsgY3Vyc29yOiBwb2ludGVyO1wiIChjbGljayk9XCJvbkNsaWNrKClcIiAqbmdJZj1cImlzVmlzaWJsZSAmJiAhaXNNaW5pQ2FyZFwiPlxuICAgICAgICA8Y2xvc2Utc3ZnIFtzaXplXT1cInNpemVcIiBbc3Ryb2tlXT1cInN0cm9rZVwiIFtzdHJva2VXaWR0aF09XCJzdHJva2VXaWR0aFwiLz5cbiAgICAgIDwvZGl2PlxuICBgLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBDbG9zZVNWR0NvbXBvbmVudF0sXG59KVxuZXhwb3J0IGNsYXNzIENsb3NlQnV0dG9uQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgQElucHV0KCkgc2l6ZTogbnVtYmVyID0gMzA7XG4gIEBJbnB1dCgpIHN0cm9rZVdpZHRoOiBudW1iZXIgPSAxLjI7XG4gIFxuICBzdGF0ZTogU3BvdGNoZWNrU3RhdGU7XG4gIHByaXZhdGUgc3RhdGVTZXJ2aWNlOiBTcG90Y2hlY2tTdGF0ZVNlcnZpY2U7XG4gIHByaXZhdGUgc3RhdGVTdWJzY3JpcHRpb24hOiBTdWJzY3JpcHRpb247XG4gIFxuICBpc1Zpc2libGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNNaW5pQ2FyZDogYm9vbGVhbiA9IGZhbHNlO1xuICBzdHJva2U6IHN0cmluZyA9ICdibGFjayc7XG4gIFxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLnN0YXRlU2VydmljZSA9IGdldFNwb3RjaGVja1N0YXRlU2VydmljZSgpO1xuICAgIHRoaXMuc3RhdGUgPSB0aGlzLnN0YXRlU2VydmljZS5nZXRTdGF0ZSgpO1xuICAgIHRoaXMudXBkYXRlQ29tcG9uZW50U3RhdGUoKTtcblxuICAgIHRoaXMuc3RhdGVTdWJzY3JpcHRpb24gPSB0aGlzLnN0YXRlU2VydmljZS5zdGF0ZSQuc3Vic2NyaWJlKFxuICAgICAgKG5ld1N0YXRlOiBTcG90Y2hlY2tTdGF0ZSkgPT4ge1xuICAgICAgICB0aGlzLnN0YXRlID0gbmV3U3RhdGU7XG4gICAgICAgIHRoaXMudXBkYXRlQ29tcG9uZW50U3RhdGUoKTtcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3RhdGVTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMuc3RhdGVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUNvbXBvbmVudFN0YXRlKCk6IHZvaWQge1xuICAgIHRoaXMuaXNWaXNpYmxlID1cbiAgICAgIHRoaXMuc3RhdGUuaXNDbG9zZUJ1dHRvbkVuYWJsZWQgJiZcbiAgICAgICgodGhpcy5zdGF0ZS5jdXJyZW50UXVlc3Rpb25IZWlnaHQgPiAwICYmICF0aGlzLnN0YXRlLmlzRnVsbFNjcmVlbk1vZGUpIHx8XG4gICAgICAgICh0aGlzLnN0YXRlLmlzRnVsbFNjcmVlbk1vZGUgJiZcbiAgICAgICAgICAoKCF0aGlzLnN0YXRlLmlzQ2xhc3NpY0xvYWRpbmcgJiZcbiAgICAgICAgICAgIHRoaXMuc3RhdGUuc3BvdENoZWNrVHlwZSA9PT0gJ2NsYXNzaWMnKSB8fFxuICAgICAgICAgICAgKCF0aGlzLnN0YXRlLmlzQ2hhdExvYWRpbmcgJiZcbiAgICAgICAgICAgICAgdGhpcy5zdGF0ZS5zcG90Q2hlY2tUeXBlID09PSAnY2hhdCcpKSkpO1xuICAgIHRoaXMuaXNNaW5pQ2FyZCA9IHRoaXMuc3RhdGUuc3BvdENoZWNrc01vZGUgPT09ICdtaW5pQ2FyZCc7XG4gICAgdGhpcy5zdHJva2UgPSB0aGlzLmlzTWluaUNhcmQgPyAnYmxhY2snIDogdGhpcy5zdGF0ZS5jbG9zZUJ1dHRvblN0eWxlPy5bJ2N0YUJ1dHRvbiddIHx8ICdibGFjayc7XG4gIH1cblxuICBvbkNsaWNrID0gYXN5bmMgKCkgPT4ge1xuICAgIGF3YWl0IGNsb3NlU3BvdENoZWNrKCk7XG4gICAgaGFuZGxlU3VydmV5RW5kKCk7XG4gIH07XG59XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnU3BvdENoZWNrQ29tcG9uZW50JyxcbiAgdGVtcGxhdGVVcmw6ICcuL1Nwb3RDaGVja0NvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vU3BvdENoZWNrQ29tcG9uZW50LmNzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBXZWJWaWV3Q29tcG9uZW50LCBDbG9zZUJ1dHRvbkNvbXBvbmVudF0sXG59KVxuZXhwb3J0IGNsYXNzIFNwb3RDaGVja0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgc3RhdGU6IFNwb3RjaGVja1N0YXRlO1xuICBwcml2YXRlIHNwb3RjaGVja1N0YXRlU2VydmljZTogU3BvdGNoZWNrU3RhdGVTZXJ2aWNlO1xuICBwcml2YXRlIHN0YXRlU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIGNvbXBvbmVudFN0eWxlczogYW55ID0ge307XG4gIGF2YXRhclVybDogc3RyaW5nID0gJyc7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5zcG90Y2hlY2tTdGF0ZVNlcnZpY2UgPSBnZXRTcG90Y2hlY2tTdGF0ZVNlcnZpY2UoKTtcbiAgICB0aGlzLnN0YXRlID0gdGhpcy5zcG90Y2hlY2tTdGF0ZVNlcnZpY2UuZ2V0U3RhdGUoKTtcbiAgICB0aGlzLnVwZGF0ZUNvbXBvbmVudFN0eWxlcygpO1xuXG4gICAgdGhpcy5zdGF0ZVN1YnNjcmlwdGlvbiA9IHRoaXMuc3BvdGNoZWNrU3RhdGVTZXJ2aWNlLnN0YXRlJC5zdWJzY3JpYmUoXG4gICAgICAobmV3U3RhdGU6IFNwb3RjaGVja1N0YXRlKSA9PiB7XG4gICAgICAgIHRoaXMuc3RhdGUgPSBuZXdTdGF0ZTtcbiAgICAgICAgdGhpcy51cGRhdGVDb21wb25lbnRTdHlsZXMoKTtcbiAgICAgICAgdGhpcy5hdmF0YXJVcmwgPSB0aGlzLnN0YXRlLmF2YXRhclVybCB8fCBcImh0dHBzOi8vc3RhdGljLnN1cnZleXNwYXJyb3cuY29tL2FwcGxpY2F0aW9uL2ltYWdlcy9wcm9maWxlLnBuZ1wiO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmluaXRpYWxpemVDb21wb25lbnQoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnN0YXRlU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLnN0YXRlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVDb21wb25lbnRTdHlsZXMoKTogdm9pZCB7XG4gICAgdGhpcy5jb21wb25lbnRTdHlsZXMgPSBnZXRTcG90Y2hlY2tDb21wb25lbnRDc3NTdHlsZXModGhpcy5zdGF0ZSk7XG4gIH1cblxuICBpbml0aWFsaXplQ29tcG9uZW50ID0gYXN5bmMgKCkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBkb21haW5OYW1lID0gdGhpcy5zdGF0ZS5kb21haW5OYW1lO1xuICAgICAgY29uc3QgdGFyZ2V0VG9rZW4gPSB0aGlzLnN0YXRlLnRhcmdldFRva2VuO1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBheGlvcy5nZXQoXG4gICAgICAgIGBodHRwczovLyR7ZG9tYWluTmFtZX0vYXBpL2ludGVybmFsL3Nwb3RjaGVjay93aWRnZXQvJHt0YXJnZXRUb2tlbn0vaW5pdGBcbiAgICAgICk7XG4gICAgICBjb25zdCBkYXRhID0gcmVzcG9uc2UuZGF0YTtcblxuICAgICAgaWYgKGRhdGEuZmlsdGVyZWRTcG90Q2hlY2tzICYmIGRhdGEuZmlsdGVyZWRTcG90Q2hlY2tzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgbGV0IGNsYXNzaWNJZnJhbWUgPSBmYWxzZTtcbiAgICAgICAgbGV0IGNoYXRJZnJhbWUgPSBmYWxzZTtcblxuICAgICAgICBkYXRhLmZpbHRlcmVkU3BvdENoZWNrcy5mb3JFYWNoKChzcG90Y2hlY2s6IGFueSkgPT4ge1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIHNwb3RjaGVjay5hcHBlYXJhbmNlLm1vZGUgPT09ICdmdWxsU2NyZWVuJyAmJlxuICAgICAgICAgICAgaXNjaGF0U3VydmV5KHNwb3RjaGVjaz8uc3VydmV5Py5zdXJ2ZXlUeXBlKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgY2hhdElmcmFtZSA9IHRydWU7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNsYXNzaWNJZnJhbWUgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgbmV3Q2xhc3NpY1VybCA9IGNsYXNzaWNJZnJhbWVcbiAgICAgICAgICA/IGBodHRwczovLyR7ZG9tYWluTmFtZX0vZXVpLXRlbXBsYXRlL2NsYXNzaWNgXG4gICAgICAgICAgOiAnJztcbiAgICAgICAgY29uc3QgbmV3Q2hhdFVybCA9IGNoYXRJZnJhbWVcbiAgICAgICAgICA/IGBodHRwczovLyR7ZG9tYWluTmFtZX0vZXVpLXRlbXBsYXRlL2NoYXRgXG4gICAgICAgICAgOiAnJztcblxuICAgICAgICB0aGlzLnNwb3RjaGVja1N0YXRlU2VydmljZS5zZXRTdGF0ZSh7XG4gICAgICAgICAgZmlsdGVyZWRTcG90Q2hlY2tzOiBkYXRhLmZpbHRlcmVkU3BvdENoZWNrcyxcbiAgICAgICAgICBjbGFzc2ljVXJsOiBuZXdDbGFzc2ljVXJsLFxuICAgICAgICAgIGNoYXRVcmw6IG5ld0NoYXRVcmwsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmxvZygnRXJyb3IgaW5pdGlhbGl6aW5nIHdpZGdldDonLCBKU09OLnN0cmluZ2lmeShlcnJvcikpO1xuICAgIH1cbiAgfTtcbn1cbiIsIjxkaXYgW25nU3R5bGVdPVwiY29tcG9uZW50U3R5bGVzLndyYXBwZXJTdHlsZXNcIiBjbGFzcz1cInNhZmUtYXJlYVwiPlxuICA8ZGl2IFtuZ1N0eWxlXT1cImNvbXBvbmVudFN0eWxlcy5zdHlsZXNcIj5cbiAgICA8ZGl2IHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlOyBoZWlnaHQ6IDEwMCU7XCI+XG4gICAgICA8c3BvdGNoZWNrLWNsb3NlLWJ1dHRvbiAvPlxuICBcbiAgICAgIDxXZWJWaWV3Q29tcG9uZW50XG4gICAgICAgICpuZ0lmPVwic3RhdGUuY2xhc3NpY1VybCAmJiBzdGF0ZS5jbGFzc2ljVXJsLmxlbmd0aCA+IDAgJiYgc3RhdGUuc3BvdGNoZWNrVVJMLmxlbmd0aCA+IDAgJiYgc3RhdGUuc3BvdENoZWNrVHlwZSA9PT0gJ2NsYXNzaWMnXCJcbiAgICAgICAgW3VybF09XCJzdGF0ZS5jbGFzc2ljVXJsXCJcbiAgICAgICAgW3dlYnZpZXdUeXBlXT1cIidjbGFzc2ljJ1wiXG4gICAgICAgIFtpc01pbmlDYXJkXT1cInN0YXRlLnNwb3RDaGVja3NNb2RlID09PSAnbWluaUNhcmQnXCJcbiAgICAgIC8+XG4gIFxuICAgICAgPFdlYlZpZXdDb21wb25lbnRcbiAgICAgICAgKm5nSWY9XCJzdGF0ZS5jaGF0VXJsICYmIHN0YXRlLmNoYXRVcmwubGVuZ3RoID4gMCAmJiBzdGF0ZS5zcG90Y2hlY2tVUkwubGVuZ3RoID4gMCAmJiBzdGF0ZS5zcG90Q2hlY2tUeXBlID09PSAnY2hhdCdcIlxuICAgICAgICBbdXJsXT1cInN0YXRlLmNoYXRVcmxcIlxuICAgICAgICBbd2Vidmlld1R5cGVdPVwiJ2NoYXQnXCJcbiAgICAgICAgW2lzTWluaUNhcmRdPVwic3RhdGUuc3BvdENoZWNrc01vZGUgPT09ICdtaW5pQ2FyZCdcIlxuICAgICAgLz5cblxuICAgICAgPGRpdiAqbmdJZj1cInN0YXRlLnNwb3RDaGVja3NNb2RlID09PSAnbWluaUNhcmQnICYmIHN0YXRlLmF2YXRhckVuYWJsZWRcIj5cbiAgICAgICAgPGRpdiBzdHlsZT1cInBvc2l0aW9uOiBhYnNvbHV0ZTsgYm90dG9tOiAtNjZweDsgbGVmdDogMTZweDsgei1pbmRleDogMTAwMDAxO1wiPlxuICAgICAgICAgIDxpbWcgW3NyY109XCJhdmF0YXJVcmxcIiBzdHlsZT1cIndpZHRoOiA1NnB4OyBoZWlnaHQ6IDU2cHg7IGJvcmRlci1yYWRpdXM6IDUwcHg7IGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1wiLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -241,7 +241,6 @@ export const handleSurveyEnd = () => {
241
241
  export const getSpotcheckComponentCssStyles = (state) => {
242
242
  let styles = {};
243
243
  let wrapperStyles = {};
244
- let padding = 30;
245
244
  if (state.isFullScreenMode && state.isVisible) {
246
245
  wrapperStyles = {
247
246
  display: 'flex',
@@ -255,7 +254,6 @@ export const getSpotcheckComponentCssStyles = (state) => {
255
254
  if (state.isVisible && state.isMounted) {
256
255
  let height = Math.min(state.currentQuestionHeight, (state.maxHeight * window.innerHeight));
257
256
  if (state.spotChecksMode === 'miniCard') {
258
- padding = 45;
259
257
  if (state.avatarEnabled) {
260
258
  height = height - 56;
261
259
  }
@@ -309,8 +307,6 @@ export const getSpotcheckComponentCssStyles = (state) => {
309
307
  zIndex: '99999999',
310
308
  display: 'none',
311
309
  flexDirection: 'column',
312
- paddingTop: padding + 'px',
313
- paddingBottom: padding + 'px',
314
310
  ...wrapperStyles
315
311
  },
316
312
  styles: {
@@ -324,4 +320,4 @@ export const closeSpotCheckAndHandleSurveyEnd = async () => {
324
320
  await closeSpotCheck();
325
321
  handleSurveyEnd();
326
322
  };
327
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hbmd1bGFyLXVpL2xpYi9zcG90Y2hlY2tzL2hlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEVBQUUsSUFBSSxNQUFNLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRTNDLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUVoRSxJQUFJLDJCQUFrRCxDQUFDO0FBRXZELE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLEdBQTBCLEVBQUU7SUFDbEUsSUFBSSxDQUFDLDJCQUEyQixFQUFFLENBQUM7UUFDakMsMkJBQTJCLEdBQUcsSUFBSSxxQkFBcUIsRUFBRSxDQUFDO0lBQzVELENBQUM7SUFDRCxPQUFPLDJCQUEyQixDQUFDO0FBQ3JDLENBQUMsQ0FBQztBQUVGLE1BQU0sVUFBVSxlQUFlO0lBQzdCLE1BQU0sVUFBVSxHQUFHLE1BQU0sRUFBRSxDQUFDO0lBQzVCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUM3QixPQUFPLEdBQUcsVUFBVSxJQUFJLFNBQVMsRUFBRSxDQUFDO0FBQ3RDLENBQUM7QUFFRCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxJQUFZLEVBQUUsRUFBRTtJQUMzQyxPQUFPLENBQ0wsSUFBSSxLQUFLLGdCQUFnQjtRQUN6QixJQUFJLEtBQUssU0FBUztRQUNsQixJQUFJLEtBQUssU0FBUztRQUNsQixJQUFJLEtBQUssVUFBVSxDQUNwQixDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sS0FBSyxHQUFHLEtBQUssSUFBSSxFQUFFO0lBQzlCLE1BQU0sSUFBSSxHQUFHLE1BQU0sTUFBTSxD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QUNQLE9BQU8sRUFBRSxNQUFNO29CQUNmLE1BQU0sRUFBRSxNQUFNLEdBQUMsSUFBSTtpQkFDcEIsQ0FBQztnQkFDRixhQUFhLEdBQUc7b0JBQ2QsT0FBTyxFQUFFLE1BQU07b0JBQ2YsY0FBYyxFQUFFLFFBQVE7aUJBQ3pCLENBQUM7Z0JBQ0osTUFBTTtZQUVSO2dCQUNFLE1BQU07UUFDVixDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU87UUFDTCxhQUFhLEVBQUU7WUFDYixRQUFRLEVBQUUsT0FBTztZQUNqQixLQUFLLEVBQUUsTUFBTTtZQUNiLE1BQU0sRUFBRSxNQUFNO1lBQ2QsR0FBRyxFQUFFLEdBQUc7WUFDUixJQUFJLEVBQUUsR0FBRztZQUNULGVBQWUsRUFBRSxvQkFBb0I7WUFDckMsTUFBTSxFQUFFLFVBQVU7WUFDbEIsT0FBTyxFQUFFLE1BQU07WUFDZixhQUFhLEVBQUUsUUFBUTtZQUN2QixVQUFVLEVBQUUsT0FBTyxHQUFDLElBQUk7WUFDeEIsYUFBYSxFQUFFLE9BQU8sR0FBQyxJQUFJO1lBQzNCLEdBQUcsYUFBYTtTQUNqQjtRQUNELE1BQU0sRUFBRTtZQUNOLE9BQU8sRUFBRSxNQUFNO1lBQ2YsYUFBYSxFQUFFLFFBQVE7WUFDdkIsR0FBRyxNQUFNO1NBQ1Y7S0FDRixDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sZ0NBQWdDLEdBQUcsS0FBSyxJQUFJLEVBQUU7SUFDekQsTUFBTSxjQUFjLEVBQUUsQ0FBQztJQUN2QixlQUFlLEVBQUUsQ0FBQztBQUNwQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB2NCBhcyB1dWlkdjQgfSBmcm9tICd1dWlkJztcbmltcG9ydCB7IERldmljZSB9IGZyb20gJ0BjYXBhY2l0b3IvZGV2aWNlJztcbmltcG9ydCB7IFNwb3RjaGVja1N0YXRlIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnO1xuaW1wb3J0IHsgU3BvdGNoZWNrU3RhdGVTZXJ2aWNlIH0gZnJvbSAnLi9TcG90Y2hlY2tTdGF0ZVNlcnZpY2UnO1xuXG5sZXQgZ2xvYmFsU3BvdGNoZWNrU3RhdGVTZXJ2aWNlOiBTcG90Y2hlY2tTdGF0ZVNlcnZpY2U7XG5cbmV4cG9ydCBjb25zdCBnZXRTcG90Y2hlY2tTdGF0ZVNlcnZpY2UgPSAoKTogU3BvdGNoZWNrU3RhdGVTZXJ2aWNlID0+IHtcbiAgaWYgKCFnbG9iYWxTcG90Y2hlY2tTdGF0ZVNlcnZpY2UpIHtcbiAgICBnbG9iYWxTcG90Y2hlY2tTdGF0ZVNlcnZpY2UgPSBuZXcgU3BvdGNoZWNrU3RhdGVTZXJ2aWNlKCk7XG4gIH1cbiAgcmV0dXJuIGdsb2JhbFNwb3RjaGVja1N0YXRlU2VydmljZTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZVRyYWNlSWQoKSB7XG4gIGNvbnN0IHV1aWRTdHJpbmcgPSB1dWlkdjQoKTtcbiAgY29uc3QgdGltZXN0YW1wID0gRGF0ZS5ub3coKTtcbiAgcmV0dXJuIGAke3V1aWRTdHJpbmd9LSR7dGltZXN0YW1wfWA7XG59XG5cbmV4cG9ydCBjb25zdCBpc2NoYXRTdXJ2ZXkgPSAodHlwZTogU3RyaW5nKSA9PiB7XG4gIHJldHVybiAoXG4gICAgdHlwZSA9PT0gJ0NvbnZlcnNhdGlvbmFsJyB8fFxuICAgIHR5cGUgPT09ICdDRVNDaGF0JyB8fFxuICAgIHR5cGUgPT09ICdOUFNDaGF0JyB8fFxuICAgIHR5cGUgPT09ICdDU0FUQ2hhdCdcbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRPUyA9IGFzeW5jICgpID0+IHtcbiAgY29uc3QgaW5mbyA9IGF3YWl0IERldmljZS5nZXRJbmZvKCk7XG4gIHJldHVybiBpbmZvLm9wZXJhdGluZ1N5c3RlbTtcbn07XG5cbmV4cG9ydCBjb25zdCBzZXRBcHBlYXJhbmNlID0gYXN5bmMgKFxuICByZXNwb25zZUpzb246IGFueSxcbiAgc2NyZWVuOiBzdHJpbmcsXG4gIGRvbWFpbk5hbWU6IHN0cmluZyxcbiAgdHJhY2VJZDogc3RyaW5nLFxuICB2YXJpYWJsZXM6IFJlY29yZDxzdHJpbmcsIGFueT5cbikgPT4ge1xuICB0cnkge1xuICAgIGNvbnN0IHNwb3RjaGVja1N0YXRlU2VydmljZSA9IGdldFNwb3RjaGVja1N0YXRlU2VydmljZSgpO1xuICAgIGxldCBzdGF0ZSA9IHNwb3RjaGVja1N0YXRlU2VydmljZS5nZXRTdGF0ZSgpO1xuXG4gICAgaWYgKHJlc3BvbnNlSnNvbikge1xuICAgICAgY29uc3QgY3VycmVudFNwb3RjaGVjayA9IHN0YXRlLmZpbHRlcmVkU3BvdENoZWNrcy5maW5kKFxuICAgICAgICAoc3BvdGNoZWNrKSA9PlxuICAgICAgICAgIHNwb3RjaGVja1snaWQnXSA9PT0gcmVzcG9uc2VKc29uPy5zcG90Q2hlY2tJZCB8fFxuICAgICAgICAgIHNwb3RjaGVja1snaWQnXSA9PT0gcmVzcG9uc2VKc29uPy5pZFxuICAgICAgKTtcblxuICAgICAgY29uc3QgYXBwZWFyYW5jZSA9IHJlc3BvbnNlSnNvbj8uYXBwZWFyYW5jZTtcbiAgICAgIGxldCBjaGF0ID0gZmFsc2U7XG5cbiAgICAgIGxldCB1cGRhdGVkU3RhdGU6IFBhcnRpYWw8U3BvdGNoZWNrU3RhdGU+ID0ge307XG5cbiAgICAgIGlmIChhcHBlYXJhbmNlKSB7XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICBwb3NpdGlvbixcbiAgICAgICAgICBjbG9zZUJ1dHRvbixcbiAgICAgICAgICBjb2xvcnMsXG4gICAgICAgICAgY2FyZFByb3BlcnRpZXMsXG4gICAgICAgICAgbW9kZSxcbiAgICAgICAgICBiYW5uZXJJbWFnZSxcbiAgICAgICAgfSA9IGFwcGVhcmFuY2U7XG4gICAgICAgIGNvbnN0IHsgbWF4SGVpZ2h0IH0gPSBjYXJkUHJvcGVydGllcyB8fCB7fTtcblxuICAgICAgICB1cGRhdGVkU3RhdGUgPSB7XG4gICAgICAgICAgc3BvdGNoZWNrUG9zaXRpb246XG4gICAgICAgICAgICBwb3NpdGlvbiA9PT0gJ3RvcF9mdWxsJyB8fCBwb3NpdGlvbiA9PT0gJ2NlbnRlcl90b3AnXG4gICAgICAgICAgICAgID8gJ3RvcCdcbiAgICAgICAgICAgICAgOiBwb3NpdGlvbiA9PT0gJ2NlbnRlcl9jZW50ZXInXG4gICAgICAgICAgICAgID8gJ2NlbnRlcidcbiAgICAgICAgICAgICAgOiAnYm90dG9tJyxcbiAgICAgICAgICBpc0Nsb3NlQnV0dG9uRW5hYmxlZDogY2xvc2VCdXR0b24gPz8gdHJ1ZSxcbiAgICAgICAgICBjbG9zZUJ1dHRvblN0eWxlOiBjb2xvcnM/Lm92ZXJyaWRlcyA/PyB7fSxcbiAgICAgICAgICBtYXhIZWlnaHQ6IG1heEhlaWdodCA/IHBhcnNlRmxvYXQobWF4SGVpZ2h0KSAvIDEwMCA6IDAsXG4gICAgICAgICAgc3BvdENoZWNrVHlwZTpcbiAgICAgICAgICAgIGlzY2hhdFN1cnZleShjdXJyZW50U3BvdGNoZWNrPy5bJ3N1cnZleSddPy5zdXJ2ZXlUeXBlKSAmJlxuICAgICAgICAgICAgbW9kZSA9PT0gJ2Z1bGxTY3JlZW4nXG4gICAgICAgICAgICAgID8gJ2NoYXQnXG4gICAgICAgICAgICAgIDogJ2NsYXNzaWMnLFxuICAgICAgICAgIGlzRnVsbFNjcmVlbk1vZGU6IG1vZGUgPT09ICdmdWxsU2NyZWVuJyxcbiAgICAgICAgICBpc0Jhbm5lckltYWdlT246IGJhbm5lckltYWdlPy5lbmFibGVkID8/IGZhbHNlLFxuICAgICAgICAgIHNwb3RDaGVja3NNb2RlOiBtb2RlLFxuICAgICAgICAgIGF2YXRhckVuYWJsZWQ6IGFwcGVhcmFuY2U/LmF2YXRhcj8uZW5hYmxlZCA/PyBmYWxzZSxcbiAgICAgICAgICBhdmF0YXJVcmw6IGFwcGVhcmFuY2U/LmF2YXRhcj8uYXZhdGFyVXJsID8/ICcnLFxuICAgICAgICB9O1xuXG4gICAgICAgIGNoYXQgPSB1cGRhdGVkU3RhdGUuc3BvdENoZWNrVHlwZSA9PT0gJ2NoYXQnO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBzcG90Q2hlY2tJZCA9IHJlc3BvbnNlSnNvbj8uc3BvdENoZWNrSWQgPz8gMDtcbiAgICAgIGNvbnN0IHNwb3RDaGVja0NvbnRhY3RJZCA9XG4gICAgICAgIHJlc3BvbnNlSnNvbj8uc3BvdENoZWNrQ29udGFjdElkID8/XG4gICAgICAgIHJlc3BvbnNlSnNvbj8uc3BvdENoZWNrQ29udGFjdD8uaWQgPz9cbiAgICAgICAgMDtcbiAgICAgIGNvbnN0IHRyaWdnZXJUb2tlbiA9IHJlc3BvbnNlSnNvbj8udHJpZ2dlclRva2VuID8/ICcnO1xuXG4gICAgICB1cGRhdGVkU3RhdGUgPSB7XG4gICAgICAgIC4uLnVwZGF0ZWRTdGF0ZSxcbiAgICAgICAgc3BvdGNoZWNrSUQ6IHNwb3RDaGVja0lkLFxuICAgICAgICBzcG90Y2hlY2tDb250YWN0SUQ6IHNwb3RDaGVja0NvbnRhY3RJZCxcbiAgICAgICAgdHJpZ2dlclRva2VuLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgYmFzZVNwb3RjaGVja1VSTCA9IGBodHRwczovLyR7ZG9tYWluTmFtZX0vcy9zcG90Y2hlY2svJHt0cmlnZ2VyVG9rZW59LyR7XG4gICAgICAgIGNoYXQgPyAnY29uZmlnJyA6ICdib290c3RyYXAnXG4gICAgICB9P3Nwb3RjaGVja0NvbnRhY3RJZD0ke3Nwb3RDaGVja0NvbnRhY3RJZH0mdHJhY2VJZD0ke3RyYWNlSWR9JnNwb3RjaGVja1VybD0ke3NjcmVlbn1gO1xuXG4gICAgICBsZXQgZnVsbFNwb3RjaGVja1VSTCA9IGJhc2VTcG90Y2hlY2tVUkw7XG5cbiAgICAgIE9iamVjdC5lbnRyaWVzKHZhcmlhYmxlcykuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICAgIGZ1bGxTcG90Y2hlY2tVUkwgKz0gYCYke2tleX09JHt2YWx1ZX1gO1xuICAgICAgfSk7XG5cbiAgICAgIHVwZGF0ZWRTdGF0ZS5zcG90Y2hlY2tVUkwgPSBmdWxsU3BvdGNoZWNrVVJMO1xuICAgICAgc3BvdGNoZWNrU3RhdGVTZXJ2aWNlLnNldFN0YXRlKHVwZGF0ZWRTdGF0ZSk7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgYXhpb3MuZ2V0KGZ1bGxTcG90Y2hlY2tVUkwpO1xuICAgICAgICBjb25zdCB0aGVtZUluZm8gPSByZXNwb25zZS5kYXRhLmNvbmZpZy5nZW5lcmF0ZWRDU1M7XG4gICAgICAgIGNvbnN0IHRoZW1lX3BheWxvYWQgPSB7IHR5cGU6ICdUSEVNRV9VUERBVEVfU1BPVENIRUNLJywgdGhlbWVJbmZvIH07XG4gICAgICAgIHN0YXRlID0gc3BvdGNoZWNrU3RhdGVTZXJ2aWNlLmdldFN0YXRlKCk7XG5cbiAgICAgICAgbGV0IHdlYlZpZXdSZWYgPSBjaGF0ID8gc3RhdGUuY2hhdFdlYlZpZXdSZWYgOiBzdGF0ZS5jbGFzc2ljV2ViVmlld1JlZjtcbiAgICAgICAgbGV0IGlzTG9hZGluZyA9IGNoYXQgPyBzdGF0ZS5pc0NoYXRMb2FkaW5nIDogc3RhdGUuaXNDbGFzc2ljTG9hZGluZztcblxuICAgICAgICBjb25zdCByZXNldFN0YXRlRGF0YSA9IHtcbiAgICAgICAgICB0eXBlOiAnUkVTRVRfU1RBVEUnLFxuICAgICAgICAgIHN0YXRlOiB7XG4gICAgICAgICAgICAuLi4ocmVzcG9uc2UuZGF0YSB8fCB7fSksXG4gICAgICAgICAgICBza2lwOiB0cnVlLFxuICAgICAgICAgICAgc3BvdENoZWNrQXBwZWFyYW5jZToge1xuICAgICAgICAgICAgICAuLi4oYXBwZWFyYW5jZSB8fCB7fSksXG4gICAgICAgICAgICAgIHRhcmdldFR5cGU6ICdNT0JJTEUnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNwb3RjaGVja1VybDogc2NyZWVuLFxuICAgICAgICAgICAgdHJhY2VJZCxcbiAgICAgICAgICAgIGVsZW1lbnRCdWlsZGVyUGFyYW1zOiB7XG4gICAgICAgICAgICAgIC4uLih2YXJpYWJsZXMgfHwge30pLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IHNlbmRNZXNzYWdlVG9JZnJhbWUgPSAoaWZyYW1lOiBIVE1MSUZyYW1lRWxlbWVudCwgZGF0YTogYW55KSA9PiB7XG4gICAgICAgICAgaWYgKGlmcmFtZSAmJiBpZnJhbWUuY29udGVudFdpbmRvdykge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgaWZyYW1lLmNvbnRlbnRXaW5kb3cucG9zdE1lc3NhZ2UoZGF0YSwgJyonKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ+KdjCBGYWlsZWQgdG8gc2VuZCBtZXNzYWdlIHRvIGlmcmFtZTonLCBlcnJvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IGNvbW11bmljYXRlV2l0aFdlYlZpZXcgPSBhc3luYyAoaWZyYW1lOiBIVE1MSUZyYW1lRWxlbWVudCkgPT4ge1xuICAgICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBzZW5kTWVzc2FnZVRvSWZyYW1lKGlmcmFtZSwgcmVzZXRTdGF0ZURhdGEpO1xuICAgICAgICAgICAgc2VuZE1lc3NhZ2VUb0lmcmFtZShpZnJhbWUsIHRoZW1lX3BheWxvYWQpO1xuICAgICAgICAgICAgcmVzb2x2ZSh0cnVlKTtcbiAgICAgICAgICB9LCAyMDAwKSk7XG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKHdlYlZpZXdSZWYpIHtcbiAgICAgICAgICBpZiAoaXNMb2FkaW5nID09PSBmYWxzZSkge1xuICAgICAgICAgICAgY29tbXVuaWNhdGVXaXRoV2ViVmlldyh3ZWJWaWV3UmVmKTtcbiAgICAgICAgICAgIHN0YXJ0KCk7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gdG9kbzogcmVjaGVjayB0aGlzXG4gICAgICAgICAgICBjb25zdCB1bnN1YnNjcmliZSA9IHNwb3RjaGVja1N0YXRlU2VydmljZS5zdGF0ZSQuc3Vic2NyaWJlKFxuICAgICAgICAgICAgICAoY3VycmVudFN0YXRlKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgICAgICAgaXNDaGF0TG9hZGluZyxcbiAgICAgICAgICAgICAgICAgIGlzQ2xhc3NpY0xvYWRpbmcsXG4gICAgICAgICAgICAgICAgICBjaGF0V2ViVmlld1JlZixcbiAgICAgICAgICAgICAgICAgIGNsYXNzaWNXZWJWaWV3UmVmLFxuICAgICAgICAgICAgICAgIH0gPSBjdXJyZW50U3RhdGU7XG5cbiAgICAgICAgICAgICAgICBpZiAoKCFpc0NoYXRMb2FkaW5nICYmIGNoYXQpIHx8ICghaXNDbGFzc2ljTG9hZGluZyAmJiAhY2hhdCkpIHtcbiAgICAgICAgICAgICAgICAgIHVuc3Vic2NyaWJlLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICAgICAgICBjb25zdCBhY3RpdmVXZWJWaWV3UmVmID0gY2hhdFxuICAgICAgICAgICAgICAgICAgICA/IGNoYXRXZWJWaWV3UmVmXG4gICAgICAgICAgICAgICAgICAgIDogY2xhc3NpY1dlYlZpZXdSZWY7XG4gICAgICAgICAgICAgICAgICBpZiAoYWN0aXZlV2ViVmlld1JlZikge1xuICAgICAgICAgICAgICAgICAgICBjb21tdW5pY2F0ZVdpdGhXZWJWaWV3KGFjdGl2ZVdlYlZpZXdSZWYpO1xuICAgICAgICAgICAgICAgICAgICBzdGFydCgpO1xuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICAgICAgICAgICAgICfimqDvuI8gQWN0aXZlIFdlYlZpZXcgcmVmIGlzIG51bGwgYWZ0ZXIgbG9hZGluZyBjb21wbGV0ZWQnXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IHVuc3Vic2NyaWJlV2ViVmlldyA9IHNwb3RjaGVja1N0YXRlU2VydmljZS5zdGF0ZSQuc3Vic2NyaWJlKFxuICAgICAgICAgICAgKGN1cnJlbnRTdGF0ZSkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCB1cGRhdGVkV2ViVmlld1JlZiA9IGNoYXRcbiAgICAgICAgICAgICAgICA/IGN1cnJlbnRTdGF0ZS5jaGF0V2ViVmlld1JlZlxuICAgICAgICAgICAgICAgIDogY3VycmVudFN0YXRlLmNsYXNzaWNXZWJWaWV3UmVmO1xuICAgICAgICAgICAgICBjb25zdCB1cGRhdGVkSXNMb2FkaW5nID0gY2hhdFxuICAgICAgICAgICAgICAgID8gY3VycmVudFN0YXRlLmlzQ2hhdExvYWRpbmdcbiAgICAgICAgICAgICAgICA6IGN1cnJlbnRTdGF0ZS5pc0NsYXNzaWNMb2FkaW5nO1xuXG4gICAgICAgICAgICAgIGlmICh1cGRhdGVkV2ViVmlld1JlZikge1xuICAgICAgICAgICAgICAgIGlmICghdXBkYXRlZElzTG9hZGluZykge1xuICAgICAgICAgICAgICAgICAgdW5zdWJzY3JpYmVXZWJWaWV3LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICAgICAgICBjb21tdW5pY2F0ZVdpdGhXZWJWaWV3KHVwZGF0ZWRXZWJWaWV3UmVmKTtcbiAgICAgICAgICAgICAgICAgIHN0YXJ0KCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCfij7MgV2ViVmlldyByZWYgYXZhaWxhYmxlIGJ1dCBzdGlsbCBsb2FkaW5nLi4uJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgKTtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICB9XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcignU29tZXRoaW5nIHdlbnQgd3JvbmcnKTtcbiAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgIHRocm93IG5ldyBFcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IHN0YXJ0ID0gKCkgPT4ge1xuICBjb25zdCBzdGF0ZSA9IGdldFNwb3RjaGVja1N0YXRlU2VydmljZSgpLmdldFN0YXRlKCk7XG4gIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgIGdldFNwb3RjaGVja1N0YXRlU2VydmljZSgpLnNldFN0YXRlKHsgaXNWaXNpYmxlOiB0cnVlIH0pO1xuICB9LCBzdGF0ZS5hZnRlckRlbGF5ICogMTAwMCk7XG59O1xuXG5leHBvcnQgY29uc3QgY2xvc2VTcG90Q2hlY2sgPSBhc3luYyAoKSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3Qgc3RhdGVTZXJ2aWNlID0gZ2V0U3BvdGNoZWNrU3RhdGVTZXJ2aWNlKCk7XG4gICAgY29uc3Qgc3RhdGUgPSBzdGF0ZVNlcnZpY2UuZ2V0U3RhdGUoKTtcbiAgICBjb25zdCBwYXlsb2FkID0ge1xuICAgICAgdHJhY2VJZDogc3RhdGUudHJhY2VJZCxcbiAgICAgIHRyaWdnZXJUb2tlbjogc3RhdGUudHJpZ2dlclRva2VuLFxuICAgIH07XG5cbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKFxuICAgICAgYGh0dHBzOi8vJHtzdGF0ZS5kb21haW5OYW1lfS9hcGkvaW50ZXJuYWwvc3BvdGNoZWNrL2Rpc21pc3MvJHtzdGF0ZS5zcG90Y2hlY2tDb250YWN0SUR9YCxcbiAgICAgIHtcbiAgICAgICAgbWV0aG9kOiAnUFVUJyxcbiAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgIH0sXG4gICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHBheWxvYWQpLFxuICAgICAgfVxuICAgICk7XG5cbiAgICBpZiAocmVzcG9uc2Uuc3RhdHVzICE9IDIwMCkge1xuICAgICAgY29uc29sZS5sb2coYEVycm9yOiAke3Jlc3BvbnNlLnN0YXR1c31gKTtcbiAgICB9XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgY29uc29sZS5sb2coJ0Vycm9yIHBhcnNpbmcgSlNPTjonLCBlcnJvcik7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBoYW5kbGVTdXJ2ZXlFbmQgPSAoKSA9PiB7XG4gIGNvbnN0IHN0YXRlU2VydmljZSA9IGdldFNwb3RjaGVja1N0YXRlU2VydmljZSgpO1xuICBjb25zdCBzdGF0ZSA9IHN0YXRlU2VydmljZS5nZXRTdGF0ZSgpO1xuICBjb25zdCB3ZWJWaWV3UmVmID1cbiAgICBzdGF0ZS5zcG90Q2hlY2tUeXBlID09PSAnY2hhdCdcbiAgICAgID8gc3RhdGUuY2hhdFdlYlZpZXdSZWZcbiAgICAgIDogc3RhdGUuY2xhc3NpY1dlYlZpZXdSZWY7XG5cbiAgd2ViVmlld1JlZj8uY3VycmVudD8uaW5qZWN0SmF2YVNjcmlwdChgXG4gICAgICAoZnVuY3Rpb24oKSB7XG4gICAgICAgIHdpbmRvdy5kaXNwYXRjaEV2ZW50KG5ldyBNZXNzYWdlRXZlbnQoJ21lc3NhZ2UnLCB7XG4gICAgICAgICAgZGF0YTogJHtKU09OLnN0cmluZ2lmeSh7IHR5cGU6ICdVTk1PVU5UX0FQUCcgfSl9XG4gICAgICAgIH0pKTtcbiAgICAgIH0pKCk7XG4gICAgYCk7XG5cbiAgY29uc3QgdXBkYXRlZFN0YXRlOiBQYXJ0aWFsPFNwb3RjaGVja1N0YXRlPiA9IHtcbiAgICBpc1Zpc2libGU6IGZhbHNlLFxuICAgIGlzQ2xvc2VCdXR0b25FbmFibGVkOiBmYWxzZSxcbiAgICBpc0Z1bGxTY3JlZW5Nb2RlOiBmYWxzZSxcbiAgICBzcG90Y2hlY2tJRDogMCxcbiAgICBjdXJyZW50UXVlc3Rpb25IZWlnaHQ6IDAsXG4gICAgY2xvc2VCdXR0b25TdHlsZToge30sXG4gICAgc3BvdGNoZWNrQ29udGFjdElEOiAwLFxuICAgIHNwb3RjaGVja1VSTDogJycsXG4gICAgc3BvdGNoZWNrUG9zaXRpb246ICdib3R0b20nLFxuICAgIGlzTW91bnRlZDogZmFsc2UsXG4gICAgc3BvdENoZWNrVHlwZTogJycsXG4gICAgc2NyZWVuSGVpZ2h0OiAwLFxuICAgIGtleUJvYXJkSGVpZ2h0OiAwLFxuICAgIHRleHRQb3NpdGlvbjogMCxcbiAgICBzcG90Q2hlY2tzTW9kZTogJycsXG4gICAgYXZhdGFyRW5hYmxlZDogZmFsc2UsXG4gICAgYXZhdGFyVXJsOiAnJyxcbiAgfTtcblxuICBzdGF0ZVNlcnZpY2Uuc2V0U3RhdGUodXBkYXRlZFN0YXRlKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTcG90Y2hlY2tDb21wb25lbnRDc3NTdHlsZXMgPSAoc3RhdGU6IFNwb3RjaGVja1N0YXRlKSA9PiB7IFxuICBsZXQgc3R5bGVzID0ge31cbiAgbGV0IHdyYXBwZXJTdHlsZXMgPSB7fVxuICBsZXQgcGFkZGluZyA9IDMwO1xuICBpZiAoc3RhdGUuaXNGdWxsU2NyZWVuTW9kZSAmJiBzdGF0ZS5pc1Zpc2libGUpIHtcbiAgICB3cmFwcGVyU3R5bGVzID0ge1xuICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgfTtcbiAgICBzdHlsZXMgPSB7XG4gICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICBoZWlnaHQ6ICcxMDAlJyxcbiAgICB9O1xuICB9XG4gIFxuICBpZiAoc3RhdGUuaXNWaXNpYmxlICYmIHN0YXRlLmlzTW91bnRlZCkge1xuXG4gICAgbGV0IGhlaWdodCA9IE1hdGgubWluKHN0YXRlLmN1cnJlbnRRdWVzdGlvbkhlaWdodCwgKHN0YXRlLm1heEhlaWdodCAqIHdpbmRvdy5pbm5lckhlaWdodCkpO1xuICAgIGlmKHN0YXRlLnNwb3RDaGVja3NNb2RlID09PSAnbWluaUNhcmQnKSB7XG4gICAgICBwYWRkaW5nID0gNDU7XG4gICAgICBpZihzdGF0ZS5hdmF0YXJFbmFibGVkKSB7XG4gICAgICAgIGhlaWdodCA9IGhlaWdodCAtIDU2O1xuICAgICAgfVxuICAgICAgaWYoc3RhdGUuaXNDbG9zZUJ1dHRvbkVuYWJsZWQpIHtcbiAgICAgICAgaGVpZ2h0ID0gaGVpZ2h0IC0gNDA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgc3dpdGNoIChzdGF0ZS5zcG90Y2hlY2tQb3NpdGlvbikge1xuICAgICAgY2FzZSAnYm90dG9tJzpcbiAgICAgICAgc3R5bGVzID0ge1xuICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICBoZWlnaHQ6IGhlaWdodCsncHgnLFxuICAgICAgICB9O1xuICAgICAgICB3cmFwcGVyU3R5bGVzID0ge1xuICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ2ZsZXgtZW5kJyxcbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICAgIFxuICAgICAgICBjYXNlICd0b3AnOlxuICAgICAgICAgIHN0eWxlcyA9IHtcbiAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICAgIGhlaWdodDogaGVpZ2h0KydweCcsXG4gICAgICAgICAgfTtcbiAgICAgICAgICB3cmFwcGVyU3R5bGVzID0ge1xuICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6ICdmbGV4LXN0YXJ0JyxcbiAgICAgICAgICB9O1xuICAgICAgICBicmVhaztcbiAgICAgICAgICBcbiAgICAgICAgY2FzZSAnY2VudGVyJzpcbiAgICAgICAgICBzdHlsZXMgPSB7XG4gICAgICAgICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICAgICAgICBoZWlnaHQ6IGhlaWdodCsncHgnLFxuICAgICAgICAgIH07XG4gICAgICAgICAgd3JhcHBlclN0eWxlcyA9IHtcbiAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICAgICAgICB9O1xuICAgICAgICBicmVhaztcbiAgICAgICAgXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgXG4gIHJldHVybiB7XG4gICAgd3JhcHBlclN0eWxlczoge1xuICAgICAgcG9zaXRpb246ICdmaXhlZCcsIFxuICAgICAgd2lkdGg6ICcxMDAlJywgXG4gICAgICBoZWlnaHQ6ICcxMDAlJywgXG4gICAgICB0b3A6ICcwJywgXG4gICAgICBsZWZ0OiAnMCcsIFxuICAgICAgYmFja2dyb3VuZENvbG9yOiAncmdiYSgwLCAwLCAwLCAwLjMpJywgXG4gICAgICB6SW5kZXg6ICc5OTk5OTk5OScsXG4gICAgICBkaXNwbGF5OiAnbm9uZScsXG4gICAgICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbiAgICAgIHBhZGRpbmdUb3A6IHBhZGRpbmcrJ3B4JyxcbiAgICAgIHBhZGRpbmdCb3R0b206IHBhZGRpbmcrJ3B4JyxcbiAgICAgIC4uLndyYXBwZXJTdHlsZXNcbiAgICB9LFxuICAgIHN0eWxlczoge1xuICAgICAgZGlzcGxheTogJ25vbmUnLFxuICAgICAgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsXG4gICAgICAuLi5zdHlsZXMsXG4gICAgfVxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGNsb3NlU3BvdENoZWNrQW5kSGFuZGxlU3VydmV5RW5kID0gYXN5bmMgKCkgPT4ge1xuICBhd2FpdCBjbG9zZVNwb3RDaGVjaygpO1xuICBoYW5kbGVTdXJ2ZXlFbmQoKTtcbn07Il19
323
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hbmd1bGFyLXVpL2xpYi9zcG90Y2hlY2tzL2hlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEVBQUUsSUFBSSxNQUFNLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRTNDLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUVoRSxJQUFJLDJCQUFrRCxDQUFDO0FBRXZELE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLEdBQTBCLEVBQUU7SUFDbEUsSUFBSSxDQUFDLDJCQUEyQixFQUFFLENBQUM7UUFDakMsMkJBQTJCLEdBQUcsSUFBSSxxQkFBcUIsRUFBRSxDQUFDO0lBQzVELENBQUM7SUFDRCxPQUFPLDJCQUEyQixDQUFDO0FBQ3JDLENBQUMsQ0FBQztBQUVGLE1BQU0sVUFBVSxlQUFlO0lBQzdCLE1BQU0sVUFBVSxHQUFHLE1BQU0sRUFBRSxDQUFDO0lBQzVCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUM3QixPQUFPLEdBQUcsVUFBVSxJQUFJLFNBQVMsRUFBRSxDQUFDO0FBQ3RDLENBQUM7QUFFRCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxJQUFZLEVBQUUsRUFBRTtJQUMzQyxPQUFPLENBQ0wsSUFBSSxLQUFLLGdCQUFnQjtRQUN6QixJQUFJLEtBQUssU0FBUztRQUNsQixJQUFJLEtBQUssU0FBUztRQUNsQixJQUFJLEtBQUssVUFBVSxDQUNwQixDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sS0FBSyxHQUFHLEtBQUssSUFBSSxFQUFFO0lBQzlCLE1BQU0sSUFBSSxHQUFHLE1BQU0sTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3BDLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztBQUM5QixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsS0FBSyxFQUNoQyxZQUFpQixFQUNqQixNQUFjLEVBQ2QsVUFBa0IsRUFDbEIsT0FBZSxFQUNmLFNBQThCLEVBQzlCLEVBQUU7SUFDRixJQUFJLENBQUM7UUFDSCxNQUFNLHFCQUFxQixHQUFHLHdCQUF3QixFQUFFLENBQUM7UUFDekQsSUFBSSxLQUFLLEdBQUcscUJBQXFCLENBQUMsUUFBUSxFQUFFLENBQUM7UUFFN0MsSUFBSSxZQUFZLEVBQUUsQ0FBQztZQUNqQixNQUFNLGdCQUFnQixHQUFHLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQ3BELENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FDWixTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssWUFBWSxFQUFFLFdBQVc7Z0JBQzdDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxZQUFZLEVBQUUsRUFBRSxDQUN2QyxDQUFDO1lBRUYsTUFBTSxVQUFVLEdBQUcsWUFBWSxFQUFFLFVBQVUsQ0FBQztZQUM1QyxJQUFJLElBQUksR0FBRyxLQUFLLENBQUM7WUFFakIsSUFBSSxZQUFZLEdBQTRCLEVBQUUsQ0FBQztZQUUvQyxJQUFJLFVBQVUsRUFBRSxDQUFDO2dCQUNmLE1BQU0sRUFDSixRQUFRLEVBQ1IsV0FBVyxFQUNYLE1BQU0sRUFDTixjQUFjLEVBQ2QsSUFBSSxFQUNKLFdBQVcsR0FDWixHQUFHLFVBQVUsQ0FBQztnQkFDZixNQUFNLEVBQUUsU0FBUyxFQUFFLEdBQUcsY0FBYyxJQUFJLEVBQUUsQ0FBQztnQkFFM0MsWUFBWSxHQUFHO29CQUNiLGlCQUFpQixFQUNmLFFBQVEsS0FBSyxVQUFVLElBQUksUUFBUSxLQUFLLFlBQVk7d0JBQ2xELENBQUMsQ0FBQyxLQUFLO3dCQUNQLENBQUMsQ0FBQyxRQUFRLEtBQUssZUFBZTs0QkFDOUIsQ0FBQyxDQUFDLFFBQVE7NEJBQ1YsQ0FBQyxDQUFDLFFBQVE7b0JBQ2Qsb0JBQW9CLEVBQUUsV0FBVyxJQUFJLElBQUk7b0JBQ3pDLGdCQUFnQixFQUFFLE1BQU0sRUFBRSxTQUFTLElBQUksRUFBRTtvQkFDekMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDdEQsYUFBYSxFQUNYLFlBQVksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLFVBQVUsQ0FBQzt3QkFDdEQsSUFBSSxLQUFLLFlBQVk7d0JBQ25CLENBQUMsQ0FBQyxNQUFNO3dCQUNSLENBQUMsQ0FBQyxTQUFTO29CQUNmLGdCQUFnQixFQUFFLElBQUksS0FBSyxZQUFZO29CQUN2QyxlQUFlLEVBQUUsV0FBVyxFQUFFLE9BQU8sSUFBSSxLQUFLO29CQUM5QyxjQUFjLEVBQUUsSUFBSTtvQkFDcEIsYUFBYSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsT0FBTyxJQUFJLEtBQUs7b0JBQ25ELFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFNBQVMsSUFBSSxFQUFFO2lCQUMvQyxDQUFDO2dCQUVGLElBQUksR0FBRyxZQUFZLENBQUMsYUFBYSxLQUFLLE1BQU0sQ0FBQztZQUMvQyxDQUFDO1lBRUQsTUFBTSxXQUFXLEdBQUcsWUFBWSxFQUFFLFdBQVcsSUFBSSxDQUFDLENBQUM7WUFDbkQsTUFBTSxrQkFBa0IsR0FDdEIsWUFBWSxFQUFFLGtCQUFrQjtnQkFDaEMsWUFBWSxFQUFFLGdCQUFnQixFQUFFLEVBQUU7Z0JBQ2xDLENBQUMsQ0FBQztZQUNKLE1BQU0sWUFBWSxHQUFHLFlBQVksRUFBRSxZQUFZLElBQUksRUFBRSxDQUFDO1lBRXRELFlBQVksR0FBRztnQkFDYixHQUFHLFlBQVk7Z0JBQ2YsV0FBVyxFQUFFLFdBQVc7Z0JBQ3hCLGtCQUFrQixFQUFFLGtCQUFrQjtnQkFDdEMsWUFBWTthQUNiLENBQUM7WUFFRixNQUFNLGdCQUFnQixHQUFHLFdBQVcsVUFBVSxnQkFBZ0IsWUFBWSxJQUN4RSxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsV0FDcEIsdUJBQXVCLGtCQUFrQixZQUFZLE9BQU8saUJBQWlCLE1BQU0sRUFBRSxDQUFDO1lBRXRGLElBQUksZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUM7WUFFeEMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFO2dCQUNqRCxnQkFBZ0IsSUFBSSxJQUFJLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUN6QyxDQUFDLENBQUMsQ0FBQztZQUVILFlBQVksQ0FBQyxZQUFZLEdBQUcsZ0JBQWdCLENBQUM7WUFDN0MscUJBQXFCLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBRTdDLElBQUksQ0FBQztnQkFDSCxNQUFNLFFBQVEsR0FBRyxNQUFNLEtBQUssQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztnQkFDbkQsTUFBTSxTQUFTLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDO2dCQUNwRCxNQUFNLGFBQWEsR0FBRyxFQUFFLElBQUksRUFBRSx3QkFBd0IsRUFBRSxTQUFTLEVBQUUsQ0FBQztnQkFDcEUsS0FBSyxHQUFHLHFCQUFxQixDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUV6QyxJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQztnQkFDdkUsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUM7Z0JBRXBFLE1BQU0sY0FBYyxHQUFHO29CQUNyQixJQUFJLEVBQUUsYUFBYTtvQkFDbkIsS0FBSyxFQUFFO3dCQUNMLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQzt3QkFDeEIsSUFBSSxFQUFFLElBQUk7d0JBQ1YsbUJBQW1CLEVBQUU7NEJBQ25CLEdBQUcsQ0FBQyxVQUFVLElBQUksRUFBRSxDQUFDOzRCQUNyQixVQUFVLEVBQUUsUUFBUTt5QkFDckI7d0JBQ0QsWUFBWSxFQUFFLE1BQU07d0JBQ3BCLE9BQU87d0JBQ1Asb0JBQW9CLEVBQUU7NEJBQ3BCLEdBQUcsQ0FBQyxTQUFTLElBQUksRUFBRSxDQUFDO3lCQUNyQjtxQkFDRjtpQkFDRixDQUFDO2dCQUVGLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxNQUF5QixFQUFFLElBQVMsRUFBRSxFQUFFO29CQUNuRSxJQUFJLE1BQU0sSUFBSSxNQUFNLENBQUMsYUFBYSxFQUFFLENBQUM7d0JBQ25DLElBQUksQ0FBQzs0QkFDSCxNQUFNLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7d0JBQzlDLENBQUM7d0JBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQzs0QkFDZixPQUFPLENBQUMsS0FBSyxDQUFDLHFDQUFxQyxFQUFFLEtBQUssQ0FBQyxDQUFDO3dCQUM5RCxDQUFDO29CQUNILENBQUM7Z0JBQ0gsQ0FBQyxDQUFDO2dCQUVGLE1BQU0sc0JBQXNCLEdBQUcsS0FBSyxFQUFFLE1BQXlCLEVBQUUsRUFBRTtvQkFDakUsTUFBTSxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUU7d0JBQzNDLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxjQUFjLENBQUMsQ0FBQzt3QkFDNUMsbUJBQW1CLENBQUMsTUFBTSxFQUFFLGFBQWEsQ0FBQyxDQUFDO3dCQUMzQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ2hCLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO2dCQUNaLENBQUMsQ0FBQztnQkFFRixJQUFJLFVBQVUsRUFBRSxDQUFDO29CQUNmLElBQUksU0FBUyxLQUFLLEtBQUssRUFBRSxDQUFDO3dCQUN4QixzQkFBc0IsQ0FBQyxVQUFVLENBQUMsQ0FBQzt3QkFDbkMsS0FBSyxFQUFFLENBQUM7d0JBQ1IsT0FBTyxJQUFJLENBQUM7b0JBQ2QsQ0FBQzt5QkFBTSxDQUFDO3dCQUNOLHFCQUFxQjt3QkFDckIsTUFBTSxXQUFXLEdBQUcscUJBQXFCLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FDeEQsQ0FBQyxZQUFZLEVBQUUsRUFBRTs0QkFDZixNQUFNLEVBQ0osYUFBYSxFQUNiLGdCQUFnQixFQUNoQixjQUFjLEVBQ2QsaUJBQWlCLEdBQ2xCLEdBQUcsWUFBWSxDQUFDOzRCQUVqQixJQUFJLENBQUMsQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLGdCQUFnQixJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQ0FDN0QsV0FBVyxDQUFDLFdBQVcsRUFBRSxDQUFDO2dDQUMxQixNQUFNLGdCQUFnQixHQUFHLElBQUk7b0NBQzNCLENBQUMsQ0FBQyxjQUFjO29DQUNoQixDQUFDLENBQUMsaUJBQWlCLENBQUM7Z0NBQ3RCLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztvQ0FDckIsc0JBQXNCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztvQ0FDekMsS0FBSyxFQUFFLENBQUM7Z0NBQ1YsQ0FBQztxQ0FBTSxDQUFDO29DQUNOLE9BQU8sQ0FBQyxJQUFJLENBQ1YsdURBQXVELENBQ3hELENBQUM7Z0NBQ0osQ0FBQzs0QkFDSCxDQUFDO3dCQUNILENBQUMsQ0FDRixDQUFDO3dCQUNGLE9BQU8sSUFBSSxDQUFDO29CQUNkLENBQUM7Z0JBQ0gsQ0FBQztxQkFBTSxDQUFDO29CQUNOLE1BQU0sa0JBQWtCLEdBQUcscUJBQXFCLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FDL0QsQ0FBQyxZQUFZLEVBQUUsRUFBRTt3QkFDZixNQUFNLGlCQUFpQixHQUFHLElBQUk7NEJBQzVCLENBQUMsQ0FBQyxZQUFZLENBQUMsY0FBYzs0QkFDN0IsQ0FBQyxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQzt3QkFDbkMsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJOzRCQUMzQixDQUFDLENBQUMsWUFBWSxDQUFDLGFBQWE7NEJBQzVCLENBQUMsQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLENBQUM7d0JBRWxDLElBQUksaUJBQWlCLEVBQUUsQ0FBQzs0QkFDdEIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7Z0NBQ3RCLGtCQUFrQixDQUFDLFdBQVcsRUFBRSxDQUFDO2dDQUNqQyxzQkFBc0IsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO2dDQUMxQyxLQUFLLEVBQUUsQ0FBQzs0QkFDVixDQUFDO2lDQUFNLENBQUM7Z0NBQ04sT0FBTyxDQUFDLEdBQUcsQ0FBQyw4Q0FBOEMsQ0FBQyxDQUFDOzRCQUM5RCxDQUFDO3dCQUNILENBQUM7b0JBQ0gsQ0FBQyxDQUNGLENBQUM7b0JBQ0YsT0FBTyxJQUFJLENBQUM7Z0JBQ2QsQ0FBQztZQUNILENBQUM7WUFBQyxPQUFPLEtBQVUsRUFBRSxDQUFDO2dCQUNwQixNQUFNLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNqQyxDQUFDO1FBQ0gsQ0FBQztRQUNELE1BQU0sSUFBSSxLQUFLLENBQUMsc0JBQXNCLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBQUMsT0FBTyxLQUFVLEVBQUUsQ0FBQztRQUNwQixNQUFNLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNqQyxDQUFDO0FBQ0gsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sS0FBSyxHQUFHLEdBQUcsRUFBRTtJQUN4QixNQUFNLEtBQUssR0FBRyx3QkFBd0IsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3BELFVBQVUsQ0FBQyxHQUFHLEVBQUU7UUFDZCx3QkFBd0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzNELENBQUMsRUFBRSxLQUFLLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxDQUFDO0FBQzlCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxLQUFLLElBQUksRUFBRTtJQUN2QyxJQUFJLENBQUM7UUFDSCxNQUFNLFlBQVksR0FBRyx3QkFBd0IsRUFBRSxDQUFDO1FBQ2hELE1BQU0sS0FBSyxHQUFHLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN0QyxNQUFNLE9BQU8sR0FBRztZQUNkLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTztZQUN0QixZQUFZLEVBQUUsS0FBSyxDQUFDLFlBQVk7U0FDakMsQ0FBQztRQUVGLE1BQU0sUUFBUSxHQUFHLE1BQU0sS0FBSyxDQUMxQixXQUFXLEtBQUssQ0FBQyxVQUFVLG1DQUFtQyxLQUFLLENBQUMsa0JBQWtCLEVBQUUsRUFDeEY7WUFDRSxNQUFNLEVBQUUsS0FBSztZQUNiLE9BQU8sRUFBRTtnQkFDUCxjQUFjLEVBQUUsa0JBQWtCO2FBQ25DO1lBQ0QsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDO1NBQzlCLENBQ0YsQ0FBQztRQUVGLElBQUksUUFBUSxDQUFDLE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQztZQUMzQixPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDM0MsQ0FBQztJQUNILENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YsT0FBTyxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUM1QyxDQUFDO0FBQ0gsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLEdBQUcsRUFBRTtJQUNsQyxNQUFNLFlBQVksR0FBRyx3QkFBd0IsRUFBRSxDQUFDO0lBQ2hELE1BQU0sS0FBSyxHQUFHLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUN0QyxNQUFNLFVBQVUsR0FDZCxLQUFLLENBQUMsYUFBYSxLQUFLLE1BQU07UUFDNUIsQ0FBQyxDQUFDLEtBQUssQ0FBQyxjQUFjO1FBQ3RCLENBQUMsQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUM7SUFFOUIsVUFBVSxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsQ0FBQzs7O2tCQUd0QixJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxDQUFDOzs7S0FHcEQsQ0FBQyxDQUFDO0lBRUwsTUFBTSxZQUFZLEdBQTRCO1FBQzVDLFNBQVMsRUFBRSxLQUFLO1FBQ2hCLG9CQUFvQixFQUFFLEtBQUs7UUFDM0IsZ0JBQWdCLEVBQUUsS0FBSztRQUN2QixXQUFXLEVBQUUsQ0FBQztRQUNkLHFCQUFxQixFQUFFLENBQUM7UUFDeEIsZ0JBQWdCLEVBQUUsRUFBRTtRQUNwQixrQkFBa0IsRUFBRSxDQUFDO1FBQ3JCLFlBQVksRUFBRSxFQUFFO1FBQ2hCLGlCQUFpQixFQUFFLFFBQVE7UUFDM0IsU0FBUyxFQUFFLEtBQUs7UUFDaEIsYUFBYSxFQUFFLEVBQUU7UUFDakIsWUFBWSxFQUFFLENBQUM7UUFDZixjQUFjLEVBQUUsQ0FBQztRQUNqQixZQUFZLEVBQUUsQ0FBQztRQUNmLGNBQWMsRUFBRSxFQUFFO1FBQ2xCLGFBQWEsRUFBRSxLQUFLO1FBQ3BCLFNBQVMsRUFBRSxFQUFFO0tBQ2QsQ0FBQztJQUVGLFlBQVksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUM7QUFDdEMsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sOEJBQThCLEdBQUcsQ0FBQyxLQUFxQixFQUFFLEVBQUU7SUFDdEUsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFBO0lBQ2YsSUFBSSxhQUFhLEdBQUcsRUFBRSxDQUFBO0lBQ3RCLElBQUksS0FBSyxDQUFDLGdCQUFnQixJQUFJLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUM5QyxhQUFhLEdBQUc7WUFDZCxPQUFPLEVBQUUsTUFBTTtZQUNmLE1BQU0sRUFBRSxNQUFNO1NBQ2YsQ0FBQztRQUNGLE1BQU0sR0FBRztZQUNQLE9BQU8sRUFBRSxNQUFNO1lBQ2YsTUFBTSxFQUFFLE1BQU07U0FDZixDQUFDO0lBQ0osQ0FBQztJQUVELElBQUksS0FBSyxDQUFDLFNBQVMsSUFBSSxLQUFLLENBQUMsU0FBUyxFQUFFLENBQUM7UUFFdkMsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxLQUFLLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1FBQzNGLElBQUcsS0FBSyxDQUFDLGNBQWMsS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUN2QyxJQUFHLEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDdkIsTUFBTSxHQUFHLE1BQU0sR0FBRyxFQUFFLENBQUM7WUFDdkIsQ0FBQztZQUNELElBQUcsS0FBSyxDQUFDLG9CQUFvQixFQUFFLENBQUM7Z0JBQzlCLE1BQU0sR0FBRyxNQUFNLEdBQUcsRUFBRSxDQUFDO1lBQ3ZCLENBQUM7UUFDSCxDQUFDO1FBRUQsUUFBUSxLQUFLLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUNoQyxLQUFLLFFBQVE7Z0JBQ1gsTUFBTSxHQUFHO29CQUNQLE9BQU8sRUFBRSxNQUFNO29CQUNmLE1BQU0sRUFBRSxNQUFNLEdBQUMsSUFBSTtpQkFDcEIsQ0FBQztnQkFDRixhQUFhLEdBQUc7b0JBQ2QsT0FBTyxFQUFFLE1BQU07b0JBQ2YsY0FBYyxFQUFFLFVBQVU7aUJBQzNCLENBQUM7Z0JBQ0YsTUFBTTtZQUVOLEtBQUssS0FBSztnQkFDUixNQUFNLEdBQUc7b0JBQ1AsT0FBTyxFQUFFLE1BQU07b0JBQ2YsTUFBTSxFQUFFLE1BQU0sR0FBQyxJQUFJO2lCQUNwQixDQUFDO2dCQUNGLGFBQWEsR0FBRztvQkFDZCxPQUFPLEVBQUUsTUFBTTtvQkFDZixjQUFjLEVBQUUsWUFBWTtpQkFDN0IsQ0FBQztnQkFDSixNQUFNO1lBRU4sS0FBSyxRQUFRO2dCQUNYLE1BQU0sR0FBRztvQkFDUCxPQUFPLEVBQUUsTUFBTTtvQkFDZixNQUFNLEVBQUUsTUFBTSxHQUFDLElBQUk7aUJBQ3BCLENBQUM7Z0JBQ0YsYUFBYSxHQUFHO29CQUNkLE9BQU8sRUFBRSxNQUFNO29CQUNmLGNBQWMsRUFBRSxRQUFRO2lCQUN6QixDQUFDO2dCQUNKLE1BQU07WUFFUjtnQkFDRSxNQUFNO1FBQ1YsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPO1FBQ0wsYUFBYSxFQUFFO1lBQ2IsUUFBUSxFQUFFLE9BQU87WUFDakIsS0FBSyxFQUFFLE1BQU07WUFDYixNQUFNLEVBQUUsTUFBTTtZQUNkLEdBQUcsRUFBRSxHQUFHO1lBQ1IsSUFBSSxFQUFFLEdBQUc7WUFDVCxlQUFlLEVBQUUsb0JBQW9CO1lBQ3JDLE1BQU0sRUFBRSxVQUFVO1lBQ2xCLE9BQU8sRUFBRSxNQUFNO1lBQ2YsYUFBYSxFQUFFLFFBQVE7WUFDdkIsR0FBRyxhQUFhO1NBQ2pCO1FBQ0QsTUFBTSxFQUFFO1lBQ04sT0FBTyxFQUFFLE1BQU07WUFDZixhQUFhLEVBQUUsUUFBUTtZQUN2QixHQUFHLE1BQU07U0FDVjtLQUNGLENBQUM7QUFDSixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxnQ0FBZ0MsR0FBRyxLQUFLLElBQUksRUFBRTtJQUN6RCxNQUFNLGNBQWMsRUFBRSxDQUFDO0lBQ3ZCLGVBQWUsRUFBRSxDQUFDO0FBQ3BCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHY0IGFzIHV1aWR2NCB9IGZyb20gJ3V1aWQnO1xuaW1wb3J0IHsgRGV2aWNlIH0gZnJvbSAnQGNhcGFjaXRvci9kZXZpY2UnO1xuaW1wb3J0IHsgU3BvdGNoZWNrU3RhdGUgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XG5pbXBvcnQgeyBTcG90Y2hlY2tTdGF0ZVNlcnZpY2UgfSBmcm9tICcuL1Nwb3RjaGVja1N0YXRlU2VydmljZSc7XG5cbmxldCBnbG9iYWxTcG90Y2hlY2tTdGF0ZVNlcnZpY2U6IFNwb3RjaGVja1N0YXRlU2VydmljZTtcblxuZXhwb3J0IGNvbnN0IGdldFNwb3RjaGVja1N0YXRlU2VydmljZSA9ICgpOiBTcG90Y2hlY2tTdGF0ZVNlcnZpY2UgPT4ge1xuICBpZiAoIWdsb2JhbFNwb3RjaGVja1N0YXRlU2VydmljZSkge1xuICAgIGdsb2JhbFNwb3RjaGVja1N0YXRlU2VydmljZSA9IG5ldyBTcG90Y2hlY2tTdGF0ZVNlcnZpY2UoKTtcbiAgfVxuICByZXR1cm4gZ2xvYmFsU3BvdGNoZWNrU3RhdGVTZXJ2aWNlO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlVHJhY2VJZCgpIHtcbiAgY29uc3QgdXVpZFN0cmluZyA9IHV1aWR2NCgpO1xuICBjb25zdCB0aW1lc3RhbXAgPSBEYXRlLm5vdygpO1xuICByZXR1cm4gYCR7dXVpZFN0cmluZ30tJHt0aW1lc3RhbXB9YDtcbn1cblxuZXhwb3J0IGNvbnN0IGlzY2hhdFN1cnZleSA9ICh0eXBlOiBTdHJpbmcpID0+IHtcbiAgcmV0dXJuIChcbiAgICB0eXBlID09PSAnQ29udmVyc2F0aW9uYWwnIHx8XG4gICAgdHlwZSA9PT0gJ0NFU0NoYXQnIHx8XG4gICAgdHlwZSA9PT0gJ05QU0NoYXQnIHx8XG4gICAgdHlwZSA9PT0gJ0NTQVRDaGF0J1xuICApO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldE9TID0gYXN5bmMgKCkgPT4ge1xuICBjb25zdCBpbmZvID0gYXdhaXQgRGV2aWNlLmdldEluZm8oKTtcbiAgcmV0dXJuIGluZm8ub3BlcmF0aW5nU3lzdGVtO1xufTtcblxuZXhwb3J0IGNvbnN0IHNldEFwcGVhcmFuY2UgPSBhc3luYyAoXG4gIHJlc3BvbnNlSnNvbjogYW55LFxuICBzY3JlZW46IHN0cmluZyxcbiAgZG9tYWluTmFtZTogc3RyaW5nLFxuICB0cmFjZUlkOiBzdHJpbmcsXG4gIHZhcmlhYmxlczogUmVjb3JkPHN0cmluZywgYW55PlxuKSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3Qgc3BvdGNoZWNrU3RhdGVTZXJ2aWNlID0gZ2V0U3BvdGNoZWNrU3RhdGVTZXJ2aWNlKCk7XG4gICAgbGV0IHN0YXRlID0gc3BvdGNoZWNrU3RhdGVTZXJ2aWNlLmdldFN0YXRlKCk7XG5cbiAgICBpZiAocmVzcG9uc2VKc29uKSB7XG4gICAgICBjb25zdCBjdXJyZW50U3BvdGNoZWNrID0gc3RhdGUuZmlsdGVyZWRTcG90Q2hlY2tzLmZpbmQoXG4gICAgICAgIChzcG90Y2hlY2spID0+XG4gICAgICAgICAgc3BvdGNoZWNrWydpZCddID09PSByZXNwb25zZUpzb24/LnNwb3RDaGVja0lkIHx8XG4gICAgICAgICAgc3BvdGNoZWNrWydpZCddID09PSByZXNwb25zZUpzb24/LmlkXG4gICAgICApO1xuXG4gICAgICBjb25zdCBhcHBlYXJhbmNlID0gcmVzcG9uc2VKc29uPy5hcHBlYXJhbmNlO1xuICAgICAgbGV0IGNoYXQgPSBmYWxzZTtcblxuICAgICAgbGV0IHVwZGF0ZWRTdGF0ZTogUGFydGlhbDxTcG90Y2hlY2tTdGF0ZT4gPSB7fTtcblxuICAgICAgaWYgKGFwcGVhcmFuY2UpIHtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIHBvc2l0aW9uLFxuICAgICAgICAgIGNsb3NlQnV0dG9uLFxuICAgICAgICAgIGNvbG9ycyxcbiAgICAgICAgICBjYXJkUHJvcGVydGllcyxcbiAgICAgICAgICBtb2RlLFxuICAgICAgICAgIGJhbm5lckltYWdlLFxuICAgICAgICB9ID0gYXBwZWFyYW5jZTtcbiAgICAgICAgY29uc3QgeyBtYXhIZWlnaHQgfSA9IGNhcmRQcm9wZXJ0aWVzIHx8IHt9O1xuXG4gICAgICAgIHVwZGF0ZWRTdGF0ZSA9IHtcbiAgICAgICAgICBzcG90Y2hlY2tQb3NpdGlvbjpcbiAgICAgICAgICAgIHBvc2l0aW9uID09PSAndG9wX2Z1bGwnIHx8IHBvc2l0aW9uID09PSAnY2VudGVyX3RvcCdcbiAgICAgICAgICAgICAgPyAndG9wJ1xuICAgICAgICAgICAgICA6IHBvc2l0aW9uID09PSAnY2VudGVyX2NlbnRlcidcbiAgICAgICAgICAgICAgPyAnY2VudGVyJ1xuICAgICAgICAgICAgICA6ICdib3R0b20nLFxuICAgICAgICAgIGlzQ2xvc2VCdXR0b25FbmFibGVkOiBjbG9zZUJ1dHRvbiA/PyB0cnVlLFxuICAgICAgICAgIGNsb3NlQnV0dG9uU3R5bGU6IGNvbG9ycz8ub3ZlcnJpZGVzID8/IHt9LFxuICAgICAgICAgIG1heEhlaWdodDogbWF4SGVpZ2h0ID8gcGFyc2VGbG9hdChtYXhIZWlnaHQpIC8gMTAwIDogMCxcbiAgICAgICAgICBzcG90Q2hlY2tUeXBlOlxuICAgICAgICAgICAgaXNjaGF0U3VydmV5KGN1cnJlbnRTcG90Y2hlY2s/Llsnc3VydmV5J10/LnN1cnZleVR5cGUpICYmXG4gICAgICAgICAgICBtb2RlID09PSAnZnVsbFNjcmVlbidcbiAgICAgICAgICAgICAgPyAnY2hhdCdcbiAgICAgICAgICAgICAgOiAnY2xhc3NpYycsXG4gICAgICAgICAgaXNGdWxsU2NyZWVuTW9kZTogbW9kZSA9PT0gJ2Z1bGxTY3JlZW4nLFxuICAgICAgICAgIGlzQmFubmVySW1hZ2VPbjogYmFubmVySW1hZ2U/LmVuYWJsZWQgPz8gZmFsc2UsXG4gICAgICAgICAgc3BvdENoZWNrc01vZGU6IG1vZGUsXG4gICAgICAgICAgYXZhdGFyRW5hYmxlZDogYXBwZWFyYW5jZT8uYXZhdGFyPy5lbmFibGVkID8/IGZhbHNlLFxuICAgICAgICAgIGF2YXRhclVybDogYXBwZWFyYW5jZT8uYXZhdGFyPy5hdmF0YXJVcmwgPz8gJycsXG4gICAgICAgIH07XG5cbiAgICAgICAgY2hhdCA9IHVwZGF0ZWRTdGF0ZS5zcG90Q2hlY2tUeXBlID09PSAnY2hhdCc7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHNwb3RDaGVja0lkID0gcmVzcG9uc2VKc29uPy5zcG90Q2hlY2tJZCA/PyAwO1xuICAgICAgY29uc3Qgc3BvdENoZWNrQ29udGFjdElkID1cbiAgICAgICAgcmVzcG9uc2VKc29uPy5zcG90Q2hlY2tDb250YWN0SWQgPz9cbiAgICAgICAgcmVzcG9uc2VKc29uPy5zcG90Q2hlY2tDb250YWN0Py5pZCA/P1xuICAgICAgICAwO1xuICAgICAgY29uc3QgdHJpZ2dlclRva2VuID0gcmVzcG9uc2VKc29uPy50cmlnZ2VyVG9rZW4gPz8gJyc7XG5cbiAgICAgIHVwZGF0ZWRTdGF0ZSA9IHtcbiAgICAgICAgLi4udXBkYXRlZFN0YXRlLFxuICAgICAgICBzcG90Y2hlY2tJRDogc3BvdENoZWNrSWQsXG4gICAgICAgIHNwb3RjaGVja0NvbnRhY3RJRDogc3BvdENoZWNrQ29udGFjdElkLFxuICAgICAgICB0cmlnZ2VyVG9rZW4sXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBiYXNlU3BvdGNoZWNrVVJMID0gYGh0dHBzOi8vJHtkb21haW5OYW1lfS9zL3Nwb3RjaGVjay8ke3RyaWdnZXJUb2tlbn0vJHtcbiAgICAgICAgY2hhdCA/ICdjb25maWcnIDogJ2Jvb3RzdHJhcCdcbiAgICAgIH0/c3BvdGNoZWNrQ29udGFjdElkPSR7c3BvdENoZWNrQ29udGFjdElkfSZ0cmFjZUlkPSR7dHJhY2VJZH0mc3BvdGNoZWNrVXJsPSR7c2NyZWVufWA7XG5cbiAgICAgIGxldCBmdWxsU3BvdGNoZWNrVVJMID0gYmFzZVNwb3RjaGVja1VSTDtcblxuICAgICAgT2JqZWN0LmVudHJpZXModmFyaWFibGVzKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgICAgZnVsbFNwb3RjaGVja1VSTCArPSBgJiR7a2V5fT0ke3ZhbHVlfWA7XG4gICAgICB9KTtcblxuICAgICAgdXBkYXRlZFN0YXRlLnNwb3RjaGVja1VSTCA9IGZ1bGxTcG90Y2hlY2tVUkw7XG4gICAgICBzcG90Y2hlY2tTdGF0ZVNlcnZpY2Uuc2V0U3RhdGUodXBkYXRlZFN0YXRlKTtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBheGlvcy5nZXQoZnVsbFNwb3RjaGVja1VSTCk7XG4gICAgICAgIGNvbnN0IHRoZW1lSW5mbyA9IHJlc3BvbnNlLmRhdGEuY29uZmlnLmdlbmVyYXRlZENTUztcbiAgICAgICAgY29uc3QgdGhlbWVfcGF5bG9hZCA9IHsgdHlwZTogJ1RIRU1FX1VQREFURV9TUE9UQ0hFQ0snLCB0aGVtZUluZm8gfTtcbiAgICAgICAgc3RhdGUgPSBzcG90Y2hlY2tTdGF0ZVNlcnZpY2UuZ2V0U3RhdGUoKTtcblxuICAgICAgICBsZXQgd2ViVmlld1JlZiA9IGNoYXQgPyBzdGF0ZS5jaGF0V2ViVmlld1JlZiA6IHN0YXRlLmNsYXNzaWNXZWJWaWV3UmVmO1xuICAgICAgICBsZXQgaXNMb2FkaW5nID0gY2hhdCA/IHN0YXRlLmlzQ2hhdExvYWRpbmcgOiBzdGF0ZS5pc0NsYXNzaWNMb2FkaW5nO1xuXG4gICAgICAgIGNvbnN0IHJlc2V0U3RhdGVEYXRhID0ge1xuICAgICAgICAgIHR5cGU6ICdSRVNFVF9TVEFURScsXG4gICAgICAgICAgc3RhdGU6IHtcbiAgICAgICAgICAgIC4uLihyZXNwb25zZS5kYXRhIHx8IHt9KSxcbiAgICAgICAgICAgIHNraXA6IHRydWUsXG4gICAgICAgICAgICBzcG90Q2hlY2tBcHBlYXJhbmNlOiB7XG4gICAgICAgICAgICAgIC4uLihhcHBlYXJhbmNlIHx8IHt9KSxcbiAgICAgICAgICAgICAgdGFyZ2V0VHlwZTogJ01PQklMRScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc3BvdGNoZWNrVXJsOiBzY3JlZW4sXG4gICAgICAgICAgICB0cmFjZUlkLFxuICAgICAgICAgICAgZWxlbWVudEJ1aWxkZXJQYXJhbXM6IHtcbiAgICAgICAgICAgICAgLi4uKHZhcmlhYmxlcyB8fCB7fSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3Qgc2VuZE1lc3NhZ2VUb0lmcmFtZSA9IChpZnJhbWU6IEhUTUxJRnJhbWVFbGVtZW50LCBkYXRhOiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAoaWZyYW1lICYmIGlmcmFtZS5jb250ZW50V2luZG93KSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBpZnJhbWUuY29udGVudFdpbmRvdy5wb3N0TWVzc2FnZShkYXRhLCAnKicpO1xuICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcign4p2MIEZhaWxlZCB0byBzZW5kIG1lc3NhZ2UgdG8gaWZyYW1lOicsIGVycm9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgY29tbXVuaWNhdGVXaXRoV2ViVmlldyA9IGFzeW5jIChpZnJhbWU6IEhUTUxJRnJhbWVFbGVtZW50KSA9PiB7XG4gICAgICAgICAgYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHNlbmRNZXNzYWdlVG9JZnJhbWUoaWZyYW1lLCByZXNldFN0YXRlRGF0YSk7XG4gICAgICAgICAgICBzZW5kTWVzc2FnZVRvSWZyYW1lKGlmcmFtZSwgdGhlbWVfcGF5bG9hZCk7XG4gICAgICAgICAgICByZXNvbHZlKHRydWUpO1xuICAgICAgICAgIH0sIDIwMDApKTtcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAod2ViVmlld1JlZikge1xuICAgICAgICAgIGlmIChpc0xvYWRpbmcgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICBjb21tdW5pY2F0ZVdpdGhXZWJWaWV3KHdlYlZpZXdSZWYpO1xuICAgICAgICAgICAgc3RhcnQoKTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyB0b2RvOiByZWNoZWNrIHRoaXNcbiAgICAgICAgICAgIGNvbnN0IHVuc3Vic2NyaWJlID0gc3BvdGNoZWNrU3RhdGVTZXJ2aWNlLnN0YXRlJC5zdWJzY3JpYmUoXG4gICAgICAgICAgICAgIChjdXJyZW50U3RhdGUpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICAgICAgICBpc0NoYXRMb2FkaW5nLFxuICAgICAgICAgICAgICAgICAgaXNDbGFzc2ljTG9hZGluZyxcbiAgICAgICAgICAgICAgICAgIGNoYXRXZWJWaWV3UmVmLFxuICAgICAgICAgICAgICAgICAgY2xhc3NpY1dlYlZpZXdSZWYsXG4gICAgICAgICAgICAgICAgfSA9IGN1cnJlbnRTdGF0ZTtcblxuICAgICAgICAgICAgICAgIGlmICgoIWlzQ2hhdExvYWRpbmcgJiYgY2hhdCkgfHwgKCFpc0NsYXNzaWNMb2FkaW5nICYmICFjaGF0KSkge1xuICAgICAgICAgICAgICAgICAgdW5zdWJzY3JpYmUudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGFjdGl2ZVdlYlZpZXdSZWYgPSBjaGF0XG4gICAgICAgICAgICAgICAgICAgID8gY2hhdFdlYlZpZXdSZWZcbiAgICAgICAgICAgICAgICAgICAgOiBjbGFzc2ljV2ViVmlld1JlZjtcbiAgICAgICAgICAgICAgICAgIGlmIChhY3RpdmVXZWJWaWV3UmVmKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbW11bmljYXRlV2l0aFdlYlZpZXcoYWN0aXZlV2ViVmlld1JlZik7XG4gICAgICAgICAgICAgICAgICAgIHN0YXJ0KCk7XG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgICAgICAgICAgICAgJ+KaoO+4jyBBY3RpdmUgV2ViVmlldyByZWYgaXMgbnVsbCBhZnRlciBsb2FkaW5nIGNvbXBsZXRlZCdcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgdW5zdWJzY3JpYmVXZWJWaWV3ID0gc3BvdGNoZWNrU3RhdGVTZXJ2aWNlLnN0YXRlJC5zdWJzY3JpYmUoXG4gICAgICAgICAgICAoY3VycmVudFN0YXRlKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IHVwZGF0ZWRXZWJWaWV3UmVmID0gY2hhdFxuICAgICAgICAgICAgICAgID8gY3VycmVudFN0YXRlLmNoYXRXZWJWaWV3UmVmXG4gICAgICAgICAgICAgICAgOiBjdXJyZW50U3RhdGUuY2xhc3NpY1dlYlZpZXdSZWY7XG4gICAgICAgICAgICAgIGNvbnN0IHVwZGF0ZWRJc0xvYWRpbmcgPSBjaGF0XG4gICAgICAgICAgICAgICAgPyBjdXJyZW50U3RhdGUuaXNDaGF0TG9hZGluZ1xuICAgICAgICAgICAgICAgIDogY3VycmVudFN0YXRlLmlzQ2xhc3NpY0xvYWRpbmc7XG5cbiAgICAgICAgICAgICAgaWYgKHVwZGF0ZWRXZWJWaWV3UmVmKSB7XG4gICAgICAgICAgICAgICAgaWYgKCF1cGRhdGVkSXNMb2FkaW5nKSB7XG4gICAgICAgICAgICAgICAgICB1bnN1YnNjcmliZVdlYlZpZXcudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgICAgICAgIGNvbW11bmljYXRlV2l0aFdlYlZpZXcodXBkYXRlZFdlYlZpZXdSZWYpO1xuICAgICAgICAgICAgICAgICAgc3RhcnQoKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ+KPsyBXZWJWaWV3IHJlZiBhdmFpbGFibGUgYnV0IHN0aWxsIGxvYWRpbmcuLi4nKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICApO1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhyb3cgbmV3IEVycm9yKCdTb21ldGhpbmcgd2VudCB3cm9uZycpO1xuICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3Qgc3RhcnQgPSAoKSA9PiB7XG4gIGNvbnN0IHN0YXRlID0gZ2V0U3BvdGNoZWNrU3RhdGVTZXJ2aWNlKCkuZ2V0U3RhdGUoKTtcbiAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgZ2V0U3BvdGNoZWNrU3RhdGVTZXJ2aWNlKCkuc2V0U3RhdGUoeyBpc1Zpc2libGU6IHRydWUgfSk7XG4gIH0sIHN0YXRlLmFmdGVyRGVsYXkgKiAxMDAwKTtcbn07XG5cbmV4cG9ydCBjb25zdCBjbG9zZVNwb3RDaGVjayA9IGFzeW5jICgpID0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBzdGF0ZVNlcnZpY2UgPSBnZXRTcG90Y2hlY2tTdGF0ZVNlcnZpY2UoKTtcbiAgICBjb25zdCBzdGF0ZSA9IHN0YXRlU2VydmljZS5nZXRTdGF0ZSgpO1xuICAgIGNvbnN0IHBheWxvYWQgPSB7XG4gICAgICB0cmFjZUlkOiBzdGF0ZS50cmFjZUlkLFxuICAgICAgdHJpZ2dlclRva2VuOiBzdGF0ZS50cmlnZ2VyVG9rZW4sXG4gICAgfTtcblxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goXG4gICAgICBgaHR0cHM6Ly8ke3N0YXRlLmRvbWFpbk5hbWV9L2FwaS9pbnRlcm5hbC9zcG90Y2hlY2svZGlzbWlzcy8ke3N0YXRlLnNwb3RjaGVja0NvbnRhY3RJRH1gLFxuICAgICAge1xuICAgICAgICBtZXRob2Q6ICdQVVQnLFxuICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgfSxcbiAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkocGF5bG9hZCksXG4gICAgICB9XG4gICAgKTtcblxuICAgIGlmIChyZXNwb25zZS5zdGF0dXMgIT0gMjAwKSB7XG4gICAgICBjb25zb2xlLmxvZyhgRXJyb3I6ICR7cmVzcG9uc2Uuc3RhdHVzfWApO1xuICAgIH1cbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBjb25zb2xlLmxvZygnRXJyb3IgcGFyc2luZyBKU09OOicsIGVycm9yKTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGhhbmRsZVN1cnZleUVuZCA9ICgpID0+IHtcbiAgY29uc3Qgc3RhdGVTZXJ2aWNlID0gZ2V0U3BvdGNoZWNrU3RhdGVTZXJ2aWNlKCk7XG4gIGNvbnN0IHN0YXRlID0gc3RhdGVTZXJ2aWNlLmdldFN0YXRlKCk7XG4gIGNvbnN0IHdlYlZpZXdSZWYgPVxuICAgIHN0YXRlLnNwb3RDaGVja1R5cGUgPT09ICdjaGF0J1xuICAgICAgPyBzdGF0ZS5jaGF0V2ViVmlld1JlZlxuICAgICAgOiBzdGF0ZS5jbGFzc2ljV2ViVmlld1JlZjtcblxuICB3ZWJWaWV3UmVmPy5jdXJyZW50Py5pbmplY3RKYXZhU2NyaXB0KGBcbiAgICAgIChmdW5jdGlvbigpIHtcbiAgICAgICAgd2luZG93LmRpc3BhdGNoRXZlbnQobmV3IE1lc3NhZ2VFdmVudCgnbWVzc2FnZScsIHtcbiAgICAgICAgICBkYXRhOiAke0pTT04uc3RyaW5naWZ5KHsgdHlwZTogJ1VOTU9VTlRfQVBQJyB9KX1cbiAgICAgICAgfSkpO1xuICAgICAgfSkoKTtcbiAgICBgKTtcblxuICBjb25zdCB1cGRhdGVkU3RhdGU6IFBhcnRpYWw8U3BvdGNoZWNrU3RhdGU+ID0ge1xuICAgIGlzVmlzaWJsZTogZmFsc2UsXG4gICAgaXNDbG9zZUJ1dHRvbkVuYWJsZWQ6IGZhbHNlLFxuICAgIGlzRnVsbFNjcmVlbk1vZGU6IGZhbHNlLFxuICAgIHNwb3RjaGVja0lEOiAwLFxuICAgIGN1cnJlbnRRdWVzdGlvbkhlaWdodDogMCxcbiAgICBjbG9zZUJ1dHRvblN0eWxlOiB7fSxcbiAgICBzcG90Y2hlY2tDb250YWN0SUQ6IDAsXG4gICAgc3BvdGNoZWNrVVJMOiAnJyxcbiAgICBzcG90Y2hlY2tQb3NpdGlvbjogJ2JvdHRvbScsXG4gICAgaXNNb3VudGVkOiBmYWxzZSxcbiAgICBzcG90Q2hlY2tUeXBlOiAnJyxcbiAgICBzY3JlZW5IZWlnaHQ6IDAsXG4gICAga2V5Qm9hcmRIZWlnaHQ6IDAsXG4gICAgdGV4dFBvc2l0aW9uOiAwLFxuICAgIHNwb3RDaGVja3NNb2RlOiAnJyxcbiAgICBhdmF0YXJFbmFibGVkOiBmYWxzZSxcbiAgICBhdmF0YXJVcmw6ICcnLFxuICB9O1xuXG4gIHN0YXRlU2VydmljZS5zZXRTdGF0ZSh1cGRhdGVkU3RhdGUpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFNwb3RjaGVja0NvbXBvbmVudENzc1N0eWxlcyA9IChzdGF0ZTogU3BvdGNoZWNrU3RhdGUpID0+IHsgXG4gIGxldCBzdHlsZXMgPSB7fVxuICBsZXQgd3JhcHBlclN0eWxlcyA9IHt9XG4gIGlmIChzdGF0ZS5pc0Z1bGxTY3JlZW5Nb2RlICYmIHN0YXRlLmlzVmlzaWJsZSkge1xuICAgIHdyYXBwZXJTdHlsZXMgPSB7XG4gICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICBoZWlnaHQ6ICcxMDAlJyxcbiAgICB9O1xuICAgIHN0eWxlcyA9IHtcbiAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgIGhlaWdodDogJzEwMCUnLFxuICAgIH07XG4gIH1cbiAgXG4gIGlmIChzdGF0ZS5pc1Zpc2libGUgJiYgc3RhdGUuaXNNb3VudGVkKSB7XG5cbiAgICBsZXQgaGVpZ2h0ID0gTWF0aC5taW4oc3RhdGUuY3VycmVudFF1ZXN0aW9uSGVpZ2h0LCAoc3RhdGUubWF4SGVpZ2h0ICogd2luZG93LmlubmVySGVpZ2h0KSk7XG4gICAgaWYoc3RhdGUuc3BvdENoZWNrc01vZGUgPT09ICdtaW5pQ2FyZCcpIHtcbiAgICAgIGlmKHN0YXRlLmF2YXRhckVuYWJsZWQpIHtcbiAgICAgICAgaGVpZ2h0ID0gaGVpZ2h0IC0gNTY7XG4gICAgICB9XG4gICAgICBpZihzdGF0ZS5pc0Nsb3NlQnV0dG9uRW5hYmxlZCkge1xuICAgICAgICBoZWlnaHQgPSBoZWlnaHQgLSA0MDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBzd2l0Y2ggKHN0YXRlLnNwb3RjaGVja1Bvc2l0aW9uKSB7XG4gICAgICBjYXNlICdib3R0b20nOlxuICAgICAgICBzdHlsZXMgPSB7XG4gICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgIGhlaWdodDogaGVpZ2h0KydweCcsXG4gICAgICAgIH07XG4gICAgICAgIHdyYXBwZXJTdHlsZXMgPSB7XG4gICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnZmxleC1lbmQnLFxuICAgICAgICB9O1xuICAgICAgICBicmVhaztcbiAgICAgICAgXG4gICAgICAgIGNhc2UgJ3RvcCc6XG4gICAgICAgICAgc3R5bGVzID0ge1xuICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgICAgaGVpZ2h0OiBoZWlnaHQrJ3B4JyxcbiAgICAgICAgICB9O1xuICAgICAgICAgIHdyYXBwZXJTdHlsZXMgPSB7XG4gICAgICAgICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ2ZsZXgtc3RhcnQnLFxuICAgICAgICAgIH07XG4gICAgICAgIGJyZWFrO1xuICAgICAgICAgIFxuICAgICAgICBjYXNlICdjZW50ZXInOlxuICAgICAgICAgIHN0eWxlcyA9IHtcbiAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICAgIGhlaWdodDogaGVpZ2h0KydweCcsXG4gICAgICAgICAgfTtcbiAgICAgICAgICB3cmFwcGVyU3R5bGVzID0ge1xuICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICAgICAgICAgIH07XG4gICAgICAgIGJyZWFrO1xuICAgICAgICBcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICBcbiAgcmV0dXJuIHtcbiAgICB3cmFwcGVyU3R5bGVzOiB7XG4gICAgICBwb3NpdGlvbjogJ2ZpeGVkJywgXG4gICAgICB3aWR0aDogJzEwMCUnLCBcbiAgICAgIGhlaWdodDogJzEwMCUnLCBcbiAgICAgIHRvcDogJzAnLCBcbiAgICAgIGxlZnQ6ICcwJywgXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6ICdyZ2JhKDAsIDAsIDAsIDAuMyknLCBcbiAgICAgIHpJbmRleDogJzk5OTk5OTk5JyxcbiAgICAgIGRpc3BsYXk6ICdub25lJyxcbiAgICAgIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICAgICAgLi4ud3JhcHBlclN0eWxlc1xuICAgIH0sXG4gICAgc3R5bGVzOiB7XG4gICAgICBkaXNwbGF5OiAnbm9uZScsXG4gICAgICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbiAgICAgIC4uLnN0eWxlcyxcbiAgICB9XG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgY2xvc2VTcG90Q2hlY2tBbmRIYW5kbGVTdXJ2ZXlFbmQgPSBhc3luYyAoKSA9PiB7XG4gIGF3YWl0IGNsb3NlU3BvdENoZWNrKCk7XG4gIGhhbmRsZVN1cnZleUVuZCgpO1xufTsiXX0=
@@ -309,7 +309,6 @@ const handleSurveyEnd = () => {
309
309
  const getSpotcheckComponentCssStyles = (state) => {
310
310
  let styles = {};
311
311
  let wrapperStyles = {};
312
- let padding = 30;
313
312
  if (state.isFullScreenMode && state.isVisible) {
314
313
  wrapperStyles = {
315
314
  display: 'flex',
@@ -323,7 +322,6 @@ const getSpotcheckComponentCssStyles = (state) => {
323
322
  if (state.isVisible && state.isMounted) {
324
323
  let height = Math.min(state.currentQuestionHeight, (state.maxHeight * window.innerHeight));
325
324
  if (state.spotChecksMode === 'miniCard') {
326
- padding = 45;
327
325
  if (state.avatarEnabled) {
328
326
  height = height - 56;
329
327
  }
@@ -377,8 +375,6 @@ const getSpotcheckComponentCssStyles = (state) => {
377
375
  zIndex: '99999999',
378
376
  display: 'none',
379
377
  flexDirection: 'column',
380
- paddingTop: padding + 'px',
381
- paddingBottom: padding + 'px',
382
378
  ...wrapperStyles
383
379
  },
384
380
  styles: {
@@ -397,6 +393,7 @@ class WebViewComponent {
397
393
  sanitizer;
398
394
  url = '';
399
395
  webviewType = 'classic';
396
+ isMiniCard = false;
400
397
  safeUrl = null;
401
398
  iframe;
402
399
  constructor(sanitizer) {
@@ -469,12 +466,13 @@ class WebViewComponent {
469
466
  }
470
467
  }
471
468
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: WebViewComponent, deps: [{ token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component });
472
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.3", type: WebViewComponent, isStandalone: true, selector: "WebViewComponent", inputs: { url: "url", webviewType: "webviewType" }, host: { listeners: { "window:message": "onMessage($event)" } }, viewQueries: [{ propertyName: "iframe", first: true, predicate: ["iframeRef"], descendants: true }], ngImport: i0, template: `
473
- <div style="overflow: hidden; height: 100%;">
469
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.3", type: WebViewComponent, isStandalone: true, selector: "WebViewComponent", inputs: { url: "url", webviewType: "webviewType", isMiniCard: "isMiniCard" }, host: { listeners: { "window:message": "onMessage($event)" } }, viewQueries: [{ propertyName: "iframe", first: true, predicate: ["iframeRef"], descendants: true }], ngImport: i0, template: `
470
+ <div style="overflow: hidden; height: 100%; border-radius: {{isMiniCard ? 12 : 0}}px; padding-left: {{isMiniCard ? 12 : 0}}px; padding-right: {{isMiniCard ? 12 : 0}}px; box-sizing: border-box;">
474
471
  <iframe
472
+ allow="camera; microphone; geolocation; display-capture; autoplay; clipboard-read; clipboard-write;"
475
473
  #iframeRef
476
474
  [src]="safeUrl"
477
- style="width: 100%; height: 100%; display: block;"
475
+ style="width: 100%; height: 100%; display: block; border-radius: {{isMiniCard ? 12 : 0}}px;"
478
476
  frameborder="0"
479
477
  >
480
478
  </iframe>
@@ -486,11 +484,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImpor
486
484
  args: [{
487
485
  selector: 'WebViewComponent',
488
486
  template: `
489
- <div style="overflow: hidden; height: 100%;">
487
+ <div style="overflow: hidden; height: 100%; border-radius: {{isMiniCard ? 12 : 0}}px; padding-left: {{isMiniCard ? 12 : 0}}px; padding-right: {{isMiniCard ? 12 : 0}}px; box-sizing: border-box;">
490
488
  <iframe
489
+ allow="camera; microphone; geolocation; display-capture; autoplay; clipboard-read; clipboard-write;"
491
490
  #iframeRef
492
491
  [src]="safeUrl"
493
- style="width: 100%; height: 100%; display: block;"
492
+ style="width: 100%; height: 100%; display: block; border-radius: {{isMiniCard ? 12 : 0}}px;"
494
493
  frameborder="0"
495
494
  >
496
495
  </iframe>
@@ -503,6 +502,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImpor
503
502
  type: Input
504
503
  }], webviewType: [{
505
504
  type: Input
505
+ }], isMiniCard: [{
506
+ type: Input
506
507
  }], iframe: [{
507
508
  type: ViewChild,
508
509
  args: ['iframeRef']
@@ -696,11 +697,11 @@ class SpotCheckComponent {
696
697
  }
697
698
  };
698
699
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: SpotCheckComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
699
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.3", type: SpotCheckComponent, isStandalone: true, selector: "SpotCheckComponent", ngImport: i0, template: "<div [ngStyle]=\"componentStyles.wrapperStyles\">\n <div [ngStyle]=\"componentStyles.styles\">\n <div style=\"position: relative; height: 100%;\">\n <spotcheck-close-button />\n \n <WebViewComponent\n *ngIf=\"state.classicUrl && state.classicUrl.length > 0 && state.spotcheckURL.length > 0 && state.spotCheckType === 'classic'\"\n [url]=\"state.classicUrl\"\n [webviewType]=\"'classic'\"\n />\n \n <WebViewComponent\n *ngIf=\"state.chatUrl && state.chatUrl.length > 0 && state.spotcheckURL.length > 0 && state.spotCheckType === 'chat'\"\n [url]=\"state.chatUrl\"\n [webviewType]=\"'chat'\"\n />\n\n <div *ngIf=\"state.spotChecksMode === 'miniCard' && state.avatarEnabled\">\n <div style=\"position: absolute; bottom: -66px; left: 16px; z-index: 100001;\">\n <img [src]=\"avatarUrl\" style=\"width: 56px; height: 56px; border-radius: 50px; background-color: white;\"/>\n </div>\n </div>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: WebViewComponent, selector: "WebViewComponent", inputs: ["url", "webviewType"] }, { kind: "component", type: CloseButtonComponent, selector: "spotcheck-close-button", inputs: ["size", "strokeWidth"] }] });
700
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.3", type: SpotCheckComponent, isStandalone: true, selector: "SpotCheckComponent", ngImport: i0, template: "<div [ngStyle]=\"componentStyles.wrapperStyles\" class=\"safe-area\">\n <div [ngStyle]=\"componentStyles.styles\">\n <div style=\"position: relative; height: 100%;\">\n <spotcheck-close-button />\n \n <WebViewComponent\n *ngIf=\"state.classicUrl && state.classicUrl.length > 0 && state.spotcheckURL.length > 0 && state.spotCheckType === 'classic'\"\n [url]=\"state.classicUrl\"\n [webviewType]=\"'classic'\"\n [isMiniCard]=\"state.spotChecksMode === 'miniCard'\"\n />\n \n <WebViewComponent\n *ngIf=\"state.chatUrl && state.chatUrl.length > 0 && state.spotcheckURL.length > 0 && state.spotCheckType === 'chat'\"\n [url]=\"state.chatUrl\"\n [webviewType]=\"'chat'\"\n [isMiniCard]=\"state.spotChecksMode === 'miniCard'\"\n />\n\n <div *ngIf=\"state.spotChecksMode === 'miniCard' && state.avatarEnabled\">\n <div style=\"position: absolute; bottom: -66px; left: 16px; z-index: 100001;\">\n <img [src]=\"avatarUrl\" style=\"width: 56px; height: 56px; border-radius: 50px; background-color: white;\"/>\n </div>\n </div>\n </div>\n </div>\n</div>\n", styles: [".safe-area{padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom);padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right);box-sizing:border-box}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: WebViewComponent, selector: "WebViewComponent", inputs: ["url", "webviewType", "isMiniCard"] }, { kind: "component", type: CloseButtonComponent, selector: "spotcheck-close-button", inputs: ["size", "strokeWidth"] }] });
700
701
  }
701
702
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: SpotCheckComponent, decorators: [{
702
703
  type: Component,
703
- args: [{ selector: 'SpotCheckComponent', standalone: true, imports: [CommonModule, WebViewComponent, CloseButtonComponent], template: "<div [ngStyle]=\"componentStyles.wrapperStyles\">\n <div [ngStyle]=\"componentStyles.styles\">\n <div style=\"position: relative; height: 100%;\">\n <spotcheck-close-button />\n \n <WebViewComponent\n *ngIf=\"state.classicUrl && state.classicUrl.length > 0 && state.spotcheckURL.length > 0 && state.spotCheckType === 'classic'\"\n [url]=\"state.classicUrl\"\n [webviewType]=\"'classic'\"\n />\n \n <WebViewComponent\n *ngIf=\"state.chatUrl && state.chatUrl.length > 0 && state.spotcheckURL.length > 0 && state.spotCheckType === 'chat'\"\n [url]=\"state.chatUrl\"\n [webviewType]=\"'chat'\"\n />\n\n <div *ngIf=\"state.spotChecksMode === 'miniCard' && state.avatarEnabled\">\n <div style=\"position: absolute; bottom: -66px; left: 16px; z-index: 100001;\">\n <img [src]=\"avatarUrl\" style=\"width: 56px; height: 56px; border-radius: 50px; background-color: white;\"/>\n </div>\n </div>\n </div>\n </div>\n</div>\n" }]
704
+ args: [{ selector: 'SpotCheckComponent', standalone: true, imports: [CommonModule, WebViewComponent, CloseButtonComponent], template: "<div [ngStyle]=\"componentStyles.wrapperStyles\" class=\"safe-area\">\n <div [ngStyle]=\"componentStyles.styles\">\n <div style=\"position: relative; height: 100%;\">\n <spotcheck-close-button />\n \n <WebViewComponent\n *ngIf=\"state.classicUrl && state.classicUrl.length > 0 && state.spotcheckURL.length > 0 && state.spotCheckType === 'classic'\"\n [url]=\"state.classicUrl\"\n [webviewType]=\"'classic'\"\n [isMiniCard]=\"state.spotChecksMode === 'miniCard'\"\n />\n \n <WebViewComponent\n *ngIf=\"state.chatUrl && state.chatUrl.length > 0 && state.spotcheckURL.length > 0 && state.spotCheckType === 'chat'\"\n [url]=\"state.chatUrl\"\n [webviewType]=\"'chat'\"\n [isMiniCard]=\"state.spotChecksMode === 'miniCard'\"\n />\n\n <div *ngIf=\"state.spotChecksMode === 'miniCard' && state.avatarEnabled\">\n <div style=\"position: absolute; bottom: -66px; left: 16px; z-index: 100001;\">\n <img [src]=\"avatarUrl\" style=\"width: 56px; height: 56px; border-radius: 50px; background-color: white;\"/>\n </div>\n </div>\n </div>\n </div>\n</div>\n", styles: [".safe-area{padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom);padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right);box-sizing:border-box}\n"] }]
704
705
  }], ctorParameters: () => [] });
705
706
 
706
707
  class SpotCheck {