@colijnit/homedecorator 256.1.0 → 256.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/app/core/model/homedecorator-settings.d.ts +1 -0
- package/app/homedecorator.module.d.ts +2 -1
- package/app/plugins/help/help-dialog/help-dialog.component.scss +10 -1
- package/app/plugins/model-uploader/model-previewer/model-preview.component.d.ts +5 -11
- package/app/plugins/product-catalog/product-catalog/product-catalog.component.d.ts +1 -0
- package/app/plugins/render/service/new-render.service.d.ts +0 -2
- package/app/plugins/render/service/render.service.d.ts +1 -2
- package/assets/hdri/std_env_v2_A.hdr +0 -0
- package/assets/hdri/std_env_v2_B.hdr +0 -0
- package/assets/hdri/std_env_v2_C.hdr +0 -0
- package/assets/hdri/std_env_v2_D.hdr +0 -0
- package/assets/hdri/std_env_v2_E.hdr +46 -0
- package/bundles/colijnit-homedecorator.umd.js +106 -253
- package/bundles/colijnit-homedecorator.umd.js.map +1 -1
- package/esm2015/app/core/model/homedecorator-settings.js +1 -1
- package/esm2015/app/core/service/homedecorator-settings.service.js +4 -1
- package/esm2015/app/homedecorator.module.js +8 -4
- package/esm2015/app/plugins/core3d/service/lights.service.js +6 -5
- package/esm2015/app/plugins/core3d/service/scene.service.js +20 -20
- package/esm2015/app/plugins/help/help-dialog/help-dialog.component.js +1 -1
- package/esm2015/app/plugins/model-uploader/model-previewer/model-preview.component.js +50 -75
- package/esm2015/app/plugins/product-catalog/product-catalog/product-catalog.component.js +23 -15
- package/esm2015/app/plugins/render/render-controls/render-controls.component.js +3 -3
- package/esm2015/app/plugins/render/service/new-render.service.js +1 -1
- package/esm2015/app/plugins/render/service/render.service.js +88 -77
- package/esm2015/app/plugins/room-planner/components/floorplanner/service/floorplan.service.js +2 -2
- package/esm2015/app/plugins/room-planner/components/floorplanner/service/room.service.js +2 -2
- package/esm2015/app/plugins/room-planner/components/texture-picker/texture-picker.component.js +1 -1
- package/esm2015/app/plugins/toolbar/toolbar/toolbar.component.js +7 -7
- package/esm2015/app/shared/category-library/category-library.component.js +1 -1
- package/fesm2015/colijnit-homedecorator.js +206 -202
- package/fesm2015/colijnit-homedecorator.js.map +1 -1
- package/homedecorator-globals.scss +3 -0
- package/package.json +1 -1
|
@@ -47,6 +47,7 @@ export class ProductCatalogComponent {
|
|
|
47
47
|
this._thirdPartyModelService = _thirdPartyModelService;
|
|
48
48
|
this.showExternalCatalog = false;
|
|
49
49
|
this.showOwnCollection = false;
|
|
50
|
+
this.isHomedec = false;
|
|
50
51
|
this.homeDecoHub = this.settingsService.settings.user3DModelUploadEnabled;
|
|
51
52
|
this._subs = [];
|
|
52
53
|
}
|
|
@@ -66,6 +67,7 @@ export class ProductCatalogComponent {
|
|
|
66
67
|
}), 200);
|
|
67
68
|
}
|
|
68
69
|
}), this._screenSizeService.screenSizeChanged.subscribe(info => this.phoneSizeScreen = info.isPhoneSize));
|
|
70
|
+
this.isHomedec = this.settingsService.settings.isHomeDecoHub;
|
|
69
71
|
});
|
|
70
72
|
}
|
|
71
73
|
ngOnDestroy() {
|
|
@@ -314,11 +316,11 @@ ProductCatalogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0"
|
|
|
314
316
|
<span class="refresh-button-span">Verversen</span>
|
|
315
317
|
</div>
|
|
316
318
|
|
|
317
|
-
<div class="button-spacer"></div
|
|
318
|
-
<div class="refresh-button" (click)="iframeTest()"
|
|
319
|
-
<mat-icon class="homedecorator-material-icons">refresh</mat-icon
|
|
320
|
-
<span class="refresh-button-span">iframeTest</span
|
|
321
|
-
</div
|
|
319
|
+
<!-- <div class="button-spacer"></div>-->
|
|
320
|
+
<!-- <div class="refresh-button" (click)="iframeTest()">-->
|
|
321
|
+
<!-- <mat-icon class="homedecorator-material-icons">refresh</mat-icon>-->
|
|
322
|
+
<!-- <span class="refresh-button-span">iframeTest</span>-->
|
|
323
|
+
<!-- </div>-->
|
|
322
324
|
|
|
323
325
|
</div>
|
|
324
326
|
<ng-container *ngIf="showOwnCollection">
|
|
@@ -336,8 +338,11 @@ ProductCatalogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0"
|
|
|
336
338
|
|
|
337
339
|
|
|
338
340
|
<ng-container *ngIf="!showOwnCollection && loaded">
|
|
339
|
-
<div
|
|
340
|
-
|
|
341
|
+
<div
|
|
342
|
+
class="own-collection-button-wrapper"
|
|
343
|
+
(click)="handleShowOwnCollectionClick($event)"
|
|
344
|
+
*ngIf="(!showExternalCatalog && settingsService.settings.options.showOwnCatalogButton) && !isHomedec"
|
|
345
|
+
>
|
|
341
346
|
<div class="own-collection-description" [textContent]="'OWN_COLLECTION' | localize"></div>
|
|
342
347
|
<co-image [source]="'assets/images/logo.svg'"></co-image>
|
|
343
348
|
</div>
|
|
@@ -379,11 +384,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
379
384
|
<span class="refresh-button-span">Verversen</span>
|
|
380
385
|
</div>
|
|
381
386
|
|
|
382
|
-
<div class="button-spacer"></div
|
|
383
|
-
<div class="refresh-button" (click)="iframeTest()"
|
|
384
|
-
<mat-icon class="homedecorator-material-icons">refresh</mat-icon
|
|
385
|
-
<span class="refresh-button-span">iframeTest</span
|
|
386
|
-
</div
|
|
387
|
+
<!-- <div class="button-spacer"></div>-->
|
|
388
|
+
<!-- <div class="refresh-button" (click)="iframeTest()">-->
|
|
389
|
+
<!-- <mat-icon class="homedecorator-material-icons">refresh</mat-icon>-->
|
|
390
|
+
<!-- <span class="refresh-button-span">iframeTest</span>-->
|
|
391
|
+
<!-- </div>-->
|
|
387
392
|
|
|
388
393
|
</div>
|
|
389
394
|
<ng-container *ngIf="showOwnCollection">
|
|
@@ -401,8 +406,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
401
406
|
|
|
402
407
|
|
|
403
408
|
<ng-container *ngIf="!showOwnCollection && loaded">
|
|
404
|
-
<div
|
|
405
|
-
|
|
409
|
+
<div
|
|
410
|
+
class="own-collection-button-wrapper"
|
|
411
|
+
(click)="handleShowOwnCollectionClick($event)"
|
|
412
|
+
*ngIf="(!showExternalCatalog && settingsService.settings.options.showOwnCatalogButton) && !isHomedec"
|
|
413
|
+
>
|
|
406
414
|
<div class="own-collection-description" [textContent]="'OWN_COLLECTION' | localize"></div>
|
|
407
415
|
<co-image [source]="'assets/images/logo.svg'"></co-image>
|
|
408
416
|
</div>
|
|
@@ -436,4 +444,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
436
444
|
type: HostBinding,
|
|
437
445
|
args: ['class.no-offset']
|
|
438
446
|
}] } });
|
|
439
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1jYXRhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jbGllbnQvYXBwL3BsdWdpbnMvcHJvZHVjdC1jYXRhbG9nL3Byb2R1Y3QtY2F0YWxvZy9wcm9kdWN0LWNhdGFsb2cuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsV0FBVyxFQUE4QixNQUFNLGVBQWUsQ0FBQztBQUdsRixPQUFPLEVBQUMsMEJBQTBCLEVBQUMsTUFBTSxnRUFBZ0UsQ0FBQztBQVkxRyxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sc0NBQXNDLENBQUM7QUFHakUsT0FBTyxFQUFDLGlDQUFpQyxFQUFDLE1BQU0sd0VBQXdFLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXVFekgsTUFBTSxPQUFPLHVCQUF1QjtJQXlCbEMsWUFDUyxlQUE2QyxFQUM1QyxXQUE4QixFQUM5QixlQUE4QyxFQUM5QyxrQkFBNkMsRUFDN0MsYUFBMkIsRUFDM0IsaUJBQW1DLEVBQ25DLFNBQW1CLEVBQ25CLGVBQStCLEVBQy9CLHFCQUEyQyxFQUMzQyxlQUFxRCxFQUNyRCxzQkFBNkMsRUFDN0MsdUJBQStDO1FBWGhELG9CQUFlLEdBQWYsZUFBZSxDQUE4QjtRQUM1QyxnQkFBVyxHQUFYLFdBQVcsQ0FBbUI7UUFDOUIsb0JBQWUsR0FBZixlQUFlLENBQStCO1FBQzlDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBMkI7UUFDN0Msa0JBQWEsR0FBYixhQUFhLENBQWM7UUFDM0Isc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFrQjtRQUNuQyxjQUFTLEdBQVQsU0FBUyxDQUFVO1FBQ25CLG9CQUFlLEdBQWYsZUFBZSxDQUFnQjtRQUMvQiwwQkFBcUIsR0FBckIscUJBQXFCLENBQXNCO1FBQzNDLG9CQUFlLEdBQWYsZUFBZSxDQUFzQztRQUNyRCwyQkFB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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNERYO29CQUNELFNBQVMsRUFBRSxDQUFDLGtDQUFrQyxDQUFDO2lCQUNoRDtzZkFHYyxLQUFLO3NCQURmLFdBQVc7dUJBQUMsYUFBYTtnQkFRbkIsZUFBZTtzQkFEckIsV0FBVzt1QkFBQyxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgSG9zdEJpbmRpbmcsIEluamVjdG9yLCBPbkRlc3Ryb3ksIE9uSW5pdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7U3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHtFeHRlcm5hbFNvdXJjZX0gZnJvbSAnQGNvbGlqbml0L2FydGljbGVhcGkvYnVpbGQvbW9kZWwvZXh0ZXJuYWwtc291cmNlLmJvJztcclxuaW1wb3J0IHtFeHRlcm5hbENhdGFsb2dTdGFydHVwSW5mb30gZnJvbSAnQGNvbGlqbml0L2FydGljbGVhcGkvYnVpbGQvbW9kZWwvZXh0ZXJuYWwtY2F0YWxvZy1zdGFydHVwLWluZm8nO1xyXG5pbXBvcnQge0NhdGFsb2dEZWZpbml0aW9ufSBmcm9tICdAY29saWpuaXQvYXJ0aWNsZWFwaS9idWlsZC9tb2RlbC9jYXRhbG9nLWRlZmluaXRpb24uYm8nO1xyXG5pbXBvcnQge0hvbWVkZWNvcmF0b3JTZXR0aW5nc30gZnJvbSAnLi4vLi4vLi4vY29yZS9tb2RlbC9ob21lZGVjb3JhdG9yLXNldHRpbmdzJztcclxuaW1wb3J0IHtFeHRlcm5hbFNvdXJjZVZpZXdtb2RlbH0gZnJvbSAnQGNvbGlqbml0L2NhdGFsb2cvbGliL21vZGVsL2V4dGVybmFsLXNvdXJjZS12aWV3bW9kZWwnO1xyXG5pbXBvcnQge0hvbWVkZWNvcmF0b3JTZXR0aW5nc1NlcnZpY2V9IGZyb20gJy4uLy4uLy4uL2NvcmUvc2VydmljZS9ob21lZGVjb3JhdG9yLXNldHRpbmdzLnNlcnZpY2UnO1xyXG5pbXBvcnQge01lc3NhZ2VCdXNTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2UvbWVzc2FnZS1idXMuc2VydmljZSc7XHJcbmltcG9ydCB7U2NyZWVuU2l6ZUFuYWx5c2lzU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3NjcmVlbi1zaXplLWFuYWx5c2lzL3NjcmVlbi1zaXplLWFuYWx5c2lzLnNlcnZpY2UnO1xyXG5pbXBvcnQge1NjZW5lU2VydmljZX0gZnJvbSAnLi4vLi4vY29yZTNkL3NlcnZpY2Uvc2NlbmUuc2VydmljZSc7XHJcbmltcG9ydCB7QnVpbGRGdXJuaXR1cmVTZXJ2aWNlfSBmcm9tICcuLi8uLi90aHJlZWRzZWxlY3Rvci90aHJlZWRzZWxlY3Rvci9zZXJ2aWNlL2J1aWxkLWZ1cm5pdHVyZS5zZXJ2aWNlJztcclxuaW1wb3J0IHtGbG9vcnBsYW5TZXJ2aWNlfSBmcm9tICcuLi8uLi9yb29tLXBsYW5uZXIvY29tcG9uZW50cy9mbG9vcnBsYW5uZXIvc2VydmljZS9mbG9vcnBsYW4uc2VydmljZSc7XHJcbmltcG9ydCB7Q2F0YWxvZ1NlcnZpY2V9IGZyb20gJ0Bjb2xpam5pdC9jYXRhbG9nJztcclxuaW1wb3J0IHtEeW5hbWljU2NyaXB0U2VydmljZX0gZnJvbSAnLi4vLi4vLi4vc2VydmljZS9keW5hbWljLXNjcmlwdC5zZXJ2aWNlJztcclxuaW1wb3J0IHtNZXNzYWdlVHlwZX0gZnJvbSAnLi4vLi4vLi4vY29yZS9lbnVtL21lc3NhZ2UtdHlwZS5lbnVtJztcclxuaW1wb3J0IHtIb21lZGVjb3JhdG9yQ29ubmVjdG9yU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNlL2hvbWVkZWNvcmF0b3ItY29ubmVjdG9yLnNlcnZpY2UnO1xyXG5pbXBvcnQge0hvbWVkZWNvcmF0b3JDb25uZWN0b3JBZGFwdGVyU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNlL2hvbWVkZWNvcmF0b3ItY29ubmVjdG9yLWFkYXB0ZXIuc2VydmljZSc7XHJcbmltcG9ydCB7RXh0ZXJuYWxDYXRhbG9nU3RhcnR1cEluZm9SZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvYXJ0aWNsZWFwaS9idWlsZC9tb2RlbC9leHRlcm5hbC1jYXRhbG9nLXN0YXJ0dXAtaW5mby1yZXF1ZXN0JztcclxuaW1wb3J0IHtIb21lZGVjb3JhdG9yRXh0ZXJuYWxTZXR0aW5nc0ludGVyZmFjZX0gZnJvbSAnLi4vLi4vLi4vY29yZS9pbnRlcmZhY2UvaG9tZWRlY29yYXRvci1leHRlcm5hbC1zZXR0aW5ncy5pbnRlcmZhY2UnO1xyXG5pbXBvcnQge1RoaXJkUGFydHlNb2RlbFNlcnZpY2V9IGZyb20gJy4uLy4uL3RocmVlZHNlbGVjdG9yL3RocmVlZHNlbGVjdG9yL3NlcnZpY2UvdGhpcmQtcGFydHktbW9kZWwuc2VydmljZSc7XHJcbmltcG9ydCB7RXh0ZXJuYWxTb3VyY2VBcnRpY2xlQ2xpY2tJbnRlcmZhY2V9IGZyb20gJ0Bjb2xpam5pdC9hcnRpY2xlYXBpL2J1aWxkL2ludGVyZmFjZS9leHRlcm5hbC1zb3VyY2UtYXJ0aWNsZS1jbGljay5pbnRlcmZhY2UnO1xyXG5pbXBvcnQge0FydGljbGVMaXN0T2JqZWN0RXh0ZW5kZWR9IGZyb20gJ0Bjb2xpam5pdC9hcnRpY2xlYXBpL2J1aWxkL21vZGVsL2FydGljbGUtbGlzdC1vYmplY3QtZXh0ZW5kZWQuYm8nO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ3JwLXByb2R1Y3QtY2F0YWxvZycsXHJcbiAgICB0ZW1wbGF0ZTogYFxyXG4gICAgICA8ZGl2IGNsYXNzPVwicHJvZHVjdC1jYXRhbG9nLXdyYXBwZXJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2F0YWxvZy1idXR0b24td3JhcHBlclwiICpuZ0lmPVwic2hvd093bkNvbGxlY3Rpb24gfHwgc2hvd0V4dGVybmFsQ2F0YWxvZ1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImJhY2stYnV0dG9uXCIgKGNsaWNrKT1cImhhbmRsZUJhY2tDbGljaygkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImhvbWVkZWNvcmF0b3ItbWF0ZXJpYWwtaWNvbnNcIj5hcnJvd19iYWNrPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWNrLWJ1dHRvbi1zcGFuXCI+VGVydWc8L3NwYW4+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24tc3BhY2VyXCI+PC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVmcmVzaC1idXR0b25cIiAoY2xpY2spPVwiaGFuZGxlUmVmcmVzaENsaWNrKCRldmVudClcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiaG9tZWRlY29yYXRvci1tYXRlcmlhbC1pY29uc1wiPnJlZnJlc2g8L21hdC1pY29uPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJlZnJlc2gtYnV0dG9uLXNwYW5cIj5WZXJ2ZXJzZW48L3NwYW4+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uLXNwYWNlclwiPjwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJlZnJlc2gtYnV0dG9uXCIgKGNsaWNrKT1cImlmcmFtZVRlc3QoKVwiPlxyXG4gICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJob21lZGVjb3JhdG9yLW1hdGVyaWFsLWljb25zXCI+cmVmcmVzaDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicmVmcmVzaC1idXR0b24tc3BhblwiPmlmcmFtZVRlc3Q8L3NwYW4+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dPd25Db2xsZWN0aW9uXCI+XHJcbiAgICAgICAgICA8cnAtcHJvZHVjdC1vd24tY29sbGVjdGlvblxyXG4gICAgICAgICAgICBbc2V0dGluZ3NdPVwic2V0dGluZ3NTZXJ2aWNlLnNldHRpbmdzXCJcclxuICAgICAgICAgICAgKGFydGljbGVDbGljayk9XCJoYW5kbGVBcnRpY2xlQ2xpY2soJGV2ZW50KVwiXHJcbiAgICAgICAgICA+PC9ycC1wcm9kdWN0LW93bi1jb2xsZWN0aW9uPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaG9tZURlY29IdWIgJiYgIXNob3dPd25Db2xsZWN0aW9uICYmICFzaG93RXh0ZXJuYWxDYXRhbG9nXCI+XHJcbiAgICAgICAgICA8cnAtbW9kZWwtdXBsb2FkZXI+XHJcblxyXG4gICAgICAgICAgPC9ycC1tb2RlbC11cGxvYWRlcj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcblxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhc2hvd093bkNvbGxlY3Rpb24gJiYgbG9hZGVkXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwib3duLWNvbGxlY3Rpb24tYnV0dG9uLXdyYXBwZXJcIiAoY2xpY2spPVwiaGFuZGxlU2hvd093bkNvbGxlY3Rpb25DbGljaygkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgKm5nSWY9XCIhc2hvd0V4dGVybmFsQ2F0YWxvZyAmJiBzZXR0aW5nc1NlcnZpY2Uuc2V0dGluZ3Mub3B0aW9ucy5zaG93T3duQ2F0YWxvZ0J1dHRvblwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwib3duLWNvbGxlY3Rpb24tZGVzY3JpcHRpb25cIiBbdGV4dENvbnRlbnRdPVwiJ09XTl9DT0xMRUNUSU9OJyB8IGxvY2FsaXplXCI+PC9kaXY+XHJcbiAgICAgICAgICAgIDxjby1pbWFnZSBbc291cmNlXT1cIidhc3NldHMvaW1hZ2VzL2xvZ28uc3ZnJ1wiPjwvY28taW1hZ2U+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxjby1jYXRhbG9nLWV4dGVybmFsLXNvdXJjZXMgKm5nSWY9XCIhc2hvd0V4dGVybmFsQ2F0YWxvZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChleHRlcm5hbFNvdXJjZUNsaWNrKT1cImhhbmRsZUV4dGVybmFsU291cmNlQ2xpY2soJGV2ZW50KVwiPjwvY28tY2F0YWxvZy1leHRlcm5hbC1zb3VyY2VzPlxyXG4gICAgICAgICAgPGNvLWNhdGFsb2ctZXh0ZXJuYWwtc291cmNlICpuZ0lmPVwic2hvd0V4dGVybmFsQ2F0YWxvZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwie3NlYXJjaE9uU3RhcnQ6IHRydWV9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZXh0ZXJuYWxDYXRhbG9nU3RhcnR1cEluZm9dPVwiY2F0YWxvZ0luZm9cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjYXRhbG9nRGVmaW5pdGlvbl09XCJjYXRhbG9nRGVmaW5pdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIidDQVRBTE9HJyB8IGxvY2FsaXplIHwgYXBwZW5kOiAnICcgfCBhcHBlbmQ6IGV4dGVybmFsQ2F0YWxvZ05hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdWJUaXRsZV09XCInWm9la2VuIG5hYXIgYXJ0aWtlbGVuJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlYXJjaFBsYWNlaG9sZGVyXT1cIidab2VrIG5hYXIgYXJ0aWtlbGVuJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25hbWVdPVwiZXh0ZXJuYWxDYXRhbG9nTmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dGaWx0ZXJdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhcnRpY2xlQ2xpY2spPVwiaGFuZGxlQXJ0aWNsZUNsaWNrKCRldmVudCwgY2F0YWxvZ0luZm8pXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaGlkZS1maWx0ZXJdPVwic2V0dGluZ3NTZXJ2aWNlLnNldHRpbmdzLm9wdGlvbnMuc2hvd09ubHlIb21lRGVjb0ZpbHRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlGcmFtZUZlZWRiYWNrUmVjZWl2ZWQpPVwiaGFuZGxlSUZyYW1lRmVlZGJhY2soJGV2ZW50KVwiXHJcbiAgICAgICAgICA+PC9jby1jYXRhbG9nLWV4dGVybmFsLXNvdXJjZT5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBjbGFzcz1cImhpZGUtY2F0YWxvZ1wiIChjbGljayk9XCJoaWRlQ2F0YWxvZygpXCI+XHJcbiAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJob21lZGVjb3JhdG9yLW1hdGVyaWFsLWljb25zXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+Y2xvc2U8L21hdC1pY29uPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICBgLFxyXG4gIHN0eWxlVXJsczogWycuL3Byb2R1Y3QtY2F0YWxvZy5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQcm9kdWN0Q2F0YWxvZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICAgIEBIb3N0QmluZGluZygnY2xhc3Muc2hvd24nKVxyXG4gICAgcHVibGljIGdldCBzaG93bigpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fc2hvd0NhdGFsb2c7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGxvYWRlZDogYm9vbGVhbjtcclxuICAgIHB1YmxpYyBzZXR0aW5nczogSG9tZWRlY29yYXRvclNldHRpbmdzO1xyXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5uby1vZmZzZXQnKVxyXG4gICAgcHVibGljIHBob25lU2l6ZVNjcmVlbjogYm9vbGVhbjtcclxuXHJcbiAgICBwdWJsaWMgZXh0ZXJuYWxDYXRhbG9nTmFtZTogc3RyaW5nO1xyXG4gICAgcHVibGljIHNob3dFeHRlcm5hbENhdGFsb2c6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIHB1YmxpYyBzaG93T3duQ29sbGVjdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHVibGljIGV4dGVybmFsU291cmNlOiBFeHRlcm5hbFNvdXJjZTtcclxuICAgIHB1YmxpYyBjYXRhbG9nRGVmaW5pdGlvbjogQ2F0YWxvZ0RlZmluaXRpb247XHJcbiAgICBwdWJsaWMgY2F0YWxvZ0luZm86IEV4dGVybmFsQ2F0YWxvZ1N0YXJ0dXBJbmZvO1xyXG5cclxuICAgIHB1YmxpYyBob21lRGVjb0h1YiA9IHRoaXMuc2V0dGluZ3NTZXJ2aWNlLnNldHRpbmdzLnVzZXIzRE1vZGVsVXBsb2FkRW5hYmxlZDtcclxuXHJcbiAgICBwcml2YXRlIF9zaG93Q2F0YWxvZzogYm9vbGVhbjtcclxuICAgIHByaXZhdGUgX3N1YnM6IFN1YnNjcmlwdGlvbltdID0gW107XHJcblxyXG4gIHByaXZhdGUgX3NvdXJjZTogRXh0ZXJuYWxTb3VyY2VWaWV3bW9kZWw7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIHNldHRpbmdzU2VydmljZTogSG9tZWRlY29yYXRvclNldHRpbmdzU2VydmljZSxcclxuICAgIHByaXZhdGUgX21lc3NhZ2VCdXM6IE1lc3NhZ2VCdXNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfaW9uZUNvbnRyb2xsZXI6IEhvbWVkZWNvcmF0b3JDb25uZWN0b3JTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfc2NyZWVuU2l6ZVNlcnZpY2U6IFNjcmVlblNpemVBbmFseXNpc1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9zY2VuZVNlcnZpY2U6IFNjZW5lU2VydmljZSxcclxuICAgIHByaXZhdGUgX2Zsb29yUGxhblNlcnZpY2U6IEZsb29ycGxhblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9pbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICBwcml2YXRlIF9jYXRhbG9nU2VydmljZTogQ2F0YWxvZ1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9keW5hbWljU2NyaXB0U2VydmljZTogRHluYW1pY1NjcmlwdFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9hZGFwdGVyU2VydmljZTogSG9tZWRlY29yYXRvckNvbm5lY3RvckFkYXB0ZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfYnVpbGRGdXJuaXR1cmVTZXJ2aWNlOiBCdWlsZEZ1cm5pdHVyZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF90aGlyZFBhcnR5TW9kZWxTZXJ2aWNlOiBUaGlyZFBhcnR5TW9kZWxTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgfVxyXG5cclxuICBhc3luYyBuZ09uSW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMuX3N1YnMucHVzaChcclxuICAgICAgdGhpcy5fbWVzc2FnZUJ1cy5zdWJzY3JpYmUoXHJcbiAgICAgICAgTWVzc2FnZVR5cGUuU2hvd1Byb2R1Y3RDYXRhbG9nLCAoKSA9PiB0aGlzLl9oYW5kbGVTaG93UHJvZHVjdENhdGFsb2dNZXNzYWdlUmVjZWl2ZWQoKVxyXG4gICAgICApLFxyXG4gICAgICB0aGlzLl9tZXNzYWdlQnVzLnN1YnNjcmliZShcclxuICAgICAgICBNZXNzYWdlVHlwZS5IaWRlUHJvZHVjdENhdGFsb2csICgpID0+IHRoaXMuaGlkZUNhdGFsb2coKVxyXG4gICAgICApLFxyXG4gICAgICB0aGlzLl9tZXNzYWdlQnVzLnN1YnNjcmliZShcclxuICAgICAgICBNZXNzYWdlVHlwZS5WaWV3TW9kZUNoYW5nZWQsICgpID0+IHRoaXMuaGlkZUNhdGFsb2coKVxyXG4gICAgICApLFxyXG4gICAgICB0aGlzLl9pb25lQ29udHJvbGxlci5jb250cm9sbGVySW5pdGlhbGl6ZWQuc3Vic2NyaWJlKChsb2FkZWQ6IGJvb2xlYW4pID0+IHtcclxuICAgICAgICBpZiAobG9hZGVkKSB7XHJcbiAgICAgICAgICB0aGlzLnNldHRpbmdzID0gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgLy8gdGhpcy5sb2FkZWQgPSBmYWxzZTtcclxuICAgICAgICAgIHNldFRpbWVvdXQoYXN5bmMgKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnNldHRpbmdzID0gdGhpcy5zZXR0aW5nc1NlcnZpY2Uuc2V0dGluZ3M7XHJcbiAgICAgICAgICAgIHRoaXMuX2NhdGFsb2dTZXJ2aWNlLmluaXQodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgICAgIHRoaXMubG9hZGVkID0gdHJ1ZTtcclxuICAgICAgICAgIH0sIDIwMCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KSxcclxuICAgICAgdGhpcy5fc2NyZWVuU2l6ZVNlcnZpY2Uuc2NyZWVuU2l6ZUNoYW5nZWQuc3Vic2NyaWJlKGluZm8gPT4gdGhpcy5waG9uZVNpemVTY3JlZW4gPSBpbmZvLmlzUGhvbmVTaXplKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fc3Vicy5mb3JFYWNoKHN1YiA9PiBzdWIudW5zdWJzY3JpYmUoKSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGlkZUNhdGFsb2coKTogdm9pZCB7XHJcbiAgICB0aGlzLl9zaG93Q2F0YWxvZyA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZUFydGljbGVDbGljayhkYXRhOiBFeHRlcm5hbFNvdXJjZUFydGljbGVDbGlja0ludGVyZmFjZSwgY2F0YWxvZ0luZm8/OiBFeHRlcm5hbENhdGFsb2dTdGFydHVwSW5mbyk6IHZvaWQge1xyXG4gICAgaWYgKGRhdGEuYXJ0aWNsZSkge1xyXG4gICAgICBsZXQgc2V0dGluZ3M6IEhvbWVkZWNvcmF0b3JFeHRlcm5hbFNldHRpbmdzSW50ZXJmYWNlO1xyXG4gICAgICBpZiAoY2F0YWxvZ0luZm8gJiYgY2F0YWxvZ0luZm8uZXh0ZXJuYWxTb3VyY2UpIHtcclxuICAgICAgICBzZXR0aW5ncyA9IHtcclxuICAgICAgICAgIG5hbWU6IGRhdGEuc2V0dGluZ3MubmFtZSxcclxuICAgICAgICAgIHNldHRpbmdzOiBkYXRhLnNldHRpbmdzLnNldHRpbmdzLFxyXG4gICAgICAgICAgZXh0ZXJuYWxTb3VyY2U6IGNhdGFsb2dJbmZvLmV4dGVybmFsU291cmNlLFxyXG4gICAgICAgICAgY2F0YWxvZ0RlZmluaXRpb246IGRhdGEuY2F0YWxvZ0RlZmluaXRpb24sXHJcbiAgICAgICAgICBzY2hlbWE6IGNhdGFsb2dJbmZvLmV4dGVybmFsU291cmNlLnNjaGVtYVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgc2V0dGluZ3Muc2V0dGluZ3MucGFzc3dvcmQgPSAnJztcclxuICAgICAgICBzZXR0aW5ncy5zZXR0aW5ncy51c2VybmFtZSA9ICcnO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0eXBlb2YgZGF0YS5hcnRpY2xlICE9PSAnc3RyaW5nJykge1xyXG4gICAgICAgIHRoaXMuX21lc3NhZ2VCdXMuZW1pdChNZXNzYWdlVHlwZS5Mb2FkSU9uZUZ1cm5pdHVyZUludG9TY2VuZUJ5U0tVLCB7XHJcbiAgICAgICAgICBza3U6IGRhdGEuYXJ0aWNsZS5hcnRpY2xlTnVtYmVyLFxyXG4gICAgICAgICAgc2V0dGluZ3M6IHNldHRpbmdzLFxyXG4gICAgICAgICAgcG9zaXRpb246IHRoaXMuX2Zsb29yUGxhblNlcnZpY2UuZ2V0Q2VudGVyKCksXHJcbiAgICAgICAgICBmdWxsQXJ0aWNsZU9iamVjdDogZGF0YS5hcnRpY2xlXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5fc2hvd0NhdGFsb2cgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVBckJ1dHRvbkNsaWNrKGRhdGE6IHsgYXJ0aWNsZTogQXJ0aWNsZUxpc3RPYmplY3RFeHRlbmRlZCwgc2V0dGluZ3M6IEhvbWVkZWNvcmF0b3JFeHRlcm5hbFNldHRpbmdzSW50ZXJmYWNlIH0pOiB2b2lkIHtcclxuICAgIGlmIChkYXRhLmFydGljbGUpIHtcclxuICAgICAgdGhpcy5fc2NlbmVTZXJ2aWNlLmFyTW9kZSA9IHRydWU7XHJcbiAgICAgIHRoaXMuX3Nob3dDYXRhbG9nID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuX21lc3NhZ2VCdXMuZW1pdChNZXNzYWdlVHlwZS5Mb2FkSU9uZUZ1cm5pdHVyZUludG9TY2VuZUJ5U0tVLCB7XHJcbiAgICAgICAgc2t1OiBkYXRhLmFydGljbGUuYXJ0aWNsZU51bWJlcixcclxuICAgICAgICBzZXR0aW5nczogZGF0YS5zZXR0aW5ncyxcclxuICAgICAgICBwb3NpdGlvbjoge3g6IDAsIHk6IDB9LFxyXG4gICAgICAgIGZ1bGxBcnRpY2xlT2JqZWN0OiBkYXRhLmFydGljbGVcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgaGFuZGxlRXh0ZXJuYWxTb3VyY2VDbGljayhzb3VyY2U/OiBFeHRlcm5hbFNvdXJjZVZpZXdtb2RlbCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgaWYgKHNvdXJjZSkge1xyXG4gICAgICB0aGlzLl9zb3VyY2UgPSBzb3VyY2U7XHJcbiAgICAgIC8vIHJlc2V0IGNvbm5lY3Rpb24gdG8gaG9zdFxyXG4gICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgIGF3YWl0IHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmluaXRDb25uZWN0b3IodGhpcy5zZXR0aW5nc1NlcnZpY2Uuc2V0dGluZ3MsIHVuZGVmaW5lZCk7XHJcblxyXG4gICAgICB0aGlzLmNhdGFsb2dEZWZpbml0aW9uID0gc291cmNlLmNhdGFsb2dEZWZpbml0aW9uO1xyXG4gICAgICB0aGlzLmV4dGVybmFsU291cmNlID0gc291cmNlLmV4dGVybmFsU291cmNlO1xyXG4gICAgICB0aGlzLmV4dGVybmFsQ2F0YWxvZ05hbWUgPSBzb3VyY2UuY2F0YWxvZ0RlZmluaXRpb24ubmFtZTtcclxuICAgICAgbGV0IGluZm86IEV4dGVybmFsQ2F0YWxvZ1N0YXJ0dXBJbmZvID0gbmV3IEV4dGVybmFsQ2F0YWxvZ1N0YXJ0dXBJbmZvKCk7XHJcblxyXG4gICAgICBjb25zdCByZXF1ZXN0OiBFeHRlcm5hbENhdGFsb2dTdGFydHVwSW5mb1JlcXVlc3QgPSB0aGlzLl9idWlsZEV4dGVybmFsQ2F0YWxvZ1JlcXVlc3QoKTtcclxuXHJcbiAgICAgIGluZm8gPSBhd2FpdCB0aGlzLl9pb25lQ29udHJvbGxlci5nZXRXZWJWaWV3U3RhcnR1cEluZm8ocmVxdWVzdCk7XHJcbiAgICAgIHRoaXMuY2F0YWxvZ0luZm8gPSBpbmZvO1xyXG4gICAgICB0aGlzLnNob3dFeHRlcm5hbENhdGFsb2cgPSB0cnVlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zaG93RXh0ZXJuYWxDYXRhbG9nID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlU2hvd093bkNvbGxlY3Rpb25DbGljayhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xyXG4gICAgdGhpcy5zaG93T3duQ29sbGVjdGlvbiA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlQmFja0NsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XHJcbiAgICB0aGlzLnNob3dFeHRlcm5hbENhdGFsb2cgPSBmYWxzZTtcclxuICAgIHRoaXMuc2hvd093bkNvbGxlY3Rpb24gPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVSZWZyZXNoQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcclxuICAgIHRoaXMuaGFuZGxlRXh0ZXJuYWxTb3VyY2VDbGljayh0aGlzLl9zb3VyY2UpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGhhbmRsZUlGcmFtZUZlZWRiYWNrKGpzb25TdHJpbmc6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgaWYgKGpzb25TdHJpbmcpIHtcclxuICAgICAgY29uc3QganNvbk9iaiA9IEpTT04ucGFyc2UoanNvblN0cmluZyk7XHJcbiAgICAgIGlmIChqc29uT2JqWydoYXNoJ10gIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIGNvbnN0IGN1c3RvbWVyTmFtZTogc3RyaW5nID0gdGhpcy5jYXRhbG9nSW5mby51c2VybmFtZTtcclxuICAgICAgICAvLyBjb25zdCBjdXN0b21lck5hbWU6IHN0cmluZyA9ICdMaW50ZWxvbyc7XHJcbiAgICAgICAgLy8gdGhyZWUgbWFpbiBhcGkgdXJsc1xyXG4gICAgICAgIGNvbnN0IG1vZGVsVXJsOiBzdHJpbmcgPSB0aGlzLmNhdGFsb2dJbmZvLmV4dGVybmFsU291cmNlLmRvbWFpbiArICcvbW9kZWxzLycgKyBqc29uT2JqWydoYXNoJ10gKyAnL2dsYic7XHJcbiAgICAgICAgY29uc3QgY29uZmlndXJhdGlvblVybDogc3RyaW5nID0gdGhpcy5jYXRhbG9nSW5mby5leHRlcm5hbFNvdXJjZS5kb21haW4gKyAnL2NvbmZpZ3VyYXRpb25EYXRhLycgKyBqc29uT2JqWydoYXNoJ107XHJcbiAgICAgICAgY29uc3QgcHJpY2VEYXRhVXJsOiBzdHJpbmcgPSB0aGlzLmNhdGFsb2dJbmZvLmV4dGVybmFsU291cmNlLmRvbWFpbiArICcvcnVsZXMvYXBpLycgKyBjdXN0b21lck5hbWUudG9Mb3dlckNhc2UoKSArICcvJyArIGpzb25PYmpbJ2hhc2gnXTtcclxuXHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIGNvbnN0IGFwaVJlc3BvbnNlczogUmVzcG9uc2VbXSA9IGF3YWl0IFByb21pc2UuYWxsKFtcclxuICAgICAgICAgICAgdGhpcy5fdGhpcmRQYXJ0eU1vZGVsU2VydmljZS5kb3dubG9hZE1vZGVsKG1vZGVsVXJsKSxcclxuICAgICAgICAgICAgdGhpcy5fdGhpcmRQYXJ0eU1vZGVsU2VydmljZS5mZXRjaEpzb25GaWxlKGNvbmZpZ3VyYXRpb25VcmwpLFxyXG4gICAgICAgICAgICB0aGlzLl90aGlyZFBhcnR5TW9kZWxTZXJ2aWNlLmZldGNoSnNvbkZpbGUocHJpY2VEYXRhVXJsKVxyXG4gICAgICAgICAgXSk7XHJcbiAgICAgICAgICBjb25zdCBtb2RlbFJlc3BvbnNlOiBSZXNwb25zZSA9IGFwaVJlc3BvbnNlc1swXTtcclxuICAgICAgICAgIGNvbnN0IGNvbmZpZ3VyYXRpb25SZXNwb25zZTogUmVzcG9uc2UgPSBhcGlSZXNwb25zZXNbMV07XHJcbiAgICAgICAgICBjb25zdCBwcmljZURhdGFSZXNwb25zZTogUmVzcG9uc2UgPSBhcGlSZXNwb25zZXNbMl07XHJcblxyXG4gICAgICAgICAgbGV0IGNvbmZpZ3VyYXRpb25EYXRhOiBhbnk7XHJcbiAgICAgICAgICBsZXQgcHJpY2VEYXRhOiBhbnk7XHJcblxyXG4gICAgICAgICAgaWYgKG1vZGVsUmVzcG9uc2UgJiYgbW9kZWxSZXNwb25zZS5vaykge1xyXG4gICAgICAgICAgICBtb2RlbFJlc3BvbnNlLmFycmF5QnVmZmVyKCkudGhlbihkYXRhID0+IHtcclxuICAgICAgICAgICAgICBpZiAoY29uZmlndXJhdGlvblJlc3BvbnNlICYmIGNvbmZpZ3VyYXRpb25SZXNwb25zZS5vaykge1xyXG4gICAgICAgICAgICAgICAgY29uZmlndXJhdGlvblJlc3BvbnNlLmpzb24oKS50aGVuKHJlc3VsdCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKHJlc3VsdCk7XHJcbiAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25EYXRhID0gcmVzdWx0O1xyXG4gICAgICAgICAgICAgICAgfSkuY2F0Y2goZSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGUpO1xyXG4gICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uRGF0YSA9IHt9O1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmIChwcmljZURhdGFSZXNwb25zZSAmJiBwcmljZURhdGFSZXNwb25zZS5vaykge1xyXG4gICAgICAgICAgICAgICAgcHJpY2VEYXRhUmVzcG9uc2UuanNvbigpLnRoZW4ocmVzdWx0ID0+IHtcclxuICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2cocmVzdWx0KTtcclxuICAgICAgICAgICAgICAgICAgcHJpY2VEYXRhID0gcmVzdWx0O1xyXG4gICAgICAgICAgICAgICAgfSkuY2F0Y2goZSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGUpO1xyXG4gICAgICAgICAgICAgICAgICBwcmljZURhdGEgPSB7fTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB0aGlzLl90aGlyZFBhcnR5TW9kZWxTZXJ2aWNlLnBhcnNlTW9kZWxUb0dMQihkYXRhLCBqc29uT2JqWydoYXNoJ10sIG1vZGVsVXJsLCBjb25maWd1cmF0aW9uRGF0YSwgcHJpY2VEYXRhKS50aGVuKHJlc3VsdCA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmhpZGVDYXRhbG9nKCk7XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSBlbHNlIGlmICghbW9kZWxSZXNwb25zZS5vaykge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZhaWxlZCB0byBmZXRjaCBkYXRhJyk7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgLy8gY29uc3QgcmVzcG9uc2U6IFJlc3BvbnNlID0gYXdhaXQgdGhpcy5fdGhpcmRQYXJ0eU1vZGVsU2VydmljZS5kb3dubG9hZE1vZGVsKHVybFRvRmV0Y2gpO1xyXG4gICAgICAgICAgLy8gaWYgKCFyZXNwb25zZS5vaykge1xyXG4gICAgICAgICAgLy8gICB0aHJvdyBuZXcgRXJyb3IoJ0ZhaWxlZCB0byBmZXRjaCBkYXRhJyk7XHJcbiAgICAgICAgICAvLyB9XHJcbiAgICAgICAgICAvLyByZXNwb25zZS5hcnJheUJ1ZmZlcigpLnRoZW4oZGF0YSA9PiB7XHJcbiAgICAgICAgICAvLyAgIHRoaXMuX3RoaXJkUGFydHlNb2RlbFNlcnZpY2UucGFyc2VNb2RlbFRvR0xCKGRhdGEsIGpzb25PYmpbJ2hhc2gnXSwgdXJsVG9GZXRjaCkudGhlbihyZXN1bHQgPT4ge1xyXG4gICAgICAgICAgLy8gICAgIHRoaXMuaGlkZUNhdGFsb2coKTtcclxuICAgICAgICAgIC8vICAgfSk7XHJcbiAgICAgICAgICAvLyB9KTtcclxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZmV0Y2hpbmcgZGF0YTonLCBlcnJvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgaWZyYW1lVGVzdCgpOiBQcm9taXNlPHZvaWQ+IHtcclxuXHJcbiAgICAvLyB0aHJlZSBtYWluIGFwaSB1cmxzXHJcbiAgICBjb25zdCBtb2RlbFVybDogc3RyaW5nID0gJ2h0dHBzOi8vbGludGVsb28ucGxhdGZvcm1hcGktYWNjZXB0LjNkaW1lcmNlLmNvbS9tb2RlbHMvMzkyMGY1MGNiYmRjYjU5ODBjODk5NDc0NmRmMGY2MjEyN2NlMTA2NDEwOGNkN2JjMWEyN2VhN2Q0YzE3MWRjOC9nbGInO1xyXG4gICAgY29uc3QgY29uZmlndXJhdGlvblVybDogc3RyaW5nID0gJ2h0dHBzOi8vbGludGVsb28ucGxhdGZvcm1hcGktYWNjZXB0LjNkaW1lcmNlLmNvbS9jb25maWd1cmF0aW9uRGF0YS8zOTIwZjUwY2JiZGNiNTk4MGM4OTk0NzQ2ZGYwZjYyMTI3Y2UxMDY0MTA4Y2Q3YmMxYTI3ZWE3ZDRjMTcxZGM4JztcclxuICAgIGNvbnN0IHByaWNlRGF0YVVybDogc3RyaW5nID0gJ2h0dHBzOi8vbGludGVsb28ucGxhdGZvcm1hcGktYWNjZXB0LjNkaW1lcmNlLmNvbS9ydWxlcy9hcGkvbGludGVsb28vMzkyMGY1MGNiYmRjYjU5ODBjODk5NDc0NmRmMGY2MjEyN2NlMTA2NDEwOGNkN2JjMWEyN2VhN2Q0YzE3MWRjOCc7XHJcbiAgICBjb25zdCBoYXNoOiBzdHJpbmcgPSAnMzkyMGY1MGNiYmRjYjU5ODBjODk5NDc0NmRmMGY2MjEyN2NlMTA2NDEwOGNkN2JjMWEyN2VhN2Q0YzE3MWRjOCc7XHJcblxyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgYXBpUmVzcG9uc2VzOiBSZXNwb25zZVtdID0gYXdhaXQgUHJvbWlzZS5hbGwoW1xyXG4gICAgICAgIHRoaXMuX3RoaXJkUGFydHlNb2RlbFNlcnZpY2UuZG93bmxvYWRNb2RlbChtb2RlbFVybCksXHJcbiAgICAgICAgdGhpcy5fdGhpcmRQYXJ0eU1vZGVsU2VydmljZS5mZXRjaEpzb25GaWxlKGNvbmZpZ3VyYXRpb25VcmwpLFxyXG4gICAgICAgIHRoaXMuX3RoaXJkUGFydHlNb2RlbFNlcnZpY2UuZmV0Y2hKc29uRmlsZShwcmljZURhdGFVcmwpXHJcbiAgICAgIF0pO1xyXG4gICAgICBjb25zdCBtb2RlbFJlc3BvbnNlOiBSZXNwb25zZSA9IGFwaVJlc3BvbnNlc1swXTtcclxuICAgICAgY29uc3QgY29uZmlndXJhdGlvblJlc3BvbnNlOiBSZXNwb25zZSA9IGFwaVJlc3BvbnNlc1sxXTtcclxuICAgICAgY29uc3QgcHJpY2VEYXRhUmVzcG9uc2U6IFJlc3BvbnNlID0gYXBpUmVzcG9uc2VzWzJdO1xyXG5cclxuICAgICAgbGV0IGNvbmZpZ3VyYXRpb25EYXRhOiBhbnk7XHJcbiAgICAgIGxldCBwcmljZURhdGE6IGFueTtcclxuXHJcbiAgICAgIGlmIChtb2RlbFJlc3BvbnNlICYmIG1vZGVsUmVzcG9uc2Uub2spIHtcclxuICAgICAgICBtb2RlbFJlc3BvbnNlLmFycmF5QnVmZmVyKCkudGhlbihkYXRhID0+IHtcclxuICAgICAgICAgIGlmIChjb25maWd1cmF0aW9uUmVzcG9uc2UgJiYgY29uZmlndXJhdGlvblJlc3BvbnNlLm9rKSB7XHJcbiAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25SZXNwb25zZS5qc29uKCkudGhlbihyZXN1bHQgPT4ge1xyXG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKHJlc3VsdCk7XHJcbiAgICAgICAgICAgICAgY29uZmlndXJhdGlvbkRhdGEgPSByZXN1bHQ7XHJcbiAgICAgICAgICAgIH0pLmNhdGNoKGUgPT4ge1xyXG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKGUpO1xyXG4gICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25EYXRhID0ge307XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHByaWNlRGF0YVJlc3BvbnNlICYmIHByaWNlRGF0YVJlc3BvbnNlLm9rKSB7XHJcbiAgICAgICAgICAgIHByaWNlRGF0YVJlc3BvbnNlLmpzb24oKS50aGVuKHJlc3VsdCA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc29sZS5sb2cocmVzdWx0KTtcclxuICAgICAgICAgICAgICBwcmljZURhdGEgPSByZXN1bHQ7XHJcbiAgICAgICAgICAgIH0pLmNhdGNoKGUgPT4ge1xyXG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKGUpO1xyXG4gICAgICAgICAgICAgIHByaWNlRGF0YSA9IHt9O1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuX3RoaXJkUGFydHlNb2RlbFNlcnZpY2UucGFyc2VNb2RlbFRvR0xCKGRhdGEsIGhhc2gsIG1vZGVsVXJsLCBjb25maWd1cmF0aW9uRGF0YSwgcHJpY2VEYXRhKS50aGVuKHJlc3VsdCA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuaGlkZUNhdGFsb2coKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2UgaWYgKCFtb2RlbFJlc3BvbnNlLm9rKSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdGYWlsZWQgdG8gZmV0Y2ggZGF0YScpO1xyXG4gICAgICB9XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBmZXRjaGluZyBkYXRhOicsIGVycm9yKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBsZXQgY29uZmlndXJhdGlvbkRhdGE6IGFueTtcclxuICAgIC8vIGxldCBwcmljZURhdGE6IGFueTtcclxuICAgIC8vXHJcbiAgICAvLyAvLyBnZXQgY29uZmlnIGRhdGFcclxuICAgIC8vIGNvbnN0IGNvbmZpZ3VyYXRpb25VcmxSZXNwb25zZSA9IGF3YWl0IHRoaXMuX3RoaXJkUGFydHlNb2RlbFNlcnZpY2UuZmV0Y2hKc29uRmlsZShjb25maWd1cmF0aW9uVXJsKS5jYXRjaCgoZSkgPT4gY29uc29sZS5lcnJvcihlKSk7XHJcbiAgICAvLyBpZiAoY29uZmlndXJhdGlvblVybFJlc3BvbnNlICYmIGNvbmZpZ3VyYXRpb25VcmxSZXNwb25zZS5vaykge1xyXG4gICAgLy8gICBjb25maWd1cmF0aW9uRGF0YSA9IGF3YWl0IGNvbmZpZ3VyYXRpb25VcmxSZXNwb25zZS5qc29uKCk7XHJcbiAgICAvLyB9XHJcbiAgICAvL1xyXG4gICAgLy8gLy8gZ2V0IHByaWNpbmcgZGF0YVxyXG4gICAgLy8gY29uc3QgcHJpY2VEYXRhUmVzcG9uc2UgPSBhd2FpdCB0aGlzLl90aGlyZFBhcnR5TW9kZWxTZXJ2aWNlLmZldGNoSnNvbkZpbGUocHJpY2VEYXRhVXJsKS5jYXRjaCgoZSkgPT4gY29uc29sZS5lcnJvcihlKSk7XHJcbiAgICAvLyBpZiAocHJpY2VEYXRhUmVzcG9uc2UgJiYgcHJpY2VEYXRhUmVzcG9uc2Uub2spIHtcclxuICAgIC8vICAgcHJpY2VEYXRhID0gYXdhaXQgcHJpY2VEYXRhUmVzcG9uc2UuanNvbigpO1xyXG4gICAgLy8gfVxyXG4gICAgLy8gLy8gZ2V0IG1vZGVsIGFuZCBjcmVhdGUgdGhlIG9iamVjdFxyXG4gICAgLy8gdGhpcy5fdGhpcmRQYXJ0eU1vZGVsU2VydmljZS5kb3dubG9hZE1vZGVsKG1vZGVsVXJsKS50aGVuKHJlc3VsdCA9PiB7XHJcbiAgICAvLyAgIGlmIChyZXN1bHQgJiYgcmVzdWx0Lm9rKSB7XHJcbiAgICAvLyAgICAgcmVzdWx0LmFycmF5QnVmZmVyKCkudGhlbihkYXRhID0+IHtcclxuICAgIC8vICAgICAgIHRoaXMuX3RoaXJkUGFydHlNb2RlbFNlcnZpY2UucGFyc2VNb2RlbFRvR0xCKGRhdGEsIGhhc2gsIG1vZGVsVXJsLCBjb25maWd1cmF0aW9uRGF0YSwgcHJpY2VEYXRhKS50aGVuKHN0YXR1cyA9PiB7XHJcbiAgICAvLyAgICAgICAgIHRoaXMuaGlkZUNhdGFsb2coKTtcclxuICAgIC8vICAgICAgIH0pO1xyXG4gICAgLy8gICAgIH0pO1xyXG4gICAgLy8gICB9XHJcbiAgICAvLyB9KS5jYXRjaChlID0+IHtcclxuICAgIC8vICAgY29uc29sZS5sb2coZSk7XHJcbiAgICAvLyB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2J1aWxkRXh0ZXJuYWxDYXRhbG9nUmVxdWVzdCgpOiBFeHRlcm5hbENhdGFsb2dTdGFydHVwSW5mb1JlcXVlc3Qge1xyXG4gICAgY29uc3QgcmVxdWVzdDogRXh0ZXJuYWxDYXRhbG9nU3RhcnR1cEluZm9SZXF1ZXN0ID0gbmV3IEV4dGVybmFsQ2F0YWxvZ1N0YXJ0dXBJbmZvUmVxdWVzdCgpO1xyXG4gICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgcmVxdWVzdC5jYXRhbG9nSWQgPSB0aGlzLmNhdGFsb2dEZWZpbml0aW9uLmdldElkKCk7XHJcbiAgICByZXF1ZXN0LnBvc05hbWUgPSAnTk5CJzsgLy8gTm9nIE5pZXQgQmVwYWFsZFxyXG4gICAgcmV0dXJuIHJlcXVlc3Q7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIF9oYW5kbGVTaG93UHJvZHVjdENhdGFsb2dNZXNzYWdlUmVjZWl2ZWQoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICB0aGlzLl9zaG93Q2F0YWxvZyA9IHRydWU7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
447
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1jYXRhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jbGllbnQvYXBwL3BsdWdpbnMvcHJvZHVjdC1jYXRhbG9nL3Byb2R1Y3QtY2F0YWxvZy9wcm9kdWN0LWNhdGFsb2cuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsV0FBVyxFQUE4QixNQUFNLGVBQWUsQ0FBQztBQUdsRixPQUFPLEVBQUMsMEJBQTBCLEVBQUMsTUFBTSxnRUFBZ0UsQ0FBQztBQVkxRyxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sc0NBQXNDLENBQUM7QUFHakUsT0FBTyxFQUFDLGlDQUFpQyxFQUFDLE1BQU0sd0VBQXdFLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQTBFekgsTUFBTSxPQUFPLHVCQUF1QjtJQTJCbEMsWUFDUyxlQUE2QyxFQUM1QyxXQUE4QixFQUM5QixlQUE4QyxFQUM5QyxrQkFBNkMsRUFDN0MsYUFBMkIsRUFDM0IsaUJBQW1DLEVBQ25DLFNBQW1CLEVBQ25CLGVBQStCLEVBQy9CLHFCQUEyQyxFQUMzQyxlQUFxRCxFQUNyRCxzQkFBNkMsRUFDN0MsdUJBQStDO1FBWGhELG9CQUFlLEdBQWYsZUFBZSxDQUE4QjtRQUM1QyxnQkFBVyxHQUFYLFdBQVcsQ0FBbUI7UUFDOUIsb0JBQWUsR0FBZixlQUFlLENBQStCO1FBQzlDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBMkI7UUFDN0Msa0JBQWEsR0FBYixhQUFhLENBQWM7UUFDM0Isc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFrQjtRQUNuQyxjQUFTLEdBQVQsU0FBUyxDQUFVO1FBQ25CLG9CQUFlLEdBQWYsZUFBZSxDQUFnQjtRQUMvQiwwQkFBcUIsR0FBckIscUJBQXFCLENBQXNCO1FBQzNDLG9CQUFlLEdBQWYsZUFBZSxDQUFzQztRQUNyRCwyQkFB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O0dBK0RYOzRGQUdVLHVCQUF1QjtrQkFwRW5DLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLG9CQUFvQjtvQkFDOUIsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0ErRFg7b0JBQ0QsU0FBUyxFQUFFLENBQUMsa0NBQWtDLENBQUM7aUJBQ2hEO3NmQUdjLEtBQUs7c0JBRGYsV0FBVzt1QkFBQyxhQUFhO2dCQVFuQixlQUFlO3NCQURyQixXQUFXO3VCQUFDLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBIb3N0QmluZGluZywgSW5qZWN0b3IsIE9uRGVzdHJveSwgT25Jbml0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge0V4dGVybmFsU291cmNlfSBmcm9tICdAY29saWpuaXQvYXJ0aWNsZWFwaS9idWlsZC9tb2RlbC9leHRlcm5hbC1zb3VyY2UuYm8nO1xyXG5pbXBvcnQge0V4dGVybmFsQ2F0YWxvZ1N0YXJ0dXBJbmZvfSBmcm9tICdAY29saWpuaXQvYXJ0aWNsZWFwaS9idWlsZC9tb2RlbC9leHRlcm5hbC1jYXRhbG9nLXN0YXJ0dXAtaW5mbyc7XHJcbmltcG9ydCB7Q2F0YWxvZ0RlZmluaXRpb259IGZyb20gJ0Bjb2xpam5pdC9hcnRpY2xlYXBpL2J1aWxkL21vZGVsL2NhdGFsb2ctZGVmaW5pdGlvbi5ibyc7XHJcbmltcG9ydCB7SG9tZWRlY29yYXRvclNldHRpbmdzfSBmcm9tICcuLi8uLi8uLi9jb3JlL21vZGVsL2hvbWVkZWNvcmF0b3Itc2V0dGluZ3MnO1xyXG5pbXBvcnQge0V4dGVybmFsU291cmNlVmlld21vZGVsfSBmcm9tICdAY29saWpuaXQvY2F0YWxvZy9saWIvbW9kZWwvZXh0ZXJuYWwtc291cmNlLXZpZXdtb2RlbCc7XHJcbmltcG9ydCB7SG9tZWRlY29yYXRvclNldHRpbmdzU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNlL2hvbWVkZWNvcmF0b3Itc2V0dGluZ3Muc2VydmljZSc7XHJcbmltcG9ydCB7TWVzc2FnZUJ1c1NlcnZpY2V9IGZyb20gJy4uLy4uLy4uL2NvcmUvc2VydmljZS9tZXNzYWdlLWJ1cy5zZXJ2aWNlJztcclxuaW1wb3J0IHtTY3JlZW5TaXplQW5hbHlzaXNTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvc2NyZWVuLXNpemUtYW5hbHlzaXMvc2NyZWVuLXNpemUtYW5hbHlzaXMuc2VydmljZSc7XHJcbmltcG9ydCB7U2NlbmVTZXJ2aWNlfSBmcm9tICcuLi8uLi9jb3JlM2Qvc2VydmljZS9zY2VuZS5zZXJ2aWNlJztcclxuaW1wb3J0IHtCdWlsZEZ1cm5pdHVyZVNlcnZpY2V9IGZyb20gJy4uLy4uL3RocmVlZHNlbGVjdG9yL3RocmVlZHNlbGVjdG9yL3NlcnZpY2UvYnVpbGQtZnVybml0dXJlLnNlcnZpY2UnO1xyXG5pbXBvcnQge0Zsb29ycGxhblNlcnZpY2V9IGZyb20gJy4uLy4uL3Jvb20tcGxhbm5lci9jb21wb25lbnRzL2Zsb29ycGxhbm5lci9zZXJ2aWNlL2Zsb29ycGxhbi5zZXJ2aWNlJztcclxuaW1wb3J0IHtDYXRhbG9nU2VydmljZX0gZnJvbSAnQGNvbGlqbml0L2NhdGFsb2cnO1xyXG5pbXBvcnQge0R5bmFtaWNTY3JpcHRTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlL2R5bmFtaWMtc2NyaXB0LnNlcnZpY2UnO1xyXG5pbXBvcnQge01lc3NhZ2VUeXBlfSBmcm9tICcuLi8uLi8uLi9jb3JlL2VudW0vbWVzc2FnZS10eXBlLmVudW0nO1xyXG5pbXBvcnQge0hvbWVkZWNvcmF0b3JDb25uZWN0b3JTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2UvaG9tZWRlY29yYXRvci1jb25uZWN0b3Iuc2VydmljZSc7XHJcbmltcG9ydCB7SG9tZWRlY29yYXRvckNvbm5lY3RvckFkYXB0ZXJTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2UvaG9tZWRlY29yYXRvci1jb25uZWN0b3ItYWRhcHRlci5zZXJ2aWNlJztcclxuaW1wb3J0IHtFeHRlcm5hbENhdGFsb2dTdGFydHVwSW5mb1JlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC9hcnRpY2xlYXBpL2J1aWxkL21vZGVsL2V4dGVybmFsLWNhdGFsb2ctc3RhcnR1cC1pbmZvLXJlcXVlc3QnO1xyXG5pbXBvcnQge0hvbWVkZWNvcmF0b3JFeHRlcm5hbFNldHRpbmdzSW50ZXJmYWNlfSBmcm9tICcuLi8uLi8uLi9jb3JlL2ludGVyZmFjZS9ob21lZGVjb3JhdG9yLWV4dGVybmFsLXNldHRpbmdzLmludGVyZmFjZSc7XHJcbmltcG9ydCB7VGhpcmRQYXJ0eU1vZGVsU2VydmljZX0gZnJvbSAnLi4vLi4vdGhyZWVkc2VsZWN0b3IvdGhyZWVkc2VsZWN0b3Ivc2VydmljZS90aGlyZC1wYXJ0eS1tb2RlbC5zZXJ2aWNlJztcclxuaW1wb3J0IHtFeHRlcm5hbFNvdXJjZUFydGljbGVDbGlja0ludGVyZmFjZX0gZnJvbSAnQGNvbGlqbml0L2FydGljbGVhcGkvYnVpbGQvaW50ZXJmYWNlL2V4dGVybmFsLXNvdXJjZS1hcnRpY2xlLWNsaWNrLmludGVyZmFjZSc7XHJcbmltcG9ydCB7QXJ0aWNsZUxpc3RPYmplY3RFeHRlbmRlZH0gZnJvbSAnQGNvbGlqbml0L2FydGljbGVhcGkvYnVpbGQvbW9kZWwvYXJ0aWNsZS1saXN0LW9iamVjdC1leHRlbmRlZC5ibyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAncnAtcHJvZHVjdC1jYXRhbG9nJyxcclxuICAgIHRlbXBsYXRlOiBgXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJwcm9kdWN0LWNhdGFsb2ctd3JhcHBlclwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXRhbG9nLWJ1dHRvbi13cmFwcGVyXCIgKm5nSWY9XCJzaG93T3duQ29sbGVjdGlvbiB8fCBzaG93RXh0ZXJuYWxDYXRhbG9nXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFjay1idXR0b25cIiAoY2xpY2spPVwiaGFuZGxlQmFja0NsaWNrKCRldmVudClcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiaG9tZWRlY29yYXRvci1tYXRlcmlhbC1pY29uc1wiPmFycm93X2JhY2s8L21hdC1pY29uPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJhY2stYnV0dG9uLXNwYW5cIj5UZXJ1Zzwvc3Bhbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbi1zcGFjZXJcIj48L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZWZyZXNoLWJ1dHRvblwiIChjbGljayk9XCJoYW5kbGVSZWZyZXNoQ2xpY2soJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJob21lZGVjb3JhdG9yLW1hdGVyaWFsLWljb25zXCI+cmVmcmVzaDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicmVmcmVzaC1idXR0b24tc3BhblwiPlZlcnZlcnNlbjwvc3Bhbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuPCEtLSAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uLXNwYWNlclwiPjwvZGl2Pi0tPlxyXG48IS0tICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZWZyZXNoLWJ1dHRvblwiIChjbGljayk9XCJpZnJhbWVUZXN0KClcIj4tLT5cclxuPCEtLSAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImhvbWVkZWNvcmF0b3ItbWF0ZXJpYWwtaWNvbnNcIj5yZWZyZXNoPC9tYXQtaWNvbj4tLT5cclxuPCEtLSAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicmVmcmVzaC1idXR0b24tc3BhblwiPmlmcmFtZVRlc3Q8L3NwYW4+LS0+XHJcbjwhLS0gICAgICAgICAgPC9kaXY+LS0+XHJcblxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93T3duQ29sbGVjdGlvblwiPlxyXG4gICAgICAgICAgPHJwLXByb2R1Y3Qtb3duLWNvbGxlY3Rpb25cclxuICAgICAgICAgICAgW3NldHRpbmdzXT1cInNldHRpbmdzU2VydmljZS5zZXR0aW5nc1wiXHJcbiAgICAgICAgICAgIChhcnRpY2xlQ2xpY2spPVwiaGFuZGxlQXJ0aWNsZUNsaWNrKCRldmVudClcIlxyXG4gICAgICAgICAgPjwvcnAtcHJvZHVjdC1vd24tY29sbGVjdGlvbj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhvbWVEZWNvSHViICYmICFzaG93T3duQ29sbGVjdGlvbiAmJiAhc2hvd0V4dGVybmFsQ2F0YWxvZ1wiPlxyXG4gICAgICAgICAgPHJwLW1vZGVsLXVwbG9hZGVyPlxyXG5cclxuICAgICAgICAgIDwvcnAtbW9kZWwtdXBsb2FkZXI+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXNob3dPd25Db2xsZWN0aW9uICYmIGxvYWRlZFwiPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cIm93bi1jb2xsZWN0aW9uLWJ1dHRvbi13cmFwcGVyXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImhhbmRsZVNob3dPd25Db2xsZWN0aW9uQ2xpY2soJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICpuZ0lmPVwiKCFzaG93RXh0ZXJuYWxDYXRhbG9nICYmIHNldHRpbmdzU2VydmljZS5zZXR0aW5ncy5vcHRpb25zLnNob3dPd25DYXRhbG9nQnV0dG9uKSAmJiAhaXNIb21lZGVjXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm93bi1jb2xsZWN0aW9uLWRlc2NyaXB0aW9uXCIgW3RleHRDb250ZW50XT1cIidPV05fQ09MTEVDVElPTicgfCBsb2NhbGl6ZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICA8Y28taW1hZ2UgW3NvdXJjZV09XCInYXNzZXRzL2ltYWdlcy9sb2dvLnN2ZydcIj48L2NvLWltYWdlPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8Y28tY2F0YWxvZy1leHRlcm5hbC1zb3VyY2VzICpuZ0lmPVwiIXNob3dFeHRlcm5hbENhdGFsb2dcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXh0ZXJuYWxTb3VyY2VDbGljayk9XCJoYW5kbGVFeHRlcm5hbFNvdXJjZUNsaWNrKCRldmVudClcIj48L2NvLWNhdGFsb2ctZXh0ZXJuYWwtc291cmNlcz5cclxuICAgICAgICAgIDxjby1jYXRhbG9nLWV4dGVybmFsLXNvdXJjZSAqbmdJZj1cInNob3dFeHRlcm5hbENhdGFsb2dcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cIntzZWFyY2hPblN0YXJ0OiB0cnVlfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2V4dGVybmFsQ2F0YWxvZ1N0YXJ0dXBJbmZvXT1cImNhdGFsb2dJbmZvXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2F0YWxvZ0RlZmluaXRpb25dPVwiY2F0YWxvZ0RlZmluaXRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCInQ0FUQUxPRycgfCBsb2NhbGl6ZSB8IGFwcGVuZDogJyAnIHwgYXBwZW5kOiBleHRlcm5hbENhdGFsb2dOYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3ViVGl0bGVdPVwiJ1pvZWtlbiBuYWFyIGFydGlrZWxlbidcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWFyY2hQbGFjZWhvbGRlcl09XCInWm9layBuYWFyIGFydGlrZWxlbidcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuYW1lXT1cImV4dGVybmFsQ2F0YWxvZ05hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93RmlsdGVyXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYXJ0aWNsZUNsaWNrKT1cImhhbmRsZUFydGljbGVDbGljaygkZXZlbnQsIGNhdGFsb2dJbmZvKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmhpZGUtZmlsdGVyXT1cInNldHRpbmdzU2VydmljZS5zZXR0aW5ncy5vcHRpb25zLnNob3dPbmx5SG9tZURlY29GaWx0ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpRnJhbWVGZWVkYmFja1JlY2VpdmVkKT1cImhhbmRsZUlGcmFtZUZlZWRiYWNrKCRldmVudClcIlxyXG4gICAgICAgICAgPjwvY28tY2F0YWxvZy1leHRlcm5hbC1zb3VyY2U+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gY2xhc3M9XCJoaWRlLWNhdGFsb2dcIiAoY2xpY2spPVwiaGlkZUNhdGFsb2coKVwiPlxyXG4gICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiaG9tZWRlY29yYXRvci1tYXRlcmlhbC1pY29uc1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPmNsb3NlPC9tYXQtaWNvbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgYCxcclxuICBzdHlsZVVybHM6IFsnLi9wcm9kdWN0LWNhdGFsb2cuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUHJvZHVjdENhdGFsb2dDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLnNob3duJylcclxuICAgIHB1YmxpYyBnZXQgc2hvd24oKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Nob3dDYXRhbG9nO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBsb2FkZWQ6IGJvb2xlYW47XHJcbiAgICBwdWJsaWMgc2V0dGluZ3M6IEhvbWVkZWNvcmF0b3JTZXR0aW5ncztcclxuICAgIEBIb3N0QmluZGluZygnY2xhc3Mubm8tb2Zmc2V0JylcclxuICAgIHB1YmxpYyBwaG9uZVNpemVTY3JlZW46IGJvb2xlYW47XHJcblxyXG4gICAgcHVibGljIGV4dGVybmFsQ2F0YWxvZ05hbWU6IHN0cmluZztcclxuICAgIHB1YmxpYyBzaG93RXh0ZXJuYWxDYXRhbG9nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBwdWJsaWMgc2hvd093bkNvbGxlY3Rpb246IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIHB1YmxpYyBleHRlcm5hbFNvdXJjZTogRXh0ZXJuYWxTb3VyY2U7XHJcbiAgICBwdWJsaWMgY2F0YWxvZ0RlZmluaXRpb246IENhdGFsb2dEZWZpbml0aW9uO1xyXG4gICAgcHVibGljIGNhdGFsb2dJbmZvOiBFeHRlcm5hbENhdGFsb2dTdGFydHVwSW5mbztcclxuXHJcbiAgICBwdWJsaWMgaXNIb21lZGVjOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgcHVibGljIGhvbWVEZWNvSHViID0gdGhpcy5zZXR0aW5nc1NlcnZpY2Uuc2V0dGluZ3MudXNlcjNETW9kZWxVcGxvYWRFbmFibGVkO1xyXG5cclxuICAgIHByaXZhdGUgX3Nob3dDYXRhbG9nOiBib29sZWFuO1xyXG4gICAgcHJpdmF0ZSBfc3ViczogU3Vic2NyaXB0aW9uW10gPSBbXTtcclxuXHJcbiAgcHJpdmF0ZSBfc291cmNlOiBFeHRlcm5hbFNvdXJjZVZpZXdtb2RlbDtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgc2V0dGluZ3NTZXJ2aWNlOiBIb21lZGVjb3JhdG9yU2V0dGluZ3NTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfbWVzc2FnZUJ1czogTWVzc2FnZUJ1c1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9pb25lQ29udHJvbGxlcjogSG9tZWRlY29yYXRvckNvbm5lY3RvclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9zY3JlZW5TaXplU2VydmljZTogU2NyZWVuU2l6ZUFuYWx5c2lzU2VydmljZSxcclxuICAgIHByaXZhdGUgX3NjZW5lU2VydmljZTogU2NlbmVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfZmxvb3JQbGFuU2VydmljZTogRmxvb3JwbGFuU2VydmljZSxcclxuICAgIHByaXZhdGUgX2luamVjdG9yOiBJbmplY3RvcixcclxuICAgIHByaXZhdGUgX2NhdGFsb2dTZXJ2aWNlOiBDYXRhbG9nU2VydmljZSxcclxuICAgIHByaXZhdGUgX2R5bmFtaWNTY3JpcHRTZXJ2aWNlOiBEeW5hbWljU2NyaXB0U2VydmljZSxcclxuICAgIHByaXZhdGUgX2FkYXB0ZXJTZXJ2aWNlOiBIb21lZGVjb3JhdG9yQ29ubmVjdG9yQWRhcHRlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9idWlsZEZ1cm5pdHVyZVNlcnZpY2U6IEJ1aWxkRnVybml0dXJlU2VydmljZSxcclxuICAgIHByaXZhdGUgX3RoaXJkUGFydHlNb2RlbFNlcnZpY2U6IFRoaXJkUGFydHlNb2RlbFNlcnZpY2VcclxuICApIHtcclxuICB9XHJcblxyXG4gIGFzeW5jIG5nT25Jbml0KCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgdGhpcy5fc3Vicy5wdXNoKFxyXG4gICAgICB0aGlzLl9tZXNzYWdlQnVzLnN1YnNjcmliZShcclxuICAgICAgICBNZXNzYWdlVHlwZS5TaG93UHJvZHVjdENhdGFsb2csICgpID0+IHRoaXMuX2hhbmRsZVNob3dQcm9kdWN0Q2F0YWxvZ01lc3NhZ2VSZWNlaXZlZCgpXHJcbiAgICAgICksXHJcbiAgICAgIHRoaXMuX21lc3NhZ2VCdXMuc3Vic2NyaWJlKFxyXG4gICAgICAgIE1lc3NhZ2VUeXBlLkhpZGVQcm9kdWN0Q2F0YWxvZywgKCkgPT4gdGhpcy5oaWRlQ2F0YWxvZygpXHJcbiAgICAgICksXHJcbiAgICAgIHRoaXMuX21lc3NhZ2VCdXMuc3Vic2NyaWJlKFxyXG4gICAgICAgIE1lc3NhZ2VUeXBlLlZpZXdNb2RlQ2hhbmdlZCwgKCkgPT4gdGhpcy5oaWRlQ2F0YWxvZygpXHJcbiAgICAgICksXHJcbiAgICAgIHRoaXMuX2lvbmVDb250cm9sbGVyLmNvbnRyb2xsZXJJbml0aWFsaXplZC5zdWJzY3JpYmUoKGxvYWRlZDogYm9vbGVhbikgPT4ge1xyXG4gICAgICAgIGlmIChsb2FkZWQpIHtcclxuICAgICAgICAgIHRoaXMuc2V0dGluZ3MgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgICAvLyB0aGlzLmxvYWRlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgc2V0VGltZW91dChhc3luYyAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0dGluZ3MgPSB0aGlzLnNldHRpbmdzU2VydmljZS5zZXR0aW5ncztcclxuICAgICAgICAgICAgdGhpcy5fY2F0YWxvZ1NlcnZpY2UuaW5pdCh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICAgICAgdGhpcy5sb2FkZWQgPSB0cnVlO1xyXG4gICAgICAgICAgfSwgMjAwKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pLFxyXG4gICAgICB0aGlzLl9zY3JlZW5TaXplU2VydmljZS5zY3JlZW5TaXplQ2hhbmdlZC5zdWJzY3JpYmUoaW5mbyA9PiB0aGlzLnBob25lU2l6ZVNjcmVlbiA9IGluZm8uaXNQaG9uZVNpemUpXHJcbiAgICApO1xyXG5cclxuICAgIHRoaXMuaXNIb21lZGVjID0gdGhpcy5zZXR0aW5nc1NlcnZpY2Uuc2V0dGluZ3MuaXNIb21lRGVjb0h1YjtcclxuXHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX3N1YnMuZm9yRWFjaChzdWIgPT4gc3ViLnVuc3Vic2NyaWJlKCkpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhpZGVDYXRhbG9nKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fc2hvd0NhdGFsb2cgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVBcnRpY2xlQ2xpY2soZGF0YTogRXh0ZXJuYWxTb3VyY2VBcnRpY2xlQ2xpY2tJbnRlcmZhY2UsIGNhdGFsb2dJbmZvPzogRXh0ZXJuYWxDYXRhbG9nU3RhcnR1cEluZm8pOiB2b2lkIHtcclxuICAgIGlmIChkYXRhLmFydGljbGUpIHtcclxuICAgICAgbGV0IHNldHRpbmdzOiBIb21lZGVjb3JhdG9yRXh0ZXJuYWxTZXR0aW5nc0ludGVyZmFjZTtcclxuICAgICAgaWYgKGNhdGFsb2dJbmZvICYmIGNhdGFsb2dJbmZvLmV4dGVybmFsU291cmNlKSB7XHJcbiAgICAgICAgc2V0dGluZ3MgPSB7XHJcbiAgICAgICAgICBuYW1lOiBkYXRhLnNldHRpbmdzLm5hbWUsXHJcbiAgICAgICAgICBzZXR0aW5nczogZGF0YS5zZXR0aW5ncy5zZXR0aW5ncyxcclxuICAgICAgICAgIGV4dGVybmFsU291cmNlOiBjYXRhbG9nSW5mby5leHRlcm5hbFNvdXJjZSxcclxuICAgICAgICAgIGNhdGFsb2dEZWZpbml0aW9uOiBkYXRhLmNhdGFsb2dEZWZpbml0aW9uLFxyXG4gICAgICAgICAgc2NoZW1hOiBjYXRhbG9nSW5mby5leHRlcm5hbFNvdXJjZS5zY2hlbWFcclxuICAgICAgICB9O1xyXG4gICAgICAgIHNldHRpbmdzLnNldHRpbmdzLnBhc3N3b3JkID0gJyc7XHJcbiAgICAgICAgc2V0dGluZ3Muc2V0dGluZ3MudXNlcm5hbWUgPSAnJztcclxuICAgICAgfVxyXG4gICAgICBpZiAodHlwZW9mIGRhdGEuYXJ0aWNsZSAhPT0gJ3N0cmluZycpIHtcclxuICAgICAgICB0aGlzLl9tZXNzYWdlQnVzLmVtaXQoTWVzc2FnZVR5cGUuTG9hZElPbmVGdXJuaXR1cmVJbnRvU2NlbmVCeVNLVSwge1xyXG4gICAgICAgICAgc2t1OiBkYXRhLmFydGljbGUuYXJ0aWNsZU51bWJlcixcclxuICAgICAgICAgIHNldHRpbmdzOiBzZXR0aW5ncyxcclxuICAgICAgICAgIHBvc2l0aW9uOiB0aGlzLl9mbG9vclBsYW5TZXJ2aWNlLmdldENlbnRlcigpLFxyXG4gICAgICAgICAgZnVsbEFydGljbGVPYmplY3Q6IGRhdGEuYXJ0aWNsZVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuX3Nob3dDYXRhbG9nID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlQXJCdXR0b25DbGljayhkYXRhOiB7IGFydGljbGU6IEFydGljbGVMaXN0T2JqZWN0RXh0ZW5kZWQsIHNldHRpbmdzOiBIb21lZGVjb3JhdG9yRXh0ZXJuYWxTZXR0aW5nc0ludGVyZmFjZSB9KTogdm9pZCB7XHJcbiAgICBpZiAoZGF0YS5hcnRpY2xlKSB7XHJcbiAgICAgIHRoaXMuX3NjZW5lU2VydmljZS5hck1vZGUgPSB0cnVlO1xyXG4gICAgICB0aGlzLl9zaG93Q2F0YWxvZyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLl9tZXNzYWdlQnVzLmVtaXQoTWVzc2FnZVR5cGUuTG9hZElPbmVGdXJuaXR1cmVJbnRvU2NlbmVCeVNLVSwge1xyXG4gICAgICAgIHNrdTogZGF0YS5hcnRpY2xlLmFydGljbGVOdW1iZXIsXHJcbiAgICAgICAgc2V0dGluZ3M6IGRhdGEuc2V0dGluZ3MsXHJcbiAgICAgICAgcG9zaXRpb246IHt4OiAwLCB5OiAwfSxcclxuICAgICAgICBmdWxsQXJ0aWNsZU9iamVjdDogZGF0YS5hcnRpY2xlXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGhhbmRsZUV4dGVybmFsU291cmNlQ2xpY2soc291cmNlPzogRXh0ZXJuYWxTb3VyY2VWaWV3bW9kZWwpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGlmIChzb3VyY2UpIHtcclxuICAgICAgdGhpcy5fc291cmNlID0gc291cmNlO1xyXG4gICAgICAvLyByZXNldCBjb25uZWN0aW9uIHRvIGhvc3RcclxuICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICBhd2FpdCB0aGlzLl9hZGFwdGVyU2VydmljZS5pbml0Q29ubmVjdG9yKHRoaXMuc2V0dGluZ3NTZXJ2aWNlLnNldHRpbmdzLCB1bmRlZmluZWQpO1xyXG5cclxuICAgICAgdGhpcy5jYXRhbG9nRGVmaW5pdGlvbiA9IHNvdXJjZS5jYXRhbG9nRGVmaW5pdGlvbjtcclxuICAgICAgdGhpcy5leHRlcm5hbFNvdXJjZSA9IHNvdXJjZS5leHRlcm5hbFNvdXJjZTtcclxuICAgICAgdGhpcy5leHRlcm5hbENhdGFsb2dOYW1lID0gc291cmNlLmNhdGFsb2dEZWZpbml0aW9uLm5hbWU7XHJcbiAgICAgIGxldCBpbmZvOiBFeHRlcm5hbENhdGFsb2dTdGFydHVwSW5mbyA9IG5ldyBFeHRlcm5hbENhdGFsb2dTdGFydHVwSW5mbygpO1xyXG5cclxuICAgICAgY29uc3QgcmVxdWVzdDogRXh0ZXJuYWxDYXRhbG9nU3RhcnR1cEluZm9SZXF1ZXN0ID0gdGhpcy5fYnVpbGRFeHRlcm5hbENhdGFsb2dSZXF1ZXN0KCk7XHJcblxyXG4gICAgICBpbmZvID0gYXdhaXQgdGhpcy5faW9uZUNvbnRyb2xsZXIuZ2V0V2ViVmlld1N0YXJ0dXBJbmZvKHJlcXVlc3QpO1xyXG4gICAgICB0aGlzLmNhdGFsb2dJbmZvID0gaW5mbztcclxuICAgICAgdGhpcy5zaG93RXh0ZXJuYWxDYXRhbG9nID0gdHJ1ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2hvd0V4dGVybmFsQ2F0YWxvZyA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZVNob3dPd25Db2xsZWN0aW9uQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcclxuICAgIHRoaXMuc2hvd093bkNvbGxlY3Rpb24gPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZUJhY2tDbGljayhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xyXG4gICAgdGhpcy5zaG93RXh0ZXJuYWxDYXRhbG9nID0gZmFsc2U7XHJcbiAgICB0aGlzLnNob3dPd25Db2xsZWN0aW9uID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlUmVmcmVzaENsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XHJcbiAgICB0aGlzLmhhbmRsZUV4dGVybmFsU291cmNlQ2xpY2sodGhpcy5fc291cmNlKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBoYW5kbGVJRnJhbWVGZWVkYmFjayhqc29uU3RyaW5nOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGlmIChqc29uU3RyaW5nKSB7XHJcbiAgICAgIGNvbnN0IGpzb25PYmogPSBKU09OLnBhcnNlKGpzb25TdHJpbmcpO1xyXG4gICAgICBpZiAoanNvbk9ialsnaGFzaCddICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICBjb25zdCBjdXN0b21lck5hbWU6IHN0cmluZyA9IHRoaXMuY2F0YWxvZ0luZm8udXNlcm5hbWU7XHJcbiAgICAgICAgLy8gY29uc3QgY3VzdG9tZXJOYW1lOiBzdHJpbmcgPSAnTGludGVsb28nO1xyXG4gICAgICAgIC8vIHRocmVlIG1haW4gYXBpIHVybHNcclxuICAgICAgICBjb25zdCBtb2RlbFVybDogc3RyaW5nID0gdGhpcy5jYXRhbG9nSW5mby5leHRlcm5hbFNvdXJjZS5kb21haW4gKyAnL21vZGVscy8nICsganNvbk9ialsnaGFzaCddICsgJy9nbGInO1xyXG4gICAgICAgIGNvbnN0IGNvbmZpZ3VyYXRpb25Vcmw6IHN0cmluZyA9IHRoaXMuY2F0YWxvZ0luZm8uZXh0ZXJuYWxTb3VyY2UuZG9tYWluICsgJy9jb25maWd1cmF0aW9uRGF0YS8nICsganNvbk9ialsnaGFzaCddO1xyXG4gICAgICAgIGNvbnN0IHByaWNlRGF0YVVybDogc3RyaW5nID0gdGhpcy5jYXRhbG9nSW5mby5leHRlcm5hbFNvdXJjZS5kb21haW4gKyAnL3J1bGVzL2FwaS8nICsgY3VzdG9tZXJOYW1lLnRvTG93ZXJDYXNlKCkgKyAnLycgKyBqc29uT2JqWydoYXNoJ107XHJcblxyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICBjb25zdCBhcGlSZXNwb25zZXM6IFJlc3BvbnNlW10gPSBhd2FpdCBQcm9taXNlLmFsbChbXHJcbiAgICAgICAgICAgIHRoaXMuX3RoaXJkUGFydHlNb2RlbFNlcnZpY2UuZG93bmxvYWRNb2RlbChtb2RlbFVybCksXHJcbiAgICAgICAgICAgIHRoaXMuX3RoaXJkUGFydHlNb2RlbFNlcnZpY2UuZmV0Y2hKc29uRmlsZShjb25maWd1cmF0aW9uVXJsKSxcclxuICAgICAgICAgICAgdGhpcy5fdGhpcmRQYXJ0eU1vZGVsU2VydmljZS5mZXRjaEpzb25GaWxlKHByaWNlRGF0YVVybClcclxuICAgICAgICAgIF0pO1xyXG4gICAgICAgICAgY29uc3QgbW9kZWxSZXNwb25zZTogUmVzcG9uc2UgPSBhcGlSZXNwb25zZXNbMF07XHJcbiAgICAgICAgICBjb25zdCBjb25maWd1cmF0aW9uUmVzcG9uc2U6IFJlc3BvbnNlID0gYXBpUmVzcG9uc2VzWzFdO1xyXG4gICAgICAgICAgY29uc3QgcHJpY2VEYXRhUmVzcG9uc2U6IFJlc3BvbnNlID0gYXBpUmVzcG9uc2VzWzJdO1xyXG5cclxuICAgICAgICAgIGxldCBjb25maWd1cmF0aW9uRGF0YTogYW55O1xyXG4gICAgICAgICAgbGV0IHByaWNlRGF0YTogYW55O1xyXG5cclxuICAgICAgICAgIGlmIChtb2RlbFJlc3BvbnNlICYmIG1vZGVsUmVzcG9uc2Uub2spIHtcclxuICAgICAgICAgICAgbW9kZWxSZXNwb25zZS5hcnJheUJ1ZmZlcigpLnRoZW4oZGF0YSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKGNvbmZpZ3VyYXRpb25SZXNwb25zZSAmJiBjb25maWd1cmF0aW9uUmVzcG9uc2Uub2spIHtcclxuICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25SZXNwb25zZS5qc29uKCkudGhlbihyZXN1bHQgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhyZXN1bHQpO1xyXG4gICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uRGF0YSA9IHJlc3VsdDtcclxuICAgICAgICAgICAgICAgIH0pLmNhdGNoKGUgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhlKTtcclxuICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbkRhdGEgPSB7fTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZiAocHJpY2VEYXRhUmVzcG9uc2UgJiYgcHJpY2VEYXRhUmVzcG9uc2Uub2spIHtcclxuICAgICAgICAgICAgICAgIHByaWNlRGF0YVJlc3BvbnNlLmpzb24oKS50aGVuKHJlc3VsdCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKHJlc3VsdCk7XHJcbiAgICAgICAgICAgICAgICAgIHByaWNlRGF0YSA9IHJlc3VsdDtcclxuICAgICAgICAgICAgICAgIH0pLmNhdGNoKGUgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhlKTtcclxuICAgICAgICAgICAgICAgICAgcHJpY2VEYXRhID0ge307XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgdGhpcy5fdGhpcmRQYXJ0eU1vZGVsU2VydmljZS5wYXJzZU1vZGVsVG9HTEIoZGF0YSwganNvbk9ialsnaGFzaCddLCBtb2RlbFVybCwgY29uZmlndXJhdGlvbkRhdGEsIHByaWNlRGF0YSkudGhlbihyZXN1bHQgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5oaWRlQ2F0YWxvZygpO1xyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAoIW1vZGVsUmVzcG9uc2Uub2spIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdGYWlsZWQgdG8gZmV0Y2ggZGF0YScpO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC8vIGNvbnN0IHJlc3BvbnNlOiBSZXNwb25zZSA9IGF3YWl0IHRoaXMuX3RoaXJkUGFydHlNb2RlbFNlcnZpY2UuZG93bmxvYWRNb2RlbCh1cmxUb0ZldGNoKTtcclxuICAgICAgICAgIC8vIGlmICghcmVzcG9uc2Uub2spIHtcclxuICAgICAgICAgIC8vICAgdGhyb3cgbmV3IEVycm9yKCdGYWlsZWQgdG8gZmV0Y2ggZGF0YScpO1xyXG4gICAgICAgICAgLy8gfVxyXG4gICAgICAgICAgLy8gcmVzcG9uc2UuYXJyYXlCdWZmZXIoKS50aGVuKGRhdGEgPT4ge1xyXG4gICAgICAgICAgLy8gICB0aGlzLl90aGlyZFBhcnR5TW9kZWxTZXJ2aWNlLnBhcnNlTW9kZWxUb0dMQihkYXRhLCBqc29uT2JqWydoYXNoJ10sIHVybFRvRmV0Y2gpLnRoZW4ocmVzdWx0ID0+IHtcclxuICAgICAgICAgIC8vICAgICB0aGlzLmhpZGVDYXRhbG9nKCk7XHJcbiAgICAgICAgICAvLyAgIH0pO1xyXG4gICAgICAgICAgLy8gfSk7XHJcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGZldGNoaW5nIGRhdGE6JywgZXJyb3IpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGlmcmFtZVRlc3QoKTogUHJvbWlzZTx2b2lkPiB7XHJcblxyXG4gICAgLy8gdGhyZWUgbWFpbiBhcGkgdXJsc1xyXG4gICAgY29uc3QgbW9kZWxVcmw6IHN0cmluZyA9ICdodHRwczovL2xpbnRlbG9vLnBsYXRmb3JtYXBpLWFjY2VwdC4zZGltZXJjZS5jb20vbW9kZWxzLzM5MjBmNTBjYmJkY2I1OTgwYzg5OTQ3NDZkZjBmNjIxMjdjZTEwNjQxMDhjZDdiYzFhMjdlYTdkNGMxNzFkYzgvZ2xiJztcclxuICAgIGNvbnN0IGNvbmZpZ3VyYXRpb25Vcmw6IHN0cmluZyA9ICdodHRwczovL2xpbnRlbG9vLnBsYXRmb3JtYXBpLWFjY2VwdC4zZGltZXJjZS5jb20vY29uZmlndXJhdGlvbkRhdGEvMzkyMGY1MGNiYmRjYjU5ODBjODk5NDc0NmRmMGY2MjEyN2NlMTA2NDEwOGNkN2JjMWEyN2VhN2Q0YzE3MWRjOCc7XHJcbiAgICBjb25zdCBwcmljZURhdGFVcmw6IHN0cmluZyA9ICdodHRwczovL2xpbnRlbG9vLnBsYXRmb3JtYXBpLWFjY2VwdC4zZGltZXJjZS5jb20vcnVsZXMvYXBpL2xpbnRlbG9vLzM5MjBmNTBjYmJkY2I1OTgwYzg5OTQ3NDZkZjBmNjIxMjdjZTEwNjQxMDhjZDdiYzFhMjdlYTdkNGMxNzFkYzgnO1xyXG4gICAgY29uc3QgaGFzaDogc3RyaW5nID0gJzM5MjBmNTBjYmJkY2I1OTgwYzg5OTQ3NDZkZjBmNjIxMjdjZTEwNjQxMDhjZDdiYzFhMjdlYTdkNGMxNzFkYzgnO1xyXG5cclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IGFwaVJlc3BvbnNlczogUmVzcG9uc2VbXSA9IGF3YWl0IFByb21pc2UuYWxsKFtcclxuICAgICAgICB0aGlzLl90aGlyZFBhcnR5TW9kZWxTZXJ2aWNlLmRvd25sb2FkTW9kZWwobW9kZWxVcmwpLFxyXG4gICAgICAgIHRoaXMuX3RoaXJkUGFydHlNb2RlbFNlcnZpY2UuZmV0Y2hKc29uRmlsZShjb25maWd1cmF0aW9uVXJsKSxcclxuICAgICAgICB0aGlzLl90aGlyZFBhcnR5TW9kZWxTZXJ2aWNlLmZldGNoSnNvbkZpbGUocHJpY2VEYXRhVXJsKVxyXG4gICAgICBdKTtcclxuICAgICAgY29uc3QgbW9kZWxSZXNwb25zZTogUmVzcG9uc2UgPSBhcGlSZXNwb25zZXNbMF07XHJcbiAgICAgIGNvbnN0IGNvbmZpZ3VyYXRpb25SZXNwb25zZTogUmVzcG9uc2UgPSBhcGlSZXNwb25zZXNbMV07XHJcbiAgICAgIGNvbnN0IHByaWNlRGF0YVJlc3BvbnNlOiBSZXNwb25zZSA9IGFwaVJlc3BvbnNlc1syXTtcclxuXHJcbiAgICAgIGxldCBjb25maWd1cmF0aW9uRGF0YTogYW55O1xyXG4gICAgICBsZXQgcHJpY2VEYXRhOiBhbnk7XHJcblxyXG4gICAgICBpZiAobW9kZWxSZXNwb25zZSAmJiBtb2RlbFJlc3BvbnNlLm9rKSB7XHJcbiAgICAgICAgbW9kZWxSZXNwb25zZS5hcnJheUJ1ZmZlcigpLnRoZW4oZGF0YSA9PiB7XHJcbiAgICAgICAgICBpZiAoY29uZmlndXJhdGlvblJlc3BvbnNlICYmIGNvbmZpZ3VyYXRpb25SZXNwb25zZS5vaykge1xyXG4gICAgICAgICAgICBjb25maWd1cmF0aW9uUmVzcG9uc2UuanNvbigpLnRoZW4ocmVzdWx0ID0+IHtcclxuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhyZXN1bHQpO1xyXG4gICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25EYXRhID0gcmVzdWx0O1xyXG4gICAgICAgICAgICB9KS5jYXRjaChlID0+IHtcclxuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhlKTtcclxuICAgICAgICAgICAgICBjb25maWd1cmF0aW9uRGF0YSA9IHt9O1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChwcmljZURhdGFSZXNwb25zZSAmJiBwcmljZURhdGFSZXNwb25zZS5vaykge1xyXG4gICAgICAgICAgICBwcmljZURhdGFSZXNwb25zZS5qc29uKCkudGhlbihyZXN1bHQgPT4ge1xyXG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKHJlc3VsdCk7XHJcbiAgICAgICAgICAgICAgcHJpY2VEYXRhID0gcmVzdWx0O1xyXG4gICAgICAgICAgICB9KS5jYXRjaChlID0+IHtcclxuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhlKTtcclxuICAgICAgICAgICAgICBwcmljZURhdGEgPSB7fTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLl90aGlyZFBhcnR5TW9kZWxTZXJ2aWNlLnBhcnNlTW9kZWxUb0dMQihkYXRhLCBoYXNoLCBtb2RlbFVybCwgY29uZmlndXJhdGlvbkRhdGEsIHByaWNlRGF0YSkudGhlbihyZXN1bHQgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmhpZGVDYXRhbG9nKCk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIGlmICghbW9kZWxSZXNwb25zZS5vaykge1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIHRvIGZldGNoIGRhdGEnKTtcclxuICAgICAgfVxyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZmV0Y2hpbmcgZGF0YTonLCBlcnJvcik7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gbGV0IGNvbmZpZ3VyYXRpb25EYXRhOiBhbnk7XHJcbiAgICAvLyBsZXQgcHJpY2VEYXRhOiBhbnk7XHJcbiAgICAvL1xyXG4gICAgLy8gLy8gZ2V0IGNvbmZpZyBkYXRhXHJcbiAgICAvLyBjb25zdCBjb25maWd1cmF0aW9uVXJsUmVzcG9uc2UgPSBhd2FpdCB0aGlzLl90aGlyZFBhcnR5TW9kZWxTZXJ2aWNlLmZldGNoSnNvbkZpbGUoY29uZmlndXJhdGlvblVybCkuY2F0Y2goKGUpID0+IGNvbnNvbGUuZXJyb3IoZSkpO1xyXG4gICAgLy8gaWYgKGNvbmZpZ3VyYXRpb25VcmxSZXNwb25zZSAmJiBjb25maWd1cmF0aW9uVXJsUmVzcG9uc2Uub2spIHtcclxuICAgIC8vICAgY29uZmlndXJhdGlvbkRhdGEgPSBhd2FpdCBjb25maWd1cmF0aW9uVXJsUmVzcG9uc2UuanNvbigpO1xyXG4gICAgLy8gfVxyXG4gICAgLy9cclxuICAgIC8vIC8vIGdldCBwcmljaW5nIGRhdGFcclxuICAgIC8vIGNvbnN0IHByaWNlRGF0YVJlc3BvbnNlID0gYXdhaXQgdGhpcy5fdGhpcmRQYXJ0eU1vZGVsU2VydmljZS5mZXRjaEpzb25GaWxlKHByaWNlRGF0YVVybCkuY2F0Y2goKGUpID0+IGNvbnNvbGUuZXJyb3IoZSkpO1xyXG4gICAgLy8gaWYgKHByaWNlRGF0YVJlc3BvbnNlICYmIHByaWNlRGF0YVJlc3BvbnNlLm9rKSB7XHJcbiAgICAvLyAgIHByaWNlRGF0YSA9IGF3YWl0IHByaWNlRGF0YVJlc3BvbnNlLmpzb24oKTtcclxuICAgIC8vIH1cclxuICAgIC8vIC8vIGdldCBtb2RlbCBhbmQgY3JlYXRlIHRoZSBvYmplY3RcclxuICAgIC8vIHRoaXMuX3RoaXJkUGFydHlNb2RlbFNlcnZpY2UuZG93bmxvYWRNb2RlbChtb2RlbFVybCkudGhlbihyZXN1bHQgPT4ge1xyXG4gICAgLy8gICBpZiAocmVzdWx0ICYmIHJlc3VsdC5vaykge1xyXG4gICAgLy8gICAgIHJlc3VsdC5hcnJheUJ1ZmZlcigpLnRoZW4oZGF0YSA9PiB7XHJcbiAgICAvLyAgICAgICB0aGlzLl90aGlyZFBhcnR5TW9kZWxTZXJ2aWNlLnBhcnNlTW9kZWxUb0dMQihkYXRhLCBoYXNoLCBtb2RlbFVybCwgY29uZmlndXJhdGlvbkRhdGEsIHByaWNlRGF0YSkudGhlbihzdGF0dXMgPT4ge1xyXG4gICAgLy8gICAgICAgICB0aGlzLmhpZGVDYXRhbG9nKCk7XHJcbiAgICAvLyAgICAgICB9KTtcclxuICAgIC8vICAgICB9KTtcclxuICAgIC8vICAgfVxyXG4gICAgLy8gfSkuY2F0Y2goZSA9PiB7XHJcbiAgICAvLyAgIGNvbnNvbGUubG9nKGUpO1xyXG4gICAgLy8gfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9idWlsZEV4dGVybmFsQ2F0YWxvZ1JlcXVlc3QoKTogRXh0ZXJuYWxDYXRhbG9nU3RhcnR1cEluZm9SZXF1ZXN0IHtcclxuICAgIGNvbnN0IHJlcXVlc3Q6IEV4dGVybmFsQ2F0YWxvZ1N0YXJ0dXBJbmZvUmVxdWVzdCA9IG5ldyBFeHRlcm5hbENhdGFsb2dTdGFydHVwSW5mb1JlcXVlc3QoKTtcclxuICAgIC8vIEB0cy1pZ25vcmVcclxuICAgIHJlcXVlc3QuY2F0YWxvZ0lkID0gdGhpcy5jYXRhbG9nRGVmaW5pdGlvbi5nZXRJZCgpO1xyXG4gICAgcmVxdWVzdC5wb3NOYW1lID0gJ05OQic7IC8vIE5vZyBOaWV0IEJlcGFhbGRcclxuICAgIHJldHVybiByZXF1ZXN0O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBfaGFuZGxlU2hvd1Byb2R1Y3RDYXRhbG9nTWVzc2FnZVJlY2VpdmVkKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgdGhpcy5fc2hvd0NhdGFsb2cgPSB0cnVlO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -47,7 +47,7 @@ export class RenderControlsComponent {
|
|
|
47
47
|
}
|
|
48
48
|
RenderControlsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: RenderControlsComponent, deps: [{ token: i1.RenderService }, { token: i2.NewRenderService }, { token: i3.MessageBusService }, { token: i4.ViewModeService }, { token: i5.HomedecoratorSettingsService }, { token: i6.MatDialog }, { token: i7.ExportService }, { token: i8.UtilsService }], target: i0.ɵɵFactoryTarget.Component });
|
|
49
49
|
RenderControlsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: RenderControlsComponent, selector: "rp-render-controls", ngImport: i0, template: `
|
|
50
|
-
<div class="render-container" *ngIf="renderService.serverData &&
|
|
50
|
+
<div class="render-container" *ngIf="renderService.serverData && renderService.serverData.renderMode !== renderService.renderModes.RenderShop">
|
|
51
51
|
<div class="render-progress" *ngIf="renderService.currentQueueRenderItem.renderStatus === renderStatus.IsRunning || renderService.currentQueueRenderItem.renderStatus === renderStatus.IsSuccess">
|
|
52
52
|
{{ (renderService.currentQueueRenderItem.renderStatus === renderStatus.IsSuccess && renderService.currentQueueRenderItem.renderProgress === 100 ? "RENDER_READY" : "") | localize }}
|
|
53
53
|
{{ (renderService.currentQueueRenderItem.renderStatus === renderStatus.IsSuccess && renderService.currentQueueRenderItem.renderProgress !== 100 ? "RENDER_STOPPED" : "") | localize }}
|
|
@@ -68,7 +68,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
68
68
|
args: [{
|
|
69
69
|
selector: 'rp-render-controls',
|
|
70
70
|
template: `
|
|
71
|
-
<div class="render-container" *ngIf="renderService.serverData &&
|
|
71
|
+
<div class="render-container" *ngIf="renderService.serverData && renderService.serverData.renderMode !== renderService.renderModes.RenderShop">
|
|
72
72
|
<div class="render-progress" *ngIf="renderService.currentQueueRenderItem.renderStatus === renderStatus.IsRunning || renderService.currentQueueRenderItem.renderStatus === renderStatus.IsSuccess">
|
|
73
73
|
{{ (renderService.currentQueueRenderItem.renderStatus === renderStatus.IsSuccess && renderService.currentQueueRenderItem.renderProgress === 100 ? "RENDER_READY" : "") | localize }}
|
|
74
74
|
{{ (renderService.currentQueueRenderItem.renderStatus === renderStatus.IsSuccess && renderService.currentQueueRenderItem.renderProgress !== 100 ? "RENDER_STOPPED" : "") | localize }}
|
|
@@ -87,4 +87,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
87
87
|
styleUrls: ['./render-controls.component.scss']
|
|
88
88
|
}]
|
|
89
89
|
}], ctorParameters: function () { return [{ type: i1.RenderService }, { type: i2.NewRenderService }, { type: i3.MessageBusService }, { type: i4.ViewModeService }, { type: i5.HomedecoratorSettingsService }, { type: i6.MatDialog }, { type: i7.ExportService }, { type: i8.UtilsService }]; } });
|
|
90
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
90
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyLWNvbnRyb2xzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jbGllbnQvYXBwL3BsdWdpbnMvcmVuZGVyL3JlbmRlci1jb250cm9scy9yZW5kZXItY29udHJvbHMuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFeEMsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBQzNELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQU1uRCxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSwwQ0FBMEMsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7O0FBMEIvRSxNQUFNLE9BQU8sdUJBQXVCO0lBS2xDLFlBQ1MsYUFBNEIsRUFDNUIsZ0JBQWtDLEVBQ2xDLGNBQWlDLEVBQ2pDLGVBQWdDLEVBQ2hDLGVBQTZDLEVBQzVDLE9BQWtCLEVBQ2xCLGNBQTZCLEVBQzdCLGFBQTJCO1FBUDVCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBQ2pDLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxvQkFBZSxHQUFmLGVBQWUsQ0FBOEI7UUFDNUMsWUFBTyxHQUFQLE9BQU8sQ0FBVztRQUNsQixtQkFBYyxHQUFkLGNBQWMsQ0FBZTtRQUM3QixrQkFBYSxHQUFiLGFBQWEsQ0FBYztRQVhyQixjQUFTLEdBQW9CLFFBQVEsQ0FBQztRQUN0QyxpQkFBWSxHQUFHLFlBQVksQ0FBQztJQVd6QyxDQUFDO0lBRUcsY0FBYyxDQUFDLEtBQWlCO1FBQ3JDLHVGQUF1RjtRQUN2RiwwQ0FBMEM7UUFFMUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMscUJBQXFCLEVBQUU7WUFDdkMsVUFBVSxFQUFFLHVCQUF1QjtZQUNuQyxLQUFLLEVBQUUsT0FBTztTQUNmLENBQUMsQ0FBQztRQUVILCtEQUErRDtRQUMvRCw0Q0FBNEM7UUFDNUMsY0FBYztRQUNkLCtDQUErQztRQUMvQywwQ0FBMEM7UUFDMUMsUUFBUTtRQUNSLE9BQU87SUFDVCxDQUFDOztxSEFoQ1UsdUJBQXVCO3lHQUF2Qix1QkFBdUIsMERBbkJ4Qjs7Ozs7Ozs7Ozs7Ozs7OztHQWdCVDs0RkFHVSx1QkFBdUI7a0JBckJuQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxvQkFBb0I7b0JBQzlCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7OztHQWdCVDtvQkFDRCxTQUFTLEVBQUUsQ0FBQyxrQ0FBa0MsQ0FBQztpQkFDaEQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7TWF0RGlhbG9nfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQge1ZpZXdNb2RlfSBmcm9tICcuLi8uLi8uLi9jb3JlL2VudW0vdmlldy1tb2RlLmVudW0nO1xyXG5pbXBvcnQge1JlbmRlclN0YXR1c30gZnJvbSAnLi4vZW51bS9yZW5kZXItc3RhdHVzJztcclxuaW1wb3J0IHtSZW5kZXJTZXJ2aWNlfSBmcm9tICcuLi9zZXJ2aWNlL3JlbmRlci5zZXJ2aWNlJztcclxuaW1wb3J0IHtOZXdSZW5kZXJTZXJ2aWNlfSBmcm9tICcuLi9zZXJ2aWNlL25ldy1yZW5kZXIuc2VydmljZSc7XHJcbmltcG9ydCB7Vmlld01vZGVTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2Uvdmlldy1tb2RlLnNlcnZpY2UnO1xyXG5pbXBvcnQge0hvbWVkZWNvcmF0b3JTZXR0aW5nc1NlcnZpY2V9IGZyb20gJy4uLy4uLy4uL2NvcmUvc2VydmljZS9ob21lZGVjb3JhdG9yLXNldHRpbmdzLnNlcnZpY2UnO1xyXG5pbXBvcnQge0V4cG9ydFNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL2NvcmUvc2VydmljZS9leHBvcnQuc2VydmljZSc7XHJcbmltcG9ydCB7UmVuZGVyRGlhbG9nQ29tcG9uZW50fSBmcm9tICcuLi9yZW5kZXItZGlhbG9nL3JlbmRlci1kaWFsb2cuY29tcG9uZW50JztcclxuaW1wb3J0IHtNZXNzYWdlVHlwZX0gZnJvbSAnLi4vLi4vLi4vY29yZS9lbnVtL21lc3NhZ2UtdHlwZS5lbnVtJztcclxuaW1wb3J0IHtNZXNzYWdlQnVzU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNlL21lc3NhZ2UtYnVzLnNlcnZpY2UnO1xyXG5pbXBvcnQge1V0aWxzU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNlL3V0aWxzLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdycC1yZW5kZXItY29udHJvbHMnLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyZW5kZXItY29udGFpbmVyXCIgKm5nSWY9XCJyZW5kZXJTZXJ2aWNlLnNlcnZlckRhdGEgJiYgIHJlbmRlclNlcnZpY2Uuc2VydmVyRGF0YS5yZW5kZXJNb2RlICE9PSByZW5kZXJTZXJ2aWNlLnJlbmRlck1vZGVzLlJlbmRlclNob3BcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZW5kZXItcHJvZ3Jlc3NcIiAqbmdJZj1cInJlbmRlclNlcnZpY2UuY3VycmVudFF1ZXVlUmVuZGVySXRlbS5yZW5kZXJTdGF0dXMgPT09IHJlbmRlclN0YXR1cy5Jc1J1bm5pbmcgfHwgcmVuZGVyU2VydmljZS5jdXJyZW50UXVldWVSZW5kZXJJdGVtLnJlbmRlclN0YXR1cyA9PT0gcmVuZGVyU3RhdHVzLklzU3VjY2Vzc1wiPlxyXG4gICAgICAgICAgICAgIHt7IChyZW5kZXJTZXJ2aWNlLmN1cnJlbnRRdWV1ZVJlbmRlckl0ZW0ucmVuZGVyU3RhdHVzID09PSByZW5kZXJTdGF0dXMuSXNTdWNjZXNzICYmIHJlbmRlclNlcnZpY2UuY3VycmVudFF1ZXVlUmVuZGVySXRlbS5yZW5kZXJQcm9ncmVzcyA9PT0gMTAwID8gXCJSRU5ERVJfUkVBRFlcIiA6IFwiXCIpIHwgbG9jYWxpemUgfX1cclxuICAgICAgICAgICAgICB7eyAocmVuZGVyU2VydmljZS5jdXJyZW50UXVldWVSZW5kZXJJdGVtLnJlbmRlclN0YXR1cyA9PT0gcmVuZGVyU3RhdHVzLklzU3VjY2VzcyAmJiByZW5kZXJTZXJ2aWNlLmN1cnJlbnRRdWV1ZVJlbmRlckl0ZW0ucmVuZGVyUHJvZ3Jlc3MgIT09IDEwMCA/IFwiUkVOREVSX1NUT1BQRURcIiA6IFwiXCIpIHwgbG9jYWxpemUgfX1cclxuICAgICAgICAgICAgICB7eyAocmVuZGVyU2VydmljZS5jdXJyZW50UXVldWVSZW5kZXJJdGVtLnJlbmRlclN0YXR1cyA9PT0gcmVuZGVyU3RhdHVzLklzUnVubmluZykgPyByZW5kZXJTZXJ2aWNlLmN1cnJlbnRRdWV1ZVJlbmRlckl0ZW0ucmVuZGVyUHJvZ3Jlc3MgKyBcIiVcIiA6IFwiXCJ9fVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIG1hdFRvb2x0aXA9XCJ7eyhyZW5kZXJTZXJ2aWNlLmN1cnJlbnRRdWV1ZVJlbmRlckl0ZW0ucmVuZGVyU3RhdHVzID09PSByZW5kZXJTdGF0dXMuSXNSdW5uaW5nID8gJ1JFTkRFUl9WSUVXX1BST0NFU1MnIDogJ1JFTkRFUl9UQUtFX0FfUElDVFVSRScpIHwgbG9jYWxpemV9fVwiXHJcbiAgICAgICAgICAgICAgICAgIFtpZF09XCInc3RhbmRhbG9uZV9yZW5kZXJfcGljdHVyZSdcIlxyXG4gICAgICAgICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cIihcclxuICAgICAgICAocmVuZGVyU2VydmljZS5zZXJ2ZXJEYXRhLnJlbmRlck1vZGUgPT09IHJlbmRlclNlcnZpY2UucmVuZGVyTW9kZXMuUmVuZGVyUm9vbSAmJiB2aWV3TW9kZVNlcnZpY2Uudmlld01vZGUgPT09IHZpZXdNb2Rlcy5XYWxrVGhyb3VnaCkgfHxcclxuICAgICAgICAocmVuZGVyU2VydmljZS5zZXJ2ZXJEYXRhLnJlbmRlck1vZGUgPT09IHJlbmRlclNlcnZpY2UucmVuZGVyTW9kZXMuUmVuZGVySW9uZSkpXCJcclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNob3dSZW5kZXJGb3JtKCRldmVudClcIj5cclxuICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJpY29uIGhvbWVkZWNvcmF0b3ItbWF0ZXJpYWwtaWNvbnNcIiBhcmlhLWhpZGRlbj1cInRydWVcIj57eyAocmVuZGVyU2VydmljZS5jdXJyZW50UXVldWVSZW5kZXJJdGVtLnJlbmRlclN0YXR1cyA9PT0gcmVuZGVyU3RhdHVzLklzUnVubmluZyA/ICdvcGVuX2luX2Jyb3dzZXInIDogJ3Bob3RvX2NhbWVyYScpIH19PC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICBgLFxyXG4gIHN0eWxlVXJsczogWycuL3JlbmRlci1jb250cm9scy5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSZW5kZXJDb250cm9sc0NvbXBvbmVudCB7XHJcblxyXG4gIHB1YmxpYyByZWFkb25seSB2aWV3TW9kZXM6IHR5cGVvZiBWaWV3TW9kZSA9IFZpZXdNb2RlO1xyXG4gIHB1YmxpYyByZWFkb25seSByZW5kZXJTdGF0dXMgPSBSZW5kZXJTdGF0dXM7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIHJlbmRlclNlcnZpY2U6IFJlbmRlclNlcnZpY2UsXHJcbiAgICBwdWJsaWMgbmV3UmVuZGVyU2VydmljZTogTmV3UmVuZGVyU2VydmljZSxcclxuICAgIHB1YmxpYyBtZXNzYWdlU2VydmljZTogTWVzc2FnZUJ1c1NlcnZpY2UsXHJcbiAgICBwdWJsaWMgdmlld01vZGVTZXJ2aWNlOiBWaWV3TW9kZVNlcnZpY2UsXHJcbiAgICBwdWJsaWMgc2V0dGluZ3NTZXJ2aWNlOiBIb21lZGVjb3JhdG9yU2V0dGluZ3NTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfZGlhbG9nOiBNYXREaWFsb2csXHJcbiAgICBwcml2YXRlIF9leHBvcnRTZXJ2aWNlOiBFeHBvcnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfdXRpbHNTZXJ2aWNlOiBVdGlsc1NlcnZpY2VcclxuICApIHt9XHJcblxyXG4gIHB1YmxpYyBzaG93UmVuZGVyRm9ybShldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgLy8gdGhpcy5tZXNzYWdlU2VydmljZS5lbWl0KE1lc3NhZ2VUeXBlLlNob3dMb2FkaW5nSW5kaWNhdG9yLCB7dGl0bGU6ICdVcGxvYWRpbmcuLi4nfSk7XHJcbiAgICAvLyB0aGlzLl91dGlsc1NlcnZpY2UucHJlcFJvb21Gb3JSZW5kZXIoKTtcclxuXHJcbiAgICB0aGlzLl9kaWFsb2cub3BlbihSZW5kZXJEaWFsb2dDb21wb25lbnQsIHtcclxuICAgICAgcGFuZWxDbGFzczogJ3JlbmRlci1kaWFsb2ctY29udGVudCcsXHJcbiAgICAgIHdpZHRoOiAnNDAwcHgnXHJcbiAgICB9KTtcclxuXHJcbiAgICAvLyAvLyBpZiAodGhpcy5zZXR0aW5nc1NlcnZpY2Uuc2V0dGluZ3Mub3B0aW9ucy51c2VOZXdSZW5kZXIpIHtcclxuICAgIC8vIC8vICAgdGhpcy5uZXdSZW5kZXJTZXJ2aWNlLnJlbmRlckltYWdlKCk7XHJcbiAgICAvLyAvLyB9IGVsc2Uge1xyXG4gICAgLy8gICB0aGlzLl9kaWFsb2cub3BlbihSZW5kZXJEaWFsb2dDb21wb25lbnQsIHtcclxuICAgIC8vICAgICBwYW5lbENsYXNzOiAncmVuZGVyLWRpYWxvZy1jb250ZW50J1xyXG4gICAgLy8gICB9KTtcclxuICAgIC8vIC8vIH1cclxuICB9XHJcblxyXG59XHJcbiJdfQ==
|
|
@@ -325,4 +325,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
325
325
|
providedIn: 'root',
|
|
326
326
|
}]
|
|
327
327
|
}], ctorParameters: function () { return [{ type: i1.MessageBusService }, { type: i2.HomedecoratorSettingsService }, { type: i3.BuildFurnitureService }, { type: i4.CameraService }, { type: i5.SceneService }, { type: i6.HomedecoratorConnectorService }, { type: i7.HomedecoratorConnectorAdapterService }, { type: i8.ThreedselectorService }, { type: i9.ToastService }, { type: i1.MessageBusService }, { type: i10.GoogleTagManagerService }, { type: i11.RoomService }, { type: i12.FloorService }, { type: i13.LoadFurnitureService }, { type: i14.UtilsService }]; } });
|
|
328
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV3LXJlbmRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2NsaWVudC9hcHAvcGx1Z2lucy9yZW5kZXIvc2VydmljZS9uZXctcmVuZGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFDLFVBQVUsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUVwRCxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxFQUFDLGVBQWUsRUFBZSxNQUFNLE1BQU0sQ0FBQztBQUVuRCxPQUFPLEVBQUMsS0FBSyxFQUFXLE1BQU0sT0FBTyxDQUFDO0FBQ3RDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSwyQ0FBMkMsQ0FBQztBQUN2RSxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFjM0QsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBRW5ELE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7OztBQUtqRSxNQUFNLE9BQU8sZ0JBQWdCO0lBYTNCLFlBQ1MsY0FBaUMsRUFDaEMsZ0JBQThDLEVBQzlDLHNCQUE2QyxFQUM3QyxjQUE2QixFQUM3QixhQUEyQixFQUMzQixLQUFvQyxFQUNwQyxxQkFBMkQsRUFDM0Qsc0JBQTZDLEVBQzdDLGFBQTJCLEVBQzNCLGtCQUFxQyxFQUNyQyxpQkFBMEMsRUFDMUMsWUFBeUIsRUFDekIsYUFBMkIsRUFDM0IscUJBQTJDLEVBQzNDLGFBQTJCO1FBZDVCLG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQUNoQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQThCO1FBQzlDLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBdUI7UUFDN0MsbUJBQWMsR0FBZCxjQUFjLENBQWU7UUFDN0Isa0JBQWEsR0FBYixhQUFhLENBQWM7UUFDM0IsVUFBSyxH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ekM7UUFDRCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDN0IsQ0FBQzs7OEdBNVNVLGdCQUFnQjtrSEFBaEIsZ0JBQWdCLGNBRmYsTUFBTTs0RkFFUCxnQkFBZ0I7a0JBSDVCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlLCBPbkRlc3Ryb3l9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1NlcnZpY2V9IGZyb20gJ0BtaWdlbml1cy9yZWFsaXR5c2VydmVyLWNsaWVudCc7XHJcbmltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XHJcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge1NjZW5lfSBmcm9tICd0aHJlZS9zcmMvc2NlbmVzL1NjZW5lJztcclxuaW1wb3J0IHtMaWdodCwgT2JqZWN0M0R9IGZyb20gJ3RocmVlJztcclxuaW1wb3J0IHtHTFRGRXhwb3J0ZXJ9IGZyb20gJ3RocmVlL2V4YW1wbGVzL2pzbS9leHBvcnRlcnMvR0xURkV4cG9ydGVyJztcclxuaW1wb3J0IHtSZW5kZXJRdWV1ZUl0ZW19IGZyb20gJy4uL21vZGVsL3JlbmRlci1xdWV1ZS1pdGVtJztcclxuaW1wb3J0IHtIb21lZGVjb3JhdG9yU2V0dGluZ3NTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2UvaG9tZWRlY29yYXRvci1zZXR0aW5ncy5zZXJ2aWNlJztcclxuaW1wb3J0IHtCdWlsZEZ1cm5pdHVyZVNlcnZpY2V9IGZyb20gJy4uLy4uL3RocmVlZHNlbGVjdG9yL3RocmVlZHNlbGVjdG9yL3NlcnZpY2UvYnVpbGQtZnVybml0dXJlLnNlcnZpY2UnO1xyXG5pbXBvcnQge0NhbWVyYVNlcnZpY2V9IGZyb20gJy4uLy4uL2NvcmUzZC9zZXJ2aWNlL2NhbWVyYS5zZXJ2aWNlJztcclxuaW1wb3J0IHtTY2VuZVNlcnZpY2V9IGZyb20gJy4uLy4uL2NvcmUzZC9zZXJ2aWNlL3NjZW5lLnNlcnZpY2UnO1xyXG5pbXBvcnQge0hvbWVkZWNvcmF0b3JDb25uZWN0b3JTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2UvaG9tZWRlY29yYXRvci1jb25uZWN0b3Iuc2VydmljZSc7XHJcbmltcG9ydCB7SG9tZWRlY29yYXRvckNvbm5lY3RvckFkYXB0ZXJTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2UvaG9tZWRlY29yYXRvci1jb25uZWN0b3ItYWRhcHRlci5zZXJ2aWNlJztcclxuaW1wb3J0IHtUaHJlZWRzZWxlY3RvclNlcnZpY2V9IGZyb20gJy4uLy4uL3RocmVlZHNlbGVjdG9yL3RocmVlZHNlbGVjdG9yL3NlcnZpY2UvdGhyZWVkc2VsZWN0b3Iuc2VydmljZSc7XHJcbmltcG9ydCB7VG9hc3RTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2UvdG9hc3Quc2VydmljZSc7XHJcbmltcG9ydCB7TWVzc2FnZUJ1c1NlcnZpY2V9IGZyb20gJy4uLy4uLy4uL2NvcmUvc2VydmljZS9tZXNzYWdlLWJ1cy5zZXJ2aWNlJztcclxuaW1wb3J0IHtHb29nbGVUYWdNYW5hZ2VyU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vc2VydmljZS9nb29nbGUtdGFnLW1hbmFnZXIuc2VydmljZSc7XHJcbmltcG9ydCB7Um9vbVNlcnZpY2V9IGZyb20gJy4uLy4uL3Jvb20tcGxhbm5lci9jb21wb25lbnRzL2Zsb29ycGxhbm5lci9zZXJ2aWNlL3Jvb20uc2VydmljZSc7XHJcbmltcG9ydCB7Rmxvb3JTZXJ2aWNlfSBmcm9tICcuLi8uLi9jb3JlM2Qvc2VydmljZS9mbG9vci5zZXJ2aWNlJztcclxuaW1wb3J0IHtMb2FkRnVybml0dXJlU2VydmljZX0gZnJvbSAnLi4vLi4vdGhyZWVkc2VsZWN0b3IvdGhyZWVkc2VsZWN0b3Ivc2VydmljZS9sb2FkLWZ1cm5pdHVyZS5zZXJ2aWNlJztcclxuaW1wb3J0IHtSZW5kZXJTdGF0dXN9IGZyb20gJy4uL2VudW0vcmVuZGVyLXN0YXR1cyc7XHJcbmltcG9ydCB7VXRpbHNTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2UvdXRpbHMuc2VydmljZSc7XHJcbmltcG9ydCB7TWVzc2FnZVR5cGV9IGZyb20gJy4uLy4uLy4uL2NvcmUvZW51bS9tZXNzYWdlLXR5cGUuZW51bSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTmV3UmVuZGVyU2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcblxyXG4gIHB1YmxpYyByZW5kZXJJbWFnZUNoYW5nZWQ6IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+ID0gbmV3IEJlaGF2aW9yU3ViamVjdCgnJyk7XHJcbiAgcHVibGljIHJlbmRlclVwZGF0ZUltYWdlQ2hhbmdlZDogQmVoYXZpb3JTdWJqZWN0PHsgaW1hZ2U6IHN0cmluZywgcHJvZ3Jlc3M6IG51bWJlciwgZmluaXNoZWQ6IGJvb2xlYW4gfT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KHVuZGVmaW5lZCk7XHJcbiAgcHVibGljIHJlbmRlclJvb21JbWFnZUNoYW5nZWQ6IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+ID0gbmV3IEJlaGF2aW9yU3ViamVjdCgnJyk7XHJcblxyXG4gIHB1YmxpYyBzZXJ2aWNlOiBTZXJ2aWNlO1xyXG4gIHB1YmxpYyBzdGFuZEFsb25lQ2FtZXJhTWF0cml4OiBudW1iZXJbXTtcclxuICBwdWJsaWMgY3VycmVudFF1ZXVlUmVuZGVySXRlbTogUmVuZGVyUXVldWVJdGVtID0gbmV3IFJlbmRlclF1ZXVlSXRlbSgpO1xyXG4gIHB1YmxpYyByZW5kZXJlZFJvb21JbWFnZXM6IHN0cmluZ1tdID0gW107XHJcblxyXG4gIHByaXZhdGUgX3N1YnM6IFN1YnNjcmlwdGlvbltdID0gW107XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIG1lc3NhZ2VTZXJ2aWNlOiBNZXNzYWdlQnVzU2VydmljZSxcclxuICAgIHByaXZhdGUgX3NldHRpbmdzU2VydmljZTogSG9tZWRlY29yYXRvclNldHRpbmdzU2VydmljZSxcclxuICAgIHByaXZhdGUgX2J1aWxkRnVybml0dXJlU2VydmljZTogQnVpbGRGdXJuaXR1cmVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfY2FtZXJhU2VydmljZTogQ2FtZXJhU2VydmljZSxcclxuICAgIHByaXZhdGUgX3NjZW5lU2VydmljZTogU2NlbmVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfaW9uZTogSG9tZWRlY29yYXRvckNvbm5lY3RvclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9pb25lQ29ubmVjdG9yQWRhcHRlcjogSG9tZWRlY29yYXRvckNvbm5lY3RvckFkYXB0ZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfdGhyZWVkU2VsZWN0b3JTZXJ2aWNlOiBUaHJlZWRzZWxlY3RvclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF90b2FzdFNlcnZpY2U6IFRvYXN0U2VydmljZSxcclxuICAgIHByaXZhdGUgX21lc3NhZ2VCdXNTZXJ2aWNlOiBNZXNzYWdlQnVzU2VydmljZSxcclxuICAgIHByaXZhdGUgX2dvb2dsZVRhZ01hbmFnZXI6IEdvb2dsZVRhZ01hbmFnZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfcm9vbVNlcnZpY2U6IFJvb21TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfZmxvb3JTZXJ2aWNlOiBGbG9vclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9sb2FkRnVybml0dXJlU2VydmljZTogTG9hZEZ1cm5pdHVyZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF91dGlsc1NlcnZpY2U6IFV0aWxzU2VydmljZVxyXG4gICkge1xyXG4gICAgdGhpcy5fc3Vicy5wdXNoKFxyXG4gICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnN1YnNjcmliZShNZXNzYWdlVHlwZS5CbGVuZGVyUmVuZGVyRmlsZVJlYWR5LCAoZmlsZSkgPT4gdGhpcy5wcm9jZXNSZW5kZXJGaWxlKGZpbGUpKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5fc3Vicy5mb3JFYWNoKHMgPT4gcy51bnN1YnNjcmliZSgpKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBwcm9jZXNSZW5kZXJGaWxlKGZpbGU6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5yZW5kZXJJbWFnZUNoYW5nZWQubmV4dChmaWxlKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBmb3JjZVJlbmRlckltYWdlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fZ2V0TmV3UmVuZGVySW1hZ2UodHJ1ZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcmVuZGVySW1hZ2UoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9nZXROZXdSZW5kZXJJbWFnZSgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIHJlbmRlclJvb20oc2l6ZTogYW55KTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBjb25zdCBzY2VuZURhdGE6IGFueSA9IGF3YWl0IHRoaXMuX2V4cG9ydFRvR2xiKCk7XHJcbiAgICBjb25zdCBkYXRhID0gdGhpcy5fZ2V0RGF0YUZvclJvb21SZW5kZXIoc2l6ZSk7XHJcbiAgICBkYXRhLmZpbGVzID0ge1xyXG4gICAgICBnbGJEYXRhOiB0aGlzLl9hcnJheUJ1ZmZlclRvQmFzZTY0KHNjZW5lRGF0YSlcclxuICAgIH07XHJcbiAgICBpZiAodGhpcy5fc2V0dGluZ3NTZXJ2aWNlLnNldHRpbmdzLm9wdGlvbnMudXNlUmVuZGVyV2Vic29ja2V0KSB7XHJcbiAgICAgIHRoaXMuX2hhbmRsZVdlYlNvY2tldFJvb21SZW5kZXIoZGF0YSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIF9leHBvcnRUb0dsYigpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgLy8gVGhlIGdyb3VuZCBwbGFuZSBsb29rcyBvZGQgaW4gcmVuZGVycy5cclxuICAgIC8vIFRoZSBodWQtcmluZyBhbmQgaHVkLWNpcmNsZSBhcmUgdGhlIHdhbGt0aHJvdWdoIG1vZGUgbWFya2VyLFxyXG4gICAgLy8gd2hpY2ggaXMgbm90IHN1cHBvc2VkIHRvIGJlIHJlbmRlcmVkLlxyXG4gICAgY29uc3QgZWxlbWVudHNUb1JlbW92ZSA9IFsnZ3JvdW5kLXBsYW5lJywgJ2h1ZC1yaW5nJywgJ2h1ZC1jaXJjbGUnXTtcclxuXHJcbiAgICBsZXQgc2NlbmU6IFNjZW5lO1xyXG4gICAgdHJ5IHtcclxuICAgICAgc2NlbmUgPSB0aGlzLl9zY2VuZVNlcnZpY2Uuc2NlbmUuY2xvbmUoKTtcclxuXHJcbiAgICAgIHNjZW5lLmNoaWxkcmVuLmZvckVhY2goYyA9PiB7XHJcbiAgICAgICAgaWYgKGMgaW5zdGFuY2VvZiBMaWdodCkge1xyXG4gICAgICAgICAgc2NlbmUucmVtb3ZlKGMpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcblxyXG4gICAgICBlbGVtZW50c1RvUmVtb3ZlLmZvckVhY2goZWxlbWVudE5hbWUgPT4ge1xyXG4gICAgICAgIGNvbnN0IHNlbGVjdGVkT2JqZWN0OiBPYmplY3QzRCA9IHNjZW5lLmdldE9iamVjdEJ5TmFtZShlbGVtZW50TmFtZSk7XHJcbiAgICAgICAgc2NlbmUucmVtb3ZlKHNlbGVjdGVkT2JqZWN0KTtcclxuICAgICAgfSk7XHJcbiAgICAgIGNvbnN0IG9wdGlvbnMgPSB7XHJcbiAgICAgICAgdHJzOiBmYWxzZSxcclxuICAgICAgICBvbmx5VmlzaWJsZTogdHJ1ZSxcclxuICAgICAgICB0cnVuY2F0ZURyYXdSYW5nZTogdHJ1ZSxcclxuICAgICAgICBiaW5hcnk6IHRydWUsXHJcbiAgICAgICAgZm9yY2VJbmRpY2VzOiBmYWxzZSxcclxuICAgICAgICBmb3JjZVBvd2VyT2ZUd29UZXh0dXJlczogZmFsc2UsXHJcbiAgICAgICAgLy8gbWF4VGV4dHVyZVNpemU6IDUwMCxcclxuICAgICAgICBlbWJlZEltYWdlczogdHJ1ZSxcclxuICAgICAgfTtcclxuXHJcbiAgICAgIGNvbnN0IGV4cG9ydGVyOiBHTFRGRXhwb3J0ZXIgPSBuZXcgR0xURkV4cG9ydGVyKCk7XHJcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZTogRnVuY3Rpb24sIHJlamVjdDogRnVuY3Rpb24pID0+IHtcclxuICAgICAgICBleHBvcnRlci5wYXJzZShzY2VuZSwgYXN5bmMgKGV4cG9ydGVkU2NlbmU6IEFycmF5QnVmZmVyKSA9PiB7XHJcbiAgICAgICAgICByZXNvbHZlKGV4cG9ydGVkU2NlbmUpO1xyXG4gICAgICAgIH0sICgpID0+IHtcclxuICAgICAgICB9LCBvcHRpb25zKTtcclxuICAgICAgfSk7XHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgIHRocm93IChlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgX2dldE5ld1JlbmRlckltYWdlKGZvcmNlOiBib29sZWFuID0gZmFsc2UpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGlmICh0aGlzLl9zZXR0aW5nc1NlcnZpY2Uuc2V0dGluZ3MuYmxlbmRlclJlbmRlclNlcnZpY2UpIHtcclxuICAgICAgY29uc3QgZGF0YSA9IHRoaXMuX2dldERhdGFGb3JSZW5kZXIoZm9yY2UpO1xyXG4gICAgICB0aGlzLl9oYW5kbGVBamF4QmxlbmRlclJlbmRlcihkYXRhKTtcclxuICAgICAgLy8gdGhpcy5tZXNzYWdlU2VydmljZS5lbWl0KE1lc3NhZ2VUeXBlLlNob3dMb2FkaW5nSW5kaWNhdG9yLCB7dGl0bGU6ICdSZW5kZXJpbmcuLi4nfSk7XHJcbiAgICAgIC8vIGNvbnN0IHJlbmRlcklucHV0ID0ge1xyXG4gICAgICAvLyAgICdoZWlnaHQnOiA4MDAsXHJcbiAgICAgIC8vICAgJ3dpZHRoJzogMTIwMCxcclxuICAgICAgLy8gICAnc2NlbmVBc3NldElkJzogdGhpcy5fc2V0dGluZ3NTZXJ2aWNlLnNldHRpbmdzLnByb2R1Y3RSZW5kZXJTY2VuZUFzc2V0SWRcclxuICAgICAgLy8gfTtcclxuICAgICAgLy8gYXdhaXQgdGhpcy5fdXRpbHNTZXJ2aWNlLnByZXBSb29tRm9yUmVuZGVyKHRydWUsIHJlbmRlcklucHV0KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLl9nZXREYXRhRm9yUmVuZGVyKGZvcmNlKTtcclxuICAgICAgaWYgKHRoaXMuX3NldHRpbmdzU2VydmljZS5zZXR0aW5ncy5vcHRpb25zLnVzZVJlbmRlcldlYnNvY2tldCkge1xyXG4gICAgICAgIHRoaXMuX2hhbmRsZVdlYlNvY2tldFJlbmRlcihkYXRhKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLl9oYW5kbGVBamF4UmVuZGVyKGRhdGEpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIF9oYW5kbGVBamF4QmxlbmRlclJlbmRlcihkYXRhOiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGF4aW9zKHtcclxuICAgICAgaGVhZGVyczoge1xyXG4gICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbidcclxuICAgICAgfSxcclxuICAgICAgbWV0aG9kOiAnUE9TVCcsXHJcbiAgICAgIGRhdGE6IEpTT04uc3RyaW5naWZ5KGRhdGEpLFxyXG4gICAgICB1cmw6IGAke3RoaXMuX3NldHRpbmdzU2VydmljZS5zZXR0aW5ncy5uZXdSZW5kZXJQYXJhbWV0ZXJzLmhvc3R9OiR7dGhpcy5fc2V0dGluZ3NTZXJ2aWNlLnNldHRpbmdzLm5ld1JlbmRlclBhcmFtZXRlcnMucG9ydH0vZ2V0QmxlbmRlclJlbmRlckZyb21EYXRhYCxcclxuICAgICAgcmVzcG9uc2VUeXBlOiAnanNvbidcclxuICAgIH0pO1xyXG4gICAgaWYgKHJlc3VsdC5zdGF0dXMgPT09IDIwMCkge1xyXG4gICAgICAvLyBjb25zdCBpbWFnZSA9IGBkYXRhOiR7cmVzdWx0LmRhdGEuZmlsZVR5cGV9O2Jhc2U2NCwke3Jlc3VsdC5kYXRhLmltYWdlfWA7XHJcbiAgICAgIC8vIHRoaXMuX3Nob3dQcmV2aWV3SW1hZ2UocmVzdWx0LmRhdGEuaW1hZ2UpO1xyXG4gICAgICAvLyBjb25zb2xlLmxvZyhpbWFnZSk7XHJcbiAgICAgIHRoaXMucmVuZGVySW1hZ2VDaGFuZ2VkLm5leHQocmVzdWx0LmRhdGEuaW1hZ2UpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBfaGFuZGxlQWpheFJlbmRlcihkYXRhOiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGF4aW9zKHtcclxuICAgICAgaGVhZGVyczoge1xyXG4gICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbidcclxuICAgICAgfSxcclxuICAgICAgbWV0aG9kOiAnUE9TVCcsXHJcbiAgICAgIGRhdGE6IEpTT04uc3RyaW5naWZ5KGRhdGEpLFxyXG4gICAgICB1cmw6IGAke3RoaXMuX3NldHRpbmdzU2VydmljZS5zZXR0aW5ncy5uZXdSZW5kZXJQYXJhbWV0ZXJzLmhvc3R9OiR7dGhpcy5fc2V0dGluZ3NTZXJ2aWNlLnNldHRpbmdzLm5ld1JlbmRlclBhcmFtZXRlcnMucG9ydH0vZ2V0UmVuZGVyRnJvbURhdGFgLFxyXG4gICAgICByZXNwb25zZVR5cGU6ICdqc29uJ1xyXG4gICAgfSk7XHJcbiAgICBpZiAocmVzdWx0LnN0YXR1cyA9PT0gMjAwKSB7XHJcbiAgICAgIC8vIGNvbnN0IGltYWdlID0gYGRhdGE6JHtyZXN1bHQuZGF0YS5maWxlVHlwZX07YmFzZTY0LCR7cmVzdWx0LmRhdGEuaW1hZ2V9YDtcclxuICAgICAgLy8gdGhpcy5fc2hvd1ByZXZpZXdJbWFnZShyZXN1bHQuZGF0YS5pbWFnZSk7XHJcbiAgICAgIC8vIGNvbnNvbGUubG9nKGltYWdlKTtcclxuICAgICAgdGhpcy5yZW5kZXJJbWFnZUNoYW5nZWQubmV4dChyZXN1bHQuZGF0YS5pbWFnZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9oYW5kbGVXZWJTb2NrZXRSZW5kZXIoZGF0YTogYW55KTogdm9pZCB7XHJcbiAgICBjb25zdCB3ZWJTb2NrZXRDb25uZWN0aW9uOiBzdHJpbmcgPSB0aGlzLl9zZXR0aW5nc1NlcnZpY2Uuc2V0dGluZ3MubmV3UmVuZGVyUGFyYW1ldGVycy53ZWJzb2NrZXQ7XHJcbiAgICBjb25zdCB3ZWJTb2NrZXQgPSBuZXcgV2ViU29ja2V0KHdlYlNvY2tldENvbm5lY3Rpb24pO1xyXG4gICAgd2ViU29ja2V0Lm9ub3BlbiA9ICgpID0+IHtcclxuICAgICAgd2ViU29ja2V0LnNlbmQoSlNPTi5zdHJpbmdpZnkoZGF0YSkpO1xyXG4gICAgfTtcclxuICAgIHdlYlNvY2tldC5vbm1lc3NhZ2UgPSAoZXZlbnQpID0+IHtcclxuICAgICAgY29uc3QgcmVzdWx0ID0gSlNPTi5wYXJzZShldmVudC5kYXRhKTtcclxuICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgIGNvbnN0IGltYWdlID0gYGRhdGE6JHtyZXN1bHQuZmlsZVR5cGV9O2Jhc2U2NCwke3Jlc3VsdC5pbWFnZX1gO1xyXG4gICAgICAgIGNvbnN0IHByb2dyZXNzID0gcmVzdWx0LnJlbmRlcmVkO1xyXG4gICAgICAgIGNvbnN0IGZpbmlzaGVkID0gcmVzdWx0LmZpbmlzaGVkO1xyXG4gICAgICAgIC8vIHRoaXMuX3Nob3dQcmV2aWV3SW1hZ2UoaW1hZ2UpO1xyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKHJlc3VsdC5yZW5kZXJlZCk7XHJcbiAgICAgICAgdGhpcy5yZW5kZXJVcGRhdGVJbWFnZUNoYW5nZWQubmV4dCh7aW1hZ2U6IGltYWdlLCBwcm9ncmVzczogcHJvZ3Jlc3MsIGZpbmlzaGVkOiBmaW5pc2hlZH0pO1xyXG4gICAgICAgIGlmIChyZXN1bHQuZmluaXNoZWQpIHtcclxuICAgICAgICAgIHdlYlNvY2tldC5jbG9zZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2hhbmRsZVdlYlNvY2tldFJvb21SZW5kZXIoZGF0YTogYW55KTogdm9pZCB7XHJcbiAgICBjb25zdCB3ZWJTb2NrZXRDb25uZWN0aW9uOiBzdHJpbmcgPSB0aGlzLl9zZXR0aW5nc1NlcnZpY2Uuc2V0dGluZ3MubmV3UmVuZGVyUGFyYW1ldGVycy53ZWJzb2NrZXQ7XHJcbiAgICBjb25zdCB3ZWJTb2NrZXQgPSBuZXcgV2ViU29ja2V0KHdlYlNvY2tldENvbm5lY3Rpb24pO1xyXG4gICAgd2ViU29ja2V0Lm9ub3BlbiA9ICgpID0+IHtcclxuICAgICAgd2ViU29ja2V0LnNlbmQoSlNPTi5zdHJpbmdpZnkoZGF0YSkpO1xyXG4gICAgfTtcclxuICAgIHdlYlNvY2tldC5vbm1lc3NhZ2UgPSAoZXZlbnQpID0+IHtcclxuICAgICAgY29uc3QgcmVzdWx0ID0gSlNPTi5wYXJzZShldmVudC5kYXRhKTtcclxuICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgIGNvbnN0IGltYWdlID0gYGRhdGE6JHtyZXN1bHQuZmlsZVR5cGV9O2Jhc2U2NCwke3Jlc3VsdC5pbWFnZX1gO1xyXG4gICAgICAgIGNvbnN0IHByb2dyZXNzID0gcmVzdWx0LnJlbmRlcmVkO1xyXG4gICAgICAgIHRoaXMuY3VycmVudFF1ZXVlUmVuZGVySXRlbS5yZW5kZXJQcm9ncmVzcyA9IHByb2dyZXNzO1xyXG4gICAgICAgIHRoaXMucmVuZGVyUm9vbUltYWdlQ2hhbmdlZC5uZXh0KGltYWdlKTtcclxuICAgICAgICBpZiAocmVzdWx0LmZpbmlzaGVkKSB7XHJcbiAgICAgICAgICB0aGlzLnJlbmRlcmVkUm9vbUltYWdlcy5wdXNoKGltYWdlKTtcclxuICAgICAgICAgIHRoaXMuY3VycmVudFF1ZXVlUmVuZGVySXRlbS5yZW5kZXJTdGF0dXMgPSBSZW5kZXJTdGF0dXMuSXNTdWNjZXNzO1xyXG4gICAgICAgICAgd2ViU29ja2V0LmNsb3NlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfc2hvd1ByZXZpZXdJbWFnZShzcmM6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgbGV0IGltZyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwcmV2aWV3X2ltZycpO1xyXG4gICAgaWYgKCFpbWcpIHtcclxuICAgICAgaW1nID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW1nJyk7XHJcbiAgICAgIGltZy5pZCA9ICdwcmV2aWV3X2ltZyc7XHJcbiAgICAgIGRvY3VtZW50LmJvZHkucHJlcGVuZChpbWcpO1xyXG4gICAgICBpbWcuc3R5bGUucG9zaXRpb24gPSAnZml4ZWQnO1xyXG4gICAgICBpbWcuc3R5bGUudG9wID0gJzAnO1xyXG4gICAgICBpbWcuc3R5bGUubGVmdCA9ICcwJztcclxuICAgICAgLy8gaW1nLnN0eWxlLndpZHRoID0gJzgwMHB4JztcclxuICAgICAgaW1nLnN0eWxlLmhlaWdodCA9ICc2MDBweCc7XHJcbiAgICAgIGltZy5zdHlsZS56SW5kZXggPSAnMTAnO1xyXG4gICAgfVxyXG4gICAgKGltZyBhcyBhbnkpLnNyYyA9IHNyYztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2dldERhdGFGb3JSZW5kZXIoZm9yY2U6IGJvb2xlYW4gPSBmYWxzZSk6IGFueSB7XHJcbiAgICB0aGlzLl9jYW1lcmFTZXJ2aWNlLmNhbWVyYS51cGRhdGVNYXRyaXhXb3JsZCh0cnVlKTtcclxuICAgIGNvbnN0IGNhbU1hdHJpeDogbnVtYmVyW10gPSBBcnJheS5mcm9tKHRoaXMuX2NhbWVyYVNlcnZpY2UuY2FtZXJhLm1hdHJpeFdvcmxkLmVsZW1lbnRzKTtcclxuICAgIGNvbnN0IG9wdGlvbnMgPSB7XHJcbiAgICAgIGZvcmNlOiBmb3JjZSxcclxuICAgICAgd2lkdGg6IHRoaXMuX3NldHRpbmdzU2VydmljZS5zZXR0aW5ncy5uZXdSZW5kZXJQYXJhbWV0ZXJzLmltYWdlV2lkdGgsXHJcbiAgICAgIGhlaWdodDogdGhpcy5fc2V0dGluZ3NTZXJ2aWNlLnNldHRpbmdzLm5ld1JlbmRlclBhcmFtZXRlcnMuaW1hZ2VIZWlnaHQsXHJcbiAgICAgIHNjZW5lQXNzZXRJZDogdGhpcy5fc2V0dGluZ3NTZXJ2aWNlLnNldHRpbmdzLnByb2R1Y3RSZW5kZXJTY2VuZUFzc2V0SWQsXHJcbiAgICAgIG1heF9zYW1wbGVzOiB0aGlzLl9zZXR0aW5nc1NlcnZpY2Uuc2V0dGluZ3MubmV3UmVuZGVyUGFyYW1ldGVycy5pdGVyYXRpb25zLFxyXG4gICAgICBjYW1lcmFPcHRpb25zOiB7XHJcbiAgICAgICAgZm92OiB0aGlzLl9jYW1lcmFTZXJ2aWNlLmNhbWVyYS5mb3YsXHJcbiAgICAgICAgbWF0cml4OiBjYW1NYXRyaXhcclxuICAgICAgfSxcclxuICAgICAgZW52aXJvbm1lbnRPcHRpb25zOiB7XHJcbiAgICAgICAgaGRyaTogdGhpcy5fc2V0dGluZ3NTZXJ2aWNlLnNldHRpbmdzLm5ld1JlbmRlclBhcmFtZXRlcnMuaGRyaSxcclxuICAgICAgICBoZHJpSW50ZW5zaXR5OiB0aGlzLl9zZXR0aW5nc1NlcnZpY2Uuc2V0dGluZ3MubmV3UmVuZGVyUGFyYW1ldGVycy5oZHJpSW50ZW5zaXR5XHJcbiAgICAgIH0sXHJcbiAgICAgIG9iamVjdE9wdGlvbnM6IHtcclxuICAgICAgICBwb3NpdGlvbjoge1xyXG4gICAgICAgICAgeDogdGhpcy5fYnVpbGRGdXJuaXR1cmVTZXJ2aWNlLmN1cnJlbnRDdXN0b21GbG9vckdyb3VwLnBvc2l0aW9uLngsXHJcbiAgICAgICAgICB5OiAwLFxyXG4gICAgICAgICAgejogdGhpcy5fYnVpbGRGdXJuaXR1cmVTZXJ2aWNlLmN1cnJlbnRDdXN0b21GbG9vckdyb3VwLnBvc2l0aW9uLnpcclxuICAgICAgICB9LFxyXG4gICAgICAgIHJvdGF0aW9uOiB7XHJcbiAgICAgICAgICB4OiB0aGlzLl9idWlsZEZ1cm5pdHVyZVNlcnZpY2UuY3VycmVudEN1c3RvbUZsb29yR3JvdXAucm90YXRpb24ueCxcclxuICAgICAgICAgIHk6IHRoaXMuX2J1aWxkRnVybml0dXJlU2VydmljZS5jdXJyZW50Q3VzdG9tRmxvb3JHcm91cC5yb3RhdGlvbi55LFxyXG4gICAgICAgICAgejogdGhpcy5fYnVpbGRGdXJuaXR1cmVTZXJ2aWNlLmN1cnJlbnRDdXN0b21GbG9vckdyb3VwLnJvdGF0aW9uLnpcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH07XHJcbiAgICBjb25zdCBzZWxlY3Rpb25zID0gdGhpcy5faW9uZS5zZWxlY3Rpb25zLm1hcChzID0+IE9iamVjdC5hc3NpZ24oe30sIHMpKTtcclxuICAgIHNlbGVjdGlvbnMuZm9yRWFjaChzID0+IHtcclxuICAgICAgcy5pbWFnZURhdGEgPSB1bmRlZmluZWQ7XHJcbiAgICAgIHMuaW1hZ2VEYXRhTGFzdEFuc3dlciA9IHVuZGVmaW5lZDtcclxuICAgIH0pO1xyXG4gICAgY29uc3QgZGF0YSA9IHtcclxuICAgICAgc2VsZWN0aW9uczogc2VsZWN0aW9ucyxcclxuICAgICAgZGVjb3M6IHRoaXMuX2lvbmUuZGVjb05vZGVzLFxyXG4gICAgICBhc3NldFVybDogdGhpcy5fbG9hZEZ1cm5pdHVyZVNlcnZpY2UuYXJ0aWNsZS5hc3NldFVybCxcclxuICAgICAgY2RuVXJsOiB0aGlzLl9sb2FkRnVybml0dXJlU2VydmljZS5hcnRpY2xlLmNvbnRlbnREZWxpdmVyeVVybCxcclxuICAgICAgc2NoZW1hOiB0aGlzLl9sb2FkRnVybml0dXJlU2VydmljZS5hcnRpY2xlLmRpc3RTY2hlbWEgfHwgJ1VQX0RCQScsXHJcbiAgICAgIG9wdGlvbnM6IG9wdGlvbnNcclxuICAgIH07XHJcbiAgICByZXR1cm4gZGF0YTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2dldERhdGFGb3JSb29tUmVuZGVyKHNpemU6IGFueSk6IGFueSB7XHJcbiAgICB0aGlzLl9jYW1lcmFTZXJ2aWNlLmNhbWVyYS51cGRhdGVNYXRyaXhXb3JsZCh0cnVlKTtcclxuICAgIGNvbnN0IG9wdGlvbnMgPSB7XHJcbiAgICAgIHdpZHRoOiBzaXplLndpZHRoLFxyXG4gICAgICBoZWlnaHQ6IHNpemUuaGVpZ2h0LFxyXG4gICAgICBtYXhfc2FtcGxlczogdGhpcy5fc2V0dGluZ3NTZXJ2aWNlLnNldHRpbmdzLm5ld1JlbmRlclBhcmFtZXRlcnMuaXRlcmF0aW9ucyxcclxuICAgICAgY2FtZXJhT3B0aW9uczoge1xyXG4gICAgICAgIGZvdjogdGhpcy5fY2FtZXJhU2VydmljZS5jYW1lcmEuZm92LFxyXG4gICAgICAgIG1hdHJpeDogQXJyYXkuZnJvbSh0aGlzLl9jYW1lcmFTZXJ2aWNlLmNhbWVyYS5tYXRyaXhXb3JsZEludmVyc2UuZWxlbWVudHMpXHJcbiAgICAgIH0sXHJcbiAgICAgIGVudmlyb25tZW50T3B0aW9uczoge1xyXG4gICAgICAgIGhkcmk6IHRoaXMuX3NldHRpbmdzU2VydmljZS5zZXR0aW5ncy5uZXdSZW5kZXJQYXJhbWV0ZXJzLmhkcmksXHJcbiAgICAgICAgaGRyaUludGVuc2l0eTogdGhpcy5fc2V0dGluZ3NTZXJ2aWNlLnNldHRpbmdzLm5ld1JlbmRlclBhcmFtZXRlcnMuaGRyaUludGVuc2l0eVxyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgY29uc3QgZGF0YSA9IHtcclxuICAgICAgYXNzZXRVcmw6IHRoaXMuX3NldHRpbmdzU2VydmljZS5zZXR0aW5ncy5hc3NldFBhdGgsXHJcbiAgICAgIGNkblVybDogdGhpcy5fc2V0dGluZ3NTZXJ2aWNlLnNldHRpbmdzLnRocmVlREFzc2V0UGF0aCxcclxuICAgICAgc2NoZW1hOiB0aGlzLl9zZXR0aW5nc1NlcnZpY2Uuc2V0dGluZ3Muc2NoZW1hLFxyXG4gICAgICBvcHRpb25zOiBvcHRpb25zXHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIGRhdGE7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9hcnJheUJ1ZmZlclRvQmFzZTY0KGJ1ZmZlcjogQXJyYXlCdWZmZXIpOiBzdHJpbmcge1xyXG4gICAgbGV0IGJpbmFyeSA9ICcnO1xyXG4gICAgY29uc3QgYnl0ZXMgPSBuZXcgVWludDhBcnJheShidWZmZXIpO1xyXG4gICAgY29uc3QgbGVuID0gYnl0ZXMuYnl0ZUxlbmd0aDtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcclxuICAgICAgYmluYXJ5ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYnl0ZXNbaV0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHdpbmRvdy5idG9hKGJpbmFyeSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
328
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV3LXJlbmRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2NsaWVudC9hcHAvcGx1Z2lucy9yZW5kZXIvc2VydmljZS9uZXctcmVuZGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFDLFVBQVUsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUNwRCxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxFQUFDLGVBQWUsRUFBZSxNQUFNLE1BQU0sQ0FBQztBQUVuRCxPQUFPLEVBQUMsS0FBSyxFQUFXLE1BQU0sT0FBTyxDQUFDO0FBQ3RDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSwyQ0FBMkMsQ0FBQztBQUN2RSxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFjM0QsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBRW5ELE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7OztBQUtqRSxNQUFNLE9BQU8sZ0JBQWdCO0lBWTNCLFlBQ1MsY0FBaUMsRUFDaEMsZ0JBQThDLEVBQzlDLHNCQUE2QyxFQUM3QyxjQUE2QixFQUM3QixhQUEyQixFQUMzQixLQUFvQyxFQUNwQyxxQkFBMkQsRUFDM0Qsc0JBQTZDLEVBQzdDLGFBQTJCLEVBQzNCLGtCQUFxQyxFQUNyQyxpQkFBMEMsRUFDMUMsWUFBeUIsRUFDekIsYUFBMkIsRUFDM0IscUJBQTJDLEVBQzNDLGFBQTJCO1FBZDVCLG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQUNoQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQThCO1FBQzlDLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBdUI7UUFDN0MsbUJBQWMsR0FBZCxjQUFjLENBQWU7UUFDN0Isa0JBQWEsR0FBYixhQUFhLENBQWM7UUFDM0IsVUFBSyxHQUFMLEtBQUssQ0FBK0I7UUFDcEMsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUFzQztRQUMzRCwyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXVCO1FBQzdDLGtCQUFhLEdBQWIsYUFBYSxDQUFjO1FBQzNCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBbUI7UUFDckMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUF5QjtRQUMxQyxpQkFBWSxHQUFaLFlBQVksQ0FBYTtRQUN6QixrQkFBYSxHQUFiLGFBQWEsQ0FBYztRQUMzQiwwQkFBcUIsR0FBckIscUJBQXFCLENBQXNCO1FBQzNDLGtCQUFhLEdBQWIsYUFBYSxDQUFjO1FBekI5Qix1QkFBa0IsR0FBNEIsSUFBSSxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdEUsNkJBQXdCLEdBQTRFLElBQUksZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ25JLDJCQUFzQixHQUE0QixJQUFJLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUcxRSwyQkFBc0IsR0FBb0IsSUFBSSxlQUFlLEVBQUUsQ0FBQztRQUNoRSx1QkFBa0IsR0FBYSxFQUFFLENBQUM7UUFFakMsVUFBSyxHQUFtQixFQUFFLENBQUM7UUFtQmpDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUNiLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQ3pHLENBQUM7SUFDSixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVNLGdCQUFnQixDQUFDLElBQVM7UUFDL0IsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRU0sZ0JBQWdCO1FBQ3JCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRU0sV0FBVztRQUNoQixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRVksVUFBVSxDQUFDLElBQVM7O1lBQy9CLE1BQU0sU0FBUyxHQUFRLE1BQU0sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ2pELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM5QyxJQUFJLENBQUMsS0FBSyxHQUFHO2dCQUNYLE9BQU8sRUFBRSxJQUFJLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUFDO2FBQzlDLENBQUM7WUFDRixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLGtCQUFrQixFQUFFO2dCQUM3RCxJQUFJLENBQUMsMEJBQTBCLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDdkM7UUFDSCxDQUFDO0tBQUE7SUFFYSxZQUFZOztZQUN4Qix5Q0FBeUM7WUFDekMsK0RBQStEO1lBQy9ELHdDQUF3QztZQUN4QyxNQUFNLGdCQUFnQixHQUFHLENBQUMsY0FBYyxFQUFFLFVBQVUsRUFBRSxZQUFZLENBQUMsQ0FBQztZQUVwRSxJQUFJLEtBQVksQ0FBQztZQUNqQixJQUFJO2dCQUNGLEtBQUssR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFFekMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7b0JBQ3pCLElBQUksQ0FBQyxZQUFZLEtBQUssRUFBRTt3QkFDdEIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztxQkFDakI7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7Z0JBRUgsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxFQUFFO29CQUNyQyxNQUFNLGNBQWMsR0FBYSxLQUFLLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxDQUFDO29CQUNwRSxLQUFLLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO2dCQUMvQixDQUFDLENBQUMsQ0FBQztnQkFDSCxNQUFNLE9BQU8sR0FBRztvQkFDZCxHQUFHLEVBQUUsS0FBSztvQkFDVixXQUFXLEVBQUUsSUFBSTtvQkFDakIsaUJBQWlCLEVBQUUsSUFBSTtvQkFDdkIsTUFBTSxFQUFFLElBQUk7b0JBQ1osWUFBWSxFQUFFLEtBQUs7b0JBQ25CLHVCQUF1QixFQUFFLEtBQUs7b0JBQzlCLHVCQUF1QjtvQkFDdkIsV0FBVyxFQUFFLElBQUk7aUJBQ2xCLENBQUM7Z0JBRUYsTUFBTSxRQUFRLEdBQWlCLElBQUksWUFBWSxFQUFFLENBQUM7Z0JBQ2xELE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFpQixFQUFFLE1BQWdCLEVBQUUsRUFBRTtvQkFDekQsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBTyxhQUEwQixFQUFFLEVBQUU7d0JBQ3pELE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQztvQkFDekIsQ0FBQyxDQUFBLEVBQUUsR0FBRyxFQUFFO29CQUNSLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztnQkFDZCxDQUFDLENBQUMsQ0FBQzthQUNKO1lBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQ1YsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ1g7UUFDSCxDQUFDO0tBQUE7SUFFYSxrQkFBa0IsQ0FBQyxRQUFpQixLQUFLOztZQUNyRCxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsb0JBQW9CLEVBQUU7Z0JBQ3ZELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDM0MsSUFBSSxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNwQyx1RkFBdUY7Z0JBQ3ZGLHdCQUF3QjtnQkFDeEIsbUJBQW1CO2dCQUNuQixtQkFBbUI7Z0JBQ25CLDZFQUE2RTtnQkFDN0UsS0FBSztnQkFDTCxpRUFBaUU7YUFDbEU7aUJBQU07Z0JBQ0wsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUMzQyxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLGtCQUFrQixFQUFFO29CQUM3RCxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLENBQUM7aUJBQ25DO3FCQUFNO29CQUNMLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztpQkFDOUI7YUFDRjtRQUNILENBQUM7S0FBQTtJQUVhLHdCQUF3QixDQUFDLElBQVM7O1lBQzlDLE1BQU0sTUFBTSxHQUFHLE1BQU0sS0FBSyxDQUFDO2dCQUN6QixPQUFPLEVBQUU7b0JBQ1AsY0FBYyxFQUFFLGtCQUFrQjtpQkFDbkM7Z0JBQ0QsTUFBTSxFQUFFLE1BQU07Z0JBQ2QsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDO2dCQUMxQixHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLG1CQUFtQixDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLG1CQUFtQixDQUFDLElBQUksMkJBQTJCO2dCQUNySixZQUFZLEVBQUUsTUFBTTthQUNyQixDQUFDLENBQUM7WUFDSCxJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssR0FBRyxFQUFFO2dCQUN6Qiw0RUFBNEU7Z0JBQzVFLDZDQUE2QztnQkFDN0Msc0JBQXNCO2dCQUN0QixJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDakQ7UUFDSCxDQUFDO0tBQUE7SUFFYSxpQkFBaUIsQ0FBQyxJQUFTOztZQUN2QyxNQUFNLE1BQU0sR0FBRyxNQUFNLEtBQUssQ0FBQztnQkFDekIsT0FBTyxFQUFFO29CQUNQLGNBQWMsRUFBRSxrQkFBa0I7aUJBQ25DO2dCQUNELE1BQU0sRUFBRSxNQUFNO2dCQUNkLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQztnQkFDMUIsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLG9CQUFvQjtnQkFDOUksWUFBWSxFQUFFLE1BQU07YUFDckIsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLEdBQUcsRUFBRTtnQkFDekIsNEVBQTRFO2dCQUM1RSw2Q0FBNkM7Z0JBQzdDLHNCQUFzQjtnQkFDdEIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQ2pEO1FBQ0gsQ0FBQztLQUFBO0lBRU8sc0JBQXNCLENBQUMsSUFBUztRQUN0QyxNQUFNLG1CQUFtQixHQUFXLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsbUJBQW1CLENBQUMsU0FBUyxDQUFDO1FBQ2pHLE1BQU0sU0FBUyxHQUFHLElBQUksU0FBUyxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDckQsU0FBUyxDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQUU7WUFDdEIsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDdkMsQ0FBQyxDQUFDO1FBQ0YsU0FBUyxDQUFDLFNBQVMsR0FBRyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQzlCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3RDLElBQUksTUFBTSxFQUFFO2dCQUNWLE1BQU0sS0FBSyxHQUFHLFFBQVEsTUFBTSxDQUFDLFFBQVEsV0FBVyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQy9ELE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUM7Z0JBQ2pDLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUM7Z0JBQ2pDLGlDQUFpQztnQkFDakMsZ0NBQWdDO2dCQUNoQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLEVBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUMsQ0FBQyxDQUFDO2dCQUMzRixJQUFJLE1BQU0sQ0FBQyxRQUFRLEVBQUU7b0JBQ25CLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztpQkFDbkI7YUFDRjtRQUNILENBQUMsQ0FBQztJQUNKLENBQUM7SUFFTywwQkFBMEIsQ0FBQyxJQUFTO1FBQzFDLE1BQU0sbUJBQW1CLEdBQVcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLENBQUM7UUFDakcsTUFBTSxTQUFTLEdBQUcsSUFBSSxTQUFTLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUNyRCxTQUFTLENBQUMsTUFBTSxHQUFHLEdBQUcsRUFBRTtZQUN0QixTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUN2QyxDQUFDLENBQUM7UUFDRixTQUFTLENBQUMsU0FBUyxHQUFHLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDOUIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDdEMsSUFBSSxNQUFNLEVBQUU7Z0JBQ1YsTUFBTSxLQUFLLEdBQUcsUUFBUSxNQUFNLENBQUMsUUFBUSxXQUFXLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDL0QsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQztnQkFDakMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLGNBQWMsR0FBRyxRQUFRLENBQUM7Z0JBQ3RELElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3hDLElBQUksTUFBTSxDQUFDLFFBQVEsRUFBRTtvQkFDbkIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDcEMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFlBQVksR0FBRyxZQUFZLENBQUMsU0FBUyxDQUFDO29CQUNsRSxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7aUJBQ25CO2FBQ0Y7UUFDSCxDQUFDLENBQUM7SUFDSixDQUFDO0lBRU8saUJBQWlCLENBQUMsR0FBVztRQUNuQyxJQUFJLEdBQUcsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ2pELElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDUixHQUFHLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNwQyxHQUFHLENBQUMsRUFBRSxHQUFHLGFBQWEsQ0FBQztZQUN2QixRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUMzQixHQUFHLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7WUFDN0IsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1lBQ3BCLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQztZQUNyQiw2QkFBNkI7WUFDN0IsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDO1lBQzNCLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztTQUN6QjtRQUNBLEdBQVcsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO0lBQ3pCLENBQUM7SUFFTyxpQkFBaUIsQ0FBQyxRQUFpQixLQUFLO1FBQzlDLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25ELE1BQU0sU0FBUyxHQUFhLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3hGLE1BQU0sT0FBTyxHQUFHO1lBQ2QsS0FBSyxFQUFFLEtBQUs7WUFDWixLQUFLLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVO1lBQ3BFLE1BQU0sRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLG1CQUFtQixDQUFDLFdBQVc7WUFDdEUsWUFBWSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMseUJBQXlCO1lBQ3RFLFdBQVcsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLG1CQUFtQixDQUFDLFVBQVU7WUFDMUUsYUFBYSxFQUFFO2dCQUNiLEdBQUcsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxHQUFHO2dCQUNuQyxNQUFNLEVBQUUsU0FBUzthQUNsQjtZQUNELGtCQUFrQixFQUFFO2dCQUNsQixJQUFJLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJO2dCQUM3RCxhQUFhLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxhQUFhO2FBQ2hGO1lBQ0QsYUFBYSxFQUFFO2dCQUNiLFFBQVEsRUFBRTtvQkFDUixDQUFDLEVBQUUsSUFBSSxDQUFDLHNCQUFzQixDQUFDLHVCQUF1QixDQUFDLFFBQVEsQ0FBQyxDQUFDO29CQUNqRSxDQUFDLEVBQUUsQ0FBQztvQkFDSixDQUFDLEVBQUUsSUFBSSxDQUFDLHNCQUFzQixDQUFDLHVCQUF1QixDQUFDLFFBQVEsQ0FBQyxDQUFDO2lCQUNsRTtnQkFDRCxRQUFRLEVBQUU7b0JBQ1IsQ0FBQyxFQUFFLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyx1QkFBdUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztvQkFDakUsQ0FBQyxFQUFFLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyx1QkFBdUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztvQkFDakUsQ0FBQyxFQUFFLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyx1QkFBdUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztpQkFDbEU7YUFDRjtTQUNGLENBQUM7UUFDRixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3hFLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDckIsQ0FBQyxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7WUFDeEIsQ0FBQyxDQUFDLG1CQUFtQixHQUFHLFNBQVMsQ0FBQztRQUNwQyxDQUFDLENBQUMsQ0FBQztRQUNILE1BQU0sSUFBSSxHQUFHO1lBQ1gsVUFBVSxFQUFFLFVBQVU7WUFDdEIsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUztZQUMzQixRQUFRLEVBQUUsSUFBSSxDQUFDLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxRQUFRO1lBQ3JELE1BQU0sRUFBRSxJQUFJLENBQUMscUJBQXFCLENBQUMsT0FBTyxDQUFDLGtCQUFrQjtZQUM3RCxNQUFNLEVBQUUsSUFBSSxDQUFDLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxVQUFVLElBQUksUUFBUTtZQUNqRSxPQUFPLEVBQUUsT0FBTztTQUNqQixDQUFDO1FBQ0YsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU8scUJBQXFCLENBQUMsSUFBUztRQUNyQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNuRCxNQUFNLE9BQU8sR0FBRztZQUNkLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztZQUNqQixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07WUFDbkIsV0FBVyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsbUJBQW1CLENBQUMsVUFBVTtZQUMxRSxhQUFhLEVBQUU7Z0JBQ2IsR0FBRyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLEdBQUc7Z0JBQ25DLE1BQU0sRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQzthQUMzRTtZQUNELGtCQUFrQixFQUFFO2dCQUNsQixJQUFJLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJO2dCQUM3RCxhQUFhLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxhQUFhO2FBQ2hGO1NBQ0YsQ0FBQztRQUNGLE1BQU0sSUFBSSxHQUFHO1lBQ1gsUUFBUSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsU0FBUztZQUNsRCxNQUFNLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxlQUFlO1lBQ3RELE1BQU0sRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLE1BQU07WUFDN0MsT0FBTyxFQUFFLE9BQU87U0FDakIsQ0FBQztRQUNGLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVPLG9CQUFvQixDQUFDLE1BQW1CO1FBQzlDLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUNoQixNQUFNLEtBQUssR0FBRyxJQUFJLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNyQyxNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDO1FBQzdCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDNUIsTUFBTSxJQUFJLE1BQU0sQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDekM7UUFDRCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDN0IsQ0FBQzs7OEdBM1NVLGdCQUFnQjtrSEFBaEIsZ0JBQWdCLGNBRmYsTUFBTTs0RkFFUCxnQkFBZ0I7a0JBSDVCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlLCBPbkRlc3Ryb3l9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnO1xyXG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgU3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHtTY2VuZX0gZnJvbSAndGhyZWUvc3JjL3NjZW5lcy9TY2VuZSc7XHJcbmltcG9ydCB7TGlnaHQsIE9iamVjdDNEfSBmcm9tICd0aHJlZSc7XHJcbmltcG9ydCB7R0xURkV4cG9ydGVyfSBmcm9tICd0aHJlZS9leGFtcGxlcy9qc20vZXhwb3J0ZXJzL0dMVEZFeHBvcnRlcic7XHJcbmltcG9ydCB7UmVuZGVyUXVldWVJdGVtfSBmcm9tICcuLi9tb2RlbC9yZW5kZXItcXVldWUtaXRlbSc7XHJcbmltcG9ydCB7SG9tZWRlY29yYXRvclNldHRpbmdzU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNlL2hvbWVkZWNvcmF0b3Itc2V0dGluZ3Muc2VydmljZSc7XHJcbmltcG9ydCB7QnVpbGRGdXJuaXR1cmVTZXJ2aWNlfSBmcm9tICcuLi8uLi90aHJlZWRzZWxlY3Rvci90aHJlZWRzZWxlY3Rvci9zZXJ2aWNlL2J1aWxkLWZ1cm5pdHVyZS5zZXJ2aWNlJztcclxuaW1wb3J0IHtDYW1lcmFTZXJ2aWNlfSBmcm9tICcuLi8uLi9jb3JlM2Qvc2VydmljZS9jYW1lcmEuc2VydmljZSc7XHJcbmltcG9ydCB7U2NlbmVTZXJ2aWNlfSBmcm9tICcuLi8uLi9jb3JlM2Qvc2VydmljZS9zY2VuZS5zZXJ2aWNlJztcclxuaW1wb3J0IHtIb21lZGVjb3JhdG9yQ29ubmVjdG9yU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNlL2hvbWVkZWNvcmF0b3ItY29ubmVjdG9yLnNlcnZpY2UnO1xyXG5pbXBvcnQge0hvbWVkZWNvcmF0b3JDb25uZWN0b3JBZGFwdGVyU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNlL2hvbWVkZWNvcmF0b3ItY29ubmVjdG9yLWFkYXB0ZXIuc2VydmljZSc7XHJcbmltcG9ydCB7VGhyZWVkc2VsZWN0b3JTZXJ2aWNlfSBmcm9tICcuLi8uLi90aHJlZWRzZWxlY3Rvci90aHJlZWRzZWxlY3Rvci9zZXJ2aWNlL3RocmVlZHNlbGVjdG9yLnNlcnZpY2UnO1xyXG5pbXBvcnQge1RvYXN0U2VydmljZX0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNlL3RvYXN0LnNlcnZpY2UnO1xyXG5pbXBvcnQge01lc3NhZ2VCdXNTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2UvbWVzc2FnZS1idXMuc2VydmljZSc7XHJcbmltcG9ydCB7R29vZ2xlVGFnTWFuYWdlclNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2UvZ29vZ2xlLXRhZy1tYW5hZ2VyLnNlcnZpY2UnO1xyXG5pbXBvcnQge1Jvb21TZXJ2aWNlfSBmcm9tICcuLi8uLi9yb29tLXBsYW5uZXIvY29tcG9uZW50cy9mbG9vcnBsYW5uZXIvc2VydmljZS9yb29tLnNlcnZpY2UnO1xyXG5pbXBvcnQge0Zsb29yU2VydmljZX0gZnJvbSAnLi4vLi4vY29yZTNkL3NlcnZpY2UvZmxvb3Iuc2VydmljZSc7XHJcbmltcG9ydCB7TG9hZEZ1cm5pdHVyZVNlcnZpY2V9IGZyb20gJy4uLy4uL3RocmVlZHNlbGVjdG9yL3RocmVlZHNlbGVjdG9yL3NlcnZpY2UvbG9hZC1mdXJuaXR1cmUuc2VydmljZSc7XHJcbmltcG9ydCB7UmVuZGVyU3RhdHVzfSBmcm9tICcuLi9lbnVtL3JlbmRlci1zdGF0dXMnO1xyXG5pbXBvcnQge1V0aWxzU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNlL3V0aWxzLnNlcnZpY2UnO1xyXG5pbXBvcnQge01lc3NhZ2VUeXBlfSBmcm9tICcuLi8uLi8uLi9jb3JlL2VudW0vbWVzc2FnZS10eXBlLmVudW0nO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIE5ld1JlbmRlclNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG5cclxuICBwdWJsaWMgcmVuZGVySW1hZ2VDaGFuZ2VkOiBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPiA9IG5ldyBCZWhhdmlvclN1YmplY3QoJycpO1xyXG4gIHB1YmxpYyByZW5kZXJVcGRhdGVJbWFnZUNoYW5nZWQ6IEJlaGF2aW9yU3ViamVjdDx7IGltYWdlOiBzdHJpbmcsIHByb2dyZXNzOiBudW1iZXIsIGZpbmlzaGVkOiBib29sZWFuIH0+ID0gbmV3IEJlaGF2aW9yU3ViamVjdCh1bmRlZmluZWQpO1xyXG4gIHB1YmxpYyByZW5kZXJSb29tSW1hZ2VDaGFuZ2VkOiBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPiA9IG5ldyBCZWhhdmlvclN1YmplY3QoJycpO1xyXG5cclxuICBwdWJsaWMgc3RhbmRBbG9uZUNhbWVyYU1hdHJpeDogbnVtYmVyW107XHJcbiAgcHVibGljIGN1cnJlbnRRdWV1ZVJlbmRlckl0ZW06IFJlbmRlclF1ZXVlSXRlbSA9IG5ldyBSZW5kZXJRdWV1ZUl0ZW0oKTtcclxuICBwdWJsaWMgcmVuZGVyZWRSb29tSW1hZ2VzOiBzdHJpbmdbXSA9IFtdO1xyXG5cclxuICBwcml2YXRlIF9zdWJzOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBtZXNzYWdlU2VydmljZTogTWVzc2FnZUJ1c1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9zZXR0aW5nc1NlcnZpY2U6IEhvbWVkZWNvcmF0b3JTZXR0aW5nc1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9idWlsZEZ1cm5pdHVyZVNlcnZpY2U6IEJ1aWxkRnVybml0dXJlU2VydmljZSxcclxuICAgIHByaXZhdGUgX2NhbWVyYVNlcnZpY2U6IENhbWVyYVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9zY2VuZVNlcnZpY2U6IFNjZW5lU2VydmljZSxcclxuICAgIHByaXZhdGUgX2lvbmU6IEhvbWVkZWNvcmF0b3JDb25uZWN0b3JTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfaW9uZUNvbm5lY3RvckFkYXB0ZXI6IEhvbWVkZWNvcmF0b3JDb25uZWN0b3JBZGFwdGVyU2VydmljZSxcclxuICAgIHByaXZhdGUgX3RocmVlZFNlbGVjdG9yU2VydmljZTogVGhyZWVkc2VsZWN0b3JTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfdG9hc3RTZXJ2aWNlOiBUb2FzdFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9tZXNzYWdlQnVzU2VydmljZTogTWVzc2FnZUJ1c1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9nb29nbGVUYWdNYW5hZ2VyOiBHb29nbGVUYWdNYW5hZ2VyU2VydmljZSxcclxuICAgIHByaXZhdGUgX3Jvb21TZXJ2aWNlOiBSb29tU2VydmljZSxcclxuICAgIHByaXZhdGUgX2Zsb29yU2VydmljZTogRmxvb3JTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfbG9hZEZ1cm5pdHVyZVNlcnZpY2U6IExvYWRGdXJuaXR1cmVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfdXRpbHNTZXJ2aWNlOiBVdGlsc1NlcnZpY2VcclxuICApIHtcclxuICAgIHRoaXMuX3N1YnMucHVzaChcclxuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5zdWJzY3JpYmUoTWVzc2FnZVR5cGUuQmxlbmRlclJlbmRlckZpbGVSZWFkeSwgKGZpbGUpID0+IHRoaXMucHJvY2VzUmVuZGVyRmlsZShmaWxlKSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMuX3N1YnMuZm9yRWFjaChzID0+IHMudW5zdWJzY3JpYmUoKSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcHJvY2VzUmVuZGVyRmlsZShmaWxlOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMucmVuZGVySW1hZ2VDaGFuZ2VkLm5leHQoZmlsZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZm9yY2VSZW5kZXJJbWFnZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX2dldE5ld1JlbmRlckltYWdlKHRydWUpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHJlbmRlckltYWdlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fZ2V0TmV3UmVuZGVySW1hZ2UoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyByZW5kZXJSb29tKHNpemU6IGFueSk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgY29uc3Qgc2NlbmVEYXRhOiBhbnkgPSBhd2FpdCB0aGlzLl9leHBvcnRUb0dsYigpO1xyXG4gICAgY29uc3QgZGF0YSA9IHRoaXMuX2dldERhdGFGb3JSb29tUmVuZGVyKHNpemUpO1xyXG4gICAgZGF0YS5maWxlcyA9IHtcclxuICAgICAgZ2xiRGF0YTogdGhpcy5fYXJyYXlCdWZmZXJUb0Jhc2U2NChzY2VuZURhdGEpXHJcbiAgICB9O1xyXG4gICAgaWYgKHRoaXMuX3NldHRpbmdzU2VydmljZS5zZXR0aW5ncy5vcHRpb25zLnVzZVJlbmRlcldlYnNvY2tldCkge1xyXG4gICAgICB0aGlzLl9oYW5kbGVXZWJTb2NrZXRSb29tUmVuZGVyKGRhdGEpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBfZXhwb3J0VG9HbGIoKTogUHJvbWlzZTxhbnk+IHtcclxuICAgIC8vIFRoZSBncm91bmQgcGxhbmUgbG9va3Mgb2RkIGluIHJlbmRlcnMuXHJcbiAgICAvLyBUaGUgaHVkLXJpbmcgYW5kIGh1ZC1jaXJjbGUgYXJlIHRoZSB3YWxrdGhyb3VnaCBtb2RlIG1hcmtlcixcclxuICAgIC8vIHdoaWNoIGlzIG5vdCBzdXBwb3NlZCB0byBiZSByZW5kZXJlZC5cclxuICAgIGNvbnN0IGVsZW1lbnRzVG9SZW1vdmUgPSBbJ2dyb3VuZC1wbGFuZScsICdodWQtcmluZycsICdodWQtY2lyY2xlJ107XHJcblxyXG4gICAgbGV0IHNjZW5lOiBTY2VuZTtcclxuICAgIHRyeSB7XHJcbiAgICAgIHNjZW5lID0gdGhpcy5fc2NlbmVTZXJ2aWNlLnNjZW5lLmNsb25lKCk7XHJcblxyXG4gICAgICBzY2VuZS5jaGlsZHJlbi5mb3JFYWNoKGMgPT4ge1xyXG4gICAgICAgIGlmIChjIGluc3RhbmNlb2YgTGlnaHQpIHtcclxuICAgICAgICAgIHNjZW5lLnJlbW92ZShjKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgZWxlbWVudHNUb1JlbW92ZS5mb3JFYWNoKGVsZW1lbnROYW1lID0+IHtcclxuICAgICAgICBjb25zdCBzZWxlY3RlZE9iamVjdDogT2JqZWN0M0QgPSBzY2VuZS5nZXRPYmplY3RCeU5hbWUoZWxlbWVudE5hbWUpO1xyXG4gICAgICAgIHNjZW5lLnJlbW92ZShzZWxlY3RlZE9iamVjdCk7XHJcbiAgICAgIH0pO1xyXG4gICAgICBjb25zdCBvcHRpb25zID0ge1xyXG4gICAgICAgIHRyczogZmFsc2UsXHJcbiAgICAgICAgb25seVZpc2libGU6IHRydWUsXHJcbiAgICAgICAgdHJ1bmNhdGVEcmF3UmFuZ2U6IHRydWUsXHJcbiAgICAgICAgYmluYXJ5OiB0cnVlLFxyXG4gICAgICAgIGZvcmNlSW5kaWNlczogZmFsc2UsXHJcbiAgICAgICAgZm9yY2VQb3dlck9mVHdvVGV4dHVyZXM6IGZhbHNlLFxyXG4gICAgICAgIC8vIG1heFRleHR1cmVTaXplOiA1MDAsXHJcbiAgICAgICAgZW1iZWRJbWFnZXM6IHRydWUsXHJcbiAgICAgIH07XHJcblxyXG4gICAgICBjb25zdCBleHBvcnRlcjogR0xURkV4cG9ydGVyID0gbmV3IEdMVEZFeHBvcnRlcigpO1xyXG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmU6IEZ1bmN0aW9uLCByZWplY3Q6IEZ1bmN0aW9uKSA9PiB7XHJcbiAgICAgICAgZXhwb3J0ZXIucGFyc2Uoc2NlbmUsIGFzeW5jIChleHBvcnRlZFNjZW5lOiBBcnJheUJ1ZmZlcikgPT4ge1xyXG4gICAgICAgICAgcmVzb2x2ZShleHBvcnRlZFNjZW5lKTtcclxuICAgICAgICB9LCAoKSA9PiB7XHJcbiAgICAgICAgfSwgb3B0aW9ucyk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICB0aHJvdyAoZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIF9nZXROZXdSZW5kZXJJbWFnZShmb3JjZTogYm9vbGVhbiA9IGZhbHNlKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBpZiAodGhpcy5fc2V0dGluZ3NTZXJ2aWNlLnNldHRpbmdzLmJsZW5kZXJSZW5kZXJTZXJ2aWNlKSB7XHJcbiAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLl9nZXREYXRhRm9yUmVuZGVyKGZvcmNlKTtcclxuICAgICAgdGhpcy5faGFuZGxlQWpheEJsZW5kZXJSZW5kZXIoZGF0YSk7XHJcbiAgICAgIC8vIHRoaXMubWVzc2FnZVNlcnZpY2UuZW1pdChNZXNzYWdlVHlwZS5TaG93TG9hZGluZ0luZGljYXRvciwge3RpdGxlOiAnUmVuZGVyaW5nLi4uJ30pO1xyXG4gICAgICAvLyBjb25zdCByZW5kZXJJbnB1dCA9IHtcclxuICAgICAgLy8gICAnaGVpZ2h0JzogODAwLFxyXG4gICAgICAvLyAgICd3aWR0aCc6IDEyMDAsXHJcbiAgICAgIC8vICAgJ3NjZW5lQXNzZXRJZCc6IHRoaXMuX3NldHRpbmdzU2VydmljZS5zZXR0aW5ncy5wcm9kdWN0UmVuZGVyU2NlbmVBc3NldElkXHJcbiAgICAgIC8vIH07XHJcbiAgICAgIC8vIGF3YWl0IHRoaXMuX3V0aWxzU2VydmljZS5wcmVwUm9vbUZvclJlbmRlcih0cnVlLCByZW5kZXJJbnB1dCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBkYXRhID0gdGhpcy5fZ2V0RGF0YUZvclJlbmRlcihmb3JjZSk7XHJcbiAgICAgIGlmICh0aGlzLl9zZXR0aW5nc1NlcnZpY2Uuc2V0dGluZ3Mub3B0aW9ucy51c2VSZW5kZXJXZWJzb2NrZXQpIHtcclxuICAgICAgICB0aGlzLl9oYW5kbGVXZWJTb2NrZXRSZW5kZXIoZGF0YSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5faGFuZGxlQWpheFJlbmRlcihkYXRhKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBfaGFuZGxlQWpheEJsZW5kZXJSZW5kZXIoZGF0YTogYW55KTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBheGlvcyh7XHJcbiAgICAgIGhlYWRlcnM6IHtcclxuICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nXHJcbiAgICAgIH0sXHJcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxyXG4gICAgICBkYXRhOiBKU09OLnN0cmluZ2lmeShkYXRhKSxcclxuICAgICAgdXJsOiBgJHt0aGlzLl9zZXR0aW5nc1NlcnZpY2Uuc2V0dGluZ3MubmV3UmVuZGVyUGFyYW1ldGVycy5ob3N0fToke3RoaXMuX3NldHRpbmdzU2VydmljZS5zZXR0aW5ncy5uZXdSZW5kZXJQYXJhbWV0ZXJzLnBvcnR9L2dldEJsZW5kZXJSZW5kZXJGcm9tRGF0YWAsXHJcbiAgICAgIHJlc3BvbnNlVHlwZTogJ2pzb24nXHJcbiAgICB9KTtcclxuICAgIGlmIChyZXN1bHQuc3RhdHVzID09PSAyMDApIHtcclxuICAgICAgLy8gY29uc3QgaW1hZ2UgPSBgZGF0YToke3Jlc3VsdC5kYXRhLmZpbGVUeXBlfTtiYXNlNjQsJHtyZXN1bHQuZGF0YS5pbWFnZX1gO1xyXG4gICAgICAvLyB0aGlzLl9zaG93UHJldmlld0ltYWdlKHJlc3VsdC5kYXRhLmltYWdlKTtcclxuICAgICAgLy8gY29uc29sZS5sb2coaW1hZ2UpO1xyXG4gICAgICB0aGlzLnJlbmRlckltYWdlQ2hhbmdlZC5uZXh0KHJlc3VsdC5kYXRhLmltYWdlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgX2hhbmRsZUFqYXhSZW5kZXIoZGF0YTogYW55KTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBheGlvcyh7XHJcbiAgICAgIGhlYWRlcnM6IHtcclxuICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nXHJcbiAgICAgIH0sXHJcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxyXG4gICAgICBkYXRhOiBKU09OLnN0cmluZ2lmeShkYXRhKSxcclxuICAgICAgdXJsOiBgJHt0aGlzLl9zZXR0aW5nc1NlcnZpY2Uuc2V0dGluZ3MubmV3UmVuZGVyUGFyYW1ldGVycy5ob3N0fToke3RoaXMuX3NldHRpbmdzU2VydmljZS5zZXR0aW5ncy5uZXdSZW5kZXJQYXJhbWV0ZXJzLnBvcnR9L2dldFJlbmRlckZyb21EYXRhYCxcclxuICAgICAgcmVzcG9uc2VUeXBlOiAnanNvbidcclxuICAgIH0pO1xyXG4gICAgaWYgKHJlc3VsdC5zdGF0dXMgPT09IDIwMCkge1xyXG4gICAgICAvLyBjb25zdCBpbWFnZSA9IGBkYXRhOiR7cmVzdWx0LmRhdGEuZmlsZVR5cGV9O2Jhc2U2NCwke3Jlc3VsdC5kYXRhLmltYWdlfWA7XHJcbiAgICAgIC8vIHRoaXMuX3Nob3dQcmV2aWV3SW1hZ2UocmVzdWx0LmRhdGEuaW1hZ2UpO1xyXG4gICAgICAvLyBjb25zb2xlLmxvZyhpbWFnZSk7XHJcbiAgICAgIHRoaXMucmVuZGVySW1hZ2VDaGFuZ2VkLm5leHQocmVzdWx0LmRhdGEuaW1hZ2UpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfaGFuZGxlV2ViU29ja2V0UmVuZGVyKGRhdGE6IGFueSk6IHZvaWQge1xyXG4gICAgY29uc3Qgd2ViU29ja2V0Q29ubmVjdGlvbjogc3RyaW5nID0gdGhpcy5fc2V0dGluZ3NTZXJ2aWNlLnNldHRpbmdzLm5ld1JlbmRlclBhcmFtZXRlcnMud2Vic29ja2V0O1xyXG4gICAgY29uc3Qgd2ViU29ja2V0ID0gbmV3IFdlYlNvY2tldCh3ZWJTb2NrZXRDb25uZWN0aW9uKTtcclxuICAgIHdlYlNvY2tldC5vbm9wZW4gPSAoKSA9PiB7XHJcbiAgICAgIHdlYlNvY2tldC5zZW5kKEpTT04uc3RyaW5naWZ5KGRhdGEpKTtcclxuICAgIH07XHJcbiAgICB3ZWJTb2NrZXQub25tZXNzYWdlID0gKGV2ZW50KSA9PiB7XHJcbiAgICAgIGNvbnN0IHJlc3VsdCA9IEpTT04ucGFyc2UoZXZlbnQuZGF0YSk7XHJcbiAgICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgICBjb25zdCBpbWFnZSA9IGBkYXRhOiR7cmVzdWx0LmZpbGVUeXBlfTtiYXNlNjQsJHtyZXN1bHQuaW1hZ2V9YDtcclxuICAgICAgICBjb25zdCBwcm9ncmVzcyA9IHJlc3VsdC5yZW5kZXJlZDtcclxuICAgICAgICBjb25zdCBmaW5pc2hlZCA9IHJlc3VsdC5maW5pc2hlZDtcclxuICAgICAgICAvLyB0aGlzLl9zaG93UHJldmlld0ltYWdlKGltYWdlKTtcclxuICAgICAgICAvLyBjb25zb2xlLmxvZyhyZXN1bHQucmVuZGVyZWQpO1xyXG4gICAgICAgIHRoaXMucmVuZGVyVXBkYXRlSW1hZ2VDaGFuZ2VkLm5leHQoe2ltYWdlOiBpbWFnZSwgcHJvZ3Jlc3M6IHByb2dyZXNzLCBmaW5pc2hlZDogZmluaXNoZWR9KTtcclxuICAgICAgICBpZiAocmVzdWx0LmZpbmlzaGVkKSB7XHJcbiAgICAgICAgICB3ZWJTb2NrZXQuY2xvc2UoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9oYW5kbGVXZWJTb2NrZXRSb29tUmVuZGVyKGRhdGE6IGFueSk6IHZvaWQge1xyXG4gICAgY29uc3Qgd2ViU29ja2V0Q29ubmVjdGlvbjogc3RyaW5nID0gdGhpcy5fc2V0dGluZ3NTZXJ2aWNlLnNldHRpbmdzLm5ld1JlbmRlclBhcmFtZXRlcnMud2Vic29ja2V0O1xyXG4gICAgY29uc3Qgd2ViU29ja2V0ID0gbmV3IFdlYlNvY2tldCh3ZWJTb2NrZXRDb25uZWN0aW9uKTtcclxuICAgIHdlYlNvY2tldC5vbm9wZW4gPSAoKSA9PiB7XHJcbiAgICAgIHdlYlNvY2tldC5zZW5kKEpTT04uc3RyaW5naWZ5KGRhdGEpKTtcclxuICAgIH07XHJcbiAgICB3ZWJTb2NrZXQub25tZXNzYWdlID0gKGV2ZW50KSA9PiB7XHJcbiAgICAgIGNvbnN0IHJlc3VsdCA9IEpTT04ucGFyc2UoZXZlbnQuZGF0YSk7XHJcbiAgICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgICBjb25zdCBpbWFnZSA9IGBkYXRhOiR7cmVzdWx0LmZpbGVUeXBlfTtiYXNlNjQsJHtyZXN1bHQuaW1hZ2V9YDtcclxuICAgICAgICBjb25zdCBwcm9ncmVzcyA9IHJlc3VsdC5yZW5kZXJlZDtcclxuICAgICAgICB0aGlzLmN1cnJlbnRRdWV1ZVJlbmRlckl0ZW0ucmVuZGVyUHJvZ3Jlc3MgPSBwcm9ncmVzcztcclxuICAgICAgICB0aGlzLnJlbmRlclJvb21JbWFnZUNoYW5nZWQubmV4dChpbWFnZSk7XHJcbiAgICAgICAgaWYgKHJlc3VsdC5maW5pc2hlZCkge1xyXG4gICAgICAgICAgdGhpcy5yZW5kZXJlZFJvb21JbWFnZXMucHVzaChpbWFnZSk7XHJcbiAgICAgICAgICB0aGlzLmN1cnJlbnRRdWV1ZVJlbmRlckl0ZW0ucmVuZGVyU3RhdHVzID0gUmVuZGVyU3RhdHVzLklzU3VjY2VzcztcclxuICAgICAgICAgIHdlYlNvY2tldC5jbG9zZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3Nob3dQcmV2aWV3SW1hZ2Uoc3JjOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGxldCBpbWcgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncHJldmlld19pbWcnKTtcclxuICAgIGlmICghaW1nKSB7XHJcbiAgICAgIGltZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2ltZycpO1xyXG4gICAgICBpbWcuaWQgPSAncHJldmlld19pbWcnO1xyXG4gICAgICBkb2N1bWVudC5ib2R5LnByZXBlbmQoaW1nKTtcclxuICAgICAgaW1nLnN0eWxlLnBvc2l0aW9uID0gJ2ZpeGVkJztcclxuICAgICAgaW1nLnN0eWxlLnRvcCA9ICcwJztcclxuICAgICAgaW1nLnN0eWxlLmxlZnQgPSAnMCc7XHJcbiAgICAgIC8vIGltZy5zdHlsZS53aWR0aCA9ICc4MDBweCc7XHJcbiAgICAgIGltZy5zdHlsZS5oZWlnaHQgPSAnNjAwcHgnO1xyXG4gICAgICBpbWcuc3R5bGUuekluZGV4ID0gJzEwJztcclxuICAgIH1cclxuICAgIChpbWcgYXMgYW55KS5zcmMgPSBzcmM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9nZXREYXRhRm9yUmVuZGVyKGZvcmNlOiBib29sZWFuID0gZmFsc2UpOiBhbnkge1xyXG4gICAgdGhpcy5fY2FtZXJhU2VydmljZS5jYW1lcmEudXBkYXRlTWF0cml4V29ybGQodHJ1ZSk7XHJcbiAgICBjb25zdCBjYW1NYXRyaXg6IG51bWJlcltdID0gQXJyYXkuZnJvbSh0aGlzLl9jYW1lcmFTZXJ2aWNlLmNhbWVyYS5tYXRyaXhXb3JsZC5lbGVtZW50cyk7XHJcbiAgICBjb25zdCBvcHRpb25zID0ge1xyXG4gICAgICBmb3JjZTogZm9yY2UsXHJcbiAgICAgIHdpZHRoOiB0aGlzLl9zZXR0aW5nc1NlcnZpY2Uuc2V0dGluZ3MubmV3UmVuZGVyUGFyYW1ldGVycy5pbWFnZVdpZHRoLFxyXG4gICAgICBoZWlnaHQ6IHRoaXMuX3NldHRpbmdzU2VydmljZS5zZXR0aW5ncy5uZXdSZW5kZXJQYXJhbWV0ZXJzLmltYWdlSGVpZ2h0LFxyXG4gICAgICBzY2VuZUFzc2V0SWQ6IHRoaXMuX3NldHRpbmdzU2VydmljZS5zZXR0aW5ncy5wcm9kdWN0UmVuZGVyU2NlbmVBc3NldElkLFxyXG4gICAgICBtYXhfc2FtcGxlczogdGhpcy5fc2V0dGluZ3NTZXJ2aWNlLnNldHRpbmdzLm5ld1JlbmRlclBhcmFtZXRlcnMuaXRlcmF0aW9ucyxcclxuICAgICAgY2FtZXJhT3B0aW9uczoge1xyXG4gICAgICAgIGZvdjogdGhpcy5fY2FtZXJhU2VydmljZS5jYW1lcmEuZm92LFxyXG4gICAgICAgIG1hdHJpeDogY2FtTWF0cml4XHJcbiAgICAgIH0sXHJcbiAgICAgIGVudmlyb25tZW50T3B0aW9uczoge1xyXG4gICAgICAgIGhkcmk6IHRoaXMuX3NldHRpbmdzU2VydmljZS5zZXR0aW5ncy5uZXdSZW5kZXJQYXJhbWV0ZXJzLmhkcmksXHJcbiAgICAgICAgaGRyaUludGVuc2l0eTogdGhpcy5fc2V0dGluZ3NTZXJ2aWNlLnNldHRpbmdzLm5ld1JlbmRlclBhcmFtZXRlcnMuaGRyaUludGVuc2l0eVxyXG4gICAgICB9LFxyXG4gICAgICBvYmplY3RPcHRpb25zOiB7XHJcbiAgICAgICAgcG9zaXRpb246IHtcclxuICAgICAgICAgIHg6IHRoaXMuX2J1aWxkRnVybml0dXJlU2VydmljZS5jdXJyZW50Q3VzdG9tRmxvb3JHcm91cC5wb3NpdGlvbi54LFxyXG4gICAgICAgICAgeTogMCxcclxuICAgICAgICAgIHo6IHRoaXMuX2J1aWxkRnVybml0dXJlU2VydmljZS5jdXJyZW50Q3VzdG9tRmxvb3JHcm91cC5wb3NpdGlvbi56XHJcbiAgICAgICAgfSxcclxuICAgICAgICByb3RhdGlvbjoge1xyXG4gICAgICAgICAgeDogdGhpcy5fYnVpbGRGdXJuaXR1cmVTZXJ2aWNlLmN1cnJlbnRDdXN0b21GbG9vckdyb3VwLnJvdGF0aW9uLngsXHJcbiAgICAgICAgICB5OiB0aGlzLl9idWlsZEZ1cm5pdHVyZVNlcnZpY2UuY3VycmVudEN1c3RvbUZsb29yR3JvdXAucm90YXRpb24ueSxcclxuICAgICAgICAgIHo6IHRoaXMuX2J1aWxkRnVybml0dXJlU2VydmljZS5jdXJyZW50Q3VzdG9tRmxvb3JHcm91cC5yb3RhdGlvbi56XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgY29uc3Qgc2VsZWN0aW9ucyA9IHRoaXMuX2lvbmUuc2VsZWN0aW9ucy5tYXAocyA9PiBPYmplY3QuYXNzaWduKHt9LCBzKSk7XHJcbiAgICBzZWxlY3Rpb25zLmZvckVhY2gocyA9PiB7XHJcbiAgICAgIHMuaW1hZ2VEYXRhID0gdW5kZWZpbmVkO1xyXG4gICAgICBzLmltYWdlRGF0YUxhc3RBbnN3ZXIgPSB1bmRlZmluZWQ7XHJcbiAgICB9KTtcclxuICAgIGNvbnN0IGRhdGEgPSB7XHJcbiAgICAgIHNlbGVjdGlvbnM6IHNlbGVjdGlvbnMsXHJcbiAgICAgIGRlY29zOiB0aGlzLl9pb25lLmRlY29Ob2RlcyxcclxuICAgICAgYXNzZXRVcmw6IHRoaXMuX2xvYWRGdXJuaXR1cmVTZXJ2aWNlLmFydGljbGUuYXNzZXRVcmwsXHJcbiAgICAgIGNkblVybDogdGhpcy5fbG9hZEZ1cm5pdHVyZVNlcnZpY2UuYXJ0aWNsZS5jb250ZW50RGVsaXZlcnlVcmwsXHJcbiAgICAgIHNjaGVtYTogdGhpcy5fbG9hZEZ1cm5pdHVyZVNlcnZpY2UuYXJ0aWNsZS5kaXN0U2NoZW1hIHx8ICdVUF9EQkEnLFxyXG4gICAgICBvcHRpb25zOiBvcHRpb25zXHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIGRhdGE7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9nZXREYXRhRm9yUm9vbVJlbmRlcihzaXplOiBhbnkpOiBhbnkge1xyXG4gICAgdGhpcy5fY2FtZXJhU2VydmljZS5jYW1lcmEudXBkYXRlTWF0cml4V29ybGQodHJ1ZSk7XHJcbiAgICBjb25zdCBvcHRpb25zID0ge1xyXG4gICAgICB3aWR0aDogc2l6ZS53aWR0aCxcclxuICAgICAgaGVpZ2h0OiBzaXplLmhlaWdodCxcclxuICAgICAgbWF4X3NhbXBsZXM6IHRoaXMuX3NldHRpbmdzU2VydmljZS5zZXR0aW5ncy5uZXdSZW5kZXJQYXJhbWV0ZXJzLml0ZXJhdGlvbnMsXHJcbiAgICAgIGNhbWVyYU9wdGlvbnM6IHtcclxuICAgICAgICBmb3Y6IHRoaXMuX2NhbWVyYVNlcnZpY2UuY2FtZXJhLmZvdixcclxuICAgICAgICBtYXRyaXg6IEFycmF5LmZyb20odGhpcy5fY2FtZXJhU2VydmljZS5jYW1lcmEubWF0cml4V29ybGRJbnZlcnNlLmVsZW1lbnRzKVxyXG4gICAgICB9LFxyXG4gICAgICBlbnZpcm9ubWVudE9wdGlvbnM6IHtcclxuICAgICAgICBoZHJpOiB0aGlzLl9zZXR0aW5nc1NlcnZpY2Uuc2V0dGluZ3MubmV3UmVuZGVyUGFyYW1ldGVycy5oZHJpLFxyXG4gICAgICAgIGhkcmlJbnRlbnNpdHk6IHRoaXMuX3NldHRpbmdzU2VydmljZS5zZXR0aW5ncy5uZXdSZW5kZXJQYXJhbWV0ZXJzLmhkcmlJbnRlbnNpdHlcclxuICAgICAgfVxyXG4gICAgfTtcclxuICAgIGNvbnN0IGRhdGEgPSB7XHJcbiAgICAgIGFzc2V0VXJsOiB0aGlzLl9zZXR0aW5nc1NlcnZpY2Uuc2V0dGluZ3MuYXNzZXRQYXRoLFxyXG4gICAgICBjZG5Vcmw6IHRoaXMuX3NldHRpbmdzU2VydmljZS5zZXR0aW5ncy50aHJlZURBc3NldFBhdGgsXHJcbiAgICAgIHNjaGVtYTogdGhpcy5fc2V0dGluZ3NTZXJ2aWNlLnNldHRpbmdzLnNjaGVtYSxcclxuICAgICAgb3B0aW9uczogb3B0aW9uc1xyXG4gICAgfTtcclxuICAgIHJldHVybiBkYXRhO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfYXJyYXlCdWZmZXJUb0Jhc2U2NChidWZmZXI6IEFycmF5QnVmZmVyKTogc3RyaW5nIHtcclxuICAgIGxldCBiaW5hcnkgPSAnJztcclxuICAgIGNvbnN0IGJ5dGVzID0gbmV3IFVpbnQ4QXJyYXkoYnVmZmVyKTtcclxuICAgIGNvbnN0IGxlbiA9IGJ5dGVzLmJ5dGVMZW5ndGg7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XHJcbiAgICAgIGJpbmFyeSArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGJ5dGVzW2ldKTtcclxuICAgIH1cclxuICAgIHJldHVybiB3aW5kb3cuYnRvYShiaW5hcnkpO1xyXG4gIH1cclxufVxyXG4iXX0=
|