@esfaenza/localizations 11.2.9 → 11.2.10
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/bundles/esfaenza-localizations.umd.js +551 -131
- package/bundles/esfaenza-localizations.umd.js.map +1 -1
- package/bundles/esfaenza-localizations.umd.min.js +15 -1
- package/bundles/esfaenza-localizations.umd.min.js.map +1 -1
- package/esfaenza-localizations.d.ts +2 -1
- package/esfaenza-localizations.metadata.json +1 -1
- package/esm2015/esfaenza-localizations.js +3 -2
- package/esm2015/lib/core/localization.base.js +82 -158
- package/esm2015/lib/core/localization.persistor.js +103 -0
- package/esm2015/lib/locale-persistor/LocalStorageCachePersistor.js +22 -0
- package/esm2015/lib/locale-persistor/LocalePersistor.js +8 -0
- package/esm2015/lib/localizations.module.js +5 -2
- package/esm2015/lib/localizations.service.js +43 -33
- package/esm2015/lib/models/classes/BaseLocalizationTokens.js +14 -0
- package/esm2015/lib/models/classes/LocalizationModuleConfig.js +1 -1
- package/esm2015/public-api.js +3 -1
- package/fesm2015/esfaenza-localizations.js +193 -124
- package/fesm2015/esfaenza-localizations.js.map +1 -1
- package/lib/core/localization.base.d.ts +12 -59
- package/lib/core/localization.persistor.d.ts +56 -0
- package/lib/locale-persistor/LocalStorageCachePersistor.d.ts +8 -0
- package/lib/locale-persistor/LocalePersistor.d.ts +18 -0
- package/lib/localizations.service.d.ts +10 -17
- package/lib/models/classes/BaseLocalizationTokens.d.ts +12 -0
- package/lib/models/classes/LocalizationModuleConfig.d.ts +7 -2
- package/package.json +1 -1
- package/public-api.d.ts +2 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"__symbolic":"module","version":4,"metadata":{"LocalizationModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":
|
|
1
|
+
{"__symbolic":"module","version":4,"metadata":{"BaseLocalization":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":13,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":34,"character":58},"arguments":[{"__symbolic":"reference","name":"LOC_LOCALE"}]}]],"parameters":[{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","name":"string"}]}]},"statics":{"ɵprov":{}}},"LocalizationModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":10,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"LocalizePipe"},{"__symbolic":"reference","name":"LocDatePipe"}],"exports":[{"__symbolic":"reference","name":"LocalizePipe"},{"__symbolic":"reference","name":"LocDatePipe"}]}]}],"members":{},"statics":{"forRoot":{"__symbolic":"function","parameters":["config"],"value":{"ngModule":{"__symbolic":"reference","name":"LocalizationModule"},"providers":[{"__symbolic":"reference","name":"LocalizationService"},{"__symbolic":"reference","name":"BaseLocalization"},{"provide":{"__symbolic":"reference","name":"LOC_LOCALE"},"useValue":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"config"},"member":"defaultLocale"},"right":"it-IT"}},{"provide":{"__symbolic":"reference","name":"ɵa"},"useClass":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"config"},"member":"localePersistor"},"right":{"__symbolic":"reference","name":"ɵb"}}}]}}}},"LocalizationService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":9,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":30,"character":34}]}],"setToken":[{"__symbolic":"method"}],"set":[{"__symbolic":"method"}],"token":[{"__symbolic":"method"}],"loc":[{"__symbolic":"method"}],"changeLocale":[{"__symbolic":"method"}]}},"LocalizePipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":7,"character":1},"arguments":[{"name":"localize","pure":true}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"LocalizationService"}]}],"transform":[{"__symbolic":"method"}]}},"LocDatePipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":9,"character":1},"arguments":[{"name":"loc_date","pure":true}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":15,"character":17}}]],"parameters":[{"__symbolic":"reference","module":"@esfaenza/extensions","name":"DateService","line":15,"character":41}]}],"transform":[{"__symbolic":"method"}]}},"LOC_LOCALE":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":5,"character":54},"arguments":["LOC_LOCALE"]},"LocalizationModuleConfig":{"__symbolic":"class","members":{}},"BaseLocalizationTokens":{"getDateMonthPosition":"getDateMonthPosition","getDisplayDateMonthPosition":"getDisplayDateMonthPosition","getLocale":"getLocale","getSmallDateFormat":"getSmallDateFormat","getDefaultDateFormat":"getDefaultDateFormat","getSmallDateDisplayFormat":"getSmallDateDisplayFormat","getFullDateFormat":"getFullDateFormat","getFullDateDisplayFormat":"getFullDateDisplayFormat","getFullDateFormatNoSeconds":"getFullDateFormatNoSeconds","getFullDateDisplayFormatNoSeconds":"getFullDateDisplayFormatNoSeconds"},"ɵa":{"__symbolic":"class","members":{"persist":[{"__symbolic":"method"}],"recover":[{"__symbolic":"method"}]}},"ɵb":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵa"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":8,"character":1}}],"members":{"persist":[{"__symbolic":"method"}],"recover":[{"__symbolic":"method"}]}}},"origins":{"BaseLocalization":"./lib/core/localization.base","LocalizationModule":"./lib/localizations.module","LocalizationService":"./lib/localizations.service","LocalizePipe":"./lib/pipes/localize.pipe","LocDatePipe":"./lib/pipes/loc_date.pipe","LOC_LOCALE":"./lib/tokens","LocalizationModuleConfig":"./lib/models/classes/LocalizationModuleConfig","BaseLocalizationTokens":"./lib/models/classes/BaseLocalizationTokens","ɵa":"./lib/locale-persistor/LocalePersistor","ɵb":"./lib/locale-persistor/LocalStorageCachePersistor"},"importAs":"@esfaenza/localizations"}
|
|
@@ -2,5 +2,6 @@
|
|
|
2
2
|
* Generated bundle index. Do not edit.
|
|
3
3
|
*/
|
|
4
4
|
export * from './public-api';
|
|
5
|
-
export {
|
|
6
|
-
|
|
5
|
+
export { LocalStorageLocalePersistor as ɵb } from './lib/locale-persistor/LocalStorageCachePersistor';
|
|
6
|
+
export { LocalePersistor as ɵa } from './lib/locale-persistor/LocalePersistor';
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNmYWVuemEtbG9jYWxpemF0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2xvY2FsaXphdGlvbnMvc3JjL2VzZmFlbnphLWxvY2FsaXphdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQztBQUU3QixPQUFPLEVBQUMsMkJBQTJCLElBQUksRUFBRSxFQUFDLE1BQU0sbURBQW1ELENBQUM7QUFDcEcsT0FBTyxFQUFDLGVBQWUsSUFBSSxFQUFFLEVBQUMsTUFBTSx3Q0FBd0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcblxuZXhwb3J0IHtMb2NhbFN0b3JhZ2VMb2NhbGVQZXJzaXN0b3IgYXMgybVifSBmcm9tICcuL2xpYi9sb2NhbGUtcGVyc2lzdG9yL0xvY2FsU3RvcmFnZUNhY2hlUGVyc2lzdG9yJztcbmV4cG9ydCB7TG9jYWxlUGVyc2lzdG9yIGFzIMm1YX0gZnJvbSAnLi9saWIvbG9jYWxlLXBlcnNpc3Rvci9Mb2NhbGVQZXJzaXN0b3InOyJdfQ==
|
|
@@ -1,5 +1,14 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { __awaiter } from "tslib";
|
|
2
|
+
import { Inject, Injectable } from "@angular/core";
|
|
3
|
+
import { LocalizationPersistor } from "./localization.persistor";
|
|
4
|
+
import { BaseLocalizationTokens } from "../models/classes/BaseLocalizationTokens";
|
|
5
|
+
import { LocalePersistor } from "../locale-persistor/LocalePersistor";
|
|
6
|
+
import { take } from "rxjs/operators";
|
|
7
|
+
import { ReplaySubject } from "rxjs";
|
|
8
|
+
import { LOC_LOCALE } from "../tokens";
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
10
|
+
import * as i1 from "../locale-persistor/LocalePersistor";
|
|
11
|
+
import * as i2 from "../tokens";
|
|
3
12
|
/**
|
|
4
13
|
* Classe singleton che contiene le traduzioni di base (per evitare di ripeterle in oggi classe di traduzione) e le funzioni base per
|
|
5
14
|
* inserire e leggere traduzioni in/da una cache
|
|
@@ -8,168 +17,83 @@ export class BaseLocalization {
|
|
|
8
17
|
/**
|
|
9
18
|
* Costruttore. Da qui utilizzando il metodo statico **BaseLocalization.set** si va a popolare la cache delle traduzioni **BaseTranslations**
|
|
10
19
|
*/
|
|
11
|
-
constructor() {
|
|
20
|
+
constructor(LocalePersistor, defaultLocale) {
|
|
21
|
+
this.LocalePersistor = LocalePersistor;
|
|
12
22
|
/**
|
|
13
23
|
* Cache di tutte le localizzazioni di base
|
|
14
24
|
*/
|
|
15
|
-
this.
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
25
|
+
this.LocCache = {};
|
|
26
|
+
/**
|
|
27
|
+
* Locale di riferimento per tutte le traduzioni
|
|
28
|
+
*/
|
|
29
|
+
this.Locale = new ReplaySubject(1);
|
|
30
|
+
// Recupero il locale alla partenza del BaseLocalization in modo, spero di dare tempo all'applicazione di tirarlo su
|
|
31
|
+
this.LocalePersistor.recover().pipe(take(1)).subscribe((l) => __awaiter(this, void 0, void 0, function* () {
|
|
32
|
+
if (!l) {
|
|
33
|
+
l = defaultLocale;
|
|
34
|
+
this.LocalePersistor.persist(defaultLocale);
|
|
35
|
+
}
|
|
36
|
+
this.Locale.next(l);
|
|
37
|
+
}));
|
|
38
|
+
this.Persistor = new LocalizationPersistor(this.LocCache);
|
|
39
|
+
this.Persistor.set("en->it", "Remove", ["Elimina"]);
|
|
40
|
+
this.Persistor.set("en->it", "Paging", ["Paginazione"]);
|
|
41
|
+
this.Persistor.set("en->it", "Yes", ["Si"]);
|
|
42
|
+
this.Persistor.set("en->it", "No", ["No"]);
|
|
43
|
+
this.Persistor.set("en->it", "YES", ["SI'"]);
|
|
44
|
+
this.Persistor.set("en->it", "NO", ["NO"]);
|
|
45
|
+
this.Persistor.set("en->it", "Found objects", ["Risultati trovati"]);
|
|
46
|
+
this.Persistor.set("en->it", "Loading data...", ["Carico i dati..."]);
|
|
47
|
+
this.Persistor.set("en->it", "Error during save operations", ["Errori durante il salvataggio"]);
|
|
48
|
+
this.Persistor.set("en->it", "Error", ["Errore"]);
|
|
49
|
+
this.Persistor.set("en->it", "Warning", ["Avviso"]);
|
|
50
|
+
this.Persistor.set("en->it", "Information", ["Informazione"]);
|
|
51
|
+
this.Persistor.set("en->it", "Save", ["Salva"]);
|
|
52
|
+
this.Persistor.set("en->it", "Back", ["Indietro"]);
|
|
53
|
+
this.Persistor.set("en->it", "From", ["Da"]);
|
|
54
|
+
this.Persistor.set("en->it", "To", ["A"]);
|
|
55
|
+
this.Persistor.set("en->it", "View Chart", ["Vedi Grafico"]);
|
|
56
|
+
this.Persistor.set("en->it", "View Table", ["Vedi Tabella"]);
|
|
57
|
+
this.Persistor.set("en->it", "Notes", ["Note"]);
|
|
58
|
+
this.Persistor.set("en->it", "Edit Notes", ["Modifica Note"]);
|
|
59
|
+
this.Persistor.set("en->it", "Cancel", ["Annulla"]);
|
|
60
|
+
this.Persistor.set("en->it", "Confirm", ["Conferma"]);
|
|
61
|
+
this.Persistor.set("en->it", "View", ["Visualizza"]);
|
|
62
|
+
this.Persistor.set("en->it", "Close", ["Chiudi"]);
|
|
63
|
+
this.Persistor.set("en->it", "Select", ["Seleziona"]);
|
|
64
|
+
this.Persistor.set("en->it", "Meter Reading registered successfully", ["Lettura registrata correttamente"]);
|
|
65
|
+
this.Persistor.set("en->it", "Validation errors during save operations", ["Errori di validazione durante il salvataggio"]);
|
|
66
|
+
this.Persistor.set("en->it", "Can't register reading", ["Impossibile registrare la lettura"]);
|
|
67
|
+
this.Persistor.set("en->it", "Electricity", ["Elettricita"]);
|
|
68
|
+
this.Persistor.set("en->it", "Gas", ["Gas"]);
|
|
69
|
+
this.Persistor.set("en->it", "Water", ["Acqua"]);
|
|
70
|
+
this.Persistor.set("en->it", "Delete", ["Elimina"]);
|
|
71
|
+
this.Persistor.set("en->it", "This operation cannot be reverted", ["Questa operazione non puo' essere annullata"]);
|
|
72
|
+
this.Persistor.set("en->it", "Hide", ["Nascondi"]);
|
|
53
73
|
// Helper validazione
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
74
|
+
this.Persistor.set("en->it", "Required field", ["Campo richiesto"]);
|
|
75
|
+
this.Persistor.set("en->it", "Wrong field format", ["Formato campo errato"]);
|
|
76
|
+
this.Persistor.set("en->it", "Wrong field format or field missing", ["Formato campo errato o campo mancante"]);
|
|
77
|
+
this.Persistor.set("en->it", "You don't have the required permissions to view this page. The navigation has been blocked", ["Non si hanno privilegi a sufficienza per accedere a questa pagina. La navigazione e' stata bloccata"]);
|
|
58
78
|
// Informazioni sulle date
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
}
|
|
70
|
-
/**
|
|
71
|
-
* Imposta la localizzazione di un token all'interno della cache scelta
|
|
72
|
-
*
|
|
73
|
-
* @param {{ [id: string]: ItemLocalization }} locCache Cache all'interno della quale inserire l'informazione del token con le localizzazioni
|
|
74
|
-
* @param {string} direction Direzione della traduzione, rappresenta la lingua base in cui aspettarsi il testo e le varie lingue in cui viene tradotta.
|
|
75
|
-
* Ad esempio, "en->it" indica che il parametro **left** è valido per le localizzazioni in inglese, mentre nell'elemento 0 del parametro **right**
|
|
76
|
-
* è presente l'unica traduzione in italiano, per definire più traduzioni sul lato destro della freccia bisogna concatenarle con la virgola, ad esempio "en->it,jp,ecc"
|
|
77
|
-
* @param {string} token Nome del token
|
|
78
|
-
* @param {string} left Valore del token per la lingua specificata nel lato immediatamente sinistro alla freccia del parametro **direction**
|
|
79
|
-
* @param {string} right Array con i valori facenti riferimento all'N-esima lingua del lato destro del parametro **direction**
|
|
80
|
-
*/
|
|
81
|
-
static setToken(locCache, direction, token, left, right) {
|
|
82
|
-
let parsingRegex = /([a-zA-Z]+)[\s]*->[\s]*([a-zA-Z,\s]+)+/g;
|
|
83
|
-
var parsingRes = parsingRegex.exec(direction);
|
|
84
|
-
let from = parsingRes[1];
|
|
85
|
-
let to = parsingRes[2].replace(/\s/g, '').split(',');
|
|
86
|
-
let localeFrom = LocaleDefinitions.getByAlias(from);
|
|
87
|
-
BaseLocalization._set(locCache, token, localeFrom.id, left, true);
|
|
88
|
-
to.forEach((t, index) => {
|
|
89
|
-
let localeTo = LocaleDefinitions.getByAlias(t);
|
|
90
|
-
BaseLocalization._set(locCache, token, localeTo.id, right[index], true);
|
|
91
|
-
});
|
|
92
|
-
}
|
|
93
|
-
/**
|
|
94
|
-
* Imposta la localizzazione di una frase all'interno della cache scelta
|
|
95
|
-
*
|
|
96
|
-
* @param {{ [id: string]: ItemLocalization }} locCache Cache all'interno della quale inserire l'informazione della frase con le localizzazioni
|
|
97
|
-
* @param {string} direction Direzione della traduzione, rappresenta la lingua base in cui aspettarsi il testo e le varie lingue in cui viene tradotta.
|
|
98
|
-
* Ad esempio, "en->it" indica che il parametro **left** è valido per le localizzazioni in inglese, mentre nell'elemento 0 del parametro **right**
|
|
99
|
-
* è presente l'unica traduzione in italiano, per definire più traduzioni sul lato destro della freccia bisogna concatenarle con la virgola, ad esempio "en->it,jp,ecc"
|
|
100
|
-
* @param {string} left Valore della frase per la lingua specificata nel lato immediatamente sinistro alla freccia del parametro **direction**
|
|
101
|
-
* @param {string} right Array con i valori facenti riferimento all'N-esima lingua del lato destro del parametro **direction**
|
|
102
|
-
*/
|
|
103
|
-
static set(locCache, direction, left, right) {
|
|
104
|
-
let parsingRegex = /([a-zA-Z]+)[\s]*->[\s]*([a-zA-Z,\s]+)+/g;
|
|
105
|
-
var parsingRes = parsingRegex.exec(direction);
|
|
106
|
-
let from = parsingRes[1];
|
|
107
|
-
let to = parsingRes[2].replace(/\s/g, '').split(',');
|
|
108
|
-
let localeFrom = LocaleDefinitions.getByAlias(from);
|
|
109
|
-
BaseLocalization._set(locCache, left, localeFrom.id, left);
|
|
110
|
-
to.forEach((t, index) => {
|
|
111
|
-
let localeTo = LocaleDefinitions.getByAlias(t);
|
|
112
|
-
BaseLocalization._set(locCache, left, localeTo.id, right[index]);
|
|
113
|
-
});
|
|
114
|
-
}
|
|
115
|
-
/**
|
|
116
|
-
* Imposta all'interno della cache specificata un'unica traduzione partendo da un testo di base
|
|
117
|
-
*
|
|
118
|
-
* @param {{ [id: string]: ItemLocalization }} locCache Cache all'interno della quale inserire l'informazione del testo con le localizzazioni
|
|
119
|
-
* @param {string} text Testo da tradurre
|
|
120
|
-
* @param {string} culture Lingua per cui inserire la traduzione
|
|
121
|
-
* @param {string} translation Traduzione del **text** nella lingua specificata da **culture**
|
|
122
|
-
* @param {boolean} token Indica se il **text** è un token o è una frase normale
|
|
123
|
-
*/
|
|
124
|
-
static _set(locCache, text, culture, translation, token) {
|
|
125
|
-
let item = BaseLocalization.findByText(locCache, text, token);
|
|
126
|
-
if (!item) {
|
|
127
|
-
locCache[text] = new ItemLocalization(token, text, [new SpecializedLocalization(culture, translation)]);
|
|
128
|
-
return;
|
|
129
|
-
}
|
|
130
|
-
var trs = BaseLocalization.translationByCulture(item, culture);
|
|
131
|
-
if (trs) {
|
|
132
|
-
console.warn("Localization already loaded for sentence '" + text + "' and culture " + culture);
|
|
133
|
-
return;
|
|
134
|
-
}
|
|
135
|
-
item.translations.push(new SpecializedLocalization(culture, translation));
|
|
136
|
-
}
|
|
137
|
-
/**
|
|
138
|
-
* Partendo da una cache di localizzazione, dato un testo che può essere o meno un token, cerca quell'elemento all'interno della cache
|
|
139
|
-
*
|
|
140
|
-
* @param {{ [id: string]: ItemLocalization }} locCache Cache all'interno del quale cercare il **text**
|
|
141
|
-
* @param {string} text Testo da cercare nella **locCache**
|
|
142
|
-
* @param {boolean} allowtokens Indica se l'elemento cercato può essere un token o se dev'essere per forza una frase (per evitare rari
|
|
143
|
-
* casi di collisione in cui magari un token è uguale a una frase tradotta)
|
|
144
|
-
*
|
|
145
|
-
* @returns {ItemLocalization} Informazioni di localizzazione per il **text** cercato
|
|
146
|
-
*/
|
|
147
|
-
static findByText(locCache, text, allowtokens) {
|
|
148
|
-
let possibleItem = locCache[text];
|
|
149
|
-
if (!possibleItem)
|
|
150
|
-
return null;
|
|
151
|
-
var item = allowtokens || !possibleItem.token ? possibleItem : null;
|
|
152
|
-
return item;
|
|
153
|
-
}
|
|
154
|
-
/**
|
|
155
|
-
* Date le informazioni di localizzazione per un testo cerca e restituisce la traduzione per una lingua specifica
|
|
156
|
-
*
|
|
157
|
-
* @param {ItemLocalization} Informazioni di localizzazione
|
|
158
|
-
* @param {string} culture Lingua della traduzione richiesta
|
|
159
|
-
*
|
|
160
|
-
* @returns {SpecializedLocalization} Informazioni di localizzazione specifiche della lingua richiesta
|
|
161
|
-
*/
|
|
162
|
-
static translationByCulture(item, culture) {
|
|
163
|
-
for (let i = 0; i < item.translations.length; i++) {
|
|
164
|
-
let trl = item.translations[i];
|
|
165
|
-
if (trl.culture == culture)
|
|
166
|
-
return trl;
|
|
167
|
-
}
|
|
168
|
-
return null;
|
|
79
|
+
this.Persistor.setToken("en->it", BaseLocalizationTokens.getDateMonthPosition, "0", ["1"]);
|
|
80
|
+
this.Persistor.setToken("en->it", BaseLocalizationTokens.getDisplayDateMonthPosition, "1", ["1"]);
|
|
81
|
+
this.Persistor.setToken("en->it", BaseLocalizationTokens.getLocale, "en-US", ["it-IT"]);
|
|
82
|
+
this.Persistor.setToken("en->it", BaseLocalizationTokens.getSmallDateFormat, "MM/DD/YYYY", ["DD/MM/YYYY"]);
|
|
83
|
+
this.Persistor.setToken("en->it", BaseLocalizationTokens.getDefaultDateFormat, "MM/DD/YYYY", ["MM/DD/YYYY"]);
|
|
84
|
+
this.Persistor.setToken("en->it", BaseLocalizationTokens.getSmallDateDisplayFormat, "DD/MM/YYYY", ["DD/MM/YYYY"]);
|
|
85
|
+
this.Persistor.setToken("en->it", BaseLocalizationTokens.getFullDateFormat, "MM/DD/YYYY HH:mm:ss", ["DD/MM/YYYY HH:mm:ss"]);
|
|
86
|
+
this.Persistor.setToken("en->it", BaseLocalizationTokens.getFullDateDisplayFormat, "DD/MM/YYYY HH:mm:ss", ["DD/MM/YYYY HH:mm:ss"]);
|
|
87
|
+
this.Persistor.setToken("en->it", BaseLocalizationTokens.getFullDateFormatNoSeconds, "MM/DD/YYYY HH:mm", ["DD/MM/YYYY HH:mm"]);
|
|
88
|
+
this.Persistor.setToken("en->it", BaseLocalizationTokens.getFullDateDisplayFormatNoSeconds, "DD/MM/YYYY HH:mm", ["DD/MM/YYYY HH:mm"]);
|
|
169
89
|
}
|
|
170
90
|
}
|
|
91
|
+
BaseLocalization.ɵprov = i0.ɵɵdefineInjectable({ factory: function BaseLocalization_Factory() { return new BaseLocalization(i0.ɵɵinject(i1.LocalePersistor), i0.ɵɵinject(i2.LOC_LOCALE)); }, token: BaseLocalization, providedIn: "root" });
|
|
171
92
|
BaseLocalization.decorators = [
|
|
172
|
-
{ type: Injectable }
|
|
93
|
+
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
94
|
+
];
|
|
95
|
+
BaseLocalization.ctorParameters = () => [
|
|
96
|
+
{ type: LocalePersistor },
|
|
97
|
+
{ type: String, decorators: [{ type: Inject, args: [LOC_LOCALE,] }] }
|
|
173
98
|
];
|
|
174
|
-
BaseLocalization.ctorParameters = () => [];
|
|
175
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxpemF0aW9uLmJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9sb2NhbGl6YXRpb25zL3NyYy9saWIvY29yZS9sb2NhbGl6YXRpb24uYmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUV6Rjs7O0dBR0c7QUFFSCxNQUFNLE9BQU8sZ0JBQWdCO0lBT3pCOztPQUVHO0lBQ0g7UUFSQTs7V0FFRztRQUNJLHFCQUFnQixHQUF1QyxFQUFFLENBQUM7UUFNN0QsbUZBQW1GO1FBQ25GLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztRQUMvQixJQUFJLEVBQUUsR0FBRyxnQkFBZ0IsQ0FBQztRQUUxQixFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUM1QyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztRQUNoRCxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNwQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNuQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNyQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNuQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxRQUFRLEVBQUUsZUFBZSxFQUFFLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDO1FBQzdELEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLFFBQVEsRUFBRSxpQkFBaUIsRUFBRSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQztRQUM5RCxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxRQUFRLEVBQUUsOEJBQThCLEVBQUUsQ0FBQywrQkFBK0IsQ0FBQyxDQUFDLENBQUM7UUFDeEYsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDMUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDNUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7UUFDdEQsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDeEMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7UUFDM0MsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDckMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDbEMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7UUFDckQsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7UUFDckQsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDeEMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUM7UUFDdEQsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFDNUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7UUFDOUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7UUFDN0MsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDMUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7UUFDOUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLHVDQUF1QyxFQUFFLENBQUMsa0NBQWtDLENBQUMsQ0FBQyxDQUFDO1FBQ3BHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLFFBQVEsRUFBRSwwQ0FBMEMsRUFBRSxDQUFDLDhDQUE4QyxDQUFDLENBQUMsQ0FBQztRQUNuSCxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxRQUFR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QVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgSXRlbUxvY2FsaXphdGlvbiwgTG9jYWxlRGVmaW5pdGlvbnMsIFNwZWNpYWxpemVkTG9jYWxpemF0aW9uIH0gZnJvbSBcIi4uL21vZGVsc1wiO1xyXG5cclxuLyoqXHJcbiAqIENsYXNzZSBzaW5nbGV0b24gY2hlIGNvbnRpZW5lIGxlIHRyYWR1emlvbmkgZGkgYmFzZSAocGVyIGV2aXRhcmUgZGkgcmlwZXRlcmxlIGluIG9nZ2kgY2xhc3NlIGRpIHRyYWR1emlvbmUpIGUgbGUgZnVuemlvbmkgYmFzZSBwZXIgXHJcbiAqIGluc2VyaXJlIGUgbGVnZ2VyZSB0cmFkdXppb25pIGluL2RhIHVuYSBjYWNoZVxyXG4gKi9cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgQmFzZUxvY2FsaXphdGlvbiB7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDYWNoZSBkaSB0dXR0ZSBsZSBsb2NhbGl6emF6aW9uaSBkaSBiYXNlXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBCYXNlVHJhbnNsYXRpb25zOiB7IFtpZDogc3RyaW5nXTogSXRlbUxvY2FsaXphdGlvbiB9ID0ge307XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDb3N0cnV0dG9yZS4gRGEgcXVpIHV0aWxpenphbmRvIGlsIG1ldG9kbyBzdGF0aWNvICoqQmFzZUxvY2FsaXphdGlvbi5zZXQqKiBzaSB2YSBhIHBvcG9sYXJlIGxhIGNhY2hlIGRlbGxlIHRyYWR1emlvbmkgKipCYXNlVHJhbnNsYXRpb25zKipcclxuICAgICAqL1xyXG4gICAgY29uc3RydWN0b3IoKSB7XHJcbiAgICAgICAgLy8gT2RpbyBzcHJlY2FyZSBjYXJhdHRlcmkuLi4gc29wcmF0dHV0dG8gcXVhbmRvIHJpc2NoaW8gY2hlIG5vbiB2ZW5nYW5vIG1pbmlmaWNhdGlcclxuICAgICAgICBsZXQgYnQgPSB0aGlzLkJhc2VUcmFuc2xhdGlvbnM7XHJcbiAgICAgICAgbGV0IGJsID0gQmFzZUxvY2FsaXphdGlvbjtcclxuXHJcbiAgICAgICAgYmwuc2V0KGJ0LCBcImVuLT5pdFwiLCBcIlJlbW92ZVwiLCBbXCJFbGltaW5hXCJdKTtcclxuICAgICAgICBibC5zZXQoYnQsIFwiZW4tPml0XCIsIFwiUGFnaW5nXCIsIFtcIlBhZ2luYXppb25lXCJdKTtcclxuICAgICAgICBibC5zZXQoYnQsIFwiZW4tPml0XCIsIFwiWWVzXCIsIFtcIlNpXCJdKTtcclxuICAgICAgICBibC5zZXQoYnQsIFwiZW4tPml0XCIsIFwiTm9cIiwgW1wiTm9cIl0pO1xyXG4gICAgICAgIGJsLnNldChidCwgXCJlbi0+aXRcIiwgXCJZRVNcIiwgW1wiU0knXCJdKTtcclxuICAgICAgICBibC5zZXQoYnQsIFwiZW4tPml0XCIsIFwiTk9cIiwgW1wiTk9cIl0pO1xyXG4gICAgICAgIGJsLnNldChidCwgXCJlbi0+aXRcIiwgXCJGb3VuZCBvYmplY3RzXCIsIFtcIlJpc3VsdGF0aSB0cm92YXRpXCJdKTtcclxuICAgICAgICBibC5zZXQoYnQsIFwiZW4tPml0XCIsIFwiTG9hZGluZyBkYXRhLi4uXCIsIFtcIkNhcmljbyBpIGRhdGkuLi5cIl0pO1xyXG4gICAgICAgIGJsLnNldChidCwgXCJlbi0+aXRcIiwgXCJFcnJvciBkdXJpbmcgc2F2ZSBvcGVyYXRpb25zXCIsIFtcIkVycm9yaSBkdXJhbnRlIGlsIHNhbHZhdGFnZ2lvXCJdKTtcclxuICAgICAgICBibC5zZXQoYnQsIFwiZW4tPml0XCIsIFwiRXJyb3JcIiwgW1wiRXJyb3JlXCJdKTtcclxuICAgICAgICBibC5zZXQoYnQsIFwiZW4tPml0XCIsIFwiV2FybmluZ1wiLCBbXCJBdnZpc29cIl0pO1xyXG4gICAgICAgIGJsLnNldChidCwgXCJlbi0+aXRcIiwgXCJJbmZvcm1hdGlvblwiLCBbXCJJbmZvcm1hemlvbmVcIl0pO1xyXG4gICAgICAgIGJsLnNldChidCwgXCJlbi0+aXRcIiwgXCJTYXZlXCIsIFtcIlNhbHZhXCJdKTtcclxuICAgICAgICBibC5zZXQoYnQsIFwiZW4tPml0XCIsIFwiQmFja1wiLCBbXCJJbmRpZXRyb1wiXSk7XHJcbiAgICAgICAgYmwuc2V0KGJ0LCBcImVuLT5pdFwiLCBcIkZyb21cIiwgW1wiRGFcIl0pO1xyXG4gICAgICAgIGJsLnNldChidCwgXCJlbi0+aXRcIiwgXCJUb1wiLCBbXCJBXCJdKTtcclxuICAgICAgICBibC5zZXQoYnQsIFwiZW4tPml0XCIsIFwiVmlldyBDaGFydFwiLCBbXCJWZWRpIEdyYWZpY29cIl0pO1xyXG4gICAgICAgIGJsLnNldChidCwgXCJlbi0+aXRcIiwgXCJWaWV3IFRhYmxlXCIsIFtcIlZlZGkgVGFiZWxsYVwiXSk7XHJcbiAgICAgICAgYmwuc2V0KGJ0LCBcImVuLT5pdFwiLCBcIk5vdGVzXCIsIFtcIk5vdGVcIl0pO1xyXG4gICAgICAgIGJsLnNldChidCwgXCJlbi0+aXRcIiwgXCJFZGl0IE5vdGVzXCIsIFtcIk1vZGlmaWNhIE5vdGVcIl0pO1xyXG4gICAgICAgIGJsLnNldChidCwgXCJlbi0+aXRcIiwgXCJDYW5jZWxcIiwgW1wiQW5udWxsYVwiXSk7XHJcbiAgICAgICAgYmwuc2V0KGJ0LCBcImVuLT5pdFwiLCBcIkNvbmZpcm1cIiwgW1wiQ29uZmVybWFcIl0pO1xyXG4gICAgICAgIGJsLnNldChidCwgXCJlbi0+aXRcIiwgXCJWaWV3XCIsIFtcIlZpc3VhbGl6emFcIl0pO1xyXG4gICAgICAgIGJsLnNldChidCwgXCJlbi0+aXRcIiwgXCJDbG9zZVwiLCBbXCJDaGl1ZGlcIl0pO1xyXG4gICAgICAgIGJsLnNldChidCwgXCJlbi0+aXRcIiwgXCJTZWxlY3RcIiwgW1wiU2VsZXppb25hXCJdKTtcclxuICAgICAgICBibC5zZXQoYnQsIFwiZW4tPml0XCIsIFwiTWV0ZXIgUmVhZGluZyByZWdpc3RlcmVkIHN1Y2Nlc3NmdWxseVwiLCBbXCJMZXR0dXJhIHJlZ2lzdHJhdGEgY29ycmV0dGFtZW50ZVwiXSk7XHJcbiAgICAgICAgYmwuc2V0KGJ0LCBcImVuLT5pdFwiLCBcIlZhbGlkYXRpb24gZXJyb3JzIGR1cmluZyBzYXZlIG9wZXJhdGlvbnNcIiwgW1wiRXJyb3JpIGRpIHZhbGlkYXppb25lIGR1cmFudGUgaWwgc2FsdmF0YWdnaW9cIl0pO1xyXG4gICAgICAgIGJsLnNldChidCwgXCJlbi0+aXRcIiwgXCJDYW4ndCByZWdpc3RlciByZWFkaW5nXCIsIFtcIkltcG9zc2liaWxlIHJlZ2lzdHJhcmUgbGEgbGV0dHVyYVwiXSk7XHJcbiAgICAgICAgYmwuc2V0KGJ0LCBcImVuLT5pdFwiLCBcIkVsZWN0cmljaXR5XCIsIFtcIkVsZXR0cmljaXRhXCJdKTtcclxuICAgICAgICBibC5zZXQoYnQsIFwiZW4tPml0XCIsIFwiR2FzXCIsIFtcIkdhc1wiXSk7XHJcbiAgICAgICAgYmwuc2V0KGJ0LCBcImVuLT5pdFwiLCBcIldhdGVyXCIsIFtcIkFjcXVhXCJdKTtcclxuICAgICAgICBibC5zZXQoYnQsIFwiZW4tPml0XCIsIFwiRGVsZXRlXCIsIFtcIkVsaW1pbmFcIl0pO1xyXG4gICAgICAgIGJsLnNldChidCwgXCJlbi0+aXRcIiwgXCJUaGlzIG9wZXJhdGlvbiBjYW5ub3QgYmUgcmV2ZXJ0ZWRcIiwgW1wiUXVlc3RhIG9wZXJhemlvbmUgbm9uIHB1bycgZXNzZXJlIGFubnVsbGF0YVwiXSk7XHJcbiAgICAgICAgYmwuc2V0KGJ0LCBcImVuLT5pdFwiLCBcIkhpZGVcIiwgW1wiTmFzY29uZGlcIl0pO1xyXG5cclxuICAgICAgICAvLyBIZWxwZXIgdmFsaWRhemlvbmVcclxuICAgICAgICBibC5zZXQoYnQsIFwiZW4tPml0XCIsIFwiUmVxdWlyZWQgZmllbGRcIiwgW1wiQ2FtcG8gcmljaGllc3RvXCJdKTtcclxuICAgICAgICBibC5zZXQoYnQsIFwiZW4tPml0XCIsIFwiV3JvbmcgZmllbGQgZm9ybWF0XCIsIFtcIkZvcm1hdG8gY2FtcG8gZXJyYXRvXCJdKTtcclxuICAgICAgICBibC5zZXQoYnQsIFwiZW4tPml0XCIsIFwiV3JvbmcgZmllbGQgZm9ybWF0IG9yIGZpZWxkIG1pc3NpbmdcIiwgW1wiRm9ybWF0byBjYW1wbyBlcnJhdG8gbyBjYW1wbyBtYW5jYW50ZVwiXSk7XHJcbiAgICAgICAgYmwuc2V0KGJ0LCBcImVuLT5pdFwiLCBcIllvdSBkb24ndCBoYXZlIHRoZSByZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB2aWV3IHRoaXMgcGFnZS4gVGhlIG5hdmlnYXRpb24gaGFzIGJlZW4gYmxvY2tlZFwiLCBbXCJOb24gc2kgaGFubm8gcHJpdmlsZWdpIGEgc3VmZmljaWVuemEgcGVyIGFjY2VkZXJlIGEgcXVlc3RhIHBhZ2luYS4gTGEgbmF2aWdhemlvbmUgZScgc3RhdGEgYmxvY2NhdGFcIl0pO1xyXG5cclxuICAgICAgICAvLyBJbmZvcm1hemlvbmkgc3VsbGUgZGF0ZVxyXG4gICAgICAgIGJsLnNldFRva2VuKGJ0LCBcImVuLT5pdFwiLCBcImdldERhdGVNb250aFBvc2l0aW9uXCIsIFwiMFwiLCBbXCIxXCJdKTtcclxuICAgICAgICBibC5zZXRUb2tlbihidCwgXCJlbi0+aXRcIiwgXCJnZXREaXNwbGF5RGF0ZU1vbnRoUG9zaXRpb25cIiwgXCIxXCIsIFtcIjFcIl0pO1xyXG4gICAgICAgIGJsLnNldFRva2VuKGJ0LCBcImVuLT5pdFwiLCBcImdldExvY2FsZVwiLCBcImVuLVVTXCIsIFtcIml0LUlUXCJdKTtcclxuICAgICAgICBibC5zZXRUb2tlbihidCwgXCJlbi0+aXRcIiwgXCJnZXRTbWFsbERhdGVGb3JtYXRcIiwgXCJNTS9ERC9ZWVlZXCIsIFtcIkREL01NL1lZWVlcIl0pO1xyXG4gICAgICAgIGJsLnNldFRva2VuKGJ0LCBcImVuLT5pdFwiLCBcImdldERlZmF1bHREYXRlRm9ybWF0XCIsIFwiTU0vREQvWVlZWVwiLCBbXCJNTS9ERC9ZWVlZXCJdKTtcclxuICAgICAgICBibC5zZXRUb2tlbihidCwgXCJlbi0+aXRcIiwgXCJnZXRTbWFsbERhdGVEaXNwbGF5Rm9ybWF0XCIsIFwiREQvTU0vWVlZWVwiLCBbXCJERC9NTS9ZWVlZXCJdKTtcclxuICAgICAgICBibC5zZXRUb2tlbihidCwgXCJlbi0+aXRcIiwgXCJnZXRGdWxsRGF0ZUZvcm1hdFwiLCBcIk1NL0REL1lZWVkgSEg6bW06c3NcIiwgW1wiREQvTU0vWVlZWSBISDptbTpzc1wiXSk7XHJcbiAgICAgICAgYmwuc2V0VG9rZW4oYnQsIFwiZW4tPml0XCIsIFwiZ2V0RnVsbERhdGVEaXNwbGF5Rm9ybWF0XCIsIFwiREQvTU0vWVlZWSBISDptbTpzc1wiLCBbXCJERC9NTS9ZWVlZIEhIOm1tOnNzXCJdKTtcclxuICAgICAgICBibC5zZXRUb2tlbihidCwgXCJlbi0+aXRcIiwgXCJnZXRGdWxsRGF0ZUZvcm1hdE5vU2Vjb25kc1wiLCBcIk1NL0REL1lZWVkgSEg6bW1cIiwgW1wiREQvTU0vWVlZWSBISDptbVwiXSk7XHJcbiAgICAgICAgYmwuc2V0VG9rZW4oYnQsIFwiZW4tPml0XCIsIFwiZ2V0RnVsbERhdGVEaXNwbGF5Rm9ybWF0Tm9TZWNvbmRzXCIsIFwiREQvTU0vWVlZWSBISDptbVwiLCBbXCJERC9NTS9ZWVlZIEhIOm1tXCJdKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEltcG9zdGEgbGEgbG9jYWxpenphemlvbmUgZGkgdW4gdG9rZW4gYWxsJ2ludGVybm8gZGVsbGEgY2FjaGUgc2NlbHRhXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7eyBbaWQ6IHN0cmluZ106IEl0ZW1Mb2NhbGl6YXRpb24gfX0gbG9jQ2FjaGUgQ2FjaGUgYWxsJ2ludGVybm8gZGVsbGEgcXVhbGUgaW5zZXJpcmUgbCdpbmZvcm1hemlvbmUgZGVsIHRva2VuIGNvbiBsZSBsb2NhbGl6emF6aW9uaVxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGRpcmVjdGlvbiBEaXJlemlvbmUgZGVsbGEgdHJhZHV6aW9uZSwgcmFwcHJlc2VudGEgbGEgbGluZ3VhIGJhc2UgaW4gY3VpIGFzcGV0dGFyc2kgaWwgdGVzdG8gZSBsZSB2YXJpZSBsaW5ndWUgaW4gY3VpIHZpZW5lIHRyYWRvdHRhLlxyXG4gICAgICogQWQgZXNlbXBpbywgXCJlbi0+aXRcIiBpbmRpY2EgY2hlIGlsIHBhcmFtZXRybyAqKmxlZnQqKiDDqCB2YWxpZG8gcGVyIGxlIGxvY2FsaXp6YXppb25pIGluIGluZ2xlc2UsIG1lbnRyZSBuZWxsJ2VsZW1lbnRvIDAgZGVsIHBhcmFtZXRybyAqKnJpZ2h0KiogXHJcbiAgICAgKiDDqCBwcmVzZW50ZSBsJ3VuaWNhIHRyYWR1emlvbmUgaW4gaXRhbGlhbm8sIHBlciBkZWZpbmlyZSBwacO5IHRyYWR1emlvbmkgc3VsIGxhdG8gZGVzdHJvIGRlbGxhIGZyZWNjaWEgYmlzb2duYSBjb25jYXRlbmFybGUgY29uIGxhIHZpcmdvbGEsIGFkIGVzZW1waW8gXCJlbi0+aXQsanAsZWNjXCJcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0b2tlbiBOb21lIGRlbCB0b2tlblxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGxlZnQgVmFsb3JlIGRlbCB0b2tlbiBwZXIgbGEgbGluZ3VhIHNwZWNpZmljYXRhIG5lbCBsYXRvIGltbWVkaWF0YW1lbnRlIHNpbmlzdHJvIGFsbGEgZnJlY2NpYSBkZWwgcGFyYW1ldHJvICoqZGlyZWN0aW9uKipcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSByaWdodCBBcnJheSBjb24gaSB2YWxvcmkgZmFjZW50aSByaWZlcmltZW50byBhbGwnTi1lc2ltYSBsaW5ndWEgZGVsIGxhdG8gZGVzdHJvIGRlbCBwYXJhbWV0cm8gKipkaXJlY3Rpb24qKlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc3RhdGljIHNldFRva2VuKGxvY0NhY2hlOiB7IFtpZDogc3RyaW5nXTogSXRlbUxvY2FsaXphdGlvbiB9LCBkaXJlY3Rpb246IHN0cmluZywgdG9rZW46IHN0cmluZywgbGVmdDogc3RyaW5nLCByaWdodDogc3RyaW5nW10pIHtcclxuICAgICAgICBsZXQgcGFyc2luZ1JlZ2V4ID0gLyhbYS16QS1aXSspW1xcc10qLT5bXFxzXSooW2EtekEtWixcXHNdKykrL2c7XHJcbiAgICAgICAgdmFyIHBhcnNpbmdSZXMgPSBwYXJzaW5nUmVnZXguZXhlYyhkaXJlY3Rpb24pO1xyXG5cclxuICAgICAgICBsZXQgZnJvbSA9IHBhcnNpbmdSZXNbMV07XHJcbiAgICAgICAgbGV0IHRvOiBzdHJpbmdbXSA9IHBhcnNpbmdSZXNbMl0ucmVwbGFjZSgvXFxzL2csICcnKS5zcGxpdCgnLCcpO1xyXG4gICAgICAgIGxldCBsb2NhbGVGcm9tID0gTG9jYWxlRGVmaW5pdGlvbnMuZ2V0QnlBbGlhcyhmcm9tKTtcclxuICAgICAgICBCYXNlTG9jYWxpemF0aW9uLl9zZXQobG9jQ2FjaGUsIHRva2VuLCBsb2NhbGVGcm9tLmlkLCBsZWZ0LCB0cnVlKTtcclxuXHJcbiAgICAgICAgdG8uZm9yRWFjaCgodCwgaW5kZXgpID0+IHtcclxuICAgICAgICAgICAgbGV0IGxvY2FsZVRvID0gTG9jYWxlRGVmaW5pdGlvbnMuZ2V0QnlBbGlhcyh0KTtcclxuICAgICAgICAgICAgQmFzZUxvY2FsaXphdGlvbi5fc2V0KGxvY0NhY2hlLCB0b2tlbiwgbG9jYWxlVG8uaWQsIHJpZ2h0W2luZGV4XSwgdHJ1ZSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbXBvc3RhIGxhIGxvY2FsaXp6YXppb25lIGRpIHVuYSBmcmFzZSBhbGwnaW50ZXJubyBkZWxsYSBjYWNoZSBzY2VsdGFcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHt7IFtpZDogc3RyaW5nXTogSXRlbUxvY2FsaXphdGlvbiB9fSBsb2NDYWNoZSBDYWNoZSBhbGwnaW50ZXJubyBkZWxsYSBxdWFsZSBpbnNlcmlyZSBsJ2luZm9ybWF6aW9uZSBkZWxsYSBmcmFzZSBjb24gbGUgbG9jYWxpenphemlvbmlcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBkaXJlY3Rpb24gRGlyZXppb25lIGRlbGxhIHRyYWR1emlvbmUsIHJhcHByZXNlbnRhIGxhIGxpbmd1YSBiYXNlIGluIGN1aSBhc3BldHRhcnNpIGlsIHRlc3RvIGUgbGUgdmFyaWUgbGluZ3VlIGluIGN1aSB2aWVuZSB0cmFkb3R0YS5cclxuICAgICAqIEFkIGVzZW1waW8sIFwiZW4tPml0XCIgaW5kaWNhIGNoZSBpbCBwYXJhbWV0cm8gKipsZWZ0Kiogw6ggdmFsaWRvIHBlciBsZSBsb2NhbGl6emF6aW9uaSBpbiBpbmdsZXNlLCBtZW50cmUgbmVsbCdlbGVtZW50byAwIGRlbCBwYXJhbWV0cm8gKipyaWdodCoqIFxyXG4gICAgICogw6ggcHJlc2VudGUgbCd1bmljYSB0cmFkdXppb25lIGluIGl0YWxpYW5vLCBwZXIgZGVmaW5pcmUgcGnDuSB0cmFkdXppb25pIHN1bCBsYXRvIGRlc3RybyBkZWxsYSBmcmVjY2lhIGJpc29nbmEgY29uY2F0ZW5hcmxlIGNvbiBsYSB2aXJnb2xhLCBhZCBlc2VtcGlvIFwiZW4tPml0LGpwLGVjY1wiXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbGVmdCBWYWxvcmUgZGVsbGEgZnJhc2UgcGVyIGxhIGxpbmd1YSBzcGVjaWZpY2F0YSBuZWwgbGF0byBpbW1lZGlhdGFtZW50ZSBzaW5pc3RybyBhbGxhIGZyZWNjaWEgZGVsIHBhcmFtZXRybyAqKmRpcmVjdGlvbioqXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gcmlnaHQgQXJyYXkgY29uIGkgdmFsb3JpIGZhY2VudGkgcmlmZXJpbWVudG8gYWxsJ04tZXNpbWEgbGluZ3VhIGRlbCBsYXRvIGRlc3RybyBkZWwgcGFyYW1ldHJvICoqZGlyZWN0aW9uKipcclxuICAgICAqL1xyXG4gICAgcHVibGljIHN0YXRpYyBzZXQobG9jQ2FjaGU6IHsgW2lkOiBzdHJpbmddOiBJdGVtTG9jYWxpemF0aW9uIH0sIGRpcmVjdGlvbjogc3RyaW5nLCBsZWZ0OiBzdHJpbmcsIHJpZ2h0OiBzdHJpbmdbXSkge1xyXG4gICAgICAgIGxldCBwYXJzaW5nUmVnZXggPSAvKFthLXpBLVpdKylbXFxzXSotPltcXHNdKihbYS16QS1aLFxcc10rKSsvZztcclxuICAgICAgICB2YXIgcGFyc2luZ1JlcyA9IHBhcnNpbmdSZWdleC5leGVjKGRpcmVjdGlvbik7XHJcblxyXG4gICAgICAgIGxldCBmcm9tID0gcGFyc2luZ1Jlc1sxXTtcclxuICAgICAgICBsZXQgdG86IHN0cmluZ1tdID0gcGFyc2luZ1Jlc1syXS5yZXBsYWNlKC9cXHMvZywgJycpLnNwbGl0KCcsJyk7XHJcbiAgICAgICAgbGV0IGxvY2FsZUZyb20gPSBMb2NhbGVEZWZpbml0aW9ucy5nZXRCeUFsaWFzKGZyb20pO1xyXG4gICAgICAgIEJhc2VMb2NhbGl6YXRpb24uX3NldChsb2NDYWNoZSwgbGVmdCwgbG9jYWxlRnJvbS5pZCwgbGVmdCk7XHJcblxyXG4gICAgICAgIHRvLmZvckVhY2goKHQsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBsb2NhbGVUbyA9IExvY2FsZURlZmluaXRpb25zLmdldEJ5QWxpYXModCk7XHJcbiAgICAgICAgICAgIEJhc2VMb2NhbGl6YXRpb24uX3NldChsb2NDYWNoZSwgbGVmdCwgbG9jYWxlVG8uaWQsIHJpZ2h0W2luZGV4XSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbXBvc3RhIGFsbCdpbnRlcm5vIGRlbGxhIGNhY2hlIHNwZWNpZmljYXRhIHVuJ3VuaWNhIHRyYWR1emlvbmUgcGFydGVuZG8gZGEgdW4gdGVzdG8gZGkgYmFzZVxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge3sgW2lkOiBzdHJpbmddOiBJdGVtTG9jYWxpemF0aW9uIH19IGxvY0NhY2hlIENhY2hlIGFsbCdpbnRlcm5vIGRlbGxhIHF1YWxlIGluc2VyaXJlIGwnaW5mb3JtYXppb25lIGRlbCB0ZXN0byBjb24gbGUgbG9jYWxpenphemlvbmlcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IFRlc3RvIGRhIHRyYWR1cnJlXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gY3VsdHVyZSBMaW5ndWEgcGVyIGN1aSBpbnNlcmlyZSBsYSB0cmFkdXppb25lXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdHJhbnNsYXRpb24gVHJhZHV6aW9uZSBkZWwgKip0ZXh0KiogbmVsbGEgbGluZ3VhIHNwZWNpZmljYXRhIGRhICoqY3VsdHVyZSoqXHJcbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IHRva2VuIEluZGljYSBzZSBpbCAqKnRleHQqKiDDqCB1biB0b2tlbiBvIMOoIHVuYSBmcmFzZSBub3JtYWxlXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgc3RhdGljIF9zZXQobG9jQ2FjaGU6IHsgW2lkOiBzdHJpbmddOiBJdGVtTG9jYWxpemF0aW9uIH0sIHRleHQ6IHN0cmluZywgY3VsdHVyZTogc3RyaW5nLCB0cmFuc2xhdGlvbjogc3RyaW5nLCB0b2tlbj86IGJvb2xlYW4pIHtcclxuICAgICAgICBsZXQgaXRlbSA9IEJhc2VMb2NhbGl6YXRpb24uZmluZEJ5VGV4dChsb2NDYWNoZSwgdGV4dCwgdG9rZW4pO1xyXG4gICAgICAgIGlmICghaXRlbSkge1xyXG4gICAgICAgICAgICBsb2NDYWNoZVt0ZXh0XSA9IG5ldyBJdGVtTG9jYWxpemF0aW9uKHRva2VuLCB0ZXh0LCBbbmV3IFNwZWNpYWxpemVkTG9jYWxpemF0aW9uKGN1bHR1cmUsIHRyYW5zbGF0aW9uKV0pO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB2YXIgdHJzID0gQmFzZUxvY2FsaXphdGlvbi50cmFuc2xhdGlvbkJ5Q3VsdHVyZShpdGVtLCBjdWx0dXJlKTtcclxuICAgICAgICBpZiAodHJzKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihcIkxvY2FsaXphdGlvbiBhbHJlYWR5IGxvYWRlZCBmb3Igc2VudGVuY2UgJ1wiICsgdGV4dCArIFwiJyBhbmQgY3VsdHVyZSBcIiArIGN1bHR1cmUpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpdGVtLnRyYW5zbGF0aW9ucy5wdXNoKG5ldyBTcGVjaWFsaXplZExvY2FsaXphdGlvbihjdWx0dXJlLCB0cmFuc2xhdGlvbikpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUGFydGVuZG8gZGEgdW5hIGNhY2hlIGRpIGxvY2FsaXp6YXppb25lLCBkYXRvIHVuIHRlc3RvIGNoZSBwdcOyIGVzc2VyZSBvIG1lbm8gdW4gdG9rZW4sIGNlcmNhIHF1ZWxsJ2VsZW1lbnRvIGFsbCdpbnRlcm5vIGRlbGxhIGNhY2hlXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7eyBbaWQ6IHN0cmluZ106IEl0ZW1Mb2NhbGl6YXRpb24gfX0gbG9jQ2FjaGUgQ2FjaGUgYWxsJ2ludGVybm8gZGVsIHF1YWxlIGNlcmNhcmUgaWwgKip0ZXh0KipcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IFRlc3RvIGRhIGNlcmNhcmUgbmVsbGEgKipsb2NDYWNoZSoqXHJcbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGFsbG93dG9rZW5zIEluZGljYSBzZSBsJ2VsZW1lbnRvIGNlcmNhdG8gcHXDsiBlc3NlcmUgdW4gdG9rZW4gbyBzZSBkZXYnZXNzZXJlIHBlciBmb3J6YSB1bmEgZnJhc2UgKHBlciBldml0YXJlIHJhcmkgXHJcbiAgICAgKiBjYXNpIGRpIGNvbGxpc2lvbmUgaW4gY3VpIG1hZ2FyaSB1biB0b2tlbiDDqCB1Z3VhbGUgYSB1bmEgZnJhc2UgdHJhZG90dGEpXHJcbiAgICAgKiBcclxuICAgICAqIEByZXR1cm5zIHtJdGVtTG9jYWxpemF0aW9ufSBJbmZvcm1hemlvbmkgZGkgbG9jYWxpenphemlvbmUgcGVyIGlsICoqdGV4dCoqIGNlcmNhdG9cclxuICAgICAqL1xyXG4gICAgcHVibGljIHN0YXRpYyBmaW5kQnlUZXh0KGxvY0NhY2hlOiB7IFtpZDogc3RyaW5nXTogSXRlbUxvY2FsaXphdGlvbiB9LCB0ZXh0OiBzdHJpbmcsIGFsbG93dG9rZW5zOiBib29sZWFuKTogSXRlbUxvY2FsaXphdGlvbiB7XHJcbiAgICAgICAgbGV0IHBvc3NpYmxlSXRlbTogSXRlbUxvY2FsaXphdGlvbiA9IGxvY0NhY2hlW3RleHRdO1xyXG4gICAgICAgIGlmICghcG9zc2libGVJdGVtKVxyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuXHJcbiAgICAgICAgdmFyIGl0ZW0gPSBhbGxvd3Rva2VucyB8fCAhcG9zc2libGVJdGVtLnRva2VuID8gcG9zc2libGVJdGVtIDogbnVsbDtcclxuICAgICAgICByZXR1cm4gaXRlbTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIERhdGUgbGUgaW5mb3JtYXppb25pIGRpIGxvY2FsaXp6YXppb25lIHBlciB1biB0ZXN0byBjZXJjYSBlIHJlc3RpdHVpc2NlIGxhIHRyYWR1emlvbmUgcGVyIHVuYSBsaW5ndWEgc3BlY2lmaWNhXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7SXRlbUxvY2FsaXphdGlvbn0gSW5mb3JtYXppb25pIGRpIGxvY2FsaXp6YXppb25lXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gY3VsdHVyZSBMaW5ndWEgZGVsbGEgdHJhZHV6aW9uZSByaWNoaWVzdGFcclxuICAgICAqIFxyXG4gICAgICogQHJldHVybnMge1NwZWNpYWxpemVkTG9jYWxpemF0aW9ufSBJbmZvcm1hemlvbmkgZGkgbG9jYWxpenphemlvbmUgc3BlY2lmaWNoZSBkZWxsYSBsaW5ndWEgcmljaGllc3RhXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgdHJhbnNsYXRpb25CeUN1bHR1cmUoaXRlbTogSXRlbUxvY2FsaXphdGlvbiwgY3VsdHVyZTogc3RyaW5nKTogU3BlY2lhbGl6ZWRMb2NhbGl6YXRpb24ge1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaXRlbS50cmFuc2xhdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgbGV0IHRybCA9IGl0ZW0udHJhbnNsYXRpb25zW2ldO1xyXG4gICAgICAgICAgICBpZiAodHJsLmN1bHR1cmUgPT0gY3VsdHVyZSlcclxuICAgICAgICAgICAgICAgIHJldHVybiB0cmw7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxufSJdfQ==
|
|
99
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxpemF0aW9uLmJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9sb2NhbGl6YXRpb25zL3NyYy9saWIvY29yZS9sb2NhbGl6YXRpb24uYmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDakUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDbEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxXQUFXLENBQUM7Ozs7QUFFdkM7OztHQUdHO0FBRUgsTUFBTSxPQUFPLGdCQUFnQjtJQWlCekI7O09BRUc7SUFDSCxZQUFtQixlQUFnQyxFQUFzQixhQUFxQjtRQUEzRSxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFsQm5EOztXQUVHO1FBQ0ksYUFBUSxHQUF1QyxFQUFFLENBQUM7UUFPekQ7O1dBRUc7UUFDSSxXQUFNLEdBQTBCLElBQUksYUFBYSxDQUFTLENBQUMsQ0FBQyxDQUFDO1FBT2hFLG9IQUFvSDtRQUNwSCxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBTSxDQUFDLEVBQUMsRUFBRTtZQUM3RCxJQUFJLENBQUMsQ0FBQyxFQUFFO2dCQUNKLENBQUMsR0FBRyxhQUFhLENBQUM7Z0JBQ2xCLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO2FBQy9DO1lBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDdkIsQ0FBQyxDQUFBLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFMUQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFDcEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7UUFDeEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDM0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDM0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLGVBQWUsRUFBRSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQztRQUNyRSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUM7UUFDdEUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLDhCQUE4QixFQUFFLENBQUMsK0JBQStCLENBQUMsQ0FBQyxDQUFDO1FBQ2hHLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBQ2xELElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBQ3BELElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxhQUFhLEVBQUUsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO1FBQzlELElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQ2hELElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBQ25ELElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQzdDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxZQUFZLEVBQUUsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO1FBQzdELElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxZQUFZLEVBQUUsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO1FBQzdELElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQ2hELElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxZQUFZLEVBQUUsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDO1FBQzlELElBQUks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ZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEl0ZW1Mb2NhbGl6YXRpb24gfSBmcm9tIFwiLi4vbW9kZWxzXCI7XHJcbmltcG9ydCB7IExvY2FsaXphdGlvblBlcnNpc3RvciB9IGZyb20gXCIuL2xvY2FsaXphdGlvbi5wZXJzaXN0b3JcIjtcclxuaW1wb3J0IHsgQmFzZUxvY2FsaXphdGlvblRva2VucyB9IGZyb20gXCIuLi9tb2RlbHMvY2xhc3Nlcy9CYXNlTG9jYWxpemF0aW9uVG9rZW5zXCI7XHJcbmltcG9ydCB7IExvY2FsZVBlcnNpc3RvciB9IGZyb20gXCIuLi9sb2NhbGUtcGVyc2lzdG9yL0xvY2FsZVBlcnNpc3RvclwiO1xyXG5pbXBvcnQgeyB0YWtlIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XHJcbmltcG9ydCB7IFJlcGxheVN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBMT0NfTE9DQUxFIH0gZnJvbSBcIi4uL3Rva2Vuc1wiO1xyXG5cclxuLyoqXHJcbiAqIENsYXNzZSBzaW5nbGV0b24gY2hlIGNvbnRpZW5lIGxlIHRyYWR1emlvbmkgZGkgYmFzZSAocGVyIGV2aXRhcmUgZGkgcmlwZXRlcmxlIGluIG9nZ2kgY2xhc3NlIGRpIHRyYWR1emlvbmUpIGUgbGUgZnVuemlvbmkgYmFzZSBwZXIgXHJcbiAqIGluc2VyaXJlIGUgbGVnZ2VyZSB0cmFkdXppb25pIGluL2RhIHVuYSBjYWNoZVxyXG4gKi9cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuZXhwb3J0IGNsYXNzIEJhc2VMb2NhbGl6YXRpb24ge1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2FjaGUgZGkgdHV0dGUgbGUgbG9jYWxpenphemlvbmkgZGkgYmFzZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgTG9jQ2FjaGU6IHsgW2lkOiBzdHJpbmddOiBJdGVtTG9jYWxpemF0aW9uIH0gPSB7fTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFBlcnNpc3RvciBkZWxsZSBsb2NhbGl6emF6aW9uaSByZWxhdGl2byBhIHF1ZXN0YSBjbGFzc2VcclxuICAgICAqL1xyXG4gICAgcHVibGljIFBlcnNpc3RvcjogTG9jYWxpemF0aW9uUGVyc2lzdG9yO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogTG9jYWxlIGRpIHJpZmVyaW1lbnRvIHBlciB0dXR0ZSBsZSB0cmFkdXppb25pXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBMb2NhbGU6IFJlcGxheVN1YmplY3Q8c3RyaW5nPiA9IG5ldyBSZXBsYXlTdWJqZWN0PHN0cmluZz4oMSk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDb3N0cnV0dG9yZS4gRGEgcXVpIHV0aWxpenphbmRvIGlsIG1ldG9kbyBzdGF0aWNvICoqQmFzZUxvY2FsaXphdGlvbi5zZXQqKiBzaSB2YSBhIHBvcG9sYXJlIGxhIGNhY2hlIGRlbGxlIHRyYWR1emlvbmkgKipCYXNlVHJhbnNsYXRpb25zKipcclxuICAgICAqL1xyXG4gICAgY29uc3RydWN0b3IocHVibGljIExvY2FsZVBlcnNpc3RvcjogTG9jYWxlUGVyc2lzdG9yLCBASW5qZWN0KExPQ19MT0NBTEUpIGRlZmF1bHRMb2NhbGU6IHN0cmluZykge1xyXG5cclxuICAgICAgICAvLyBSZWN1cGVybyBpbCBsb2NhbGUgYWxsYSBwYXJ0ZW56YSBkZWwgQmFzZUxvY2FsaXphdGlvbiBpbiBtb2RvLCBzcGVybyBkaSBkYXJlIHRlbXBvIGFsbCdhcHBsaWNhemlvbmUgZGkgdGlyYXJsbyBzdVxyXG4gICAgICAgIHRoaXMuTG9jYWxlUGVyc2lzdG9yLnJlY292ZXIoKS5waXBlKHRha2UoMSkpLnN1YnNjcmliZShhc3luYyBsID0+IHtcclxuICAgICAgICAgICAgaWYgKCFsKSB7XHJcbiAgICAgICAgICAgICAgICBsID0gZGVmYXVsdExvY2FsZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuTG9jYWxlUGVyc2lzdG9yLnBlcnNpc3QoZGVmYXVsdExvY2FsZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5Mb2NhbGUubmV4dChsKVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLlBlcnNpc3RvciA9IG5ldyBMb2NhbGl6YXRpb25QZXJzaXN0b3IodGhpcy5Mb2NDYWNoZSk7IFxyXG5cclxuICAgICAgICB0aGlzLlBlcnNpc3Rvci5zZXQoXCJlbi0+aXRcIiwgXCJSZW1vdmVcIiwgW1wiRWxpbWluYVwiXSk7XHJcbiAgICAgICAgdGhpcy5QZXJzaXN0b3Iuc2V0KFwiZW4tPml0XCIsIFwiUGFnaW5nXCIsIFtcIlBhZ2luYXppb25lXCJdKTtcclxuICAgICAgICB0aGlzLlBlcnNpc3Rvci5zZXQoXCJlbi0+aXRcIiwgXCJZZXNcIiwgW1wiU2lcIl0pO1xyXG4gICAgICAgIHRoaXMuUGVyc2lzdG9yLnNldChcImVuLT5pdFwiLCBcIk5vXCIsIFtcIk5vXCJdKTtcclxuICAgICAgICB0aGlzLlBlcnNpc3Rvci5zZXQoXCJlbi0+aXRcIiwgXCJZRVNcIiwgW1wiU0knXCJdKTtcclxuICAgICAgICB0aGlzLlBlcnNpc3Rvci5zZXQoXCJlbi0+aXRcIiwgXCJOT1wiLCBbXCJOT1wiXSk7XHJcbiAgICAgICAgdGhpcy5QZXJzaXN0b3Iuc2V0KFwiZW4tPml0XCIsIFwiRm91bmQgb2JqZWN0c1wiLCBbXCJSaXN1bHRhdGkgdHJvdmF0aVwiXSk7XHJcbiAgICAgICAgdGhpcy5QZXJzaXN0b3Iuc2V0KFwiZW4tPml0XCIsIFwiTG9hZGluZyBkYXRhLi4uXCIsIFtcIkNhcmljbyBpIGRhdGkuLi5cIl0pO1xyXG4gICAgICAgIHRoaXMuUGVyc2lzdG9yLnNldChcImVuLT5pdFwiLCBcIkVycm9yIGR1cmluZyBzYXZlIG9wZXJhdGlvbnNcIiwgW1wiRXJyb3JpIGR1cmFudGUgaWwgc2FsdmF0YWdnaW9cIl0pO1xyXG4gICAgICAgIHRoaXMuUGVyc2lzdG9yLnNldChcImVuLT5pdFwiLCBcIkVycm9yXCIsIFtcIkVycm9yZVwiXSk7XHJcbiAgICAgICAgdGhpcy5QZXJzaXN0b3Iuc2V0KFwiZW4tPml0XCIsIFwiV2FybmluZ1wiLCBbXCJBdnZpc29cIl0pO1xyXG4gICAgICAgIHRoaXMuUGVyc2lzdG9yLnNldChcImVuLT5pdFwiLCBcIkluZm9ybWF0aW9uXCIsIFtcIkluZm9ybWF6aW9uZVwiXSk7XHJcbiAgICAgICAgdGhpcy5QZXJzaXN0b3Iuc2V0KFwiZW4tPml0XCIsIFwiU2F2ZVwiLCBbXCJTYWx2YVwiXSk7XHJcbiAgICAgICAgdGhpcy5QZXJzaXN0b3Iuc2V0KFwiZW4tPml0XCIsIFwiQmFja1wiLCBbXCJJbmRpZXRyb1wiXSk7XHJcbiAgICAgICAgdGhpcy5QZXJzaXN0b3Iuc2V0KFwiZW4tPml0XCIsIFwiRnJvbVwiLCBbXCJEYVwiXSk7XHJcbiAgICAgICAgdGhpcy5QZXJzaXN0b3Iuc2V0KFwiZW4tPml0XCIsIFwiVG9cIiwgW1wiQVwiXSk7XHJcbiAgICAgICAgdGhpcy5QZXJzaXN0b3Iuc2V0KFwiZW4tPml0XCIsIFwiVmlldyBDaGFydFwiLCBbXCJWZWRpIEdyYWZpY29cIl0pO1xyXG4gICAgICAgIHRoaXMuUGVyc2lzdG9yLnNldChcImVuLT5pdFwiLCBcIlZpZXcgVGFibGVcIiwgW1wiVmVkaSBUYWJlbGxhXCJdKTtcclxuICAgICAgICB0aGlzLlBlcnNpc3Rvci5zZXQoXCJlbi0+aXRcIiwgXCJOb3Rlc1wiLCBbXCJOb3RlXCJdKTtcclxuICAgICAgICB0aGlzLlBlcnNpc3Rvci5zZXQoXCJlbi0+aXRcIiwgXCJFZGl0IE5vdGVzXCIsIFtcIk1vZGlmaWNhIE5vdGVcIl0pO1xyXG4gICAgICAgIHRoaXMuUGVyc2lzdG9yLnNldChcImVuLT5pdFwiLCBcIkNhbmNlbFwiLCBbXCJBbm51bGxhXCJdKTtcclxuICAgICAgICB0aGlzLlBlcnNpc3Rvci5zZXQoXCJlbi0+aXRcIiwgXCJDb25maXJtXCIsIFtcIkNvbmZlcm1hXCJdKTtcclxuICAgICAgICB0aGlzLlBlcnNpc3Rvci5zZXQoXCJlbi0+aXRcIiwgXCJWaWV3XCIsIFtcIlZpc3VhbGl6emFcIl0pO1xyXG4gICAgICAgIHRoaXMuUGVyc2lzdG9yLnNldChcImVuLT5pdFwiLCBcIkNsb3NlXCIsIFtcIkNoaXVkaVwiXSk7XHJcbiAgICAgICAgdGhpcy5QZXJzaXN0b3Iuc2V0KFwiZW4tPml0XCIsIFwiU2VsZWN0XCIsIFtcIlNlbGV6aW9uYVwiXSk7XHJcbiAgICAgICAgdGhpcy5QZXJzaXN0b3Iuc2V0KFwiZW4tPml0XCIsIFwiTWV0ZXIgUmVhZGluZyByZWdpc3RlcmVkIHN1Y2Nlc3NmdWxseVwiLCBbXCJMZXR0dXJhIHJlZ2lzdHJhdGEgY29ycmV0dGFtZW50ZVwiXSk7XHJcbiAgICAgICAgdGhpcy5QZXJzaXN0b3Iuc2V0KFwiZW4tPml0XCIsIFwiVmFsaWRhdGlvbiBlcnJvcnMgZHVyaW5nIHNhdmUgb3BlcmF0aW9uc1wiLCBbXCJFcnJvcmkgZGkgdmFsaWRhemlvbmUgZHVyYW50ZSBpbCBzYWx2YXRhZ2dpb1wiXSk7XHJcbiAgICAgICAgdGhpcy5QZXJzaXN0b3Iuc2V0KFwiZW4tPml0XCIsIFwiQ2FuJ3QgcmVnaXN0ZXIgcmVhZGluZ1wiLCBbXCJJbXBvc3NpYmlsZSByZWdpc3RyYXJlIGxhIGxldHR1cmFcIl0pO1xyXG4gICAgICAgIHRoaXMuUGVyc2lzdG9yLnNldChcImVuLT5pdFwiLCBcIkVsZWN0cmljaXR5XCIsIFtcIkVsZXR0cmljaXRhXCJdKTtcclxuICAgICAgICB0aGlzLlBlcnNpc3Rvci5zZXQoXCJlbi0+aXRcIiwgXCJHYXNcIiwgW1wiR2FzXCJdKTtcclxuICAgICAgICB0aGlzLlBlcnNpc3Rvci5zZXQoXCJlbi0+aXRcIiwgXCJXYXRlclwiLCBbXCJBY3F1YVwiXSk7XHJcbiAgICAgICAgdGhpcy5QZXJzaXN0b3Iuc2V0KFwiZW4tPml0XCIsIFwiRGVsZXRlXCIsIFtcIkVsaW1pbmFcIl0pO1xyXG4gICAgICAgIHRoaXMuUGVyc2lzdG9yLnNldChcImVuLT5pdFwiLCBcIlRoaXMgb3BlcmF0aW9uIGNhbm5vdCBiZSByZXZlcnRlZFwiLCBbXCJRdWVzdGEgb3BlcmF6aW9uZSBub24gcHVvJyBlc3NlcmUgYW5udWxsYXRhXCJdKTtcclxuICAgICAgICB0aGlzLlBlcnNpc3Rvci5zZXQoXCJlbi0+aXRcIiwgXCJIaWRlXCIsIFtcIk5hc2NvbmRpXCJdKTtcclxuXHJcbiAgICAgICAgLy8gSGVscGVyIHZhbGlkYXppb25lXHJcbiAgICAgICAgdGhpcy5QZXJzaXN0b3Iuc2V0KFwiZW4tPml0XCIsIFwiUmVxdWlyZWQgZmllbGRcIiwgW1wiQ2FtcG8gcmljaGllc3RvXCJdKTtcclxuICAgICAgICB0aGlzLlBlcnNpc3Rvci5zZXQoXCJlbi0+aXRcIiwgXCJXcm9uZyBmaWVsZCBmb3JtYXRcIiwgW1wiRm9ybWF0byBjYW1wbyBlcnJhdG9cIl0pO1xyXG4gICAgICAgIHRoaXMuUGVyc2lzdG9yLnNldChcImVuLT5pdFwiLCBcIldyb25nIGZpZWxkIGZvcm1hdCBvciBmaWVsZCBtaXNzaW5nXCIsIFtcIkZvcm1hdG8gY2FtcG8gZXJyYXRvIG8gY2FtcG8gbWFuY2FudGVcIl0pO1xyXG4gICAgICAgIHRoaXMuUGVyc2lzdG9yLnNldChcImVuLT5pdFwiLCBcIllvdSBkb24ndCBoYXZlIHRoZSByZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB2aWV3IHRoaXMgcGFnZS4gVGhlIG5hdmlnYXRpb24gaGFzIGJlZW4gYmxvY2tlZFwiLCBbXCJOb24gc2kgaGFubm8gcHJpdmlsZWdpIGEgc3VmZmljaWVuemEgcGVyIGFjY2VkZXJlIGEgcXVlc3RhIHBhZ2luYS4gTGEgbmF2aWdhemlvbmUgZScgc3RhdGEgYmxvY2NhdGFcIl0pO1xyXG5cclxuICAgICAgICAvLyBJbmZvcm1hemlvbmkgc3VsbGUgZGF0ZVxyXG4gICAgICAgIHRoaXMuUGVyc2lzdG9yLnNldFRva2VuKFwiZW4tPml0XCIsIEJhc2VMb2NhbGl6YXRpb25Ub2tlbnMuZ2V0RGF0ZU1vbnRoUG9zaXRpb24sIFwiMFwiLCBbXCIxXCJdKTtcclxuICAgICAgICB0aGlzLlBlcnNpc3Rvci5zZXRUb2tlbihcImVuLT5pdFwiLCBCYXNlTG9jYWxpemF0aW9uVG9rZW5zLmdldERpc3BsYXlEYXRlTW9udGhQb3NpdGlvbiwgXCIxXCIsIFtcIjFcIl0pO1xyXG4gICAgICAgIHRoaXMuUGVyc2lzdG9yLnNldFRva2VuKFwiZW4tPml0XCIsIEJhc2VMb2NhbGl6YXRpb25Ub2tlbnMuZ2V0TG9jYWxlLCBcImVuLVVTXCIsIFtcIml0LUlUXCJdKTtcclxuICAgICAgICB0aGlzLlBlcnNpc3Rvci5zZXRUb2tlbihcImVuLT5pdFwiLCBCYXNlTG9jYWxpemF0aW9uVG9rZW5zLmdldFNtYWxsRGF0ZUZvcm1hdCwgXCJNTS9ERC9ZWVlZXCIsIFtcIkREL01NL1lZWVlcIl0pO1xyXG4gICAgICAgIHRoaXMuUGVyc2lzdG9yLnNldFRva2VuKFwiZW4tPml0XCIsIEJhc2VMb2NhbGl6YXRpb25Ub2tlbnMuZ2V0RGVmYXVsdERhdGVGb3JtYXQsIFwiTU0vREQvWVlZWVwiLCBbXCJNTS9ERC9ZWVlZXCJdKTtcclxuICAgICAgICB0aGlzLlBlcnNpc3Rvci5zZXRUb2tlbihcImVuLT5pdFwiLCBCYXNlTG9jYWxpemF0aW9uVG9rZW5zLmdldFNtYWxsRGF0ZURpc3BsYXlGb3JtYXQsIFwiREQvTU0vWVlZWVwiLCBbXCJERC9NTS9ZWVlZXCJdKTtcclxuICAgICAgICB0aGlzLlBlcnNpc3Rvci5zZXRUb2tlbihcImVuLT5pdFwiLCBCYXNlTG9jYWxpemF0aW9uVG9rZW5zLmdldEZ1bGxEYXRlRm9ybWF0LCBcIk1NL0REL1lZWVkgSEg6bW06c3NcIiwgW1wiREQvTU0vWVlZWSBISDptbTpzc1wiXSk7XHJcbiAgICAgICAgdGhpcy5QZXJzaXN0b3Iuc2V0VG9rZW4oXCJlbi0+aXRcIiwgQmFzZUxvY2FsaXphdGlvblRva2Vucy5nZXRGdWxsRGF0ZURpc3BsYXlGb3JtYXQsIFwiREQvTU0vWVlZWSBISDptbTpzc1wiLCBbXCJERC9NTS9ZWVlZIEhIOm1tOnNzXCJdKTtcclxuICAgICAgICB0aGlzLlBlcnNpc3Rvci5zZXRUb2tlbihcImVuLT5pdFwiLCBCYXNlTG9jYWxpemF0aW9uVG9rZW5zLmdldEZ1bGxEYXRlRm9ybWF0Tm9TZWNvbmRzLCBcIk1NL0REL1lZWVkgSEg6bW1cIiwgW1wiREQvTU0vWVlZWSBISDptbVwiXSk7XHJcbiAgICAgICAgdGhpcy5QZXJzaXN0b3Iuc2V0VG9rZW4oXCJlbi0+aXRcIiwgQmFzZUxvY2FsaXphdGlvblRva2Vucy5nZXRGdWxsRGF0ZURpc3BsYXlGb3JtYXROb1NlY29uZHMsIFwiREQvTU0vWVlZWSBISDptbVwiLCBbXCJERC9NTS9ZWVlZIEhIOm1tXCJdKTtcclxuICAgIH1cclxufSJdfQ==
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { ItemLocalization, LocaleDefinitions, SpecializedLocalization } from "../models";
|
|
2
|
+
export class LocalizationPersistor {
|
|
3
|
+
constructor(LocCache = null) {
|
|
4
|
+
this.LocCache = LocCache;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Imposta la localizzazione di un token all'interno della cache scelta
|
|
8
|
+
*
|
|
9
|
+
* @param {string} direction Direzione della traduzione, rappresenta la lingua base in cui aspettarsi il testo e le varie lingue in cui viene tradotta.
|
|
10
|
+
* Ad esempio, "en->it" indica che il parametro **left** è valido per le localizzazioni in inglese, mentre nell'elemento 0 del parametro **right**
|
|
11
|
+
* è presente l'unica traduzione in italiano, per definire più traduzioni sul lato destro della freccia bisogna concatenarle con la virgola, ad esempio "en->it,jp,ecc"
|
|
12
|
+
* @param {string} token Nome del token
|
|
13
|
+
* @param {string} left Valore del token per la lingua specificata nel lato immediatamente sinistro alla freccia del parametro **direction**
|
|
14
|
+
* @param {string} right Array con i valori facenti riferimento all'N-esima lingua del lato destro del parametro **direction**
|
|
15
|
+
*/
|
|
16
|
+
setToken(direction, token, left, right) {
|
|
17
|
+
let parsingRegex = /([a-zA-Z]+)[\s]*->[\s]*([a-zA-Z,\s]+)+/g;
|
|
18
|
+
var parsingRes = parsingRegex.exec(direction);
|
|
19
|
+
let from = parsingRes[1];
|
|
20
|
+
let to = parsingRes[2].replace(/\s/g, '').split(',');
|
|
21
|
+
let localeFrom = LocaleDefinitions.getByAlias(from);
|
|
22
|
+
this._set(token, localeFrom.id, left, true);
|
|
23
|
+
to.forEach((t, index) => {
|
|
24
|
+
let localeTo = LocaleDefinitions.getByAlias(t);
|
|
25
|
+
this._set(token, localeTo.id, right[index], true);
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Imposta la localizzazione di una frase all'interno della cache scelta
|
|
30
|
+
*
|
|
31
|
+
* @param {string} direction Direzione della traduzione, rappresenta la lingua base in cui aspettarsi il testo e le varie lingue in cui viene tradotta.
|
|
32
|
+
* Ad esempio, "en->it" indica che il parametro **left** è valido per le localizzazioni in inglese, mentre nell'elemento 0 del parametro **right**
|
|
33
|
+
* è presente l'unica traduzione in italiano, per definire più traduzioni sul lato destro della freccia bisogna concatenarle con la virgola, ad esempio "en->it,jp,ecc"
|
|
34
|
+
* @param {string} left Valore della frase per la lingua specificata nel lato immediatamente sinistro alla freccia del parametro **direction**
|
|
35
|
+
* @param {string} right Array con i valori facenti riferimento all'N-esima lingua del lato destro del parametro **direction**
|
|
36
|
+
*/
|
|
37
|
+
set(direction, left, right) {
|
|
38
|
+
let parsingRegex = /([a-zA-Z]+)[\s]*->[\s]*([a-zA-Z,\s]+)+/g;
|
|
39
|
+
var parsingRes = parsingRegex.exec(direction);
|
|
40
|
+
let from = parsingRes[1];
|
|
41
|
+
let to = parsingRes[2].replace(/\s/g, '').split(',');
|
|
42
|
+
let localeFrom = LocaleDefinitions.getByAlias(from);
|
|
43
|
+
this._set(left, localeFrom.id, left);
|
|
44
|
+
to.forEach((t, index) => {
|
|
45
|
+
let localeTo = LocaleDefinitions.getByAlias(t);
|
|
46
|
+
this._set(left, localeTo.id, right[index]);
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Imposta all'interno della cache specificata un'unica traduzione partendo da un testo di base
|
|
51
|
+
*
|
|
52
|
+
* @param {string} text Testo da tradurre
|
|
53
|
+
* @param {string} culture Lingua per cui inserire la traduzione
|
|
54
|
+
* @param {string} translation Traduzione del **text** nella lingua specificata da **culture**
|
|
55
|
+
* @param {boolean} token Indica se il **text** è un token o è una frase normale
|
|
56
|
+
*/
|
|
57
|
+
_set(text, culture, translation, token) {
|
|
58
|
+
let item = this.get(text, token);
|
|
59
|
+
if (!item) {
|
|
60
|
+
this.LocCache[text] = new ItemLocalization(token, text, [new SpecializedLocalization(culture, translation)]);
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
var trs = this.translationByCulture(item, culture);
|
|
64
|
+
if (trs) {
|
|
65
|
+
console.warn("Localization already loaded for sentence '" + text + "' and culture " + culture);
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
item.translations.push(new SpecializedLocalization(culture, translation));
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Partendo da una cache di localizzazione, dato un testo che può essere o meno un token, cerca quell'elemento all'interno della cache
|
|
72
|
+
*
|
|
73
|
+
* @param {string} text Testo da cercare nella **LocCache**
|
|
74
|
+
* @param {boolean} allowtokens Indica se l'elemento cercato può essere un token o se dev'essere per forza una frase (per evitare rari
|
|
75
|
+
* casi di collisione in cui magari un token è uguale a una frase tradotta)
|
|
76
|
+
*
|
|
77
|
+
* @returns {ItemLocalization} Informazioni di localizzazione per il **text** cercato
|
|
78
|
+
*/
|
|
79
|
+
get(text, allowtokens) {
|
|
80
|
+
let possibleItem = this.LocCache[text];
|
|
81
|
+
if (!possibleItem)
|
|
82
|
+
return null;
|
|
83
|
+
var item = allowtokens || !possibleItem.token ? possibleItem : null;
|
|
84
|
+
return item;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Date le informazioni di localizzazione per un testo cerca e restituisce la traduzione per una lingua specifica
|
|
88
|
+
*
|
|
89
|
+
* @param {ItemLocalization} Informazioni di localizzazione
|
|
90
|
+
* @param {string} culture Lingua della traduzione richiesta
|
|
91
|
+
*
|
|
92
|
+
* @returns {SpecializedLocalization} Informazioni di localizzazione specifiche della lingua richiesta
|
|
93
|
+
*/
|
|
94
|
+
translationByCulture(item, culture) {
|
|
95
|
+
for (let i = 0; i < item.translations.length; i++) {
|
|
96
|
+
let trl = item.translations[i];
|
|
97
|
+
if (trl.culture == culture)
|
|
98
|
+
return trl;
|
|
99
|
+
}
|
|
100
|
+
return null;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxpemF0aW9uLnBlcnNpc3Rvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2xvY2FsaXphdGlvbnMvc3JjL2xpYi9jb3JlL2xvY2FsaXphdGlvbi5wZXJzaXN0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGlCQUFpQixFQUFFLHVCQUF1QixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXpGLE1BQU0sT0FBTyxxQkFBcUI7SUFFOUIsWUFBb0IsV0FBK0MsSUFBSTtRQUFuRCxhQUFRLEdBQVIsUUFBUSxDQUEyQztJQUFJLENBQUM7SUFFNUU7Ozs7Ozs7OztPQVNHO0lBQ0ksUUFBUSxDQUFDLFNBQWlCLEVBQUUsS0FBYSxFQUFFLElBQVksRUFBRSxLQUFlO1FBQzNFLElBQUksWUFBWSxHQUFHLHlDQUF5QyxDQUFDO1FBQzdELElBQUksVUFBVSxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFOUMsSUFBSSxJQUFJLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3pCLElBQUksRUFBRSxHQUFhLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMvRCxJQUFJLFVBQVUsR0FBRyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEQsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFFNUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUNwQixJQUFJLFFBQVEsR0FBRyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDL0MsSUFB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QyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDL0IsSUFBSSxHQUFHLENBQUMsT0FBTyxJQUFJLE9BQU87Z0JBQ3RCLE9BQU8sR0FBRyxDQUFDO1NBQ2xCO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSXRlbUxvY2FsaXphdGlvbiwgTG9jYWxlRGVmaW5pdGlvbnMsIFNwZWNpYWxpemVkTG9jYWxpemF0aW9uIH0gZnJvbSBcIi4uL21vZGVsc1wiO1xyXG5cclxuZXhwb3J0IGNsYXNzIExvY2FsaXphdGlvblBlcnNpc3RvciB7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBMb2NDYWNoZTogeyBbaWQ6IHN0cmluZ106IEl0ZW1Mb2NhbGl6YXRpb24gfSA9IG51bGwpIHsgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW1wb3N0YSBsYSBsb2NhbGl6emF6aW9uZSBkaSB1biB0b2tlbiBhbGwnaW50ZXJubyBkZWxsYSBjYWNoZSBzY2VsdGFcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGRpcmVjdGlvbiBEaXJlemlvbmUgZGVsbGEgdHJhZHV6aW9uZSwgcmFwcHJlc2VudGEgbGEgbGluZ3VhIGJhc2UgaW4gY3VpIGFzcGV0dGFyc2kgaWwgdGVzdG8gZSBsZSB2YXJpZSBsaW5ndWUgaW4gY3VpIHZpZW5lIHRyYWRvdHRhLlxyXG4gICAgICogQWQgZXNlbXBpbywgXCJlbi0+aXRcIiBpbmRpY2EgY2hlIGlsIHBhcmFtZXRybyAqKmxlZnQqKiDDqCB2YWxpZG8gcGVyIGxlIGxvY2FsaXp6YXppb25pIGluIGluZ2xlc2UsIG1lbnRyZSBuZWxsJ2VsZW1lbnRvIDAgZGVsIHBhcmFtZXRybyAqKnJpZ2h0KiogXHJcbiAgICAgKiDDqCBwcmVzZW50ZSBsJ3VuaWNhIHRyYWR1emlvbmUgaW4gaXRhbGlhbm8sIHBlciBkZWZpbmlyZSBwacO5IHRyYWR1emlvbmkgc3VsIGxhdG8gZGVzdHJvIGRlbGxhIGZyZWNjaWEgYmlzb2duYSBjb25jYXRlbmFybGUgY29uIGxhIHZpcmdvbGEsIGFkIGVzZW1waW8gXCJlbi0+aXQsanAsZWNjXCJcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0b2tlbiBOb21lIGRlbCB0b2tlblxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGxlZnQgVmFsb3JlIGRlbCB0b2tlbiBwZXIgbGEgbGluZ3VhIHNwZWNpZmljYXRhIG5lbCBsYXRvIGltbWVkaWF0YW1lbnRlIHNpbmlzdHJvIGFsbGEgZnJlY2NpYSBkZWwgcGFyYW1ldHJvICoqZGlyZWN0aW9uKipcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSByaWdodCBBcnJheSBjb24gaSB2YWxvcmkgZmFjZW50aSByaWZlcmltZW50byBhbGwnTi1lc2ltYSBsaW5ndWEgZGVsIGxhdG8gZGVzdHJvIGRlbCBwYXJhbWV0cm8gKipkaXJlY3Rpb24qKlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc2V0VG9rZW4oZGlyZWN0aW9uOiBzdHJpbmcsIHRva2VuOiBzdHJpbmcsIGxlZnQ6IHN0cmluZywgcmlnaHQ6IHN0cmluZ1tdKSB7XHJcbiAgICAgICAgbGV0IHBhcnNpbmdSZWdleCA9IC8oW2EtekEtWl0rKVtcXHNdKi0+W1xcc10qKFthLXpBLVosXFxzXSspKy9nO1xyXG4gICAgICAgIHZhciBwYXJzaW5nUmVzID0gcGFyc2luZ1JlZ2V4LmV4ZWMoZGlyZWN0aW9uKTtcclxuXHJcbiAgICAgICAgbGV0IGZyb20gPSBwYXJzaW5nUmVzWzFdO1xyXG4gICAgICAgIGxldCB0bzogc3RyaW5nW10gPSBwYXJzaW5nUmVzWzJdLnJlcGxhY2UoL1xccy9nLCAnJykuc3BsaXQoJywnKTtcclxuICAgICAgICBsZXQgbG9jYWxlRnJvbSA9IExvY2FsZURlZmluaXRpb25zLmdldEJ5QWxpYXMoZnJvbSk7XHJcbiAgICAgICAgdGhpcy5fc2V0KHRva2VuLCBsb2NhbGVGcm9tLmlkLCBsZWZ0LCB0cnVlKTtcclxuXHJcbiAgICAgICAgdG8uZm9yRWFjaCgodCwgaW5kZXgpID0+IHtcclxuICAgICAgICAgICAgbGV0IGxvY2FsZVRvID0gTG9jYWxlRGVmaW5pdGlvbnMuZ2V0QnlBbGlhcyh0KTtcclxuICAgICAgICAgICAgdGhpcy5fc2V0KHRva2VuLCBsb2NhbGVUby5pZCwgcmlnaHRbaW5kZXhdLCB0cnVlKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEltcG9zdGEgbGEgbG9jYWxpenphemlvbmUgZGkgdW5hIGZyYXNlIGFsbCdpbnRlcm5vIGRlbGxhIGNhY2hlIHNjZWx0YVxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gZGlyZWN0aW9uIERpcmV6aW9uZSBkZWxsYSB0cmFkdXppb25lLCByYXBwcmVzZW50YSBsYSBsaW5ndWEgYmFzZSBpbiBjdWkgYXNwZXR0YXJzaSBpbCB0ZXN0byBlIGxlIHZhcmllIGxpbmd1ZSBpbiBjdWkgdmllbmUgdHJhZG90dGEuXHJcbiAgICAgKiBBZCBlc2VtcGlvLCBcImVuLT5pdFwiIGluZGljYSBjaGUgaWwgcGFyYW1ldHJvICoqbGVmdCoqIMOoIHZhbGlkbyBwZXIgbGUgbG9jYWxpenphemlvbmkgaW4gaW5nbGVzZSwgbWVudHJlIG5lbGwnZWxlbWVudG8gMCBkZWwgcGFyYW1ldHJvICoqcmlnaHQqKiBcclxuICAgICAqIMOoIHByZXNlbnRlIGwndW5pY2EgdHJhZHV6aW9uZSBpbiBpdGFsaWFubywgcGVyIGRlZmluaXJlIHBpw7kgdHJhZHV6aW9uaSBzdWwgbGF0byBkZXN0cm8gZGVsbGEgZnJlY2NpYSBiaXNvZ25hIGNvbmNhdGVuYXJsZSBjb24gbGEgdmlyZ29sYSwgYWQgZXNlbXBpbyBcImVuLT5pdCxqcCxlY2NcIlxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGxlZnQgVmFsb3JlIGRlbGxhIGZyYXNlIHBlciBsYSBsaW5ndWEgc3BlY2lmaWNhdGEgbmVsIGxhdG8gaW1tZWRpYXRhbWVudGUgc2luaXN0cm8gYWxsYSBmcmVjY2lhIGRlbCBwYXJhbWV0cm8gKipkaXJlY3Rpb24qKlxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHJpZ2h0IEFycmF5IGNvbiBpIHZhbG9yaSBmYWNlbnRpIHJpZmVyaW1lbnRvIGFsbCdOLWVzaW1hIGxpbmd1YSBkZWwgbGF0byBkZXN0cm8gZGVsIHBhcmFtZXRybyAqKmRpcmVjdGlvbioqXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzZXQoZGlyZWN0aW9uOiBzdHJpbmcsIGxlZnQ6IHN0cmluZywgcmlnaHQ6IHN0cmluZ1tdKSB7XHJcbiAgICAgICAgbGV0IHBhcnNpbmdSZWdleCA9IC8oW2EtekEtWl0rKVtcXHNdKi0+W1xcc10qKFthLXpBLVosXFxzXSspKy9nO1xyXG4gICAgICAgIHZhciBwYXJzaW5nUmVzID0gcGFyc2luZ1JlZ2V4LmV4ZWMoZGlyZWN0aW9uKTtcclxuXHJcbiAgICAgICAgbGV0IGZyb20gPSBwYXJzaW5nUmVzWzFdO1xyXG4gICAgICAgIGxldCB0bzogc3RyaW5nW10gPSBwYXJzaW5nUmVzWzJdLnJlcGxhY2UoL1xccy9nLCAnJykuc3BsaXQoJywnKTtcclxuICAgICAgICBsZXQgbG9jYWxlRnJvbSA9IExvY2FsZURlZmluaXRpb25zLmdldEJ5QWxpYXMoZnJvbSk7XHJcbiAgICAgICAgdGhpcy5fc2V0KGxlZnQsIGxvY2FsZUZyb20uaWQsIGxlZnQpO1xyXG5cclxuICAgICAgICB0by5mb3JFYWNoKCh0LCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgICBsZXQgbG9jYWxlVG8gPSBMb2NhbGVEZWZpbml0aW9ucy5nZXRCeUFsaWFzKHQpO1xyXG4gICAgICAgICAgICB0aGlzLl9zZXQobGVmdCwgbG9jYWxlVG8uaWQsIHJpZ2h0W2luZGV4XSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbXBvc3RhIGFsbCdpbnRlcm5vIGRlbGxhIGNhY2hlIHNwZWNpZmljYXRhIHVuJ3VuaWNhIHRyYWR1emlvbmUgcGFydGVuZG8gZGEgdW4gdGVzdG8gZGkgYmFzZVxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCBUZXN0byBkYSB0cmFkdXJyZVxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGN1bHR1cmUgTGluZ3VhIHBlciBjdWkgaW5zZXJpcmUgbGEgdHJhZHV6aW9uZVxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHRyYW5zbGF0aW9uIFRyYWR1emlvbmUgZGVsICoqdGV4dCoqIG5lbGxhIGxpbmd1YSBzcGVjaWZpY2F0YSBkYSAqKmN1bHR1cmUqKlxyXG4gICAgICogQHBhcmFtIHtib29sZWFufSB0b2tlbiBJbmRpY2Egc2UgaWwgKip0ZXh0Kiogw6ggdW4gdG9rZW4gbyDDqCB1bmEgZnJhc2Ugbm9ybWFsZVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9zZXQodGV4dDogc3RyaW5nLCBjdWx0dXJlOiBzdHJpbmcsIHRyYW5zbGF0aW9uOiBzdHJpbmcsIHRva2VuPzogYm9vbGVhbikge1xyXG4gICAgICAgIGxldCBpdGVtID0gdGhpcy5nZXQodGV4dCwgdG9rZW4pO1xyXG4gICAgICAgIGlmICghaXRlbSkge1xyXG4gICAgICAgICAgICB0aGlzLkxvY0NhY2hlW3RleHRdID0gbmV3IEl0ZW1Mb2NhbGl6YXRpb24odG9rZW4sIHRleHQsIFtuZXcgU3BlY2lhbGl6ZWRMb2NhbGl6YXRpb24oY3VsdHVyZSwgdHJhbnNsYXRpb24pXSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHZhciB0cnMgPSB0aGlzLnRyYW5zbGF0aW9uQnlDdWx0dXJlKGl0ZW0sIGN1bHR1cmUpO1xyXG4gICAgICAgIGlmICh0cnMpIHtcclxuICAgICAgICAgICAgY29uc29sZS53YXJuKFwiTG9jYWxpemF0aW9uIGFscmVhZHkgbG9hZGVkIGZvciBzZW50ZW5jZSAnXCIgKyB0ZXh0ICsgXCInIGFuZCBjdWx0dXJlIFwiICsgY3VsdHVyZSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGl0ZW0udHJhbnNsYXRpb25zLnB1c2gobmV3IFNwZWNpYWxpemVkTG9jYWxpemF0aW9uKGN1bHR1cmUsIHRyYW5zbGF0aW9uKSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQYXJ0ZW5kbyBkYSB1bmEgY2FjaGUgZGkgbG9jYWxpenphemlvbmUsIGRhdG8gdW4gdGVzdG8gY2hlIHB1w7IgZXNzZXJlIG8gbWVubyB1biB0b2tlbiwgY2VyY2EgcXVlbGwnZWxlbWVudG8gYWxsJ2ludGVybm8gZGVsbGEgY2FjaGVcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgVGVzdG8gZGEgY2VyY2FyZSBuZWxsYSAqKkxvY0NhY2hlKipcclxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gYWxsb3d0b2tlbnMgSW5kaWNhIHNlIGwnZWxlbWVudG8gY2VyY2F0byBwdcOyIGVzc2VyZSB1biB0b2tlbiBvIHNlIGRldidlc3NlcmUgcGVyIGZvcnphIHVuYSBmcmFzZSAocGVyIGV2aXRhcmUgcmFyaSBcclxuICAgICAqIGNhc2kgZGkgY29sbGlzaW9uZSBpbiBjdWkgbWFnYXJpIHVuIHRva2VuIMOoIHVndWFsZSBhIHVuYSBmcmFzZSB0cmFkb3R0YSlcclxuICAgICAqIFxyXG4gICAgICogQHJldHVybnMge0l0ZW1Mb2NhbGl6YXRpb259IEluZm9ybWF6aW9uaSBkaSBsb2NhbGl6emF6aW9uZSBwZXIgaWwgKip0ZXh0KiogY2VyY2F0b1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0KHRleHQ6IHN0cmluZywgYWxsb3d0b2tlbnM6IGJvb2xlYW4pOiBJdGVtTG9jYWxpemF0aW9uIHtcclxuICAgICAgICBsZXQgcG9zc2libGVJdGVtOiBJdGVtTG9jYWxpemF0aW9uID0gdGhpcy5Mb2NDYWNoZVt0ZXh0XTtcclxuICAgICAgICBpZiAoIXBvc3NpYmxlSXRlbSlcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcblxyXG4gICAgICAgIHZhciBpdGVtID0gYWxsb3d0b2tlbnMgfHwgIXBvc3NpYmxlSXRlbS50b2tlbiA/IHBvc3NpYmxlSXRlbSA6IG51bGw7XHJcbiAgICAgICAgcmV0dXJuIGl0ZW07XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBEYXRlIGxlIGluZm9ybWF6aW9uaSBkaSBsb2NhbGl6emF6aW9uZSBwZXIgdW4gdGVzdG8gY2VyY2EgZSByZXN0aXR1aXNjZSBsYSB0cmFkdXppb25lIHBlciB1bmEgbGluZ3VhIHNwZWNpZmljYVxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge0l0ZW1Mb2NhbGl6YXRpb259IEluZm9ybWF6aW9uaSBkaSBsb2NhbGl6emF6aW9uZVxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGN1bHR1cmUgTGluZ3VhIGRlbGxhIHRyYWR1emlvbmUgcmljaGllc3RhXHJcbiAgICAgKiBcclxuICAgICAqIEByZXR1cm5zIHtTcGVjaWFsaXplZExvY2FsaXphdGlvbn0gSW5mb3JtYXppb25pIGRpIGxvY2FsaXp6YXppb25lIHNwZWNpZmljaGUgZGVsbGEgbGluZ3VhIHJpY2hpZXN0YVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgdHJhbnNsYXRpb25CeUN1bHR1cmUoaXRlbTogSXRlbUxvY2FsaXphdGlvbiwgY3VsdHVyZTogc3RyaW5nKTogU3BlY2lhbGl6ZWRMb2NhbGl6YXRpb24ge1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaXRlbS50cmFuc2xhdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgbGV0IHRybCA9IGl0ZW0udHJhbnNsYXRpb25zW2ldO1xyXG4gICAgICAgICAgICBpZiAodHJsLmN1bHR1cmUgPT0gY3VsdHVyZSlcclxuICAgICAgICAgICAgICAgIHJldHVybiB0cmw7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxufSJdfQ==
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
// Angular
|
|
2
|
+
import { Injectable } from "@angular/core";
|
|
3
|
+
// RXJS
|
|
4
|
+
import { of } from "rxjs";
|
|
5
|
+
import { first } from "rxjs/operators";
|
|
6
|
+
import { LocalePersistor } from "./LocalePersistor";
|
|
7
|
+
export class LocalStorageLocalePersistor extends LocalePersistor {
|
|
8
|
+
/** @ignore Vedi classe base */
|
|
9
|
+
persist(locale) {
|
|
10
|
+
localStorage.setItem(this.LOCALE, locale);
|
|
11
|
+
return of(true).pipe(first());
|
|
12
|
+
}
|
|
13
|
+
/** @ignore Vedi classe base */
|
|
14
|
+
recover() {
|
|
15
|
+
var ret = localStorage.getItem(this.LOCALE);
|
|
16
|
+
return of(ret).pipe(first());
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
LocalStorageLocalePersistor.decorators = [
|
|
20
|
+
{ type: Injectable }
|
|
21
|
+
];
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTG9jYWxTdG9yYWdlQ2FjaGVQZXJzaXN0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9sb2NhbGl6YXRpb25zL3NyYy9saWIvbG9jYWxlLXBlcnNpc3Rvci9Mb2NhbFN0b3JhZ2VDYWNoZVBlcnNpc3Rvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxVQUFVO0FBQ1YsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPO0FBQ1AsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBR3BELE1BQU0sT0FBTywyQkFBNEIsU0FBUSxlQUFlO0lBRTVELCtCQUErQjtJQUN4QixPQUFPLENBQUMsTUFBYztRQUN6QixZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDMUMsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVELCtCQUErQjtJQUN4QixPQUFPO1FBQ1YsSUFBSSxHQUFHLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDNUMsT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDakMsQ0FBQzs7O1lBYkosVUFBVSIsInNvdXJjZXNDb250ZW50IjpbIi8vIEFuZ3VsYXJcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcblxyXG4vLyBSWEpTXHJcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgZmlyc3QgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcclxuaW1wb3J0IHsgTG9jYWxlUGVyc2lzdG9yIH0gZnJvbSBcIi4vTG9jYWxlUGVyc2lzdG9yXCI7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBMb2NhbFN0b3JhZ2VMb2NhbGVQZXJzaXN0b3IgZXh0ZW5kcyBMb2NhbGVQZXJzaXN0b3Ige1xyXG5cclxuICAgIC8qKiBAaWdub3JlIFZlZGkgY2xhc3NlIGJhc2UgKi9cclxuICAgIHB1YmxpYyBwZXJzaXN0KGxvY2FsZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XHJcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5MT0NBTEUsIGxvY2FsZSk7XHJcbiAgICAgICAgcmV0dXJuIG9mKHRydWUpLnBpcGUoZmlyc3QoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEBpZ25vcmUgVmVkaSBjbGFzc2UgYmFzZSAqL1xyXG4gICAgcHVibGljIHJlY292ZXIoKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcclxuICAgICAgICB2YXIgcmV0ID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5MT0NBTEUpO1xyXG4gICAgICAgIHJldHVybiBvZihyZXQpLnBpcGUoZmlyc3QoKSk7XHJcbiAgICB9XHJcbn0iXX0=
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/** Classe astratta che rappresenta lo stato di persistenza fra la libreria e uno storage */
|
|
2
|
+
export class LocalePersistor {
|
|
3
|
+
constructor() {
|
|
4
|
+
/** Chiave su cui salvare il locale */
|
|
5
|
+
this.LOCALE = "LOCALE";
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTG9jYWxlUGVyc2lzdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbG9jYWxpemF0aW9ucy9zcmMvbGliL2xvY2FsZS1wZXJzaXN0b3IvTG9jYWxlUGVyc2lzdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLDRGQUE0RjtBQUM1RixNQUFNLE9BQWdCLGVBQWU7SUFBckM7UUFFSSxzQ0FBc0M7UUFDNUIsV0FBTSxHQUFXLFFBQVEsQ0FBQztJQWV4QyxDQUFDO0NBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSBcInJ4anNcIjtcclxuXHJcbi8qKiBDbGFzc2UgYXN0cmF0dGEgY2hlIHJhcHByZXNlbnRhIGxvIHN0YXRvIGRpIHBlcnNpc3RlbnphIGZyYSBsYSBsaWJyZXJpYSBlIHVubyBzdG9yYWdlICovXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBMb2NhbGVQZXJzaXN0b3Ige1xyXG5cclxuICAgIC8qKiBDaGlhdmUgc3UgY3VpIHNhbHZhcmUgaWwgbG9jYWxlICovXHJcbiAgICBwcm90ZWN0ZWQgTE9DQUxFOiBzdHJpbmcgPSBcIkxPQ0FMRVwiO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2FsdmEgaWwgTG9jYWxlXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBsb2NhbGUgTG9jYWxlIGRhIHNhbHZhcmVcclxuICAgICAqL1xyXG4gICAgcHVibGljIGFic3RyYWN0IHBlcnNpc3QobG9jYWxlOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmVjdXBlcmEgaWwgTG9jYWxlXHJcbiAgICAgKiBcclxuICAgICAqIEByZXR1cm5zIHtPYnNlcnZhYmxlPHN0cmluZz59IFZhbG9yZSBzYWx2YXRvIHBlciBpbCBsb2NhbGVcclxuICAgICAqL1xyXG4gICAgcHVibGljIGFic3RyYWN0IHJlY292ZXIoKTogT2JzZXJ2YWJsZTxzdHJpbmc+O1xyXG59Il19
|