@esfaenza/es-charts 15.2.7 → 16.2.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 (102) hide show
  1. package/{esm2020 → esm2022}/esfaenza-es-charts.mjs +4 -4
  2. package/{esm2020 → esm2022}/lib/adapters/BaseAdapter.mjs +50 -50
  3. package/{esm2020 → esm2022}/lib/adapters/IBaseAdapter.mjs +1 -1
  4. package/{esm2020 → esm2022}/lib/components/base/base-chart.component.mjs +350 -350
  5. package/{esm2020 → esm2022}/lib/components/chart-pager/chart-pager.component.mjs +89 -89
  6. package/{esm2020 → esm2022}/lib/components/specializations/es-area-chart.component.mjs +77 -77
  7. package/{esm2020 → esm2022}/lib/components/specializations/es-chart.component.mjs +122 -122
  8. package/{esm2020 → esm2022}/lib/components/specializations/es-line-chart.component.mjs +112 -112
  9. package/{esm2020 → esm2022}/lib/components/specializations/es-pie-chart.component.mjs +98 -98
  10. package/{esm2020 → esm2022}/lib/components/specializations/es-vertical-2d-chart.component.mjs +95 -95
  11. package/{esm2020 → esm2022}/lib/components/specializations/es-vertical-chart.component.mjs +92 -92
  12. package/{esm2020 → esm2022}/lib/components/specializations/es-vertical-stacked-chart.component.mjs +92 -92
  13. package/{esm2020 → esm2022}/lib/es-charts.module.mjs +67 -67
  14. package/{esm2020 → esm2022}/lib/models/EsChaartsModuleConfig.mjs +5 -5
  15. package/{esm2020 → esm2022}/lib/models/core/ChartDispatcher.mjs +91 -91
  16. package/{esm2020 → esm2022}/lib/models/core/ChartLoader.mjs +212 -212
  17. package/{esm2020 → esm2022}/lib/models/core/ChartThemes.mjs +60 -60
  18. package/{esm2020 → esm2022}/lib/models/data/AreaChartData.mjs +15 -15
  19. package/{esm2020 → esm2022}/lib/models/data/LineChartData.mjs +15 -15
  20. package/{esm2020 → esm2022}/lib/models/data/PagedChartData.mjs +19 -19
  21. package/{esm2020 → esm2022}/lib/models/data/PieChartData.mjs +13 -13
  22. package/{esm2020 → esm2022}/lib/models/data/Vertical2DChartData.mjs +15 -15
  23. package/{esm2020 → esm2022}/lib/models/data/VerticalChartData.mjs +13 -13
  24. package/{esm2020 → esm2022}/lib/models/data/VerticalStackedChartData.mjs +13 -13
  25. package/{esm2020 → esm2022}/lib/models/data/base/DateValue.mjs +10 -10
  26. package/{esm2020 → esm2022}/lib/models/data/base/KeyValue.mjs +10 -10
  27. package/{esm2020 → esm2022}/lib/models/data/base/KeyValueColor.mjs +12 -12
  28. package/{esm2020 → esm2022}/lib/models/data/base/Limit.mjs +15 -15
  29. package/{esm2020 → esm2022}/lib/models/data/base/LineSerie.mjs +27 -27
  30. package/{esm2020 → esm2022}/lib/models/settings/AreaChartSettings.mjs +10 -10
  31. package/{esm2020 → esm2022}/lib/models/settings/LineChartSettings.mjs +10 -10
  32. package/{esm2020 → esm2022}/lib/models/settings/PieChartSettings.mjs +6 -6
  33. package/{esm2020 → esm2022}/lib/models/settings/Vertical2DChartSettings.mjs +10 -10
  34. package/{esm2020 → esm2022}/lib/models/settings/VerticalChartSettings.mjs +10 -10
  35. package/{esm2020 → esm2022}/lib/models/settings/VerticalStackedChartSettings.mjs +10 -10
  36. package/{esm2020 → esm2022}/lib/models/settings/base/BaseInterval.mjs +5 -5
  37. package/{esm2020 → esm2022}/lib/models/settings/base/BaseSettings.mjs +5 -5
  38. package/{esm2020 → esm2022}/lib/models/settings/base/LegendPad.mjs +5 -5
  39. package/esm2022/lib/services/AreaChartService.mjs +157 -0
  40. package/esm2022/lib/services/LineChartService.mjs +392 -0
  41. package/{esm2020 → esm2022}/lib/services/PieChartService.mjs +113 -113
  42. package/{esm2020 → esm2022}/lib/services/Vertical2DChartService.mjs +162 -162
  43. package/{esm2020 → esm2022}/lib/services/VerticalChartService.mjs +113 -113
  44. package/{esm2020 → esm2022}/lib/services/VerticalStackedChartService.mjs +126 -126
  45. package/{esm2020 → esm2022}/lib/services/base/IBaseService.mjs +1 -1
  46. package/{esm2020 → esm2022}/lib/tokens.mjs +13 -13
  47. package/{esm2020 → esm2022}/public-api.mjs +38 -38
  48. package/{fesm2020 → fesm2022}/esfaenza-es-charts.mjs +2728 -2688
  49. package/fesm2022/esfaenza-es-charts.mjs.map +1 -0
  50. package/index.d.ts +5 -5
  51. package/lib/adapters/BaseAdapter.d.ts +40 -40
  52. package/lib/adapters/IBaseAdapter.d.ts +35 -35
  53. package/lib/components/base/base-chart.component.d.ts +304 -304
  54. package/lib/components/chart-pager/chart-pager.component.d.ts +70 -70
  55. package/lib/components/specializations/es-area-chart.component.d.ts +53 -53
  56. package/lib/components/specializations/es-chart.component.d.ts +71 -71
  57. package/lib/components/specializations/es-line-chart.component.d.ts +112 -112
  58. package/lib/components/specializations/es-pie-chart.component.d.ts +81 -81
  59. package/lib/components/specializations/es-vertical-2d-chart.component.d.ts +79 -79
  60. package/lib/components/specializations/es-vertical-chart.component.d.ts +74 -74
  61. package/lib/components/specializations/es-vertical-stacked-chart.component.d.ts +74 -74
  62. package/lib/es-charts.module.d.ts +18 -18
  63. package/lib/models/EsChaartsModuleConfig.d.ts +24 -24
  64. package/lib/models/core/ChartDispatcher.d.ts +46 -46
  65. package/lib/models/core/ChartLoader.d.ts +92 -92
  66. package/lib/models/core/ChartThemes.d.ts +23 -23
  67. package/lib/models/data/AreaChartData.d.ts +22 -22
  68. package/lib/models/data/LineChartData.d.ts +16 -16
  69. package/lib/models/data/PagedChartData.d.ts +23 -23
  70. package/lib/models/data/PieChartData.d.ts +13 -13
  71. package/lib/models/data/Vertical2DChartData.d.ts +27 -27
  72. package/lib/models/data/VerticalChartData.d.ts +13 -13
  73. package/lib/models/data/VerticalStackedChartData.d.ts +21 -21
  74. package/lib/models/data/base/DateValue.d.ts +9 -9
  75. package/lib/models/data/base/KeyValue.d.ts +9 -9
  76. package/lib/models/data/base/KeyValueColor.d.ts +11 -11
  77. package/lib/models/data/base/Limit.d.ts +14 -14
  78. package/lib/models/data/base/LineSerie.d.ts +28 -28
  79. package/lib/models/settings/AreaChartSettings.d.ts +10 -10
  80. package/lib/models/settings/LineChartSettings.d.ts +67 -67
  81. package/lib/models/settings/PieChartSettings.d.ts +34 -34
  82. package/lib/models/settings/Vertical2DChartSettings.d.ts +36 -36
  83. package/lib/models/settings/VerticalChartSettings.d.ts +31 -31
  84. package/lib/models/settings/VerticalStackedChartSettings.d.ts +31 -31
  85. package/lib/models/settings/base/BaseInterval.d.ts +13 -13
  86. package/lib/models/settings/base/BaseSettings.d.ts +67 -67
  87. package/lib/models/settings/base/LegendPad.d.ts +21 -21
  88. package/lib/services/AreaChartService.d.ts +32 -31
  89. package/lib/services/LineChartService.d.ts +48 -47
  90. package/lib/services/PieChartService.d.ts +27 -27
  91. package/lib/services/Vertical2DChartService.d.ts +39 -39
  92. package/lib/services/VerticalChartService.d.ts +33 -33
  93. package/lib/services/VerticalStackedChartService.d.ts +35 -35
  94. package/lib/services/base/IBaseService.d.ts +38 -38
  95. package/lib/tokens.d.ts +13 -13
  96. package/package.json +11 -17
  97. package/public-api.d.ts +35 -35
  98. package/esm2020/lib/services/AreaChartService.mjs +0 -137
  99. package/esm2020/lib/services/LineChartService.mjs +0 -372
  100. package/fesm2015/esfaenza-es-charts.mjs +0 -2829
  101. package/fesm2015/esfaenza-es-charts.mjs.map +0 -1
  102. package/fesm2020/esfaenza-es-charts.mjs.map +0 -1
@@ -1,112 +1,112 @@
1
- import { Component, Input, Inject, PLATFORM_ID, ChangeDetectionStrategy } from '@angular/core';
2
- import { ESC_ANIMATIONS, ESC_THEME, ESC_DEBUG_MODE } from '../../tokens';
3
- import { BaseChartComponent } from '../base/base-chart.component';
4
- import { LineChartSettings } from '../../models/settings/LineChartSettings';
5
- import { LineChartService } from '../../services/LineChartService';
6
- import * as i0 from "@angular/core";
7
- import * as i1 from "../../models/core/ChartLoader";
8
- import * as i2 from "../../models/core/ChartDispatcher";
9
- import * as i3 from "../../adapters/BaseAdapter";
10
- import * as i4 from "@esfaenza/extensions";
11
- import * as i5 from "@esfaenza/localizations";
12
- import * as i6 from "@angular/common";
13
- import * as i7 from "../chart-pager/chart-pager.component";
14
- /**
15
- * Componente specifico per la graficazione di un grafico a Linea su un asse temporale
16
- */
17
- export class EsLineChartComponent extends BaseChartComponent {
18
- /**
19
- * @ignore
20
- */
21
- constructor(el, ChartLoader, ChartDispatcher, adapter, dateService, zone, platformId, ESC_DEBUG_MODE, ESC_ANIMATIONS, ESC_THEME, lc) {
22
- super(el, platformId, zone, ChartLoader, ChartDispatcher, ESC_DEBUG_MODE, ESC_ANIMATIONS, lc.Locale, ESC_THEME);
23
- this.adapter = adapter;
24
- this.dateService = dateService;
25
- }
26
- /**
27
- * Ottiene le proprietà specifiche per questa tipologia di grafico per cui serve rigraficare
28
- */
29
- getSpecificPropertiesToCheck() {
30
- return ["Data", "DataArray", "Step", "DataGroupBucketSize", "DataGroupingThreshold", "StrokeSize", "Stacked", "AllowGaps", "MergeDatasets", "FinalInstants", "Fill", "Min", "Max"];
31
- }
32
- /**
33
- * Ottiene i Settings (Ereditati dalla classe base, quindi del tipo generico **BaseSettings**) castati al tipo specifico per questo grafico
34
- *
35
- * @returns {LineChartSettings} Settings castati al tipo giusto
36
- */
37
- getCastedSettings() {
38
- return (this.Settings ?? new LineChartSettings());
39
- }
40
- /**
41
- * Integra i Settings base con tutti gli Input specifici di questo grafico, dando priorità ai Settings se definiti
42
- *
43
- * @param {LineChartSettings} settingsCasted Settings castati al tipo giusto
44
- */
45
- fillSpecificSettings(settingsCasted) {
46
- settingsCasted.Step = settingsCasted.Step != null ? settingsCasted.Step : this.Step;
47
- settingsCasted.DataGroupBucketSize = settingsCasted.DataGroupBucketSize != null ? settingsCasted.DataGroupBucketSize : this.DataGroupBucketSize;
48
- settingsCasted.StrokeSize = settingsCasted.StrokeSize != null ? settingsCasted.StrokeSize : this.StrokeSize;
49
- settingsCasted.DataGroupingThreshold = settingsCasted.DataGroupingThreshold != null ? settingsCasted.DataGroupingThreshold : this.DataGroupingThreshold;
50
- settingsCasted.AllowGaps = settingsCasted.AllowGaps != null ? settingsCasted.AllowGaps : this.AllowGaps;
51
- settingsCasted.MergeDatasets = settingsCasted.MergeDatasets != null ? settingsCasted.MergeDatasets : this.MergeDatasets;
52
- settingsCasted.FinalInstants = settingsCasted.FinalInstants != null ? settingsCasted.FinalInstants : this.FinalInstants;
53
- settingsCasted.Min = settingsCasted.Min != null ? settingsCasted.Min : this.Min;
54
- settingsCasted.Max = settingsCasted.Max != null ? settingsCasted.Max : this.Max;
55
- settingsCasted.Fill = settingsCasted.Fill != null ? settingsCasted.Fill : this.Fill;
56
- settingsCasted.Stacked = settingsCasted.Stacked != null ? settingsCasted.Stacked : this.Stacked;
57
- }
58
- /**
59
- * Effettua il rendering di questo grafico in base ai Settings
60
- *
61
- * @param {LineChartSettings} settingsCasted Impostazioni di graficazione
62
- * @returns {LineChartService} La service utilizzata per il rendering nello stato subito successivo al rendering effettuato
63
- */
64
- graphicate(settingsCasted) {
65
- return new LineChartService(this.adapter, this.dateService).graphicate(this.Data, settingsCasted);
66
- }
67
- }
68
- EsLineChartComponentfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: EsLineChartComponent, deps: [{ token: i0.ElementRef }, { token: i1.ChartLoader }, { token: i2.ChartDispatcher }, { token: i3.BaseAdapter }, { token: i4.DateService }, { token: i0.NgZone }, { token: PLATFORM_ID }, { token: ESC_DEBUG_MODE }, { token: ESC_ANIMATIONS }, { token: ESC_THEME }, { token: i5.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });
69
- EsLineChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: EsLineChartComponent, selector: "es-line-chart", inputs: { Data: "Data", DataArray: "DataArray", Step: "Step", DataGroupBucketSize: "DataGroupBucketSize", DataGroupingThreshold: "DataGroupingThreshold", StrokeSize: "StrokeSize", AllowGaps: "AllowGaps", MergeDatasets: "MergeDatasets", FinalInstants: "FinalInstants", Min: "Min", Max: "Max", Fill: "Fill", Stacked: "Stacked" }, usesInheritance: true, ngImport: i0, template: "<chart-pager *ngIf=\"isPaged\" (onPageChange)=\"changePage($event)\" [Items]=\"DataArray\" [Dtos]=\"DataDtos\" [StartIndex]=\"DataDtoStartIndex\"\r\n [BrowseDelayMs]=\"BrowseDelayMs\">\r\n <ng-template #header_inner let-headerItem>\r\n <ng-container *ngTemplateOutlet=\"header_tr; context : {$implicit: headerItem}\"></ng-container>\r\n </ng-template>\r\n</chart-pager>\r\n\r\n<ng-container *ngIf=\"loadingChart && loading_template\">\r\n <div style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\">\r\n <ng-container *ngTemplateOutlet=\"loading_template\"></ng-container>\r\n </div>\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"loadingChart && !loading_template\">\r\n <div class=\"esc-loading-overlay\" style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\">\r\n <p class=\"label\">Loading....</p>\r\n </div>\r\n</ng-container>\r\n\r\n<div [class.hide-block]=\"loadingChart\" id=\"{{name}}\" style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\"></div>", styles: [".esc-loading-overlay{background:rgba(153,153,153,.6);text-transform:uppercase;font-size:30px;font-weight:700;color:#fff;text-align:center;font-family:monospace}.esc-loading-overlay .label{margin:0;padding-top:7%}.hide-block{display:none}\n"], dependencies: [{ kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i7.PageChartSelector, selector: "chart-pager", inputs: ["Items", "Dtos", "BrowseDelayMs", "StartIndex"], outputs: ["onPageChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
70
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: EsLineChartComponent, decorators: [{
71
- type: Component,
72
- args: [{ selector: 'es-line-chart', changeDetection: ChangeDetectionStrategy.OnPush, template: "<chart-pager *ngIf=\"isPaged\" (onPageChange)=\"changePage($event)\" [Items]=\"DataArray\" [Dtos]=\"DataDtos\" [StartIndex]=\"DataDtoStartIndex\"\r\n [BrowseDelayMs]=\"BrowseDelayMs\">\r\n <ng-template #header_inner let-headerItem>\r\n <ng-container *ngTemplateOutlet=\"header_tr; context : {$implicit: headerItem}\"></ng-container>\r\n </ng-template>\r\n</chart-pager>\r\n\r\n<ng-container *ngIf=\"loadingChart && loading_template\">\r\n <div style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\">\r\n <ng-container *ngTemplateOutlet=\"loading_template\"></ng-container>\r\n </div>\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"loadingChart && !loading_template\">\r\n <div class=\"esc-loading-overlay\" style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\">\r\n <p class=\"label\">Loading....</p>\r\n </div>\r\n</ng-container>\r\n\r\n<div [class.hide-block]=\"loadingChart\" id=\"{{name}}\" style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\"></div>", styles: [".esc-loading-overlay{background:rgba(153,153,153,.6);text-transform:uppercase;font-size:30px;font-weight:700;color:#fff;text-align:center;font-family:monospace}.esc-loading-overlay .label{margin:0;padding-top:7%}.hide-block{display:none}\n"] }]
73
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.ChartLoader }, { type: i2.ChartDispatcher }, { type: i3.BaseAdapter }, { type: i4.DateService }, { type: i0.NgZone }, { type: Object, decorators: [{
74
- type: Inject,
75
- args: [PLATFORM_ID]
76
- }] }, { type: undefined, decorators: [{
77
- type: Inject,
78
- args: [ESC_DEBUG_MODE]
79
- }] }, { type: undefined, decorators: [{
80
- type: Inject,
81
- args: [ESC_ANIMATIONS]
82
- }] }, { type: undefined, decorators: [{
83
- type: Inject,
84
- args: [ESC_THEME]
85
- }] }, { type: i5.LocalizationService }]; }, propDecorators: { Data: [{
86
- type: Input
87
- }], DataArray: [{
88
- type: Input
89
- }], Step: [{
90
- type: Input
91
- }], DataGroupBucketSize: [{
92
- type: Input
93
- }], DataGroupingThreshold: [{
94
- type: Input
95
- }], StrokeSize: [{
96
- type: Input
97
- }], AllowGaps: [{
98
- type: Input
99
- }], MergeDatasets: [{
100
- type: Input
101
- }], FinalInstants: [{
102
- type: Input
103
- }], Min: [{
104
- type: Input
105
- }], Max: [{
106
- type: Input
107
- }], Fill: [{
108
- type: Input
109
- }], Stacked: [{
110
- type: Input
111
- }] } });
112
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXMtbGluZS1jaGFydC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lcy1jaGFydHMvc3JjL2xpYi9jb21wb25lbnRzL3NwZWNpYWxpemF0aW9ucy9lcy1saW5lLWNoYXJ0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VzLWNoYXJ0cy9zcmMvbGliL2NvbXBvbmVudHMvYmFzZS9iYXNlLWNoYXJ0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQVUsdUJBQXVCLEVBQWMsTUFBTSxlQUFlLENBQUM7QUFLbkgsT0FBTyxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRXpFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBSWxFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDOzs7Ozs7Ozs7QUFJbkU7O0dBRUc7QUFPSCxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsa0JBQWtCO0lBZ0YxRDs7T0FFRztJQUNILFlBQVksRUFBYyxFQUFFLFdBQXdCLEVBQUUsZUFBZ0MsRUFBVSxPQUFvQixFQUFVLFdBQXdCLEVBQUUsSUFBWSxFQUM3SSxVQUFrQixFQUNmLGNBQXVCLEVBQ3ZCLGNBQXVCLEVBQzVCLFNBQWlCLEVBQ3BDLEVBQXVCO1FBQ3ZCLEtBQUssQ0FBQyxFQUFFLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsRUFBRSxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQztRQU5sQixZQUFPLEdBQVAs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QUMsSUFBSSxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQ25ILENBQUM7O2lIQXZJVSxvQkFBb0Isa0xBb0ZyQixXQUFXLGFBQ1gsY0FBYyxhQUNkLGNBQWMsYUFDZCxTQUFTO3FHQXZGUixvQkFBb0Isb1pDekJqQyx3akNBbUJ3STsyRkRNM0gsb0JBQW9CO2tCQU5oQyxTQUFTOytCQUNFLGVBQWUsbUJBR1IsdUJBQXVCLENBQUMsTUFBTTs7MEJBc0Y1QyxNQUFNOzJCQUFDLFdBQVc7OzBCQUNsQixNQUFNOzJCQUFDLGNBQWM7OzBCQUNyQixNQUFNOzJCQUFDLGNBQWM7OzBCQUNyQixNQUFNOzJCQUFDLFNBQVM7OEVBbEZWLElBQUk7c0JBQVosS0FBSztnQkFLRyxTQUFTO3NCQUFqQixLQUFLO2dCQUtHLElBQUk7c0JBQVosS0FBSztnQkFRRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBS0cscUJBQXFCO3NCQUE3QixLQUFLO2dCQUtHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBVUcsU0FBUztzQkFBakIsS0FBSztnQkFPRyxhQUFhO3NCQUFyQixLQUFLO2dCQVFHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBS0csR0FBRztzQkFBWCxLQUFLO2dCQUtHLEdBQUc7c0JBQVgsS0FBSztnQkFLRyxJQUFJO3NCQUFaLEtBQUs7Z0JBS0csT0FBTztzQkFBZixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgSW5qZWN0LCBQTEFURk9STV9JRCwgTmdab25lLCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEYXRlU2VydmljZSB9IGZyb20gXCJAZXNmYWVuemEvZXh0ZW5zaW9uc1wiO1xyXG5pbXBvcnQgeyBMb2NhbGl6YXRpb25TZXJ2aWNlIH0gZnJvbSAnQGVzZmFlbnphL2xvY2FsaXphdGlvbnMnO1xyXG5cclxuaW1wb3J0IHsgQmFzZUFkYXB0ZXIgfSBmcm9tICcuLi8uLi9hZGFwdGVycy9CYXNlQWRhcHRlcic7XHJcbmltcG9ydCB7IEVTQ19BTklNQVRJT05TLCBFU0NfVEhFTUUsIEVTQ19ERUJVR19NT0RFIH0gZnJvbSAnLi4vLi4vdG9rZW5zJztcclxuXHJcbmltcG9ydCB7IEJhc2VDaGFydENvbXBvbmVudCB9IGZyb20gJy4uL2Jhc2UvYmFzZS1jaGFydC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDaGFydExvYWRlciB9IGZyb20gXCIuLi8uLi9tb2RlbHMvY29yZS9DaGFydExvYWRlclwiO1xyXG5pbXBvcnQgeyBDaGFydERpc3BhdGNoZXIgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL2NvcmUvQ2hhcnREaXNwYXRjaGVyXCI7XHJcblxyXG5pbXBvcnQgeyBMaW5lQ2hhcnRTZXR0aW5ncyB9IGZyb20gJy4uLy4uL21vZGVscy9zZXR0aW5ncy9MaW5lQ2hhcnRTZXR0aW5ncyc7XHJcbmltcG9ydCB7IExpbmVDaGFydFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9MaW5lQ2hhcnRTZXJ2aWNlJztcclxuaW1wb3J0IHsgTGluZUNoYXJ0RGF0YSB9IGZyb20gJy4uLy4uL21vZGVscy9kYXRhL0xpbmVDaGFydERhdGEnO1xyXG5pbXBvcnQgeyBQYWdlZENoYXJ0RGF0YSB9IGZyb20gJy4uLy4uL21vZGVscy9kYXRhL1BhZ2VkQ2hhcnREYXRhJztcclxuXHJcbi8qKlxyXG4gKiBDb21wb25lbnRlIHNwZWNpZmljbyBwZXIgbGEgZ3JhZmljYXppb25lIGRpIHVuIGdyYWZpY28gYSBMaW5lYSBzdSB1biBhc3NlIHRlbXBvcmFsZVxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdlcy1saW5lLWNoYXJ0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4uL2Jhc2UvYmFzZS1jaGFydC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4uL2Jhc2UvYmFzZS1jaGFydC5jb21wb25lbnQuc2NzcyddLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFc0xpbmVDaGFydENvbXBvbmVudCBleHRlbmRzIEJhc2VDaGFydENvbXBvbmVudCB7XHJcblxyXG4gIC8qKlxyXG4gICAqIERhdGkgc3BlY2lmaWNpIHBlciBpbCBncmFmaWNvIG8gZGkgdW4gdGlwbyB0cmFtdXRhYmlsZSBhbCB0aXBvICoqTGluZUNoYXJ0RGF0YSoqIGNvbCBzdXBwb3J0byBkZWwgKipCYXNlQWRhcHRlcioqXHJcbiAgICovXHJcbiAgQElucHV0KCkgRGF0YTogTGluZUNoYXJ0RGF0YSB8IGFueTtcclxuXHJcbiAgLyoqXHJcbiAgICogTGlzdGEgZGkgRGF0aSBzcGVjaWZpY2kgcGVyIHVuIGdyYWZpY28gcGFnaW5hdG8gbyBkaSBjdWkgb2duaSBibG9jY28gZGF0aSDDqCB0cmFtdXRhYmlsZSBhbCB0aXBvICoqTGluZUNoYXJ0RGF0YSoqIGNvbCBzdXBwb3J0byBkZWwgKipCYXNlQWRhcHRlcioqXHJcbiAgICovXHJcbiAgQElucHV0KCkgRGF0YUFycmF5OiBQYWdlZENoYXJ0RGF0YTxMaW5lQ2hhcnREYXRhPltdIHwgUGFnZWRDaGFydERhdGE8YW55PltdO1xyXG5cclxuICAvKipcclxuICAgKiBJbmRpY2Egc2UgbGEgY3VydmEgZGV2ZSBjb2xsZWdhcmUgZGlyZXR0YW1lbnRlIHVuIGRhdGFwb2ludCBhbGwnYWx0cm8gbyBzZSBkZXZlIGZhcmUgZGVnbGkgc3RlcFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIFN0ZXA6IGJvb2xlYW47XHJcblxyXG4gIC8qKlxyXG4gICAqIEluZGljYSBpbCBudW1lcm8gbWFzc2ltbyBkaSBkYXRhcG9pbnQgdmlzdWFsaXp6YWJpbGUgaW4gdW5hIHNpbmdvbGEgdmlzdGEgZGVsIGdyYWZpY28uIEwnZWNjZWRlbnphIHZpZW5lIHJhZ2dydXBwYXRhIGUgdmVycsOgIG1vc3RyYXRhIHN1bGxvIHpvb20uXHJcbiAgICogXHJcbiAgICogQVRURU5aSU9ORTogVXRpbGl6emFuZG8gaWwgc2lzdGVtYSBkaSBkZWZhdWx0IGRpIHJhZ2dydXBwYW1lbnRvIGRpIGFtLWNoYXJ0cyBzaSByaXNjaGlhIGRpIHRhZ2xpYXJlIHZpYSBwZXp6aSBkYSBzZXJpZSBtb2x0byBvbmR1bGF0ZVxyXG4gICAqIGluIHF1YW50byBpbCBjb21wb3J0YW1lbnRvIGRpIGRlZmF1bHQgw6ggcXVlbGxvIGRpIGVsaW1pbmFyZSBpIGRhdGFwb2ludCBjaGUgbm9uIGNpIHN0YW5ubywgbm9uIGRpIGludGVycG9sYXJsaVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIERhdGFHcm91cEJ1Y2tldFNpemU6IG51bWJlcjtcclxuXHJcbiAgLyoqXHJcbiAgICogU29nbGlhIHBlciBjb250cm9sbGFyZSBvbHRyZSBjaGUgbnVtZXJvIGRpIGRhdGFwb2ludCBpbCBncmFmaWNvIGRldmUgaW5pemlhcmUgYWQgZWZmZXR0dWFyZSByYWdncnVwcGFtZW50aSBjb25zaWRlcmFuZG8gbCdJbnB1dCAqKkRhdGFHcm91cEJ1Y2tldFNpemUqKlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIERhdGFHcm91cGluZ1RocmVzaG9sZDogbnVtYmVyO1xyXG5cclxuICAvKipcclxuICAgKiBJbmRpY2EgbGUgZGltbnNpb25pLCBpbiBwaXhlbCBkZWxsYSBsaW5lYSBkZWwgZ3JhZmljb1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpIFN0cm9rZVNpemU6IG51bWJlcjtcclxuXHJcbiAgLyoqXHJcbiAgICogSW5kaWNhIHNlIHNvbm8gcGVybWVzc2kgZGVpIEdhcCBmcmEgdW4gdmFsb3JlIGUgbCdhbHRyby5cclxuICAgKiBcclxuICAgKiBOb3JtYWxtZW50ZSBxdWFuZG8gY2kgc29ubyBkZWkgYnVjaGkgbCd1bHRpbW8gZGF0YXBvaW50IGRlbCBidWNvIHZpZW5lIGNvbGxlZ2F0byBkaXJldHRhbWVudGUgYWwgcHJpbW8gZGF0YXBvaW50IGRpc3BvbmliaWxlLiBcclxuICAgKiBcclxuICAgKiBJbXBvc3RhbmRvIHF1ZXN0byBJbnB1dCBhIHRydWUgaW52ZWNlLCBwb3N0byBkaSBhdmVyIGFzc2VnbmF0byBsYSB2YXJpYWJpbGUgKippbnRlcnZhbCoqIGRlbGxhIGNsYXNzZSAqKkxpbmVDaGFydERhdGEqKiwgw6ggcG9zc2liaWxlIFxyXG4gICAqIGZhciBhcHBhcmlyZSBpbCBibG9jY28gZGkgZGF0aSBtYW5jYW50aSBjb21lIHVuIGJ1Y28gdmVybyBlIHByb3ByaW8sIHNlbnphIGFsY3VuIGNvbGxlZ2FtZW50byBmcmEgaSBkdWUgZGF0YXBvaW50IGVzdHJlbWlcclxuICAgKi9cclxuICBASW5wdXQoKSBBbGxvd0dhcHM6IGJvb2xlYW47XHJcblxyXG4gIC8qKlxyXG4gICAqIElucHV0IGNoZSBwZXJtZXR0ZSBkaSByaWVsYWJvcmFyZSBpIGRhdGkgZGVsIGdyYWZpY28gcGVyIGdlbmVyYXJlIHVuIHNvbG8gRGF0YXNldFxyXG4gICAqIFxyXG4gICAqIFZpZW5lIHV0aWxpenphdG8gc2VtcGxpY2VtZW50ZSBwZXIgZGFyZSB1biB0b29sdGlwIG1vbHRvIHBpw7kgYmVsbG8vYXZhbnphdG8gc3VsbG8gc2NvcnJpbWVudG9kZWwgY3Vyc29yZSBhbGwnaW50ZXJubyBkZWwgZ3JhZmljb1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpIE1lcmdlRGF0YXNldHM6IGJvb2xlYW47XHJcblxyXG4gIC8qKlxyXG4gICAqIEluZGljYSBzZSBsZSBkYXRlIGNoZSBhcnJpdmFubyBhbGwnYXNzZSBYIGRldm9ubyBlc3NlcmUgY29uc2lkZXJhdGUgXCJJc3RhbnRlIGZpbmFsZVwiIGUgYWdnaXVzdGF0ZSBkaSBjb25zZWd1ZW56YS4gXHJcbiAgICogU2Ugbm9uIMOoIHZhbG9yaXp6YXRhIGxhIHZhcmlhYmlsZSAqKmludGVydmFsKiogZGVsbGEgY2xhc3NlICoqTGluZUNoYXJ0RGF0YSoqIG5vbiBoYSBhbGN1biBlZmZldHRvXHJcbiAgICogXHJcbiAgICogQWQgZXNlbXBpbywgbGEgZGF0YSAxNi8wNy8yMDIxIGNvbiBpbnRlcnZhbGxvIG9yYXJpbyB2ZXJyZWJiZSB0cmFzZm9ybWF0YSBpbiAxNS8wNy8yMDIxIDI0OjAwOjAwIChPdnZpYW1lbnRlIMOoIHV0aWxpenphdG8gc29sbyBsYXRvIHByZXNlbnRhemlvbmUpXHJcbiAgICovXHJcbiAgQElucHV0KCkgRmluYWxJbnN0YW50czogYm9vbGVhbjtcclxuXHJcbiAgLyoqXHJcbiAgICogR2VzdGlzY2UgaWwgbWluaW1vIGRlbGwnYXNzZSBZXHJcbiAgICovXHJcbiAgQElucHV0KCkgTWluOiBudW1iZXI7XHJcblxyXG4gIC8qKlxyXG4gICAqIEdlc3Rpc2NlIGlsIG1hc3NpbW8gZGVsbCdhc3NlIFlcclxuICAgKi9cclxuICBASW5wdXQoKSBNYXg6IG51bWJlcjtcclxuXHJcbiAgLyoqXHJcbiAgICogSW5kaWNhIHNlIGVmZmV0dHVhcmUgaWwgRmlsbCBkZWxsYSBzZXJpZSBpbiBtb2RvIGRhIG5vbiB2ZWRlcmUgc29sbyBsYSBsaW5lYSBtYSBwcm9wcmlvIGwnYXJlYSBzb3R0ZXNzYSBjb21wbGV0YW1lbnRlIGNvbG9yYXRhXHJcbiAgICovXHJcbiAgQElucHV0KCkgRmlsbDogYm9vbGVhbjtcclxuXHJcbiAgLyoqXHJcbiAgICogSW5kaWNhIHNlIGVmZmV0dHVhcmUgbG8gU3RhY2sgZGVsbGEgc2VyaWUgaW4gbW9kbyBkYSB2ZWRlcmUgdHV0dGUgbGUgbGluZWUgdW5hIHNvcHJhIGwnYWx0cmEuIEltcGxpY2l0YW1lbnRlIGluY2x1ZGUgYW5jaGUgaWwgKipGaWxsKipcclxuICAgKi9cclxuICBASW5wdXQoKSBTdGFja2VkOiBib29sZWFuO1xyXG5cclxuICAvKipcclxuICAgKiBAaWdub3JlXHJcbiAgICovXHJcbiAgY29uc3RydWN0b3IoZWw6IEVsZW1lbnRSZWYsIENoYXJ0TG9hZGVyOiBDaGFydExvYWRlciwgQ2hhcnREaXNwYXRjaGVyOiBDaGFydERpc3BhdGNoZXIsIHByaXZhdGUgYWRhcHRlcjogQmFzZUFkYXB0ZXIsIHByaXZhdGUgZGF0ZVNlcnZpY2U6IERhdGVTZXJ2aWNlLCB6b25lOiBOZ1pvbmUsXHJcbiAgICBASW5qZWN0KFBMQVRGT1JNX0lEKSBwbGF0Zm9ybUlkOiBPYmplY3QsXHJcbiAgICBASW5qZWN0KEVTQ19ERUJVR19NT0RFKSBFU0NfREVCVUdfTU9ERTogYm9vbGVhbixcclxuICAgIEBJbmplY3QoRVNDX0FOSU1BVElPTlMpIEVTQ19BTklNQVRJT05TOiBib29sZWFuLFxyXG4gICAgQEluamVjdChFU0NfVEhFTUUpIEVTQ19USEVNRTogc3RyaW5nLFxyXG4gICAgbGM6IExvY2FsaXphdGlvblNlcnZpY2UpIHtcclxuICAgIHN1cGVyKGVsLCBwbGF0Zm9ybUlkLCB6b25lLCBDaGFydExvYWRlciwgQ2hhcnREaXNwYXRjaGVyLCBFU0NfREVCVUdfTU9ERSwgRVNDX0FOSU1BVElPTlMsIGxjLkxvY2FsZSwgRVNDX1RIRU1FKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE90dGllbmUgbGUgcHJvcHJpZXTDoCBzcGVjaWZpY2hlIHBlciBxdWVzdGEgdGlwb2xvZ2lhIGRpIGdyYWZpY28gcGVyIGN1aSBzZXJ2ZSByaWdyYWZpY2FyZVxyXG4gICAqL1xyXG4gIGdldFNwZWNpZmljUHJvcGVydGllc1RvQ2hlY2soKTogc3RyaW5nW10ge1xyXG4gICAgcmV0dXJuIFtcIkRhdGFcIiwgXCJEYXRhQXJyYXlcIiwgXCJTdGVwXCIsIFwiRGF0YUdyb3VwQnVja2V0U2l6ZVwiLCBcIkRhdGFHcm91cGluZ1RocmVzaG9sZFwiLCBcIlN0cm9rZVNpemVcIiwgXCJTdGFja2VkXCIsIFwiQWxsb3dHYXBzXCIsIFwiTWVyZ2VEYXRhc2V0c1wiLCBcIkZpbmFsSW5zdGFudHNcIiwgXCJGaWxsXCIsIFwiTWluXCIsIFwiTWF4XCJdO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogT3R0aWVuZSBpIFNldHRpbmdzIChFcmVkaXRhdGkgZGFsbGEgY2xhc3NlIGJhc2UsIHF1aW5kaSBkZWwgdGlwbyBnZW5lcmljbyAqKkJhc2VTZXR0aW5ncyoqKSBjYXN0YXRpIGFsIHRpcG8gc3BlY2lmaWNvIHBlciBxdWVzdG8gZ3JhZmljb1xyXG4gICAqIFxyXG4gICAqIEByZXR1cm5zIHtMaW5lQ2hhcnRTZXR0aW5nc30gU2V0dGluZ3MgY2FzdGF0aSBhbCB0aXBvIGdpdXN0b1xyXG4gICAqL1xyXG4gIGdldENhc3RlZFNldHRpbmdzKCk6IExpbmVDaGFydFNldHRpbmdzIHtcclxuICAgIHJldHVybiA8TGluZUNoYXJ0U2V0dGluZ3M+KHRoaXMuU2V0dGluZ3MgPz8gbmV3IExpbmVDaGFydFNldHRpbmdzKCkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSW50ZWdyYSBpIFNldHRpbmdzIGJhc2UgY29uIHR1dHRpIGdsaSBJbnB1dCBzcGVjaWZpY2kgZGkgcXVlc3RvIGdyYWZpY28sIGRhbmRvIHByaW9yaXTDoCBhaSBTZXR0aW5ncyBzZSBkZWZpbml0aVxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSB7TGluZUNoYXJ0U2V0dGluZ3N9IHNldHRpbmdzQ2FzdGVkIFNldHRpbmdzIGNhc3RhdGkgYWwgdGlwbyBnaXVzdG9cclxuICAgKi9cclxuICBmaWxsU3BlY2lmaWNTZXR0aW5ncyhzZXR0aW5nc0Nhc3RlZDogTGluZUNoYXJ0U2V0dGluZ3MpOiB2b2lkIHtcclxuICAgIHNldHRpbmdzQ2FzdGVkLlN0ZXAgPSBzZXR0aW5nc0Nhc3RlZC5TdGVwICE9IG51bGwgPyBzZXR0aW5nc0Nhc3RlZC5TdGVwIDogdGhpcy5TdGVwO1xyXG4gICAgc2V0dGluZ3NDYXN0ZWQuRGF0YUdyb3VwQnVja2V0U2l6ZSA9IHNldHRpbmdzQ2FzdGVkLkRhdGFHcm91cEJ1Y2tldFNpemUgIT0gbnVsbCA/IHNldHRpbmdzQ2FzdGVkLkRhdGFHcm91cEJ1Y2tldFNpemUgOiB0aGlzLkRhdGFHcm91cEJ1Y2tldFNpemU7XHJcbiAgICBzZXR0aW5nc0Nhc3RlZC5TdHJva2VTaXplID0gc2V0dGluZ3NDYXN0ZWQuU3Ryb2tlU2l6ZSAhPSBudWxsID8gc2V0dGluZ3NDYXN0ZWQuU3Ryb2tlU2l6ZSA6IHRoaXMuU3Ryb2tlU2l6ZTtcclxuICAgIHNldHRpbmdzQ2FzdGVkLkRhdGFHcm91cGluZ1RocmVzaG9sZCA9IHNldHRpbmdzQ2FzdGVkLkRhdGFHcm91cGluZ1RocmVzaG9sZCAhPSBudWxsID8gc2V0dGluZ3NDYXN0ZWQuRGF0YUdyb3VwaW5nVGhyZXNob2xkIDogdGhpcy5EYXRhR3JvdXBpbmdUaHJlc2hvbGQ7XHJcbiAgICBzZXR0aW5nc0Nhc3RlZC5BbGxvd0dhcHMgPSBzZXR0aW5nc0Nhc3RlZC5BbGxvd0dhcHMgIT0gbnVsbCA/IHNldHRpbmdzQ2FzdGVkLkFsbG93R2FwcyA6IHRoaXMuQWxsb3dHYXBzO1xyXG4gICAgc2V0dGluZ3NDYXN0ZWQuTWVyZ2VEYXRhc2V0cyA9IHNldHRpbmdzQ2FzdGVkLk1lcmdlRGF0YXNldHMgIT0gbnVsbCA/IHNldHRpbmdzQ2FzdGVkLk1lcmdlRGF0YXNldHMgOiB0aGlzLk1lcmdlRGF0YXNldHM7XHJcbiAgICBzZXR0aW5nc0Nhc3RlZC5GaW5hbEluc3RhbnRzID0gc2V0dGluZ3NDYXN0ZWQuRmluYWxJbnN0YW50cyAhPSBudWxsID8gc2V0dGluZ3NDYXN0ZWQuRmluYWxJbnN0YW50cyA6IHRoaXMuRmluYWxJbnN0YW50cztcclxuICAgIHNldHRpbmdzQ2FzdGVkLk1pbiA9IHNldHRpbmdzQ2FzdGVkLk1pbiAhPSBudWxsID8gc2V0dGluZ3NDYXN0ZWQuTWluIDogdGhpcy5NaW47XHJcbiAgICBzZXR0aW5nc0Nhc3RlZC5NYXggPSBzZXR0aW5nc0Nhc3RlZC5NYXggIT0gbnVsbCA/IHNldHRpbmdzQ2FzdGVkLk1heCA6IHRoaXMuTWF4O1xyXG4gICAgc2V0dGluZ3NDYXN0ZWQuRmlsbCA9IHNldHRpbmdzQ2FzdGVkLkZpbGwgIT0gbnVsbCA/IHNldHRpbmdzQ2FzdGVkLkZpbGwgOiB0aGlzLkZpbGw7XHJcbiAgICBzZXR0aW5nc0Nhc3RlZC5TdGFja2VkID0gc2V0dGluZ3NDYXN0ZWQuU3RhY2tlZCAhPSBudWxsID8gc2V0dGluZ3NDYXN0ZWQuU3RhY2tlZCA6IHRoaXMuU3RhY2tlZDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEVmZmV0dHVhIGlsIHJlbmRlcmluZyBkaSBxdWVzdG8gZ3JhZmljbyBpbiBiYXNlIGFpIFNldHRpbmdzXHJcbiAgICogXHJcbiAgICogQHBhcmFtIHtMaW5lQ2hhcnRTZXR0aW5nc30gc2V0dGluZ3NDYXN0ZWQgSW1wb3N0YXppb25pIGRpIGdyYWZpY2F6aW9uZVxyXG4gICAqIEByZXR1cm5zIHtMaW5lQ2hhcnRTZXJ2aWNlfSBMYSBzZXJ2aWNlIHV0aWxpenphdGEgcGVyIGlsIHJlbmRlcmluZyBuZWxsbyBzdGF0byBzdWJpdG8gc3VjY2Vzc2l2byBhbCByZW5kZXJpbmcgZWZmZXR0dWF0b1xyXG4gICAqL1xyXG4gIGdyYXBoaWNhdGUoc2V0dGluZ3NDYXN0ZWQ6IExpbmVDaGFydFNldHRpbmdzKTogYW55IHtcclxuICAgIHJldHVybiBuZXcgTGluZUNoYXJ0U2VydmljZSh0aGlzLmFkYXB0ZXIsIHRoaXMuZGF0ZVNlcnZpY2UpLmdyYXBoaWNhdGUoPExpbmVDaGFydERhdGE+dGhpcy5EYXRhLCBzZXR0aW5nc0Nhc3RlZCk7XHJcbiAgfVxyXG59IiwiPGNoYXJ0LXBhZ2VyICpuZ0lmPVwiaXNQYWdlZFwiIChvblBhZ2VDaGFuZ2UpPVwiY2hhbmdlUGFnZSgkZXZlbnQpXCIgW0l0ZW1zXT1cIkRhdGFBcnJheVwiIFtEdG9zXT1cIkRhdGFEdG9zXCIgW1N0YXJ0SW5kZXhdPVwiRGF0YUR0b1N0YXJ0SW5kZXhcIlxyXG4gICAgW0Jyb3dzZURlbGF5TXNdPVwiQnJvd3NlRGVsYXlNc1wiPlxyXG4gICAgPG5nLXRlbXBsYXRlICNoZWFkZXJfaW5uZXIgbGV0LWhlYWRlckl0ZW0+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImhlYWRlcl90cjsgY29udGV4dCA6IHskaW1wbGljaXQ6IGhlYWRlckl0ZW19XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG48L2NoYXJ0LXBhZ2VyPlxyXG5cclxuPG5nLWNvbnRhaW5lciAqbmdJZj1cImxvYWRpbmdDaGFydCAmJiBsb2FkaW5nX3RlbXBsYXRlXCI+XHJcbiAgICA8ZGl2IHN0eWxlPVwid2lkdGg6IDEwMCU7XCIgW3N0eWxlLmhlaWdodF09XCJpc1BhZ2VkID8gJ2NhbGMoMTAwJSAtIDQ0cHgpJyA6ICcxMDAlJ1wiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsb2FkaW5nX3RlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuPC9uZy1jb250YWluZXI+XHJcblxyXG48bmctY29udGFpbmVyICpuZ0lmPVwibG9hZGluZ0NoYXJ0ICYmICFsb2FkaW5nX3RlbXBsYXRlXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZXNjLWxvYWRpbmctb3ZlcmxheVwiIHN0eWxlPVwid2lkdGg6IDEwMCU7XCIgW3N0eWxlLmhlaWdodF09XCJpc1BhZ2VkID8gJ2NhbGMoMTAwJSAtIDQ0cHgpJyA6ICcxMDAlJ1wiPlxyXG4gICAgICAgIDxwIGNsYXNzPVwibGFiZWxcIj5Mb2FkaW5nLi4uLjwvcD5cclxuICAgIDwvZGl2PlxyXG48L25nLWNvbnRhaW5lcj5cclxuXHJcbjxkaXYgW2NsYXNzLmhpZGUtYmxvY2tdPVwibG9hZGluZ0NoYXJ0XCIgaWQ9XCJ7e25hbWV9fVwiIHN0eWxlPVwid2lkdGg6IDEwMCU7XCIgW3N0eWxlLmhlaWdodF09XCJpc1BhZ2VkID8gJ2NhbGMoMTAwJSAtIDQ0cHgpJyA6ICcxMDAlJ1wiPjwvZGl2PiJdfQ==
1
+ import { Component, Input, Inject, PLATFORM_ID, ChangeDetectionStrategy } from '@angular/core';
2
+ import { ESC_ANIMATIONS, ESC_THEME, ESC_DEBUG_MODE } from '../../tokens';
3
+ import { BaseChartComponent } from '../base/base-chart.component';
4
+ import { LineChartSettings } from '../../models/settings/LineChartSettings';
5
+ import { LineChartService } from '../../services/LineChartService';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "../../models/core/ChartLoader";
8
+ import * as i2 from "../../models/core/ChartDispatcher";
9
+ import * as i3 from "../../adapters/BaseAdapter";
10
+ import * as i4 from "@esfaenza/extensions";
11
+ import * as i5 from "@esfaenza/localizations";
12
+ import * as i6 from "@angular/common";
13
+ import * as i7 from "../chart-pager/chart-pager.component";
14
+ /**
15
+ * Componente specifico per la graficazione di un grafico a Linea su un asse temporale
16
+ */
17
+ export class EsLineChartComponent extends BaseChartComponent {
18
+ /**
19
+ * @ignore
20
+ */
21
+ constructor(el, ChartLoader, ChartDispatcher, adapter, dateService, zone, platformId, ESC_DEBUG_MODE, ESC_ANIMATIONS, ESC_THEME, lc) {
22
+ super(el, platformId, zone, ChartLoader, ChartDispatcher, ESC_DEBUG_MODE, ESC_ANIMATIONS, lc.Locale, ESC_THEME);
23
+ this.adapter = adapter;
24
+ this.dateService = dateService;
25
+ }
26
+ /**
27
+ * Ottiene le proprietà specifiche per questa tipologia di grafico per cui serve rigraficare
28
+ */
29
+ getSpecificPropertiesToCheck() {
30
+ return ["Data", "DataArray", "Step", "DataGroupBucketSize", "DataGroupingThreshold", "StrokeSize", "Stacked", "AllowGaps", "MergeDatasets", "FinalInstants", "Fill", "Min", "Max"];
31
+ }
32
+ /**
33
+ * Ottiene i Settings (Ereditati dalla classe base, quindi del tipo generico **BaseSettings**) castati al tipo specifico per questo grafico
34
+ *
35
+ * @returns {LineChartSettings} Settings castati al tipo giusto
36
+ */
37
+ getCastedSettings() {
38
+ return (this.Settings ?? new LineChartSettings());
39
+ }
40
+ /**
41
+ * Integra i Settings base con tutti gli Input specifici di questo grafico, dando priorità ai Settings se definiti
42
+ *
43
+ * @param {LineChartSettings} settingsCasted Settings castati al tipo giusto
44
+ */
45
+ fillSpecificSettings(settingsCasted) {
46
+ settingsCasted.Step = settingsCasted.Step != null ? settingsCasted.Step : this.Step;
47
+ settingsCasted.DataGroupBucketSize = settingsCasted.DataGroupBucketSize != null ? settingsCasted.DataGroupBucketSize : this.DataGroupBucketSize;
48
+ settingsCasted.StrokeSize = settingsCasted.StrokeSize != null ? settingsCasted.StrokeSize : this.StrokeSize;
49
+ settingsCasted.DataGroupingThreshold = settingsCasted.DataGroupingThreshold != null ? settingsCasted.DataGroupingThreshold : this.DataGroupingThreshold;
50
+ settingsCasted.AllowGaps = settingsCasted.AllowGaps != null ? settingsCasted.AllowGaps : this.AllowGaps;
51
+ settingsCasted.MergeDatasets = settingsCasted.MergeDatasets != null ? settingsCasted.MergeDatasets : this.MergeDatasets;
52
+ settingsCasted.FinalInstants = settingsCasted.FinalInstants != null ? settingsCasted.FinalInstants : this.FinalInstants;
53
+ settingsCasted.Min = settingsCasted.Min != null ? settingsCasted.Min : this.Min;
54
+ settingsCasted.Max = settingsCasted.Max != null ? settingsCasted.Max : this.Max;
55
+ settingsCasted.Fill = settingsCasted.Fill != null ? settingsCasted.Fill : this.Fill;
56
+ settingsCasted.Stacked = settingsCasted.Stacked != null ? settingsCasted.Stacked : this.Stacked;
57
+ }
58
+ /**
59
+ * Effettua il rendering di questo grafico in base ai Settings
60
+ *
61
+ * @param {LineChartSettings} settingsCasted Impostazioni di graficazione
62
+ * @returns {LineChartService} La service utilizzata per il rendering nello stato subito successivo al rendering effettuato
63
+ */
64
+ graphicate(settingsCasted) {
65
+ return new LineChartService(this.adapter, this.dateService).graphicate(this.Data, settingsCasted);
66
+ }
67
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EsLineChartComponent, deps: [{ token: i0.ElementRef }, { token: i1.ChartLoader }, { token: i2.ChartDispatcher }, { token: i3.BaseAdapter }, { token: i4.DateService }, { token: i0.NgZone }, { token: PLATFORM_ID }, { token: ESC_DEBUG_MODE }, { token: ESC_ANIMATIONS }, { token: ESC_THEME }, { token: i5.LocalizationService }], target: i0.ɵɵFactoryTarget.Component }); }
68
+ static { thiscmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: EsLineChartComponent, selector: "es-line-chart", inputs: { Data: "Data", DataArray: "DataArray", Step: "Step", DataGroupBucketSize: "DataGroupBucketSize", DataGroupingThreshold: "DataGroupingThreshold", StrokeSize: "StrokeSize", AllowGaps: "AllowGaps", MergeDatasets: "MergeDatasets", FinalInstants: "FinalInstants", Min: "Min", Max: "Max", Fill: "Fill", Stacked: "Stacked" }, usesInheritance: true, ngImport: i0, template: "<chart-pager *ngIf=\"isPaged\" (onPageChange)=\"changePage($event)\" [Items]=\"DataArray\" [Dtos]=\"DataDtos\" [StartIndex]=\"DataDtoStartIndex\"\r\n [BrowseDelayMs]=\"BrowseDelayMs\">\r\n <ng-template #header_inner let-headerItem>\r\n <ng-container *ngTemplateOutlet=\"header_tr; context : {$implicit: headerItem}\"></ng-container>\r\n </ng-template>\r\n</chart-pager>\r\n\r\n<ng-container *ngIf=\"loadingChart && loading_template\">\r\n <div style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\">\r\n <ng-container *ngTemplateOutlet=\"loading_template\"></ng-container>\r\n </div>\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"loadingChart && !loading_template\">\r\n <div class=\"esc-loading-overlay\" style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\">\r\n <p class=\"label\">Loading....</p>\r\n </div>\r\n</ng-container>\r\n\r\n<div [class.hide-block]=\"loadingChart\" id=\"{{name}}\" style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\"></div>", styles: [".esc-loading-overlay{background:#9999;text-transform:uppercase;font-size:30px;font-weight:700;color:#fff;text-align:center;font-family:monospace}.esc-loading-overlay .label{margin:0;padding-top:7%}.hide-block{display:none}\n"], dependencies: [{ kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i7.PageChartSelector, selector: "chart-pager", inputs: ["Items", "Dtos", "BrowseDelayMs", "StartIndex"], outputs: ["onPageChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
69
+ }
70
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EsLineChartComponent, decorators: [{
71
+ type: Component,
72
+ args: [{ selector: 'es-line-chart', changeDetection: ChangeDetectionStrategy.OnPush, template: "<chart-pager *ngIf=\"isPaged\" (onPageChange)=\"changePage($event)\" [Items]=\"DataArray\" [Dtos]=\"DataDtos\" [StartIndex]=\"DataDtoStartIndex\"\r\n [BrowseDelayMs]=\"BrowseDelayMs\">\r\n <ng-template #header_inner let-headerItem>\r\n <ng-container *ngTemplateOutlet=\"header_tr; context : {$implicit: headerItem}\"></ng-container>\r\n </ng-template>\r\n</chart-pager>\r\n\r\n<ng-container *ngIf=\"loadingChart && loading_template\">\r\n <div style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\">\r\n <ng-container *ngTemplateOutlet=\"loading_template\"></ng-container>\r\n </div>\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"loadingChart && !loading_template\">\r\n <div class=\"esc-loading-overlay\" style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\">\r\n <p class=\"label\">Loading....</p>\r\n </div>\r\n</ng-container>\r\n\r\n<div [class.hide-block]=\"loadingChart\" id=\"{{name}}\" style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\"></div>", styles: [".esc-loading-overlay{background:#9999;text-transform:uppercase;font-size:30px;font-weight:700;color:#fff;text-align:center;font-family:monospace}.esc-loading-overlay .label{margin:0;padding-top:7%}.hide-block{display:none}\n"] }]
73
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.ChartLoader }, { type: i2.ChartDispatcher }, { type: i3.BaseAdapter }, { type: i4.DateService }, { type: i0.NgZone }, { type: Object, decorators: [{
74
+ type: Inject,
75
+ args: [PLATFORM_ID]
76
+ }] }, { type: undefined, decorators: [{
77
+ type: Inject,
78
+ args: [ESC_DEBUG_MODE]
79
+ }] }, { type: undefined, decorators: [{
80
+ type: Inject,
81
+ args: [ESC_ANIMATIONS]
82
+ }] }, { type: undefined, decorators: [{
83
+ type: Inject,
84
+ args: [ESC_THEME]
85
+ }] }, { type: i5.LocalizationService }]; }, propDecorators: { Data: [{
86
+ type: Input
87
+ }], DataArray: [{
88
+ type: Input
89
+ }], Step: [{
90
+ type: Input
91
+ }], DataGroupBucketSize: [{
92
+ type: Input
93
+ }], DataGroupingThreshold: [{
94
+ type: Input
95
+ }], StrokeSize: [{
96
+ type: Input
97
+ }], AllowGaps: [{
98
+ type: Input
99
+ }], MergeDatasets: [{
100
+ type: Input
101
+ }], FinalInstants: [{
102
+ type: Input
103
+ }], Min: [{
104
+ type: Input
105
+ }], Max: [{
106
+ type: Input
107
+ }], Fill: [{
108
+ type: Input
109
+ }], Stacked: [{
110
+ type: Input
111
+ }] } });
112
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXMtbGluZS1jaGFydC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lcy1jaGFydHMvc3JjL2xpYi9jb21wb25lbnRzL3NwZWNpYWxpemF0aW9ucy9lcy1saW5lLWNoYXJ0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VzLWNoYXJ0cy9zcmMvbGliL2NvbXBvbmVudHMvYmFzZS9iYXNlLWNoYXJ0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQVUsdUJBQXVCLEVBQWMsTUFBTSxlQUFlLENBQUM7QUFLbkgsT0FBTyxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRXpFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBSWxFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDOzs7Ozs7Ozs7QUFJbkU7O0dBRUc7QUFPSCxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsa0JBQWtCO0lBZ0YxRDs7T0FFRztJQUNILFlBQVksRUFBYyxFQUFFLFdBQXdCLEVBQUUsZUFBZ0MsRUFBVSxPQUFvQixFQUFVLFdBQXdCLEVBQUUsSUFBWSxFQUM3SSxVQUFrQixFQUNmLGNBQXVCLEVBQ3ZCLGNBQXVCLEVBQzVCLFNBQWlCLEVBQ3BDLEVBQXVCO1FBQ3ZCLEtBQUssQ0FBQyxFQUFFLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsRUFBRSxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQztRQU5sQixZQUFPLEdBQVAs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QUMsSUFBSSxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQ25ILENBQUM7K0dBdklVLG9CQUFvQixrTEFvRnJCLFdBQVcsYUFDWCxjQUFjLGFBQ2QsY0FBYyxhQUNkLFNBQVM7bUdBdkZSLG9CQUFvQixvWkN6QmpDLHdqQ0FtQndJOzs0RkRNM0gsb0JBQW9CO2tCQU5oQyxTQUFTOytCQUNFLGVBQWUsbUJBR1IsdUJBQXVCLENBQUMsTUFBTTs7MEJBc0Y1QyxNQUFNOzJCQUFDLFdBQVc7OzBCQUNsQixNQUFNOzJCQUFDLGNBQWM7OzBCQUNyQixNQUFNOzJCQUFDLGNBQWM7OzBCQUNyQixNQUFNOzJCQUFDLFNBQVM7OEVBbEZWLElBQUk7c0JBQVosS0FBSztnQkFLRyxTQUFTO3NCQUFqQixLQUFLO2dCQUtHLElBQUk7c0JBQVosS0FBSztnQkFRRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBS0cscUJBQXFCO3NCQUE3QixLQUFLO2dCQUtHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBVUcsU0FBUztzQkFBakIsS0FBSztnQkFPRyxhQUFhO3NCQUFyQixLQUFLO2dCQVFHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBS0csR0FBRztzQkFBWCxLQUFLO2dCQUtHLEdBQUc7c0JBQVgsS0FBSztnQkFLRyxJQUFJO3NCQUFaLEtBQUs7Z0JBS0csT0FBTztzQkFBZixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgSW5qZWN0LCBQTEFURk9STV9JRCwgTmdab25lLCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEYXRlU2VydmljZSB9IGZyb20gXCJAZXNmYWVuemEvZXh0ZW5zaW9uc1wiO1xyXG5pbXBvcnQgeyBMb2NhbGl6YXRpb25TZXJ2aWNlIH0gZnJvbSAnQGVzZmFlbnphL2xvY2FsaXphdGlvbnMnO1xyXG5cclxuaW1wb3J0IHsgQmFzZUFkYXB0ZXIgfSBmcm9tICcuLi8uLi9hZGFwdGVycy9CYXNlQWRhcHRlcic7XHJcbmltcG9ydCB7IEVTQ19BTklNQVRJT05TLCBFU0NfVEhFTUUsIEVTQ19ERUJVR19NT0RFIH0gZnJvbSAnLi4vLi4vdG9rZW5zJztcclxuXHJcbmltcG9ydCB7IEJhc2VDaGFydENvbXBvbmVudCB9IGZyb20gJy4uL2Jhc2UvYmFzZS1jaGFydC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDaGFydExvYWRlciB9IGZyb20gXCIuLi8uLi9tb2RlbHMvY29yZS9DaGFydExvYWRlclwiO1xyXG5pbXBvcnQgeyBDaGFydERpc3BhdGNoZXIgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL2NvcmUvQ2hhcnREaXNwYXRjaGVyXCI7XHJcblxyXG5pbXBvcnQgeyBMaW5lQ2hhcnRTZXR0aW5ncyB9IGZyb20gJy4uLy4uL21vZGVscy9zZXR0aW5ncy9MaW5lQ2hhcnRTZXR0aW5ncyc7XHJcbmltcG9ydCB7IExpbmVDaGFydFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9MaW5lQ2hhcnRTZXJ2aWNlJztcclxuaW1wb3J0IHsgTGluZUNoYXJ0RGF0YSB9IGZyb20gJy4uLy4uL21vZGVscy9kYXRhL0xpbmVDaGFydERhdGEnO1xyXG5pbXBvcnQgeyBQYWdlZENoYXJ0RGF0YSB9IGZyb20gJy4uLy4uL21vZGVscy9kYXRhL1BhZ2VkQ2hhcnREYXRhJztcclxuXHJcbi8qKlxyXG4gKiBDb21wb25lbnRlIHNwZWNpZmljbyBwZXIgbGEgZ3JhZmljYXppb25lIGRpIHVuIGdyYWZpY28gYSBMaW5lYSBzdSB1biBhc3NlIHRlbXBvcmFsZVxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdlcy1saW5lLWNoYXJ0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4uL2Jhc2UvYmFzZS1jaGFydC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4uL2Jhc2UvYmFzZS1jaGFydC5jb21wb25lbnQuc2NzcyddLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFc0xpbmVDaGFydENvbXBvbmVudCBleHRlbmRzIEJhc2VDaGFydENvbXBvbmVudCB7XHJcblxyXG4gIC8qKlxyXG4gICAqIERhdGkgc3BlY2lmaWNpIHBlciBpbCBncmFmaWNvIG8gZGkgdW4gdGlwbyB0cmFtdXRhYmlsZSBhbCB0aXBvICoqTGluZUNoYXJ0RGF0YSoqIGNvbCBzdXBwb3J0byBkZWwgKipCYXNlQWRhcHRlcioqXHJcbiAgICovXHJcbiAgQElucHV0KCkgRGF0YTogTGluZUNoYXJ0RGF0YSB8IGFueTtcclxuXHJcbiAgLyoqXHJcbiAgICogTGlzdGEgZGkgRGF0aSBzcGVjaWZpY2kgcGVyIHVuIGdyYWZpY28gcGFnaW5hdG8gbyBkaSBjdWkgb2duaSBibG9jY28gZGF0aSDDqCB0cmFtdXRhYmlsZSBhbCB0aXBvICoqTGluZUNoYXJ0RGF0YSoqIGNvbCBzdXBwb3J0byBkZWwgKipCYXNlQWRhcHRlcioqXHJcbiAgICovXHJcbiAgQElucHV0KCkgRGF0YUFycmF5OiBQYWdlZENoYXJ0RGF0YTxMaW5lQ2hhcnREYXRhPltdIHwgUGFnZWRDaGFydERhdGE8YW55PltdO1xyXG5cclxuICAvKipcclxuICAgKiBJbmRpY2Egc2UgbGEgY3VydmEgZGV2ZSBjb2xsZWdhcmUgZGlyZXR0YW1lbnRlIHVuIGRhdGFwb2ludCBhbGwnYWx0cm8gbyBzZSBkZXZlIGZhcmUgZGVnbGkgc3RlcFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIFN0ZXA6IGJvb2xlYW47XHJcblxyXG4gIC8qKlxyXG4gICAqIEluZGljYSBpbCBudW1lcm8gbWFzc2ltbyBkaSBkYXRhcG9pbnQgdmlzdWFsaXp6YWJpbGUgaW4gdW5hIHNpbmdvbGEgdmlzdGEgZGVsIGdyYWZpY28uIEwnZWNjZWRlbnphIHZpZW5lIHJhZ2dydXBwYXRhIGUgdmVycsOgIG1vc3RyYXRhIHN1bGxvIHpvb20uXHJcbiAgICogXHJcbiAgICogQVRURU5aSU9ORTogVXRpbGl6emFuZG8gaWwgc2lzdGVtYSBkaSBkZWZhdWx0IGRpIHJhZ2dydXBwYW1lbnRvIGRpIGFtLWNoYXJ0cyBzaSByaXNjaGlhIGRpIHRhZ2xpYXJlIHZpYSBwZXp6aSBkYSBzZXJpZSBtb2x0byBvbmR1bGF0ZVxyXG4gICAqIGluIHF1YW50byBpbCBjb21wb3J0YW1lbnRvIGRpIGRlZmF1bHQgw6ggcXVlbGxvIGRpIGVsaW1pbmFyZSBpIGRhdGFwb2ludCBjaGUgbm9uIGNpIHN0YW5ubywgbm9uIGRpIGludGVycG9sYXJsaVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIERhdGFHcm91cEJ1Y2tldFNpemU6IG51bWJlcjtcclxuXHJcbiAgLyoqXHJcbiAgICogU29nbGlhIHBlciBjb250cm9sbGFyZSBvbHRyZSBjaGUgbnVtZXJvIGRpIGRhdGFwb2ludCBpbCBncmFmaWNvIGRldmUgaW5pemlhcmUgYWQgZWZmZXR0dWFyZSByYWdncnVwcGFtZW50aSBjb25zaWRlcmFuZG8gbCdJbnB1dCAqKkRhdGFHcm91cEJ1Y2tldFNpemUqKlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIERhdGFHcm91cGluZ1RocmVzaG9sZDogbnVtYmVyO1xyXG5cclxuICAvKipcclxuICAgKiBJbmRpY2EgbGUgZGltbnNpb25pLCBpbiBwaXhlbCBkZWxsYSBsaW5lYSBkZWwgZ3JhZmljb1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpIFN0cm9rZVNpemU6IG51bWJlcjtcclxuXHJcbiAgLyoqXHJcbiAgICogSW5kaWNhIHNlIHNvbm8gcGVybWVzc2kgZGVpIEdhcCBmcmEgdW4gdmFsb3JlIGUgbCdhbHRyby5cclxuICAgKiBcclxuICAgKiBOb3JtYWxtZW50ZSBxdWFuZG8gY2kgc29ubyBkZWkgYnVjaGkgbCd1bHRpbW8gZGF0YXBvaW50IGRlbCBidWNvIHZpZW5lIGNvbGxlZ2F0byBkaXJldHRhbWVudGUgYWwgcHJpbW8gZGF0YXBvaW50IGRpc3BvbmliaWxlLiBcclxuICAgKiBcclxuICAgKiBJbXBvc3RhbmRvIHF1ZXN0byBJbnB1dCBhIHRydWUgaW52ZWNlLCBwb3N0byBkaSBhdmVyIGFzc2VnbmF0byBsYSB2YXJpYWJpbGUgKippbnRlcnZhbCoqIGRlbGxhIGNsYXNzZSAqKkxpbmVDaGFydERhdGEqKiwgw6ggcG9zc2liaWxlIFxyXG4gICAqIGZhciBhcHBhcmlyZSBpbCBibG9jY28gZGkgZGF0aSBtYW5jYW50aSBjb21lIHVuIGJ1Y28gdmVybyBlIHByb3ByaW8sIHNlbnphIGFsY3VuIGNvbGxlZ2FtZW50byBmcmEgaSBkdWUgZGF0YXBvaW50IGVzdHJlbWlcclxuICAgKi9cclxuICBASW5wdXQoKSBBbGxvd0dhcHM6IGJvb2xlYW47XHJcblxyXG4gIC8qKlxyXG4gICAqIElucHV0IGNoZSBwZXJtZXR0ZSBkaSByaWVsYWJvcmFyZSBpIGRhdGkgZGVsIGdyYWZpY28gcGVyIGdlbmVyYXJlIHVuIHNvbG8gRGF0YXNldFxyXG4gICAqIFxyXG4gICAqIFZpZW5lIHV0aWxpenphdG8gc2VtcGxpY2VtZW50ZSBwZXIgZGFyZSB1biB0b29sdGlwIG1vbHRvIHBpw7kgYmVsbG8vYXZhbnphdG8gc3VsbG8gc2NvcnJpbWVudG9kZWwgY3Vyc29yZSBhbGwnaW50ZXJubyBkZWwgZ3JhZmljb1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpIE1lcmdlRGF0YXNldHM6IGJvb2xlYW47XHJcblxyXG4gIC8qKlxyXG4gICAqIEluZGljYSBzZSBsZSBkYXRlIGNoZSBhcnJpdmFubyBhbGwnYXNzZSBYIGRldm9ubyBlc3NlcmUgY29uc2lkZXJhdGUgXCJJc3RhbnRlIGZpbmFsZVwiIGUgYWdnaXVzdGF0ZSBkaSBjb25zZWd1ZW56YS4gXHJcbiAgICogU2Ugbm9uIMOoIHZhbG9yaXp6YXRhIGxhIHZhcmlhYmlsZSAqKmludGVydmFsKiogZGVsbGEgY2xhc3NlICoqTGluZUNoYXJ0RGF0YSoqIG5vbiBoYSBhbGN1biBlZmZldHRvXHJcbiAgICogXHJcbiAgICogQWQgZXNlbXBpbywgbGEgZGF0YSAxNi8wNy8yMDIxIGNvbiBpbnRlcnZhbGxvIG9yYXJpbyB2ZXJyZWJiZSB0cmFzZm9ybWF0YSBpbiAxNS8wNy8yMDIxIDI0OjAwOjAwIChPdnZpYW1lbnRlIMOoIHV0aWxpenphdG8gc29sbyBsYXRvIHByZXNlbnRhemlvbmUpXHJcbiAgICovXHJcbiAgQElucHV0KCkgRmluYWxJbnN0YW50czogYm9vbGVhbjtcclxuXHJcbiAgLyoqXHJcbiAgICogR2VzdGlzY2UgaWwgbWluaW1vIGRlbGwnYXNzZSBZXHJcbiAgICovXHJcbiAgQElucHV0KCkgTWluOiBudW1iZXI7XHJcblxyXG4gIC8qKlxyXG4gICAqIEdlc3Rpc2NlIGlsIG1hc3NpbW8gZGVsbCdhc3NlIFlcclxuICAgKi9cclxuICBASW5wdXQoKSBNYXg6IG51bWJlcjtcclxuXHJcbiAgLyoqXHJcbiAgICogSW5kaWNhIHNlIGVmZmV0dHVhcmUgaWwgRmlsbCBkZWxsYSBzZXJpZSBpbiBtb2RvIGRhIG5vbiB2ZWRlcmUgc29sbyBsYSBsaW5lYSBtYSBwcm9wcmlvIGwnYXJlYSBzb3R0ZXNzYSBjb21wbGV0YW1lbnRlIGNvbG9yYXRhXHJcbiAgICovXHJcbiAgQElucHV0KCkgRmlsbDogYm9vbGVhbjtcclxuXHJcbiAgLyoqXHJcbiAgICogSW5kaWNhIHNlIGVmZmV0dHVhcmUgbG8gU3RhY2sgZGVsbGEgc2VyaWUgaW4gbW9kbyBkYSB2ZWRlcmUgdHV0dGUgbGUgbGluZWUgdW5hIHNvcHJhIGwnYWx0cmEuIEltcGxpY2l0YW1lbnRlIGluY2x1ZGUgYW5jaGUgaWwgKipGaWxsKipcclxuICAgKi9cclxuICBASW5wdXQoKSBTdGFja2VkOiBib29sZWFuO1xyXG5cclxuICAvKipcclxuICAgKiBAaWdub3JlXHJcbiAgICovXHJcbiAgY29uc3RydWN0b3IoZWw6IEVsZW1lbnRSZWYsIENoYXJ0TG9hZGVyOiBDaGFydExvYWRlciwgQ2hhcnREaXNwYXRjaGVyOiBDaGFydERpc3BhdGNoZXIsIHByaXZhdGUgYWRhcHRlcjogQmFzZUFkYXB0ZXIsIHByaXZhdGUgZGF0ZVNlcnZpY2U6IERhdGVTZXJ2aWNlLCB6b25lOiBOZ1pvbmUsXHJcbiAgICBASW5qZWN0KFBMQVRGT1JNX0lEKSBwbGF0Zm9ybUlkOiBPYmplY3QsXHJcbiAgICBASW5qZWN0KEVTQ19ERUJVR19NT0RFKSBFU0NfREVCVUdfTU9ERTogYm9vbGVhbixcclxuICAgIEBJbmplY3QoRVNDX0FOSU1BVElPTlMpIEVTQ19BTklNQVRJT05TOiBib29sZWFuLFxyXG4gICAgQEluamVjdChFU0NfVEhFTUUpIEVTQ19USEVNRTogc3RyaW5nLFxyXG4gICAgbGM6IExvY2FsaXphdGlvblNlcnZpY2UpIHtcclxuICAgIHN1cGVyKGVsLCBwbGF0Zm9ybUlkLCB6b25lLCBDaGFydExvYWRlciwgQ2hhcnREaXNwYXRjaGVyLCBFU0NfREVCVUdfTU9ERSwgRVNDX0FOSU1BVElPTlMsIGxjLkxvY2FsZSwgRVNDX1RIRU1FKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE90dGllbmUgbGUgcHJvcHJpZXTDoCBzcGVjaWZpY2hlIHBlciBxdWVzdGEgdGlwb2xvZ2lhIGRpIGdyYWZpY28gcGVyIGN1aSBzZXJ2ZSByaWdyYWZpY2FyZVxyXG4gICAqL1xyXG4gIGdldFNwZWNpZmljUHJvcGVydGllc1RvQ2hlY2soKTogc3RyaW5nW10ge1xyXG4gICAgcmV0dXJuIFtcIkRhdGFcIiwgXCJEYXRhQXJyYXlcIiwgXCJTdGVwXCIsIFwiRGF0YUdyb3VwQnVja2V0U2l6ZVwiLCBcIkRhdGFHcm91cGluZ1RocmVzaG9sZFwiLCBcIlN0cm9rZVNpemVcIiwgXCJTdGFja2VkXCIsIFwiQWxsb3dHYXBzXCIsIFwiTWVyZ2VEYXRhc2V0c1wiLCBcIkZpbmFsSW5zdGFudHNcIiwgXCJGaWxsXCIsIFwiTWluXCIsIFwiTWF4XCJdO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogT3R0aWVuZSBpIFNldHRpbmdzIChFcmVkaXRhdGkgZGFsbGEgY2xhc3NlIGJhc2UsIHF1aW5kaSBkZWwgdGlwbyBnZW5lcmljbyAqKkJhc2VTZXR0aW5ncyoqKSBjYXN0YXRpIGFsIHRpcG8gc3BlY2lmaWNvIHBlciBxdWVzdG8gZ3JhZmljb1xyXG4gICAqIFxyXG4gICAqIEByZXR1cm5zIHtMaW5lQ2hhcnRTZXR0aW5nc30gU2V0dGluZ3MgY2FzdGF0aSBhbCB0aXBvIGdpdXN0b1xyXG4gICAqL1xyXG4gIGdldENhc3RlZFNldHRpbmdzKCk6IExpbmVDaGFydFNldHRpbmdzIHtcclxuICAgIHJldHVybiA8TGluZUNoYXJ0U2V0dGluZ3M+KHRoaXMuU2V0dGluZ3MgPz8gbmV3IExpbmVDaGFydFNldHRpbmdzKCkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSW50ZWdyYSBpIFNldHRpbmdzIGJhc2UgY29uIHR1dHRpIGdsaSBJbnB1dCBzcGVjaWZpY2kgZGkgcXVlc3RvIGdyYWZpY28sIGRhbmRvIHByaW9yaXTDoCBhaSBTZXR0aW5ncyBzZSBkZWZpbml0aVxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSB7TGluZUNoYXJ0U2V0dGluZ3N9IHNldHRpbmdzQ2FzdGVkIFNldHRpbmdzIGNhc3RhdGkgYWwgdGlwbyBnaXVzdG9cclxuICAgKi9cclxuICBmaWxsU3BlY2lmaWNTZXR0aW5ncyhzZXR0aW5nc0Nhc3RlZDogTGluZUNoYXJ0U2V0dGluZ3MpOiB2b2lkIHtcclxuICAgIHNldHRpbmdzQ2FzdGVkLlN0ZXAgPSBzZXR0aW5nc0Nhc3RlZC5TdGVwICE9IG51bGwgPyBzZXR0aW5nc0Nhc3RlZC5TdGVwIDogdGhpcy5TdGVwO1xyXG4gICAgc2V0dGluZ3NDYXN0ZWQuRGF0YUdyb3VwQnVja2V0U2l6ZSA9IHNldHRpbmdzQ2FzdGVkLkRhdGFHcm91cEJ1Y2tldFNpemUgIT0gbnVsbCA/IHNldHRpbmdzQ2FzdGVkLkRhdGFHcm91cEJ1Y2tldFNpemUgOiB0aGlzLkRhdGFHcm91cEJ1Y2tldFNpemU7XHJcbiAgICBzZXR0aW5nc0Nhc3RlZC5TdHJva2VTaXplID0gc2V0dGluZ3NDYXN0ZWQuU3Ryb2tlU2l6ZSAhPSBudWxsID8gc2V0dGluZ3NDYXN0ZWQuU3Ryb2tlU2l6ZSA6IHRoaXMuU3Ryb2tlU2l6ZTtcclxuICAgIHNldHRpbmdzQ2FzdGVkLkRhdGFHcm91cGluZ1RocmVzaG9sZCA9IHNldHRpbmdzQ2FzdGVkLkRhdGFHcm91cGluZ1RocmVzaG9sZCAhPSBudWxsID8gc2V0dGluZ3NDYXN0ZWQuRGF0YUdyb3VwaW5nVGhyZXNob2xkIDogdGhpcy5EYXRhR3JvdXBpbmdUaHJlc2hvbGQ7XHJcbiAgICBzZXR0aW5nc0Nhc3RlZC5BbGxvd0dhcHMgPSBzZXR0aW5nc0Nhc3RlZC5BbGxvd0dhcHMgIT0gbnVsbCA/IHNldHRpbmdzQ2FzdGVkLkFsbG93R2FwcyA6IHRoaXMuQWxsb3dHYXBzO1xyXG4gICAgc2V0dGluZ3NDYXN0ZWQuTWVyZ2VEYXRhc2V0cyA9IHNldHRpbmdzQ2FzdGVkLk1lcmdlRGF0YXNldHMgIT0gbnVsbCA/IHNldHRpbmdzQ2FzdGVkLk1lcmdlRGF0YXNldHMgOiB0aGlzLk1lcmdlRGF0YXNldHM7XHJcbiAgICBzZXR0aW5nc0Nhc3RlZC5GaW5hbEluc3RhbnRzID0gc2V0dGluZ3NDYXN0ZWQuRmluYWxJbnN0YW50cyAhPSBudWxsID8gc2V0dGluZ3NDYXN0ZWQuRmluYWxJbnN0YW50cyA6IHRoaXMuRmluYWxJbnN0YW50cztcclxuICAgIHNldHRpbmdzQ2FzdGVkLk1pbiA9IHNldHRpbmdzQ2FzdGVkLk1pbiAhPSBudWxsID8gc2V0dGluZ3NDYXN0ZWQuTWluIDogdGhpcy5NaW47XHJcbiAgICBzZXR0aW5nc0Nhc3RlZC5NYXggPSBzZXR0aW5nc0Nhc3RlZC5NYXggIT0gbnVsbCA/IHNldHRpbmdzQ2FzdGVkLk1heCA6IHRoaXMuTWF4O1xyXG4gICAgc2V0dGluZ3NDYXN0ZWQuRmlsbCA9IHNldHRpbmdzQ2FzdGVkLkZpbGwgIT0gbnVsbCA/IHNldHRpbmdzQ2FzdGVkLkZpbGwgOiB0aGlzLkZpbGw7XHJcbiAgICBzZXR0aW5nc0Nhc3RlZC5TdGFja2VkID0gc2V0dGluZ3NDYXN0ZWQuU3RhY2tlZCAhPSBudWxsID8gc2V0dGluZ3NDYXN0ZWQuU3RhY2tlZCA6IHRoaXMuU3RhY2tlZDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEVmZmV0dHVhIGlsIHJlbmRlcmluZyBkaSBxdWVzdG8gZ3JhZmljbyBpbiBiYXNlIGFpIFNldHRpbmdzXHJcbiAgICogXHJcbiAgICogQHBhcmFtIHtMaW5lQ2hhcnRTZXR0aW5nc30gc2V0dGluZ3NDYXN0ZWQgSW1wb3N0YXppb25pIGRpIGdyYWZpY2F6aW9uZVxyXG4gICAqIEByZXR1cm5zIHtMaW5lQ2hhcnRTZXJ2aWNlfSBMYSBzZXJ2aWNlIHV0aWxpenphdGEgcGVyIGlsIHJlbmRlcmluZyBuZWxsbyBzdGF0byBzdWJpdG8gc3VjY2Vzc2l2byBhbCByZW5kZXJpbmcgZWZmZXR0dWF0b1xyXG4gICAqL1xyXG4gIGdyYXBoaWNhdGUoc2V0dGluZ3NDYXN0ZWQ6IExpbmVDaGFydFNldHRpbmdzKTogYW55IHtcclxuICAgIHJldHVybiBuZXcgTGluZUNoYXJ0U2VydmljZSh0aGlzLmFkYXB0ZXIsIHRoaXMuZGF0ZVNlcnZpY2UpLmdyYXBoaWNhdGUoPExpbmVDaGFydERhdGE+dGhpcy5EYXRhLCBzZXR0aW5nc0Nhc3RlZCk7XHJcbiAgfVxyXG59IiwiPGNoYXJ0LXBhZ2VyICpuZ0lmPVwiaXNQYWdlZFwiIChvblBhZ2VDaGFuZ2UpPVwiY2hhbmdlUGFnZSgkZXZlbnQpXCIgW0l0ZW1zXT1cIkRhdGFBcnJheVwiIFtEdG9zXT1cIkRhdGFEdG9zXCIgW1N0YXJ0SW5kZXhdPVwiRGF0YUR0b1N0YXJ0SW5kZXhcIlxyXG4gICAgW0Jyb3dzZURlbGF5TXNdPVwiQnJvd3NlRGVsYXlNc1wiPlxyXG4gICAgPG5nLXRlbXBsYXRlICNoZWFkZXJfaW5uZXIgbGV0LWhlYWRlckl0ZW0+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImhlYWRlcl90cjsgY29udGV4dCA6IHskaW1wbGljaXQ6IGhlYWRlckl0ZW19XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG48L2NoYXJ0LXBhZ2VyPlxyXG5cclxuPG5nLWNvbnRhaW5lciAqbmdJZj1cImxvYWRpbmdDaGFydCAmJiBsb2FkaW5nX3RlbXBsYXRlXCI+XHJcbiAgICA8ZGl2IHN0eWxlPVwid2lkdGg6IDEwMCU7XCIgW3N0eWxlLmhlaWdodF09XCJpc1BhZ2VkID8gJ2NhbGMoMTAwJSAtIDQ0cHgpJyA6ICcxMDAlJ1wiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsb2FkaW5nX3RlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuPC9uZy1jb250YWluZXI+XHJcblxyXG48bmctY29udGFpbmVyICpuZ0lmPVwibG9hZGluZ0NoYXJ0ICYmICFsb2FkaW5nX3RlbXBsYXRlXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZXNjLWxvYWRpbmctb3ZlcmxheVwiIHN0eWxlPVwid2lkdGg6IDEwMCU7XCIgW3N0eWxlLmhlaWdodF09XCJpc1BhZ2VkID8gJ2NhbGMoMTAwJSAtIDQ0cHgpJyA6ICcxMDAlJ1wiPlxyXG4gICAgICAgIDxwIGNsYXNzPVwibGFiZWxcIj5Mb2FkaW5nLi4uLjwvcD5cclxuICAgIDwvZGl2PlxyXG48L25nLWNvbnRhaW5lcj5cclxuXHJcbjxkaXYgW2NsYXNzLmhpZGUtYmxvY2tdPVwibG9hZGluZ0NoYXJ0XCIgaWQ9XCJ7e25hbWV9fVwiIHN0eWxlPVwid2lkdGg6IDEwMCU7XCIgW3N0eWxlLmhlaWdodF09XCJpc1BhZ2VkID8gJ2NhbGMoMTAwJSAtIDQ0cHgpJyA6ICcxMDAlJ1wiPjwvZGl2PiJdfQ==
@@ -1,98 +1,98 @@
1
- import { Component, Input, Inject, PLATFORM_ID, ChangeDetectionStrategy } from '@angular/core';
2
- import { ESC_ANIMATIONS, ESC_THEME, ESC_DEBUG_MODE } from '../../tokens';
3
- import { BaseChartComponent } from '../base/base-chart.component';
4
- import { PieChartSettings } from '../../models/settings/PieChartSettings';
5
- import { PieChartService } from '../../services/PieChartService';
6
- import * as i0 from "@angular/core";
7
- import * as i1 from "../../models/core/ChartLoader";
8
- import * as i2 from "../../models/core/ChartDispatcher";
9
- import * as i3 from "../../adapters/BaseAdapter";
10
- import * as i4 from "@esfaenza/localizations";
11
- import * as i5 from "@angular/common";
12
- import * as i6 from "../chart-pager/chart-pager.component";
13
- /**
14
- * Componente specifico per la graficazione di un grafico a Torta
15
- */
16
- export class EsPieChartComponent extends BaseChartComponent {
17
- /**
18
- * @ignore
19
- */
20
- constructor(el, ChartLoader, ChartDispatcher, adapter, zone, platformId, ESC_DEBUG_MODE, ESC_ANIMATIONS, ESC_THEME, lc) {
21
- super(el, platformId, zone, ChartLoader, ChartDispatcher, ESC_DEBUG_MODE, ESC_ANIMATIONS, lc.Locale, ESC_THEME);
22
- this.adapter = adapter;
23
- }
24
- /**
25
- * Ottiene le proprietà specifiche per questa tipologia di grafico per cui serve rigraficare
26
- */
27
- getSpecificPropertiesToCheck() {
28
- return ["Data", "DataArray", "HideZeroes", "Mode3D", "LabelsWrap", "LabelsTruncate", "LabelsWidth", "LabelsVisible"];
29
- }
30
- /**
31
- * Ottiene i Settings (Ereditati dalla classe base, quindi del tipo generico **BaseSettings**) castati al tipo specifico per questo grafico
32
- *
33
- * @returns {PieChartSettings} Settings castati al tipo giusto
34
- */
35
- getCastedSettings() {
36
- return (this.Settings ?? new PieChartSettings());
37
- }
38
- /**
39
- * Integra i Settings base con tutti gli Input specifici di questo grafico, dando priorità ai Settings se definiti
40
- *
41
- * @param {PieChartSettings} settingsCasted Settings castati al tipo giusto
42
- */
43
- fillSpecificSettings(settingsCasted) {
44
- settingsCasted.HideZeroes = settingsCasted.HideZeroes != null ? settingsCasted.HideZeroes : this.HideZeroes;
45
- settingsCasted.Mode3D = settingsCasted.Mode3D != null ? settingsCasted.Mode3D : this.Mode3D;
46
- settingsCasted.DonutRadiusPercentage = settingsCasted.DonutRadiusPercentage != null ? settingsCasted.DonutRadiusPercentage : this.DonutRadiusPercentage;
47
- settingsCasted.LabelsWrap = settingsCasted.LabelsWrap != null ? settingsCasted.LabelsWrap : this.LabelsWrap;
48
- settingsCasted.LabelsTruncate = settingsCasted.LabelsTruncate != null ? settingsCasted.LabelsTruncate : this.LabelsTruncate;
49
- settingsCasted.LabelsWidth = settingsCasted.LabelsWidth != null ? settingsCasted.LabelsWidth : this.LabelsWidth;
50
- settingsCasted.LabelsVisible = settingsCasted.LabelsVisible != null ? settingsCasted.LabelsVisible : this.LabelsVisible;
51
- }
52
- /**
53
- * Effettua il rendering di questo grafico in base ai Settings
54
- *
55
- * @param {PieChartSettings} settingsCasted Impostazioni di graficazione
56
- * @returns {PieChartService} La service utilizzata per il rendering nello stato subito successivo al rendering effettuato
57
- */
58
- graphicate(settingsCasted) {
59
- return new PieChartService(this.adapter).graphicate(this.Data, settingsCasted);
60
- }
61
- }
62
- EsPieChartComponentfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: EsPieChartComponent, deps: [{ token: i0.ElementRef }, { token: i1.ChartLoader }, { token: i2.ChartDispatcher }, { token: i3.BaseAdapter }, { token: i0.NgZone }, { token: PLATFORM_ID }, { token: ESC_DEBUG_MODE }, { token: ESC_ANIMATIONS }, { token: ESC_THEME }, { token: i4.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });
63
- EsPieChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: EsPieChartComponent, selector: "es-pie-chart", inputs: { Data: "Data", DataArray: "DataArray", HideZeroes: "HideZeroes", Mode3D: "Mode3D", DonutRadiusPercentage: "DonutRadiusPercentage", LabelsWrap: "LabelsWrap", LabelsTruncate: "LabelsTruncate", LabelsWidth: "LabelsWidth", LabelsVisible: "LabelsVisible" }, usesInheritance: true, ngImport: i0, template: "<chart-pager *ngIf=\"isPaged\" (onPageChange)=\"changePage($event)\" [Items]=\"DataArray\" [Dtos]=\"DataDtos\" [StartIndex]=\"DataDtoStartIndex\"\r\n [BrowseDelayMs]=\"BrowseDelayMs\">\r\n <ng-template #header_inner let-headerItem>\r\n <ng-container *ngTemplateOutlet=\"header_tr; context : {$implicit: headerItem}\"></ng-container>\r\n </ng-template>\r\n</chart-pager>\r\n\r\n<ng-container *ngIf=\"loadingChart && loading_template\">\r\n <div style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\">\r\n <ng-container *ngTemplateOutlet=\"loading_template\"></ng-container>\r\n </div>\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"loadingChart && !loading_template\">\r\n <div class=\"esc-loading-overlay\" style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\">\r\n <p class=\"label\">Loading....</p>\r\n </div>\r\n</ng-container>\r\n\r\n<div [class.hide-block]=\"loadingChart\" id=\"{{name}}\" style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\"></div>", styles: [".esc-loading-overlay{background:rgba(153,153,153,.6);text-transform:uppercase;font-size:30px;font-weight:700;color:#fff;text-align:center;font-family:monospace}.esc-loading-overlay .label{margin:0;padding-top:7%}.hide-block{display:none}\n"], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i6.PageChartSelector, selector: "chart-pager", inputs: ["Items", "Dtos", "BrowseDelayMs", "StartIndex"], outputs: ["onPageChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
64
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: EsPieChartComponent, decorators: [{
65
- type: Component,
66
- args: [{ selector: 'es-pie-chart', changeDetection: ChangeDetectionStrategy.OnPush, template: "<chart-pager *ngIf=\"isPaged\" (onPageChange)=\"changePage($event)\" [Items]=\"DataArray\" [Dtos]=\"DataDtos\" [StartIndex]=\"DataDtoStartIndex\"\r\n [BrowseDelayMs]=\"BrowseDelayMs\">\r\n <ng-template #header_inner let-headerItem>\r\n <ng-container *ngTemplateOutlet=\"header_tr; context : {$implicit: headerItem}\"></ng-container>\r\n </ng-template>\r\n</chart-pager>\r\n\r\n<ng-container *ngIf=\"loadingChart && loading_template\">\r\n <div style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\">\r\n <ng-container *ngTemplateOutlet=\"loading_template\"></ng-container>\r\n </div>\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"loadingChart && !loading_template\">\r\n <div class=\"esc-loading-overlay\" style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\">\r\n <p class=\"label\">Loading....</p>\r\n </div>\r\n</ng-container>\r\n\r\n<div [class.hide-block]=\"loadingChart\" id=\"{{name}}\" style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\"></div>", styles: [".esc-loading-overlay{background:rgba(153,153,153,.6);text-transform:uppercase;font-size:30px;font-weight:700;color:#fff;text-align:center;font-family:monospace}.esc-loading-overlay .label{margin:0;padding-top:7%}.hide-block{display:none}\n"] }]
67
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.ChartLoader }, { type: i2.ChartDispatcher }, { type: i3.BaseAdapter }, { type: i0.NgZone }, { type: Object, decorators: [{
68
- type: Inject,
69
- args: [PLATFORM_ID]
70
- }] }, { type: undefined, decorators: [{
71
- type: Inject,
72
- args: [ESC_DEBUG_MODE]
73
- }] }, { type: undefined, decorators: [{
74
- type: Inject,
75
- args: [ESC_ANIMATIONS]
76
- }] }, { type: undefined, decorators: [{
77
- type: Inject,
78
- args: [ESC_THEME]
79
- }] }, { type: i4.LocalizationService }]; }, propDecorators: { Data: [{
80
- type: Input
81
- }], DataArray: [{
82
- type: Input
83
- }], HideZeroes: [{
84
- type: Input
85
- }], Mode3D: [{
86
- type: Input
87
- }], DonutRadiusPercentage: [{
88
- type: Input
89
- }], LabelsWrap: [{
90
- type: Input
91
- }], LabelsTruncate: [{
92
- type: Input
93
- }], LabelsWidth: [{
94
- type: Input
95
- }], LabelsVisible: [{
96
- type: Input
97
- }] } });
98
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXMtcGllLWNoYXJ0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VzLWNoYXJ0cy9zcmMvbGliL2NvbXBvbmVudHMvc3BlY2lhbGl6YXRpb25zL2VzLXBpZS1jaGFydC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lcy1jaGFydHMvc3JjL2xpYi9jb21wb25lbnRzL2Jhc2UvYmFzZS1jaGFydC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFVLHVCQUF1QixFQUFjLE1BQU0sZUFBZSxDQUFDO0FBSW5ILE9BQU8sRUFBRSxjQUFjLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUV6RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUlsRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUMxRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7Ozs7Ozs7O0FBSWpFOztHQUVHO0FBT0gsTUFBTSxPQUFPLG1CQUFvQixTQUFRLGtCQUFrQjtJQStDekQ7O09BRUc7SUFDSCxZQUFZLEVBQWMsRUFBRSxXQUF3QixFQUFFLGVBQWdDLEVBQVUsT0FBb0IsRUFBRSxJQUFZLEVBQzNHLFVBQWtCLEVBQ2YsY0FBdUIsRUFDdkIsY0FBdUIsRUFDNUIsU0FBaUIsRUFDcEMsRUFBdUI7UUFDdkIsS0FBSyxDQUFDLEVBQUUsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxFQUFFLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBTmxCLFlBQU8sR0FBUCxPQUFPLENBQWE7SUFPcEgsQ0FBQztJQUVEOztPQUVHO0lBQ0gsNEJBQTRCO1FBQzFCLE9BQU8sQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLGdCQUFnQixFQUFFLGFBQWEsRUFBRSxlQUFlLENBQUMsQ0FBQztJQUN2SCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILGlCQUFpQjtRQUNmLE9BQXlCLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLGdCQUFnQixFQUFFLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILG9CQUFvQixDQUFDLGNBQWdDO1FBQ25ELGNBQWMsQ0FBQyxVQUFVLEdBQUcsY0FBYyxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7UUFDNUcsY0FBYyxDQUFDLE1BQU0sR0FBRyxjQUFjLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUM1RixjQUFjLENBQUMscUJBQXFCLEdBQUcsY0FBYyxDQUFDLHFCQUFxQixJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUM7UUFDeEosY0FBYyxDQUFDLFVBQVUsR0FBRyxjQUFjLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztRQUM1RyxjQUFjLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDO1FBQzVILGNBQWMsQ0FBQyxXQUFXLEdBQUcsY0FBYyxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7UUFDaEgsY0FBYyxDQUFDLGFBQWEsR0FBRyxjQUFjLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUMxSCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxVQUFVLENBQUMsY0FBZ0M7UUFDekMsT0FBTyxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFlLElBQUksQ0FBQyxJQUFJLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDL0YsQ0FBQzs7Z0hBbEdVLG1CQUFtQix1SkFtRHBCLFdBQVcsYUFDWCxjQUFjLGFBQ2QsY0FBYyxhQUNkLFNBQVM7b0dBdERSLG1CQUFtQixpVkN4QmhDLHdqQ0FtQndJOzJGREszSCxtQkFBbUI7a0JBTi9CLFNBQVM7K0JBQ0UsY0FBYyxtQkFHUCx1QkFBdUIsQ0FBQyxNQUFNOzswQkFxRDVDLE1BQU07MkJBQUMsV0FBVzs7MEJBQ2xCLE1BQU07MkJBQUMsY0FBYzs7MEJBQ3JCLE1BQU07MkJBQUMsY0FBYzs7MEJBQ3JCLE1BQU07MkJBQUMsU0FBUzs4RUFqRFYsSUFBSTtzQkFBWixLQUFLO2dCQUtHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBS0csVUFBVTtzQkFBbEIsS0FBSztnQkFLRyxNQUFNO3NCQUFkLEtBQUs7Z0JBS0kscUJBQXFCO3NCQUE3QixLQUFLO2dCQUtHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBS0csY0FBYztzQkFBdEIsS0FBSztnQkFLRyxXQUFXO3NCQUFuQixLQUFLO2dCQUtHLGFBQWE7c0JBQXJCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBJbmplY3QsIFBMQVRGT1JNX0lELCBOZ1pvbmUsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IExvY2FsaXphdGlvblNlcnZpY2UgfSBmcm9tICdAZXNmYWVuemEvbG9jYWxpemF0aW9ucyc7XHJcblxyXG5pbXBvcnQgeyBCYXNlQWRhcHRlciB9IGZyb20gJy4uLy4uL2FkYXB0ZXJzL0Jhc2VBZGFwdGVyJztcclxuaW1wb3J0IHsgRVNDX0FOSU1BVElPTlMsIEVTQ19USEVNRSwgRVNDX0RFQlVHX01PREUgfSBmcm9tICcuLi8uLi90b2tlbnMnO1xyXG5cclxuaW1wb3J0IHsgQmFzZUNoYXJ0Q29tcG9uZW50IH0gZnJvbSAnLi4vYmFzZS9iYXNlLWNoYXJ0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENoYXJ0TG9hZGVyIH0gZnJvbSBcIi4uLy4uL21vZGVscy9jb3JlL0NoYXJ0TG9hZGVyXCI7XHJcbmltcG9ydCB7IENoYXJ0RGlzcGF0Y2hlciB9IGZyb20gXCIuLi8uLi9tb2RlbHMvY29yZS9DaGFydERpc3BhdGNoZXJcIjtcclxuXHJcbmltcG9ydCB7IFBpZUNoYXJ0U2V0dGluZ3MgfSBmcm9tICcuLi8uLi9tb2RlbHMvc2V0dGluZ3MvUGllQ2hhcnRTZXR0aW5ncyc7XHJcbmltcG9ydCB7IFBpZUNoYXJ0U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL1BpZUNoYXJ0U2VydmljZSc7XHJcbmltcG9ydCB7IFBpZUNoYXJ0RGF0YSB9IGZyb20gJy4uLy4uL21vZGVscy9kYXRhL1BpZUNoYXJ0RGF0YSc7XHJcbmltcG9ydCB7IFBhZ2VkQ2hhcnREYXRhIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2RhdGEvUGFnZWRDaGFydERhdGEnO1xyXG5cclxuLyoqXHJcbiAqIENvbXBvbmVudGUgc3BlY2lmaWNvIHBlciBsYSBncmFmaWNhemlvbmUgZGkgdW4gZ3JhZmljbyBhIFRvcnRhXHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2VzLXBpZS1jaGFydCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuLi9iYXNlL2Jhc2UtY2hhcnQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuLi9iYXNlL2Jhc2UtY2hhcnQuY29tcG9uZW50LnNjc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRXNQaWVDaGFydENvbXBvbmVudCBleHRlbmRzIEJhc2VDaGFydENvbXBvbmVudCB7XHJcblxyXG4gIC8qKlxyXG4gICAqIERhdGkgc3BlY2lmaWNpIHBlciBpbCBncmFmaWNvIG8gZGkgdW4gdGlwbyB0cmFtdXRhYmlsZSBhbCB0aXBvICoqUGllQ2hhcnREYXRhKiogY29sIHN1cHBvcnRvIGRlbCAqKkJhc2VBZGFwdGVyKipcclxuICAgKi9cclxuICBASW5wdXQoKSBEYXRhOiBQaWVDaGFydERhdGEgfCBhbnk7XHJcblxyXG4gIC8qKlxyXG4gICAqIExpc3RhIGRpIERhdGkgc3BlY2lmaWNpIHBlciB1biBncmFmaWNvIHBhZ2luYXRvIG8gZGkgY3VpIG9nbmkgYmxvY2NvIGRhdGkgw6ggdHJhbXV0YWJpbGUgYWwgdGlwbyAqKlBpZUNoYXJ0RGF0YSoqIGNvbCBzdXBwb3J0byBkZWwgKipCYXNlQWRhcHRlcioqXHJcbiAgICovXHJcbiAgQElucHV0KCkgRGF0YUFycmF5OiBQYWdlZENoYXJ0RGF0YTxQaWVDaGFydERhdGE+W10gfCBQYWdlZENoYXJ0RGF0YTxhbnk+W107XHJcblxyXG4gIC8qKlxyXG4gICAqIEluZGljYSBzZSBtb3N0cmFyZSBvIG1lbm8gbGUgc2VyaWUgY29uIHBlcmNlbnR1YWxlIGEgMFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIEhpZGVaZXJvZXM6IGJvb2xlYW47XHJcblxyXG4gIC8qKlxyXG4gICAqIEluZGljYSBzZSBhcHBhcmlyZSBpbiBtb2RhbGl0w6AgM0QgbyAyRFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIE1vZGUzRDogYm9vbGVhbjtcclxuXHJcbiAgLyoqXHJcbiAgICogUGVyY2VudHVhbGUgZGVsbCdhbHRlenphIGRlbCBncmFmaWNvIGNoZSB2aWVuZSB1dGlsaXp6YXRhIHBlciBjcmVhcmUgaWwgYnVjbyBhbGwnaW50ZXJubyBkZWxsYSBjaWFtYmVsbGEgKip3aW5rKiogKip3aW5rKipcclxuICAgKi9cclxuICAgQElucHV0KCkgRG9udXRSYWRpdXNQZXJjZW50YWdlOiBudW1iZXI7XHJcblxyXG4gIC8qKlxyXG4gICAqIEluZGljYSBzZSB3cmFwcGFyZSBsZSBsYWJlbCBjaGUgbm9uIHN0YW5ubyBuZWwgY29udGVuaXRvcmVcclxuICAgKi9cclxuICAgQElucHV0KCkgTGFiZWxzV3JhcDogYm9vbGVhbjtcclxuXHJcbiAgLyoqXHJcbiAgICogSW5kaWNhIHNlIHRyb25jYXJlIGxlIGxhYmVsIGNoZSBub24gc3Rhbm5vIG5lbCBjb250ZW5pdG9yZVxyXG4gICAqL1xyXG4gICBASW5wdXQoKSBMYWJlbHNUcnVuY2F0ZTogYm9vbGVhbjtcclxuXHJcbiAgLyoqXHJcbiAgICogSW5kaWNhIGxhIGRpbWVuc2lvbmUgbWFzc2ltYSBjaGUgcG9zc29ubyBhc3N1bWVyZSBsZSBsYWJlbFxyXG4gICAqL1xyXG4gICBASW5wdXQoKSBMYWJlbHNXaWR0aDogbnVtYmVyO1xyXG5cclxuICAvKipcclxuICAgKiBJbmRpY2Egc2UgbW9zdHJhcmUgbyBtZW5vIGxlIGxhYmVsc1xyXG4gICAqL1xyXG4gICBASW5wdXQoKSBMYWJlbHNWaXNpYmxlOiBib29sZWFuO1xyXG5cclxuICAvKipcclxuICAgKiBAaWdub3JlXHJcbiAgICovXHJcbiAgY29uc3RydWN0b3IoZWw6IEVsZW1lbnRSZWYsIENoYXJ0TG9hZGVyOiBDaGFydExvYWRlciwgQ2hhcnREaXNwYXRjaGVyOiBDaGFydERpc3BhdGNoZXIsIHByaXZhdGUgYWRhcHRlcjogQmFzZUFkYXB0ZXIsIHpvbmU6IE5nWm9uZSxcclxuICAgIEBJbmplY3QoUExBVEZPUk1fSUQpIHBsYXRmb3JtSWQ6IE9iamVjdCxcclxuICAgIEBJbmplY3QoRVNDX0RFQlVHX01PREUpIEVTQ19ERUJVR19NT0RFOiBib29sZWFuLFxyXG4gICAgQEluamVjdChFU0NfQU5JTUFUSU9OUykgRVNDX0FOSU1BVElPTlM6IGJvb2xlYW4sXHJcbiAgICBASW5qZWN0KEVTQ19USEVNRSkgRVNDX1RIRU1FOiBzdHJpbmcsXHJcbiAgICBsYzogTG9jYWxpemF0aW9uU2VydmljZSkge1xyXG4gICAgc3VwZXIoZWwsIHBsYXRmb3JtSWQsIHpvbmUsIENoYXJ0TG9hZGVyLCBDaGFydERpc3BhdGNoZXIsIEVTQ19ERUJVR19NT0RFLCBFU0NfQU5JTUFUSU9OUywgbGMuTG9jYWxlLCBFU0NfVEhFTUUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogT3R0aWVuZSBsZSBwcm9wcmlldMOgIHNwZWNpZmljaGUgcGVyIHF1ZXN0YSB0aXBvbG9naWEgZGkgZ3JhZmljbyBwZXIgY3VpIHNlcnZlIHJpZ3JhZmljYXJlXHJcbiAgICovXHJcbiAgZ2V0U3BlY2lmaWNQcm9wZXJ0aWVzVG9DaGVjaygpOiBzdHJpbmdbXSB7XHJcbiAgICByZXR1cm4gW1wiRGF0YVwiLCBcIkRhdGFBcnJheVwiLCBcIkhpZGVaZXJvZXNcIiwgXCJNb2RlM0RcIiwgXCJMYWJlbHNXcmFwXCIsIFwiTGFiZWxzVHJ1bmNhdGVcIiwgXCJMYWJlbHNXaWR0aFwiLCBcIkxhYmVsc1Zpc2libGVcIl07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBPdHRpZW5lIGkgU2V0dGluZ3MgKEVyZWRpdGF0aSBkYWxsYSBjbGFzc2UgYmFzZSwgcXVpbmRpIGRlbCB0aXBvIGdlbmVyaWNvICoqQmFzZVNldHRpbmdzKiopIGNhc3RhdGkgYWwgdGlwbyBzcGVjaWZpY28gcGVyIHF1ZXN0byBncmFmaWNvXHJcbiAgICogXHJcbiAgICogQHJldHVybnMge1BpZUNoYXJ0U2V0dGluZ3N9IFNldHRpbmdzIGNhc3RhdGkgYWwgdGlwbyBnaXVzdG9cclxuICAgKi9cclxuICBnZXRDYXN0ZWRTZXR0aW5ncygpOiBQaWVDaGFydFNldHRpbmdzIHtcclxuICAgIHJldHVybiA8UGllQ2hhcnRTZXR0aW5ncz4odGhpcy5TZXR0aW5ncyA/PyBuZXcgUGllQ2hhcnRTZXR0aW5ncygpKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEludGVncmEgaSBTZXR0aW5ncyBiYXNlIGNvbiB0dXR0aSBnbGkgSW5wdXQgc3BlY2lmaWNpIGRpIHF1ZXN0byBncmFmaWNvLCBkYW5kbyBwcmlvcml0w6AgYWkgU2V0dGluZ3Mgc2UgZGVmaW5pdGlcclxuICAgKiBcclxuICAgKiBAcGFyYW0ge1BpZUNoYXJ0U2V0dGluZ3N9IHNldHRpbmdzQ2FzdGVkIFNldHRpbmdzIGNhc3RhdGkgYWwgdGlwbyBnaXVzdG9cclxuICAgKi9cclxuICBmaWxsU3BlY2lmaWNTZXR0aW5ncyhzZXR0aW5nc0Nhc3RlZDogUGllQ2hhcnRTZXR0aW5ncyk6IHZvaWQge1xyXG4gICAgc2V0dGluZ3NDYXN0ZWQuSGlkZVplcm9lcyA9IHNldHRpbmdzQ2FzdGVkLkhpZGVaZXJvZXMgIT0gbnVsbCA/IHNldHRpbmdzQ2FzdGVkLkhpZGVaZXJvZXMgOiB0aGlzLkhpZGVaZXJvZXM7XHJcbiAgICBzZXR0aW5nc0Nhc3RlZC5Nb2RlM0QgPSBzZXR0aW5nc0Nhc3RlZC5Nb2RlM0QgIT0gbnVsbCA/IHNldHRpbmdzQ2FzdGVkLk1vZGUzRCA6IHRoaXMuTW9kZTNEO1xyXG4gICAgc2V0dGluZ3NDYXN0ZWQuRG9udXRSYWRpdXNQZXJjZW50YWdlID0gc2V0dGluZ3NDYXN0ZWQuRG9udXRSYWRpdXNQZXJjZW50YWdlICE9IG51bGwgPyBzZXR0aW5nc0Nhc3RlZC5Eb251dFJhZGl1c1BlcmNlbnRhZ2UgOiB0aGlzLkRvbnV0UmFkaXVzUGVyY2VudGFnZTtcclxuICAgIHNldHRpbmdzQ2FzdGVkLkxhYmVsc1dyYXAgPSBzZXR0aW5nc0Nhc3RlZC5MYWJlbHNXcmFwICE9IG51bGwgPyBzZXR0aW5nc0Nhc3RlZC5MYWJlbHNXcmFwIDogdGhpcy5MYWJlbHNXcmFwO1xyXG4gICAgc2V0dGluZ3NDYXN0ZWQuTGFiZWxzVHJ1bmNhdGUgPSBzZXR0aW5nc0Nhc3RlZC5MYWJlbHNUcnVuY2F0ZSAhPSBudWxsID8gc2V0dGluZ3NDYXN0ZWQuTGFiZWxzVHJ1bmNhdGUgOiB0aGlzLkxhYmVsc1RydW5jYXRlO1xyXG4gICAgc2V0dGluZ3NDYXN0ZWQuTGFiZWxzV2lkdGggPSBzZXR0aW5nc0Nhc3RlZC5MYWJlbHNXaWR0aCAhPSBudWxsID8gc2V0dGluZ3NDYXN0ZWQuTGFiZWxzV2lkdGggOiB0aGlzLkxhYmVsc1dpZHRoO1xyXG4gICAgc2V0dGluZ3NDYXN0ZWQuTGFiZWxzVmlzaWJsZSA9IHNldHRpbmdzQ2FzdGVkLkxhYmVsc1Zpc2libGUgIT0gbnVsbCA/IHNldHRpbmdzQ2FzdGVkLkxhYmVsc1Zpc2libGUgOiB0aGlzLkxhYmVsc1Zpc2libGU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBFZmZldHR1YSBpbCByZW5kZXJpbmcgZGkgcXVlc3RvIGdyYWZpY28gaW4gYmFzZSBhaSBTZXR0aW5nc1xyXG4gICAqIFxyXG4gICAqIEBwYXJhbSB7UGllQ2hhcnRTZXR0aW5nc30gc2V0dGluZ3NDYXN0ZWQgSW1wb3N0YXppb25pIGRpIGdyYWZpY2F6aW9uZVxyXG4gICAqIEByZXR1cm5zIHtQaWVDaGFydFNlcnZpY2V9IExhIHNlcnZpY2UgdXRpbGl6emF0YSBwZXIgaWwgcmVuZGVyaW5nIG5lbGxvIHN0YXRvIHN1Yml0byBzdWNjZXNzaXZvIGFsIHJlbmRlcmluZyBlZmZldHR1YXRvXHJcbiAgICovXHJcbiAgZ3JhcGhpY2F0ZShzZXR0aW5nc0Nhc3RlZDogUGllQ2hhcnRTZXR0aW5ncyk6IGFueSB7XHJcbiAgICByZXR1cm4gbmV3IFBpZUNoYXJ0U2VydmljZSh0aGlzLmFkYXB0ZXIpLmdyYXBoaWNhdGUoPFBpZUNoYXJ0RGF0YT50aGlzLkRhdGEsIHNldHRpbmdzQ2FzdGVkKTtcclxuICB9XHJcbn0iLCI8Y2hhcnQtcGFnZXIgKm5nSWY9XCJpc1BhZ2VkXCIgKG9uUGFnZUNoYW5nZSk9XCJjaGFuZ2VQYWdlKCRldmVudClcIiBbSXRlbXNdPVwiRGF0YUFycmF5XCIgW0R0b3NdPVwiRGF0YUR0b3NcIiBbU3RhcnRJbmRleF09XCJEYXRhRHRvU3RhcnRJbmRleFwiXHJcbiAgICBbQnJvd3NlRGVsYXlNc109XCJCcm93c2VEZWxheU1zXCI+XHJcbiAgICA8bmctdGVtcGxhdGUgI2hlYWRlcl9pbm5lciBsZXQtaGVhZGVySXRlbT5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaGVhZGVyX3RyOyBjb250ZXh0IDogeyRpbXBsaWNpdDogaGVhZGVySXRlbX1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbjwvY2hhcnQtcGFnZXI+XHJcblxyXG48bmctY29udGFpbmVyICpuZ0lmPVwibG9hZGluZ0NoYXJ0ICYmIGxvYWRpbmdfdGVtcGxhdGVcIj5cclxuICAgIDxkaXYgc3R5bGU9XCJ3aWR0aDogMTAwJTtcIiBbc3R5bGUuaGVpZ2h0XT1cImlzUGFnZWQgPyAnY2FsYygxMDAlIC0gNDRweCknIDogJzEwMCUnXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImxvYWRpbmdfdGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG48L25nLWNvbnRhaW5lcj5cclxuXHJcbjxuZy1jb250YWluZXIgKm5nSWY9XCJsb2FkaW5nQ2hhcnQgJiYgIWxvYWRpbmdfdGVtcGxhdGVcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJlc2MtbG9hZGluZy1vdmVybGF5XCIgc3R5bGU9XCJ3aWR0aDogMTAwJTtcIiBbc3R5bGUuaGVpZ2h0XT1cImlzUGFnZWQgPyAnY2FsYygxMDAlIC0gNDRweCknIDogJzEwMCUnXCI+XHJcbiAgICAgICAgPHAgY2xhc3M9XCJsYWJlbFwiPkxvYWRpbmcuLi4uPC9wPlxyXG4gICAgPC9kaXY+XHJcbjwvbmctY29udGFpbmVyPlxyXG5cclxuPGRpdiBbY2xhc3MuaGlkZS1ibG9ja109XCJsb2FkaW5nQ2hhcnRcIiBpZD1cInt7bmFtZX19XCIgc3R5bGU9XCJ3aWR0aDogMTAwJTtcIiBbc3R5bGUuaGVpZ2h0XT1cImlzUGFnZWQgPyAnY2FsYygxMDAlIC0gNDRweCknIDogJzEwMCUnXCI+PC9kaXY+Il19
1
+ import { Component, Input, Inject, PLATFORM_ID, ChangeDetectionStrategy } from '@angular/core';
2
+ import { ESC_ANIMATIONS, ESC_THEME, ESC_DEBUG_MODE } from '../../tokens';
3
+ import { BaseChartComponent } from '../base/base-chart.component';
4
+ import { PieChartSettings } from '../../models/settings/PieChartSettings';
5
+ import { PieChartService } from '../../services/PieChartService';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "../../models/core/ChartLoader";
8
+ import * as i2 from "../../models/core/ChartDispatcher";
9
+ import * as i3 from "../../adapters/BaseAdapter";
10
+ import * as i4 from "@esfaenza/localizations";
11
+ import * as i5 from "@angular/common";
12
+ import * as i6 from "../chart-pager/chart-pager.component";
13
+ /**
14
+ * Componente specifico per la graficazione di un grafico a Torta
15
+ */
16
+ export class EsPieChartComponent extends BaseChartComponent {
17
+ /**
18
+ * @ignore
19
+ */
20
+ constructor(el, ChartLoader, ChartDispatcher, adapter, zone, platformId, ESC_DEBUG_MODE, ESC_ANIMATIONS, ESC_THEME, lc) {
21
+ super(el, platformId, zone, ChartLoader, ChartDispatcher, ESC_DEBUG_MODE, ESC_ANIMATIONS, lc.Locale, ESC_THEME);
22
+ this.adapter = adapter;
23
+ }
24
+ /**
25
+ * Ottiene le proprietà specifiche per questa tipologia di grafico per cui serve rigraficare
26
+ */
27
+ getSpecificPropertiesToCheck() {
28
+ return ["Data", "DataArray", "HideZeroes", "Mode3D", "LabelsWrap", "LabelsTruncate", "LabelsWidth", "LabelsVisible"];
29
+ }
30
+ /**
31
+ * Ottiene i Settings (Ereditati dalla classe base, quindi del tipo generico **BaseSettings**) castati al tipo specifico per questo grafico
32
+ *
33
+ * @returns {PieChartSettings} Settings castati al tipo giusto
34
+ */
35
+ getCastedSettings() {
36
+ return (this.Settings ?? new PieChartSettings());
37
+ }
38
+ /**
39
+ * Integra i Settings base con tutti gli Input specifici di questo grafico, dando priorità ai Settings se definiti
40
+ *
41
+ * @param {PieChartSettings} settingsCasted Settings castati al tipo giusto
42
+ */
43
+ fillSpecificSettings(settingsCasted) {
44
+ settingsCasted.HideZeroes = settingsCasted.HideZeroes != null ? settingsCasted.HideZeroes : this.HideZeroes;
45
+ settingsCasted.Mode3D = settingsCasted.Mode3D != null ? settingsCasted.Mode3D : this.Mode3D;
46
+ settingsCasted.DonutRadiusPercentage = settingsCasted.DonutRadiusPercentage != null ? settingsCasted.DonutRadiusPercentage : this.DonutRadiusPercentage;
47
+ settingsCasted.LabelsWrap = settingsCasted.LabelsWrap != null ? settingsCasted.LabelsWrap : this.LabelsWrap;
48
+ settingsCasted.LabelsTruncate = settingsCasted.LabelsTruncate != null ? settingsCasted.LabelsTruncate : this.LabelsTruncate;
49
+ settingsCasted.LabelsWidth = settingsCasted.LabelsWidth != null ? settingsCasted.LabelsWidth : this.LabelsWidth;
50
+ settingsCasted.LabelsVisible = settingsCasted.LabelsVisible != null ? settingsCasted.LabelsVisible : this.LabelsVisible;
51
+ }
52
+ /**
53
+ * Effettua il rendering di questo grafico in base ai Settings
54
+ *
55
+ * @param {PieChartSettings} settingsCasted Impostazioni di graficazione
56
+ * @returns {PieChartService} La service utilizzata per il rendering nello stato subito successivo al rendering effettuato
57
+ */
58
+ graphicate(settingsCasted) {
59
+ return new PieChartService(this.adapter).graphicate(this.Data, settingsCasted);
60
+ }
61
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EsPieChartComponent, deps: [{ token: i0.ElementRef }, { token: i1.ChartLoader }, { token: i2.ChartDispatcher }, { token: i3.BaseAdapter }, { token: i0.NgZone }, { token: PLATFORM_ID }, { token: ESC_DEBUG_MODE }, { token: ESC_ANIMATIONS }, { token: ESC_THEME }, { token: i4.LocalizationService }], target: i0.ɵɵFactoryTarget.Component }); }
62
+ static { thiscmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: EsPieChartComponent, selector: "es-pie-chart", inputs: { Data: "Data", DataArray: "DataArray", HideZeroes: "HideZeroes", Mode3D: "Mode3D", DonutRadiusPercentage: "DonutRadiusPercentage", LabelsWrap: "LabelsWrap", LabelsTruncate: "LabelsTruncate", LabelsWidth: "LabelsWidth", LabelsVisible: "LabelsVisible" }, usesInheritance: true, ngImport: i0, template: "<chart-pager *ngIf=\"isPaged\" (onPageChange)=\"changePage($event)\" [Items]=\"DataArray\" [Dtos]=\"DataDtos\" [StartIndex]=\"DataDtoStartIndex\"\r\n [BrowseDelayMs]=\"BrowseDelayMs\">\r\n <ng-template #header_inner let-headerItem>\r\n <ng-container *ngTemplateOutlet=\"header_tr; context : {$implicit: headerItem}\"></ng-container>\r\n </ng-template>\r\n</chart-pager>\r\n\r\n<ng-container *ngIf=\"loadingChart && loading_template\">\r\n <div style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\">\r\n <ng-container *ngTemplateOutlet=\"loading_template\"></ng-container>\r\n </div>\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"loadingChart && !loading_template\">\r\n <div class=\"esc-loading-overlay\" style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\">\r\n <p class=\"label\">Loading....</p>\r\n </div>\r\n</ng-container>\r\n\r\n<div [class.hide-block]=\"loadingChart\" id=\"{{name}}\" style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\"></div>", styles: [".esc-loading-overlay{background:#9999;text-transform:uppercase;font-size:30px;font-weight:700;color:#fff;text-align:center;font-family:monospace}.esc-loading-overlay .label{margin:0;padding-top:7%}.hide-block{display:none}\n"], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i6.PageChartSelector, selector: "chart-pager", inputs: ["Items", "Dtos", "BrowseDelayMs", "StartIndex"], outputs: ["onPageChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
63
+ }
64
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EsPieChartComponent, decorators: [{
65
+ type: Component,
66
+ args: [{ selector: 'es-pie-chart', changeDetection: ChangeDetectionStrategy.OnPush, template: "<chart-pager *ngIf=\"isPaged\" (onPageChange)=\"changePage($event)\" [Items]=\"DataArray\" [Dtos]=\"DataDtos\" [StartIndex]=\"DataDtoStartIndex\"\r\n [BrowseDelayMs]=\"BrowseDelayMs\">\r\n <ng-template #header_inner let-headerItem>\r\n <ng-container *ngTemplateOutlet=\"header_tr; context : {$implicit: headerItem}\"></ng-container>\r\n </ng-template>\r\n</chart-pager>\r\n\r\n<ng-container *ngIf=\"loadingChart && loading_template\">\r\n <div style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\">\r\n <ng-container *ngTemplateOutlet=\"loading_template\"></ng-container>\r\n </div>\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"loadingChart && !loading_template\">\r\n <div class=\"esc-loading-overlay\" style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\">\r\n <p class=\"label\">Loading....</p>\r\n </div>\r\n</ng-container>\r\n\r\n<div [class.hide-block]=\"loadingChart\" id=\"{{name}}\" style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\"></div>", styles: [".esc-loading-overlay{background:#9999;text-transform:uppercase;font-size:30px;font-weight:700;color:#fff;text-align:center;font-family:monospace}.esc-loading-overlay .label{margin:0;padding-top:7%}.hide-block{display:none}\n"] }]
67
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.ChartLoader }, { type: i2.ChartDispatcher }, { type: i3.BaseAdapter }, { type: i0.NgZone }, { type: Object, decorators: [{
68
+ type: Inject,
69
+ args: [PLATFORM_ID]
70
+ }] }, { type: undefined, decorators: [{
71
+ type: Inject,
72
+ args: [ESC_DEBUG_MODE]
73
+ }] }, { type: undefined, decorators: [{
74
+ type: Inject,
75
+ args: [ESC_ANIMATIONS]
76
+ }] }, { type: undefined, decorators: [{
77
+ type: Inject,
78
+ args: [ESC_THEME]
79
+ }] }, { type: i4.LocalizationService }]; }, propDecorators: { Data: [{
80
+ type: Input
81
+ }], DataArray: [{
82
+ type: Input
83
+ }], HideZeroes: [{
84
+ type: Input
85
+ }], Mode3D: [{
86
+ type: Input
87
+ }], DonutRadiusPercentage: [{
88
+ type: Input
89
+ }], LabelsWrap: [{
90
+ type: Input
91
+ }], LabelsTruncate: [{
92
+ type: Input
93
+ }], LabelsWidth: [{
94
+ type: Input
95
+ }], LabelsVisible: [{
96
+ type: Input
97
+ }] } });
98
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXMtcGllLWNoYXJ0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VzLWNoYXJ0cy9zcmMvbGliL2NvbXBvbmVudHMvc3BlY2lhbGl6YXRpb25zL2VzLXBpZS1jaGFydC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lcy1jaGFydHMvc3JjL2xpYi9jb21wb25lbnRzL2Jhc2UvYmFzZS1jaGFydC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFVLHVCQUF1QixFQUFjLE1BQU0sZUFBZSxDQUFDO0FBSW5ILE9BQU8sRUFBRSxjQUFjLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUV6RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUlsRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUMxRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7Ozs7Ozs7O0FBSWpFOztHQUVHO0FBT0gsTUFBTSxPQUFPLG1CQUFvQixTQUFRLGtCQUFrQjtJQStDekQ7O09BRUc7SUFDSCxZQUFZLEVBQWMsRUFBRSxXQUF3QixFQUFFLGVBQWdDLEVBQVUsT0FBb0IsRUFBRSxJQUFZLEVBQzNHLFVBQWtCLEVBQ2YsY0FBdUIsRUFDdkIsY0FBdUIsRUFDNUIsU0FBaUIsRUFDcEMsRUFBdUI7UUFDdkIsS0FBSyxDQUFDLEVBQUUsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxFQUFFLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBTmxCLFlBQU8sR0FBUCxPQUFPLENBQWE7SUFPcEgsQ0FBQztJQUVEOztPQUVHO0lBQ0gsNEJBQTRCO1FBQzFCLE9BQU8sQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLGdCQUFnQixFQUFFLGFBQWEsRUFBRSxlQUFlLENBQUMsQ0FBQztJQUN2SCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILGlCQUFpQjtRQUNmLE9BQXlCLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLGdCQUFnQixFQUFFLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILG9CQUFvQixDQUFDLGNBQWdDO1FBQ25ELGNBQWMsQ0FBQyxVQUFVLEdBQUcsY0FBYyxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7UUFDNUcsY0FBYyxDQUFDLE1BQU0sR0FBRyxjQUFjLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUM1RixjQUFjLENBQUMscUJBQXFCLEdBQUcsY0FBYyxDQUFDLHFCQUFxQixJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUM7UUFDeEosY0FBYyxDQUFDLFVBQVUsR0FBRyxjQUFjLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztRQUM1RyxjQUFjLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDO1FBQzVILGNBQWMsQ0FBQyxXQUFXLEdBQUcsY0FBYyxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7UUFDaEgsY0FBYyxDQUFDLGFBQWEsR0FBRyxjQUFjLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUMxSCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxVQUFVLENBQUMsY0FBZ0M7UUFDekMsT0FBTyxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFlLElBQUksQ0FBQyxJQUFJLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDL0YsQ0FBQzsrR0FsR1UsbUJBQW1CLHVKQW1EcEIsV0FBVyxhQUNYLGNBQWMsYUFDZCxjQUFjLGFBQ2QsU0FBUzttR0F0RFIsbUJBQW1CLGlWQ3hCaEMsd2pDQW1Cd0k7OzRGREszSCxtQkFBbUI7a0JBTi9CLFNBQVM7K0JBQ0UsY0FBYyxtQkFHUCx1QkFBdUIsQ0FBQyxNQUFNOzswQkFxRDVDLE1BQU07MkJBQUMsV0FBVzs7MEJBQ2xCLE1BQU07MkJBQUMsY0FBYzs7MEJBQ3JCLE1BQU07MkJBQUMsY0FBYzs7MEJBQ3JCLE1BQU07MkJBQUMsU0FBUzs4RUFqRFYsSUFBSTtzQkFBWixLQUFLO2dCQUtHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBS0csVUFBVTtzQkFBbEIsS0FBSztnQkFLRyxNQUFNO3NCQUFkLEtBQUs7Z0JBS0kscUJBQXFCO3NCQUE3QixLQUFLO2dCQUtHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBS0csY0FBYztzQkFBdEIsS0FBSztnQkFLRyxXQUFXO3NCQUFuQixLQUFLO2dCQUtHLGFBQWE7c0JBQXJCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBJbmplY3QsIFBMQVRGT1JNX0lELCBOZ1pvbmUsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IExvY2FsaXphdGlvblNlcnZpY2UgfSBmcm9tICdAZXNmYWVuemEvbG9jYWxpemF0aW9ucyc7XHJcblxyXG5pbXBvcnQgeyBCYXNlQWRhcHRlciB9IGZyb20gJy4uLy4uL2FkYXB0ZXJzL0Jhc2VBZGFwdGVyJztcclxuaW1wb3J0IHsgRVNDX0FOSU1BVElPTlMsIEVTQ19USEVNRSwgRVNDX0RFQlVHX01PREUgfSBmcm9tICcuLi8uLi90b2tlbnMnO1xyXG5cclxuaW1wb3J0IHsgQmFzZUNoYXJ0Q29tcG9uZW50IH0gZnJvbSAnLi4vYmFzZS9iYXNlLWNoYXJ0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENoYXJ0TG9hZGVyIH0gZnJvbSBcIi4uLy4uL21vZGVscy9jb3JlL0NoYXJ0TG9hZGVyXCI7XHJcbmltcG9ydCB7IENoYXJ0RGlzcGF0Y2hlciB9IGZyb20gXCIuLi8uLi9tb2RlbHMvY29yZS9DaGFydERpc3BhdGNoZXJcIjtcclxuXHJcbmltcG9ydCB7IFBpZUNoYXJ0U2V0dGluZ3MgfSBmcm9tICcuLi8uLi9tb2RlbHMvc2V0dGluZ3MvUGllQ2hhcnRTZXR0aW5ncyc7XHJcbmltcG9ydCB7IFBpZUNoYXJ0U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL1BpZUNoYXJ0U2VydmljZSc7XHJcbmltcG9ydCB7IFBpZUNoYXJ0RGF0YSB9IGZyb20gJy4uLy4uL21vZGVscy9kYXRhL1BpZUNoYXJ0RGF0YSc7XHJcbmltcG9ydCB7IFBhZ2VkQ2hhcnREYXRhIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2RhdGEvUGFnZWRDaGFydERhdGEnO1xyXG5cclxuLyoqXHJcbiAqIENvbXBvbmVudGUgc3BlY2lmaWNvIHBlciBsYSBncmFmaWNhemlvbmUgZGkgdW4gZ3JhZmljbyBhIFRvcnRhXHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2VzLXBpZS1jaGFydCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuLi9iYXNlL2Jhc2UtY2hhcnQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuLi9iYXNlL2Jhc2UtY2hhcnQuY29tcG9uZW50LnNjc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRXNQaWVDaGFydENvbXBvbmVudCBleHRlbmRzIEJhc2VDaGFydENvbXBvbmVudCB7XHJcblxyXG4gIC8qKlxyXG4gICAqIERhdGkgc3BlY2lmaWNpIHBlciBpbCBncmFmaWNvIG8gZGkgdW4gdGlwbyB0cmFtdXRhYmlsZSBhbCB0aXBvICoqUGllQ2hhcnREYXRhKiogY29sIHN1cHBvcnRvIGRlbCAqKkJhc2VBZGFwdGVyKipcclxuICAgKi9cclxuICBASW5wdXQoKSBEYXRhOiBQaWVDaGFydERhdGEgfCBhbnk7XHJcblxyXG4gIC8qKlxyXG4gICAqIExpc3RhIGRpIERhdGkgc3BlY2lmaWNpIHBlciB1biBncmFmaWNvIHBhZ2luYXRvIG8gZGkgY3VpIG9nbmkgYmxvY2NvIGRhdGkgw6ggdHJhbXV0YWJpbGUgYWwgdGlwbyAqKlBpZUNoYXJ0RGF0YSoqIGNvbCBzdXBwb3J0byBkZWwgKipCYXNlQWRhcHRlcioqXHJcbiAgICovXHJcbiAgQElucHV0KCkgRGF0YUFycmF5OiBQYWdlZENoYXJ0RGF0YTxQaWVDaGFydERhdGE+W10gfCBQYWdlZENoYXJ0RGF0YTxhbnk+W107XHJcblxyXG4gIC8qKlxyXG4gICAqIEluZGljYSBzZSBtb3N0cmFyZSBvIG1lbm8gbGUgc2VyaWUgY29uIHBlcmNlbnR1YWxlIGEgMFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIEhpZGVaZXJvZXM6IGJvb2xlYW47XHJcblxyXG4gIC8qKlxyXG4gICAqIEluZGljYSBzZSBhcHBhcmlyZSBpbiBtb2RhbGl0w6AgM0QgbyAyRFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIE1vZGUzRDogYm9vbGVhbjtcclxuXHJcbiAgLyoqXHJcbiAgICogUGVyY2VudHVhbGUgZGVsbCdhbHRlenphIGRlbCBncmFmaWNvIGNoZSB2aWVuZSB1dGlsaXp6YXRhIHBlciBjcmVhcmUgaWwgYnVjbyBhbGwnaW50ZXJubyBkZWxsYSBjaWFtYmVsbGEgKip3aW5rKiogKip3aW5rKipcclxuICAgKi9cclxuICAgQElucHV0KCkgRG9udXRSYWRpdXNQZXJjZW50YWdlOiBudW1iZXI7XHJcblxyXG4gIC8qKlxyXG4gICAqIEluZGljYSBzZSB3cmFwcGFyZSBsZSBsYWJlbCBjaGUgbm9uIHN0YW5ubyBuZWwgY29udGVuaXRvcmVcclxuICAgKi9cclxuICAgQElucHV0KCkgTGFiZWxzV3JhcDogYm9vbGVhbjtcclxuXHJcbiAgLyoqXHJcbiAgICogSW5kaWNhIHNlIHRyb25jYXJlIGxlIGxhYmVsIGNoZSBub24gc3Rhbm5vIG5lbCBjb250ZW5pdG9yZVxyXG4gICAqL1xyXG4gICBASW5wdXQoKSBMYWJlbHNUcnVuY2F0ZTogYm9vbGVhbjtcclxuXHJcbiAgLyoqXHJcbiAgICogSW5kaWNhIGxhIGRpbWVuc2lvbmUgbWFzc2ltYSBjaGUgcG9zc29ubyBhc3N1bWVyZSBsZSBsYWJlbFxyXG4gICAqL1xyXG4gICBASW5wdXQoKSBMYWJlbHNXaWR0aDogbnVtYmVyO1xyXG5cclxuICAvKipcclxuICAgKiBJbmRpY2Egc2UgbW9zdHJhcmUgbyBtZW5vIGxlIGxhYmVsc1xyXG4gICAqL1xyXG4gICBASW5wdXQoKSBMYWJlbHNWaXNpYmxlOiBib29sZWFuO1xyXG5cclxuICAvKipcclxuICAgKiBAaWdub3JlXHJcbiAgICovXHJcbiAgY29uc3RydWN0b3IoZWw6IEVsZW1lbnRSZWYsIENoYXJ0TG9hZGVyOiBDaGFydExvYWRlciwgQ2hhcnREaXNwYXRjaGVyOiBDaGFydERpc3BhdGNoZXIsIHByaXZhdGUgYWRhcHRlcjogQmFzZUFkYXB0ZXIsIHpvbmU6IE5nWm9uZSxcclxuICAgIEBJbmplY3QoUExBVEZPUk1fSUQpIHBsYXRmb3JtSWQ6IE9iamVjdCxcclxuICAgIEBJbmplY3QoRVNDX0RFQlVHX01PREUpIEVTQ19ERUJVR19NT0RFOiBib29sZWFuLFxyXG4gICAgQEluamVjdChFU0NfQU5JTUFUSU9OUykgRVNDX0FOSU1BVElPTlM6IGJvb2xlYW4sXHJcbiAgICBASW5qZWN0KEVTQ19USEVNRSkgRVNDX1RIRU1FOiBzdHJpbmcsXHJcbiAgICBsYzogTG9jYWxpemF0aW9uU2VydmljZSkge1xyXG4gICAgc3VwZXIoZWwsIHBsYXRmb3JtSWQsIHpvbmUsIENoYXJ0TG9hZGVyLCBDaGFydERpc3BhdGNoZXIsIEVTQ19ERUJVR19NT0RFLCBFU0NfQU5JTUFUSU9OUywgbGMuTG9jYWxlLCBFU0NfVEhFTUUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogT3R0aWVuZSBsZSBwcm9wcmlldMOgIHNwZWNpZmljaGUgcGVyIHF1ZXN0YSB0aXBvbG9naWEgZGkgZ3JhZmljbyBwZXIgY3VpIHNlcnZlIHJpZ3JhZmljYXJlXHJcbiAgICovXHJcbiAgZ2V0U3BlY2lmaWNQcm9wZXJ0aWVzVG9DaGVjaygpOiBzdHJpbmdbXSB7XHJcbiAgICByZXR1cm4gW1wiRGF0YVwiLCBcIkRhdGFBcnJheVwiLCBcIkhpZGVaZXJvZXNcIiwgXCJNb2RlM0RcIiwgXCJMYWJlbHNXcmFwXCIsIFwiTGFiZWxzVHJ1bmNhdGVcIiwgXCJMYWJlbHNXaWR0aFwiLCBcIkxhYmVsc1Zpc2libGVcIl07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBPdHRpZW5lIGkgU2V0dGluZ3MgKEVyZWRpdGF0aSBkYWxsYSBjbGFzc2UgYmFzZSwgcXVpbmRpIGRlbCB0aXBvIGdlbmVyaWNvICoqQmFzZVNldHRpbmdzKiopIGNhc3RhdGkgYWwgdGlwbyBzcGVjaWZpY28gcGVyIHF1ZXN0byBncmFmaWNvXHJcbiAgICogXHJcbiAgICogQHJldHVybnMge1BpZUNoYXJ0U2V0dGluZ3N9IFNldHRpbmdzIGNhc3RhdGkgYWwgdGlwbyBnaXVzdG9cclxuICAgKi9cclxuICBnZXRDYXN0ZWRTZXR0aW5ncygpOiBQaWVDaGFydFNldHRpbmdzIHtcclxuICAgIHJldHVybiA8UGllQ2hhcnRTZXR0aW5ncz4odGhpcy5TZXR0aW5ncyA/PyBuZXcgUGllQ2hhcnRTZXR0aW5ncygpKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEludGVncmEgaSBTZXR0aW5ncyBiYXNlIGNvbiB0dXR0aSBnbGkgSW5wdXQgc3BlY2lmaWNpIGRpIHF1ZXN0byBncmFmaWNvLCBkYW5kbyBwcmlvcml0w6AgYWkgU2V0dGluZ3Mgc2UgZGVmaW5pdGlcclxuICAgKiBcclxuICAgKiBAcGFyYW0ge1BpZUNoYXJ0U2V0dGluZ3N9IHNldHRpbmdzQ2FzdGVkIFNldHRpbmdzIGNhc3RhdGkgYWwgdGlwbyBnaXVzdG9cclxuICAgKi9cclxuICBmaWxsU3BlY2lmaWNTZXR0aW5ncyhzZXR0aW5nc0Nhc3RlZDogUGllQ2hhcnRTZXR0aW5ncyk6IHZvaWQge1xyXG4gICAgc2V0dGluZ3NDYXN0ZWQuSGlkZVplcm9lcyA9IHNldHRpbmdzQ2FzdGVkLkhpZGVaZXJvZXMgIT0gbnVsbCA/IHNldHRpbmdzQ2FzdGVkLkhpZGVaZXJvZXMgOiB0aGlzLkhpZGVaZXJvZXM7XHJcbiAgICBzZXR0aW5nc0Nhc3RlZC5Nb2RlM0QgPSBzZXR0aW5nc0Nhc3RlZC5Nb2RlM0QgIT0gbnVsbCA/IHNldHRpbmdzQ2FzdGVkLk1vZGUzRCA6IHRoaXMuTW9kZTNEO1xyXG4gICAgc2V0dGluZ3NDYXN0ZWQuRG9udXRSYWRpdXNQZXJjZW50YWdlID0gc2V0dGluZ3NDYXN0ZWQuRG9udXRSYWRpdXNQZXJjZW50YWdlICE9IG51bGwgPyBzZXR0aW5nc0Nhc3RlZC5Eb251dFJhZGl1c1BlcmNlbnRhZ2UgOiB0aGlzLkRvbnV0UmFkaXVzUGVyY2VudGFnZTtcclxuICAgIHNldHRpbmdzQ2FzdGVkLkxhYmVsc1dyYXAgPSBzZXR0aW5nc0Nhc3RlZC5MYWJlbHNXcmFwICE9IG51bGwgPyBzZXR0aW5nc0Nhc3RlZC5MYWJlbHNXcmFwIDogdGhpcy5MYWJlbHNXcmFwO1xyXG4gICAgc2V0dGluZ3NDYXN0ZWQuTGFiZWxzVHJ1bmNhdGUgPSBzZXR0aW5nc0Nhc3RlZC5MYWJlbHNUcnVuY2F0ZSAhPSBudWxsID8gc2V0dGluZ3NDYXN0ZWQuTGFiZWxzVHJ1bmNhdGUgOiB0aGlzLkxhYmVsc1RydW5jYXRlO1xyXG4gICAgc2V0dGluZ3NDYXN0ZWQuTGFiZWxzV2lkdGggPSBzZXR0aW5nc0Nhc3RlZC5MYWJlbHNXaWR0aCAhPSBudWxsID8gc2V0dGluZ3NDYXN0ZWQuTGFiZWxzV2lkdGggOiB0aGlzLkxhYmVsc1dpZHRoO1xyXG4gICAgc2V0dGluZ3NDYXN0ZWQuTGFiZWxzVmlzaWJsZSA9IHNldHRpbmdzQ2FzdGVkLkxhYmVsc1Zpc2libGUgIT0gbnVsbCA/IHNldHRpbmdzQ2FzdGVkLkxhYmVsc1Zpc2libGUgOiB0aGlzLkxhYmVsc1Zpc2libGU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBFZmZldHR1YSBpbCByZW5kZXJpbmcgZGkgcXVlc3RvIGdyYWZpY28gaW4gYmFzZSBhaSBTZXR0aW5nc1xyXG4gICAqIFxyXG4gICAqIEBwYXJhbSB7UGllQ2hhcnRTZXR0aW5nc30gc2V0dGluZ3NDYXN0ZWQgSW1wb3N0YXppb25pIGRpIGdyYWZpY2F6aW9uZVxyXG4gICAqIEByZXR1cm5zIHtQaWVDaGFydFNlcnZpY2V9IExhIHNlcnZpY2UgdXRpbGl6emF0YSBwZXIgaWwgcmVuZGVyaW5nIG5lbGxvIHN0YXRvIHN1Yml0byBzdWNjZXNzaXZvIGFsIHJlbmRlcmluZyBlZmZldHR1YXRvXHJcbiAgICovXHJcbiAgZ3JhcGhpY2F0ZShzZXR0aW5nc0Nhc3RlZDogUGllQ2hhcnRTZXR0aW5ncyk6IGFueSB7XHJcbiAgICByZXR1cm4gbmV3IFBpZUNoYXJ0U2VydmljZSh0aGlzLmFkYXB0ZXIpLmdyYXBoaWNhdGUoPFBpZUNoYXJ0RGF0YT50aGlzLkRhdGEsIHNldHRpbmdzQ2FzdGVkKTtcclxuICB9XHJcbn0iLCI8Y2hhcnQtcGFnZXIgKm5nSWY9XCJpc1BhZ2VkXCIgKG9uUGFnZUNoYW5nZSk9XCJjaGFuZ2VQYWdlKCRldmVudClcIiBbSXRlbXNdPVwiRGF0YUFycmF5XCIgW0R0b3NdPVwiRGF0YUR0b3NcIiBbU3RhcnRJbmRleF09XCJEYXRhRHRvU3RhcnRJbmRleFwiXHJcbiAgICBbQnJvd3NlRGVsYXlNc109XCJCcm93c2VEZWxheU1zXCI+XHJcbiAgICA8bmctdGVtcGxhdGUgI2hlYWRlcl9pbm5lciBsZXQtaGVhZGVySXRlbT5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaGVhZGVyX3RyOyBjb250ZXh0IDogeyRpbXBsaWNpdDogaGVhZGVySXRlbX1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbjwvY2hhcnQtcGFnZXI+XHJcblxyXG48bmctY29udGFpbmVyICpuZ0lmPVwibG9hZGluZ0NoYXJ0ICYmIGxvYWRpbmdfdGVtcGxhdGVcIj5cclxuICAgIDxkaXYgc3R5bGU9XCJ3aWR0aDogMTAwJTtcIiBbc3R5bGUuaGVpZ2h0XT1cImlzUGFnZWQgPyAnY2FsYygxMDAlIC0gNDRweCknIDogJzEwMCUnXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImxvYWRpbmdfdGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG48L25nLWNvbnRhaW5lcj5cclxuXHJcbjxuZy1jb250YWluZXIgKm5nSWY9XCJsb2FkaW5nQ2hhcnQgJiYgIWxvYWRpbmdfdGVtcGxhdGVcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJlc2MtbG9hZGluZy1vdmVybGF5XCIgc3R5bGU9XCJ3aWR0aDogMTAwJTtcIiBbc3R5bGUuaGVpZ2h0XT1cImlzUGFnZWQgPyAnY2FsYygxMDAlIC0gNDRweCknIDogJzEwMCUnXCI+XHJcbiAgICAgICAgPHAgY2xhc3M9XCJsYWJlbFwiPkxvYWRpbmcuLi4uPC9wPlxyXG4gICAgPC9kaXY+XHJcbjwvbmctY29udGFpbmVyPlxyXG5cclxuPGRpdiBbY2xhc3MuaGlkZS1ibG9ja109XCJsb2FkaW5nQ2hhcnRcIiBpZD1cInt7bmFtZX19XCIgc3R5bGU9XCJ3aWR0aDogMTAwJTtcIiBbc3R5bGUuaGVpZ2h0XT1cImlzUGFnZWQgPyAnY2FsYygxMDAlIC0gNDRweCknIDogJzEwMCUnXCI+PC9kaXY+Il19