@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.
- package/{esm2020 → esm2022}/esfaenza-es-charts.mjs +4 -4
- package/{esm2020 → esm2022}/lib/adapters/BaseAdapter.mjs +50 -50
- package/{esm2020 → esm2022}/lib/adapters/IBaseAdapter.mjs +1 -1
- package/{esm2020 → esm2022}/lib/components/base/base-chart.component.mjs +350 -350
- package/{esm2020 → esm2022}/lib/components/chart-pager/chart-pager.component.mjs +89 -89
- package/{esm2020 → esm2022}/lib/components/specializations/es-area-chart.component.mjs +77 -77
- package/{esm2020 → esm2022}/lib/components/specializations/es-chart.component.mjs +122 -122
- package/{esm2020 → esm2022}/lib/components/specializations/es-line-chart.component.mjs +112 -112
- package/{esm2020 → esm2022}/lib/components/specializations/es-pie-chart.component.mjs +98 -98
- package/{esm2020 → esm2022}/lib/components/specializations/es-vertical-2d-chart.component.mjs +95 -95
- package/{esm2020 → esm2022}/lib/components/specializations/es-vertical-chart.component.mjs +92 -92
- package/{esm2020 → esm2022}/lib/components/specializations/es-vertical-stacked-chart.component.mjs +92 -92
- package/{esm2020 → esm2022}/lib/es-charts.module.mjs +67 -67
- package/{esm2020 → esm2022}/lib/models/EsChaartsModuleConfig.mjs +5 -5
- package/{esm2020 → esm2022}/lib/models/core/ChartDispatcher.mjs +91 -91
- package/{esm2020 → esm2022}/lib/models/core/ChartLoader.mjs +212 -212
- package/{esm2020 → esm2022}/lib/models/core/ChartThemes.mjs +60 -60
- package/{esm2020 → esm2022}/lib/models/data/AreaChartData.mjs +15 -15
- package/{esm2020 → esm2022}/lib/models/data/LineChartData.mjs +15 -15
- package/{esm2020 → esm2022}/lib/models/data/PagedChartData.mjs +19 -19
- package/{esm2020 → esm2022}/lib/models/data/PieChartData.mjs +13 -13
- package/{esm2020 → esm2022}/lib/models/data/Vertical2DChartData.mjs +15 -15
- package/{esm2020 → esm2022}/lib/models/data/VerticalChartData.mjs +13 -13
- package/{esm2020 → esm2022}/lib/models/data/VerticalStackedChartData.mjs +13 -13
- package/{esm2020 → esm2022}/lib/models/data/base/DateValue.mjs +10 -10
- package/{esm2020 → esm2022}/lib/models/data/base/KeyValue.mjs +10 -10
- package/{esm2020 → esm2022}/lib/models/data/base/KeyValueColor.mjs +12 -12
- package/{esm2020 → esm2022}/lib/models/data/base/Limit.mjs +15 -15
- package/{esm2020 → esm2022}/lib/models/data/base/LineSerie.mjs +27 -27
- package/{esm2020 → esm2022}/lib/models/settings/AreaChartSettings.mjs +10 -10
- package/{esm2020 → esm2022}/lib/models/settings/LineChartSettings.mjs +10 -10
- package/{esm2020 → esm2022}/lib/models/settings/PieChartSettings.mjs +6 -6
- package/{esm2020 → esm2022}/lib/models/settings/Vertical2DChartSettings.mjs +10 -10
- package/{esm2020 → esm2022}/lib/models/settings/VerticalChartSettings.mjs +10 -10
- package/{esm2020 → esm2022}/lib/models/settings/VerticalStackedChartSettings.mjs +10 -10
- package/{esm2020 → esm2022}/lib/models/settings/base/BaseInterval.mjs +5 -5
- package/{esm2020 → esm2022}/lib/models/settings/base/BaseSettings.mjs +5 -5
- package/{esm2020 → esm2022}/lib/models/settings/base/LegendPad.mjs +5 -5
- package/esm2022/lib/services/AreaChartService.mjs +157 -0
- package/esm2022/lib/services/LineChartService.mjs +392 -0
- package/{esm2020 → esm2022}/lib/services/PieChartService.mjs +113 -113
- package/{esm2020 → esm2022}/lib/services/Vertical2DChartService.mjs +162 -162
- package/{esm2020 → esm2022}/lib/services/VerticalChartService.mjs +113 -113
- package/{esm2020 → esm2022}/lib/services/VerticalStackedChartService.mjs +126 -126
- package/{esm2020 → esm2022}/lib/services/base/IBaseService.mjs +1 -1
- package/{esm2020 → esm2022}/lib/tokens.mjs +13 -13
- package/{esm2020 → esm2022}/public-api.mjs +38 -38
- package/{fesm2020 → fesm2022}/esfaenza-es-charts.mjs +2728 -2688
- package/fesm2022/esfaenza-es-charts.mjs.map +1 -0
- package/index.d.ts +5 -5
- package/lib/adapters/BaseAdapter.d.ts +40 -40
- package/lib/adapters/IBaseAdapter.d.ts +35 -35
- package/lib/components/base/base-chart.component.d.ts +304 -304
- package/lib/components/chart-pager/chart-pager.component.d.ts +70 -70
- package/lib/components/specializations/es-area-chart.component.d.ts +53 -53
- package/lib/components/specializations/es-chart.component.d.ts +71 -71
- package/lib/components/specializations/es-line-chart.component.d.ts +112 -112
- package/lib/components/specializations/es-pie-chart.component.d.ts +81 -81
- package/lib/components/specializations/es-vertical-2d-chart.component.d.ts +79 -79
- package/lib/components/specializations/es-vertical-chart.component.d.ts +74 -74
- package/lib/components/specializations/es-vertical-stacked-chart.component.d.ts +74 -74
- package/lib/es-charts.module.d.ts +18 -18
- package/lib/models/EsChaartsModuleConfig.d.ts +24 -24
- package/lib/models/core/ChartDispatcher.d.ts +46 -46
- package/lib/models/core/ChartLoader.d.ts +92 -92
- package/lib/models/core/ChartThemes.d.ts +23 -23
- package/lib/models/data/AreaChartData.d.ts +22 -22
- package/lib/models/data/LineChartData.d.ts +16 -16
- package/lib/models/data/PagedChartData.d.ts +23 -23
- package/lib/models/data/PieChartData.d.ts +13 -13
- package/lib/models/data/Vertical2DChartData.d.ts +27 -27
- package/lib/models/data/VerticalChartData.d.ts +13 -13
- package/lib/models/data/VerticalStackedChartData.d.ts +21 -21
- package/lib/models/data/base/DateValue.d.ts +9 -9
- package/lib/models/data/base/KeyValue.d.ts +9 -9
- package/lib/models/data/base/KeyValueColor.d.ts +11 -11
- package/lib/models/data/base/Limit.d.ts +14 -14
- package/lib/models/data/base/LineSerie.d.ts +28 -28
- package/lib/models/settings/AreaChartSettings.d.ts +10 -10
- package/lib/models/settings/LineChartSettings.d.ts +67 -67
- package/lib/models/settings/PieChartSettings.d.ts +34 -34
- package/lib/models/settings/Vertical2DChartSettings.d.ts +36 -36
- package/lib/models/settings/VerticalChartSettings.d.ts +31 -31
- package/lib/models/settings/VerticalStackedChartSettings.d.ts +31 -31
- package/lib/models/settings/base/BaseInterval.d.ts +13 -13
- package/lib/models/settings/base/BaseSettings.d.ts +67 -67
- package/lib/models/settings/base/LegendPad.d.ts +21 -21
- package/lib/services/AreaChartService.d.ts +32 -31
- package/lib/services/LineChartService.d.ts +48 -47
- package/lib/services/PieChartService.d.ts +27 -27
- package/lib/services/Vertical2DChartService.d.ts +39 -39
- package/lib/services/VerticalChartService.d.ts +33 -33
- package/lib/services/VerticalStackedChartService.d.ts +35 -35
- package/lib/services/base/IBaseService.d.ts +38 -38
- package/lib/tokens.d.ts +13 -13
- package/package.json +11 -17
- package/public-api.d.ts +35 -35
- package/esm2020/lib/services/AreaChartService.mjs +0 -137
- package/esm2020/lib/services/LineChartService.mjs +0 -372
- package/fesm2015/esfaenza-es-charts.mjs +0 -2829
- package/fesm2015/esfaenza-es-charts.mjs.map +0 -1
- package/fesm2020/esfaenza-es-charts.mjs.map +0 -1
|
@@ -1,91 +1,91 @@
|
|
|
1
|
-
import { Injectable, Inject } from '@angular/core';
|
|
2
|
-
import { ESC_DEBUG_MODE } from '../../tokens';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
/**
|
|
5
|
-
* Classe che si occupa del dispatch delle operazioni di rendering dei grafici utilizzando una coda per permettere ad ogni grafico di avere temi e localizzazione custom
|
|
6
|
-
*/
|
|
7
|
-
export class ChartDispatcher {
|
|
8
|
-
/**
|
|
9
|
-
* @ignore
|
|
10
|
-
*/
|
|
11
|
-
constructor(logs) {
|
|
12
|
-
this.logs = logs;
|
|
13
|
-
/**
|
|
14
|
-
* Coda di inizializzazioni ancora da eseguire. Quando questa è vuota significa che nessuno sta creando grafici
|
|
15
|
-
*/
|
|
16
|
-
this.Initializations = [];
|
|
17
|
-
/**
|
|
18
|
-
* Lista dei grafici inizializzati e attivi in un dato momento (viene registrata la proprietà **name**). Non è possibile registrare due grafici con lo stesso identificativo
|
|
19
|
-
*/
|
|
20
|
-
this.InitializedGraphs = [];
|
|
21
|
-
}
|
|
22
|
-
/**
|
|
23
|
-
* Registra un grafico da visualizzare insieme alla propria funzione di creazione. Quest'ultima sarà differita fino a che tutti i grafici
|
|
24
|
-
* precedentemente registati non hanno finito la fase di inizializzazione
|
|
25
|
-
*
|
|
26
|
-
* @param {string} name Identificativo del grafico da registrare
|
|
27
|
-
* @param {Function} chartCreationFunction Funzione che fisicamente dovrà occuparsi della creazione del grafico
|
|
28
|
-
*/
|
|
29
|
-
register(name, chartCreationFunction) {
|
|
30
|
-
if (this.InitializedGraphs.indexOf(name) != -1)
|
|
31
|
-
throw "Attempting to register a duplicate chart '" + name + "'. Make sure the 'name' properties of your charts are univoque";
|
|
32
|
-
this.log("DISPATCHER: Registering chart creation function execution for " + name);
|
|
33
|
-
this.Initializations.push({ name: name, function: chartCreationFunction });
|
|
34
|
-
if (this.Initializations.length == 1) {
|
|
35
|
-
this.log("DISPATCHER: Initial drain started");
|
|
36
|
-
this.drainInitQueues();
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* Deregistra un grafico presente. Chiamata generalmente al dispose del grafico in questione quando non dev'essere più mostrato nella pagina corrente
|
|
41
|
-
*
|
|
42
|
-
* @param {string} name Identificativo del grafico da deregistrare
|
|
43
|
-
*/
|
|
44
|
-
deregisterGraph(name) {
|
|
45
|
-
let index = this.InitializedGraphs.indexOf(name);
|
|
46
|
-
if (index == -1) {
|
|
47
|
-
//Questo succede quando si cerca di distruggere il grafico mentre sta venendo graficato
|
|
48
|
-
this.log("DISPATCHER: Registration missing for chart " + name + " it was probably destroyed during load");
|
|
49
|
-
return;
|
|
50
|
-
}
|
|
51
|
-
this.log("DISPATCHER: Chart deregistered " + name);
|
|
52
|
-
this.InitializedGraphs.splice(index, 1);
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* Metodo che esegue in maniera sequenziale le funzioni di inizializzazione dei grafici finché presenti
|
|
56
|
-
* in modo che nessun grafico possa essere inizializzato contemporaneamente ad un altro.
|
|
57
|
-
*
|
|
58
|
-
* Questo è il punto chiave che permette di avere per ogni grafico temi e locale differenti
|
|
59
|
-
*/
|
|
60
|
-
drainInitQueues() {
|
|
61
|
-
let toExecute = this.Initializations[0];
|
|
62
|
-
this.log("DISPATCHER: Executing initialization function for chart " + toExecute.name);
|
|
63
|
-
toExecute.function().then(() => {
|
|
64
|
-
this.log("DISPATCHER: initialization for chart " + toExecute.name + " is done");
|
|
65
|
-
this.InitializedGraphs.push(toExecute.name);
|
|
66
|
-
this.Initializations.splice(0, 1);
|
|
67
|
-
if (this.Initializations.length >= 1) {
|
|
68
|
-
this.log("DISPATCHER: Found queued initializations. Continuing");
|
|
69
|
-
this.drainInitQueues();
|
|
70
|
-
}
|
|
71
|
-
else
|
|
72
|
-
this.log("DISPATCHER: queue is over, nothing more to do");
|
|
73
|
-
});
|
|
74
|
-
}
|
|
75
|
-
/**
|
|
76
|
-
* @ignore
|
|
77
|
-
*/
|
|
78
|
-
log(text) {
|
|
79
|
-
if (this.logs)
|
|
80
|
-
console.log("@esfaenza/es-charts: " + text);
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
86
|
-
type: Injectable
|
|
87
|
-
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
88
|
-
type: Inject,
|
|
89
|
-
args: [ESC_DEBUG_MODE]
|
|
90
|
-
}] }]; } });
|
|
91
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { Injectable, Inject } from '@angular/core';
|
|
2
|
+
import { ESC_DEBUG_MODE } from '../../tokens';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
/**
|
|
5
|
+
* Classe che si occupa del dispatch delle operazioni di rendering dei grafici utilizzando una coda per permettere ad ogni grafico di avere temi e localizzazione custom
|
|
6
|
+
*/
|
|
7
|
+
export class ChartDispatcher {
|
|
8
|
+
/**
|
|
9
|
+
* @ignore
|
|
10
|
+
*/
|
|
11
|
+
constructor(logs) {
|
|
12
|
+
this.logs = logs;
|
|
13
|
+
/**
|
|
14
|
+
* Coda di inizializzazioni ancora da eseguire. Quando questa è vuota significa che nessuno sta creando grafici
|
|
15
|
+
*/
|
|
16
|
+
this.Initializations = [];
|
|
17
|
+
/**
|
|
18
|
+
* Lista dei grafici inizializzati e attivi in un dato momento (viene registrata la proprietà **name**). Non è possibile registrare due grafici con lo stesso identificativo
|
|
19
|
+
*/
|
|
20
|
+
this.InitializedGraphs = [];
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Registra un grafico da visualizzare insieme alla propria funzione di creazione. Quest'ultima sarà differita fino a che tutti i grafici
|
|
24
|
+
* precedentemente registati non hanno finito la fase di inizializzazione
|
|
25
|
+
*
|
|
26
|
+
* @param {string} name Identificativo del grafico da registrare
|
|
27
|
+
* @param {Function} chartCreationFunction Funzione che fisicamente dovrà occuparsi della creazione del grafico
|
|
28
|
+
*/
|
|
29
|
+
register(name, chartCreationFunction) {
|
|
30
|
+
if (this.InitializedGraphs.indexOf(name) != -1)
|
|
31
|
+
throw "Attempting to register a duplicate chart '" + name + "'. Make sure the 'name' properties of your charts are univoque";
|
|
32
|
+
this.log("DISPATCHER: Registering chart creation function execution for " + name);
|
|
33
|
+
this.Initializations.push({ name: name, function: chartCreationFunction });
|
|
34
|
+
if (this.Initializations.length == 1) {
|
|
35
|
+
this.log("DISPATCHER: Initial drain started");
|
|
36
|
+
this.drainInitQueues();
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Deregistra un grafico presente. Chiamata generalmente al dispose del grafico in questione quando non dev'essere più mostrato nella pagina corrente
|
|
41
|
+
*
|
|
42
|
+
* @param {string} name Identificativo del grafico da deregistrare
|
|
43
|
+
*/
|
|
44
|
+
deregisterGraph(name) {
|
|
45
|
+
let index = this.InitializedGraphs.indexOf(name);
|
|
46
|
+
if (index == -1) {
|
|
47
|
+
//Questo succede quando si cerca di distruggere il grafico mentre sta venendo graficato
|
|
48
|
+
this.log("DISPATCHER: Registration missing for chart " + name + " it was probably destroyed during load");
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
this.log("DISPATCHER: Chart deregistered " + name);
|
|
52
|
+
this.InitializedGraphs.splice(index, 1);
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Metodo che esegue in maniera sequenziale le funzioni di inizializzazione dei grafici finché presenti
|
|
56
|
+
* in modo che nessun grafico possa essere inizializzato contemporaneamente ad un altro.
|
|
57
|
+
*
|
|
58
|
+
* Questo è il punto chiave che permette di avere per ogni grafico temi e locale differenti
|
|
59
|
+
*/
|
|
60
|
+
drainInitQueues() {
|
|
61
|
+
let toExecute = this.Initializations[0];
|
|
62
|
+
this.log("DISPATCHER: Executing initialization function for chart " + toExecute.name);
|
|
63
|
+
toExecute.function().then(() => {
|
|
64
|
+
this.log("DISPATCHER: initialization for chart " + toExecute.name + " is done");
|
|
65
|
+
this.InitializedGraphs.push(toExecute.name);
|
|
66
|
+
this.Initializations.splice(0, 1);
|
|
67
|
+
if (this.Initializations.length >= 1) {
|
|
68
|
+
this.log("DISPATCHER: Found queued initializations. Continuing");
|
|
69
|
+
this.drainInitQueues();
|
|
70
|
+
}
|
|
71
|
+
else
|
|
72
|
+
this.log("DISPATCHER: queue is over, nothing more to do");
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* @ignore
|
|
77
|
+
*/
|
|
78
|
+
log(text) {
|
|
79
|
+
if (this.logs)
|
|
80
|
+
console.log("@esfaenza/es-charts: " + text);
|
|
81
|
+
}
|
|
82
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ChartDispatcher, deps: [{ token: ESC_DEBUG_MODE }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
83
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ChartDispatcher }); }
|
|
84
|
+
}
|
|
85
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ChartDispatcher, decorators: [{
|
|
86
|
+
type: Injectable
|
|
87
|
+
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
88
|
+
type: Inject,
|
|
89
|
+
args: [ESC_DEBUG_MODE]
|
|
90
|
+
}] }]; } });
|
|
91
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2hhcnREaXNwYXRjaGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXMtY2hhcnRzL3NyYy9saWIvbW9kZWxzL2NvcmUvQ2hhcnREaXNwYXRjaGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxjQUFjLENBQUM7O0FBRTlDOztHQUVHO0FBRUgsTUFBTSxPQUFPLGVBQWU7SUFZeEI7O09BRUc7SUFDSCxZQUE0QyxJQUFhO1FBQWIsU0FBSSxHQUFKLElBQUksQ0FBUztRQWJ6RDs7V0FFRztRQUNLLG9CQUFlLEdBQXNDLEVBQUUsQ0FBQztRQUVoRTs7V0FFRztRQUNLLHNCQUFpQixHQUFhLEVBQUUsQ0FBQztJQUtvQixDQUFDO0lBRTlEOzs7Ozs7T0FNRztJQUNJLFFBQVEsQ0FBQyxJQUFZLEVBQUUscUJBQStCO1FBQ3pELElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDMUMsTUFBTSw0Q0FBNEMsR0FBRyxJQUFJLEdBQUcsZ0VBQWdFLENBQUM7UUFFakksSUFBSSxDQUFDLEdBQUcsQ0FBQyxnRUFBZ0UsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUNsRixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLHFCQUFxQixFQUFFLENBQUMsQ0FBQztRQUMzRSxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRTtZQUNsQyxJQUFJLENBQUMsR0FBRyxDQUFDLG1DQUFtQyxDQUFDLENBQUM7WUFDOUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1NBQzFCO0lBQ0wsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxlQUFlLENBQUMsSUFBWTtRQUMvQixJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pELElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQyxFQUNmO1lBQ0ksdUZBQXVGO1lBQ3ZGLElBQUksQ0FBQyxHQUFHLENBQUMsNkNBQTZDLEdBQUcsSUFBSSxHQUFHLHdDQUF3QyxDQUFDLENBQUM7WUFDMUcsT0FBTztTQUNWO1FBRUQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxpQ0FBaUMsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUNuRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUMzQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSyxlQUFlO1FBQ25CLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDeEMsSUFBSSxDQUFDLEdBQUcsQ0FBQywwREFBMEQsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFdEYsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDM0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyx1Q0FBdUMsR0FBRyxTQUFTLENBQUMsSUFBSSxHQUFHLFVBQVUsQ0FBQyxDQUFDO1lBQ2hGLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzVDLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNsQyxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRTtnQkFDbEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxzREFBc0QsQ0FBQyxDQUFDO2dCQUNqRSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7YUFDMUI7O2dCQUVHLElBQUksQ0FBQyxHQUFHLENBQUMsK0NBQStDLENBQUMsQ0FBQztRQUNsRSxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRDs7T0FFRztJQUNLLEdBQUcsQ0FBQyxJQUFZO1FBQ3BCLElBQUksSUFBSSxDQUFDLElBQUk7WUFDVCxPQUFPLENBQUMsR0FBRyxDQUFDLHVCQUF1QixHQUFHLElBQUksQ0FBQyxDQUFDO0lBQ3BELENBQUM7K0dBbkZRLGVBQWUsa0JBZUosY0FBYzttSEFmekIsZUFBZTs7NEZBQWYsZUFBZTtrQkFEM0IsVUFBVTs7MEJBZ0JNLE1BQU07MkJBQUMsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgRVNDX0RFQlVHX01PREUgfSBmcm9tICcuLi8uLi90b2tlbnMnO1xyXG5cclxuLyoqXHJcbiAqIENsYXNzZSBjaGUgc2kgb2NjdXBhIGRlbCBkaXNwYXRjaCBkZWxsZSBvcGVyYXppb25pIGRpIHJlbmRlcmluZyBkZWkgZ3JhZmljaSB1dGlsaXp6YW5kbyB1bmEgY29kYSBwZXIgcGVybWV0dGVyZSBhZCBvZ25pIGdyYWZpY28gZGkgYXZlcmUgdGVtaSBlIGxvY2FsaXp6YXppb25lIGN1c3RvbVxyXG4gKi9cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgQ2hhcnREaXNwYXRjaGVyIHtcclxuXHJcbiAgICAvKipcclxuICAgICAqIENvZGEgZGkgaW5pemlhbGl6emF6aW9uaSBhbmNvcmEgZGEgZXNlZ3VpcmUuIFF1YW5kbyBxdWVzdGEgw6ggdnVvdGEgc2lnbmlmaWNhIGNoZSBuZXNzdW5vIHN0YSBjcmVhbmRvIGdyYWZpY2lcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBJbml0aWFsaXphdGlvbnM6IHsgbmFtZTogc3RyaW5nLCBmdW5jdGlvbjogYW55IH1bXSA9IFtdO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogTGlzdGEgZGVpIGdyYWZpY2kgaW5pemlhbGl6emF0aSBlIGF0dGl2aSBpbiB1biBkYXRvIG1vbWVudG8gKHZpZW5lIHJlZ2lzdHJhdGEgbGEgcHJvcHJpZXTDoCAqKm5hbWUqKikuIE5vbiDDqCBwb3NzaWJpbGUgcmVnaXN0cmFyZSBkdWUgZ3JhZmljaSBjb24gbG8gc3Rlc3NvIGlkZW50aWZpY2F0aXZvXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgSW5pdGlhbGl6ZWRHcmFwaHM6IHN0cmluZ1tdID0gW107XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAaWdub3JlXHJcbiAgICAgKi9cclxuICAgIGNvbnN0cnVjdG9yKEBJbmplY3QoRVNDX0RFQlVHX01PREUpIHByaXZhdGUgbG9nczogYm9vbGVhbikgeyB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZWdpc3RyYSB1biBncmFmaWNvIGRhIHZpc3VhbGl6emFyZSBpbnNpZW1lIGFsbGEgcHJvcHJpYSBmdW56aW9uZSBkaSBjcmVhemlvbmUuIFF1ZXN0J3VsdGltYSBzYXLDoCBkaWZmZXJpdGEgZmlubyBhIGNoZSB0dXR0aSBpIGdyYWZpY2lcclxuICAgICAqIHByZWNlZGVudGVtZW50ZSByZWdpc3RhdGkgbm9uIGhhbm5vIGZpbml0byBsYSBmYXNlIGRpIGluaXppYWxpenphemlvbmVcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgSWRlbnRpZmljYXRpdm8gZGVsIGdyYWZpY28gZGEgcmVnaXN0cmFyZVxyXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gY2hhcnRDcmVhdGlvbkZ1bmN0aW9uIEZ1bnppb25lIGNoZSBmaXNpY2FtZW50ZSBkb3Zyw6Agb2NjdXBhcnNpIGRlbGxhIGNyZWF6aW9uZSBkZWwgZ3JhZmljb1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgcmVnaXN0ZXIobmFtZTogc3RyaW5nLCBjaGFydENyZWF0aW9uRnVuY3Rpb246IEZ1bmN0aW9uKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuSW5pdGlhbGl6ZWRHcmFwaHMuaW5kZXhPZihuYW1lKSAhPSAtMSlcclxuICAgICAgICAgICAgdGhyb3cgXCJBdHRlbXB0aW5nIHRvIHJlZ2lzdGVyIGEgZHVwbGljYXRlIGNoYXJ0ICdcIiArIG5hbWUgKyBcIicuIE1ha2Ugc3VyZSB0aGUgJ25hbWUnIHByb3BlcnRpZXMgb2YgeW91ciBjaGFydHMgYXJlIHVuaXZvcXVlXCI7XHJcblxyXG4gICAgICAgIHRoaXMubG9nKFwiRElTUEFUQ0hFUjogUmVnaXN0ZXJpbmcgY2hhcnQgY3JlYXRpb24gZnVuY3Rpb24gZXhlY3V0aW9uIGZvciBcIiArIG5hbWUpO1xyXG4gICAgICAgIHRoaXMuSW5pdGlhbGl6YXRpb25zLnB1c2goeyBuYW1lOiBuYW1lLCBmdW5jdGlvbjogY2hhcnRDcmVhdGlvbkZ1bmN0aW9uIH0pO1xyXG4gICAgICAgIGlmICh0aGlzLkluaXRpYWxpemF0aW9ucy5sZW5ndGggPT0gMSkge1xyXG4gICAgICAgICAgICB0aGlzLmxvZyhcIkRJU1BBVENIRVI6IEluaXRpYWwgZHJhaW4gc3RhcnRlZFwiKTtcclxuICAgICAgICAgICAgdGhpcy5kcmFpbkluaXRRdWV1ZXMoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBEZXJlZ2lzdHJhIHVuIGdyYWZpY28gcHJlc2VudGUuIENoaWFtYXRhIGdlbmVyYWxtZW50ZSBhbCBkaXNwb3NlIGRlbCBncmFmaWNvIGluIHF1ZXN0aW9uZSBxdWFuZG8gbm9uIGRldidlc3NlcmUgcGnDuSBtb3N0cmF0byBuZWxsYSBwYWdpbmEgY29ycmVudGVcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgSWRlbnRpZmljYXRpdm8gZGVsIGdyYWZpY28gZGEgZGVyZWdpc3RyYXJlXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBkZXJlZ2lzdGVyR3JhcGgobmFtZTogc3RyaW5nKSB7XHJcbiAgICAgICAgbGV0IGluZGV4ID0gdGhpcy5Jbml0aWFsaXplZEdyYXBocy5pbmRleE9mKG5hbWUpO1xyXG4gICAgICAgIGlmIChpbmRleCA9PSAtMSlcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIC8vUXVlc3RvIHN1Y2NlZGUgcXVhbmRvIHNpIGNlcmNhIGRpIGRpc3RydWdnZXJlIGlsIGdyYWZpY28gbWVudHJlIHN0YSB2ZW5lbmRvIGdyYWZpY2F0b1xyXG4gICAgICAgICAgICB0aGlzLmxvZyhcIkRJU1BBVENIRVI6IFJlZ2lzdHJhdGlvbiBtaXNzaW5nIGZvciBjaGFydCBcIiArIG5hbWUgKyBcIiBpdCB3YXMgcHJvYmFibHkgZGVzdHJveWVkIGR1cmluZyBsb2FkXCIpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmxvZyhcIkRJU1BBVENIRVI6IENoYXJ0IGRlcmVnaXN0ZXJlZCBcIiArIG5hbWUpO1xyXG4gICAgICAgIHRoaXMuSW5pdGlhbGl6ZWRHcmFwaHMuc3BsaWNlKGluZGV4LCAxKVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTWV0b2RvIGNoZSBlc2VndWUgaW4gbWFuaWVyYSBzZXF1ZW56aWFsZSBsZSBmdW56aW9uaSBkaSBpbml6aWFsaXp6YXppb25lIGRlaSBncmFmaWNpIGZpbmNow6kgcHJlc2VudGkgXHJcbiAgICAgKiBpbiBtb2RvIGNoZSBuZXNzdW4gZ3JhZmljbyBwb3NzYSBlc3NlcmUgaW5pemlhbGl6emF0byBjb250ZW1wb3JhbmVhbWVudGUgYWQgdW4gYWx0cm8uXHJcbiAgICAgKiBcclxuICAgICAqIFF1ZXN0byDDqCBpbCBwdW50byBjaGlhdmUgY2hlIHBlcm1ldHRlIGRpIGF2ZXJlIHBlciBvZ25pIGdyYWZpY28gdGVtaSBlIGxvY2FsZSBkaWZmZXJlbnRpXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgZHJhaW5Jbml0UXVldWVzKCkge1xyXG4gICAgICAgIGxldCB0b0V4ZWN1dGUgPSB0aGlzLkluaXRpYWxpemF0aW9uc1swXTtcclxuICAgICAgICB0aGlzLmxvZyhcIkRJU1BBVENIRVI6IEV4ZWN1dGluZyBpbml0aWFsaXphdGlvbiBmdW5jdGlvbiBmb3IgY2hhcnQgXCIgKyB0b0V4ZWN1dGUubmFtZSk7XHJcblxyXG4gICAgICAgIHRvRXhlY3V0ZS5mdW5jdGlvbigpLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmxvZyhcIkRJU1BBVENIRVI6IGluaXRpYWxpemF0aW9uIGZvciBjaGFydCBcIiArIHRvRXhlY3V0ZS5uYW1lICsgXCIgaXMgZG9uZVwiKTtcclxuICAgICAgICAgICAgdGhpcy5Jbml0aWFsaXplZEdyYXBocy5wdXNoKHRvRXhlY3V0ZS5uYW1lKTtcclxuICAgICAgICAgICAgdGhpcy5Jbml0aWFsaXphdGlvbnMuc3BsaWNlKDAsIDEpO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5Jbml0aWFsaXphdGlvbnMubGVuZ3RoID49IDEpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubG9nKFwiRElTUEFUQ0hFUjogRm91bmQgcXVldWVkIGluaXRpYWxpemF0aW9ucy4gQ29udGludWluZ1wiKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZHJhaW5Jbml0UXVldWVzKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2coXCJESVNQQVRDSEVSOiBxdWV1ZSBpcyBvdmVyLCBub3RoaW5nIG1vcmUgdG8gZG9cIik7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAaWdub3JlXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgbG9nKHRleHQ6IHN0cmluZykge1xyXG4gICAgICAgIGlmICh0aGlzLmxvZ3MpXHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiQGVzZmFlbnphL2VzLWNoYXJ0czogXCIgKyB0ZXh0KTtcclxuICAgIH1cclxufSJdfQ==
|