ontimize-web-ngx 15.0.3 → 15.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/components/app-sidenav/menu-group/o-app-sidenav-menu-group.component.mjs +3 -3
- package/esm2020/lib/components/app-sidenav/menu-item/o-app-sidenav-menu-item.component.mjs +3 -3
- package/esm2020/lib/components/app-sidenav/o-app-sidenav.component.mjs +2 -2
- package/esm2020/lib/components/form/o-form.component.mjs +2 -2
- package/esm2020/lib/components/grid/o-grid.component.mjs +2 -11
- package/esm2020/lib/components/input/date-range/o-daterange-picker.component.mjs +6 -5
- package/esm2020/lib/components/list/o-list.component.mjs +2 -11
- package/esm2020/lib/components/o-service-base-component.class.mjs +2 -2
- package/esm2020/lib/components/table/extensions/header/table-column-resizer/o-table-column-resizer.component.mjs +18 -10
- package/esm2020/lib/components/table/o-table.component.mjs +2 -1
- package/esm2020/lib/components/tree/o-tree.component.mjs +18 -13
- package/esm2020/lib/interfaces/app-menu.interface.mjs +1 -1
- package/esm2020/lib/layouts/card-menu-layout/o-card-menu-layout.component.mjs +32 -16
- package/esm2020/lib/services/ontimize-export-data-base-provider.service.mjs +34 -2
- package/fesm2015/ontimize-web-ngx.mjs +337 -296
- package/fesm2015/ontimize-web-ngx.mjs.map +1 -1
- package/fesm2020/ontimize-web-ngx.mjs +337 -296
- package/fesm2020/ontimize-web-ngx.mjs.map +1 -1
- package/lib/components/grid/o-grid.component.d.ts +1 -4
- package/lib/components/input/date-range/o-daterange-picker.component.d.ts +1 -0
- package/lib/components/list/o-list.component.d.ts +1 -4
- package/lib/components/table/extensions/header/table-column-resizer/o-table-column-resizer.component.d.ts +3 -3
- package/lib/components/tree/o-tree.component.d.ts +2 -0
- package/lib/interfaces/app-menu.interface.d.ts +1 -0
- package/lib/layouts/card-menu-layout/o-card-menu-layout.component.d.ts +10 -2
- package/lib/services/ontimize-export-data-base-provider.service.d.ts +1 -0
- package/ontimize.scss +35 -34
- package/package.json +1 -1
- package/theme.scss +34 -2
- package/theming/ontimize-style.scss +18 -7
|
@@ -66,26 +66,25 @@ export class OTableColumnResizerComponent {
|
|
|
66
66
|
return;
|
|
67
67
|
}
|
|
68
68
|
const DOMWidth = this.table.getClientWidthColumn(this.column);
|
|
69
|
-
this.startX = startEvent.screenX;
|
|
69
|
+
this.startX = (startEvent instanceof MouseEvent) ? startEvent.screenX : startEvent.touches[0].screenX;
|
|
70
70
|
this.startWidth = DOMWidth;
|
|
71
71
|
this.minWidth = this.column.getMinWidthValue();
|
|
72
72
|
this.initializeWidthData();
|
|
73
73
|
this.ngZone.runOutsideAngular(() => {
|
|
74
|
-
this.dragListeners.push(this.renderer.listen('document', 'mouseup', (
|
|
74
|
+
this.dragListeners.push(this.renderer.listen('document', 'mouseup', () => this.stopDragging()));
|
|
75
|
+
this.dragListeners.push(this.renderer.listen('document', 'touchend', () => this.stopDragging()));
|
|
75
76
|
});
|
|
76
|
-
|
|
77
|
-
return;
|
|
78
|
-
}
|
|
77
|
+
const moveEvent = (startEvent instanceof MouseEvent) ? 'mousemove' : 'touchmove';
|
|
79
78
|
this.ngZone.runOutsideAngular(() => {
|
|
80
|
-
this.dragListeners.push(this.renderer.listen('document',
|
|
79
|
+
this.dragListeners.push(this.renderer.listen('document', moveEvent, (e) => this.resizeEvent(e)));
|
|
81
80
|
});
|
|
82
81
|
this.isResizing = true;
|
|
83
82
|
}
|
|
84
83
|
resizeEvent(event) {
|
|
85
|
-
if (!this.isResizing
|
|
84
|
+
if (!this.isResizing) {
|
|
86
85
|
return;
|
|
87
86
|
}
|
|
88
|
-
const movementX = (event.screenX - this.startX);
|
|
87
|
+
const movementX = (event instanceof MouseEvent) ? (event.screenX - this.startX) : (event.touches[0].screenX - this.startX);
|
|
89
88
|
if (movementX === 0) {
|
|
90
89
|
return;
|
|
91
90
|
}
|
|
@@ -217,7 +216,7 @@ export class OTableColumnResizerComponent {
|
|
|
217
216
|
}
|
|
218
217
|
}
|
|
219
218
|
OTableColumnResizerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OTableColumnResizerComponent, deps: [{ token: forwardRef(() => OTableBase) }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
|
|
220
|
-
OTableColumnResizerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: OTableColumnResizerComponent, selector: "o-table-column-resizer", inputs: { column: "column" }, host: { listeners: { "mousedown": "onMousedown($event)" }, properties: { "class.o-table-column-resizer": "true", "class.disabled": "isDisabled" } }, ngImport: i0, template: "<span class=\"resizer\" (click)=\"onClick($event)\"></span>", styles: [".o-table-column-resizer{display:inline-block;width:13px}.o-table-column-resizer:not(.disabled){cursor:col-resize}.o-table-column-resizer span{height:100%;width:1px;display:block;margin-left:auto;margin-right:auto}.o-table-column-resizer.disabled{cursor:default}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
219
|
+
OTableColumnResizerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: OTableColumnResizerComponent, selector: "o-table-column-resizer", inputs: { column: "column" }, host: { listeners: { "mousedown": "onMousedown($event)", "touchstart": "onMousedown($event)", "document:mouseup": "onMouseup()", "document:touchend": "onMouseup()" }, properties: { "class.o-table-column-resizer": "true", "class.disabled": "isDisabled" } }, ngImport: i0, template: "<span class=\"resizer\" (click)=\"onClick($event)\"></span>", styles: [".o-table-column-resizer{display:inline-block;width:13px}.o-table-column-resizer:not(.disabled){cursor:col-resize}.o-table-column-resizer span{height:100%;width:1px;display:block;margin-left:auto;margin-right:auto}.o-table-column-resizer.disabled{cursor:default}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
221
220
|
__decorate([
|
|
222
221
|
BooleanInputConverter(),
|
|
223
222
|
__metadata("design:type", Boolean)
|
|
@@ -234,5 +233,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
234
233
|
}] }, { type: i0.ElementRef }, { type: i0.NgZone }, { type: i0.Renderer2 }]; }, propDecorators: { disabled: [], onMousedown: [{
|
|
235
234
|
type: HostListener,
|
|
236
235
|
args: ['mousedown', ['$event']]
|
|
236
|
+
}, {
|
|
237
|
+
type: HostListener,
|
|
238
|
+
args: ['touchstart', ['$event']]
|
|
239
|
+
}], onMouseup: [{
|
|
240
|
+
type: HostListener,
|
|
241
|
+
args: ['document:mouseup']
|
|
242
|
+
}, {
|
|
243
|
+
type: HostListener,
|
|
244
|
+
args: ['document:touchend']
|
|
237
245
|
}] } });
|
|
238
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby10YWJsZS1jb2x1bW4tcmVzaXplci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvY29tcG9uZW50cy90YWJsZS9leHRlbnNpb25zL2hlYWRlci90YWJsZS1jb2x1bW4tcmVzaXplci9vLXRhYmxlLWNvbHVtbi1yZXNpemVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL3RhYmxlL2V4dGVuc2lvbnMvaGVhZGVyL3RhYmxlLWNvbHVtbi1yZXNpemVyL28tdGFibGUtY29sdW1uLXJlc2l6ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFVBQVUsRUFDVixVQUFVLEVBQ1YsWUFBWSxFQUNaLE1BQU0sRUFDTixNQUFNLEVBR04sU0FBUyxFQUNULGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNsRixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFaEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDZCQUE2QixDQUFDOzs7QUFFekQsTUFBTSxDQUFDLE1BQU0scUNBQXFDLEdBQUc7SUFDbkQsUUFBUTtDQUNULENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxzQ0FBc0MsR0FBRyxFQUdyRCxDQUFDO0FBZUYsTUFBTSxPQUFPLDRCQUE0QjtJQXlCdkMsWUFDK0MsS0FBaUIsRUFDcEQsS0FBaUIsRUFDakIsTUFBYyxFQUNkLFFBQW1CO1FBSGdCLFVBQUssR0FBTCxLQUFLLENBQVk7UUFDcEQsVUFBSyxHQUFMLEtBQUssQ0FBWTtR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QUNwQyxzQ0FBc0MsbUJBRzlCLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUksUUFDL0I7d0JBQ0osZ0NBQWdDLEVBQUUsTUFBTTt3QkFDeEMsa0JBQWtCLEVBQUUsWUFBWTtxQkFDakM7OzBCQTRCRSxNQUFNOzJCQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUM7a0hBdEJ0QyxRQUFRLE1BbURSLFdBQVc7c0JBRFYsWUFBWTt1QkFBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBmb3J3YXJkUmVmLFxuICBIb3N0TGlzdGVuZXIsXG4gIEluamVjdCxcbiAgTmdab25lLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgUmVuZGVyZXIyLFxuICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQm9vbGVhbklucHV0Q29udmVydGVyIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vZGVjb3JhdG9ycy9pbnB1dC1jb252ZXJ0ZXInO1xuaW1wb3J0IHsgVXRpbCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3V0aWwvdXRpbCc7XG5pbXBvcnQgdHlwZSB7IE9Db2x1bW4gfSBmcm9tICcuLi8uLi8uLi9jb2x1bW4vby1jb2x1bW4uY2xhc3MnO1xuaW1wb3J0IHsgT1RhYmxlQmFzZSB9IGZyb20gJy4uLy4uLy4uL28tdGFibGUtYmFzZS5jbGFzcyc7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0lOUFVUU19PX1RBQkxFX0NPTFVNTl9SRVNJWkVSID0gW1xuICAnY29sdW1uJ1xuXTtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfT1VUUFVUU19PX1RBQkxFX0NPTFVNTl9SRVNJWkVSID0gW1xuICAvLyAncmVzaXppbmcnLFxuICAvLyAncmVzaXplZCdcbl07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ28tdGFibGUtY29sdW1uLXJlc2l6ZXInLFxuICBpbnB1dHM6IERFRkFVTFRfSU5QVVRTX09fVEFCTEVfQ09MVU1OX1JFU0laRVIsXG4gIG91dHB1dHM6IERFRkFVTFRfT1VUUFVUU19PX1RBQkxFX0NPTFVNTl9SRVNJWkVSLFxuICB0ZW1wbGF0ZVVybDogJy4vby10YWJsZS1jb2x1bW4tcmVzaXplci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL28tdGFibGUtY29sdW1uLXJlc2l6ZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGhvc3Q6IHtcbiAgICAnW2NsYXNzLm8tdGFibGUtY29sdW1uLXJlc2l6ZXJdJzogJ3RydWUnLFxuICAgICdbY2xhc3MuZGlzYWJsZWRdJzogJ2lzRGlzYWJsZWQnLFxuICB9XG59KVxuZXhwb3J0IGNsYXNzIE9UYWJsZUNvbHVtblJlc2l6ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgY29sdW1uOiBPQ29sdW1uO1xuICBAQm9vbGVhbklucHV0Q29udmVydGVyKClcbiAgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvLyByZXNpemluZyA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgLy8gcmVzaXplZCA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuICBwcm90ZWN0ZWQgc3RhcnRXaWR0aDogYW55O1xuICBwcm90ZWN0ZWQgbWluV2lkdGg6IGFueTtcbiAgcHJvdGVjdGVkIG1heFdpZHRoOiBhbnk7XG5cbiAgcHJvdGVjdGVkIHN0YXJ0WDogYW55O1xuXG4gIHByb3RlY3RlZCBoZWFkZXJFbDogYW55O1xuXG4gIHByb3RlY3RlZCBuZXh0T0NvbHVtbnM6IE9Db2x1bW5bXTtcblxuICBwcm90ZWN0ZWQgZHJhZ0xpc3RlbmVyczogQXJyYXk8KCkgPT4gdm9pZD4gPSBbXTtcbiAgcHJvdGVjdGVkIGlzUmVzaXppbmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJvdGVjdGVkIGJsb2NrZWRNaW5Db2xzID0gW107XG4gIHByb3RlY3RlZCBibG9ja2VkTWF4Q29scyA9IFtdO1xuXG4gIHByb3RlY3RlZCBjb2x1bW5zU3RhcnRXaWR0aCA9IHt9O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoZm9yd2FyZFJlZigoKSA9PiBPVGFibGVCYXNlKSkgcHVibGljIHRhYmxlOiBPVGFibGVCYXNlLFxuICAgIHByb3RlY3RlZCBlbFJlZjogRWxlbWVudFJlZixcbiAgICBwcm90ZWN0ZWQgbmdab25lOiBOZ1pvbmUsXG4gICAgcHJvdGVjdGVkIHJlbmRlcmVyOiBSZW5kZXJlcjJcbiAgKSB7IH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaXNEaXNhYmxlZCkge1xuICAgICAgdGhpcy5oZWFkZXJFbCA9IHRoaXMuZ2V0SGVhZGVyRUwoKTtcbiAgICAgIGlmICh0aGlzLmhlYWRlckVsKSB7XG4gICAgICAgIHRoaXMubmV4dE9Db2x1bW5zID0gdGhpcy5nZXRGb2xsb3dpbmdPQ29sdW1ucygpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuc3RvcERyYWdnaW5nKCk7XG4gIH1cblxuICBvbkNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgfVxuXG4gIGdldCBpc0Rpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNvbHVtbiAmJiAhdGhpcy5jb2x1bW4ucmVzaXphYmxlO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignbW91c2Vkb3duJywgWyckZXZlbnQnXSlcbiAgb25Nb3VzZWRvd24oZTogTW91c2VFdmVudCkge1xuICAgIGlmICghdGhpcy5pc0Rpc2FibGVkKSB7XG4gICAgICB0aGlzLnN0YXJ0UmVzaXplKGUpO1xuICAgIH1cbiAgfVxuXG4gIG9uTW91c2V1cCgpIHtcbiAgICB0aGlzLmlzUmVzaXppbmcgPSBmYWxzZTtcbiAgICB0aGlzLnN0b3BEcmFnZ2luZygpO1xuICAgIC8vIHRoaXMucmVzaXplLmVtaXQodGhpcy5lbGVtZW50LmNsaWVudFdpZHRoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzdG9wRHJhZ2dpbmcoKSB7XG4gICAgdGhpcy5pc1Jlc2l6aW5nID0gZmFsc2U7XG4gICAgdGhpcy5jb2x1bW5zU3RhcnRXaWR0aCA9IHt9O1xuICAgIHdoaWxlICh0aGlzLmRyYWdMaXN0ZW5lcnMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgZmN0ID0gdGhpcy5kcmFnTGlzdGVuZXJzLnBvcCgpO1xuICAgICAgaWYgKGZjdCkge1xuICAgICAgICBmY3QoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzdGFydFJlc2l6ZShzdGFydEV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgc3RhcnRFdmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHN0YXJ0RXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgaWYgKCFVdGlsLmlzRGVmaW5lZCh0aGlzLmhlYWRlckVsKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBET01XaWR0aCA9IHRoaXMudGFibGUuZ2V0Q2xpZW50V2lkdGhDb2x1bW4odGhpcy5jb2x1bW4pO1xuICAgIHRoaXMuc3RhcnRYID0gc3RhcnRFdmVudC5zY3JlZW5YO1xuICAgIHRoaXMuc3RhcnRXaWR0aCA9IERPTVdpZHRoO1xuICAgIHRoaXMubWluV2lkdGggPSB0aGlzLmNvbHVtbi5nZXRNaW5XaWR0aFZhbHVlKCk7XG4gICAgdGhpcy5pbml0aWFsaXplV2lkdGhEYXRhKCk7XG4gICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgdGhpcy5kcmFnTGlzdGVuZXJzLnB1c2godGhpcy5yZW5kZXJlci5saXN0ZW4oJ2RvY3VtZW50JywgJ21vdXNldXAnLCAoZTogTW91c2VFdmVudCkgPT4gdGhpcy5zdG9wRHJhZ2dpbmcoKSkpO1xuICAgIH0pO1xuXG4gICAgaWYgKCEoc3RhcnRFdmVudCBpbnN0YW5jZW9mIE1vdXNlRXZlbnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIHRoaXMuZHJhZ0xpc3RlbmVycy5wdXNoKHRoaXMucmVuZGVyZXIubGlzdGVuKCdkb2N1bWVudCcsICdtb3VzZW1vdmUnLCAoZTogTW91c2VFdmVudCkgPT4gdGhpcy5yZXNpemVFdmVudChlKSkpO1xuICAgIH0pO1xuICAgIHRoaXMuaXNSZXNpemluZyA9IHRydWU7XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVzaXplRXZlbnQoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaXNSZXNpemluZyB8fCAhKGV2ZW50IGluc3RhbmNlb2YgTW91c2VFdmVudCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgbW92ZW1lbnRYID0gKGV2ZW50LnNjcmVlblggLSB0aGlzLnN0YXJ0WCk7XG4gICAgaWYgKG1vdmVtZW50WCA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBuZXdDb2x1bW5XaWR0aCA9IHRoaXMuc3RhcnRXaWR0aCArIG1vdmVtZW50WDtcblxuICAgIGNvbnN0IGxlc3NUaGFuTWluID0gbmV3Q29sdW1uV2lkdGggPCB0aGlzLm1pbldpZHRoO1xuICAgIGNvbnN0IG1vcmVUaGFuTWF4ID0gbmV3Q29sdW1uV2lkdGggPiB0aGlzLm1heFdpZHRoO1xuICAgIGlmIChsZXNzVGhhbk1pbiB8fCBtb3JlVGhhbk1heCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoIXRoaXMudGFibGUuaG9yaXpvbnRhbFNjcm9sbCkge1xuICAgICAgdGhpcy5jYWxjdWxhdGVOZXdDb2x1bW5zV2lkdGgobW92ZW1lbnRYLCBuZXdDb2x1bW5XaWR0aCk7XG4gICAgICB0aGlzLnVwZGF0ZUJsb2NrZWRDb2xzKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY29sdW1uLnNldFdpZHRoKG5ld0NvbHVtbldpZHRoKTtcbiAgICB9XG4gICAgdGhpcy50YWJsZS5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0SGVhZGVyRUwoKTogTm9kZSB7XG4gICAgbGV0IGVsZW1lbnQ7XG4gICAgbGV0IGN1cnJlbnRFbDogTm9kZSA9IHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudC5wYXJlbnRFbGVtZW50O1xuICAgIHdoaWxlICghZWxlbWVudCAmJiBjdXJyZW50RWwpIHtcbiAgICAgIGlmIChjdXJyZW50RWwubm9kZU5hbWUgPT09ICdUSCcpIHtcbiAgICAgICAgZWxlbWVudCA9IGN1cnJlbnRFbDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGN1cnJlbnRFbCA9IGN1cnJlbnRFbC5wYXJlbnRFbGVtZW50O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY3VycmVudEVsO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldEZvbGxvd2luZ09Db2x1bW5zKCk6IE9Db2x1bW5bXSB7XG4gICAgY29uc3QgcmVzdWx0OiBPQ29sdW1uW10gPSBbXTtcbiAgICBsZXQgbmV4dFRoOiBhbnkgPSB0aGlzLmhlYWRlckVsLm5leHRTaWJsaW5nO1xuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgIHdoaWxlIChuZXh0VGgpIHtcbiAgICAgIGNvbnN0IG9Db2w6IE9Db2x1bW4gPSBzZWxmLnRhYmxlLmdldE9Db2x1bW5Gcm9tVGgobmV4dFRoKTtcbiAgICAgIGlmIChVdGlsLmlzRGVmaW5lZChvQ29sKSkge1xuICAgICAgICByZXN1bHQucHVzaChvQ29sKTtcbiAgICAgIH1cbiAgICAgIG5leHRUaCA9IG5leHRUaC5uZXh0U2libGluZztcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHByb3RlY3RlZCB1cGRhdGVCbG9ja2VkQ29scygpIHtcbiAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICB0aGlzLmJsb2NrZWRNaW5Db2xzID0gW107XG4gICAgdGhpcy5ibG9ja2VkTWF4Q29scyA9IFtdO1xuICAgIGNvbnN0IGNvbHVtbnMgPSBbdGhpcy5jb2x1bW4sIC4uLnRoaXMubmV4dE9Db2x1bW5zXTtcbiAgICBjb2x1bW5zLmZvckVhY2gob0NvbCA9PiB7XG4gICAgICBjb25zdCBET01XaWR0aCA9IHRoaXMudGFibGUuZ2V0Q2xpZW50V2lkdGhDb2x1bW4ob0NvbCk7XG4gICAgICBpZiAoRE9NV2lkdGggPD0gb0NvbC5nZXRNaW5XaWR0aFZhbHVlKCkpIHtcbiAgICAgICAgc2VsZi5ibG9ja2VkTWluQ29scy5wdXNoKG9Db2wuYXR0cik7XG4gICAgICB9XG4gICAgICBjb25zdCBtYXhXID0gb0NvbC5nZXRNYXhXaWR0aFZhbHVlKCk7XG4gICAgICBpZiAoVXRpbC5pc0RlZmluZWQobWF4VykgJiYgRE9NV2lkdGggPj0gbWF4Vykge1xuICAgICAgICBzZWxmLmJsb2NrZWRNYXhDb2xzLnB1c2gob0NvbC5hdHRyKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjYWxjdWxhdGVOZXdDb2x1bW5zV2lkdGgobW92ZW1lbnRYOiBudW1iZXIsIG5ld0NvbHVtbldpZHRoOiBudW1iZXIpIHtcbiAgICBjb25zdCBwb3NpdGl2ZSA9IChtb3ZlbWVudFggPiAwKTtcbiAgICBpZiAocG9zaXRpdmUpIHtcbiAgICAgIHRoaXMuY2FsY3VsYXRlVXNpbmdOZXh0Q29sdW1uc1Jlc3RyaWN0aW9ucyhtb3ZlbWVudFgsIG5ld0NvbHVtbldpZHRoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jYWxjdWxhdGVVc2luZ093bkNvbHVtblJlc3RyaWN0aW9uKG1vdmVtZW50WCwgbmV3Q29sdW1uV2lkdGgpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBjYWxjdWxhdGVVc2luZ05leHRDb2x1bW5zUmVzdHJpY3Rpb25zKG1vdmVtZW50WDogbnVtYmVyLCBuZXdDb2x1bW5XaWR0aDogbnVtYmVyKSB7XG4gICAgY29uc3QgYXZhaWxhYmxlQ29scyA9IHRoaXMubmV4dE9Db2x1bW5zLmxlbmd0aCAtIHRoaXMuYmxvY2tlZE1pbkNvbHMubGVuZ3RoO1xuICAgIGlmIChhdmFpbGFibGVDb2xzIDw9IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3Qgd2lkdGhSYXRpbyA9IG1vdmVtZW50WCAvIGF2YWlsYWJsZUNvbHM7XG4gICAgY29uc3QgY29scyA9IHRoaXMubmV4dE9Db2x1bW5zLmZpbHRlcigob0NvbDogT0NvbHVtbikgPT4gdGhpcy5ibG9ja2VkTWluQ29scy5pbmRleE9mKG9Db2wuYXR0cikgPT09IC0xKTtcbiAgICBjb2xzLmZvckVhY2gob0NvbCA9PiB7XG4gICAgICBsZXQgbmV3V2lkdGggPSAodGhpcy5jb2x1bW5zU3RhcnRXaWR0aFtvQ29sLmF0dHJdIC0gd2lkdGhSYXRpbyk7XG4gICAgICBjb25zdCBtaW5XaWR0aCA9IG9Db2wuZ2V0TWluV2lkdGhWYWx1ZSgpO1xuICAgICAgaWYgKG5ld1dpZHRoIDw9IG1pbldpZHRoKSB7XG4gICAgICAgIG5ld1dpZHRoID0gbWluV2lkdGg7XG4gICAgICAgIHRoaXMuYmxvY2tlZE1pbkNvbHMucHVzaChvQ29sLmF0dHIpO1xuICAgICAgfVxuICAgICAgb0NvbC5zZXRXaWR0aChuZXdXaWR0aCk7XG4gICAgfSk7XG4gICAgdGhpcy5jb2x1bW4uc2V0V2lkdGgobmV3Q29sdW1uV2lkdGgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNhbGN1bGF0ZVVzaW5nT3duQ29sdW1uUmVzdHJpY3Rpb24obW92ZW1lbnRYOiBudW1iZXIsIG5ld0NvbHVtbldpZHRoOiBudW1iZXIpIHtcbiAgICBsZXQgd2lkdGhSYXRpbyA9IE1hdGguYWJzKG1vdmVtZW50WCkgLyB0aGlzLm5leHRPQ29sdW1ucy5sZW5ndGg7XG4gICAgbGV0IHdpZHRoRGlmZmVyZW5jZSA9IDA7XG4gICAgaWYgKHdpZHRoUmF0aW8gPiAwICYmIHRoaXMuYmxvY2tlZE1heENvbHMubGVuZ3RoIDwgdGhpcy5uZXh0T0NvbHVtbnMubGVuZ3RoKSB7XG4gICAgICBjb25zdCBjb2xzID0gdGhpcy5uZXh0T0NvbHVtbnMuZmlsdGVyKChvQ29sOiBPQ29sdW1uKSA9PiB0aGlzLmJsb2NrZWRNYXhDb2xzLmluZGV4T2Yob0NvbC5hdHRyKSA9PT0gLTEpO1xuICAgICAgY29scy5mb3JFYWNoKG9Db2wgPT4ge1xuICAgICAgICBsZXQgbmV3V2lkdGhWYWx1ZSA9ICh0aGlzLmNvbHVtbnNTdGFydFdpZHRoW29Db2wuYXR0cl0gKyB3aWR0aFJhdGlvKTtcbiAgICAgICAgY29uc3QgbWF4V2lkdGggPSBvQ29sLmdldE1heFdpZHRoVmFsdWUoKTtcbiAgICAgICAgaWYgKG1heFdpZHRoICYmIG5ld1dpZHRoVmFsdWUgPiBtYXhXaWR0aCkge1xuICAgICAgICAgIGNvbnN0IGRpZmYgPSBuZXdXaWR0aFZhbHVlIC0gbWF4V2lkdGg7XG4gICAgICAgICAgbmV3V2lkdGhWYWx1ZSA9IG1heFdpZHRoO1xuICAgICAgICAgIHRoaXMuYmxvY2tlZE1heENvbHMucHVzaChvQ29sLmF0dHIpO1xuICAgICAgICAgIGNvbnN0IG5vdEJsb2NrZWQgPSB0aGlzLm5leHRPQ29sdW1ucy5sZW5ndGggLSB0aGlzLmJsb2NrZWRNYXhDb2xzLmxlbmd0aDtcbiAgICAgICAgICB3aWR0aFJhdGlvICs9IG5vdEJsb2NrZWQgPiAwID8gTWF0aC5mbG9vcihkaWZmIC8gbm90QmxvY2tlZCkgOiAwO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IERPTVdpZHRoID0gdGhpcy50YWJsZS5nZXRDbGllbnRXaWR0aENvbHVtbihvQ29sKTtcbiAgICAgICAgd2lkdGhEaWZmZXJlbmNlICs9IG5ld1dpZHRoVmFsdWUgLSBET01XaWR0aDtcbiAgICAgICAgb0NvbC5zZXRXaWR0aChuZXdXaWR0aFZhbHVlKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICBjb25zdCBuZXdXaWR0aCA9IE1hdGgubWluKHRoaXMuc3RhcnRXaWR0aCAtIHdpZHRoRGlmZmVyZW5jZSwgbmV3Q29sdW1uV2lkdGgpO1xuICAgIHRoaXMuY29sdW1uLnNldFdpZHRoKG5ld1dpZHRoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBpbml0aWFsaXplV2lkdGhEYXRhKCkge1xuICAgIGxldCBtYXhXaWR0aCA9IHRoaXMuY29sdW1uLmdldE1heFdpZHRoVmFsdWUoKTtcbiAgICBsZXQgbmV4dENvbE1pbldpZHRoQWN1bSA9IDA7XG4gICAgbGV0IG5leHRDb2xXaWR0aEFjdW0gPSAwO1xuICAgIHRoaXMubmV4dE9Db2x1bW5zLmZvckVhY2goKGNvbDogT0NvbHVtbikgPT4ge1xuICAgICAgbmV4dENvbE1pbldpZHRoQWN1bSArPSBjb2wuZ2V0TWluV2lkdGhWYWx1ZSgpO1xuICAgICAgY29uc3QgRE9NV2lkdGggPSB0aGlzLnRhYmxlLmdldENsaWVudFdpZHRoQ29sdW1uKGNvbCk7XG4gICAgICBuZXh0Q29sV2lkdGhBY3VtICs9IERPTVdpZHRoO1xuICAgICAgdGhpcy5jb2x1bW5zU3RhcnRXaWR0aFtjb2wuYXR0cl0gPSBET01XaWR0aDtcbiAgICB9KTtcbiAgICBjb25zdCBjYWxjTWF4V2lkdGggPSB0aGlzLmhlYWRlckVsLmNsaWVudFdpZHRoICsgKG5leHRDb2xXaWR0aEFjdW0gLSBuZXh0Q29sTWluV2lkdGhBY3VtKTtcbiAgICBpZiAoVXRpbC5pc0RlZmluZWQobWF4V2lkdGgpKSB7XG4gICAgICBtYXhXaWR0aCA9IE1hdGgubWluKG1heFdpZHRoLCBjYWxjTWF4V2lkdGgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBtYXhXaWR0aCA9IGNhbGNNYXhXaWR0aDtcbiAgICB9XG4gICAgdGhpcy5tYXhXaWR0aCA9IG1heFdpZHRoO1xuICB9XG5cbn1cbiIsIjxzcGFuIGNsYXNzPVwicmVzaXplclwiIChjbGljayk9XCJvbkNsaWNrKCRldmVudClcIj48L3NwYW4+Il19
|
|
246
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby10YWJsZS1jb2x1bW4tcmVzaXplci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvY29tcG9uZW50cy90YWJsZS9leHRlbnNpb25zL2hlYWRlci90YWJsZS1jb2x1bW4tcmVzaXplci9vLXRhYmxlLWNvbHVtbi1yZXNpemVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL3RhYmxlL2V4dGVuc2lvbnMvaGVhZGVyL3RhYmxlLWNvbHVtbi1yZXNpemVyL28tdGFibGUtY29sdW1uLXJlc2l6ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFVBQVUsRUFDVixVQUFVLEVBQ1YsWUFBWSxFQUNaLE1BQU0sRUFDTixNQUFNLEVBR04sU0FBUyxFQUNULGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNsRixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFaEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDZCQUE2QixDQUFDOzs7QUFFekQsTUFBTSxDQUFDLE1BQU0scUNBQXFDLEdBQUc7SUFDbkQsUUFBUTtDQUNULENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxzQ0FBc0MsR0FBRyxFQUdyRCxDQUFDO0FBZUYsTUFBTSxPQUFPLDRCQUE0QjtJQXlCdkMsWUFDK0MsS0FBaUIsRUFDcEQsS0FBaUIsRUFDakIsTUFBYyxFQUNkLFFBQW1CO1FBSGdCLFVBQUssR0FBTCxLQUFLLENBQVk7UUFDcEQsVUFBSyxHQUFMLEtBQUssQ0FBWTtR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QVMsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUM1QixRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsWUFBWSxDQUFDLENBQUM7U0FDN0M7YUFBTTtZQUNMLFFBQVEsR0FBRyxZQUFZLENBQUM7U0FDekI7UUFDRCxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztJQUMzQixDQUFDOzswSEFqUFUsNEJBQTRCLGtCQTBCN0IsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQzs4R0ExQjNCLDRCQUE0Qiw2VkN6Q3pDLDZEQUF1RDtBRDRDckQ7SUFBQyxxQkFBcUIsRUFBRTs7OERBQ0U7NEZBSmYsNEJBQTRCO2tCQWJ4QyxTQUFTOytCQUNFLHdCQUF3QixVQUMxQixxQ0FBcUMsV0FDcEMsc0NBQXNDLG1CQUc5Qix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLFFBQy9CO3dCQUNKLGdDQUFnQyxFQUFFLE1BQU07d0JBQ3hDLGtCQUFrQixFQUFFLFlBQVk7cUJBQ2pDOzswQkE0QkUsTUFBTTsyQkFBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDO2tIQXRCdEMsUUFBUSxNQW9EUixXQUFXO3NCQUZWLFlBQVk7dUJBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDOztzQkFDcEMsWUFBWTt1QkFBQyxZQUFZLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBU3RDLFNBQVM7c0JBRlIsWUFBWTt1QkFBQyxrQkFBa0I7O3NCQUMvQixZQUFZO3VCQUFDLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIGZvcndhcmRSZWYsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5qZWN0LFxuICBOZ1pvbmUsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBSZW5kZXJlcjIsXG4gIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBCb29sZWFuSW5wdXRDb252ZXJ0ZXIgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9kZWNvcmF0b3JzL2lucHV0LWNvbnZlcnRlcic7XG5pbXBvcnQgeyBVdGlsIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vdXRpbC91dGlsJztcbmltcG9ydCB0eXBlIHsgT0NvbHVtbiB9IGZyb20gJy4uLy4uLy4uL2NvbHVtbi9vLWNvbHVtbi5jbGFzcyc7XG5pbXBvcnQgeyBPVGFibGVCYXNlIH0gZnJvbSAnLi4vLi4vLi4vby10YWJsZS1iYXNlLmNsYXNzJztcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfSU5QVVRTX09fVEFCTEVfQ09MVU1OX1JFU0laRVIgPSBbXG4gICdjb2x1bW4nXG5dO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9PVVRQVVRTX09fVEFCTEVfQ09MVU1OX1JFU0laRVIgPSBbXG4gIC8vICdyZXNpemluZycsXG4gIC8vICdyZXNpemVkJ1xuXTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnby10YWJsZS1jb2x1bW4tcmVzaXplcicsXG4gIGlucHV0czogREVGQVVMVF9JTlBVVFNfT19UQUJMRV9DT0xVTU5fUkVTSVpFUixcbiAgb3V0cHV0czogREVGQVVMVF9PVVRQVVRTX09fVEFCTEVfQ09MVU1OX1JFU0laRVIsXG4gIHRlbXBsYXRlVXJsOiAnLi9vLXRhYmxlLWNvbHVtbi1yZXNpemVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vby10YWJsZS1jb2x1bW4tcmVzaXplci5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgaG9zdDoge1xuICAgICdbY2xhc3Muby10YWJsZS1jb2x1bW4tcmVzaXplcl0nOiAndHJ1ZScsXG4gICAgJ1tjbGFzcy5kaXNhYmxlZF0nOiAnaXNEaXNhYmxlZCcsXG4gIH1cbn0pXG5leHBvcnQgY2xhc3MgT1RhYmxlQ29sdW1uUmVzaXplckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICBjb2x1bW46IE9Db2x1bW47XG4gIEBCb29sZWFuSW5wdXRDb252ZXJ0ZXIoKVxuICBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8vIHJlc2l6aW5nID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICAvLyByZXNpemVkID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG4gIHByb3RlY3RlZCBzdGFydFdpZHRoOiBhbnk7XG4gIHByb3RlY3RlZCBtaW5XaWR0aDogYW55O1xuICBwcm90ZWN0ZWQgbWF4V2lkdGg6IGFueTtcblxuICBwcm90ZWN0ZWQgc3RhcnRYOiBhbnk7XG5cbiAgcHJvdGVjdGVkIGhlYWRlckVsOiBhbnk7XG5cbiAgcHJvdGVjdGVkIG5leHRPQ29sdW1uczogT0NvbHVtbltdO1xuXG4gIHByb3RlY3RlZCBkcmFnTGlzdGVuZXJzOiBBcnJheTwoKSA9PiB2b2lkPiA9IFtdO1xuICBwcm90ZWN0ZWQgaXNSZXNpemluZzogYm9vbGVhbiA9IGZhbHNlO1xuICBwcm90ZWN0ZWQgYmxvY2tlZE1pbkNvbHMgPSBbXTtcbiAgcHJvdGVjdGVkIGJsb2NrZWRNYXhDb2xzID0gW107XG5cbiAgcHJvdGVjdGVkIGNvbHVtbnNTdGFydFdpZHRoID0ge307XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChmb3J3YXJkUmVmKCgpID0+IE9UYWJsZUJhc2UpKSBwdWJsaWMgdGFibGU6IE9UYWJsZUJhc2UsXG4gICAgcHJvdGVjdGVkIGVsUmVmOiBFbGVtZW50UmVmLFxuICAgIHByb3RlY3RlZCBuZ1pvbmU6IE5nWm9uZSxcbiAgICBwcm90ZWN0ZWQgcmVuZGVyZXI6IFJlbmRlcmVyMlxuICApIHsgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5pc0Rpc2FibGVkKSB7XG4gICAgICB0aGlzLmhlYWRlckVsID0gdGhpcy5nZXRIZWFkZXJFTCgpO1xuICAgICAgaWYgKHRoaXMuaGVhZGVyRWwpIHtcbiAgICAgICAgdGhpcy5uZXh0T0NvbHVtbnMgPSB0aGlzLmdldEZvbGxvd2luZ09Db2x1bW5zKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5zdG9wRHJhZ2dpbmcoKTtcbiAgfVxuXG4gIG9uQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICB9XG5cbiAgZ2V0IGlzRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29sdW1uICYmICF0aGlzLmNvbHVtbi5yZXNpemFibGU7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdtb3VzZWRvd24nLCBbJyRldmVudCddKVxuICBASG9zdExpc3RlbmVyKCd0b3VjaHN0YXJ0JywgWyckZXZlbnQnXSlcbiAgb25Nb3VzZWRvd24oZTogTW91c2VFdmVudCB8IFRvdWNoRXZlbnQpIHtcbiAgICBpZiAoIXRoaXMuaXNEaXNhYmxlZCkge1xuICAgICAgdGhpcy5zdGFydFJlc2l6ZShlKTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDptb3VzZXVwJylcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6dG91Y2hlbmQnKVxuICBvbk1vdXNldXAoKSB7XG4gICAgdGhpcy5pc1Jlc2l6aW5nID0gZmFsc2U7XG4gICAgdGhpcy5zdG9wRHJhZ2dpbmcoKTtcbiAgICAvLyB0aGlzLnJlc2l6ZS5lbWl0KHRoaXMuZWxlbWVudC5jbGllbnRXaWR0aCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc3RvcERyYWdnaW5nKCkge1xuICAgIHRoaXMuaXNSZXNpemluZyA9IGZhbHNlO1xuICAgIHRoaXMuY29sdW1uc1N0YXJ0V2lkdGggPSB7fTtcbiAgICB3aGlsZSAodGhpcy5kcmFnTGlzdGVuZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGZjdCA9IHRoaXMuZHJhZ0xpc3RlbmVycy5wb3AoKTtcbiAgICAgIGlmIChmY3QpIHtcbiAgICAgICAgZmN0KCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc3RhcnRSZXNpemUoc3RhcnRFdmVudDogTW91c2VFdmVudCB8IFRvdWNoRXZlbnQpOiB2b2lkIHtcbiAgICBzdGFydEV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgc3RhcnRFdmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBpZiAoIVV0aWwuaXNEZWZpbmVkKHRoaXMuaGVhZGVyRWwpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IERPTVdpZHRoID0gdGhpcy50YWJsZS5nZXRDbGllbnRXaWR0aENvbHVtbih0aGlzLmNvbHVtbik7XG4gICAgdGhpcy5zdGFydFggPSAoc3RhcnRFdmVudCBpbnN0YW5jZW9mIE1vdXNlRXZlbnQpID8gc3RhcnRFdmVudC5zY3JlZW5YIDogc3RhcnRFdmVudC50b3VjaGVzWzBdLnNjcmVlblg7XG4gICAgdGhpcy5zdGFydFdpZHRoID0gRE9NV2lkdGg7XG4gICAgdGhpcy5taW5XaWR0aCA9IHRoaXMuY29sdW1uLmdldE1pbldpZHRoVmFsdWUoKTtcbiAgICB0aGlzLmluaXRpYWxpemVXaWR0aERhdGEoKTtcbiAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICB0aGlzLmRyYWdMaXN0ZW5lcnMucHVzaCh0aGlzLnJlbmRlcmVyLmxpc3RlbignZG9jdW1lbnQnLCAnbW91c2V1cCcsICgpID0+IHRoaXMuc3RvcERyYWdnaW5nKCkpKTtcbiAgICAgIHRoaXMuZHJhZ0xpc3RlbmVycy5wdXNoKHRoaXMucmVuZGVyZXIubGlzdGVuKCdkb2N1bWVudCcsICd0b3VjaGVuZCcsICgpID0+IHRoaXMuc3RvcERyYWdnaW5nKCkpKTtcbiAgICB9KTtcblxuICAgIGNvbnN0IG1vdmVFdmVudCA9IChzdGFydEV2ZW50IGluc3RhbmNlb2YgTW91c2VFdmVudCkgPyAnbW91c2Vtb3ZlJyA6ICd0b3VjaG1vdmUnO1xuICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIHRoaXMuZHJhZ0xpc3RlbmVycy5wdXNoKHRoaXMucmVuZGVyZXIubGlzdGVuKCdkb2N1bWVudCcsIG1vdmVFdmVudCwgKGU6IE1vdXNlRXZlbnQgfCBUb3VjaEV2ZW50KSA9PiB0aGlzLnJlc2l6ZUV2ZW50KGUpKSk7XG4gICAgfSk7XG4gICAgdGhpcy5pc1Jlc2l6aW5nID0gdHJ1ZTtcbiAgfVxuXG4gIHByb3RlY3RlZCByZXNpemVFdmVudChldmVudDogTW91c2VFdmVudCB8IFRvdWNoRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaXNSZXNpemluZykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBtb3ZlbWVudFggPSAoZXZlbnQgaW5zdGFuY2VvZiBNb3VzZUV2ZW50KSA/IChldmVudC5zY3JlZW5YIC0gdGhpcy5zdGFydFgpIDogKGV2ZW50LnRvdWNoZXNbMF0uc2NyZWVuWCAtIHRoaXMuc3RhcnRYKTtcbiAgICBpZiAobW92ZW1lbnRYID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IG5ld0NvbHVtbldpZHRoID0gdGhpcy5zdGFydFdpZHRoICsgbW92ZW1lbnRYO1xuXG4gICAgY29uc3QgbGVzc1RoYW5NaW4gPSBuZXdDb2x1bW5XaWR0aCA8IHRoaXMubWluV2lkdGg7XG4gICAgY29uc3QgbW9yZVRoYW5NYXggPSBuZXdDb2x1bW5XaWR0aCA+IHRoaXMubWF4V2lkdGg7XG4gICAgaWYgKGxlc3NUaGFuTWluIHx8IG1vcmVUaGFuTWF4KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICghdGhpcy50YWJsZS5ob3Jpem9udGFsU2Nyb2xsKSB7XG4gICAgICB0aGlzLmNhbGN1bGF0ZU5ld0NvbHVtbnNXaWR0aChtb3ZlbWVudFgsIG5ld0NvbHVtbldpZHRoKTtcbiAgICAgIHRoaXMudXBkYXRlQmxvY2tlZENvbHMoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jb2x1bW4uc2V0V2lkdGgobmV3Q29sdW1uV2lkdGgpO1xuICAgIH1cbiAgICB0aGlzLnRhYmxlLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRIZWFkZXJFTCgpOiBOb2RlIHtcbiAgICBsZXQgZWxlbWVudDtcbiAgICBsZXQgY3VycmVudEVsOiBOb2RlID0gdGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LnBhcmVudEVsZW1lbnQ7XG4gICAgd2hpbGUgKCFlbGVtZW50ICYmIGN1cnJlbnRFbCkge1xuICAgICAgaWYgKGN1cnJlbnRFbC5ub2RlTmFtZSA9PT0gJ1RIJykge1xuICAgICAgICBlbGVtZW50ID0gY3VycmVudEVsO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY3VycmVudEVsID0gY3VycmVudEVsLnBhcmVudEVsZW1lbnQ7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBjdXJyZW50RWw7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0Rm9sbG93aW5nT0NvbHVtbnMoKTogT0NvbHVtbltdIHtcbiAgICBjb25zdCByZXN1bHQ6IE9Db2x1bW5bXSA9IFtdO1xuICAgIGxldCBuZXh0VGg6IGFueSA9IHRoaXMuaGVhZGVyRWwubmV4dFNpYmxpbmc7XG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgd2hpbGUgKG5leHRUaCkge1xuICAgICAgY29uc3Qgb0NvbDogT0NvbHVtbiA9IHNlbGYudGFibGUuZ2V0T0NvbHVtbkZyb21UaChuZXh0VGgpO1xuICAgICAgaWYgKFV0aWwuaXNEZWZpbmVkKG9Db2wpKSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKG9Db2wpO1xuICAgICAgfVxuICAgICAgbmV4dFRoID0gbmV4dFRoLm5leHRTaWJsaW5nO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcHJvdGVjdGVkIHVwZGF0ZUJsb2NrZWRDb2xzKCkge1xuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgIHRoaXMuYmxvY2tlZE1pbkNvbHMgPSBbXTtcbiAgICB0aGlzLmJsb2NrZWRNYXhDb2xzID0gW107XG4gICAgY29uc3QgY29sdW1ucyA9IFt0aGlzLmNvbHVtbiwgLi4udGhpcy5uZXh0T0NvbHVtbnNdO1xuICAgIGNvbHVtbnMuZm9yRWFjaChvQ29sID0+IHtcbiAgICAgIGNvbnN0IERPTVdpZHRoID0gdGhpcy50YWJsZS5nZXRDbGllbnRXaWR0aENvbHVtbihvQ29sKTtcbiAgICAgIGlmIChET01XaWR0aCA8PSBvQ29sLmdldE1pbldpZHRoVmFsdWUoKSkge1xuICAgICAgICBzZWxmLmJsb2NrZWRNaW5Db2xzLnB1c2gob0NvbC5hdHRyKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IG1heFcgPSBvQ29sLmdldE1heFdpZHRoVmFsdWUoKTtcbiAgICAgIGlmIChVdGlsLmlzRGVmaW5lZChtYXhXKSAmJiBET01XaWR0aCA+PSBtYXhXKSB7XG4gICAgICAgIHNlbGYuYmxvY2tlZE1heENvbHMucHVzaChvQ29sLmF0dHIpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNhbGN1bGF0ZU5ld0NvbHVtbnNXaWR0aChtb3ZlbWVudFg6IG51bWJlciwgbmV3Q29sdW1uV2lkdGg6IG51bWJlcikge1xuICAgIGNvbnN0IHBvc2l0aXZlID0gKG1vdmVtZW50WCA+IDApO1xuICAgIGlmIChwb3NpdGl2ZSkge1xuICAgICAgdGhpcy5jYWxjdWxhdGVVc2luZ05leHRDb2x1bW5zUmVzdHJpY3Rpb25zKG1vdmVtZW50WCwgbmV3Q29sdW1uV2lkdGgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNhbGN1bGF0ZVVzaW5nT3duQ29sdW1uUmVzdHJpY3Rpb24obW92ZW1lbnRYLCBuZXdDb2x1bW5XaWR0aCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGNhbGN1bGF0ZVVzaW5nTmV4dENvbHVtbnNSZXN0cmljdGlvbnMobW92ZW1lbnRYOiBudW1iZXIsIG5ld0NvbHVtbldpZHRoOiBudW1iZXIpIHtcbiAgICBjb25zdCBhdmFpbGFibGVDb2xzID0gdGhpcy5uZXh0T0NvbHVtbnMubGVuZ3RoIC0gdGhpcy5ibG9ja2VkTWluQ29scy5sZW5ndGg7XG4gICAgaWYgKGF2YWlsYWJsZUNvbHMgPD0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCB3aWR0aFJhdGlvID0gbW92ZW1lbnRYIC8gYXZhaWxhYmxlQ29scztcbiAgICBjb25zdCBjb2xzID0gdGhpcy5uZXh0T0NvbHVtbnMuZmlsdGVyKChvQ29sOiBPQ29sdW1uKSA9PiB0aGlzLmJsb2NrZWRNaW5Db2xzLmluZGV4T2Yob0NvbC5hdHRyKSA9PT0gLTEpO1xuICAgIGNvbHMuZm9yRWFjaChvQ29sID0+IHtcbiAgICAgIGxldCBuZXdXaWR0aCA9ICh0aGlzLmNvbHVtbnNTdGFydFdpZHRoW29Db2wuYXR0cl0gLSB3aWR0aFJhdGlvKTtcbiAgICAgIGNvbnN0IG1pbldpZHRoID0gb0NvbC5nZXRNaW5XaWR0aFZhbHVlKCk7XG4gICAgICBpZiAobmV3V2lkdGggPD0gbWluV2lkdGgpIHtcbiAgICAgICAgbmV3V2lkdGggPSBtaW5XaWR0aDtcbiAgICAgICAgdGhpcy5ibG9ja2VkTWluQ29scy5wdXNoKG9Db2wuYXR0cik7XG4gICAgICB9XG4gICAgICBvQ29sLnNldFdpZHRoKG5ld1dpZHRoKTtcbiAgICB9KTtcbiAgICB0aGlzLmNvbHVtbi5zZXRXaWR0aChuZXdDb2x1bW5XaWR0aCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgY2FsY3VsYXRlVXNpbmdPd25Db2x1bW5SZXN0cmljdGlvbihtb3ZlbWVudFg6IG51bWJlciwgbmV3Q29sdW1uV2lkdGg6IG51bWJlcikge1xuICAgIGxldCB3aWR0aFJhdGlvID0gTWF0aC5hYnMobW92ZW1lbnRYKSAvIHRoaXMubmV4dE9Db2x1bW5zLmxlbmd0aDtcbiAgICBsZXQgd2lkdGhEaWZmZXJlbmNlID0gMDtcbiAgICBpZiAod2lkdGhSYXRpbyA+IDAgJiYgdGhpcy5ibG9ja2VkTWF4Q29scy5sZW5ndGggPCB0aGlzLm5leHRPQ29sdW1ucy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IGNvbHMgPSB0aGlzLm5leHRPQ29sdW1ucy5maWx0ZXIoKG9Db2w6IE9Db2x1bW4pID0+IHRoaXMuYmxvY2tlZE1heENvbHMuaW5kZXhPZihvQ29sLmF0dHIpID09PSAtMSk7XG4gICAgICBjb2xzLmZvckVhY2gob0NvbCA9PiB7XG4gICAgICAgIGxldCBuZXdXaWR0aFZhbHVlID0gKHRoaXMuY29sdW1uc1N0YXJ0V2lkdGhbb0NvbC5hdHRyXSArIHdpZHRoUmF0aW8pO1xuICAgICAgICBjb25zdCBtYXhXaWR0aCA9IG9Db2wuZ2V0TWF4V2lkdGhWYWx1ZSgpO1xuICAgICAgICBpZiAobWF4V2lkdGggJiYgbmV3V2lkdGhWYWx1ZSA+IG1heFdpZHRoKSB7XG4gICAgICAgICAgY29uc3QgZGlmZiA9IG5ld1dpZHRoVmFsdWUgLSBtYXhXaWR0aDtcbiAgICAgICAgICBuZXdXaWR0aFZhbHVlID0gbWF4V2lkdGg7XG4gICAgICAgICAgdGhpcy5ibG9ja2VkTWF4Q29scy5wdXNoKG9Db2wuYXR0cik7XG4gICAgICAgICAgY29uc3Qgbm90QmxvY2tlZCA9IHRoaXMubmV4dE9Db2x1bW5zLmxlbmd0aCAtIHRoaXMuYmxvY2tlZE1heENvbHMubGVuZ3RoO1xuICAgICAgICAgIHdpZHRoUmF0aW8gKz0gbm90QmxvY2tlZCA+IDAgPyBNYXRoLmZsb29yKGRpZmYgLyBub3RCbG9ja2VkKSA6IDA7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgRE9NV2lkdGggPSB0aGlzLnRhYmxlLmdldENsaWVudFdpZHRoQ29sdW1uKG9Db2wpO1xuICAgICAgICB3aWR0aERpZmZlcmVuY2UgKz0gbmV3V2lkdGhWYWx1ZSAtIERPTVdpZHRoO1xuICAgICAgICBvQ29sLnNldFdpZHRoKG5ld1dpZHRoVmFsdWUpO1xuICAgICAgfSk7XG4gICAgfVxuICAgIGNvbnN0IG5ld1dpZHRoID0gTWF0aC5taW4odGhpcy5zdGFydFdpZHRoIC0gd2lkdGhEaWZmZXJlbmNlLCBuZXdDb2x1bW5XaWR0aCk7XG4gICAgdGhpcy5jb2x1bW4uc2V0V2lkdGgobmV3V2lkdGgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGluaXRpYWxpemVXaWR0aERhdGEoKSB7XG4gICAgbGV0IG1heFdpZHRoID0gdGhpcy5jb2x1bW4uZ2V0TWF4V2lkdGhWYWx1ZSgpO1xuICAgIGxldCBuZXh0Q29sTWluV2lkdGhBY3VtID0gMDtcbiAgICBsZXQgbmV4dENvbFdpZHRoQWN1bSA9IDA7XG4gICAgdGhpcy5uZXh0T0NvbHVtbnMuZm9yRWFjaCgoY29sOiBPQ29sdW1uKSA9PiB7XG4gICAgICBuZXh0Q29sTWluV2lkdGhBY3VtICs9IGNvbC5nZXRNaW5XaWR0aFZhbHVlKCk7XG4gICAgICBjb25zdCBET01XaWR0aCA9IHRoaXMudGFibGUuZ2V0Q2xpZW50V2lkdGhDb2x1bW4oY29sKTtcbiAgICAgIG5leHRDb2xXaWR0aEFjdW0gKz0gRE9NV2lkdGg7XG4gICAgICB0aGlzLmNvbHVtbnNTdGFydFdpZHRoW2NvbC5hdHRyXSA9IERPTVdpZHRoO1xuICAgIH0pO1xuICAgIGNvbnN0IGNhbGNNYXhXaWR0aCA9IHRoaXMuaGVhZGVyRWwuY2xpZW50V2lkdGggKyAobmV4dENvbFdpZHRoQWN1bSAtIG5leHRDb2xNaW5XaWR0aEFjdW0pO1xuICAgIGlmIChVdGlsLmlzRGVmaW5lZChtYXhXaWR0aCkpIHtcbiAgICAgIG1heFdpZHRoID0gTWF0aC5taW4obWF4V2lkdGgsIGNhbGNNYXhXaWR0aCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG1heFdpZHRoID0gY2FsY01heFdpZHRoO1xuICAgIH1cbiAgICB0aGlzLm1heFdpZHRoID0gbWF4V2lkdGg7XG4gIH1cblxufVxuIiwiPHNwYW4gY2xhc3M9XCJyZXNpemVyXCIgKGNsaWNrKT1cIm9uQ2xpY2soJGV2ZW50KVwiPjwvc3Bhbj4iXX0=
|