@wizishop/wizi-block 14.1.17-beta → 14.1.19-beta

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.
@@ -13,13 +13,10 @@ import * as i4 from "../../services/utils/external-config.service";
13
13
  import * as i5 from "@angular/common";
14
14
  import * as i6 from "@angular/cdk/drag-drop";
15
15
  import * as i7 from "../../shared/components/structure-tools/structure-tools.component";
16
- import * as i8 from "../../shared/components/loader/loader.component";
17
- import * as i9 from "@wizishop/ng-wizi-bulma";
18
- import * as i10 from "@angular/cdk/scrolling";
19
- import * as i11 from "@angular/cdk-experimental/scrolling";
20
- import * as i12 from "../previews/previews.component";
21
- import * as i13 from "../container-block/container-block.component";
22
- import * as i14 from "@ngx-translate/core";
16
+ import * as i8 from "@wizishop/ng-wizi-bulma";
17
+ import * as i9 from "../previews/previews.component";
18
+ import * as i10 from "../container-block/container-block.component";
19
+ import * as i11 from "@ngx-translate/core";
23
20
  export class BlocksComponent {
24
21
  constructor(wiziBlockService, resolver, contentService, configService, externalConfigService) {
25
22
  this.wiziBlockService = wiziBlockService;
@@ -33,8 +30,6 @@ export class BlocksComponent {
33
30
  this.blockHover = false;
34
31
  this.configActive = false;
35
32
  this.parsedContent = [];
36
- this.isLoading = false;
37
- this.allWiziblocksLoaded = false;
38
33
  }
39
34
  ngOnInit() {
40
35
  this.translation = this.wiziBlockService.getTranslation();
@@ -88,9 +83,6 @@ export class BlocksComponent {
88
83
  }
89
84
  baseDto.type = v.type();
90
85
  this.contentService.setContents(baseDto);
91
- setTimeout(() => {
92
- this.goToLastElement();
93
- }, 100);
94
86
  if (baseDto.forms.length) {
95
87
  this.configService.config = baseDto;
96
88
  }
@@ -113,60 +105,6 @@ export class BlocksComponent {
113
105
  }
114
106
  });
115
107
  }
116
- goToLastElement() {
117
- setTimeout(() => {
118
- if (!this.allWiziblocksLoaded) {
119
- this.isLoading = true;
120
- }
121
- const wiziblocksList = document.getElementsByClassName('wb-blocks__container');
122
- const childElement = (wiziblocksList[wiziblocksList.length - 1]);
123
- const parent = (document.getElementsByClassName('wb-content')[0].getElementsByClassName('cdk-virtual-scroll-viewport')[0]);
124
- const parentViewableArea = {
125
- height: parent.clientHeight,
126
- width: parent.clientWidth
127
- };
128
- const parentBoundingClientRect = parent.getBoundingClientRect();
129
- const childBoundingClientRect = childElement.getBoundingClientRect();
130
- var isViewable = (childBoundingClientRect.top >= parentBoundingClientRect.top)
131
- && (childBoundingClientRect.bottom <= parentBoundingClientRect.top + parentViewableArea.height);
132
- const currentScroll = parent.scrollTop + parentViewableArea.height;
133
- const maxHeightElement = (parent.getElementsByClassName('cdk-virtual-scroll-content-wrapper')[0]);
134
- const maxHeight = maxHeightElement.offsetHeight;
135
- console.log('is viewable ?');
136
- console.log('child top ' + childBoundingClientRect.top);
137
- console.log('child bottom ' + childBoundingClientRect.bottom);
138
- console.log('parent top ' + parentBoundingClientRect.top);
139
- console.log('parent height ' + parentViewableArea.height);
140
- console.log(childBoundingClientRect.top >= parentBoundingClientRect.top);
141
- console.log(childBoundingClientRect.bottom <= parentBoundingClientRect.top + parentViewableArea.height);
142
- console.log('maxHeight ' + maxHeight);
143
- console.log('current scroll ' + currentScroll);
144
- console.log(currentScroll >= maxHeight);
145
- if (isViewable || (currentScroll >= maxHeight)) {
146
- // Second check if last element is viewable
147
- setTimeout(() => {
148
- let checkCurrentScroll = parent.scrollTop + parentViewableArea.height;
149
- let checkMaxHeight = maxHeightElement.offsetHeight;
150
- if ((checkCurrentScroll >= checkMaxHeight)) {
151
- console.log('viewable');
152
- this.isLoading = false;
153
- this.allWiziblocksLoaded = true;
154
- }
155
- else {
156
- console.log('not viewable after second check');
157
- this.goToLastElement();
158
- }
159
- }, 100);
160
- }
161
- else {
162
- console.log('not viewable');
163
- parent.scrollTop = (childBoundingClientRect.top + parent.scrollTop) - parentBoundingClientRect.top;
164
- if (!this.allWiziblocksLoaded) {
165
- this.goToLastElement();
166
- }
167
- }
168
- }, 250);
169
- }
170
108
  isHiddenBLocks(id) {
171
109
  if (this.dynamicHidden.includes(id)) {
172
110
  return true;
@@ -183,10 +121,10 @@ export class BlocksComponent {
183
121
  }
184
122
  }
185
123
  BlocksComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: BlocksComponent, deps: [{ token: i1.WiziBlockService }, { token: i0.ComponentFactoryResolver }, { token: i2.ContentService }, { token: i3.ConfigService }, { token: i4.ExternalConfigService }], target: i0.ɵɵFactoryTarget.Component });
186
- BlocksComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: BlocksComponent, selector: "wb-blocks", inputs: { contents: "contents", dynamicHidden: "dynamicHidden", selectedConfig: "selectedConfig" }, ngImport: i0, template: "<div\n class=\"wb-blocks\"\n cdkDropList\n (cdkDropListDropped)=\"onDrop($event)\"\n id=\"block-content\"\n *ngIf=\"contents.length > 0\"\n [@animateListFromLeft]=\"contents.length\"\n [ngClass]=\"{ hover: blockHover }\"\n>\n <a\n class=\"button is-hidden-button is-danger is-rounded is-tooltip-info\"\n [ngClass]=\"{ 'is-danger': hideConfig, 'is-dark is-outlined': !hideConfig }\"\n (click)=\"setHideConfig()\"\n [nwbToolTip]=\"(!hideConfig ? 'wb.blocks.html.1' : 'wb.blocks.html.2') | translate\"\n nwbToolTipPosition=\"left\"\n ><i class=\"fal fa-eye\" *ngIf=\"!hideConfig\"></i><i class=\"fal fa-eye-slash\" *ngIf=\"hideConfig\"></i\n ></a>\n <wb-previews [contents]=\"parsedContent\" *ngIf=\"preview && hideConfig\"></wb-previews>\n <cdk-virtual-scroll-viewport #virtualScroll appendOnly autosize minBufferPx=\"0\" maxBufferPx=\"1000\" *ngIf=\"!preview\">\n <div class=\"wb-blocks__container\" *cdkVirtualFor=\"let content of contents\" cdkDrag>\n <div\n class=\"wb-component\"\n [ngClass]=\"{\n 'is-inactive': hideConfig,\n 'border-grey': isHiddenBLocks(content.block.uuid),\n 'border-blue': selectedConfig === content.block.uuid\n }\"\n >\n <wb-structure-tools\n [dynamicHiddenStructure]=\"isHiddenBLocks(content.block.uuid)\"\n [uuid]=\"content.block.uuid\"\n [isHover]=\"blockHover\"\n [isAlwaysHover]=\"selectedConfig === content.block.uuid\"\n (configIsActivated)=\"switchHover($event)\"\n cdkDragHandle\n ></wb-structure-tools>\n <div class=\"wb-component__container\">\n <wb-container-block [content]=\"content\"></wb-container-block>\n </div>\n </div>\n </div>\n </cdk-virtual-scroll-viewport>\n <div class=\"wb-blocks__loader\" *ngIf=\"isLoading\">\n <wb-loader [ngClass]=\"{ 'is-active': isLoading }\"></wb-loader>\n <p>{{ 'wb.loading' | translate }}</p>\n </div>\n</div>\n<div class=\"wb-blocks-empty\" *ngIf=\"contents.length === 0\">\n <img src=\"assets/blocks/images/icons/Icon_Drag.svg\" />\n <p>{{ translation.select_component | translate }}</p>\n <p>{{ translation.doc_component | translate }}</p>\n</div>\n", dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i6.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i6.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "component", type: i7.StructureToolsComponent, selector: "wb-structure-tools", inputs: ["uuid", "dynamicHiddenStructure", "isHover", "isAlwaysHover"], outputs: ["configIsActivated"] }, { kind: "component", type: i8.LoaderComponent, selector: "wb-loader" }, { kind: "directive", type: i9.NwbToolTipDirective, selector: "[nwbToolTip]", inputs: ["nwbToolTip", "nwbToolTipPosition", "nwbToolTipIsMultiline"] }, { kind: "directive", type: i10.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { kind: "component", type: i10.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "directive", type: i11.CdkAutoSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[autosize]", inputs: ["minBufferPx", "maxBufferPx"] }, { kind: "component", type: i12.PreviewsComponent, selector: "wb-previews", inputs: ["contents"] }, { kind: "component", type: i13.ContainerBlockComponent, selector: "wb-container-block", inputs: ["content"] }, { kind: "pipe", type: i14.TranslatePipe, name: "translate" }], animations: [animateListFromLeft('100ms ease-in-out')] });
124
+ BlocksComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: BlocksComponent, selector: "wb-blocks", inputs: { contents: "contents", dynamicHidden: "dynamicHidden", selectedConfig: "selectedConfig" }, ngImport: i0, template: "<div\n class=\"wb-blocks\"\n cdkDropList\n (cdkDropListDropped)=\"onDrop($event)\"\n id=\"block-content\"\n *ngIf=\"contents.length > 0\"\n [@animateListFromLeft]=\"contents.length\"\n [ngClass]=\"{ hover: blockHover }\"\n>\n <a\n class=\"button is-hidden-button is-danger is-rounded is-tooltip-info\"\n [ngClass]=\"{ 'is-danger': hideConfig, 'is-dark is-outlined': !hideConfig }\"\n (click)=\"setHideConfig()\"\n [nwbToolTip]=\"(!hideConfig ? 'wb.blocks.html.1' : 'wb.blocks.html.2') | translate\"\n nwbToolTipPosition=\"left\"\n ><i class=\"fal fa-eye\" *ngIf=\"!hideConfig\"></i><i class=\"fal fa-eye-slash\" *ngIf=\"hideConfig\"></i\n ></a>\n <wb-previews [contents]=\"parsedContent\" *ngIf=\"preview && hideConfig\"></wb-previews>\n <div class=\"wb-blocks__container\" *ngFor=\"let content of contents\" cdkDrag>\n <div\n class=\"wb-component\"\n [ngClass]=\"{\n 'is-inactive': hideConfig,\n 'border-grey': isHiddenBLocks(content.block.uuid),\n 'border-blue': selectedConfig === content.block.uuid\n }\"\n >\n <wb-structure-tools\n [dynamicHiddenStructure]=\"isHiddenBLocks(content.block.uuid)\"\n [uuid]=\"content.block.uuid\"\n [isHover]=\"blockHover\"\n [isAlwaysHover]=\"selectedConfig === content.block.uuid\"\n (configIsActivated)=\"switchHover($event)\"\n cdkDragHandle\n ></wb-structure-tools>\n <div class=\"wb-component__container\">\n <wb-container-block [content]=\"content\"></wb-container-block>\n </div>\n </div>\n </div>\n</div>\n<div class=\"wb-blocks-empty\" *ngIf=\"contents.length === 0\">\n <img src=\"assets/blocks/images/icons/Icon_Drag.svg\" />\n <p>{{ translation.select_component | translate }}</p>\n <p>{{ translation.doc_component | translate }}</p>\n</div>\n", dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i6.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i6.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "component", type: i7.StructureToolsComponent, selector: "wb-structure-tools", inputs: ["uuid", "dynamicHiddenStructure", "isHover", "isAlwaysHover"], outputs: ["configIsActivated"] }, { kind: "directive", type: i8.NwbToolTipDirective, selector: "[nwbToolTip]", inputs: ["nwbToolTip", "nwbToolTipPosition", "nwbToolTipIsMultiline"] }, { kind: "component", type: i9.PreviewsComponent, selector: "wb-previews", inputs: ["contents"] }, { kind: "component", type: i10.ContainerBlockComponent, selector: "wb-container-block", inputs: ["content"] }, { kind: "pipe", type: i11.TranslatePipe, name: "translate" }], animations: [animateListFromLeft('100ms ease-in-out')] });
187
125
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: BlocksComponent, decorators: [{
188
126
  type: Component,
189
- args: [{ selector: 'wb-blocks', animations: [animateListFromLeft('100ms ease-in-out')], template: "<div\n class=\"wb-blocks\"\n cdkDropList\n (cdkDropListDropped)=\"onDrop($event)\"\n id=\"block-content\"\n *ngIf=\"contents.length > 0\"\n [@animateListFromLeft]=\"contents.length\"\n [ngClass]=\"{ hover: blockHover }\"\n>\n <a\n class=\"button is-hidden-button is-danger is-rounded is-tooltip-info\"\n [ngClass]=\"{ 'is-danger': hideConfig, 'is-dark is-outlined': !hideConfig }\"\n (click)=\"setHideConfig()\"\n [nwbToolTip]=\"(!hideConfig ? 'wb.blocks.html.1' : 'wb.blocks.html.2') | translate\"\n nwbToolTipPosition=\"left\"\n ><i class=\"fal fa-eye\" *ngIf=\"!hideConfig\"></i><i class=\"fal fa-eye-slash\" *ngIf=\"hideConfig\"></i\n ></a>\n <wb-previews [contents]=\"parsedContent\" *ngIf=\"preview && hideConfig\"></wb-previews>\n <cdk-virtual-scroll-viewport #virtualScroll appendOnly autosize minBufferPx=\"0\" maxBufferPx=\"1000\" *ngIf=\"!preview\">\n <div class=\"wb-blocks__container\" *cdkVirtualFor=\"let content of contents\" cdkDrag>\n <div\n class=\"wb-component\"\n [ngClass]=\"{\n 'is-inactive': hideConfig,\n 'border-grey': isHiddenBLocks(content.block.uuid),\n 'border-blue': selectedConfig === content.block.uuid\n }\"\n >\n <wb-structure-tools\n [dynamicHiddenStructure]=\"isHiddenBLocks(content.block.uuid)\"\n [uuid]=\"content.block.uuid\"\n [isHover]=\"blockHover\"\n [isAlwaysHover]=\"selectedConfig === content.block.uuid\"\n (configIsActivated)=\"switchHover($event)\"\n cdkDragHandle\n ></wb-structure-tools>\n <div class=\"wb-component__container\">\n <wb-container-block [content]=\"content\"></wb-container-block>\n </div>\n </div>\n </div>\n </cdk-virtual-scroll-viewport>\n <div class=\"wb-blocks__loader\" *ngIf=\"isLoading\">\n <wb-loader [ngClass]=\"{ 'is-active': isLoading }\"></wb-loader>\n <p>{{ 'wb.loading' | translate }}</p>\n </div>\n</div>\n<div class=\"wb-blocks-empty\" *ngIf=\"contents.length === 0\">\n <img src=\"assets/blocks/images/icons/Icon_Drag.svg\" />\n <p>{{ translation.select_component | translate }}</p>\n <p>{{ translation.doc_component | translate }}</p>\n</div>\n" }]
127
+ args: [{ selector: 'wb-blocks', animations: [animateListFromLeft('100ms ease-in-out')], template: "<div\n class=\"wb-blocks\"\n cdkDropList\n (cdkDropListDropped)=\"onDrop($event)\"\n id=\"block-content\"\n *ngIf=\"contents.length > 0\"\n [@animateListFromLeft]=\"contents.length\"\n [ngClass]=\"{ hover: blockHover }\"\n>\n <a\n class=\"button is-hidden-button is-danger is-rounded is-tooltip-info\"\n [ngClass]=\"{ 'is-danger': hideConfig, 'is-dark is-outlined': !hideConfig }\"\n (click)=\"setHideConfig()\"\n [nwbToolTip]=\"(!hideConfig ? 'wb.blocks.html.1' : 'wb.blocks.html.2') | translate\"\n nwbToolTipPosition=\"left\"\n ><i class=\"fal fa-eye\" *ngIf=\"!hideConfig\"></i><i class=\"fal fa-eye-slash\" *ngIf=\"hideConfig\"></i\n ></a>\n <wb-previews [contents]=\"parsedContent\" *ngIf=\"preview && hideConfig\"></wb-previews>\n <div class=\"wb-blocks__container\" *ngFor=\"let content of contents\" cdkDrag>\n <div\n class=\"wb-component\"\n [ngClass]=\"{\n 'is-inactive': hideConfig,\n 'border-grey': isHiddenBLocks(content.block.uuid),\n 'border-blue': selectedConfig === content.block.uuid\n }\"\n >\n <wb-structure-tools\n [dynamicHiddenStructure]=\"isHiddenBLocks(content.block.uuid)\"\n [uuid]=\"content.block.uuid\"\n [isHover]=\"blockHover\"\n [isAlwaysHover]=\"selectedConfig === content.block.uuid\"\n (configIsActivated)=\"switchHover($event)\"\n cdkDragHandle\n ></wb-structure-tools>\n <div class=\"wb-component__container\">\n <wb-container-block [content]=\"content\"></wb-container-block>\n </div>\n </div>\n </div>\n</div>\n<div class=\"wb-blocks-empty\" *ngIf=\"contents.length === 0\">\n <img src=\"assets/blocks/images/icons/Icon_Drag.svg\" />\n <p>{{ translation.select_component | translate }}</p>\n <p>{{ translation.doc_component | translate }}</p>\n</div>\n" }]
190
128
  }], ctorParameters: function () { return [{ type: i1.WiziBlockService }, { type: i0.ComponentFactoryResolver }, { type: i2.ContentService }, { type: i3.ConfigService }, { type: i4.ExternalConfigService }]; }, propDecorators: { contents: [{
191
129
  type: Input
192
130
  }], dynamicHidden: [{
@@ -194,4 +132,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImpor
194
132
  }], selectedConfig: [{
195
133
  type: Input
196
134
  }] } });
197
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2tzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3dpemktYmxvY2svc3JjL2xpYi9jb21wb25lbnRzL2Jsb2Nrcy9ibG9ja3MuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvd2l6aS1ibG9jay9zcmMvbGliL2NvbXBvbmVudHMvYmxvY2tzL2Jsb2Nrcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLHdCQUF3QixFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUVuRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUVyRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwrREFBK0QsQ0FBQztBQUNwRyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ25FLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7O0FBT3JGLE1BQU0sT0FBTyxlQUFlO0lBcUJ4QixZQUNZLGdCQUFrQyxFQUNsQyxRQUFrQyxFQUNsQyxjQUE4QixFQUM5QixhQUE0QixFQUM1QixxQkFBNEM7UUFKNUMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxhQUFRLEdBQVIsUUFBUSxDQUEwQjtRQUNsQyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQXpCL0MsYUFBUSxHQUFlLEVBQUUsQ0FBQztRQUMxQixrQkFBYSxHQUFHLEVBQUUs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QyxtQkFBbUIsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDOzJGQUU3QyxlQUFlO2tCQUwzQixTQUFTOytCQUNJLFdBQVcsY0FFVCxDQUFDLG1CQUFtQixDQUFDLG1CQUFtQixDQUFDLENBQUM7Mk9BRzdDLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENka0RyYWdEcm9wIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5pbXBvcnQgeyBXaXppQmxvY2tTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvd2l6aS1ibG9jay5zZXJ2aWNlJztcbmltcG9ydCB7IFRyYW5zbGF0aW9uc0R0byB9IGZyb20gJy4uLy4uL2R0b3MvY29uZmlncy90cmFuc2xhdGlvbnMvdHJhbnNsYXRpb25zLmR0byc7XG5pbXBvcnQgeyBhbmltYXRlTGlzdEZyb21MZWZ0IH0gZnJvbSAnLi4vLi4vc2hhcmVkL2FuaW1hdGlvbnMvbGlzdC9hbmltYXRlLWxpc3QtZnJvbS1sZWZ0LmFuaW1hdGlvbic7XG5pbXBvcnQgeyBDb250ZW50U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3V0aWxzL2NvbnRlbnQuc2VydmljZSc7XG5pbXBvcnQgeyBDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdXRpbHMvY29uZmlnLnNlcnZpY2UnO1xuaW1wb3J0IHsgRk9STV9OQU1FX1dJRFRIX0JMT0NLIH0gZnJvbSAnLi4vLi4vZHRvcy9mb3Jtcy9mb3Jtcy5kdG8nO1xuaW1wb3J0IHsgRXh0ZXJuYWxDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdXRpbHMvZXh0ZXJuYWwtY29uZmlnLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3diLWJsb2NrcycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2Jsb2Nrcy5jb21wb25lbnQuaHRtbCcsXG4gICAgYW5pbWF0aW9uczogW2FuaW1hdGVMaXN0RnJvbUxlZnQoJzEwMG1zIGVhc2UtaW4tb3V0JyldXG59KVxuZXhwb3J0IGNsYXNzIEJsb2Nrc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgQElucHV0KCkgY29udGVudHM6IEFycmF5PGFueT4gPSBbXTtcbiAgICBASW5wdXQoKSBkeW5hbWljSGlkZGVuID0gW107XG4gICAgQElucHV0KCkgc2VsZWN0ZWRDb25maWc6IGFueTtcblxuICAgIGhpZGVDb25maWcgPSBmYWxzZTtcblxuICAgIHRyYW5zbGF0aW9uOiBUcmFuc2xhdGlvbnNEdG87XG5cbiAgICBwcmV2aWV3OiBib29sZWFuO1xuXG4gICAgYmxvY2tIb3ZlciA9IGZhbHNlO1xuXG4gICAgY29uZmlnQWN0aXZlID0gZmFsc2U7XG5cbiAgICBwYXJzZWRDb250ZW50ID0gW107XG5cbiAgICBpc0xvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIGFsbFdpemlibG9ja3NMb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHdpemlCbG9ja1NlcnZpY2U6IFdpemlCbG9ja1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVzb2x2ZXI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgICAgICAgcHJpdmF0ZSBjb250ZW50U2VydmljZTogQ29udGVudFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgY29uZmlnU2VydmljZTogQ29uZmlnU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBleHRlcm5hbENvbmZpZ1NlcnZpY2U6IEV4dGVybmFsQ29uZmlnU2VydmljZVxuICAgICkge31cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLnRyYW5zbGF0aW9uID0gdGhpcy53aXppQmxvY2tTZXJ2aWNlLmdldFRyYW5zbGF0aW9uKCk7XG5cbiAgICAgICAgdGhpcy5jb25maWdTZXJ2aWNlLmNvbmZpZ1Nob3dFdmVudCgpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmhpZGVDb25maWcgPSB0aGlzLmNvbmZpZ1NlcnZpY2UuaGlkZUNvbmZpZztcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgc2V0SGlkZUNvbmZpZygpIHtcbiAgICAgICAgdGhpcy5jb25maWdTZXJ2aWNlLmhpZGVDb25maWcgPSAhdGhpcy5jb25maWdTZXJ2aWNlLmhpZGVDb25maWc7XG4gICAgICAgIGlmICh0aGlzLmNvbmZpZ1NlcnZpY2UuaGlkZUNvbmZpZykge1xuICAgICAgICAgICAgdGhpcy5wYXJzZWRDb250ZW50ID0gdGhpcy5jb250ZW50U2VydmljZS5nZXRQYXJzZWRDb250ZW50KCk7XG4gICAgICAgICAgICB0aGlzLnByZXZpZXcgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5wcmV2aWV3ID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzd2l0Y2hIb3ZlcihldmVudCkge1xuICAgICAgICBjb25zb2xlLmxvZyhldmVudCk7XG4gICAgICAgIHRoaXMuY29uZmlnQWN0aXZlID0gZXZlbnQ7XG4gICAgfVxuXG4gICAgYWRkVGhpcyhpbmRleCwgdHlwZSkge1xuICAgICAgICB0aGlzLndpemlCbG9ja1NlcnZpY2UuZ2V0QmxvY2tzU2VydmljZSgpLmZvckVhY2goKHYpID0+IHtcbiAgICAgICAgICAgIGlmICh2LnR5cGUoKSA9PT0gdHlwZSkge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygdi5nZXRGb3JtID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJhc2VEdG8gPSB2LmdldEZvcm0oKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGJhc2VEdG8pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VEdG8udHlwZSA9IHYudHlwZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZW50U2VydmljZS5zZXRDb250ZW50c1dpdGhJbmRleChpbmRleCwgYmFzZUR0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYmFzZUR0by5mb3Jtcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbmZpZ1NlcnZpY2UuY29uZmlnID0gYmFzZUR0bztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29uZmlnU2VydmljZS5oaWRlQ29uZmlnID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGFkZFRoaXNTZWxlY3RlZChzZWxlY3RlZCwgdmVyYm9zZSkge1xuICAgICAgICB0aGlzLndpemlCbG9ja1NlcnZpY2UuZ2V0QmxvY2tzU2VydmljZSgpLmZvckVhY2goKHYpID0+IHtcbiAgICAgICAgICAgIGlmICh2LnR5cGUoKSA9PT0gc2VsZWN0ZWQudHlwZSkge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygdi5nZXRGb3JtID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJhc2VEdG8gPSB2LmdldEZvcm0oKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGJhc2VEdG8pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmV4dGVybmFsQ29uZmlnU2VydmljZS5nZXRXaWR0aEJsb2NrKCkgIT0gJycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlRHRvLmZvcm1zLmZvckVhY2goKGVsZW1lbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQuaWQgPT0gRk9STV9OQU1FX1dJRFRIX0JMT0NLKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LnZhbHVlID0gdGhpcy5leHRlcm5hbENvbmZpZ1NlcnZpY2UuZ2V0V2lkdGhCbG9jaygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VEdG8udHlwZSA9IHYudHlwZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZW50U2VydmljZS5zZXRDb250ZW50cyhiYXNlRHRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ29Ub0xhc3RFbGVtZW50KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LCAxMDApO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJhc2VEdG8uZm9ybXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb25maWdTZXJ2aWNlLmNvbmZpZyA9IGJhc2VEdG87XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbmZpZ1NlcnZpY2UuaGlkZUNvbmZpZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnQWRkIGEgY29udGVudCcsIGJhc2VEdG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdEdG8gZm9yIGNvbXBvbmVudCAnICsgdi50eXBlKCkgKyAnIG5vdCBmb3VuZCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Zvcm0gZm9yIGNvbXBvbmVudCAnICsgdi50eXBlKCkgKyAnIG5vdCBmb3VuZCcpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnb1RvTGFzdEVsZW1lbnQoKSB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKCF0aGlzLmFsbFdpemlibG9ja3NMb2FkZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCB3aXppYmxvY2tzTGlzdCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3diLWJsb2Nrc19fY29udGFpbmVyJyk7XG4gICAgICAgICAgICBjb25zdCBjaGlsZEVsZW1lbnQgPSAod2l6aWJsb2Nrc0xpc3Rbd2l6aWJsb2Nrc0xpc3QubGVuZ3RoIC0gMV0pIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICAgICAgY29uc3QgcGFyZW50ID0gKGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3diLWNvbnRlbnQnKVswXS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdjZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQnKVswXSkgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgICAgICBjb25zdCBwYXJlbnRWaWV3YWJsZUFyZWEgPSB7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiBwYXJlbnQuY2xpZW50SGVpZ2h0LFxuICAgICAgICAgICAgICAgIHdpZHRoOiBwYXJlbnQuY2xpZW50V2lkdGhcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHBhcmVudEJvdW5kaW5nQ2xpZW50UmVjdCA9IHBhcmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkQm91bmRpbmdDbGllbnRSZWN0ID0gY2hpbGRFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICAgICAgdmFyIGlzVmlld2FibGUgPSAoY2hpbGRCb3VuZGluZ0NsaWVudFJlY3QudG9wID49IHBhcmVudEJvdW5kaW5nQ2xpZW50UmVjdC50b3ApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgKGNoaWxkQm91bmRpbmdDbGllbnRSZWN0LmJvdHRvbSA8PSBwYXJlbnRCb3VuZGluZ0NsaWVudFJlY3QudG9wICsgcGFyZW50Vmlld2FibGVBcmVhLmhlaWdodCk7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50U2Nyb2xsID0gcGFyZW50LnNjcm9sbFRvcCArIHBhcmVudFZpZXdhYmxlQXJlYS5oZWlnaHQ7XG4gICAgICAgICAgICBjb25zdCBtYXhIZWlnaHRFbGVtZW50ID0gKHBhcmVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdjZGstdmlydHVhbC1zY3JvbGwtY29udGVudC13cmFwcGVyJylbMF0pIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICAgICAgY29uc3QgbWF4SGVpZ2h0ID0gbWF4SGVpZ2h0RWxlbWVudC5vZmZzZXRIZWlnaHQ7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnaXMgdmlld2FibGUgPycpO1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ2NoaWxkIHRvcCAnICsgY2hpbGRCb3VuZGluZ0NsaWVudFJlY3QudG9wKTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdjaGlsZCBib3R0b20gJyArIGNoaWxkQm91bmRpbmdDbGllbnRSZWN0LmJvdHRvbSlcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdwYXJlbnQgdG9wICcgKyBwYXJlbnRCb3VuZGluZ0NsaWVudFJlY3QudG9wKTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdwYXJlbnQgaGVpZ2h0ICcgKyBwYXJlbnRWaWV3YWJsZUFyZWEuaGVpZ2h0KTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGNoaWxkQm91bmRpbmdDbGllbnRSZWN0LnRvcCA+PSBwYXJlbnRCb3VuZGluZ0NsaWVudFJlY3QudG9wKTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGNoaWxkQm91bmRpbmdDbGllbnRSZWN0LmJvdHRvbSA8PSBwYXJlbnRCb3VuZGluZ0NsaWVudFJlY3QudG9wICsgcGFyZW50Vmlld2FibGVBcmVhLmhlaWdodCk7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdtYXhIZWlnaHQgJyArIG1heEhlaWdodCk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnY3VycmVudCBzY3JvbGwgJyArIGN1cnJlbnRTY3JvbGwpO1xuICAgICAgICAgICAgY29uc29sZS5sb2coY3VycmVudFNjcm9sbCA+PSBtYXhIZWlnaHQpO1xuICAgICAgICAgICAgaWYgKGlzVmlld2FibGUgfHwgKGN1cnJlbnRTY3JvbGwgPj0gbWF4SGVpZ2h0KSkge1xuICAgICAgICAgICAgICAgIC8vIFNlY29uZCBjaGVjayBpZiBsYXN0IGVsZW1lbnQgaXMgdmlld2FibGVcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNoZWNrQ3VycmVudFNjcm9sbCA9IHBhcmVudC5zY3JvbGxUb3AgKyBwYXJlbnRWaWV3YWJsZUFyZWEuaGVpZ2h0O1xuICAgICAgICAgICAgICAgICAgICBsZXQgY2hlY2tNYXhIZWlnaHQgPSBtYXhIZWlnaHRFbGVtZW50Lm9mZnNldEhlaWdodDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKChjaGVja0N1cnJlbnRTY3JvbGwgPj0gY2hlY2tNYXhIZWlnaHQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygndmlld2FibGUnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFsbFdpemlibG9ja3NMb2FkZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ25vdCB2aWV3YWJsZSBhZnRlciBzZWNvbmQgY2hlY2snKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ29Ub0xhc3RFbGVtZW50KCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCAxMDApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnbm90IHZpZXdhYmxlJyk7XG4gICAgICAgICAgICAgICAgcGFyZW50LnNjcm9sbFRvcCA9IChjaGlsZEJvdW5kaW5nQ2xpZW50UmVjdC50b3AgKyBwYXJlbnQuc2Nyb2xsVG9wKSAtIHBhcmVudEJvdW5kaW5nQ2xpZW50UmVjdC50b3A7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmFsbFdpemlibG9ja3NMb2FkZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nb1RvTGFzdEVsZW1lbnQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIDI1MCk7XG4gICAgfVxuXG4gICAgaXNIaWRkZW5CTG9ja3MoaWQpIHtcbiAgICAgICAgaWYgKHRoaXMuZHluYW1pY0hpZGRlbi5pbmNsdWRlcyhpZCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBvbkRyb3AoZXZlbnQ6IENka0RyYWdEcm9wPGFueVtdPikge1xuICAgICAgICBpZiAoZXZlbnQuaXRlbS5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZ2V0QXR0cmlidXRlKCdpZCcpKSB7XG4gICAgICAgICAgICB0aGlzLmFkZFRoaXMoZXZlbnQuY3VycmVudEluZGV4LCBldmVudC5pdGVtLmVsZW1lbnQubmF0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2lkJykpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jb250ZW50U2VydmljZS5yZW9yZGVyQ29udGVudHMoZXZlbnQucHJldmlvdXNJbmRleCwgZXZlbnQuY3VycmVudEluZGV4KTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxkaXZcbiAgICBjbGFzcz1cIndiLWJsb2Nrc1wiXG4gICAgY2RrRHJvcExpc3RcbiAgICAoY2RrRHJvcExpc3REcm9wcGVkKT1cIm9uRHJvcCgkZXZlbnQpXCJcbiAgICBpZD1cImJsb2NrLWNvbnRlbnRcIlxuICAgICpuZ0lmPVwiY29udGVudHMubGVuZ3RoID4gMFwiXG4gICAgW0BhbmltYXRlTGlzdEZyb21MZWZ0XT1cImNvbnRlbnRzLmxlbmd0aFwiXG4gICAgW25nQ2xhc3NdPVwieyBob3ZlcjogYmxvY2tIb3ZlciB9XCJcbj5cbiAgICA8YVxuICAgICAgICBjbGFzcz1cImJ1dHRvbiBpcy1oaWRkZW4tYnV0dG9uIGlzLWRhbmdlciBpcy1yb3VuZGVkIGlzLXRvb2x0aXAtaW5mb1wiXG4gICAgICAgIFtuZ0NsYXNzXT1cInsgJ2lzLWRhbmdlcic6IGhpZGVDb25maWcsICdpcy1kYXJrIGlzLW91dGxpbmVkJzogIWhpZGVDb25maWcgfVwiXG4gICAgICAgIChjbGljayk9XCJzZXRIaWRlQ29uZmlnKClcIlxuICAgICAgICBbbndiVG9vbFRpcF09XCIoIWhpZGVDb25maWcgPyAnd2IuYmxvY2tzLmh0bWwuMScgOiAnd2IuYmxvY2tzLmh0bWwuMicpIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgbndiVG9vbFRpcFBvc2l0aW9uPVwibGVmdFwiXG4gICAgICAgID48aSBjbGFzcz1cImZhbCBmYS1leWVcIiAqbmdJZj1cIiFoaWRlQ29uZmlnXCI+PC9pPjxpIGNsYXNzPVwiZmFsIGZhLWV5ZS1zbGFzaFwiICpuZ0lmPVwiaGlkZUNvbmZpZ1wiPjwvaVxuICAgID48L2E+XG4gICAgPHdiLXByZXZpZXdzIFtjb250ZW50c109XCJwYXJzZWRDb250ZW50XCIgKm5nSWY9XCJwcmV2aWV3ICYmIGhpZGVDb25maWdcIj48L3diLXByZXZpZXdzPlxuICAgIDxjZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQgI3ZpcnR1YWxTY3JvbGwgYXBwZW5kT25seSBhdXRvc2l6ZSBtaW5CdWZmZXJQeD1cIjBcIiBtYXhCdWZmZXJQeD1cIjEwMDBcIiAqbmdJZj1cIiFwcmV2aWV3XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ3Yi1ibG9ja3NfX2NvbnRhaW5lclwiICpjZGtWaXJ0dWFsRm9yPVwibGV0IGNvbnRlbnQgb2YgY29udGVudHNcIiBjZGtEcmFnPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwid2ItY29tcG9uZW50XCJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICAgICdpcy1pbmFjdGl2ZSc6IGhpZGVDb25maWcsXG4gICAgICAgICAgICAgICAgICAgICdib3JkZXItZ3JleSc6IGlzSGlkZGVuQkxvY2tzKGNvbnRlbnQuYmxvY2sudXVpZCksXG4gICAgICAgICAgICAgICAgICAgICdib3JkZXItYmx1ZSc6IHNlbGVjdGVkQ29uZmlnID09PSBjb250ZW50LmJsb2NrLnV1aWRcbiAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8d2Itc3RydWN0dXJlLXRvb2xzXG4gICAgICAgICAgICAgICAgICAgIFtkeW5hbWljSGlkZGVuU3RydWN0dXJlXT1cImlzSGlkZGVuQkxvY2tzKGNvbnRlbnQuYmxvY2sudXVpZClcIlxuICAgICAgICAgICAgICAgICAgICBbdXVpZF09XCJjb250ZW50LmJsb2NrLnV1aWRcIlxuICAgICAgICAgICAgICAgICAgICBbaXNIb3Zlcl09XCJibG9ja0hvdmVyXCJcbiAgICAgICAgICAgICAgICAgICAgW2lzQWx3YXlzSG92ZXJdPVwic2VsZWN0ZWRDb25maWcgPT09IGNvbnRlbnQuYmxvY2sudXVpZFwiXG4gICAgICAgICAgICAgICAgICAgIChjb25maWdJc0FjdGl2YXRlZCk9XCJzd2l0Y2hIb3ZlcigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgY2RrRHJhZ0hhbmRsZVxuICAgICAgICAgICAgICAgID48L3diLXN0cnVjdHVyZS10b29scz5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2ItY29tcG9uZW50X19jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPHdiLWNvbnRhaW5lci1ibG9jayBbY29udGVudF09XCJjb250ZW50XCI+PC93Yi1jb250YWluZXItYmxvY2s+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9jZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQ+XG4gICAgPGRpdiBjbGFzcz1cIndiLWJsb2Nrc19fbG9hZGVyXCIgKm5nSWY9XCJpc0xvYWRpbmdcIj5cbiAgICAgICAgPHdiLWxvYWRlciBbbmdDbGFzc109XCJ7ICdpcy1hY3RpdmUnOiBpc0xvYWRpbmcgfVwiPjwvd2ItbG9hZGVyPlxuICAgICAgICA8cD57eyAnd2IubG9hZGluZycgfCB0cmFuc2xhdGUgfX08L3A+XG4gICAgPC9kaXY+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJ3Yi1ibG9ja3MtZW1wdHlcIiAqbmdJZj1cImNvbnRlbnRzLmxlbmd0aCA9PT0gMFwiPlxuICAgIDxpbWcgc3JjPVwiYXNzZXRzL2Jsb2Nrcy9pbWFnZXMvaWNvbnMvSWNvbl9EcmFnLnN2Z1wiIC8+XG4gICAgPHA+e3sgdHJhbnNsYXRpb24uc2VsZWN0X2NvbXBvbmVudCB8IHRyYW5zbGF0ZSB9fTwvcD5cbiAgICA8cD57eyB0cmFuc2xhdGlvbi5kb2NfY29tcG9uZW50IHwgdHJhbnNsYXRlIH19PC9wPlxuPC9kaXY+XG4iXX0=
135
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2tzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3dpemktYmxvY2svc3JjL2xpYi9jb21wb25lbnRzL2Jsb2Nrcy9ibG9ja3MuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvd2l6aS1ibG9jay9zcmMvbGliL2NvbXBvbmVudHMvYmxvY2tzL2Jsb2Nrcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLHdCQUF3QixFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUVuRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUVyRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwrREFBK0QsQ0FBQztBQUNwRyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ25FLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDOzs7Ozs7Ozs7Ozs7O0FBT3JGLE1BQU0sT0FBTyxlQUFlO0lBaUJ4QixZQUNZLGdCQUFrQyxFQUNsQyxRQUFrQyxFQUNsQyxjQUE4QixFQUM5QixhQUE0QixFQUM1QixxQkFBNEM7UUFKNUMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxhQUFRLEdBQVIsUUFBUSxDQUEwQjtRQUNsQyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQXJCL0MsYUFBUSxHQUFlLEVBQUUsQ0FBQztRQUMxQixrQkFBYSxHQUFHLEVBQUUsQ0FB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LENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztTQUN6RjthQUFNO1lBQ0gsSUFBSSxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDaEY7SUFDTCxDQUFDOzs0R0FwSFEsZUFBZTtnR0FBZixlQUFlLHFKQ2Y1Qiw2K0RBOENBLGkrRERqQ2dCLENBQUMsbUJBQW1CLENBQUMsbUJBQW1CLENBQUMsQ0FBQzsyRkFFN0MsZUFBZTtrQkFMM0IsU0FBUzsrQkFDSSxXQUFXLGNBRVQsQ0FBQyxtQkFBbUIsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDOzJPQUc3QyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDZGtEcmFnRHJvcCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xuaW1wb3J0IHsgV2l6aUJsb2NrU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3dpemktYmxvY2suc2VydmljZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGlvbnNEdG8gfSBmcm9tICcuLi8uLi9kdG9zL2NvbmZpZ3MvdHJhbnNsYXRpb25zL3RyYW5zbGF0aW9ucy5kdG8nO1xuaW1wb3J0IHsgYW5pbWF0ZUxpc3RGcm9tTGVmdCB9IGZyb20gJy4uLy4uL3NoYXJlZC9hbmltYXRpb25zL2xpc3QvYW5pbWF0ZS1saXN0LWZyb20tbGVmdC5hbmltYXRpb24nO1xuaW1wb3J0IHsgQ29udGVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy91dGlscy9jb250ZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29uZmlnU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3V0aWxzL2NvbmZpZy5zZXJ2aWNlJztcbmltcG9ydCB7IEZPUk1fTkFNRV9XSURUSF9CTE9DSyB9IGZyb20gJy4uLy4uL2R0b3MvZm9ybXMvZm9ybXMuZHRvJztcbmltcG9ydCB7IEV4dGVybmFsQ29uZmlnU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3V0aWxzL2V4dGVybmFsLWNvbmZpZy5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd3Yi1ibG9ja3MnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9ibG9ja3MuY29tcG9uZW50Lmh0bWwnLFxuICAgIGFuaW1hdGlvbnM6IFthbmltYXRlTGlzdEZyb21MZWZ0KCcxMDBtcyBlYXNlLWluLW91dCcpXVxufSlcbmV4cG9ydCBjbGFzcyBCbG9ja3NDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBJbnB1dCgpIGNvbnRlbnRzOiBBcnJheTxhbnk+ID0gW107XG4gICAgQElucHV0KCkgZHluYW1pY0hpZGRlbiA9IFtdO1xuICAgIEBJbnB1dCgpIHNlbGVjdGVkQ29uZmlnOiBhbnk7XG5cbiAgICBoaWRlQ29uZmlnID0gZmFsc2U7XG5cbiAgICB0cmFuc2xhdGlvbjogVHJhbnNsYXRpb25zRHRvO1xuXG4gICAgcHJldmlldzogYm9vbGVhbjtcblxuICAgIGJsb2NrSG92ZXIgPSBmYWxzZTtcblxuICAgIGNvbmZpZ0FjdGl2ZSA9IGZhbHNlO1xuXG4gICAgcGFyc2VkQ29udGVudCA9IFtdO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgd2l6aUJsb2NrU2VydmljZTogV2l6aUJsb2NrU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICAgICAgICBwcml2YXRlIGNvbnRlbnRTZXJ2aWNlOiBDb250ZW50U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBjb25maWdTZXJ2aWNlOiBDb25maWdTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGV4dGVybmFsQ29uZmlnU2VydmljZTogRXh0ZXJuYWxDb25maWdTZXJ2aWNlXG4gICAgKSB7fVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMudHJhbnNsYXRpb24gPSB0aGlzLndpemlCbG9ja1NlcnZpY2UuZ2V0VHJhbnNsYXRpb24oKTtcblxuICAgICAgICB0aGlzLmNvbmZpZ1NlcnZpY2UuY29uZmlnU2hvd0V2ZW50KCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaGlkZUNvbmZpZyA9IHRoaXMuY29uZmlnU2VydmljZS5oaWRlQ29uZmlnO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBzZXRIaWRlQ29uZmlnKCkge1xuICAgICAgICB0aGlzLmNvbmZpZ1NlcnZpY2UuaGlkZUNvbmZpZyA9ICF0aGlzLmNvbmZpZ1NlcnZpY2UuaGlkZUNvbmZpZztcbiAgICAgICAgaWYgKHRoaXMuY29uZmlnU2VydmljZS5oaWRlQ29uZmlnKSB7XG4gICAgICAgICAgICB0aGlzLnBhcnNlZENvbnRlbnQgPSB0aGlzLmNvbnRlbnRTZXJ2aWNlLmdldFBhcnNlZENvbnRlbnQoKTtcbiAgICAgICAgICAgIHRoaXMucHJldmlldyA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnByZXZpZXcgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHN3aXRjaEhvdmVyKGV2ZW50KSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGV2ZW50KTtcbiAgICAgICAgdGhpcy5jb25maWdBY3RpdmUgPSBldmVudDtcbiAgICB9XG5cbiAgICBhZGRUaGlzKGluZGV4LCB0eXBlKSB7XG4gICAgICAgIHRoaXMud2l6aUJsb2NrU2VydmljZS5nZXRCbG9ja3NTZXJ2aWNlKCkuZm9yRWFjaCgodikgPT4ge1xuICAgICAgICAgICAgaWYgKHYudHlwZSgpID09PSB0eXBlKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB2LmdldEZvcm0gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYmFzZUR0byA9IHYuZ2V0Rm9ybSgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoYmFzZUR0bykge1xuICAgICAgICAgICAgICAgICAgICAgICAgYmFzZUR0by50eXBlID0gdi50eXBlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRlbnRTZXJ2aWNlLnNldENvbnRlbnRzV2l0aEluZGV4KGluZGV4LCBiYXNlRHRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChiYXNlRHRvLmZvcm1zLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29uZmlnU2VydmljZS5jb25maWcgPSBiYXNlRHRvO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb25maWdTZXJ2aWNlLmhpZGVDb25maWcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgYWRkVGhpc1NlbGVjdGVkKHNlbGVjdGVkLCB2ZXJib3NlKSB7XG4gICAgICAgIHRoaXMud2l6aUJsb2NrU2VydmljZS5nZXRCbG9ja3NTZXJ2aWNlKCkuZm9yRWFjaCgodikgPT4ge1xuICAgICAgICAgICAgaWYgKHYudHlwZSgpID09PSBzZWxlY3RlZC50eXBlKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB2LmdldEZvcm0gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYmFzZUR0byA9IHYuZ2V0Rm9ybSgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoYmFzZUR0bykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZXh0ZXJuYWxDb25maWdTZXJ2aWNlLmdldFdpZHRoQmxvY2soKSAhPSAnJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VEdG8uZm9ybXMuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC5pZCA9PSBGT1JNX05BTUVfV0lEVEhfQkxPQ0spIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQudmFsdWUgPSB0aGlzLmV4dGVybmFsQ29uZmlnU2VydmljZS5nZXRXaWR0aEJsb2NrKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgYmFzZUR0by50eXBlID0gdi50eXBlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRlbnRTZXJ2aWNlLnNldENvbnRlbnRzKGJhc2VEdG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJhc2VEdG8uZm9ybXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb25maWdTZXJ2aWNlLmNvbmZpZyA9IGJhc2VEdG87XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbmZpZ1NlcnZpY2UuaGlkZUNvbmZpZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnQWRkIGEgY29udGVudCcsIGJhc2VEdG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdEdG8gZm9yIGNvbXBvbmVudCAnICsgdi50eXBlKCkgKyAnIG5vdCBmb3VuZCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Zvcm0gZm9yIGNvbXBvbmVudCAnICsgdi50eXBlKCkgKyAnIG5vdCBmb3VuZCcpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBpc0hpZGRlbkJMb2NrcyhpZCkge1xuICAgICAgICBpZiAodGhpcy5keW5hbWljSGlkZGVuLmluY2x1ZGVzKGlkKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIG9uRHJvcChldmVudDogQ2RrRHJhZ0Ryb3A8YW55W10+KSB7XG4gICAgICAgIGlmIChldmVudC5pdGVtLmVsZW1lbnQubmF0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2lkJykpIHtcbiAgICAgICAgICAgIHRoaXMuYWRkVGhpcyhldmVudC5jdXJyZW50SW5kZXgsIGV2ZW50Lml0ZW0uZWxlbWVudC5uYXRpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgnaWQnKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmNvbnRlbnRTZXJ2aWNlLnJlb3JkZXJDb250ZW50cyhldmVudC5wcmV2aW91c0luZGV4LCBldmVudC5jdXJyZW50SW5kZXgpO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiPGRpdlxuICAgIGNsYXNzPVwid2ItYmxvY2tzXCJcbiAgICBjZGtEcm9wTGlzdFxuICAgIChjZGtEcm9wTGlzdERyb3BwZWQpPVwib25Ecm9wKCRldmVudClcIlxuICAgIGlkPVwiYmxvY2stY29udGVudFwiXG4gICAgKm5nSWY9XCJjb250ZW50cy5sZW5ndGggPiAwXCJcbiAgICBbQGFuaW1hdGVMaXN0RnJvbUxlZnRdPVwiY29udGVudHMubGVuZ3RoXCJcbiAgICBbbmdDbGFzc109XCJ7IGhvdmVyOiBibG9ja0hvdmVyIH1cIlxuPlxuICAgIDxhXG4gICAgICAgIGNsYXNzPVwiYnV0dG9uIGlzLWhpZGRlbi1idXR0b24gaXMtZGFuZ2VyIGlzLXJvdW5kZWQgaXMtdG9vbHRpcC1pbmZvXCJcbiAgICAgICAgW25nQ2xhc3NdPVwieyAnaXMtZGFuZ2VyJzogaGlkZUNvbmZpZywgJ2lzLWRhcmsgaXMtb3V0bGluZWQnOiAhaGlkZUNvbmZpZyB9XCJcbiAgICAgICAgKGNsaWNrKT1cInNldEhpZGVDb25maWcoKVwiXG4gICAgICAgIFtud2JUb29sVGlwXT1cIighaGlkZUNvbmZpZyA/ICd3Yi5ibG9ja3MuaHRtbC4xJyA6ICd3Yi5ibG9ja3MuaHRtbC4yJykgfCB0cmFuc2xhdGVcIlxuICAgICAgICBud2JUb29sVGlwUG9zaXRpb249XCJsZWZ0XCJcbiAgICAgICAgPjxpIGNsYXNzPVwiZmFsIGZhLWV5ZVwiICpuZ0lmPVwiIWhpZGVDb25maWdcIj48L2k+PGkgY2xhc3M9XCJmYWwgZmEtZXllLXNsYXNoXCIgKm5nSWY9XCJoaWRlQ29uZmlnXCI+PC9pXG4gICAgPjwvYT5cbiAgICA8d2ItcHJldmlld3MgW2NvbnRlbnRzXT1cInBhcnNlZENvbnRlbnRcIiAqbmdJZj1cInByZXZpZXcgJiYgaGlkZUNvbmZpZ1wiPjwvd2ItcHJldmlld3M+XG4gICAgPGRpdiBjbGFzcz1cIndiLWJsb2Nrc19fY29udGFpbmVyXCIgKm5nRm9yPVwibGV0IGNvbnRlbnQgb2YgY29udGVudHNcIiBjZGtEcmFnPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cIndiLWNvbXBvbmVudFwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgJ2lzLWluYWN0aXZlJzogaGlkZUNvbmZpZyxcbiAgICAgICAgICAgICAgICAnYm9yZGVyLWdyZXknOiBpc0hpZGRlbkJMb2Nrcyhjb250ZW50LmJsb2NrLnV1aWQpLFxuICAgICAgICAgICAgICAgICdib3JkZXItYmx1ZSc6IHNlbGVjdGVkQ29uZmlnID09PSBjb250ZW50LmJsb2NrLnV1aWRcbiAgICAgICAgICAgIH1cIlxuICAgICAgICA+XG4gICAgICAgICAgICA8d2Itc3RydWN0dXJlLXRvb2xzXG4gICAgICAgICAgICAgICAgW2R5bmFtaWNIaWRkZW5TdHJ1Y3R1cmVdPVwiaXNIaWRkZW5CTG9ja3MoY29udGVudC5ibG9jay51dWlkKVwiXG4gICAgICAgICAgICAgICAgW3V1aWRdPVwiY29udGVudC5ibG9jay51dWlkXCJcbiAgICAgICAgICAgICAgICBbaXNIb3Zlcl09XCJibG9ja0hvdmVyXCJcbiAgICAgICAgICAgICAgICBbaXNBbHdheXNIb3Zlcl09XCJzZWxlY3RlZENvbmZpZyA9PT0gY29udGVudC5ibG9jay51dWlkXCJcbiAgICAgICAgICAgICAgICAoY29uZmlnSXNBY3RpdmF0ZWQpPVwic3dpdGNoSG92ZXIoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgY2RrRHJhZ0hhbmRsZVxuICAgICAgICAgICAgPjwvd2Itc3RydWN0dXJlLXRvb2xzPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndiLWNvbXBvbmVudF9fY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgPHdiLWNvbnRhaW5lci1ibG9jayBbY29udGVudF09XCJjb250ZW50XCI+PC93Yi1jb250YWluZXItYmxvY2s+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJ3Yi1ibG9ja3MtZW1wdHlcIiAqbmdJZj1cImNvbnRlbnRzLmxlbmd0aCA9PT0gMFwiPlxuICAgIDxpbWcgc3JjPVwiYXNzZXRzL2Jsb2Nrcy9pbWFnZXMvaWNvbnMvSWNvbl9EcmFnLnN2Z1wiIC8+XG4gICAgPHA+e3sgdHJhbnNsYXRpb24uc2VsZWN0X2NvbXBvbmVudCB8IHRyYW5zbGF0ZSB9fTwvcD5cbiAgICA8cD57eyB0cmFuc2xhdGlvbi5kb2NfY29tcG9uZW50IHwgdHJhbnNsYXRlIH19PC9wPlxuPC9kaXY+XG4iXX0=
@@ -8,8 +8,6 @@ import { PreviewsComponent } from './previews/previews.component';
8
8
  import { NwbAllModule } from '@wizishop/ng-wizi-bulma';
9
9
  import { ContainerBlockComponent } from './container-block/container-block.component';
10
10
  import { TranslateModule } from '@ngx-translate/core';
11
- import { ScrollingModule as ExperimentalScrollingModule } from '@angular/cdk-experimental/scrolling';
12
- import { ScrollingModule } from '@angular/cdk/scrolling';
13
11
  import * as i0 from "@angular/core";
14
12
  import * as i1 from "@ngx-translate/core";
15
13
  const components = [BlocksComponent, ConfigsComponent, PreviewsComponent, ContainerBlockComponent];
@@ -19,15 +17,12 @@ ComponentsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version
19
17
  ComponentsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.0", ngImport: i0, type: ComponentsModule, declarations: [BlocksComponent, ConfigsComponent, PreviewsComponent, ContainerBlockComponent], imports: [SharedModule,
20
18
  StructuresModule,
21
19
  NwbAllModule,
22
- ColorPickerModule, i1.TranslateModule, ScrollingModule,
23
- ExperimentalScrollingModule], exports: [BlocksComponent, ConfigsComponent, PreviewsComponent, ContainerBlockComponent] });
20
+ ColorPickerModule, i1.TranslateModule], exports: [BlocksComponent, ConfigsComponent, PreviewsComponent, ContainerBlockComponent] });
24
21
  ComponentsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: ComponentsModule, imports: [SharedModule,
25
22
  StructuresModule,
26
23
  NwbAllModule,
27
24
  ColorPickerModule,
28
- TranslateModule.forChild(),
29
- ScrollingModule,
30
- ExperimentalScrollingModule] });
25
+ TranslateModule.forChild()] });
31
26
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: ComponentsModule, decorators: [{
32
27
  type: NgModule,
33
28
  args: [{
@@ -38,10 +33,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImpor
38
33
  NwbAllModule,
39
34
  ColorPickerModule,
40
35
  TranslateModule.forChild(),
41
- ScrollingModule,
42
- ExperimentalScrollingModule
43
36
  ],
44
37
  exports: components,
45
38
  }]
46
39
  }] });
47
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50cy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy93aXppLWJsb2NrL3NyYy9saWIvY29tcG9uZW50cy9jb21wb25lbnRzLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDbkUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDckQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZUFBZSxJQUFJLDJCQUEyQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDckcsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7QUFFekQsTUFBTSxVQUFVLEdBQUcsQ0FBQyxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsaUJBQWlCLEVBQUUsdUJBQXVCLENBQUMsQ0FBQztBQWVuRyxNQUFNLE9BQU8sZ0JBQWdCOzs2R0FBaEIsZ0JBQWdCOzhHQUFoQixnQkFBZ0IsaUJBZlQsZUFBZSxFQUFFLGdCQUFnQixFQUFFLGlCQUFpQixFQUFFLHVCQUF1QixhQUt6RixZQUFZO1FBQ1osZ0JBQWdCO1FBQ2hCLFlBQVk7UUFDWixpQkFBaUIsc0JBRWpCLGVBQWU7UUFDZiwyQkFBMkIsYUFYZixlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsaUJBQWlCLEVBQUUsdUJBQXVCOzhHQWVwRixnQkFBZ0IsWUFWckIsWUFBWTtRQUNaLGdCQUFnQjtRQUNoQixZQUFZO1FBQ1osaUJBQWlCO1FBQ2pCLGVBQWUsQ0FBQyxRQUFRLEVBQUU7UUFDMUIsZUFBZTtRQUNmLDJCQUEyQjsyRkFJdEIsZ0JBQWdCO2tCQWI1QixRQUFRO21CQUFDO29CQUNOLFlBQVksRUFBRSxVQUFVO29CQUN4QixPQUFPLEVBQUU7d0JBQ0wsWUFBWTt3QkFDWixnQkFBZ0I7d0JBQ2hCLFlBQVk7d0JBQ1osaUJBQWlCO3dCQUNqQixlQUFlLENBQUMsUUFBUSxFQUFFO3dCQUMxQixlQUFlO3dCQUNmLDJCQUEyQjtxQkFDOUI7b0JBQ0QsT0FBTyxFQUFFLFVBQVU7aUJBQ3RCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNoYXJlZE1vZHVsZSB9IGZyb20gJy4uL3NoYXJlZC9zaGFyZWQubW9kdWxlJztcbmltcG9ydCB7IEJsb2Nrc0NvbXBvbmVudCB9IGZyb20gJy4vYmxvY2tzL2Jsb2Nrcy5jb21wb25lbnQnO1xuaW1wb3J0IHsgU3RydWN0dXJlc01vZHVsZSB9IGZyb20gJy4uL3N0cnVjdHVyZXMvc3RydWN0dXJlcy5tb2R1bGUnO1xuaW1wb3J0IHsgQ29uZmlnc0NvbXBvbmVudCB9IGZyb20gJy4vY29uZmlncy9jb25maWdzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb2xvclBpY2tlck1vZHVsZSB9IGZyb20gJ25neC1jb2xvci1waWNrZXInO1xuaW1wb3J0IHsgUHJldmlld3NDb21wb25lbnQgfSBmcm9tICcuL3ByZXZpZXdzL3ByZXZpZXdzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOd2JBbGxNb2R1bGUgfSBmcm9tICdAd2l6aXNob3Avbmctd2l6aS1idWxtYSc7XG5pbXBvcnQgeyBDb250YWluZXJCbG9ja0NvbXBvbmVudCB9IGZyb20gJy4vY29udGFpbmVyLWJsb2NrL2NvbnRhaW5lci1ibG9jay5jb21wb25lbnQnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBTY3JvbGxpbmdNb2R1bGUgYXMgRXhwZXJpbWVudGFsU2Nyb2xsaW5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrLWV4cGVyaW1lbnRhbC9zY3JvbGxpbmcnO1xuaW1wb3J0IHsgU2Nyb2xsaW5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3Njcm9sbGluZyc7XG5cbmNvbnN0IGNvbXBvbmVudHMgPSBbQmxvY2tzQ29tcG9uZW50LCBDb25maWdzQ29tcG9uZW50LCBQcmV2aWV3c0NvbXBvbmVudCwgQ29udGFpbmVyQmxvY2tDb21wb25lbnRdO1xuXG5ATmdNb2R1bGUoe1xuICAgIGRlY2xhcmF0aW9uczogY29tcG9uZW50cyxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIFNoYXJlZE1vZHVsZSxcbiAgICAgICAgU3RydWN0dXJlc01vZHVsZSxcbiAgICAgICAgTndiQWxsTW9kdWxlLFxuICAgICAgICBDb2xvclBpY2tlck1vZHVsZSxcbiAgICAgICAgVHJhbnNsYXRlTW9kdWxlLmZvckNoaWxkKCksXG4gICAgICAgIFNjcm9sbGluZ01vZHVsZSxcbiAgICAgICAgRXhwZXJpbWVudGFsU2Nyb2xsaW5nTW9kdWxlXG4gICAgXSxcbiAgICBleHBvcnRzOiBjb21wb25lbnRzLFxufSlcbmV4cG9ydCBjbGFzcyBDb21wb25lbnRzTW9kdWxlIHt9XG4iXX0=
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50cy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy93aXppLWJsb2NrL3NyYy9saWIvY29tcG9uZW50cy9jb21wb25lbnRzLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDbkUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDckQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7O0FBRXRELE1BQU0sVUFBVSxHQUFHLENBQUMsZUFBZSxFQUFFLGdCQUFnQixFQUFFLGlCQUFpQixFQUFFLHVCQUF1QixDQUFDLENBQUM7QUFhbkcsTUFBTSxPQUFPLGdCQUFnQjs7NkdBQWhCLGdCQUFnQjs4R0FBaEIsZ0JBQWdCLGlCQWJULGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSx1QkFBdUIsYUFLekYsWUFBWTtRQUNaLGdCQUFnQjtRQUNoQixZQUFZO1FBQ1osaUJBQWlCLGlDQVJMLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSx1QkFBdUI7OEdBYXBGLGdCQUFnQixZQVJyQixZQUFZO1FBQ1osZ0JBQWdCO1FBQ2hCLFlBQVk7UUFDWixpQkFBaUI7UUFDakIsZUFBZSxDQUFDLFFBQVEsRUFBRTsyRkFJckIsZ0JBQWdCO2tCQVg1QixRQUFRO21CQUFDO29CQUNOLFlBQVksRUFBRSxVQUFVO29CQUN4QixPQUFPLEVBQUU7d0JBQ0wsWUFBWTt3QkFDWixnQkFBZ0I7d0JBQ2hCLFlBQVk7d0JBQ1osaUJBQWlCO3dCQUNqQixlQUFlLENBQUMsUUFBUSxFQUFFO3FCQUM3QjtvQkFDRCxPQUFPLEVBQUUsVUFBVTtpQkFDdEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2hhcmVkTW9kdWxlIH0gZnJvbSAnLi4vc2hhcmVkL3NoYXJlZC5tb2R1bGUnO1xuaW1wb3J0IHsgQmxvY2tzQ29tcG9uZW50IH0gZnJvbSAnLi9ibG9ja3MvYmxvY2tzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTdHJ1Y3R1cmVzTW9kdWxlIH0gZnJvbSAnLi4vc3RydWN0dXJlcy9zdHJ1Y3R1cmVzLm1vZHVsZSc7XG5pbXBvcnQgeyBDb25maWdzQ29tcG9uZW50IH0gZnJvbSAnLi9jb25maWdzL2NvbmZpZ3MuY29tcG9uZW50JztcbmltcG9ydCB7IENvbG9yUGlja2VyTW9kdWxlIH0gZnJvbSAnbmd4LWNvbG9yLXBpY2tlcic7XG5pbXBvcnQgeyBQcmV2aWV3c0NvbXBvbmVudCB9IGZyb20gJy4vcHJldmlld3MvcHJldmlld3MuY29tcG9uZW50JztcbmltcG9ydCB7IE53YkFsbE1vZHVsZSB9IGZyb20gJ0B3aXppc2hvcC9uZy13aXppLWJ1bG1hJztcbmltcG9ydCB7IENvbnRhaW5lckJsb2NrQ29tcG9uZW50IH0gZnJvbSAnLi9jb250YWluZXItYmxvY2svY29udGFpbmVyLWJsb2NrLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcblxuY29uc3QgY29tcG9uZW50cyA9IFtCbG9ja3NDb21wb25lbnQsIENvbmZpZ3NDb21wb25lbnQsIFByZXZpZXdzQ29tcG9uZW50LCBDb250YWluZXJCbG9ja0NvbXBvbmVudF07XG5cbkBOZ01vZHVsZSh7XG4gICAgZGVjbGFyYXRpb25zOiBjb21wb25lbnRzLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgU2hhcmVkTW9kdWxlLFxuICAgICAgICBTdHJ1Y3R1cmVzTW9kdWxlLFxuICAgICAgICBOd2JBbGxNb2R1bGUsXG4gICAgICAgIENvbG9yUGlja2VyTW9kdWxlLFxuICAgICAgICBUcmFuc2xhdGVNb2R1bGUuZm9yQ2hpbGQoKSxcbiAgICBdLFxuICAgIGV4cG9ydHM6IGNvbXBvbmVudHMsXG59KVxuZXhwb3J0IGNsYXNzIENvbXBvbmVudHNNb2R1bGUge31cbiJdfQ==
@@ -17,19 +17,16 @@ export class ContentService {
17
17
  this.contentsSource.next();
18
18
  }
19
19
  setContents(value) {
20
- this._contents = [...this._contents, value];
20
+ this._contents.push(value);
21
21
  this.contentsSource.next();
22
+ this.goToLastElement();
22
23
  }
23
24
  setContentsWithIndex(index, value) {
24
- let cloneArray = this._contents.slice(0);
25
- cloneArray.splice(index, 0, value);
26
- this._contents = cloneArray;
25
+ this._contents.splice(index, 0, value);
27
26
  this.contentsSource.next();
28
27
  }
29
28
  reorderContents(previousIndex, currentIndex) {
30
- let cloneArray = this._contents.slice(0);
31
- moveItemInArray(cloneArray, previousIndex, currentIndex);
32
- this._contents = cloneArray;
29
+ moveItemInArray(this._contents, previousIndex, currentIndex);
33
30
  this.contentsSource.next();
34
31
  }
35
32
  getContentByUUID(uuid) {
@@ -59,9 +56,7 @@ export class ContentService {
59
56
  if (keyToCopy !== null) {
60
57
  const toCopy = this.deepCopy(this._contents[keyToCopy]);
61
58
  toCopy.block.uuid = uuidV4();
62
- let cloneArray = this._contents.slice(0);
63
- cloneArray.splice(keyToCopy + 1, 0, toCopy);
64
- this._contents = cloneArray;
59
+ this._contents.splice(keyToCopy + 1, 0, toCopy);
65
60
  }
66
61
  this.contentsSource.next();
67
62
  }
@@ -88,6 +83,12 @@ export class ContentService {
88
83
  });
89
84
  return content;
90
85
  }
86
+ goToLastElement() {
87
+ setTimeout(() => {
88
+ const el = document.getElementById('wb-footer__block');
89
+ el.scrollIntoView({ behavior: 'smooth', block: 'end', inline: 'nearest' });
90
+ }, 400);
91
+ }
91
92
  deepCopy(obj) {
92
93
  let copy;
93
94
  if (null == obj || 'object' !== typeof obj) {
@@ -122,4 +123,4 @@ ContentService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", versi
122
123
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: ContentService, decorators: [{
123
124
  type: Injectable
124
125
  }] });
125
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvd2l6aS1ibG9jay9zcmMvbGliL3NlcnZpY2VzL3V0aWxzL2NvbnRlbnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBR3pELE9BQU8sRUFBRSxFQUFFLElBQUksTUFBTSxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQUdwQyxNQUFNLE9BQU8sY0FBYztJQUQzQjtRQUdZLGNBQVMsR0FBK0IsRUFBRSxDQUFDO1FBRTNDLG1CQUFjLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUVyQyxpQkFBWSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLENBQUM7S0EwSTdEO0lBeElHLElBQUksUUFBUTtRQUNSLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFBSSxRQUFRLENBQUMsS0FBaUM7UUFDMUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFFdkIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQUs7UUFDYixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRTVDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVELG9CQUFvQixDQUFDLEtBQUssRUFBRSxLQUFLO1FBQzdCLElBQUksVUFBVSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3pDLFVBQVUsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNuQyxJQUFJLENBQUMsU0FBUyxHQUFHLFVBQVUsQ0FBQztRQUU1QixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFRCxlQUFlLENBQUMsYUFBYSxFQUFFLFlBQVk7UUFDdkMsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDekMsZUFBZSxDQUFDLFVBQVUsRUFBRSxhQUFhLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLFNBQVMsR0FBRyxVQUFVLENBQUM7UUFFNUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsSUFBSTtRQUNqQixJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDbkIsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ2hDLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLElBQUksRUFBRTtnQkFDdkMsT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDL0I7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sT0FBTyxDQUFDO0lBQ25CLENBQUM7SUFFRCxZQUFZLENBQUMsSUFBSSxFQUFFLFVBQVU7UUFDekIsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ2hDLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLElBQUksRUFBRTtnQkFDdkMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUM7YUFDbEM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVELHNCQUFzQixDQUFDLElBQUk7UUFDdkIsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUNqRCxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxJQUFJLEVBQUU7Z0JBQzNDLFNBQVMsR0FBRyxLQUFLLENBQUM7YUFDckI7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksU0FBUyxLQUFLLElBQUksRUFBRTtZQUNwQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztZQUN4RCxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxNQUFNLEVBQUUsQ0FBQztZQUU3QixJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN6QyxVQUFVLENBQUMsTUFBTSxDQUFDLFNBQVMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQzVDLElBQUksQ0FBQyxTQUFTLEdBQUcsVUFBVSxDQUFDO1NBQy9CO1FBRUQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRUQsbUJBQW1CLENBQUMsSUFBSTtRQUNwQixNQUFNLFFBQVEsR0FBRyxFQUFFLENBQUM7UUFDcEIsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ2hDLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLElBQUksRUFBRTtnQkFDdkMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDcEM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO1FBQzFCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVELFNBQVM7UUFDTCxJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRUQsWUFBWTtRQUNSLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUM3QixDQUFDO0lBRUQsZ0JBQWdCO1FBQ1osTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBRW5CLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3pCLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzdCLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxPQUFPLENBQUM7SUFDbkIsQ0FBQztJQUVELFFBQVEsQ0FBQyxHQUFHO1FBQ1IsSUFBSSxJQUFJLENBQUM7UUFFVCxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksUUFBUSxLQUFLLE9BQU8sR0FBRyxFQUFFO1lBQ3hDLE9BQU8sR0FBRyxDQUFDO1NBQ2Q7UUFFRCxJQUFJLEdBQUcsWUFBWSxJQUFJLEVBQUU7WUFDckIsSUFBSSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztZQUM1QixPQUFPLElBQUksQ0FBQztTQUNmO1FBRUQsSUFBSSxHQUFHLFlBQVksS0FBSyxFQUFFO1lBQ3RCLElBQUksR0FBRyxFQUFFLENBQUM7WUFDVixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUM1QyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNuQztZQUNELE9BQU8sSUFBSSxDQUFDO1NBQ2Y7UUFFRCxJQUFJLEdBQUcsWUFBWSxNQUFNLEVBQUU7WUFDdkIsSUFBSSxHQUFHLEVBQUUsQ0FBQztZQUNWLEtBQUssTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFO2dCQUNwQixJQUFJLEdBQUcsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQUU7b0JBQzFCLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO2lCQUN6QzthQUNKO1lBQ0QsT0FBTyxJQUFJLENBQUM7U0FDZjtRQUVELE1BQU0sSUFBSSxLQUFLLENBQUMsNkNBQTZDLENBQUMsQ0FBQztJQUNuRSxDQUFDOzsyR0EvSVEsY0FBYzsrR0FBZCxjQUFjOzJGQUFkLGNBQWM7a0JBRDFCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtb3ZlSXRlbUluQXJyYXkgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcbmltcG9ydCB7IEZvcm1zRHRvIH0gZnJvbSAnLi4vLi4vZHRvcy9mb3Jtcy9mb3Jtcy5kdG8nO1xuaW1wb3J0IHsgUGFyZW50QmxvY2tEdG8gfSBmcm9tICcuLi8uLi9kdG9zL2Jsb2Nrcy9wYXJlbnQtYmxvY2suZHRvJztcbmltcG9ydCB7IHY0IGFzIHV1aWRWNCB9IGZyb20gJ3V1aWQnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQ29udGVudFNlcnZpY2Uge1xuXG4gICAgcHJpdmF0ZSBfY29udGVudHM6IEZvcm1zRHRvPFBhcmVudEJsb2NrRHRvPltdID0gW107XG5cbiAgICBwcml2YXRlIGNvbnRlbnRzU291cmNlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIHByaXZhdGUgY29udGVudHNEb25lID0gdGhpcy5jb250ZW50c1NvdXJjZS5hc09ic2VydmFibGUoKTtcblxuICAgIGdldCBjb250ZW50cygpOiBGb3Jtc0R0bzxQYXJlbnRCbG9ja0R0bz5bXSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb250ZW50cztcbiAgICB9XG5cbiAgICBzZXQgY29udGVudHModmFsdWU6IEZvcm1zRHRvPFBhcmVudEJsb2NrRHRvPltdKSB7XG4gICAgICAgIHRoaXMuX2NvbnRlbnRzID0gdmFsdWU7XG5cbiAgICAgICAgdGhpcy5jb250ZW50c1NvdXJjZS5uZXh0KCk7XG4gICAgfVxuXG4gICAgc2V0Q29udGVudHModmFsdWUpIHtcbiAgICAgICAgdGhpcy5fY29udGVudHMgPSBbLi4udGhpcy5fY29udGVudHMsIHZhbHVlXTtcblxuICAgICAgICB0aGlzLmNvbnRlbnRzU291cmNlLm5leHQoKTtcbiAgICB9XG5cbiAgICBzZXRDb250ZW50c1dpdGhJbmRleChpbmRleCwgdmFsdWUpIHtcbiAgICAgICAgbGV0IGNsb25lQXJyYXkgPSB0aGlzLl9jb250ZW50cy5zbGljZSgwKTtcbiAgICAgICAgY2xvbmVBcnJheS5zcGxpY2UoaW5kZXgsIDAsIHZhbHVlKTtcbiAgICAgICAgdGhpcy5fY29udGVudHMgPSBjbG9uZUFycmF5O1xuXG4gICAgICAgIHRoaXMuY29udGVudHNTb3VyY2UubmV4dCgpO1xuICAgIH1cblxuICAgIHJlb3JkZXJDb250ZW50cyhwcmV2aW91c0luZGV4LCBjdXJyZW50SW5kZXgpIHtcbiAgICAgICAgbGV0IGNsb25lQXJyYXkgPSB0aGlzLl9jb250ZW50cy5zbGljZSgwKTtcbiAgICAgICAgbW92ZUl0ZW1JbkFycmF5KGNsb25lQXJyYXksIHByZXZpb3VzSW5kZXgsIGN1cnJlbnRJbmRleCk7XG4gICAgICAgIHRoaXMuX2NvbnRlbnRzID0gY2xvbmVBcnJheTtcblxuICAgICAgICB0aGlzLmNvbnRlbnRzU291cmNlLm5leHQoKTtcbiAgICB9XG5cbiAgICBnZXRDb250ZW50QnlVVUlEKHV1aWQpIHtcbiAgICAgICAgbGV0IGNvbnRlbnQgPSBudWxsO1xuICAgICAgICBPYmplY3Qua2V5cyh0aGlzLl9jb250ZW50cykubWFwKGsgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuX2NvbnRlbnRzW2tdLmJsb2NrLnV1aWQgPT09IHV1aWQpIHtcbiAgICAgICAgICAgICAgICBjb250ZW50ID0gdGhpcy5fY29udGVudHNba107XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBjb250ZW50O1xuICAgIH1cblxuICAgIHVwZGF0ZUJ5VVVJRCh1dWlkLCBuZXdDb250ZW50KSB7XG4gICAgICAgIE9iamVjdC5rZXlzKHRoaXMuX2NvbnRlbnRzKS5tYXAoayA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5fY29udGVudHNba10uYmxvY2sudXVpZCA9PT0gdXVpZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2NvbnRlbnRzW2tdID0gbmV3Q29udGVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5jb250ZW50c1NvdXJjZS5uZXh0KCk7XG4gICAgfVxuXG4gICAgZHVwbGljYXRlQ29udGVudEJ5VVVJRCh1dWlkKSB7XG4gICAgICAgIGxldCBrZXlUb0NvcHkgPSBudWxsO1xuICAgICAgICBPYmplY3Qua2V5cyh0aGlzLl9jb250ZW50cykuZm9yRWFjaCgodmFsdWUsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5fY29udGVudHNbaW5kZXhdLmJsb2NrLnV1aWQgPT09IHV1aWQpIHtcbiAgICAgICAgICAgICAgICBrZXlUb0NvcHkgPSBpbmRleDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKGtleVRvQ29weSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgY29uc3QgdG9Db3B5ID0gdGhpcy5kZWVwQ29weSh0aGlzLl9jb250ZW50c1trZXlUb0NvcHldKTtcbiAgICAgICAgICAgIHRvQ29weS5ibG9jay51dWlkID0gdXVpZFY0KCk7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGxldCBjbG9uZUFycmF5ID0gdGhpcy5fY29udGVudHMuc2xpY2UoMCk7XG4gICAgICAgICAgICBjbG9uZUFycmF5LnNwbGljZShrZXlUb0NvcHkgKyAxLCAwLCB0b0NvcHkpO1xuICAgICAgICAgICAgdGhpcy5fY29udGVudHMgPSBjbG9uZUFycmF5O1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jb250ZW50c1NvdXJjZS5uZXh0KCk7XG4gICAgfVxuXG4gICAgcmVtb3ZlQ29udGVudEJ5VVVJRCh1dWlkKSB7XG4gICAgICAgIGNvbnN0IGNvbnRlbnRzID0gW107XG4gICAgICAgIE9iamVjdC5rZXlzKHRoaXMuX2NvbnRlbnRzKS5tYXAoayA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5fY29udGVudHNba10uYmxvY2sudXVpZCAhPT0gdXVpZCkge1xuICAgICAgICAgICAgICAgIGNvbnRlbnRzLnB1c2godGhpcy5fY29udGVudHNba10pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLl9jb250ZW50cyA9IGNvbnRlbnRzO1xuICAgICAgICB0aGlzLmNvbnRlbnRzU291cmNlLm5leHQoKTtcbiAgICB9XG5cbiAgICBkZWxldGVBbGwoKSB7XG4gICAgICAgIHRoaXMuX2NvbnRlbnRzID0gW107XG4gICAgfVxuXG4gICAgY29udGVudEV2ZW50KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb250ZW50c0RvbmU7XG4gICAgfVxuXG4gICAgZ2V0UGFyc2VkQ29udGVudCgpIHtcbiAgICAgICAgY29uc3QgY29udGVudCA9IFtdO1xuXG4gICAgICAgIHRoaXMuY29udGVudHMuZm9yRWFjaChmb3JtID0+IHtcbiAgICAgICAgICAgIGNvbnRlbnQucHVzaChmb3JtLmJsb2NrKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgfVxuXG4gICAgZGVlcENvcHkob2JqKSB7XG4gICAgICAgIGxldCBjb3B5O1xuXG4gICAgICAgIGlmIChudWxsID09IG9iaiB8fCAnb2JqZWN0JyAhPT0gdHlwZW9mIG9iaikge1xuICAgICAgICAgICAgcmV0dXJuIG9iajtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvYmogaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICAgICAgICBjb3B5ID0gbmV3IERhdGUoKTtcbiAgICAgICAgICAgIGNvcHkuc2V0VGltZShvYmouZ2V0VGltZSgpKTtcbiAgICAgICAgICAgIHJldHVybiBjb3B5O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9iaiBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgICAgICBjb3B5ID0gW107XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMCwgbGVuID0gb2JqLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY29weVtpXSA9IHRoaXMuZGVlcENvcHkob2JqW2ldKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBjb3B5O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9iaiBpbnN0YW5jZW9mIE9iamVjdCkge1xuICAgICAgICAgICAgY29weSA9IHt9O1xuICAgICAgICAgICAgZm9yIChjb25zdCBhdHRyIGluIG9iaikge1xuICAgICAgICAgICAgICAgIGlmIChvYmouaGFzT3duUHJvcGVydHkoYXR0cikpIHtcbiAgICAgICAgICAgICAgICAgICAgY29weVthdHRyXSA9IHRoaXMuZGVlcENvcHkob2JqW2F0dHJdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gY29weTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IG5ldyBFcnJvcignVW5hYmxlIHRvIGNvcHkgb2JqISBJdHMgdHlwZSBub3Qgc3VwcG9ydGVkLicpO1xuICAgIH1cbn1cbiJdfQ==
126
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvd2l6aS1ibG9jay9zcmMvbGliL3NlcnZpY2VzL3V0aWxzL2NvbnRlbnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBR3pELE9BQU8sRUFBRSxFQUFFLElBQUksTUFBTSxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQUdwQyxNQUFNLE9BQU8sY0FBYztJQUQzQjtRQUdZLGNBQVMsR0FBK0IsRUFBRSxDQUFDO1FBRTNDLG1CQUFjLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUVyQyxpQkFBWSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLENBQUM7S0E4STdEO0lBNUlHLElBQUksUUFBUTtRQUNSLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFBSSxRQUFRLENBQUMsS0FBaUM7UUFDMUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFFdkIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQUs7UUFDYixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUUzQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO1FBRTNCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsb0JBQW9CLENBQUMsS0FBSyxFQUFFLEtBQUs7UUFDN0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUV2QyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFRCxlQUFlLENBQUMsYUFBYSxFQUFFLFlBQVk7UUFDdkMsZUFBZSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsYUFBYSxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBRTdELElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVELGdCQUFnQixDQUFDLElBQUk7UUFDakIsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ25CLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNoQyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxJQUFJLEVBQUU7Z0JBQ3ZDLE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQy9CO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLE9BQU8sQ0FBQztJQUNuQixDQUFDO0lBRUQsWUFBWSxDQUFDLElBQUksRUFBRSxVQUFVO1FBQ3pCLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNoQyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxJQUFJLEVBQUU7Z0JBQ3ZDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDO2FBQ2xDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxJQUFJO1FBQ3ZCLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQztRQUNyQixNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDakQsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssSUFBSSxFQUFFO2dCQUMzQyxTQUFTLEdBQUcsS0FBSyxDQUFDO2FBQ3JCO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLFNBQVMsS0FBSyxJQUFJLEVBQUU7WUFDcEIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7WUFDeEQsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsTUFBTSxFQUFFLENBQUM7WUFFN0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsU0FBUyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7U0FDbkQ7UUFFRCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxJQUFJO1FBQ3BCLE1BQU0sUUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNwQixNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDaEMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssSUFBSSxFQUFFO2dCQUN2QyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNwQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUM7UUFDMUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRUQsU0FBUztRQUNMLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxZQUFZO1FBQ1IsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzdCLENBQUM7SUFFRCxnQkFBZ0I7UUFDWixNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFFbkIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDekIsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDN0IsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLE9BQU8sQ0FBQztJQUNuQixDQUFDO0lBRUQsZUFBZTtRQUNYLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDWixNQUFNLEVBQUUsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLGtCQUFrQixDQUFDLENBQUM7WUFDdkQsRUFBRSxDQUFDLGNBQWMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztRQUMvRSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDWixDQUFDO0lBR0QsUUFBUSxDQUFDLEdBQUc7UUFDUixJQUFJLElBQUksQ0FBQztRQUVULElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxRQUFRLEtBQUssT0FBTyxHQUFHLEVBQUU7WUFDeEMsT0FBTyxHQUFHLENBQUM7U0FDZDtRQUVELElBQUksR0FBRyxZQUFZLElBQUksRUFBRTtZQUNyQixJQUFJLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1lBQzVCLE9BQU8sSUFBSSxDQUFDO1NBQ2Y7UUFFRCxJQUFJLEdBQUcsWUFBWSxLQUFLLEVBQUU7WUFDdEIsSUFBSSxHQUFHLEVBQUUsQ0FBQztZQUNWLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQzVDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ25DO1lBQ0QsT0FBTyxJQUFJLENBQUM7U0FDZjtRQUVELElBQUksR0FBRyxZQUFZLE1BQU0sRUFBRTtZQUN2QixJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ1YsS0FBSyxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUU7Z0JBQ3BCLElBQUksR0FBRyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRTtvQkFDMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7aUJBQ3pDO2FBQ0o7WUFDRCxPQUFPLElBQUksQ0FBQztTQUNmO1FBRUQsTUFBTSxJQUFJLEtBQUssQ0FBQyw2Q0FBNkMsQ0FBQyxDQUFDO0lBQ25FLENBQUM7OzJHQW5KUSxjQUFjOytHQUFkLGNBQWM7MkZBQWQsY0FBYztrQkFEMUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1vdmVJdGVtSW5BcnJheSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xuaW1wb3J0IHsgRm9ybXNEdG8gfSBmcm9tICcuLi8uLi9kdG9zL2Zvcm1zL2Zvcm1zLmR0byc7XG5pbXBvcnQgeyBQYXJlbnRCbG9ja0R0byB9IGZyb20gJy4uLy4uL2R0b3MvYmxvY2tzL3BhcmVudC1ibG9jay5kdG8nO1xuaW1wb3J0IHsgdjQgYXMgdXVpZFY0IH0gZnJvbSAndXVpZCc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBDb250ZW50U2VydmljZSB7XG5cbiAgICBwcml2YXRlIF9jb250ZW50czogRm9ybXNEdG88UGFyZW50QmxvY2tEdG8+W10gPSBbXTtcblxuICAgIHByaXZhdGUgY29udGVudHNTb3VyY2UgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgcHJpdmF0ZSBjb250ZW50c0RvbmUgPSB0aGlzLmNvbnRlbnRzU291cmNlLmFzT2JzZXJ2YWJsZSgpO1xuXG4gICAgZ2V0IGNvbnRlbnRzKCk6IEZvcm1zRHRvPFBhcmVudEJsb2NrRHRvPltdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbnRlbnRzO1xuICAgIH1cblxuICAgIHNldCBjb250ZW50cyh2YWx1ZTogRm9ybXNEdG88UGFyZW50QmxvY2tEdG8+W10pIHtcbiAgICAgICAgdGhpcy5fY29udGVudHMgPSB2YWx1ZTtcblxuICAgICAgICB0aGlzLmNvbnRlbnRzU291cmNlLm5leHQoKTtcbiAgICB9XG5cbiAgICBzZXRDb250ZW50cyh2YWx1ZSkge1xuICAgICAgICB0aGlzLl9jb250ZW50cy5wdXNoKHZhbHVlKTtcblxuICAgICAgICB0aGlzLmNvbnRlbnRzU291cmNlLm5leHQoKTtcblxuICAgICAgICB0aGlzLmdvVG9MYXN0RWxlbWVudCgpO1xuICAgIH1cblxuICAgIHNldENvbnRlbnRzV2l0aEluZGV4KGluZGV4LCB2YWx1ZSkge1xuICAgICAgICB0aGlzLl9jb250ZW50cy5zcGxpY2UoaW5kZXgsIDAsIHZhbHVlKTtcblxuICAgICAgICB0aGlzLmNvbnRlbnRzU291cmNlLm5leHQoKTtcbiAgICB9XG5cbiAgICByZW9yZGVyQ29udGVudHMocHJldmlvdXNJbmRleCwgY3VycmVudEluZGV4KSB7XG4gICAgICAgIG1vdmVJdGVtSW5BcnJheSh0aGlzLl9jb250ZW50cywgcHJldmlvdXNJbmRleCwgY3VycmVudEluZGV4KTtcblxuICAgICAgICB0aGlzLmNvbnRlbnRzU291cmNlLm5leHQoKTtcbiAgICB9XG5cbiAgICBnZXRDb250ZW50QnlVVUlEKHV1aWQpIHtcbiAgICAgICAgbGV0IGNvbnRlbnQgPSBudWxsO1xuICAgICAgICBPYmplY3Qua2V5cyh0aGlzLl9jb250ZW50cykubWFwKGsgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuX2NvbnRlbnRzW2tdLmJsb2NrLnV1aWQgPT09IHV1aWQpIHtcbiAgICAgICAgICAgICAgICBjb250ZW50ID0gdGhpcy5fY29udGVudHNba107XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBjb250ZW50O1xuICAgIH1cblxuICAgIHVwZGF0ZUJ5VVVJRCh1dWlkLCBuZXdDb250ZW50KSB7XG4gICAgICAgIE9iamVjdC5rZXlzKHRoaXMuX2NvbnRlbnRzKS5tYXAoayA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5fY29udGVudHNba10uYmxvY2sudXVpZCA9PT0gdXVpZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2NvbnRlbnRzW2tdID0gbmV3Q29udGVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5jb250ZW50c1NvdXJjZS5uZXh0KCk7XG4gICAgfVxuXG4gICAgZHVwbGljYXRlQ29udGVudEJ5VVVJRCh1dWlkKSB7XG4gICAgICAgIGxldCBrZXlUb0NvcHkgPSBudWxsO1xuICAgICAgICBPYmplY3Qua2V5cyh0aGlzLl9jb250ZW50cykuZm9yRWFjaCgodmFsdWUsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5fY29udGVudHNbaW5kZXhdLmJsb2NrLnV1aWQgPT09IHV1aWQpIHtcbiAgICAgICAgICAgICAgICBrZXlUb0NvcHkgPSBpbmRleDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKGtleVRvQ29weSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgY29uc3QgdG9Db3B5ID0gdGhpcy5kZWVwQ29weSh0aGlzLl9jb250ZW50c1trZXlUb0NvcHldKTtcbiAgICAgICAgICAgIHRvQ29weS5ibG9jay51dWlkID0gdXVpZFY0KCk7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIHRoaXMuX2NvbnRlbnRzLnNwbGljZShrZXlUb0NvcHkgKyAxLCAwLCB0b0NvcHkpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jb250ZW50c1NvdXJjZS5uZXh0KCk7XG4gICAgfVxuXG4gICAgcmVtb3ZlQ29udGVudEJ5VVVJRCh1dWlkKSB7XG4gICAgICAgIGNvbnN0IGNvbnRlbnRzID0gW107XG4gICAgICAgIE9iamVjdC5rZXlzKHRoaXMuX2NvbnRlbnRzKS5tYXAoayA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5fY29udGVudHNba10uYmxvY2sudXVpZCAhPT0gdXVpZCkge1xuICAgICAgICAgICAgICAgIGNvbnRlbnRzLnB1c2godGhpcy5fY29udGVudHNba10pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLl9jb250ZW50cyA9IGNvbnRlbnRzO1xuICAgICAgICB0aGlzLmNvbnRlbnRzU291cmNlLm5leHQoKTtcbiAgICB9XG5cbiAgICBkZWxldGVBbGwoKSB7XG4gICAgICAgIHRoaXMuX2NvbnRlbnRzID0gW107XG4gICAgfVxuXG4gICAgY29udGVudEV2ZW50KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb250ZW50c0RvbmU7XG4gICAgfVxuXG4gICAgZ2V0UGFyc2VkQ29udGVudCgpIHtcbiAgICAgICAgY29uc3QgY29udGVudCA9IFtdO1xuXG4gICAgICAgIHRoaXMuY29udGVudHMuZm9yRWFjaChmb3JtID0+IHtcbiAgICAgICAgICAgIGNvbnRlbnQucHVzaChmb3JtLmJsb2NrKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgfVxuXG4gICAgZ29Ub0xhc3RFbGVtZW50KCkge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3diLWZvb3Rlcl9fYmxvY2snKTtcbiAgICAgICAgICAgIGVsLnNjcm9sbEludG9WaWV3KHsgYmVoYXZpb3I6ICdzbW9vdGgnLCBibG9jazogJ2VuZCcsIGlubGluZTogJ25lYXJlc3QnIH0pO1xuICAgICAgICB9LCA0MDApO1xuICAgIH1cblxuXG4gICAgZGVlcENvcHkob2JqKSB7XG4gICAgICAgIGxldCBjb3B5O1xuXG4gICAgICAgIGlmIChudWxsID09IG9iaiB8fCAnb2JqZWN0JyAhPT0gdHlwZW9mIG9iaikge1xuICAgICAgICAgICAgcmV0dXJuIG9iajtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvYmogaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICAgICAgICBjb3B5ID0gbmV3IERhdGUoKTtcbiAgICAgICAgICAgIGNvcHkuc2V0VGltZShvYmouZ2V0VGltZSgpKTtcbiAgICAgICAgICAgIHJldHVybiBjb3B5O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9iaiBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgICAgICBjb3B5ID0gW107XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMCwgbGVuID0gb2JqLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY29weVtpXSA9IHRoaXMuZGVlcENvcHkob2JqW2ldKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBjb3B5O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9iaiBpbnN0YW5jZW9mIE9iamVjdCkge1xuICAgICAgICAgICAgY29weSA9IHt9O1xuICAgICAgICAgICAgZm9yIChjb25zdCBhdHRyIGluIG9iaikge1xuICAgICAgICAgICAgICAgIGlmIChvYmouaGFzT3duUHJvcGVydHkoYXR0cikpIHtcbiAgICAgICAgICAgICAgICAgICAgY29weVthdHRyXSA9IHRoaXMuZGVlcENvcHkob2JqW2F0dHJdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gY29weTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IG5ldyBFcnJvcignVW5hYmxlIHRvIGNvcHkgb2JqISBJdHMgdHlwZSBub3Qgc3VwcG9ydGVkLicpO1xuICAgIH1cbn1cbiJdfQ==
@@ -1,4 +1,4 @@
1
- import { Component, ElementRef, EventEmitter, Input, isDevMode, Output, ViewChild } from '@angular/core';
1
+ import { Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';
2
2
  import { ContentService } from '../../../services/utils/content.service';
3
3
  import { ConfigService } from '../../../services/utils/config.service';
4
4
  import { WiziBlockService } from '../../../services/wizi-block.service';
@@ -19,6 +19,7 @@ export class StructureToolsComponent {
19
19
  this.isHover = false;
20
20
  this.configIsActivated = new EventEmitter();
21
21
  this.deleteButtonHold = false;
22
+ this.hoverBtnDelete = false;
22
23
  this.hideConfig = false;
23
24
  this.blockIsHidden = false;
24
25
  this.contentEventSubscription = null;
@@ -67,7 +68,7 @@ export class StructureToolsComponent {
67
68
  this.configService.config = this.contentService.getContentByUUID(this.uuid);
68
69
  }
69
70
  removeThis($event) {
70
- if (isDevMode() || $event > 1200) {
71
+ if ($event > 1200) {
71
72
  this.contentService.removeContentByUUID(this.uuid);
72
73
  if (this.configService.config !== null && this.configService.config.block.uuid === this.uuid) {
73
74
  this.configService.config = null;
@@ -93,10 +94,10 @@ export class StructureToolsComponent {
93
94
  }
94
95
  }
95
96
  StructureToolsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: StructureToolsComponent, deps: [{ token: i1.WiziBlockService }, { token: i2.ContentService }, { token: i3.ConfigService }], target: i0.ɵɵFactoryTarget.Component });
96
- StructureToolsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: StructureToolsComponent, selector: "wb-structure-tools", inputs: { uuid: "uuid", dynamicHiddenStructure: "dynamicHiddenStructure", isHover: "isHover", isAlwaysHover: "isAlwaysHover" }, outputs: { configIsActivated: "configIsActivated" }, viewQueries: [{ propertyName: "deleteButton", first: true, predicate: ["deleteButton"], descendants: true }], ngImport: i0, template: "<div class=\"wb-structure-tools\" [ngClass]=\"{ hidden: dynamicHiddenStructure, hover: isHover || isAlwaysHover }\">\n <div>\n <div class=\"wb-structure-tools__move\" *ngIf=\"currentLength > 1\">\n <div>\n <a\n [nwbToolTip]=\"'wb.shared.components.structureTools.1' | translate\"\n nwbToolTipPosition=\"bottom\"\n class=\"button is-rounded is-tooltip-info is-tooltip-bottom-to-right\"\n (click)=\"$event.stopPropagation()\"\n ><i class=\"fas fa-arrows\"></i\n ></a>\n <a\n [nwbToolTip]=\"'wb.shared.components.structureTools.2' | translate\"\n nwbToolTipPosition=\"bottom\"\n class=\"button is-rounded is-tooltip-info button-margin-left\"\n *ngIf=\"currentIndex + 1 !== currentLength\"\n (click)=\"goDown($event)\"\n ><i class=\"fas fa-long-arrow-down\"></i\n ></a>\n <a\n [nwbToolTip]=\"'wb.shared.components.structureTools.3' | translate\"\n nwbToolTipPosition=\"bottom\"\n class=\"button is-rounded is-tooltip-info button-margin-left\"\n *ngIf=\"currentIndex !== 0\"\n (click)=\"goUp($event)\"\n ><i class=\"fas fa-long-arrow-up\"></i\n ></a>\n </div>\n </div>\n <div class=\"wb-structure-tools__edit\">\n <div>\n <i class=\"fas fa-eye-slash\" *ngIf=\"dynamicHiddenStructure\"></i>\n <p>{{ name | translate }}</p>\n <div>\n <a\n href\n class=\"button is-rounded is-tooltip-info\"\n [nwbToolTip]=\"'wb.shared.components.structureTools.4' | translate\"\n nwbToolTipPosition=\"bottom\"\n (click)=\"configThis($event)\"\n *ngIf=\"!hideConfig\"\n ><span></span><i class=\"fas fa-cog\"></i\n ></a>\n <a\n href\n class=\"button is-rounded is-tooltip-link\"\n [nwbToolTip]=\"'wb.shared.components.structureTools.5' | translate\"\n nwbToolTipPosition=\"bottom\"\n (click)=\"duplicateThis($event)\"\n ><span></span><i class=\"fas fa-copy\"></i\n ></a>\n <a\n #deleteButton\n class=\"button is-rounded is-tooltip-danger\"\n [nwbToolTip]=\"'wb.shared.components.structureTools.6' | translate\"\n nwbToolTipPosition=\"bottom\"\n wbHoldable\n (mousedown)=\"deleteButtonHold = true\"\n (mouseup)=\"deleteButtonHold = false\"\n (holdTime)=\"removeThis($event)\"\n [ngClass]=\"{ 'is-on-hold': deleteButtonHold }\"\n ><span></span><i class=\"fas fa-trash\"></i\n ></a>\n </div>\n </div>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NwbToolTipDirective, selector: "[nwbToolTip]", inputs: ["nwbToolTip", "nwbToolTipPosition", "nwbToolTipIsMultiline"] }, { kind: "directive", type: i6.HoldableDirective, selector: "[wbHoldable]", outputs: ["holdTime"] }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }] });
97
+ StructureToolsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: StructureToolsComponent, selector: "wb-structure-tools", inputs: { uuid: "uuid", dynamicHiddenStructure: "dynamicHiddenStructure", isHover: "isHover", isAlwaysHover: "isAlwaysHover" }, outputs: { configIsActivated: "configIsActivated" }, viewQueries: [{ propertyName: "deleteButton", first: true, predicate: ["deleteButton"], descendants: true }], ngImport: i0, template: "<div class=\"wb-structure-tools\" [ngClass]=\"{ hidden: dynamicHiddenStructure, hover: isHover || isAlwaysHover }\">\n <div>\n <div class=\"wb-structure-tools__move\" *ngIf=\"currentLength > 1\">\n <div>\n <a\n [nwbToolTip]=\"'wb.shared.components.structureTools.1' | translate\"\n nwbToolTipPosition=\"bottom\"\n class=\"button is-rounded is-tooltip-info is-tooltip-bottom-to-right\"\n (click)=\"$event.stopPropagation()\"\n ><i class=\"fas fa-arrows\"></i\n ></a>\n <a\n [nwbToolTip]=\"'wb.shared.components.structureTools.2' | translate\"\n nwbToolTipPosition=\"bottom\"\n class=\"button is-rounded is-tooltip-info button-margin-left\"\n *ngIf=\"currentIndex + 1 !== currentLength\"\n (click)=\"goDown($event)\"\n ><i class=\"fas fa-long-arrow-down\"></i\n ></a>\n <a\n [nwbToolTip]=\"'wb.shared.components.structureTools.3' | translate\"\n nwbToolTipPosition=\"bottom\"\n class=\"button is-rounded is-tooltip-info button-margin-left\"\n *ngIf=\"currentIndex !== 0\"\n (click)=\"goUp($event)\"\n ><i class=\"fas fa-long-arrow-up\"></i\n ></a>\n </div>\n </div>\n <div class=\"wb-structure-tools__edit\">\n <div>\n <i class=\"fas fa-eye-slash\" *ngIf=\"dynamicHiddenStructure\"></i>\n <p>{{ name | translate }}</p>\n <div>\n <a\n href\n class=\"button is-rounded is-tooltip-info\"\n [nwbToolTip]=\"'wb.shared.components.structureTools.4' | translate\"\n nwbToolTipPosition=\"bottom\"\n (click)=\"configThis($event)\"\n *ngIf=\"!hideConfig\"\n ><span></span><i class=\"fas fa-cog\"></i\n ></a>\n <a\n href\n class=\"button is-rounded is-tooltip-link\"\n [nwbToolTip]=\"'wb.shared.components.structureTools.5' | translate\"\n nwbToolTipPosition=\"bottom\"\n (click)=\"duplicateThis($event)\"\n ><span></span><i class=\"fas fa-copy\"></i\n ></a>\n <a\n #deleteButton\n class=\"button is-rounded is-tooltip-danger\"\n [nwbToolTip]=\"'wb.shared.components.structureTools.6' | translate\"\n nwbToolTipPosition=\"bottom\"\n wbHoldable\n (mouseenter)=\"hoverBtnDelete = true;deleteButtonHold = false\"\n (mouseleave)=\"hoverBtnDelete = false\"\n (mousedown)=\"deleteButtonHold = true\"\n (mouseup)=\"deleteButtonHold = false\"\n (holdTime)=\"removeThis($event)\"\n [ngClass]=\"{ 'is-on-hold': deleteButtonHold, 'is-on-hover': hoverBtnDelete }\"\n ><span></span><i class=\"fas fa-trash\"></i\n ></a>\n </div>\n </div>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NwbToolTipDirective, selector: "[nwbToolTip]", inputs: ["nwbToolTip", "nwbToolTipPosition", "nwbToolTipIsMultiline"] }, { kind: "directive", type: i6.HoldableDirective, selector: "[wbHoldable]", outputs: ["holdTime"] }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }] });
97
98
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: StructureToolsComponent, decorators: [{
98
99
  type: Component,
99
- args: [{ selector: 'wb-structure-tools', template: "<div class=\"wb-structure-tools\" [ngClass]=\"{ hidden: dynamicHiddenStructure, hover: isHover || isAlwaysHover }\">\n <div>\n <div class=\"wb-structure-tools__move\" *ngIf=\"currentLength > 1\">\n <div>\n <a\n [nwbToolTip]=\"'wb.shared.components.structureTools.1' | translate\"\n nwbToolTipPosition=\"bottom\"\n class=\"button is-rounded is-tooltip-info is-tooltip-bottom-to-right\"\n (click)=\"$event.stopPropagation()\"\n ><i class=\"fas fa-arrows\"></i\n ></a>\n <a\n [nwbToolTip]=\"'wb.shared.components.structureTools.2' | translate\"\n nwbToolTipPosition=\"bottom\"\n class=\"button is-rounded is-tooltip-info button-margin-left\"\n *ngIf=\"currentIndex + 1 !== currentLength\"\n (click)=\"goDown($event)\"\n ><i class=\"fas fa-long-arrow-down\"></i\n ></a>\n <a\n [nwbToolTip]=\"'wb.shared.components.structureTools.3' | translate\"\n nwbToolTipPosition=\"bottom\"\n class=\"button is-rounded is-tooltip-info button-margin-left\"\n *ngIf=\"currentIndex !== 0\"\n (click)=\"goUp($event)\"\n ><i class=\"fas fa-long-arrow-up\"></i\n ></a>\n </div>\n </div>\n <div class=\"wb-structure-tools__edit\">\n <div>\n <i class=\"fas fa-eye-slash\" *ngIf=\"dynamicHiddenStructure\"></i>\n <p>{{ name | translate }}</p>\n <div>\n <a\n href\n class=\"button is-rounded is-tooltip-info\"\n [nwbToolTip]=\"'wb.shared.components.structureTools.4' | translate\"\n nwbToolTipPosition=\"bottom\"\n (click)=\"configThis($event)\"\n *ngIf=\"!hideConfig\"\n ><span></span><i class=\"fas fa-cog\"></i\n ></a>\n <a\n href\n class=\"button is-rounded is-tooltip-link\"\n [nwbToolTip]=\"'wb.shared.components.structureTools.5' | translate\"\n nwbToolTipPosition=\"bottom\"\n (click)=\"duplicateThis($event)\"\n ><span></span><i class=\"fas fa-copy\"></i\n ></a>\n <a\n #deleteButton\n class=\"button is-rounded is-tooltip-danger\"\n [nwbToolTip]=\"'wb.shared.components.structureTools.6' | translate\"\n nwbToolTipPosition=\"bottom\"\n wbHoldable\n (mousedown)=\"deleteButtonHold = true\"\n (mouseup)=\"deleteButtonHold = false\"\n (holdTime)=\"removeThis($event)\"\n [ngClass]=\"{ 'is-on-hold': deleteButtonHold }\"\n ><span></span><i class=\"fas fa-trash\"></i\n ></a>\n </div>\n </div>\n </div>\n </div>\n</div>\n" }]
100
+ args: [{ selector: 'wb-structure-tools', template: "<div class=\"wb-structure-tools\" [ngClass]=\"{ hidden: dynamicHiddenStructure, hover: isHover || isAlwaysHover }\">\n <div>\n <div class=\"wb-structure-tools__move\" *ngIf=\"currentLength > 1\">\n <div>\n <a\n [nwbToolTip]=\"'wb.shared.components.structureTools.1' | translate\"\n nwbToolTipPosition=\"bottom\"\n class=\"button is-rounded is-tooltip-info is-tooltip-bottom-to-right\"\n (click)=\"$event.stopPropagation()\"\n ><i class=\"fas fa-arrows\"></i\n ></a>\n <a\n [nwbToolTip]=\"'wb.shared.components.structureTools.2' | translate\"\n nwbToolTipPosition=\"bottom\"\n class=\"button is-rounded is-tooltip-info button-margin-left\"\n *ngIf=\"currentIndex + 1 !== currentLength\"\n (click)=\"goDown($event)\"\n ><i class=\"fas fa-long-arrow-down\"></i\n ></a>\n <a\n [nwbToolTip]=\"'wb.shared.components.structureTools.3' | translate\"\n nwbToolTipPosition=\"bottom\"\n class=\"button is-rounded is-tooltip-info button-margin-left\"\n *ngIf=\"currentIndex !== 0\"\n (click)=\"goUp($event)\"\n ><i class=\"fas fa-long-arrow-up\"></i\n ></a>\n </div>\n </div>\n <div class=\"wb-structure-tools__edit\">\n <div>\n <i class=\"fas fa-eye-slash\" *ngIf=\"dynamicHiddenStructure\"></i>\n <p>{{ name | translate }}</p>\n <div>\n <a\n href\n class=\"button is-rounded is-tooltip-info\"\n [nwbToolTip]=\"'wb.shared.components.structureTools.4' | translate\"\n nwbToolTipPosition=\"bottom\"\n (click)=\"configThis($event)\"\n *ngIf=\"!hideConfig\"\n ><span></span><i class=\"fas fa-cog\"></i\n ></a>\n <a\n href\n class=\"button is-rounded is-tooltip-link\"\n [nwbToolTip]=\"'wb.shared.components.structureTools.5' | translate\"\n nwbToolTipPosition=\"bottom\"\n (click)=\"duplicateThis($event)\"\n ><span></span><i class=\"fas fa-copy\"></i\n ></a>\n <a\n #deleteButton\n class=\"button is-rounded is-tooltip-danger\"\n [nwbToolTip]=\"'wb.shared.components.structureTools.6' | translate\"\n nwbToolTipPosition=\"bottom\"\n wbHoldable\n (mouseenter)=\"hoverBtnDelete = true;deleteButtonHold = false\"\n (mouseleave)=\"hoverBtnDelete = false\"\n (mousedown)=\"deleteButtonHold = true\"\n (mouseup)=\"deleteButtonHold = false\"\n (holdTime)=\"removeThis($event)\"\n [ngClass]=\"{ 'is-on-hold': deleteButtonHold, 'is-on-hover': hoverBtnDelete }\"\n ><span></span><i class=\"fas fa-trash\"></i\n ></a>\n </div>\n </div>\n </div>\n </div>\n</div>\n" }]
100
101
  }], ctorParameters: function () { return [{ type: i1.WiziBlockService }, { type: i2.ContentService }, { type: i3.ConfigService }]; }, propDecorators: { uuid: [{
101
102
  type: Input
102
103
  }], dynamicHiddenStructure: [{
@@ -111,4 +112,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImpor
111
112
  type: ViewChild,
112
113
  args: ['deleteButton']
113
114
  }] } });
114
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RydWN0dXJlLXRvb2xzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3dpemktYmxvY2svc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9zdHJ1Y3R1cmUtdG9vbHMvc3RydWN0dXJlLXRvb2xzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3dpemktYmxvY2svc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9zdHJ1Y3R1cmUtdG9vbHMvc3RydWN0dXJlLXRvb2xzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFxQixNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVILE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFFdkUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7Ozs7Ozs7OztBQU14RSxNQUFNLE9BQU8sdUJBQXVCO0lBMkJoQyxZQUFvQixnQkFBa0MsRUFBVSxjQUE4QixFQUFVLGFBQTRCO1FBQWhILHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFBVSxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFBVSxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQXhCM0gsMkJBQXNCLEdBQUcsS0FBSyxDQUFDO1FBRS9CLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFJZixzQkFBaUIsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBSXRELHFCQUFnQixHQUFHLEtBQUssQ0FBQztRQUV6QixlQUFVLEdBQUcsS0FBSyxDQUFDO1FBUW5CLGtCQUFhLEdBQUcsS0FBSyxDQUFD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c0JBQXRDLFNBQVM7dUJBQUMsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgaXNEZXZNb2RlLCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRlbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdXRpbHMvY29udGVudC5zZXJ2aWNlJztcbmltcG9ydCB7IENvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy91dGlscy9jb25maWcuc2VydmljZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFdpemlCbG9ja1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy93aXppLWJsb2NrLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3diLXN0cnVjdHVyZS10b29scycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3N0cnVjdHVyZS10b29scy5jb21wb25lbnQuaHRtbCcsXG59KVxuZXhwb3J0IGNsYXNzIFN0cnVjdHVyZVRvb2xzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIEBJbnB1dCgpIHV1aWQ6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIGR5bmFtaWNIaWRkZW5TdHJ1Y3R1cmUgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpIGlzSG92ZXIgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpIGlzQWx3YXlzSG92ZXI6IGJvb2xlYW47XG5cbiAgICBAT3V0cHV0KCkgY29uZmlnSXNBY3RpdmF0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAgIEBWaWV3Q2hpbGQoJ2RlbGV0ZUJ1dHRvbicpIGRlbGV0ZUJ1dHRvbjogRWxlbWVudFJlZjtcblxuICAgIGRlbGV0ZUJ1dHRvbkhvbGQgPSBmYWxzZTtcblxuICAgIGhpZGVDb25maWcgPSBmYWxzZTtcblxuICAgIG5hbWU6IHN0cmluZztcblxuICAgIGN1cnJlbnRMZW5ndGg6IG51bWJlcjtcblxuICAgIGN1cnJlbnRJbmRleDogbnVtYmVyO1xuXG4gICAgYmxvY2tJc0hpZGRlbiA9IGZhbHNlO1xuXG4gICAgcHJpdmF0ZSBjb250ZW50RXZlbnRTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiA9IG51bGw7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHdpemlCbG9ja1NlcnZpY2U6IFdpemlCbG9ja1NlcnZpY2UsIHByaXZhdGUgY29udGVudFNlcnZpY2U6IENvbnRlbnRTZXJ2aWNlLCBwcml2YXRlIGNvbmZpZ1NlcnZpY2U6IENvbmZpZ1NlcnZpY2UpIHt9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgY29uc29sZS5sb2coJy0tLS0tIElTIEFMV0FZUyAtLS0tLS0nKTtcbiAgICAgICAgY29uc29sZS5sb2codGhpcy5pc0Fsd2F5c0hvdmVyKTtcbiAgICAgICAgY29uc29sZS5sb2coJy0tLS0tIC8gSVMgQUxXQVlTIC0tLS0tLScpO1xuICAgICAgICB0aGlzLmNoZWNrT25Db250ZW50cygpO1xuICAgICAgICB0aGlzLmNvbnRlbnRFdmVudFN1YnNjcmlwdGlvbiA9IHRoaXMuY29udGVudFNlcnZpY2UuY29udGVudEV2ZW50KCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuY2hlY2tPbkNvbnRlbnRzKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IHRoaXNDb250ZW50ID0gdGhpcy5jb250ZW50U2VydmljZS5nZXRDb250ZW50QnlVVUlEKHRoaXMudXVpZCk7XG4gICAgICAgIGlmICh0eXBlb2YgdGhpc0NvbnRlbnQuZm9ybXMgIT09IHR5cGVvZiB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiB0aGlzQ29udGVudC5mb3Jtcykge1xuICAgICAgICAgICAgICAgIGlmIChpdGVtLmlkID09PSAnaGlkZV9ibG9jaycgJiYgdHlwZW9mIGl0ZW0udmFsdWUgIT09IHR5cGVvZiB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ibG9ja0lzSGlkZGVuID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5oaWRlQ29uZmlnID0gdGhpc0NvbnRlbnQuZm9ybXMubGVuZ3RoID09PSAwO1xuICAgICAgICB0aGlzLndpemlCbG9ja1NlcnZpY2UuZ2V0QmxvY2tzU2VydmljZSgpLmZvckVhY2goKHNlcnZpY2UpID0+IHtcbiAgICAgICAgICAgIGlmIChzZXJ2aWNlLnR5cGUoKSA9PT0gdGhpc0NvbnRlbnQudHlwZSkge1xuICAgICAgICAgICAgICAgIHRoaXMubmFtZSA9IHNlcnZpY2UudGV4dDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgY2hlY2tPbkNvbnRlbnRzKCkge1xuICAgICAgICBjb25zdCBjb250ZW50cyA9IHRoaXMuY29udGVudFNlcnZpY2UuY29udGVudHM7XG5cbiAgICAgICAgdGhpcy5jdXJyZW50TGVuZ3RoID0gdGhpcy5jb250ZW50U2VydmljZS5jb250ZW50cy5sZW5ndGg7XG5cbiAgICAgICAgY29udGVudHMuZm9yRWFjaCgodiwgaykgPT4ge1xuICAgICAgICAgICAgaWYgKHYuYmxvY2sudXVpZCA9PT0gdGhpcy51dWlkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50SW5kZXggPSBrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBkdXBsaWNhdGVUaGlzKGUpIHtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLmNvbmZpZ1NlcnZpY2UuY29uZmlnID0gbnVsbDtcbiAgICAgICAgdGhpcy5jb250ZW50U2VydmljZS5kdXBsaWNhdGVDb250ZW50QnlVVUlEKHRoaXMudXVpZCk7XG4gICAgfVxuXG4gICAgY29uZmlnVGhpcyhlKSB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5jb25maWdJc0FjdGl2YXRlZC5lbWl0KHRydWUpO1xuICAgICAgICB0aGlzLmlzQWx3YXlzSG92ZXIgPSB0cnVlO1xuICAgICAgICB0aGlzLmNvbmZpZ1NlcnZpY2UuY29uZmlnID0gdGhpcy5jb250ZW50U2VydmljZS5nZXRDb250ZW50QnlVVUlEKHRoaXMudXVpZCk7XG4gICAgfVxuXG4gICAgcmVtb3ZlVGhpcygkZXZlbnQpIHtcbiAgICAgICAgaWYgKGlzRGV2TW9kZSgpIHx8ICRldmVudCA+IDEyMDApIHtcbiAgICAgICAgICAgIHRoaXMuY29udGVudFNlcnZpY2UucmVtb3ZlQ29udGVudEJ5VVVJRCh0aGlzLnV1aWQpO1xuICAgICAgICAgICAgaWYgKHRoaXMuY29uZmlnU2VydmljZS5jb25maWcgIT09IG51bGwgJiYgdGhpcy5jb25maWdTZXJ2aWNlLmNvbmZpZy5ibG9jay51dWlkID09PSB0aGlzLnV1aWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbmZpZ1NlcnZpY2UuY29uZmlnID0gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdvRG93bihlKSB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICBpZiAodGhpcy5jdXJyZW50SW5kZXggPT09IHRoaXMuY3VycmVudExlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY29udGVudFNlcnZpY2UucmVvcmRlckNvbnRlbnRzKHRoaXMuY3VycmVudEluZGV4LCB0aGlzLmN1cnJlbnRJbmRleCArIDEpO1xuICAgIH1cblxuICAgIGdvVXAoZSkge1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgaWYgKHRoaXMuY3VycmVudEluZGV4ID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNvbnRlbnRTZXJ2aWNlLnJlb3JkZXJDb250ZW50cyh0aGlzLmN1cnJlbnRJbmRleCwgdGhpcy5jdXJyZW50SW5kZXggLSAxKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jb250ZW50RXZlbnRTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwid2Itc3RydWN0dXJlLXRvb2xzXCIgW25nQ2xhc3NdPVwieyBoaWRkZW46IGR5bmFtaWNIaWRkZW5TdHJ1Y3R1cmUsIGhvdmVyOiBpc0hvdmVyIHx8IGlzQWx3YXlzSG92ZXIgfVwiPlxuICAgIDxkaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ3Yi1zdHJ1Y3R1cmUtdG9vbHNfX21vdmVcIiAqbmdJZj1cImN1cnJlbnRMZW5ndGggPiAxXCI+XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgIFtud2JUb29sVGlwXT1cIid3Yi5zaGFyZWQuY29tcG9uZW50cy5zdHJ1Y3R1cmVUb29scy4xJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgIG53YlRvb2xUaXBQb3NpdGlvbj1cImJvdHRvbVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnV0dG9uIGlzLXJvdW5kZWQgaXMtdG9vbHRpcC1pbmZvIGlzLXRvb2x0aXAtYm90dG9tLXRvLXJpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICAgICAgICAgID48aSBjbGFzcz1cImZhcyBmYS1hcnJvd3NcIj48L2lcbiAgICAgICAgICAgICAgICA+PC9hPlxuICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgIFtud2JUb29sVGlwXT1cIid3Yi5zaGFyZWQuY29tcG9uZW50cy5zdHJ1Y3R1cmVUb29scy4yJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgIG53YlRvb2xUaXBQb3NpdGlvbj1cImJvdHRvbVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnV0dG9uIGlzLXJvdW5kZWQgaXMtdG9vbHRpcC1pbmZvIGJ1dHRvbi1tYXJnaW4tbGVmdFwiXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY3VycmVudEluZGV4ICsgMSAhPT0gY3VycmVudExlbmd0aFwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJnb0Rvd24oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgID48aSBjbGFzcz1cImZhcyBmYS1sb25nLWFycm93LWRvd25cIj48L2lcbiAgICAgICAgICAgICAgICA+PC9hPlxuICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgIFtud2JUb29sVGlwXT1cIid3Yi5zaGFyZWQuY29tcG9uZW50cy5zdHJ1Y3R1cmVUb29scy4zJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgIG53YlRvb2xUaXBQb3NpdGlvbj1cImJvdHRvbVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnV0dG9uIGlzLXJvdW5kZWQgaXMtdG9vbHRpcC1pbmZvIGJ1dHRvbi1tYXJnaW4tbGVmdFwiXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY3VycmVudEluZGV4ICE9PSAwXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImdvVXAoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgID48aSBjbGFzcz1cImZhcyBmYS1sb25nLWFycm93LXVwXCI+PC9pXG4gICAgICAgICAgICAgICAgPjwvYT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIndiLXN0cnVjdHVyZS10b29sc19fZWRpdFwiPlxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1leWUtc2xhc2hcIiAqbmdJZj1cImR5bmFtaWNIaWRkZW5TdHJ1Y3R1cmVcIj48L2k+XG4gICAgICAgICAgICAgICAgPHA+e3sgbmFtZSB8IHRyYW5zbGF0ZSB9fTwvcD5cbiAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgICAgaHJlZlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidXR0b24gaXMtcm91bmRlZCBpcy10b29sdGlwLWluZm9cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW253YlRvb2xUaXBdPVwiJ3diLnNoYXJlZC5jb21wb25lbnRzLnN0cnVjdHVyZVRvb2xzLjQnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIG53YlRvb2xUaXBQb3NpdGlvbj1cImJvdHRvbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY29uZmlnVGhpcygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWhpZGVDb25maWdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjxzcGFuPjwvc3Bhbj48aSBjbGFzcz1cImZhcyBmYS1jb2dcIj48L2lcbiAgICAgICAgICAgICAgICAgICAgPjwvYT5cbiAgICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgICAgIGhyZWZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnV0dG9uIGlzLXJvdW5kZWQgaXMtdG9vbHRpcC1saW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtud2JUb29sVGlwXT1cIid3Yi5zaGFyZWQuY29tcG9uZW50cy5zdHJ1Y3R1cmVUb29scy41JyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBud2JUb29sVGlwUG9zaXRpb249XCJib3R0b21cIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImR1cGxpY2F0ZVRoaXMoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PHNwYW4+PC9zcGFuPjxpIGNsYXNzPVwiZmFzIGZhLWNvcHlcIj48L2lcbiAgICAgICAgICAgICAgICAgICAgPjwvYT5cbiAgICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgICAgICNkZWxldGVCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnV0dG9uIGlzLXJvdW5kZWQgaXMtdG9vbHRpcC1kYW5nZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW253YlRvb2xUaXBdPVwiJ3diLnNoYXJlZC5jb21wb25lbnRzLnN0cnVjdHVyZVRvb2xzLjYnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIG53YlRvb2xUaXBQb3NpdGlvbj1cImJvdHRvbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICB3YkhvbGRhYmxlXG4gICAgICAgICAgICAgICAgICAgICAgICAobW91c2Vkb3duKT1cImRlbGV0ZUJ1dHRvbkhvbGQgPSB0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChtb3VzZXVwKT1cImRlbGV0ZUJ1dHRvbkhvbGQgPSBmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoaG9sZFRpbWUpPVwicmVtb3ZlVGhpcygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2lzLW9uLWhvbGQnOiBkZWxldGVCdXR0b25Ib2xkIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjxzcGFuPjwvc3Bhbj48aSBjbGFzcz1cImZhcyBmYS10cmFzaFwiPjwvaVxuICAgICAgICAgICAgICAgICAgICA+PC9hPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
115
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RydWN0dXJlLXRvb2xzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3dpemktYmxvY2svc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9zdHJ1Y3R1cmUtdG9vbHMvc3RydWN0dXJlLXRvb2xzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3dpemktYmxvY2svc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9zdHJ1Y3R1cmUtdG9vbHMvc3RydWN0dXJlLXRvb2xzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWdDLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUgsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUV2RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQzs7Ozs7Ozs7O0FBTXhFLE1BQU0sT0FBTyx1QkFBdUI7SUE2QmhDLFlBQW9CLGdCQUFrQyxFQUFVLGNBQThCLEVBQVUsYUFBNEI7UUFBaEgscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUFVLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUFVLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBMUIzSCwyQkFBc0IsR0FBRyxLQUFLLENBQUM7UUFFL0IsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUlmLHNCQUFpQixHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFJdEQscUJBQWdCLEdBQUcsS0FBSyxDQUFDO1FBRXpCLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBRXZCLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFRbkIsa0JB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O3NCQUF0QyxTQUFTO3VCQUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIGlzRGV2TW9kZSwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250ZW50U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3V0aWxzL2NvbnRlbnQuc2VydmljZSc7XG5pbXBvcnQgeyBDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdXRpbHMvY29uZmlnLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBXaXppQmxvY2tTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvd2l6aS1ibG9jay5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd3Yi1zdHJ1Y3R1cmUtdG9vbHMnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zdHJ1Y3R1cmUtdG9vbHMuY29tcG9uZW50Lmh0bWwnLFxufSlcbmV4cG9ydCBjbGFzcyBTdHJ1Y3R1cmVUb29sc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICBASW5wdXQoKSB1dWlkOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBkeW5hbWljSGlkZGVuU3RydWN0dXJlID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKSBpc0hvdmVyID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKSBpc0Fsd2F5c0hvdmVyOiBib29sZWFuO1xuXG4gICAgQE91dHB1dCgpIGNvbmZpZ0lzQWN0aXZhdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgICBAVmlld0NoaWxkKCdkZWxldGVCdXR0b24nKSBkZWxldGVCdXR0b246IEVsZW1lbnRSZWY7XG5cbiAgICBkZWxldGVCdXR0b25Ib2xkID0gZmFsc2U7XG5cbiAgICBob3ZlckJ0bkRlbGV0ZSA9IGZhbHNlO1xuXG4gICAgaGlkZUNvbmZpZyA9IGZhbHNlO1xuXG4gICAgbmFtZTogc3RyaW5nO1xuXG4gICAgY3VycmVudExlbmd0aDogbnVtYmVyO1xuXG4gICAgY3VycmVudEluZGV4OiBudW1iZXI7XG5cbiAgICBibG9ja0lzSGlkZGVuID0gZmFsc2U7XG5cbiAgICBwcml2YXRlIGNvbnRlbnRFdmVudFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uID0gbnVsbDtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgd2l6aUJsb2NrU2VydmljZTogV2l6aUJsb2NrU2VydmljZSwgcHJpdmF0ZSBjb250ZW50U2VydmljZTogQ29udGVudFNlcnZpY2UsIHByaXZhdGUgY29uZmlnU2VydmljZTogQ29uZmlnU2VydmljZSkge31cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICBjb25zb2xlLmxvZygnLS0tLS0gSVMgQUxXQVlTIC0tLS0tLScpO1xuICAgICAgICBjb25zb2xlLmxvZyh0aGlzLmlzQWx3YXlzSG92ZXIpO1xuICAgICAgICBjb25zb2xlLmxvZygnLS0tLS0gLyBJUyBBTFdBWVMgLS0tLS0tJyk7XG4gICAgICAgIHRoaXMuY2hlY2tPbkNvbnRlbnRzKCk7XG4gICAgICAgIHRoaXMuY29udGVudEV2ZW50U3Vic2NyaXB0aW9uID0gdGhpcy5jb250ZW50U2VydmljZS5jb250ZW50RXZlbnQoKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jaGVja09uQ29udGVudHMoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgdGhpc0NvbnRlbnQgPSB0aGlzLmNvbnRlbnRTZXJ2aWNlLmdldENvbnRlbnRCeVVVSUQodGhpcy51dWlkKTtcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzQ29udGVudC5mb3JtcyAhPT0gdHlwZW9mIHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIHRoaXNDb250ZW50LmZvcm1zKSB7XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0uaWQgPT09ICdoaWRlX2Jsb2NrJyAmJiB0eXBlb2YgaXRlbS52YWx1ZSAhPT0gdHlwZW9mIHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmJsb2NrSXNIaWRkZW4gPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLmhpZGVDb25maWcgPSB0aGlzQ29udGVudC5mb3Jtcy5sZW5ndGggPT09IDA7XG4gICAgICAgIHRoaXMud2l6aUJsb2NrU2VydmljZS5nZXRCbG9ja3NTZXJ2aWNlKCkuZm9yRWFjaCgoc2VydmljZSkgPT4ge1xuICAgICAgICAgICAgaWYgKHNlcnZpY2UudHlwZSgpID09PSB0aGlzQ29udGVudC50eXBlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5uYW1lID0gc2VydmljZS50ZXh0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBjaGVja09uQ29udGVudHMoKSB7XG4gICAgICAgIGNvbnN0IGNvbnRlbnRzID0gdGhpcy5jb250ZW50U2VydmljZS5jb250ZW50cztcblxuICAgICAgICB0aGlzLmN1cnJlbnRMZW5ndGggPSB0aGlzLmNvbnRlbnRTZXJ2aWNlLmNvbnRlbnRzLmxlbmd0aDtcblxuICAgICAgICBjb250ZW50cy5mb3JFYWNoKCh2LCBrKSA9PiB7XG4gICAgICAgICAgICBpZiAodi5ibG9jay51dWlkID09PSB0aGlzLnV1aWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRJbmRleCA9IGs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGR1cGxpY2F0ZVRoaXMoZSkge1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMuY29uZmlnU2VydmljZS5jb25maWcgPSBudWxsO1xuICAgICAgICB0aGlzLmNvbnRlbnRTZXJ2aWNlLmR1cGxpY2F0ZUNvbnRlbnRCeVVVSUQodGhpcy51dWlkKTtcbiAgICB9XG5cbiAgICBjb25maWdUaGlzKGUpIHtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLmNvbmZpZ0lzQWN0aXZhdGVkLmVtaXQodHJ1ZSk7XG4gICAgICAgIHRoaXMuaXNBbHdheXNIb3ZlciA9IHRydWU7XG4gICAgICAgIHRoaXMuY29uZmlnU2VydmljZS5jb25maWcgPSB0aGlzLmNvbnRlbnRTZXJ2aWNlLmdldENvbnRlbnRCeVVVSUQodGhpcy51dWlkKTtcbiAgICB9XG5cbiAgICByZW1vdmVUaGlzKCRldmVudCkge1xuICAgICAgICBpZiAoJGV2ZW50ID4gMTIwMCkge1xuICAgICAgICAgICAgdGhpcy5jb250ZW50U2VydmljZS5yZW1vdmVDb250ZW50QnlVVUlEKHRoaXMudXVpZCk7XG4gICAgICAgICAgICBpZiAodGhpcy5jb25maWdTZXJ2aWNlLmNvbmZpZyAhPT0gbnVsbCAmJiB0aGlzLmNvbmZpZ1NlcnZpY2UuY29uZmlnLmJsb2NrLnV1aWQgPT09IHRoaXMudXVpZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuY29uZmlnU2VydmljZS5jb25maWcgPSBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ29Eb3duKGUpIHtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRJbmRleCA9PT0gdGhpcy5jdXJyZW50TGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jb250ZW50U2VydmljZS5yZW9yZGVyQ29udGVudHModGhpcy5jdXJyZW50SW5kZXgsIHRoaXMuY3VycmVudEluZGV4ICsgMSk7XG4gICAgfVxuXG4gICAgZ29VcChlKSB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICBpZiAodGhpcy5jdXJyZW50SW5kZXggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY29udGVudFNlcnZpY2UucmVvcmRlckNvbnRlbnRzKHRoaXMuY3VycmVudEluZGV4LCB0aGlzLmN1cnJlbnRJbmRleCAtIDEpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNvbnRlbnRFdmVudFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJ3Yi1zdHJ1Y3R1cmUtdG9vbHNcIiBbbmdDbGFzc109XCJ7IGhpZGRlbjogZHluYW1pY0hpZGRlblN0cnVjdHVyZSwgaG92ZXI6IGlzSG92ZXIgfHwgaXNBbHdheXNIb3ZlciB9XCI+XG4gICAgPGRpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIndiLXN0cnVjdHVyZS10b29sc19fbW92ZVwiICpuZ0lmPVwiY3VycmVudExlbmd0aCA+IDFcIj5cbiAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgW253YlRvb2xUaXBdPVwiJ3diLnNoYXJlZC5jb21wb25lbnRzLnN0cnVjdHVyZVRvb2xzLjEnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgbndiVG9vbFRpcFBvc2l0aW9uPVwiYm90dG9tXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidXR0b24gaXMtcm91bmRlZCBpcy10b29sdGlwLWluZm8gaXMtdG9vbHRpcC1ib3R0b20tdG8tcmlnaHRcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgICAgICAgICAgICAgPjxpIGNsYXNzPVwiZmFzIGZhLWFycm93c1wiPjwvaVxuICAgICAgICAgICAgICAgID48L2E+XG4gICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgW253YlRvb2xUaXBdPVwiJ3diLnNoYXJlZC5jb21wb25lbnRzLnN0cnVjdHVyZVRvb2xzLjInIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgbndiVG9vbFRpcFBvc2l0aW9uPVwiYm90dG9tXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidXR0b24gaXMtcm91bmRlZCBpcy10b29sdGlwLWluZm8gYnV0dG9uLW1hcmdpbi1sZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjdXJyZW50SW5kZXggKyAxICE9PSBjdXJyZW50TGVuZ3RoXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImdvRG93bigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgPjxpIGNsYXNzPVwiZmFzIGZhLWxvbmctYXJyb3ctZG93blwiPjwvaVxuICAgICAgICAgICAgICAgID48L2E+XG4gICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgW253YlRvb2xUaXBdPVwiJ3diLnNoYXJlZC5jb21wb25lbnRzLnN0cnVjdHVyZVRvb2xzLjMnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgbndiVG9vbFRpcFBvc2l0aW9uPVwiYm90dG9tXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidXR0b24gaXMtcm91bmRlZCBpcy10b29sdGlwLWluZm8gYnV0dG9uLW1hcmdpbi1sZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjdXJyZW50SW5kZXggIT09IDBcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZ29VcCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgPjxpIGNsYXNzPVwiZmFzIGZhLWxvbmctYXJyb3ctdXBcIj48L2lcbiAgICAgICAgICAgICAgICA+PC9hPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwid2Itc3RydWN0dXJlLXRvb2xzX19lZGl0XCI+XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWV5ZS1zbGFzaFwiICpuZ0lmPVwiZHluYW1pY0hpZGRlblN0cnVjdHVyZVwiPjwvaT5cbiAgICAgICAgICAgICAgICA8cD57eyBuYW1lIHwgdHJhbnNsYXRlIH19PC9wPlxuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgICBocmVmXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ1dHRvbiBpcy1yb3VuZGVkIGlzLXRvb2x0aXAtaW5mb1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbndiVG9vbFRpcF09XCInd2Iuc2hhcmVkLmNvbXBvbmVudHMuc3RydWN0dXJlVG9vbHMuNCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgbndiVG9vbFRpcFBvc2l0aW9uPVwiYm90dG9tXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjb25maWdUaGlzKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhaGlkZUNvbmZpZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PHNwYW4+PC9zcGFuPjxpIGNsYXNzPVwiZmFzIGZhLWNvZ1wiPjwvaVxuICAgICAgICAgICAgICAgICAgICA+PC9hPlxuICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgICAgaHJlZlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidXR0b24gaXMtcm91bmRlZCBpcy10b29sdGlwLWxpbmtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW253YlRvb2xUaXBdPVwiJ3diLnNoYXJlZC5jb21wb25lbnRzLnN0cnVjdHVyZVRvb2xzLjUnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIG53YlRvb2xUaXBQb3NpdGlvbj1cImJvdHRvbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZHVwbGljYXRlVGhpcygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48c3Bhbj48L3NwYW4+PGkgY2xhc3M9XCJmYXMgZmEtY29weVwiPjwvaVxuICAgICAgICAgICAgICAgICAgICA+PC9hPlxuICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgICAgI2RlbGV0ZUJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidXR0b24gaXMtcm91bmRlZCBpcy10b29sdGlwLWRhbmdlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbndiVG9vbFRpcF09XCInd2Iuc2hhcmVkLmNvbXBvbmVudHMuc3RydWN0dXJlVG9vbHMuNicgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgbndiVG9vbFRpcFBvc2l0aW9uPVwiYm90dG9tXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHdiSG9sZGFibGVcbiAgICAgICAgICAgICAgICAgICAgICAgIChtb3VzZWVudGVyKT1cImhvdmVyQnRuRGVsZXRlID0gdHJ1ZTtkZWxldGVCdXR0b25Ib2xkID0gZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG1vdXNlbGVhdmUpPVwiaG92ZXJCdG5EZWxldGUgPSBmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAobW91c2Vkb3duKT1cImRlbGV0ZUJ1dHRvbkhvbGQgPSB0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChtb3VzZXVwKT1cImRlbGV0ZUJ1dHRvbkhvbGQgPSBmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoaG9sZFRpbWUpPVwicmVtb3ZlVGhpcygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2lzLW9uLWhvbGQnOiBkZWxldGVCdXR0b25Ib2xkLCAnaXMtb24taG92ZXInOiBob3ZlckJ0bkRlbGV0ZSB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48c3Bhbj48L3NwYW4+PGkgY2xhc3M9XCJmYXMgZmEtdHJhc2hcIj48L2lcbiAgICAgICAgICAgICAgICAgICAgPjwvYT5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuIl19