@oneteme/jquery-organizer 0.0.4 → 0.0.6
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/README.md +49 -2
- package/esm2022/lib/models/organizer-chart-adapter.mjs +1 -1
- package/esm2022/lib/models/organizer-chart-config.mjs +2 -1
- package/esm2022/lib/models/organizer-config.interface.mjs +1 -1
- package/esm2022/lib/models/organizer-utils.mjs +4 -1
- package/esm2022/lib/organizer-button/organizer-button.component.mjs +44 -7
- package/esm2022/lib/slice-panel/slice-panel.component.mjs +17 -6
- package/esm2022/public-api.mjs +2 -1
- package/fesm2022/oneteme-jquery-organizer.mjs +64 -12
- package/fesm2022/oneteme-jquery-organizer.mjs.map +1 -1
- package/lib/models/organizer-chart-config.d.ts +3 -1
- package/lib/models/organizer-config.interface.d.ts +10 -1
- package/lib/models/organizer-utils.d.ts +5 -3
- package/lib/organizer-button/organizer-button.component.d.ts +5 -0
- package/lib/slice-panel/slice-panel.component.d.ts +4 -2
- package/package.json +2 -2
- package/public-api.d.ts +1 -0
package/README.md
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
(viewChange) | EventEmitter<OrganizerButtonEvent> | Émis à chaque interaction utilisateur |
|
|
1
2
|
# @oneteme/jquery-organizer
|
|
2
3
|
|
|
3
4
|
Bibliothèque Angular autonome pour la gestion décentralisée des configurations de graphiques et tableaux. Elle fournit :
|
|
@@ -13,6 +14,17 @@ Bibliothèque Angular autonome pour la gestion décentralisée des configuration
|
|
|
13
14
|
- **Slice loading unification** dans le composant organizer (Promise/Observable dual-support)
|
|
14
15
|
- **Chart binding facade** pour simplifier l'intégration ChartConfig ↔ Organizer (50% réduction de boilerplate)
|
|
15
16
|
|
|
17
|
+
> **Documentation et démonstrations** : [ouvrir l'application de documentation](https://oneteme.github.io/jquery-charts/)
|
|
18
|
+
>
|
|
19
|
+
> L'application montre l'Organizer avec les tableaux et les trois renderers de graphiques, notamment les sélections, les regroupements, les slices, les exports et le plein écran.
|
|
20
|
+
|
|
21
|
+
## Nouveautés intégrées
|
|
22
|
+
|
|
23
|
+
- **Façade de binding** : `buildOrganizerChartBinding()` et `handleOrganizerChartEvent()` regroupent la conversion de configuration, la normalisation d'état et la décision de rechargement.
|
|
24
|
+
- **État contrôlé** : les événements exposent un état complet et peuvent être réinjectés dans un graphique ou un tableau sans dépendance au renderer.
|
|
25
|
+
- **Chargement de slices unifié** : `Promise` et `Observable` sont acceptés par `onFetchSliceData`.
|
|
26
|
+
- **Actions visuelles** : export, copie et plein écran peuvent être branchés via `OrganizerConfig.actions` et les callbacks associés.
|
|
27
|
+
|
|
16
28
|
---
|
|
17
29
|
|
|
18
30
|
## Quick Start
|
|
@@ -123,6 +135,7 @@ export interface OrganizerConfig {
|
|
|
123
135
|
yFields?: OrganizerYField[]; // Indicateurs (ex: count, elapsed_avg)
|
|
124
136
|
groups?: OrganizerViewGroup[]; // Options de regroupement
|
|
125
137
|
slices?: OrganizerViewSlice[]; // Options de filtre
|
|
138
|
+
chartTypes?: OrganizerChartType[]; // Types proposés par le renderer hôte
|
|
126
139
|
|
|
127
140
|
// Callbacks
|
|
128
141
|
onFetchFieldData?: (fieldId: string) => Promise<any[]>;
|
|
@@ -149,7 +162,7 @@ export interface OrganizerConfig {
|
|
|
149
162
|
onToggleFullscreen?: () => void;
|
|
150
163
|
|
|
151
164
|
// UI
|
|
152
|
-
showReset?: boolean; // Défaut:
|
|
165
|
+
showReset?: boolean; // Défaut: false
|
|
153
166
|
buttonLabel?: string;
|
|
154
167
|
buttonIcon?: string; // Icône Material
|
|
155
168
|
showButtonIcon?: boolean;
|
|
@@ -169,6 +182,7 @@ export interface OrganizerConfig {
|
|
|
169
182
|
export interface OrganizerState {
|
|
170
183
|
viewMode?: 'chart' | 'table';
|
|
171
184
|
visibleFields?: string[]; // Champs visibles en table
|
|
185
|
+
selectedChartType?: string; // Type de graphique choisi par l’utilisateur
|
|
172
186
|
selectedX?: string; // Dimension X (ex: 'date')
|
|
173
187
|
selectedY?: string; // Indicateur Y (ex: 'count')
|
|
174
188
|
selectedYAggregate?: string; // Agrégat si applicable
|
|
@@ -178,13 +192,46 @@ export interface OrganizerState {
|
|
|
178
192
|
|
|
179
193
|
export interface OrganizerButtonEvent {
|
|
180
194
|
type: 'fieldToggled' | 'xSelected' | 'ySelected' | 'groupBySelected'
|
|
181
|
-
|
|
195
|
+
| 'sliceSelected' | 'chartTypeSelected' | 'reset' | 'viewSwitched';
|
|
182
196
|
state: OrganizerState; // État complet après action
|
|
183
197
|
source?: 'user' | 'api';
|
|
184
198
|
resolvedYUnit?: string | UnitConfig; // Unité auto-détectée (voir Auto-Scaling)
|
|
185
199
|
}
|
|
186
200
|
```
|
|
187
201
|
|
|
202
|
+
### Changer le type d’un graphique
|
|
203
|
+
|
|
204
|
+
`jquery-organizer` ne connaît pas le renderer. Le parent déclare les types compatibles, écoute `chartTypeSelected`, puis réinjecte l’identifiant dans le composant graphique :
|
|
205
|
+
|
|
206
|
+
```typescript
|
|
207
|
+
readonly organizerConfig: OrganizerConfig = {
|
|
208
|
+
chartTypes: [
|
|
209
|
+
{ id: 'line', label: 'Courbe' },
|
|
210
|
+
{ id: 'column', label: 'Colonnes' },
|
|
211
|
+
],
|
|
212
|
+
};
|
|
213
|
+
|
|
214
|
+
state: OrganizerState = { selectedChartType: 'line' };
|
|
215
|
+
chartType: ChartType = 'line';
|
|
216
|
+
|
|
217
|
+
onViewChange(event: OrganizerButtonEvent): void {
|
|
218
|
+
this.state = event.state;
|
|
219
|
+
if (event.state.selectedChartType) {
|
|
220
|
+
this.chartType = event.state.selectedChartType as ChartType;
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
```html
|
|
226
|
+
<organizer-button
|
|
227
|
+
[config]="organizerConfig"
|
|
228
|
+
[state]="state"
|
|
229
|
+
(viewChange)="onViewChange($event)">
|
|
230
|
+
</organizer-button>
|
|
231
|
+
|
|
232
|
+
<chart [type]="chartType" [config]="config" [data]="data"></chart>
|
|
233
|
+
```
|
|
234
|
+
|
|
188
235
|
---
|
|
189
236
|
|
|
190
237
|
## SlicePanelComponent
|
|
@@ -225,4 +225,4 @@ function _applyGroupBySelection(effectiveGroupBy, chartConfig) {
|
|
|
225
225
|
function _applySliceSelection(selectedSlices, chartConfig) {
|
|
226
226
|
getFilterItems(chartConfig).forEach(f => { f.selected = selectedSlices.includes(f.key); });
|
|
227
227
|
}
|
|
228
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JnYW5pemVyLWNoYXJ0LWFkYXB0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbmV0ZW1lL2pxdWVyeS1vcmdhbml6ZXIvc3JjL2xpYi9tb2RlbHMvb3JnYW5pemVyLWNoYXJ0LWFkYXB0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFlBQVksRUFBRSx1QkFBdUIsRUFBNkIsV0FBVyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFbEgsT0FBTyxFQUF3QixhQUFhLEVBQUUsaUJBQWlCLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRWpJLE9BQU8sRUFBd0IsYUFBYSxFQUFFLGlCQUFpQixFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQTBDakksTUFBTSxVQUFVLHNCQUFzQixDQUNwQyxXQUFvRCxFQUNwRCxVQUF1QyxFQUFFO0lBRXpDLElBQUksQ0FBQyxXQUFXLEVBQUU7UUFDaEIsT0FBTyxDQUFDLEtBQUssQ0FBQyw4RUFBOEUsQ0FBQyxDQUFDO1FBQzlGLE9BQU8sRUFBRSxDQUFDO0tBQ1g7SUFFRCxPQUFPLENBQUMsS0FBSyxDQUFDLDhEQUE4RCxFQUFFO1FBQzVFLFNBQVMsRUFBRSxDQUFDLENBQUMsV0FBVyxDQUFDLE1BQU07UUFDL0IsY0FBYyxFQUFFLFdBQVcsQ0FBQyxVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDO1FBQzFELFdBQVcsRUFBRSxXQUFXLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQztLQUNyRCxDQUFDLENBQUM7SUFFSCxNQUFNLEVBQUUsZ0JBQWdCLEVBQUUsY0FBYyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsR0FBRyxPQUFPLENBQUM7SUFDL0UsTUFBTSxVQUFVLEdBQUcsaUJBQWlCLENBQUMsV0FBVyxDQUFDLENBQUM7SUFD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Q0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDbEQ7QUFDSCxDQUFDO0FBRUQsU0FBUyxvQkFBb0IsQ0FBQyxjQUF3QixFQUFFLFdBQWlDO0lBQ3ZGLGNBQWMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsUUFBUSxHQUFHLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDN0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9yZ2FuaXplckJ1dHRvbkV2ZW50LCBPcmdhbml6ZXJDb25maWcsIE9yZ2FuaXplclN0YXRlLCBPcmdhbml6ZXJVbmlmaWVkU3RhdGUsIE9yZ2FuaXplclZpZXdTbGljZSwgT3JnYW5pemVyWEZpZWxkIH0gZnJvbSAnLi9vcmdhbml6ZXItY29uZmlnLmludGVyZmFjZSc7XG5pbXBvcnQgeyBidWlsZFlGaWVsZHMsIG5vcm1hbGl6ZU9yZ2FuaXplclN0YXRlLCByZXNvbHZlTWF0Y2hpbmdUZW1wbGF0ZUlkLCByZXNvbHZlWUtleSB9IGZyb20gJy4vb3JnYW5pemVyLXV0aWxzJztcbmltcG9ydCB7IFVuaXRDb25maWcgfSBmcm9tICdAb25ldGVtZS9qcXVlcnktY29yZSc7XG5pbXBvcnQgeyBPcmdhbml6ZXJDaGFydENvbmZpZywgZ2V0R3JvdXBJdGVtcywgZ2V0SW5kaWNhdG9ySXRlbXMsIGdldEZpbHRlckl0ZW1zLCBnZXRTdGFja0l0ZW1zIH0gZnJvbSAnLi9vcmdhbml6ZXItY2hhcnQtY29uZmlnJztcblxuZXhwb3J0IHsgT3JnYW5pemVyQ2hhcnRDb25maWcsIGdldEdyb3VwSXRlbXMsIGdldEluZGljYXRvckl0ZW1zLCBnZXRGaWx0ZXJJdGVtcywgZ2V0U3RhY2tJdGVtcyB9IGZyb20gJy4vb3JnYW5pemVyLWNoYXJ0LWNvbmZpZyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgT3JnYW5pemVyQ2hhcnRJdGVtIHtcbiAga2V5OiBzdHJpbmc7XG4gIHNlbGVjdGVkOiBib29sZWFuO1xuICBtZW51OiB7IGxhYmVsOiBzdHJpbmcgfTtcbiAgdW5pdD86IHN0cmluZyB8IFVuaXRDb25maWc7XG4gIGpxdWVyeT86IHtcbiAgICB2YWx1ZTogKHM/OiBzdHJpbmcpID0+IHN0cmluZztcbiAgICBidWlsZEFsaWFzOiAocz86IHN0cmluZykgPT4gc3RyaW5nO1xuICAgIGJ1aWxkTmFtZT86IChpdGVtOiBhbnksIHZhbHVlPzogc3RyaW5nKSA9PiBzdHJpbmc7XG4gICAgYnVpbGRDb2xvcj86ICh2YWx1ZT86IHN0cmluZykgPT4gc3RyaW5nO1xuICB9O1xuICBncm91cD86IHN0cmluZztcbiAgZXh0cmE/OiB7XG4gICAgc3RhY2tzPzogeyBvcHRpb25hbDogYm9vbGVhbjsgaXRlbXM6IE9yZ2FuaXplckNoYXJ0SXRlbVtdIH07XG4gICAgW2tleTogc3RyaW5nXTogYW55O1xuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9yZ2FuaXplckNoYXJ0U2VjdGlvbiB7XG4gIG9wdGlvbmFsOiBib29sZWFuO1xuICBpdGVtczogT3JnYW5pemVyQ2hhcnRJdGVtW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT3JnYW5pemVyQ2hhcnRCcmlkZ2VPcHRpb25zIHtcbiAgb25GZXRjaFNsaWNlRGF0YT86IE9yZ2FuaXplckNvbmZpZ1snb25GZXRjaFNsaWNlRGF0YSddO1xuICBvbkV4cG9ydFZpc3VhbD86ICgpID0+IHZvaWQ7XG4gIG9uRXhwb3J0RGF0YT86ICgpID0+IHZvaWQ7XG4gIHN3aXRjaFZpZXc/OiBPcmdhbml6ZXJDb25maWdbJ3N3aXRjaFZpZXcnXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPcmdhbml6ZXJDaGFydEJpbmRpbmcge1xuICBjb25maWc6IE9yZ2FuaXplckNvbmZpZztcbiAgc3RhdGU6IE9yZ2FuaXplclN0YXRlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9yZ2FuaXplckNoYXJ0RXZlbnRSZXN1bHQge1xuICBiaW5kaW5nOiBPcmdhbml6ZXJDaGFydEJpbmRpbmc7XG4gIHNob3VsZFJlZmV0Y2g6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjaGFydENvbmZpZ1RvT3JnYW5pemVyKFxuICBjaGFydENvbmZpZzogT3JnYW5pemVyQ2hhcnRDb25maWcgfCBudWxsIHwgdW5kZWZpbmVkLFxuICBvcHRpb25zOiBPcmdhbml6ZXJDaGFydEJyaWRnZU9wdGlvbnMgPSB7fVxuKTogT3JnYW5pemVyQ29uZmlnIHtcbiAgaWYgKCFjaGFydENvbmZpZykge1xuICAgIGNvbnNvbGUuZGVidWcoJ1tPcmdhbml6ZXJDaGFydEFkYXB0ZXJdIEVtcHR5IGNoYXJ0IGNvbmZpZywgcmV0dXJuaW5nIGVtcHR5IG9yZ2FuaXplciBjb25maWcnKTtcbiAgICByZXR1cm4ge307XG4gIH1cblxuICBjb25zb2xlLmRlYnVnKCdbT3JnYW5pemVyQ2hhcnRBZGFwdGVyXSBDb252ZXJ0aW5nIGNoYXJ0IGNvbmZpZyB0byBvcmdhbml6ZXInLCB7XG4gICAgaGFzR3JvdXBzOiAhIWNoYXJ0Q29uZmlnLmdyb3VwcyxcbiAgICBpbmRpY2F0b3JDb3VudDogY2hhcnRDb25maWcuaW5kaWNhdG9ycz8uaXRlbXM/Lmxlbmd0aCA/PyAwLFxuICAgIGZpbHRlckNvdW50OiBjaGFydENvbmZpZy5maWx0ZXJzPy5pdGVtcz8ubGVuZ3RoID8/IDBcbiAgfSk7XG5cbiAgY29uc3QgeyBvbkZldGNoU2xpY2VEYXRhLCBvbkV4cG9ydFZpc3VhbCwgb25FeHBvcnREYXRhLCBzd2l0Y2hWaWV3IH0gPSBvcHRpb25zO1xuICBjb25zdCBpbmRpY2F0b3JzID0gZ2V0SW5kaWNhdG9ySXRlbXMoY2hhcnRDb25maWcpO1xuICBjb25zdCBhY3RpdmVJbmRpY2F0b3IgPSBpbmRpY2F0b3JzLmZpbmQoaSA9PiBpLnNlbGVjdGVkKTtcblxuICBjb25zdCBiYXNlWEZpZWxkczogT3JnYW5pemVyWEZpZWxkW10gPSBnZXRHcm91cEl0ZW1zKGNoYXJ0Q29uZmlnKVxuICAgIC5maWx0ZXIoZyA9PiAhX2lzU3ludGhldGljKGcpKVxuICAgIC5tYXAoZyA9PiAoeyBpZDogZy5rZXksIGxhYmVsOiBnLm1lbnUubGFiZWwgfHwgZy5rZXkgfSkpO1xuXG4gIGNvbnN0IHlGaWVsZHMgPSBidWlsZFlGaWVsZHMoXG4gICAgaW5kaWNhdG9ycy5tYXAoaSA9PiAoeyBpZDogaS5rZXksIGxhYmVsOiBpLm1lbnUubGFiZWwgfHwgaS5rZXksIGdyb3VwOiBpLmdyb3VwIH0pKVxuICApO1xuXG4gIGNvbnN0IHN0YWNrRmllbGRzID0gZ2V0U3RhY2tJdGVtcyhhY3RpdmVJbmRpY2F0b3IpXG4gICAgLmZpbHRlcigoczogT3JnYW5pemVyQ2hhcnRJdGVtKSA9PiAhX2lzU3ludGhldGljKHMpKVxuICAgIC5tYXAoKHM6IE9yZ2FuaXplckNoYXJ0SXRlbSkgPT4gKHsgaWQ6IHMua2V5LCBsYWJlbDogcy5tZW51LmxhYmVsIHx8IHMua2V5IH0pKTtcblxuICBjb25zdCBzZWVuS2V5cyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICBjb25zdCBtZXJnZWRHcm91cEZpZWxkcyA9IFsuLi5iYXNlWEZpZWxkcywgLi4uc3RhY2tGaWVsZHNdLmZpbHRlcihmID0+IHtcbiAgICBpZiAoc2VlbktleXMuaGFzKGYuaWQpKSByZXR1cm4gZmFsc2U7XG4gICAgc2VlbktleXMuYWRkKGYuaWQpO1xuICAgIHJldHVybiB0cnVlO1xuICB9KTtcblxuICByZXR1cm4ge1xuICAgIHhGaWVsZHM6IG1lcmdlZEdyb3VwRmllbGRzLFxuICAgIHlGaWVsZHMsXG4gICAgZ3JvdXBzOiBtZXJnZWRHcm91cEZpZWxkcyxcbiAgICBzbGljZXM6IGdldEZpbHRlckl0ZW1zKGNoYXJ0Q29uZmlnKS5tYXAoZiA9PiAoeyBpZDogZi5rZXksIGxhYmVsOiBmLm1lbnUubGFiZWwgfHwgZi5rZXkgfSkgYXMgT3JnYW5pemVyVmlld1NsaWNlKSxcbiAgICB0ZW1wbGF0ZXM6IGNoYXJ0Q29uZmlnLnRlbXBsYXRlcyxcbiAgICBzaG93UmVzZXQ6IGZhbHNlLFxuICAgIG9uRmV0Y2hTbGljZURhdGEsXG4gICAgc2hvd0V4cG9ydDogISEob25FeHBvcnRWaXN1YWwgfHwgb25FeHBvcnREYXRhKSxcbiAgICBvbkV4cG9ydFZpc3VhbCxcbiAgICBvbkV4cG9ydERhdGEsXG4gICAgc3dpdGNoVmlldyxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNoYXJ0Q29uZmlnVG9TdGF0ZShjaGFydENvbmZpZzogT3JnYW5pemVyQ2hhcnRDb25maWcgfCBudWxsIHwgdW5kZWZpbmVkKTogT3JnYW5pemVyU3RhdGUge1xuICBpZiAoIWNoYXJ0Q29uZmlnKSB7XG4gICAgY29uc29sZS5kZWJ1ZygnW09yZ2FuaXplckNoYXJ0QWRhcHRlcl0gRW1wdHkgY2hhcnQgY29uZmlnIGZvciBzdGF0ZSBjb252ZXJzaW9uJyk7XG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgY29uc3QgaW5kaWNhdG9ycyA9IGdldEluZGljYXRvckl0ZW1zKGNoYXJ0Q29uZmlnKTtcbiAgY29uc3QgYWN0aXZlSW5kaWNhdG9yID0gaW5kaWNhdG9ycy5maW5kKGkgPT4gaS5zZWxlY3RlZCk7XG4gIGNvbnN0IGFjdGl2ZVN0YWNrID0gZ2V0U3RhY2tJdGVtcyhhY3RpdmVJbmRpY2F0b3IpLmZpbmQoKHM6IE9yZ2FuaXplckNoYXJ0SXRlbSkgPT4gcy5zZWxlY3RlZCk7XG4gIGNvbnN0IGFjdGl2ZUdyb3VwID0gZ2V0R3JvdXBJdGVtcyhjaGFydENvbmZpZykuZmluZChnID0+IGcuc2VsZWN0ZWQpO1xuICBjb25zdCBhY3RpdmVTbGljZXMgPSBnZXRGaWx0ZXJJdGVtcyhjaGFydENvbmZpZykuZmlsdGVyKGYgPT4gZi5zZWxlY3RlZCk7XG4gIGNvbnN0IGluZGljYXRvckdyb3VwID0gYWN0aXZlSW5kaWNhdG9yPy5ncm91cDtcblxuICBjb25zb2xlLmRlYnVnKCdbT3JnYW5pemVyQ2hhcnRBZGFwdGVyXSBDdXJyZW50IGNoYXJ0IHN0YXRlJywge1xuICAgIGFjdGl2ZUdyb3VwOiBhY3RpdmVHcm91cD8ua2V5LFxuICAgIGFjdGl2ZUluZGljYXRvcjogYWN0aXZlSW5kaWNhdG9yPy5rZXksXG4gICAgYWN0aXZlU3RhY2s6IGFjdGl2ZVN0YWNrPy5rZXksXG4gICAgc2xpY2VDb3VudDogYWN0aXZlU2xpY2VzLmxlbmd0aFxuICB9KTtcblxuICBjb25zdCBzdGF0ZSA9IHtcbiAgICBzZWxlY3RlZFg6IGFjdGl2ZUdyb3VwPy5rZXksXG4gICAgc2VsZWN0ZWRZOiBpbmRpY2F0b3JHcm91cCA/PyBhY3RpdmVJbmRpY2F0b3I/LmtleSxcbiAgICBzZWxlY3RlZFlBZ2dyZWdhdGU6IGluZGljYXRvckdyb3VwID8gYWN0aXZlSW5kaWNhdG9yPy5rZXkgOiB1bmRlZmluZWQsXG4gICAgc2VsZWN0ZWRHcm91cEJ5OiBhY3RpdmVTdGFjaz8ua2V5LFxuICAgIHNlbGVjdGVkU2xpY2VzOiBhY3RpdmVTbGljZXMubWFwKGYgPT4gZi5rZXkpLFxuICB9O1xuICBjb25zdCBvcmdhbml6ZXJDb25maWcgPSBjaGFydENvbmZpZ1RvT3JnYW5pemVyKGNoYXJ0Q29uZmlnKTtcbiAgcmV0dXJuIG5vcm1hbGl6ZU9yZ2FuaXplclN0YXRlKHN0YXRlLCBvcmdhbml6ZXJDb25maWcpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRPcmdhbml6ZXJDaGFydEJpbmRpbmcoXG4gIGNoYXJ0Q29uZmlnOiBPcmdhbml6ZXJDaGFydENvbmZpZyB8IG51bGwgfCB1bmRlZmluZWQsXG4gIG9wdGlvbnM6IE9yZ2FuaXplckNoYXJ0QnJpZGdlT3B0aW9ucyA9IHt9XG4pOiBPcmdhbml6ZXJDaGFydEJpbmRpbmcge1xuICByZXR1cm4ge1xuICAgIGNvbmZpZzogY2hhcnRDb25maWdUb09yZ2FuaXplcihjaGFydENvbmZpZywgb3B0aW9ucyksXG4gICAgc3RhdGU6IGNoYXJ0Q29uZmlnVG9TdGF0ZShjaGFydENvbmZpZylcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNoYXJ0Q29uZmlnVG9VbmlmaWVkU3RhdGUoXG4gIGNoYXJ0Q29uZmlnOiBPcmdhbml6ZXJDaGFydENvbmZpZyB8IG51bGwgfCB1bmRlZmluZWQsXG4gIHZpZXdNb2RlOiAnY2hhcnQnIHwgJ3RhYmxlJyA9ICdjaGFydCdcbik6IE9yZ2FuaXplclVuaWZpZWRTdGF0ZSB7XG4gIGNvbnN0IHN0YXRlID0gY2hhcnRDb25maWdUb1N0YXRlKGNoYXJ0Q29uZmlnKTtcbiAgcmV0dXJuIHtcbiAgICB2aWV3TW9kZSxcbiAgICBkaW1lbnNpb246IHN0YXRlLnNlbGVjdGVkWCxcbiAgICBtZXRyaWM6IHJlc29sdmVZS2V5KHN0YXRlLnNlbGVjdGVkWSwgc3RhdGUuc2VsZWN0ZWRZQWdncmVnYXRlKSxcbiAgICBtZXRyaWNBZ2dyZWdhdGU6IHN0YXRlLnNlbGVjdGVkWUFnZ3JlZ2F0ZSxcbiAgICBicmVha2Rvd246IHN0YXRlLnNlbGVjdGVkR3JvdXBCeSxcbiAgICBmaWx0ZXJzOiBzdGF0ZS5zZWxlY3RlZFNsaWNlcyxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5T3JnYW5pemVyRXZlbnRUb0NoYXJ0KFxuICBldmVudDogT3JnYW5pemVyQnV0dG9uRXZlbnQsXG4gIGNoYXJ0Q29uZmlnOiBPcmdhbml6ZXJDaGFydENvbmZpZyB8IG51bGwgfCB1bmRlZmluZWRcbik6IHZvaWQge1xuICBpZiAoIWNoYXJ0Q29uZmlnKSB7XG4gICAgY29uc29sZS5kZWJ1ZygnW09yZ2FuaXplckNoYXJ0QWRhcHRlcl0gQ2Fubm90IGFwcGx5IGV2ZW50IHRvIGVtcHR5IGNoYXJ0IGNvbmZpZycpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnNvbGUuZGVidWcoJ1tPcmdhbml6ZXJDaGFydEFkYXB0ZXJdIEFwcGx5aW5nIG9yZ2FuaXplciBldmVudCcsIHsgZXZlbnRUeXBlOiBldmVudC50eXBlLCBzdGF0ZTogZXZlbnQuc3RhdGUgfSk7XG5cbiAgY29uc3Qgc3RhdGUgPSBldmVudC5zdGF0ZTtcbiAgX2NsZWFuU3ludGhldGljcyhjaGFydENvbmZpZyk7XG4gIGlmIChzdGF0ZS5zZWxlY3RlZFggIT09IHVuZGVmaW5lZCkgX2FwcGx5WFNlbGVjdGlvbihzdGF0ZS5zZWxlY3RlZFgsIGNoYXJ0Q29uZmlnKTtcbiAgaWYgKHN0YXRlLnNlbGVjdGVkWSAhPT0gdW5kZWZpbmVkKSBfYXBwbHlZU2VsZWN0aW9uKHN0YXRlLnNlbGVjdGVkWSwgc3RhdGUuc2VsZWN0ZWRZQWdncmVnYXRlLCBjaGFydENvbmZpZyk7XG4gIGNvbnN0IGVmZmVjdGl2ZUdyb3VwQnkgPSBzdGF0ZS5zZWxlY3RlZEdyb3VwQnkgIT09IHN0YXRlLnNlbGVjdGVkWCA/IHN0YXRlLnNlbGVjdGVkR3JvdXBCeSA6IHVuZGVmaW5lZDtcbiAgX2FwcGx5R3JvdXBCeVNlbGVjdGlvbihlZmZlY3RpdmVHcm91cEJ5LCBjaGFydENvbmZpZyk7XG4gIGlmIChzdGF0ZS5zZWxlY3RlZFNsaWNlcyAhPT0gdW5kZWZpbmVkKSBfYXBwbHlTbGljZVNlbGVjdGlvbihzdGF0ZS5zZWxlY3RlZFNsaWNlcywgY2hhcnRDb25maWcpO1xuICBldmVudC5yZXNvbHZlZFlVbml0ID0gcmVzb2x2ZVlVbml0KGNoYXJ0Q29uZmlnLCBldmVudC5zdGF0ZS5zZWxlY3RlZFksIGV2ZW50LnN0YXRlLnNlbGVjdGVkWUFnZ3JlZ2F0ZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoYW5kbGVPcmdhbml6ZXJDaGFydEV2ZW50KFxuICBldmVudDogT3JnYW5pemVyQnV0dG9uRXZlbnQsXG4gIGNoYXJ0Q29uZmlnOiBPcmdhbml6ZXJDaGFydENvbmZpZyB8IG51bGwgfCB1bmRlZmluZWQsXG4gIGN1cnJlbnRCaW5kaW5nOiBPcmdhbml6ZXJDaGFydEJpbmRpbmcgfCB1bmRlZmluZWQsXG4gIG9wdGlvbnM6IE9yZ2FuaXplckNoYXJ0QnJpZGdlT3B0aW9ucyA9IHt9XG4pOiBPcmdhbml6ZXJDaGFydEV2ZW50UmVzdWx0IHtcbiAgY29uc29sZS5kZWJ1ZygnW09yZ2FuaXplckNoYXJ0QWRhcHRlcl0gSGFuZGxpbmcgb3JnYW5pemVyIGV2ZW50JywgeyBldmVudFR5cGU6IGV2ZW50LnR5cGUgfSk7XG5cbiAgaWYgKGV2ZW50LnR5cGUgPT09ICd2aWV3U3dpdGNoZWQnKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGJpbmRpbmc6IHtcbiAgICAgICAgY29uZmlnOiBjaGFydENvbmZpZ1RvT3JnYW5pemVyKGNoYXJ0Q29uZmlnLCBvcHRpb25zKSxcbiAgICAgICAgc3RhdGU6IHsgLi4uZXZlbnQuc3RhdGUgfVxuICAgICAgfSxcbiAgICAgIHNob3VsZFJlZmV0Y2g6IGZhbHNlXG4gICAgfTtcbiAgfVxuXG4gIGFwcGx5T3JnYW5pemVyRXZlbnRUb0NoYXJ0KGV2ZW50LCBjaGFydENvbmZpZyk7XG5cbiAgaWYgKGV2ZW50LnR5cGUgPT09ICd5U2VsZWN0ZWQnIHx8IGV2ZW50LnR5cGUgPT09ICd0ZW1wbGF0ZVNlbGVjdGVkJykge1xuICAgIHJldHVybiB7XG4gICAgICBiaW5kaW5nOiBidWlsZE9yZ2FuaXplckNoYXJ0QmluZGluZyhjaGFydENvbmZpZywgb3B0aW9ucyksXG4gICAgICBzaG91bGRSZWZldGNoOiB0cnVlXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgYmluZGluZzoge1xuICAgICAgY29uZmlnOiBjdXJyZW50QmluZGluZz8uY29uZmlnID8/IGNoYXJ0Q29uZmlnVG9Pcmdhbml6ZXIoY2hhcnRDb25maWcsIG9wdGlvbnMpLFxuICAgICAgc3RhdGU6IGV2ZW50LnN0YXRlXG4gICAgfSxcbiAgICBzaG91bGRSZWZldGNoOiBldmVudC50eXBlICE9PSAnc2xpY2VTZWxlY3RlZCdcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVZVW5pdChcbiAgY2hhcnRDb25maWc6IE9yZ2FuaXplckNoYXJ0Q29uZmlnIHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgc2VsZWN0ZWRZOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gIHNlbGVjdGVkWUFnZ3JlZ2F0ZTogc3RyaW5nIHwgdW5kZWZpbmVkXG4pOiBzdHJpbmcgfCBVbml0Q29uZmlnIHwgdW5kZWZpbmVkIHtcbiAgaWYgKCFjaGFydENvbmZpZyB8fCAhc2VsZWN0ZWRZKSByZXR1cm4gdW5kZWZpbmVkO1xuICBjb25zdCBhY3R1YWxLZXkgPSByZXNvbHZlWUtleShzZWxlY3RlZFksIHNlbGVjdGVkWUFnZ3JlZ2F0ZSk7XG4gIHJldHVybiBnZXRJbmRpY2F0b3JJdGVtcyhjaGFydENvbmZpZykuZmluZChpID0+IGkua2V5ID09PSBhY3R1YWxLZXkpPy51bml0O1xufVxuXG5jb25zdCBfc3ludGhldGljSXRlbXMgPSBuZXcgV2Vha1NldDxPcmdhbml6ZXJDaGFydEl0ZW0+KCk7XG5cbmZ1bmN0aW9uIF9tYWtlU3ludGhldGljKGl0ZW06IE9yZ2FuaXplckNoYXJ0SXRlbSk6IE9yZ2FuaXplckNoYXJ0SXRlbSB7XG4gIF9zeW50aGV0aWNJdGVtcy5hZGQoaXRlbSk7XG4gIHJldHVybiBpdGVtO1xufVxuXG5mdW5jdGlvbiBfaXNTeW50aGV0aWMoaXRlbTogT3JnYW5pemVyQ2hhcnRJdGVtKTogYm9vbGVhbiB7XG4gIHJldHVybiBfc3ludGhldGljSXRlbXMuaGFzKGl0ZW0pO1xufVxuXG5mdW5jdGlvbiBfY2xlYW5TeW50aGV0aWNzKGNoYXJ0Q29uZmlnOiBPcmdhbml6ZXJDaGFydENvbmZpZyk6IHZvaWQge1xuICBpZiAoY2hhcnRDb25maWcuZ3JvdXBzPy5pdGVtcykge1xuICAgIGNoYXJ0Q29uZmlnLmdyb3Vwcy5pdGVtcyA9IGNoYXJ0Q29uZmlnLmdyb3Vwcy5pdGVtcy5maWx0ZXIoZyA9PiAhX2lzU3ludGhldGljKGcpKTtcbiAgfVxuICBpZiAoY2hhcnRDb25maWcuaW5kaWNhdG9ycz8uaXRlbXMpIHtcbiAgICBjaGFydENvbmZpZy5pbmRpY2F0b3JzLml0ZW1zLmZvckVhY2goaW5kID0+IHtcbiAgICAgIGlmIChpbmQuZXh0cmE/LnN0YWNrcz8uaXRlbXMpIHtcbiAgICAgICAgaW5kLmV4dHJhLnN0YWNrcy5pdGVtcyA9IGluZC5leHRyYS5zdGFja3MuaXRlbXMuZmlsdGVyKChzOiBPcmdhbml6ZXJDaGFydEl0ZW0pID0+ICFfaXNTeW50aGV0aWMocykpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG5cbmZ1bmN0aW9uIF9hcHBseVhTZWxlY3Rpb24oc2VsZWN0ZWRYOiBzdHJpbmcsIGNoYXJ0Q29uZmlnOiBPcmdhbml6ZXJDaGFydENvbmZpZyk6IHZvaWQge1xuICBjb25zdCBncm91cEl0ZW1zID0gZ2V0R3JvdXBJdGVtcyhjaGFydENvbmZpZyk7XG4gIGNvbnN0IGlzR3JvdXBJdGVtID0gZ3JvdXBJdGVtcy5zb21lKGcgPT4gZy5rZXkgPT09IHNlbGVjdGVkWCk7XG4gIGlmIChpc0dyb3VwSXRlbSkge1xuICAgIGdyb3VwSXRlbXMuZm9yRWFjaChnID0+IHsgZy5zZWxlY3RlZCA9IGcua2V5ID09PSBzZWxlY3RlZFg7IH0pO1xuICAgIHJldHVybjtcbiAgfVxuICBjb25zdCBpbmRpY2F0b3JzID0gZ2V0SW5kaWNhdG9ySXRlbXMoY2hhcnRDb25maWcpO1xuICBjb25zdCBhbGxTdGFja3M6IE9yZ2FuaXplckNoYXJ0SXRlbVtdID0gaW5kaWNhdG9ycy5mbGF0TWFwKGkgPT4gZ2V0U3RhY2tJdGVtcyhpKSk7XG4gIGNvbnN0IHN0YWNrSXRlbSA9IGFsbFN0YWNrcy5maW5kKHMgPT4gcy5rZXkgPT09IHNlbGVjdGVkWCk7XG4gIGlmIChzdGFja0l0ZW0pIHtcbiAgICBncm91cEl0ZW1zLmZvckVhY2goZyA9PiB7IGcuc2VsZWN0ZWQgPSBmYWxzZTsgfSk7XG4gICAgZ3JvdXBJdGVtcy5wdXNoKF9tYWtlU3ludGhldGljKHtcbiAgICAgIGtleTogc3RhY2tJdGVtLmtleSxcbiAgICAgIHNlbGVjdGVkOiB0cnVlLFxuICAgICAgbWVudTogc3RhY2tJdGVtLm1lbnUsXG4gICAgICBqcXVlcnk6IHN0YWNrSXRlbS5qcXVlcnlcbiAgICAgICAgPyB7IHZhbHVlOiAoKSA9PiBzdGFja0l0ZW0uanF1ZXJ5IS52YWx1ZSgpLCBidWlsZEFsaWFzOiAoKSA9PiBzdGFja0l0ZW0uanF1ZXJ5IS5idWlsZEFsaWFzKCkgfVxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICB9KSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gX2FwcGx5WVNlbGVjdGlvbihzZWxlY3RlZFk6IHN0cmluZywgc2VsZWN0ZWRZQWdncmVnYXRlOiBzdHJpbmcgfCB1bmRlZmluZWQsIGNoYXJ0Q29uZmlnOiBPcmdhbml6ZXJDaGFydENvbmZpZyk6IHZvaWQge1xuICBjb25zdCBhY3R1YWxLZXkgPSByZXNvbHZlWUtleShzZWxlY3RlZFksIHNlbGVjdGVkWUFnZ3JlZ2F0ZSk7XG4gIGNvbnN0IGluZGljYXRvcnMgPSBnZXRJbmRpY2F0b3JJdGVtcyhjaGFydENvbmZpZyk7XG4gIGluZGljYXRvcnMuZm9yRWFjaChpID0+IHsgaS5zZWxlY3RlZCA9IGkua2V5ID09PSBhY3R1YWxLZXk7IH0pO1xuICBpbmRpY2F0b3JzLmZvckVhY2goaSA9PiB7XG4gICAgZ2V0U3RhY2tJdGVtcyhpKS5mb3JFYWNoKChzOiBPcmdhbml6ZXJDaGFydEl0ZW0pID0+IHsgcy5zZWxlY3RlZCA9IGZhbHNlOyB9KTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIF9hcHBseUdyb3VwQnlTZWxlY3Rpb24oZWZmZWN0aXZlR3JvdXBCeTogc3RyaW5nIHwgdW5kZWZpbmVkLCBjaGFydENvbmZpZzogT3JnYW5pemVyQ2hhcnRDb25maWcpOiB2b2lkIHtcbiAgY29uc3QgYWN0aXZlSW5kaWNhdG9yID0gZ2V0SW5kaWNhdG9ySXRlbXMoY2hhcnRDb25maWcpLmZpbmQoaSA9PiBpLnNlbGVjdGVkKTtcbiAgY29uc3Qgc3RhY2tJdGVtczogT3JnYW5pemVyQ2hhcnRJdGVtW10gPSBnZXRTdGFja0l0ZW1zKGFjdGl2ZUluZGljYXRvcik7XG4gIGlmIChlZmZlY3RpdmVHcm91cEJ5ID09PSB1bmRlZmluZWQpIHtcbiAgICBzdGFja0l0ZW1zLmZvckVhY2gocyA9PiB7IHMuc2VsZWN0ZWQgPSBmYWxzZTsgfSk7XG4gICAgcmV0dXJuO1xuICB9XG4gIGNvbnN0IGlzU3RhY2tJdGVtID0gc3RhY2tJdGVtcy5zb21lKHMgPT4gcy5rZXkgPT09IGVmZmVjdGl2ZUdyb3VwQnkpO1xuICBpZiAoaXNTdGFja0l0ZW0pIHtcbiAgICBzdGFja0l0ZW1zLmZvckVhY2gocyA9PiB7IHMuc2VsZWN0ZWQgPSBzLmtleSA9PT0gZWZmZWN0aXZlR3JvdXBCeTsgfSk7XG4gICAgcmV0dXJuO1xuICB9XG4gIGNvbnN0IGdyb3VwSXRlbSA9IGdldEdyb3VwSXRlbXMoY2hhcnRDb25maWcpLmZpbmQoZyA9PiBnLmtleSA9PT0gZWZmZWN0aXZlR3JvdXBCeSk7XG4gIGlmIChncm91cEl0ZW0gJiYgYWN0aXZlSW5kaWNhdG9yKSB7XG4gICAgc3RhY2tJdGVtcy5mb3JFYWNoKHMgPT4geyBzLnNlbGVjdGVkID0gZmFsc2U7IH0pO1xuICAgIGlmICghYWN0aXZlSW5kaWNhdG9yLmV4dHJhKSB7XG4gICAgICBhY3RpdmVJbmRpY2F0b3IuZXh0cmEgPSB7IHN0YWNrczogeyBvcHRpb25hbDogdHJ1ZSwgaXRlbXM6IFtdIH0gfTtcbiAgICB9IGVsc2UgaWYgKCFhY3RpdmVJbmRpY2F0b3IuZXh0cmEuc3RhY2tzKSB7XG4gICAgICBhY3RpdmVJbmRpY2F0b3IuZXh0cmEuc3RhY2tzID0geyBvcHRpb25hbDogdHJ1ZSwgaXRlbXM6IFtdIH07XG4gICAgfVxuICAgIGFjdGl2ZUluZGljYXRvci5leHRyYS5zdGFja3MuaXRlbXMucHVzaChfbWFrZVN5bnRoZXRpYyh7XG4gICAgICBrZXk6IGdyb3VwSXRlbS5rZXksXG4gICAgICBzZWxlY3RlZDogdHJ1ZSxcbiAgICAgIG1lbnU6IGdyb3VwSXRlbS5tZW51LFxuICAgICAganF1ZXJ5OiBncm91cEl0ZW0uanF1ZXJ5ID8ge1xuICAgICAgICB2YWx1ZTogKCkgPT4gZ3JvdXBJdGVtLmpxdWVyeSEudmFsdWUoKSxcbiAgICAgICAgYnVpbGRBbGlhczogKCkgPT4gZ3JvdXBJdGVtLmpxdWVyeSEuYnVpbGRBbGlhcygpLFxuICAgICAgICBidWlsZE5hbWU6IChfaXRlbTogYW55LCB2YWx1ZTogc3RyaW5nKSA9PiBTdHJpbmcodmFsdWUpLFxuICAgICAgfSA6IHVuZGVmaW5lZCxcbiAgICB9KSk7XG4gIH0gZWxzZSB7XG4gICAgc3RhY2tJdGVtcy5mb3JFYWNoKHMgPT4geyBzLnNlbGVjdGVkID0gZmFsc2U7IH0pO1xuICB9XG59XG5cbmZ1bmN0aW9uIF9hcHBseVNsaWNlU2VsZWN0aW9uKHNlbGVjdGVkU2xpY2VzOiBzdHJpbmdbXSwgY2hhcnRDb25maWc6IE9yZ2FuaXplckNoYXJ0Q29uZmlnKTogdm9pZCB7XG4gIGdldEZpbHRlckl0ZW1zKGNoYXJ0Q29uZmlnKS5mb3JFYWNoKGYgPT4geyBmLnNlbGVjdGVkID0gc2VsZWN0ZWRTbGljZXMuaW5jbHVkZXMoZi5rZXkpOyB9KTtcbn1cblxuIl19
|
|
228
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JnYW5pemVyLWNoYXJ0LWFkYXB0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbmV0ZW1lL2pxdWVyeS1vcmdhbml6ZXIvc3JjL2xpYi9tb2RlbHMvb3JnYW5pemVyLWNoYXJ0LWFkYXB0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFlBQVksRUFBRSx1QkFBdUIsRUFBRSxXQUFXLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUV2RixPQUFPLEVBQXdCLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFakksT0FBTyxFQUF3QixhQUFhLEVBQUUsaUJBQWlCLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBMENqSSxNQUFNLFVBQVUsc0JBQXNCLENBQ3BDLFdBQW9ELEVBQ3BELFVBQXVDLEVBQUU7SUFFekMsSUFBSSxDQUFDLFdBQVcsRUFBRTtRQUNoQixPQUFPLENBQUMsS0FBSyxDQUFDLDhFQUE4RSxDQUFDLENBQUM7UUFDOUYsT0FBTyxFQUFFLENBQUM7S0FDWDtJQUVELE9BQU8sQ0FBQyxLQUFLLENBQUMsOERBQThELEVBQUU7UUFDNUUsU0FBUyxFQUFFLENBQUMsQ0FBQyxXQUFXLENBQUMsTUFBTTtRQUMvQixjQUFjLEVBQUUsV0FBVyxDQUFDLFVBQVUsRUFBRSxLQUFLLEVBQUUsTUFBTSxJQUFJLENBQUM7UUFDMUQsV0FBVyxFQUFFLFdBQVcsQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDO0tBQ3JELENBQUMsQ0FBQztJQUVILE1BQU0sRUFBRSxnQkFBZ0IsRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxHQUFHLE9BQU8sQ0FBQztJQUMvRSxNQUFNLFVBQVUsR0FBRyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNs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QUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUNsRDtBQUNILENBQUM7QUFFRCxTQUFTLG9CQUFvQixDQUFDLGNBQXdCLEVBQUUsV0FBaUM7SUFDdkYsY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFRLEdBQUcsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM3RixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT3JnYW5pemVyQnV0dG9uRXZlbnQsIE9yZ2FuaXplckNvbmZpZywgT3JnYW5pemVyU3RhdGUsIE9yZ2FuaXplclVuaWZpZWRTdGF0ZSwgT3JnYW5pemVyVmlld1NsaWNlLCBPcmdhbml6ZXJYRmllbGQgfSBmcm9tICcuL29yZ2FuaXplci1jb25maWcuaW50ZXJmYWNlJztcbmltcG9ydCB7IGJ1aWxkWUZpZWxkcywgbm9ybWFsaXplT3JnYW5pemVyU3RhdGUsIHJlc29sdmVZS2V5IH0gZnJvbSAnLi9vcmdhbml6ZXItdXRpbHMnO1xuaW1wb3J0IHsgVW5pdENvbmZpZyB9IGZyb20gJ0BvbmV0ZW1lL2pxdWVyeS1jb3JlJztcbmltcG9ydCB7IE9yZ2FuaXplckNoYXJ0Q29uZmlnLCBnZXRHcm91cEl0ZW1zLCBnZXRJbmRpY2F0b3JJdGVtcywgZ2V0RmlsdGVySXRlbXMsIGdldFN0YWNrSXRlbXMgfSBmcm9tICcuL29yZ2FuaXplci1jaGFydC1jb25maWcnO1xuXG5leHBvcnQgeyBPcmdhbml6ZXJDaGFydENvbmZpZywgZ2V0R3JvdXBJdGVtcywgZ2V0SW5kaWNhdG9ySXRlbXMsIGdldEZpbHRlckl0ZW1zLCBnZXRTdGFja0l0ZW1zIH0gZnJvbSAnLi9vcmdhbml6ZXItY2hhcnQtY29uZmlnJztcblxuZXhwb3J0IGludGVyZmFjZSBPcmdhbml6ZXJDaGFydEl0ZW0ge1xuICBrZXk6IHN0cmluZztcbiAgc2VsZWN0ZWQ6IGJvb2xlYW47XG4gIG1lbnU6IHsgbGFiZWw6IHN0cmluZyB9O1xuICB1bml0Pzogc3RyaW5nIHwgVW5pdENvbmZpZztcbiAganF1ZXJ5Pzoge1xuICAgIHZhbHVlOiAocz86IHN0cmluZykgPT4gc3RyaW5nO1xuICAgIGJ1aWxkQWxpYXM6IChzPzogc3RyaW5nKSA9PiBzdHJpbmc7XG4gICAgYnVpbGROYW1lPzogKGl0ZW06IGFueSwgdmFsdWU/OiBzdHJpbmcpID0+IHN0cmluZztcbiAgICBidWlsZENvbG9yPzogKHZhbHVlPzogc3RyaW5nKSA9PiBzdHJpbmc7XG4gIH07XG4gIGdyb3VwPzogc3RyaW5nO1xuICBleHRyYT86IHtcbiAgICBzdGFja3M/OiB7IG9wdGlvbmFsOiBib29sZWFuOyBpdGVtczogT3JnYW5pemVyQ2hhcnRJdGVtW10gfTtcbiAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT3JnYW5pemVyQ2hhcnRTZWN0aW9uIHtcbiAgb3B0aW9uYWw6IGJvb2xlYW47XG4gIGl0ZW1zOiBPcmdhbml6ZXJDaGFydEl0ZW1bXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPcmdhbml6ZXJDaGFydEJyaWRnZU9wdGlvbnMge1xuICBvbkZldGNoU2xpY2VEYXRhPzogT3JnYW5pemVyQ29uZmlnWydvbkZldGNoU2xpY2VEYXRhJ107XG4gIG9uRXhwb3J0VmlzdWFsPzogKCkgPT4gdm9pZDtcbiAgb25FeHBvcnREYXRhPzogKCkgPT4gdm9pZDtcbiAgc3dpdGNoVmlldz86IE9yZ2FuaXplckNvbmZpZ1snc3dpdGNoVmlldyddO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9yZ2FuaXplckNoYXJ0QmluZGluZyB7XG4gIGNvbmZpZzogT3JnYW5pemVyQ29uZmlnO1xuICBzdGF0ZTogT3JnYW5pemVyU3RhdGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT3JnYW5pemVyQ2hhcnRFdmVudFJlc3VsdCB7XG4gIGJpbmRpbmc6IE9yZ2FuaXplckNoYXJ0QmluZGluZztcbiAgc2hvdWxkUmVmZXRjaDogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNoYXJ0Q29uZmlnVG9Pcmdhbml6ZXIoXG4gIGNoYXJ0Q29uZmlnOiBPcmdhbml6ZXJDaGFydENvbmZpZyB8IG51bGwgfCB1bmRlZmluZWQsXG4gIG9wdGlvbnM6IE9yZ2FuaXplckNoYXJ0QnJpZGdlT3B0aW9ucyA9IHt9XG4pOiBPcmdhbml6ZXJDb25maWcge1xuICBpZiAoIWNoYXJ0Q29uZmlnKSB7XG4gICAgY29uc29sZS5kZWJ1ZygnW09yZ2FuaXplckNoYXJ0QWRhcHRlcl0gRW1wdHkgY2hhcnQgY29uZmlnLCByZXR1cm5pbmcgZW1wdHkgb3JnYW5pemVyIGNvbmZpZycpO1xuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIGNvbnNvbGUuZGVidWcoJ1tPcmdhbml6ZXJDaGFydEFkYXB0ZXJdIENvbnZlcnRpbmcgY2hhcnQgY29uZmlnIHRvIG9yZ2FuaXplcicsIHtcbiAgICBoYXNHcm91cHM6ICEhY2hhcnRDb25maWcuZ3JvdXBzLFxuICAgIGluZGljYXRvckNvdW50OiBjaGFydENvbmZpZy5pbmRpY2F0b3JzPy5pdGVtcz8ubGVuZ3RoID8/IDAsXG4gICAgZmlsdGVyQ291bnQ6IGNoYXJ0Q29uZmlnLmZpbHRlcnM/Lml0ZW1zPy5sZW5ndGggPz8gMFxuICB9KTtcblxuICBjb25zdCB7IG9uRmV0Y2hTbGljZURhdGEsIG9uRXhwb3J0VmlzdWFsLCBvbkV4cG9ydERhdGEsIHN3aXRjaFZpZXcgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IGluZGljYXRvcnMgPSBnZXRJbmRpY2F0b3JJdGVtcyhjaGFydENvbmZpZyk7XG4gIGNvbnN0IGFjdGl2ZUluZGljYXRvciA9IGluZGljYXRvcnMuZmluZChpID0+IGkuc2VsZWN0ZWQpO1xuXG4gIGNvbnN0IGJhc2VYRmllbGRzOiBPcmdhbml6ZXJYRmllbGRbXSA9IGdldEdyb3VwSXRlbXMoY2hhcnRDb25maWcpXG4gICAgLmZpbHRlcihnID0+ICFfaXNTeW50aGV0aWMoZykpXG4gICAgLm1hcChnID0+ICh7IGlkOiBnLmtleSwgbGFiZWw6IGcubWVudS5sYWJlbCB8fCBnLmtleSB9KSk7XG5cbiAgY29uc3QgeUZpZWxkcyA9IGJ1aWxkWUZpZWxkcyhcbiAgICBpbmRpY2F0b3JzLm1hcChpID0+ICh7IGlkOiBpLmtleSwgbGFiZWw6IGkubWVudS5sYWJlbCB8fCBpLmtleSwgZ3JvdXA6IGkuZ3JvdXAgfSkpXG4gICk7XG5cbiAgY29uc3Qgc3RhY2tGaWVsZHMgPSBnZXRTdGFja0l0ZW1zKGFjdGl2ZUluZGljYXRvcilcbiAgICAuZmlsdGVyKChzOiBPcmdhbml6ZXJDaGFydEl0ZW0pID0+ICFfaXNTeW50aGV0aWMocykpXG4gICAgLm1hcCgoczogT3JnYW5pemVyQ2hhcnRJdGVtKSA9PiAoeyBpZDogcy5rZXksIGxhYmVsOiBzLm1lbnUubGFiZWwgfHwgcy5rZXkgfSkpO1xuXG4gIGNvbnN0IHNlZW5LZXlzID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gIGNvbnN0IG1lcmdlZEdyb3VwRmllbGRzID0gWy4uLmJhc2VYRmllbGRzLCAuLi5zdGFja0ZpZWxkc10uZmlsdGVyKGYgPT4ge1xuICAgIGlmIChzZWVuS2V5cy5oYXMoZi5pZCkpIHJldHVybiBmYWxzZTtcbiAgICBzZWVuS2V5cy5hZGQoZi5pZCk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0pO1xuXG4gIHJldHVybiB7XG4gICAgeEZpZWxkczogbWVyZ2VkR3JvdXBGaWVsZHMsXG4gICAgeUZpZWxkcyxcbiAgICBncm91cHM6IG1lcmdlZEdyb3VwRmllbGRzLFxuICAgIHNsaWNlczogZ2V0RmlsdGVySXRlbXMoY2hhcnRDb25maWcpLm1hcChmID0+ICh7IGlkOiBmLmtleSwgbGFiZWw6IGYubWVudS5sYWJlbCB8fCBmLmtleSB9KSBhcyBPcmdhbml6ZXJWaWV3U2xpY2UpLFxuICAgIHRlbXBsYXRlczogY2hhcnRDb25maWcudGVtcGxhdGVzLFxuICAgIHNob3dSZXNldDogZmFsc2UsXG4gICAgb25GZXRjaFNsaWNlRGF0YSxcbiAgICBzaG93RXhwb3J0OiAhIShvbkV4cG9ydFZpc3VhbCB8fCBvbkV4cG9ydERhdGEpLFxuICAgIG9uRXhwb3J0VmlzdWFsLFxuICAgIG9uRXhwb3J0RGF0YSxcbiAgICBzd2l0Y2hWaWV3LFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2hhcnRDb25maWdUb1N0YXRlKGNoYXJ0Q29uZmlnOiBPcmdhbml6ZXJDaGFydENvbmZpZyB8IG51bGwgfCB1bmRlZmluZWQpOiBPcmdhbml6ZXJTdGF0ZSB7XG4gIGlmICghY2hhcnRDb25maWcpIHtcbiAgICBjb25zb2xlLmRlYnVnKCdbT3JnYW5pemVyQ2hhcnRBZGFwdGVyXSBFbXB0eSBjaGFydCBjb25maWcgZm9yIHN0YXRlIGNvbnZlcnNpb24nKTtcbiAgICByZXR1cm4ge307XG4gIH1cblxuICBjb25zdCBpbmRpY2F0b3JzID0gZ2V0SW5kaWNhdG9ySXRlbXMoY2hhcnRDb25maWcpO1xuICBjb25zdCBhY3RpdmVJbmRpY2F0b3IgPSBpbmRpY2F0b3JzLmZpbmQoaSA9PiBpLnNlbGVjdGVkKTtcbiAgY29uc3QgYWN0aXZlU3RhY2sgPSBnZXRTdGFja0l0ZW1zKGFjdGl2ZUluZGljYXRvcikuZmluZCgoczogT3JnYW5pemVyQ2hhcnRJdGVtKSA9PiBzLnNlbGVjdGVkKTtcbiAgY29uc3QgYWN0aXZlR3JvdXAgPSBnZXRHcm91cEl0ZW1zKGNoYXJ0Q29uZmlnKS5maW5kKGcgPT4gZy5zZWxlY3RlZCk7XG4gIGNvbnN0IGFjdGl2ZVNsaWNlcyA9IGdldEZpbHRlckl0ZW1zKGNoYXJ0Q29uZmlnKS5maWx0ZXIoZiA9PiBmLnNlbGVjdGVkKTtcbiAgY29uc3QgaW5kaWNhdG9yR3JvdXAgPSBhY3RpdmVJbmRpY2F0b3I/Lmdyb3VwO1xuXG4gIGNvbnNvbGUuZGVidWcoJ1tPcmdhbml6ZXJDaGFydEFkYXB0ZXJdIEN1cnJlbnQgY2hhcnQgc3RhdGUnLCB7XG4gICAgYWN0aXZlR3JvdXA6IGFjdGl2ZUdyb3VwPy5rZXksXG4gICAgYWN0aXZlSW5kaWNhdG9yOiBhY3RpdmVJbmRpY2F0b3I/LmtleSxcbiAgICBhY3RpdmVTdGFjazogYWN0aXZlU3RhY2s/LmtleSxcbiAgICBzbGljZUNvdW50OiBhY3RpdmVTbGljZXMubGVuZ3RoXG4gIH0pO1xuXG4gIGNvbnN0IHN0YXRlID0ge1xuICAgIHNlbGVjdGVkWDogYWN0aXZlR3JvdXA/LmtleSxcbiAgICBzZWxlY3RlZFk6IGluZGljYXRvckdyb3VwID8/IGFjdGl2ZUluZGljYXRvcj8ua2V5LFxuICAgIHNlbGVjdGVkWUFnZ3JlZ2F0ZTogaW5kaWNhdG9yR3JvdXAgPyBhY3RpdmVJbmRpY2F0b3I/LmtleSA6IHVuZGVmaW5lZCxcbiAgICBzZWxlY3RlZEdyb3VwQnk6IGFjdGl2ZVN0YWNrPy5rZXksXG4gICAgc2VsZWN0ZWRTbGljZXM6IGFjdGl2ZVNsaWNlcy5tYXAoZiA9PiBmLmtleSksXG4gIH07XG4gIGNvbnN0IG9yZ2FuaXplckNvbmZpZyA9IGNoYXJ0Q29uZmlnVG9Pcmdhbml6ZXIoY2hhcnRDb25maWcpO1xuICByZXR1cm4gbm9ybWFsaXplT3JnYW5pemVyU3RhdGUoc3RhdGUsIG9yZ2FuaXplckNvbmZpZyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWlsZE9yZ2FuaXplckNoYXJ0QmluZGluZyhcbiAgY2hhcnRDb25maWc6IE9yZ2FuaXplckNoYXJ0Q29uZmlnIHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgb3B0aW9uczogT3JnYW5pemVyQ2hhcnRCcmlkZ2VPcHRpb25zID0ge31cbik6IE9yZ2FuaXplckNoYXJ0QmluZGluZyB7XG4gIHJldHVybiB7XG4gICAgY29uZmlnOiBjaGFydENvbmZpZ1RvT3JnYW5pemVyKGNoYXJ0Q29uZmlnLCBvcHRpb25zKSxcbiAgICBzdGF0ZTogY2hhcnRDb25maWdUb1N0YXRlKGNoYXJ0Q29uZmlnKVxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2hhcnRDb25maWdUb1VuaWZpZWRTdGF0ZShcbiAgY2hhcnRDb25maWc6IE9yZ2FuaXplckNoYXJ0Q29uZmlnIHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgdmlld01vZGU6ICdjaGFydCcgfCAndGFibGUnID0gJ2NoYXJ0J1xuKTogT3JnYW5pemVyVW5pZmllZFN0YXRlIHtcbiAgY29uc3Qgc3RhdGUgPSBjaGFydENvbmZpZ1RvU3RhdGUoY2hhcnRDb25maWcpO1xuICByZXR1cm4ge1xuICAgIHZpZXdNb2RlLFxuICAgIGRpbWVuc2lvbjogc3RhdGUuc2VsZWN0ZWRYLFxuICAgIG1ldHJpYzogcmVzb2x2ZVlLZXkoc3RhdGUuc2VsZWN0ZWRZLCBzdGF0ZS5zZWxlY3RlZFlBZ2dyZWdhdGUpLFxuICAgIG1ldHJpY0FnZ3JlZ2F0ZTogc3RhdGUuc2VsZWN0ZWRZQWdncmVnYXRlLFxuICAgIGJyZWFrZG93bjogc3RhdGUuc2VsZWN0ZWRHcm91cEJ5LFxuICAgIGZpbHRlcnM6IHN0YXRlLnNlbGVjdGVkU2xpY2VzLFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXBwbHlPcmdhbml6ZXJFdmVudFRvQ2hhcnQoXG4gIGV2ZW50OiBPcmdhbml6ZXJCdXR0b25FdmVudCxcbiAgY2hhcnRDb25maWc6IE9yZ2FuaXplckNoYXJ0Q29uZmlnIHwgbnVsbCB8IHVuZGVmaW5lZFxuKTogdm9pZCB7XG4gIGlmICghY2hhcnRDb25maWcpIHtcbiAgICBjb25zb2xlLmRlYnVnKCdbT3JnYW5pemVyQ2hhcnRBZGFwdGVyXSBDYW5ub3QgYXBwbHkgZXZlbnQgdG8gZW1wdHkgY2hhcnQgY29uZmlnJyk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc29sZS5kZWJ1ZygnW09yZ2FuaXplckNoYXJ0QWRhcHRlcl0gQXBwbHlpbmcgb3JnYW5pemVyIGV2ZW50JywgeyBldmVudFR5cGU6IGV2ZW50LnR5cGUsIHN0YXRlOiBldmVudC5zdGF0ZSB9KTtcblxuICBjb25zdCBzdGF0ZSA9IGV2ZW50LnN0YXRlO1xuICBfY2xlYW5TeW50aGV0aWNzKGNoYXJ0Q29uZmlnKTtcbiAgaWYgKHN0YXRlLnNlbGVjdGVkWCAhPT0gdW5kZWZpbmVkKSBfYXBwbHlYU2VsZWN0aW9uKHN0YXRlLnNlbGVjdGVkWCwgY2hhcnRDb25maWcpO1xuICBpZiAoc3RhdGUuc2VsZWN0ZWRZICE9PSB1bmRlZmluZWQpIF9hcHBseVlTZWxlY3Rpb24oc3RhdGUuc2VsZWN0ZWRZLCBzdGF0ZS5zZWxlY3RlZFlBZ2dyZWdhdGUsIGNoYXJ0Q29uZmlnKTtcbiAgY29uc3QgZWZmZWN0aXZlR3JvdXBCeSA9IHN0YXRlLnNlbGVjdGVkR3JvdXBCeSAhPT0gc3RhdGUuc2VsZWN0ZWRYID8gc3RhdGUuc2VsZWN0ZWRHcm91cEJ5IDogdW5kZWZpbmVkO1xuICBfYXBwbHlHcm91cEJ5U2VsZWN0aW9uKGVmZmVjdGl2ZUdyb3VwQnksIGNoYXJ0Q29uZmlnKTtcbiAgaWYgKHN0YXRlLnNlbGVjdGVkU2xpY2VzICE9PSB1bmRlZmluZWQpIF9hcHBseVNsaWNlU2VsZWN0aW9uKHN0YXRlLnNlbGVjdGVkU2xpY2VzLCBjaGFydENvbmZpZyk7XG4gIGV2ZW50LnJlc29sdmVkWVVuaXQgPSByZXNvbHZlWVVuaXQoY2hhcnRDb25maWcsIGV2ZW50LnN0YXRlLnNlbGVjdGVkWSwgZXZlbnQuc3RhdGUuc2VsZWN0ZWRZQWdncmVnYXRlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGhhbmRsZU9yZ2FuaXplckNoYXJ0RXZlbnQoXG4gIGV2ZW50OiBPcmdhbml6ZXJCdXR0b25FdmVudCxcbiAgY2hhcnRDb25maWc6IE9yZ2FuaXplckNoYXJ0Q29uZmlnIHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgY3VycmVudEJpbmRpbmc6IE9yZ2FuaXplckNoYXJ0QmluZGluZyB8IHVuZGVmaW5lZCxcbiAgb3B0aW9uczogT3JnYW5pemVyQ2hhcnRCcmlkZ2VPcHRpb25zID0ge31cbik6IE9yZ2FuaXplckNoYXJ0RXZlbnRSZXN1bHQge1xuICBjb25zb2xlLmRlYnVnKCdbT3JnYW5pemVyQ2hhcnRBZGFwdGVyXSBIYW5kbGluZyBvcmdhbml6ZXIgZXZlbnQnLCB7IGV2ZW50VHlwZTogZXZlbnQudHlwZSB9KTtcblxuICBpZiAoZXZlbnQudHlwZSA9PT0gJ3ZpZXdTd2l0Y2hlZCcpIHtcbiAgICByZXR1cm4ge1xuICAgICAgYmluZGluZzoge1xuICAgICAgICBjb25maWc6IGNoYXJ0Q29uZmlnVG9Pcmdhbml6ZXIoY2hhcnRDb25maWcsIG9wdGlvbnMpLFxuICAgICAgICBzdGF0ZTogeyAuLi5ldmVudC5zdGF0ZSB9XG4gICAgICB9LFxuICAgICAgc2hvdWxkUmVmZXRjaDogZmFsc2VcbiAgICB9O1xuICB9XG5cbiAgYXBwbHlPcmdhbml6ZXJFdmVudFRvQ2hhcnQoZXZlbnQsIGNoYXJ0Q29uZmlnKTtcblxuICBpZiAoZXZlbnQudHlwZSA9PT0gJ3lTZWxlY3RlZCcgfHwgZXZlbnQudHlwZSA9PT0gJ3RlbXBsYXRlU2VsZWN0ZWQnKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGJpbmRpbmc6IGJ1aWxkT3JnYW5pemVyQ2hhcnRCaW5kaW5nKGNoYXJ0Q29uZmlnLCBvcHRpb25zKSxcbiAgICAgIHNob3VsZFJlZmV0Y2g6IHRydWVcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBiaW5kaW5nOiB7XG4gICAgICBjb25maWc6IGN1cnJlbnRCaW5kaW5nPy5jb25maWcgPz8gY2hhcnRDb25maWdUb09yZ2FuaXplcihjaGFydENvbmZpZywgb3B0aW9ucyksXG4gICAgICBzdGF0ZTogZXZlbnQuc3RhdGVcbiAgICB9LFxuICAgIHNob3VsZFJlZmV0Y2g6IGV2ZW50LnR5cGUgIT09ICdzbGljZVNlbGVjdGVkJ1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZVlVbml0KFxuICBjaGFydENvbmZpZzogT3JnYW5pemVyQ2hhcnRDb25maWcgfCBudWxsIHwgdW5kZWZpbmVkLFxuICBzZWxlY3RlZFk6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgc2VsZWN0ZWRZQWdncmVnYXRlOiBzdHJpbmcgfCB1bmRlZmluZWRcbik6IHN0cmluZyB8IFVuaXRDb25maWcgfCB1bmRlZmluZWQge1xuICBpZiAoIWNoYXJ0Q29uZmlnIHx8ICFzZWxlY3RlZFkpIHJldHVybiB1bmRlZmluZWQ7XG4gIGNvbnN0IGFjdHVhbEtleSA9IHJlc29sdmVZS2V5KHNlbGVjdGVkWSwgc2VsZWN0ZWRZQWdncmVnYXRlKTtcbiAgcmV0dXJuIGdldEluZGljYXRvckl0ZW1zKGNoYXJ0Q29uZmlnKS5maW5kKGkgPT4gaS5rZXkgPT09IGFjdHVhbEtleSk/LnVuaXQ7XG59XG5cbmNvbnN0IF9zeW50aGV0aWNJdGVtcyA9IG5ldyBXZWFrU2V0PE9yZ2FuaXplckNoYXJ0SXRlbT4oKTtcblxuZnVuY3Rpb24gX21ha2VTeW50aGV0aWMoaXRlbTogT3JnYW5pemVyQ2hhcnRJdGVtKTogT3JnYW5pemVyQ2hhcnRJdGVtIHtcbiAgX3N5bnRoZXRpY0l0ZW1zLmFkZChpdGVtKTtcbiAgcmV0dXJuIGl0ZW07XG59XG5cbmZ1bmN0aW9uIF9pc1N5bnRoZXRpYyhpdGVtOiBPcmdhbml6ZXJDaGFydEl0ZW0pOiBib29sZWFuIHtcbiAgcmV0dXJuIF9zeW50aGV0aWNJdGVtcy5oYXMoaXRlbSk7XG59XG5cbmZ1bmN0aW9uIF9jbGVhblN5bnRoZXRpY3MoY2hhcnRDb25maWc6IE9yZ2FuaXplckNoYXJ0Q29uZmlnKTogdm9pZCB7XG4gIGlmIChjaGFydENvbmZpZy5ncm91cHM/Lml0ZW1zKSB7XG4gICAgY2hhcnRDb25maWcuZ3JvdXBzLml0ZW1zID0gY2hhcnRDb25maWcuZ3JvdXBzLml0ZW1zLmZpbHRlcihnID0+ICFfaXNTeW50aGV0aWMoZykpO1xuICB9XG4gIGlmIChjaGFydENvbmZpZy5pbmRpY2F0b3JzPy5pdGVtcykge1xuICAgIGNoYXJ0Q29uZmlnLmluZGljYXRvcnMuaXRlbXMuZm9yRWFjaChpbmQgPT4ge1xuICAgICAgaWYgKGluZC5leHRyYT8uc3RhY2tzPy5pdGVtcykge1xuICAgICAgICBpbmQuZXh0cmEuc3RhY2tzLml0ZW1zID0gaW5kLmV4dHJhLnN0YWNrcy5pdGVtcy5maWx0ZXIoKHM6IE9yZ2FuaXplckNoYXJ0SXRlbSkgPT4gIV9pc1N5bnRoZXRpYyhzKSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gX2FwcGx5WFNlbGVjdGlvbihzZWxlY3RlZFg6IHN0cmluZywgY2hhcnRDb25maWc6IE9yZ2FuaXplckNoYXJ0Q29uZmlnKTogdm9pZCB7XG4gIGNvbnN0IGdyb3VwSXRlbXMgPSBnZXRHcm91cEl0ZW1zKGNoYXJ0Q29uZmlnKTtcbiAgY29uc3QgaXNHcm91cEl0ZW0gPSBncm91cEl0ZW1zLnNvbWUoZyA9PiBnLmtleSA9PT0gc2VsZWN0ZWRYKTtcbiAgaWYgKGlzR3JvdXBJdGVtKSB7XG4gICAgZ3JvdXBJdGVtcy5mb3JFYWNoKGcgPT4geyBnLnNlbGVjdGVkID0gZy5rZXkgPT09IHNlbGVjdGVkWDsgfSk7XG4gICAgcmV0dXJuO1xuICB9XG4gIGNvbnN0IGluZGljYXRvcnMgPSBnZXRJbmRpY2F0b3JJdGVtcyhjaGFydENvbmZpZyk7XG4gIGNvbnN0IGFsbFN0YWNrczogT3JnYW5pemVyQ2hhcnRJdGVtW10gPSBpbmRpY2F0b3JzLmZsYXRNYXAoaSA9PiBnZXRTdGFja0l0ZW1zKGkpKTtcbiAgY29uc3Qgc3RhY2tJdGVtID0gYWxsU3RhY2tzLmZpbmQocyA9PiBzLmtleSA9PT0gc2VsZWN0ZWRYKTtcbiAgaWYgKHN0YWNrSXRlbSkge1xuICAgIGdyb3VwSXRlbXMuZm9yRWFjaChnID0+IHsgZy5zZWxlY3RlZCA9IGZhbHNlOyB9KTtcbiAgICBncm91cEl0ZW1zLnB1c2goX21ha2VTeW50aGV0aWMoe1xuICAgICAga2V5OiBzdGFja0l0ZW0ua2V5LFxuICAgICAgc2VsZWN0ZWQ6IHRydWUsXG4gICAgICBtZW51OiBzdGFja0l0ZW0ubWVudSxcbiAgICAgIGpxdWVyeTogc3RhY2tJdGVtLmpxdWVyeVxuICAgICAgICA/IHsgdmFsdWU6ICgpID0+IHN0YWNrSXRlbS5qcXVlcnkhLnZhbHVlKCksIGJ1aWxkQWxpYXM6ICgpID0+IHN0YWNrSXRlbS5qcXVlcnkhLmJ1aWxkQWxpYXMoKSB9XG4gICAgICAgIDogdW5kZWZpbmVkLFxuICAgIH0pKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBfYXBwbHlZU2VsZWN0aW9uKHNlbGVjdGVkWTogc3RyaW5nLCBzZWxlY3RlZFlBZ2dyZWdhdGU6IHN0cmluZyB8IHVuZGVmaW5lZCwgY2hhcnRDb25maWc6IE9yZ2FuaXplckNoYXJ0Q29uZmlnKTogdm9pZCB7XG4gIGNvbnN0IGFjdHVhbEtleSA9IHJlc29sdmVZS2V5KHNlbGVjdGVkWSwgc2VsZWN0ZWRZQWdncmVnYXRlKTtcbiAgY29uc3QgaW5kaWNhdG9ycyA9IGdldEluZGljYXRvckl0ZW1zKGNoYXJ0Q29uZmlnKTtcbiAgaW5kaWNhdG9ycy5mb3JFYWNoKGkgPT4geyBpLnNlbGVjdGVkID0gaS5rZXkgPT09IGFjdHVhbEtleTsgfSk7XG4gIGluZGljYXRvcnMuZm9yRWFjaChpID0+IHtcbiAgICBnZXRTdGFja0l0ZW1zKGkpLmZvckVhY2goKHM6IE9yZ2FuaXplckNoYXJ0SXRlbSkgPT4geyBzLnNlbGVjdGVkID0gZmFsc2U7IH0pO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gX2FwcGx5R3JvdXBCeVNlbGVjdGlvbihlZmZlY3RpdmVHcm91cEJ5OiBzdHJpbmcgfCB1bmRlZmluZWQsIGNoYXJ0Q29uZmlnOiBPcmdhbml6ZXJDaGFydENvbmZpZyk6IHZvaWQge1xuICBjb25zdCBhY3RpdmVJbmRpY2F0b3IgPSBnZXRJbmRpY2F0b3JJdGVtcyhjaGFydENvbmZpZykuZmluZChpID0+IGkuc2VsZWN0ZWQpO1xuICBjb25zdCBzdGFja0l0ZW1zOiBPcmdhbml6ZXJDaGFydEl0ZW1bXSA9IGdldFN0YWNrSXRlbXMoYWN0aXZlSW5kaWNhdG9yKTtcbiAgaWYgKGVmZmVjdGl2ZUdyb3VwQnkgPT09IHVuZGVmaW5lZCkge1xuICAgIHN0YWNrSXRlbXMuZm9yRWFjaChzID0+IHsgcy5zZWxlY3RlZCA9IGZhbHNlOyB9KTtcbiAgICByZXR1cm47XG4gIH1cbiAgY29uc3QgaXNTdGFja0l0ZW0gPSBzdGFja0l0ZW1zLnNvbWUocyA9PiBzLmtleSA9PT0gZWZmZWN0aXZlR3JvdXBCeSk7XG4gIGlmIChpc1N0YWNrSXRlbSkge1xuICAgIHN0YWNrSXRlbXMuZm9yRWFjaChzID0+IHsgcy5zZWxlY3RlZCA9IHMua2V5ID09PSBlZmZlY3RpdmVHcm91cEJ5OyB9KTtcbiAgICByZXR1cm47XG4gIH1cbiAgY29uc3QgZ3JvdXBJdGVtID0gZ2V0R3JvdXBJdGVtcyhjaGFydENvbmZpZykuZmluZChnID0+IGcua2V5ID09PSBlZmZlY3RpdmVHcm91cEJ5KTtcbiAgaWYgKGdyb3VwSXRlbSAmJiBhY3RpdmVJbmRpY2F0b3IpIHtcbiAgICBzdGFja0l0ZW1zLmZvckVhY2gocyA9PiB7IHMuc2VsZWN0ZWQgPSBmYWxzZTsgfSk7XG4gICAgaWYgKCFhY3RpdmVJbmRpY2F0b3IuZXh0cmEpIHtcbiAgICAgIGFjdGl2ZUluZGljYXRvci5leHRyYSA9IHsgc3RhY2tzOiB7IG9wdGlvbmFsOiB0cnVlLCBpdGVtczogW10gfSB9O1xuICAgIH0gZWxzZSBpZiAoIWFjdGl2ZUluZGljYXRvci5leHRyYS5zdGFja3MpIHtcbiAgICAgIGFjdGl2ZUluZGljYXRvci5leHRyYS5zdGFja3MgPSB7IG9wdGlvbmFsOiB0cnVlLCBpdGVtczogW10gfTtcbiAgICB9XG4gICAgYWN0aXZlSW5kaWNhdG9yLmV4dHJhLnN0YWNrcy5pdGVtcy5wdXNoKF9tYWtlU3ludGhldGljKHtcbiAgICAgIGtleTogZ3JvdXBJdGVtLmtleSxcbiAgICAgIHNlbGVjdGVkOiB0cnVlLFxuICAgICAgbWVudTogZ3JvdXBJdGVtLm1lbnUsXG4gICAgICBqcXVlcnk6IGdyb3VwSXRlbS5qcXVlcnkgPyB7XG4gICAgICAgIHZhbHVlOiAoKSA9PiBncm91cEl0ZW0uanF1ZXJ5IS52YWx1ZSgpLFxuICAgICAgICBidWlsZEFsaWFzOiAoKSA9PiBncm91cEl0ZW0uanF1ZXJ5IS5idWlsZEFsaWFzKCksXG4gICAgICAgIGJ1aWxkTmFtZTogKF9pdGVtOiBhbnksIHZhbHVlOiBzdHJpbmcpID0+IFN0cmluZyh2YWx1ZSksXG4gICAgICB9IDogdW5kZWZpbmVkLFxuICAgIH0pKTtcbiAgfSBlbHNlIHtcbiAgICBzdGFja0l0ZW1zLmZvckVhY2gocyA9PiB7IHMuc2VsZWN0ZWQgPSBmYWxzZTsgfSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gX2FwcGx5U2xpY2VTZWxlY3Rpb24oc2VsZWN0ZWRTbGljZXM6IHN0cmluZ1tdLCBjaGFydENvbmZpZzogT3JnYW5pemVyQ2hhcnRDb25maWcpOiB2b2lkIHtcbiAgZ2V0RmlsdGVySXRlbXMoY2hhcnRDb25maWcpLmZvckVhY2goZiA9PiB7IGYuc2VsZWN0ZWQgPSBzZWxlY3RlZFNsaWNlcy5pbmNsdWRlcyhmLmtleSk7IH0pO1xufVxuXG4iXX0=
|
|
@@ -20,6 +20,7 @@ export var OrganizerButtonEventType;
|
|
|
20
20
|
OrganizerButtonEventType["GROUP_BY_SELECTED"] = "groupBySelected";
|
|
21
21
|
OrganizerButtonEventType["TEMPLATE_SELECTED"] = "templateSelected";
|
|
22
22
|
OrganizerButtonEventType["SLICE_SELECTED"] = "sliceSelected";
|
|
23
|
+
OrganizerButtonEventType["CHART_TYPE_SELECTED"] = "chartTypeSelected";
|
|
23
24
|
OrganizerButtonEventType["VIEW_SWITCHED"] = "viewSwitched";
|
|
24
25
|
})(OrganizerButtonEventType || (OrganizerButtonEventType = {}));
|
|
25
26
|
export function getGroupItems(config) {
|
|
@@ -34,4 +35,4 @@ export function getFilterItems(config) {
|
|
|
34
35
|
export function getStackItems(indicator) {
|
|
35
36
|
return indicator?.extra?.stacks?.items ?? [];
|
|
36
37
|
}
|
|
37
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JnYW5pemVyLWNoYXJ0LWNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29uZXRlbWUvanF1ZXJ5LW9yZ2FuaXplci9zcmMvbGliL21vZGVscy9vcmdhbml6ZXItY2hhcnQtY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVVBLE1BQU0sQ0FBTixJQUFZLGlCQUdYO0FBSEQsV0FBWSxpQkFBaUI7SUFDM0Isd0NBQW1CLENBQUE7SUFDbkIsdURBQWtDLENBQUE7QUFDcEMsQ0FBQyxFQUhXLGlCQUFpQixLQUFqQixpQkFBaUIsUUFHNUI7QUFFRCxNQUFNLENBQU4sSUFBWSxrQkFPWDtBQVBELFdBQVksa0JBQWtCO0lBQzVCLHlEQUFtQyxDQUFBO0lBQ25DLDZEQUF1QyxDQUFBO0lBQ3ZDLDBFQUFvRCxDQUFBO0lBQ3BELDBFQUFvRCxDQUFBO0lBQ3BELDRFQUFzRCxDQUFBO0lBQ3RELDZEQUF1QyxDQUFBO0FBQ3pDLENBQUMsRUFQVyxrQkFBa0IsS0FBbEIsa0JBQWtCLFFBTzdCO0FBRUQsTUFBTSxDQUFOLElBQVksd0JBU1g7QUFURCxXQUFZLHdCQUF3QjtJQUNsQywwREFBOEIsQ0FBQTtJQUM5QixvREFBd0IsQ0FBQTtJQUN4QixvREFBd0IsQ0FBQTtJQUN4QixpRUFBcUMsQ0FBQTtJQUNyQyxrRUFBc0MsQ0FBQTtJQUN0Qyw0REFBZ0MsQ0FBQTtJQUNoQyxxRUFBeUMsQ0FBQTtJQUN6QywwREFBOEIsQ0FBQTtBQUNoQyxDQUFDLEVBVFcsd0JBQXdCLEtBQXhCLHdCQUF3QixRQVNuQztBQUVELE1BQU0sVUFBVSxhQUFhLENBQUMsTUFBK0M7SUFDM0UsT0FBTyxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssSUFBSSxFQUFFLENBQUM7QUFDckMsQ0FBQztBQUVELE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxNQUErQztJQUMvRSxPQUFPLE1BQU0sRUFBRSxVQUFVLEVBQUUsS0FBSyxJQUFJLEVBQUUsQ0FBQztBQUN6QyxDQUFDO0FBRUQsTUFBTSxVQUFVLGNBQWMsQ0FBQyxNQUErQztJQUM1RSxPQUFPLE1BQU0sRUFBRSxPQUFPLEVBQUUsS0FBSyxJQUFJLEVBQUUsQ0FBQztBQUN0QyxDQUFDO0FBRUQsTUFBTSxVQUFVLGFBQWEsQ0FBQyxTQUF5QztJQUNyRSxPQUFPLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssSUFBSSxFQUFFLENBQUM7QUFDL0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9yZ2FuaXplclRlbXBsYXRlIH0gZnJvbSAnLi9vcmdhbml6ZXItY29uZmlnLmludGVyZmFjZSc7XG5pbXBvcnQgeyBPcmdhbml6ZXJDaGFydEl0ZW0sIE9yZ2FuaXplckNoYXJ0U2VjdGlvbiB9IGZyb20gJy4vb3JnYW5pemVyLWNoYXJ0LWFkYXB0ZXInO1xuXG5leHBvcnQgaW50ZXJmYWNlIE9yZ2FuaXplckNoYXJ0Q29uZmlnIHtcbiAgZ3JvdXBzPzogT3JnYW5pemVyQ2hhcnRTZWN0aW9uO1xuICBpbmRpY2F0b3JzPzogT3JnYW5pemVyQ2hhcnRTZWN0aW9uO1xuICBmaWx0ZXJzPzogT3JnYW5pemVyQ2hhcnRTZWN0aW9uO1xuICB0ZW1wbGF0ZXM/OiBPcmdhbml6ZXJUZW1wbGF0ZVtdO1xufVxuXG5leHBvcnQgZW51bSBTeW50aGV0aWNJdGVtS2V5cyB7XG4gIEVNUFRZID0gJ19fZW1wdHlfXycsXG4gIFNZTlRIRVRJQ19NQVJLRVIgPSAnX19zeW50aGV0aWNfXydcbn1cblxuZXhwb3J0IGVudW0gU2xpY2VQYW5lbEkxOG5LZXlzIHtcbiAgRVhQQU5EX0ZJTFRFUiA9ICdleHBhbmRGaWx0ZXJUaXRsZScsXG4gIENPTExBUFNFX0ZJTFRFUiA9ICdjb2xsYXBzZUZpbHRlclRpdGxlJyxcbiAgRklMVEVSX1BBTkVMX1RJVExFX1NJTkdMRSA9ICdmaWx0ZXJQYW5lbFRpdGxlU2luZ2xlJyxcbiAgRklMVEVSX1BBTkVMX1RJVExFX1BMVVJBTCA9ICdmaWx0ZXJQYW5lbFRpdGxlUGx1cmFsJyxcbiAgRklMVEVSX0JMT0NLX0RFRkFVTFRfVElUTEUgPSAnZmlsdGVyQmxvY2tEZWZhdWx0VGl0bGUnLFxuICBGSUxURVJfRU1QVFlfU1RBVEUgPSAnZmlsdGVyRW1wdHlTdGF0ZSdcbn1cblxuZXhwb3J0IGVudW0gT3JnYW5pemVyQnV0dG9uRXZlbnRUeXBlIHtcbiAgRklFTERfVE9HR0xFRCA9ICdmaWVsZFRvZ2dsZWQnLFxuICBYX1NFTEVDVEVEID0gJ3hTZWxlY3RlZCcsXG4gIFlfU0VMRUNURUQgPSAneVNlbGVjdGVkJyxcbiAgR1JPVVBfQllfU0VMRUNURUQgPSAnZ3JvdXBCeVNlbGVjdGVkJyxcbiAgVEVNUExBVEVfU0VMRUNURUQgPSAndGVtcGxhdGVTZWxlY3RlZCcsXG4gIFNMSUNFX1NFTEVDVEVEID0gJ3NsaWNlU2VsZWN0ZWQnLFxuICBDSEFSVF9UWVBFX1NFTEVDVEVEID0gJ2NoYXJ0VHlwZVNlbGVjdGVkJyxcbiAgVklFV19TV0lUQ0hFRCA9ICd2aWV3U3dpdGNoZWQnXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRHcm91cEl0ZW1zKGNvbmZpZzogT3JnYW5pemVyQ2hhcnRDb25maWcgfCBudWxsIHwgdW5kZWZpbmVkKTogT3JnYW5pemVyQ2hhcnRJdGVtW10ge1xuICByZXR1cm4gY29uZmlnPy5ncm91cHM/Lml0ZW1zID8/IFtdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0SW5kaWNhdG9ySXRlbXMoY29uZmlnOiBPcmdhbml6ZXJDaGFydENvbmZpZyB8IG51bGwgfCB1bmRlZmluZWQpOiBPcmdhbml6ZXJDaGFydEl0ZW1bXSB7XG4gIHJldHVybiBjb25maWc/LmluZGljYXRvcnM/Lml0ZW1zID8/IFtdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RmlsdGVySXRlbXMoY29uZmlnOiBPcmdhbml6ZXJDaGFydENvbmZpZyB8IG51bGwgfCB1bmRlZmluZWQpOiBPcmdhbml6ZXJDaGFydEl0ZW1bXSB7XG4gIHJldHVybiBjb25maWc/LmZpbHRlcnM/Lml0ZW1zID8/IFtdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3RhY2tJdGVtcyhpbmRpY2F0b3I6IE9yZ2FuaXplckNoYXJ0SXRlbSB8IHVuZGVmaW5lZCk6IE9yZ2FuaXplckNoYXJ0SXRlbVtdIHtcbiAgcmV0dXJuIGluZGljYXRvcj8uZXh0cmE/LnN0YWNrcz8uaXRlbXMgPz8gW107XG59XG4iXX0=
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JnYW5pemVyLWNvbmZpZy5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbmV0ZW1lL2pxdWVyeS1vcmdhbml6ZXIvc3JjL2xpYi9tb2RlbHMvb3JnYW5pemVyLWNvbmZpZy5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFNsaWNlQ29uZmlnIH0gZnJvbSAnLi4vc2xpY2UtcGFuZWwvc2xpY2UtcGFuZWwubW9kZWwnO1xuaW1wb3J0IHsgVW5pdENvbmZpZyB9IGZyb20gJ0BvbmV0ZW1lL2pxdWVyeS1jb3JlJztcblxuZXhwb3J0IHR5cGUgRmllbGRTdGF0ZSA9ICdyZWFkeScgfCAnbG9hZGluZycgfCAnZXJyb3InO1xuZXhwb3J0IGludGVyZmFjZSBPcmdhbml6ZXJWaWV3RmllbGQge1xuICBpZDogc3RyaW5nO1xuICBsYWJlbDogc3RyaW5nO1xuICBpY29uPzogc3RyaW5nO1xuICB2aXNpYmxlPzogYm9vbGVhbjtcbiAgc3RhdGU/
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JnYW5pemVyLWNvbmZpZy5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbmV0ZW1lL2pxdWVyeS1vcmdhbml6ZXIvc3JjL2xpYi9tb2RlbHMvb3JnYW5pemVyLWNvbmZpZy5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFNsaWNlQ29uZmlnIH0gZnJvbSAnLi4vc2xpY2UtcGFuZWwvc2xpY2UtcGFuZWwubW9kZWwnO1xuaW1wb3J0IHsgVW5pdENvbmZpZyB9IGZyb20gJ0BvbmV0ZW1lL2pxdWVyeS1jb3JlJztcblxuZXhwb3J0IHR5cGUgRmllbGRTdGF0ZSA9ICdyZWFkeScgfCAnbG9hZGluZycgfCAnZXJyb3InO1xuZXhwb3J0IGludGVyZmFjZSBPcmdhbml6ZXJWaWV3RmllbGQge1xuICBpZDogc3RyaW5nO1xuICBsYWJlbDogc3RyaW5nO1xuICBpY29uPzogc3RyaW5nO1xuICB2aXNpYmxlPzogYm9vbGVhbjtcbiAgc3RhdGU/OiBGaWVsZFN0YXRlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9yZ2FuaXplclhGaWVsZCB7XG4gIGlkOiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPcmdhbml6ZXJZQWdncmVnYXRlIHtcbiAgaWQ6IHN0cmluZztcbiAgbGFiZWw6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPcmdhbml6ZXJZRmllbGQge1xuICBpZDogc3RyaW5nO1xuICBsYWJlbDogc3RyaW5nO1xuICBhZ2dyZWdhdGVzPzogT3JnYW5pemVyWUFnZ3JlZ2F0ZVtdO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT3JnYW5pemVyVmlld0dyb3VwIHtcbiAgaWQ6IHN0cmluZztcbiAgbGFiZWw6IHN0cmluZztcbiAgaWNvbj86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPcmdhbml6ZXJWaWV3U2xpY2Uge1xuICBpZDogc3RyaW5nO1xuICBsYWJlbDogc3RyaW5nO1xuICBpY29uPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9yZ2FuaXplckNoYXJ0VHlwZSB7XG4gIGlkOiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGljb24/OiBzdHJpbmc7XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPcmdhbml6ZXJUZW1wbGF0ZSB7XG4gIGlkOiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBpY29uPzogc3RyaW5nO1xuICB4RmllbGQ/OiBzdHJpbmc7XG4gIHlGaWVsZD86IHN0cmluZztcbiAgeUFnZ3JlZ2F0ZT86IHN0cmluZztcbiAgZ3JvdXBCeT86IHN0cmluZztcbiAgc2VsZWN0ZWRTbGljZXM/OiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPcmdhbml6ZXJBY3Rpb25zQ29uZmlnIHtcbiAgLyoqIExpYmVsbMOpIGR1IHNvdXMtbWVudS4gUGFyIGTDqWZhdXQgOiBBY3Rpb24gb3UgQWN0aW9ucyBzZWxvbiBsZSBub21icmUgZCdhY3Rpb25zIHZpc2libGVzLiAqL1xuICBsYWJlbD86IHN0cmluZztcbiAgLyoqIEFmZmljaGUgbCdhY3Rpb24gZGUgY29waWUgbG9yc3F1ZSBvbkNvcHlWaXN1YWwgZXN0IGZvdXJuaS4gTGUgY2FsbGJhY2sgcGV1dCBvdXZyaXIgdW5lIG1vZGFsZSBvdSB1bmUgVUkgcGVyc29ubmFsaXPDqWUuICovXG4gIHNob3dDb3B5PzogYm9vbGVhbjtcbiAgLyoqIEFmZmljaGUgbCdhY3Rpb24gZGUgcGxlaW4gw6ljcmFuIGxvcnNxdWUgb25Ub2dnbGVGdWxsc2NyZWVuIGVzdCBmb3VybmkuICovXG4gIHNob3dGdWxsc2NyZWVuPzogYm9vbGVhbjtcbiAgLyoqIEljw7RuZSBvcHRpb25uZWxsZSBhZmZpY2jDqWUgZGV2YW50IGxlIGxpYmVsbMOpIGR1IHNvdXMtbWVudS4gKi9cbiAgaWNvbj86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPcmdhbml6ZXJDb25maWcge1xuICBmaWVsZHM/OiBPcmdhbml6ZXJWaWV3RmllbGRbXTtcbiAgeEZpZWxkcz86IE9yZ2FuaXplclhGaWVsZFtdO1xuICB5RmllbGRzPzogT3JnYW5pemVyWUZpZWxkW107XG4gIGdyb3Vwcz86IE9yZ2FuaXplclZpZXdHcm91cFtdO1xuICBzbGljZXM/OiBPcmdhbml6ZXJWaWV3U2xpY2VbXTtcbiAgdGVtcGxhdGVzPzogT3JnYW5pemVyVGVtcGxhdGVbXTtcbiAgY2hhcnRUeXBlcz86IE9yZ2FuaXplckNoYXJ0VHlwZVtdO1xuXG4gIG9uRmV0Y2hGaWVsZERhdGE/OiAoZmllbGRJZDogc3RyaW5nKSA9PiBQcm9taXNlPHN0cmluZ1tdIHwgUmVjb3JkPHN0cmluZywgYW55PltdPjtcbiAgb25GZXRjaFNsaWNlRGF0YT86IChmaWx0ZXJLZXk6IHN0cmluZykgPT4gT2JzZXJ2YWJsZTxhbnlbXT4gfCBQcm9taXNlPGFueVtdPjtcbiAgb25TbGljZUNsaWNrPzogKCkgPT4gdm9pZDtcblxuICBzaG93RXhwb3J0PzogYm9vbGVhbjtcbiAgb25FeHBvcnQ/OiAoKSA9PiB2b2lkO1xuICBvbkV4cG9ydFZpc3VhbD86ICgpID0+IHZvaWQ7XG4gIG9uRXhwb3J0RGF0YT86ICgpID0+IHZvaWQ7XG5cbiAgLyoqIEFmZmljaGUgbGVzIGNvbW1hbmRlcyBsacOpZXMgYXUgdmlzdWVsIGNvdXJhbnQgZGFucyBsZSBzb3VzLW1lbnUgQWN0aW9ucy4gKi9cbiAgc2hvd0FjdGlvbnM/OiBib29sZWFuO1xuICBhY3Rpb25zPzogT3JnYW5pemVyQWN0aW9uc0NvbmZpZztcbiAgb25Db3B5VmlzdWFsPzogKCkgPT4gdm9pZDtcbiAgb25Ub2dnbGVGdWxsc2NyZWVuPzogKCkgPT4gdm9pZDtcbiAgaXNGdWxsc2NyZWVuPzogYm9vbGVhbjtcblxuICBzaG93UHJlZmVyZW5jZXM/OiBib29sZWFuO1xuICBoYXNTYXZlZFByZWZlcmVuY2VzPzogYm9vbGVhbjtcbiAgb25QcmVmZXJlbmNlc0VkaXQ/OiAoKSA9PiB2b2lkO1xuICBvblByZWZlcmVuY2VzU2F2ZT86ICgpID0+IHZvaWQ7XG4gIG9uUHJlZmVyZW5jZXNDbGVhcj86ICgpID0+IHZvaWQ7XG5cbiAgc2hvd1Jlc2V0PzogYm9vbGVhbjtcbiAgbWVudVBvc2l0aW9uPzogJ2Fib3ZlJyB8ICdiZWxvdyc7XG4gIG1lbnVDbGFzcz86IHN0cmluZztcbiAgYnV0dG9uTGFiZWw/OiBzdHJpbmc7XG4gIGJ1dHRvbkljb24/OiBzdHJpbmc7XG4gIHNob3dCdXR0b25JY29uPzogYm9vbGVhbjtcblxuICBzd2l0Y2hWaWV3Pzoge1xuICAgIGN1cnJlbnRWaWV3OiAnY2hhcnQnIHwgJ3RhYmxlJztcbiAgICBvblN3aXRjaDogKG5ld1ZpZXc6ICdjaGFydCcgfCAndGFibGUnKSA9PiB2b2lkO1xuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9yZ2FuaXplclNsaWNlU3RhdGUge1xuICBzbGljZUNvbmZpZ3M6IFNsaWNlQ29uZmlnPGFueT5bXTtcbiAgdGFza3M6IGFueVtdO1xuICBmaWx0ZXJBcHBsaWVkPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPcmdhbml6ZXJTdGF0ZSB7XG4gIHZpZXdNb2RlPzogJ2NoYXJ0JyB8ICd0YWJsZSc7XG5cbiAgdmlzaWJsZUZpZWxkcz86IHN0cmluZ1tdO1xuXG4gIHNlbGVjdGVkQ2hhcnRUeXBlPzogc3RyaW5nO1xuXG4gIHNlbGVjdGVkWD86IHN0cmluZztcbiAgc2VsZWN0ZWRZPzogc3RyaW5nO1xuICBzZWxlY3RlZFlBZ2dyZWdhdGU/OiBzdHJpbmc7XG5cbiAgc2VsZWN0ZWRHcm91cEJ5Pzogc3RyaW5nO1xuICBzZWxlY3RlZFNsaWNlcz86IHN0cmluZ1tdO1xuICBzZWxlY3RlZFRlbXBsYXRlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9yZ2FuaXplckJ1dHRvbkV2ZW50IHtcbiAgdHlwZTogJ2ZpZWxkVG9nZ2xlZCcgfCAneFNlbGVjdGVkJyB8ICd5U2VsZWN0ZWQnIHwgJ2dyb3VwQnlTZWxlY3RlZCcgfCAndGVtcGxhdGVTZWxlY3RlZCcgfCAnc2xpY2VTZWxlY3RlZCcgfCAnY2hhcnRUeXBlU2VsZWN0ZWQnIHwgJ3Jlc2V0JyB8ICd2aWV3U3dpdGNoZWQnO1xuICBzdGF0ZTogT3JnYW5pemVyU3RhdGU7XG4gIHNvdXJjZT86ICd1c2VyJyB8ICdhcGknO1xuICByZXNvbHZlZFlVbml0Pzogc3RyaW5nIHwgVW5pdENvbmZpZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPcmdhbml6ZXJVbmlmaWVkU3RhdGUge1xuICB2aWV3TW9kZTogJ2NoYXJ0JyB8ICd0YWJsZSc7XG4gIGRpbWVuc2lvbj86IHN0cmluZztcbiAgbWV0cmljPzogc3RyaW5nO1xuICBtZXRyaWNBZ2dyZWdhdGU/OiBzdHJpbmc7XG4gIGJyZWFrZG93bj86IHN0cmluZztcbiAgZmlsdGVycz86IHN0cmluZ1tdO1xufVxuIl19
|
|
@@ -27,10 +27,12 @@ export function normalizeOrganizerState(state, config) {
|
|
|
27
27
|
const base = state || {};
|
|
28
28
|
const normalizedY = normalizeYSelection(base.selectedY, base.selectedYAggregate, config.yFields);
|
|
29
29
|
const selectedX = hasOption(config.xFields, base.selectedX) ? base.selectedX : undefined;
|
|
30
|
+
const selectedChartType = hasOption(config.chartTypes, base.selectedChartType) ? base.selectedChartType : undefined;
|
|
30
31
|
const selectedGroupBy = hasOption(config.groups, base.selectedGroupBy) ? base.selectedGroupBy : undefined;
|
|
31
32
|
const selectedSlices = (base.selectedSlices || []).filter(sliceId => hasOption(config.slices, sliceId));
|
|
32
33
|
const normalized = {
|
|
33
34
|
...base,
|
|
35
|
+
selectedChartType,
|
|
34
36
|
selectedX,
|
|
35
37
|
selectedY: normalizedY.selectedY,
|
|
36
38
|
selectedYAggregate: normalizedY.selectedYAggregate,
|
|
@@ -48,6 +50,7 @@ export function normalizeTemplateToState(template, currentState, config) {
|
|
|
48
50
|
const nextState = {
|
|
49
51
|
viewMode: base.viewMode,
|
|
50
52
|
visibleFields: base.visibleFields,
|
|
53
|
+
selectedChartType: base.selectedChartType,
|
|
51
54
|
selectedX: hasOption(config.xFields, template.xField) ? template.xField : base.selectedX,
|
|
52
55
|
selectedY: normalizedY.selectedY,
|
|
53
56
|
selectedYAggregate: normalizedY.selectedYAggregate,
|
|
@@ -139,4 +142,4 @@ function sameSlices(left, right) {
|
|
|
139
142
|
function hasOption(items, id) {
|
|
140
143
|
return !!id && !!items?.some(item => item.id === id);
|
|
141
144
|
}
|
|
142
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JnYW5pemVyLXV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb25ldGVtZS9qcXVlcnktb3JnYW5pemVyL3NyYy9saWIvbW9kZWxzL29yZ2FuaXplci11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFRQSxNQUFNLFVBQVUsWUFBWSxDQUFDLFVBQWlDO0lBQzVELE1BQU0sT0FBTyxHQUFhLEVBQUUsQ0FBQztJQUM3QixNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBMkIsQ0FBQztJQUUvQyxLQUFLLE1BQU0sU0FBUyxJQUFJLFVBQVUsRUFBRTtRQUNsQyxNQUFNLFFBQVEsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDO1FBQ2pDLElBQUksUUFBUSxFQUFFO1lBQ1osSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUU7Z0JBQ3RCLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ3ZCLEdBQUcsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2FBQ3RFO1lBQ0QsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNqQyxJQUFJLE1BQU0sRUFBRSxVQUFVLEVBQUU7Z0JBQ3RCLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLFNBQVMsQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO2FBQ3RFO1NBQ0Y7YUFBTTtZQUNMLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzNCLEdBQUcsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFB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SUFDaEUsTUFBTSxXQUFXLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsRSxPQUFPLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLEtBQUssV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDMUUsQ0FBQztBQUVELFNBQVMsU0FBUyxDQUFDLEtBQXdDLEVBQUUsRUFBc0I7SUFDakYsT0FBTyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztBQUN2RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT3JnYW5pemVyQ29uZmlnLCBPcmdhbml6ZXJTdGF0ZSwgT3JnYW5pemVyVGVtcGxhdGUsIE9yZ2FuaXplcllGaWVsZCB9IGZyb20gJy4vb3JnYW5pemVyLWNvbmZpZy5pbnRlcmZhY2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE9yZ2FuaXplcllJbmRpY2F0b3Ige1xuICBpZDogc3RyaW5nO1xuICBsYWJlbDogc3RyaW5nO1xuICBncm91cD86IHN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkWUZpZWxkcyhpbmRpY2F0b3JzOiBPcmdhbml6ZXJZSW5kaWNhdG9yW10pOiBPcmdhbml6ZXJZRmllbGRbXSB7XG4gIGNvbnN0IG9yZGVyZWQ6IHN0cmluZ1tdID0gW107XG4gIGNvbnN0IG1hcCA9IG5ldyBNYXA8c3RyaW5nLCBPcmdhbml6ZXJZRmllbGQ+KCk7XG5cbiAgZm9yIChjb25zdCBpbmRpY2F0b3Igb2YgaW5kaWNhdG9ycykge1xuICAgIGNvbnN0IGdyb3VwS2V5ID0gaW5kaWNhdG9yLmdyb3VwO1xuICAgIGlmIChncm91cEtleSkge1xuICAgICAgaWYgKCFtYXAuaGFzKGdyb3VwS2V5KSkge1xuICAgICAgICBvcmRlcmVkLnB1c2goZ3JvdXBLZXkpO1xuICAgICAgICBtYXAuc2V0KGdyb3VwS2V5LCB7IGlkOiBncm91cEtleSwgbGFiZWw6IGdyb3VwS2V5LCBhZ2dyZWdhdGVzOiBbXSB9KTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHBhcmVudCA9IG1hcC5nZXQoZ3JvdXBLZXkpO1xuICAgICAgaWYgKHBhcmVudD8uYWdncmVnYXRlcykge1xuICAgICAgICBwYXJlbnQuYWdncmVnYXRlcy5wdXNoKHsgaWQ6IGluZGljYXRvci5pZCwgbGFiZWw6IGluZGljYXRvci5sYWJlbCB9KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgb3JkZXJlZC5wdXNoKGluZGljYXRvci5pZCk7XG4gICAgICBtYXAuc2V0KGluZGljYXRvci5pZCwgeyBpZDogaW5kaWNhdG9yLmlkLCBsYWJlbDogaW5kaWNhdG9yLmxhYmVsIH0pO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBvcmRlcmVkLm1hcChrID0+IG1hcC5nZXQoaykpLmZpbHRlcigoZik6IGYgaXMgT3JnYW5pemVyWUZpZWxkID0+ICEhZik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlWUtleShcbiAgc2VsZWN0ZWRZOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gIHNlbGVjdGVkWUFnZ3JlZ2F0ZTogc3RyaW5nIHwgdW5kZWZpbmVkXG4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICByZXR1cm4gc2VsZWN0ZWRZQWdncmVnYXRlID8/IHNlbGVjdGVkWTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZU9yZ2FuaXplclN0YXRlKFxuICBzdGF0ZTogT3JnYW5pemVyU3RhdGUgfCB1bmRlZmluZWQsXG4gIGNvbmZpZzogUGljazxPcmdhbml6ZXJDb25maWcsICd4RmllbGRzJyB8ICd5RmllbGRzJyB8ICdncm91cHMnIHwgJ3NsaWNlcycgfCAndGVtcGxhdGVzJz5cbik6IE9yZ2FuaXplclN0YXRlIHtcbiAgY29uc3QgYmFzZSA9IHN0YXRlIHx8IHt9O1xuICBjb25zdCBub3JtYWxpemVkWSA9IG5vcm1hbGl6ZVlTZWxlY3Rpb24oYmFzZS5zZWxlY3RlZFksIGJhc2Uuc2VsZWN0ZWRZQWdncmVnYXRlLCBjb25maWcueUZpZWxkcyk7XG4gIGNvbnN0IHNlbGVjdGVkWCA9IGhhc09wdGlvbihjb25maWcueEZpZWxkcywgYmFzZS5zZWxlY3RlZFgpID8gYmFzZS5zZWxlY3RlZFggOiB1bmRlZmluZWQ7XG4gIGNvbnN0IHNlbGVjdGVkR3JvdXBCeSA9IGhhc09wdGlvbihjb25maWcuZ3JvdXBzLCBiYXNlLnNlbGVjdGVkR3JvdXBCeSkgPyBiYXNlLnNlbGVjdGVkR3JvdXBCeSA6IHVuZGVmaW5lZDtcbiAgY29uc3Qgc2VsZWN0ZWRTbGljZXMgPSAoYmFzZS5zZWxlY3RlZFNsaWNlcyB8fCBbXSkuZmlsdGVyKHNsaWNlSWQgPT4gaGFzT3B0aW9uKGNvbmZpZy5zbGljZXMsIHNsaWNlSWQpKTtcblxuICBjb25zdCBub3JtYWxpemVkOiBPcmdhbml6ZXJTdGF0ZSA9IHtcbiAgICAuLi5iYXNlLFxuICAgIHNlbGVjdGVkWCxcbiAgICBzZWxlY3RlZFk6IG5vcm1hbGl6ZWRZLnNlbGVjdGVkWSxcbiAgICBzZWxlY3RlZFlBZ2dyZWdhdGU6IG5vcm1hbGl6ZWRZLnNlbGVjdGVkWUFnZ3JlZ2F0ZSxcbiAgICBzZWxlY3RlZEdyb3VwQnksXG4gICAgc2VsZWN0ZWRTbGljZXMsXG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5ub3JtYWxpemVkLFxuICAgIHNlbGVjdGVkVGVtcGxhdGU6IHJlc29sdmVNYXRjaGluZ1RlbXBsYXRlSWQoY29uZmlnLnRlbXBsYXRlcywgbm9ybWFsaXplZCwgY29uZmlnKVxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplVGVtcGxhdGVUb1N0YXRlKFxuICB0ZW1wbGF0ZTogT3JnYW5pemVyVGVtcGxhdGUsXG4gIGN1cnJlbnRTdGF0ZTogT3JnYW5pemVyU3RhdGUgfCB1bmRlZmluZWQsXG4gIGNvbmZpZzogUGljazxPcmdhbml6ZXJDb25maWcsICd4RmllbGRzJyB8ICd5RmllbGRzJyB8ICdncm91cHMnIHwgJ3NsaWNlcycgfCAndGVtcGxhdGVzJz5cbik6IE9yZ2FuaXplclN0YXRlIHtcbiAgY29uc3QgYmFzZSA9IG5vcm1hbGl6ZU9yZ2FuaXplclN0YXRlKGN1cnJlbnRTdGF0ZSwgY29uZmlnKTtcbiAgY29uc3Qgbm9ybWFsaXplZFkgPSBub3JtYWxpemVZU2VsZWN0aW9uKHRlbXBsYXRlLnlGaWVsZCwgdGVtcGxhdGUueUFnZ3JlZ2F0ZSwgY29uZmlnLnlGaWVsZHMsIGJhc2UpO1xuXG4gIGNvbnN0IG5leHRTdGF0ZTogT3JnYW5pemVyU3RhdGUgPSB7XG4gICAgdmlld01vZGU6IGJhc2Uudmlld01vZGUsXG4gICAgdmlzaWJsZUZpZWxkczogYmFzZS52aXNpYmxlRmllbGRzLFxuICAgIHNlbGVjdGVkWDogaGFzT3B0aW9uKGNvbmZpZy54RmllbGRzLCB0ZW1wbGF0ZS54RmllbGQpID8gdGVtcGxhdGUueEZpZWxkIDogYmFzZS5zZWxlY3RlZFgsXG4gICAgc2VsZWN0ZWRZOiBub3JtYWxpemVkWS5zZWxlY3RlZFksXG4gICAgc2VsZWN0ZWRZQWdncmVnYXRlOiBub3JtYWxpemVkWS5zZWxlY3RlZFlBZ2dyZWdhdGUsXG4gICAgc2VsZWN0ZWRHcm91cEJ5OiBoYXNPcHRpb24oY29uZmlnLmdyb3VwcywgdGVtcGxhdGUuZ3JvdXBCeSkgPyB0ZW1wbGF0ZS5ncm91cEJ5IDogYmFzZS5zZWxlY3RlZEdyb3VwQnksXG4gICAgc2VsZWN0ZWRTbGljZXM6ICh0ZW1wbGF0ZS5zZWxlY3RlZFNsaWNlcyB8fCBbXSkuZmlsdGVyKHNsaWNlSWQgPT4gaGFzT3B0aW9uKGNvbmZpZy5zbGljZXMsIHNsaWNlSWQpKSxcbiAgfTtcblxuICBjb25zdCByZXNvbHZlZFRlbXBsYXRlSWQgPSByZXNvbHZlTWF0Y2hpbmdUZW1wbGF0ZUlkKGNvbmZpZy50ZW1wbGF0ZXMsIG5leHRTdGF0ZSwgY29uZmlnKTtcbiAgcmV0dXJuIHtcbiAgICAuLi5uZXh0U3RhdGUsXG4gICAgc2VsZWN0ZWRUZW1wbGF0ZTogcmVzb2x2ZWRUZW1wbGF0ZUlkID8/IHRlbXBsYXRlLmlkXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlTWF0Y2hpbmdUZW1wbGF0ZUlkKFxuICB0ZW1wbGF0ZXM6IE9yZ2FuaXplclRlbXBsYXRlW10gfCB1bmRlZmluZWQsXG4gIHN0YXRlOiBPcmdhbml6ZXJTdGF0ZSB8IHVuZGVmaW5lZCxcbiAgY29uZmlnOiBQaWNrPE9yZ2FuaXplckNvbmZpZywgJ3hGaWVsZHMnIHwgJ3lGaWVsZHMnIHwgJ2dyb3VwcycgfCAnc2xpY2VzJyB8ICd0ZW1wbGF0ZXMnPlxuKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgaWYgKCF0ZW1wbGF0ZXM/Lmxlbmd0aCkgcmV0dXJuIHVuZGVmaW5lZDtcblxuICBjb25zdCBub3JtYWxpemVkU3RhdGUgPSBub3JtYWxpemVTdGF0ZVdpdGhvdXRUZW1wbGF0ZShzdGF0ZSwgY29uZmlnKTtcbiAgcmV0dXJuIHRlbXBsYXRlcy5maW5kKHRlbXBsYXRlID0+IHtcbiAgICBjb25zdCB0ZW1wbGF0ZVN0YXRlID0gbm9ybWFsaXplU3RhdGVXaXRob3V0VGVtcGxhdGUoXG4gICAgICBub3JtYWxpemVUZW1wbGF0ZVRvQ29tcGFyYWJsZVN0YXRlKHRlbXBsYXRlLCBub3JtYWxpemVkU3RhdGUsIGNvbmZpZyksXG4gICAgICBjb25maWdcbiAgICApO1xuICAgIHJldHVybiBzYW1lT3JnYW5pemVyU3RhdGUodGVtcGxhdGVTdGF0ZSwgbm9ybWFsaXplZFN0YXRlKTtcbiAgfSk/LmlkO1xufVxuXG5mdW5jdGlvbiBub3JtYWxpemVTdGF0ZUNvcmUoXG4gIHNlbGVjdGVkWDogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICBzZWxlY3RlZFk6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgc2VsZWN0ZWRZQWdncmVnYXRlOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gIHNlbGVjdGVkR3JvdXBCeTogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICBzZWxlY3RlZFNsaWNlczogc3RyaW5nW10gfCB1bmRlZmluZWQsXG4gIGNvbmZpZzogUGljazxPcmdhbml6ZXJDb25maWcsICd4RmllbGRzJyB8ICd5RmllbGRzJyB8ICdncm91cHMnIHwgJ3NsaWNlcyc+LFxuICBvcmlnaW5hbFN0YXRlPzogT3JnYW5pemVyU3RhdGVcbik6IE9yZ2FuaXplclN0YXRlIHtcbiAgY29uc3Qgbm9ybWFsaXplZFkgPSBub3JtYWxpemVZU2VsZWN0aW9uKHNlbGVjdGVkWSwgc2VsZWN0ZWRZQWdncmVnYXRlLCBjb25maWcueUZpZWxkcywgb3JpZ2luYWxTdGF0ZSk7XG4gIHJldHVybiB7XG4gICAgc2VsZWN0ZWRYOiBoYXNPcHRpb24oY29uZmlnLnhGaWVsZHMsIHNlbGVjdGVkWCkgPyBzZWxlY3RlZFggOiB1bmRlZmluZWQsXG4gICAgc2VsZWN0ZWRZOiBub3JtYWxpemVkWS5zZWxlY3RlZFksXG4gICAgc2VsZWN0ZWRZQWdncmVnYXRlOiBub3JtYWxpemVkWS5zZWxlY3RlZFlBZ2dyZWdhdGUsXG4gICAgc2VsZWN0ZWRHcm91cEJ5OiBoYXNPcHRpb24oY29uZmlnLmdyb3Vwcywgc2VsZWN0ZWRHcm91cEJ5KSA/IHNlbGVjdGVkR3JvdXBCeSA6IHVuZGVmaW5lZCxcbiAgICBzZWxlY3RlZFNsaWNlczogKHNlbGVjdGVkU2xpY2VzIHx8IFtdKS5maWx0ZXIoc2xpY2VJZCA9PiBoYXNPcHRpb24oY29uZmlnLnNsaWNlcywgc2xpY2VJZCkpLFxuICB9O1xufVxuXG5mdW5jdGlvbiBub3JtYWxpemVUZW1wbGF0ZVRvQ29tcGFyYWJsZVN0YXRlKFxuICB0ZW1wbGF0ZTogT3JnYW5pemVyVGVtcGxhdGUsXG4gIGJhc2VTdGF0ZTogT3JnYW5pemVyU3RhdGUsXG4gIGNvbmZpZzogUGljazxPcmdhbml6ZXJDb25maWcsICd4RmllbGRzJyB8ICd5RmllbGRzJyB8ICdncm91cHMnIHwgJ3NsaWNlcycgfCAndGVtcGxhdGVzJz5cbik6IE9yZ2FuaXplclN0YXRlIHtcbiAgcmV0dXJuIG5vcm1hbGl6ZVN0YXRlQ29yZShcbiAgICB0ZW1wbGF0ZS54RmllbGQsXG4gICAgdGVtcGxhdGUueUZpZWxkLFxuICAgIHRlbXBsYXRlLnlBZ2dyZWdhdGUsXG4gICAgdGVtcGxhdGUuZ3JvdXBCeSxcbiAgICB0ZW1wbGF0ZS5zZWxlY3RlZFNsaWNlcyxcbiAgICBjb25maWcsXG4gICAgYmFzZVN0YXRlXG4gICk7XG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZVN0YXRlV2l0aG91dFRlbXBsYXRlKFxuICBzdGF0ZTogT3JnYW5pemVyU3RhdGUgfCB1bmRlZmluZWQsXG4gIGNvbmZpZzogUGljazxPcmdhbml6ZXJDb25maWcsICd4RmllbGRzJyB8ICd5RmllbGRzJyB8ICdncm91cHMnIHwgJ3NsaWNlcycgfCAndGVtcGxhdGVzJz5cbik6IE9yZ2FuaXplclN0YXRlIHtcbiAgY29uc3QgYmFzZSA9IHN0YXRlIHx8IHt9O1xuICByZXR1cm4gbm9ybWFsaXplU3RhdGVDb3JlKFxuICAgIGJhc2Uuc2VsZWN0ZWRYLFxuICAgIGJhc2Uuc2VsZWN0ZWRZLFxuICAgIGJhc2Uuc2VsZWN0ZWRZQWdncmVnYXRlLFxuICAgIGJhc2Uuc2VsZWN0ZWRHcm91cEJ5LFxuICAgIGJhc2Uuc2VsZWN0ZWRTbGljZXMsXG4gICAgY29uZmlnLFxuICAgIGJhc2VcbiAgKTtcbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplWVNlbGVjdGlvbihcbiAgc2VsZWN0ZWRZOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gIHNlbGVjdGVkWUFnZ3JlZ2F0ZTogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICB5RmllbGRzOiBPcmdhbml6ZXJZRmllbGRbXSB8IHVuZGVmaW5lZCxcbiAgZmFsbGJhY2tTdGF0ZT86IE9yZ2FuaXplclN0YXRlXG4pOiBQaWNrPE9yZ2FuaXplclN0YXRlLCAnc2VsZWN0ZWRZJyB8ICdzZWxlY3RlZFlBZ2dyZWdhdGUnPiB7XG4gIGlmICghc2VsZWN0ZWRZKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNlbGVjdGVkWTogZmFsbGJhY2tTdGF0ZT8uc2VsZWN0ZWRZLFxuICAgICAgc2VsZWN0ZWRZQWdncmVnYXRlOiBmYWxsYmFja1N0YXRlPy5zZWxlY3RlZFlBZ2dyZWdhdGUsXG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0IGRpcmVjdEZpZWxkID0geUZpZWxkcz8uZmluZChmaWVsZCA9PiBmaWVsZC5pZCA9PT0gc2VsZWN0ZWRZKTtcbiAgaWYgKGRpcmVjdEZpZWxkKSB7XG4gICAgaWYgKCFkaXJlY3RGaWVsZC5hZ2dyZWdhdGVzPy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiB7IHNlbGVjdGVkWTogZGlyZWN0RmllbGQuaWQsIHNlbGVjdGVkWUFnZ3JlZ2F0ZTogdW5kZWZpbmVkIH07XG4gICAgfVxuXG4gICAgY29uc3QgbWF0Y2hlZEFnZ3JlZ2F0ZSA9IHNlbGVjdGVkWUFnZ3JlZ2F0ZVxuICAgICAgPyBkaXJlY3RGaWVsZC5hZ2dyZWdhdGVzLmZpbmQoYWdncmVnYXRlID0+IGFnZ3JlZ2F0ZS5pZCA9PT0gc2VsZWN0ZWRZQWdncmVnYXRlKVxuICAgICAgOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgZmFsbGJhY2tBZ2dyZWdhdGUgPSBmYWxsYmFja1N0YXRlPy5zZWxlY3RlZFkgPT09IGRpcmVjdEZpZWxkLmlkXG4gICAgICA/IGRpcmVjdEZpZWxkLmFnZ3JlZ2F0ZXMuZmluZChhZ2dyZWdhdGUgPT4gYWdncmVnYXRlLmlkID09PSBmYWxsYmFja1N0YXRlLnNlbGVjdGVkWUFnZ3JlZ2F0ZSlcbiAgICAgIDogdW5kZWZpbmVkO1xuICAgIGNvbnN0IHJlc29sdmVkQWdncmVnYXRlID0gbWF0Y2hlZEFnZ3JlZ2F0ZSA/PyBmYWxsYmFja0FnZ3JlZ2F0ZSA/PyBkaXJlY3RGaWVsZC5hZ2dyZWdhdGVzWzBdO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHNlbGVjdGVkWTogZGlyZWN0RmllbGQuaWQsXG4gICAgICBzZWxlY3RlZFlBZ2dyZWdhdGU6IHJlc29sdmVkQWdncmVnYXRlPy5pZCxcbiAgICB9O1xuICB9XG5cbiAgY29uc3QgYWdncmVnYXRlUGFyZW50ID0geUZpZWxkcz8uZmluZChmaWVsZCA9PiBmaWVsZC5hZ2dyZWdhdGVzPy5zb21lKGFnZ3JlZ2F0ZSA9PiBhZ2dyZWdhdGUuaWQgPT09IHNlbGVjdGVkWSkpO1xuICBpZiAoYWdncmVnYXRlUGFyZW50KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNlbGVjdGVkWTogYWdncmVnYXRlUGFyZW50LmlkLFxuICAgICAgc2VsZWN0ZWRZQWdncmVnYXRlOiBzZWxlY3RlZFksXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgc2VsZWN0ZWRZOiBmYWxsYmFja1N0YXRlPy5zZWxlY3RlZFksXG4gICAgc2VsZWN0ZWRZQWdncmVnYXRlOiBmYWxsYmFja1N0YXRlPy5zZWxlY3RlZFlBZ2dyZWdhdGUsXG4gIH07XG59XG5cbmZ1bmN0aW9uIHNhbWVPcmdhbml6ZXJTdGF0ZShsZWZ0OiBPcmdhbml6ZXJTdGF0ZSwgcmlnaHQ6IE9yZ2FuaXplclN0YXRlKTogYm9vbGVhbiB7XG4gIHJldHVybiBsZWZ0LnNlbGVjdGVkWCA9PT0gcmlnaHQuc2VsZWN0ZWRYXG4gICAgJiYgbGVmdC5zZWxlY3RlZFkgPT09IHJpZ2h0LnNlbGVjdGVkWVxuICAgICYmIGxlZnQuc2VsZWN0ZWRZQWdncmVnYXRlID09PSByaWdodC5zZWxlY3RlZFlBZ2dyZWdhdGVcbiAgICAmJiBsZWZ0LnNlbGVjdGVkR3JvdXBCeSA9PT0gcmlnaHQuc2VsZWN0ZWRHcm91cEJ5XG4gICAgJiYgc2FtZVNsaWNlcyhsZWZ0LnNlbGVjdGVkU2xpY2VzIHx8IFtdLCByaWdodC5zZWxlY3RlZFNsaWNlcyB8fCBbXSk7XG59XG5cbmZ1bmN0aW9uIHNhbWVTbGljZXMobGVmdDogc3RyaW5nW10sIHJpZ2h0OiBzdHJpbmdbXSk6IGJvb2xlYW4ge1xuICBpZiAobGVmdC5sZW5ndGggIT09IHJpZ2h0Lmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xuICBjb25zdCBzb3J0ZWRMZWZ0ID0gWy4uLmxlZnRdLnNvcnQoKGEsIGIpID0+IGEubG9jYWxlQ29tcGFyZShiKSk7XG4gIGNvbnN0IHNvcnRlZFJpZ2h0ID0gWy4uLnJpZ2h0XS5zb3J0KChhLCBiKSA9PiBhLmxvY2FsZUNvbXBhcmUoYikpO1xuICByZXR1cm4gc29ydGVkTGVmdC5ldmVyeSgodmFsdWUsIGluZGV4KSA9PiB2YWx1ZSA9PT0gc29ydGVkUmlnaHRbaW5kZXhdKTtcbn1cblxuZnVuY3Rpb24gaGFzT3B0aW9uKGl0ZW1zOiBBcnJheTx7IGlkOiBzdHJpbmcgfT4gfCB1bmRlZmluZWQsIGlkOiBzdHJpbmcgfCB1bmRlZmluZWQpOiBib29sZWFuIHtcbiAgcmV0dXJuICEhaWQgJiYgISFpdGVtcz8uc29tZShpdGVtID0+IGl0ZW0uaWQgPT09IGlkKTtcbn1cbiJdfQ==
|
|
145
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JnYW5pemVyLXV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb25ldGVtZS9qcXVlcnktb3JnYW5pemVyL3NyYy9saWIvbW9kZWxzL29yZ2FuaXplci11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFVQSxNQUFNLFVBQVUsWUFBWSxDQUFDLFVBQWlDO0lBQzVELE1BQU0sT0FBTyxHQUFhLEVBQUUsQ0FBQztJQUM3QixNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBMkIsQ0FBQztJQUUvQyxLQUFLLE1BQU0sU0FBUyxJQUFJLFVBQVUsRUFBRTtRQUNsQyxNQUFNLFFBQVEsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDO1FBQ2pDLElBQUksUUFBUSxFQUFFO1lBQ1osSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUU7Z0JBQ3RCLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ3ZCLEdBQUcsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2FBQ3RFO1lBQ0QsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNqQyxJQUFJLE1BQU0sRUFBRSxVQUFVLEVBQUU7Z0JBQ3RCLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLFNBQVMsQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO2FBQ3RFO1NBQ0Y7YUFBTTtZQUNMLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzNCLEdBQUcsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFB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QUFDLE1BQU0sS0FBSyxLQUFLLENBQUMsTUFBTTtRQUFFLE9BQU8sS0FBSyxDQUFDO0lBQy9DLE1BQU0sVUFBVSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEUsTUFBTSxXQUFXLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsRSxPQUFPLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLEtBQUssV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDMUUsQ0FBQztBQUVELFNBQVMsU0FBUyxDQUFDLEtBQXdDLEVBQUUsRUFBc0I7SUFDakYsT0FBTyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztBQUN2RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT3JnYW5pemVyQ29uZmlnLCBPcmdhbml6ZXJTdGF0ZSwgT3JnYW5pemVyVGVtcGxhdGUsIE9yZ2FuaXplcllGaWVsZCB9IGZyb20gJy4vb3JnYW5pemVyLWNvbmZpZy5pbnRlcmZhY2UnO1xuXG50eXBlIE9yZ2FuaXplclN0YXRlQ29uZmlnID0gUGljazxPcmdhbml6ZXJDb25maWcsICd4RmllbGRzJyB8ICd5RmllbGRzJyB8ICdncm91cHMnIHwgJ3NsaWNlcycgfCAndGVtcGxhdGVzJyB8ICdjaGFydFR5cGVzJz47XG5cbmV4cG9ydCBpbnRlcmZhY2UgT3JnYW5pemVyWUluZGljYXRvciB7XG4gIGlkOiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGdyb3VwPzogc3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRZRmllbGRzKGluZGljYXRvcnM6IE9yZ2FuaXplcllJbmRpY2F0b3JbXSk6IE9yZ2FuaXplcllGaWVsZFtdIHtcbiAgY29uc3Qgb3JkZXJlZDogc3RyaW5nW10gPSBbXTtcbiAgY29uc3QgbWFwID0gbmV3IE1hcDxzdHJpbmcsIE9yZ2FuaXplcllGaWVsZD4oKTtcblxuICBmb3IgKGNvbnN0IGluZGljYXRvciBvZiBpbmRpY2F0b3JzKSB7XG4gICAgY29uc3QgZ3JvdXBLZXkgPSBpbmRpY2F0b3IuZ3JvdXA7XG4gICAgaWYgKGdyb3VwS2V5KSB7XG4gICAgICBpZiAoIW1hcC5oYXMoZ3JvdXBLZXkpKSB7XG4gICAgICAgIG9yZGVyZWQucHVzaChncm91cEtleSk7XG4gICAgICAgIG1hcC5zZXQoZ3JvdXBLZXksIHsgaWQ6IGdyb3VwS2V5LCBsYWJlbDogZ3JvdXBLZXksIGFnZ3JlZ2F0ZXM6IFtdIH0pO1xuICAgICAgfVxuICAgICAgY29uc3QgcGFyZW50ID0gbWFwLmdldChncm91cEtleSk7XG4gICAgICBpZiAocGFyZW50Py5hZ2dyZWdhdGVzKSB7XG4gICAgICAgIHBhcmVudC5hZ2dyZWdhdGVzLnB1c2goeyBpZDogaW5kaWNhdG9yLmlkLCBsYWJlbDogaW5kaWNhdG9yLmxhYmVsIH0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBvcmRlcmVkLnB1c2goaW5kaWNhdG9yLmlkKTtcbiAgICAgIG1hcC5zZXQoaW5kaWNhdG9yLmlkLCB7IGlkOiBpbmRpY2F0b3IuaWQsIGxhYmVsOiBpbmRpY2F0b3IubGFiZWwgfSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG9yZGVyZWQubWFwKGsgPT4gbWFwLmdldChrKSkuZmlsdGVyKChmKTogZiBpcyBPcmdhbml6ZXJZRmllbGQgPT4gISFmKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVZS2V5KFxuICBzZWxlY3RlZFk6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgc2VsZWN0ZWRZQWdncmVnYXRlOiBzdHJpbmcgfCB1bmRlZmluZWRcbik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiBzZWxlY3RlZFlBZ2dyZWdhdGUgPz8gc2VsZWN0ZWRZO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplT3JnYW5pemVyU3RhdGUoXG4gIHN0YXRlOiBPcmdhbml6ZXJTdGF0ZSB8IHVuZGVmaW5lZCxcbiAgY29uZmlnOiBPcmdhbml6ZXJTdGF0ZUNvbmZpZ1xuKTogT3JnYW5pemVyU3RhdGUge1xuICBjb25zdCBiYXNlID0gc3RhdGUgfHwge307XG4gIGNvbnN0IG5vcm1hbGl6ZWRZID0gbm9ybWFsaXplWVNlbGVjdGlvbihiYXNlLnNlbGVjdGVkWSwgYmFzZS5zZWxlY3RlZFlBZ2dyZWdhdGUsIGNvbmZpZy55RmllbGRzKTtcbiAgY29uc3Qgc2VsZWN0ZWRYID0gaGFzT3B0aW9uKGNvbmZpZy54RmllbGRzLCBiYXNlLnNlbGVjdGVkWCkgPyBiYXNlLnNlbGVjdGVkWCA6IHVuZGVmaW5lZDtcbiAgY29uc3Qgc2VsZWN0ZWRDaGFydFR5cGUgPSBoYXNPcHRpb24oY29uZmlnLmNoYXJ0VHlwZXMsIGJhc2Uuc2VsZWN0ZWRDaGFydFR5cGUpID8gYmFzZS5zZWxlY3RlZENoYXJ0VHlwZSA6IHVuZGVmaW5lZDtcbiAgY29uc3Qgc2VsZWN0ZWRHcm91cEJ5ID0gaGFzT3B0aW9uKGNvbmZpZy5ncm91cHMsIGJhc2Uuc2VsZWN0ZWRHcm91cEJ5KSA/IGJhc2Uuc2VsZWN0ZWRHcm91cEJ5IDogdW5kZWZpbmVkO1xuICBjb25zdCBzZWxlY3RlZFNsaWNlcyA9IChiYXNlLnNlbGVjdGVkU2xpY2VzIHx8IFtdKS5maWx0ZXIoc2xpY2VJZCA9PiBoYXNPcHRpb24oY29uZmlnLnNsaWNlcywgc2xpY2VJZCkpO1xuXG4gIGNvbnN0IG5vcm1hbGl6ZWQ6IE9yZ2FuaXplclN0YXRlID0ge1xuICAgIC4uLmJhc2UsXG4gICAgc2VsZWN0ZWRDaGFydFR5cGUsXG4gICAgc2VsZWN0ZWRYLFxuICAgIHNlbGVjdGVkWTogbm9ybWFsaXplZFkuc2VsZWN0ZWRZLFxuICAgIHNlbGVjdGVkWUFnZ3JlZ2F0ZTogbm9ybWFsaXplZFkuc2VsZWN0ZWRZQWdncmVnYXRlLFxuICAgIHNlbGVjdGVkR3JvdXBCeSxcbiAgICBzZWxlY3RlZFNsaWNlcyxcbiAgfTtcblxuICByZXR1cm4ge1xuICAgIC4uLm5vcm1hbGl6ZWQsXG4gICAgc2VsZWN0ZWRUZW1wbGF0ZTogcmVzb2x2ZU1hdGNoaW5nVGVtcGxhdGVJZChjb25maWcudGVtcGxhdGVzLCBub3JtYWxpemVkLCBjb25maWcpXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVUZW1wbGF0ZVRvU3RhdGUoXG4gIHRlbXBsYXRlOiBPcmdhbml6ZXJUZW1wbGF0ZSxcbiAgY3VycmVudFN0YXRlOiBPcmdhbml6ZXJTdGF0ZSB8IHVuZGVmaW5lZCxcbiAgY29uZmlnOiBPcmdhbml6ZXJTdGF0ZUNvbmZpZ1xuKTogT3JnYW5pemVyU3RhdGUge1xuICBjb25zdCBiYXNlID0gbm9ybWFsaXplT3JnYW5pemVyU3RhdGUoY3VycmVudFN0YXRlLCBjb25maWcpO1xuICBjb25zdCBub3JtYWxpemVkWSA9IG5vcm1hbGl6ZVlTZWxlY3Rpb24odGVtcGxhdGUueUZpZWxkLCB0ZW1wbGF0ZS55QWdncmVnYXRlLCBjb25maWcueUZpZWxkcywgYmFzZSk7XG5cbiAgY29uc3QgbmV4dFN0YXRlOiBPcmdhbml6ZXJTdGF0ZSA9IHtcbiAgICB2aWV3TW9kZTogYmFzZS52aWV3TW9kZSxcbiAgICB2aXNpYmxlRmllbGRzOiBiYXNlLnZpc2libGVGaWVsZHMsXG4gICAgc2VsZWN0ZWRDaGFydFR5cGU6IGJhc2Uuc2VsZWN0ZWRDaGFydFR5cGUsXG4gICAgc2VsZWN0ZWRYOiBoYXNPcHRpb24oY29uZmlnLnhGaWVsZHMsIHRlbXBsYXRlLnhGaWVsZCkgPyB0ZW1wbGF0ZS54RmllbGQgOiBiYXNlLnNlbGVjdGVkWCxcbiAgICBzZWxlY3RlZFk6IG5vcm1hbGl6ZWRZLnNlbGVjdGVkWSxcbiAgICBzZWxlY3RlZFlBZ2dyZWdhdGU6IG5vcm1hbGl6ZWRZLnNlbGVjdGVkWUFnZ3JlZ2F0ZSxcbiAgICBzZWxlY3RlZEdyb3VwQnk6IGhhc09wdGlvbihjb25maWcuZ3JvdXBzLCB0ZW1wbGF0ZS5ncm91cEJ5KSA/IHRlbXBsYXRlLmdyb3VwQnkgOiBiYXNlLnNlbGVjdGVkR3JvdXBCeSxcbiAgICBzZWxlY3RlZFNsaWNlczogKHRlbXBsYXRlLnNlbGVjdGVkU2xpY2VzIHx8IFtdKS5maWx0ZXIoc2xpY2VJZCA9PiBoYXNPcHRpb24oY29uZmlnLnNsaWNlcywgc2xpY2VJZCkpLFxuICB9O1xuXG4gIGNvbnN0IHJlc29sdmVkVGVtcGxhdGVJZCA9IHJlc29sdmVNYXRjaGluZ1RlbXBsYXRlSWQoY29uZmlnLnRlbXBsYXRlcywgbmV4dFN0YXRlLCBjb25maWcpO1xuICByZXR1cm4ge1xuICAgIC4uLm5leHRTdGF0ZSxcbiAgICBzZWxlY3RlZFRlbXBsYXRlOiByZXNvbHZlZFRlbXBsYXRlSWQgPz8gdGVtcGxhdGUuaWRcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVNYXRjaGluZ1RlbXBsYXRlSWQoXG4gIHRlbXBsYXRlczogT3JnYW5pemVyVGVtcGxhdGVbXSB8IHVuZGVmaW5lZCxcbiAgc3RhdGU6IE9yZ2FuaXplclN0YXRlIHwgdW5kZWZpbmVkLFxuICBjb25maWc6IE9yZ2FuaXplclN0YXRlQ29uZmlnXG4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBpZiAoIXRlbXBsYXRlcz8ubGVuZ3RoKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gIGNvbnN0IG5vcm1hbGl6ZWRTdGF0ZSA9IG5vcm1hbGl6ZVN0YXRlV2l0aG91dFRlbXBsYXRlKHN0YXRlLCBjb25maWcpO1xuICByZXR1cm4gdGVtcGxhdGVzLmZpbmQodGVtcGxhdGUgPT4ge1xuICAgIGNvbnN0IHRlbXBsYXRlU3RhdGUgPSBub3JtYWxpemVTdGF0ZVdpdGhvdXRUZW1wbGF0ZShcbiAgICAgIG5vcm1hbGl6ZVRlbXBsYXRlVG9Db21wYXJhYmxlU3RhdGUodGVtcGxhdGUsIG5vcm1hbGl6ZWRTdGF0ZSwgY29uZmlnKSxcbiAgICAgIGNvbmZpZ1xuICAgICk7XG4gICAgcmV0dXJuIHNhbWVPcmdhbml6ZXJTdGF0ZSh0ZW1wbGF0ZVN0YXRlLCBub3JtYWxpemVkU3RhdGUpO1xuICB9KT8uaWQ7XG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZVN0YXRlQ29yZShcbiAgc2VsZWN0ZWRYOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gIHNlbGVjdGVkWTogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICBzZWxlY3RlZFlBZ2dyZWdhdGU6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgc2VsZWN0ZWRHcm91cEJ5OiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gIHNlbGVjdGVkU2xpY2VzOiBzdHJpbmdbXSB8IHVuZGVmaW5lZCxcbiAgY29uZmlnOiBQaWNrPE9yZ2FuaXplckNvbmZpZywgJ3hGaWVsZHMnIHwgJ3lGaWVsZHMnIHwgJ2dyb3VwcycgfCAnc2xpY2VzJz4sXG4gIG9yaWdpbmFsU3RhdGU/OiBPcmdhbml6ZXJTdGF0ZVxuKTogT3JnYW5pemVyU3RhdGUge1xuICBjb25zdCBub3JtYWxpemVkWSA9IG5vcm1hbGl6ZVlTZWxlY3Rpb24oc2VsZWN0ZWRZLCBzZWxlY3RlZFlBZ2dyZWdhdGUsIGNvbmZpZy55RmllbGRzLCBvcmlnaW5hbFN0YXRlKTtcbiAgcmV0dXJuIHtcbiAgICBzZWxlY3RlZFg6IGhhc09wdGlvbihjb25maWcueEZpZWxkcywgc2VsZWN0ZWRYKSA/IHNlbGVjdGVkWCA6IHVuZGVmaW5lZCxcbiAgICBzZWxlY3RlZFk6IG5vcm1hbGl6ZWRZLnNlbGVjdGVkWSxcbiAgICBzZWxlY3RlZFlBZ2dyZWdhdGU6IG5vcm1hbGl6ZWRZLnNlbGVjdGVkWUFnZ3JlZ2F0ZSxcbiAgICBzZWxlY3RlZEdyb3VwQnk6IGhhc09wdGlvbihjb25maWcuZ3JvdXBzLCBzZWxlY3RlZEdyb3VwQnkpID8gc2VsZWN0ZWRHcm91cEJ5IDogdW5kZWZpbmVkLFxuICAgIHNlbGVjdGVkU2xpY2VzOiAoc2VsZWN0ZWRTbGljZXMgfHwgW10pLmZpbHRlcihzbGljZUlkID0+IGhhc09wdGlvbihjb25maWcuc2xpY2VzLCBzbGljZUlkKSksXG4gIH07XG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZVRlbXBsYXRlVG9Db21wYXJhYmxlU3RhdGUoXG4gIHRlbXBsYXRlOiBPcmdhbml6ZXJUZW1wbGF0ZSxcbiAgYmFzZVN0YXRlOiBPcmdhbml6ZXJTdGF0ZSxcbiAgY29uZmlnOiBPcmdhbml6ZXJTdGF0ZUNvbmZpZ1xuKTogT3JnYW5pemVyU3RhdGUge1xuICByZXR1cm4gbm9ybWFsaXplU3RhdGVDb3JlKFxuICAgIHRlbXBsYXRlLnhGaWVsZCxcbiAgICB0ZW1wbGF0ZS55RmllbGQsXG4gICAgdGVtcGxhdGUueUFnZ3JlZ2F0ZSxcbiAgICB0ZW1wbGF0ZS5ncm91cEJ5LFxuICAgIHRlbXBsYXRlLnNlbGVjdGVkU2xpY2VzLFxuICAgIGNvbmZpZyxcbiAgICBiYXNlU3RhdGVcbiAgKTtcbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplU3RhdGVXaXRob3V0VGVtcGxhdGUoXG4gIHN0YXRlOiBPcmdhbml6ZXJTdGF0ZSB8IHVuZGVmaW5lZCxcbiAgY29uZmlnOiBPcmdhbml6ZXJTdGF0ZUNvbmZpZ1xuKTogT3JnYW5pemVyU3RhdGUge1xuICBjb25zdCBiYXNlID0gc3RhdGUgfHwge307XG4gIHJldHVybiBub3JtYWxpemVTdGF0ZUNvcmUoXG4gICAgYmFzZS5zZWxlY3RlZFgsXG4gICAgYmFzZS5zZWxlY3RlZFksXG4gICAgYmFzZS5zZWxlY3RlZFlBZ2dyZWdhdGUsXG4gICAgYmFzZS5zZWxlY3RlZEdyb3VwQnksXG4gICAgYmFzZS5zZWxlY3RlZFNsaWNlcyxcbiAgICBjb25maWcsXG4gICAgYmFzZVxuICApO1xufVxuXG5mdW5jdGlvbiBub3JtYWxpemVZU2VsZWN0aW9uKFxuICBzZWxlY3RlZFk6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgc2VsZWN0ZWRZQWdncmVnYXRlOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gIHlGaWVsZHM6IE9yZ2FuaXplcllGaWVsZFtdIHwgdW5kZWZpbmVkLFxuICBmYWxsYmFja1N0YXRlPzogT3JnYW5pemVyU3RhdGVcbik6IFBpY2s8T3JnYW5pemVyU3RhdGUsICdzZWxlY3RlZFknIHwgJ3NlbGVjdGVkWUFnZ3JlZ2F0ZSc+IHtcbiAgaWYgKCFzZWxlY3RlZFkpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc2VsZWN0ZWRZOiBmYWxsYmFja1N0YXRlPy5zZWxlY3RlZFksXG4gICAgICBzZWxlY3RlZFlBZ2dyZWdhdGU6IGZhbGxiYWNrU3RhdGU/LnNlbGVjdGVkWUFnZ3JlZ2F0ZSxcbiAgICB9O1xuICB9XG5cbiAgY29uc3QgZGlyZWN0RmllbGQgPSB5RmllbGRzPy5maW5kKGZpZWxkID0+IGZpZWxkLmlkID09PSBzZWxlY3RlZFkpO1xuICBpZiAoZGlyZWN0RmllbGQpIHtcbiAgICBpZiAoIWRpcmVjdEZpZWxkLmFnZ3JlZ2F0ZXM/Lmxlbmd0aCkge1xuICAgICAgcmV0dXJuIHsgc2VsZWN0ZWRZOiBkaXJlY3RGaWVsZC5pZCwgc2VsZWN0ZWRZQWdncmVnYXRlOiB1bmRlZmluZWQgfTtcbiAgICB9XG5cbiAgICBjb25zdCBtYXRjaGVkQWdncmVnYXRlID0gc2VsZWN0ZWRZQWdncmVnYXRlXG4gICAgICA/IGRpcmVjdEZpZWxkLmFnZ3JlZ2F0ZXMuZmluZChhZ2dyZWdhdGUgPT4gYWdncmVnYXRlLmlkID09PSBzZWxlY3RlZFlBZ2dyZWdhdGUpXG4gICAgICA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCBmYWxsYmFja0FnZ3JlZ2F0ZSA9IGZhbGxiYWNrU3RhdGU/LnNlbGVjdGVkWSA9PT0gZGlyZWN0RmllbGQuaWRcbiAgICAgID8gZGlyZWN0RmllbGQuYWdncmVnYXRlcy5maW5kKGFnZ3JlZ2F0ZSA9PiBhZ2dyZWdhdGUuaWQgPT09IGZhbGxiYWNrU3RhdGUuc2VsZWN0ZWRZQWdncmVnYXRlKVxuICAgICAgOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgcmVzb2x2ZWRBZ2dyZWdhdGUgPSBtYXRjaGVkQWdncmVnYXRlID8/IGZhbGxiYWNrQWdncmVnYXRlID8/IGRpcmVjdEZpZWxkLmFnZ3JlZ2F0ZXNbMF07XG5cbiAgICByZXR1cm4ge1xuICAgICAgc2VsZWN0ZWRZOiBkaXJlY3RGaWVsZC5pZCxcbiAgICAgIHNlbGVjdGVkWUFnZ3JlZ2F0ZTogcmVzb2x2ZWRBZ2dyZWdhdGU/LmlkLFxuICAgIH07XG4gIH1cblxuICBjb25zdCBhZ2dyZWdhdGVQYXJlbnQgPSB5RmllbGRzPy5maW5kKGZpZWxkID0+IGZpZWxkLmFnZ3JlZ2F0ZXM/LnNvbWUoYWdncmVnYXRlID0+IGFnZ3JlZ2F0ZS5pZCA9PT0gc2VsZWN0ZWRZKSk7XG4gIGlmIChhZ2dyZWdhdGVQYXJlbnQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc2VsZWN0ZWRZOiBhZ2dyZWdhdGVQYXJlbnQuaWQsXG4gICAgICBzZWxlY3RlZFlBZ2dyZWdhdGU6IHNlbGVjdGVkWSxcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBzZWxlY3RlZFk6IGZhbGxiYWNrU3RhdGU/LnNlbGVjdGVkWSxcbiAgICBzZWxlY3RlZFlBZ2dyZWdhdGU6IGZhbGxiYWNrU3RhdGU/LnNlbGVjdGVkWUFnZ3JlZ2F0ZSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gc2FtZU9yZ2FuaXplclN0YXRlKGxlZnQ6IE9yZ2FuaXplclN0YXRlLCByaWdodDogT3JnYW5pemVyU3RhdGUpOiBib29sZWFuIHtcbiAgcmV0dXJuIGxlZnQuc2VsZWN0ZWRYID09PSByaWdodC5zZWxlY3RlZFhcbiAgICAmJiBsZWZ0LnNlbGVjdGVkWSA9PT0gcmlnaHQuc2VsZWN0ZWRZXG4gICAgJiYgbGVmdC5zZWxlY3RlZFlBZ2dyZWdhdGUgPT09IHJpZ2h0LnNlbGVjdGVkWUFnZ3JlZ2F0ZVxuICAgICYmIGxlZnQuc2VsZWN0ZWRHcm91cEJ5ID09PSByaWdodC5zZWxlY3RlZEdyb3VwQnlcbiAgICAmJiBzYW1lU2xpY2VzKGxlZnQuc2VsZWN0ZWRTbGljZXMgfHwgW10sIHJpZ2h0LnNlbGVjdGVkU2xpY2VzIHx8IFtdKTtcbn1cblxuZnVuY3Rpb24gc2FtZVNsaWNlcyhsZWZ0OiBzdHJpbmdbXSwgcmlnaHQ6IHN0cmluZ1tdKTogYm9vbGVhbiB7XG4gIGlmIChsZWZ0Lmxlbmd0aCAhPT0gcmlnaHQubGVuZ3RoKSByZXR1cm4gZmFsc2U7XG4gIGNvbnN0IHNvcnRlZExlZnQgPSBbLi4ubGVmdF0uc29ydCgoYSwgYikgPT4gYS5sb2NhbGVDb21wYXJlKGIpKTtcbiAgY29uc3Qgc29ydGVkUmlnaHQgPSBbLi4ucmlnaHRdLnNvcnQoKGEsIGIpID0+IGEubG9jYWxlQ29tcGFyZShiKSk7XG4gIHJldHVybiBzb3J0ZWRMZWZ0LmV2ZXJ5KCh2YWx1ZSwgaW5kZXgpID0+IHZhbHVlID09PSBzb3J0ZWRSaWdodFtpbmRleF0pO1xufVxuXG5mdW5jdGlvbiBoYXNPcHRpb24oaXRlbXM6IEFycmF5PHsgaWQ6IHN0cmluZyB9PiB8IHVuZGVmaW5lZCwgaWQ6IHN0cmluZyB8IHVuZGVmaW5lZCk6IGJvb2xlYW4ge1xuICByZXR1cm4gISFpZCAmJiAhIWl0ZW1zPy5zb21lKGl0ZW0gPT4gaXRlbS5pZCA9PT0gaWQpO1xufVxuIl19
|