@tetacom/svg-charts 1.6.1 → 1.6.2
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/esm2022/chart/base/series-base.component.mjs +3 -2
- package/esm2022/chart/chart-container/chart-container.component.mjs +3 -3
- package/esm2022/chart/chart-container/gridlines/gridlines.component.mjs +3 -3
- package/esm2022/chart/chart-container/series/area-series/area-series.component.mjs +3 -3
- package/esm2022/chart/chart-container/series/bar/bar-series.component.mjs +3 -3
- package/esm2022/chart/chart-container/series/block-area-series/block-area-series.component.mjs +3 -3
- package/esm2022/chart/chart-container/series/block-horizontal-series/block-horizontal-series.component.mjs +3 -3
- package/esm2022/chart/chart-container/series/block-series/block-series.component.mjs +3 -3
- package/esm2022/chart/chart-container/series/line/line-series.component.mjs +3 -3
- package/esm2022/chart/chart-container/series/scatter-series/scatter-series.component.mjs +3 -3
- package/esm2022/chart/chart-container/tooltip/tooltip.component.mjs +3 -3
- package/esm2022/chart/chart-container/x-axis/x-axis.component.mjs +3 -3
- package/esm2022/chart/chart-container/y-axis/y-axis.component.mjs +3 -3
- package/fesm2022/tetacom-svg-charts.mjs +26 -25
- package/fesm2022/tetacom-svg-charts.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -27,7 +27,8 @@ export class SeriesBaseComponent {
|
|
|
27
27
|
this.element = element;
|
|
28
28
|
this.zone = zone;
|
|
29
29
|
}
|
|
30
|
-
ngOnInit() {
|
|
30
|
+
ngOnInit() {
|
|
31
|
+
}
|
|
31
32
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.1", ngImport: i0, type: SeriesBaseComponent, deps: [{ token: i1.ChartService }, { token: i0.ChangeDetectorRef }, { token: i2.ScaleService }, { token: i3.ZoomService }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
32
33
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.1", type: SeriesBaseComponent, isStandalone: true, selector: "ng-component", inputs: { config: "config", series: "series" }, ngImport: i0, template: '', isInline: true }); }
|
|
33
34
|
}
|
|
@@ -42,4 +43,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.1", ngImpor
|
|
|
42
43
|
}], series: [{
|
|
43
44
|
type: Input
|
|
44
45
|
}] } });
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VyaWVzLWJhc2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NoYXJ0L2Jhc2Uvc2VyaWVzLWJhc2UuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixLQUFLLEVBQ0wsTUFBTSxHQUVQLE1BQU0sZUFBZSxDQUFDO0FBS3ZCLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUN0RCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDdEQsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLHlCQUF5QixDQUFDOzs7OztBQU9wRCxNQUFNLE9BQU8sbUJBQW1CO0lBQzlCLElBQ0ksTUFBTSxDQUFDLE1BQW9CO1FBQzdCLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQztJQUVELElBQ0ksTUFBTSxDQUFDLE1BQWlCO1FBQzFCLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQztJQUtELFlBQ1ksR0FBaUIsRUFDakIsR0FBc0IsRUFDdEIsWUFBMEIsRUFDMUIsV0FBd0IsRUFDeEIsT0FBbUIsRUFDbkIsSUFBYTtRQUxiLFFBQUcsR0FBSCxHQUFHLENBQWM7UUFDakIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDdEIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsWUFBTyxHQUFQLE9BQU8sQ0FBWTtRQUNuQixTQUFJLEdBQUosSUFBSSxDQUFTO0lBRXpCLENBQUM7SUFFRCxRQUFRO0lBQ1IsQ0FBQzs4R0FqQ1UsbUJBQW1CO2tHQUFuQixtQkFBbUIsd0hBSnBCLEVBQUU7OzJGQUlELG1CQUFtQjtrQkFML0IsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsRUFBRTtvQkFDWixVQUFVLEVBQUUsSUFBSTtpQkFFakI7b05BR0ssTUFBTTtzQkFEVCxLQUFLO2dCQVVGLE1BQU07c0JBRFQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIElucHV0LFxuICBOZ1pvbmUsXG4gIE9uSW5pdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7QmFzZVBvaW50fSBmcm9tICcuLi9tb2RlbC9iYXNlLXBvaW50JztcbmltcG9ydCB7SUNoYXJ0Q29uZmlnfSBmcm9tICcuLi9tb2RlbC9pLWNoYXJ0LWNvbmZpZyc7XG5pbXBvcnQge1Nlcmllc30gZnJvbSAnLi4vbW9kZWwvc2VyaWVzJztcbmltcG9ydCB7Q2hhcnRTZXJ2aWNlfSBmcm9tICcuLi9zZXJ2aWNlL2NoYXJ0LnNlcnZpY2UnO1xuaW1wb3J0IHtTY2FsZVNlcnZpY2V9IGZyb20gJy4uL3NlcnZpY2Uvc2NhbGUuc2VydmljZSc7XG5pbXBvcnQge1pvb21TZXJ2aWNlfSBmcm9tICcuLi9zZXJ2aWNlL3pvb20uc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZTogJycsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG5cbn0pXG5leHBvcnQgY2xhc3MgU2VyaWVzQmFzZUNvbXBvbmVudDxUIGV4dGVuZHMgQmFzZVBvaW50PiBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpXG4gIHNldCBjb25maWcoY29uZmlnOiBJQ2hhcnRDb25maWcpIHtcbiAgICB0aGlzLl9jb25maWcgPSBjb25maWc7XG4gIH1cblxuICBnZXQgY29uZmlnKCkge1xuICAgIHJldHVybiB0aGlzLl9jb25maWc7XG4gIH1cblxuICBASW5wdXQoKVxuICBzZXQgc2VyaWVzKHNlcmllczogU2VyaWVzPFQ+KSB7XG4gICAgdGhpcy5fc2VyaWVzID0gc2VyaWVzO1xuICB9XG5cbiAgZ2V0IHNlcmllcygpIHtcbiAgICByZXR1cm4gdGhpcy5fc2VyaWVzO1xuICB9XG5cbiAgcHJvdGVjdGVkIF9zZXJpZXM6IFNlcmllczxUPjtcbiAgcHJvdGVjdGVkIF9jb25maWc6IElDaGFydENvbmZpZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgc3ZjOiBDaGFydFNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJvdGVjdGVkIHNjYWxlU2VydmljZTogU2NhbGVTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCB6b29tU2VydmljZTogWm9vbVNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGVsZW1lbnQ6IEVsZW1lbnRSZWYsXG4gICAgcHJvdGVjdGVkIHpvbmU/OiBOZ1pvbmVcbiAgKSB7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgfVxufVxuIl19
|
|
@@ -193,7 +193,7 @@ export class ChartContainerComponent {
|
|
|
193
193
|
return item.name?.length ? item.name : index;
|
|
194
194
|
}
|
|
195
195
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.1", ngImport: i0, type: ChartContainerComponent, deps: [{ token: i1.ChartService }, { token: i2.ScaleService }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
196
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.1", type: ChartContainerComponent, isStandalone: true, selector: "teta-chart-container", ngImport: i0, template: "@if ({\n size: size | async,\n config: config | async,\n scales: scales | async,\n plotBands: plotBands | async,\n visibleRect: visibleRect | async\n}; as data) {\n @if (data.config?.tooltip?.enable) {\n <teta-tooltip [size]=\"data.size\"\n [config]=\"data.config\"></teta-tooltip>\n }\n @if (data.size?.height > 0\n && data.size?.width > 0\n && data.visibleRect?.height > 0\n && data.visibleRect?.width > 0\n && data.scales?.x.size === data.config.xAxis.length\n && data.scales?.y.size === data.config.yAxis.length) {\n <svg height=\"100%\" width=\"100%\" class=\"position-absolute\">\n <g class=\"y-axis-container\">\n @for (item of data.scales.y | keyvalue; track item.value.index) {\n @if (item.value.selfSize > 0\n && item.value.options.visible\n && data.scales.x.size > 0\n && data.scales.y.size > 0) {\n <g\n teta-y-axis\n [axis]=\"item.value\"\n [size]=\"data.visibleRect\"\n [attr.transform]=\"getTranslate(item.value, data.size) | async\"></g>\n <rect\n tetaZoomable\n fill-opacity=\"0\"\n [axis]=\"item.value\"\n [config]=\"data.config\"\n [size]=\"data.visibleRect\"\n [attr.x]=\"item.value.options.opposite ? 0 : -item.value.selfSize\"\n [attr.y]=\"0\"\n [attr.height]=\"data.visibleRect.height\"\n [attr.width]=\"item.value.selfSize\"\n [attr.transform]=\"getTranslate(item.value, data.size) | async\"></rect>\n }\n }\n </g>\n <g class=\"x-axis-container\">\n @for (item of data.scales.x | keyvalue; track item.value.index) {\n @if (item.value.options.visible && data.scales.x.size > 0 && data.scales.y.size > 0) {\n <g\n teta-x-axis\n [axis]=\"item.value\"\n [size]=\"data.visibleRect\"\n [attr.transform]=\"getTranslate(item.value, data.size) | async\"></g>\n <rect\n tetaZoomable\n fill-opacity=\"0\"\n [axis]=\"item.value\"\n [config]=\"data.config\"\n [size]=\"data.visibleRect\"\n [attr.x]=\"0\"\n [attr.y]=\"item.value.options.opposite ? -item.value.selfSize : 0\"\n [attr.width]=\"data.visibleRect.width\"\n [attr.height]=\"item.value.selfSize\"\n [attr.transform]=\"getTranslate(item.value, data.size) | async\"></rect>\n }\n }\n </g>\n </svg>\n }\n @if (data.size?.height > 0\n && data.size?.width > 0\n && data.visibleRect?.height > 0\n && data.visibleRect?.width > 0\n && data.scales?.x.size === data.config.xAxis.length\n && data.scales?.y.size === data.config.yAxis.length) {\n <svg\n tetaZoomable\n tetaBrushable\n class=\"position-absolute\"\n [size]=\"data.visibleRect\"\n [config]=\"data.config\"\n [axis]=\"data.config?.zoom?.type === zoomType.x ? data.scales.x.get(0) : data.scales.y.get(0)\"\n [attr.width]=\"data.visibleRect.width\"\n [attr.height]=\"data.visibleRect.height\"\n [attr.viewBox]=\"'0 0 ' + data.visibleRect.width + ' ' + data.visibleRect.height\"\n [style.transform]=\"'translate('+ data.visibleRect.x +'px, '+ data.visibleRect.y +'px)'\"\n (contextmenu)=\"contextMenu($event, data.scales.x, data.scales.y)\"\n (click)=\"click($event, data.scales.x, data.scales.y)\"\n (mouseleave)=\"mouseLeave($event)\"\n (mousemove)=\"mouseMove($event)\">\n @if (data.config.gridLines?.enable !== false) {\n <g class=\"gridlines\"\n teta-gridlines\n [size]=\"data.size\"></g>\n }\n <g class=\"x-axis-plotband-container\">\n @for (plotBand of data.plotBands; track
|
|
196
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.1", type: ChartContainerComponent, isStandalone: true, selector: "teta-chart-container", ngImport: i0, template: "@if ({\n size: size | async,\n config: config | async,\n scales: scales | async,\n plotBands: plotBands | async,\n visibleRect: visibleRect | async\n}; as data) {\n @if (data.config?.tooltip?.enable) {\n <teta-tooltip [size]=\"data.size\"\n [config]=\"data.config\"></teta-tooltip>\n }\n @if (data.size?.height > 0\n && data.size?.width > 0\n && data.visibleRect?.height > 0\n && data.visibleRect?.width > 0\n && data.scales?.x.size === data.config.xAxis.length\n && data.scales?.y.size === data.config.yAxis.length) {\n <svg height=\"100%\" width=\"100%\" class=\"position-absolute\">\n <g class=\"y-axis-container\">\n @for (item of data.scales.y | keyvalue; track item.value.index) {\n @if (item.value.selfSize > 0\n && item.value.options.visible\n && data.scales.x.size > 0\n && data.scales.y.size > 0) {\n <g\n teta-y-axis\n [axis]=\"item.value\"\n [size]=\"data.visibleRect\"\n [attr.transform]=\"getTranslate(item.value, data.size) | async\"></g>\n <rect\n tetaZoomable\n fill-opacity=\"0\"\n [axis]=\"item.value\"\n [config]=\"data.config\"\n [size]=\"data.visibleRect\"\n [attr.x]=\"item.value.options.opposite ? 0 : -item.value.selfSize\"\n [attr.y]=\"0\"\n [attr.height]=\"data.visibleRect.height\"\n [attr.width]=\"item.value.selfSize\"\n [attr.transform]=\"getTranslate(item.value, data.size) | async\"></rect>\n }\n }\n </g>\n <g class=\"x-axis-container\">\n @for (item of data.scales.x | keyvalue; track item.value.index) {\n @if (item.value.options.visible && data.scales.x.size > 0 && data.scales.y.size > 0) {\n <g\n teta-x-axis\n [axis]=\"item.value\"\n [size]=\"data.visibleRect\"\n [attr.transform]=\"getTranslate(item.value, data.size) | async\"></g>\n <rect\n tetaZoomable\n fill-opacity=\"0\"\n [axis]=\"item.value\"\n [config]=\"data.config\"\n [size]=\"data.visibleRect\"\n [attr.x]=\"0\"\n [attr.y]=\"item.value.options.opposite ? -item.value.selfSize : 0\"\n [attr.width]=\"data.visibleRect.width\"\n [attr.height]=\"item.value.selfSize\"\n [attr.transform]=\"getTranslate(item.value, data.size) | async\"></rect>\n }\n }\n </g>\n </svg>\n }\n @if (data.size?.height > 0\n && data.size?.width > 0\n && data.visibleRect?.height > 0\n && data.visibleRect?.width > 0\n && data.scales?.x.size === data.config.xAxis.length\n && data.scales?.y.size === data.config.yAxis.length) {\n <svg\n tetaZoomable\n tetaBrushable\n class=\"position-absolute\"\n [size]=\"data.visibleRect\"\n [config]=\"data.config\"\n [axis]=\"data.config?.zoom?.type === zoomType.x ? data.scales.x.get(0) : data.scales.y.get(0)\"\n [attr.width]=\"data.visibleRect.width\"\n [attr.height]=\"data.visibleRect.height\"\n [attr.viewBox]=\"'0 0 ' + data.visibleRect.width + ' ' + data.visibleRect.height\"\n [style.transform]=\"'translate('+ data.visibleRect.x +'px, '+ data.visibleRect.y +'px)'\"\n (contextmenu)=\"contextMenu($event, data.scales.x, data.scales.y)\"\n (click)=\"click($event, data.scales.x, data.scales.y)\"\n (mouseleave)=\"mouseLeave($event)\"\n (mousemove)=\"mouseMove($event)\">\n @if (data.config.gridLines?.enable !== false) {\n <g class=\"gridlines\"\n teta-gridlines\n [size]=\"data.size\"></g>\n }\n <g class=\"x-axis-plotband-container\">\n @for (plotBand of data.plotBands; track plotBand) {\n <g teta-plot-band\n [plotBand]=\"plotBand.plotBand\"\n [scale]=\"plotBand.axis.scale\"\n [size]=\"data.visibleRect\"\n [axis]=\"plotBand.axis\"></g>\n }\n </g>\n <g class=\"series-container\">\n @for (series of data.config.series; track series; ) {\n @if (series.visible) {\n <g teta-series-host\n [config]=\"data.config\"\n [series]=\"series\"></g>\n }\n }\n </g>\n <g class=\"x-axis-plotline-container\">\n @for (axis of data.config.xAxis; let i = $index; track axis) {\n @for (plotLine of axis.plotLines; track plotLine) {\n <g teta-plot-line\n [plotLine]=\"plotLine\"\n [scale]=\"data.scales.x.get(i).scale\"\n [size]=\"data.size\"\n [axis]=\"data.scales.x.get(i)\"></g>\n }\n }\n </g>\n <g class=\"y-axis-plotline-container\">\n @for (axis of data.config.yAxis; let i = $index; track axis; ) {\n @for (plotLine of axis.plotLines; track plotLine) {\n <g teta-plot-line\n [plotLine]=\"plotLine\"\n [scale]=\"data.scales.y.get(i).scale\"\n [size]=\"data.size\"\n [axis]=\"data.scales.y.get(i)\"></g>\n }\n }\n </g>\n <g class=\"annotations\">\n @for (annotation of data.config.annotations; track annotation) {\n <g teta-annotation\n [visibleRect]=\"data.visibleRect\"\n [annotation]=\"annotation\"></g>\n }\n </g>\n @if (data.config.tooltip?.showCrosshair) {\n <g class=\"crosshair\">\n <g teta-crosshair [size]=\"data.visibleRect\"></g>\n </g>\n }\n </svg>\n }\n}\n", styles: [":host{display:flex;flex-direction:column;flex-grow:1;min-width:0;min-height:0}:host .zoomable:hover{cursor:grab}:host .zoomable:active{cursor:grabbing}:host .crosshair{cursor:crosshair}\n"], dependencies: [{ kind: "component", type: TooltipComponent, selector: "teta-tooltip", inputs: ["size", "config"] }, { kind: "directive", type: ZoomableDirective, selector: "[tetaZoomable]", inputs: ["config", "axis", "size"] }, { kind: "component", type: XAxisComponent, selector: "[teta-x-axis]", inputs: ["axis", "size"] }, { kind: "component", type: YAxisComponent, selector: "[teta-y-axis]", inputs: ["axis", "size"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: KeyValuePipe, name: "keyvalue" }, { kind: "component", type: PlotBandComponent, selector: "[teta-plot-band]", inputs: ["plotBand", "axis", "scale", "size"] }, { kind: "component", type: GridlinesComponent, selector: "[teta-gridlines]", inputs: ["size"] }, { kind: "component", type: SeriesHostComponent, selector: "[teta-series-host]", inputs: ["config", "series"] }, { kind: "component", type: PlotlineComponent, selector: "[teta-plot-line]", inputs: ["plotLine", "size", "axis", "scale"] }, { kind: "component", type: AnnotationComponent, selector: "[teta-annotation]", inputs: ["visibleRect", "annotation"] }, { kind: "component", type: CrosshairComponent, selector: "[teta-crosshair]", inputs: ["size"] }, { kind: "directive", type: BrushableDirective, selector: "[tetaBrushable]", inputs: ["config", "axis"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
197
197
|
}
|
|
198
198
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.1", ngImport: i0, type: ChartContainerComponent, decorators: [{
|
|
199
199
|
type: Component,
|
|
@@ -211,6 +211,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.1", ngImpor
|
|
|
211
211
|
AnnotationComponent,
|
|
212
212
|
CrosshairComponent,
|
|
213
213
|
BrushableDirective,
|
|
214
|
-
], template: "@if ({\n size: size | async,\n config: config | async,\n scales: scales | async,\n plotBands: plotBands | async,\n visibleRect: visibleRect | async\n}; as data) {\n @if (data.config?.tooltip?.enable) {\n <teta-tooltip [size]=\"data.size\"\n [config]=\"data.config\"></teta-tooltip>\n }\n @if (data.size?.height > 0\n && data.size?.width > 0\n && data.visibleRect?.height > 0\n && data.visibleRect?.width > 0\n && data.scales?.x.size === data.config.xAxis.length\n && data.scales?.y.size === data.config.yAxis.length) {\n <svg height=\"100%\" width=\"100%\" class=\"position-absolute\">\n <g class=\"y-axis-container\">\n @for (item of data.scales.y | keyvalue; track item.value.index) {\n @if (item.value.selfSize > 0\n && item.value.options.visible\n && data.scales.x.size > 0\n && data.scales.y.size > 0) {\n <g\n teta-y-axis\n [axis]=\"item.value\"\n [size]=\"data.visibleRect\"\n [attr.transform]=\"getTranslate(item.value, data.size) | async\"></g>\n <rect\n tetaZoomable\n fill-opacity=\"0\"\n [axis]=\"item.value\"\n [config]=\"data.config\"\n [size]=\"data.visibleRect\"\n [attr.x]=\"item.value.options.opposite ? 0 : -item.value.selfSize\"\n [attr.y]=\"0\"\n [attr.height]=\"data.visibleRect.height\"\n [attr.width]=\"item.value.selfSize\"\n [attr.transform]=\"getTranslate(item.value, data.size) | async\"></rect>\n }\n }\n </g>\n <g class=\"x-axis-container\">\n @for (item of data.scales.x | keyvalue; track item.value.index) {\n @if (item.value.options.visible && data.scales.x.size > 0 && data.scales.y.size > 0) {\n <g\n teta-x-axis\n [axis]=\"item.value\"\n [size]=\"data.visibleRect\"\n [attr.transform]=\"getTranslate(item.value, data.size) | async\"></g>\n <rect\n tetaZoomable\n fill-opacity=\"0\"\n [axis]=\"item.value\"\n [config]=\"data.config\"\n [size]=\"data.visibleRect\"\n [attr.x]=\"0\"\n [attr.y]=\"item.value.options.opposite ? -item.value.selfSize : 0\"\n [attr.width]=\"data.visibleRect.width\"\n [attr.height]=\"item.value.selfSize\"\n [attr.transform]=\"getTranslate(item.value, data.size) | async\"></rect>\n }\n }\n </g>\n </svg>\n }\n @if (data.size?.height > 0\n && data.size?.width > 0\n && data.visibleRect?.height > 0\n && data.visibleRect?.width > 0\n && data.scales?.x.size === data.config.xAxis.length\n && data.scales?.y.size === data.config.yAxis.length) {\n <svg\n tetaZoomable\n tetaBrushable\n class=\"position-absolute\"\n [size]=\"data.visibleRect\"\n [config]=\"data.config\"\n [axis]=\"data.config?.zoom?.type === zoomType.x ? data.scales.x.get(0) : data.scales.y.get(0)\"\n [attr.width]=\"data.visibleRect.width\"\n [attr.height]=\"data.visibleRect.height\"\n [attr.viewBox]=\"'0 0 ' + data.visibleRect.width + ' ' + data.visibleRect.height\"\n [style.transform]=\"'translate('+ data.visibleRect.x +'px, '+ data.visibleRect.y +'px)'\"\n (contextmenu)=\"contextMenu($event, data.scales.x, data.scales.y)\"\n (click)=\"click($event, data.scales.x, data.scales.y)\"\n (mouseleave)=\"mouseLeave($event)\"\n (mousemove)=\"mouseMove($event)\">\n @if (data.config.gridLines?.enable !== false) {\n <g class=\"gridlines\"\n teta-gridlines\n [size]=\"data.size\"></g>\n }\n <g class=\"x-axis-plotband-container\">\n @for (plotBand of data.plotBands; track
|
|
214
|
+
], template: "@if ({\n size: size | async,\n config: config | async,\n scales: scales | async,\n plotBands: plotBands | async,\n visibleRect: visibleRect | async\n}; as data) {\n @if (data.config?.tooltip?.enable) {\n <teta-tooltip [size]=\"data.size\"\n [config]=\"data.config\"></teta-tooltip>\n }\n @if (data.size?.height > 0\n && data.size?.width > 0\n && data.visibleRect?.height > 0\n && data.visibleRect?.width > 0\n && data.scales?.x.size === data.config.xAxis.length\n && data.scales?.y.size === data.config.yAxis.length) {\n <svg height=\"100%\" width=\"100%\" class=\"position-absolute\">\n <g class=\"y-axis-container\">\n @for (item of data.scales.y | keyvalue; track item.value.index) {\n @if (item.value.selfSize > 0\n && item.value.options.visible\n && data.scales.x.size > 0\n && data.scales.y.size > 0) {\n <g\n teta-y-axis\n [axis]=\"item.value\"\n [size]=\"data.visibleRect\"\n [attr.transform]=\"getTranslate(item.value, data.size) | async\"></g>\n <rect\n tetaZoomable\n fill-opacity=\"0\"\n [axis]=\"item.value\"\n [config]=\"data.config\"\n [size]=\"data.visibleRect\"\n [attr.x]=\"item.value.options.opposite ? 0 : -item.value.selfSize\"\n [attr.y]=\"0\"\n [attr.height]=\"data.visibleRect.height\"\n [attr.width]=\"item.value.selfSize\"\n [attr.transform]=\"getTranslate(item.value, data.size) | async\"></rect>\n }\n }\n </g>\n <g class=\"x-axis-container\">\n @for (item of data.scales.x | keyvalue; track item.value.index) {\n @if (item.value.options.visible && data.scales.x.size > 0 && data.scales.y.size > 0) {\n <g\n teta-x-axis\n [axis]=\"item.value\"\n [size]=\"data.visibleRect\"\n [attr.transform]=\"getTranslate(item.value, data.size) | async\"></g>\n <rect\n tetaZoomable\n fill-opacity=\"0\"\n [axis]=\"item.value\"\n [config]=\"data.config\"\n [size]=\"data.visibleRect\"\n [attr.x]=\"0\"\n [attr.y]=\"item.value.options.opposite ? -item.value.selfSize : 0\"\n [attr.width]=\"data.visibleRect.width\"\n [attr.height]=\"item.value.selfSize\"\n [attr.transform]=\"getTranslate(item.value, data.size) | async\"></rect>\n }\n }\n </g>\n </svg>\n }\n @if (data.size?.height > 0\n && data.size?.width > 0\n && data.visibleRect?.height > 0\n && data.visibleRect?.width > 0\n && data.scales?.x.size === data.config.xAxis.length\n && data.scales?.y.size === data.config.yAxis.length) {\n <svg\n tetaZoomable\n tetaBrushable\n class=\"position-absolute\"\n [size]=\"data.visibleRect\"\n [config]=\"data.config\"\n [axis]=\"data.config?.zoom?.type === zoomType.x ? data.scales.x.get(0) : data.scales.y.get(0)\"\n [attr.width]=\"data.visibleRect.width\"\n [attr.height]=\"data.visibleRect.height\"\n [attr.viewBox]=\"'0 0 ' + data.visibleRect.width + ' ' + data.visibleRect.height\"\n [style.transform]=\"'translate('+ data.visibleRect.x +'px, '+ data.visibleRect.y +'px)'\"\n (contextmenu)=\"contextMenu($event, data.scales.x, data.scales.y)\"\n (click)=\"click($event, data.scales.x, data.scales.y)\"\n (mouseleave)=\"mouseLeave($event)\"\n (mousemove)=\"mouseMove($event)\">\n @if (data.config.gridLines?.enable !== false) {\n <g class=\"gridlines\"\n teta-gridlines\n [size]=\"data.size\"></g>\n }\n <g class=\"x-axis-plotband-container\">\n @for (plotBand of data.plotBands; track plotBand) {\n <g teta-plot-band\n [plotBand]=\"plotBand.plotBand\"\n [scale]=\"plotBand.axis.scale\"\n [size]=\"data.visibleRect\"\n [axis]=\"plotBand.axis\"></g>\n }\n </g>\n <g class=\"series-container\">\n @for (series of data.config.series; track series; ) {\n @if (series.visible) {\n <g teta-series-host\n [config]=\"data.config\"\n [series]=\"series\"></g>\n }\n }\n </g>\n <g class=\"x-axis-plotline-container\">\n @for (axis of data.config.xAxis; let i = $index; track axis) {\n @for (plotLine of axis.plotLines; track plotLine) {\n <g teta-plot-line\n [plotLine]=\"plotLine\"\n [scale]=\"data.scales.x.get(i).scale\"\n [size]=\"data.size\"\n [axis]=\"data.scales.x.get(i)\"></g>\n }\n }\n </g>\n <g class=\"y-axis-plotline-container\">\n @for (axis of data.config.yAxis; let i = $index; track axis; ) {\n @for (plotLine of axis.plotLines; track plotLine) {\n <g teta-plot-line\n [plotLine]=\"plotLine\"\n [scale]=\"data.scales.y.get(i).scale\"\n [size]=\"data.size\"\n [axis]=\"data.scales.y.get(i)\"></g>\n }\n }\n </g>\n <g class=\"annotations\">\n @for (annotation of data.config.annotations; track annotation) {\n <g teta-annotation\n [visibleRect]=\"data.visibleRect\"\n [annotation]=\"annotation\"></g>\n }\n </g>\n @if (data.config.tooltip?.showCrosshair) {\n <g class=\"crosshair\">\n <g teta-crosshair [size]=\"data.visibleRect\"></g>\n </g>\n }\n </svg>\n }\n}\n", styles: [":host{display:flex;flex-direction:column;flex-grow:1;min-width:0;min-height:0}:host .zoomable:hover{cursor:grab}:host .zoomable:active{cursor:grabbing}:host .crosshair{cursor:crosshair}\n"] }]
|
|
215
215
|
}], ctorParameters: () => [{ type: i1.ChartService }, { type: i2.ScaleService }, { type: i0.ElementRef }, { type: i0.NgZone }] });
|
|
216
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQtY29udGFpbmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jaGFydC9jaGFydC1jb250YWluZXIvY2hhcnQtY29udGFpbmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy9jaGFydC9jaGFydC1jb250YWluZXIvY2hhcnQtY29udGFpbmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFVBQVUsRUFDVixNQUFNLEdBRVAsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixhQUFhLEVBQ2IsR0FBRyxFQUVILFNBQVMsRUFDVCxXQUFXLEVBQ1gsY0FBYyxHQUNmLE1BQU0sTUFBTSxDQUFDO0FBSWQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFLbkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDckUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFD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QUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxVQUFVLENBQUMsS0FBSztRQUNkLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxVQUFVLENBQUMsS0FBSyxFQUFFLElBQXVCO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUMvQyxDQUFDOzhHQXpRVSx1QkFBdUI7a0dBQXZCLHVCQUF1QixnRkN0RXBDLDJsTEFvSkEscVBEN0ZJLGdCQUFnQixxRkFDaEIsaUJBQWlCLCtGQUNqQixjQUFjLG9GQUNkLGNBQWMsK0VBQ2QsU0FBUyx5Q0FDVCxZQUFZLGlEQUNaLGlCQUFpQiw0R0FDakIsa0JBQWtCLCtFQUNsQixtQkFBbUIsNkZBQ25CLGlCQUFpQiw0R0FDakIsbUJBQW1CLHFHQUNuQixrQkFBa0IsK0VBQ2xCLGtCQUFrQjs7MkZBR1QsdUJBQXVCO2tCQXRCbkMsU0FBUzsrQkFDRSxzQkFBc0IsY0FHcEIsSUFBSSxtQkFDQyx1QkFBdUIsQ0FBQyxNQUFNLFdBQ3RDO3dCQUNQLGdCQUFnQjt3QkFDaEIsaUJBQWlCO3dCQUNqQixjQUFjO3dCQUNkLGNBQWM7d0JBQ2QsU0FBUzt3QkFDVCxZQUFZO3dCQUNaLGlCQUFpQjt3QkFDakIsa0JBQWtCO3dCQUNsQixtQkFBbUI7d0JBQ25CLGlCQUFpQjt3QkFDakIsbUJBQW1CO3dCQUNuQixrQkFBa0I7d0JBQ2xCLGtCQUFrQjtxQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBOZ1pvbmUsXG4gIE9uRGVzdHJveSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBhbmltYXRpb25GcmFtZVNjaGVkdWxlcixcbiAgY29tYmluZUxhdGVzdCxcbiAgbWFwLFxuICBPYnNlcnZhYmxlLFxuICBvYnNlcnZlT24sXG4gIHNoYXJlUmVwbGF5LFxuICB3aXRoTGF0ZXN0RnJvbSxcbn0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEF4aXMgfSBmcm9tICcuLi9jb3JlL2F4aXMvYXhpcyc7XG5pbXBvcnQgeyBCYXNlUG9pbnQgfSBmcm9tICcuLi9tb2RlbC9iYXNlLXBvaW50JztcbmltcG9ydCB7IEF4aXNPcmllbnRhdGlvbiB9IGZyb20gJy4uL21vZGVsL2VudW0vYXhpcy1vcmllbnRhdGlvbic7XG5pbXBvcnQgeyBCcnVzaFR5cGUgfSBmcm9tICcuLi9tb2RlbC9lbnVtL2JydXNoLXR5cGUnO1xuaW1wb3J0IHsgWm9vbVR5cGUgfSBmcm9tICcuLi9tb2RlbC9lbnVtL3pvb20tdHlwZSc7XG5pbXBvcnQgeyBJQ2hhcnRDb25maWcgfSBmcm9tICcuLi9tb2RlbC9pLWNoYXJ0LWNvbmZpZyc7XG5pbXBvcnQgeyBJU2NhbGVzTWFwIH0gZnJvbSAnLi4vbW9kZWwvaS1zY2FsZXMtbWFwJztcbmltcG9ydCB7IFBsb3RCYW5kIH0gZnJvbSAnLi4vbW9kZWwvcGxvdC1iYW5kJztcbmltcG9ydCB7IFNlcmllcyB9IGZyb20gJy4uL21vZGVsL3Nlcmllcyc7XG5pbXBvcnQgeyBDaGFydFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlL2NoYXJ0LnNlcnZpY2UnO1xuaW1wb3J0IHsgU2NhbGVTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZS9zY2FsZS5zZXJ2aWNlJztcbmltcG9ydCB7IFRvb2x0aXBDb21wb25lbnQgfSBmcm9tICcuL3Rvb2x0aXAvdG9vbHRpcC5jb21wb25lbnQnO1xuaW1wb3J0IHsgWEF4aXNDb21wb25lbnQgfSBmcm9tICcuL3gtYXhpcy94LWF4aXMuY29tcG9uZW50JztcbmltcG9ydCB7IFpvb21hYmxlRGlyZWN0aXZlIH0gZnJvbSAnLi4vZGlyZWN0aXZlcy96b29tYWJsZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgWUF4aXNDb21wb25lbnQgfSBmcm9tICcuL3ktYXhpcy95LWF4aXMuY29tcG9uZW50JztcbmltcG9ydCB7IEFzeW5jUGlwZSwgS2V5VmFsdWVQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFBsb3RCYW5kQ29tcG9uZW50IH0gZnJvbSAnLi9wbG90YmFuZC9wbG90LWJhbmQuY29tcG9uZW50JztcbmltcG9ydCB7IEdyaWRsaW5lc0NvbXBvbmVudCB9IGZyb20gJy4vZ3JpZGxpbmVzL2dyaWRsaW5lcy5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2VyaWVzSG9zdENvbXBvbmVudCB9IGZyb20gJy4vc2VyaWVzLWhvc3Qvc2VyaWVzLWhvc3QuY29tcG9uZW50JztcbmltcG9ydCB7IFBsb3RsaW5lQ29tcG9uZW50IH0gZnJvbSAnLi9wbG90bGluZS9wbG90bGluZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQW5ub3RhdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vYW5ub3RhdGlvbi9hbm5vdGF0aW9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDcm9zc2hhaXJDb21wb25lbnQgfSBmcm9tICcuL2Nyb3NzaGFpci9jcm9zc2hhaXIuY29tcG9uZW50JztcbmltcG9ydCB7IEJydXNoYWJsZURpcmVjdGl2ZSB9IGZyb20gJy4uL2RpcmVjdGl2ZXMvYnJ1c2hhYmxlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyB0ZXRhWm9uZUZ1bGwgfSBmcm9tICcuLi8uLi9vYnNlcnZhYmxlL3pvbmVPYnNlcnZhYmxlJztcblxudHlwZSBPcHBvc2l0ZSA9IGJvb2xlYW47XG50eXBlIERpc3BsYXlQbG90QmFuZCA9IHtcbiAgYXhpczogQXhpcztcbiAgcGxvdEJhbmQ6IFBsb3RCYW5kO1xufTtcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RldGEtY2hhcnQtY29udGFpbmVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NoYXJ0LWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NoYXJ0LWNvbnRhaW5lci5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW1xuICAgIFRvb2x0aXBDb21wb25lbnQsXG4gICAgWm9vbWFibGVEaXJlY3RpdmUsXG4gICAgWEF4aXNDb21wb25lbnQsXG4gICAgWUF4aXNDb21wb25lbnQsXG4gICAgQXN5bmNQaXBlLFxuICAgIEtleVZhbHVlUGlwZSxcbiAgICBQbG90QmFuZENvbXBvbmVudCxcbiAgICBHcmlkbGluZXNDb21wb25lbnQsXG4gICAgU2VyaWVzSG9zdENvbXBvbmVudCxcbiAgICBQbG90bGluZUNvbXBvbmVudCxcbiAgICBBbm5vdGF0aW9uQ29tcG9uZW50LFxuICAgIENyb3NzaGFpckNvbXBvbmVudCxcbiAgICBCcnVzaGFibGVEaXJlY3RpdmUsXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgQ2hhcnRDb250YWluZXJDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICBjb25maWc6IE9ic2VydmFibGU8SUNoYXJ0Q29uZmlnPjtcbiAgc2NhbGVzOiBPYnNlcnZhYmxlPElTY2FsZXNNYXA+O1xuICBzaXplOiBPYnNlcnZhYmxlPERPTVJlY3Q+O1xuICB2aXNpYmxlUmVjdDogT2JzZXJ2YWJsZTxhbnk+O1xuICBicnVzaFNjYWxlOiBPYnNlcnZhYmxlPGFueT47XG4gIHpvb21UeXBlID0gWm9vbVR5cGU7XG4gIHBsb3RCYW5kczogT2JzZXJ2YWJsZTxEaXNwbGF5UGxvdEJhbmRbXT47XG5cbiAgcHJpdmF0ZSBfb2JzZXJ2ZXI6IFJlc2l6ZU9ic2VydmVyO1xuICBwcml2YXRlIGZpbHRlclBvc2l0aW9uTWFwID0gbmV3IE1hcDxcbiAgICBPcHBvc2l0ZSxcbiAgICAoYXhpczogQXhpcykgPT4gKF86IEF4aXMpID0+IGJvb2xlYW5cbiAgPigpXG4gICAgLnNldChcbiAgICAgIHRydWUsXG4gICAgICBheGlzID0+IChfOiBBeGlzKSA9PlxuICAgICAgICBfLm9wdGlvbnMub3Bwb3NpdGUgJiYgXy5vcHRpb25zLnZpc2libGUgJiYgYXhpcy5pbmRleCA8PSBfLmluZGV4XG4gICAgKVxuICAgIC5zZXQoXG4gICAgICBmYWxzZSxcbiAgICAgIGF4aXMgPT4gKF86IEF4aXMpID0+XG4gICAgICAgIF8ub3B0aW9ucy5vcHBvc2l0ZSAhPT0gdHJ1ZSAmJlxuICAgICAgICBfLm9wdGlvbnMudmlzaWJsZSAmJlxuICAgICAgICBfLmluZGV4IDw9IGF4aXMuaW5kZXhcbiAgICApO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX3N2YzogQ2hhcnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgX3NjYWxlU2VydmljZTogU2NhbGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSBfem9uZTogTmdab25lXG4gICkge1xuICAgIHRoaXMuY29uZmlnID0gdGhpcy5fc3ZjLmNvbmZpZztcbiAgICB0aGlzLnNpemUgPSB0aGlzLl9zdmMuc2l6ZTtcblxuICAgIHRoaXMuc2NhbGVzID0gdGhpcy5fc2NhbGVTZXJ2aWNlLnNjYWxlcy5waXBlKFxuICAgICAgb2JzZXJ2ZU9uKGFuaW1hdGlvbkZyYW1lU2NoZWR1bGVyKSxcbiAgICAgIHRldGFab25lRnVsbCh0aGlzLl96b25lKSxcbiAgICAgIHNoYXJlUmVwbGF5KHtcbiAgICAgICAgYnVmZmVyU2l6ZTogMSxcbiAgICAgICAgcmVmQ291bnQ6IHRydWUsXG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLnBsb3RCYW5kcyA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuY29uZmlnLCB0aGlzLnNjYWxlc10pLnBpcGUoXG4gICAgICBtYXAoKFtjb25maWcsIHNjYWxlc10pID0+IHtcbiAgICAgICAgY29uc3QgYmFuZHM6IERpc3BsYXlQbG90QmFuZFtdID0gW107XG4gICAgICAgIGNvbmZpZy54QXhpcz8uZm9yRWFjaCgoYXhpcywgaW5kZXgpID0+IHtcbiAgICAgICAgICBheGlzLnBsb3RCYW5kcz8uZm9yRWFjaChiYW5kID0+IHtcbiAgICAgICAgICAgIGJhbmRzLnB1c2goe1xuICAgICAgICAgICAgICBwbG90QmFuZDogYmFuZCxcbiAgICAgICAgICAgICAgYXhpczogc2NhbGVzLnguZ2V0KGluZGV4KSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgY29uZmlnLnlBeGlzPy5mb3JFYWNoKChheGlzLCBpbmRleCkgPT4ge1xuICAgICAgICAgIGF4aXMucGxvdEJhbmRzPy5mb3JFYWNoKGJhbmQgPT4ge1xuICAgICAgICAgICAgYmFuZHMucHVzaCh7XG4gICAgICAgICAgICAgIHBsb3RCYW5kOiBiYW5kLFxuICAgICAgICAgICAgICBheGlzOiBzY2FsZXMueS5nZXQoaW5kZXgpLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBiYW5kcy5zb3J0KChhLCBiKSA9PiBhLnBsb3RCYW5kLm9yZGVyIC0gYi5wbG90QmFuZC5vcmRlcik7XG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLmJydXNoU2NhbGUgPSB0aGlzLl9zY2FsZVNlcnZpY2Uuc2NhbGVzLnBpcGUoXG4gICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLmNvbmZpZyksXG4gICAgICBtYXAoKGRhdGE6IFtJU2NhbGVzTWFwLCBJQ2hhcnRDb25maWddKSA9PiB7XG4gICAgICAgIGNvbnN0IFt7IHgsIHkgfSwgY29uZmlnXSA9IGRhdGE7XG5cbiAgICAgICAgcmV0dXJuIGNvbmZpZy5icnVzaD8udHlwZSA9PT0gQnJ1c2hUeXBlLnggfHxcbiAgICAgICAgICBjb25maWc/Lnpvb20/LnR5cGUgPT09IFpvb21UeXBlLnhcbiAgICAgICAgICA/IHguZ2V0KDApPy5zY2FsZVxuICAgICAgICAgIDogeS5nZXQoMCk/LnNjYWxlO1xuICAgICAgfSksXG4gICAgICBzaGFyZVJlcGxheSh7XG4gICAgICAgIGJ1ZmZlclNpemU6IDEsXG4gICAgICAgIHJlZkNvdW50OiB0cnVlLFxuICAgICAgfSlcbiAgICApO1xuXG4gICAgdGhpcy52aXNpYmxlUmVjdCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5zaXplLFxuICAgICAgdGhpcy5zY2FsZXMsXG4gICAgICB0aGlzLmNvbmZpZyxcbiAgICBdKS5waXBlKFxuICAgICAgbWFwKChkYXRhOiBbRE9NUmVjdCwgSVNjYWxlc01hcCwgSUNoYXJ0Q29uZmlnXSkgPT4ge1xuICAgICAgICBjb25zdCBbc2l6ZSwgeyB4LCB5IH0sIGNvbmZpZ10gPSBkYXRhO1xuICAgICAgICBjb25zdCB5QXhlc0FycmF5ID0gQXJyYXkuZnJvbSh5LnZhbHVlcygpKTtcbiAgICAgICAgY29uc3QgeEF4ZXNBcnJheSA9IEFycmF5LmZyb20oeC52YWx1ZXMoKSk7XG4gICAgICAgIGNvbnN0IGxlZnQgPSB5QXhlc0FycmF5XG4gICAgICAgICAgLmZpbHRlcihfID0+IF8ub3B0aW9ucy5vcHBvc2l0ZSAhPT0gdHJ1ZSAmJiBfLm9wdGlvbnMudmlzaWJsZSlcbiAgICAgICAgICAucmVkdWNlKHRoaXMuc3VtU2l6ZSwgMCk7XG5cbiAgICAgICAgY29uc3QgcmlnaHQgPSB5QXhlc0FycmF5XG4gICAgICAgICAgLmZpbHRlcihfID0+IF8ub3B0aW9ucy5vcHBvc2l0ZSAmJiBfLm9wdGlvbnMudmlzaWJsZSlcbiAgICAgICAgICAucmVkdWNlKHRoaXMuc3VtU2l6ZSwgMCk7XG5cbiAgICAgICAgY29uc3QgYm90dG9tID0geEF4ZXNBcnJheVxuICAgICAgICAgIC5maWx0ZXIoXyA9PiBfLm9wdGlvbnMub3Bwb3NpdGUgIT09IHRydWUgJiYgXy5vcHRpb25zLnZpc2libGUpXG4gICAgICAgICAgLnJlZHVjZSh0aGlzLnN1bVNpemUsIDApO1xuXG4gICAgICAgIGNvbnN0IHRvcCA9IHhBeGVzQXJyYXlcbiAgICAgICAgICAuZmlsdGVyKF8gPT4gXy5vcHRpb25zLm9wcG9zaXRlICYmIF8ub3B0aW9ucy52aXNpYmxlKVxuICAgICAgICAgIC5yZWR1Y2UodGhpcy5zdW1TaXplLCAwKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB4OiBsZWZ0ICsgY29uZmlnLmJvdW5kcz8ubGVmdCxcbiAgICAgICAgICB5OiB0b3AgKyBjb25maWcuYm91bmRzPy50b3AsXG4gICAgICAgICAgd2lkdGg6XG4gICAgICAgICAgICBzaXplLndpZHRoIC1cbiAgICAgICAgICAgIGxlZnQgLVxuICAgICAgICAgICAgcmlnaHQgLVxuICAgICAgICAgICAgY29uZmlnLmJvdW5kcz8ubGVmdCAtXG4gICAgICAgICAgICBjb25maWcuYm91bmRzPy5yaWdodCxcbiAgICAgICAgICBoZWlnaHQ6XG4gICAgICAgICAgICBzaXplLmhlaWdodCAtXG4gICAgICAgICAgICB0b3AgLVxuICAgICAgICAgICAgYm90dG9tIC1cbiAgICAgICAgICAgIGNvbmZpZy5ib3VuZHM/LnRvcCAtXG4gICAgICAgICAgICBjb25maWcuYm91bmRzPy5ib3R0b20sXG4gICAgICAgIH07XG4gICAgICB9KSxcbiAgICAgIHRldGFab25lRnVsbCh0aGlzLl96b25lKSxcbiAgICAgIHNoYXJlUmVwbGF5KHtcbiAgICAgICAgYnVmZmVyU2l6ZTogMSxcbiAgICAgICAgcmVmQ291bnQ6IHRydWUsXG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5fb2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoKGVudHJpZXM6IFJlc2l6ZU9ic2VydmVyRW50cnlbXSkgPT4ge1xuICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICFBcnJheS5pc0FycmF5KGVudHJpZXMpIHx8XG4gICAgICAgICAgIWVudHJpZXMubGVuZ3RoIHx8XG4gICAgICAgICAgZW50cmllc1swXS5jb250ZW50UmVjdC53aWR0aCA8PSAwIHx8XG4gICAgICAgICAgZW50cmllc1swXS5jb250ZW50UmVjdC5oZWlnaHQgPD0gMFxuICAgICAgICApIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fc3ZjLnNldFNpemUoZW50cmllc1swXS5jb250ZW50UmVjdCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICB0aGlzLl9vYnNlcnZlci5vYnNlcnZlKHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9vYnNlcnZlci51bm9ic2VydmUodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcbiAgICB0aGlzLl9vYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gIH1cblxuICBwcml2YXRlIHN1bVNpemUgPSAoYWNjLCBjdXJyKSA9PiBhY2MgKyBjdXJyLnNlbGZTaXplO1xuXG4gIGdldFRyYW5zbGF0ZShheGlzPzogQXhpcywgc2l6ZT86IERPTVJlY3QpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLnNjYWxlcy5waXBlKFxuICAgICAgd2l0aExhdGVzdEZyb20odGhpcy5jb25maWcpLFxuICAgICAgbWFwKChkYXRhOiBbSVNjYWxlc01hcCwgSUNoYXJ0Q29uZmlnXSkgPT4ge1xuICAgICAgICBjb25zdCBbeyB4LCB5IH0sIGNvbmZpZ10gPSBkYXRhO1xuICAgICAgICBjb25zdCB4QXhlc0FycmF5ID0gQXJyYXkuZnJvbSh4LnZhbHVlcygpKTtcbiAgICAgICAgY29uc3QgeUF4ZXNBcnJheSA9IEFycmF5LmZyb20oeS52YWx1ZXMoKSk7XG5cbiAgICAgICAgY29uc3Qgb3Bwb3NpdGVGaWx0ZXIgPSB0aGlzLmZpbHRlclBvc2l0aW9uTWFwLmdldCh0cnVlKTtcbiAgICAgICAgY29uc3Qgbm9uT3Bwb3NpdGVGaWx0ZXIgPSB0aGlzLmZpbHRlclBvc2l0aW9uTWFwLmdldChmYWxzZSk7XG5cbiAgICAgICAgY29uc3Qgb3Bwb3NpdGVPZmZzZXRZID0geUF4ZXNBcnJheS5maWx0ZXIob3Bwb3NpdGVGaWx0ZXIoYXhpcykpO1xuICAgICAgICBjb25zdCBub25PcHBvc2l0ZU9mZnNldFkgPSB5QXhlc0FycmF5LmZpbHRlcihub25PcHBvc2l0ZUZpbHRlcihheGlzKSk7XG5cbiAgICAgICAgY29uc3Qgb3Bwb3NpdGVPZmZzZXRYID0geEF4ZXNBcnJheS5maWx0ZXIob3Bwb3NpdGVGaWx0ZXIoYXhpcykpO1xuICAgICAgICBjb25zdCBub25PcHBvc2l0ZU9mZnNldFggPSB4QXhlc0FycmF5LmZpbHRlcihub25PcHBvc2l0ZUZpbHRlcihheGlzKSk7XG5cbiAgICAgICAgY29uc3Qgb3Bwb3NpdGVUcmFuc2xhdGVZID0gb3Bwb3NpdGVPZmZzZXRZLnJlZHVjZShcbiAgICAgICAgICAoYWNjLCBjdXJyKSA9PiBhY2MgKyBjdXJyLnNlbGZTaXplLFxuICAgICAgICAgIGNvbmZpZy5ib3VuZHM/LnJpZ2h0XG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IG5vbk9wcGlzdGVUcmFuc2xhdGVZID0gbm9uT3Bwb3NpdGVPZmZzZXRZLnJlZHVjZShcbiAgICAgICAgICAoYWNjLCBjdXJyKSA9PiBhY2MgKyBjdXJyLnNlbGZTaXplLFxuICAgICAgICAgIGNvbmZpZy5ib3VuZHM/LmxlZnRcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCBvcHBvc2l0ZVRyYW5zbGF0ZVggPSBvcHBvc2l0ZU9mZnNldFgucmVkdWNlKFxuICAgICAgICAgIChhY2MsIGN1cnIpID0+IGFjYyArIGN1cnIuc2VsZlNpemUsXG4gICAgICAgICAgY29uZmlnLmJvdW5kcz8udG9wXG4gICAgICAgICk7XG5cbiAgICAgICAgY29uc3Qgbm9uT3BwaXN0ZVRyYW5zbGF0ZVggPSBub25PcHBvc2l0ZU9mZnNldFgucmVkdWNlKFxuICAgICAgICAgIChhY2MsIGN1cnIpID0+IGFjYyArIGN1cnIuc2VsZlNpemUsXG4gICAgICAgICAgY29uZmlnLmJvdW5kcz8uYm90dG9tXG4gICAgICAgICk7XG5cbiAgICAgICAgY29uc3QgbGVmdCA9IHlBeGVzQXJyYXlcbiAgICAgICAgICAuZmlsdGVyKF8gPT4gXy5vcHRpb25zLnZpc2libGUgJiYgXy5vcHRpb25zLm9wcG9zaXRlICE9PSB0cnVlKVxuICAgICAgICAgIC5yZWR1Y2UoKGFjYywgY3VycikgPT4gYWNjICsgY3Vyci5zZWxmU2l6ZSwgY29uZmlnLmJvdW5kcz8ubGVmdCk7XG5cbiAgICAgICAgY29uc3QgdG9wID0geEF4ZXNBcnJheVxuICAgICAgICAgIC5maWx0ZXIoXyA9PiBfLm9wdGlvbnMudmlzaWJsZSAmJiBfLm9wdGlvbnMub3Bwb3NpdGUgPT09IHRydWUpXG4gICAgICAgICAgLnJlZHVjZSgoYWNjLCBjdXJyKSA9PiBhY2MgKyBjdXJyLnNlbGZTaXplLCBjb25maWcuYm91bmRzPy50b3ApO1xuXG4gICAgICAgIGlmIChheGlzLm9yaWVudGF0aW9uID09PSBBeGlzT3JpZW50YXRpb24ueCkge1xuICAgICAgICAgIHJldHVybiBgdHJhbnNsYXRlKCR7bGVmdH0sICR7XG4gICAgICAgICAgICBheGlzLm9wdGlvbnMub3Bwb3NpdGVcbiAgICAgICAgICAgICAgPyBvcHBvc2l0ZVRyYW5zbGF0ZVhcbiAgICAgICAgICAgICAgOiBzaXplLmhlaWdodCAtIG5vbk9wcGlzdGVUcmFuc2xhdGVYXG4gICAgICAgICAgfSlgO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGF4aXMub3JpZW50YXRpb24gPT09IEF4aXNPcmllbnRhdGlvbi55KSB7XG4gICAgICAgICAgcmV0dXJuIGB0cmFuc2xhdGUoJHtcbiAgICAgICAgICAgIGF4aXMub3B0aW9ucy5vcHBvc2l0ZVxuICAgICAgICAgICAgICA/IHNpemUud2lkdGggLSBvcHBvc2l0ZVRyYW5zbGF0ZVlcbiAgICAgICAgICAgICAgOiBub25PcHBpc3RlVHJhbnNsYXRlWVxuICAgICAgICAgIH0sICR7dG9wfSlgO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuICd0cmFuc2xhdGUoMCwgMCknO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgY2xpY2soXG4gICAgZXZlbnQ6IE1vdXNlRXZlbnQsXG4gICAgeFNjYWxlczogTWFwPG51bWJlciwgQXhpcz4sXG4gICAgeVNjYWxlczogTWFwPG51bWJlciwgQXhpcz5cbiAgKSB7XG4gICAgY29uc3QgeCA9IHhTY2FsZXMuZ2V0KDApPy5zY2FsZTtcbiAgICBjb25zdCB5ID0geVNjYWxlcy5nZXQoMCk/LnNjYWxlO1xuICAgIHRoaXMuX3N2Yy5lbWl0Q2hhcnRDbGljayh7XG4gICAgICBldmVudDogZXZlbnQsXG4gICAgICB0YXJnZXQ6IHtcbiAgICAgICAgeDogeC5pbnZlcnQoZXZlbnQub2Zmc2V0WCksXG4gICAgICAgIHk6IHkuaW52ZXJ0KGV2ZW50Lm9mZnNldFkpLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIGNvbnRleHRNZW51KFxuICAgIGV2ZW50OiBNb3VzZUV2ZW50LFxuICAgIHhTY2FsZXM6IE1hcDxudW1iZXIsIEF4aXM+LFxuICAgIHlTY2FsZXM6IE1hcDxudW1iZXIsIEF4aXM+XG4gICkge1xuICAgIGNvbnN0IHggPSB4U2NhbGVzLmdldCgwKT8uc2NhbGU7XG4gICAgY29uc3QgeSA9IHlTY2FsZXMuZ2V0KDApPy5zY2FsZTtcbiAgICB0aGlzLl9zdmMuZW1pdENoYXJ0Q29udGV4dE1lbnUoe1xuICAgICAgZXZlbnQ6IGV2ZW50LFxuICAgICAgdGFyZ2V0OiB7XG4gICAgICAgIHg6IHguaW52ZXJ0KGV2ZW50Lm9mZnNldFgpLFxuICAgICAgICB5OiB5LmludmVydChldmVudC5vZmZzZXRZKSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBtb3VzZU1vdmUoZXZlbnQpIHtcbiAgICB0aGlzLl9zdmMuc2V0UG9pbnRlck1vdmUoZXZlbnQpO1xuICB9XG5cbiAgbW91c2VMZWF2ZShldmVudCkge1xuICAgIHRoaXMuX3N2Yy5zZXRQb2ludGVyTW92ZShldmVudCk7XG4gIH1cblxuICB0cmFja1NlcmllKGluZGV4LCBpdGVtOiBTZXJpZXM8QmFzZVBvaW50Pikge1xuICAgIHJldHVybiBpdGVtLm5hbWU/Lmxlbmd0aCA/IGl0ZW0ubmFtZSA6IGluZGV4O1xuICB9XG59XG4iLCJAaWYgKHtcbiAgc2l6ZTogc2l6ZSB8IGFzeW5jLFxuICBjb25maWc6IGNvbmZpZyB8IGFzeW5jLFxuICBzY2FsZXM6IHNjYWxlcyB8IGFzeW5jLFxuICBwbG90QmFuZHM6IHBsb3RCYW5kcyB8IGFzeW5jLFxuICB2aXNpYmxlUmVjdDogdmlzaWJsZVJlY3QgfCBhc3luY1xufTsgYXMgZGF0YSkge1xuICBAaWYgKGRhdGEuY29uZmlnPy50b29sdGlwPy5lbmFibGUpIHtcbiAgICA8dGV0YS10b29sdGlwIFtzaXplXT1cImRhdGEuc2l6ZVwiXG4gICAgICAgICAgICAgICAgICBbY29uZmlnXT1cImRhdGEuY29uZmlnXCI+PC90ZXRhLXRvb2x0aXA+XG4gIH1cbiAgQGlmIChkYXRhLnNpemU/LmhlaWdodCA+IDBcbiAgJiYgZGF0YS5zaXplPy53aWR0aCA+IDBcbiAgJiYgZGF0YS52aXNpYmxlUmVjdD8uaGVpZ2h0ID4gMFxuICAmJiBkYXRhLnZpc2libGVSZWN0Py53aWR0aCA+IDBcbiAgJiYgZGF0YS5zY2FsZXM/Lnguc2l6ZSA9PT0gZGF0YS5jb25maWcueEF4aXMubGVuZ3RoXG4gICYmIGRhdGEuc2NhbGVzPy55LnNpemUgPT09IGRhdGEuY29uZmlnLnlBeGlzLmxlbmd0aCkge1xuICAgIDxzdmcgaGVpZ2h0PVwiMTAwJVwiIHdpZHRoPVwiMTAwJVwiIGNsYXNzPVwicG9zaXRpb24tYWJzb2x1dGVcIj5cbiAgICAgIDxnIGNsYXNzPVwieS1heGlzLWNvbnRhaW5lclwiPlxuICAgICAgICBAZm9yIChpdGVtIG9mIGRhdGEuc2NhbGVzLnkgfCBrZXl2YWx1ZTsgdHJhY2sgaXRlbS52YWx1ZS5pbmRleCkge1xuICAgICAgICAgIEBpZiAoaXRlbS52YWx1ZS5zZWxmU2l6ZSA+IDBcbiAgICAgICAgICAmJiBpdGVtLnZhbHVlLm9wdGlvbnMudmlzaWJsZVxuICAgICAgICAgICYmIGRhdGEuc2NhbGVzLnguc2l6ZSA+IDBcbiAgICAgICAgICAmJiBkYXRhLnNjYWxlcy55LnNpemUgPiAwKSB7XG4gICAgICAgICAgICA8Z1xuICAgICAgICAgICAgICB0ZXRhLXktYXhpc1xuICAgICAgICAgICAgICBbYXhpc109XCJpdGVtLnZhbHVlXCJcbiAgICAgICAgICAgICAgW3NpemVdPVwiZGF0YS52aXNpYmxlUmVjdFwiXG4gICAgICAgICAgICAgIFthdHRyLnRyYW5zZm9ybV09XCJnZXRUcmFuc2xhdGUoaXRlbS52YWx1ZSwgZGF0YS5zaXplKSB8IGFzeW5jXCI+PC9nPlxuICAgICAgICAgICAgPHJlY3RcbiAgICAgICAgICAgICAgdGV0YVpvb21hYmxlXG4gICAgICAgICAgICAgIGZpbGwtb3BhY2l0eT1cIjBcIlxuICAgICAgICAgICAgICBbYXhpc109XCJpdGVtLnZhbHVlXCJcbiAgICAgICAgICAgICAgW2NvbmZpZ109XCJkYXRhLmNvbmZpZ1wiXG4gICAgICAgICAgICAgIFtzaXplXT1cImRhdGEudmlzaWJsZVJlY3RcIlxuICAgICAgICAgICAgICBbYXR0ci54XT1cIml0ZW0udmFsdWUub3B0aW9ucy5vcHBvc2l0ZSA/IDAgOiAtaXRlbS52YWx1ZS5zZWxmU2l6ZVwiXG4gICAgICAgICAgICAgIFthdHRyLnldPVwiMFwiXG4gICAgICAgICAgICAgIFthdHRyLmhlaWdodF09XCJkYXRhLnZpc2libGVSZWN0LmhlaWdodFwiXG4gICAgICAgICAgICAgIFthdHRyLndpZHRoXT1cIml0ZW0udmFsdWUuc2VsZlNpemVcIlxuICAgICAgICAgICAgICBbYXR0ci50cmFuc2Zvcm1dPVwiZ2V0VHJhbnNsYXRlKGl0ZW0udmFsdWUsIGRhdGEuc2l6ZSkgfCBhc3luY1wiPjwvcmVjdD5cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIDwvZz5cbiAgICAgIDxnIGNsYXNzPVwieC1heGlzLWNvbnRhaW5lclwiPlxuICAgICAgICBAZm9yIChpdGVtIG9mIGRhdGEuc2NhbGVzLnggfCBrZXl2YWx1ZTsgdHJhY2sgaXRlbS52YWx1ZS5pbmRleCkge1xuICAgICAgICAgIEBpZiAoaXRlbS52YWx1ZS5vcHRpb25zLnZpc2libGUgJiYgZGF0YS5zY2FsZXMueC5zaXplID4gMCAmJiBkYXRhLnNjYWxlcy55LnNpemUgPiAwKSB7XG4gICAgICAgICAgICA8Z1xuICAgICAgICAgICAgICB0ZXRhLXgtYXhpc1xuICAgICAgICAgICAgICBbYXhpc109XCJpdGVtLnZhbHVlXCJcbiAgICAgICAgICAgICAgW3NpemVdPVwiZGF0YS52aXNpYmxlUmVjdFwiXG4gICAgICAgICAgICAgIFthdHRyLnRyYW5zZm9ybV09XCJnZXRUcmFuc2xhdGUoaXRlbS52YWx1ZSwgZGF0YS5zaXplKSB8IGFzeW5jXCI+PC9nPlxuICAgICAgICAgICAgPHJlY3RcbiAgICAgICAgICAgICAgdGV0YVpvb21hYmxlXG4gICAgICAgICAgICAgIGZpbGwtb3BhY2l0eT1cIjBcIlxuICAgICAgICAgICAgICBbYXhpc109XCJpdGVtLnZhbHVlXCJcbiAgICAgICAgICAgICAgW2NvbmZpZ109XCJkYXRhLmNvbmZpZ1wiXG4gICAgICAgICAgICAgIFtzaXplXT1cImRhdGEudmlzaWJsZVJlY3RcIlxuICAgICAgICAgICAgICBbYXR0ci54XT1cIjBcIlxuICAgICAgICAgICAgICBbYXR0ci55XT1cIml0ZW0udmFsdWUub3B0aW9ucy5vcHBvc2l0ZSA/IC1pdGVtLnZhbHVlLnNlbGZTaXplIDogMFwiXG4gICAgICAgICAgICAgIFthdHRyLndpZHRoXT1cImRhdGEudmlzaWJsZVJlY3Qud2lkdGhcIlxuICAgICAgICAgICAgICBbYXR0ci5oZWlnaHRdPVwiaXRlbS52YWx1ZS5zZWxmU2l6ZVwiXG4gICAgICAgICAgICAgIFthdHRyLnRyYW5zZm9ybV09XCJnZXRUcmFuc2xhdGUoaXRlbS52YWx1ZSwgZGF0YS5zaXplKSB8IGFzeW5jXCI+PC9yZWN0PlxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgPC9nPlxuICAgIDwvc3ZnPlxuICB9XG4gIEBpZiAoZGF0YS5zaXplPy5oZWlnaHQgPiAwXG4gICYmIGRhdGEuc2l6ZT8ud2lkdGggPiAwXG4gICYmIGRhdGEudmlzaWJsZVJlY3Q/LmhlaWdodCA+IDBcbiAgJiYgZGF0YS52aXNpYmxlUmVjdD8ud2lkdGggPiAwXG4gICYmIGRhdGEuc2NhbGVzPy54LnNpemUgPT09IGRhdGEuY29uZmlnLnhBeGlzLmxlbmd0aFxuICAmJiBkYXRhLnNjYWxlcz8ueS5zaXplID09PSBkYXRhLmNvbmZpZy55QXhpcy5sZW5ndGgpIHtcbiAgICA8c3ZnXG4gICAgICB0ZXRhWm9vbWFibGVcbiAgICAgIHRldGFCcnVzaGFibGVcbiAgICAgIGNsYXNzPVwicG9zaXRpb24tYWJzb2x1dGVcIlxuICAgICAgW3NpemVdPVwiZGF0YS52aXNpYmxlUmVjdFwiXG4gICAgICBbY29uZmlnXT1cImRhdGEuY29uZmlnXCJcbiAgICAgIFtheGlzXT1cImRhdGEuY29uZmlnPy56b29tPy50eXBlID09PSB6b29tVHlwZS54ID8gZGF0YS5zY2FsZXMueC5nZXQoMCkgOiBkYXRhLnNjYWxlcy55LmdldCgwKVwiXG4gICAgICBbYXR0ci53aWR0aF09XCJkYXRhLnZpc2libGVSZWN0LndpZHRoXCJcbiAgICAgIFthdHRyLmhlaWdodF09XCJkYXRhLnZpc2libGVSZWN0LmhlaWdodFwiXG4gICAgICBbYXR0ci52aWV3Qm94XT1cIicwIDAgJyArIGRhdGEudmlzaWJsZVJlY3Qud2lkdGggKyAnICcgKyBkYXRhLnZpc2libGVSZWN0LmhlaWdodFwiXG4gICAgICBbc3R5bGUudHJhbnNmb3JtXT1cIid0cmFuc2xhdGUoJysgZGF0YS52aXNpYmxlUmVjdC54ICsncHgsICcrIGRhdGEudmlzaWJsZVJlY3QueSArJ3B4KSdcIlxuICAgICAgKGNvbnRleHRtZW51KT1cImNvbnRleHRNZW51KCRldmVudCwgZGF0YS5zY2FsZXMueCwgZGF0YS5zY2FsZXMueSlcIlxuICAgICAgKGNsaWNrKT1cImNsaWNrKCRldmVudCwgZGF0YS5zY2FsZXMueCwgZGF0YS5zY2FsZXMueSlcIlxuICAgICAgKG1vdXNlbGVhdmUpPVwibW91c2VMZWF2ZSgkZXZlbnQpXCJcbiAgICAgIChtb3VzZW1vdmUpPVwibW91c2VNb3ZlKCRldmVudClcIj5cbiAgICAgIEBpZiAoZGF0YS5jb25maWcuZ3JpZExpbmVzPy5lbmFibGUgIT09IGZhbHNlKSB7XG4gICAgICAgIDxnIGNsYXNzPVwiZ3JpZGxpbmVzXCJcbiAgICAgICAgICAgdGV0YS1ncmlkbGluZXNcbiAgICAgICAgICAgW3NpemVdPVwiZGF0YS5zaXplXCI+PC9nPlxuICAgICAgfVxuICAgICAgPGcgY2xhc3M9XCJ4LWF4aXMtcGxvdGJhbmQtY29udGFpbmVyXCI+XG4gICAgICAgIEBmb3IgKHBsb3RCYW5kIG9mIGRhdGEucGxvdEJhbmRzOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICA8ZyB0ZXRhLXBsb3QtYmFuZFxuICAgICAgICAgICAgIFtwbG90QmFuZF09XCJwbG90QmFuZC5wbG90QmFuZFwiXG4gICAgICAgICAgICAgW3NjYWxlXT1cInBsb3RCYW5kLmF4aXMuc2NhbGVcIlxuICAgICAgICAgICAgIFtzaXplXT1cImRhdGEudmlzaWJsZVJlY3RcIlxuICAgICAgICAgICAgIFtheGlzXT1cInBsb3RCYW5kLmF4aXNcIj48L2c+XG4gICAgICAgIH1cbiAgICAgIDwvZz5cbiAgICAgIDxnIGNsYXNzPVwic2VyaWVzLWNvbnRhaW5lclwiPlxuICAgICAgICBAZm9yIChzZXJpZXMgb2YgZGF0YS5jb25maWcuc2VyaWVzOyB0cmFjayAkaW5kZXg7ICkge1xuICAgICAgICAgIEBpZiAoc2VyaWVzLnZpc2libGUpIHtcbiAgICAgICAgICAgIDxnIHRldGEtc2VyaWVzLWhvc3RcbiAgICAgICAgICAgICAgIFtjb25maWddPVwiZGF0YS5jb25maWdcIlxuICAgICAgICAgICAgICAgW3Nlcmllc109XCJzZXJpZXNcIj48L2c+XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICA8L2c+XG4gICAgICA8ZyBjbGFzcz1cIngtYXhpcy1wbG90bGluZS1jb250YWluZXJcIj5cbiAgICAgICAgQGZvciAoYXhpcyBvZiBkYXRhLmNvbmZpZy54QXhpczsgbGV0IGkgPSAkaW5kZXg7IHRyYWNrIGF4aXMpIHtcbiAgICAgICAgICBAZm9yIChwbG90TGluZSBvZiBheGlzLnBsb3RMaW5lczsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICA8ZyB0ZXRhLXBsb3QtbGluZVxuICAgICAgICAgICAgICAgW3Bsb3RMaW5lXT1cInBsb3RMaW5lXCJcbiAgICAgICAgICAgICAgIFtzY2FsZV09XCJkYXRhLnNjYWxlcy54LmdldChpKS5zY2FsZVwiXG4gICAgICAgICAgICAgICBbc2l6ZV09XCJkYXRhLnNpemVcIlxuICAgICAgICAgICAgICAgW2F4aXNdPVwiZGF0YS5zY2FsZXMueC5nZXQoaSlcIj48L2c+XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICA8L2c+XG4gICAgICA8ZyBjbGFzcz1cInktYXhpcy1wbG90bGluZS1jb250YWluZXJcIj5cbiAgICAgICAgQGZvciAoYXhpcyBvZiBkYXRhLmNvbmZpZy55QXhpczsgbGV0IGkgPSAkaW5kZXg7IHRyYWNrIGk7ICkge1xuICAgICAgICAgIEBmb3IgKHBsb3RMaW5lIG9mIGF4aXMucGxvdExpbmVzOyB0cmFjayBwbG90TGluZSkge1xuICAgICAgICAgICAgPGcgdGV0YS1wbG90LWxpbmVcbiAgICAgICAgICAgICAgIFtwbG90TGluZV09XCJwbG90TGluZVwiXG4gICAgICAgICAgICAgICBbc2NhbGVdPVwiZGF0YS5zY2FsZXMueS5nZXQoaSkuc2NhbGVcIlxuICAgICAgICAgICAgICAgW3NpemVdPVwiZGF0YS5zaXplXCJcbiAgICAgICAgICAgICAgIFtheGlzXT1cImRhdGEuc2NhbGVzLnkuZ2V0KGkpXCI+PC9nPlxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgPC9nPlxuICAgICAgPGcgY2xhc3M9XCJhbm5vdGF0aW9uc1wiPlxuICAgICAgICBAZm9yIChhbm5vdGF0aW9uIG9mIGRhdGEuY29uZmlnLmFubm90YXRpb25zOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICA8ZyB0ZXRhLWFubm90YXRpb25cbiAgICAgICAgICAgICBbdmlzaWJsZVJlY3RdPVwiZGF0YS52aXNpYmxlUmVjdFwiXG4gICAgICAgICAgICAgW2Fubm90YXRpb25dPVwiYW5ub3RhdGlvblwiPjwvZz5cbiAgICAgICAgfVxuICAgICAgPC9nPlxuICAgICAgQGlmIChkYXRhLmNvbmZpZy50b29sdGlwPy5zaG93Q3Jvc3NoYWlyKSB7XG4gICAgICAgIDxnIGNsYXNzPVwiY3Jvc3NoYWlyXCI+XG4gICAgICAgICAgPGcgdGV0YS1jcm9zc2hhaXIgW3NpemVdPVwiZGF0YS52aXNpYmxlUmVjdFwiPjwvZz5cbiAgICAgICAgPC9nPlxuICAgICAgfVxuICAgIDwvc3ZnPlxuICB9XG59XG4iXX0=
|
|
216
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQtY29udGFpbmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jaGFydC9jaGFydC1jb250YWluZXIvY2hhcnQtY29udGFpbmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy9jaGFydC9jaGFydC1jb250YWluZXIvY2hhcnQtY29udGFpbmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFVBQVUsRUFDVixNQUFNLEdBRVAsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixhQUFhLEVBQ2IsR0FBRyxFQUVILFNBQVMsRUFDVCxXQUFXLEVBQ1gsY0FBYyxHQUNmLE1BQU0sTUFBTSxDQUFDO0FBSWQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFLbkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDckUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFD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QUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxVQUFVLENBQUMsS0FBSztRQUNkLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxVQUFVLENBQUMsS0FBSyxFQUFFLElBQXVCO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUMvQyxDQUFDOzhHQXpRVSx1QkFBdUI7a0dBQXZCLHVCQUF1QixnRkN0RXBDLHNtTEFvSkEscVBEN0ZJLGdCQUFnQixxRkFDaEIsaUJBQWlCLCtGQUNqQixjQUFjLG9GQUNkLGNBQWMsK0VBQ2QsU0FBUyx5Q0FDVCxZQUFZLGlEQUNaLGlCQUFpQiw0R0FDakIsa0JBQWtCLCtFQUNsQixtQkFBbUIsNkZBQ25CLGlCQUFpQiw0R0FDakIsbUJBQW1CLHFHQUNuQixrQkFBa0IsK0VBQ2xCLGtCQUFrQjs7MkZBR1QsdUJBQXVCO2tCQXRCbkMsU0FBUzsrQkFDRSxzQkFBc0IsY0FHcEIsSUFBSSxtQkFDQyx1QkFBdUIsQ0FBQyxNQUFNLFdBQ3RDO3dCQUNQLGdCQUFnQjt3QkFDaEIsaUJBQWlCO3dCQUNqQixjQUFjO3dCQUNkLGNBQWM7d0JBQ2QsU0FBUzt3QkFDVCxZQUFZO3dCQUNaLGlCQUFpQjt3QkFDakIsa0JBQWtCO3dCQUNsQixtQkFBbUI7d0JBQ25CLGlCQUFpQjt3QkFDakIsbUJBQW1CO3dCQUNuQixrQkFBa0I7d0JBQ2xCLGtCQUFrQjtxQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBOZ1pvbmUsXG4gIE9uRGVzdHJveSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBhbmltYXRpb25GcmFtZVNjaGVkdWxlcixcbiAgY29tYmluZUxhdGVzdCxcbiAgbWFwLFxuICBPYnNlcnZhYmxlLFxuICBvYnNlcnZlT24sXG4gIHNoYXJlUmVwbGF5LFxuICB3aXRoTGF0ZXN0RnJvbSxcbn0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEF4aXMgfSBmcm9tICcuLi9jb3JlL2F4aXMvYXhpcyc7XG5pbXBvcnQgeyBCYXNlUG9pbnQgfSBmcm9tICcuLi9tb2RlbC9iYXNlLXBvaW50JztcbmltcG9ydCB7IEF4aXNPcmllbnRhdGlvbiB9IGZyb20gJy4uL21vZGVsL2VudW0vYXhpcy1vcmllbnRhdGlvbic7XG5pbXBvcnQgeyBCcnVzaFR5cGUgfSBmcm9tICcuLi9tb2RlbC9lbnVtL2JydXNoLXR5cGUnO1xuaW1wb3J0IHsgWm9vbVR5cGUgfSBmcm9tICcuLi9tb2RlbC9lbnVtL3pvb20tdHlwZSc7XG5pbXBvcnQgeyBJQ2hhcnRDb25maWcgfSBmcm9tICcuLi9tb2RlbC9pLWNoYXJ0LWNvbmZpZyc7XG5pbXBvcnQgeyBJU2NhbGVzTWFwIH0gZnJvbSAnLi4vbW9kZWwvaS1zY2FsZXMtbWFwJztcbmltcG9ydCB7IFBsb3RCYW5kIH0gZnJvbSAnLi4vbW9kZWwvcGxvdC1iYW5kJztcbmltcG9ydCB7IFNlcmllcyB9IGZyb20gJy4uL21vZGVsL3Nlcmllcyc7XG5pbXBvcnQgeyBDaGFydFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlL2NoYXJ0LnNlcnZpY2UnO1xuaW1wb3J0IHsgU2NhbGVTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZS9zY2FsZS5zZXJ2aWNlJztcbmltcG9ydCB7IFRvb2x0aXBDb21wb25lbnQgfSBmcm9tICcuL3Rvb2x0aXAvdG9vbHRpcC5jb21wb25lbnQnO1xuaW1wb3J0IHsgWEF4aXNDb21wb25lbnQgfSBmcm9tICcuL3gtYXhpcy94LWF4aXMuY29tcG9uZW50JztcbmltcG9ydCB7IFpvb21hYmxlRGlyZWN0aXZlIH0gZnJvbSAnLi4vZGlyZWN0aXZlcy96b29tYWJsZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgWUF4aXNDb21wb25lbnQgfSBmcm9tICcuL3ktYXhpcy95LWF4aXMuY29tcG9uZW50JztcbmltcG9ydCB7IEFzeW5jUGlwZSwgS2V5VmFsdWVQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFBsb3RCYW5kQ29tcG9uZW50IH0gZnJvbSAnLi9wbG90YmFuZC9wbG90LWJhbmQuY29tcG9uZW50JztcbmltcG9ydCB7IEdyaWRsaW5lc0NvbXBvbmVudCB9IGZyb20gJy4vZ3JpZGxpbmVzL2dyaWRsaW5lcy5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2VyaWVzSG9zdENvbXBvbmVudCB9IGZyb20gJy4vc2VyaWVzLWhvc3Qvc2VyaWVzLWhvc3QuY29tcG9uZW50JztcbmltcG9ydCB7IFBsb3RsaW5lQ29tcG9uZW50IH0gZnJvbSAnLi9wbG90bGluZS9wbG90bGluZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQW5ub3RhdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vYW5ub3RhdGlvbi9hbm5vdGF0aW9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDcm9zc2hhaXJDb21wb25lbnQgfSBmcm9tICcuL2Nyb3NzaGFpci9jcm9zc2hhaXIuY29tcG9uZW50JztcbmltcG9ydCB7IEJydXNoYWJsZURpcmVjdGl2ZSB9IGZyb20gJy4uL2RpcmVjdGl2ZXMvYnJ1c2hhYmxlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyB0ZXRhWm9uZUZ1bGwgfSBmcm9tICcuLi8uLi9vYnNlcnZhYmxlL3pvbmVPYnNlcnZhYmxlJztcblxudHlwZSBPcHBvc2l0ZSA9IGJvb2xlYW47XG50eXBlIERpc3BsYXlQbG90QmFuZCA9IHtcbiAgYXhpczogQXhpcztcbiAgcGxvdEJhbmQ6IFBsb3RCYW5kO1xufTtcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RldGEtY2hhcnQtY29udGFpbmVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NoYXJ0LWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NoYXJ0LWNvbnRhaW5lci5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW1xuICAgIFRvb2x0aXBDb21wb25lbnQsXG4gICAgWm9vbWFibGVEaXJlY3RpdmUsXG4gICAgWEF4aXNDb21wb25lbnQsXG4gICAgWUF4aXNDb21wb25lbnQsXG4gICAgQXN5bmNQaXBlLFxuICAgIEtleVZhbHVlUGlwZSxcbiAgICBQbG90QmFuZENvbXBvbmVudCxcbiAgICBHcmlkbGluZXNDb21wb25lbnQsXG4gICAgU2VyaWVzSG9zdENvbXBvbmVudCxcbiAgICBQbG90bGluZUNvbXBvbmVudCxcbiAgICBBbm5vdGF0aW9uQ29tcG9uZW50LFxuICAgIENyb3NzaGFpckNvbXBvbmVudCxcbiAgICBCcnVzaGFibGVEaXJlY3RpdmUsXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgQ2hhcnRDb250YWluZXJDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICBjb25maWc6IE9ic2VydmFibGU8SUNoYXJ0Q29uZmlnPjtcbiAgc2NhbGVzOiBPYnNlcnZhYmxlPElTY2FsZXNNYXA+O1xuICBzaXplOiBPYnNlcnZhYmxlPERPTVJlY3Q+O1xuICB2aXNpYmxlUmVjdDogT2JzZXJ2YWJsZTxhbnk+O1xuICBicnVzaFNjYWxlOiBPYnNlcnZhYmxlPGFueT47XG4gIHpvb21UeXBlID0gWm9vbVR5cGU7XG4gIHBsb3RCYW5kczogT2JzZXJ2YWJsZTxEaXNwbGF5UGxvdEJhbmRbXT47XG5cbiAgcHJpdmF0ZSBfb2JzZXJ2ZXI6IFJlc2l6ZU9ic2VydmVyO1xuICBwcml2YXRlIGZpbHRlclBvc2l0aW9uTWFwID0gbmV3IE1hcDxcbiAgICBPcHBvc2l0ZSxcbiAgICAoYXhpczogQXhpcykgPT4gKF86IEF4aXMpID0+IGJvb2xlYW5cbiAgPigpXG4gICAgLnNldChcbiAgICAgIHRydWUsXG4gICAgICBheGlzID0+IChfOiBBeGlzKSA9PlxuICAgICAgICBfLm9wdGlvbnMub3Bwb3NpdGUgJiYgXy5vcHRpb25zLnZpc2libGUgJiYgYXhpcy5pbmRleCA8PSBfLmluZGV4XG4gICAgKVxuICAgIC5zZXQoXG4gICAgICBmYWxzZSxcbiAgICAgIGF4aXMgPT4gKF86IEF4aXMpID0+XG4gICAgICAgIF8ub3B0aW9ucy5vcHBvc2l0ZSAhPT0gdHJ1ZSAmJlxuICAgICAgICBfLm9wdGlvbnMudmlzaWJsZSAmJlxuICAgICAgICBfLmluZGV4IDw9IGF4aXMuaW5kZXhcbiAgICApO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX3N2YzogQ2hhcnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgX3NjYWxlU2VydmljZTogU2NhbGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSBfem9uZTogTmdab25lXG4gICkge1xuICAgIHRoaXMuY29uZmlnID0gdGhpcy5fc3ZjLmNvbmZpZztcbiAgICB0aGlzLnNpemUgPSB0aGlzLl9zdmMuc2l6ZTtcblxuICAgIHRoaXMuc2NhbGVzID0gdGhpcy5fc2NhbGVTZXJ2aWNlLnNjYWxlcy5waXBlKFxuICAgICAgb2JzZXJ2ZU9uKGFuaW1hdGlvbkZyYW1lU2NoZWR1bGVyKSxcbiAgICAgIHRldGFab25lRnVsbCh0aGlzLl96b25lKSxcbiAgICAgIHNoYXJlUmVwbGF5KHtcbiAgICAgICAgYnVmZmVyU2l6ZTogMSxcbiAgICAgICAgcmVmQ291bnQ6IHRydWUsXG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLnBsb3RCYW5kcyA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuY29uZmlnLCB0aGlzLnNjYWxlc10pLnBpcGUoXG4gICAgICBtYXAoKFtjb25maWcsIHNjYWxlc10pID0+IHtcbiAgICAgICAgY29uc3QgYmFuZHM6IERpc3BsYXlQbG90QmFuZFtdID0gW107XG4gICAgICAgIGNvbmZpZy54QXhpcz8uZm9yRWFjaCgoYXhpcywgaW5kZXgpID0+IHtcbiAgICAgICAgICBheGlzLnBsb3RCYW5kcz8uZm9yRWFjaChiYW5kID0+IHtcbiAgICAgICAgICAgIGJhbmRzLnB1c2goe1xuICAgICAgICAgICAgICBwbG90QmFuZDogYmFuZCxcbiAgICAgICAgICAgICAgYXhpczogc2NhbGVzLnguZ2V0KGluZGV4KSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgY29uZmlnLnlBeGlzPy5mb3JFYWNoKChheGlzLCBpbmRleCkgPT4ge1xuICAgICAgICAgIGF4aXMucGxvdEJhbmRzPy5mb3JFYWNoKGJhbmQgPT4ge1xuICAgICAgICAgICAgYmFuZHMucHVzaCh7XG4gICAgICAgICAgICAgIHBsb3RCYW5kOiBiYW5kLFxuICAgICAgICAgICAgICBheGlzOiBzY2FsZXMueS5nZXQoaW5kZXgpLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBiYW5kcy5zb3J0KChhLCBiKSA9PiBhLnBsb3RCYW5kLm9yZGVyIC0gYi5wbG90QmFuZC5vcmRlcik7XG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLmJydXNoU2NhbGUgPSB0aGlzLl9zY2FsZVNlcnZpY2Uuc2NhbGVzLnBpcGUoXG4gICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLmNvbmZpZyksXG4gICAgICBtYXAoKGRhdGE6IFtJU2NhbGVzTWFwLCBJQ2hhcnRDb25maWddKSA9PiB7XG4gICAgICAgIGNvbnN0IFt7IHgsIHkgfSwgY29uZmlnXSA9IGRhdGE7XG5cbiAgICAgICAgcmV0dXJuIGNvbmZpZy5icnVzaD8udHlwZSA9PT0gQnJ1c2hUeXBlLnggfHxcbiAgICAgICAgICBjb25maWc/Lnpvb20/LnR5cGUgPT09IFpvb21UeXBlLnhcbiAgICAgICAgICA/IHguZ2V0KDApPy5zY2FsZVxuICAgICAgICAgIDogeS5nZXQoMCk/LnNjYWxlO1xuICAgICAgfSksXG4gICAgICBzaGFyZVJlcGxheSh7XG4gICAgICAgIGJ1ZmZlclNpemU6IDEsXG4gICAgICAgIHJlZkNvdW50OiB0cnVlLFxuICAgICAgfSlcbiAgICApO1xuXG4gICAgdGhpcy52aXNpYmxlUmVjdCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5zaXplLFxuICAgICAgdGhpcy5zY2FsZXMsXG4gICAgICB0aGlzLmNvbmZpZyxcbiAgICBdKS5waXBlKFxuICAgICAgbWFwKChkYXRhOiBbRE9NUmVjdCwgSVNjYWxlc01hcCwgSUNoYXJ0Q29uZmlnXSkgPT4ge1xuICAgICAgICBjb25zdCBbc2l6ZSwgeyB4LCB5IH0sIGNvbmZpZ10gPSBkYXRhO1xuICAgICAgICBjb25zdCB5QXhlc0FycmF5ID0gQXJyYXkuZnJvbSh5LnZhbHVlcygpKTtcbiAgICAgICAgY29uc3QgeEF4ZXNBcnJheSA9IEFycmF5LmZyb20oeC52YWx1ZXMoKSk7XG4gICAgICAgIGNvbnN0IGxlZnQgPSB5QXhlc0FycmF5XG4gICAgICAgICAgLmZpbHRlcihfID0+IF8ub3B0aW9ucy5vcHBvc2l0ZSAhPT0gdHJ1ZSAmJiBfLm9wdGlvbnMudmlzaWJsZSlcbiAgICAgICAgICAucmVkdWNlKHRoaXMuc3VtU2l6ZSwgMCk7XG5cbiAgICAgICAgY29uc3QgcmlnaHQgPSB5QXhlc0FycmF5XG4gICAgICAgICAgLmZpbHRlcihfID0+IF8ub3B0aW9ucy5vcHBvc2l0ZSAmJiBfLm9wdGlvbnMudmlzaWJsZSlcbiAgICAgICAgICAucmVkdWNlKHRoaXMuc3VtU2l6ZSwgMCk7XG5cbiAgICAgICAgY29uc3QgYm90dG9tID0geEF4ZXNBcnJheVxuICAgICAgICAgIC5maWx0ZXIoXyA9PiBfLm9wdGlvbnMub3Bwb3NpdGUgIT09IHRydWUgJiYgXy5vcHRpb25zLnZpc2libGUpXG4gICAgICAgICAgLnJlZHVjZSh0aGlzLnN1bVNpemUsIDApO1xuXG4gICAgICAgIGNvbnN0IHRvcCA9IHhBeGVzQXJyYXlcbiAgICAgICAgICAuZmlsdGVyKF8gPT4gXy5vcHRpb25zLm9wcG9zaXRlICYmIF8ub3B0aW9ucy52aXNpYmxlKVxuICAgICAgICAgIC5yZWR1Y2UodGhpcy5zdW1TaXplLCAwKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB4OiBsZWZ0ICsgY29uZmlnLmJvdW5kcz8ubGVmdCxcbiAgICAgICAgICB5OiB0b3AgKyBjb25maWcuYm91bmRzPy50b3AsXG4gICAgICAgICAgd2lkdGg6XG4gICAgICAgICAgICBzaXplLndpZHRoIC1cbiAgICAgICAgICAgIGxlZnQgLVxuICAgICAgICAgICAgcmlnaHQgLVxuICAgICAgICAgICAgY29uZmlnLmJvdW5kcz8ubGVmdCAtXG4gICAgICAgICAgICBjb25maWcuYm91bmRzPy5yaWdodCxcbiAgICAgICAgICBoZWlnaHQ6XG4gICAgICAgICAgICBzaXplLmhlaWdodCAtXG4gICAgICAgICAgICB0b3AgLVxuICAgICAgICAgICAgYm90dG9tIC1cbiAgICAgICAgICAgIGNvbmZpZy5ib3VuZHM/LnRvcCAtXG4gICAgICAgICAgICBjb25maWcuYm91bmRzPy5ib3R0b20sXG4gICAgICAgIH07XG4gICAgICB9KSxcbiAgICAgIHRldGFab25lRnVsbCh0aGlzLl96b25lKSxcbiAgICAgIHNoYXJlUmVwbGF5KHtcbiAgICAgICAgYnVmZmVyU2l6ZTogMSxcbiAgICAgICAgcmVmQ291bnQ6IHRydWUsXG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5fb2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoKGVudHJpZXM6IFJlc2l6ZU9ic2VydmVyRW50cnlbXSkgPT4ge1xuICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICFBcnJheS5pc0FycmF5KGVudHJpZXMpIHx8XG4gICAgICAgICAgIWVudHJpZXMubGVuZ3RoIHx8XG4gICAgICAgICAgZW50cmllc1swXS5jb250ZW50UmVjdC53aWR0aCA8PSAwIHx8XG4gICAgICAgICAgZW50cmllc1swXS5jb250ZW50UmVjdC5oZWlnaHQgPD0gMFxuICAgICAgICApIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fc3ZjLnNldFNpemUoZW50cmllc1swXS5jb250ZW50UmVjdCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICB0aGlzLl9vYnNlcnZlci5vYnNlcnZlKHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9vYnNlcnZlci51bm9ic2VydmUodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcbiAgICB0aGlzLl9vYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gIH1cblxuICBwcml2YXRlIHN1bVNpemUgPSAoYWNjLCBjdXJyKSA9PiBhY2MgKyBjdXJyLnNlbGZTaXplO1xuXG4gIGdldFRyYW5zbGF0ZShheGlzPzogQXhpcywgc2l6ZT86IERPTVJlY3QpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLnNjYWxlcy5waXBlKFxuICAgICAgd2l0aExhdGVzdEZyb20odGhpcy5jb25maWcpLFxuICAgICAgbWFwKChkYXRhOiBbSVNjYWxlc01hcCwgSUNoYXJ0Q29uZmlnXSkgPT4ge1xuICAgICAgICBjb25zdCBbeyB4LCB5IH0sIGNvbmZpZ10gPSBkYXRhO1xuICAgICAgICBjb25zdCB4QXhlc0FycmF5ID0gQXJyYXkuZnJvbSh4LnZhbHVlcygpKTtcbiAgICAgICAgY29uc3QgeUF4ZXNBcnJheSA9IEFycmF5LmZyb20oeS52YWx1ZXMoKSk7XG5cbiAgICAgICAgY29uc3Qgb3Bwb3NpdGVGaWx0ZXIgPSB0aGlzLmZpbHRlclBvc2l0aW9uTWFwLmdldCh0cnVlKTtcbiAgICAgICAgY29uc3Qgbm9uT3Bwb3NpdGVGaWx0ZXIgPSB0aGlzLmZpbHRlclBvc2l0aW9uTWFwLmdldChmYWxzZSk7XG5cbiAgICAgICAgY29uc3Qgb3Bwb3NpdGVPZmZzZXRZID0geUF4ZXNBcnJheS5maWx0ZXIob3Bwb3NpdGVGaWx0ZXIoYXhpcykpO1xuICAgICAgICBjb25zdCBub25PcHBvc2l0ZU9mZnNldFkgPSB5QXhlc0FycmF5LmZpbHRlcihub25PcHBvc2l0ZUZpbHRlcihheGlzKSk7XG5cbiAgICAgICAgY29uc3Qgb3Bwb3NpdGVPZmZzZXRYID0geEF4ZXNBcnJheS5maWx0ZXIob3Bwb3NpdGVGaWx0ZXIoYXhpcykpO1xuICAgICAgICBjb25zdCBub25PcHBvc2l0ZU9mZnNldFggPSB4QXhlc0FycmF5LmZpbHRlcihub25PcHBvc2l0ZUZpbHRlcihheGlzKSk7XG5cbiAgICAgICAgY29uc3Qgb3Bwb3NpdGVUcmFuc2xhdGVZID0gb3Bwb3NpdGVPZmZzZXRZLnJlZHVjZShcbiAgICAgICAgICAoYWNjLCBjdXJyKSA9PiBhY2MgKyBjdXJyLnNlbGZTaXplLFxuICAgICAgICAgIGNvbmZpZy5ib3VuZHM/LnJpZ2h0XG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IG5vbk9wcGlzdGVUcmFuc2xhdGVZID0gbm9uT3Bwb3NpdGVPZmZzZXRZLnJlZHVjZShcbiAgICAgICAgICAoYWNjLCBjdXJyKSA9PiBhY2MgKyBjdXJyLnNlbGZTaXplLFxuICAgICAgICAgIGNvbmZpZy5ib3VuZHM/LmxlZnRcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCBvcHBvc2l0ZVRyYW5zbGF0ZVggPSBvcHBvc2l0ZU9mZnNldFgucmVkdWNlKFxuICAgICAgICAgIChhY2MsIGN1cnIpID0+IGFjYyArIGN1cnIuc2VsZlNpemUsXG4gICAgICAgICAgY29uZmlnLmJvdW5kcz8udG9wXG4gICAgICAgICk7XG5cbiAgICAgICAgY29uc3Qgbm9uT3BwaXN0ZVRyYW5zbGF0ZVggPSBub25PcHBvc2l0ZU9mZnNldFgucmVkdWNlKFxuICAgICAgICAgIChhY2MsIGN1cnIpID0+IGFjYyArIGN1cnIuc2VsZlNpemUsXG4gICAgICAgICAgY29uZmlnLmJvdW5kcz8uYm90dG9tXG4gICAgICAgICk7XG5cbiAgICAgICAgY29uc3QgbGVmdCA9IHlBeGVzQXJyYXlcbiAgICAgICAgICAuZmlsdGVyKF8gPT4gXy5vcHRpb25zLnZpc2libGUgJiYgXy5vcHRpb25zLm9wcG9zaXRlICE9PSB0cnVlKVxuICAgICAgICAgIC5yZWR1Y2UoKGFjYywgY3VycikgPT4gYWNjICsgY3Vyci5zZWxmU2l6ZSwgY29uZmlnLmJvdW5kcz8ubGVmdCk7XG5cbiAgICAgICAgY29uc3QgdG9wID0geEF4ZXNBcnJheVxuICAgICAgICAgIC5maWx0ZXIoXyA9PiBfLm9wdGlvbnMudmlzaWJsZSAmJiBfLm9wdGlvbnMub3Bwb3NpdGUgPT09IHRydWUpXG4gICAgICAgICAgLnJlZHVjZSgoYWNjLCBjdXJyKSA9PiBhY2MgKyBjdXJyLnNlbGZTaXplLCBjb25maWcuYm91bmRzPy50b3ApO1xuXG4gICAgICAgIGlmIChheGlzLm9yaWVudGF0aW9uID09PSBBeGlzT3JpZW50YXRpb24ueCkge1xuICAgICAgICAgIHJldHVybiBgdHJhbnNsYXRlKCR7bGVmdH0sICR7XG4gICAgICAgICAgICBheGlzLm9wdGlvbnMub3Bwb3NpdGVcbiAgICAgICAgICAgICAgPyBvcHBvc2l0ZVRyYW5zbGF0ZVhcbiAgICAgICAgICAgICAgOiBzaXplLmhlaWdodCAtIG5vbk9wcGlzdGVUcmFuc2xhdGVYXG4gICAgICAgICAgfSlgO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGF4aXMub3JpZW50YXRpb24gPT09IEF4aXNPcmllbnRhdGlvbi55KSB7XG4gICAgICAgICAgcmV0dXJuIGB0cmFuc2xhdGUoJHtcbiAgICAgICAgICAgIGF4aXMub3B0aW9ucy5vcHBvc2l0ZVxuICAgICAgICAgICAgICA/IHNpemUud2lkdGggLSBvcHBvc2l0ZVRyYW5zbGF0ZVlcbiAgICAgICAgICAgICAgOiBub25PcHBpc3RlVHJhbnNsYXRlWVxuICAgICAgICAgIH0sICR7dG9wfSlgO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuICd0cmFuc2xhdGUoMCwgMCknO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgY2xpY2soXG4gICAgZXZlbnQ6IE1vdXNlRXZlbnQsXG4gICAgeFNjYWxlczogTWFwPG51bWJlciwgQXhpcz4sXG4gICAgeVNjYWxlczogTWFwPG51bWJlciwgQXhpcz5cbiAgKSB7XG4gICAgY29uc3QgeCA9IHhTY2FsZXMuZ2V0KDApPy5zY2FsZTtcbiAgICBjb25zdCB5ID0geVNjYWxlcy5nZXQoMCk/LnNjYWxlO1xuICAgIHRoaXMuX3N2Yy5lbWl0Q2hhcnRDbGljayh7XG4gICAgICBldmVudDogZXZlbnQsXG4gICAgICB0YXJnZXQ6IHtcbiAgICAgICAgeDogeC5pbnZlcnQoZXZlbnQub2Zmc2V0WCksXG4gICAgICAgIHk6IHkuaW52ZXJ0KGV2ZW50Lm9mZnNldFkpLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIGNvbnRleHRNZW51KFxuICAgIGV2ZW50OiBNb3VzZUV2ZW50LFxuICAgIHhTY2FsZXM6IE1hcDxudW1iZXIsIEF4aXM+LFxuICAgIHlTY2FsZXM6IE1hcDxudW1iZXIsIEF4aXM+XG4gICkge1xuICAgIGNvbnN0IHggPSB4U2NhbGVzLmdldCgwKT8uc2NhbGU7XG4gICAgY29uc3QgeSA9IHlTY2FsZXMuZ2V0KDApPy5zY2FsZTtcbiAgICB0aGlzLl9zdmMuZW1pdENoYXJ0Q29udGV4dE1lbnUoe1xuICAgICAgZXZlbnQ6IGV2ZW50LFxuICAgICAgdGFyZ2V0OiB7XG4gICAgICAgIHg6IHguaW52ZXJ0KGV2ZW50Lm9mZnNldFgpLFxuICAgICAgICB5OiB5LmludmVydChldmVudC5vZmZzZXRZKSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBtb3VzZU1vdmUoZXZlbnQpIHtcbiAgICB0aGlzLl9zdmMuc2V0UG9pbnRlck1vdmUoZXZlbnQpO1xuICB9XG5cbiAgbW91c2VMZWF2ZShldmVudCkge1xuICAgIHRoaXMuX3N2Yy5zZXRQb2ludGVyTW92ZShldmVudCk7XG4gIH1cblxuICB0cmFja1NlcmllKGluZGV4LCBpdGVtOiBTZXJpZXM8QmFzZVBvaW50Pikge1xuICAgIHJldHVybiBpdGVtLm5hbWU/Lmxlbmd0aCA/IGl0ZW0ubmFtZSA6IGluZGV4O1xuICB9XG59XG4iLCJAaWYgKHtcbiAgc2l6ZTogc2l6ZSB8IGFzeW5jLFxuICBjb25maWc6IGNvbmZpZyB8IGFzeW5jLFxuICBzY2FsZXM6IHNjYWxlcyB8IGFzeW5jLFxuICBwbG90QmFuZHM6IHBsb3RCYW5kcyB8IGFzeW5jLFxuICB2aXNpYmxlUmVjdDogdmlzaWJsZVJlY3QgfCBhc3luY1xufTsgYXMgZGF0YSkge1xuICBAaWYgKGRhdGEuY29uZmlnPy50b29sdGlwPy5lbmFibGUpIHtcbiAgICA8dGV0YS10b29sdGlwIFtzaXplXT1cImRhdGEuc2l6ZVwiXG4gICAgICAgICAgICAgICAgICBbY29uZmlnXT1cImRhdGEuY29uZmlnXCI+PC90ZXRhLXRvb2x0aXA+XG4gIH1cbiAgQGlmIChkYXRhLnNpemU/LmhlaWdodCA+IDBcbiAgJiYgZGF0YS5zaXplPy53aWR0aCA+IDBcbiAgJiYgZGF0YS52aXNpYmxlUmVjdD8uaGVpZ2h0ID4gMFxuICAmJiBkYXRhLnZpc2libGVSZWN0Py53aWR0aCA+IDBcbiAgJiYgZGF0YS5zY2FsZXM/Lnguc2l6ZSA9PT0gZGF0YS5jb25maWcueEF4aXMubGVuZ3RoXG4gICYmIGRhdGEuc2NhbGVzPy55LnNpemUgPT09IGRhdGEuY29uZmlnLnlBeGlzLmxlbmd0aCkge1xuICAgIDxzdmcgaGVpZ2h0PVwiMTAwJVwiIHdpZHRoPVwiMTAwJVwiIGNsYXNzPVwicG9zaXRpb24tYWJzb2x1dGVcIj5cbiAgICAgIDxnIGNsYXNzPVwieS1heGlzLWNvbnRhaW5lclwiPlxuICAgICAgICBAZm9yIChpdGVtIG9mIGRhdGEuc2NhbGVzLnkgfCBrZXl2YWx1ZTsgdHJhY2sgaXRlbS52YWx1ZS5pbmRleCkge1xuICAgICAgICAgIEBpZiAoaXRlbS52YWx1ZS5zZWxmU2l6ZSA+IDBcbiAgICAgICAgICAmJiBpdGVtLnZhbHVlLm9wdGlvbnMudmlzaWJsZVxuICAgICAgICAgICYmIGRhdGEuc2NhbGVzLnguc2l6ZSA+IDBcbiAgICAgICAgICAmJiBkYXRhLnNjYWxlcy55LnNpemUgPiAwKSB7XG4gICAgICAgICAgICA8Z1xuICAgICAgICAgICAgICB0ZXRhLXktYXhpc1xuICAgICAgICAgICAgICBbYXhpc109XCJpdGVtLnZhbHVlXCJcbiAgICAgICAgICAgICAgW3NpemVdPVwiZGF0YS52aXNpYmxlUmVjdFwiXG4gICAgICAgICAgICAgIFthdHRyLnRyYW5zZm9ybV09XCJnZXRUcmFuc2xhdGUoaXRlbS52YWx1ZSwgZGF0YS5zaXplKSB8IGFzeW5jXCI+PC9nPlxuICAgICAgICAgICAgPHJlY3RcbiAgICAgICAgICAgICAgdGV0YVpvb21hYmxlXG4gICAgICAgICAgICAgIGZpbGwtb3BhY2l0eT1cIjBcIlxuICAgICAgICAgICAgICBbYXhpc109XCJpdGVtLnZhbHVlXCJcbiAgICAgICAgICAgICAgW2NvbmZpZ109XCJkYXRhLmNvbmZpZ1wiXG4gICAgICAgICAgICAgIFtzaXplXT1cImRhdGEudmlzaWJsZVJlY3RcIlxuICAgICAgICAgICAgICBbYXR0ci54XT1cIml0ZW0udmFsdWUub3B0aW9ucy5vcHBvc2l0ZSA/IDAgOiAtaXRlbS52YWx1ZS5zZWxmU2l6ZVwiXG4gICAgICAgICAgICAgIFthdHRyLnldPVwiMFwiXG4gICAgICAgICAgICAgIFthdHRyLmhlaWdodF09XCJkYXRhLnZpc2libGVSZWN0LmhlaWdodFwiXG4gICAgICAgICAgICAgIFthdHRyLndpZHRoXT1cIml0ZW0udmFsdWUuc2VsZlNpemVcIlxuICAgICAgICAgICAgICBbYXR0ci50cmFuc2Zvcm1dPVwiZ2V0VHJhbnNsYXRlKGl0ZW0udmFsdWUsIGRhdGEuc2l6ZSkgfCBhc3luY1wiPjwvcmVjdD5cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIDwvZz5cbiAgICAgIDxnIGNsYXNzPVwieC1heGlzLWNvbnRhaW5lclwiPlxuICAgICAgICBAZm9yIChpdGVtIG9mIGRhdGEuc2NhbGVzLnggfCBrZXl2YWx1ZTsgdHJhY2sgaXRlbS52YWx1ZS5pbmRleCkge1xuICAgICAgICAgIEBpZiAoaXRlbS52YWx1ZS5vcHRpb25zLnZpc2libGUgJiYgZGF0YS5zY2FsZXMueC5zaXplID4gMCAmJiBkYXRhLnNjYWxlcy55LnNpemUgPiAwKSB7XG4gICAgICAgICAgICA8Z1xuICAgICAgICAgICAgICB0ZXRhLXgtYXhpc1xuICAgICAgICAgICAgICBbYXhpc109XCJpdGVtLnZhbHVlXCJcbiAgICAgICAgICAgICAgW3NpemVdPVwiZGF0YS52aXNpYmxlUmVjdFwiXG4gICAgICAgICAgICAgIFthdHRyLnRyYW5zZm9ybV09XCJnZXRUcmFuc2xhdGUoaXRlbS52YWx1ZSwgZGF0YS5zaXplKSB8IGFzeW5jXCI+PC9nPlxuICAgICAgICAgICAgPHJlY3RcbiAgICAgICAgICAgICAgdGV0YVpvb21hYmxlXG4gICAgICAgICAgICAgIGZpbGwtb3BhY2l0eT1cIjBcIlxuICAgICAgICAgICAgICBbYXhpc109XCJpdGVtLnZhbHVlXCJcbiAgICAgICAgICAgICAgW2NvbmZpZ109XCJkYXRhLmNvbmZpZ1wiXG4gICAgICAgICAgICAgIFtzaXplXT1cImRhdGEudmlzaWJsZVJlY3RcIlxuICAgICAgICAgICAgICBbYXR0ci54XT1cIjBcIlxuICAgICAgICAgICAgICBbYXR0ci55XT1cIml0ZW0udmFsdWUub3B0aW9ucy5vcHBvc2l0ZSA/IC1pdGVtLnZhbHVlLnNlbGZTaXplIDogMFwiXG4gICAgICAgICAgICAgIFthdHRyLndpZHRoXT1cImRhdGEudmlzaWJsZVJlY3Qud2lkdGhcIlxuICAgICAgICAgICAgICBbYXR0ci5oZWlnaHRdPVwiaXRlbS52YWx1ZS5zZWxmU2l6ZVwiXG4gICAgICAgICAgICAgIFthdHRyLnRyYW5zZm9ybV09XCJnZXRUcmFuc2xhdGUoaXRlbS52YWx1ZSwgZGF0YS5zaXplKSB8IGFzeW5jXCI+PC9yZWN0PlxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgPC9nPlxuICAgIDwvc3ZnPlxuICB9XG4gIEBpZiAoZGF0YS5zaXplPy5oZWlnaHQgPiAwXG4gICYmIGRhdGEuc2l6ZT8ud2lkdGggPiAwXG4gICYmIGRhdGEudmlzaWJsZVJlY3Q/LmhlaWdodCA+IDBcbiAgJiYgZGF0YS52aXNpYmxlUmVjdD8ud2lkdGggPiAwXG4gICYmIGRhdGEuc2NhbGVzPy54LnNpemUgPT09IGRhdGEuY29uZmlnLnhBeGlzLmxlbmd0aFxuICAmJiBkYXRhLnNjYWxlcz8ueS5zaXplID09PSBkYXRhLmNvbmZpZy55QXhpcy5sZW5ndGgpIHtcbiAgICA8c3ZnXG4gICAgICB0ZXRhWm9vbWFibGVcbiAgICAgIHRldGFCcnVzaGFibGVcbiAgICAgIGNsYXNzPVwicG9zaXRpb24tYWJzb2x1dGVcIlxuICAgICAgW3NpemVdPVwiZGF0YS52aXNpYmxlUmVjdFwiXG4gICAgICBbY29uZmlnXT1cImRhdGEuY29uZmlnXCJcbiAgICAgIFtheGlzXT1cImRhdGEuY29uZmlnPy56b29tPy50eXBlID09PSB6b29tVHlwZS54ID8gZGF0YS5zY2FsZXMueC5nZXQoMCkgOiBkYXRhLnNjYWxlcy55LmdldCgwKVwiXG4gICAgICBbYXR0ci53aWR0aF09XCJkYXRhLnZpc2libGVSZWN0LndpZHRoXCJcbiAgICAgIFthdHRyLmhlaWdodF09XCJkYXRhLnZpc2libGVSZWN0LmhlaWdodFwiXG4gICAgICBbYXR0ci52aWV3Qm94XT1cIicwIDAgJyArIGRhdGEudmlzaWJsZVJlY3Qud2lkdGggKyAnICcgKyBkYXRhLnZpc2libGVSZWN0LmhlaWdodFwiXG4gICAgICBbc3R5bGUudHJhbnNmb3JtXT1cIid0cmFuc2xhdGUoJysgZGF0YS52aXNpYmxlUmVjdC54ICsncHgsICcrIGRhdGEudmlzaWJsZVJlY3QueSArJ3B4KSdcIlxuICAgICAgKGNvbnRleHRtZW51KT1cImNvbnRleHRNZW51KCRldmVudCwgZGF0YS5zY2FsZXMueCwgZGF0YS5zY2FsZXMueSlcIlxuICAgICAgKGNsaWNrKT1cImNsaWNrKCRldmVudCwgZGF0YS5zY2FsZXMueCwgZGF0YS5zY2FsZXMueSlcIlxuICAgICAgKG1vdXNlbGVhdmUpPVwibW91c2VMZWF2ZSgkZXZlbnQpXCJcbiAgICAgIChtb3VzZW1vdmUpPVwibW91c2VNb3ZlKCRldmVudClcIj5cbiAgICAgIEBpZiAoZGF0YS5jb25maWcuZ3JpZExpbmVzPy5lbmFibGUgIT09IGZhbHNlKSB7XG4gICAgICAgIDxnIGNsYXNzPVwiZ3JpZGxpbmVzXCJcbiAgICAgICAgICAgdGV0YS1ncmlkbGluZXNcbiAgICAgICAgICAgW3NpemVdPVwiZGF0YS5zaXplXCI+PC9nPlxuICAgICAgfVxuICAgICAgPGcgY2xhc3M9XCJ4LWF4aXMtcGxvdGJhbmQtY29udGFpbmVyXCI+XG4gICAgICAgIEBmb3IgKHBsb3RCYW5kIG9mIGRhdGEucGxvdEJhbmRzOyB0cmFjayBwbG90QmFuZCkge1xuICAgICAgICAgIDxnIHRldGEtcGxvdC1iYW5kXG4gICAgICAgICAgICAgW3Bsb3RCYW5kXT1cInBsb3RCYW5kLnBsb3RCYW5kXCJcbiAgICAgICAgICAgICBbc2NhbGVdPVwicGxvdEJhbmQuYXhpcy5zY2FsZVwiXG4gICAgICAgICAgICAgW3NpemVdPVwiZGF0YS52aXNpYmxlUmVjdFwiXG4gICAgICAgICAgICAgW2F4aXNdPVwicGxvdEJhbmQuYXhpc1wiPjwvZz5cbiAgICAgICAgfVxuICAgICAgPC9nPlxuICAgICAgPGcgY2xhc3M9XCJzZXJpZXMtY29udGFpbmVyXCI+XG4gICAgICAgIEBmb3IgKHNlcmllcyBvZiBkYXRhLmNvbmZpZy5zZXJpZXM7IHRyYWNrIHNlcmllczsgKSB7XG4gICAgICAgICAgQGlmIChzZXJpZXMudmlzaWJsZSkge1xuICAgICAgICAgICAgPGcgdGV0YS1zZXJpZXMtaG9zdFxuICAgICAgICAgICAgICAgW2NvbmZpZ109XCJkYXRhLmNvbmZpZ1wiXG4gICAgICAgICAgICAgICBbc2VyaWVzXT1cInNlcmllc1wiPjwvZz5cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIDwvZz5cbiAgICAgIDxnIGNsYXNzPVwieC1heGlzLXBsb3RsaW5lLWNvbnRhaW5lclwiPlxuICAgICAgICBAZm9yIChheGlzIG9mIGRhdGEuY29uZmlnLnhBeGlzOyBsZXQgaSA9ICRpbmRleDsgdHJhY2sgYXhpcykge1xuICAgICAgICAgIEBmb3IgKHBsb3RMaW5lIG9mIGF4aXMucGxvdExpbmVzOyB0cmFjayBwbG90TGluZSkge1xuICAgICAgICAgICAgPGcgdGV0YS1wbG90LWxpbmVcbiAgICAgICAgICAgICAgIFtwbG90TGluZV09XCJwbG90TGluZVwiXG4gICAgICAgICAgICAgICBbc2NhbGVdPVwiZGF0YS5zY2FsZXMueC5nZXQoaSkuc2NhbGVcIlxuICAgICAgICAgICAgICAgW3NpemVdPVwiZGF0YS5zaXplXCJcbiAgICAgICAgICAgICAgIFtheGlzXT1cImRhdGEuc2NhbGVzLnguZ2V0KGkpXCI+PC9nPlxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgPC9nPlxuICAgICAgPGcgY2xhc3M9XCJ5LWF4aXMtcGxvdGxpbmUtY29udGFpbmVyXCI+XG4gICAgICAgIEBmb3IgKGF4aXMgb2YgZGF0YS5jb25maWcueUF4aXM7IGxldCBpID0gJGluZGV4OyB0cmFjayBheGlzOyApIHtcbiAgICAgICAgICBAZm9yIChwbG90TGluZSBvZiBheGlzLnBsb3RMaW5lczsgdHJhY2sgcGxvdExpbmUpIHtcbiAgICAgICAgICAgIDxnIHRldGEtcGxvdC1saW5lXG4gICAgICAgICAgICAgICBbcGxvdExpbmVdPVwicGxvdExpbmVcIlxuICAgICAgICAgICAgICAgW3NjYWxlXT1cImRhdGEuc2NhbGVzLnkuZ2V0KGkpLnNjYWxlXCJcbiAgICAgICAgICAgICAgIFtzaXplXT1cImRhdGEuc2l6ZVwiXG4gICAgICAgICAgICAgICBbYXhpc109XCJkYXRhLnNjYWxlcy55LmdldChpKVwiPjwvZz5cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIDwvZz5cbiAgICAgIDxnIGNsYXNzPVwiYW5ub3RhdGlvbnNcIj5cbiAgICAgICAgQGZvciAoYW5ub3RhdGlvbiBvZiBkYXRhLmNvbmZpZy5hbm5vdGF0aW9uczsgdHJhY2sgYW5ub3RhdGlvbikge1xuICAgICAgICAgIDxnIHRldGEtYW5ub3RhdGlvblxuICAgICAgICAgICAgIFt2aXNpYmxlUmVjdF09XCJkYXRhLnZpc2libGVSZWN0XCJcbiAgICAgICAgICAgICBbYW5ub3RhdGlvbl09XCJhbm5vdGF0aW9uXCI+PC9nPlxuICAgICAgICB9XG4gICAgICA8L2c+XG4gICAgICBAaWYgKGRhdGEuY29uZmlnLnRvb2x0aXA/LnNob3dDcm9zc2hhaXIpIHtcbiAgICAgICAgPGcgY2xhc3M9XCJjcm9zc2hhaXJcIj5cbiAgICAgICAgICA8ZyB0ZXRhLWNyb3NzaGFpciBbc2l6ZV09XCJkYXRhLnZpc2libGVSZWN0XCI+PC9nPlxuICAgICAgICA8L2c+XG4gICAgICB9XG4gICAgPC9zdmc+XG4gIH1cbn1cbiJdfQ==
|
|
@@ -28,14 +28,14 @@ export class GridlinesComponent {
|
|
|
28
28
|
ngAfterViewInit() {
|
|
29
29
|
}
|
|
30
30
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.1", ngImport: i0, type: GridlinesComponent, deps: [{ token: i1.ScaleService }, { token: i2.ChartService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
31
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.1", type: GridlinesComponent, isStandalone: true, selector: "[teta-gridlines]", inputs: { size: "size" }, ngImport: i0, template: "@if ({\n xValues: tickXValues | async,\n yValues: tickYValues | async,\n x: x | async,\n y: y | async,\n config: config | async\n}; as data) {\n @if (data.y && data.config.gridLines?.showY !== false) {\n @for (tick of data.yValues; track
|
|
31
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.1", type: GridlinesComponent, isStandalone: true, selector: "[teta-gridlines]", inputs: { size: "size" }, ngImport: i0, template: "@if ({\n xValues: tickXValues | async,\n yValues: tickYValues | async,\n x: x | async,\n y: y | async,\n config: config | async\n}; as data) {\n @if (data.y && data.config.gridLines?.showY !== false) {\n @for (tick of data.yValues; track tick) {\n <svg:line [attr.x1]=\"0\"\n [attr.y1]=\"data.y(tick) || 1\"\n [attr.x2]=\"size?.width\"\n [attr.y2]=\"data.y(tick) || 1\"></svg:line>\n }\n }\n @if (data.x && data.config.gridLines?.showX !== false) {\n @for (tick of data.xValues; track tick) {\n <svg:line [attr.x1]=\"data.x(tick) || 1\"\n [attr.y1]=\"0\"\n [attr.x2]=\"data.x(tick) || 1\"\n [attr.y2]=\"size?.height\"></svg:line>\n }\n }\n}\n", styles: [":host{shape-rendering:crispEdges}:host line{stroke:var(--color-text-5)}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
32
32
|
}
|
|
33
33
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.1", ngImport: i0, type: GridlinesComponent, decorators: [{
|
|
34
34
|
type: Component,
|
|
35
35
|
args: [{ selector: '[teta-gridlines]', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
36
36
|
AsyncPipe,
|
|
37
|
-
], template: "@if ({\n xValues: tickXValues | async,\n yValues: tickYValues | async,\n x: x | async,\n y: y | async,\n config: config | async\n}; as data) {\n @if (data.y && data.config.gridLines?.showY !== false) {\n @for (tick of data.yValues; track
|
|
37
|
+
], template: "@if ({\n xValues: tickXValues | async,\n yValues: tickYValues | async,\n x: x | async,\n y: y | async,\n config: config | async\n}; as data) {\n @if (data.y && data.config.gridLines?.showY !== false) {\n @for (tick of data.yValues; track tick) {\n <svg:line [attr.x1]=\"0\"\n [attr.y1]=\"data.y(tick) || 1\"\n [attr.x2]=\"size?.width\"\n [attr.y2]=\"data.y(tick) || 1\"></svg:line>\n }\n }\n @if (data.x && data.config.gridLines?.showX !== false) {\n @for (tick of data.xValues; track tick) {\n <svg:line [attr.x1]=\"data.x(tick) || 1\"\n [attr.y1]=\"0\"\n [attr.x2]=\"data.x(tick) || 1\"\n [attr.y2]=\"size?.height\"></svg:line>\n }\n }\n}\n", styles: [":host{shape-rendering:crispEdges}:host line{stroke:var(--color-text-5)}\n"] }]
|
|
38
38
|
}], ctorParameters: () => [{ type: i1.ScaleService }, { type: i2.ChartService }], propDecorators: { size: [{
|
|
39
39
|
type: Input
|
|
40
40
|
}] } });
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZGxpbmVzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jaGFydC9jaGFydC1jb250YWluZXIvZ3JpZGxpbmVzL2dyaWRsaW5lcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvY2hhcnQvY2hhcnQtY29udGFpbmVyL2dyaWRsaW5lcy9ncmlkbGluZXMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixTQUFTLEVBQUUsS0FBSyxHQUNqQixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFDekQsT0FBTyxFQUFDLEdBQUcsRUFBYyxjQUFjLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFckQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQ3pELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUU5RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7QUFZNUMsTUFBTSxPQUFPLGtCQUFrQjtJQVU3QixZQUFvQixHQUFpQixFQUFVLFlBQTBCO1FBQXJELFFBQUcsR0FBSCxHQUFHLENBQWM7UUFBVSxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUN2RSxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDO1FBRXZDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUNyQyxjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUMzQixHQUFHLENBQUMsQ0FBQyxDQUE2QixFQUFFLEVBQUU7WUFDcEMsTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDM0IsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO1lBQ3BDLE9BQU8sTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDLEVBQUUsVUFBVSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsRUFBRSxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4SyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRU4sSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQ3JDLGNBQWMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQzNCLEdBQUcsQ0FBQyxDQUFDLENBQTZCLEVBQUUsRUFBRTtZQUNwQyxNQUFNLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUMzQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7WUFDbkMsT0FBTyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUMsRUFBRSxVQUFVLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxFQUFFLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFTixJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDN0QsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFRCxlQUFlO0lBRWYsQ0FBQzs4R0FuQ1Usa0JBQWtCO2tHQUFsQixrQkFBa0Isc0dDeEIvQiw2dkJBd0JBLDhIREhJLFNBQVM7OzJGQUdBLGtCQUFrQjtrQkFWOUIsU0FBUzsrQkFDRSxrQkFBa0IsY0FHaEIsSUFBSSxtQkFDQyx1QkFBdUIsQ0FBQyxNQUFNLFdBQ3RDO3dCQUNQLFNBQVM7cUJBQ1Y7NEdBSVEsSUFBSTtzQkFBWixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCwgSW5wdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge1NjYWxlU2VydmljZX0gZnJvbSBcIi4uLy4uL3NlcnZpY2Uvc2NhbGUuc2VydmljZVwiO1xuaW1wb3J0IHttYXAsIE9ic2VydmFibGUsIHdpdGhMYXRlc3RGcm9tfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHtJQ2hhcnRDb25maWd9IGZyb20gXCIuLi8uLi9tb2RlbC9pLWNoYXJ0LWNvbmZpZ1wiO1xuaW1wb3J0IHtDaGFydFNlcnZpY2V9IGZyb20gXCIuLi8uLi9zZXJ2aWNlL2NoYXJ0LnNlcnZpY2VcIjtcbmltcG9ydCB7Z2VuZXJhdGVUaWNrc30gZnJvbSBcIi4uLy4uL2NvcmUvdXRpbHMvZ2VuZXJhdGUtdGlja3NcIjtcbmltcG9ydCB7SVNjYWxlc01hcH0gZnJvbSBcIi4uLy4uL21vZGVsL2ktc2NhbGVzLW1hcFwiO1xuaW1wb3J0IHsgQXN5bmNQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnW3RldGEtZ3JpZGxpbmVzXScsXG4gIHRlbXBsYXRlVXJsOiAnLi9ncmlkbGluZXMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9ncmlkbGluZXMuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGltcG9ydHM6IFtcbiAgICBBc3luY1BpcGUsXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgR3JpZGxpbmVzQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG5cbiAgQElucHV0KCkgc2l6ZTogRE9NUmVjdDtcblxuICBjb25maWc6IE9ic2VydmFibGU8SUNoYXJ0Q29uZmlnPjtcbiAgdGlja1lWYWx1ZXM6IE9ic2VydmFibGU8bnVtYmVyW10+O1xuICB0aWNrWFZhbHVlczogT2JzZXJ2YWJsZTxudW1iZXJbXT47XG4gIHg6IE9ic2VydmFibGU8YW55PjtcbiAgeTogT2JzZXJ2YWJsZTxhbnk+O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc3ZjOiBTY2FsZVNlcnZpY2UsIHByaXZhdGUgY2hhcnRTZXJ2aWNlOiBDaGFydFNlcnZpY2UpIHtcbiAgICB0aGlzLmNvbmZpZyA9IHRoaXMuY2hhcnRTZXJ2aWNlLmNvbmZpZztcblxuICAgIHRoaXMudGlja1lWYWx1ZXMgPSB0aGlzLnN2Yy5zY2FsZXMucGlwZShcbiAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuY29uZmlnKSxcbiAgICAgIG1hcCgoXzogW0lTY2FsZXNNYXAsIElDaGFydENvbmZpZ10pID0+IHtcbiAgICAgICAgY29uc3QgW3NjYWxlcywgY29uZmlnXSA9IF87XG4gICAgICAgIGNvbnN0IHJhdGlvID0gdGhpcy5zaXplLmhlaWdodCAvIDQwO1xuICAgICAgICByZXR1cm4gY29uZmlnLmdyaWRMaW5lcz8ueT8udGlja3NDb3VudCAhPSBudWxsID8gZ2VuZXJhdGVUaWNrcyhzY2FsZXMueS5nZXQoMCkuc2NhbGUuZG9tYWluKCksIGNvbmZpZy5ncmlkTGluZXM/Lnk/LnRpY2tzQ291bnQpIDogc2NhbGVzLnkuZ2V0KDApPy5zY2FsZS50aWNrcyhyYXRpbyk7XG4gICAgICB9KSk7XG5cbiAgICB0aGlzLnRpY2tYVmFsdWVzID0gdGhpcy5zdmMuc2NhbGVzLnBpcGUoXG4gICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLmNvbmZpZyksXG4gICAgICBtYXAoKF86IFtJU2NhbGVzTWFwLCBJQ2hhcnRDb25maWddKSA9PiB7XG4gICAgICAgIGNvbnN0IFtzY2FsZXMsIGNvbmZpZ10gPSBfO1xuICAgICAgICBjb25zdCByYXRpbyA9IHRoaXMuc2l6ZS53aWR0aCAvIDQwO1xuICAgICAgICByZXR1cm4gY29uZmlnLmdyaWRMaW5lcz8ueD8udGlja3NDb3VudCAhPSBudWxsID8gZ2VuZXJhdGVUaWNrcyhzY2FsZXMueC5nZXQoMCkub3JpZ2luRG9tYWluLCBjb25maWcuZ3JpZExpbmVzPy54Py50aWNrc0NvdW50KSA6IHNjYWxlcy54LmdldCgwKT8uc2NhbGUudGlja3MocmF0aW8pO1xuICAgICAgfSkpO1xuXG4gICAgdGhpcy55ID0gdGhpcy5zdmMuc2NhbGVzLnBpcGUobWFwKChfKSA9PiBfLnkuZ2V0KDApPy5zY2FsZSkpO1xuICAgIHRoaXMueCA9IHRoaXMuc3ZjLnNjYWxlcy5waXBlKG1hcCgoXykgPT4gXy54LmdldCgwKT8uc2NhbGUpKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcblxuICB9XG59XG4iLCJAaWYgKHtcbiAgeFZhbHVlczogdGlja1hWYWx1ZXMgfCBhc3luYyxcbiAgeVZhbHVlczogdGlja1lWYWx1ZXMgfCBhc3luYyxcbiAgeDogeCB8IGFzeW5jLFxuICB5OiB5IHwgYXN5bmMsXG4gIGNvbmZpZzogY29uZmlnIHwgYXN5bmNcbn07IGFzIGRhdGEpIHtcbiAgQGlmIChkYXRhLnkgJiYgZGF0YS5jb25maWcuZ3JpZExpbmVzPy5zaG93WSAhPT0gZmFsc2UpIHtcbiAgICBAZm9yICh0aWNrIG9mIGRhdGEueVZhbHVlczsgdHJhY2sgdGljaykge1xuICAgICAgPHN2ZzpsaW5lIFthdHRyLngxXT1cIjBcIlxuICAgICAgICAgICAgICAgIFthdHRyLnkxXT1cImRhdGEueSh0aWNrKSB8fCAxXCJcbiAgICAgICAgICAgICAgICBbYXR0ci54Ml09XCJzaXplPy53aWR0aFwiXG4gICAgICAgICAgICAgICAgW2F0dHIueTJdPVwiZGF0YS55KHRpY2spIHx8IDFcIj48L3N2ZzpsaW5lPlxuICAgIH1cbiAgfVxuICBAaWYgKGRhdGEueCAmJiBkYXRhLmNvbmZpZy5ncmlkTGluZXM/LnNob3dYICE9PSBmYWxzZSkge1xuICAgIEBmb3IgKHRpY2sgb2YgZGF0YS54VmFsdWVzOyB0cmFjayB0aWNrKSB7XG4gICAgICA8c3ZnOmxpbmUgW2F0dHIueDFdPVwiZGF0YS54KHRpY2spIHx8IDFcIlxuICAgICAgICAgICAgICAgIFthdHRyLnkxXT1cIjBcIlxuICAgICAgICAgICAgICAgIFthdHRyLngyXT1cImRhdGEueCh0aWNrKSB8fCAxXCJcbiAgICAgICAgICAgICAgICBbYXR0ci55Ml09XCJzaXplPy5oZWlnaHRcIj48L3N2ZzpsaW5lPlxuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -61,10 +61,10 @@ export class AreaSeriesComponent extends LinearSeriesBase {
|
|
|
61
61
|
}));
|
|
62
62
|
}
|
|
63
63
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.1", ngImport: i0, type: AreaSeriesComponent, deps: [{ token: i1.ChartService }, { token: i0.ChangeDetectorRef }, { token: i2.ScaleService }, { token: i3.ZoomService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
64
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.1", type: AreaSeriesComponent, isStandalone: true, selector: "svg:svg[teta-area-series]", usesInheritance: true, ngImport: i0, template: "@if (series?.fillType === fillType.gradient) {\n <svg:defs>\n <svg:linearGradient [id]=\"'gradient-fill-' + id\" gradientUnits=\"userSpaceOnUse\"\n x1=\"0%\"\n [attr.y1]=\"config?.inverted || series?.fillDirection === fillDirection.y ? '0%' : '100%'\"\n [attr.x2]=\"config?.inverted || series?.fillDirection === fillDirection.y ? '100%' : '0%'\"\n y2=\"0%\">\n <svg:stop offset=\"0%\" [attr.stop-color]=\"series.color\" stop-opacity=\"0\"></svg:stop>\n <svg:stop offset=\"5%\" [attr.stop-color]=\"series.color\" stop-opacity=\"0.1\"></svg:stop>\n <svg:stop offset=\"20%\" [attr.stop-color]=\"series.color\" stop-opacity=\"0.2\"></svg:stop>\n <svg:stop offset=\"60%\" [attr.stop-color]=\"series.color\" stop-opacity=\"0.5\"></svg:stop>\n <svg:stop offset=\"100%\" [attr.stop-color]=\"series.color\" stop-opacity=\"0.8\"></svg:stop>\n </svg:linearGradient>\n </svg:defs>\n}\n<svg:path\n class=\"area\"\n [attr.d]=\"areaPath | async\"\n [attr.stroke-width]=\"0\"\n [attr.fill-opacity]=\"series.style?.fillOpacity\"\n [attr.fill]=\"series.fillType === fillType.gradient ? 'url(#gradient-fill-'+id+')' : series.style?.fill ?? series.color\">\n</svg:path>\n<svg:path\n class=\"area\"\n fill=\"none\"\n [attr.d]=\"path | async\"\n [attr.stroke]=\"series.color\"\n [attr.stroke-dasharray]=\"series.style?.strokeDasharray\"\n [attr.stroke-width]=\"series.style?.strokeWidth\">\n</svg:path>\n@if (transform | async; as t) {\n @if (t?.x != null && t?.y != null) {\n <svg:circle\n r=\"3\"\n [attr.fill]=\"series.color\"\n [attr.transform]=\"'translate('+ t.x +', '+ t.y +')'\">\n </svg:circle>\n }\n}\n@if (markers; as draggablePoints) {\n @for (point of draggablePoints; track
|
|
64
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.1", type: AreaSeriesComponent, isStandalone: true, selector: "svg:svg[teta-area-series]", usesInheritance: true, ngImport: i0, template: "@if (series?.fillType === fillType.gradient) {\n <svg:defs>\n <svg:linearGradient [id]=\"'gradient-fill-' + id\" gradientUnits=\"userSpaceOnUse\"\n x1=\"0%\"\n [attr.y1]=\"config?.inverted || series?.fillDirection === fillDirection.y ? '0%' : '100%'\"\n [attr.x2]=\"config?.inverted || series?.fillDirection === fillDirection.y ? '100%' : '0%'\"\n y2=\"0%\">\n <svg:stop offset=\"0%\" [attr.stop-color]=\"series.color\" stop-opacity=\"0\"></svg:stop>\n <svg:stop offset=\"5%\" [attr.stop-color]=\"series.color\" stop-opacity=\"0.1\"></svg:stop>\n <svg:stop offset=\"20%\" [attr.stop-color]=\"series.color\" stop-opacity=\"0.2\"></svg:stop>\n <svg:stop offset=\"60%\" [attr.stop-color]=\"series.color\" stop-opacity=\"0.5\"></svg:stop>\n <svg:stop offset=\"100%\" [attr.stop-color]=\"series.color\" stop-opacity=\"0.8\"></svg:stop>\n </svg:linearGradient>\n </svg:defs>\n}\n<svg:path\n class=\"area\"\n [attr.d]=\"areaPath | async\"\n [attr.stroke-width]=\"0\"\n [attr.fill-opacity]=\"series.style?.fillOpacity\"\n [attr.fill]=\"series.fillType === fillType.gradient ? 'url(#gradient-fill-'+id+')' : series.style?.fill ?? series.color\">\n</svg:path>\n<svg:path\n class=\"area\"\n fill=\"none\"\n [attr.d]=\"path | async\"\n [attr.stroke]=\"series.color\"\n [attr.stroke-dasharray]=\"series.style?.strokeDasharray\"\n [attr.stroke-width]=\"series.style?.strokeWidth\">\n</svg:path>\n@if (transform | async; as t) {\n @if (t?.x != null && t?.y != null) {\n <svg:circle\n r=\"3\"\n [attr.fill]=\"series.color\"\n [attr.transform]=\"'translate('+ t.x +', '+ t.y +')'\">\n </svg:circle>\n }\n}\n@if (markers; as draggablePoints) {\n @for (point of draggablePoints; track point; ) {\n <svg:circle\n class=\"marker\"\n [class.draggable-marker]=\"point?.marker?.draggable\"\n [attr.r]=\"point.marker.style?.radius ?? 5\"\n [attr.fill]=\"point.marker.style?.fill ?? 'transparent'\"\n [attr.stroke]=\"point.marker.style?.stroke ?? 'none'\"\n [attr.stroke-width]=\"point.marker.style?.strokeWidth\"\n [attr.stroke-dasharray]=\"point.marker.style?.strokeDasharray\"\n [attr.cx]=\"x(point.x)\"\n [attr.cy]=\"y(point.y)\">\n </svg:circle>\n }\n}\n\n\n\n", styles: [""], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
65
65
|
}
|
|
66
66
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.1", ngImport: i0, type: AreaSeriesComponent, decorators: [{
|
|
67
67
|
type: Component,
|
|
68
|
-
args: [{ selector: 'svg:svg[teta-area-series]', standalone: true, imports: [AsyncPipe], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (series?.fillType === fillType.gradient) {\n <svg:defs>\n <svg:linearGradient [id]=\"'gradient-fill-' + id\" gradientUnits=\"userSpaceOnUse\"\n x1=\"0%\"\n [attr.y1]=\"config?.inverted || series?.fillDirection === fillDirection.y ? '0%' : '100%'\"\n [attr.x2]=\"config?.inverted || series?.fillDirection === fillDirection.y ? '100%' : '0%'\"\n y2=\"0%\">\n <svg:stop offset=\"0%\" [attr.stop-color]=\"series.color\" stop-opacity=\"0\"></svg:stop>\n <svg:stop offset=\"5%\" [attr.stop-color]=\"series.color\" stop-opacity=\"0.1\"></svg:stop>\n <svg:stop offset=\"20%\" [attr.stop-color]=\"series.color\" stop-opacity=\"0.2\"></svg:stop>\n <svg:stop offset=\"60%\" [attr.stop-color]=\"series.color\" stop-opacity=\"0.5\"></svg:stop>\n <svg:stop offset=\"100%\" [attr.stop-color]=\"series.color\" stop-opacity=\"0.8\"></svg:stop>\n </svg:linearGradient>\n </svg:defs>\n}\n<svg:path\n class=\"area\"\n [attr.d]=\"areaPath | async\"\n [attr.stroke-width]=\"0\"\n [attr.fill-opacity]=\"series.style?.fillOpacity\"\n [attr.fill]=\"series.fillType === fillType.gradient ? 'url(#gradient-fill-'+id+')' : series.style?.fill ?? series.color\">\n</svg:path>\n<svg:path\n class=\"area\"\n fill=\"none\"\n [attr.d]=\"path | async\"\n [attr.stroke]=\"series.color\"\n [attr.stroke-dasharray]=\"series.style?.strokeDasharray\"\n [attr.stroke-width]=\"series.style?.strokeWidth\">\n</svg:path>\n@if (transform | async; as t) {\n @if (t?.x != null && t?.y != null) {\n <svg:circle\n r=\"3\"\n [attr.fill]=\"series.color\"\n [attr.transform]=\"'translate('+ t.x +', '+ t.y +')'\">\n </svg:circle>\n }\n}\n@if (markers; as draggablePoints) {\n @for (point of draggablePoints; track
|
|
68
|
+
args: [{ selector: 'svg:svg[teta-area-series]', standalone: true, imports: [AsyncPipe], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (series?.fillType === fillType.gradient) {\n <svg:defs>\n <svg:linearGradient [id]=\"'gradient-fill-' + id\" gradientUnits=\"userSpaceOnUse\"\n x1=\"0%\"\n [attr.y1]=\"config?.inverted || series?.fillDirection === fillDirection.y ? '0%' : '100%'\"\n [attr.x2]=\"config?.inverted || series?.fillDirection === fillDirection.y ? '100%' : '0%'\"\n y2=\"0%\">\n <svg:stop offset=\"0%\" [attr.stop-color]=\"series.color\" stop-opacity=\"0\"></svg:stop>\n <svg:stop offset=\"5%\" [attr.stop-color]=\"series.color\" stop-opacity=\"0.1\"></svg:stop>\n <svg:stop offset=\"20%\" [attr.stop-color]=\"series.color\" stop-opacity=\"0.2\"></svg:stop>\n <svg:stop offset=\"60%\" [attr.stop-color]=\"series.color\" stop-opacity=\"0.5\"></svg:stop>\n <svg:stop offset=\"100%\" [attr.stop-color]=\"series.color\" stop-opacity=\"0.8\"></svg:stop>\n </svg:linearGradient>\n </svg:defs>\n}\n<svg:path\n class=\"area\"\n [attr.d]=\"areaPath | async\"\n [attr.stroke-width]=\"0\"\n [attr.fill-opacity]=\"series.style?.fillOpacity\"\n [attr.fill]=\"series.fillType === fillType.gradient ? 'url(#gradient-fill-'+id+')' : series.style?.fill ?? series.color\">\n</svg:path>\n<svg:path\n class=\"area\"\n fill=\"none\"\n [attr.d]=\"path | async\"\n [attr.stroke]=\"series.color\"\n [attr.stroke-dasharray]=\"series.style?.strokeDasharray\"\n [attr.stroke-width]=\"series.style?.strokeWidth\">\n</svg:path>\n@if (transform | async; as t) {\n @if (t?.x != null && t?.y != null) {\n <svg:circle\n r=\"3\"\n [attr.fill]=\"series.color\"\n [attr.transform]=\"'translate('+ t.x +', '+ t.y +')'\">\n </svg:circle>\n }\n}\n@if (markers; as draggablePoints) {\n @for (point of draggablePoints; track point; ) {\n <svg:circle\n class=\"marker\"\n [class.draggable-marker]=\"point?.marker?.draggable\"\n [attr.r]=\"point.marker.style?.radius ?? 5\"\n [attr.fill]=\"point.marker.style?.fill ?? 'transparent'\"\n [attr.stroke]=\"point.marker.style?.stroke ?? 'none'\"\n [attr.stroke-width]=\"point.marker.style?.strokeWidth\"\n [attr.stroke-dasharray]=\"point.marker.style?.strokeDasharray\"\n [attr.cx]=\"x(point.x)\"\n [attr.cy]=\"y(point.y)\">\n </svg:circle>\n }\n}\n\n\n\n" }]
|
|
69
69
|
}], ctorParameters: () => [{ type: i1.ChartService }, { type: i0.ChangeDetectorRef }, { type: i2.ScaleService }, { type: i3.ZoomService }, { type: i0.ElementRef }] });
|
|
70
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJlYS1zZXJpZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2NoYXJ0L2NoYXJ0LWNvbnRhaW5lci9zZXJpZXMvYXJlYS1zZXJpZXMvYXJlYS1zZXJpZXMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2NoYXJ0L2NoYXJ0LWNvbnRhaW5lci9zZXJpZXMvYXJlYS1zZXJpZXMvYXJlYS1zZXJpZXMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsR0FHWCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQztBQUN6QixPQUFPLEVBQUUsR0FBRyxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBR3ZDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDeEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzlELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM5RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDekQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7OztBQVU1QyxNQUFNLE9BQU8sbUJBQ1gsU0FBUSxnQkFBbUI7SUFTM0IsWUFDcUIsR0FBaUIsRUFDakIsR0FBc0IsRUFDdEIsWUFBMEIsRUFDMUIsV0FBd0IsRUFDeEIsT0FBbUI7UUFFdEMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLFdB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WUFBWSxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO2dCQUVoRCxZQUFZLEdBQUcsWUFBWSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDeEQsQ0FBQztZQUVELElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsS0FBSyxtQkFBbUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDOUQsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUVqQyxHQUFHLEdBQUcsR0FBRyxZQUFZLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7Z0JBQ2hELEdBQUcsR0FBRyxHQUFHLFlBQVksSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztnQkFFaEQsWUFBWSxHQUFHLFlBQVksRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ3hELENBQUM7WUFFRCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUM1QixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQzs4R0E5RVUsbUJBQW1CO2tHQUFuQixtQkFBbUIsNEdDNUJoQyxrekVBeURBLHFERGhDWSxTQUFTOzsyRkFHUixtQkFBbUI7a0JBUi9CLFNBQVM7K0JBQ0UsMkJBQTJCLGNBRzFCLElBQUksV0FDTixDQUFDLFNBQVMsQ0FBQyxtQkFDSCx1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCAqIGFzIGQzIGZyb20gJ2QzJztcbmltcG9ydCB7IG1hcCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBCYXNlUG9pbnQgfSBmcm9tICcuLi8uLi8uLi9tb2RlbC9iYXNlLXBvaW50JztcbmltcG9ydCB7IENsaXBQb2ludHNEaXJlY3Rpb24gfSBmcm9tICcuLi8uLi8uLi9tb2RlbC9lbnVtL2NsaXAtcG9pbnRzLWRpcmVjdGlvbic7XG5pbXBvcnQgeyBGaWxsRGlyZWN0aW9uLCBGaWxsVHlwZSB9IGZyb20gJy4uLy4uLy4uL21vZGVsL2VudW0vZmlsbC10eXBlJztcbmltcG9ydCB7IENoYXJ0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2UvY2hhcnQuc2VydmljZSc7XG5pbXBvcnQgeyBTY2FsZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlL3NjYWxlLnNlcnZpY2UnO1xuaW1wb3J0IHsgWm9vbVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlL3pvb20uc2VydmljZSc7XG5pbXBvcnQgeyBMaW5lYXJTZXJpZXNCYXNlIH0gZnJvbSAnLi4vbGluZWFyLXNlcmllcy1iYXNlJztcbmltcG9ydCB7IEFzeW5jUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3N2ZzpzdmdbdGV0YS1hcmVhLXNlcmllc10nLFxuICB0ZW1wbGF0ZVVybDogJy4vYXJlYS1zZXJpZXMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9hcmVhLXNlcmllcy5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOnRydWUsXG4gIGltcG9ydHM6IFtBc3luY1BpcGVdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgQXJlYVNlcmllc0NvbXBvbmVudDxUIGV4dGVuZHMgQmFzZVBvaW50PlxuICBleHRlbmRzIExpbmVhclNlcmllc0Jhc2U8VD5cbiAgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveVxue1xuICBhcmVhUGF0aDogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuXG4gIGZpbGxEaXJlY3Rpb24gPSBGaWxsRGlyZWN0aW9uO1xuICBmaWxsVHlwZSA9IEZpbGxUeXBlO1xuICBpZDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBvdmVycmlkZSBzdmM6IENoYXJ0U2VydmljZSxcbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgc2NhbGVTZXJ2aWNlOiBTY2FsZVNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIHpvb21TZXJ2aWNlOiBab29tU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgZWxlbWVudDogRWxlbWVudFJlZlxuICApIHtcbiAgICBzdXBlcihzdmMsIGNkciwgc2NhbGVTZXJ2aWNlLCB6b29tU2VydmljZSwgZWxlbWVudCk7XG4gICAgdGhpcy5pZCA9IChEYXRlLm5vdygpICsgTWF0aC5yYW5kb20oKSkudG9TdHJpbmcoMzYpO1xuICB9XG5cbiAgb3ZlcnJpZGUgbmdPbkluaXQoKSB7XG4gICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICB0aGlzLmFyZWFQYXRoID0gdGhpcy5zY2FsZVNlcnZpY2Uuc2NhbGVzLnBpcGUoXG4gICAgICBtYXAoZGF0YSA9PiB7XG4gICAgICAgIGNvbnN0IHsgeCwgeSB9ID0gZGF0YTtcblxuICAgICAgICB0aGlzLnggPSB4LmdldCh0aGlzLnNlcmllcy54QXhpc0luZGV4KT8uc2NhbGU7XG4gICAgICAgIHRoaXMueSA9IHkuZ2V0KHRoaXMuc2VyaWVzLnlBeGlzSW5kZXgpPy5zY2FsZTtcblxuICAgICAgICBpZiAoIXRoaXMueCB8fCAhdGhpcy55KSB7XG4gICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYXJlYSA9IGQzXG4gICAgICAgICAgLmFyZWE8QmFzZVBvaW50PigpXG4gICAgICAgICAgLmRlZmluZWQoXG4gICAgICAgICAgICBwb2ludCA9PlxuICAgICAgICAgICAgICBwb2ludC54ICE9PSBudWxsICYmXG4gICAgICAgICAgICAgIHBvaW50LnkgIT09IG51bGwgJiZcbiAgICAgICAgICAgICAgIWlzTmFOKHBvaW50LngpICYmXG4gICAgICAgICAgICAgICFpc05hTihwb2ludC55KVxuICAgICAgICAgICk7XG5cbiAgICAgICAgYXJlYVxuICAgICAgICAgIC54MShfID0+XG4gICAgICAgICAgICBfLngxICE9PSBudWxsICYmIF8ueDEgIT09IHVuZGVmaW5lZCA/IHRoaXMueChfLngxKSA6IHRoaXMueCgwKVxuICAgICAgICAgIClcbiAgICAgICAgICAueDAoXyA9PiB0aGlzLngoXy54KSlcblxuICAgICAgICAgIC55KF8gPT4gdGhpcy55KF8ueSkpO1xuXG4gICAgICAgIGNvbnN0IGZpbHRlciA9IHRoaXMuZGVmYXVsdENsaXBQb2ludHNNYXBwaW5nLmdldChcbiAgICAgICAgICB0aGlzLnNlcmllcy5jbGlwUG9pbnRzRGlyZWN0aW9uXG4gICAgICAgICk7XG4gICAgICAgIGxldCBmaWx0ZXJlZERhdGEgPSB0aGlzLnNlcmllcy5kYXRhO1xuXG4gICAgICAgIGlmICh0aGlzLnNlcmllcy5jbGlwUG9pbnRzRGlyZWN0aW9uID09PSBDbGlwUG9pbnRzRGlyZWN0aW9uLngpIHtcbiAgICAgICAgICBsZXQgW21pbiwgbWF4XSA9IHRoaXMueC5kb21haW4oKTtcblxuICAgICAgICAgIG1pbiA9IG1pbiBpbnN0YW5jZW9mIERhdGUgPyBtaW4uZ2V0VGltZSgpIDogbWluO1xuICAgICAgICAgIG1heCA9IG1heCBpbnN0YW5jZW9mIERhdGUgPyBtYXguZ2V0VGltZSgpIDogbWF4O1xuXG4gICAgICAgICAgZmlsdGVyZWREYXRhID0gZmlsdGVyZWREYXRhPy5maWx0ZXIoZmlsdGVyKG1pbiwgbWF4KSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5zZXJpZXMuY2xpcFBvaW50c0RpcmVjdGlvbiA9PT0gQ2xpcFBvaW50c0RpcmVjdGlvbi55KSB7XG4gICAgICAgICAgbGV0IFttaW4sIG1heF0gPSB0aGlzLnkuZG9tYWluKCk7XG5cbiAgICAgICAgICBtaW4gPSBtaW4gaW5zdGFuY2VvZiBEYXRlID8gbWluLmdldFRpbWUoKSA6IG1pbjtcbiAgICAgICAgICBtYXggPSBtYXggaW5zdGFuY2VvZiBEYXRlID8gbWF4LmdldFRpbWUoKSA6IG1heDtcblxuICAgICAgICAgIGZpbHRlcmVkRGF0YSA9IGZpbHRlcmVkRGF0YT8uZmlsdGVyKGZpbHRlcihtaW4sIG1heCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGFyZWEoZmlsdGVyZWREYXRhKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxufVxuIiwiQGlmIChzZXJpZXM/LmZpbGxUeXBlID09PSBmaWxsVHlwZS5ncmFkaWVudCkge1xuICA8c3ZnOmRlZnM+XG4gICAgPHN2ZzpsaW5lYXJHcmFkaWVudCBbaWRdPVwiJ2dyYWRpZW50LWZpbGwtJyArIGlkXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHgxPVwiMCVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIueTFdPVwiY29uZmlnPy5pbnZlcnRlZCB8fCBzZXJpZXM/LmZpbGxEaXJlY3Rpb24gPT09IGZpbGxEaXJlY3Rpb24ueSA/ICcwJScgOiAnMTAwJSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIueDJdPVwiY29uZmlnPy5pbnZlcnRlZCB8fCBzZXJpZXM/LmZpbGxEaXJlY3Rpb24gPT09IGZpbGxEaXJlY3Rpb24ueSA/ICcxMDAlJyA6ICcwJSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgeTI9XCIwJVwiPlxuICAgICAgPHN2ZzpzdG9wIG9mZnNldD1cIjAlXCIgW2F0dHIuc3RvcC1jb2xvcl09XCJzZXJpZXMuY29sb3JcIiBzdG9wLW9wYWNpdHk9XCIwXCI+PC9zdmc6c3RvcD5cbiAgICAgIDxzdmc6c3RvcCBvZmZzZXQ9XCI1JVwiIFthdHRyLnN0b3AtY29sb3JdPVwic2VyaWVzLmNvbG9yXCIgc3RvcC1vcGFjaXR5PVwiMC4xXCI+PC9zdmc6c3RvcD5cbiAgICAgIDxzdmc6c3RvcCBvZmZzZXQ9XCIyMCVcIiBbYXR0ci5zdG9wLWNvbG9yXT1cInNlcmllcy5jb2xvclwiIHN0b3Atb3BhY2l0eT1cIjAuMlwiPjwvc3ZnOnN0b3A+XG4gICAgICA8c3ZnOnN0b3Agb2Zmc2V0PVwiNjAlXCIgW2F0dHIuc3RvcC1jb2xvcl09XCJzZXJpZXMuY29sb3JcIiBzdG9wLW9wYWNpdHk9XCIwLjVcIj48L3N2ZzpzdG9wPlxuICAgICAgPHN2ZzpzdG9wIG9mZnNldD1cIjEwMCVcIiBbYXR0ci5zdG9wLWNvbG9yXT1cInNlcmllcy5jb2xvclwiIHN0b3Atb3BhY2l0eT1cIjAuOFwiPjwvc3ZnOnN0b3A+XG4gICAgPC9zdmc6bGluZWFyR3JhZGllbnQ+XG4gIDwvc3ZnOmRlZnM+XG59XG48c3ZnOnBhdGhcbiAgY2xhc3M9XCJhcmVhXCJcbiAgW2F0dHIuZF09XCJhcmVhUGF0aCB8IGFzeW5jXCJcbiAgW2F0dHIuc3Ryb2tlLXdpZHRoXT1cIjBcIlxuICBbYXR0ci5maWxsLW9wYWNpdHldPVwic2VyaWVzLnN0eWxlPy5maWxsT3BhY2l0eVwiXG4gIFthdHRyLmZpbGxdPVwic2VyaWVzLmZpbGxUeXBlID09PSBmaWxsVHlwZS5ncmFkaWVudCA/ICd1cmwoI2dyYWRpZW50LWZpbGwtJytpZCsnKScgOiBzZXJpZXMuc3R5bGU/LmZpbGwgPz8gc2VyaWVzLmNvbG9yXCI+XG48L3N2ZzpwYXRoPlxuPHN2ZzpwYXRoXG4gIGNsYXNzPVwiYXJlYVwiXG4gIGZpbGw9XCJub25lXCJcbiAgW2F0dHIuZF09XCJwYXRoIHwgYXN5bmNcIlxuICBbYXR0ci5zdHJva2VdPVwic2VyaWVzLmNvbG9yXCJcbiAgW2F0dHIuc3Ryb2tlLWRhc2hhcnJheV09XCJzZXJpZXMuc3R5bGU/LnN0cm9rZURhc2hhcnJheVwiXG4gIFthdHRyLnN0cm9rZS13aWR0aF09XCJzZXJpZXMuc3R5bGU/LnN0cm9rZVdpZHRoXCI+XG48L3N2ZzpwYXRoPlxuQGlmICh0cmFuc2Zvcm0gfCBhc3luYzsgYXMgdCkge1xuICBAaWYgKHQ/LnggIT0gbnVsbCAmJiB0Py55ICE9IG51bGwpIHtcbiAgICA8c3ZnOmNpcmNsZVxuICAgICAgcj1cIjNcIlxuICAgICAgW2F0dHIuZmlsbF09XCJzZXJpZXMuY29sb3JcIlxuICAgICAgW2F0dHIudHJhbnNmb3JtXT1cIid0cmFuc2xhdGUoJysgdC54ICsnLCAnKyB0LnkgKycpJ1wiPlxuICAgIDwvc3ZnOmNpcmNsZT5cbiAgfVxufVxuQGlmIChtYXJrZXJzOyBhcyBkcmFnZ2FibGVQb2ludHMpIHtcbiAgQGZvciAocG9pbnQgb2YgZHJhZ2dhYmxlUG9pbnRzOyB0cmFjayAkaW5kZXg7ICkge1xuICAgIDxzdmc6Y2lyY2xlXG4gICAgICBjbGFzcz1cIm1hcmtlclwiXG4gICAgICBbY2xhc3MuZHJhZ2dhYmxlLW1hcmtlcl09XCJwb2ludD8ubWFya2VyPy5kcmFnZ2FibGVcIlxuICAgICAgW2F0dHIucl09XCJwb2ludC5tYXJrZXIuc3R5bGU/LnJhZGl1cyA/PyA1XCJcbiAgICAgIFthdHRyLmZpbGxdPVwicG9pbnQubWFya2VyLnN0eWxlPy5maWxsID8/ICd0cmFuc3BhcmVudCdcIlxuICAgICAgW2F0dHIuc3Ryb2tlXT1cInBvaW50Lm1hcmtlci5zdHlsZT8uc3Ryb2tlID8/ICdub25lJ1wiXG4gICAgICBbYXR0ci5zdHJva2Utd2lkdGhdPVwicG9pbnQubWFya2VyLnN0eWxlPy5zdHJva2VXaWR0aFwiXG4gICAgICBbYXR0ci5zdHJva2UtZGFzaGFycmF5XT1cInBvaW50Lm1hcmtlci5zdHlsZT8uc3Ryb2tlRGFzaGFycmF5XCJcbiAgICAgIFthdHRyLmN4XT1cIngocG9pbnQueClcIlxuICAgICAgW2F0dHIuY3ldPVwieShwb2ludC55KVwiPlxuICAgIDwvc3ZnOmNpcmNsZT5cbiAgfVxufVxuXG5cblxuIl19
|
|
70
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJlYS1zZXJpZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2NoYXJ0L2NoYXJ0LWNvbnRhaW5lci9zZXJpZXMvYXJlYS1zZXJpZXMvYXJlYS1zZXJpZXMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2NoYXJ0L2NoYXJ0LWNvbnRhaW5lci9zZXJpZXMvYXJlYS1zZXJpZXMvYXJlYS1zZXJpZXMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsR0FHWCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQztBQUN6QixPQUFPLEVBQUUsR0FBRyxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBR3ZDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDeEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzlELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM5RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDekQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7OztBQVU1QyxNQUFNLE9BQU8sbUJBQ1gsU0FBUSxnQkFBbUI7SUFTM0IsWUFDcUIsR0FBaUIsRUFDakIsR0FBc0IsRUFDdEIsWUFBMEIsRUFDMUIsV0FBd0IsRUFDeEIsT0FBbUI7UUFFdEMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxPQUFPLENBQUMsQ0FBQztRQU5qQyxRQUFHLEdBQUgsR0FBRyxDQUFjO1FBQ2pCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQ3RCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLFlBQU8sR0FBUCxPQUFPLENBQVk7UUFUeEMsa0JBQWEsR0FBRyxhQUFhLENBQUM7UUFDOUIsYUFBUSxHQUFHLFFBQVEsQ0FBQztRQVdsQixJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRVEsUUFBUTtRQUNmLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLElBQUksQ0FDM0MsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ1QsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUM7WUFFdEIsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEVBQUUsS0FBSyxDQUFDO1lBQzlDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUssQ0FBQztZQUU5QyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDdkIsT0FBTyxFQUFFLENBQUM7WUFDWixDQUFDO1lBRUQsTUFBTSxJQUFJLEdBQUcsRUFBRTtpQkFDWixJQUFJLEVBQWE7aUJBQ2pCLE9BQU8sQ0FDTixLQUFLLENBQUMsRUFBRSxDQUNOLEtBQUssQ0FBQyxDQUFDLEtBQUssSUFBSTtnQkFDaEIsS0FBSyxDQUFDLENBQUMsS0FBSyxJQUFJO2dCQUNoQixDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO2dCQUNmLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FDbEIsQ0FBQztZQUVKLElBQUk7aUJBQ0QsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQ04sQ0FBQyxDQUFDLEVBQUUsS0FBSyxJQUFJLElBQUksQ0FBQyxDQUFDLEVBQUUsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUMvRDtpQkFDQSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFFcEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUV2QixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsd0JBQXdCLENBQUMsR0FBRyxDQUM5QyxJQUFJLENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUNoQyxDQUFDO1lBQ0YsSUFBSSxZQUFZLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7WUFFcEMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLG1CQUFtQixLQUFLLG1CQUFtQixDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUM5RCxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBRWpDLEdBQUcsR0FBRyxHQUFHLFlBQVksSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztnQkFDaEQsR0FBRyxHQUFHLEdBQUcsWUFBWSxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO2dCQUVoRCxZQUFZLEdBQUcsWUFBWSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDeEQsQ0FBQztZQUVELElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsS0FBSyxtQkFBbUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDOUQsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUVqQyxHQUFHLEdBQUcsR0FBRyxZQUFZLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7Z0JBQ2hELEdBQUcsR0FBRyxHQUFHLFlBQVksSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztnQkFFaEQsWUFBWSxHQUFHLFlBQVksRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ3hELENBQUM7WUFFRCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUM1QixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQzs4R0E5RVUsbUJBQW1CO2tHQUFuQixtQkFBbUIsNEdDNUJoQyxpekVBeURBLHFERGhDWSxTQUFTOzsyRkFHUixtQkFBbUI7a0JBUi9CLFNBQVM7K0JBQ0UsMkJBQTJCLGNBRzFCLElBQUksV0FDTixDQUFDLFNBQVMsQ0FBQyxtQkFDSCx1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCAqIGFzIGQzIGZyb20gJ2QzJztcbmltcG9ydCB7IG1hcCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBCYXNlUG9pbnQgfSBmcm9tICcuLi8uLi8uLi9tb2RlbC9iYXNlLXBvaW50JztcbmltcG9ydCB7IENsaXBQb2ludHNEaXJlY3Rpb24gfSBmcm9tICcuLi8uLi8uLi9tb2RlbC9lbnVtL2NsaXAtcG9pbnRzLWRpcmVjdGlvbic7XG5pbXBvcnQgeyBGaWxsRGlyZWN0aW9uLCBGaWxsVHlwZSB9IGZyb20gJy4uLy4uLy4uL21vZGVsL2VudW0vZmlsbC10eXBlJztcbmltcG9ydCB7IENoYXJ0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2UvY2hhcnQuc2VydmljZSc7XG5pbXBvcnQgeyBTY2FsZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlL3NjYWxlLnNlcnZpY2UnO1xuaW1wb3J0IHsgWm9vbVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlL3pvb20uc2VydmljZSc7XG5pbXBvcnQgeyBMaW5lYXJTZXJpZXNCYXNlIH0gZnJvbSAnLi4vbGluZWFyLXNlcmllcy1iYXNlJztcbmltcG9ydCB7IEFzeW5jUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3N2ZzpzdmdbdGV0YS1hcmVhLXNlcmllc10nLFxuICB0ZW1wbGF0ZVVybDogJy4vYXJlYS1zZXJpZXMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9hcmVhLXNlcmllcy5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOnRydWUsXG4gIGltcG9ydHM6IFtBc3luY1BpcGVdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgQXJlYVNlcmllc0NvbXBvbmVudDxUIGV4dGVuZHMgQmFzZVBvaW50PlxuICBleHRlbmRzIExpbmVhclNlcmllc0Jhc2U8VD5cbiAgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveVxue1xuICBhcmVhUGF0aDogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuXG4gIGZpbGxEaXJlY3Rpb24gPSBGaWxsRGlyZWN0aW9uO1xuICBmaWxsVHlwZSA9IEZpbGxUeXBlO1xuICBpZDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBvdmVycmlkZSBzdmM6IENoYXJ0U2VydmljZSxcbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgc2NhbGVTZXJ2aWNlOiBTY2FsZVNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIHpvb21TZXJ2aWNlOiBab29tU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgZWxlbWVudDogRWxlbWVudFJlZlxuICApIHtcbiAgICBzdXBlcihzdmMsIGNkciwgc2NhbGVTZXJ2aWNlLCB6b29tU2VydmljZSwgZWxlbWVudCk7XG4gICAgdGhpcy5pZCA9IChEYXRlLm5vdygpICsgTWF0aC5yYW5kb20oKSkudG9TdHJpbmcoMzYpO1xuICB9XG5cbiAgb3ZlcnJpZGUgbmdPbkluaXQoKSB7XG4gICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICB0aGlzLmFyZWFQYXRoID0gdGhpcy5zY2FsZVNlcnZpY2Uuc2NhbGVzLnBpcGUoXG4gICAgICBtYXAoZGF0YSA9PiB7XG4gICAgICAgIGNvbnN0IHsgeCwgeSB9ID0gZGF0YTtcblxuICAgICAgICB0aGlzLnggPSB4LmdldCh0aGlzLnNlcmllcy54QXhpc0luZGV4KT8uc2NhbGU7XG4gICAgICAgIHRoaXMueSA9IHkuZ2V0KHRoaXMuc2VyaWVzLnlBeGlzSW5kZXgpPy5zY2FsZTtcblxuICAgICAgICBpZiAoIXRoaXMueCB8fCAhdGhpcy55KSB7XG4gICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYXJlYSA9IGQzXG4gICAgICAgICAgLmFyZWE8QmFzZVBvaW50PigpXG4gICAgICAgICAgLmRlZmluZWQoXG4gICAgICAgICAgICBwb2ludCA9PlxuICAgICAgICAgICAgICBwb2ludC54ICE9PSBudWxsICYmXG4gICAgICAgICAgICAgIHBvaW50LnkgIT09IG51bGwgJiZcbiAgICAgICAgICAgICAgIWlzTmFOKHBvaW50LngpICYmXG4gICAgICAgICAgICAgICFpc05hTihwb2ludC55KVxuICAgICAgICAgICk7XG5cbiAgICAgICAgYXJlYVxuICAgICAgICAgIC54MShfID0+XG4gICAgICAgICAgICBfLngxICE9PSBudWxsICYmIF8ueDEgIT09IHVuZGVmaW5lZCA/IHRoaXMueChfLngxKSA6IHRoaXMueCgwKVxuICAgICAgICAgIClcbiAgICAgICAgICAueDAoXyA9PiB0aGlzLngoXy54KSlcblxuICAgICAgICAgIC55KF8gPT4gdGhpcy55KF8ueSkpO1xuXG4gICAgICAgIGNvbnN0IGZpbHRlciA9IHRoaXMuZGVmYXVsdENsaXBQb2ludHNNYXBwaW5nLmdldChcbiAgICAgICAgICB0aGlzLnNlcmllcy5jbGlwUG9pbnRzRGlyZWN0aW9uXG4gICAgICAgICk7XG4gICAgICAgIGxldCBmaWx0ZXJlZERhdGEgPSB0aGlzLnNlcmllcy5kYXRhO1xuXG4gICAgICAgIGlmICh0aGlzLnNlcmllcy5jbGlwUG9pbnRzRGlyZWN0aW9uID09PSBDbGlwUG9pbnRzRGlyZWN0aW9uLngpIHtcbiAgICAgICAgICBsZXQgW21pbiwgbWF4XSA9IHRoaXMueC5kb21haW4oKTtcblxuICAgICAgICAgIG1pbiA9IG1pbiBpbnN0YW5jZW9mIERhdGUgPyBtaW4uZ2V0VGltZSgpIDogbWluO1xuICAgICAgICAgIG1heCA9IG1heCBpbnN0YW5jZW9mIERhdGUgPyBtYXguZ2V0VGltZSgpIDogbWF4O1xuXG4gICAgICAgICAgZmlsdGVyZWREYXRhID0gZmlsdGVyZWREYXRhPy5maWx0ZXIoZmlsdGVyKG1pbiwgbWF4KSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5zZXJpZXMuY2xpcFBvaW50c0RpcmVjdGlvbiA9PT0gQ2xpcFBvaW50c0RpcmVjdGlvbi55KSB7XG4gICAgICAgICAgbGV0IFttaW4sIG1heF0gPSB0aGlzLnkuZG9tYWluKCk7XG5cbiAgICAgICAgICBtaW4gPSBtaW4gaW5zdGFuY2VvZiBEYXRlID8gbWluLmdldFRpbWUoKSA6IG1pbjtcbiAgICAgICAgICBtYXggPSBtYXggaW5zdGFuY2VvZiBEYXRlID8gbWF4LmdldFRpbWUoKSA6IG1heDtcblxuICAgICAgICAgIGZpbHRlcmVkRGF0YSA9IGZpbHRlcmVkRGF0YT8uZmlsdGVyKGZpbHRlcihtaW4sIG1heCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGFyZWEoZmlsdGVyZWREYXRhKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxufVxuIiwiQGlmIChzZXJpZXM/LmZpbGxUeXBlID09PSBmaWxsVHlwZS5ncmFkaWVudCkge1xuICA8c3ZnOmRlZnM+XG4gICAgPHN2ZzpsaW5lYXJHcmFkaWVudCBbaWRdPVwiJ2dyYWRpZW50LWZpbGwtJyArIGlkXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHgxPVwiMCVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIueTFdPVwiY29uZmlnPy5pbnZlcnRlZCB8fCBzZXJpZXM/LmZpbGxEaXJlY3Rpb24gPT09IGZpbGxEaXJlY3Rpb24ueSA/ICcwJScgOiAnMTAwJSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIueDJdPVwiY29uZmlnPy5pbnZlcnRlZCB8fCBzZXJpZXM/LmZpbGxEaXJlY3Rpb24gPT09IGZpbGxEaXJlY3Rpb24ueSA/ICcxMDAlJyA6ICcwJSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgeTI9XCIwJVwiPlxuICAgICAgPHN2ZzpzdG9wIG9mZnNldD1cIjAlXCIgW2F0dHIuc3RvcC1jb2xvcl09XCJzZXJpZXMuY29sb3JcIiBzdG9wLW9wYWNpdHk9XCIwXCI+PC9zdmc6c3RvcD5cbiAgICAgIDxzdmc6c3RvcCBvZmZzZXQ9XCI1JVwiIFthdHRyLnN0b3AtY29sb3JdPVwic2VyaWVzLmNvbG9yXCIgc3RvcC1vcGFjaXR5PVwiMC4xXCI+PC9zdmc6c3RvcD5cbiAgICAgIDxzdmc6c3RvcCBvZmZzZXQ9XCIyMCVcIiBbYXR0ci5zdG9wLWNvbG9yXT1cInNlcmllcy5jb2xvclwiIHN0b3Atb3BhY2l0eT1cIjAuMlwiPjwvc3ZnOnN0b3A+XG4gICAgICA8c3ZnOnN0b3Agb2Zmc2V0PVwiNjAlXCIgW2F0dHIuc3RvcC1jb2xvcl09XCJzZXJpZXMuY29sb3JcIiBzdG9wLW9wYWNpdHk9XCIwLjVcIj48L3N2ZzpzdG9wPlxuICAgICAgPHN2ZzpzdG9wIG9mZnNldD1cIjEwMCVcIiBbYXR0ci5zdG9wLWNvbG9yXT1cInNlcmllcy5jb2xvclwiIHN0b3Atb3BhY2l0eT1cIjAuOFwiPjwvc3ZnOnN0b3A+XG4gICAgPC9zdmc6bGluZWFyR3JhZGllbnQ+XG4gIDwvc3ZnOmRlZnM+XG59XG48c3ZnOnBhdGhcbiAgY2xhc3M9XCJhcmVhXCJcbiAgW2F0dHIuZF09XCJhcmVhUGF0aCB8IGFzeW5jXCJcbiAgW2F0dHIuc3Ryb2tlLXdpZHRoXT1cIjBcIlxuICBbYXR0ci5maWxsLW9wYWNpdHldPVwic2VyaWVzLnN0eWxlPy5maWxsT3BhY2l0eVwiXG4gIFthdHRyLmZpbGxdPVwic2VyaWVzLmZpbGxUeXBlID09PSBmaWxsVHlwZS5ncmFkaWVudCA/ICd1cmwoI2dyYWRpZW50LWZpbGwtJytpZCsnKScgOiBzZXJpZXMuc3R5bGU/LmZpbGwgPz8gc2VyaWVzLmNvbG9yXCI+XG48L3N2ZzpwYXRoPlxuPHN2ZzpwYXRoXG4gIGNsYXNzPVwiYXJlYVwiXG4gIGZpbGw9XCJub25lXCJcbiAgW2F0dHIuZF09XCJwYXRoIHwgYXN5bmNcIlxuICBbYXR0ci5zdHJva2VdPVwic2VyaWVzLmNvbG9yXCJcbiAgW2F0dHIuc3Ryb2tlLWRhc2hhcnJheV09XCJzZXJpZXMuc3R5bGU/LnN0cm9rZURhc2hhcnJheVwiXG4gIFthdHRyLnN0cm9rZS13aWR0aF09XCJzZXJpZXMuc3R5bGU/LnN0cm9rZVdpZHRoXCI+XG48L3N2ZzpwYXRoPlxuQGlmICh0cmFuc2Zvcm0gfCBhc3luYzsgYXMgdCkge1xuICBAaWYgKHQ/LnggIT0gbnVsbCAmJiB0Py55ICE9IG51bGwpIHtcbiAgICA8c3ZnOmNpcmNsZVxuICAgICAgcj1cIjNcIlxuICAgICAgW2F0dHIuZmlsbF09XCJzZXJpZXMuY29sb3JcIlxuICAgICAgW2F0dHIudHJhbnNmb3JtXT1cIid0cmFuc2xhdGUoJysgdC54ICsnLCAnKyB0LnkgKycpJ1wiPlxuICAgIDwvc3ZnOmNpcmNsZT5cbiAgfVxufVxuQGlmIChtYXJrZXJzOyBhcyBkcmFnZ2FibGVQb2ludHMpIHtcbiAgQGZvciAocG9pbnQgb2YgZHJhZ2dhYmxlUG9pbnRzOyB0cmFjayBwb2ludDsgKSB7XG4gICAgPHN2ZzpjaXJjbGVcbiAgICAgIGNsYXNzPVwibWFya2VyXCJcbiAgICAgIFtjbGFzcy5kcmFnZ2FibGUtbWFya2VyXT1cInBvaW50Py5tYXJrZXI/LmRyYWdnYWJsZVwiXG4gICAgICBbYXR0ci5yXT1cInBvaW50Lm1hcmtlci5zdHlsZT8ucmFkaXVzID8/IDVcIlxuICAgICAgW2F0dHIuZmlsbF09XCJwb2ludC5tYXJrZXIuc3R5bGU/LmZpbGwgPz8gJ3RyYW5zcGFyZW50J1wiXG4gICAgICBbYXR0ci5zdHJva2VdPVwicG9pbnQubWFya2VyLnN0eWxlPy5zdHJva2UgPz8gJ25vbmUnXCJcbiAgICAgIFthdHRyLnN0cm9rZS13aWR0aF09XCJwb2ludC5tYXJrZXIuc3R5bGU/LnN0cm9rZVdpZHRoXCJcbiAgICAgIFthdHRyLnN0cm9rZS1kYXNoYXJyYXldPVwicG9pbnQubWFya2VyLnN0eWxlPy5zdHJva2VEYXNoYXJyYXlcIlxuICAgICAgW2F0dHIuY3hdPVwieChwb2ludC54KVwiXG4gICAgICBbYXR0ci5jeV09XCJ5KHBvaW50LnkpXCI+XG4gICAgPC9zdmc6Y2lyY2xlPlxuICB9XG59XG5cblxuXG4iXX0=
|
|
@@ -57,12 +57,12 @@ export class BarSeriesComponent extends SeriesBaseComponent {
|
|
|
57
57
|
return typeof value === 'number';
|
|
58
58
|
}
|
|
59
59
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.1", ngImport: i0, type: BarSeriesComponent, deps: [{ token: i1.ChartService }, { token: i0.ChangeDetectorRef }, { token: i2.ScaleService }, { token: i3.ZoomService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
60
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.1", type: BarSeriesComponent, isStandalone: true, selector: "svg:svg[teta-bar-series]", usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "@if ({\n x: x | async,\n x1: x1 | async,\n y: y | async,\n barSeriesCount: barSeriesCount | async\n}; as data) {\n @if (data.x && data.y) {\n @if (data.barSeriesCount > 1) {\n @for (point of series.data; track
|
|
60
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.1", type: BarSeriesComponent, isStandalone: true, selector: "svg:svg[teta-bar-series]", usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "@if ({\n x: x | async,\n x1: x1 | async,\n y: y | async,\n barSeriesCount: barSeriesCount | async\n}; as data) {\n @if (data.x && data.y) {\n @if (data.barSeriesCount > 1) {\n @for (point of series.data; track point; ) {\n <svg:rect\n (mouseenter)=\"mouseenter(point)\"\n (mouseleave)=\"mouseleave(point)\"\n [attr.x]=\"data.x(point.x) + ((isNumber(series.id) ? series.id : 0) * data.x1.bandwidth() / data.barSeriesCount)\"\n [attr.y]=\"point.y > 0 ? data.y(point.y) : data.y(0)\"\n [attr.width]=\"data.x1.bandwidth() / data.barSeriesCount\"\n [attr.height]=\"Math.abs(data.y(point.y) - data.y(0))\"\n [attr.fill]=\"series.color\"\n ></svg:rect>\n }\n }\n @if (data.barSeriesCount === 1) {\n @for (point of series.data; track point; ) {\n <svg:rect\n (mouseenter)=\"mouseenter(point)\"\n (mouseleave)=\"mouseleave(point)\"\n [attr.x]=\"data.x(point.x)\"\n [attr.y]=\"point.y > 0 ? data.y(point.y) : data.y(0)\"\n [attr.width]=\"data.x1.bandwidth()\"\n [attr.height]=\"Math.abs(data.y(point.y) - data.y(0))\"\n [attr.fill]=\"point.color ?? series.color\"\n ></svg:rect>\n }\n }\n }\n}\n", styles: [""], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
61
61
|
}
|
|
62
62
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.1", ngImport: i0, type: BarSeriesComponent, decorators: [{
|
|
63
63
|
type: Component,
|
|
64
64
|
args: [{ selector: 'svg:svg[teta-bar-series]', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
65
65
|
AsyncPipe,
|
|
66
|
-
], template: "@if ({\n x: x | async,\n x1: x1 | async,\n y: y | async,\n barSeriesCount: barSeriesCount | async\n}; as data) {\n @if (data.x && data.y) {\n @if (data.barSeriesCount > 1) {\n @for (point of series.data; track
|
|
66
|
+
], template: "@if ({\n x: x | async,\n x1: x1 | async,\n y: y | async,\n barSeriesCount: barSeriesCount | async\n}; as data) {\n @if (data.x && data.y) {\n @if (data.barSeriesCount > 1) {\n @for (point of series.data; track point; ) {\n <svg:rect\n (mouseenter)=\"mouseenter(point)\"\n (mouseleave)=\"mouseleave(point)\"\n [attr.x]=\"data.x(point.x) + ((isNumber(series.id) ? series.id : 0) * data.x1.bandwidth() / data.barSeriesCount)\"\n [attr.y]=\"point.y > 0 ? data.y(point.y) : data.y(0)\"\n [attr.width]=\"data.x1.bandwidth() / data.barSeriesCount\"\n [attr.height]=\"Math.abs(data.y(point.y) - data.y(0))\"\n [attr.fill]=\"series.color\"\n ></svg:rect>\n }\n }\n @if (data.barSeriesCount === 1) {\n @for (point of series.data; track point; ) {\n <svg:rect\n (mouseenter)=\"mouseenter(point)\"\n (mouseleave)=\"mouseleave(point)\"\n [attr.x]=\"data.x(point.x)\"\n [attr.y]=\"point.y > 0 ? data.y(point.y) : data.y(0)\"\n [attr.width]=\"data.x1.bandwidth()\"\n [attr.height]=\"Math.abs(data.y(point.y) - data.y(0))\"\n [attr.fill]=\"point.color ?? series.color\"\n ></svg:rect>\n }\n }\n }\n}\n" }]
|
|
67
67
|
}], ctorParameters: () => [{ type: i1.ChartService }, { type: i0.ChangeDetectorRef }, { type: i2.ScaleService }, { type: i3.ZoomService }, { type: i0.ElementRef }] });
|
|
68
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
68
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFyLXNlcmllcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvY2hhcnQvY2hhcnQtY29udGFpbmVyL3Nlcmllcy9iYXIvYmFyLXNlcmllcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvY2hhcnQvY2hhcnQtY29udGFpbmVyL3Nlcmllcy9iYXIvYmFyLXNlcmllcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxHQUlYLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLHFDQUFxQyxDQUFDO0FBRXhFLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM1RCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sZ0NBQWdDLENBQUM7QUFDNUQsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBQzFELE9BQU8sRUFBQyxHQUFHLEVBQWEsTUFBTSxNQUFNLENBQUM7QUFDckMsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBQzNELE9BQU8sS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3pCLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7QUFZMUMsTUFBTSxPQUFPLGtCQUNYLFNBQVEsbUJBQXNCO0lBVzlCLFlBQ3FCLEdBQWlCLEVBQ2pCLEdBQXNCLEVBQ3RCLFlBQTBCLEVBQzFCLFdBQXdCLEVBQ3hCLE9BQW1CO1FBRXRDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFOakMsUUFBRyxHQUFILEdBQUcsQ0FBYztRQUNqQixRQUFHLEdBQUgsR0FBRyxDQUFt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QkFWOUIsU0FBUzsrQkFDRSwwQkFBMEIsY0FHeEIsSUFBSSxtQkFDQyx1QkFBdUIsQ0FBQyxNQUFNLFdBQ3RDO3dCQUNQLFNBQVM7cUJBQ1YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgT25DaGFuZ2VzLFxuICBPbkluaXQsXG4gIFNpbXBsZUNoYW5nZXMsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtTZXJpZXNCYXNlQ29tcG9uZW50fSBmcm9tICcuLi8uLi8uLi9iYXNlL3Nlcmllcy1iYXNlLmNvbXBvbmVudCc7XG5pbXBvcnQge0Jhc2VQb2ludH0gZnJvbSAnLi4vLi4vLi4vbW9kZWwvYmFzZS1wb2ludCc7XG5pbXBvcnQge0NoYXJ0U2VydmljZX0gZnJvbSAnLi4vLi4vLi4vc2VydmljZS9jaGFydC5zZXJ2aWNlJztcbmltcG9ydCB7U2NhbGVTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlL3NjYWxlLnNlcnZpY2UnO1xuaW1wb3J0IHtab29tU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vc2VydmljZS96b29tLnNlcnZpY2UnO1xuaW1wb3J0IHttYXAsIE9ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtTZXJpZXNUeXBlfSBmcm9tICcuLi8uLi8uLi9tb2RlbC9lbnVtL3Nlcmllcy10eXBlJztcbmltcG9ydCAqIGFzIGQzIGZyb20gJ2QzJztcbmltcG9ydCB7QXN5bmNQaXBlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzdmc6c3ZnW3RldGEtYmFyLXNlcmllc10nLFxuICB0ZW1wbGF0ZVVybDogJy4vYmFyLXNlcmllcy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Jhci1zZXJpZXMuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGltcG9ydHM6IFtcbiAgICBBc3luY1BpcGUsXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgQmFyU2VyaWVzQ29tcG9uZW50PFQgZXh0ZW5kcyBCYXNlUG9pbnQ+XG4gIGV4dGVuZHMgU2VyaWVzQmFzZUNvbXBvbmVudDxUPlxuICBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcblxuICB4OiBPYnNlcnZhYmxlPGFueT47XG4gIHgxOiBPYnNlcnZhYmxlPGFueT47XG4gIHk6IE9ic2VydmFibGU8YW55PjtcblxuICBiYXJTZXJpZXNDb3VudDogT2JzZXJ2YWJsZTxudW1iZXI+O1xuXG4gIE1hdGg6IGFueSA9IE1hdGg7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIHN2YzogQ2hhcnRTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBvdmVycmlkZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByb3RlY3RlZCBvdmVycmlkZSBzY2FsZVNlcnZpY2U6IFNjYWxlU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgem9vbVNlcnZpY2U6IFpvb21TZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBvdmVycmlkZSBlbGVtZW50OiBFbGVtZW50UmVmXG4gICkge1xuICAgIHN1cGVyKHN2YywgY2RyLCBzY2FsZVNlcnZpY2UsIHpvb21TZXJ2aWNlLCBlbGVtZW50KTtcbiAgfVxuXG4gIG92ZXJyaWRlIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuYmFyU2VyaWVzQ291bnQgPSB0aGlzLnN2Yy5jb25maWcucGlwZShcbiAgICAgIG1hcCgoXykgPT4ge1xuICAgICAgICBjb25zdCBjb3VudCA9IF8uc2VyaWVzLmZpbHRlcihcbiAgICAgICAgICAoXykgPT5cbiAgICAgICAgICAgIF8udHlwZSA9PT0gU2VyaWVzVHlwZS5iYXIgJiYgXy54QXhpc0luZGV4ID09PSB0aGlzLnNlcmllcy54QXhpc0luZGV4XG4gICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIGNvdW50Lmxlbmd0aDtcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHRoaXMueDEgPSB0aGlzLnNjYWxlU2VydmljZS5zY2FsZXMucGlwZShcbiAgICAgIG1hcCgoXykgPT4ge1xuICAgICAgICBjb25zdCB4ID0gXy54LmdldCh0aGlzLnNlcmllcy54QXhpc0luZGV4KT8uc2NhbGU7XG4gICAgICAgIGNvbnN0IHJhbmdlID0geC5yYW5nZSgpO1xuICAgICAgICBjb25zdCBkb21haW4gPSB0aGlzLnNlcmllcy5kYXRhLm1hcCgoXykgPT4gXy54KTtcblxuICAgICAgICByZXR1cm4gZDNcbiAgICAgICAgICAuc2NhbGVCYW5kPG51bWJlcj4oKVxuICAgICAgICAgIC5yYW5nZShbMCwgcmFuZ2VbMV1dKVxuICAgICAgICAgIC5kb21haW4oZG9tYWluKVxuICAgICAgICAgIC5wYWRkaW5nKDAuMSk7XG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLnggPSB0aGlzLnNjYWxlU2VydmljZS5zY2FsZXMucGlwZShcbiAgICAgIG1hcCgoXykgPT4gXy54LmdldCh0aGlzLnNlcmllcy54QXhpc0luZGV4KT8uc2NhbGUpXG4gICAgKTtcblxuICAgIHRoaXMueSA9IHRoaXMuc2NhbGVTZXJ2aWNlLnNjYWxlcy5waXBlKFxuICAgICAgbWFwKChfKSA9PiBfLnkuZ2V0KHRoaXMuc2VyaWVzLnlBeGlzSW5kZXgpPy5zY2FsZSlcbiAgICApO1xuICB9XG5cbiAgbW91c2VlbnRlcihwb2ludDogQmFzZVBvaW50KSB7XG4gICAgdGhpcy5zdmMuc2V0VG9vbHRpcCh7XG4gICAgICBwb2ludDogcG9pbnQsXG4gICAgICBzZXJpZXM6IHRoaXMuc2VyaWVzLFxuICAgIH0pO1xuICB9XG5cbiAgbW91c2VsZWF2ZShwb2ludDogQmFzZVBvaW50KSB7XG4gICAgdGhpcy5zdmMuc2V0VG9vbHRpcCh7XG4gICAgICBwb2ludDogbnVsbCxcbiAgICAgIHNlcmllczogdGhpcy5zZXJpZXMsXG4gICAgfSk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gIH1cblxuICBpc051bWJlcih2YWx1ZTogYW55KTogdmFsdWUgaXMgbnVtYmVyIHtcbiAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJ1xuICB9XG59XG4iLCJAaWYgKHtcbiAgeDogeCB8IGFzeW5jLFxuICB4MTogeDEgfCBhc3luYyxcbiAgeTogeSB8IGFzeW5jLFxuICBiYXJTZXJpZXNDb3VudDogYmFyU2VyaWVzQ291bnQgfCBhc3luY1xufTsgYXMgZGF0YSkge1xuICBAaWYgKGRhdGEueCAmJiBkYXRhLnkpIHtcbiAgICBAaWYgKGRhdGEuYmFyU2VyaWVzQ291bnQgPiAxKSB7XG4gICAgICBAZm9yIChwb2ludCBvZiBzZXJpZXMuZGF0YTsgdHJhY2sgcG9pbnQ7ICkge1xuICAgICAgICA8c3ZnOnJlY3RcbiAgICAgICAgICAobW91c2VlbnRlcik9XCJtb3VzZWVudGVyKHBvaW50KVwiXG4gICAgICAgICAgKG1vdXNlbGVhdmUpPVwibW91c2VsZWF2ZShwb2ludClcIlxuICAgICAgICAgIFthdHRyLnhdPVwiZGF0YS54KHBvaW50LngpICsgKChpc051bWJlcihzZXJpZXMuaWQpID8gc2VyaWVzLmlkIDogMCkgKiBkYXRhLngxLmJhbmR3aWR0aCgpIC8gZGF0YS5iYXJTZXJpZXNDb3VudClcIlxuICAgICAgICAgIFthdHRyLnldPVwicG9pbnQueSA+IDAgPyBkYXRhLnkocG9pbnQueSkgOiBkYXRhLnkoMClcIlxuICAgICAgICAgIFthdHRyLndpZHRoXT1cImRhdGEueDEuYmFuZHdpZHRoKCkgLyBkYXRhLmJhclNlcmllc0NvdW50XCJcbiAgICAgICAgICBbYXR0ci5oZWlnaHRdPVwiTWF0aC5hYnMoZGF0YS55KHBvaW50LnkpIC0gZGF0YS55KDApKVwiXG4gICAgICAgICAgW2F0dHIuZmlsbF09XCJzZXJpZXMuY29sb3JcIlxuICAgICAgICA+PC9zdmc6cmVjdD5cbiAgICAgIH1cbiAgICB9XG4gICAgQGlmIChkYXRhLmJhclNlcmllc0NvdW50ID09PSAxKSB7XG4gICAgICBAZm9yIChwb2ludCBvZiBzZXJpZXMuZGF0YTsgdHJhY2sgcG9pbnQ7ICkge1xuICAgICAgICA8c3ZnOnJlY3RcbiAgICAgICAgICAobW91c2VlbnRlcik9XCJtb3VzZWVudGVyKHBvaW50KVwiXG4gICAgICAgICAgKG1vdXNlbGVhdmUpPVwibW91c2VsZWF2ZShwb2ludClcIlxuICAgICAgICAgIFthdHRyLnhdPVwiZGF0YS54KHBvaW50LngpXCJcbiAgICAgICAgICBbYXR0ci55XT1cInBvaW50LnkgPiAwID8gZGF0YS55KHBvaW50LnkpIDogZGF0YS55KDApXCJcbiAgICAgICAgICBbYXR0ci53aWR0aF09XCJkYXRhLngxLmJhbmR3aWR0aCgpXCJcbiAgICAgICAgICBbYXR0ci5oZWlnaHRdPVwiTWF0aC5hYnMoZGF0YS55KHBvaW50LnkpIC0gZGF0YS55KDApKVwiXG4gICAgICAgICAgW2F0dHIuZmlsbF09XCJwb2ludC5jb2xvciA/PyBzZXJpZXMuY29sb3JcIlxuICAgICAgICA+PC9zdmc6cmVjdD5cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==
|