@tetacom/svg-charts 1.5.2 → 1.6.0

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.
Files changed (34) hide show
  1. package/chart/chart-container/chart-container.component.d.ts +0 -1
  2. package/chart/directives/zoomable.directive.d.ts +1 -0
  3. package/esm2022/chart/base/series-base.component.mjs +3 -3
  4. package/esm2022/chart/chart/chart.component.mjs +6 -7
  5. package/esm2022/chart/chart-container/annotation/annotation.component.mjs +6 -7
  6. package/esm2022/chart/chart-container/chart-container.component.mjs +6 -11
  7. package/esm2022/chart/chart-container/crosshair/crosshair.component.mjs +6 -7
  8. package/esm2022/chart/chart-container/gridlines/gridlines.component.mjs +6 -8
  9. package/esm2022/chart/chart-container/plotband/plot-band.component.mjs +5 -8
  10. package/esm2022/chart/chart-container/plotline/plotline.component.mjs +5 -6
  11. package/esm2022/chart/chart-container/series/area-series/area-series.component.mjs +6 -6
  12. package/esm2022/chart/chart-container/series/bar/bar-series.component.mjs +8 -9
  13. package/esm2022/chart/chart-container/series/block-area-series/block-area-series.component.mjs +6 -8
  14. package/esm2022/chart/chart-container/series/block-horizontal-series/block-horizontal-series.component.mjs +7 -8
  15. package/esm2022/chart/chart-container/series/block-series/block-series.component.mjs +6 -8
  16. package/esm2022/chart/chart-container/series/line/line-series.component.mjs +6 -8
  17. package/esm2022/chart/chart-container/series/linear-series-base.mjs +3 -3
  18. package/esm2022/chart/chart-container/series/scatter-series/scatter-series.component.mjs +6 -8
  19. package/esm2022/chart/chart-container/series-host/series-host.component.mjs +3 -3
  20. package/esm2022/chart/chart-container/tooltip/tooltip.component.mjs +6 -8
  21. package/esm2022/chart/chart-container/x-axis/x-axis.component.mjs +6 -8
  22. package/esm2022/chart/chart-container/y-axis/y-axis.component.mjs +6 -8
  23. package/esm2022/chart/directives/brushable.directive.mjs +3 -3
  24. package/esm2022/chart/directives/draggable-point.directive.mjs +3 -3
  25. package/esm2022/chart/directives/zoomable.directive.mjs +3 -3
  26. package/esm2022/chart/legend/legend.component.mjs +3 -3
  27. package/esm2022/chart/service/broadcast.service.mjs +3 -3
  28. package/esm2022/chart/service/brush.service.mjs +3 -3
  29. package/esm2022/chart/service/chart.service.mjs +3 -3
  30. package/esm2022/chart/service/scale.service.mjs +3 -3
  31. package/esm2022/chart/service/zoom.service.mjs +3 -3
  32. package/fesm2022/tetacom-svg-charts.mjs +108 -136
  33. package/fesm2022/tetacom-svg-charts.mjs.map +1 -1
  34. package/package.json +1 -1
@@ -2,7 +2,7 @@ import { ChangeDetectorRef, Component, Input } from '@angular/core';
2
2
  import { ScaleService } from "../../service/scale.service";
3
3
  import { map, tap } from "rxjs";
4
4
  import { ChartService } from "../../service/chart.service";
5
- import { AsyncPipe, NgIf } from '@angular/common';
5
+ import { AsyncPipe } from '@angular/common';
6
6
  import * as i0 from "@angular/core";
7
7
  import * as i1 from "../../service/scale.service";
8
8
  import * as i2 from "../../service/chart.service";
@@ -24,16 +24,15 @@ export class CrosshairComponent {
24
24
  });
25
25
  }));
26
26
  }
27
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: CrosshairComponent, deps: [{ token: i1.ScaleService }, { token: i2.ChartService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
28
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.5", type: CrosshairComponent, isStandalone: true, selector: "[teta-crosshair]", inputs: { size: "size" }, ngImport: i0, template: "<ng-container *ngIf=\"transform | async as t\">\n <svg:line [attr.x1]=\"t.x\" y1=\"0\" [attr.x2]=\"t.x\" [attr.y2]=\"size.height\" stroke=\"var(--color-text-90)\" stroke-width=\"0.5\"></svg:line>\n <svg:line x1=\"0\" [attr.y1]=\"t.y\" [attr.x2]=\"size.width\" [attr.y2]=\"t.y\" stroke=\"var(--color-text-90)\" stroke-width=\"0.5\"></svg:line>\n</ng-container>\n", styles: [":host{shape-rendering:crispEdges;pointer-events:none}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
27
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.1", ngImport: i0, type: CrosshairComponent, deps: [{ token: i1.ScaleService }, { token: i2.ChartService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
28
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.1", type: CrosshairComponent, isStandalone: true, selector: "[teta-crosshair]", inputs: { size: "size" }, ngImport: i0, template: "@if (transform | async; as t) {\n <svg:line [attr.x1]=\"t.x\" y1=\"0\" [attr.x2]=\"t.x\" [attr.y2]=\"size.height\" stroke=\"var(--color-text-90)\"\n stroke-width=\"0.5\"></svg:line>\n <svg:line x1=\"0\" [attr.y1]=\"t.y\" [attr.x2]=\"size.width\" [attr.y2]=\"t.y\" stroke=\"var(--color-text-90)\"\n stroke-width=\"0.5\"></svg:line>\n}\n", styles: [":host{shape-rendering:crispEdges;pointer-events:none}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }] }); }
29
29
  }
30
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: CrosshairComponent, decorators: [{
30
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.1", ngImport: i0, type: CrosshairComponent, decorators: [{
31
31
  type: Component,
32
32
  args: [{ selector: '[teta-crosshair]', standalone: true, imports: [
33
33
  AsyncPipe,
34
- NgIf
35
- ], template: "<ng-container *ngIf=\"transform | async as t\">\n <svg:line [attr.x1]=\"t.x\" y1=\"0\" [attr.x2]=\"t.x\" [attr.y2]=\"size.height\" stroke=\"var(--color-text-90)\" stroke-width=\"0.5\"></svg:line>\n <svg:line x1=\"0\" [attr.y1]=\"t.y\" [attr.x2]=\"size.width\" [attr.y2]=\"t.y\" stroke=\"var(--color-text-90)\" stroke-width=\"0.5\"></svg:line>\n</ng-container>\n", styles: [":host{shape-rendering:crispEdges;pointer-events:none}\n"] }]
34
+ ], template: "@if (transform | async; as t) {\n <svg:line [attr.x1]=\"t.x\" y1=\"0\" [attr.x2]=\"t.x\" [attr.y2]=\"size.height\" stroke=\"var(--color-text-90)\"\n stroke-width=\"0.5\"></svg:line>\n <svg:line x1=\"0\" [attr.y1]=\"t.y\" [attr.x2]=\"size.width\" [attr.y2]=\"t.y\" stroke=\"var(--color-text-90)\"\n stroke-width=\"0.5\"></svg:line>\n}\n", styles: [":host{shape-rendering:crispEdges;pointer-events:none}\n"] }]
36
35
  }], ctorParameters: () => [{ type: i1.ScaleService }, { type: i2.ChartService }, { type: i0.ChangeDetectorRef }], propDecorators: { size: [{
37
36
  type: Input
38
37
  }] } });
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3Jvc3NoYWlyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jaGFydC9jaGFydC1jb250YWluZXIvY3Jvc3NoYWlyL2Nyb3NzaGFpci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvY2hhcnQvY2hhcnQtY29udGFpbmVyL2Nyb3NzaGFpci9jcm9zc2hhaXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVMsTUFBTSxlQUFlLENBQUM7QUFDMUUsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQ3pELE9BQU8sRUFBQyxHQUFHLEVBQWMsR0FBRyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzFDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsU0FBUyxFQUFXLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7O0FBWTNELE1BQU0sT0FBTyxrQkFBa0I7SUFLN0IsWUFBb0IsWUFBMEIsRUFBVSxZQUEwQixFQUFVLEdBQXNCO1FBQTlGLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQVUsaUJBQVksR0FBWixZQUFZLENBQWM7UUFBVSxRQUFHLEdBQUgsR0FBRyxDQUFtQjtJQUNsSCxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUNqRCxHQUFHLENBQUMsQ0FBQyxLQUFtQixFQUFFLEVBQUU7WUFDMUIsT0FBTztnQkFDTCxDQUFDLEVBQUUsS0FBSyxDQUFDLElBQUksS0FBSyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTztnQkFDdEQsQ0FBQyxFQUFFLEtBQUssQ0FBQyxJQUFJLEtBQUssWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU87YUFDdkQsQ0FBQTtRQUNILENBQUMsQ0FBQyxFQUNGLEdBQUcsQ0FBQyxHQUFHLEVBQUU7WUFDUCxVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUNkLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDM0IsQ0FBQyxDQUFDLENBQUE7UUFFSixDQUFDLENBQUMsQ0FDSCxDQUFBO0lBRUgsQ0FBQzs4R0F4QlUsa0JBQWtCO2tHQUFsQixrQkFBa0Isc0dDaEIvQiw2V0FJQSw0R0RRSSxTQUFTLDhDQUNULElBQUk7OzJGQUdLLGtCQUFrQjtrQkFWOUIsU0FBUzsrQkFDRSxrQkFBa0IsY0FHaEIsSUFBSSxXQUNQO3dCQUNQLFNBQVM7d0JBQ1QsSUFBSTtxQkFDTDs0SUFJUSxJQUFJO3NCQUFaLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIElucHV0LCBPbkluaXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtTY2FsZVNlcnZpY2V9IGZyb20gXCIuLi8uLi9zZXJ2aWNlL3NjYWxlLnNlcnZpY2VcIjtcbmltcG9ydCB7bWFwLCBPYnNlcnZhYmxlLCB0YXB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQge0NoYXJ0U2VydmljZX0gZnJvbSBcIi4uLy4uL3NlcnZpY2UvY2hhcnQuc2VydmljZVwiO1xuaW1wb3J0IHsgQXN5bmNQaXBlLCBOZ0Zvck9mLCBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnW3RldGEtY3Jvc3NoYWlyXScsXG4gIHRlbXBsYXRlVXJsOiAnLi9jcm9zc2hhaXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jcm9zc2hhaXIuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIEFzeW5jUGlwZSxcbiAgICBOZ0lmXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgQ3Jvc3NoYWlyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBASW5wdXQoKSBzaXplOiBET01SZWN0O1xuICB0cmFuc2Zvcm06IE9ic2VydmFibGU8YW55PjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHNjYWxlU2VydmljZTogU2NhbGVTZXJ2aWNlLCBwcml2YXRlIGNoYXJ0U2VydmljZTogQ2hhcnRTZXJ2aWNlLCBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMudHJhbnNmb3JtID0gdGhpcy5jaGFydFNlcnZpY2UucG9pbnRlck1vdmUucGlwZShcbiAgICAgIG1hcCgoZXZlbnQ6IFBvaW50ZXJFdmVudCkgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHg6IGV2ZW50LnR5cGUgPT09ICdtb3VzZWxlYXZlJyA/IC05OTk5IDogZXZlbnQub2Zmc2V0WCxcbiAgICAgICAgICB5OiBldmVudC50eXBlID09PSAnbW91c2VsZWF2ZScgPyAtOTk5OSA6IGV2ZW50Lm9mZnNldFlcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICB0YXAoKCkgPT4ge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH0pXG5cbiAgICAgIH0pXG4gICAgKVxuXG4gIH1cblxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cInRyYW5zZm9ybSB8IGFzeW5jIGFzIHRcIj5cbiAgPHN2ZzpsaW5lIFthdHRyLngxXT1cInQueFwiIHkxPVwiMFwiIFthdHRyLngyXT1cInQueFwiIFthdHRyLnkyXT1cInNpemUuaGVpZ2h0XCIgc3Ryb2tlPVwidmFyKC0tY29sb3ItdGV4dC05MClcIiBzdHJva2Utd2lkdGg9XCIwLjVcIj48L3N2ZzpsaW5lPlxuICA8c3ZnOmxpbmUgeDE9XCIwXCIgW2F0dHIueTFdPVwidC55XCIgW2F0dHIueDJdPVwic2l6ZS53aWR0aFwiIFthdHRyLnkyXT1cInQueVwiIHN0cm9rZT1cInZhcigtLWNvbG9yLXRleHQtOTApXCIgc3Ryb2tlLXdpZHRoPVwiMC41XCI+PC9zdmc6bGluZT5cbjwvbmctY29udGFpbmVyPlxuIl19
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3Jvc3NoYWlyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jaGFydC9jaGFydC1jb250YWluZXIvY3Jvc3NoYWlyL2Nyb3NzaGFpci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvY2hhcnQvY2hhcnQtY29udGFpbmVyL2Nyb3NzaGFpci9jcm9zc2hhaXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVMsTUFBTSxlQUFlLENBQUM7QUFDMUUsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQ3pELE9BQU8sRUFBQyxHQUFHLEVBQWMsR0FBRyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzFDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUN6RCxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0saUJBQWlCLENBQUM7Ozs7QUFXMUMsTUFBTSxPQUFPLGtCQUFrQjtJQUs3QixZQUFvQixZQUEwQixFQUFVLFlBQTBCLEVBQVUsR0FBc0I7UUFBOUYsaUJBQVksR0FBWixZQUFZLENBQWM7UUFBVSxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUFVLFFBQUcsR0FBSCxHQUFHLENBQW1CO0lBQ2xILENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQ2pELEdBQUcsQ0FBQyxDQUFDLEtBQW1CLEVBQUUsRUFBRTtZQUMxQixPQUFPO2dCQUNMLENBQUMsRUFBRSxLQUFLLENBQUMsSUFBSSxLQUFLLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPO2dCQUN0RCxDQUFDLEVBQUUsS0FBSyxDQUFDLElBQUksS0FBSyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTzthQUN2RCxDQUFBO1FBQ0gsQ0FBQyxDQUFDLEVBQ0YsR0FBRyxDQUFDLEdBQUcsRUFBRTtZQUNQLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUMzQixDQUFDLENBQUMsQ0FBQTtRQUVKLENBQUMsQ0FBQyxDQUNILENBQUE7SUFFSCxDQUFDOzhHQXhCVSxrQkFBa0I7a0dBQWxCLGtCQUFrQixzR0NmL0IseVdBTUEsNEdETUksU0FBUzs7MkZBR0Esa0JBQWtCO2tCQVQ5QixTQUFTOytCQUNFLGtCQUFrQixjQUdoQixJQUFJLFdBQ1A7d0JBQ1AsU0FBUztxQkFDVjs0SUFJUSxJQUFJO3NCQUFaLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIElucHV0LCBPbkluaXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtTY2FsZVNlcnZpY2V9IGZyb20gXCIuLi8uLi9zZXJ2aWNlL3NjYWxlLnNlcnZpY2VcIjtcbmltcG9ydCB7bWFwLCBPYnNlcnZhYmxlLCB0YXB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQge0NoYXJ0U2VydmljZX0gZnJvbSBcIi4uLy4uL3NlcnZpY2UvY2hhcnQuc2VydmljZVwiO1xuaW1wb3J0IHtBc3luY1BpcGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ1t0ZXRhLWNyb3NzaGFpcl0nLFxuICB0ZW1wbGF0ZVVybDogJy4vY3Jvc3NoYWlyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY3Jvc3NoYWlyLmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBBc3luY1BpcGUsXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgQ3Jvc3NoYWlyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBASW5wdXQoKSBzaXplOiBET01SZWN0O1xuICB0cmFuc2Zvcm06IE9ic2VydmFibGU8YW55PjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHNjYWxlU2VydmljZTogU2NhbGVTZXJ2aWNlLCBwcml2YXRlIGNoYXJ0U2VydmljZTogQ2hhcnRTZXJ2aWNlLCBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMudHJhbnNmb3JtID0gdGhpcy5jaGFydFNlcnZpY2UucG9pbnRlck1vdmUucGlwZShcbiAgICAgIG1hcCgoZXZlbnQ6IFBvaW50ZXJFdmVudCkgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHg6IGV2ZW50LnR5cGUgPT09ICdtb3VzZWxlYXZlJyA/IC05OTk5IDogZXZlbnQub2Zmc2V0WCxcbiAgICAgICAgICB5OiBldmVudC50eXBlID09PSAnbW91c2VsZWF2ZScgPyAtOTk5OSA6IGV2ZW50Lm9mZnNldFlcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICB0YXAoKCkgPT4ge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH0pXG5cbiAgICAgIH0pXG4gICAgKVxuXG4gIH1cblxufVxuIiwiQGlmICh0cmFuc2Zvcm0gfCBhc3luYzsgYXMgdCkge1xuICA8c3ZnOmxpbmUgW2F0dHIueDFdPVwidC54XCIgeTE9XCIwXCIgW2F0dHIueDJdPVwidC54XCIgW2F0dHIueTJdPVwic2l6ZS5oZWlnaHRcIiBzdHJva2U9XCJ2YXIoLS1jb2xvci10ZXh0LTkwKVwiXG4gICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIwLjVcIj48L3N2ZzpsaW5lPlxuICA8c3ZnOmxpbmUgeDE9XCIwXCIgW2F0dHIueTFdPVwidC55XCIgW2F0dHIueDJdPVwic2l6ZS53aWR0aFwiIFthdHRyLnkyXT1cInQueVwiIHN0cm9rZT1cInZhcigtLWNvbG9yLXRleHQtOTApXCJcbiAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjAuNVwiPjwvc3ZnOmxpbmU+XG59XG4iXX0=
@@ -3,7 +3,7 @@ import { ScaleService } from "../../service/scale.service";
3
3
  import { map, withLatestFrom } from "rxjs";
4
4
  import { ChartService } from "../../service/chart.service";
5
5
  import { generateTicks } from "../../core/utils/generate-ticks";
6
- import { AsyncPipe, NgForOf, NgIf } from '@angular/common';
6
+ import { AsyncPipe } from '@angular/common';
7
7
  import * as i0 from "@angular/core";
8
8
  import * as i1 from "../../service/scale.service";
9
9
  import * as i2 from "../../service/chart.service";
@@ -27,17 +27,15 @@ export class GridlinesComponent {
27
27
  }
28
28
  ngAfterViewInit() {
29
29
  }
30
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: GridlinesComponent, deps: [{ token: i1.ScaleService }, { token: i2.ChartService }], target: i0.ɵɵFactoryTarget.Component }); }
31
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.5", type: GridlinesComponent, isStandalone: true, selector: "[teta-gridlines]", inputs: { size: "size" }, ngImport: i0, template: "<ng-container *ngIf=\"{\n xValues: tickXValues | async,\n yValues: tickYValues | async,\n x: x | async,\n y: y | async,\n config: config | async\n} as data\">\n <ng-container *ngIf=\"data.y && data.config.gridLines?.showY !== false\">\n <ng-container *ngFor=\"let tick of data.yValues\">\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 </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"data.x && data.config.gridLines?.showX !== false\">\n <ng-container *ngFor=\"let tick of data.xValues\">\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 </ng-container>\n </ng-container>\n\n</ng-container>\n\n\n", styles: [":host{shape-rendering:crispEdges}:host line{stroke:var(--color-text-5)}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
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 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
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: GridlinesComponent, decorators: [{
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
- NgForOf,
38
- NgIf
39
- ], template: "<ng-container *ngIf=\"{\n xValues: tickXValues | async,\n yValues: tickYValues | async,\n x: x | async,\n y: y | async,\n config: config | async\n} as data\">\n <ng-container *ngIf=\"data.y && data.config.gridLines?.showY !== false\">\n <ng-container *ngFor=\"let tick of data.yValues\">\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 </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"data.x && data.config.gridLines?.showX !== false\">\n <ng-container *ngFor=\"let tick of data.xValues\">\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 </ng-container>\n </ng-container>\n\n</ng-container>\n\n\n", styles: [":host{shape-rendering:crispEdges}:host line{stroke:var(--color-text-5)}\n"] }]
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"] }]
40
38
  }], ctorParameters: () => [{ type: i1.ScaleService }, { type: i2.ChartService }], propDecorators: { size: [{
41
39
  type: Input
42
40
  }] } });
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZGxpbmVzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jaGFydC9jaGFydC1jb250YWluZXIvZ3JpZGxpbmVzL2dyaWRsaW5lcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvY2hhcnQvY2hhcnQtY29udGFpbmVyL2dyaWRsaW5lcy9ncmlkbGluZXMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixTQUFTLEVBQUUsS0FBSyxHQUNqQixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFDekQsT0FBTyxFQUFDLEdBQUcsRUFBYyxjQUFjLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFckQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQ3pELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUU5RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7OztBQWMzRCxNQUFNLE9BQU8sa0JBQWtCO0lBVTdCLFlBQW9CLEdBQWlCLEVBQVUsWUFBMEI7UUFBckQsUUFBRyxHQUFILEdBQUcsQ0FBYztRQUFVLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQ3ZFLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUM7UUFFdkMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQ3JDLGNBQWMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQzNCLEdBQUcsQ0FBQyxDQUFDLENBQTZCLEVBQUUsRUFBRTtZQUNwQyxNQUFNLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUMzQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7WUFDcEMsT0FBTyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUMsRUFBRSxVQUFVLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxFQUFFLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFTixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FDckMsY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFDM0IsR0FBRyxDQUFDLENBQUMsQ0FBNkIsRUFBRSxFQUFFO1lBQ3BDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzNCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztZQUNuQyxPQUFPLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxFQUFFLFVBQVUsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLEVBQUUsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdEssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVOLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUM3RCxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVELGVBQWU7SUFFZixDQUFDOzhHQW5DVSxrQkFBa0I7a0dBQWxCLGtCQUFrQixzR0MxQi9CLCs0QkE0QkEsOEhEUEksU0FBUyw4Q0FDVCxPQUFPLG1IQUNQLElBQUk7OzJGQUdLLGtCQUFrQjtrQkFaOUIsU0FBUzsrQkFDRSxrQkFBa0IsY0FHaEIsSUFBSSxtQkFDQyx1QkFBdUIsQ0FBQyxNQUFNLFdBQ3RDO3dCQUNQLFNBQVM7d0JBQ1QsT0FBTzt3QkFDUCxJQUFJO3FCQUNMOzRHQUlRLElBQUk7c0JBQVosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsIElucHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtTY2FsZVNlcnZpY2V9IGZyb20gXCIuLi8uLi9zZXJ2aWNlL3NjYWxlLnNlcnZpY2VcIjtcbmltcG9ydCB7bWFwLCBPYnNlcnZhYmxlLCB3aXRoTGF0ZXN0RnJvbX0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7SUNoYXJ0Q29uZmlnfSBmcm9tIFwiLi4vLi4vbW9kZWwvaS1jaGFydC1jb25maWdcIjtcbmltcG9ydCB7Q2hhcnRTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vc2VydmljZS9jaGFydC5zZXJ2aWNlXCI7XG5pbXBvcnQge2dlbmVyYXRlVGlja3N9IGZyb20gXCIuLi8uLi9jb3JlL3V0aWxzL2dlbmVyYXRlLXRpY2tzXCI7XG5pbXBvcnQge0lTY2FsZXNNYXB9IGZyb20gXCIuLi8uLi9tb2RlbC9pLXNjYWxlcy1tYXBcIjtcbmltcG9ydCB7IEFzeW5jUGlwZSwgTmdGb3JPZiwgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ1t0ZXRhLWdyaWRsaW5lc10nLFxuICB0ZW1wbGF0ZVVybDogJy4vZ3JpZGxpbmVzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZ3JpZGxpbmVzLmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbXBvcnRzOiBbXG4gICAgQXN5bmNQaXBlLFxuICAgIE5nRm9yT2YsXG4gICAgTmdJZlxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEdyaWRsaW5lc0NvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuXG4gIEBJbnB1dCgpIHNpemU6IERPTVJlY3Q7XG5cbiAgY29uZmlnOiBPYnNlcnZhYmxlPElDaGFydENvbmZpZz47XG4gIHRpY2tZVmFsdWVzOiBPYnNlcnZhYmxlPG51bWJlcltdPjtcbiAgdGlja1hWYWx1ZXM6IE9ic2VydmFibGU8bnVtYmVyW10+O1xuICB4OiBPYnNlcnZhYmxlPGFueT47XG4gIHk6IE9ic2VydmFibGU8YW55PjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHN2YzogU2NhbGVTZXJ2aWNlLCBwcml2YXRlIGNoYXJ0U2VydmljZTogQ2hhcnRTZXJ2aWNlKSB7XG4gICAgdGhpcy5jb25maWcgPSB0aGlzLmNoYXJ0U2VydmljZS5jb25maWc7XG5cbiAgICB0aGlzLnRpY2tZVmFsdWVzID0gdGhpcy5zdmMuc2NhbGVzLnBpcGUoXG4gICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLmNvbmZpZyksXG4gICAgICBtYXAoKF86IFtJU2NhbGVzTWFwLCBJQ2hhcnRDb25maWddKSA9PiB7XG4gICAgICAgIGNvbnN0IFtzY2FsZXMsIGNvbmZpZ10gPSBfO1xuICAgICAgICBjb25zdCByYXRpbyA9IHRoaXMuc2l6ZS5oZWlnaHQgLyA0MDtcbiAgICAgICAgcmV0dXJuIGNvbmZpZy5ncmlkTGluZXM/Lnk/LnRpY2tzQ291bnQgIT0gbnVsbCA/IGdlbmVyYXRlVGlja3Moc2NhbGVzLnkuZ2V0KDApLnNjYWxlLmRvbWFpbigpLCBjb25maWcuZ3JpZExpbmVzPy55Py50aWNrc0NvdW50KSA6IHNjYWxlcy55LmdldCgwKT8uc2NhbGUudGlja3MocmF0aW8pO1xuICAgICAgfSkpO1xuXG4gICAgdGhpcy50aWNrWFZhbHVlcyA9IHRoaXMuc3ZjLnNjYWxlcy5waXBlKFxuICAgICAgd2l0aExhdGVzdEZyb20odGhpcy5jb25maWcpLFxuICAgICAgbWFwKChfOiBbSVNjYWxlc01hcCwgSUNoYXJ0Q29uZmlnXSkgPT4ge1xuICAgICAgICBjb25zdCBbc2NhbGVzLCBjb25maWddID0gXztcbiAgICAgICAgY29uc3QgcmF0aW8gPSB0aGlzLnNpemUud2lkdGggLyA0MDtcbiAgICAgICAgcmV0dXJuIGNvbmZpZy5ncmlkTGluZXM/Lng/LnRpY2tzQ291bnQgIT0gbnVsbCA/IGdlbmVyYXRlVGlja3Moc2NhbGVzLnguZ2V0KDApLm9yaWdpbkRvbWFpbiwgY29uZmlnLmdyaWRMaW5lcz8ueD8udGlja3NDb3VudCkgOiBzY2FsZXMueC5nZXQoMCk/LnNjYWxlLnRpY2tzKHJhdGlvKTtcbiAgICAgIH0pKTtcblxuICAgIHRoaXMueSA9IHRoaXMuc3ZjLnNjYWxlcy5waXBlKG1hcCgoXykgPT4gXy55LmdldCgwKT8uc2NhbGUpKTtcbiAgICB0aGlzLnggPSB0aGlzLnN2Yy5zY2FsZXMucGlwZShtYXAoKF8pID0+IF8ueC5nZXQoMCk/LnNjYWxlKSk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG5cbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cIntcbiAgeFZhbHVlczogdGlja1hWYWx1ZXMgfCBhc3luYyxcbiAgeVZhbHVlczogdGlja1lWYWx1ZXMgfCBhc3luYyxcbiAgeDogeCB8IGFzeW5jLFxuICB5OiB5IHwgYXN5bmMsXG4gIGNvbmZpZzogY29uZmlnIHwgYXN5bmNcbn0gYXMgZGF0YVwiPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGF0YS55ICYmIGRhdGEuY29uZmlnLmdyaWRMaW5lcz8uc2hvd1kgIT09IGZhbHNlXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgdGljayBvZiBkYXRhLnlWYWx1ZXNcIj5cbiAgICAgIDxzdmc6bGluZSBbYXR0ci54MV09XCIwXCJcbiAgICAgICAgICAgICAgICBbYXR0ci55MV09XCJkYXRhLnkodGljaykgfHwgMVwiXG4gICAgICAgICAgICAgICAgW2F0dHIueDJdPVwic2l6ZT8ud2lkdGhcIlxuICAgICAgICAgICAgICAgIFthdHRyLnkyXT1cImRhdGEueSh0aWNrKSB8fCAxXCI+PC9zdmc6bGluZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRhdGEueCAmJiBkYXRhLmNvbmZpZy5ncmlkTGluZXM/LnNob3dYICE9PSBmYWxzZVwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHRpY2sgb2YgZGF0YS54VmFsdWVzXCI+XG4gICAgICA8c3ZnOmxpbmUgW2F0dHIueDFdPVwiZGF0YS54KHRpY2spIHx8IDFcIlxuICAgICAgICAgICAgICAgIFthdHRyLnkxXT1cIjBcIlxuICAgICAgICAgICAgICAgIFthdHRyLngyXT1cImRhdGEueCh0aWNrKSB8fCAxXCJcbiAgICAgICAgICAgICAgICBbYXR0ci55Ml09XCJzaXplPy5oZWlnaHRcIj48L3N2ZzpsaW5lPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cblxuPC9uZy1jb250YWluZXI+XG5cblxuIl19
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZGxpbmVzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jaGFydC9jaGFydC1jb250YWluZXIvZ3JpZGxpbmVzL2dyaWRsaW5lcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvY2hhcnQvY2hhcnQtY29udGFpbmVyL2dyaWRsaW5lcy9ncmlkbGluZXMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixTQUFTLEVBQUUsS0FBSyxHQUNqQixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFDekQsT0FBTyxFQUFDLEdBQUcsRUFBYyxjQUFjLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFckQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQ3pELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUU5RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7QUFZNUMsTUFBTSxPQUFPLGtCQUFrQjtJQVU3QixZQUFvQixHQUFpQixFQUFVLFlBQTBCO1FBQXJELFFBQUcsR0FBSCxHQUFHLENBQWM7UUFBVSxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUN2RSxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDO1FBRXZDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUNyQyxjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUMzQixHQUFHLENBQUMsQ0FBQyxDQUE2QixFQUFFLEVBQUU7WUFDcEMsTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDM0IsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO1lBQ3BDLE9BQU8sTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDLEVBQUUsVUFBVSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsRUFBRSxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4SyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRU4sSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQ3JDLGNBQWMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQzNCLEdBQUcsQ0FBQyxDQUFDLENBQTZCLEVBQUUsRUFBRTtZQUNwQyxNQUFNLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUMzQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7WUFDbkMsT0FBTyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUMsRUFBRSxVQUFVLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxFQUFFLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFTixJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDN0QsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFRCxlQUFlO0lBRWYsQ0FBQzs4R0FuQ1Usa0JBQWtCO2tHQUFsQixrQkFBa0Isc0dDeEIvQiw2dkJBd0JBLDhIREhJLFNBQVM7OzJGQUdBLGtCQUFrQjtrQkFWOUIsU0FBUzsrQkFDRSxrQkFBa0IsY0FHaEIsSUFBSSxtQkFDQyx1QkFBdUIsQ0FBQyxNQUFNLFdBQ3RDO3dCQUNQLFNBQVM7cUJBQ1Y7NEdBSVEsSUFBSTtzQkFBWixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCwgSW5wdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge1NjYWxlU2VydmljZX0gZnJvbSBcIi4uLy4uL3NlcnZpY2Uvc2NhbGUuc2VydmljZVwiO1xuaW1wb3J0IHttYXAsIE9ic2VydmFibGUsIHdpdGhMYXRlc3RGcm9tfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHtJQ2hhcnRDb25maWd9IGZyb20gXCIuLi8uLi9tb2RlbC9pLWNoYXJ0LWNvbmZpZ1wiO1xuaW1wb3J0IHtDaGFydFNlcnZpY2V9IGZyb20gXCIuLi8uLi9zZXJ2aWNlL2NoYXJ0LnNlcnZpY2VcIjtcbmltcG9ydCB7Z2VuZXJhdGVUaWNrc30gZnJvbSBcIi4uLy4uL2NvcmUvdXRpbHMvZ2VuZXJhdGUtdGlja3NcIjtcbmltcG9ydCB7SVNjYWxlc01hcH0gZnJvbSBcIi4uLy4uL21vZGVsL2ktc2NhbGVzLW1hcFwiO1xuaW1wb3J0IHsgQXN5bmNQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnW3RldGEtZ3JpZGxpbmVzXScsXG4gIHRlbXBsYXRlVXJsOiAnLi9ncmlkbGluZXMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9ncmlkbGluZXMuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGltcG9ydHM6IFtcbiAgICBBc3luY1BpcGUsXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgR3JpZGxpbmVzQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG5cbiAgQElucHV0KCkgc2l6ZTogRE9NUmVjdDtcblxuICBjb25maWc6IE9ic2VydmFibGU8SUNoYXJ0Q29uZmlnPjtcbiAgdGlja1lWYWx1ZXM6IE9ic2VydmFibGU8bnVtYmVyW10+O1xuICB0aWNrWFZhbHVlczogT2JzZXJ2YWJsZTxudW1iZXJbXT47XG4gIHg6IE9ic2VydmFibGU8YW55PjtcbiAgeTogT2JzZXJ2YWJsZTxhbnk+O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc3ZjOiBTY2FsZVNlcnZpY2UsIHByaXZhdGUgY2hhcnRTZXJ2aWNlOiBDaGFydFNlcnZpY2UpIHtcbiAgICB0aGlzLmNvbmZpZyA9IHRoaXMuY2hhcnRTZXJ2aWNlLmNvbmZpZztcblxuICAgIHRoaXMudGlja1lWYWx1ZXMgPSB0aGlzLnN2Yy5zY2FsZXMucGlwZShcbiAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuY29uZmlnKSxcbiAgICAgIG1hcCgoXzogW0lTY2FsZXNNYXAsIElDaGFydENvbmZpZ10pID0+IHtcbiAgICAgICAgY29uc3QgW3NjYWxlcywgY29uZmlnXSA9IF87XG4gICAgICAgIGNvbnN0IHJhdGlvID0gdGhpcy5zaXplLmhlaWdodCAvIDQwO1xuICAgICAgICByZXR1cm4gY29uZmlnLmdyaWRMaW5lcz8ueT8udGlja3NDb3VudCAhPSBudWxsID8gZ2VuZXJhdGVUaWNrcyhzY2FsZXMueS5nZXQoMCkuc2NhbGUuZG9tYWluKCksIGNvbmZpZy5ncmlkTGluZXM/Lnk/LnRpY2tzQ291bnQpIDogc2NhbGVzLnkuZ2V0KDApPy5zY2FsZS50aWNrcyhyYXRpbyk7XG4gICAgICB9KSk7XG5cbiAgICB0aGlzLnRpY2tYVmFsdWVzID0gdGhpcy5zdmMuc2NhbGVzLnBpcGUoXG4gICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLmNvbmZpZyksXG4gICAgICBtYXAoKF86IFtJU2NhbGVzTWFwLCBJQ2hhcnRDb25maWddKSA9PiB7XG4gICAgICAgIGNvbnN0IFtzY2FsZXMsIGNvbmZpZ10gPSBfO1xuICAgICAgICBjb25zdCByYXRpbyA9IHRoaXMuc2l6ZS53aWR0aCAvIDQwO1xuICAgICAgICByZXR1cm4gY29uZmlnLmdyaWRMaW5lcz8ueD8udGlja3NDb3VudCAhPSBudWxsID8gZ2VuZXJhdGVUaWNrcyhzY2FsZXMueC5nZXQoMCkub3JpZ2luRG9tYWluLCBjb25maWcuZ3JpZExpbmVzPy54Py50aWNrc0NvdW50KSA6IHNjYWxlcy54LmdldCgwKT8uc2NhbGUudGlja3MocmF0aW8pO1xuICAgICAgfSkpO1xuXG4gICAgdGhpcy55ID0gdGhpcy5zdmMuc2NhbGVzLnBpcGUobWFwKChfKSA9PiBfLnkuZ2V0KDApPy5zY2FsZSkpO1xuICAgIHRoaXMueCA9IHRoaXMuc3ZjLnNjYWxlcy5waXBlKG1hcCgoXykgPT4gXy54LmdldCgwKT8uc2NhbGUpKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcblxuICB9XG59XG4iLCJAaWYgKHtcbiAgeFZhbHVlczogdGlja1hWYWx1ZXMgfCBhc3luYyxcbiAgeVZhbHVlczogdGlja1lWYWx1ZXMgfCBhc3luYyxcbiAgeDogeCB8IGFzeW5jLFxuICB5OiB5IHwgYXN5bmMsXG4gIGNvbmZpZzogY29uZmlnIHwgYXN5bmNcbn07IGFzIGRhdGEpIHtcbiAgQGlmIChkYXRhLnkgJiYgZGF0YS5jb25maWcuZ3JpZExpbmVzPy5zaG93WSAhPT0gZmFsc2UpIHtcbiAgICBAZm9yICh0aWNrIG9mIGRhdGEueVZhbHVlczsgdHJhY2sgdGljaykge1xuICAgICAgPHN2ZzpsaW5lIFthdHRyLngxXT1cIjBcIlxuICAgICAgICAgICAgICAgIFthdHRyLnkxXT1cImRhdGEueSh0aWNrKSB8fCAxXCJcbiAgICAgICAgICAgICAgICBbYXR0ci54Ml09XCJzaXplPy53aWR0aFwiXG4gICAgICAgICAgICAgICAgW2F0dHIueTJdPVwiZGF0YS55KHRpY2spIHx8IDFcIj48L3N2ZzpsaW5lPlxuICAgIH1cbiAgfVxuICBAaWYgKGRhdGEueCAmJiBkYXRhLmNvbmZpZy5ncmlkTGluZXM/LnNob3dYICE9PSBmYWxzZSkge1xuICAgIEBmb3IgKHRpY2sgb2YgZGF0YS54VmFsdWVzOyB0cmFjayB0aWNrKSB7XG4gICAgICA8c3ZnOmxpbmUgW2F0dHIueDFdPVwiZGF0YS54KHRpY2spIHx8IDFcIlxuICAgICAgICAgICAgICAgIFthdHRyLnkxXT1cIjBcIlxuICAgICAgICAgICAgICAgIFthdHRyLngyXT1cImRhdGEueCh0aWNrKSB8fCAxXCJcbiAgICAgICAgICAgICAgICBbYXR0ci55Ml09XCJzaXplPy5oZWlnaHRcIj48L3N2ZzpsaW5lPlxuICAgIH1cbiAgfVxufVxuIl19
@@ -4,7 +4,6 @@ import { Axis } from '../../core/axis/axis';
4
4
  import { AxisOrientation } from '../../model/enum/axis-orientation';
5
5
  import { PlotBand } from '../../model/plot-band';
6
6
  import { ChartService } from '../../service/chart.service';
7
- import { NgIf } from '@angular/common';
8
7
  import * as i0 from "@angular/core";
9
8
  import * as i1 from "../../service/chart.service";
10
9
  export class PlotBandComponent {
@@ -138,14 +137,12 @@ export class PlotBandComponent {
138
137
  }
139
138
  return d.style.plotBand?.fill;
140
139
  }
141
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: PlotBandComponent, deps: [{ token: i1.ChartService }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
142
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.5", type: PlotBandComponent, isStandalone: true, selector: "[teta-plot-band]", inputs: { plotBand: "plotBand", axis: "axis", scale: "scale", size: "size" }, host: { listeners: { "click": "click($event)", "contextmenu": "contextMenu($event)" } }, ngImport: i0, template: "<svg:rect\n class='plotband' xmlns:svg='http://www.w3.org/1999/html'\n [class.draggable]='plotBand?.draggable === true'\n [attr.fill]='getFill(plotBand)'\n [attr.opacity]='plotBand.style?.plotBand?.opacity'\n [attr.height]='axis.orientation === orientation.x ? height : bandSize'\n [attr.width]='axis.orientation === orientation.x ? bandSize : width'\n [attr.y]='axis.orientation === orientation.y ? (axis.options.inverted === true ? from : to) : null'\n [attr.x]='axis.orientation === orientation.x ? (axis.options.inverted === true ? to : from) : null'>\n</svg:rect>\n<svg:text\n *ngIf='axis.orientation === orientation.x'\n text-anchor='middle'\n dominant-baseline='middle'\n class='label font-caption fill-text-90'\n [attr.x]='getTextPosition()'\n [attr.transform]=\"'rotate(-90, '+ getTextPosition() +',' + height / 2 + ')'\"\n [attr.y]='height / 2'>{{plotBand.label}}\n</svg:text>\n<svg:text\n *ngIf='axis.orientation === orientation.y'\n text-anchor='middle'\n class='label font-caption fill-text-90'\n dominant-baseline='central'\n [attr.x]='getTextPosition()'\n [attr.y]='width / 2'>{{plotBand.label}}\n</svg:text>\n<ng-container *ngIf='plotBand.resizable'>\n <ng-container *ngIf='plotBand.showGrabbers'>\n <svg:line class='display-grabber'\n [attr.stroke]=\"plotBand.style?.grabbers?.stroke || 'var(--color-text-50)'\"\n [attr.stroke-width]='plotBand.style?.grabbers?.strokeWidth || 4'\n [attr.stroke-dasharray]='plotBand.style?.grabbers?.strokeDasharray'\n [attr.x1]='axis.orientation === orientation.x ? from : 0'\n [attr.x2]='axis.orientation === orientation.x ? from : width'\n [attr.data-grabber]=\"'from'\"\n [attr.y1]='axis.orientation === orientation.x ? 0 : from'\n [attr.y2]='axis.orientation === orientation.x ? height : from'>\n </svg:line>\n <svg:line class='display-grabber'\n [attr.stroke]=\"plotBand.style?.grabbers?.stroke || 'var(--color-text-50)'\"\n [attr.stroke-width]='plotBand.style?.grabbers?.strokeWidth || 4'\n [attr.stroke-dasharray]='plotBand.style?.grabbers?.strokeDasharray'\n [attr.x1]='axis.orientation === orientation.x ? to : 0'\n [attr.x2]='axis.orientation === orientation.x ? to : width'\n [attr.data-grabber]=\"'to'\"\n [attr.y1]='axis.orientation === orientation.x ? 0 : to'\n [attr.y2]='axis.orientation === orientation.x ? height : to'>\n </svg:line>\n </ng-container>\n <svg:line class='grabber'\n [class.x-grabber]='axis.orientation === orientation.x'\n [class.y-grabber]='axis.orientation === orientation.y'\n [class.resizeable]='plotBand?.resizable'\n [attr.stroke]=\"plotBand.style?.grabbers?.stroke || 'var(--color-text-50)'\"\n [attr.stroke-width]='8'\n [style.transform]=\"axis.orientation === orientation.x ? 'translateX(2px)' : 'translateY(2px)'\"\n [attr.x1]='axis.orientation === orientation.x ? from : 0'\n [attr.x2]='axis.orientation === orientation.x ? from : width'\n [attr.data-grabber]=\"'from'\"\n [attr.y1]='axis.orientation === orientation.x ? 0 : from'\n [attr.y2]='axis.orientation === orientation.x ? height : from'>\n </svg:line>\n <svg:line class='grabber'\n [class.x-grabber]='axis.orientation === orientation.x'\n [class.y-grabber]='axis.orientation === orientation.y'\n [class.resizeable]='plotBand?.resizable'\n [attr.stroke]=\"plotBand.style?.grabbers?.stroke || 'var(--color-text-50)'\"\n [attr.stroke-width]='8'\n [style.transform]=\"axis.orientation === orientation.x ? 'translateX(-2px)' : 'translateY(-2px)'\"\n [attr.x1]='axis.orientation === orientation.x ? to : 0'\n [attr.x2]='axis.orientation === orientation.x ? to : width'\n [attr.data-grabber]=\"'to'\"\n [attr.y1]='axis.orientation === orientation.x ? 0 : to'\n [attr.y2]='axis.orientation === orientation.x ? height : to'>\n </svg:line>\n</ng-container>\n", styles: [":host .draggable rect:hover{cursor:grab}:host .draggable rect:active{cursor:grabbing}:host .x-grabber.resizeable{cursor:col-resize}:host .y-grabber.resizeable{cursor:row-resize}:host:hover .grabber{opacity:.1}.grabber{opacity:0}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
140
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.1", ngImport: i0, type: PlotBandComponent, deps: [{ token: i1.ChartService }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
141
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.1", type: PlotBandComponent, isStandalone: true, selector: "[teta-plot-band]", inputs: { plotBand: "plotBand", axis: "axis", scale: "scale", size: "size" }, host: { listeners: { "click": "click($event)", "contextmenu": "contextMenu($event)" } }, ngImport: i0, template: "<svg:rect\n class='plotband' xmlns:svg='http://www.w3.org/1999/html'\n [class.draggable]='plotBand?.draggable === true'\n [attr.fill]='getFill(plotBand)'\n [attr.opacity]='plotBand.style?.plotBand?.opacity'\n [attr.height]='axis.orientation === orientation.x ? height : bandSize'\n [attr.width]='axis.orientation === orientation.x ? bandSize : width'\n [attr.y]='axis.orientation === orientation.y ? (axis.options.inverted === true ? from : to) : null'\n [attr.x]='axis.orientation === orientation.x ? (axis.options.inverted === true ? to : from) : null'>\n</svg:rect>\n@if (axis.orientation === orientation.x) {\n <svg:text\n text-anchor='middle'\n dominant-baseline='middle'\n class='label font-caption fill-text-90'\n [attr.x]='getTextPosition()'\n [attr.transform]=\"'rotate(-90, '+ getTextPosition() +',' + height / 2 + ')'\"\n [attr.y]='height / 2'>{{ plotBand.label }}\n </svg:text>\n}\n@if (axis.orientation === orientation.y) {\n <svg:text\n text-anchor='middle'\n class='label font-caption fill-text-90'\n dominant-baseline='central'\n [attr.x]='getTextPosition()'\n [attr.y]='width / 2'>{{ plotBand.label }}\n </svg:text>\n}\n@if (plotBand.resizable) {\n @if (plotBand.showGrabbers) {\n <svg:line class='display-grabber'\n [attr.stroke]=\"plotBand.style?.grabbers?.stroke || 'var(--color-text-50)'\"\n [attr.stroke-width]='plotBand.style?.grabbers?.strokeWidth || 4'\n [attr.stroke-dasharray]='plotBand.style?.grabbers?.strokeDasharray'\n [attr.x1]='axis.orientation === orientation.x ? from : 0'\n [attr.x2]='axis.orientation === orientation.x ? from : width'\n [attr.data-grabber]=\"'from'\"\n [attr.y1]='axis.orientation === orientation.x ? 0 : from'\n [attr.y2]='axis.orientation === orientation.x ? height : from'>\n </svg:line>\n <svg:line class='display-grabber'\n [attr.stroke]=\"plotBand.style?.grabbers?.stroke || 'var(--color-text-50)'\"\n [attr.stroke-width]='plotBand.style?.grabbers?.strokeWidth || 4'\n [attr.stroke-dasharray]='plotBand.style?.grabbers?.strokeDasharray'\n [attr.x1]='axis.orientation === orientation.x ? to : 0'\n [attr.x2]='axis.orientation === orientation.x ? to : width'\n [attr.data-grabber]=\"'to'\"\n [attr.y1]='axis.orientation === orientation.x ? 0 : to'\n [attr.y2]='axis.orientation === orientation.x ? height : to'>\n </svg:line>\n }\n <svg:line class='grabber'\n [class.x-grabber]='axis.orientation === orientation.x'\n [class.y-grabber]='axis.orientation === orientation.y'\n [class.resizeable]='plotBand?.resizable'\n [attr.stroke]=\"plotBand.style?.grabbers?.stroke || 'var(--color-text-50)'\"\n [attr.stroke-width]='8'\n [style.transform]=\"axis.orientation === orientation.x ? 'translateX(2px)' : 'translateY(2px)'\"\n [attr.x1]='axis.orientation === orientation.x ? from : 0'\n [attr.x2]='axis.orientation === orientation.x ? from : width'\n [attr.data-grabber]=\"'from'\"\n [attr.y1]='axis.orientation === orientation.x ? 0 : from'\n [attr.y2]='axis.orientation === orientation.x ? height : from'>\n </svg:line>\n <svg:line class='grabber'\n [class.x-grabber]='axis.orientation === orientation.x'\n [class.y-grabber]='axis.orientation === orientation.y'\n [class.resizeable]='plotBand?.resizable'\n [attr.stroke]=\"plotBand.style?.grabbers?.stroke || 'var(--color-text-50)'\"\n [attr.stroke-width]='8'\n [style.transform]=\"axis.orientation === orientation.x ? 'translateX(-2px)' : 'translateY(-2px)'\"\n [attr.x1]='axis.orientation === orientation.x ? to : 0'\n [attr.x2]='axis.orientation === orientation.x ? to : width'\n [attr.data-grabber]=\"'to'\"\n [attr.y1]='axis.orientation === orientation.x ? 0 : to'\n [attr.y2]='axis.orientation === orientation.x ? height : to'>\n </svg:line>\n}\n", styles: [":host .draggable rect:hover{cursor:grab}:host .draggable rect:active{cursor:grabbing}:host .x-grabber.resizeable{cursor:col-resize}:host .y-grabber.resizeable{cursor:row-resize}:host:hover .grabber{opacity:.1}.grabber{opacity:0}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
143
142
  }
144
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: PlotBandComponent, decorators: [{
143
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.1", ngImport: i0, type: PlotBandComponent, decorators: [{
145
144
  type: Component,
146
- args: [{ selector: '[teta-plot-band]', standalone: true, imports: [
147
- NgIf
148
- ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<svg:rect\n class='plotband' xmlns:svg='http://www.w3.org/1999/html'\n [class.draggable]='plotBand?.draggable === true'\n [attr.fill]='getFill(plotBand)'\n [attr.opacity]='plotBand.style?.plotBand?.opacity'\n [attr.height]='axis.orientation === orientation.x ? height : bandSize'\n [attr.width]='axis.orientation === orientation.x ? bandSize : width'\n [attr.y]='axis.orientation === orientation.y ? (axis.options.inverted === true ? from : to) : null'\n [attr.x]='axis.orientation === orientation.x ? (axis.options.inverted === true ? to : from) : null'>\n</svg:rect>\n<svg:text\n *ngIf='axis.orientation === orientation.x'\n text-anchor='middle'\n dominant-baseline='middle'\n class='label font-caption fill-text-90'\n [attr.x]='getTextPosition()'\n [attr.transform]=\"'rotate(-90, '+ getTextPosition() +',' + height / 2 + ')'\"\n [attr.y]='height / 2'>{{plotBand.label}}\n</svg:text>\n<svg:text\n *ngIf='axis.orientation === orientation.y'\n text-anchor='middle'\n class='label font-caption fill-text-90'\n dominant-baseline='central'\n [attr.x]='getTextPosition()'\n [attr.y]='width / 2'>{{plotBand.label}}\n</svg:text>\n<ng-container *ngIf='plotBand.resizable'>\n <ng-container *ngIf='plotBand.showGrabbers'>\n <svg:line class='display-grabber'\n [attr.stroke]=\"plotBand.style?.grabbers?.stroke || 'var(--color-text-50)'\"\n [attr.stroke-width]='plotBand.style?.grabbers?.strokeWidth || 4'\n [attr.stroke-dasharray]='plotBand.style?.grabbers?.strokeDasharray'\n [attr.x1]='axis.orientation === orientation.x ? from : 0'\n [attr.x2]='axis.orientation === orientation.x ? from : width'\n [attr.data-grabber]=\"'from'\"\n [attr.y1]='axis.orientation === orientation.x ? 0 : from'\n [attr.y2]='axis.orientation === orientation.x ? height : from'>\n </svg:line>\n <svg:line class='display-grabber'\n [attr.stroke]=\"plotBand.style?.grabbers?.stroke || 'var(--color-text-50)'\"\n [attr.stroke-width]='plotBand.style?.grabbers?.strokeWidth || 4'\n [attr.stroke-dasharray]='plotBand.style?.grabbers?.strokeDasharray'\n [attr.x1]='axis.orientation === orientation.x ? to : 0'\n [attr.x2]='axis.orientation === orientation.x ? to : width'\n [attr.data-grabber]=\"'to'\"\n [attr.y1]='axis.orientation === orientation.x ? 0 : to'\n [attr.y2]='axis.orientation === orientation.x ? height : to'>\n </svg:line>\n </ng-container>\n <svg:line class='grabber'\n [class.x-grabber]='axis.orientation === orientation.x'\n [class.y-grabber]='axis.orientation === orientation.y'\n [class.resizeable]='plotBand?.resizable'\n [attr.stroke]=\"plotBand.style?.grabbers?.stroke || 'var(--color-text-50)'\"\n [attr.stroke-width]='8'\n [style.transform]=\"axis.orientation === orientation.x ? 'translateX(2px)' : 'translateY(2px)'\"\n [attr.x1]='axis.orientation === orientation.x ? from : 0'\n [attr.x2]='axis.orientation === orientation.x ? from : width'\n [attr.data-grabber]=\"'from'\"\n [attr.y1]='axis.orientation === orientation.x ? 0 : from'\n [attr.y2]='axis.orientation === orientation.x ? height : from'>\n </svg:line>\n <svg:line class='grabber'\n [class.x-grabber]='axis.orientation === orientation.x'\n [class.y-grabber]='axis.orientation === orientation.y'\n [class.resizeable]='plotBand?.resizable'\n [attr.stroke]=\"plotBand.style?.grabbers?.stroke || 'var(--color-text-50)'\"\n [attr.stroke-width]='8'\n [style.transform]=\"axis.orientation === orientation.x ? 'translateX(-2px)' : 'translateY(-2px)'\"\n [attr.x1]='axis.orientation === orientation.x ? to : 0'\n [attr.x2]='axis.orientation === orientation.x ? to : width'\n [attr.data-grabber]=\"'to'\"\n [attr.y1]='axis.orientation === orientation.x ? 0 : to'\n [attr.y2]='axis.orientation === orientation.x ? height : to'>\n </svg:line>\n</ng-container>\n", styles: [":host .draggable rect:hover{cursor:grab}:host .draggable rect:active{cursor:grabbing}:host .x-grabber.resizeable{cursor:col-resize}:host .y-grabber.resizeable{cursor:row-resize}:host:hover .grabber{opacity:.1}.grabber{opacity:0}\n"] }]
145
+ args: [{ selector: '[teta-plot-band]', standalone: true, imports: [], changeDetection: ChangeDetectionStrategy.OnPush, template: "<svg:rect\n class='plotband' xmlns:svg='http://www.w3.org/1999/html'\n [class.draggable]='plotBand?.draggable === true'\n [attr.fill]='getFill(plotBand)'\n [attr.opacity]='plotBand.style?.plotBand?.opacity'\n [attr.height]='axis.orientation === orientation.x ? height : bandSize'\n [attr.width]='axis.orientation === orientation.x ? bandSize : width'\n [attr.y]='axis.orientation === orientation.y ? (axis.options.inverted === true ? from : to) : null'\n [attr.x]='axis.orientation === orientation.x ? (axis.options.inverted === true ? to : from) : null'>\n</svg:rect>\n@if (axis.orientation === orientation.x) {\n <svg:text\n text-anchor='middle'\n dominant-baseline='middle'\n class='label font-caption fill-text-90'\n [attr.x]='getTextPosition()'\n [attr.transform]=\"'rotate(-90, '+ getTextPosition() +',' + height / 2 + ')'\"\n [attr.y]='height / 2'>{{ plotBand.label }}\n </svg:text>\n}\n@if (axis.orientation === orientation.y) {\n <svg:text\n text-anchor='middle'\n class='label font-caption fill-text-90'\n dominant-baseline='central'\n [attr.x]='getTextPosition()'\n [attr.y]='width / 2'>{{ plotBand.label }}\n </svg:text>\n}\n@if (plotBand.resizable) {\n @if (plotBand.showGrabbers) {\n <svg:line class='display-grabber'\n [attr.stroke]=\"plotBand.style?.grabbers?.stroke || 'var(--color-text-50)'\"\n [attr.stroke-width]='plotBand.style?.grabbers?.strokeWidth || 4'\n [attr.stroke-dasharray]='plotBand.style?.grabbers?.strokeDasharray'\n [attr.x1]='axis.orientation === orientation.x ? from : 0'\n [attr.x2]='axis.orientation === orientation.x ? from : width'\n [attr.data-grabber]=\"'from'\"\n [attr.y1]='axis.orientation === orientation.x ? 0 : from'\n [attr.y2]='axis.orientation === orientation.x ? height : from'>\n </svg:line>\n <svg:line class='display-grabber'\n [attr.stroke]=\"plotBand.style?.grabbers?.stroke || 'var(--color-text-50)'\"\n [attr.stroke-width]='plotBand.style?.grabbers?.strokeWidth || 4'\n [attr.stroke-dasharray]='plotBand.style?.grabbers?.strokeDasharray'\n [attr.x1]='axis.orientation === orientation.x ? to : 0'\n [attr.x2]='axis.orientation === orientation.x ? to : width'\n [attr.data-grabber]=\"'to'\"\n [attr.y1]='axis.orientation === orientation.x ? 0 : to'\n [attr.y2]='axis.orientation === orientation.x ? height : to'>\n </svg:line>\n }\n <svg:line class='grabber'\n [class.x-grabber]='axis.orientation === orientation.x'\n [class.y-grabber]='axis.orientation === orientation.y'\n [class.resizeable]='plotBand?.resizable'\n [attr.stroke]=\"plotBand.style?.grabbers?.stroke || 'var(--color-text-50)'\"\n [attr.stroke-width]='8'\n [style.transform]=\"axis.orientation === orientation.x ? 'translateX(2px)' : 'translateY(2px)'\"\n [attr.x1]='axis.orientation === orientation.x ? from : 0'\n [attr.x2]='axis.orientation === orientation.x ? from : width'\n [attr.data-grabber]=\"'from'\"\n [attr.y1]='axis.orientation === orientation.x ? 0 : from'\n [attr.y2]='axis.orientation === orientation.x ? height : from'>\n </svg:line>\n <svg:line class='grabber'\n [class.x-grabber]='axis.orientation === orientation.x'\n [class.y-grabber]='axis.orientation === orientation.y'\n [class.resizeable]='plotBand?.resizable'\n [attr.stroke]=\"plotBand.style?.grabbers?.stroke || 'var(--color-text-50)'\"\n [attr.stroke-width]='8'\n [style.transform]=\"axis.orientation === orientation.x ? 'translateX(-2px)' : 'translateY(-2px)'\"\n [attr.x1]='axis.orientation === orientation.x ? to : 0'\n [attr.x2]='axis.orientation === orientation.x ? to : width'\n [attr.data-grabber]=\"'to'\"\n [attr.y1]='axis.orientation === orientation.x ? 0 : to'\n [attr.y2]='axis.orientation === orientation.x ? height : to'>\n </svg:line>\n}\n", styles: [":host .draggable rect:hover{cursor:grab}:host .draggable rect:active{cursor:grabbing}:host .x-grabber.resizeable{cursor:col-resize}:host .y-grabber.resizeable{cursor:row-resize}:host:hover .grabber{opacity:.1}.grabber{opacity:0}\n"] }]
149
146
  }], ctorParameters: () => [{ type: i1.ChartService }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }], propDecorators: { plotBand: [{
150
147
  type: Input
151
148
  }], axis: [{
@@ -161,4 +158,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
161
158
  type: HostListener,
162
159
  args: ['contextmenu', ['$event']]
163
160
  }] } });
164
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxvdC1iYW5kLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jaGFydC9jaGFydC1jb250YWluZXIvcGxvdGJhbmQvcGxvdC1iYW5kLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9jaGFydC9jaGFydC1jb250YWluZXIvcGxvdGJhbmQvcGxvdC1iYW5kLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssR0FFTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQztBQUV6QixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDNUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRXBFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDM0QsT0FBTyxFQUFXLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7QUFZaEQsTUFBTSxPQUFPLGlCQUFpQjtJQU1PLEtBQUssQ0FBQyxLQUFpQjtRQUN4RCxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQ1IsTUFBTSxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ3JCLEtBQUs7U0FDTixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRXdDLFdBQVcsQ0FBQyxLQUFpQjtRQUNwRSxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQ1IsTUFBTSxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ3JCLEtBQUs7U0FDTixDQUFDLENBQUM7SUFDTCxDQUFDO0lBTUQsSUFBSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FB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Q0gsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBa0JELE9BQU8sQ0FBQyxDQUFXO1FBQ2pCLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLENBQUM7WUFDcEMsT0FBTyxRQUFRLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLFlBQVksR0FBRyxDQUFDO1FBQ25ELENBQUM7UUFDRCxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQztJQUNoQyxDQUFDOzhHQWxNVSxpQkFBaUI7a0dBQWpCLGlCQUFpQixtUEM3QjlCLGltSUE2RUEsZ1NEcERJLElBQUk7OzJGQUlLLGlCQUFpQjtrQkFWN0IsU0FBUzsrQkFDRSxrQkFBa0IsY0FHakIsSUFBSSxXQUNQO3dCQUNOLElBQUk7cUJBQ0wsbUJBQ2dCLHVCQUF1QixDQUFDLE1BQU07MElBR3RDLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBRTZCLEtBQUs7c0JBQXZDLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQU9RLFdBQVc7c0JBQW5ELFlBQVk7dUJBQUMsYUFBYSxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgKiBhcyBkMyBmcm9tICdkMyc7XG5cbmltcG9ydCB7IEF4aXMgfSBmcm9tICcuLi8uLi9jb3JlL2F4aXMvYXhpcyc7XG5pbXBvcnQgeyBBeGlzT3JpZW50YXRpb24gfSBmcm9tICcuLi8uLi9tb2RlbC9lbnVtL2F4aXMtb3JpZW50YXRpb24nO1xuaW1wb3J0IHsgSUNoYXJ0RXZlbnQgfSBmcm9tICcuLi8uLi9tb2RlbC9pLWNoYXJ0LWV2ZW50JztcbmltcG9ydCB7IFBsb3RCYW5kIH0gZnJvbSAnLi4vLi4vbW9kZWwvcGxvdC1iYW5kJztcbmltcG9ydCB7IENoYXJ0U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2UvY2hhcnQuc2VydmljZSc7XG5pbXBvcnQgeyBOZ0Zvck9mLCBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnW3RldGEtcGxvdC1iYW5kXScsXG4gIHRlbXBsYXRlVXJsOiAnLi9wbG90LWJhbmQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wbG90LWJhbmQuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTp0cnVlLFxuICBpbXBvcnRzOltcbiAgICBOZ0lmXG4gIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBQbG90QmFuZENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIHBsb3RCYW5kOiBQbG90QmFuZDtcbiAgQElucHV0KCkgYXhpczogQXhpcztcbiAgQElucHV0KCkgc2NhbGU6IGFueTtcbiAgQElucHV0KCkgc2l6ZTogRE9NUmVjdDtcblxuICBASG9zdExpc3RlbmVyKCdjbGljaycsIFsnJGV2ZW50J10pIGNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgdGhpcy5lbWl0KHtcbiAgICAgIHRhcmdldDogdGhpcy5wbG90QmFuZCxcbiAgICAgIGV2ZW50LFxuICAgIH0pO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignY29udGV4dG1lbnUnLCBbJyRldmVudCddKSBjb250ZXh0TWVudShldmVudDogTW91c2VFdmVudCkge1xuICAgIHRoaXMuZW1pdCh7XG4gICAgICB0YXJnZXQ6IHRoaXMucGxvdEJhbmQsXG4gICAgICBldmVudCxcbiAgICB9KTtcbiAgfVxuXG4gIG9yaWVudGF0aW9uID0gQXhpc09yaWVudGF0aW9uO1xuICByZXNpemVFbGVtZW50czogYW55O1xuICBkcmFnRWxlbWVudHM6IGFueTtcblxuICBnZXQgaGVpZ2h0KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuc2l6ZS5oZWlnaHQ7XG4gIH1cblxuICBnZXQgd2lkdGgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5zaXplLndpZHRoO1xuICB9XG5cbiAgZ2V0IGZyb20oKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5zY2FsZSh0aGlzLnBsb3RCYW5kLmZyb20pO1xuICB9XG5cbiAgZ2V0IHRvKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuc2NhbGUodGhpcy5wbG90QmFuZC50byk7XG4gIH1cblxuICBnZXQgYmFuZFNpemUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gTWF0aC5hYnMoXG4gICAgICB0aGlzLnNjYWxlKHRoaXMucGxvdEJhbmQudG8pIC0gdGhpcy5zY2FsZSh0aGlzLnBsb3RCYW5kLmZyb20pXG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY2hhcnRTZXJ2aWNlOiBDaGFydFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgZWxlbWVudDogRWxlbWVudFJlZlxuICApIHt9XG5cbiAgZW1pdChldmVudDogSUNoYXJ0RXZlbnQ8UGxvdEJhbmQ+KSB7XG4gICAgdGhpcy5jaGFydFNlcnZpY2UuZW1pdFBsb3RiYW5kKGV2ZW50KTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBjb25zdCBwbG90YmFuZEVsZW1lbnQgPSBkM1xuICAgICAgLnNlbGVjdCh0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudClcbiAgICAgIC5zZWxlY3QoJy5wbG90YmFuZCcpO1xuXG4gICAgY29uc3QgZ3JhYkVsZW1lbnRzID0gZDNcbiAgICAgIC5zZWxlY3QodGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQpXG4gICAgICAuc2VsZWN0QWxsKCcuZ3JhYmJlcicpO1xuXG4gICAgdGhpcy5kcmFnRWxlbWVudHMgPSBkMy5kcmFnKCkuc3ViamVjdCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5heGlzLm9yaWVudGF0aW9uID09PSBBeGlzT3JpZW50YXRpb24ueCkge1xuICAgICAgICByZXR1cm4geyB4OiBwbG90YmFuZEVsZW1lbnQuYXR0cigneCcpIH07XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmF4aXMub3JpZW50YXRpb24gPT09IEF4aXNPcmllbnRhdGlvbi55KSB7XG4gICAgICAgIHJldHVybiB7IHk6IHBsb3RiYW5kRWxlbWVudC5hdHRyKCd5JykgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsXG4gICAgfSk7XG5cbiAgICBjb25zdCBkcmFnID0gdGhpcy5kcmFnRWxlbWVudHMub24oXG4gICAgICAnc3RhcnQgZHJhZyBlbmQnLFxuICAgICAgKGV2ZW50OiBkMy5EM0RyYWdFdmVudDxhbnksIFBsb3RCYW5kLCBhbnk+LCBkOiBQbG90QmFuZCkgPT4ge1xuICAgICAgICBjb25zdCBiYW5kU2l6ZSA9IHBhcnNlRmxvYXQoXG4gICAgICAgICAgcGxvdGJhbmRFbGVtZW50LmF0dHIoXG4gICAgICAgICAgICB0aGlzLmF4aXMub3JpZW50YXRpb24gPT09IEF4aXNPcmllbnRhdGlvbi54ID8gJ3dpZHRoJyA6ICdoZWlnaHQnXG4gICAgICAgICAgKVxuICAgICAgICApO1xuXG4gICAgICAgIGQuZnJvbSA9IHRoaXMuc2NhbGUuaW52ZXJ0KFxuICAgICAgICAgIGV2ZW50W0F4aXNPcmllbnRhdGlvblt0aGlzLmF4aXMub3JpZW50YXRpb25dXVxuICAgICAgICApO1xuXG4gICAgICAgIGQudG8gPSB0aGlzLnNjYWxlLmludmVydChcbiAgICAgICAgICBldmVudFtBeGlzT3JpZW50YXRpb25bdGhpcy5heGlzLm9yaWVudGF0aW9uXV0gKyBiYW5kU2l6ZVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuZW1pdCh7XG4gICAgICAgICAgZXZlbnQsXG4gICAgICAgICAgdGFyZ2V0OiBkLFxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9XG4gICAgKTtcblxuICAgIGxldCBncmFiYmVyS2V5O1xuICAgIHRoaXMucmVzaXplRWxlbWVudHMgPSBkMy5kcmFnKCk7XG5cbiAgICBjb25zdCByZXNpemUgPSB0aGlzLnJlc2l6ZUVsZW1lbnRzLm9uKFxuICAgICAgJ3N0YXJ0IGRyYWcgZW5kJyxcbiAgICAgIChldmVudDogZDMuRDNEcmFnRXZlbnQ8YW55LCBQbG90QmFuZCwgYW55PiwgZDogUGxvdEJhbmQpID0+IHtcbiAgICAgICAgaWYgKGV2ZW50Py50eXBlID09PSAnc3RhcnQnKSB7XG4gICAgICAgICAgY29uc3QgeyBncmFiYmVyIH0gPSBldmVudD8uc291cmNlRXZlbnQ/LnRhcmdldD8uZGF0YXNldDtcbiAgICAgICAgICBncmFiYmVyS2V5ID0gZ3JhYmJlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG1pbiA9IE1hdGgubWluKC4uLnRoaXMuc2NhbGUuZG9tYWluKCkpO1xuICAgICAgICBjb25zdCBtYXggPSBNYXRoLm1heCguLi50aGlzLnNjYWxlLmRvbWFpbigpKTtcblxuICAgICAgICBjb25zdCBtaW5WYWx1ZSA9IGQubWluID8/IG1pbjtcbiAgICAgICAgY29uc3QgbWF4VmFsdWUgPSBkLm1heCA/PyBtYXg7XG5cbiAgICAgICAgZFtncmFiYmVyS2V5XSA9IHRoaXMuc2NhbGUuaW52ZXJ0KFxuICAgICAgICAgIGV2ZW50W0F4aXNPcmllbnRhdGlvblt0aGlzLmF4aXMub3JpZW50YXRpb25dXVxuICAgICAgICApO1xuXG4gICAgICAgIGlmIChncmFiYmVyS2V5ID09PSAnZnJvbScpIHtcbiAgICAgICAgICBjb25zdCBib3JkZXJNaW4gPSBkLmZyb20gPD0gbWluVmFsdWU7XG5cbiAgICAgICAgICBpZiAoZC5mcm9tID49IGQudG8pIHtcbiAgICAgICAgICAgIGQuZnJvbSA9IGQudG87XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGJvcmRlck1pbikge1xuICAgICAgICAgICAgZC5mcm9tID0gbWluVmFsdWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGdyYWJiZXJLZXkgPT09ICd0bycpIHtcbiAgICAgICAgICBjb25zdCBib3JkZXJNYXggPSBkLnRvID49IG1heFZhbHVlO1xuXG4gICAgICAgICAgaWYgKGJvcmRlck1heCkge1xuICAgICAgICAgICAgZC50byA9IG1heFZhbHVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChkLnRvIDw9IGQuZnJvbSkge1xuICAgICAgICAgICAgZC50byA9IGQuZnJvbTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmVtaXQoe1xuICAgICAgICAgIGV2ZW50LFxuICAgICAgICAgIHRhcmdldDogZCxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfVxuICAgICk7XG5cbiAgICBwbG90YmFuZEVsZW1lbnQuZGF0dW08UGxvdEJhbmQ+KHRoaXMucGxvdEJhbmQpO1xuICAgIGdyYWJFbGVtZW50cy5kYXR1bTxQbG90QmFuZD4odGhpcy5wbG90QmFuZCk7XG5cbiAgICBpZiAodGhpcy5wbG90QmFuZC5kcmFnZ2FibGUpIHtcbiAgICAgIHBsb3RiYW5kRWxlbWVudC5jYWxsKGRyYWcpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnBsb3RCYW5kLnJlc2l6YWJsZSkge1xuICAgICAgZ3JhYkVsZW1lbnRzLmNhbGwocmVzaXplKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmRyYWdFbGVtZW50cy5vbignc3RhcnQgZHJhZyBlbmQnLCBudWxsKTtcbiAgICB0aGlzLnJlc2l6ZUVsZW1lbnRzLm9uKCdzdGFydCBkcmFnIGVuZCcsIG51bGwpO1xuICB9XG5cbiAgZ2V0VGV4dFBvc2l0aW9uID0gKCkgPT4ge1xuICAgIGxldCBbbWluLCBtYXhdID0gdGhpcy5zY2FsZS5kb21haW4oKTtcbiAgICBtaW4gPSBtaW4gaW5zdGFuY2VvZiBEYXRlID8gbWluLmdldFRpbWUoKSA6IG1pbjtcbiAgICBtYXggPSBtYXggaW5zdGFuY2VvZiBEYXRlID8gbWF4LmdldFRpbWUoKSA6IG1heDtcbiAgICBjb25zdCBmcm9tID1cbiAgICAgICh0aGlzLnBsb3RCYW5kLmZyb20gYXMgYW55KSBpbnN0YW5jZW9mIERhdGVcbiAgICAgICAgPyAodGhpcy5wbG90QmFuZC5mcm9tIGFzIGFueSkuZ2V0VGltZSgpXG4gICAgICAgIDogdGhpcy5wbG90QmFuZC5mcm9tO1xuICAgIGNvbnN0IHRvID1cbiAgICAgICh0aGlzLnBsb3RCYW5kLnRvIGFzIGFueSkgaW5zdGFuY2VvZiBEYXRlXG4gICAgICAgID8gKHRoaXMucGxvdEJhbmQudG8gYXMgYW55KS5nZXRUaW1lKClcbiAgICAgICAgOiB0aGlzLnBsb3RCYW5kLnRvO1xuICAgIGNvbnN0IHBvc2l0aW9uID0gKChmcm9tIDw9IG1pbiA/IG1pbiA6IGZyb20pICsgKHRvID49IG1heCA/IG1heCA6IHRvKSkgLyAyO1xuICAgIHJldHVybiB0aGlzLnNjYWxlKHBvc2l0aW9uKTtcbiAgfTtcblxuICBnZXRGaWxsKGQ6IFBsb3RCYW5kKTogc3RyaW5nIHtcbiAgICBpZiAoZC5zdHlsZT8ucGxvdEJhbmQ/LnBhdHRlcm5JbWFnZSkge1xuICAgICAgcmV0dXJuIGB1cmwoIyR7ZC5zdHlsZS5wbG90QmFuZD8ucGF0dGVybkltYWdlfSlgO1xuICAgIH1cbiAgICByZXR1cm4gZC5zdHlsZS5wbG90QmFuZD8uZmlsbDtcbiAgfVxufVxuIiwiPHN2ZzpyZWN0XG4gIGNsYXNzPSdwbG90YmFuZCcgeG1sbnM6c3ZnPSdodHRwOi8vd3d3LnczLm9yZy8xOTk5L2h0bWwnXG4gIFtjbGFzcy5kcmFnZ2FibGVdPSdwbG90QmFuZD8uZHJhZ2dhYmxlID09PSB0cnVlJ1xuICBbYXR0ci5maWxsXT0nZ2V0RmlsbChwbG90QmFuZCknXG4gIFthdHRyLm9wYWNpdHldPSdwbG90QmFuZC5zdHlsZT8ucGxvdEJhbmQ/Lm9wYWNpdHknXG4gIFthdHRyLmhlaWdodF09J2F4aXMub3JpZW50YXRpb24gPT09IG9yaWVudGF0aW9uLnggPyBoZWlnaHQgOiBiYW5kU2l6ZSdcbiAgW2F0dHIud2lkdGhdPSdheGlzLm9yaWVudGF0aW9uID09PSBvcmllbnRhdGlvbi54ID8gYmFuZFNpemUgOiB3aWR0aCdcbiAgW2F0dHIueV09J2F4aXMub3JpZW50YXRpb24gPT09IG9yaWVudGF0aW9uLnkgPyAoYXhpcy5vcHRpb25zLmludmVydGVkID09PSB0cnVlID8gZnJvbSA6IHRvKSA6IG51bGwnXG4gIFthdHRyLnhdPSdheGlzLm9yaWVudGF0aW9uID09PSBvcmllbnRhdGlvbi54ID8gKGF4aXMub3B0aW9ucy5pbnZlcnRlZCA9PT0gdHJ1ZSA/IHRvIDogZnJvbSkgOiBudWxsJz5cbjwvc3ZnOnJlY3Q+XG48c3ZnOnRleHRcbiAgKm5nSWY9J2F4aXMub3JpZW50YXRpb24gPT09IG9yaWVudGF0aW9uLngnXG4gIHRleHQtYW5jaG9yPSdtaWRkbGUnXG4gIGRvbWluYW50LWJhc2VsaW5lPSdtaWRkbGUnXG4gIGNsYXNzPSdsYWJlbCBmb250LWNhcHRpb24gZmlsbC10ZXh0LTkwJ1xuICBbYXR0ci54XT0nZ2V0VGV4dFBvc2l0aW9uKCknXG4gIFthdHRyLnRyYW5zZm9ybV09XCIncm90YXRlKC05MCwgJysgZ2V0VGV4dFBvc2l0aW9uKCkgKycsJyArIGhlaWdodCAvIDIgKyAnKSdcIlxuICBbYXR0ci55XT0naGVpZ2h0IC8gMic+e3twbG90QmFuZC5sYWJlbH19XG48L3N2Zzp0ZXh0PlxuPHN2Zzp0ZXh0XG4gICpuZ0lmPSdheGlzLm9yaWVudGF0aW9uID09PSBvcmllbnRhdGlvbi55J1xuICB0ZXh0LWFuY2hvcj0nbWlkZGxlJ1xuICBjbGFzcz0nbGFiZWwgZm9udC1jYXB0aW9uIGZpbGwtdGV4dC05MCdcbiAgZG9taW5hbnQtYmFzZWxpbmU9J2NlbnRyYWwnXG4gIFthdHRyLnhdPSdnZXRUZXh0UG9zaXRpb24oKSdcbiAgW2F0dHIueV09J3dpZHRoIC8gMic+e3twbG90QmFuZC5sYWJlbH19XG48L3N2Zzp0ZXh0PlxuPG5nLWNvbnRhaW5lciAqbmdJZj0ncGxvdEJhbmQucmVzaXphYmxlJz5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj0ncGxvdEJhbmQuc2hvd0dyYWJiZXJzJz5cbiAgICA8c3ZnOmxpbmUgY2xhc3M9J2Rpc3BsYXktZ3JhYmJlcidcbiAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInBsb3RCYW5kLnN0eWxlPy5ncmFiYmVycz8uc3Ryb2tlIHx8ICd2YXIoLS1jb2xvci10ZXh0LTUwKSdcIlxuICAgICAgICAgICAgICBbYXR0ci5zdHJva2Utd2lkdGhdPSdwbG90QmFuZC5zdHlsZT8uZ3JhYmJlcnM/LnN0cm9rZVdpZHRoIHx8IDQnXG4gICAgICAgICAgICAgIFthdHRyLnN0cm9rZS1kYXNoYXJyYXldPSdwbG90QmFuZC5zdHlsZT8uZ3JhYmJlcnM/LnN0cm9rZURhc2hhcnJheSdcbiAgICAgICAgICAgICAgW2F0dHIueDFdPSdheGlzLm9yaWVudGF0aW9uID09PSBvcmllbnRhdGlvbi54ID8gZnJvbSA6IDAnXG4gICAgICAgICAgICAgIFthdHRyLngyXT0nYXhpcy5vcmllbnRhdGlvbiA9PT0gb3JpZW50YXRpb24ueCA/IGZyb20gOiB3aWR0aCdcbiAgICAgICAgICAgICAgW2F0dHIuZGF0YS1ncmFiYmVyXT1cIidmcm9tJ1wiXG4gICAgICAgICAgICAgIFthdHRyLnkxXT0nYXhpcy5vcmllbnRhdGlvbiA9PT0gb3JpZW50YXRpb24ueCA/IDAgOiBmcm9tJ1xuICAgICAgICAgICAgICBbYXR0ci55Ml09J2F4aXMub3JpZW50YXRpb24gPT09IG9yaWVudGF0aW9uLnggPyBoZWlnaHQgOiBmcm9tJz5cbiAgICA8L3N2ZzpsaW5lPlxuICAgIDxzdmc6bGluZSBjbGFzcz0nZGlzcGxheS1ncmFiYmVyJ1xuICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwicGxvdEJhbmQuc3R5bGU/LmdyYWJiZXJzPy5zdHJva2UgfHwgJ3ZhcigtLWNvbG9yLXRleHQtNTApJ1wiXG4gICAgICAgICAgICAgIFthdHRyLnN0cm9rZS13aWR0aF09J3Bsb3RCYW5kLnN0eWxlPy5ncmFiYmVycz8uc3Ryb2tlV2lkdGggfHwgNCdcbiAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlLWRhc2hhcnJheV09J3Bsb3RCYW5kLnN0eWxlPy5ncmFiYmVycz8uc3Ryb2tlRGFzaGFycmF5J1xuICAgICAgICAgICAgICBbYXR0ci54MV09J2F4aXMub3JpZW50YXRpb24gPT09IG9yaWVudGF0aW9uLnggPyB0byA6IDAnXG4gICAgICAgICAgICAgIFthdHRyLngyXT0nYXhpcy5vcmllbnRhdGlvbiA9PT0gb3JpZW50YXRpb24ueCA/IHRvIDogd2lkdGgnXG4gICAgICAgICAgICAgIFthdHRyLmRhdGEtZ3JhYmJlcl09XCIndG8nXCJcbiAgICAgICAgICAgICAgW2F0dHIueTFdPSdheGlzLm9yaWVudGF0aW9uID09PSBvcmllbnRhdGlvbi54ID8gMCA6IHRvJ1xuICAgICAgICAgICAgICBbYXR0ci55Ml09J2F4aXMub3JpZW50YXRpb24gPT09IG9yaWVudGF0aW9uLnggPyBoZWlnaHQgOiB0byc+XG4gICAgPC9zdmc6bGluZT5cbiAgPC9uZy1jb250YWluZXI+XG4gIDxzdmc6bGluZSBjbGFzcz0nZ3JhYmJlcidcbiAgICAgICAgICAgIFtjbGFzcy54LWdyYWJiZXJdPSdheGlzLm9yaWVudGF0aW9uID09PSBvcmllbnRhdGlvbi54J1xuICAgICAgICAgICAgW2NsYXNzLnktZ3JhYmJlcl09J2F4aXMub3JpZW50YXRpb24gPT09IG9yaWVudGF0aW9uLnknXG4gICAgICAgICAgICBbY2xhc3MucmVzaXplYWJsZV09J3Bsb3RCYW5kPy5yZXNpemFibGUnXG4gICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwicGxvdEJhbmQuc3R5bGU/LmdyYWJiZXJzPy5zdHJva2UgfHwgJ3ZhcigtLWNvbG9yLXRleHQtNTApJ1wiXG4gICAgICAgICAgICBbYXR0ci5zdHJva2Utd2lkdGhdPSc4J1xuICAgICAgICAgICAgW3N0eWxlLnRyYW5zZm9ybV09XCJheGlzLm9yaWVudGF0aW9uID09PSBvcmllbnRhdGlvbi54ID8gJ3RyYW5zbGF0ZVgoMnB4KScgOiAndHJhbnNsYXRlWSgycHgpJ1wiXG4gICAgICAgICAgICBbYXR0ci54MV09J2F4aXMub3JpZW50YXRpb24gPT09IG9yaWVudGF0aW9uLnggPyBmcm9tIDogMCdcbiAgICAgICAgICAgIFthdHRyLngyXT0nYXhpcy5vcmllbnRhdGlvbiA9PT0gb3JpZW50YXRpb24ueCA/IGZyb20gOiB3aWR0aCdcbiAgICAgICAgICAgIFthdHRyLmRhdGEtZ3JhYmJlcl09XCInZnJvbSdcIlxuICAgICAgICAgICAgW2F0dHIueTFdPSdheGlzLm9yaWVudGF0aW9uID09PSBvcmllbnRhdGlvbi54ID8gMCA6IGZyb20nXG4gICAgICAgICAgICBbYXR0ci55Ml09J2F4aXMub3JpZW50YXRpb24gPT09IG9yaWVudGF0aW9uLnggPyBoZWlnaHQgOiBmcm9tJz5cbiAgPC9zdmc6bGluZT5cbiAgPHN2ZzpsaW5lIGNsYXNzPSdncmFiYmVyJ1xuICAgICAgICAgICAgW2NsYXNzLngtZ3JhYmJlcl09J2F4aXMub3JpZW50YXRpb24gPT09IG9yaWVudGF0aW9uLngnXG4gICAgICAgICAgICBbY2xhc3MueS1ncmFiYmVyXT0nYXhpcy5vcmllbnRhdGlvbiA9PT0gb3JpZW50YXRpb24ueSdcbiAgICAgICAgICAgIFtjbGFzcy5yZXNpemVhYmxlXT0ncGxvdEJhbmQ/LnJlc2l6YWJsZSdcbiAgICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJwbG90QmFuZC5zdHlsZT8uZ3JhYmJlcnM/LnN0cm9rZSB8fCAndmFyKC0tY29sb3ItdGV4dC01MCknXCJcbiAgICAgICAgICAgIFthdHRyLnN0cm9rZS13aWR0aF09JzgnXG4gICAgICAgICAgICBbc3R5bGUudHJhbnNmb3JtXT1cImF4aXMub3JpZW50YXRpb24gPT09IG9yaWVudGF0aW9uLnggPyAndHJhbnNsYXRlWCgtMnB4KScgOiAndHJhbnNsYXRlWSgtMnB4KSdcIlxuICAgICAgICAgICAgW2F0dHIueDFdPSdheGlzLm9yaWVudGF0aW9uID09PSBvcmllbnRhdGlvbi54ID8gdG8gOiAwJ1xuICAgICAgICAgICAgW2F0dHIueDJdPSdheGlzLm9yaWVudGF0aW9uID09PSBvcmllbnRhdGlvbi54ID8gdG8gOiB3aWR0aCdcbiAgICAgICAgICAgIFthdHRyLmRhdGEtZ3JhYmJlcl09XCIndG8nXCJcbiAgICAgICAgICAgIFthdHRyLnkxXT0nYXhpcy5vcmllbnRhdGlvbiA9PT0gb3JpZW50YXRpb24ueCA/IDAgOiB0bydcbiAgICAgICAgICAgIFthdHRyLnkyXT0nYXhpcy5vcmllbnRhdGlvbiA9PT0gb3JpZW50YXRpb24ueCA/IGhlaWdodCA6IHRvJz5cbiAgPC9zdmc6bGluZT5cbjwvbmctY29udGFpbmVyPlxuIl19
161
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxvdC1iYW5kLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jaGFydC9jaGFydC1jb250YWluZXIvcGxvdGJhbmQvcGxvdC1iYW5kLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9jaGFydC9jaGFydC1jb250YWluZXIvcGxvdGJhbmQvcGxvdC1iYW5kLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssR0FFTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQztBQUV6QixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDNUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRXBFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7OztBQVczRCxNQUFNLE9BQU8saUJBQWlCO0lBTU8sS0FBSyxDQUFDLEtBQWlCO1FBQ3hELElBQUksQ0FBQyxJQUFJLENBQUM7WUFDUixNQUFNLEVBQUUsSUFBSSxDQUFDLFFBQVE7WUFDckIsS0FBSztTQUNOLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFd0MsV0FBVyxDQUFDLEtBQWlCO1FBQ3BFLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDUixNQUFNLEVBQUUsSUFBSSxDQUFDLFFBQVE7WUFDckIsS0FBSztTQUNOLENBQUMsQ0FBQztJQUNMLENBQUM7SUFNRCxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQzFCLENBQUM7SUFFRCxJQUFJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxJQUFJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQsSUFBSSxFQUFFO1FBQ0osT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELElBQUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FDYixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUM5RCxDQUFDO0lBQ0osQ0FBQztJQUVELFlBQ1UsWUFBMEIsRUFDMUIsR0FBc0IsRUFDdEIsT0FBbUI7UUFGbkIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDdEIsWUFBTyxHQUFQLE9BQU8sQ0FBWTtRQTdCN0IsZ0JBQVcsR0FBRyxlQUFlLENBQUM7UUF5SjlCLG9CQUFlLEdBQUcsR0FBRyxFQUFFO1lBQ3JCLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNyQyxHQUFHLEdBQUcsR0FBRyxZQUFZLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7WUFDaEQsR0FBRyxHQUFHLEdBQUcsWUFBWSxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO1lBQ2hELE1BQU0sSUFBSSxHQUNQLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBWSxZQUFZLElBQUk7Z0JBQ3pDLENBQUMsQ0FBRSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQVksQ0FBQyxPQUFPLEVBQUU7Z0JBQ3ZDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztZQUN6QixNQUFNLEVBQUUsR0FDTCxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQVUsWUFBWSxJQUFJO2dCQUN2QyxDQUFDLENBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFVLENBQUMsT0FBTyxFQUFFO2dCQUNyQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDdkIsTUFBTSxRQUFRLEdBQUcsQ0FBQyxDQUFDLElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzNFLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM5QixDQUFDLENBQUM7SUF6SUMsQ0FBQztJQUVKLElBQUksQ0FBQyxLQUE0QjtRQUMvQixJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQsZUFBZTtRQUNiLE1BQU0sZUFBZSxHQUFHLEVBQUU7YUFDdkIsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDO2FBQ2xDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUV2QixNQUFNLFlBQVksR0FBRyxFQUFFO2FBQ3BCLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQzthQUNsQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFekIsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRTtZQUN6QyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxLQUFLLGVBQWUsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDaEQsT0FBTyxFQUFFLENBQUMsRUFBRSxlQUFlLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDMUMsQ0FBQztZQUVELElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEtBQUssZUFBZSxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUNoRCxPQUFPLEVBQUUsQ0FBQyxFQUFFLGVBQWUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUMxQyxDQUFDO1lBQ0QsT0FBTyxJQUFJLENBQUE7UUFDYixDQUFDLENBQUMsQ0FBQztRQUVILE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUMvQixnQkFBZ0IsRUFDaEIsQ0FBQyxLQUF5QyxFQUFFLENBQVcsRUFBRSxFQUFFO1lBQ3pELE1BQU0sUUFBUSxHQUFHLFVBQVUsQ0FDekIsZUFBZSxDQUFDLElBQUksQ0FDbEIsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEtBQUssZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQ2pFLENBQ0YsQ0FBQztZQUVGLENBQUMsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQ3hCLEtBQUssQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUM5QyxDQUFDO1lBRUYsQ0FBQyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FDdEIsS0FBSyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUN6RCxDQUFDO1lBRUYsSUFBSSxDQUFDLElBQUksQ0FBQztnQkFDUixLQUFLO2dCQUNMLE1BQU0sRUFBRSxDQUFDO2FBQ1YsQ0FBQyxDQUFDO1lBRUgsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUMzQixDQUFDLENBQ0YsQ0FBQztRQUVGLElBQUksVUFBVSxDQUFDO1FBQ2YsSUFBSSxDQUFDLGNBQWMsR0FBRyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFaEMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQ25DLGdCQUFnQixFQUNoQixDQUFDLEtBQXlDLEVBQUUsQ0FBVyxFQUFFLEVBQUU7WUFDekQsSUFBSSxLQUFLLEVBQUUsSUFBSSxLQUFLLE9BQU8sRUFBRSxDQUFDO2dCQUM1QixNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDO2dCQUN4RCxVQUFVLEdBQUcsT0FBTyxDQUFDO1lBQ3ZCLENBQUM7WUFFRCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1lBQzdDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7WUFFN0MsTUFBTSxRQUFRLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUM7WUFDOUIsTUFBTSxRQUFRLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUM7WUFFOUIsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUMvQixLQUFLLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FDOUMsQ0FBQztZQUVGLElBQUksVUFBVSxLQUFLLE1BQU0sRUFBRSxDQUFDO2dCQUMxQixNQUFNLFNBQVMsR0FBRyxDQUFDLENBQUMsSUFBSSxJQUFJLFFBQVEsQ0FBQztnQkFFckMsSUFBSSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztvQkFDbkIsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUNoQixDQUFDO2dCQUVELElBQUksU0FBUyxFQUFFLENBQUM7b0JBQ2QsQ0FBQyxDQUFDLElBQUksR0FBRyxRQUFRLENBQUM7Z0JBQ3BCLENBQUM7WUFDSCxDQUFDO1lBRUQsSUFBSSxVQUFVLEtBQUssSUFBSSxFQUFFLENBQUM7Z0JBQ3hCLE1BQU0sU0FBUyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksUUFBUSxDQUFDO2dCQUVuQyxJQUFJLFNBQVMsRUFBRSxDQUFDO29CQUNkLENBQUMsQ0FBQyxFQUFFLEdBQUcsUUFBUSxDQUFDO2dCQUNsQixDQUFDO2dCQUVELElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7b0JBQ25CLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztnQkFDaEIsQ0FBQztZQUNILENBQUM7WUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDO2dCQUNSLEtBQUs7Z0JBQ0wsTUFBTSxFQUFFLENBQUM7YUFDVixDQUFDLENBQUM7WUFFSCxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzNCLENBQUMsQ0FDRixDQUFDO1FBRUYsZUFBZSxDQUFDLEtBQUssQ0FBVyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDL0MsWUFBWSxDQUFDLEtBQUssQ0FBVyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFNUMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQzVCLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDN0IsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUM1QixZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzVCLENBQUM7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzdDLElBQUksQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFrQkQsT0FBTyxDQUFDLENBQVc7UUFDakIsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsQ0FBQztZQUNwQyxPQUFPLFFBQVEsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsWUFBWSxHQUFHLENBQUM7UUFDbkQsQ0FBQztRQUNELE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDO0lBQ2hDLENBQUM7OEdBbE1VLGlCQUFpQjtrR0FBakIsaUJBQWlCLG1QQzNCOUIsMmtJQStFQTs7MkZEcERhLGlCQUFpQjtrQkFUN0IsU0FBUzsrQkFDRSxrQkFBa0IsY0FHakIsSUFBSSxXQUNQLEVBQ1AsbUJBQ2dCLHVCQUF1QixDQUFDLE1BQU07MElBR3RDLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBRTZCLEtBQUs7c0JBQXZDLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQU9RLFdBQVc7c0JBQW5ELFlBQVk7dUJBQUMsYUFBYSxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgKiBhcyBkMyBmcm9tICdkMyc7XG5cbmltcG9ydCB7IEF4aXMgfSBmcm9tICcuLi8uLi9jb3JlL2F4aXMvYXhpcyc7XG5pbXBvcnQgeyBBeGlzT3JpZW50YXRpb24gfSBmcm9tICcuLi8uLi9tb2RlbC9lbnVtL2F4aXMtb3JpZW50YXRpb24nO1xuaW1wb3J0IHsgSUNoYXJ0RXZlbnQgfSBmcm9tICcuLi8uLi9tb2RlbC9pLWNoYXJ0LWV2ZW50JztcbmltcG9ydCB7IFBsb3RCYW5kIH0gZnJvbSAnLi4vLi4vbW9kZWwvcGxvdC1iYW5kJztcbmltcG9ydCB7IENoYXJ0U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2UvY2hhcnQuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ1t0ZXRhLXBsb3QtYmFuZF0nLFxuICB0ZW1wbGF0ZVVybDogJy4vcGxvdC1iYW5kLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcGxvdC1iYW5kLmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6dHJ1ZSxcbiAgaW1wb3J0czpbXG4gIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBQbG90QmFuZENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIHBsb3RCYW5kOiBQbG90QmFuZDtcbiAgQElucHV0KCkgYXhpczogQXhpcztcbiAgQElucHV0KCkgc2NhbGU6IGFueTtcbiAgQElucHV0KCkgc2l6ZTogRE9NUmVjdDtcblxuICBASG9zdExpc3RlbmVyKCdjbGljaycsIFsnJGV2ZW50J10pIGNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgdGhpcy5lbWl0KHtcbiAgICAgIHRhcmdldDogdGhpcy5wbG90QmFuZCxcbiAgICAgIGV2ZW50LFxuICAgIH0pO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignY29udGV4dG1lbnUnLCBbJyRldmVudCddKSBjb250ZXh0TWVudShldmVudDogTW91c2VFdmVudCkge1xuICAgIHRoaXMuZW1pdCh7XG4gICAgICB0YXJnZXQ6IHRoaXMucGxvdEJhbmQsXG4gICAgICBldmVudCxcbiAgICB9KTtcbiAgfVxuXG4gIG9yaWVudGF0aW9uID0gQXhpc09yaWVudGF0aW9uO1xuICByZXNpemVFbGVtZW50czogYW55O1xuICBkcmFnRWxlbWVudHM6IGFueTtcblxuICBnZXQgaGVpZ2h0KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuc2l6ZS5oZWlnaHQ7XG4gIH1cblxuICBnZXQgd2lkdGgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5zaXplLndpZHRoO1xuICB9XG5cbiAgZ2V0IGZyb20oKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5zY2FsZSh0aGlzLnBsb3RCYW5kLmZyb20pO1xuICB9XG5cbiAgZ2V0IHRvKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuc2NhbGUodGhpcy5wbG90QmFuZC50byk7XG4gIH1cblxuICBnZXQgYmFuZFNpemUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gTWF0aC5hYnMoXG4gICAgICB0aGlzLnNjYWxlKHRoaXMucGxvdEJhbmQudG8pIC0gdGhpcy5zY2FsZSh0aGlzLnBsb3RCYW5kLmZyb20pXG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY2hhcnRTZXJ2aWNlOiBDaGFydFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgZWxlbWVudDogRWxlbWVudFJlZlxuICApIHt9XG5cbiAgZW1pdChldmVudDogSUNoYXJ0RXZlbnQ8UGxvdEJhbmQ+KSB7XG4gICAgdGhpcy5jaGFydFNlcnZpY2UuZW1pdFBsb3RiYW5kKGV2ZW50KTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBjb25zdCBwbG90YmFuZEVsZW1lbnQgPSBkM1xuICAgICAgLnNlbGVjdCh0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudClcbiAgICAgIC5zZWxlY3QoJy5wbG90YmFuZCcpO1xuXG4gICAgY29uc3QgZ3JhYkVsZW1lbnRzID0gZDNcbiAgICAgIC5zZWxlY3QodGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQpXG4gICAgICAuc2VsZWN0QWxsKCcuZ3JhYmJlcicpO1xuXG4gICAgdGhpcy5kcmFnRWxlbWVudHMgPSBkMy5kcmFnKCkuc3ViamVjdCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5heGlzLm9yaWVudGF0aW9uID09PSBBeGlzT3JpZW50YXRpb24ueCkge1xuICAgICAgICByZXR1cm4geyB4OiBwbG90YmFuZEVsZW1lbnQuYXR0cigneCcpIH07XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmF4aXMub3JpZW50YXRpb24gPT09IEF4aXNPcmllbnRhdGlvbi55KSB7XG4gICAgICAgIHJldHVybiB7IHk6IHBsb3RiYW5kRWxlbWVudC5hdHRyKCd5JykgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsXG4gICAgfSk7XG5cbiAgICBjb25zdCBkcmFnID0gdGhpcy5kcmFnRWxlbWVudHMub24oXG4gICAgICAnc3RhcnQgZHJhZyBlbmQnLFxuICAgICAgKGV2ZW50OiBkMy5EM0RyYWdFdmVudDxhbnksIFBsb3RCYW5kLCBhbnk+LCBkOiBQbG90QmFuZCkgPT4ge1xuICAgICAgICBjb25zdCBiYW5kU2l6ZSA9IHBhcnNlRmxvYXQoXG4gICAgICAgICAgcGxvdGJhbmRFbGVtZW50LmF0dHIoXG4gICAgICAgICAgICB0aGlzLmF4aXMub3JpZW50YXRpb24gPT09IEF4aXNPcmllbnRhdGlvbi54ID8gJ3dpZHRoJyA6ICdoZWlnaHQnXG4gICAgICAgICAgKVxuICAgICAgICApO1xuXG4gICAgICAgIGQuZnJvbSA9IHRoaXMuc2NhbGUuaW52ZXJ0KFxuICAgICAgICAgIGV2ZW50W0F4aXNPcmllbnRhdGlvblt0aGlzLmF4aXMub3JpZW50YXRpb25dXVxuICAgICAgICApO1xuXG4gICAgICAgIGQudG8gPSB0aGlzLnNjYWxlLmludmVydChcbiAgICAgICAgICBldmVudFtBeGlzT3JpZW50YXRpb25bdGhpcy5heGlzLm9yaWVudGF0aW9uXV0gKyBiYW5kU2l6ZVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuZW1pdCh7XG4gICAgICAgICAgZXZlbnQsXG4gICAgICAgICAgdGFyZ2V0OiBkLFxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9XG4gICAgKTtcblxuICAgIGxldCBncmFiYmVyS2V5O1xuICAgIHRoaXMucmVzaXplRWxlbWVudHMgPSBkMy5kcmFnKCk7XG5cbiAgICBjb25zdCByZXNpemUgPSB0aGlzLnJlc2l6ZUVsZW1lbnRzLm9uKFxuICAgICAgJ3N0YXJ0IGRyYWcgZW5kJyxcbiAgICAgIChldmVudDogZDMuRDNEcmFnRXZlbnQ8YW55LCBQbG90QmFuZCwgYW55PiwgZDogUGxvdEJhbmQpID0+IHtcbiAgICAgICAgaWYgKGV2ZW50Py50eXBlID09PSAnc3RhcnQnKSB7XG4gICAgICAgICAgY29uc3QgeyBncmFiYmVyIH0gPSBldmVudD8uc291cmNlRXZlbnQ/LnRhcmdldD8uZGF0YXNldDtcbiAgICAgICAgICBncmFiYmVyS2V5ID0gZ3JhYmJlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG1pbiA9IE1hdGgubWluKC4uLnRoaXMuc2NhbGUuZG9tYWluKCkpO1xuICAgICAgICBjb25zdCBtYXggPSBNYXRoLm1heCguLi50aGlzLnNjYWxlLmRvbWFpbigpKTtcblxuICAgICAgICBjb25zdCBtaW5WYWx1ZSA9IGQubWluID8/IG1pbjtcbiAgICAgICAgY29uc3QgbWF4VmFsdWUgPSBkLm1heCA/PyBtYXg7XG5cbiAgICAgICAgZFtncmFiYmVyS2V5XSA9IHRoaXMuc2NhbGUuaW52ZXJ0KFxuICAgICAgICAgIGV2ZW50W0F4aXNPcmllbnRhdGlvblt0aGlzLmF4aXMub3JpZW50YXRpb25dXVxuICAgICAgICApO1xuXG4gICAgICAgIGlmIChncmFiYmVyS2V5ID09PSAnZnJvbScpIHtcbiAgICAgICAgICBjb25zdCBib3JkZXJNaW4gPSBkLmZyb20gPD0gbWluVmFsdWU7XG5cbiAgICAgICAgICBpZiAoZC5mcm9tID49IGQudG8pIHtcbiAgICAgICAgICAgIGQuZnJvbSA9IGQudG87XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGJvcmRlck1pbikge1xuICAgICAgICAgICAgZC5mcm9tID0gbWluVmFsdWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGdyYWJiZXJLZXkgPT09ICd0bycpIHtcbiAgICAgICAgICBjb25zdCBib3JkZXJNYXggPSBkLnRvID49IG1heFZhbHVlO1xuXG4gICAgICAgICAgaWYgKGJvcmRlck1heCkge1xuICAgICAgICAgICAgZC50byA9IG1heFZhbHVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChkLnRvIDw9IGQuZnJvbSkge1xuICAgICAgICAgICAgZC50byA9IGQuZnJvbTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmVtaXQoe1xuICAgICAgICAgIGV2ZW50LFxuICAgICAgICAgIHRhcmdldDogZCxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfVxuICAgICk7XG5cbiAgICBwbG90YmFuZEVsZW1lbnQuZGF0dW08UGxvdEJhbmQ+KHRoaXMucGxvdEJhbmQpO1xuICAgIGdyYWJFbGVtZW50cy5kYXR1bTxQbG90QmFuZD4odGhpcy5wbG90QmFuZCk7XG5cbiAgICBpZiAodGhpcy5wbG90QmFuZC5kcmFnZ2FibGUpIHtcbiAgICAgIHBsb3RiYW5kRWxlbWVudC5jYWxsKGRyYWcpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnBsb3RCYW5kLnJlc2l6YWJsZSkge1xuICAgICAgZ3JhYkVsZW1lbnRzLmNhbGwocmVzaXplKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmRyYWdFbGVtZW50cy5vbignc3RhcnQgZHJhZyBlbmQnLCBudWxsKTtcbiAgICB0aGlzLnJlc2l6ZUVsZW1lbnRzLm9uKCdzdGFydCBkcmFnIGVuZCcsIG51bGwpO1xuICB9XG5cbiAgZ2V0VGV4dFBvc2l0aW9uID0gKCkgPT4ge1xuICAgIGxldCBbbWluLCBtYXhdID0gdGhpcy5zY2FsZS5kb21haW4oKTtcbiAgICBtaW4gPSBtaW4gaW5zdGFuY2VvZiBEYXRlID8gbWluLmdldFRpbWUoKSA6IG1pbjtcbiAgICBtYXggPSBtYXggaW5zdGFuY2VvZiBEYXRlID8gbWF4LmdldFRpbWUoKSA6IG1heDtcbiAgICBjb25zdCBmcm9tID1cbiAgICAgICh0aGlzLnBsb3RCYW5kLmZyb20gYXMgYW55KSBpbnN0YW5jZW9mIERhdGVcbiAgICAgICAgPyAodGhpcy5wbG90QmFuZC5mcm9tIGFzIGFueSkuZ2V0VGltZSgpXG4gICAgICAgIDogdGhpcy5wbG90QmFuZC5mcm9tO1xuICAgIGNvbnN0IHRvID1cbiAgICAgICh0aGlzLnBsb3RCYW5kLnRvIGFzIGFueSkgaW5zdGFuY2VvZiBEYXRlXG4gICAgICAgID8gKHRoaXMucGxvdEJhbmQudG8gYXMgYW55KS5nZXRUaW1lKClcbiAgICAgICAgOiB0aGlzLnBsb3RCYW5kLnRvO1xuICAgIGNvbnN0IHBvc2l0aW9uID0gKChmcm9tIDw9IG1pbiA/IG1pbiA6IGZyb20pICsgKHRvID49IG1heCA/IG1heCA6IHRvKSkgLyAyO1xuICAgIHJldHVybiB0aGlzLnNjYWxlKHBvc2l0aW9uKTtcbiAgfTtcblxuICBnZXRGaWxsKGQ6IFBsb3RCYW5kKTogc3RyaW5nIHtcbiAgICBpZiAoZC5zdHlsZT8ucGxvdEJhbmQ/LnBhdHRlcm5JbWFnZSkge1xuICAgICAgcmV0dXJuIGB1cmwoIyR7ZC5zdHlsZS5wbG90QmFuZD8ucGF0dGVybkltYWdlfSlgO1xuICAgIH1cbiAgICByZXR1cm4gZC5zdHlsZS5wbG90QmFuZD8uZmlsbDtcbiAgfVxufVxuIiwiPHN2ZzpyZWN0XG4gIGNsYXNzPSdwbG90YmFuZCcgeG1sbnM6c3ZnPSdodHRwOi8vd3d3LnczLm9yZy8xOTk5L2h0bWwnXG4gIFtjbGFzcy5kcmFnZ2FibGVdPSdwbG90QmFuZD8uZHJhZ2dhYmxlID09PSB0cnVlJ1xuICBbYXR0ci5maWxsXT0nZ2V0RmlsbChwbG90QmFuZCknXG4gIFthdHRyLm9wYWNpdHldPSdwbG90QmFuZC5zdHlsZT8ucGxvdEJhbmQ/Lm9wYWNpdHknXG4gIFthdHRyLmhlaWdodF09J2F4aXMub3JpZW50YXRpb24gPT09IG9yaWVudGF0aW9uLnggPyBoZWlnaHQgOiBiYW5kU2l6ZSdcbiAgW2F0dHIud2lkdGhdPSdheGlzLm9yaWVudGF0aW9uID09PSBvcmllbnRhdGlvbi54ID8gYmFuZFNpemUgOiB3aWR0aCdcbiAgW2F0dHIueV09J2F4aXMub3JpZW50YXRpb24gPT09IG9yaWVudGF0aW9uLnkgPyAoYXhpcy5vcHRpb25zLmludmVydGVkID09PSB0cnVlID8gZnJvbSA6IHRvKSA6IG51bGwnXG4gIFthdHRyLnhdPSdheGlzLm9yaWVudGF0aW9uID09PSBvcmllbnRhdGlvbi54ID8gKGF4aXMub3B0aW9ucy5pbnZlcnRlZCA9PT0gdHJ1ZSA/IHRvIDogZnJvbSkgOiBudWxsJz5cbjwvc3ZnOnJlY3Q+XG5AaWYgKGF4aXMub3JpZW50YXRpb24gPT09IG9yaWVudGF0aW9uLngpIHtcbiAgPHN2Zzp0ZXh0XG4gICAgdGV4dC1hbmNob3I9J21pZGRsZSdcbiAgICBkb21pbmFudC1iYXNlbGluZT0nbWlkZGxlJ1xuICAgIGNsYXNzPSdsYWJlbCBmb250LWNhcHRpb24gZmlsbC10ZXh0LTkwJ1xuICAgIFthdHRyLnhdPSdnZXRUZXh0UG9zaXRpb24oKSdcbiAgICBbYXR0ci50cmFuc2Zvcm1dPVwiJ3JvdGF0ZSgtOTAsICcrIGdldFRleHRQb3NpdGlvbigpICsnLCcgKyBoZWlnaHQgLyAyICsgJyknXCJcbiAgICBbYXR0ci55XT0naGVpZ2h0IC8gMic+e3sgcGxvdEJhbmQubGFiZWwgfX1cbiAgPC9zdmc6dGV4dD5cbn1cbkBpZiAoYXhpcy5vcmllbnRhdGlvbiA9PT0gb3JpZW50YXRpb24ueSkge1xuICA8c3ZnOnRleHRcbiAgICB0ZXh0LWFuY2hvcj0nbWlkZGxlJ1xuICAgIGNsYXNzPSdsYWJlbCBmb250LWNhcHRpb24gZmlsbC10ZXh0LTkwJ1xuICAgIGRvbWluYW50LWJhc2VsaW5lPSdjZW50cmFsJ1xuICAgIFthdHRyLnhdPSdnZXRUZXh0UG9zaXRpb24oKSdcbiAgICBbYXR0ci55XT0nd2lkdGggLyAyJz57eyBwbG90QmFuZC5sYWJlbCB9fVxuICA8L3N2Zzp0ZXh0PlxufVxuQGlmIChwbG90QmFuZC5yZXNpemFibGUpIHtcbiAgQGlmIChwbG90QmFuZC5zaG93R3JhYmJlcnMpIHtcbiAgICA8c3ZnOmxpbmUgY2xhc3M9J2Rpc3BsYXktZ3JhYmJlcidcbiAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInBsb3RCYW5kLnN0eWxlPy5ncmFiYmVycz8uc3Ryb2tlIHx8ICd2YXIoLS1jb2xvci10ZXh0LTUwKSdcIlxuICAgICAgICAgICAgICBbYXR0ci5zdHJva2Utd2lkdGhdPSdwbG90QmFuZC5zdHlsZT8uZ3JhYmJlcnM/LnN0cm9rZVdpZHRoIHx8IDQnXG4gICAgICAgICAgICAgIFthdHRyLnN0cm9rZS1kYXNoYXJyYXldPSdwbG90QmFuZC5zdHlsZT8uZ3JhYmJlcnM/LnN0cm9rZURhc2hhcnJheSdcbiAgICAgICAgICAgICAgW2F0dHIueDFdPSdheGlzLm9yaWVudGF0aW9uID09PSBvcmllbnRhdGlvbi54ID8gZnJvbSA6IDAnXG4gICAgICAgICAgICAgIFthdHRyLngyXT0nYXhpcy5vcmllbnRhdGlvbiA9PT0gb3JpZW50YXRpb24ueCA/IGZyb20gOiB3aWR0aCdcbiAgICAgICAgICAgICAgW2F0dHIuZGF0YS1ncmFiYmVyXT1cIidmcm9tJ1wiXG4gICAgICAgICAgICAgIFthdHRyLnkxXT0nYXhpcy5vcmllbnRhdGlvbiA9PT0gb3JpZW50YXRpb24ueCA/IDAgOiBmcm9tJ1xuICAgICAgICAgICAgICBbYXR0ci55Ml09J2F4aXMub3JpZW50YXRpb24gPT09IG9yaWVudGF0aW9uLnggPyBoZWlnaHQgOiBmcm9tJz5cbiAgICA8L3N2ZzpsaW5lPlxuICAgIDxzdmc6bGluZSBjbGFzcz0nZGlzcGxheS1ncmFiYmVyJ1xuICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwicGxvdEJhbmQuc3R5bGU/LmdyYWJiZXJzPy5zdHJva2UgfHwgJ3ZhcigtLWNvbG9yLXRleHQtNTApJ1wiXG4gICAgICAgICAgICAgIFthdHRyLnN0cm9rZS13aWR0aF09J3Bsb3RCYW5kLnN0eWxlPy5ncmFiYmVycz8uc3Ryb2tlV2lkdGggfHwgNCdcbiAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlLWRhc2hhcnJheV09J3Bsb3RCYW5kLnN0eWxlPy5ncmFiYmVycz8uc3Ryb2tlRGFzaGFycmF5J1xuICAgICAgICAgICAgICBbYXR0ci54MV09J2F4aXMub3JpZW50YXRpb24gPT09IG9yaWVudGF0aW9uLnggPyB0byA6IDAnXG4gICAgICAgICAgICAgIFthdHRyLngyXT0nYXhpcy5vcmllbnRhdGlvbiA9PT0gb3JpZW50YXRpb24ueCA/IHRvIDogd2lkdGgnXG4gICAgICAgICAgICAgIFthdHRyLmRhdGEtZ3JhYmJlcl09XCIndG8nXCJcbiAgICAgICAgICAgICAgW2F0dHIueTFdPSdheGlzLm9yaWVudGF0aW9uID09PSBvcmllbnRhdGlvbi54ID8gMCA6IHRvJ1xuICAgICAgICAgICAgICBbYXR0ci55Ml09J2F4aXMub3JpZW50YXRpb24gPT09IG9yaWVudGF0aW9uLnggPyBoZWlnaHQgOiB0byc+XG4gICAgPC9zdmc6bGluZT5cbiAgfVxuICA8c3ZnOmxpbmUgY2xhc3M9J2dyYWJiZXInXG4gICAgICAgICAgICBbY2xhc3MueC1ncmFiYmVyXT0nYXhpcy5vcmllbnRhdGlvbiA9PT0gb3JpZW50YXRpb24ueCdcbiAgICAgICAgICAgIFtjbGFzcy55LWdyYWJiZXJdPSdheGlzLm9yaWVudGF0aW9uID09PSBvcmllbnRhdGlvbi55J1xuICAgICAgICAgICAgW2NsYXNzLnJlc2l6ZWFibGVdPSdwbG90QmFuZD8ucmVzaXphYmxlJ1xuICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInBsb3RCYW5kLnN0eWxlPy5ncmFiYmVycz8uc3Ryb2tlIHx8ICd2YXIoLS1jb2xvci10ZXh0LTUwKSdcIlxuICAgICAgICAgICAgW2F0dHIuc3Ryb2tlLXdpZHRoXT0nOCdcbiAgICAgICAgICAgIFtzdHlsZS50cmFuc2Zvcm1dPVwiYXhpcy5vcmllbnRhdGlvbiA9PT0gb3JpZW50YXRpb24ueCA/ICd0cmFuc2xhdGVYKDJweCknIDogJ3RyYW5zbGF0ZVkoMnB4KSdcIlxuICAgICAgICAgICAgW2F0dHIueDFdPSdheGlzLm9yaWVudGF0aW9uID09PSBvcmllbnRhdGlvbi54ID8gZnJvbSA6IDAnXG4gICAgICAgICAgICBbYXR0ci54Ml09J2F4aXMub3JpZW50YXRpb24gPT09IG9yaWVudGF0aW9uLnggPyBmcm9tIDogd2lkdGgnXG4gICAgICAgICAgICBbYXR0ci5kYXRhLWdyYWJiZXJdPVwiJ2Zyb20nXCJcbiAgICAgICAgICAgIFthdHRyLnkxXT0nYXhpcy5vcmllbnRhdGlvbiA9PT0gb3JpZW50YXRpb24ueCA/IDAgOiBmcm9tJ1xuICAgICAgICAgICAgW2F0dHIueTJdPSdheGlzLm9yaWVudGF0aW9uID09PSBvcmllbnRhdGlvbi54ID8gaGVpZ2h0IDogZnJvbSc+XG4gIDwvc3ZnOmxpbmU+XG4gIDxzdmc6bGluZSBjbGFzcz0nZ3JhYmJlcidcbiAgICAgICAgICAgIFtjbGFzcy54LWdyYWJiZXJdPSdheGlzLm9yaWVudGF0aW9uID09PSBvcmllbnRhdGlvbi54J1xuICAgICAgICAgICAgW2NsYXNzLnktZ3JhYmJlcl09J2F4aXMub3JpZW50YXRpb24gPT09IG9yaWVudGF0aW9uLnknXG4gICAgICAgICAgICBbY2xhc3MucmVzaXplYWJsZV09J3Bsb3RCYW5kPy5yZXNpemFibGUnXG4gICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwicGxvdEJhbmQuc3R5bGU/LmdyYWJiZXJzPy5zdHJva2UgfHwgJ3ZhcigtLWNvbG9yLXRleHQtNTApJ1wiXG4gICAgICAgICAgICBbYXR0ci5zdHJva2Utd2lkdGhdPSc4J1xuICAgICAgICAgICAgW3N0eWxlLnRyYW5zZm9ybV09XCJheGlzLm9yaWVudGF0aW9uID09PSBvcmllbnRhdGlvbi54ID8gJ3RyYW5zbGF0ZVgoLTJweCknIDogJ3RyYW5zbGF0ZVkoLTJweCknXCJcbiAgICAgICAgICAgIFthdHRyLngxXT0nYXhpcy5vcmllbnRhdGlvbiA9PT0gb3JpZW50YXRpb24ueCA/IHRvIDogMCdcbiAgICAgICAgICAgIFthdHRyLngyXT0nYXhpcy5vcmllbnRhdGlvbiA9PT0gb3JpZW50YXRpb24ueCA/IHRvIDogd2lkdGgnXG4gICAgICAgICAgICBbYXR0ci5kYXRhLWdyYWJiZXJdPVwiJ3RvJ1wiXG4gICAgICAgICAgICBbYXR0ci55MV09J2F4aXMub3JpZW50YXRpb24gPT09IG9yaWVudGF0aW9uLnggPyAwIDogdG8nXG4gICAgICAgICAgICBbYXR0ci55Ml09J2F4aXMub3JpZW50YXRpb24gPT09IG9yaWVudGF0aW9uLnggPyBoZWlnaHQgOiB0byc+XG4gIDwvc3ZnOmxpbmU+XG59XG4iXX0=
@@ -6,7 +6,6 @@ import { ZoomService } from '../../service/zoom.service';
6
6
  import { ScaleService } from '../../service/scale.service';
7
7
  import * as d3 from 'd3';
8
8
  import { ChartService } from '../../service/chart.service';
9
- import { NgIf } from '@angular/common';
10
9
  import * as i0 from "@angular/core";
11
10
  import * as i1 from "../../service/zoom.service";
12
11
  import * as i2 from "../../service/scale.service";
@@ -75,12 +74,12 @@ export class PlotlineComponent {
75
74
  get width() {
76
75
  return this.size.width;
77
76
  }
78
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: PlotlineComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.ZoomService }, { token: i2.ScaleService }, { token: i3.ChartService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
79
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.5", type: PlotlineComponent, isStandalone: true, selector: "[teta-plot-line]", inputs: { plotLine: "plotLine", size: "size", axis: "axis", scale: "scale" }, ngImport: i0, template: "<svg:line class=\"plotline\"\n [attr.stroke]=\"plotLine.style?.stroke || 'red'\"\n [attr.stroke-width]=\"plotLine.style?.strokeWidth || 4\"\n [attr.stroke-dasharray]=\"plotLine.style?.strokeDasharray\"\n [attr.x1]=\"axis.orientation === orientation.x ? value : 0\"\n [attr.x2]=\"axis.orientation === orientation.x ? value : width\"\n [attr.y1]=\"axis.orientation === orientation.x ? 0 : value\"\n [attr.y2]=\"axis.orientation === orientation.x ? height : value\">\n</svg:line>\n\n\n<svg:text\n *ngIf=\"axis.orientation === orientation.x\"\n text-anchor=\"middle\"\n dominant-baseline=\"central\"\n class=\"label font-title-2 fill-text-70\"\n [attr.x]=\"value\"\n dy=\"-2em\"\n [attr.transform]=\"'rotate(-90, '+ value +',' + height / 2 + ')'\"\n [attr.y]=\"height / 2\">{{plotLine.label}}\n</svg:text>\n\n<svg:text\n *ngIf=\"axis.orientation === orientation.y\"\n text-anchor=\"middle\"\n class=\"label font-title-2 fill-text-70\"\n dominant-baseline=\"central\"\n [attr.x]=\"value\"\n [attr.y]=\"width / 2\">{{plotLine.label}}\n</svg:text>\n\n<svg:line class=\"grabber\"\n\n [class.x-grabber]=\"axis.orientation === orientation.x\"\n [class.y-grabber]=\"axis.orientation === orientation.y\"\n [attr.stroke]=\"'red'\"\n [attr.stroke-width]=\"8\"\n opacity=\"0\"\n [attr.x1]=\"axis.orientation === orientation.x ? value : 0\"\n [attr.x2]=\"axis.orientation === orientation.x ? value : width\"\n [attr.y1]=\"axis.orientation === orientation.x ? 0 : value\"\n [attr.y2]=\"axis.orientation === orientation.x ? height : value\">\n</svg:line>\n", styles: [":host .x-grabber{cursor:col-resize}:host .y-grabber{cursor:row-resize}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
77
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.1", ngImport: i0, type: PlotlineComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.ZoomService }, { token: i2.ScaleService }, { token: i3.ChartService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
78
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.1", type: PlotlineComponent, isStandalone: true, selector: "[teta-plot-line]", inputs: { plotLine: "plotLine", size: "size", axis: "axis", scale: "scale" }, ngImport: i0, template: "<svg:line class=\"plotline\"\n [attr.stroke]=\"plotLine.style?.stroke || 'red'\"\n [attr.stroke-width]=\"plotLine.style?.strokeWidth || 4\"\n [attr.stroke-dasharray]=\"plotLine.style?.strokeDasharray\"\n [attr.x1]=\"axis.orientation === orientation.x ? value : 0\"\n [attr.x2]=\"axis.orientation === orientation.x ? value : width\"\n [attr.y1]=\"axis.orientation === orientation.x ? 0 : value\"\n [attr.y2]=\"axis.orientation === orientation.x ? height : value\">\n</svg:line>\n\n\n@if (axis.orientation === orientation.x) {\n <svg:text\n text-anchor=\"middle\"\n dominant-baseline=\"central\"\n class=\"label font-title-2 fill-text-70\"\n [attr.x]=\"value\"\n dy=\"-2em\"\n [attr.transform]=\"'rotate(-90, '+ value +',' + height / 2 + ')'\"\n [attr.y]=\"height / 2\">{{ plotLine.label }}\n </svg:text>\n}\n\n@if (axis.orientation === orientation.y) {\n <svg:text\n text-anchor=\"middle\"\n class=\"label font-title-2 fill-text-70\"\n dominant-baseline=\"central\"\n [attr.x]=\"value\"\n [attr.y]=\"width / 2\">{{ plotLine.label }}\n </svg:text>\n}\n<svg:line class=\"grabber\"\n [class.x-grabber]=\"axis.orientation === orientation.x\"\n [class.y-grabber]=\"axis.orientation === orientation.y\"\n [attr.stroke]=\"'red'\"\n [attr.stroke-width]=\"8\"\n opacity=\"0\"\n [attr.x1]=\"axis.orientation === orientation.x ? value : 0\"\n [attr.x2]=\"axis.orientation === orientation.x ? value : width\"\n [attr.y1]=\"axis.orientation === orientation.x ? 0 : value\"\n [attr.y2]=\"axis.orientation === orientation.x ? height : value\">\n</svg:line>\n", styles: [":host .x-grabber{cursor:col-resize}:host .y-grabber{cursor:row-resize}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
80
79
  }
81
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: PlotlineComponent, decorators: [{
80
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.1", ngImport: i0, type: PlotlineComponent, decorators: [{
82
81
  type: Component,
83
- args: [{ selector: '[teta-plot-line]', standalone: true, imports: [NgIf], changeDetection: ChangeDetectionStrategy.OnPush, template: "<svg:line class=\"plotline\"\n [attr.stroke]=\"plotLine.style?.stroke || 'red'\"\n [attr.stroke-width]=\"plotLine.style?.strokeWidth || 4\"\n [attr.stroke-dasharray]=\"plotLine.style?.strokeDasharray\"\n [attr.x1]=\"axis.orientation === orientation.x ? value : 0\"\n [attr.x2]=\"axis.orientation === orientation.x ? value : width\"\n [attr.y1]=\"axis.orientation === orientation.x ? 0 : value\"\n [attr.y2]=\"axis.orientation === orientation.x ? height : value\">\n</svg:line>\n\n\n<svg:text\n *ngIf=\"axis.orientation === orientation.x\"\n text-anchor=\"middle\"\n dominant-baseline=\"central\"\n class=\"label font-title-2 fill-text-70\"\n [attr.x]=\"value\"\n dy=\"-2em\"\n [attr.transform]=\"'rotate(-90, '+ value +',' + height / 2 + ')'\"\n [attr.y]=\"height / 2\">{{plotLine.label}}\n</svg:text>\n\n<svg:text\n *ngIf=\"axis.orientation === orientation.y\"\n text-anchor=\"middle\"\n class=\"label font-title-2 fill-text-70\"\n dominant-baseline=\"central\"\n [attr.x]=\"value\"\n [attr.y]=\"width / 2\">{{plotLine.label}}\n</svg:text>\n\n<svg:line class=\"grabber\"\n\n [class.x-grabber]=\"axis.orientation === orientation.x\"\n [class.y-grabber]=\"axis.orientation === orientation.y\"\n [attr.stroke]=\"'red'\"\n [attr.stroke-width]=\"8\"\n opacity=\"0\"\n [attr.x1]=\"axis.orientation === orientation.x ? value : 0\"\n [attr.x2]=\"axis.orientation === orientation.x ? value : width\"\n [attr.y1]=\"axis.orientation === orientation.x ? 0 : value\"\n [attr.y2]=\"axis.orientation === orientation.x ? height : value\">\n</svg:line>\n", styles: [":host .x-grabber{cursor:col-resize}:host .y-grabber{cursor:row-resize}\n"] }]
82
+ args: [{ selector: '[teta-plot-line]', standalone: true, imports: [], changeDetection: ChangeDetectionStrategy.OnPush, template: "<svg:line class=\"plotline\"\n [attr.stroke]=\"plotLine.style?.stroke || 'red'\"\n [attr.stroke-width]=\"plotLine.style?.strokeWidth || 4\"\n [attr.stroke-dasharray]=\"plotLine.style?.strokeDasharray\"\n [attr.x1]=\"axis.orientation === orientation.x ? value : 0\"\n [attr.x2]=\"axis.orientation === orientation.x ? value : width\"\n [attr.y1]=\"axis.orientation === orientation.x ? 0 : value\"\n [attr.y2]=\"axis.orientation === orientation.x ? height : value\">\n</svg:line>\n\n\n@if (axis.orientation === orientation.x) {\n <svg:text\n text-anchor=\"middle\"\n dominant-baseline=\"central\"\n class=\"label font-title-2 fill-text-70\"\n [attr.x]=\"value\"\n dy=\"-2em\"\n [attr.transform]=\"'rotate(-90, '+ value +',' + height / 2 + ')'\"\n [attr.y]=\"height / 2\">{{ plotLine.label }}\n </svg:text>\n}\n\n@if (axis.orientation === orientation.y) {\n <svg:text\n text-anchor=\"middle\"\n class=\"label font-title-2 fill-text-70\"\n dominant-baseline=\"central\"\n [attr.x]=\"value\"\n [attr.y]=\"width / 2\">{{ plotLine.label }}\n </svg:text>\n}\n<svg:line class=\"grabber\"\n [class.x-grabber]=\"axis.orientation === orientation.x\"\n [class.y-grabber]=\"axis.orientation === orientation.y\"\n [attr.stroke]=\"'red'\"\n [attr.stroke-width]=\"8\"\n opacity=\"0\"\n [attr.x1]=\"axis.orientation === orientation.x ? value : 0\"\n [attr.x2]=\"axis.orientation === orientation.x ? value : width\"\n [attr.y1]=\"axis.orientation === orientation.x ? 0 : value\"\n [attr.y2]=\"axis.orientation === orientation.x ? height : value\">\n</svg:line>\n", styles: [":host .x-grabber{cursor:col-resize}:host .y-grabber{cursor:row-resize}\n"] }]
84
83
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.ZoomService }, { type: i2.ScaleService }, { type: i3.ChartService }, { type: i0.ElementRef }], propDecorators: { plotLine: [{
85
84
  type: Input
86
85
  }], size: [{
@@ -90,4 +89,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
90
89
  }], scale: [{
91
90
  type: Input
92
91
  }] } });
93
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxvdGxpbmUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NoYXJ0L2NoYXJ0LWNvbnRhaW5lci9wbG90bGluZS9wbG90bGluZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvY2hhcnQvY2hhcnQtY29udGFpbmVyL3Bsb3RsaW5lL3Bsb3RsaW5lLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsS0FBSyxHQUVOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQyxPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDMUMsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBQ2xFLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUN2RCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFDekQsT0FBTyxLQUFLLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFFekIsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7QUFVdkMsTUFBTSxPQUFPLGlCQUFpQjtJQVU1QixZQUNVLEdBQXNCLEVBQ3RCLFdBQXdCLEVBQ3hCLFlBQTBCLEVBQzFCLFlBQTBCLEVBQzFCLE9BQW1CO1FBSm5CLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQ3RCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLFlBQU8sR0FBUCxPQUFPLENBQVk7UUFWN0Is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QU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQzFCLENBQUM7SUFFRCxJQUFJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3pCLENBQUM7OEdBekZVLGlCQUFpQjtrR0FBakIsaUJBQWlCLDBKQzFCOUIsa3FEQTJDQSxrSURwQlcsSUFBSTs7MkZBR0YsaUJBQWlCO2tCQVI3QixTQUFTOytCQUNFLGtCQUFrQixjQUdqQixJQUFJLFdBQ1AsQ0FBQyxJQUFJLENBQUMsbUJBQ0csdUJBQXVCLENBQUMsTUFBTTsrTEFHdEMsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBJbnB1dCwgT25EZXN0cm95LFxuICBPbkluaXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtQbG90TGluZX0gZnJvbSAnLi4vLi4vbW9kZWwvcGxvdC1saW5lJztcbmltcG9ydCB7QXhpc30gZnJvbSAnLi4vLi4vY29yZS9heGlzL2F4aXMnO1xuaW1wb3J0IHtBeGlzT3JpZW50YXRpb259IGZyb20gJy4uLy4uL21vZGVsL2VudW0vYXhpcy1vcmllbnRhdGlvbic7XG5pbXBvcnQge1pvb21TZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlL3pvb20uc2VydmljZSc7XG5pbXBvcnQge1NjYWxlU2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZS9zY2FsZS5zZXJ2aWNlJztcbmltcG9ydCAqIGFzIGQzIGZyb20gJ2QzJztcbmltcG9ydCB7SUNoYXJ0RXZlbnR9IGZyb20gJy4uLy4uL21vZGVsL2ktY2hhcnQtZXZlbnQnO1xuaW1wb3J0IHtDaGFydFNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2UvY2hhcnQuc2VydmljZSc7XG5pbXBvcnQgeyBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnW3RldGEtcGxvdC1saW5lXScsXG4gIHRlbXBsYXRlVXJsOiAnLi9wbG90bGluZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3Bsb3RsaW5lLmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6dHJ1ZSxcbiAgaW1wb3J0czpbTmdJZl0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBQbG90bGluZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgcGxvdExpbmU6IFBsb3RMaW5lO1xuICBASW5wdXQoKSBzaXplOiBET01SZWN0O1xuICBASW5wdXQoKSBheGlzOiBBeGlzO1xuICBASW5wdXQoKSBzY2FsZTogYW55O1xuICBvcmllbnRhdGlvbiA9IEF4aXNPcmllbnRhdGlvbjtcbiAgZHJhZ0VsZW1lbnRzOiBhbnk7XG5cbiAgcHJpdmF0ZSBfZG9tYWluOiBudW1iZXJbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSB6b29tU2VydmljZTogWm9vbVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzY2FsZVNlcnZpY2U6IFNjYWxlU2VydmljZSxcbiAgICBwcml2YXRlIGNoYXJ0U2VydmljZTogQ2hhcnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgZWxlbWVudDogRWxlbWVudFJlZlxuICApIHtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuX2RvbWFpbiA9IHRoaXMuc2NhbGUuZG9tYWluKCk7XG5cbiAgICBjb25zdCBwbG90bGluZUVsZW1lbnQgPSBkM1xuICAgICAgLnNlbGVjdCh0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudClcbiAgICAgIC5zZWxlY3QoJy5wbG90bGluZScpO1xuXG4gICAgY29uc3QgZ3JhYkVsZW1lbnQgPSBkM1xuICAgICAgLnNlbGVjdCh0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudClcbiAgICAgIC5zZWxlY3RBbGwoJy5ncmFiYmVyJyk7XG5cbiAgICB0aGlzLmRyYWdFbGVtZW50cyA9IGQzXG4gICAgICAuZHJhZygpXG4gICAgICAuc3ViamVjdCgoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmF4aXMub3JpZW50YXRpb24gPT09IEF4aXNPcmllbnRhdGlvbi55KSB7XG4gICAgICAgICAgcmV0dXJuIHt5OiBwbG90bGluZUVsZW1lbnQuYXR0cigneTEnKX07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuYXhpcy5vcmllbnRhdGlvbiA9PT0gQXhpc09yaWVudGF0aW9uLngpIHtcbiAgICAgICAgICByZXR1cm4ge3g6IHBsb3RsaW5lRWxlbWVudC5hdHRyKCd4MScpfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgfSk7XG4gICAgY29uc3QgZHJhZyA9IHRoaXMuZHJhZ0VsZW1lbnRzXG4gICAgICAub24oXG4gICAgICAgICdzdGFydCBkcmFnIGVuZCcsXG4gICAgICAgIChldmVudDogZDMuRDNEcmFnRXZlbnQ8YW55LCBQbG90TGluZSwgYW55PiwgZDogUGxvdExpbmUpID0+IHtcbiAgICAgICAgICBkLnZhbHVlID0gdGhpcy5zY2FsZS5pbnZlcnQoXG4gICAgICAgICAgICBldmVudFtBeGlzT3JpZW50YXRpb25bdGhpcy5heGlzLm9yaWVudGF0aW9uXV1cbiAgICAgICAgICApO1xuICAgICAgICAgIGlmIChkLm1heCAhPT0gbnVsbCAmJiBkLm1heCAhPT0gdW5kZWZpbmVkICYmIGQudmFsdWUgPj0gZC5tYXgpIHtcbiAgICAgICAgICAgIGQudmFsdWUgPSBkLm1heDtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGQubWluICE9PSBudWxsICYmIGQubWluICE9PSB1bmRlZmluZWQgJiYgZC52YWx1ZSA8PSBkLm1pbikge1xuICAgICAgICAgICAgZC52YWx1ZSA9IGQubWluO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmVtaXQoe1xuICAgICAgICAgICAgZXZlbnQsXG4gICAgICAgICAgICB0YXJnZXQ6IGQsXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH1cbiAgICAgICk7XG5cbiAgICBwbG90bGluZUVsZW1lbnQuZGF0dW08UGxvdExpbmU+KHRoaXMucGxvdExpbmUpO1xuICAgIGdyYWJFbGVtZW50LmRhdHVtPFBsb3RMaW5lPih0aGlzLnBsb3RMaW5lKTtcblxuICAgIGlmICh0aGlzLnBsb3RMaW5lLmRyYWdnYWJsZSkge1xuICAgICAgZ3JhYkVsZW1lbnQuY2FsbChkcmFnKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmRyYWdFbGVtZW50cy5vbignc3RhcnQgZHJhZyBlbmQnLCBudWxsKTtcbiAgfVxuXG4gIGVtaXQoZXZlbnQ6IElDaGFydEV2ZW50PFBsb3RMaW5lPikge1xuICAgIHRoaXMuY2hhcnRTZXJ2aWNlLmVtaXRQbG90bGluZShldmVudCk7XG4gIH1cblxuICBnZXQgdmFsdWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuc2NhbGUodGhpcy5wbG90TGluZS52YWx1ZSk7XG4gIH1cblxuICBnZXQgaGVpZ2h0KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuc2l6ZS5oZWlnaHQ7XG4gIH1cblxuICBnZXQgd2lkdGgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5zaXplLndpZHRoO1xuICB9XG59XG4iLCI8c3ZnOmxpbmUgY2xhc3M9XCJwbG90bGluZVwiXG4gICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInBsb3RMaW5lLnN0eWxlPy5zdHJva2UgfHwgJ3JlZCdcIlxuICAgICAgICAgIFthdHRyLnN0cm9rZS13aWR0aF09XCJwbG90TGluZS5zdHlsZT8uc3Ryb2tlV2lkdGggfHwgNFwiXG4gICAgICAgICAgW2F0dHIuc3Ryb2tlLWRhc2hhcnJheV09XCJwbG90TGluZS5zdHlsZT8uc3Ryb2tlRGFzaGFycmF5XCJcbiAgICAgICAgICBbYXR0ci54MV09XCJheGlzLm9yaWVudGF0aW9uID09PSBvcmllbnRhdGlvbi54ID8gdmFsdWUgOiAwXCJcbiAgICAgICAgICBbYXR0ci54Ml09XCJheGlzLm9yaWVudGF0aW9uID09PSBvcmllbnRhdGlvbi54ID8gdmFsdWUgOiB3aWR0aFwiXG4gICAgICAgICAgW2F0dHIueTFdPVwiYXhpcy5vcmllbnRhdGlvbiA9PT0gb3JpZW50YXRpb24ueCA/IDAgOiB2YWx1ZVwiXG4gICAgICAgICAgW2F0dHIueTJdPVwiYXhpcy5vcmllbnRhdGlvbiA9PT0gb3JpZW50YXRpb24ueCA/IGhlaWdodCA6IHZhbHVlXCI+XG48L3N2ZzpsaW5lPlxuXG5cbjxzdmc6dGV4dFxuICAqbmdJZj1cImF4aXMub3JpZW50YXRpb24gPT09IG9yaWVudGF0aW9uLnhcIlxuICB0ZXh0LWFuY2hvcj1cIm1pZGRsZVwiXG4gIGRvbWluYW50LWJhc2VsaW5lPVwiY2VudHJhbFwiXG4gIGNsYXNzPVwibGFiZWwgZm9udC10aXRsZS0yIGZpbGwtdGV4dC03MFwiXG4gIFthdHRyLnhdPVwidmFsdWVcIlxuICBkeT1cIi0yZW1cIlxuICBbYXR0ci50cmFuc2Zvcm1dPVwiJ3JvdGF0ZSgtOTAsICcrIHZhbHVlICsnLCcgKyBoZWlnaHQgLyAyICsgJyknXCJcbiAgW2F0dHIueV09XCJoZWlnaHQgLyAyXCI+e3twbG90TGluZS5sYWJlbH19XG48L3N2Zzp0ZXh0PlxuXG48c3ZnOnRleHRcbiAgKm5nSWY9XCJheGlzLm9yaWVudGF0aW9uID09PSBvcmllbnRhdGlvbi55XCJcbiAgdGV4dC1hbmNob3I9XCJtaWRkbGVcIlxuICBjbGFzcz1cImxhYmVsIGZvbnQtdGl0bGUtMiBmaWxsLXRleHQtNzBcIlxuICBkb21pbmFudC1iYXNlbGluZT1cImNlbnRyYWxcIlxuICBbYXR0ci54XT1cInZhbHVlXCJcbiAgW2F0dHIueV09XCJ3aWR0aCAvIDJcIj57e3Bsb3RMaW5lLmxhYmVsfX1cbjwvc3ZnOnRleHQ+XG5cbjxzdmc6bGluZSBjbGFzcz1cImdyYWJiZXJcIlxuXG4gICAgICAgICAgW2NsYXNzLngtZ3JhYmJlcl09XCJheGlzLm9yaWVudGF0aW9uID09PSBvcmllbnRhdGlvbi54XCJcbiAgICAgICAgICBbY2xhc3MueS1ncmFiYmVyXT1cImF4aXMub3JpZW50YXRpb24gPT09IG9yaWVudGF0aW9uLnlcIlxuICAgICAgICAgIFthdHRyLnN0cm9rZV09XCIncmVkJ1wiXG4gICAgICAgICAgW2F0dHIuc3Ryb2tlLXdpZHRoXT1cIjhcIlxuICAgICAgICAgIG9wYWNpdHk9XCIwXCJcbiAgICAgICAgICBbYXR0ci54MV09XCJheGlzLm9yaWVudGF0aW9uID09PSBvcmllbnRhdGlvbi54ID8gdmFsdWUgOiAwXCJcbiAgICAgICAgICBbYXR0ci54Ml09XCJheGlzLm9yaWVudGF0aW9uID09PSBvcmllbnRhdGlvbi54ID8gdmFsdWUgOiB3aWR0aFwiXG4gICAgICAgICAgW2F0dHIueTFdPVwiYXhpcy5vcmllbnRhdGlvbiA9PT0gb3JpZW50YXRpb24ueCA/IDAgOiB2YWx1ZVwiXG4gICAgICAgICAgW2F0dHIueTJdPVwiYXhpcy5vcmllbnRhdGlvbiA9PT0gb3JpZW50YXRpb24ueCA/IGhlaWdodCA6IHZhbHVlXCI+XG48L3N2ZzpsaW5lPlxuIl19
92
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxvdGxpbmUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NoYXJ0L2NoYXJ0LWNvbnRhaW5lci9wbG90bGluZS9wbG90bGluZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvY2hhcnQvY2hhcnQtY29udGFpbmVyL3Bsb3RsaW5lL3Bsb3RsaW5lLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsS0FBSyxHQUVOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQyxPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDMUMsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBQ2xFLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUN2RCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFDekQsT0FBTyxLQUFLLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFFekIsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLDZCQUE2QixDQUFDOzs7OztBQVV6RCxNQUFNLE9BQU8saUJBQWlCO0lBVTVCLFlBQ1UsR0FBc0IsRUFDdEIsV0FBd0IsRUFDeEIsWUFBMEIsRUFDMUIsWUFBMEIsRUFDMUIsT0FBbUI7UUFKbkIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDdEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsWUFBTyxHQUFQLE9BQU8sQ0FBWTtRQVY3QixnQkFBVyxHQUFHLGVBQWUsQ0FBQztJQVk5QixDQUFDO0lBRUQsUUFBUTtR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S0FBSyxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVELElBQUksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDMUIsQ0FBQztJQUVELElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDekIsQ0FBQzs4R0F6RlUsaUJBQWlCO2tHQUFqQixpQkFBaUIsMEpDekI5Qixnc0RBMkNBOzsyRkRsQmEsaUJBQWlCO2tCQVI3QixTQUFTOytCQUNFLGtCQUFrQixjQUdqQixJQUFJLFdBQ1AsRUFBRSxtQkFDTyx1QkFBdUIsQ0FBQyxNQUFNOytMQUd0QyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIElucHV0LCBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1Bsb3RMaW5lfSBmcm9tICcuLi8uLi9tb2RlbC9wbG90LWxpbmUnO1xuaW1wb3J0IHtBeGlzfSBmcm9tICcuLi8uLi9jb3JlL2F4aXMvYXhpcyc7XG5pbXBvcnQge0F4aXNPcmllbnRhdGlvbn0gZnJvbSAnLi4vLi4vbW9kZWwvZW51bS9heGlzLW9yaWVudGF0aW9uJztcbmltcG9ydCB7Wm9vbVNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2Uvem9vbS5zZXJ2aWNlJztcbmltcG9ydCB7U2NhbGVTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlL3NjYWxlLnNlcnZpY2UnO1xuaW1wb3J0ICogYXMgZDMgZnJvbSAnZDMnO1xuaW1wb3J0IHtJQ2hhcnRFdmVudH0gZnJvbSAnLi4vLi4vbW9kZWwvaS1jaGFydC1ldmVudCc7XG5pbXBvcnQge0NoYXJ0U2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZS9jaGFydC5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnW3RldGEtcGxvdC1saW5lXScsXG4gIHRlbXBsYXRlVXJsOiAnLi9wbG90bGluZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3Bsb3RsaW5lLmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6dHJ1ZSxcbiAgaW1wb3J0czpbXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFBsb3RsaW5lQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBwbG90TGluZTogUGxvdExpbmU7XG4gIEBJbnB1dCgpIHNpemU6IERPTVJlY3Q7XG4gIEBJbnB1dCgpIGF4aXM6IEF4aXM7XG4gIEBJbnB1dCgpIHNjYWxlOiBhbnk7XG4gIG9yaWVudGF0aW9uID0gQXhpc09yaWVudGF0aW9uO1xuICBkcmFnRWxlbWVudHM6IGFueTtcblxuICBwcml2YXRlIF9kb21haW46IG51bWJlcltdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIHpvb21TZXJ2aWNlOiBab29tU2VydmljZSxcbiAgICBwcml2YXRlIHNjYWxlU2VydmljZTogU2NhbGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2hhcnRTZXJ2aWNlOiBDaGFydFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBlbGVtZW50OiBFbGVtZW50UmVmXG4gICkge1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5fZG9tYWluID0gdGhpcy5zY2FsZS5kb21haW4oKTtcblxuICAgIGNvbnN0IHBsb3RsaW5lRWxlbWVudCA9IGQzXG4gICAgICAuc2VsZWN0KHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50KVxuICAgICAgLnNlbGVjdCgnLnBsb3RsaW5lJyk7XG5cbiAgICBjb25zdCBncmFiRWxlbWVudCA9IGQzXG4gICAgICAuc2VsZWN0KHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50KVxuICAgICAgLnNlbGVjdEFsbCgnLmdyYWJiZXInKTtcblxuICAgIHRoaXMuZHJhZ0VsZW1lbnRzID0gZDNcbiAgICAgIC5kcmFnKClcbiAgICAgIC5zdWJqZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuYXhpcy5vcmllbnRhdGlvbiA9PT0gQXhpc09yaWVudGF0aW9uLnkpIHtcbiAgICAgICAgICByZXR1cm4ge3k6IHBsb3RsaW5lRWxlbWVudC5hdHRyKCd5MScpfTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5heGlzLm9yaWVudGF0aW9uID09PSBBeGlzT3JpZW50YXRpb24ueCkge1xuICAgICAgICAgIHJldHVybiB7eDogcGxvdGxpbmVFbGVtZW50LmF0dHIoJ3gxJyl9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsXG4gICAgICB9KTtcbiAgICBjb25zdCBkcmFnID0gdGhpcy5kcmFnRWxlbWVudHNcbiAgICAgIC5vbihcbiAgICAgICAgJ3N0YXJ0IGRyYWcgZW5kJyxcbiAgICAgICAgKGV2ZW50OiBkMy5EM0RyYWdFdmVudDxhbnksIFBsb3RMaW5lLCBhbnk+LCBkOiBQbG90TGluZSkgPT4ge1xuICAgICAgICAgIGQudmFsdWUgPSB0aGlzLnNjYWxlLmludmVydChcbiAgICAgICAgICAgIGV2ZW50W0F4aXNPcmllbnRhdGlvblt0aGlzLmF4aXMub3JpZW50YXRpb25dXVxuICAgICAgICAgICk7XG4gICAgICAgICAgaWYgKGQubWF4ICE9PSBudWxsICYmIGQubWF4ICE9PSB1bmRlZmluZWQgJiYgZC52YWx1ZSA+PSBkLm1heCkge1xuICAgICAgICAgICAgZC52YWx1ZSA9IGQubWF4O1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZC5taW4gIT09IG51bGwgJiYgZC5taW4gIT09IHVuZGVmaW5lZCAmJiBkLnZhbHVlIDw9IGQubWluKSB7XG4gICAgICAgICAgICBkLnZhbHVlID0gZC5taW47XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuZW1pdCh7XG4gICAgICAgICAgICBldmVudCxcbiAgICAgICAgICAgIHRhcmdldDogZCxcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfVxuICAgICAgKTtcblxuICAgIHBsb3RsaW5lRWxlbWVudC5kYXR1bTxQbG90TGluZT4odGhpcy5wbG90TGluZSk7XG4gICAgZ3JhYkVsZW1lbnQuZGF0dW08UGxvdExpbmU+KHRoaXMucGxvdExpbmUpO1xuXG4gICAgaWYgKHRoaXMucGxvdExpbmUuZHJhZ2dhYmxlKSB7XG4gICAgICBncmFiRWxlbWVudC5jYWxsKGRyYWcpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuZHJhZ0VsZW1lbnRzLm9uKCdzdGFydCBkcmFnIGVuZCcsIG51bGwpO1xuICB9XG5cbiAgZW1pdChldmVudDogSUNoYXJ0RXZlbnQ8UGxvdExpbmU+KSB7XG4gICAgdGhpcy5jaGFydFNlcnZpY2UuZW1pdFBsb3RsaW5lKGV2ZW50KTtcbiAgfVxuXG4gIGdldCB2YWx1ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5zY2FsZSh0aGlzLnBsb3RMaW5lLnZhbHVlKTtcbiAgfVxuXG4gIGdldCBoZWlnaHQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5zaXplLmhlaWdodDtcbiAgfVxuXG4gIGdldCB3aWR0aCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnNpemUud2lkdGg7XG4gIH1cbn1cbiIsIjxzdmc6bGluZSBjbGFzcz1cInBsb3RsaW5lXCJcbiAgICAgICAgICBbYXR0ci5zdHJva2VdPVwicGxvdExpbmUuc3R5bGU/LnN0cm9rZSB8fCAncmVkJ1wiXG4gICAgICAgICAgW2F0dHIuc3Ryb2tlLXdpZHRoXT1cInBsb3RMaW5lLnN0eWxlPy5zdHJva2VXaWR0aCB8fCA0XCJcbiAgICAgICAgICBbYXR0ci5zdHJva2UtZGFzaGFycmF5XT1cInBsb3RMaW5lLnN0eWxlPy5zdHJva2VEYXNoYXJyYXlcIlxuICAgICAgICAgIFthdHRyLngxXT1cImF4aXMub3JpZW50YXRpb24gPT09IG9yaWVudGF0aW9uLnggPyB2YWx1ZSA6IDBcIlxuICAgICAgICAgIFthdHRyLngyXT1cImF4aXMub3JpZW50YXRpb24gPT09IG9yaWVudGF0aW9uLnggPyB2YWx1ZSA6IHdpZHRoXCJcbiAgICAgICAgICBbYXR0ci55MV09XCJheGlzLm9yaWVudGF0aW9uID09PSBvcmllbnRhdGlvbi54ID8gMCA6IHZhbHVlXCJcbiAgICAgICAgICBbYXR0ci55Ml09XCJheGlzLm9yaWVudGF0aW9uID09PSBvcmllbnRhdGlvbi54ID8gaGVpZ2h0IDogdmFsdWVcIj5cbjwvc3ZnOmxpbmU+XG5cblxuQGlmIChheGlzLm9yaWVudGF0aW9uID09PSBvcmllbnRhdGlvbi54KSB7XG4gIDxzdmc6dGV4dFxuICAgIHRleHQtYW5jaG9yPVwibWlkZGxlXCJcbiAgICBkb21pbmFudC1iYXNlbGluZT1cImNlbnRyYWxcIlxuICAgIGNsYXNzPVwibGFiZWwgZm9udC10aXRsZS0yIGZpbGwtdGV4dC03MFwiXG4gICAgW2F0dHIueF09XCJ2YWx1ZVwiXG4gICAgZHk9XCItMmVtXCJcbiAgICBbYXR0ci50cmFuc2Zvcm1dPVwiJ3JvdGF0ZSgtOTAsICcrIHZhbHVlICsnLCcgKyBoZWlnaHQgLyAyICsgJyknXCJcbiAgICBbYXR0ci55XT1cImhlaWdodCAvIDJcIj57eyBwbG90TGluZS5sYWJlbCB9fVxuICA8L3N2Zzp0ZXh0PlxufVxuXG5AaWYgKGF4aXMub3JpZW50YXRpb24gPT09IG9yaWVudGF0aW9uLnkpIHtcbiAgPHN2Zzp0ZXh0XG4gICAgdGV4dC1hbmNob3I9XCJtaWRkbGVcIlxuICAgIGNsYXNzPVwibGFiZWwgZm9udC10aXRsZS0yIGZpbGwtdGV4dC03MFwiXG4gICAgZG9taW5hbnQtYmFzZWxpbmU9XCJjZW50cmFsXCJcbiAgICBbYXR0ci54XT1cInZhbHVlXCJcbiAgICBbYXR0ci55XT1cIndpZHRoIC8gMlwiPnt7IHBsb3RMaW5lLmxhYmVsIH19XG4gIDwvc3ZnOnRleHQ+XG59XG48c3ZnOmxpbmUgY2xhc3M9XCJncmFiYmVyXCJcbiAgICAgICAgICBbY2xhc3MueC1ncmFiYmVyXT1cImF4aXMub3JpZW50YXRpb24gPT09IG9yaWVudGF0aW9uLnhcIlxuICAgICAgICAgIFtjbGFzcy55LWdyYWJiZXJdPVwiYXhpcy5vcmllbnRhdGlvbiA9PT0gb3JpZW50YXRpb24ueVwiXG4gICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cIidyZWQnXCJcbiAgICAgICAgICBbYXR0ci5zdHJva2Utd2lkdGhdPVwiOFwiXG4gICAgICAgICAgb3BhY2l0eT1cIjBcIlxuICAgICAgICAgIFthdHRyLngxXT1cImF4aXMub3JpZW50YXRpb24gPT09IG9yaWVudGF0aW9uLnggPyB2YWx1ZSA6IDBcIlxuICAgICAgICAgIFthdHRyLngyXT1cImF4aXMub3JpZW50YXRpb24gPT09IG9yaWVudGF0aW9uLnggPyB2YWx1ZSA6IHdpZHRoXCJcbiAgICAgICAgICBbYXR0ci55MV09XCJheGlzLm9yaWVudGF0aW9uID09PSBvcmllbnRhdGlvbi54ID8gMCA6IHZhbHVlXCJcbiAgICAgICAgICBbYXR0ci55Ml09XCJheGlzLm9yaWVudGF0aW9uID09PSBvcmllbnRhdGlvbi54ID8gaGVpZ2h0IDogdmFsdWVcIj5cbjwvc3ZnOmxpbmU+XG4iXX0=
@@ -7,7 +7,7 @@ import { ChartService } from '../../../service/chart.service';
7
7
  import { ScaleService } from '../../../service/scale.service';
8
8
  import { ZoomService } from '../../../service/zoom.service';
9
9
  import { LinearSeriesBase } from '../linear-series-base';
10
- import { AsyncPipe, NgForOf, NgIf } from '@angular/common';
10
+ import { AsyncPipe } from '@angular/common';
11
11
  import * as i0 from "@angular/core";
12
12
  import * as i1 from "../../../service/chart.service";
13
13
  import * as i2 from "../../../service/scale.service";
@@ -60,11 +60,11 @@ export class AreaSeriesComponent extends LinearSeriesBase {
60
60
  return area(filteredData);
61
61
  }));
62
62
  }
63
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", 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: "14.0.0", version: "17.3.5", type: AreaSeriesComponent, isStandalone: true, selector: "svg:svg[teta-area-series]", usesInheritance: true, ngImport: i0, template: "<svg:defs *ngIf=\"series?.fillType === fillType.gradient\">\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<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<ng-container *ngIf=\"transform | async as t\">\n <svg:circle\n *ngIf=\"t?.x !=null && t?.y !=null\"\n r=\"3\"\n [attr.fill]=\"series.color\"\n [attr.transform]=\"'translate('+ t.x +', '+ t.y +')'\"\n >\n </svg:circle>\n</ng-container>\n<ng-container *ngIf=\"markers as draggablePoints\">\n <svg:circle\n class=\"marker\"\n *ngFor=\"let point of draggablePoints\"\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 >\n </svg:circle>\n</ng-container>\n\n\n\n", styles: [""], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
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 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
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: AreaSeriesComponent, decorators: [{
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: [NgIf, NgForOf, AsyncPipe], changeDetection: ChangeDetectionStrategy.OnPush, template: "<svg:defs *ngIf=\"series?.fillType === fillType.gradient\">\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<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<ng-container *ngIf=\"transform | async as t\">\n <svg:circle\n *ngIf=\"t?.x !=null && t?.y !=null\"\n r=\"3\"\n [attr.fill]=\"series.color\"\n [attr.transform]=\"'translate('+ t.x +', '+ t.y +')'\"\n >\n </svg:circle>\n</ng-container>\n<ng-container *ngIf=\"markers as draggablePoints\">\n <svg:circle\n class=\"marker\"\n *ngFor=\"let point of draggablePoints\"\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 >\n </svg:circle>\n</ng-container>\n\n\n\n" }]
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJlYS1zZXJpZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2NoYXJ0L2NoYXJ0LWNvbnRhaW5lci9zZXJpZXMvYXJlYS1zZXJpZXMvYXJlYS1zZXJpZXMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2NoYXJ0L2NoYXJ0LWNvbnRhaW5lci9zZXJpZXMvYXJlYS1zZXJpZXMvYXJlYS1zZXJpZXMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsR0FHWCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQztBQUN6QixPQUFPLEVBQUUsR0FBRyxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBR3ZDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDeEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzlELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM5RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDekQsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7O0FBVTNELE1BQU0sT0FBTyxtQkFDWCxTQUFRLGdCQUFtQjtJQVMzQixZQUNxQixHQUFpQixFQUNqQixHQUFzQixFQUN0QixZQUEwQixFQUMxQixXQUF3QixFQUN4QixPQUFtQjtRQUV0QyxLQUFLLENBQUMsR0FBRyxFQUFFLEdB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dGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgKiBhcyBkMyBmcm9tICdkMyc7XG5pbXBvcnQgeyBtYXAsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgQmFzZVBvaW50IH0gZnJvbSAnLi4vLi4vLi4vbW9kZWwvYmFzZS1wb2ludCc7XG5pbXBvcnQgeyBDbGlwUG9pbnRzRGlyZWN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWwvZW51bS9jbGlwLXBvaW50cy1kaXJlY3Rpb24nO1xuaW1wb3J0IHsgRmlsbERpcmVjdGlvbiwgRmlsbFR5cGUgfSBmcm9tICcuLi8uLi8uLi9tb2RlbC9lbnVtL2ZpbGwtdHlwZSc7XG5pbXBvcnQgeyBDaGFydFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlL2NoYXJ0LnNlcnZpY2UnO1xuaW1wb3J0IHsgU2NhbGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZS9zY2FsZS5zZXJ2aWNlJztcbmltcG9ydCB7IFpvb21TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZS96b29tLnNlcnZpY2UnO1xuaW1wb3J0IHsgTGluZWFyU2VyaWVzQmFzZSB9IGZyb20gJy4uL2xpbmVhci1zZXJpZXMtYmFzZSc7XG5pbXBvcnQgeyBBc3luY1BpcGUsIE5nRm9yT2YsIE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzdmc6c3ZnW3RldGEtYXJlYS1zZXJpZXNdJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FyZWEtc2VyaWVzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYXJlYS1zZXJpZXMuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTp0cnVlLFxuICBpbXBvcnRzOiBbTmdJZiwgTmdGb3JPZiwgQXN5bmNQaXBlXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEFyZWFTZXJpZXNDb21wb25lbnQ8VCBleHRlbmRzIEJhc2VQb2ludD5cbiAgZXh0ZW5kcyBMaW5lYXJTZXJpZXNCYXNlPFQ+XG4gIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3lcbntcbiAgYXJlYVBhdGg6IE9ic2VydmFibGU8c3RyaW5nPjtcblxuICBmaWxsRGlyZWN0aW9uID0gRmlsbERpcmVjdGlvbjtcbiAgZmlsbFR5cGUgPSBGaWxsVHlwZTtcbiAgaWQ6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgc3ZjOiBDaGFydFNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIHNjYWxlU2VydmljZTogU2NhbGVTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBvdmVycmlkZSB6b29tU2VydmljZTogWm9vbVNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIGVsZW1lbnQ6IEVsZW1lbnRSZWZcbiAgKSB7XG4gICAgc3VwZXIoc3ZjLCBjZHIsIHNjYWxlU2VydmljZSwgem9vbVNlcnZpY2UsIGVsZW1lbnQpO1xuICAgIHRoaXMuaWQgPSAoRGF0ZS5ub3coKSArIE1hdGgucmFuZG9tKCkpLnRvU3RyaW5nKDM2KTtcbiAgfVxuXG4gIG92ZXJyaWRlIG5nT25Jbml0KCkge1xuICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgdGhpcy5hcmVhUGF0aCA9IHRoaXMuc2NhbGVTZXJ2aWNlLnNjYWxlcy5waXBlKFxuICAgICAgbWFwKGRhdGEgPT4ge1xuICAgICAgICBjb25zdCB7IHgsIHkgfSA9IGRhdGE7XG5cbiAgICAgICAgdGhpcy54ID0geC5nZXQodGhpcy5zZXJpZXMueEF4aXNJbmRleCk/LnNjYWxlO1xuICAgICAgICB0aGlzLnkgPSB5LmdldCh0aGlzLnNlcmllcy55QXhpc0luZGV4KT8uc2NhbGU7XG5cbiAgICAgICAgaWYgKCF0aGlzLnggfHwgIXRoaXMueSkge1xuICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGFyZWEgPSBkM1xuICAgICAgICAgIC5hcmVhPEJhc2VQb2ludD4oKVxuICAgICAgICAgIC5kZWZpbmVkKFxuICAgICAgICAgICAgcG9pbnQgPT5cbiAgICAgICAgICAgICAgcG9pbnQueCAhPT0gbnVsbCAmJlxuICAgICAgICAgICAgICBwb2ludC55ICE9PSBudWxsICYmXG4gICAgICAgICAgICAgICFpc05hTihwb2ludC54KSAmJlxuICAgICAgICAgICAgICAhaXNOYU4ocG9pbnQueSlcbiAgICAgICAgICApO1xuXG4gICAgICAgIGFyZWFcbiAgICAgICAgICAueDEoXyA9PlxuICAgICAgICAgICAgXy54MSAhPT0gbnVsbCAmJiBfLngxICE9PSB1bmRlZmluZWQgPyB0aGlzLngoXy54MSkgOiB0aGlzLngoMClcbiAgICAgICAgICApXG4gICAgICAgICAgLngwKF8gPT4gdGhpcy54KF8ueCkpXG5cbiAgICAgICAgICAueShfID0+IHRoaXMueShfLnkpKTtcblxuICAgICAgICBjb25zdCBmaWx0ZXIgPSB0aGlzLmRlZmF1bHRDbGlwUG9pbnRzTWFwcGluZy5nZXQoXG4gICAgICAgICAgdGhpcy5zZXJpZXMuY2xpcFBvaW50c0RpcmVjdGlvblxuICAgICAgICApO1xuICAgICAgICBsZXQgZmlsdGVyZWREYXRhID0gdGhpcy5zZXJpZXMuZGF0YTtcblxuICAgICAgICBpZiAodGhpcy5zZXJpZXMuY2xpcFBvaW50c0RpcmVjdGlvbiA9PT0gQ2xpcFBvaW50c0RpcmVjdGlvbi54KSB7XG4gICAgICAgICAgbGV0IFttaW4sIG1heF0gPSB0aGlzLnguZG9tYWluKCk7XG5cbiAgICAgICAgICBtaW4gPSBtaW4gaW5zdGFuY2VvZiBEYXRlID8gbWluLmdldFRpbWUoKSA6IG1pbjtcbiAgICAgICAgICBtYXggPSBtYXggaW5zdGFuY2VvZiBEYXRlID8gbWF4LmdldFRpbWUoKSA6IG1heDtcblxuICAgICAgICAgIGZpbHRlcmVkRGF0YSA9IGZpbHRlcmVkRGF0YT8uZmlsdGVyKGZpbHRlcihtaW4sIG1heCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuc2VyaWVzLmNsaXBQb2ludHNEaXJlY3Rpb24gPT09IENsaXBQb2ludHNEaXJlY3Rpb24ueSkge1xuICAgICAgICAgIGxldCBbbWluLCBtYXhdID0gdGhpcy55LmRvbWFpbigpO1xuXG4gICAgICAgICAgbWluID0gbWluIGluc3RhbmNlb2YgRGF0ZSA/IG1pbi5nZXRUaW1lKCkgOiBtaW47XG4gICAgICAgICAgbWF4ID0gbWF4IGluc3RhbmNlb2YgRGF0ZSA/IG1heC5nZXRUaW1lKCkgOiBtYXg7XG5cbiAgICAgICAgICBmaWx0ZXJlZERhdGEgPSBmaWx0ZXJlZERhdGE/LmZpbHRlcihmaWx0ZXIobWluLCBtYXgpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBhcmVhKGZpbHRlcmVkRGF0YSk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cbn1cbiIsIjxzdmc6ZGVmcyAqbmdJZj1cInNlcmllcz8uZmlsbFR5cGUgPT09IGZpbGxUeXBlLmdyYWRpZW50XCI+XG4gIDxzdmc6bGluZWFyR3JhZGllbnQgW2lkXT1cIidncmFkaWVudC1maWxsLScgKyBpZFwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgeDE9XCIwJVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2F0dHIueTFdPVwiY29uZmlnPy5pbnZlcnRlZCB8fCBzZXJpZXM/LmZpbGxEaXJlY3Rpb24gPT09IGZpbGxEaXJlY3Rpb24ueSA/ICcwJScgOiAnMTAwJSdcIlxuICAgICAgICAgICAgICAgICAgICAgIFthdHRyLngyXT1cImNvbmZpZz8uaW52ZXJ0ZWQgfHwgc2VyaWVzPy5maWxsRGlyZWN0aW9uID09PSBmaWxsRGlyZWN0aW9uLnkgPyAnMTAwJScgOiAnMCUnXCJcbiAgICAgICAgICAgICAgICAgICAgICB5Mj1cIjAlXCI+XG4gICAgPHN2ZzpzdG9wIG9mZnNldD1cIjAlXCIgW2F0dHIuc3RvcC1jb2xvcl09XCJzZXJpZXMuY29sb3JcIiBzdG9wLW9wYWNpdHk9XCIwXCI+PC9zdmc6c3RvcD5cbiAgICA8c3ZnOnN0b3Agb2Zmc2V0PVwiNSVcIiBbYXR0ci5zdG9wLWNvbG9yXT1cInNlcmllcy5jb2xvclwiIHN0b3Atb3BhY2l0eT1cIjAuMVwiPjwvc3ZnOnN0b3A+XG4gICAgPHN2ZzpzdG9wIG9mZnNldD1cIjIwJVwiIFthdHRyLnN0b3AtY29sb3JdPVwic2VyaWVzLmNvbG9yXCIgc3RvcC1vcGFjaXR5PVwiMC4yXCI+PC9zdmc6c3RvcD5cbiAgICA8c3ZnOnN0b3Agb2Zmc2V0PVwiNjAlXCIgW2F0dHIuc3RvcC1jb2xvcl09XCJzZXJpZXMuY29sb3JcIiBzdG9wLW9wYWNpdHk9XCIwLjVcIj48L3N2ZzpzdG9wPlxuICAgIDxzdmc6c3RvcCBvZmZzZXQ9XCIxMDAlXCIgW2F0dHIuc3RvcC1jb2xvcl09XCJzZXJpZXMuY29sb3JcIiBzdG9wLW9wYWNpdHk9XCIwLjhcIj48L3N2ZzpzdG9wPlxuICA8L3N2ZzpsaW5lYXJHcmFkaWVudD5cbjwvc3ZnOmRlZnM+XG48c3ZnOnBhdGhcbiAgY2xhc3M9XCJhcmVhXCJcbiAgW2F0dHIuZF09XCJhcmVhUGF0aCB8IGFzeW5jXCJcbiAgW2F0dHIuc3Ryb2tlLXdpZHRoXT1cIjBcIlxuICBbYXR0ci5maWxsLW9wYWNpdHldPVwic2VyaWVzLnN0eWxlPy5maWxsT3BhY2l0eVwiXG4gIFthdHRyLmZpbGxdPVwic2VyaWVzLmZpbGxUeXBlID09PSBmaWxsVHlwZS5ncmFkaWVudCA/ICd1cmwoI2dyYWRpZW50LWZpbGwtJytpZCsnKScgOiBzZXJpZXMuc3R5bGU/LmZpbGwgPz8gc2VyaWVzLmNvbG9yXCI+XG48L3N2ZzpwYXRoPlxuPHN2ZzpwYXRoXG4gIGNsYXNzPVwiYXJlYVwiXG4gIGZpbGw9XCJub25lXCJcbiAgW2F0dHIuZF09XCJwYXRoIHwgYXN5bmNcIlxuICBbYXR0ci5zdHJva2VdPVwic2VyaWVzLmNvbG9yXCJcbiAgW2F0dHIuc3Ryb2tlLWRhc2hhcnJheV09XCJzZXJpZXMuc3R5bGU/LnN0cm9rZURhc2hhcnJheVwiXG4gIFthdHRyLnN0cm9rZS13aWR0aF09XCJzZXJpZXMuc3R5bGU/LnN0cm9rZVdpZHRoXCI+XG48L3N2ZzpwYXRoPlxuPG5nLWNvbnRhaW5lciAqbmdJZj1cInRyYW5zZm9ybSB8IGFzeW5jIGFzIHRcIj5cbiAgPHN2ZzpjaXJjbGVcbiAgICAqbmdJZj1cInQ/LnggIT1udWxsICYmIHQ/LnkgIT1udWxsXCJcbiAgICByPVwiM1wiXG4gICAgW2F0dHIuZmlsbF09XCJzZXJpZXMuY29sb3JcIlxuICAgIFthdHRyLnRyYW5zZm9ybV09XCIndHJhbnNsYXRlKCcrIHQueCArJywgJysgdC55ICsnKSdcIlxuICA+XG4gIDwvc3ZnOmNpcmNsZT5cbjwvbmctY29udGFpbmVyPlxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1hcmtlcnMgYXMgZHJhZ2dhYmxlUG9pbnRzXCI+XG4gIDxzdmc6Y2lyY2xlXG4gICAgY2xhc3M9XCJtYXJrZXJcIlxuICAgICpuZ0Zvcj1cImxldCBwb2ludCBvZiBkcmFnZ2FibGVQb2ludHNcIlxuICAgIFtjbGFzcy5kcmFnZ2FibGUtbWFya2VyXT1cInBvaW50Py5tYXJrZXI/LmRyYWdnYWJsZVwiXG4gICAgW2F0dHIucl09XCJwb2ludC5tYXJrZXIuc3R5bGU/LnJhZGl1cyA/PyA1XCJcbiAgICBbYXR0ci5maWxsXT1cInBvaW50Lm1hcmtlci5zdHlsZT8uZmlsbCA/PyAndHJhbnNwYXJlbnQnXCJcbiAgICBbYXR0ci5zdHJva2VdPVwicG9pbnQubWFya2VyLnN0eWxlPy5zdHJva2UgPz8gJ25vbmUnXCJcbiAgICBbYXR0ci5zdHJva2Utd2lkdGhdPVwicG9pbnQubWFya2VyLnN0eWxlPy5zdHJva2VXaWR0aFwiXG4gICAgW2F0dHIuc3Ryb2tlLWRhc2hhcnJheV09XCJwb2ludC5tYXJrZXIuc3R5bGU/LnN0cm9rZURhc2hhcnJheVwiXG4gICAgW2F0dHIuY3hdPVwieChwb2ludC54KVwiXG4gICAgW2F0dHIuY3ldPVwieShwb2ludC55KVwiXG4gID5cbiAgPC9zdmc6Y2lyY2xlPlxuPC9uZy1jb250YWluZXI+XG5cblxuXG4iXX0=
70
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJlYS1zZXJpZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2NoYXJ0L2NoYXJ0LWNvbnRhaW5lci9zZXJpZXMvYXJlYS1zZXJpZXMvYXJlYS1zZXJpZXMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2NoYXJ0L2NoYXJ0LWNvbnRhaW5lci9zZXJpZXMvYXJlYS1zZXJpZXMvYXJlYS1zZXJpZXMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsR0FHWCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQztBQUN6QixPQUFPLEVBQUUsR0FBRyxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBR3ZDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDeEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzlELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM5RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDekQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7OztBQVU1QyxNQUFNLE9BQU8sbUJBQ1gsU0FBUSxnQkFBbUI7SUFTM0IsWUFDcUIsR0FBaUIsRUFDakIsR0FBc0IsRUFDdEIsWUFBMEIsRUFDMUIsV0FBd0IsRUFDeEIsT0FBbUI7UUFFdEMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLFdB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WUFBWSxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO2dCQUVoRCxZQUFZLEdBQUcsWUFBWSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDeEQsQ0FBQztZQUVELElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsS0FBSyxtQkFBbUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDOUQsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUVqQyxHQUFHLEdBQUcsR0FBRyxZQUFZLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7Z0JBQ2hELEdBQUcsR0FBRyxHQUFHLFlBQVksSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztnQkFFaEQsWUFBWSxHQUFHLFlBQVksRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ3hELENBQUM7WUFFRCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUM1QixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQzs4R0E5RVUsbUJBQW1CO2tHQUFuQixtQkFBbUIsNEdDNUJoQyxpekVBeURBLHFERGhDWSxTQUFTOzsyRkFHUixtQkFBbUI7a0JBUi9CLFNBQVM7K0JBQ0UsMkJBQTJCLGNBRzFCLElBQUksV0FDTixDQUFDLFNBQVMsQ0FBQyxtQkFDSCx1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCAqIGFzIGQzIGZyb20gJ2QzJztcbmltcG9ydCB7IG1hcCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBCYXNlUG9pbnQgfSBmcm9tICcuLi8uLi8uLi9tb2RlbC9iYXNlLXBvaW50JztcbmltcG9ydCB7IENsaXBQb2ludHNEaXJlY3Rpb24gfSBmcm9tICcuLi8uLi8uLi9tb2RlbC9lbnVtL2NsaXAtcG9pbnRzLWRpcmVjdGlvbic7XG5pbXBvcnQgeyBGaWxsRGlyZWN0aW9uLCBGaWxsVHlwZSB9IGZyb20gJy4uLy4uLy4uL21vZGVsL2VudW0vZmlsbC10eXBlJztcbmltcG9ydCB7IENoYXJ0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2UvY2hhcnQuc2VydmljZSc7XG5pbXBvcnQgeyBTY2FsZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlL3NjYWxlLnNlcnZpY2UnO1xuaW1wb3J0IHsgWm9vbVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlL3pvb20uc2VydmljZSc7XG5pbXBvcnQgeyBMaW5lYXJTZXJpZXNCYXNlIH0gZnJvbSAnLi4vbGluZWFyLXNlcmllcy1iYXNlJztcbmltcG9ydCB7IEFzeW5jUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3N2ZzpzdmdbdGV0YS1hcmVhLXNlcmllc10nLFxuICB0ZW1wbGF0ZVVybDogJy4vYXJlYS1zZXJpZXMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9hcmVhLXNlcmllcy5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOnRydWUsXG4gIGltcG9ydHM6IFtBc3luY1BpcGVdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgQXJlYVNlcmllc0NvbXBvbmVudDxUIGV4dGVuZHMgQmFzZVBvaW50PlxuICBleHRlbmRzIExpbmVhclNlcmllc0Jhc2U8VD5cbiAgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveVxue1xuICBhcmVhUGF0aDogT2JzZXJ2YWJsZTxzdHJpbmc+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=