@colijnit/homedecorator 255.1.4 → 255.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/app/core/enum/message-type.enum.d.ts +3 -1
- package/app/core/interface/message-with-payload.interface.d.ts +6 -0
- package/app/core/model/homedecorator-settings-options.d.ts +2 -0
- package/app/core/service/homedecorator-app-event.service.d.ts +1 -0
- package/app/core/service/homedecorator-connector-adapter.service.d.ts +2 -0
- package/app/core/service/homedecorator-connector.service.d.ts +5 -4
- package/app/core/service/homedecorator-settings.service.d.ts +2 -1
- package/app/core/service/presets.service.d.ts +3 -1
- package/app/homedecorator.component.d.ts +3 -1
- package/app/homedecorator.module.d.ts +2 -1
- package/app/plugins/core3d/service/floor-pattern.service.d.ts +1 -1
- package/app/plugins/core3d/service/floor-tile-intersection.service.d.ts +2 -1
- package/app/plugins/core3d/service/floor.service.d.ts +3 -1
- package/app/plugins/core3d/service/post-processing.service.d.ts +21 -7
- package/app/plugins/core3d/service/scene.service.d.ts +1 -1
- package/app/plugins/core3d/service/ssr.service.d.ts +0 -1
- package/app/plugins/model-uploader/model-previewer/model-preview.component.d.ts +11 -2
- package/app/plugins/model-uploader/model-previewer/model-preview.component.scss +185 -15
- package/app/plugins/model-uploader/model-uploader.module.d.ts +5 -1
- package/app/plugins/render/render-dialog/render-dialog.component.d.ts +4 -1
- package/app/plugins/render/render-dialog/render-dialog.component.scss +5 -5
- package/app/plugins/room-planner/components/floorplanner/floorplanner.component.d.ts +3 -1
- package/app/plugins/room-planner/components/floorplanner/service/room.service.d.ts +1 -0
- package/app/plugins/room-planner/components/settings/settings.component.d.ts +5 -1
- package/app/plugins/room-planner/components/texture-editor/texture-editor.component.d.ts +4 -1
- package/app/plugins/room-planner/room-planner/room-planner.component.scss +1 -0
- package/app/plugins/threedselector/threedselector/service/build-furniture.service.d.ts +1 -3
- package/app/plugins/toolbar/draw-dialog/draw-dialog.component.d.ts +2 -0
- package/app/plugins/toolbar/draw-dialog/draw-dialog.component.scss +1 -1
- package/app/plugins/toolbar/toolbar/toolbar.component.d.ts +2 -0
- package/assets/icons/dash-button.svg +7 -0
- package/assets/icons/pen-ruler.svg +1 -0
- package/assets/icons/retry-button.svg +7 -0
- package/bundles/colijnit-homedecorator.umd.js +822 -601
- package/bundles/colijnit-homedecorator.umd.js.map +1 -1
- package/esm2015/app/app.version.js +3 -3
- package/esm2015/app/core/enum/message-type.enum.js +3 -1
- package/esm2015/app/core/interface/message-with-payload.interface.js +1 -1
- package/esm2015/app/core/model/homedecorator-settings-options.js +3 -1
- package/esm2015/app/core/service/3dm-api.js +4 -4
- package/esm2015/app/core/service/homedecorator-app-event.service.js +2 -1
- package/esm2015/app/core/service/homedecorator-connector-adapter.service.js +25 -2
- package/esm2015/app/core/service/homedecorator-connector.service.js +25 -22
- package/esm2015/app/core/service/homedecorator-settings.service.js +3 -2
- package/esm2015/app/core/service/presets.service.js +13 -5
- package/esm2015/app/core/utils/material.utils.js +3 -3
- package/esm2015/app/homedecorator.component.js +26 -19
- package/esm2015/app/homedecorator.module.js +8 -4
- package/esm2015/app/plugins/core3d/core3d/components/scenecontrol/scene-control.component.js +5 -5
- package/esm2015/app/plugins/core3d/items/custom-cylinder-floor-item.js +2 -2
- package/esm2015/app/plugins/core3d/items/custom-cylinder-wall-item.js +2 -2
- package/esm2015/app/plugins/core3d/items/custom-shape-floor-item.js +2 -2
- package/esm2015/app/plugins/core3d/items/custom-shape-wall-item.js +2 -2
- package/esm2015/app/plugins/core3d/items/factory.js +3 -2
- package/esm2015/app/plugins/core3d/service/ar.service.js +2 -1
- package/esm2015/app/plugins/core3d/service/floor-pattern.service.js +24 -18
- package/esm2015/app/plugins/core3d/service/floor-tile-intersection.service.js +13 -8
- package/esm2015/app/plugins/core3d/service/floor.service.js +9 -4
- package/esm2015/app/plugins/core3d/service/light-presets.service.js +10 -8
- package/esm2015/app/plugins/core3d/service/lights.service.js +8 -1
- package/esm2015/app/plugins/core3d/service/outline.service.js +4 -6
- package/esm2015/app/plugins/core3d/service/post-processing.service.js +148 -51
- package/esm2015/app/plugins/core3d/service/scene-event.service.js +14 -7
- package/esm2015/app/plugins/core3d/service/scene.service.js +84 -74
- package/esm2015/app/plugins/core3d/service/ssr.service.js +2 -53
- package/esm2015/app/plugins/lite-selector/lite-selector/component/answers-slideout/answers-slideout.component.js +10 -5
- package/esm2015/app/plugins/lite-selector/lite-selector/lite-selector.component.js +2 -2
- package/esm2015/app/plugins/model-uploader/model-previewer/model-preview.component.js +281 -166
- package/esm2015/app/plugins/model-uploader/model-uploader.module.js +22 -3
- package/esm2015/app/plugins/render/render-controls/render-controls.component.js +3 -2
- package/esm2015/app/plugins/render/render-dialog/render-dialog.component.js +19 -14
- package/esm2015/app/plugins/render/service/new-render.service.js +4 -2
- package/esm2015/app/plugins/room-planner/components/custom-cylinder-creator/custom-cylinder-creator.component.js +4 -2
- package/esm2015/app/plugins/room-planner/components/custome-shape-creator/custom-shape-creator.component.js +2 -2
- package/esm2015/app/plugins/room-planner/components/floorplanner/floorplanner.component.js +29 -15
- package/esm2015/app/plugins/room-planner/components/floorplanner/service/room.service.js +5 -2
- package/esm2015/app/plugins/room-planner/components/settings/settings.component.js +12 -5
- package/esm2015/app/plugins/room-planner/components/texture-editor/texture-editor.component.js +31 -15
- package/esm2015/app/plugins/room-planner/room-planner/room-planner.component.js +691 -683
- package/esm2015/app/plugins/threedselector/threedselector/service/build-furniture.service.js +43 -41
- package/esm2015/app/plugins/threedselector/threedselector/threedselector.component.js +1 -1
- package/esm2015/app/plugins/toolbar/draw-dialog/draw-dialog.component.js +26 -20
- package/esm2015/app/plugins/toolbar/save-dialog/save-dialog.component.js +2 -2
- package/esm2015/app/plugins/toolbar/toolbar/toolbar.component.js +15 -8
- package/esm2015/app/shared/loading-overlay/loading-overlay.component.js +4 -2
- package/esm2015/app/shared/model-dialog/model-dialog-furniture-list.component.js +3 -3
- package/fesm2015/colijnit-homedecorator.js +1656 -1322
- package/fesm2015/colijnit-homedecorator.js.map +1 -1
- package/package.json +1 -1
|
@@ -21,6 +21,7 @@ import { SaveDialogComponent } from '../save-dialog/save-dialog.component';
|
|
|
21
21
|
import { DrawDialogComponent } from '../draw-dialog/draw-dialog.component';
|
|
22
22
|
import { PdfCropDialogComponent } from '../pdf-crop-dialog/pdf-crop-dialog.component';
|
|
23
23
|
import { ModelPreviewComponent } from '../../model-uploader/model-previewer/model-preview.component';
|
|
24
|
+
import { ErrorDialogComponent } from '../../../shared/error-dialog/error-dialog.component';
|
|
24
25
|
import * as i0 from "@angular/core";
|
|
25
26
|
import * as i1 from "../../../core/service/app-state.service";
|
|
26
27
|
import * as i2 from "../../../core/service/presets.service";
|
|
@@ -87,7 +88,7 @@ export class ToolbarComponent {
|
|
|
87
88
|
this._subs = [];
|
|
88
89
|
this._subs.push(this.messageService.subscribe(MessageType.SetLeftSidebar, (templateRef) => this._setLeftSidebar(templateRef)), this.messageService.subscribe(MessageType.HideLeftSidebar, () => this._closeLeftSidebar({ keepTemplateRef: true })), this.messageService.subscribe(MessageType.RegisterToolbarIcon, (icon) => this._registerToolbarIcon(icon)), this.messageService.subscribe(MessageType.ViewModeChanged, () => this._closeLeftSidebar()), this.messageService.subscribe(MessageType.NewRoom, () => this.newRoom()), this.messageService.subscribe(MessageType.ShowOpenDialog, () => this.openOpenDialog()), this.messageService.subscribe(MessageType.FinishedIOneFurnitureBuild, () => this._hideToast()), this.messageService.subscribe(MessageType.UndefinedErrorOccured, () => this._hideToast()), this.messageService.subscribe(MessageType.RenderServiceTryToConnect, () => this._hideToast()), this.messageService.subscribe(MessageType.RenderServiceConnected, () => this._hideToast()), this._toastService.showToastSub.subscribe((toast) => this._showToast(toast)), this._screenSizeService.screenSizeChanged.subscribe(info => this.phoneSizeScreen = info.isPhoneSize),
|
|
89
90
|
// this.messageService.subscribe(MessageType.StartWithDiagram, () => this.openUploadDiagram()),
|
|
90
|
-
this.messageService.subscribe(MessageType.StartDrawingDiagram, (file) => this.openDrawDiagram(file)), this.messageService.subscribe(MessageType.StartCroppingPDF, (file) => this.openCroppingDiagram(file)), this.messageService.subscribe(MessageType.UserModelUploaded, (file) => this.openModelPreview(file)));
|
|
91
|
+
this.messageService.subscribe(MessageType.StartDrawingDiagram, (file) => this.openDrawDiagram(file)), this.messageService.subscribe(MessageType.StartCroppingPDF, (file) => this.openCroppingDiagram(file)), this.messageService.subscribe(MessageType.UserModelUploaded, (file) => this.openModelPreview(file)), this.messageService.subscribe(MessageType.RenderError, (data) => this.showRenderError(data)));
|
|
91
92
|
}
|
|
92
93
|
handleKeyDown(event) {
|
|
93
94
|
if (event.ctrlKey && event.shiftKey && event.key === 'S') {
|
|
@@ -285,6 +286,12 @@ export class ToolbarComponent {
|
|
|
285
286
|
data: { file: file }
|
|
286
287
|
});
|
|
287
288
|
}
|
|
289
|
+
showRenderError(data) {
|
|
290
|
+
this._dialog.open(ErrorDialogComponent, {
|
|
291
|
+
data: data
|
|
292
|
+
});
|
|
293
|
+
this.messageService.emit(MessageType.HideLoadingIndicator);
|
|
294
|
+
}
|
|
288
295
|
testRender() {
|
|
289
296
|
this._newRenderService.forceRenderImage();
|
|
290
297
|
}
|
|
@@ -377,9 +384,9 @@ ToolbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", versi
|
|
|
377
384
|
</ng-container>
|
|
378
385
|
<div class="hd-toolbar-spacer"></div>
|
|
379
386
|
|
|
380
|
-
<!-- <ng-container>-->
|
|
381
|
-
<!-- <rp-pdf-export></rp-pdf-export>-->
|
|
382
|
-
<!-- </ng-container>-->
|
|
387
|
+
<!-- <ng-container>-->
|
|
388
|
+
<!-- <rp-pdf-export></rp-pdf-export>-->
|
|
389
|
+
<!-- </ng-container>-->
|
|
383
390
|
|
|
384
391
|
<mat-nav-list class="toolbar__nav" role="list">
|
|
385
392
|
<div matTooltip="{{'NEW_ROOM' | localize}}">
|
|
@@ -533,9 +540,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
533
540
|
</ng-container>
|
|
534
541
|
<div class="hd-toolbar-spacer"></div>
|
|
535
542
|
|
|
536
|
-
<!-- <ng-container>-->
|
|
537
|
-
<!-- <rp-pdf-export></rp-pdf-export>-->
|
|
538
|
-
<!-- </ng-container>-->
|
|
543
|
+
<!-- <ng-container>-->
|
|
544
|
+
<!-- <rp-pdf-export></rp-pdf-export>-->
|
|
545
|
+
<!-- </ng-container>-->
|
|
539
546
|
|
|
540
547
|
<mat-nav-list class="toolbar__nav" role="list">
|
|
541
548
|
<div matTooltip="{{'NEW_ROOM' | localize}}">
|
|
@@ -657,4 +664,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
657
664
|
type: HostListener,
|
|
658
665
|
args: ['document:keydown', ['$event']]
|
|
659
666
|
}] } });
|
|
660
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbGJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvY2xpZW50L2FwcC9wbHVnaW5zL3Rvb2xiYXIvdG9vbGJhci90b29sYmFyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxPQUFPLEVBQWdCLFNBQVMsRUFBRSxZQUFZLEVBQWtDLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNoSCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFHbkQsT0FBTyxFQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUUvRSxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sc0NBQXNDLENBQUM7QUFDakUsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBQ2pFLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN6RCxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFrQnRELE9BQU8sRUFBQywyQkFBMkIsRUFBQyxNQUFNLHdEQUF3RCxDQUFDO0FBRW5HLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLDJEQUEyRCxDQUFDO0FBQ2xHLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBQ3pFLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBRXpFLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBQ3pFLE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLDhDQUE4QyxDQUFDO0FBRXBGLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLDhEQUE4RCxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFtS25H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QUFDLENBQUM7NEJBQ25ELEtBQUssQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLEVBQUMsU0FBUyxFQUFFLG1CQUFtQixFQUFDLENBQUMsQ0FBQzs0QkFDdEQsVUFBVSxDQUFDLGVBQWUsRUFBRSxPQUFPLENBQUMsbUJBQW1CLENBQUMsQ0FBQzt5QkFDMUQsQ0FBQztxQkFDSCxDQUFBO3FFQUNnRDtpQkFDbEQ7Z3BCQXlCMkMsV0FBVztzQkFBcEQsU0FBUzt1QkFBQyxhQUFhLEVBQUUsRUFBQyxNQUFNLEVBQUUsSUFBSSxFQUFDO2dCQUdqQyxhQUFhO3NCQURuQixZQUFZO3VCQUFDLGtCQUFrQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEhvc3RMaXN0ZW5lciwgT25EZXN0cm95LCBPbkluaXQsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1RlbXBsYXRlUG9ydGFsfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcclxuaW1wb3J0IHtNYXREaWFsb2d9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7TWF0RHJhd2VyfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zaWRlbmF2JztcclxuaW1wb3J0IHthbmltYXRlLCBzdGF0ZSwgc3R5bGUsIHRyYW5zaXRpb24sIHRyaWdnZXJ9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xyXG5pbXBvcnQge1N1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7ZW52aXJvbm1lbnR9IGZyb20gJy4uLy4uLy4uLy4uL2Vudmlyb25tZW50cy9lbnZpcm9ubWVudCc7XHJcbmltcG9ydCB7TWVzc2FnZVR5cGV9IGZyb20gJy4uLy4uLy4uL2NvcmUvZW51bS9tZXNzYWdlLXR5cGUuZW51bSc7XHJcbmltcG9ydCB7VG9hc3RUeXBlfSBmcm9tICcuLi8uLi8uLi9jb3JlL21vZGVsL3RvYXN0LXR5cGUnO1xyXG5pbXBvcnQge0ljb25FbnVtfSBmcm9tICcuLi8uLi8uLi9jb3JlL2VudW0vaWNvbi5lbnVtJztcclxuaW1wb3J0IHtUb2FzdH0gZnJvbSAnLi4vLi4vLi4vY29yZS9tb2RlbC90b2FzdCc7XHJcbmltcG9ydCB7QXBwU3RhdGVTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2UvYXBwLXN0YXRlLnNlcnZpY2UnO1xyXG5pbXBvcnQge1ByZXNldHNTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2UvcHJlc2V0cy5zZXJ2aWNlJztcclxuaW1wb3J0IHtNZXNzYWdlQnVzU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNlL21lc3NhZ2UtYnVzLnNlcnZpY2UnO1xyXG5pbXBvcnQge0hvbWVkZWNvcmF0b3JTZXR0aW5nc1NlcnZpY2V9IGZyb20gJy4uLy4uLy4uL2NvcmUvc2VydmljZS9ob21lZGVjb3JhdG9yLXNldHRpbmdzLnNlcnZpY2UnO1xyXG5pbXBvcnQge0xvY2FsU3RvcmFnZVNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2UvbG9jYWwtc3RvcmFnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHtTY3JlZW5TaXplQW5hbHlzaXNTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvc2NyZWVuLXNpemUtYW5hbHlzaXMvc2NyZWVuLXNpemUtYW5hbHlzaXMuc2VydmljZSc7XHJcbmltcG9ydCB7VG9hc3RTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2UvdG9hc3Quc2VydmljZSc7XHJcbmltcG9ydCB7SG9tZWRlY29yYXRvckFwcFNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL2NvcmUvc2VydmljZS9ob21lZGVjb3JhdG9yLWFwcC5zZXJ2aWNlJztcclxuaW1wb3J0IHtQZXJtYW5lbnRTdG9yZVNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL2NvcmUvc2VydmljZS9wZXJtYW5lbnQtc3RvcmUuc2VydmljZSc7XHJcbmltcG9ydCB7VXRpbHNTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2UvdXRpbHMuc2VydmljZSc7XHJcbmltcG9ydCB7VGhyZWVkc2VsZWN0b3JTZXJ2aWNlfSBmcm9tICcuLi8uLi90aHJlZWRzZWxlY3Rvci90aHJlZWRzZWxlY3Rvci9zZXJ2aWNlL3RocmVlZHNlbGVjdG9yLnNlcnZpY2UnO1xyXG5pbXBvcnQge0l0ZW1TZXJ2aWNlfSBmcm9tICcuLi8uLi9jb3JlM2Qvc2VydmljZS9pdGVtLnNlcnZpY2UnO1xyXG5pbXBvcnQge0Zsb29ycGxhblNlcnZpY2V9IGZyb20gJy4uLy4uL3Jvb20tcGxhbm5lci9jb21wb25lbnRzL2Zsb29ycGxhbm5lci9zZXJ2aWNlL2Zsb29ycGxhbi5zZXJ2aWNlJztcclxuaW1wb3J0IHtGbG9vclNlcnZpY2V9IGZyb20gJy4uLy4uL2NvcmUzZC9zZXJ2aWNlL2Zsb29yLnNlcnZpY2UnO1xyXG5pbXBvcnQge0FuaW1hdGlvblNlcnZpY2V9IGZyb20gJy4uLy4uL3RocmVlZHNlbGVjdG9yL3RocmVlZHNlbGVjdG9yL3NlcnZpY2UvYW5pbWF0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQge0RldmVsb3BtZW50U2VydmljZX0gZnJvbSAnLi4vLi4vLi4vZGV2ZWxvcG1lbnQvc2VydmljZS9kZXZlbG9wbWVudC5zZXJ2aWNlJztcclxuaW1wb3J0IHtMYW5kaW5nU2NyZWVuTW9kYWxDb21wb25lbnR9IGZyb20gJy4uL2xhbmRpbmctc2NyZWVuLW1vZGFsL2xhbmRpbmctc2NyZWVuLW1vZGFsLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7SXRlbX0gZnJvbSAnLi4vLi4vY29yZTNkL2l0ZW1zL2l0ZW0nO1xyXG5pbXBvcnQge1JlZ2lzdGVyRGlhbG9nQ29tcG9uZW50fSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvcmVnaXN0ZXItZGlhbG9nL3JlZ2lzdGVyLWRpYWxvZy5jb21wb25lbnQnO1xyXG5pbXBvcnQge09wZW5EaWFsb2dDb21wb25lbnR9IGZyb20gJy4uL29wZW4tZGlhbG9nL29wZW4tZGlhbG9nLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7U2F2ZURpYWxvZ0NvbXBvbmVudH0gZnJvbSAnLi4vc2F2ZS1kaWFsb2cvc2F2ZS1kaWFsb2cuY29tcG9uZW50JztcclxuaW1wb3J0IHtUb29sYmFySWNvbn0gZnJvbSAnLi4vLi4vLi4vY29yZS9pbnRlcmZhY2UvdG9vbGJhci1pY29uLmludGVyZmFjZSc7XHJcbmltcG9ydCB7RHJhd0RpYWxvZ0NvbXBvbmVudH0gZnJvbSAnLi4vZHJhdy1kaWFsb2cvZHJhdy1kaWFsb2cuY29tcG9uZW50JztcclxuaW1wb3J0IHtQZGZDcm9wRGlhbG9nQ29tcG9uZW50fSBmcm9tICcuLi9wZGYtY3JvcC1kaWFsb2cvcGRmLWNyb3AtZGlhbG9nLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7TmV3UmVuZGVyU2VydmljZX0gZnJvbSAnLi4vLi4vcmVuZGVyL3NlcnZpY2UvbmV3LXJlbmRlci5zZXJ2aWNlJztcclxuaW1wb3J0IHtNb2RlbFByZXZpZXdDb21wb25lbnR9IGZyb20gJy4uLy4uL21vZGVsLXVwbG9hZGVyL21vZGVsLXByZXZpZXdlci9tb2RlbC1wcmV2aWV3LmNvbXBvbmVudCc7XHJcblxyXG5pbnRlcmZhY2UgQ2xvc2luZ09wdGlvbnMge1xyXG4gIGtlZXBUZW1wbGF0ZVJlZj86IGJvb2xlYW47XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAncnAtdG9vbGJhcicsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDwhLS1cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXllciBsYXllciYjNDU7JiM0NTt0b29sYmFyXCI+XHJcbiAgICAtLT5cclxuICAgIDxtYXQtdG9vbGJhciBjbGFzcz1cInRvb2xiYXJcIiBjb2xvcj1cInByaW1hcnlcIj5cclxuICAgICAgPGJ1dHRvbiAqbmdJZj1cInBob25lU2l6ZVNjcmVlblwiIG1hdC1pY29uLWJ1dHRvbiBjbGFzcz1cIm1lbnUtaWNvblwiIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51XCI+XHJcbiAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiaG9tZWRlY29yYXRvci1tYXRlcmlhbC1pY29uc1wiPm1lbnU8L21hdC1pY29uPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPG1hdC1tZW51ICNtZW51PlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGljb24gb2YgdG9vbGJhckljb25zVG9wXCI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyIFtjZGtQb3J0YWxPdXRsZXRdPVwiaWNvbi5wb3J0YWxcIj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L21hdC1tZW51PlxyXG5cclxuICAgICAgPGltZyBzcmM9XCJhc3NldHMvaW1hZ2VzL2xvZ28uc3ZnXCIgY2xhc3M9XCJ0b29sYmFyLWxvZ29cIi8+XHJcbiAgICAgIDxpbWcgKm5nSWY9XCJzZXR0aW5nc1NlcnZpY2Uuc2V0dGluZ3Muc2Vjb25kYXJ5TG9nb1wiIFtzcmNdPVwic2V0dGluZ3NTZXJ2aWNlLnNldHRpbmdzLnNlY29uZGFyeUxvZ29cIlxyXG4gICAgICAgICAgIGNsYXNzPVwidG9vbGJhci1sb2dvIHNlY29uZGFyeS1sb2dvXCIvPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2V0dGluZ3NTZXJ2aWNlLnNldHRpbmdzLm9wdGlvbnMuZGV2ZWxvcG1lbnRcIj5cclxuICAgICAgICA8bWF0LWNhcmQgY2xhc3M9XCJ3aXAtY2FyZFwiPlxyXG4gICAgICAgICAgPG1hdC1jYXJkLWNvbnRlbnQ+XHJcbiAgICAgICAgICAgIHt7ICdXT1JLX0lOX1BST0dSRVNTJyB8IGxvY2FsaXplIH19XHJcbiAgICAgICAgICA8L21hdC1jYXJkLWNvbnRlbnQ+XHJcbiAgICAgICAgPC9tYXQtY2FyZD5cclxuICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwibG9hZFJvb20oKVwiPlxyXG4gICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiaG9tZWRlY29yYXRvci1tYXRlcmlhbC1pY29uc1wiPndlZWtlbmQ8L21hdC1pY29uPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJsb2FkUmVzaXphYmxlUm9vbSgpXCI+XHJcbiAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJob21lZGVjb3JhdG9yLW1hdGVyaWFsLWljb25zXCI+Y2FtZXJhLWNvbnRyb2w8L21hdC1pY29uPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNldHRpbmdzU2VydmljZS5zZXR0aW5ncy5vcHRpb25zLnNob3dSb29tRG93bmxvYWRCdXR0b25cIj5cclxuICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwiZG93bmxvYWRSb29tKClcIj5cclxuICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImhvbWVkZWNvcmF0b3ItbWF0ZXJpYWwtaWNvbnNcIiBtYXRUb29sdGlwPVwie3snRE9XTkxPQURfUk9PTV9BU19HTEInIHwgbG9jYWxpemV9fVwiPmNsb3VkX2Rvd25sb2FkPC9tYXQtaWNvbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJoZC10b29sYmFyLXNwYWNlclwiPjwvZGl2PlxyXG5cclxuPCEtLSAgICAgIDxuZy1jb250YWluZXI+LS0+XHJcbjwhLS0gICAgICAgIDxycC1wZGYtZXhwb3J0PjwvcnAtcGRmLWV4cG9ydD4tLT5cclxuPCEtLSAgICAgIDwvbmctY29udGFpbmVyPi0tPlxyXG5cclxuICAgICAgPG1hdC1uYXYtbGlzdCBjbGFzcz1cInRvb2xiYXJfX25hdlwiIHJvbGU9XCJsaXN0XCI+XHJcbiAgICAgICAgPGRpdiBtYXRUb29sdGlwPVwie3snTkVXX1JPT00nIHwgbG9jYWxpemV9fVwiPlxyXG4gICAgICAgICAgPG1hdC1saXN0LWl0ZW0gcm9sZT1cImxpc3RpdGVtXCIgKGNsaWNrKT1cIm5ld1Jvb20oKVwiPnt7ICdORVcnIHwgbG9jYWxpemUgfX08L21hdC1saXN0LWl0ZW0+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBtYXRUb29sdGlwPVwie3snT1BFTl9FWElTVElOR19QTEFOJyB8IGxvY2FsaXplfX1cIj5cclxuICAgICAgICAgIDxtYXQtbGlzdC1pdGVtIHJvbGU9XCJsaXN0aXRlbVwiIChjbGljayk9XCJvcGVuT3BlbkRpYWxvZygpXCI+e3sgJ09QRU4nIHwgbG9jYWxpemUgfX08L21hdC1saXN0LWl0ZW0+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cInN0b3JhZ2VTZXJ2aWNlLmVycm9yV2hlblNhdmluZ1wiIGNsYXNzPVwic3RvcmFnZS1lcnJvclwiXHJcbiAgICAgICAgICAgICBbY2xhc3MuYmxpbmtlcl09XCJzaG93QmxpbmtFcnJvclwiIG1hdFRvb2x0aXA9XCJ7eydFUlJPUl9TQVZJTkdfTE9DQUxTVE9SQUdFJyB8IGxvY2FsaXplfX1cIlxyXG4gICAgICAgICAgICAgKG1vdXNlbW92ZSk9XCJzaG93QmxpbmtFcnJvciA9IGZhbHNlXCJcclxuICAgICAgICA+PHNwYW4+ITwvc3Bhbj48L2Rpdj5cclxuICAgICAgICA8ZGl2IFtjbGFzcy5ibGlua2VyXT1cIiFzaG93U2F2ZU5vdGlmaWNhdGlvblwiIG1hdFRvb2x0aXA9XCJ7eydTQVZFX1RIRV9QTEFOJyB8IGxvY2FsaXplfX1cIj5cclxuICAgICAgICAgIDxtYXQtbGlzdC1pdGVtXHJcbiAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJ7eydTQVZFX1RPT0xUSVAnIHwgbG9jYWxpemV9fVwiXHJcbiAgICAgICAgICAgIFttYXRUb29sdGlwRGlzYWJsZWRdPVwidG9vbHRpcERpc2FibGVkXCJcclxuICAgICAgICAgICAgbWF0VG9vbHRpcENsYXNzPVwidG9vbHRpcC1yZWRcIlxyXG4gICAgICAgICAgICByb2xlPVwibGlzdGl0ZW1cIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwib3BlblNhdmVEaWFsb2coKSAmJiBzdG9wVGltZXIoKVwiXHJcbiAgICAgICAgICA+e3sgJ1NBVkUnIHwgbG9jYWxpemUgfX1cclxuICAgICAgICAgIDwvbWF0LWxpc3QtaXRlbT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cImJhZGdlXCJcclxuICAgICAgICAgIG1hdEJhZGdlPVwiIVwiXHJcbiAgICAgICAgICBtYXRCYWRnZUNvbG9yPVwid2FyblwiXHJcbiAgICAgICAgICBtYXRCYWRnZVBvc2l0aW9uPVwiYmVsb3cgYmVmb3JlXCJcclxuICAgICAgICAgIG1hdEJhZGdlT3ZlcmxhcD1cInRydWVcIlxyXG4gICAgICAgICAgbWF0QmFkZ2VTaXplPVwibWVkaXVtXCJcclxuICAgICAgICAgIFttYXRCYWRnZUhpZGRlbl09XCJiYWRnZURpc2FibGVkXCI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbWF0LW5hdi1saXN0PlxyXG4gICAgICA8ZGl2IG1hdFRvb2x0aXA9XCJ7eydTQVZFX0lNQUdFJyB8IGxvY2FsaXplfX1cIj5cclxuICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwib25UYWtlU2NyZWVuc2hvdENsaWNrKClcIj5cclxuICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImhvbWVkZWNvcmF0b3ItbWF0ZXJpYWwtaWNvbnNcIj5waG90b19jYW1lcmE8L21hdC1pY29uPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBtYXRUb29sdGlwPVwie3snVU5ETycgfCBsb2NhbGl6ZX19XCI+XHJcbiAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cIm1lc3NhZ2VTZXJ2aWNlLmVtaXQobWVzc2FnZVR5cGUuVW5kbylcIlxyXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInByZXNldHNTZXJ2aWNlLmlzTG9hZGluZyB8fCAhYXBwU3RhdGUuY2FuVW5kbygpXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJob21lZGVjb3JhdG9yLW1hdGVyaWFsLWljb25zXCI+dW5kbzwvbWF0LWljb24+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IG1hdFRvb2x0aXA9XCJ7eydSRURPJyB8IGxvY2FsaXplfX1cIj5cclxuICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwibWVzc2FnZVNlcnZpY2UuZW1pdChtZXNzYWdlVHlwZS5SZWRvKVwiXHJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwicHJlc2V0c1NlcnZpY2UuaXNMb2FkaW5nIHx8ICFhcHBTdGF0ZS5jYW5SZWRvKClcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImhvbWVkZWNvcmF0b3ItbWF0ZXJpYWwtaWNvbnNcIj5yZWRvPC9tYXQtaWNvbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uICpuZ0lmPVwiIWZ1bGxzY3JlZW5cIiAoY2xpY2spPVwicmVxdWVzdEZ1bGxzY3JlZW4oKVwiIG1hdFRvb2x0aXA9XCJ7eydSRVFVRVNUX0ZVTExTQ1JFRU4nIHwgbG9jYWxpemV9fVwiPlxyXG4gICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImhvbWVkZWNvcmF0b3ItbWF0ZXJpYWwtaWNvbnNcIj5mdWxsc2NyZWVuPC9tYXQtaWNvbj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uICpuZ0lmPVwiZnVsbHNjcmVlblwiIChjbGljayk9XCJleGl0RnVsbHNjcmVlbigpXCIgbWF0VG9vbHRpcD1cInt7J0VYSVRfRlVMTFNDUkVFTicgfCBsb2NhbGl6ZX19XCI+XHJcbiAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiaG9tZWRlY29yYXRvci1tYXRlcmlhbC1pY29uc1wiPmZ1bGxzY3JlZW5fZXhpdDwvbWF0LWljb24+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9tYXQtdG9vbGJhcj5cclxuXHJcbiAgICA8bGltaXRlZC1tb2RlLW1lc3NhZ2VcclxuICAgICAgKm5nSWY9XCJwaG9uZVNpemVTY3JlZW4gJiYgc2hvd0xpbWl0ZWRNb2RlTWVzc2FnZVwiXHJcbiAgICAgIChjbG9zZUNsaWNrZWQpPVwib25DbG9zZUxpbWl0ZWRNb2RlTWVzc2FnZUNsaWNrKClcIj5cclxuICAgIDwvbGltaXRlZC1tb2RlLW1lc3NhZ2U+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cInRvYXN0LXdyYXBwZXJcIlxyXG4gICAgICAgICBbY2xhc3Muc3VjY2Vzc109XCJ0b2FzdC50eXBlID09ICB0b2FzdFR5cGUuU3VjY2Vzc1wiXHJcbiAgICAgICAgIFtjbGFzcy53YXJuaW5nXT1cInRvYXN0LnR5cGUgPT0gIHRvYXN0VHlwZS5XYXJuaW5nXCJcclxuICAgICAgICAgW2NsYXNzLmVycm9yXT1cInRvYXN0LnR5cGUgPT0gIHRvYXN0VHlwZS5FcnJvclwiXHJcbiAgICAgICAgICpuZ0lmPVwidG9hc3RcIlxyXG4gICAgICAgICBAc2hvd1RvYXN0XHJcbiAgICAgICAgIFt0ZXh0Q29udGVudF09XCJ0b2FzdC5tZXNzYWdlXCI+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8bWF0LXRvb2xiYXItcm93IGNsYXNzPVwidG9vbGJhci1yb3dcIj5cclxuICAgICAgPG1hdC10b29sYmFyIGNsYXNzPVwidG9vbGJhciB0b29sYmFyLS1zZWNvbmRhcnlcIiAqbmdJZj1cIiFwaG9uZVNpemVTY3JlZW5cIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpY29uIG9mIHRvb2xiYXJJY29uc1RvcFwiPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciBbY2RrUG9ydGFsT3V0bGV0XT1cImljb24ucG9ydGFsXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJoZC10b29sYmFyLXNwYWNlclwiPjwvc3Bhbj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpY29uIG9mIHRvb2xiYXJJY29uc0JvdHRvbVwiPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciBbY2RrUG9ydGFsT3V0bGV0XT1cImljb24ucG9ydGFsXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbWF0LXRvb2xiYXI+XHJcblxyXG4gICAgICA8bWF0LWRyYXdlci1jb250YWluZXIgY2xhc3M9XCJkcmF3ZXItY29udGFpbmVyXCI+XHJcbiAgICAgICAgPG1hdC1kcmF3ZXIgY2xhc3M9XCJkcmF3ZXJcIiBtb2RlPVwib3ZlclwiIHBvc2l0aW9uPVwibGVmdFwiICNsZWZ0U2lkZWJhcj5cclxuICAgICAgICAgIDxtYXQtZHJhd2VyLWNvbnRlbnQgY2xhc3M9XCJkcmF3ZXJfX2JvZHlcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImRyYXdlcl9fYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJjbGlja0Nsb3NlTGVmdFNpZGViYXIoKVwiPlxyXG4gICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImhvbWVkZWNvcmF0b3ItbWF0ZXJpYWwtaWNvbnNcIj5jbGVhcjwvbWF0LWljb24+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyIFtjZGtQb3J0YWxPdXRsZXRdPVwibGVmdFBvcnRhbFwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9tYXQtZHJhd2VyLWNvbnRlbnQ+XHJcbiAgICAgICAgPC9tYXQtZHJhd2VyPlxyXG4gICAgICA8L21hdC1kcmF3ZXItY29udGFpbmVyPlxyXG4gICAgPC9tYXQtdG9vbGJhci1yb3c+XHJcbiAgICA8IS0tXHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgIC0tPlxyXG4gIGAsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdG9vbGJhci5jb21wb25lbnQuc2NzcyddLFxyXG4gIGFuaW1hdGlvbnM6IFtcclxuICAgIHRyaWdnZXIoJ3Nob3dUb2FzdCcsIFtcclxuICAgICAgc3RhdGUoJ3ZvaWQnLCBzdHlsZSh7J3RyYW5zZm9ybS1vcmlnaW4nOiAndG9wIGNlbnRlcicsIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZSgtNTAlLCAtMTAwJSknfSkpLFxyXG4gICAgICBzdGF0ZSgnKicsIHN0eWxlKHsndHJhbnNmb3JtLW9yaWdpbic6ICd0b3AgY2VudGVyJywgdHJhbnNmb3JtOiAndHJhbnNsYXRlKC01MCUsIDApJ30pKSxcclxuICAgICAgdHJhbnNpdGlvbigndm9pZCA8PT4gKicsIGFuaW1hdGUoJzIwMG1zIGVhc2UtaW4tb3V0JykpXHJcbiAgICBdKSxcclxuICAgIHRyaWdnZXIoJ3Nob3dMZWZ0VG9vbGJhcicsIFtcclxuICAgICAgc3RhdGUoJ3Nob3cnLCBzdHlsZSh7dHJhbnNmb3JtOiAndHJhbnNsYXRlWCgwJSknfSkpLFxyXG4gICAgICBzdGF0ZSgnaGlkZScsIHN0eWxlKHt0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKC0xMDAlKSd9KSksXHJcbiAgICAgIHRyYW5zaXRpb24oJ3Nob3cgPD0+IGhpZGUnLCBhbmltYXRlKCcyMDBtcyBlYXNlLWluLW91dCcpKVxyXG4gICAgXSlcclxuICBdLyosXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gqL1xyXG59KVxyXG5leHBvcnQgY2xhc3MgVG9vbGJhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0IHtcclxuXHJcbiAgcHVibGljIHJlYWRvbmx5IHRvYXN0VHlwZTogdHlwZW9mIFRvYXN0VHlwZSA9IFRvYXN0VHlwZTtcclxuICBwdWJsaWMgcmVhZG9ubHkgbWVzc2FnZVR5cGU6IHR5cGVvZiBNZXNzYWdlVHlwZSA9IE1lc3NhZ2VUeXBlO1xyXG4gIHB1YmxpYyByZWFkb25seSBpY29uczogdHlwZW9mIEljb25FbnVtID0gSWNvbkVudW07XHJcblxyXG4gIGxlZnRQb3J0YWw6IFRlbXBsYXRlUG9ydGFsPGFueT47XHJcbiAgbGFzdFRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIHJpZ2h0UG9ydGFsOiBUZW1wbGF0ZVBvcnRhbDxhbnk+O1xyXG4gIHRvb2xiYXJJY29uc1RvcDogVG9vbGJhckljb25bXSA9IFtdO1xyXG4gIHRvb2xiYXJJY29uc0JvdHRvbTogVG9vbGJhckljb25bXSA9IFtdO1xyXG5cclxuICBwdWJsaWMgc2hvd0JsaW5rRXJyb3I6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIHB1YmxpYyBzaG93U2F2ZU5vdGlmaWNhdGlvbjogYm9vbGVhbiA9IHRydWU7XHJcbiAgcHVibGljIHRvYXN0OiBUb2FzdDtcclxuICBwdWJsaWMgcGhvbmVTaXplU2NyZWVuOiBib29sZWFuO1xyXG4gIHB1YmxpYyBzaG93TGltaXRlZE1vZGVNZXNzYWdlID0gdHJ1ZTtcclxuICBwdWJsaWMgdGltZUxlZnQ6IG51bWJlciA9IDkwMDtcclxuICBwdWJsaWMgaW50ZXJ2YWw7XHJcbiAgcHVibGljIHRvb2x0aXBEaXNhYmxlZDogYm9vbGVhbiA9IHRydWU7XHJcbiAgcHVibGljIGJhZGdlRGlzYWJsZWQ6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBwcml2YXRlIF9zdWJzOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG5cclxuICBAVmlld0NoaWxkKCdsZWZ0U2lkZWJhcicsIHtzdGF0aWM6IHRydWV9KSBsZWZ0U2lkZWJhcjogTWF0RHJhd2VyO1xyXG5cclxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duJywgWyckZXZlbnQnXSlcclxuICBwdWJsaWMgaGFuZGxlS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xyXG4gICAgaWYgKGV2ZW50LmN0cmxLZXkgJiYgZXZlbnQuc2hpZnRLZXkgJiYgZXZlbnQua2V5ID09PSAnUycpIHtcclxuICAgICAgdGhpcy5fc2hvd1NhdmVEaWFsb2coZmFsc2UsIGZhbHNlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgZnVsbHNjcmVlbigpOiBib29sZWFuIHtcclxuICAgIC8vIEB0cy1pZ25vcmVcclxuICAgIHJldHVybiBkb2N1bWVudC5mdWxsc2NyZWVuRWxlbWVudCB8fCAvLyBhbHRlcm5hdGl2ZSBzdGFuZGFyZCBtZXRob2RcclxuICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICBkb2N1bWVudC5tb3pGdWxsU2NyZWVuRWxlbWVudCB8fCBkb2N1bWVudC53ZWJraXRGdWxsc2NyZWVuRWxlbWVudCB8fCBkb2N1bWVudC5tc0Z1bGxzY3JlZW5FbGVtZW50OyAvLyBjdXJyZW50IHdvcmtpbmcgbWV0aG9kc1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgYXBwU3RhdGU6IEFwcFN0YXRlU2VydmljZSxcclxuICAgIHB1YmxpYyBwcmVzZXRzU2VydmljZTogUHJlc2V0c1NlcnZpY2UsXHJcbiAgICBwdWJsaWMgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VCdXNTZXJ2aWNlLFxyXG4gICAgcHVibGljIHNldHRpbmdzU2VydmljZTogSG9tZWRlY29yYXRvclNldHRpbmdzU2VydmljZSxcclxuICAgIHB1YmxpYyBzdG9yYWdlU2VydmljZTogTG9jYWxTdG9yYWdlU2VydmljZSxcclxuICAgIHByaXZhdGUgX3NjcmVlblNpemVTZXJ2aWNlOiBTY3JlZW5TaXplQW5hbHlzaXNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfZGlhbG9nOiBNYXREaWFsb2csXHJcbiAgICBwcml2YXRlIF90b2FzdFNlcnZpY2U6IFRvYXN0U2VydmljZSxcclxuICAgIHByaXZhdGUgX2FwcFNlcnZpY2U6IEhvbWVkZWNvcmF0b3JBcHBTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfcGVybWFuZW50U3RvcmVTZXJ2aWNlOiBQZXJtYW5lbnRTdG9yZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF91dGlsc1NlcnZpY2U6IFV0aWxzU2VydmljZSxcclxuICAgIHByaXZhdGUgX3RocmVlZFNlcnZpY2U6IFRocmVlZHNlbGVjdG9yU2VydmljZSxcclxuICAgIHByaXZhdGUgX2l0ZW1TZXJ2aWNlOiBJdGVtU2VydmljZSxcclxuICAgIHByaXZhdGUgX2Zsb29yUGxhblNlcnZpY2U6IEZsb29ycGxhblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9mbG9vclNlcnZpY2U6IEZsb29yU2VydmljZSxcclxuICAgIHByaXZhdGUgX2FuaW1hdGlvblNlcnZpY2U6IEFuaW1hdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9kZXZlbG9wbWVudFNlcnZpY2U6IERldmVsb3BtZW50U2VydmljZSxcclxuICAgIHByaXZhdGUgX25ld1JlbmRlclNlcnZpY2U6IE5ld1JlbmRlclNlcnZpY2VcclxuICApIHtcclxuICAgIHRoaXMuX3N1YnMucHVzaChcclxuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5zdWJzY3JpYmUoTWVzc2FnZVR5cGUuU2V0TGVmdFNpZGViYXIsICh0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PikgPT4gdGhpcy5fc2V0TGVmdFNpZGViYXIodGVtcGxhdGVSZWYpKSxcclxuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5zdWJzY3JpYmUoTWVzc2FnZVR5cGUuSGlkZUxlZnRTaWRlYmFyLCAoKSA9PiB0aGlzLl9jbG9zZUxlZnRTaWRlYmFyKHtrZWVwVGVtcGxhdGVSZWY6IHRydWV9KSksXHJcbiAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2Uuc3Vic2NyaWJlKE1lc3NhZ2VUeXBlLlJlZ2lzdGVyVG9vbGJhckljb24sIChpY29uOiBUb29sYmFySWNvbikgPT4gdGhpcy5fcmVnaXN0ZXJUb29sYmFySWNvbihpY29uKSksXHJcbiAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2Uuc3Vic2NyaWJlKE1lc3NhZ2VUeXBlLlZpZXdNb2RlQ2hhbmdlZCwgKCkgPT4gdGhpcy5fY2xvc2VMZWZ0U2lkZWJhcigpKSxcclxuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5zdWJzY3JpYmUoTWVzc2FnZVR5cGUuTmV3Um9vbSwgKCkgPT4gdGhpcy5uZXdSb29tKCkpLFxyXG4gICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnN1YnNjcmliZShNZXNzYWdlVHlwZS5TaG93T3BlbkRpYWxvZywgKCkgPT4gdGhpcy5vcGVuT3BlbkRpYWxvZygpKSxcclxuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5zdWJzY3JpYmUoTWVzc2FnZVR5cGUuRmluaXNoZWRJT25lRnVybml0dXJlQnVpbGQsICgpID0+IHRoaXMuX2hpZGVUb2FzdCgpKSxcclxuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5zdWJzY3JpYmUoTWVzc2FnZVR5cGUuVW5kZWZpbmVkRXJyb3JPY2N1cmVkLCAoKSA9PiB0aGlzLl9oaWRlVG9hc3QoKSksXHJcbiAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2Uuc3Vic2NyaWJlKE1lc3NhZ2VUeXBlLlJlbmRlclNlcnZpY2VUcnlUb0Nvbm5lY3QsICgpID0+IHRoaXMuX2hpZGVUb2FzdCgpKSxcclxuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5zdWJzY3JpYmUoTWVzc2FnZVR5cGUuUmVuZGVyU2VydmljZUNvbm5lY3RlZCwgKCkgPT4gdGhpcy5faGlkZVRvYXN0KCkpLFxyXG4gICAgICB0aGlzLl90b2FzdFNlcnZpY2Uuc2hvd1RvYXN0U3ViLnN1YnNjcmliZSgodG9hc3Q6IFRvYXN0KSA9PiB0aGlzLl9zaG93VG9hc3QodG9hc3QpKSxcclxuICAgICAgdGhpcy5fc2NyZWVuU2l6ZVNlcnZpY2Uuc2NyZWVuU2l6ZUNoYW5nZWQuc3Vic2NyaWJlKGluZm8gPT4gdGhpcy5waG9uZVNpemVTY3JlZW4gPSBpbmZvLmlzUGhvbmVTaXplKSxcclxuICAgICAgLy8gdGhpcy5tZXNzYWdlU2VydmljZS5zdWJzY3JpYmUoTWVzc2FnZVR5cGUuU3RhcnRXaXRoRGlhZ3JhbSwgKCkgPT4gdGhpcy5vcGVuVXBsb2FkRGlhZ3JhbSgpKSxcclxuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5zdWJzY3JpYmUoTWVzc2FnZVR5cGUuU3RhcnREcmF3aW5nRGlhZ3JhbSwgKGZpbGUpID0+IHRoaXMub3BlbkRyYXdEaWFncmFtKGZpbGUpKSxcclxuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5zdWJzY3JpYmUoTWVzc2FnZVR5cGUuU3RhcnRDcm9wcGluZ1BERiwgKGZpbGUpID0+IHRoaXMub3BlbkNyb3BwaW5nRGlhZ3JhbShmaWxlKSksXHJcbiAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2Uuc3Vic2NyaWJlKE1lc3NhZ2VUeXBlLlVzZXJNb2RlbFVwbG9hZGVkLCAoZmlsZSkgPT4gdGhpcy5vcGVuTW9kZWxQcmV2aWV3KGZpbGUpKSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fc3Vicy5mb3JFYWNoKHMgPT4gcy51bnN1YnNjcmliZSgpKTtcclxuICAgIHRoaXMubGFzdFRlbXBsYXRlUmVmID0gdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgdGhpcy5pbnRlcnZhbCA9IHNldEludGVydmFsKCgpID0+IHtcclxuICAgICAgaWYgKHRoaXMudGltZUxlZnQgPiAwKSB7XHJcbiAgICAgICAgdGhpcy50aW1lTGVmdC0tO1xyXG4gICAgICAgIHRoaXMuc2F2ZU5vdGlmaWNhdGlvbigpO1xyXG4gICAgICB9XHJcbiAgICB9LCAxMDAwKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjbGlja0Nsb3NlTGVmdFNpZGViYXIoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9jbG9zZUxlZnRTaWRlYmFyKCk7XHJcbiAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmVtaXQoTWVzc2FnZVR5cGUuTGVmdFNpZGViYXJDbG9zZUNsaWNrZWQpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG5ld1Jvb20oKTogdm9pZCB7XHJcbiAgICB0aGlzLl9jbG9zZUxlZnRTaWRlYmFyKCk7XHJcbiAgICB0aGlzLl9hcHBTZXJ2aWNlLnVzZXJSZWdpc3RlcmVkID0gZmFsc2U7XHJcbiAgICB0aGlzLl9kaWFsb2cub3BlbihMYW5kaW5nU2NyZWVuTW9kYWxDb21wb25lbnQsIHtcclxuICAgICAgd2lkdGg6ICc4NjBweCdcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFuaW1hdGVNb2RlbChlbGVtZW50OiBJdGVtKTogdm9pZCB7XHJcbiAgICB0aGlzLl9hbmltYXRpb25TZXJ2aWNlLnBsYXlBbmltYXRpb24oZWxlbWVudCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgb3BlblNhdmVEaWFsb2coKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBpZiAoIXRoaXMuX3Blcm1hbmVudFN0b3JlU2VydmljZS5jb2RlKSB7XHJcbiAgICAgIHRoaXMuX3Nob3dTYXZlRGlhbG9nKGZhbHNlLCB0cnVlKTtcclxuICAgIH1cclxuICAgIGlmICghdGhpcy5fYXBwU2VydmljZS51c2VyUmVnaXN0ZXJlZCAmJiB0aGlzLl9wZXJtYW5lbnRTdG9yZVNlcnZpY2UuY29kZSAmJiBlbnZpcm9ubWVudC5wcm9kdWN0aW9uICYmIHRoaXMuc2V0dGluZ3NTZXJ2aWNlLnNldHRpbmdzLm9wdGlvbnMuc2hvd0Zvcm1EaWFsb2cpIHtcclxuICAgICAgY29uc3QgcmVnRGlhbG9nID0gdGhpcy5fZGlhbG9nLm9wZW4oUmVnaXN0ZXJEaWFsb2dDb21wb25lbnQsIHtcclxuICAgICAgICB3aWR0aDogJzQwMHB4JyxcclxuICAgICAgICBkaXNhYmxlQ2xvc2U6IHRydWVcclxuICAgICAgfSk7XHJcbiAgICAgIHJlZ0RpYWxvZy5hZnRlckNsb3NlZCgpLnN1YnNjcmliZShhc3luYyAocmVnaXN0ZXJlZDogYm9vbGVhbikgPT4ge1xyXG4gICAgICAgIGlmIChyZWdpc3RlcmVkKSB7XHJcbiAgICAgICAgICB0aGlzLl9hcHBTZXJ2aWNlLnVzZXJSZWdpc3RlcmVkID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuX3Nob3dTYXZlRGlhbG9nKGZhbHNlLCB0cnVlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuX3Blcm1hbmVudFN0b3JlU2VydmljZS5jb2RlLyogJiYgIWVudmlyb25tZW50LnByb2R1Y3Rpb24qLykge1xyXG4gICAgICB0aGlzLl9zaG93U2F2ZURpYWxvZygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIG9wZW5PcGVuRGlhbG9nKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fZGlhbG9nLm9wZW4oT3BlbkRpYWxvZ0NvbXBvbmVudCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgbG9hZFJvb20oKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBjb25zdCBvYmogPSBhd2FpdCB0aGlzLl91dGlsc1NlcnZpY2UubG9hZEdsYlJvb20oJ2h0dHBzOi8vY2RuMS5jb2xpam4taXQubmwvY29udGVudDQzL2Fzc2V0cy9TdGF0aW9uN19LYXR0ZW5idXJnXzIxMDQxNC5nbGInKTtcclxuICAgIC8vIGNvbnN0IG9iaiA9IGF3YWl0IHRoaXMuX3V0aWxzU2VydmljZS5sb2FkR2xiUm9vbSgnaHR0cHM6Ly9jZG4xLmNvbGlqbi1pdC5ubC9jb250ZW50NDMvYXNzZXRzL1N0YXRpb243X0thdHRlbmJ1cmdfbWF4XzIxMDYxNl8xX0dMVEYvU3RhdGlvbjdfS2F0dGVuYnVyZ19tYXhfMjEwNjE2XzEuZ2x0ZicpO1xyXG4gICAgb2JqLmNoaWxkcmVuLmZvckVhY2goYyA9PiBjLnZpc2libGUgPSB0cnVlKTtcclxuICAgIC8vIGNvbnN0IGJvdW5kaW5nQm94ID0gbmV3IEJveDMoKS5zZXRGcm9tT2JqZWN0KG9iaik7XHJcbiAgICAvLyAvLyBjcmVhdGUgZmxvb3JcclxuICAgIC8vIGNvbnN0IGhhbGZXaWR0aDogbnVtYmVyID0gKGJvdW5kaW5nQm94Lm1heC54IC0gYm91bmRpbmdCb3gubWluLngpIC8gMjtcclxuICAgIC8vIGNvbnN0IGhhbGZEZXB0aDogbnVtYmVyID0gKGJvdW5kaW5nQm94Lm1heC56IC0gYm91bmRpbmdCb3gubWluLnopIC8gMjtcclxuICAgIC8vIGNvbnN0IGNvcm5lcnMgPSBbXHJcbiAgICAvLyAgIHRoaXMuX2Zsb29yUGxhblNlcnZpY2UubmV3Q29ybmVyKC1oYWxmV2lkdGgsIGhhbGZEZXB0aCksXHJcbiAgICAvLyAgIHRoaXMuX2Zsb29yUGxhblNlcnZpY2UubmV3Q29ybmVyKC1oYWxmV2lkdGgsIC1oYWxmRGVwdGgpLFxyXG4gICAgLy8gICB0aGlzLl9mbG9vclBsYW5TZXJ2aWNlLm5ld0Nvcm5lcihoYWxmV2lkdGgsIC1oYWxmRGVwdGgpLFxyXG4gICAgLy8gICB0aGlzLl9mbG9vclBsYW5TZXJ2aWNlLm5ld0Nvcm5lcihoYWxmV2lkdGgsIGhhbGZEZXB0aCksXHJcbiAgICAvLyBdO1xyXG4gICAgLy8gdGhpcy5fZmxvb3JTZXJ2aWNlLmdlbmVyYXRlRmxvb3JQbGFuZSgndHJhbnNwYXJlbnQnLCB1bmRlZmluZWQsIGNvcm5lcnMpO1xyXG4gICAgdGhpcy5faXRlbVNlcnZpY2UuYWRkSXRlbShvYmopO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGxvYWRSZXNpemFibGVSb29tKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgY29uc3Qgb2JqID0gYXdhaXQgdGhpcy5fZGV2ZWxvcG1lbnRTZXJ2aWNlLmNyZWF0ZVJlc2l6YWJsZVJvb20oKTtcclxuICAgIHRoaXMuX2l0ZW1TZXJ2aWNlLmFkZEl0ZW0ob2JqKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBkb3dubG9hZFJvb20oKTogdm9pZCB7XHJcbiAgICB0aGlzLl91dGlsc1NlcnZpY2Uuc2F2ZVJvb21Bc0dsYigpO1xyXG4gIH1cclxuXHJcbiAgLy8gcHVibGljIGFwaVJvb21SZW5kZXIoKTogdm9pZCB7XHJcbiAgLy8gICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmVtaXQoTWVzc2FnZVR5cGUuU2hvd0xvYWRpbmdJbmRpY2F0b3IsIHt0aXRsZTogJ1JlbmRlcmluZy4uLid9KTtcclxuICAvLyAgIHRoaXMuX3V0aWxzU2VydmljZS5wcmVwUm9vbUZvclJlbmRlcigpO1xyXG4gIC8vIH1cclxuXHJcbiAgcHVibGljIG9uVW5kb0NsaWNrKCkge1xyXG4gICAgdGhpcy5tZXNzYWdlU2VydmljZS5lbWl0KE1lc3NhZ2VUeXBlLlVuZG8pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uUmVkb0NsaWNrKCkge1xyXG4gICAgdGhpcy5tZXNzYWdlU2VydmljZS5lbWl0KE1lc3NhZ2VUeXBlLlJlZG8pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uQ2xvc2VMaW1pdGVkTW9kZU1lc3NhZ2VDbGljaygpIHtcclxuICAgIHRoaXMuc2hvd0xpbWl0ZWRNb2RlTWVzc2FnZSA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uVGFrZVNjcmVlbnNob3RDbGljaygpIHtcclxuICAgIGlmICghdGhpcy5zZXR0aW5nc1NlcnZpY2Uuc2V0dGluZ3Mub3B0aW9ucy5zaG93Rm9ybURpYWxvZykge1xyXG4gICAgICBjb25zdCByZWdEaWFsb2cgPSB0aGlzLl9kaWFsb2cub3BlbihSZWdpc3RlckRpYWxvZ0NvbXBvbmVudCwge1xyXG4gICAgICAgIG1pbldpZHRoOiAnNDAwcHgnLFxyXG4gICAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZVxyXG4gICAgICB9KTtcclxuICAgICAgcmVnRGlhbG9nLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKGFzeW5jIChyZWdpc3RlcmVkOiBib29sZWFuKSA9PiB7XHJcbiAgICAgICAgaWYgKHJlZ2lzdGVyZWQpIHtcclxuICAgICAgICAgIHRoaXMuX2FwcFNlcnZpY2UudXNlclJlZ2lzdGVyZWQgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5lbWl0KE1lc3NhZ2VUeXBlLlRha2VTY3JlZW5zaG90KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5lbWl0KE1lc3NhZ2VUeXBlLlRha2VTY3JlZW5zaG90KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyByZXF1ZXN0RnVsbHNjcmVlbigpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5mdWxsc2NyZWVuKSB7XHJcbiAgICAgIGlmIChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQucmVxdWVzdEZ1bGxzY3JlZW4pIHtcclxuICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQucmVxdWVzdEZ1bGxzY3JlZW4oKTtcclxuICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgIH0gZWxzZSBpZiAoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50Lm1zUmVxdWVzdEZ1bGxzY3JlZW4pIHtcclxuICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50Lm1zUmVxdWVzdEZ1bGxzY3JlZW4oKTtcclxuICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgIH0gZWxzZSBpZiAoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50Lm1velJlcXVlc3RGdWxsU2NyZWVuKSB7XHJcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5tb3pSZXF1ZXN0RnVsbFNjcmVlbigpO1xyXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgfSBlbHNlIGlmIChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQud2Via2l0UmVxdWVzdEZ1bGxzY3JlZW4pIHtcclxuICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LndlYmtpdFJlcXVlc3RGdWxsc2NyZWVuKEVsZW1lbnQuQUxMT1dfS0VZQk9BUkRfSU5QVVQpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZXhpdEZ1bGxzY3JlZW4oKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5mdWxsc2NyZWVuKSB7XHJcbiAgICAgIGlmIChkb2N1bWVudC5leGl0RnVsbHNjcmVlbikge1xyXG4gICAgICAgIGRvY3VtZW50LmV4aXRGdWxsc2NyZWVuKCk7XHJcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICB9IGVsc2UgaWYgKGRvY3VtZW50Lm1zRXhpdEZ1bGxzY3JlZW4pIHtcclxuICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgZG9jdW1lbnQubXNFeGl0RnVsbHNjcmVlbigpO1xyXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgfSBlbHNlIGlmIChkb2N1bWVudC5tb3pDYW5jZWxGdWxsU2NyZWVuKSB7XHJcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgIGRvY3VtZW50Lm1vekNhbmNlbEZ1bGxTY3JlZW4oKTtcclxuICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgIH0gZWxzZSBpZiAoZG9jdW1lbnQud2Via2l0RXhpdEZ1bGxzY3JlZW4pIHtcclxuICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgZG9jdW1lbnQud2Via2l0RXhpdEZ1bGxzY3JlZW4oKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHNhdmVOb3RpZmljYXRpb24oKSB7XHJcbiAgICBpZiAodGhpcy50aW1lTGVmdCA9PT0gMCkge1xyXG4gICAgICB0aGlzLnNob3dTYXZlTm90aWZpY2F0aW9uID0gZmFsc2U7XHJcbiAgICAgIHRoaXMudG9vbHRpcERpc2FibGVkID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuYmFkZ2VEaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0b3BUaW1lcigpIHtcclxuICAgIHRoaXMudGltZUxlZnQgPSA5MDA7XHJcbiAgICB0aGlzLnNob3dTYXZlTm90aWZpY2F0aW9uID0gdHJ1ZTtcclxuICAgIHRoaXMudG9vbHRpcERpc2FibGVkID0gdHJ1ZTtcclxuICAgIHRoaXMuYmFkZ2VEaXNhYmxlZCA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb3BlbkRyYXdEaWFncmFtKGZpbGU6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5fZGlhbG9nLmNsb3NlQWxsKCk7XHJcbiAgICB0aGlzLl9kaWFsb2cub3BlbihEcmF3RGlhbG9nQ29tcG9uZW50LCB7XHJcbiAgICAgIGRhdGE6IHtmaWxlOiBmaWxlfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb3BlbkNyb3BwaW5nRGlhZ3JhbShmaWxlOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuX2RpYWxvZy5jbG9zZUFsbCgpO1xyXG4gICAgdGhpcy5fZGlhbG9nLm9wZW4oUGRmQ3JvcERpYWxvZ0NvbXBvbmVudCwge1xyXG4gICAgICBkYXRhOiB7ZmlsZTogZmlsZX1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9wZW5Nb2RlbFByZXZpZXcoZmlsZTogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLl9kaWFsb2cub3BlbihNb2RlbFByZXZpZXdDb21wb25lbnQsIHtcclxuICAgICAgZGF0YToge2ZpbGU6IGZpbGV9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyB0ZXN0UmVuZGVyKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fbmV3UmVuZGVyU2VydmljZS5mb3JjZVJlbmRlckltYWdlKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9zaG93U2F2ZURpYWxvZyhsb2NhbFNhdmU6IGJvb2xlYW4gPSBmYWxzZSwgc2F2ZU9uT3BlbkRpYWxvZzogYm9vbGVhbiA9IGZhbHNlKTogdm9pZCB7XHJcbiAgICB0aGlzLl9kaWFsb2cub3BlbihTYXZlRGlhbG9nQ29tcG9uZW50LCB7XHJcbiAgICAgIHdpZHRoOiAnNTAwcHgnLFxyXG4gICAgICBkYXRhOiB7b3BlbkRvd25sb2FkRGlhbG9nOiBsb2NhbFNhdmUsIHNhdmVPbk9wZW5EaWFsb2c6IHNhdmVPbk9wZW5EaWFsb2d9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2hpZGVUb2FzdCgpOiB2b2lkIHtcclxuICAgIHRoaXMudG9hc3QgPSB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9zaG93VG9hc3QodG9hc3Q6IFRvYXN0KTogdm9pZCB7XHJcbiAgICB0aGlzLnRvYXN0ID0gdG9hc3Q7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9zZXRMZWZ0U2lkZWJhcih0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55Pik6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMubGFzdFRlbXBsYXRlUmVmID09PSB0ZW1wbGF0ZVJlZiAmJiB0aGlzLmxlZnRQb3J0YWwgJiYgdGhpcy5sZWZ0UG9ydGFsLmlzQXR0YWNoZWQpIHtcclxuICAgICAgdGhpcy5sZWZ0UG9ydGFsLmRldGFjaCgpO1xyXG4gICAgICB0aGlzLmxlZnRTaWRlYmFyLmNsb3NlKCk7XHJcbiAgICAgIHRoaXMubGFzdFRlbXBsYXRlUmVmID0gbnVsbDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMubGVmdFBvcnRhbCA9IG5ldyBUZW1wbGF0ZVBvcnRhbCh0ZW1wbGF0ZVJlZiwgdW5kZWZpbmVkLCB7fSk7XHJcbiAgICAgIHRoaXMubGVmdFNpZGViYXIub3BlbigpO1xyXG4gICAgICB0aGlzLmxhc3RUZW1wbGF0ZVJlZiA9IHRlbXBsYXRlUmVmO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfcmVnaXN0ZXJUb29sYmFySWNvbihpY29uOiBUb29sYmFySWNvbik6IHZvaWQge1xyXG4gICAgaWNvbi5wb3J0YWwgPSBuZXcgVGVtcGxhdGVQb3J0YWwoaWNvbi50ZW1wbGF0ZSwgdW5kZWZpbmVkLCB7fSk7XHJcbiAgICBpY29uLnByaW9yaXR5ID0gaWNvbi5wcmlvcml0eSB8fCAwO1xyXG4gICAgbGV0IHRvb2xiYXJJY29ucztcclxuICAgIGlmIChpY29uLnBvc2l0aW9uID09PSAnYm90dG9tJykge1xyXG4gICAgICB0b29sYmFySWNvbnMgPSB0aGlzLnRvb2xiYXJJY29uc0JvdHRvbTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRvb2xiYXJJY29ucyA9IHRoaXMudG9vbGJhckljb25zVG9wO1xyXG4gICAgfVxyXG4gICAgdG9vbGJhckljb25zLnB1c2goaWNvbik7XHJcbiAgICB0b29sYmFySWNvbnMuc29ydCgoYSwgYikgPT4gYS5wcmlvcml0eSAtIGIucHJpb3JpdHkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY2xvc2VMZWZ0U2lkZWJhcihvcHRpb25zOiBDbG9zaW5nT3B0aW9ucyA9IHt9KTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5sZWZ0UG9ydGFsICYmIHRoaXMubGVmdFBvcnRhbC5pc0F0dGFjaGVkKSB7XHJcbiAgICAgIHRoaXMubGVmdFBvcnRhbC5kZXRhY2goKTtcclxuICAgICAgdGhpcy5sZWZ0UG9ydGFsID0gbnVsbDtcclxuICAgIH1cclxuICAgIGlmICghb3B0aW9ucy5rZWVwVGVtcGxhdGVSZWYpIHtcclxuICAgICAgdGhpcy5sYXN0VGVtcGxhdGVSZWYgPSBudWxsO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMubGVmdFNpZGViYXIpIHtcclxuICAgICAgdGhpcy5sZWZ0U2lkZWJhci5jbG9zZSgpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
|
|
667
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbGJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvY2xpZW50L2FwcC9wbHVnaW5zL3Rvb2xiYXIvdG9vbGJhci90b29sYmFyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxPQUFPLEVBQWdCLFNBQVMsRUFBRSxZQUFZLEVBQWtDLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNoSCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFHbkQsT0FBTyxFQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUUvRSxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sc0NBQXNDLENBQUM7QUFDakUsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBQ2pFLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN6RCxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFrQnRELE9BQU8sRUFBQywyQkFBMkIsRUFBQyxNQUFNLHdEQUF3RCxDQUFDO0FBRW5HLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLDJEQUEyRCxDQUFDO0FBQ2xHLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBQ3pFLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBRXpFLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBQ3pFLE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLDhDQUE4QyxDQUFDO0FBRXBGLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLDhEQUE4RCxDQUFDO0FBQ25HLE9BQU8sRUFBQyxvQkFBb0IsRUFBa0IsTUFBTSxxREFB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LENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxFQUFDLGtCQUFrQixFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsd0JBQXdCLEVBQUMsQ0FBQyxDQUFDOzRCQUM3RixLQUFLLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFDLGtCQUFrQixFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsb0JBQW9CLEVBQUMsQ0FBQyxDQUFDOzRCQUN0RixVQUFVLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO3lCQUN2RCxDQUFDO3dCQUNGLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRTs0QkFDekIsS0FBSyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsRUFBQyxTQUFTLEVBQUUsZ0JBQWdCLEVBQUMsQ0FBQyxDQUFDOzRCQUNuRCxLQUFLLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxFQUFDLFNBQVMsRUFBRSxtQkFBbUIsRUFBQyxDQUFDLENBQUM7NEJBQ3RELFVBQVUsQ0FBQyxlQUFlLEVBQUUsT0FBTyxDQUFDLG1CQUFtQixDQUFDLENBQUM7eUJBQzFELENBQUM7cUJBQ0gsQ0FBQTtxRUFDZ0Q7aUJBQ2xEO2dwQkF5QjJDLFdBQVc7c0JBQXBELFNBQVM7dUJBQUMsYUFBYSxFQUFFLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBQztnQkFHakMsYUFBYTtzQkFEbkIsWUFBWTt1QkFBQyxrQkFBa0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBIb3N0TGlzdGVuZXIsIE9uRGVzdHJveSwgT25Jbml0LCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtUZW1wbGF0ZVBvcnRhbH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XHJcbmltcG9ydCB7TWF0RGlhbG9nfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQge01hdERyYXdlcn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2lkZW5hdic7XHJcbmltcG9ydCB7YW5pbWF0ZSwgc3RhdGUsIHN0eWxlLCB0cmFuc2l0aW9uLCB0cmlnZ2VyfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcclxuaW1wb3J0IHtTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge2Vudmlyb25tZW50fSBmcm9tICcuLi8uLi8uLi8uLi9lbnZpcm9ubWVudHMvZW52aXJvbm1lbnQnO1xyXG5pbXBvcnQge01lc3NhZ2VUeXBlfSBmcm9tICcuLi8uLi8uLi9jb3JlL2VudW0vbWVzc2FnZS10eXBlLmVudW0nO1xyXG5pbXBvcnQge1RvYXN0VHlwZX0gZnJvbSAnLi4vLi4vLi4vY29yZS9tb2RlbC90b2FzdC10eXBlJztcclxuaW1wb3J0IHtJY29uRW51bX0gZnJvbSAnLi4vLi4vLi4vY29yZS9lbnVtL2ljb24uZW51bSc7XHJcbmltcG9ydCB7VG9hc3R9IGZyb20gJy4uLy4uLy4uL2NvcmUvbW9kZWwvdG9hc3QnO1xyXG5pbXBvcnQge0FwcFN0YXRlU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNlL2FwcC1zdGF0ZS5zZXJ2aWNlJztcclxuaW1wb3J0IHtQcmVzZXRzU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNlL3ByZXNldHMuc2VydmljZSc7XHJcbmltcG9ydCB7TWVzc2FnZUJ1c1NlcnZpY2V9IGZyb20gJy4uLy4uLy4uL2NvcmUvc2VydmljZS9tZXNzYWdlLWJ1cy5zZXJ2aWNlJztcclxuaW1wb3J0IHtIb21lZGVjb3JhdG9yU2V0dGluZ3NTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2UvaG9tZWRlY29yYXRvci1zZXR0aW5ncy5zZXJ2aWNlJztcclxuaW1wb3J0IHtMb2NhbFN0b3JhZ2VTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlL2xvY2FsLXN0b3JhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7U2NyZWVuU2l6ZUFuYWx5c2lzU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3NjcmVlbi1zaXplLWFuYWx5c2lzL3NjcmVlbi1zaXplLWFuYWx5c2lzLnNlcnZpY2UnO1xyXG5pbXBvcnQge1RvYXN0U2VydmljZX0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNlL3RvYXN0LnNlcnZpY2UnO1xyXG5pbXBvcnQge0hvbWVkZWNvcmF0b3JBcHBTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2UvaG9tZWRlY29yYXRvci1hcHAuc2VydmljZSc7XHJcbmltcG9ydCB7UGVybWFuZW50U3RvcmVTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2UvcGVybWFuZW50LXN0b3JlLnNlcnZpY2UnO1xyXG5pbXBvcnQge1V0aWxzU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNlL3V0aWxzLnNlcnZpY2UnO1xyXG5pbXBvcnQge1RocmVlZHNlbGVjdG9yU2VydmljZX0gZnJvbSAnLi4vLi4vdGhyZWVkc2VsZWN0b3IvdGhyZWVkc2VsZWN0b3Ivc2VydmljZS90aHJlZWRzZWxlY3Rvci5zZXJ2aWNlJztcclxuaW1wb3J0IHtJdGVtU2VydmljZX0gZnJvbSAnLi4vLi4vY29yZTNkL3NlcnZpY2UvaXRlbS5zZXJ2aWNlJztcclxuaW1wb3J0IHtGbG9vcnBsYW5TZXJ2aWNlfSBmcm9tICcuLi8uLi9yb29tLXBsYW5uZXIvY29tcG9uZW50cy9mbG9vcnBsYW5uZXIvc2VydmljZS9mbG9vcnBsYW4uc2VydmljZSc7XHJcbmltcG9ydCB7Rmxvb3JTZXJ2aWNlfSBmcm9tICcuLi8uLi9jb3JlM2Qvc2VydmljZS9mbG9vci5zZXJ2aWNlJztcclxuaW1wb3J0IHtBbmltYXRpb25TZXJ2aWNlfSBmcm9tICcuLi8uLi90aHJlZWRzZWxlY3Rvci90aHJlZWRzZWxlY3Rvci9zZXJ2aWNlL2FuaW1hdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHtEZXZlbG9wbWVudFNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL2RldmVsb3BtZW50L3NlcnZpY2UvZGV2ZWxvcG1lbnQuc2VydmljZSc7XHJcbmltcG9ydCB7TGFuZGluZ1NjcmVlbk1vZGFsQ29tcG9uZW50fSBmcm9tICcuLi9sYW5kaW5nLXNjcmVlbi1tb2RhbC9sYW5kaW5nLXNjcmVlbi1tb2RhbC5jb21wb25lbnQnO1xyXG5pbXBvcnQge0l0ZW19IGZyb20gJy4uLy4uL2NvcmUzZC9pdGVtcy9pdGVtJztcclxuaW1wb3J0IHtSZWdpc3RlckRpYWxvZ0NvbXBvbmVudH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3JlZ2lzdGVyLWRpYWxvZy9yZWdpc3Rlci1kaWFsb2cuY29tcG9uZW50JztcclxuaW1wb3J0IHtPcGVuRGlhbG9nQ29tcG9uZW50fSBmcm9tICcuLi9vcGVuLWRpYWxvZy9vcGVuLWRpYWxvZy5jb21wb25lbnQnO1xyXG5pbXBvcnQge1NhdmVEaWFsb2dDb21wb25lbnR9IGZyb20gJy4uL3NhdmUtZGlhbG9nL3NhdmUtZGlhbG9nLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7VG9vbGJhckljb259IGZyb20gJy4uLy4uLy4uL2NvcmUvaW50ZXJmYWNlL3Rvb2xiYXItaWNvbi5pbnRlcmZhY2UnO1xyXG5pbXBvcnQge0RyYXdEaWFsb2dDb21wb25lbnR9IGZyb20gJy4uL2RyYXctZGlhbG9nL2RyYXctZGlhbG9nLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7UGRmQ3JvcERpYWxvZ0NvbXBvbmVudH0gZnJvbSAnLi4vcGRmLWNyb3AtZGlhbG9nL3BkZi1jcm9wLWRpYWxvZy5jb21wb25lbnQnO1xyXG5pbXBvcnQge05ld1JlbmRlclNlcnZpY2V9IGZyb20gJy4uLy4uL3JlbmRlci9zZXJ2aWNlL25ldy1yZW5kZXIuc2VydmljZSc7XHJcbmltcG9ydCB7TW9kZWxQcmV2aWV3Q29tcG9uZW50fSBmcm9tICcuLi8uLi9tb2RlbC11cGxvYWRlci9tb2RlbC1wcmV2aWV3ZXIvbW9kZWwtcHJldmlldy5jb21wb25lbnQnO1xyXG5pbXBvcnQge0Vycm9yRGlhbG9nQ29tcG9uZW50LCBFcnJvckRpYWxvZ0RhdGF9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9lcnJvci1kaWFsb2cvZXJyb3ItZGlhbG9nLmNvbXBvbmVudCc7XHJcblxyXG5pbnRlcmZhY2UgQ2xvc2luZ09wdGlvbnMge1xyXG4gIGtlZXBUZW1wbGF0ZVJlZj86IGJvb2xlYW47XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAncnAtdG9vbGJhcicsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDwhLS1cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXllciBsYXllciYjNDU7JiM0NTt0b29sYmFyXCI+XHJcbiAgICAtLT5cclxuICAgIDxtYXQtdG9vbGJhciBjbGFzcz1cInRvb2xiYXJcIiBjb2xvcj1cInByaW1hcnlcIj5cclxuICAgICAgPGJ1dHRvbiAqbmdJZj1cInBob25lU2l6ZVNjcmVlblwiIG1hdC1pY29uLWJ1dHRvbiBjbGFzcz1cIm1lbnUtaWNvblwiIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51XCI+XHJcbiAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiaG9tZWRlY29yYXRvci1tYXRlcmlhbC1pY29uc1wiPm1lbnU8L21hdC1pY29uPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPG1hdC1tZW51ICNtZW51PlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGljb24gb2YgdG9vbGJhckljb25zVG9wXCI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyIFtjZGtQb3J0YWxPdXRsZXRdPVwiaWNvbi5wb3J0YWxcIj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L21hdC1tZW51PlxyXG5cclxuICAgICAgPGltZyBzcmM9XCJhc3NldHMvaW1hZ2VzL2xvZ28uc3ZnXCIgY2xhc3M9XCJ0b29sYmFyLWxvZ29cIi8+XHJcbiAgICAgIDxpbWcgKm5nSWY9XCJzZXR0aW5nc1NlcnZpY2Uuc2V0dGluZ3Muc2Vjb25kYXJ5TG9nb1wiIFtzcmNdPVwic2V0dGluZ3NTZXJ2aWNlLnNldHRpbmdzLnNlY29uZGFyeUxvZ29cIlxyXG4gICAgICAgICAgIGNsYXNzPVwidG9vbGJhci1sb2dvIHNlY29uZGFyeS1sb2dvXCIvPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2V0dGluZ3NTZXJ2aWNlLnNldHRpbmdzLm9wdGlvbnMuZGV2ZWxvcG1lbnRcIj5cclxuICAgICAgICA8bWF0LWNhcmQgY2xhc3M9XCJ3aXAtY2FyZFwiPlxyXG4gICAgICAgICAgPG1hdC1jYXJkLWNvbnRlbnQ+XHJcbiAgICAgICAgICAgIHt7ICdXT1JLX0lOX1BST0dSRVNTJyB8IGxvY2FsaXplIH19XHJcbiAgICAgICAgICA8L21hdC1jYXJkLWNvbnRlbnQ+XHJcbiAgICAgICAgPC9tYXQtY2FyZD5cclxuICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwibG9hZFJvb20oKVwiPlxyXG4gICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiaG9tZWRlY29yYXRvci1tYXRlcmlhbC1pY29uc1wiPndlZWtlbmQ8L21hdC1pY29uPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJsb2FkUmVzaXphYmxlUm9vbSgpXCI+XHJcbiAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJob21lZGVjb3JhdG9yLW1hdGVyaWFsLWljb25zXCI+Y2FtZXJhLWNvbnRyb2w8L21hdC1pY29uPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNldHRpbmdzU2VydmljZS5zZXR0aW5ncy5vcHRpb25zLnNob3dSb29tRG93bmxvYWRCdXR0b25cIj5cclxuICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwiZG93bmxvYWRSb29tKClcIj5cclxuICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImhvbWVkZWNvcmF0b3ItbWF0ZXJpYWwtaWNvbnNcIiBtYXRUb29sdGlwPVwie3snRE9XTkxPQURfUk9PTV9BU19HTEInIHwgbG9jYWxpemV9fVwiPmNsb3VkX2Rvd25sb2FkPC9tYXQtaWNvbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJoZC10b29sYmFyLXNwYWNlclwiPjwvZGl2PlxyXG5cclxuICAgICAgPCEtLSAgICAgIDxuZy1jb250YWluZXI+LS0+XHJcbiAgICAgIDwhLS0gICAgICAgIDxycC1wZGYtZXhwb3J0PjwvcnAtcGRmLWV4cG9ydD4tLT5cclxuICAgICAgPCEtLSAgICAgIDwvbmctY29udGFpbmVyPi0tPlxyXG5cclxuICAgICAgPG1hdC1uYXYtbGlzdCBjbGFzcz1cInRvb2xiYXJfX25hdlwiIHJvbGU9XCJsaXN0XCI+XHJcbiAgICAgICAgPGRpdiBtYXRUb29sdGlwPVwie3snTkVXX1JPT00nIHwgbG9jYWxpemV9fVwiPlxyXG4gICAgICAgICAgPG1hdC1saXN0LWl0ZW0gcm9sZT1cImxpc3RpdGVtXCIgKGNsaWNrKT1cIm5ld1Jvb20oKVwiPnt7ICdORVcnIHwgbG9jYWxpemUgfX08L21hdC1saXN0LWl0ZW0+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBtYXRUb29sdGlwPVwie3snT1BFTl9FWElTVElOR19QTEFOJyB8IGxvY2FsaXplfX1cIj5cclxuICAgICAgICAgIDxtYXQtbGlzdC1pdGVtIHJvbGU9XCJsaXN0aXRlbVwiIChjbGljayk9XCJvcGVuT3BlbkRpYWxvZygpXCI+e3sgJ09QRU4nIHwgbG9jYWxpemUgfX08L21hdC1saXN0LWl0ZW0+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cInN0b3JhZ2VTZXJ2aWNlLmVycm9yV2hlblNhdmluZ1wiIGNsYXNzPVwic3RvcmFnZS1lcnJvclwiXHJcbiAgICAgICAgICAgICBbY2xhc3MuYmxpbmtlcl09XCJzaG93QmxpbmtFcnJvclwiIG1hdFRvb2x0aXA9XCJ7eydFUlJPUl9TQVZJTkdfTE9DQUxTVE9SQUdFJyB8IGxvY2FsaXplfX1cIlxyXG4gICAgICAgICAgICAgKG1vdXNlbW92ZSk9XCJzaG93QmxpbmtFcnJvciA9IGZhbHNlXCJcclxuICAgICAgICA+PHNwYW4+ITwvc3Bhbj48L2Rpdj5cclxuICAgICAgICA8ZGl2IFtjbGFzcy5ibGlua2VyXT1cIiFzaG93U2F2ZU5vdGlmaWNhdGlvblwiIG1hdFRvb2x0aXA9XCJ7eydTQVZFX1RIRV9QTEFOJyB8IGxvY2FsaXplfX1cIj5cclxuICAgICAgICAgIDxtYXQtbGlzdC1pdGVtXHJcbiAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJ7eydTQVZFX1RPT0xUSVAnIHwgbG9jYWxpemV9fVwiXHJcbiAgICAgICAgICAgIFttYXRUb29sdGlwRGlzYWJsZWRdPVwidG9vbHRpcERpc2FibGVkXCJcclxuICAgICAgICAgICAgbWF0VG9vbHRpcENsYXNzPVwidG9vbHRpcC1yZWRcIlxyXG4gICAgICAgICAgICByb2xlPVwibGlzdGl0ZW1cIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwib3BlblNhdmVEaWFsb2coKSAmJiBzdG9wVGltZXIoKVwiXHJcbiAgICAgICAgICA+e3sgJ1NBVkUnIHwgbG9jYWxpemUgfX1cclxuICAgICAgICAgIDwvbWF0LWxpc3QtaXRlbT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cImJhZGdlXCJcclxuICAgICAgICAgIG1hdEJhZGdlPVwiIVwiXHJcbiAgICAgICAgICBtYXRCYWRnZUNvbG9yPVwid2FyblwiXHJcbiAgICAgICAgICBtYXRCYWRnZVBvc2l0aW9uPVwiYmVsb3cgYmVmb3JlXCJcclxuICAgICAgICAgIG1hdEJhZGdlT3ZlcmxhcD1cInRydWVcIlxyXG4gICAgICAgICAgbWF0QmFkZ2VTaXplPVwibWVkaXVtXCJcclxuICAgICAgICAgIFttYXRCYWRnZUhpZGRlbl09XCJiYWRnZURpc2FibGVkXCI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbWF0LW5hdi1saXN0PlxyXG4gICAgICA8ZGl2IG1hdFRvb2x0aXA9XCJ7eydTQVZFX0lNQUdFJyB8IGxvY2FsaXplfX1cIj5cclxuICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwib25UYWtlU2NyZWVuc2hvdENsaWNrKClcIj5cclxuICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImhvbWVkZWNvcmF0b3ItbWF0ZXJpYWwtaWNvbnNcIj5waG90b19jYW1lcmE8L21hdC1pY29uPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBtYXRUb29sdGlwPVwie3snVU5ETycgfCBsb2NhbGl6ZX19XCI+XHJcbiAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cIm1lc3NhZ2VTZXJ2aWNlLmVtaXQobWVzc2FnZVR5cGUuVW5kbylcIlxyXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInByZXNldHNTZXJ2aWNlLmlzTG9hZGluZyB8fCAhYXBwU3RhdGUuY2FuVW5kbygpXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJob21lZGVjb3JhdG9yLW1hdGVyaWFsLWljb25zXCI+dW5kbzwvbWF0LWljb24+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IG1hdFRvb2x0aXA9XCJ7eydSRURPJyB8IGxvY2FsaXplfX1cIj5cclxuICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwibWVzc2FnZVNlcnZpY2UuZW1pdChtZXNzYWdlVHlwZS5SZWRvKVwiXHJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwicHJlc2V0c1NlcnZpY2UuaXNMb2FkaW5nIHx8ICFhcHBTdGF0ZS5jYW5SZWRvKClcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImhvbWVkZWNvcmF0b3ItbWF0ZXJpYWwtaWNvbnNcIj5yZWRvPC9tYXQtaWNvbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uICpuZ0lmPVwiIWZ1bGxzY3JlZW5cIiAoY2xpY2spPVwicmVxdWVzdEZ1bGxzY3JlZW4oKVwiIG1hdFRvb2x0aXA9XCJ7eydSRVFVRVNUX0ZVTExTQ1JFRU4nIHwgbG9jYWxpemV9fVwiPlxyXG4gICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImhvbWVkZWNvcmF0b3ItbWF0ZXJpYWwtaWNvbnNcIj5mdWxsc2NyZWVuPC9tYXQtaWNvbj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uICpuZ0lmPVwiZnVsbHNjcmVlblwiIChjbGljayk9XCJleGl0RnVsbHNjcmVlbigpXCIgbWF0VG9vbHRpcD1cInt7J0VYSVRfRlVMTFNDUkVFTicgfCBsb2NhbGl6ZX19XCI+XHJcbiAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiaG9tZWRlY29yYXRvci1tYXRlcmlhbC1pY29uc1wiPmZ1bGxzY3JlZW5fZXhpdDwvbWF0LWljb24+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9tYXQtdG9vbGJhcj5cclxuXHJcbiAgICA8bGltaXRlZC1tb2RlLW1lc3NhZ2VcclxuICAgICAgKm5nSWY9XCJwaG9uZVNpemVTY3JlZW4gJiYgc2hvd0xpbWl0ZWRNb2RlTWVzc2FnZVwiXHJcbiAgICAgIChjbG9zZUNsaWNrZWQpPVwib25DbG9zZUxpbWl0ZWRNb2RlTWVzc2FnZUNsaWNrKClcIj5cclxuICAgIDwvbGltaXRlZC1tb2RlLW1lc3NhZ2U+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cInRvYXN0LXdyYXBwZXJcIlxyXG4gICAgICAgICBbY2xhc3Muc3VjY2Vzc109XCJ0b2FzdC50eXBlID09ICB0b2FzdFR5cGUuU3VjY2Vzc1wiXHJcbiAgICAgICAgIFtjbGFzcy53YXJuaW5nXT1cInRvYXN0LnR5cGUgPT0gIHRvYXN0VHlwZS5XYXJuaW5nXCJcclxuICAgICAgICAgW2NsYXNzLmVycm9yXT1cInRvYXN0LnR5cGUgPT0gIHRvYXN0VHlwZS5FcnJvclwiXHJcbiAgICAgICAgICpuZ0lmPVwidG9hc3RcIlxyXG4gICAgICAgICBAc2hvd1RvYXN0XHJcbiAgICAgICAgIFt0ZXh0Q29udGVudF09XCJ0b2FzdC5tZXNzYWdlXCI+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8bWF0LXRvb2xiYXItcm93IGNsYXNzPVwidG9vbGJhci1yb3dcIj5cclxuICAgICAgPG1hdC10b29sYmFyIGNsYXNzPVwidG9vbGJhciB0b29sYmFyLS1zZWNvbmRhcnlcIiAqbmdJZj1cIiFwaG9uZVNpemVTY3JlZW5cIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpY29uIG9mIHRvb2xiYXJJY29uc1RvcFwiPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciBbY2RrUG9ydGFsT3V0bGV0XT1cImljb24ucG9ydGFsXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJoZC10b29sYmFyLXNwYWNlclwiPjwvc3Bhbj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpY29uIG9mIHRvb2xiYXJJY29uc0JvdHRvbVwiPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciBbY2RrUG9ydGFsT3V0bGV0XT1cImljb24ucG9ydGFsXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbWF0LXRvb2xiYXI+XHJcblxyXG4gICAgICA8bWF0LWRyYXdlci1jb250YWluZXIgY2xhc3M9XCJkcmF3ZXItY29udGFpbmVyXCI+XHJcbiAgICAgICAgPG1hdC1kcmF3ZXIgY2xhc3M9XCJkcmF3ZXJcIiBtb2RlPVwib3ZlclwiIHBvc2l0aW9uPVwibGVmdFwiICNsZWZ0U2lkZWJhcj5cclxuICAgICAgICAgIDxtYXQtZHJhd2VyLWNvbnRlbnQgY2xhc3M9XCJkcmF3ZXJfX2JvZHlcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImRyYXdlcl9fYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJjbGlja0Nsb3NlTGVmdFNpZGViYXIoKVwiPlxyXG4gICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImhvbWVkZWNvcmF0b3ItbWF0ZXJpYWwtaWNvbnNcIj5jbGVhcjwvbWF0LWljb24+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyIFtjZGtQb3J0YWxPdXRsZXRdPVwibGVmdFBvcnRhbFwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9tYXQtZHJhd2VyLWNvbnRlbnQ+XHJcbiAgICAgICAgPC9tYXQtZHJhd2VyPlxyXG4gICAgICA8L21hdC1kcmF3ZXItY29udGFpbmVyPlxyXG4gICAgPC9tYXQtdG9vbGJhci1yb3c+XHJcbiAgICA8IS0tXHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgIC0tPlxyXG4gIGAsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdG9vbGJhci5jb21wb25lbnQuc2NzcyddLFxyXG4gIGFuaW1hdGlvbnM6IFtcclxuICAgIHRyaWdnZXIoJ3Nob3dUb2FzdCcsIFtcclxuICAgICAgc3RhdGUoJ3ZvaWQnLCBzdHlsZSh7J3RyYW5zZm9ybS1vcmlnaW4nOiAndG9wIGNlbnRlcicsIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZSgtNTAlLCAtMTAwJSknfSkpLFxyXG4gICAgICBzdGF0ZSgnKicsIHN0eWxlKHsndHJhbnNmb3JtLW9yaWdpbic6ICd0b3AgY2VudGVyJywgdHJhbnNmb3JtOiAndHJhbnNsYXRlKC01MCUsIDApJ30pKSxcclxuICAgICAgdHJhbnNpdGlvbigndm9pZCA8PT4gKicsIGFuaW1hdGUoJzIwMG1zIGVhc2UtaW4tb3V0JykpXHJcbiAgICBdKSxcclxuICAgIHRyaWdnZXIoJ3Nob3dMZWZ0VG9vbGJhcicsIFtcclxuICAgICAgc3RhdGUoJ3Nob3cnLCBzdHlsZSh7dHJhbnNmb3JtOiAndHJhbnNsYXRlWCgwJSknfSkpLFxyXG4gICAgICBzdGF0ZSgnaGlkZScsIHN0eWxlKHt0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKC0xMDAlKSd9KSksXHJcbiAgICAgIHRyYW5zaXRpb24oJ3Nob3cgPD0+IGhpZGUnLCBhbmltYXRlKCcyMDBtcyBlYXNlLWluLW91dCcpKVxyXG4gICAgXSlcclxuICBdLyosXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gqL1xyXG59KVxyXG5leHBvcnQgY2xhc3MgVG9vbGJhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0IHtcclxuXHJcbiAgcHVibGljIHJlYWRvbmx5IHRvYXN0VHlwZTogdHlwZW9mIFRvYXN0VHlwZSA9IFRvYXN0VHlwZTtcclxuICBwdWJsaWMgcmVhZG9ubHkgbWVzc2FnZVR5cGU6IHR5cGVvZiBNZXNzYWdlVHlwZSA9IE1lc3NhZ2VUeXBlO1xyXG4gIHB1YmxpYyByZWFkb25seSBpY29uczogdHlwZW9mIEljb25FbnVtID0gSWNvbkVudW07XHJcblxyXG4gIGxlZnRQb3J0YWw6IFRlbXBsYXRlUG9ydGFsPGFueT47XHJcbiAgbGFzdFRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIHJpZ2h0UG9ydGFsOiBUZW1wbGF0ZVBvcnRhbDxhbnk+O1xyXG4gIHRvb2xiYXJJY29uc1RvcDogVG9vbGJhckljb25bXSA9IFtdO1xyXG4gIHRvb2xiYXJJY29uc0JvdHRvbTogVG9vbGJhckljb25bXSA9IFtdO1xyXG5cclxuICBwdWJsaWMgc2hvd0JsaW5rRXJyb3I6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIHB1YmxpYyBzaG93U2F2ZU5vdGlmaWNhdGlvbjogYm9vbGVhbiA9IHRydWU7XHJcbiAgcHVibGljIHRvYXN0OiBUb2FzdDtcclxuICBwdWJsaWMgcGhvbmVTaXplU2NyZWVuOiBib29sZWFuO1xyXG4gIHB1YmxpYyBzaG93TGltaXRlZE1vZGVNZXNzYWdlID0gdHJ1ZTtcclxuICBwdWJsaWMgdGltZUxlZnQ6IG51bWJlciA9IDkwMDtcclxuICBwdWJsaWMgaW50ZXJ2YWw7XHJcbiAgcHVibGljIHRvb2x0aXBEaXNhYmxlZDogYm9vbGVhbiA9IHRydWU7XHJcbiAgcHVibGljIGJhZGdlRGlzYWJsZWQ6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBwcml2YXRlIF9zdWJzOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG5cclxuICBAVmlld0NoaWxkKCdsZWZ0U2lkZWJhcicsIHtzdGF0aWM6IHRydWV9KSBsZWZ0U2lkZWJhcjogTWF0RHJhd2VyO1xyXG5cclxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duJywgWyckZXZlbnQnXSlcclxuICBwdWJsaWMgaGFuZGxlS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xyXG4gICAgaWYgKGV2ZW50LmN0cmxLZXkgJiYgZXZlbnQuc2hpZnRLZXkgJiYgZXZlbnQua2V5ID09PSAnUycpIHtcclxuICAgICAgdGhpcy5fc2hvd1NhdmVEaWFsb2coZmFsc2UsIGZhbHNlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgZnVsbHNjcmVlbigpOiBib29sZWFuIHtcclxuICAgIC8vIEB0cy1pZ25vcmVcclxuICAgIHJldHVybiBkb2N1bWVudC5mdWxsc2NyZWVuRWxlbWVudCB8fCAvLyBhbHRlcm5hdGl2ZSBzdGFuZGFyZCBtZXRob2RcclxuICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICBkb2N1bWVudC5tb3pGdWxsU2NyZWVuRWxlbWVudCB8fCBkb2N1bWVudC53ZWJraXRGdWxsc2NyZWVuRWxlbWVudCB8fCBkb2N1bWVudC5tc0Z1bGxzY3JlZW5FbGVtZW50OyAvLyBjdXJyZW50IHdvcmtpbmcgbWV0aG9kc1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgYXBwU3RhdGU6IEFwcFN0YXRlU2VydmljZSxcclxuICAgIHB1YmxpYyBwcmVzZXRzU2VydmljZTogUHJlc2V0c1NlcnZpY2UsXHJcbiAgICBwdWJsaWMgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VCdXNTZXJ2aWNlLFxyXG4gICAgcHVibGljIHNldHRpbmdzU2VydmljZTogSG9tZWRlY29yYXRvclNldHRpbmdzU2VydmljZSxcclxuICAgIHB1YmxpYyBzdG9yYWdlU2VydmljZTogTG9jYWxTdG9yYWdlU2VydmljZSxcclxuICAgIHByaXZhdGUgX3NjcmVlblNpemVTZXJ2aWNlOiBTY3JlZW5TaXplQW5hbHlzaXNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfZGlhbG9nOiBNYXREaWFsb2csXHJcbiAgICBwcml2YXRlIF90b2FzdFNlcnZpY2U6IFRvYXN0U2VydmljZSxcclxuICAgIHByaXZhdGUgX2FwcFNlcnZpY2U6IEhvbWVkZWNvcmF0b3JBcHBTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfcGVybWFuZW50U3RvcmVTZXJ2aWNlOiBQZXJtYW5lbnRTdG9yZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF91dGlsc1NlcnZpY2U6IFV0aWxzU2VydmljZSxcclxuICAgIHByaXZhdGUgX3RocmVlZFNlcnZpY2U6IFRocmVlZHNlbGVjdG9yU2VydmljZSxcclxuICAgIHByaXZhdGUgX2l0ZW1TZXJ2aWNlOiBJdGVtU2VydmljZSxcclxuICAgIHByaXZhdGUgX2Zsb29yUGxhblNlcnZpY2U6IEZsb29ycGxhblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9mbG9vclNlcnZpY2U6IEZsb29yU2VydmljZSxcclxuICAgIHByaXZhdGUgX2FuaW1hdGlvblNlcnZpY2U6IEFuaW1hdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9kZXZlbG9wbWVudFNlcnZpY2U6IERldmVsb3BtZW50U2VydmljZSxcclxuICAgIHByaXZhdGUgX25ld1JlbmRlclNlcnZpY2U6IE5ld1JlbmRlclNlcnZpY2VcclxuICApIHtcclxuICAgIHRoaXMuX3N1YnMucHVzaChcclxuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5zdWJzY3JpYmUoTWVzc2FnZVR5cGUuU2V0TGVmdFNpZGViYXIsICh0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PikgPT4gdGhpcy5fc2V0TGVmdFNpZGViYXIodGVtcGxhdGVSZWYpKSxcclxuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5zdWJzY3JpYmUoTWVzc2FnZVR5cGUuSGlkZUxlZnRTaWRlYmFyLCAoKSA9PiB0aGlzLl9jbG9zZUxlZnRTaWRlYmFyKHtrZWVwVGVtcGxhdGVSZWY6IHRydWV9KSksXHJcbiAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2Uuc3Vic2NyaWJlKE1lc3NhZ2VUeXBlLlJlZ2lzdGVyVG9vbGJhckljb24sIChpY29uOiBUb29sYmFySWNvbikgPT4gdGhpcy5fcmVnaXN0ZXJUb29sYmFySWNvbihpY29uKSksXHJcbiAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2Uuc3Vic2NyaWJlKE1lc3NhZ2VUeXBlLlZpZXdNb2RlQ2hhbmdlZCwgKCkgPT4gdGhpcy5fY2xvc2VMZWZ0U2lkZWJhcigpKSxcclxuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5zdWJzY3JpYmUoTWVzc2FnZVR5cGUuTmV3Um9vbSwgKCkgPT4gdGhpcy5uZXdSb29tKCkpLFxyXG4gICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnN1YnNjcmliZShNZXNzYWdlVHlwZS5TaG93T3BlbkRpYWxvZywgKCkgPT4gdGhpcy5vcGVuT3BlbkRpYWxvZygpKSxcclxuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5zdWJzY3JpYmUoTWVzc2FnZVR5cGUuRmluaXNoZWRJT25lRnVybml0dXJlQnVpbGQsICgpID0+IHRoaXMuX2hpZGVUb2FzdCgpKSxcclxuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5zdWJzY3JpYmUoTWVzc2FnZVR5cGUuVW5kZWZpbmVkRXJyb3JPY2N1cmVkLCAoKSA9PiB0aGlzLl9oaWRlVG9hc3QoKSksXHJcbiAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2Uuc3Vic2NyaWJlKE1lc3NhZ2VUeXBlLlJlbmRlclNlcnZpY2VUcnlUb0Nvbm5lY3QsICgpID0+IHRoaXMuX2hpZGVUb2FzdCgpKSxcclxuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5zdWJzY3JpYmUoTWVzc2FnZVR5cGUuUmVuZGVyU2VydmljZUNvbm5lY3RlZCwgKCkgPT4gdGhpcy5faGlkZVRvYXN0KCkpLFxyXG4gICAgICB0aGlzLl90b2FzdFNlcnZpY2Uuc2hvd1RvYXN0U3ViLnN1YnNjcmliZSgodG9hc3Q6IFRvYXN0KSA9PiB0aGlzLl9zaG93VG9hc3QodG9hc3QpKSxcclxuICAgICAgdGhpcy5fc2NyZWVuU2l6ZVNlcnZpY2Uuc2NyZWVuU2l6ZUNoYW5nZWQuc3Vic2NyaWJlKGluZm8gPT4gdGhpcy5waG9uZVNpemVTY3JlZW4gPSBpbmZvLmlzUGhvbmVTaXplKSxcclxuICAgICAgLy8gdGhpcy5tZXNzYWdlU2VydmljZS5zdWJzY3JpYmUoTWVzc2FnZVR5cGUuU3RhcnRXaXRoRGlhZ3JhbSwgKCkgPT4gdGhpcy5vcGVuVXBsb2FkRGlhZ3JhbSgpKSxcclxuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5zdWJzY3JpYmUoTWVzc2FnZVR5cGUuU3RhcnREcmF3aW5nRGlhZ3JhbSwgKGZpbGUpID0+IHRoaXMub3BlbkRyYXdEaWFncmFtKGZpbGUpKSxcclxuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5zdWJzY3JpYmUoTWVzc2FnZVR5cGUuU3RhcnRDcm9wcGluZ1BERiwgKGZpbGUpID0+IHRoaXMub3BlbkNyb3BwaW5nRGlhZ3JhbShmaWxlKSksXHJcbiAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2Uuc3Vic2NyaWJlKE1lc3NhZ2VUeXBlLlVzZXJNb2RlbFVwbG9hZGVkLCAoZmlsZSkgPT4gdGhpcy5vcGVuTW9kZWxQcmV2aWV3KGZpbGUpKSxcclxuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5zdWJzY3JpYmUoTWVzc2FnZVR5cGUuUmVuZGVyRXJyb3IsIChkYXRhKSA9PiB0aGlzLnNob3dSZW5kZXJFcnJvcihkYXRhKSksXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX3N1YnMuZm9yRWFjaChzID0+IHMudW5zdWJzY3JpYmUoKSk7XHJcbiAgICB0aGlzLmxhc3RUZW1wbGF0ZVJlZiA9IHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIHRoaXMuaW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLnRpbWVMZWZ0ID4gMCkge1xyXG4gICAgICAgIHRoaXMudGltZUxlZnQtLTtcclxuICAgICAgICB0aGlzLnNhdmVOb3RpZmljYXRpb24oKTtcclxuICAgICAgfVxyXG4gICAgfSwgMTAwMCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2xpY2tDbG9zZUxlZnRTaWRlYmFyKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fY2xvc2VMZWZ0U2lkZWJhcigpO1xyXG4gICAgdGhpcy5tZXNzYWdlU2VydmljZS5lbWl0KE1lc3NhZ2VUeXBlLkxlZnRTaWRlYmFyQ2xvc2VDbGlja2VkKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBuZXdSb29tKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fY2xvc2VMZWZ0U2lkZWJhcigpO1xyXG4gICAgdGhpcy5fYXBwU2VydmljZS51c2VyUmVnaXN0ZXJlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5fZGlhbG9nLm9wZW4oTGFuZGluZ1NjcmVlbk1vZGFsQ29tcG9uZW50LCB7XHJcbiAgICAgIHdpZHRoOiAnODYwcHgnXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhbmltYXRlTW9kZWwoZWxlbWVudDogSXRlbSk6IHZvaWQge1xyXG4gICAgdGhpcy5fYW5pbWF0aW9uU2VydmljZS5wbGF5QW5pbWF0aW9uKGVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIG9wZW5TYXZlRGlhbG9nKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgaWYgKCF0aGlzLl9wZXJtYW5lbnRTdG9yZVNlcnZpY2UuY29kZSkge1xyXG4gICAgICB0aGlzLl9zaG93U2F2ZURpYWxvZyhmYWxzZSwgdHJ1ZSk7XHJcbiAgICB9XHJcbiAgICBpZiAoIXRoaXMuX2FwcFNlcnZpY2UudXNlclJlZ2lzdGVyZWQgJiYgdGhpcy5fcGVybWFuZW50U3RvcmVTZXJ2aWNlLmNvZGUgJiYgZW52aXJvbm1lbnQucHJvZHVjdGlvbiAmJiB0aGlzLnNldHRpbmdzU2VydmljZS5zZXR0aW5ncy5vcHRpb25zLnNob3dGb3JtRGlhbG9nKSB7XHJcbiAgICAgIGNvbnN0IHJlZ0RpYWxvZyA9IHRoaXMuX2RpYWxvZy5vcGVuKFJlZ2lzdGVyRGlhbG9nQ29tcG9uZW50LCB7XHJcbiAgICAgICAgd2lkdGg6ICc0MDBweCcsXHJcbiAgICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlXHJcbiAgICAgIH0pO1xyXG4gICAgICByZWdEaWFsb2cuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoYXN5bmMgKHJlZ2lzdGVyZWQ6IGJvb2xlYW4pID0+IHtcclxuICAgICAgICBpZiAocmVnaXN0ZXJlZCkge1xyXG4gICAgICAgICAgdGhpcy5fYXBwU2VydmljZS51c2VyUmVnaXN0ZXJlZCA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLl9zaG93U2F2ZURpYWxvZyhmYWxzZSwgdHJ1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLl9wZXJtYW5lbnRTdG9yZVNlcnZpY2UuY29kZS8qICYmICFlbnZpcm9ubWVudC5wcm9kdWN0aW9uKi8pIHtcclxuICAgICAgdGhpcy5fc2hvd1NhdmVEaWFsb2coKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBvcGVuT3BlbkRpYWxvZygpOiB2b2lkIHtcclxuICAgIHRoaXMuX2RpYWxvZy5vcGVuKE9wZW5EaWFsb2dDb21wb25lbnQpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGxvYWRSb29tKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgY29uc3Qgb2JqID0gYXdhaXQgdGhpcy5fdXRpbHNTZXJ2aWNlLmxvYWRHbGJSb29tKCdodHRwczovL2NkbjEuY29saWpuLWl0Lm5sL2NvbnRlbnQ0My9hc3NldHMvU3RhdGlvbjdfS2F0dGVuYnVyZ18yMTA0MTQuZ2xiJyk7XHJcbiAgICAvLyBjb25zdCBvYmogPSBhd2FpdCB0aGlzLl91dGlsc1NlcnZpY2UubG9hZEdsYlJvb20oJ2h0dHBzOi8vY2RuMS5jb2xpam4taXQubmwvY29udGVudDQzL2Fzc2V0cy9TdGF0aW9uN19LYXR0ZW5idXJnX21heF8yMTA2MTZfMV9HTFRGL1N0YXRpb243X0thdHRlbmJ1cmdfbWF4XzIxMDYxNl8xLmdsdGYnKTtcclxuICAgIG9iai5jaGlsZHJlbi5mb3JFYWNoKGMgPT4gYy52aXNpYmxlID0gdHJ1ZSk7XHJcbiAgICAvLyBjb25zdCBib3VuZGluZ0JveCA9IG5ldyBCb3gzKCkuc2V0RnJvbU9iamVjdChvYmopO1xyXG4gICAgLy8gLy8gY3JlYXRlIGZsb29yXHJcbiAgICAvLyBjb25zdCBoYWxmV2lkdGg6IG51bWJlciA9IChib3VuZGluZ0JveC5tYXgueCAtIGJvdW5kaW5nQm94Lm1pbi54KSAvIDI7XHJcbiAgICAvLyBjb25zdCBoYWxmRGVwdGg6IG51bWJlciA9IChib3VuZGluZ0JveC5tYXgueiAtIGJvdW5kaW5nQm94Lm1pbi56KSAvIDI7XHJcbiAgICAvLyBjb25zdCBjb3JuZXJzID0gW1xyXG4gICAgLy8gICB0aGlzLl9mbG9vclBsYW5TZXJ2aWNlLm5ld0Nvcm5lcigtaGFsZldpZHRoLCBoYWxmRGVwdGgpLFxyXG4gICAgLy8gICB0aGlzLl9mbG9vclBsYW5TZXJ2aWNlLm5ld0Nvcm5lcigtaGFsZldpZHRoLCAtaGFsZkRlcHRoKSxcclxuICAgIC8vICAgdGhpcy5fZmxvb3JQbGFuU2VydmljZS5uZXdDb3JuZXIoaGFsZldpZHRoLCAtaGFsZkRlcHRoKSxcclxuICAgIC8vICAgdGhpcy5fZmxvb3JQbGFuU2VydmljZS5uZXdDb3JuZXIoaGFsZldpZHRoLCBoYWxmRGVwdGgpLFxyXG4gICAgLy8gXTtcclxuICAgIC8vIHRoaXMuX2Zsb29yU2VydmljZS5nZW5lcmF0ZUZsb29yUGxhbmUoJ3RyYW5zcGFyZW50JywgdW5kZWZpbmVkLCBjb3JuZXJzKTtcclxuICAgIHRoaXMuX2l0ZW1TZXJ2aWNlLmFkZEl0ZW0ob2JqKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBsb2FkUmVzaXphYmxlUm9vbSgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGNvbnN0IG9iaiA9IGF3YWl0IHRoaXMuX2RldmVsb3BtZW50U2VydmljZS5jcmVhdGVSZXNpemFibGVSb29tKCk7XHJcbiAgICB0aGlzLl9pdGVtU2VydmljZS5hZGRJdGVtKG9iaik7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZG93bmxvYWRSb29tKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fdXRpbHNTZXJ2aWNlLnNhdmVSb29tQXNHbGIoKTtcclxuICB9XHJcblxyXG4gIC8vIHB1YmxpYyBhcGlSb29tUmVuZGVyKCk6IHZvaWQge1xyXG4gIC8vICAgdGhpcy5tZXNzYWdlU2VydmljZS5lbWl0KE1lc3NhZ2VUeXBlLlNob3dMb2FkaW5nSW5kaWNhdG9yLCB7dGl0bGU6ICdSZW5kZXJpbmcuLi4nfSk7XHJcbiAgLy8gICB0aGlzLl91dGlsc1NlcnZpY2UucHJlcFJvb21Gb3JSZW5kZXIoKTtcclxuICAvLyB9XHJcblxyXG4gIHB1YmxpYyBvblVuZG9DbGljaygpIHtcclxuICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuZW1pdChNZXNzYWdlVHlwZS5VbmRvKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvblJlZG9DbGljaygpIHtcclxuICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuZW1pdChNZXNzYWdlVHlwZS5SZWRvKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkNsb3NlTGltaXRlZE1vZGVNZXNzYWdlQ2xpY2soKSB7XHJcbiAgICB0aGlzLnNob3dMaW1pdGVkTW9kZU1lc3NhZ2UgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvblRha2VTY3JlZW5zaG90Q2xpY2soKSB7XHJcbiAgICBpZiAoIXRoaXMuc2V0dGluZ3NTZXJ2aWNlLnNldHRpbmdzLm9wdGlvbnMuc2hvd0Zvcm1EaWFsb2cpIHtcclxuICAgICAgY29uc3QgcmVnRGlhbG9nID0gdGhpcy5fZGlhbG9nLm9wZW4oUmVnaXN0ZXJEaWFsb2dDb21wb25lbnQsIHtcclxuICAgICAgICBtaW5XaWR0aDogJzQwMHB4JyxcclxuICAgICAgICBkaXNhYmxlQ2xvc2U6IHRydWVcclxuICAgICAgfSk7XHJcbiAgICAgIHJlZ0RpYWxvZy5hZnRlckNsb3NlZCgpLnN1YnNjcmliZShhc3luYyAocmVnaXN0ZXJlZDogYm9vbGVhbikgPT4ge1xyXG4gICAgICAgIGlmIChyZWdpc3RlcmVkKSB7XHJcbiAgICAgICAgICB0aGlzLl9hcHBTZXJ2aWNlLnVzZXJSZWdpc3RlcmVkID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuZW1pdChNZXNzYWdlVHlwZS5UYWtlU2NyZWVuc2hvdCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuZW1pdChNZXNzYWdlVHlwZS5UYWtlU2NyZWVuc2hvdCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcmVxdWVzdEZ1bGxzY3JlZW4oKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuZnVsbHNjcmVlbikge1xyXG4gICAgICBpZiAoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnJlcXVlc3RGdWxsc2NyZWVuKSB7XHJcbiAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnJlcXVlc3RGdWxsc2NyZWVuKCk7XHJcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICB9IGVsc2UgaWYgKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5tc1JlcXVlc3RGdWxsc2NyZWVuKSB7XHJcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5tc1JlcXVlc3RGdWxsc2NyZWVuKCk7XHJcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICB9IGVsc2UgaWYgKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5tb3pSZXF1ZXN0RnVsbFNjcmVlbikge1xyXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQubW96UmVxdWVzdEZ1bGxTY3JlZW4oKTtcclxuICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgIH0gZWxzZSBpZiAoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LndlYmtpdFJlcXVlc3RGdWxsc2NyZWVuKSB7XHJcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC53ZWJraXRSZXF1ZXN0RnVsbHNjcmVlbihFbGVtZW50LkFMTE9XX0tFWUJPQVJEX0lOUFVUKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGV4aXRGdWxsc2NyZWVuKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuZnVsbHNjcmVlbikge1xyXG4gICAgICBpZiAoZG9jdW1lbnQuZXhpdEZ1bGxzY3JlZW4pIHtcclxuICAgICAgICBkb2N1bWVudC5leGl0RnVsbHNjcmVlbigpO1xyXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgfSBlbHNlIGlmIChkb2N1bWVudC5tc0V4aXRGdWxsc2NyZWVuKSB7XHJcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgIGRvY3VtZW50Lm1zRXhpdEZ1bGxzY3JlZW4oKTtcclxuICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgIH0gZWxzZSBpZiAoZG9jdW1lbnQubW96Q2FuY2VsRnVsbFNjcmVlbikge1xyXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgICBkb2N1bWVudC5tb3pDYW5jZWxGdWxsU2NyZWVuKCk7XHJcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICB9IGVsc2UgaWYgKGRvY3VtZW50LndlYmtpdEV4aXRGdWxsc2NyZWVuKSB7XHJcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgIGRvY3VtZW50LndlYmtpdEV4aXRGdWxsc2NyZWVuKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBzYXZlTm90aWZpY2F0aW9uKCkge1xyXG4gICAgaWYgKHRoaXMudGltZUxlZnQgPT09IDApIHtcclxuICAgICAgdGhpcy5zaG93U2F2ZU5vdGlmaWNhdGlvbiA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnRvb2x0aXBEaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmJhZGdlRGlzYWJsZWQgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdG9wVGltZXIoKSB7XHJcbiAgICB0aGlzLnRpbWVMZWZ0ID0gOTAwO1xyXG4gICAgdGhpcy5zaG93U2F2ZU5vdGlmaWNhdGlvbiA9IHRydWU7XHJcbiAgICB0aGlzLnRvb2x0aXBEaXNhYmxlZCA9IHRydWU7XHJcbiAgICB0aGlzLmJhZGdlRGlzYWJsZWQgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9wZW5EcmF3RGlhZ3JhbShmaWxlOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuX2RpYWxvZy5jbG9zZUFsbCgpO1xyXG4gICAgdGhpcy5fZGlhbG9nLm9wZW4oRHJhd0RpYWxvZ0NvbXBvbmVudCwge1xyXG4gICAgICBkYXRhOiB7ZmlsZTogZmlsZX1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9wZW5Dcm9wcGluZ0RpYWdyYW0oZmlsZTogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLl9kaWFsb2cuY2xvc2VBbGwoKTtcclxuICAgIHRoaXMuX2RpYWxvZy5vcGVuKFBkZkNyb3BEaWFsb2dDb21wb25lbnQsIHtcclxuICAgICAgZGF0YToge2ZpbGU6IGZpbGV9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvcGVuTW9kZWxQcmV2aWV3KGZpbGU6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5fZGlhbG9nLm9wZW4oTW9kZWxQcmV2aWV3Q29tcG9uZW50LCB7XHJcbiAgICAgIGRhdGE6IHtmaWxlOiBmaWxlfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2hvd1JlbmRlckVycm9yKGRhdGE6IEVycm9yRGlhbG9nRGF0YSk6IHZvaWQge1xyXG4gICAgdGhpcy5fZGlhbG9nLm9wZW4oRXJyb3JEaWFsb2dDb21wb25lbnQsIHtcclxuICAgICAgZGF0YTogZGF0YVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmVtaXQoTWVzc2FnZVR5cGUuSGlkZUxvYWRpbmdJbmRpY2F0b3IpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHRlc3RSZW5kZXIoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9uZXdSZW5kZXJTZXJ2aWNlLmZvcmNlUmVuZGVySW1hZ2UoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3Nob3dTYXZlRGlhbG9nKGxvY2FsU2F2ZTogYm9vbGVhbiA9IGZhbHNlLCBzYXZlT25PcGVuRGlhbG9nOiBib29sZWFuID0gZmFsc2UpOiB2b2lkIHtcclxuICAgIHRoaXMuX2RpYWxvZy5vcGVuKFNhdmVEaWFsb2dDb21wb25lbnQsIHtcclxuICAgICAgd2lkdGg6ICc1MDBweCcsXHJcbiAgICAgIGRhdGE6IHtvcGVuRG93bmxvYWREaWFsb2c6IGxvY2FsU2F2ZSwgc2F2ZU9uT3BlbkRpYWxvZzogc2F2ZU9uT3BlbkRpYWxvZ31cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfaGlkZVRvYXN0KCk6IHZvaWQge1xyXG4gICAgdGhpcy50b2FzdCA9IHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3Nob3dUb2FzdCh0b2FzdDogVG9hc3QpOiB2b2lkIHtcclxuICAgIHRoaXMudG9hc3QgPSB0b2FzdDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3NldExlZnRTaWRlYmFyKHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+KTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5sYXN0VGVtcGxhdGVSZWYgPT09IHRlbXBsYXRlUmVmICYmIHRoaXMubGVmdFBvcnRhbCAmJiB0aGlzLmxlZnRQb3J0YWwuaXNBdHRhY2hlZCkge1xyXG4gICAgICB0aGlzLmxlZnRQb3J0YWwuZGV0YWNoKCk7XHJcbiAgICAgIHRoaXMubGVmdFNpZGViYXIuY2xvc2UoKTtcclxuICAgICAgdGhpcy5sYXN0VGVtcGxhdGVSZWYgPSBudWxsO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5sZWZ0UG9ydGFsID0gbmV3IFRlbXBsYXRlUG9ydGFsKHRlbXBsYXRlUmVmLCB1bmRlZmluZWQsIHt9KTtcclxuICAgICAgdGhpcy5sZWZ0U2lkZWJhci5vcGVuKCk7XHJcbiAgICAgIHRoaXMubGFzdFRlbXBsYXRlUmVmID0gdGVtcGxhdGVSZWY7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9yZWdpc3RlclRvb2xiYXJJY29uKGljb246IFRvb2xiYXJJY29uKTogdm9pZCB7XHJcbiAgICBpY29uLnBvcnRhbCA9IG5ldyBUZW1wbGF0ZVBvcnRhbChpY29uLnRlbXBsYXRlLCB1bmRlZmluZWQsIHt9KTtcclxuICAgIGljb24ucHJpb3JpdHkgPSBpY29uLnByaW9yaXR5IHx8IDA7XHJcbiAgICBsZXQgdG9vbGJhckljb25zO1xyXG4gICAgaWYgKGljb24ucG9zaXRpb24gPT09ICdib3R0b20nKSB7XHJcbiAgICAgIHRvb2xiYXJJY29ucyA9IHRoaXMudG9vbGJhckljb25zQm90dG9tO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdG9vbGJhckljb25zID0gdGhpcy50b29sYmFySWNvbnNUb3A7XHJcbiAgICB9XHJcbiAgICB0b29sYmFySWNvbnMucHVzaChpY29uKTtcclxuICAgIHRvb2xiYXJJY29ucy5zb3J0KChhLCBiKSA9PiBhLnByaW9yaXR5IC0gYi5wcmlvcml0eSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9jbG9zZUxlZnRTaWRlYmFyKG9wdGlvbnM6IENsb3NpbmdPcHRpb25zID0ge30pOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmxlZnRQb3J0YWwgJiYgdGhpcy5sZWZ0UG9ydGFsLmlzQXR0YWNoZWQpIHtcclxuICAgICAgdGhpcy5sZWZ0UG9ydGFsLmRldGFjaCgpO1xyXG4gICAgICB0aGlzLmxlZnRQb3J0YWwgPSBudWxsO1xyXG4gICAgfVxyXG4gICAgaWYgKCFvcHRpb25zLmtlZXBUZW1wbGF0ZVJlZikge1xyXG4gICAgICB0aGlzLmxhc3RUZW1wbGF0ZVJlZiA9IG51bGw7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5sZWZ0U2lkZWJhcikge1xyXG4gICAgICB0aGlzLmxlZnRTaWRlYmFyLmNsb3NlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -36,7 +36,9 @@ export class LoadingOverlayComponent {
|
|
|
36
36
|
});
|
|
37
37
|
}
|
|
38
38
|
hideLoadingIndicator() {
|
|
39
|
-
this.loadingDialogRef
|
|
39
|
+
if (this.loadingDialogRef) {
|
|
40
|
+
this.loadingDialogRef.close();
|
|
41
|
+
}
|
|
40
42
|
}
|
|
41
43
|
}
|
|
42
44
|
LoadingOverlayComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: LoadingOverlayComponent, deps: [{ token: i1.MatDialog }, { token: i2.MessageBusService }], target: i0.ɵɵFactoryTarget.Component });
|
|
@@ -52,4 +54,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
52
54
|
type: HostBinding,
|
|
53
55
|
args: ['class']
|
|
54
56
|
}] } });
|
|
55
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGluZy1vdmVybGF5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jbGllbnQvYXBwL3NoYXJlZC9sb2FkaW5nLW92ZXJsYXkvbG9hZGluZy1vdmVybGF5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jbGllbnQvYXBwL3NoYXJlZC9sb2FkaW5nLW92ZXJsYXkvbG9hZGluZy1vdmVybGF5LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsV0FBVyxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBRWhFLE9BQU8sRUFBQyw2QkFBNkIsRUFBQyxNQUFNLDJDQUEyQyxDQUFDO0FBR3hGLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQzs7Ozs7QUFROUQsTUFBTSxPQUFPLHVCQUF1QjtJQVNsQyxZQUFvQixNQUFpQixFQUFFLGNBQWlDO1FBQXBELFdBQU0sR0FBTixNQUFNLENBQVc7UUFQZixlQUFVLEdBQUcsT0FBTyxDQUFDO1FBRTNDLGlCQUFZLEdBQUcsQ0FBQyxDQUFDO1FBR1QsVUFBSyxHQUFtQixFQUFFLENBQUM7UUFHakMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQ2IsY0FBYyxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLEVBQUU7WUFDaEUsSUFBSSxJQUFJLENBQUMsWUFBWSxLQUFLLENBQUMsRUFBRTtnQkFDM0IsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ2pDO1lBQ0QsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3RCLENBQUMsQ0FBQyxFQUNGLGNBQWMsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLG9CQUFvQixFQUFFLEdBQUcsRUFBRTtZQUM5RCxJQUFJLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxFQUFFO2dCQUN6QixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7YUFDckI7WUFDRCxJQUFJLElBQUksQ0FBQyxZQUFZLEtBQUssQ0FBQyxFQUFFO2dCQUMzQixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQzthQUM3QjtRQUNILENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVELG9CQUFvQixDQUFDLElBQXdCO1FBQzNDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyw2QkFBNkIsRUFBRTtZQUN0RSxJQUFJO1lBQ0osWUFBWSxFQUFFLElBQUk7WUFDbEIsYUFBYSxFQUFFLElBQUk7U0FDcEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELG9CQUFvQjtRQUNsQixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZQUN6QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDL0I7SUFDSCxDQUFDOztxSEE1Q1UsdUJBQXVCO3lHQUF2Qix1QkFBdUIsZ0hDYnBDLGlIQUdBOzRGRFVhLHVCQUF1QjtrQkFMbkMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsb0JBQW9CO29CQUM5QixXQUFXLEVBQUUsa0NBQWtDO29CQUMvQyxTQUFTLEVBQUUsQ0FBQyxrQ0FBa0MsQ0FBQztpQkFDaEQ7Z0lBR3VCLFVBQVU7c0JBQS9CLFdBQVc7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBIb3N0QmluZGluZywgT25EZXN0cm95fSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtNYXREaWFsb2csIE1hdERpYWxvZ1JlZn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHtMb2FkaW5nT3ZlcmxheURpYWxvZ0NvbXBvbmVudH0gZnJvbSAnLi9kaWFsb2cvbG9hZGluZy1vdmVybGF5LWRpYWxvZy5jb21wb25lbnQnO1xyXG5pbXBvcnQge1N1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7TWVzc2FnZUJ1c1NlcnZpY2V9IGZyb20gJy4uLy4uL2NvcmUvc2VydmljZS9tZXNzYWdlLWJ1cy5zZXJ2aWNlJztcclxuaW1wb3J0IHtNZXNzYWdlVHlwZX0gZnJvbSAnLi4vLi4vY29yZS9lbnVtL21lc3NhZ2UtdHlwZS5lbnVtJztcclxuaW1wb3J0IHtMb2FkaW5nT3ZlcmxheURhdGF9IGZyb20gJy4uLy4uL2NvcmUvaW50ZXJmYWNlL2xvYWRpbmctb3ZlcmxheS1kYXRhLmludGVyZmFjZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3JwLWxvYWRpbmctb3ZlcmxheScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2xvYWRpbmctb3ZlcmxheS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vbG9hZGluZy1vdmVybGF5LmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIExvYWRpbmdPdmVybGF5Q29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpIGxheWVyQ2xhc3MgPSAnbGF5ZXInO1xyXG5cclxuICBsb2FkaW5nTGV2ZWwgPSAwO1xyXG4gIGxvYWRpbmdEaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxMb2FkaW5nT3ZlcmxheURpYWxvZ0NvbXBvbmVudD47XHJcblxyXG4gIHByaXZhdGUgX3N1YnM6IFN1YnNjcmlwdGlvbltdID0gW107XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZGlhbG9nOiBNYXREaWFsb2csIG1lc3NhZ2VTZXJ2aWNlOiBNZXNzYWdlQnVzU2VydmljZSkge1xyXG4gICAgdGhpcy5fc3Vicy5wdXNoKFxyXG4gICAgICBtZXNzYWdlU2VydmljZS5zdWJzY3JpYmUoTWVzc2FnZVR5cGUuU2hvd0xvYWRpbmdJbmRpY2F0b3IsIGRhdGEgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLmxvYWRpbmdMZXZlbCA9PT0gMCkge1xyXG4gICAgICAgICAgdGhpcy5zaG93TG9hZGluZ0luZGljYXRvcihkYXRhKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nTGV2ZWwrKztcclxuICAgICAgfSksXHJcbiAgICAgIG1lc3NhZ2VTZXJ2aWNlLnN1YnNjcmliZShNZXNzYWdlVHlwZS5IaWRlTG9hZGluZ0luZGljYXRvciwgKCkgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLmxvYWRpbmdMZXZlbCA+IDApIHtcclxuICAgICAgICAgIHRoaXMubG9hZGluZ0xldmVsLS07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLmxvYWRpbmdMZXZlbCA9PT0gMCkge1xyXG4gICAgICAgICAgdGhpcy5oaWRlTG9hZGluZ0luZGljYXRvcigpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX3N1YnMuZm9yRWFjaChzID0+IHMudW5zdWJzY3JpYmUoKSk7XHJcbiAgfVxyXG5cclxuICBzaG93TG9hZGluZ0luZGljYXRvcihkYXRhOiBMb2FkaW5nT3ZlcmxheURhdGEpIHtcclxuICAgIHRoaXMubG9hZGluZ0RpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oTG9hZGluZ092ZXJsYXlEaWFsb2dDb21wb25lbnQsIHtcclxuICAgICAgZGF0YSxcclxuICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlLFxyXG4gICAgICBiYWNrZHJvcENsYXNzOiBudWxsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGhpZGVMb2FkaW5nSW5kaWNhdG9yKCkge1xyXG4gICAgaWYgKHRoaXMubG9hZGluZ0RpYWxvZ1JlZikge1xyXG4gICAgICB0aGlzLmxvYWRpbmdEaWFsb2dSZWYuY2xvc2UoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcbiIsIjxkaXYgW25nQ2xhc3NdPVwieydibHVyLW92ZXJsYXknOiBsb2FkaW5nTGV2ZWx9XCIgY2xhc3M9XCJsYXllclwiPlxyXG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cclxuPC9kaXY+XHJcbiJdfQ==
|
|
@@ -123,7 +123,7 @@ ModelDialogFurnitureListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion
|
|
|
123
123
|
<div class="furniture-item-wrapper">
|
|
124
124
|
<co-icon *ngIf="item.errorMessages.length > 0" class="error-expand-handle" [class.expanded]="item.showErrors"
|
|
125
125
|
[iconData]="iconService.getIcon(icon.ArrowPointDown)" (click)="item.showErrors = !item.showErrors"></co-icon>
|
|
126
|
-
<span class="furniture-item-title" [textContent]="item.name"></span>
|
|
126
|
+
<span class="furniture-item-title" [textContent]="item.name ? item.name : item.sku"></span>
|
|
127
127
|
<button *ngIf=showCopy class="furniture-item-copy"
|
|
128
128
|
[textContent]="item.toggle ? ('COPIED' | localize) : ('COPY' | localize)"
|
|
129
129
|
(click)="copyFurnitureName(item)"></button>
|
|
@@ -223,7 +223,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
223
223
|
<div class="furniture-item-wrapper">
|
|
224
224
|
<co-icon *ngIf="item.errorMessages.length > 0" class="error-expand-handle" [class.expanded]="item.showErrors"
|
|
225
225
|
[iconData]="iconService.getIcon(icon.ArrowPointDown)" (click)="item.showErrors = !item.showErrors"></co-icon>
|
|
226
|
-
<span class="furniture-item-title" [textContent]="item.name"></span>
|
|
226
|
+
<span class="furniture-item-title" [textContent]="item.name ? item.name : item.sku"></span>
|
|
227
227
|
<button *ngIf=showCopy class="furniture-item-copy"
|
|
228
228
|
[textContent]="item.toggle ? ('COPIED' | localize) : ('COPY' | localize)"
|
|
229
229
|
(click)="copyFurnitureName(item)"></button>
|
|
@@ -322,4 +322,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
322
322
|
}], showTotals: [{
|
|
323
323
|
type: Input
|
|
324
324
|
}] } });
|
|
325
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwtZGlhbG9nLWZ1cm5pdHVyZS1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jbGllbnQvYXBwL3NoYXJlZC9tb2RlbC1kaWFsb2cvbW9kZWwtZGlhbG9nLWZ1cm5pdHVyZS1saXN0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBUyxNQUFNLGVBQWUsQ0FBQztBQUN2RCxPQUFPLEVBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQy9FLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7Ozs7Ozs7O0FBK0duRCxNQUFNLE9BQU8saUNBQWlDO0lBd0I1QyxZQUNTLFdBQTBDLEVBQzFDLGVBQTZDLEVBQzVDLFlBQXlCLEVBQ3pCLHdCQUFpRDtRQUhsRCxnQkFBVyxHQUFYLFdBQVcsQ0FBK0I7UUFDMUMsb0JBQWUsR0FBZixlQUFlLENBQThCO1FBQzVDLGlCQUFZLEdBQVosWUFBWSxDQUFhO1FBQ3pCLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBeUI7UUEzQjNDLFNBQUksR0FBb0IsUUFBUSxDQUFDO1FBRzFDLFNBQUksR0FBNkIsRUFBRSxDQUFDO1FBaUJwQyxlQUFVLEdBQVcsR0FBRyxDQUFDO1FBQ3pCLHdCQUFtQixHQUFZLEtBQUssQ0FBQztJQVE1QyxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRU0sZUFBZSxDQUFDLElBQTRCO1FBQ2pELElBQUk7WUFDRixJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDN0MsTUFBTSxHQUFHLEdBQVcsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFT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TUFBTSxFQUFFLEdBQUcsRUFBQyxDQUFDLENBQUM7NEJBQ25DLEtBQUssQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUMsTUFBTSxFQUFFLEdBQUcsRUFBQyxDQUFDLENBQUM7NEJBQ2hDLFVBQVUsQ0FBQyxZQUFZLEVBQUUsT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQUM7eUJBQ3JELENBQUM7cUJBQ0g7aUJBQ0Y7K05BTVEsSUFBSTtzQkFEVixLQUFLO2dCQUlDLEtBQUs7c0JBRFgsS0FBSztnQkFJQyxRQUFRO3NCQURkLEtBQUs7Z0JBSUMsUUFBUTtzQkFEZCxLQUFLO2dCQUlDLFVBQVU7c0JBRGhCLEtBQUs7Z0JBSUMsVUFBVTtzQkFEaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBJbnB1dCwgT25Jbml0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHthbmltYXRlLCBzdGF0ZSwgc3R5bGUsIHRyYW5zaXRpb24sIHRyaWdnZXJ9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xyXG5pbXBvcnQge0ljb25FbnVtfSBmcm9tICcuLi8uLi9jb3JlL2VudW0vaWNvbi5lbnVtJztcclxuaW1wb3J0IHtDdXN0b21GbG9vckdyb3VwUmVzdWx0fSBmcm9tICcuLi8uLi9wbHVnaW5zL2NvcmUzZC9tb2RlbC9jdXN0b20tZmxvb3ItZ3JvdXAtcmVzdWx0JztcclxuaW1wb3J0IHtIb21lZGVjb3JhdG9ySWNvbkNhY2hlU2VydmljZX0gZnJvbSAnLi4vLi4vY29yZS9zZXJ2aWNlL2hvbWVkZWNvcmF0b3ItaWNvbi1jYWNoZS5zZXJ2aWNlJztcclxuaW1wb3J0IHtJdGVtU2VydmljZX0gZnJvbSAnLi4vLi4vcGx1Z2lucy9jb3JlM2Qvc2VydmljZS9pdGVtLnNlcnZpY2UnO1xyXG5pbXBvcnQge0dvb2dsZVRhZ01hbmFnZXJTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlL2dvb2dsZS10YWctbWFuYWdlci5zZXJ2aWNlJztcclxuaW1wb3J0IHtIb21lZGVjb3JhdG9yU2V0dGluZ3NTZXJ2aWNlfSBmcm9tICcuLi8uLi9jb3JlL3NlcnZpY2UvaG9tZWRlY29yYXRvci1zZXR0aW5ncy5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZGlhbG9nLWZ1cm5pdHVyZS1saXN0JyxcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxpc3QubGVuZ3RoID4gMFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidGl0bGVcIj5cclxuICAgICAgICA8aDQgY2xhc3M9XCJsYWJlbFwiICpuZ0lmPVwibGFiZWxcIiBbdGV4dENvbnRlbnRdPVwibGFiZWwgfCBsb2NhbGl6ZVwiPjwvaDQ+XHJcbiAgICAgICAgPHAgY2xhc3M9XCJzdWItbGFiZWxcIiAqbmdJZj1cInN1YkxhYmVsXCIgW3RleHRDb250ZW50XT1cInN1YkxhYmVsIHwgbG9jYWxpemVcIj48L3A+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgIDx1bCBjbGFzcz1cImZ1cm5pdHVyZS1saXN0XCI+XHJcbiAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBpdGVtIG9mIGxpc3Q7IGxldCBpID0gaW5kZXhcIiBbYXR0ci5kYXRhLWluZGV4XT1cImlcIiBjbGFzcz1cImZ1cm5pdHVyZS1pdGVtXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnVybml0dXJlLWl0ZW0td3JhcFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnVybml0dXJlLWl0ZW0tbGVmdFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmdXJuaXR1cmUtaXRlbS13cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8Y28taWNvbiAqbmdJZj1cIml0ZW0uZXJyb3JNZXNzYWdlcy5sZW5ndGggPiAwXCIgY2xhc3M9XCJlcnJvci1leHBhbmQtaGFuZGxlXCIgW2NsYXNzLmV4cGFuZGVkXT1cIml0ZW0uc2hvd0Vycm9yc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbaWNvbkRhdGFdPVwiaWNvblNlcnZpY2UuZ2V0SWNvbihpY29uLkFycm93UG9pbnREb3duKVwiIChjbGljayk9XCJpdGVtLnNob3dFcnJvcnMgPSAhaXRlbS5zaG93RXJyb3JzXCI+PC9jby1pY29uPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmdXJuaXR1cmUtaXRlbS10aXRsZVwiIFt0ZXh0Q29udGVudF09XCJpdGVtLm5hbWVcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPXNob3dDb3B5IGNsYXNzPVwiZnVybml0dXJlLWl0ZW0tY29weVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0ZXh0Q29udGVudF09XCJpdGVtLnRvZ2dsZSA/ICgnQ09QSUVEJyB8IGxvY2FsaXplKSA6ICgnQ09QWScgfCBsb2NhbGl6ZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY29weUZ1cm5pdHVyZU5hbWUoaXRlbSlcIj48L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXJyb3ItbWVzc2FnZXMtd3JhcHBlclwiICpuZ0lmPVwiaXRlbS5zaG93RXJyb3JzXCIgQHNob3dFcnJvck1lc3NhZ2VzPlxyXG4gICAgICAgICAgICAgICAgPGVycm9yLW1lc3NhZ2VzIFttZXNzYWdlc109XCJpdGVtLmVycm9yTWVzc2FnZXNcIj48L2Vycm9yLW1lc3NhZ2VzPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZ1cm5pdHVyZS1pdGVtLXJpZ2h0XCIgKm5nSWY9XCJzaG93RGVsZXRlXCI+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImZ1cm5pdHVyZS1pdGVtLWRlbGV0ZVwiIG1hdFRvb2x0aXA9XCJ7eydSRU1PVkUnIHwgbG9jYWxpemV9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlRnVybml0dXJlKGl0ZW0pXCI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJob21lZGVjb3JhdG9yLW1hdGVyaWFsLWljb25zXCI+ZGVsZXRlPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwhLS0gYWRkIGNvbnZlcnNpb25idG4gaGVyZS0tPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZ1cm5pdHVyZS1pdGVtLWNvbnZlcnNpb24td3JhcFwiICpuZ0lmPVwic2V0dGluZ3NTZXJ2aWNlLnNldHRpbmdzLnNob3dDb252ZXJzaW9uQnV0dG9uc1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnVybml0dXJlLWl0ZW0tY29udmVyc2lvbi1yb3cgZnVybml0dXJlLWl0ZW0tY29udmVyc2lvbi1idXR0b24td3JhcFwiPlxyXG4gICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJzZW5kQ29udmVyc2lvblRvVGFnTWFuYWdlcihpdGVtKVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZ1cm5pdHVyZS1pdGVtLWJ1dHRvbiBmdXJuaXR1cmUtaXRlbS1jb252ZXJzaW9uXCJcclxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIml0ZW0ubWV0YURhdGEuY29udmVyc2lvbkdUTVNlbmQgPyAnZnVybml0dXJlLWl0ZW0tY29udmVyc2lvbi1oaWdobGlnaHQnOicnXCI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJob21lZGVjb3JhdG9yLW1hdGVyaWFsLWljb25zXCI+YWRkX3Nob3BwaW5nX2NhcnQ8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZ1cm5pdHVyZS1pdGVtLWNvbnZlcnNpb24tcm93IGZ1cm5pdHVyZS1pdGVtLWNvbnZlcnNpb24taW5wdXQtd3JhcFwiPlxyXG4gICAgICAgICAgICAgIDxsYWJlbCAqbmdJZj1cIml0ZW0ubWV0YURhdGEuY29udmVyc2lvbkdUTVNlbmRcIiBjbGFzcz1cImZ1cm5pdHVyZS1pdGVtLWNvbnZlcnNpb24taW5wdXQtbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgIHt7ICdTQUxFU1BSSUNFJyB8IGxvY2FsaXplIH19XHJcbiAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJpdGVtLm1ldGFEYXRhLmNvbnZlcnNpb25TdWJtaXR0ZWRQcmljZSA/IGl0ZW0ubWV0YURhdGEuY29udmVyc2lvblN1Ym1pdHRlZFByaWNlIDogJydcIlxyXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFpdGVtLm1ldGFEYXRhLmNvbnZlcnNpb25HVE1TZW5kXCJcclxuICAgICAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cImdldElucHV0VmFsdWUoJGV2ZW50LCBpdGVtKVwiXHJcbiAgICAgICAgICAgICAgICAoa2V5ZG93bi50YWIpPVwiZ2V0SW5wdXRWYWx1ZSgkZXZlbnQsIGl0ZW0pXCJcclxuICAgICAgICAgICAgICAgIFtpZF09XCJpdGVtLmluc3RhbmNlSWRcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImlucHV0LWJpbmRlZC1idXR0b25cIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInN1Ym1pdElucHV0KGl0ZW0uaW5zdGFuY2VJZCwgaXRlbSlcIlxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiaXRlbS5tZXRhRGF0YS5jb252ZXJzaW9uU3VibWl0dGVkUHJpY2UgJiYgaXRlbS5tZXRhRGF0YS5jb252ZXJzaW9uU3VibWl0dGVkUHJpY2UgIT09ICcnID8gJ2lucHV0LWJpbmRlZC1idXR0b24taGlnaGxpZ2h0JyA6ICcnXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJob21lZGVjb3JhdG9yLW1hdGVyaWFsLWljb25zXCI+Y2hlY2tfY2lyY2xlPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2xpPlxyXG4gICAgICA8L3VsPlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cImZ1cm5pdHVyZS1pdGVtLXRvdGFsc1wiICpuZ0lmPVwic2hvd1RvdGFscyAmJiBzZXR0aW5nc1NlcnZpY2Uuc2V0dGluZ3Muc2hvd0NvbnZlcnNpb25CdXR0b25zXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZ1cm5pdHVyZS1pdGVtLXRvdGFsLXJvdyBmdXJuaXR1cmUtaXRlbS10b3RhbFwiPlxyXG4gICAgICAgICAgPHNwYW4+e3sgJ1RPVEFMUFJJQ0UnIHwgbG9jYWxpemUgfX06IHt7IHRvdGFsUHJpY2UgfX08L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZ1cm5pdHVyZS1pdGVtLXRvdGFsLXJvdyBmdXJuaXR1cmUtaXRlbS10b3RhbC1zdWJtaXRcIj5cclxuICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgbmFtZT1cInN1Ym1pdCBwcm9qZWN0IGNvbnZlcnNpb25cIlxyXG4gICAgICAgICAgICBhbHQ9XCJzdWJtaXQgcHJvamVjdCBjb252ZXJzaW9uXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJmdXJuaXR1cmUtaXRlbS1idXR0b24gZnVybml0dXJlLWl0ZW0tdG90YWwtYnV0dG9uXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cInN1Ym1pdFRvdGFsUHJpY2VFdmVudCgpXCJcclxuICAgICAgICAgICAgW25nQ2xhc3NdPVwidG90YWxFdmVudFN1Ym1pdHRlZCA/ICdmdXJuaXR1cmUtaXRlbS10b3RhbC1idXR0b24taGlnaGxpZ2h0JyA6ICcnXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImhvbWVkZWNvcmF0b3ItbWF0ZXJpYWwtaWNvbnNcIiAqbmdJZj1cIiF0b3RhbEV2ZW50U3VibWl0dGVkXCI+YXJyb3dfdXB3YXJkPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiaG9tZWRlY29yYXRvci1tYXRlcmlhbC1pY29uc1wiICpuZ0lmPVwidG90YWxFdmVudFN1Ym1pdHRlZFwiPmNoZWNrX2NpcmNsZTwvbWF0LWljb24+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgYCxcclxuICBzdHlsZVVybHM6IFtcclxuICAgICcuL21vZGVsLWRpYWxvZy1mdXJuaXR1cmUtbGlzdC5jb21wb25lbnQuc2NzcydcclxuICBdLFxyXG4gIGFuaW1hdGlvbnM6IFtcclxuICAgIHRyaWdnZXIoJ3NsaWRlSW5PdXQnLCBbXHJcbiAgICAgIHRyYW5zaXRpb24oJzpsZWF2ZScsIFtcclxuICAgICAgICBzdHlsZSh7dHJhbnNmb3JtOiAndHJhbnNsYXRlWSgwJSknLCBvcGFjaXR5OiAnMSd9KSxcclxuICAgICAgICBhbmltYXRlKCcuM3MnLCBzdHlsZSh7dHJhbnNmb3JtOiAndHJhbnNsYXRlWSgtMTAwJSknLCBvcGFjaXR5OiAnMCd9KSlcclxuICAgICAgXSlcclxuICAgIF0pLFxyXG4gICAgdHJpZ2dlcignc2hvd0Vycm9yTWVzc2FnZXMnLCBbXHJcbiAgICAgIHN0YXRlKCd2b2lkJywgc3R5bGUoe2hlaWdodDogJzAnfSkpLFxyXG4gICAgICBzdGF0ZSgnKicsIHN0eWxlKHtoZWlnaHQ6ICcqJ30pKSxcclxuICAgICAgdHJhbnNpdGlvbigndm9pZCA8PT4gKicsIGFuaW1hdGUoJy4zcyBlYXNlLWluLW91dCcpKVxyXG4gICAgXSlcclxuICBdXHJcbn0pXHJcblxyXG5leHBvcnQgY2xhc3MgTW9kZWxEaWFsb2dGdXJuaXR1cmVMaXN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBwdWJsaWMgcmVhZG9ubHkgaWNvbjogdHlwZW9mIEljb25FbnVtID0gSWNvbkVudW07XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGxpc3Q6IEN1c3RvbUZsb29yR3JvdXBSZXN1bHRbXSA9IFtdO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBsYWJlbDogc3RyaW5nO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzdWJMYWJlbDogc3RyaW5nO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzaG93Q29weTogYm9vbGVhbjtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2hvd0RlbGV0ZTogYm9vbGVhbjtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2hvd1RvdGFsczogYm9vbGVhbjtcclxuXHJcbiAgcHVibGljIHRvdGFsUHJpY2U6IHN0cmluZyA9ICcwJztcclxuICBwdWJsaWMgdG90YWxFdmVudFN1Ym1pdHRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBpY29uU2VydmljZTogSG9tZWRlY29yYXRvckljb25DYWNoZVNlcnZpY2UsXHJcbiAgICBwdWJsaWMgc2V0dGluZ3NTZXJ2aWNlOiBIb21lZGVjb3JhdG9yU2V0dGluZ3NTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfaXRlbVNlcnZpY2U6IEl0ZW1TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfZ29vZ2xlVGFnTWFuYWdlclNlcnZpY2U6IEdvb2dsZVRhZ01hbmFnZXJTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuY2FsY3VsYXRlVG90YWwoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyByZW1vdmVGdXJuaXR1cmUoaXRlbTogQ3VzdG9tRmxvb3JHcm91cFJlc3VsdCk6IHZvaWQge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5faXRlbVNlcnZpY2UucmVtb3ZlSXRlbShpdGVtLmZ1cm5pdHVyZSk7XHJcbiAgICAgIGNvbnN0IGlkeDogbnVtYmVyID0gdGhpcy5saXN0LmZpbmRJbmRleChsID0+IGwuaW5zdGFuY2VJZCA9PT0gaXRlbS5pbnN0YW5jZUlkKTtcclxuICAgICAgdGhpcy5saXN0LnNwbGljZShpZHgsIDEpO1xyXG4gICAgfSBjYXRjaCAoZSkge1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGNvcHlGdXJuaXR1cmVOYW1lKGl0ZW06IEN1c3RvbUZsb29yR3JvdXBSZXN1bHQpOiB2b2lkIHtcclxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NvcHknLCAoZTogQ2xpcGJvYXJkRXZlbnQpID0+IHtcclxuICAgICAgZS5jbGlwYm9hcmREYXRhLnNldERhdGEoJ3RleHQvcGxhaW4nLCAoaXRlbS5uYW1lKSk7XHJcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignY29weScsIG51bGwpO1xyXG4gICAgfSk7XHJcbiAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgnY29weScpO1xyXG4gICAgdGhpcy5saXN0LmZvckVhY2gobCA9PiBsLnRvZ2dsZSA9IGZhbHNlKTtcclxuICAgIGl0ZW0udG9nZ2xlID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZW5kQ29udmVyc2lvblRvVGFnTWFuYWdlcihhcnRpY2xlOiBhbnkpOiB2b2lkIHtcclxuICAgIGxldCBjb252ZXJzaW9uQWN0aW9uOiBzdHJpbmc7XHJcbiAgICBpZiAoYXJ0aWNsZS5tZXRhRGF0YS5jb252ZXJzaW9uR1RNU2VuZCkge1xyXG4gICAgICBjb252ZXJzaW9uQWN0aW9uID0gJ3JlbW92ZSc7XHJcbiAgICAgIGFydGljbGUubWV0YURhdGEuY29udmVyc2lvbkdUTVNlbmQgPSBmYWxzZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnZlcnNpb25BY3Rpb24gPSAnYWRkJztcclxuICAgICAgYXJ0aWNsZS5tZXRhRGF0YS5jb252ZXJzaW9uR1RNU2VuZCA9IHRydWU7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9nb29nbGVUYWdNYW5hZ2VyU2VydmljZS5zZW5kUHJvZHVjdENvbnZlcnNpb24oYXJ0aWNsZS5tZXRhRGF0YSwgY29udmVyc2lvbkFjdGlvbik7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2VuZFByaWNlRXZlbnQoaW5wdXQ6IHN0cmluZywgYXJ0aWNsZTogQ3VzdG9tRmxvb3JHcm91cFJlc3VsdCk6IHZvaWQge1xyXG4gICAgY29uc3QgaW5wdXRWYWx1ZTogc3RyaW5nID0gaW5wdXQ7XHJcbiAgICBsZXQgY29udmVyc2lvbkFjdGlvbjogc3RyaW5nO1xyXG4gICAgaWYgKGlucHV0VmFsdWUgPT09ICcnIHx8IGlucHV0VmFsdWUgPT09IG51bGwpIHtcclxuICAgICAgY29udmVyc2lvbkFjdGlvbiA9ICdyZW1vdmUnO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29udmVyc2lvbkFjdGlvbiA9ICdhZGQnO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fZ29vZ2xlVGFnTWFuYWdlclNlcnZpY2Uuc2VuZFByb2R1Y3RQcmljZUNvbnZlcnNpb24oYXJ0aWNsZS5tZXRhRGF0YSwgY29udmVyc2lvbkFjdGlvbiwgaW5wdXRWYWx1ZSk7XHJcbiAgICBmb3IgKGNvbnN0IGxpc3RJdGVtIG9mIHRoaXMubGlzdCkge1xyXG4gICAgICBpZiAobGlzdEl0ZW0uaW5zdGFuY2VJZCA9PT0gYXJ0aWNsZS5pbnN0YW5jZUlkKSB7XHJcbiAgICAgICAgbGlzdEl0ZW0ubWV0YURhdGEuY29udmVyc2lvblN1Ym1pdHRlZFByaWNlID0gaW5wdXRWYWx1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5jYWxjdWxhdGVUb3RhbCgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN1Ym1pdElucHV0KGlucHV0SWQ6IHN0cmluZywgaXRlbTogQ3VzdG9tRmxvb3JHcm91cFJlc3VsdCk6IHZvaWQge1xyXG4gICAgY29uc3QgaW5wdXRWYWx1ZTogc3RyaW5nID0gKDxIVE1MSW5wdXRFbGVtZW50PmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlucHV0SWQpKS52YWx1ZTtcclxuICAgIHRoaXMuc2VuZFByaWNlRXZlbnQoaW5wdXRWYWx1ZSwgaXRlbSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0SW5wdXRWYWx1ZShpbnB1dDogYW55LCBhcnRpY2xlOiBDdXN0b21GbG9vckdyb3VwUmVzdWx0KTogdm9pZCB7XHJcbiAgICBjb25zdCBpbnB1dFZhbHVlOiBzdHJpbmcgPSBpbnB1dC50YXJnZXQudmFsdWU7XHJcbiAgICB0aGlzLnNlbmRQcmljZUV2ZW50KGlucHV0VmFsdWUsIGFydGljbGUpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN1Ym1pdFRvdGFsUHJpY2VFdmVudCgpOiB2b2lkIHtcclxuICAgIHRoaXMuY2FsY3VsYXRlVG90YWwoKTtcclxuICAgIGxldCBjb252ZXJzaW9uVHlwZTogc3RyaW5nO1xyXG4gICAgaWYgKHRoaXMudG90YWxFdmVudFN1Ym1pdHRlZCkge1xyXG4gICAgICBjb252ZXJzaW9uVHlwZSA9ICdyZW1vdmUnO1xyXG4gICAgICB0aGlzLnRvdGFsRXZlbnRTdWJtaXR0ZWQgPSBmYWxzZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnZlcnNpb25UeXBlID0gJ2FkZCc7XHJcbiAgICAgIHRoaXMudG90YWxFdmVudFN1Ym1pdHRlZCA9IHRydWU7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9nb29nbGVUYWdNYW5hZ2VyU2VydmljZS5zZW5kUHJvamVjdENvbnZlcnNpb24odGhpcy50b3RhbFByaWNlLCBjb252ZXJzaW9uVHlwZSk7XHJcblxyXG4gIH1cclxuXHJcbiAgcHVibGljIGNhbGN1bGF0ZVRvdGFsKCk6IHZvaWQge1xyXG4gICAgbGV0IHByaWNlOiBudW1iZXIgPSAwO1xyXG4gICAgZm9yIChjb25zdCBpdGVtIG9mIHRoaXMubGlzdCkge1xyXG4gICAgICBpZiAoaXRlbS5tZXRhRGF0YS5jb252ZXJzaW9uU3VibWl0dGVkUHJpY2UgJiYgaXRlbS5tZXRhRGF0YS5jb252ZXJzaW9uU3VibWl0dGVkUHJpY2UgIT09ICcnKSB7XHJcbiAgICAgICAgLy8gY29udmVydCB0byBwcmljZS4wMFxyXG4gICAgICAgIGNvbnN0IHByaWNlVG9Eb3Q6IHN0cmluZyA9IGl0ZW0ubWV0YURhdGEuY29udmVyc2lvblN1Ym1pdHRlZFByaWNlLnJlcGxhY2UoJywnLCAnLicpO1xyXG4gICAgICAgIHByaWNlICs9IHBhcnNlRmxvYXQocHJpY2VUb0RvdCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMudG90YWxQcmljZSA9IHByaWNlLnRvU3RyaW5nKCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
325
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwtZGlhbG9nLWZ1cm5pdHVyZS1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jbGllbnQvYXBwL3NoYXJlZC9tb2RlbC1kaWFsb2cvbW9kZWwtZGlhbG9nLWZ1cm5pdHVyZS1saXN0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBUyxNQUFNLGVBQWUsQ0FBQztBQUN2RCxPQUFPLEVBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQy9FLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7Ozs7Ozs7O0FBK0duRCxNQUFNLE9BQU8saUNBQWlDO0lBd0I1QyxZQUNTLFdBQTBDLEVBQzFDLGVBQTZDLEVBQzVDLFlBQXlCLEVBQ3pCLHdCQUFpRDtRQUhsRCxnQkFBVyxHQUFYLFdBQVcsQ0FBK0I7UUFDMUMsb0JBQWUsR0FBZixlQUFlLENBQThCO1FBQzVDLGlCQUFZLEdBQVosWUFBWSxDQUFhO1FBQ3pCLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBeUI7UUEzQjNDLFNBQUksR0FBb0IsUUFBUSxDQUFDO1FBRzFDLFNBQUksR0FBNkIsRUFBRSxDQUFDO1FBaUJwQyxlQUFVLEdBQVcsR0FBRyxDQUFDO1FBQ3pCLHdCQUFtQixHQUFZLEtBQUssQ0FBQztJQVE1QyxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRU0sZUFBZSxDQUFDLElBQTRCO1FBQ2pELElBQUk7WUFDRixJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDN0MsTUFBTSxHQUFHLEdBQVcsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFT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TUFBTSxFQUFFLEdBQUcsRUFBQyxDQUFDLENBQUM7NEJBQ25DLEtBQUssQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUMsTUFBTSxFQUFFLEdBQUcsRUFBQyxDQUFDLENBQUM7NEJBQ2hDLFVBQVUsQ0FBQyxZQUFZLEVBQUUsT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQUM7eUJBQ3JELENBQUM7cUJBQ0g7aUJBQ0Y7K05BTVEsSUFBSTtzQkFEVixLQUFLO2dCQUlDLEtBQUs7c0JBRFgsS0FBSztnQkFJQyxRQUFRO3NCQURkLEtBQUs7Z0JBSUMsUUFBUTtzQkFEZCxLQUFLO2dCQUlDLFVBQVU7c0JBRGhCLEtBQUs7Z0JBSUMsVUFBVTtzQkFEaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBJbnB1dCwgT25Jbml0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHthbmltYXRlLCBzdGF0ZSwgc3R5bGUsIHRyYW5zaXRpb24sIHRyaWdnZXJ9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xyXG5pbXBvcnQge0ljb25FbnVtfSBmcm9tICcuLi8uLi9jb3JlL2VudW0vaWNvbi5lbnVtJztcclxuaW1wb3J0IHtDdXN0b21GbG9vckdyb3VwUmVzdWx0fSBmcm9tICcuLi8uLi9wbHVnaW5zL2NvcmUzZC9tb2RlbC9jdXN0b20tZmxvb3ItZ3JvdXAtcmVzdWx0JztcclxuaW1wb3J0IHtIb21lZGVjb3JhdG9ySWNvbkNhY2hlU2VydmljZX0gZnJvbSAnLi4vLi4vY29yZS9zZXJ2aWNlL2hvbWVkZWNvcmF0b3ItaWNvbi1jYWNoZS5zZXJ2aWNlJztcclxuaW1wb3J0IHtJdGVtU2VydmljZX0gZnJvbSAnLi4vLi4vcGx1Z2lucy9jb3JlM2Qvc2VydmljZS9pdGVtLnNlcnZpY2UnO1xyXG5pbXBvcnQge0dvb2dsZVRhZ01hbmFnZXJTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlL2dvb2dsZS10YWctbWFuYWdlci5zZXJ2aWNlJztcclxuaW1wb3J0IHtIb21lZGVjb3JhdG9yU2V0dGluZ3NTZXJ2aWNlfSBmcm9tICcuLi8uLi9jb3JlL3NlcnZpY2UvaG9tZWRlY29yYXRvci1zZXR0aW5ncy5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZGlhbG9nLWZ1cm5pdHVyZS1saXN0JyxcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxpc3QubGVuZ3RoID4gMFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidGl0bGVcIj5cclxuICAgICAgICA8aDQgY2xhc3M9XCJsYWJlbFwiICpuZ0lmPVwibGFiZWxcIiBbdGV4dENvbnRlbnRdPVwibGFiZWwgfCBsb2NhbGl6ZVwiPjwvaDQ+XHJcbiAgICAgICAgPHAgY2xhc3M9XCJzdWItbGFiZWxcIiAqbmdJZj1cInN1YkxhYmVsXCIgW3RleHRDb250ZW50XT1cInN1YkxhYmVsIHwgbG9jYWxpemVcIj48L3A+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgIDx1bCBjbGFzcz1cImZ1cm5pdHVyZS1saXN0XCI+XHJcbiAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBpdGVtIG9mIGxpc3Q7IGxldCBpID0gaW5kZXhcIiBbYXR0ci5kYXRhLWluZGV4XT1cImlcIiBjbGFzcz1cImZ1cm5pdHVyZS1pdGVtXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnVybml0dXJlLWl0ZW0td3JhcFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnVybml0dXJlLWl0ZW0tbGVmdFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmdXJuaXR1cmUtaXRlbS13cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8Y28taWNvbiAqbmdJZj1cIml0ZW0uZXJyb3JNZXNzYWdlcy5sZW5ndGggPiAwXCIgY2xhc3M9XCJlcnJvci1leHBhbmQtaGFuZGxlXCIgW2NsYXNzLmV4cGFuZGVkXT1cIml0ZW0uc2hvd0Vycm9yc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbaWNvbkRhdGFdPVwiaWNvblNlcnZpY2UuZ2V0SWNvbihpY29uLkFycm93UG9pbnREb3duKVwiIChjbGljayk9XCJpdGVtLnNob3dFcnJvcnMgPSAhaXRlbS5zaG93RXJyb3JzXCI+PC9jby1pY29uPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmdXJuaXR1cmUtaXRlbS10aXRsZVwiIFt0ZXh0Q29udGVudF09XCJpdGVtLm5hbWUgPyBpdGVtLm5hbWUgOiBpdGVtLnNrdVwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9c2hvd0NvcHkgY2xhc3M9XCJmdXJuaXR1cmUtaXRlbS1jb3B5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3RleHRDb250ZW50XT1cIml0ZW0udG9nZ2xlID8gKCdDT1BJRUQnIHwgbG9jYWxpemUpIDogKCdDT1BZJyB8IGxvY2FsaXplKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjb3B5RnVybml0dXJlTmFtZShpdGVtKVwiPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJlcnJvci1tZXNzYWdlcy13cmFwcGVyXCIgKm5nSWY9XCJpdGVtLnNob3dFcnJvcnNcIiBAc2hvd0Vycm9yTWVzc2FnZXM+XHJcbiAgICAgICAgICAgICAgICA8ZXJyb3ItbWVzc2FnZXMgW21lc3NhZ2VzXT1cIml0ZW0uZXJyb3JNZXNzYWdlc1wiPjwvZXJyb3ItbWVzc2FnZXM+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnVybml0dXJlLWl0ZW0tcmlnaHRcIiAqbmdJZj1cInNob3dEZWxldGVcIj5cclxuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZnVybml0dXJlLWl0ZW0tZGVsZXRlXCIgbWF0VG9vbHRpcD1cInt7J1JFTU9WRScgfCBsb2NhbGl6ZX19XCJcclxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmVGdXJuaXR1cmUoaXRlbSlcIj5cclxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImhvbWVkZWNvcmF0b3ItbWF0ZXJpYWwtaWNvbnNcIj5kZWxldGU8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPCEtLSBhZGQgY29udmVyc2lvbmJ0biBoZXJlLS0+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnVybml0dXJlLWl0ZW0tY29udmVyc2lvbi13cmFwXCIgKm5nSWY9XCJzZXR0aW5nc1NlcnZpY2Uuc2V0dGluZ3Muc2hvd0NvbnZlcnNpb25CdXR0b25zXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmdXJuaXR1cmUtaXRlbS1jb252ZXJzaW9uLXJvdyBmdXJuaXR1cmUtaXRlbS1jb252ZXJzaW9uLWJ1dHRvbi13cmFwXCI+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbmRDb252ZXJzaW9uVG9UYWdNYW5hZ2VyKGl0ZW0pXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZnVybml0dXJlLWl0ZW0tYnV0dG9uIGZ1cm5pdHVyZS1pdGVtLWNvbnZlcnNpb25cIlxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiaXRlbS5tZXRhRGF0YS5jb252ZXJzaW9uR1RNU2VuZCA/ICdmdXJuaXR1cmUtaXRlbS1jb252ZXJzaW9uLWhpZ2hsaWdodCc6JydcIj5cclxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImhvbWVkZWNvcmF0b3ItbWF0ZXJpYWwtaWNvbnNcIj5hZGRfc2hvcHBpbmdfY2FydDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnVybml0dXJlLWl0ZW0tY29udmVyc2lvbi1yb3cgZnVybml0dXJlLWl0ZW0tY29udmVyc2lvbi1pbnB1dC13cmFwXCI+XHJcbiAgICAgICAgICAgICAgPGxhYmVsICpuZ0lmPVwiaXRlbS5tZXRhRGF0YS5jb252ZXJzaW9uR1RNU2VuZFwiIGNsYXNzPVwiZnVybml0dXJlLWl0ZW0tY29udmVyc2lvbi1pbnB1dC1sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAge3sgJ1NBTEVTUFJJQ0UnIHwgbG9jYWxpemUgfX1cclxuICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cIml0ZW0ubWV0YURhdGEuY29udmVyc2lvblN1Ym1pdHRlZFByaWNlID8gaXRlbS5tZXRhRGF0YS5jb252ZXJzaW9uU3VibWl0dGVkUHJpY2UgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWl0ZW0ubWV0YURhdGEuY29udmVyc2lvbkdUTVNlbmRcIlxyXG4gICAgICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwiZ2V0SW5wdXRWYWx1ZSgkZXZlbnQsIGl0ZW0pXCJcclxuICAgICAgICAgICAgICAgIChrZXlkb3duLnRhYik9XCJnZXRJbnB1dFZhbHVlKCRldmVudCwgaXRlbSlcIlxyXG4gICAgICAgICAgICAgICAgW2lkXT1cIml0ZW0uaW5zdGFuY2VJZFwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiaW5wdXQtYmluZGVkLWJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwic3VibWl0SW5wdXQoaXRlbS5pbnN0YW5jZUlkLCBpdGVtKVwiXHJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJpdGVtLm1ldGFEYXRhLmNvbnZlcnNpb25TdWJtaXR0ZWRQcmljZSAmJiBpdGVtLm1ldGFEYXRhLmNvbnZlcnNpb25TdWJtaXR0ZWRQcmljZSAhPT0gJycgPyAnaW5wdXQtYmluZGVkLWJ1dHRvbi1oaWdobGlnaHQnIDogJydcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImhvbWVkZWNvcmF0b3ItbWF0ZXJpYWwtaWNvbnNcIj5jaGVja19jaXJjbGU8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbGk+XHJcbiAgICAgIDwvdWw+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZnVybml0dXJlLWl0ZW0tdG90YWxzXCIgKm5nSWY9XCJzaG93VG90YWxzICYmIHNldHRpbmdzU2VydmljZS5zZXR0aW5ncy5zaG93Q29udmVyc2lvbkJ1dHRvbnNcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZnVybml0dXJlLWl0ZW0tdG90YWwtcm93IGZ1cm5pdHVyZS1pdGVtLXRvdGFsXCI+XHJcbiAgICAgICAgICA8c3Bhbj57eyAnVE9UQUxQUklDRScgfCBsb2NhbGl6ZSB9fToge3sgdG90YWxQcmljZSB9fTwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZnVybml0dXJlLWl0ZW0tdG90YWwtcm93IGZ1cm5pdHVyZS1pdGVtLXRvdGFsLXN1Ym1pdFwiPlxyXG4gICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICBuYW1lPVwic3VibWl0IHByb2plY3QgY29udmVyc2lvblwiXHJcbiAgICAgICAgICAgIGFsdD1cInN1Ym1pdCBwcm9qZWN0IGNvbnZlcnNpb25cIlxyXG4gICAgICAgICAgICBjbGFzcz1cImZ1cm5pdHVyZS1pdGVtLWJ1dHRvbiBmdXJuaXR1cmUtaXRlbS10b3RhbC1idXR0b25cIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwic3VibWl0VG90YWxQcmljZUV2ZW50KClcIlxyXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ0b3RhbEV2ZW50U3VibWl0dGVkID8gJ2Z1cm5pdHVyZS1pdGVtLXRvdGFsLWJ1dHRvbi1oaWdobGlnaHQnIDogJydcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiaG9tZWRlY29yYXRvci1tYXRlcmlhbC1pY29uc1wiICpuZ0lmPVwiIXRvdGFsRXZlbnRTdWJtaXR0ZWRcIj5hcnJvd191cHdhcmQ8L21hdC1pY29uPlxyXG4gICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJob21lZGVjb3JhdG9yLW1hdGVyaWFsLWljb25zXCIgKm5nSWY9XCJ0b3RhbEV2ZW50U3VibWl0dGVkXCI+Y2hlY2tfY2lyY2xlPC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICBgLFxyXG4gIHN0eWxlVXJsczogW1xyXG4gICAgJy4vbW9kZWwtZGlhbG9nLWZ1cm5pdHVyZS1saXN0LmNvbXBvbmVudC5zY3NzJ1xyXG4gIF0sXHJcbiAgYW5pbWF0aW9uczogW1xyXG4gICAgdHJpZ2dlcignc2xpZGVJbk91dCcsIFtcclxuICAgICAgdHJhbnNpdGlvbignOmxlYXZlJywgW1xyXG4gICAgICAgIHN0eWxlKHt0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKDAlKScsIG9wYWNpdHk6ICcxJ30pLFxyXG4gICAgICAgIGFuaW1hdGUoJy4zcycsIHN0eWxlKHt0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKC0xMDAlKScsIG9wYWNpdHk6ICcwJ30pKVxyXG4gICAgICBdKVxyXG4gICAgXSksXHJcbiAgICB0cmlnZ2VyKCdzaG93RXJyb3JNZXNzYWdlcycsIFtcclxuICAgICAgc3RhdGUoJ3ZvaWQnLCBzdHlsZSh7aGVpZ2h0OiAnMCd9KSksXHJcbiAgICAgIHN0YXRlKCcqJywgc3R5bGUoe2hlaWdodDogJyonfSkpLFxyXG4gICAgICB0cmFuc2l0aW9uKCd2b2lkIDw9PiAqJywgYW5pbWF0ZSgnLjNzIGVhc2UtaW4tb3V0JykpXHJcbiAgICBdKVxyXG4gIF1cclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBNb2RlbERpYWxvZ0Z1cm5pdHVyZUxpc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIHB1YmxpYyByZWFkb25seSBpY29uOiB0eXBlb2YgSWNvbkVudW0gPSBJY29uRW51bTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgbGlzdDogQ3VzdG9tRmxvb3JHcm91cFJlc3VsdFtdID0gW107XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGxhYmVsOiBzdHJpbmc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHN1YkxhYmVsOiBzdHJpbmc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNob3dDb3B5OiBib29sZWFuO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzaG93RGVsZXRlOiBib29sZWFuO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzaG93VG90YWxzOiBib29sZWFuO1xyXG5cclxuICBwdWJsaWMgdG90YWxQcmljZTogc3RyaW5nID0gJzAnO1xyXG4gIHB1YmxpYyB0b3RhbEV2ZW50U3VibWl0dGVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIGljb25TZXJ2aWNlOiBIb21lZGVjb3JhdG9ySWNvbkNhY2hlU2VydmljZSxcclxuICAgIHB1YmxpYyBzZXR0aW5nc1NlcnZpY2U6IEhvbWVkZWNvcmF0b3JTZXR0aW5nc1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9pdGVtU2VydmljZTogSXRlbVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9nb29nbGVUYWdNYW5hZ2VyU2VydmljZTogR29vZ2xlVGFnTWFuYWdlclNlcnZpY2VcclxuICApIHtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5jYWxjdWxhdGVUb3RhbCgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHJlbW92ZUZ1cm5pdHVyZShpdGVtOiBDdXN0b21GbG9vckdyb3VwUmVzdWx0KTogdm9pZCB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLl9pdGVtU2VydmljZS5yZW1vdmVJdGVtKGl0ZW0uZnVybml0dXJlKTtcclxuICAgICAgY29uc3QgaWR4OiBudW1iZXIgPSB0aGlzLmxpc3QuZmluZEluZGV4KGwgPT4gbC5pbnN0YW5jZUlkID09PSBpdGVtLmluc3RhbmNlSWQpO1xyXG4gICAgICB0aGlzLmxpc3Quc3BsaWNlKGlkeCwgMSk7XHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY29weUZ1cm5pdHVyZU5hbWUoaXRlbTogQ3VzdG9tRmxvb3JHcm91cFJlc3VsdCk6IHZvaWQge1xyXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY29weScsIChlOiBDbGlwYm9hcmRFdmVudCkgPT4ge1xyXG4gICAgICBlLmNsaXBib2FyZERhdGEuc2V0RGF0YSgndGV4dC9wbGFpbicsIChpdGVtLm5hbWUpKTtcclxuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdjb3B5JywgbnVsbCk7XHJcbiAgICB9KTtcclxuICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCdjb3B5Jyk7XHJcbiAgICB0aGlzLmxpc3QuZm9yRWFjaChsID0+IGwudG9nZ2xlID0gZmFsc2UpO1xyXG4gICAgaXRlbS50b2dnbGUgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNlbmRDb252ZXJzaW9uVG9UYWdNYW5hZ2VyKGFydGljbGU6IGFueSk6IHZvaWQge1xyXG4gICAgbGV0IGNvbnZlcnNpb25BY3Rpb246IHN0cmluZztcclxuICAgIGlmIChhcnRpY2xlLm1ldGFEYXRhLmNvbnZlcnNpb25HVE1TZW5kKSB7XHJcbiAgICAgIGNvbnZlcnNpb25BY3Rpb24gPSAncmVtb3ZlJztcclxuICAgICAgYXJ0aWNsZS5tZXRhRGF0YS5jb252ZXJzaW9uR1RNU2VuZCA9IGZhbHNlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29udmVyc2lvbkFjdGlvbiA9ICdhZGQnO1xyXG4gICAgICBhcnRpY2xlLm1ldGFEYXRhLmNvbnZlcnNpb25HVE1TZW5kID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIHRoaXMuX2dvb2dsZVRhZ01hbmFnZXJTZXJ2aWNlLnNlbmRQcm9kdWN0Q29udmVyc2lvbihhcnRpY2xlLm1ldGFEYXRhLCBjb252ZXJzaW9uQWN0aW9uKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZW5kUHJpY2VFdmVudChpbnB1dDogc3RyaW5nLCBhcnRpY2xlOiBDdXN0b21GbG9vckdyb3VwUmVzdWx0KTogdm9pZCB7XHJcbiAgICBjb25zdCBpbnB1dFZhbHVlOiBzdHJpbmcgPSBpbnB1dDtcclxuICAgIGxldCBjb252ZXJzaW9uQWN0aW9uOiBzdHJpbmc7XHJcbiAgICBpZiAoaW5wdXRWYWx1ZSA9PT0gJycgfHwgaW5wdXRWYWx1ZSA9PT0gbnVsbCkge1xyXG4gICAgICBjb252ZXJzaW9uQWN0aW9uID0gJ3JlbW92ZSc7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb252ZXJzaW9uQWN0aW9uID0gJ2FkZCc7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9nb29nbGVUYWdNYW5hZ2VyU2VydmljZS5zZW5kUHJvZHVjdFByaWNlQ29udmVyc2lvbihhcnRpY2xlLm1ldGFEYXRhLCBjb252ZXJzaW9uQWN0aW9uLCBpbnB1dFZhbHVlKTtcclxuICAgIGZvciAoY29uc3QgbGlzdEl0ZW0gb2YgdGhpcy5saXN0KSB7XHJcbiAgICAgIGlmIChsaXN0SXRlbS5pbnN0YW5jZUlkID09PSBhcnRpY2xlLmluc3RhbmNlSWQpIHtcclxuICAgICAgICBsaXN0SXRlbS5tZXRhRGF0YS5jb252ZXJzaW9uU3VibWl0dGVkUHJpY2UgPSBpbnB1dFZhbHVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLmNhbGN1bGF0ZVRvdGFsKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3VibWl0SW5wdXQoaW5wdXRJZDogc3RyaW5nLCBpdGVtOiBDdXN0b21GbG9vckdyb3VwUmVzdWx0KTogdm9pZCB7XHJcbiAgICBjb25zdCBpbnB1dFZhbHVlOiBzdHJpbmcgPSAoPEhUTUxJbnB1dEVsZW1lbnQ+ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaW5wdXRJZCkpLnZhbHVlO1xyXG4gICAgdGhpcy5zZW5kUHJpY2VFdmVudChpbnB1dFZhbHVlLCBpdGVtKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRJbnB1dFZhbHVlKGlucHV0OiBhbnksIGFydGljbGU6IEN1c3RvbUZsb29yR3JvdXBSZXN1bHQpOiB2b2lkIHtcclxuICAgIGNvbnN0IGlucHV0VmFsdWU6IHN0cmluZyA9IGlucHV0LnRhcmdldC52YWx1ZTtcclxuICAgIHRoaXMuc2VuZFByaWNlRXZlbnQoaW5wdXRWYWx1ZSwgYXJ0aWNsZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3VibWl0VG90YWxQcmljZUV2ZW50KCk6IHZvaWQge1xyXG4gICAgdGhpcy5jYWxjdWxhdGVUb3RhbCgpO1xyXG4gICAgbGV0IGNvbnZlcnNpb25UeXBlOiBzdHJpbmc7XHJcbiAgICBpZiAodGhpcy50b3RhbEV2ZW50U3VibWl0dGVkKSB7XHJcbiAgICAgIGNvbnZlcnNpb25UeXBlID0gJ3JlbW92ZSc7XHJcbiAgICAgIHRoaXMudG90YWxFdmVudFN1Ym1pdHRlZCA9IGZhbHNlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29udmVyc2lvblR5cGUgPSAnYWRkJztcclxuICAgICAgdGhpcy50b3RhbEV2ZW50U3VibWl0dGVkID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIHRoaXMuX2dvb2dsZVRhZ01hbmFnZXJTZXJ2aWNlLnNlbmRQcm9qZWN0Q29udmVyc2lvbih0aGlzLnRvdGFsUHJpY2UsIGNvbnZlcnNpb25UeXBlKTtcclxuXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2FsY3VsYXRlVG90YWwoKTogdm9pZCB7XHJcbiAgICBsZXQgcHJpY2U6IG51bWJlciA9IDA7XHJcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdGhpcy5saXN0KSB7XHJcbiAgICAgIGlmIChpdGVtLm1ldGFEYXRhLmNvbnZlcnNpb25TdWJtaXR0ZWRQcmljZSAmJiBpdGVtLm1ldGFEYXRhLmNvbnZlcnNpb25TdWJtaXR0ZWRQcmljZSAhPT0gJycpIHtcclxuICAgICAgICAvLyBjb252ZXJ0IHRvIHByaWNlLjAwXHJcbiAgICAgICAgY29uc3QgcHJpY2VUb0RvdDogc3RyaW5nID0gaXRlbS5tZXRhRGF0YS5jb252ZXJzaW9uU3VibWl0dGVkUHJpY2UucmVwbGFjZSgnLCcsICcuJyk7XHJcbiAgICAgICAgcHJpY2UgKz0gcGFyc2VGbG9hdChwcmljZVRvRG90KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy50b3RhbFByaWNlID0gcHJpY2UudG9TdHJpbmcoKTtcclxuICB9XHJcbn1cclxuIl19
|